The page you were looking for doesn't exist. You may have mistyped the address or the page may have moved. If you're the application owner check the logs for more information.
-diff --git a/.circleci/config.yml b/.circleci/config.yml index d6f4ce5a7b9..8446fc92625 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -56,11 +56,11 @@ jobs: test: docker: - image: cimg/ruby:3.4.3-browsers + - image: pgvector/pgvector:pg14 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: ci_test - - image: cimg/postgres:14.4 resource_class: large environment: BUNDLE_JOBS: '3' @@ -101,6 +101,14 @@ jobs: - run: name: Wait for DB command: 'dockerize -wait tcp://localhost:5432 -timeout 1m' + - run: + name: Install PostgreSQL client + command: | + sudo apt-get update && sudo apt-get install -y postgresql-client + - run: + name: Enable pgvector extension + command: | + psql -h localhost -U postgres -d ci_test -c "CREATE EXTENSION IF NOT EXISTS vector;" - run: name: Database setup command: 'bundle exec rails db:prepare' diff --git a/.cloudbuild/cloudbuild-staging.yaml b/.cloudbuild/cloudbuild-staging.yaml index bfb08fb4c41..75ec4006d5a 100644 --- a/.cloudbuild/cloudbuild-staging.yaml +++ b/.cloudbuild/cloudbuild-staging.yaml @@ -23,9 +23,7 @@ steps: - 'asia.gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA' waitFor: - Build - # Cloud Runサービスを削除してDB接続を切断 - # Cloud SQLでは管理者権限がないためpg_terminate_backendが使えない - # サービスを削除することで接続を確実に切断し、Deployで再作成される + # Cloud Runサービスを削除してDB接続を切断し、Deployで再作成される - id: StopCloudRun name: gcr.io/google.com/cloudsdktool/cloud-sdk entrypoint: bash @@ -114,54 +112,99 @@ steps: - DB_USER=$_DB_USER - RAILS_MASTER_KEY=$_RAILS_MASTER_KEY - APP_HOST_NAME=$_APP_HOST_NAME - # データベースを削除(リトライ付き) - # WaitForProxyの接続がCloud SQL Proxy経由で残っている場合があるため、 - # 接続が切れるまでリトライする - - name: gcr.io/google.com/cloudsdktool/cloud-sdk - id: DeleteDB + # bootcamp_stagingへの接続を強制切断してからデータベースを削除 + - id: DeleteDB + name: 'asia.gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA' entrypoint: bash args: - '-c' - | set -euo pipefail - MAX_RETRIES=12 - RETRY_DELAY=10 - for i in $$(seq 1 $$MAX_RETRIES); do - echo "Attempt $$i/$$MAX_RETRIES: Deleting database bootcamp_staging..." - if gcloud sql databases delete bootcamp_staging --instance=bootcamp --quiet 2>&1; then - echo "Database deleted successfully." - exit 0 - else - if [ $$i -lt $$MAX_RETRIES ]; then - echo "Database delete failed (likely still has connections). Waiting $$RETRY_DELAY seconds before retry..." - sleep $$RETRY_DELAY - fi - fi - done + echo "Terminating all connections to bootcamp_staging..." + cat <<'SQLEOF' | bin/rails runner - 2>&1 + result = ActiveRecord::Base.connection.execute(<<~SQL) + SELECT pg_terminate_backend(pid) + FROM pg_stat_activity + WHERE datname = 'bootcamp_staging' + AND pid <> pg_backend_pid() + SQL + puts "Terminated #{result.count} connection(s)" + SQLEOF - echo "ERROR: Failed to delete database after $$MAX_RETRIES attempts." - exit 1 + echo "Dropping database bootcamp_staging..." + cat <<'SQLEOF' | bin/rails runner - 2>&1 + ActiveRecord::Base.connection.execute("DROP DATABASE IF EXISTS bootcamp_staging") + puts "Database dropped successfully" + SQLEOF waitFor: - WaitForProxy volumes: - name: db path: /cloudsql - - name: gcr.io/google.com/cloudsdktool/cloud-sdk + env: + - RAILS_ENV=production + - DISABLE_DATABASE_ENVIRONMENT_CHECK=1 + - DB_HOST=/cloudsql/$_CLOUD_SQL_HOST + - DB_NAME=postgres + - DB_PASS=$_DB_PASS + - DB_USER=$_DB_USER + - RAILS_MASTER_KEY=$_RAILS_MASTER_KEY + - APP_HOST_NAME=$_APP_HOST_NAME + - id: CreateDB + name: 'asia.gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA' + entrypoint: bash args: - - sql - - databases - - create - - bootcamp_staging - - '--instance=bootcamp' - - '--quiet' - id: CreateDB + - '-c' + - | + set -euo pipefail + + echo "Creating database bootcamp_staging..." + cat <<'SQLEOF' | bin/rails runner - 2>&1 + ActiveRecord::Base.connection.execute("CREATE DATABASE bootcamp_staging") + puts "Database created successfully" + SQLEOF waitFor: - DeleteDB - entrypoint: gcloud volumes: - name: db path: /cloudsql + env: + - RAILS_ENV=production + - DISABLE_DATABASE_ENVIRONMENT_CHECK=1 + - DB_HOST=/cloudsql/$_CLOUD_SQL_HOST + - DB_NAME=postgres + - DB_PASS=$_DB_PASS + - DB_USER=$_DB_USER + - RAILS_MASTER_KEY=$_RAILS_MASTER_KEY + - APP_HOST_NAME=$_APP_HOST_NAME + - id: EnablePgvector + name: 'asia.gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA' + entrypoint: bash + args: + - '-c' + - | + set -euo pipefail + + echo "Enabling pgvector extension on bootcamp_staging..." + cat <<'SQLEOF' | bin/rails runner - 2>&1 + ActiveRecord::Base.connection.execute("CREATE EXTENSION IF NOT EXISTS vector") + puts "pgvector extension enabled" + SQLEOF + waitFor: + - CreateDB + volumes: + - name: db + path: /cloudsql + env: + - RAILS_ENV=production + - DISABLE_DATABASE_ENVIRONMENT_CHECK=1 + - DB_HOST=/cloudsql/$_CLOUD_SQL_HOST + - DB_NAME=$_DB_NAME + - DB_PASS=$_DB_PASS + - DB_USER=$_DB_USER + - RAILS_MASTER_KEY=$_RAILS_MASTER_KEY + - APP_HOST_NAME=$_APP_HOST_NAME - id: DBMigrate name: 'asia.gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA' args: @@ -169,7 +212,7 @@ steps: - db:migrate - db:seed waitFor: - - DeleteDB + - EnablePgvector volumes: - name: db path: /cloudsql diff --git a/.cloudbuild/cloudbuild-task.yaml b/.cloudbuild/cloudbuild-task.yaml index 0a0baca99c7..a316cec4c19 100644 --- a/.cloudbuild/cloudbuild-task.yaml +++ b/.cloudbuild/cloudbuild-task.yaml @@ -27,10 +27,12 @@ steps: env: - 'RAILS_ENV=production' - 'RAILS_MASTER_KEY=$_RAILS_MASTER_KEY' + - 'APP_HOST_NAME=$_APP_HOST_NAME' - 'DB_HOST=/cloudsql/$_CLOUD_SQL_HOST' - 'DB_NAME=$_DB_NAME' - 'DB_PASS=$_DB_PASS' - 'DB_USER=$_DB_USER' + - 'OPEN_AI_ACCESS_TOKEN=$_OPEN_AI_ACCESS_TOKEN' - id: Kill_SqlProxy name: "gcr.io/cloud-builders/docker" waitFor: ["Task"] @@ -40,10 +42,12 @@ images: ['asia.gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA'] options: substitutionOption: ALLOW_LOOSE substitutions: + _APP_HOST_NAME: _ _CLOUD_SQL_HOST: _ _DB_NAME: _ _DB_PASS: _ _DB_USER: _ + _OPEN_AI_ACCESS_TOKEN: _ _RAILS_MASTER_KEY: _ tags: - gcp-cloud-build-task diff --git a/.gitignore b/.gitignore index d1aa6aac20c..943266470d1 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,8 @@ vendor/bundle/ /public/assets /public/packs /public/packs-test +/app/assets/builds/* +!/app/assets/builds/.gitkeep /public/system yarn-debug.log* diff --git a/Gemfile b/Gemfile index 96f548dd30c..b1c9a448b22 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,7 @@ gem 'puma', '>= 5.0' gem 'rails', '8.1.1' gem 'shakapacker', '~> 9.0' gem 'sprockets-rails', '>= 2.0.0' +gem 'tailwindcss-rails', '~> 4.0' # not default gem 'abstract_notifier', '~> 0.3.2' @@ -50,6 +51,7 @@ gem 'meta-tags' gem 'mini_magick' gem 'mission_control-jobs' gem 'mutex_m', '0.1.1' +gem 'neighbor' gem 'net-imap', require: false gem 'net-pop', require: false gem 'net-smtp', require: false # TODO: Remove it if you use rails 7.0.1 @@ -70,12 +72,14 @@ gem 'rails_autolink' gem 'rails-i18n' gem 'rails-patterns', '~> 0.2' gem 'ransack', '~> 4.3' +gem 'solid_cache' gem 'solid_queue' # TODO: connection_pool互換性が修正された安定版リリース後にgem版に戻す gem 'react-rails', github: 'reactjs/react-rails', ref: '224d03b8e04b95e4d16197fc6ecf75601543154a' gem 'recaptcha', '~> 5.12' gem 'rollbar' gem 'rss' +gem 'ruby_llm' gem 'ruby-openai' gem 'rubyzip' gem 'slim-rails' diff --git a/Gemfile.lock b/Gemfile.lock index 16f3f2eea07..d72ae1d4520 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -213,6 +213,8 @@ GEM net-http (~> 0.5) faraday-retry (2.4.0) faraday (~> 2.0) + ffi (1.17.1-arm64-darwin) + ffi (1.17.1-x86_64-darwin) ffi (1.17.1-x86_64-linux-gnu) foreman (0.90.0) thor (~> 1.4) @@ -268,6 +270,15 @@ GEM google-id-token (1.4.2) jwt (>= 1) google-logging-utils (0.2.0) + google-protobuf (4.33.3) + bigdecimal + rake (>= 13) + google-protobuf (4.33.3-arm64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.33.3-x86_64-darwin) + bigdecimal + rake (>= 13) google-protobuf (4.33.3-x86_64-linux-gnu) bigdecimal rake (>= 13) @@ -285,6 +296,15 @@ GEM multi_json (~> 1.11) os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) + grpc (1.76.0) + google-protobuf (>= 3.25, < 5.0) + googleapis-common-protos-types (~> 1.0) + grpc (1.76.0-arm64-darwin) + google-protobuf (>= 3.25, < 5.0) + googleapis-common-protos-types (~> 1.0) + grpc (1.76.0-x86_64-darwin) + google-protobuf (>= 3.25, < 5.0) + googleapis-common-protos-types (~> 1.0) grpc (1.76.0-x86_64-linux-gnu) google-protobuf (>= 3.25, < 5.0) googleapis-common-protos-types (~> 1.0) @@ -407,6 +427,8 @@ GEM bigdecimal (>= 3.1, < 5) multipart-post (2.4.1) mutex_m (0.1.1) + neighbor (0.6.0) + activerecord (>= 7.1) net-http (0.9.1) uri (>= 0.11.1) net-imap (0.6.2) @@ -421,6 +443,10 @@ GEM netrc (0.11.0) newspaper (0.2.0) nio4r (2.7.5) + nokogiri (1.19.0-arm64-darwin) + racc (~> 1.4) + nokogiri (1.19.0-x86_64-darwin) + racc (~> 1.4) nokogiri (1.19.0-x86_64-linux-gnu) racc (~> 1.4) oauth (1.1.3) @@ -625,6 +651,17 @@ GEM ffi (~> 1.12) logger ruby2_keywords (0.0.5) + ruby_llm (1.11.0) + base64 + event_stream_parser (~> 1) + faraday (>= 1.10.0) + faraday-multipart (>= 1) + faraday-net_http (>= 1) + faraday-retry (>= 1) + marcel (~> 1.0) + ruby_llm-schema (~> 0.2.1) + zeitwerk (~> 2) + ruby_llm-schema (0.2.5) rubyzip (3.2.2) securerandom (0.4.1) selenium-webdriver (4.39.0) @@ -659,6 +696,10 @@ GEM snaky_hash (2.0.3) hashie (>= 0.1.0, < 6) version_gem (>= 1.1.8, < 3) + solid_cache (1.0.10) + activejob (>= 7.2) + activerecord (>= 7.2) + railties (>= 7.2) solid_queue (1.3.0) activejob (>= 7.1) activerecord (>= 7.1) @@ -687,6 +728,12 @@ GEM stripe (18.1.0) switchlet (0.3.1) rails (>= 6.1) + tailwindcss-rails (4.4.0) + railties (>= 7.0.0) + tailwindcss-ruby (~> 4.0) + tailwindcss-ruby (4.1.18-arm64-darwin) + tailwindcss-ruby (4.1.18-x86_64-darwin) + tailwindcss-ruby (4.1.18-x86_64-linux-gnu) temple (0.10.4) thor (1.5.0) thread_safe (0.3.6) @@ -744,8 +791,8 @@ GEM zeitwerk (2.7.4) PLATFORMS + universal-darwin x86_64-linux - x86_64-linux-gnu DEPENDENCIES abstract_notifier (~> 0.3.2) @@ -799,6 +846,7 @@ DEPENDENCIES minitest-stub_any_instance mission_control-jobs mutex_m (= 0.1.1) + neighbor net-imap net-pop net-smtp @@ -835,11 +883,13 @@ DEPENDENCIES rubocop-performance rubocop-rails ruby-openai + ruby_llm rubyzip selenium-webdriver shakapacker (~> 9.0) slim-rails slim_lint + solid_cache solid_queue sorcery (~> 0.16.2) sorcery-jwt @@ -848,6 +898,7 @@ DEPENDENCIES stripe stripe-i18n! switchlet + tailwindcss-rails (~> 4.0) traceroute tzinfo (~> 2.0, >= 2.0.6) vcr diff --git a/Procfile.dev b/Procfile.dev index 65d9e59fea3..25eeb561a41 100644 --- a/Procfile.dev +++ b/Procfile.dev @@ -1,2 +1,3 @@ rails: rails s -b 0.0.0.0 -p 3000 webpacker: ./bin/shakapacker-dev-server +css: bin/rails tailwindcss:watch diff --git a/app/javascript/stylesheets/lp/layouts/_l-sections.sass b/app/assets/builds/.gitkeep similarity index 100% rename from app/javascript/stylesheets/lp/layouts/_l-sections.sass rename to app/assets/builds/.gitkeep diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js index f3dd737cb87..832535c8483 100644 --- a/app/assets/config/manifest.js +++ b/app/assets/config/manifest.js @@ -1,2 +1,3 @@ //= link_tree ../images //= link_directory ../javascripts .js +//= link_directory ../builds .css diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css new file mode 100644 index 00000000000..e2d6d54fc12 --- /dev/null +++ b/app/assets/stylesheets/application.css @@ -0,0 +1,122 @@ +@import "tailwindcss" source(none); +@source "../../views/**/*.slim"; +@source "../../components/**/*.slim"; +@source "../../../app/javascript/**/*.{js,vue,jsx}"; +@source "./**/*.css"; + +@theme { + --container-*: initial; +} + +@import "./common-imports.css"; +@import "./application/base/_base.css"; +@import "./application/blocks/admin/_admin-table.css"; +@import "./application/blocks/admin/_admin-users.css"; +@import "./application/blocks/admin/_embedding-status.css"; +@import "./application/blocks/auth-form/_auth-form-nav.css"; +@import "./application/blocks/auth-form/_auth-form.css"; +@import "./application/blocks/auth-form/_next-settlement-time.css"; +@import "./application/blocks/auth-form/_skip-practices.css"; +@import "./application/blocks/cards/_card-counts.css"; +@import "./application/blocks/cards/_card-body-main-actions.css"; +@import "./application/blocks/company/_company-links.css"; +@import "./application/blocks/company/_company-profile.css"; +@import "./application/blocks/course/_courses.css"; +@import "./application/blocks/dashboard/_current-user-icon-list.css"; +@import "./application/blocks/dashboard/_dashboard-categories-item.css"; +@import "./application/blocks/dashboard/_dashboard-contents.css"; +@import "./application/blocks/dashboard/_welcome-message.css"; +@import "./application/blocks/dashboard/_unchecked-report-alert.css"; +@import "./application/blocks/event/_event-main-actions.css"; +@import "./application/blocks/event/_event-meta.css"; +@import "./application/blocks/footer/_footer-nav.css"; +@import "./application/blocks/footer/_footer.css"; +@import "./application/blocks/header/_header-current-user.css"; +@import "./application/blocks/header/_header-dropdown.css"; +@import "./application/blocks/header/_header-links.css"; +@import "./application/blocks/header/_header-notification-icon.css"; +@import "./application/blocks/header/_header.css"; +@import "./application/blocks/mention/_mention.css"; +@import "./application/blocks/modal/_modal-celebrate-report-count-body.css"; +@import "./application/blocks/page/_o-page-info.css"; +@import "./application/blocks/page/_page-body-actions.css"; +@import "./application/blocks/page/_page-body.css"; +@import "./application/blocks/page/_page-header.css"; +@import "./application/blocks/page/_page-header-actions.css"; +@import "./application/blocks/page/_page-main-header-actions.css"; +@import "./application/blocks/page/_page-main-header.css"; +@import "./application/blocks/page/_page-notices.css"; +@import "./application/blocks/page/_page-optional-header.css"; +@import "./application/blocks/page/_page-tabs.css"; +@import "./application/blocks/page/_page.css"; +@import "./application/blocks/page/_page-filter.css"; +@import "./application/blocks/page/_page-main-filter.css"; +@import "./application/blocks/page-content/_page-content.css"; +@import "./application/blocks/page-content/_page-content-header-actions.css"; +@import "./application/blocks/page-content/_page-content-header-metas.css"; +@import "./application/blocks/page-content/_page-content-header.css"; +@import "./application/blocks/page-content/_page-content-members.css"; +@import "./application/blocks/page-content/_page-content-prev-next.css"; +@import "./application/blocks/practice/_categories.css"; +@import "./application/blocks/practice/_category-practices-item.css"; +@import "./application/blocks/practice/_completion-massage.css"; +@import "./application/blocks/practice/_practice-content-actions.css"; +@import "./application/blocks/practice/_practice-content.css"; +@import "./application/blocks/practice/_practice-contents.css"; +@import "./application/blocks/practice/_practice-first-actions.css"; +@import "./application/blocks/practice/_practice-status-buttons.css"; +@import "./application/blocks/practice/_sticky-message.css"; +@import "./application/blocks/question/_answer-badge.css"; +@import "./application/blocks/reaction/_reaction.css"; +@import "./application/blocks/report/_learning-times.css"; +@import "./application/blocks/report/_stamp.css"; +@import "./application/blocks/side/_side-tabs-contents.css"; +@import "./application/blocks/side/_side-tabs-nav.css"; +@import "./application/blocks/side/_side-tabs.css"; +@import "./application/blocks/side/_user-statuses.css"; +@import "./application/blocks/static-pages/_thanks-message.css"; +@import "./application/blocks/static-pages/_thanks.css"; +@import "./application/blocks/survey/_survey-added-question.css"; +@import "./application/blocks/survey/_survey-additional-question.css"; +@import "./application/blocks/survey/_survey-questions-item.css"; +@import "./application/blocks/survey/_survey-questions.css"; +@import "./application/blocks/survey/survey-answer.css"; +@import "./application/blocks/survey/survey-result.css"; +@import "./application/blocks/survey/survey-answers.css"; +@import "./application/blocks/tags/_random-tags.css"; +@import "./application/blocks/tags/_tag-links.css"; +@import "./application/blocks/tags/_tag-input.css"; +@import "./application/blocks/thread/_thread-comment-form.css"; +@import "./application/blocks/thread/_thread-comment.css"; +@import "./application/blocks/thread/_thread-comments-more.css"; +@import "./application/blocks/thread/_thread-comments.css"; +@import "./application/blocks/thread/_thread-form.css"; +@import "./application/blocks/thread/_thread-header.css"; +@import "./application/blocks/thread/_action-completed.css"; +@import "./application/blocks/user/_active-practices-list.css"; +@import "./application/blocks/user/_companies-item.css"; +@import "./application/blocks/user/_completed-practices-progress.css"; +@import "./application/blocks/user/_following.css"; +@import "./application/blocks/user/_group-company-name.css"; +@import "./application/blocks/user/_niconico-calendar.css"; +@import "./application/blocks/user/_sns-links.css"; +@import "./application/blocks/user/_user-data.css"; +@import "./application/blocks/user/_user-grass.css"; +@import "./application/blocks/user/_user-group.css"; +@import "./application/blocks/user/_user-metas.css"; +@import "./application/blocks/user/_user-profile.css"; +@import "./application/blocks/user/_user-secret-attributes.css"; +@import "./application/blocks/user/_users-item.css"; +@import "./application/blocks/user/_user-study-streak-tracker.css"; +@import "./application/blocks/coding-test/_code-editor.css"; +@import "./application/blocks/coding-test/_io-sample.css"; +@import "./application/blocks/coding-test/_test-case.css"; +@import "./application/blocks/coding-test/_coding-test.css"; +@import "./application/blocks/coding-test/_result-table.css"; +@import "./application/blocks/coding-test/_coding-tests-item.css"; +@import "./application/blocks/micro-report/_micro-reports.css"; +@import "./application/blocks/micro-report/_micro-report.css"; +@import "./application/blocks/micro-report/_micro-report-form.css"; +@import "./application/blocks/micro-report/_micro-report-form-tabs.css"; +@import "./application/blocks/micro-report/_micro-report-actions.css"; +@import "./form/_zip-tel-input.css"; diff --git a/app/assets/stylesheets/application/base/_base.css b/app/assets/stylesheets/application/base/_base.css new file mode 100644 index 00000000000..0d95a028fbc --- /dev/null +++ b/app/assets/stylesheets/application/base/_base.css @@ -0,0 +1,67 @@ +html.is-application { + font-family: var(--sans-serif); + color: var(--default-text); +} + +body.is-application { + background-color: var(--background); +} + +body.is-no-scroll { + overflow-y: hidden; +} +body.is-no-scroll .header { + position: static; +} +body.is-no-scroll .wrapper { + padding-top: 0; +} + +body.is-piyo-background::before { + content: ""; + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; + width: 100%; + height: 100%; + background-image: url(https://bootcamp.fjord.jp/images/background/background.svg); + background-repeat: repeat; + overflow-y: auto; + opacity: 0.04; + background-size: 20rem; +} +body.is-piyo-background .wrapper { + position: relative; + z-index: 1; +} + +body.no-global-nav .wrapper { + margin-left: 0; +} +body.no-header .wrapper { + padding-top: 0; +} +body.is-error-page .wrapper { + padding-top: 4rem; + overflow-y: auto; +} +body.is-thanks-page .wrapper { + padding-block: 4rem; +} + +@media (min-width: 48em) { + html.is-application { + scroll-padding-top: var(--header-height__md-up); + } + .wrapper.is-application { + margin-left: var(--global-nav-width); + padding-top: var(--header-height__md-up); + } +} +@media (max-width: 47.9375em) { + body.is-piyo-background::before { + background-size: 4.5rem auto; + } +} diff --git a/app/assets/stylesheets/application/blocks/admin/_admin-table.css b/app/assets/stylesheets/application/blocks/admin/_admin-table.css new file mode 100644 index 00000000000..ebc486c5bc5 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/admin/_admin-table.css @@ -0,0 +1,221 @@ + +@keyframes grab-background-color { + 0% { + background-color: var(--warning); + } + 100% { + background-color: var(--base); + } +} + +.admin-table { + margin-bottom: 1.5rem; +} + +@media (max-width: 47.9375em) { + .admin-table { + overflow-x: auto; + } +} + +.admin-table__table { + border-radius: .25rem; + width: 100%; +} + +.admin-table__header { + background-color: var(--background-semi-shade); + border: solid 1px var(--border-shade); + border-top-left-radius: .25rem; + border-top-right-radius: .25rem; +} + +.admin-table__items { + border-left: solid 1px var(--border); + border-right: solid 1px var(--border); +} + +.admin-table-item__title { + font-size: 1.5rem; + line-height: 1.45; + color: var(--default-text); +} + +.admin-table__label { + font-size: .75rem; + line-height: 1.4; + text-align: center; + font-weight: 700; + color: var(--main); + border: solid 1px var(--border-shade); + white-space: nowrap; + height: 2rem; + padding-inline: .5rem; +} + +.admin-table__label .a-button.is-icon { + min-height: 1.25rem; + height: 1.25rem; + font-size: .75rem; + margin-left: .5rem; + padding-inline: .375rem; + background-color: var(--base); + border-color: var(--border-shade); + color: var(--default-text); +} + +.admin-table__item { + transition: all .2s ease-out; + background-color: var(--base); +} + +.admin-table__item.is-retired { + background-color: var(--background-tint); +} + +.admin-table__item.is-retired:hover { + background-color: var(--background); +} + +.admin-table__item:last-child { + border-bottom-left-radius: .25rem; + border-bottom-right-radius: .25rem; +} + +.admin-table__item.sortable-chosen { + background-color: color-mix(in srgb, var(--warning) 20%, white); +} + +.admin-table__item:hover, +.admin-table.is-grab .admin-table__item:hover { + background-color: color-mix(in srgb, var(--primary) 10%, white); +} + +.admin-table__item[draggable="false"] { + background-color: var(--base); + animation: grab-background-color 1.25s ease 0s 1 normal none running; +} + +.admin-table__item-value { + padding: .375rem .75rem; + border: solid 1px var(--border); + font-size: .8125rem; + line-height: 1.45; +} + +.admin-table__item-value.is-text-align-center { + text-align: center; +} + +.admin-table__item-value .a-button { + margin-inline: .1875rem; +} + +.admin-table__item-value .is-button-group .a-button { + margin-inline: 0; +} + +.admin-table__item-value.is-grab { + padding: 0; +} + +.admin-table__item-blank { + font-size: .75rem; + line-height: 1.45; + color: var(--muted-text); +} + +.admin-table__item-logo-image { + border: solid 1px var(--border); + width: 2.5rem; + border-radius: .25rem; +} + +.admin-table-item__body { + border-radius: .25rem; + background-color: var(--base); + box-shadow: rgba(0, 0, 0, .2) 0 1px 4px; + overflow: hidden; +} + +.admin-table__user { + display: inline-flex; + align-items: center; + gap: .25rem .25rem; +} + +.admin-table__user-icon { + height: 2.125rem; + width: 2.125rem; + display: inline-block; + flex: 0 0 2.125rem; +} + +.admin-table__user-icon:not(:last-child) { + margin-right: .5rem; +} + +.admin-table__user-login-name { + overflow-wrap: break-word; + word-wrap: break-word; + color: var(--main-text); +} + +.admin-table__user:hover .admin-table__user-login-name { + text-decoration: underline; +} + +.is-user-icon-xl { + height: auto; + width: 100%; + margin-inline: auto; + border-radius: .25rem; +} + +.admin-table__item-block-link-container { + padding-top: .25em; + font-size: .75rem; +} + +.admin-table__item-block-link-container a { + text-decoration: none; + cursor: pointer; + color: var(--danger); +} + +.admin-table__item-block-link-container a:hover, +.admin-table__item-block-link-container a:active { + text-decoration: underline; +} + +.admin-table.is-loading .admin-table__header { + border: solid 1px var(--border); + background-color: var(--background); +} + +.admin-table.is-loading .admin-table__label { + border: solid 1px var(--border); + text-align: center; +} + +.admin-table.is-loading .admin-table__label .a-placeholder { + height: 1.05rem; + width: 30%; + display: inline-block; + vertical-align: middle; +} + +.admin-table.is-loading .admin-table__item-value { + height: 2.75rem; + border: solid 1px var(--border); + pointer-events: none; + text-align: center; + vertical-align: middle; +} + +.admin-table.is-loading .admin-table__item-value .a-placeholder { + height: 1.1875rem; + width: 60%; + display: inline-block; + vertical-align: middle; +} diff --git a/app/assets/stylesheets/application/blocks/admin/_admin-users.css b/app/assets/stylesheets/application/blocks/admin/_admin-users.css new file mode 100644 index 00000000000..7c9664994be --- /dev/null +++ b/app/assets/stylesheets/application/blocks/admin/_admin-users.css @@ -0,0 +1,3 @@ +.admin-users { + width: 100%; +} diff --git a/app/assets/stylesheets/application/blocks/admin/_embedding-status.css b/app/assets/stylesheets/application/blocks/admin/_embedding-status.css new file mode 100644 index 00000000000..9fbf01ac149 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/admin/_embedding-status.css @@ -0,0 +1,19 @@ +/* テーブル内プログレスバー */ +.embedding-status-progress { + background-color: var(--background-semi-shade); + border-radius: 0.25rem; + height: 0.5rem; + overflow: hidden; + min-width: 8rem; +} + +.embedding-status-progress__bar { + height: 100%; + background-color: var(--primary); + border-radius: 0.25rem; + transition: width 0.3s ease; +} + +.embedding-status-progress__bar.is-complete { + background-color: var(--success); +} diff --git a/app/assets/stylesheets/application/blocks/auth-form/_auth-form-nav.css b/app/assets/stylesheets/application/blocks/auth-form/_auth-form-nav.css new file mode 100644 index 00000000000..9bffac99a97 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/auth-form/_auth-form-nav.css @@ -0,0 +1,23 @@ +.auth-form-nav { + display: flex; + justify-content: flex-end; +} + +.auth-form-nav__items { + display: flex; + gap: 3rem; + justify-content: center; + width: 100%; +} + +.auth-form-nav__item-link { + cursor: pointer; + font-size: 0.75rem; + line-height: 1.45; + color: var(--main); + text-decoration: none; + cursor: pointer; +} +.auth-form-nav__item-link:hover, .auth-form-nav__item-link:active { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/application/blocks/auth-form/_auth-form.css b/app/assets/stylesheets/application/blocks/auth-form/_auth-form.css new file mode 100644 index 00000000000..1a2db9249fd --- /dev/null +++ b/app/assets/stylesheets/application/blocks/auth-form/_auth-form.css @@ -0,0 +1,113 @@ + +.auth-form-logo-image { + display: block; +} + +@media (min-width: 48em) { + .auth-form-logo-image { + max-width: 10rem; + margin: 4rem auto 2rem; + } +} + +@media (max-width: 47.9375em) { + .auth-form-logo-image { + max-width: 10rem; + margin: 2rem auto; + } +} + +.auth-form { + width: 28rem; + max-width: calc(100vw - 2rem); + margin-bottom: 2rem; +} + +@media (min-width: 48em) { + .auth-form { + margin-inline: auto; + } +} + +@media (max-width: 47.9375em) { + .auth-form { + margin-inline: 1rem; + } +} + +.auth-form.is-lg { + width: 34rem; +} + +@media (min-width: 48em) { + .auth-form.is-lg { + margin-top: 3rem; + } +} + +@media (max-width: 47.9375em) { + .auth-form.is-lg { + margin-top: 1rem; + } +} + +.page-header + .auth-form { + margin-top: 1.5rem; +} + +.auth-form__header { + border-bottom: solid 1px var(--border-tint); + padding: 1rem 1.75rem; +} + +.auth-form__body { +} + +@media (min-width: 48em) { + .auth-form__body { + padding: 1.5rem 1.75rem; + } +} + +@media (max-width: 47.9375em) { + .auth-form__body { + padding: 1.25rem 1rem; + } +} + +.auth-form__footer { + padding: 1rem 1.75rem; +} + +.auth-form__title { + font-size: 1.25rem; + line-height: 1.4; + text-align: center; + font-weight: 700; +} + +.auth-form-items { + margin-bottom: 1.25rem; +} + +.auth-form__alert { + padding: .5rem 1.5rem; + background-color: var(--danger); + text-align: center; + font-size: .8125rem; + line-height: 1.4; + color: var(--reversal-text); + margin: 1rem 1rem 0; + border-radius: .25rem; +} + +.auth-form__alert a { + text-decoration: none; + cursor: pointer; + color: var(--reversal-text); +} + +.auth-form__alert a:hover, +.auth-form__alert a:active { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/application/blocks/auth-form/_next-settlement-time.css b/app/assets/stylesheets/application/blocks/auth-form/_next-settlement-time.css new file mode 100644 index 00000000000..f0d47a1f06b --- /dev/null +++ b/app/assets/stylesheets/application/blocks/auth-form/_next-settlement-time.css @@ -0,0 +1,25 @@ + +.next-settlement-time { + @media (min-width: 48em) { + display: flex; + align-items: center; + justify-content: center; + + } +} +.next-settlement-time__title { + font-size: .875rem; + line-height: 1.4; + font-weight: 400; + @media (min-width: 48em) { + margin-right: .5em; + + } +} +.next-settlement-time__time { + font-size: 1rem; + line-height: 1.4; + font-weight: 700; + color: var(--danger); + +} diff --git a/app/assets/stylesheets/application/blocks/auth-form/_skip-practices.css b/app/assets/stylesheets/application/blocks/auth-form/_skip-practices.css new file mode 100644 index 00000000000..e849be562fc --- /dev/null +++ b/app/assets/stylesheets/application/blocks/auth-form/_skip-practices.css @@ -0,0 +1,72 @@ +.skip-practices + .skip-practices { + margin-top: 0.5rem; +} + +.skip-practices__inner { + border-radius: 0.25rem; + border: solid 1px var(--border); + overflow: hidden; + transition: all 0.2s ease-out; +} + +input:checked + .skip-practices__inner { + border-color: var(--primary); +} + +.skip-practices__header { + display: flex; + justify-content: space-between; + height: 2.5rem; + font-size: 0.875rem; + line-height: 1.5; + padding: 0.75rem; + align-items: center; + cursor: pointer; + color: var(--semi-muted-text); + transition: all 0.2s ease-out; +} + +.skip-practices__header:hover { + background-color: var(--background); +} + +input:checked + .skip-practices__inner .skip-practices__header { + background-color: var(--primary-tint); + color: var(--primary-text); +} + +.skip-practices__category-angle-icon { + transition: all 0.2s ease-out; +} + +input:checked + .skip-practices__inner .skip-practices__category-angle-icon { + transform: rotate(180deg); +} + +.skip-practices__category-name { + transition: all 0.2s ease-out; +} + +.skip-practices__header:hover .skip-practices__category-name { + text-decoration: underline; + color: var(--default-text); +} + +.skip-practices__start { + display: flex; + gap: 0.25rem; +} + +.skip-practices__body { + transition: all 0.2s ease-out; + display: none; + border-top: solid 1px var(--primary-semi-tint); + margin-top: -1px; + padding: 0.75rem; + font-size: 0.8125rem; + background-color: var(--primary-tint); +} + +input:checked + .skip-practices__inner .skip-practices__body { + display: block; +} diff --git a/app/assets/stylesheets/application/blocks/cards/_card-body-main-actions.css b/app/assets/stylesheets/application/blocks/cards/_card-body-main-actions.css new file mode 100644 index 00000000000..e1233b4fb05 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/cards/_card-body-main-actions.css @@ -0,0 +1,81 @@ + +.card-body-main-actions { + position: relative; + z-index: 1; + padding-block: .75rem; + margin-inline: 1rem; + border-radius: 4px; +} + +@media (min-width: 48em) { + .card-body-main-actions { + padding-inline: 2rem; + margin-bottom: 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .card-body-main-actions { + padding-inline: .75rem; + margin-bottom: 1rem; + } +} + +.card-body-main-actions.is-success { + background-color: #f8fff2; + border: 1px solid var(--success); + color: var(--success-text); +} + +.card-body-main-actions.is-primary { + border: 1px solid var(--primary); + background-color: #f5f5ff; + color: var(--primary-text); +} + +.card-body-main-actions.is-warning { + border: 1px solid var(--warning); + background-color: #fff9e7; + color: var(--warning-text); +} + +.card-body-main-actions.is-danger { + border: 1px solid var(--danger); + background-color: var(--danger-tint); + color: var(--danger-text); +} + +.card-body-main-actions__description { + font-size: .875rem; + line-height: 1.4; + margin-bottom: .75em; + text-align: center; +} + +.card-body-main-actions__items { + display: flex; + justify-content: center; +} + +.card-body-main-actions__item { + text-align: center; + flex: 1; +} + +@media (min-width: 48em) { + .card-body-main-actions__item { + max-width: 16rem; + } +} + +.card-body-main-actions__item-cancel { + text-decoration: none; + cursor: pointer; + color: var(--muted-text); + font-size: .8125rem; +} + +.card-body-main-actions__item-cancel:hover, +.card-body-main-actions__item-cancel:active { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/application/blocks/cards/_card-counts.css b/app/assets/stylesheets/application/blocks/cards/_card-counts.css new file mode 100644 index 00000000000..0b8e1834351 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/cards/_card-counts.css @@ -0,0 +1,102 @@ + +.card-counts { +} + +@media (min-width: 48em) { + .card-counts.is-user { + margin-bottom: 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .card-counts.is-user { + margin-bottom: 1.25rem; + } +} + +.card-counts__items { + display: flex; + gap: .5rem; + flex-wrap: wrap; + container-type: inline-size; + container-name: users-item; +} + +.card-counts__item { + background-color: var(--base); +} + +@container users-item (max-width: 299px) { + .card-counts__item { + flex: 0 0 calc((100% - (.5rem * 2)) / 3); + max-width: calc((100% - (.5rem * 2)) / 3); + } +} + +@container users-item (min-width: 300px) { + .card-counts__item { + flex: 0 0 calc((100% - (.5rem * 3)) / 4); + max-width: calc((100% - (.5rem * 3)) / 4); + } +} + +@container users-item (min-width: 401px) { + .card-counts__item { + flex: 0 0 calc((100% - (.5rem * 4)) / 5); + max-width: calc((100% - (.5rem * 4)) / 5); + } +} + +@container users-item (min-width: 460px) { + .card-counts__item { + flex: 0 0 calc((100% - (.5rem * 5)) / 6); + max-width: calc((100% - (.5rem * 5)) / 6); + } +} + +.card-counts__item-inner { + border: solid 1px var(--border); + border-radius: 3px; +} + +.card-counts__item-label { + font-size: .625rem; + line-height: 1.4; + white-space: nowrap; + max-width: 100%; + overflow: hidden; + text-align: center; + color: var(--semi-muted-text); + padding: .125rem .125rem; + border-bottom: solid 1px var(--border); + height: 1.25rem; + text-overflow: ellipsis; +} + +.card-counts__item-label.is-sm span { + transform: scale(.85); +} + +.card-counts__item-value { + color: var(--muted-text); + font-size: .875rem; + line-height: 1.4; + padding-bottom: .125rem; + text-align: center; +} + +.card-counts__item-value.is-empty { + color: var(--muted-text); +} + +.card-counts__item-value a { + text-decoration: none; + cursor: pointer; + display: block; + color: var(--link-text); +} + +.card-counts__item-value a:hover, +.card-counts__item-value a:active { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/application/blocks/coding-test/_code-editor.css b/app/assets/stylesheets/application/blocks/coding-test/_code-editor.css new file mode 100644 index 00000000000..23e12d7029a --- /dev/null +++ b/app/assets/stylesheets/application/blocks/coding-test/_code-editor.css @@ -0,0 +1,6 @@ +.code-editor { + font-size: 0.875rem; + line-height: 1.5; + field-sizing: content; + min-height: 20lh; +} diff --git a/app/assets/stylesheets/application/blocks/coding-test/_coding-test.css b/app/assets/stylesheets/application/blocks/coding-test/_coding-test.css new file mode 100644 index 00000000000..f6ea50b583d --- /dev/null +++ b/app/assets/stylesheets/application/blocks/coding-test/_coding-test.css @@ -0,0 +1,4 @@ +.coding-test__language { + font-size: 0.875rem; + line-height: 1.4; +} diff --git a/app/assets/stylesheets/application/blocks/coding-test/_coding-tests-item.css b/app/assets/stylesheets/application/blocks/coding-test/_coding-tests-item.css new file mode 100644 index 00000000000..91675f1f4a4 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/coding-test/_coding-tests-item.css @@ -0,0 +1,10 @@ +.coding-tests-item { + display: flex; + gap: 0.5rem; + align-items: center; +} + +.coding-tests-item__test-link { + font-size: 0.875rem; + line-height: 1.4; +} diff --git a/app/assets/stylesheets/application/blocks/coding-test/_io-sample.css b/app/assets/stylesheets/application/blocks/coding-test/_io-sample.css new file mode 100644 index 00000000000..331cd1675ab --- /dev/null +++ b/app/assets/stylesheets/application/blocks/coding-test/_io-sample.css @@ -0,0 +1,16 @@ +.io-sample__title { + font-size: 0.875rem; + line-height: 1.4; + font-weight: 700; +} + +.io-sample__body { + margin-top: 0.5rem; + font-size: 0.875rem; +} + +.io-sample__code { + padding: 0.75rem; + border-radius: 0.25rem; + font-family: var(--monospace); +} diff --git a/app/assets/stylesheets/application/blocks/coding-test/_result-table.css b/app/assets/stylesheets/application/blocks/coding-test/_result-table.css new file mode 100644 index 00000000000..23b1f86863e --- /dev/null +++ b/app/assets/stylesheets/application/blocks/coding-test/_result-table.css @@ -0,0 +1,17 @@ +.result-table tr.is-wa td, .result-table tr.is-re td { + background-color: var(--danger-tint); +} +.result-table tr.is-ac td { + background-color: var(--success-tint); +} +.result-table .status.wa, +.result-table .status.re { + color: var(--danger-text); +} +.result-table .status.ac { + color: var(--success-text); +} +.result-table pre, +.result-table code { + font-family: var(--monospace); +} diff --git a/app/assets/stylesheets/application/blocks/coding-test/_test-case.css b/app/assets/stylesheets/application/blocks/coding-test/_test-case.css new file mode 100644 index 00000000000..62f12491f85 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/coding-test/_test-case.css @@ -0,0 +1,3 @@ +.test-case__header { + position: relative; +} diff --git a/app/assets/stylesheets/application/blocks/company/_company-links.css b/app/assets/stylesheets/application/blocks/company/_company-links.css new file mode 100644 index 00000000000..8d51f1c1e8e --- /dev/null +++ b/app/assets/stylesheets/application/blocks/company/_company-links.css @@ -0,0 +1,24 @@ +.company-links { + margin-top: 0.5rem; +} + +.company-links__items { + display: flex; + gap: 0.5rem; + flex-wrap: wrap; +} + +.company-links__item { + flex: 0 0 auto; +} + +@media (min-width: 96em) { + .company-links__item { + flex: 0 0 calc((100% - 1rem) / 3); + } +} +@media (max-width: 79.9375em) { + .company-links__item { + flex: 0 0 calc((100% - 0.5rem) / 2); + } +} diff --git a/app/assets/stylesheets/application/blocks/company/_company-profile.css b/app/assets/stylesheets/application/blocks/company/_company-profile.css new file mode 100644 index 00000000000..9b81b3b9012 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/company/_company-profile.css @@ -0,0 +1,68 @@ +.company-profile__header { + padding: 1rem; +} +.company-profile__header .company-links__items { + justify-content: flex-start; +} + +.company-profile__header-inner { + text-align: center; +} + +.company-profile__header-start { + margin-right: 1.25rem; +} + +.company-profile__header-end { + flex: 1; +} + +.company-profile__logo { + position: static; + text-align: center; + margin-bottom: 0.25rem; +} + +.company-profile__logo-image { + background-color: var(--base); + object-fit: contain; + border-radius: 0.25rem; + width: 3.5rem; + height: 3.5rem; +} + +.company-profile__name { + font-weight: 800; + color: var(--main-text); + font-size: 1.25rem; + line-height: 1.45; +} + +.company-profile__body { + padding: 1rem; +} + +.company-profile__description { + font-size: 0.8125rem; +} + +@media (min-width: 48em) { + .company-profile__header-inner { + display: flex; + text-align: left; + } + .company-profile__logo { + margin-bottom: 0; + text-align: left; + } + .company-profile__logo-image { + width: 4.5rem; + height: 4.5rem; + } + .company-profile__name { + font-size: 1.5rem; + } + .company-profile__description { + font-size: 0.9375rem; + } +} diff --git a/app/assets/stylesheets/application/blocks/course/_courses.css b/app/assets/stylesheets/application/blocks/course/_courses.css new file mode 100644 index 00000000000..7efe49e8f47 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/course/_courses.css @@ -0,0 +1,79 @@ + +.courses-item { + height: 100%; +} + +.courses-item__inner { + height: 100%; +} + +.courses-item__header { + padding: .75rem 1.25rem 0; +} + +.courses-item__title { + font-size: 1.125rem; + line-height: 1.4; +} + +.courses-item__title-icon { + font-size: .6875rem; + line-height: 1; + color: var(--semi-muted-text); + display: inline-flex; + white-space: nowrap; + font-weight: 400; + padding-inline: .5rem; + height: 1.125rem; + margin-right: .5rem; + border-radius: .75rem; + align-items: center; + justify-content: center; + position: relative; +} + +@media (min-width: 48em) { + .courses-item__title-icon { + top: -.125rem; + } +} + +@media (max-width: 47.9375em) { + .courses-item__title-icon { + top: -.1875rem; + } +} + +.courses-item__title-icon.is-closed { + background-color: var(--background-tint); +} + +.courses-item__title-link { + display: block; + text-decoration: none; +} + +.courses-item__title-label { + color: var(--main-text); + transition: all .2s ease-out; + font-weight: 700; +} + +.is-closed .courses-item__title-label { + color: var(--muted-text); +} + +.is-closed .courses-item__title-link:hover .courses-item__title-label, +.courses-item__title-link:hover .courses-item__title-label { + text-decoration: underline; + color: var(--main-text); +} + +.courses-item__description { + padding: .5rem 1.25rem .75rem; +} + +.courses-item__description p { + font-size: .8125rem; + line-height: 1.6; +} diff --git a/app/assets/stylesheets/application/blocks/dashboard/_current-user-icon-list.css b/app/assets/stylesheets/application/blocks/dashboard/_current-user-icon-list.css new file mode 100644 index 00000000000..17925432d2e --- /dev/null +++ b/app/assets/stylesheets/application/blocks/dashboard/_current-user-icon-list.css @@ -0,0 +1,56 @@ + +.current-user-icon-list { + margin-bottom: 1rem; + background-color: #eaeaf1; + padding-block: .5rem; + /* fallback for older UA */ + padding-top: .5rem; + padding-bottom: .5rem; +} + +.current-user-icon-list__inner { + display: flex; + align-items: center; + gap: .5rem; +} + +.current-user-icon-list__items { + display: flex; + align-items: center; + gap: .25rem; + flex: 1 1 auto; + min-width: 0; + flex-wrap: nowrap; + overflow-x: auto; + overflow-y: hidden; + scrollbar-gutter: stable both-edges; +} + +.current-user-icon-list__item { + flex: 0 0 2.5rem; +} + +@media (min-width: 48em) { + .current-user-icon-list__item { + flex: 0 0 3rem; + } +} + +@media (max-width: 47.9375em) { + .current-user-icon-list__item { + flex: 0 0 2rem; + } +} + +.current-user-icon-list__title-label { + font-size: .875rem; + line-height: 1.4; + font-weight: 700; + white-space: nowrap; +} + +.current-user-icon-list__title-time { + font-size: .75rem; + line-height: 1.4; + white-space: nowrap; +} diff --git a/app/assets/stylesheets/application/blocks/dashboard/_dashboard-categories-item.css b/app/assets/stylesheets/application/blocks/dashboard/_dashboard-categories-item.css new file mode 100644 index 00000000000..000d35dfc48 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/dashboard/_dashboard-categories-item.css @@ -0,0 +1,15 @@ +.dashboard-category__header { + padding-bottom: 0.25rem; + border-bottom: dashed 1px var(--border); +} + +.dashboard-category__title { + font-size: 0.75rem; + line-height: 1.4; + font-weight: 700; +} + +.dashboard-category__body:not(:first-child) { + flex: 1; + margin-top: 1rem; +} diff --git a/app/assets/stylesheets/application/blocks/dashboard/_dashboard-contents.css b/app/assets/stylesheets/application/blocks/dashboard/_dashboard-contents.css new file mode 100644 index 00000000000..88f722c01af --- /dev/null +++ b/app/assets/stylesheets/application/blocks/dashboard/_dashboard-contents.css @@ -0,0 +1,32 @@ +.dashboard-contents__cols { + display: flex; + gap: 1rem; +} +@media (max-width: 47.9375em) { + .dashboard-contents__cols { + flex-direction: column; + } +} + +.dashboard-contents__col { + width: 100%; +} +@media (min-width: 48em) { + .dashboard-contents__col.is-sub { + max-width: 20rem; + } +} +@media (min-width: 40em) { + .dashboard-contents__col.is-sub { + flex: 1; + } +} +.dashboard-contents__col.is-main { + flex: 1; +} + +.dashboard-contents__categories { + display: flex; + flex-direction: column; + gap: 1rem; +} diff --git a/app/assets/stylesheets/application/blocks/dashboard/_unchecked-report-alert.css b/app/assets/stylesheets/application/blocks/dashboard/_unchecked-report-alert.css new file mode 100644 index 00000000000..08f096e41d4 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/dashboard/_unchecked-report-alert.css @@ -0,0 +1,42 @@ +.unchecked-report-alert__header { + background-color: var(--danger); + padding: 0.125rem 1rem; +} + +.unchecked-report-alert__header-title { + font-size: 0.75rem; + line-height: 1.4; + font-weight: 700; + color: var(--reversal-text); +} + +.unchecked-report-alert__inner { + padding: 0.25rem 1rem; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.unchecked-report-alert__icon { + font-size: 2rem; +} + +.unchecked-report-alert__message { + font-size: 0.8125rem; + line-height: 1.4; + text-align: center; + flex: 1; +} + +.unchecked-report-alert__message-link { + color: var(--danger-text); +} + +.unchecked-report-alert__count { + margin-inline: 0.125rem; +} + +.unchecked-report-alert__count-number { + font-size: 1.25rem; + margin-right: 0.0625rem; +} diff --git a/app/assets/stylesheets/application/blocks/dashboard/_welcome-message.css b/app/assets/stylesheets/application/blocks/dashboard/_welcome-message.css new file mode 100644 index 00000000000..43ed8629530 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/dashboard/_welcome-message.css @@ -0,0 +1,45 @@ + +.welcome-message { + position: relative; + padding-top: 2.5rem; + +} +.welcome-message__inner { + @media (min-width: 48em) { + padding: 3.5rem 3rem 2rem; + } + @media (max-width: 47.9375em) { + padding: 3.5rem 1rem 1rem; + + } +} +.welcome-message__author { + height: 5rem; + width: 5rem; + margin-inline: auto; + padding: .75rem; + border-radius: 50%; + border: solid 1px color.shade(var(--warning), 10%); + left: 50%; + position: absolute; + top: 0; + transform: translate(-50%, 0); + background-color: var(--warning); + +} +.welcome-message__header { + font-size: 1.5rem; + margin-bottom: 1em; + +} +.welcome-message__title { + font-size: 1em; + line-height: 1.4; + text-align: center; + font-weight: 800; + +} +.welcome-message__body { + font-size: .9375rem; + +} diff --git a/app/assets/stylesheets/application/blocks/event/_event-main-actions.css b/app/assets/stylesheets/application/blocks/event/_event-main-actions.css new file mode 100644 index 00000000000..d18f20e3acd --- /dev/null +++ b/app/assets/stylesheets/application/blocks/event/_event-main-actions.css @@ -0,0 +1,81 @@ + +.event-main-actions { + position: relative; + z-index: 1; + padding-block: .75rem; + margin-inline: 1rem; + border-radius: 4px; +} + +@media (min-width: 48em) { + .event-main-actions { + padding-inline: 2rem; + margin-bottom: 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .event-main-actions { + padding-inline: .75rem; + margin-bottom: 1rem; + } +} + +.event-main-actions.is-participationed { + background-color: #f8fff2; + border: 1px solid var(--success); + color: #4e732e; +} + +.event-main-actions.is-unparticipationed.is-available { + border: 1px solid var(--primary); + background-color: #f5f5ff; + color: #28248c; +} + +.event-main-actions.is-unparticipationed.is-capacity-over { + border: 1px solid var(--warning); + background-color: #fff9e7; + color: #6f5819; +} + +.event-main-actions.is-non-participationed { + border: 1px solid var(--danger); + background-color: var(--danger-tint); + color: var(--danger); +} + +.event-main-actions__description { + font-size: .875rem; + line-height: 1.4; + margin-bottom: .75em; + text-align: center; +} + +.event-main-actions__items { + display: flex; + justify-content: center; +} + +.event-main-actions__item { + text-align: center; + flex: 1; +} + +@media (min-width: 48em) { + .event-main-actions__item { + max-width: 16rem; + } +} + +.event-main-actions__item-cancel { + text-decoration: none; + cursor: pointer; + color: var(--muted-text); + font-size: .8125rem; +} + +.event-main-actions__item-cancel:hover, +.event-main-actions__item-cancel:active { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/application/blocks/event/_event-meta.css b/app/assets/stylesheets/application/blocks/event/_event-meta.css new file mode 100644 index 00000000000..08b74c6e7a2 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/event/_event-meta.css @@ -0,0 +1,103 @@ + +.event-meta { +} + +@media (min-width: 48em) { + .event-meta { + font-size: .8125rem; + } +} + +@media (max-width: 47.9375em) { + .event-meta { + font-size: .75rem; + } +} + +.event-meta__inner { +} + +@media (min-width: 48em) { + .event-meta__inner { + padding: .75rem 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .event-meta__inner { + padding: .5rem .75rem; + } +} + +.event-meta__item { + line-height: 1.5; +} + +@media (min-width: 48em) { + .event-meta__item { + display: flex; + align-items: center; + } +} + +.event-meta__item:not(:first-child) { + margin-top: .5rem; + padding-top: .5rem; + border-top: solid var(--border-tint) 1px; +} + +.event-meta__item-label { + flex-basis: 5em; + margin-right: .75em; + white-space: nowrap; + font-weight: 600; +} + +@media (min-width: 48em) { + .event-meta__item-label { + text-align: right; + } +} + +@media (max-width: 47.9375em) { + .event-meta__item-label { + font-size: .875em; + } +} + +.event-meta__item-value { + flex: 1; +} + +@media (min-width: 48em) { + .event-meta__item-value { + display: flex; + align-items: center; + } +} + +.event-meta__item-value a:not(.a-button) { + text-decoration: none; + cursor: pointer; +} + +.event-meta__item-value a:not(.a-button):hover, +.event-meta__item-value a:not(.a-button):active { + text-decoration: underline; +} + +.event-meta__item-value-main { + display: block; +} + +@media (min-width: 48em) { + .event-meta__item-value-main { + margin-right: .5rem; + } +} + +@media (max-width: 47.9375em) { + .event-meta__item-value-main { + margin-bottom: .25rem; + } +} diff --git a/app/assets/stylesheets/application/blocks/footer/_footer-nav.css b/app/assets/stylesheets/application/blocks/footer/_footer-nav.css new file mode 100644 index 00000000000..5f9a35a2cea --- /dev/null +++ b/app/assets/stylesheets/application/blocks/footer/_footer-nav.css @@ -0,0 +1,61 @@ + +.footer-nav__items { + display: flex; + line-height: 1.4; + flex-wrap: wrap; + align-items: center; +} + +@media (min-width: 48em) { + .footer-nav__items { + font-size: .8125rem; + justify-content: center; + gap: 1.75rem; + } +} + +@media (max-width: 47.9375em) { + .footer-nav__items { + font-size: .75rem; + } +} + +.footer-nav__item { +} + +@media (max-width: 47.9375em) { + .footer-nav__item { + flex: 0 0 50%; + } + + .footer-nav__item:nth-child(odd) { + border-right: solid 1px var(--border); + } +} + +.footer-nav__item-link { + color: var(--semi-muted-text); +} + +@media (min-width: 48em) { + .footer-nav__item-link { + text-decoration: none; + cursor: pointer; + } + + .footer-nav__item-link:hover, + .footer-nav__item-link:active { + text-decoration: underline; + } +} + +@media (max-width: 47.9375em) { + .footer-nav__item-link { + display: flex; + text-decoration: none; + padding: .25rem 1rem; + min-height: 2.75rem; + align-items: center; + border-bottom: solid 1px var(--border); + } +} diff --git a/app/assets/stylesheets/application/blocks/footer/_footer.css b/app/assets/stylesheets/application/blocks/footer/_footer.css new file mode 100644 index 00000000000..e69a79c0c6f --- /dev/null +++ b/app/assets/stylesheets/application/blocks/footer/_footer.css @@ -0,0 +1,49 @@ + +.footer { + color: var(--semi-muted-text); +} + +@media (min-width: 48em) { + .footer { + padding-block: 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .footer .container { + padding-inline: 0; + } +} + +.footer__copyright { + line-height: 1.4; + display: block; + text-align: center; + color: var(--semi-muted-text); +} + +@media (min-width: 48em) { + .footer__copyright { + font-size: .8125rem; + margin-top: 1.5em; + } +} + +@media (max-width: 47.9375em) { + .footer__copyright { + font-size: .75rem; + padding-block: 1.25rem; + } +} + +.footer__copyright-link { + margin-inline: .25em; + text-decoration: none; + cursor: pointer; + color: var(--semi-muted-text); +} + +.footer__copyright-link:hover, +.footer__copyright-link:active { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/application/blocks/header/_header-current-user.css b/app/assets/stylesheets/application/blocks/header/_header-current-user.css new file mode 100644 index 00000000000..868bba6470e --- /dev/null +++ b/app/assets/stylesheets/application/blocks/header/_header-current-user.css @@ -0,0 +1,14 @@ + +.header-current-user__icon { + display: block; + margin-inline: auto; + @media (min-width: 48em) { + width: 1.5rem; + height: 1.5rem; + } + @media (max-width: 47.9375em) { + width: 1.125rem; + height: 1.125rem; + + } +} diff --git a/app/assets/stylesheets/application/blocks/header/_header-dropdown.css b/app/assets/stylesheets/application/blocks/header/_header-dropdown.css new file mode 100644 index 00000000000..278198b85cb --- /dev/null +++ b/app/assets/stylesheets/application/blocks/header/_header-dropdown.css @@ -0,0 +1,259 @@ +.header-dropdown { + position: fixed; + left: 0; + top: 0; + bottom: 0; + z-index: 100; + background-color: rgba(0, 0, 0, 0); + width: 0; + cursor: pointer; + transition: background-color 0.4s ease-in; + overflow: hidden; + display: block; +} +input:checked + .header-dropdown, .is-opened-dropdown .header-dropdown { + opacity: 1; + width: 100%; +} + +@media (max-width: 47.9375em) { + .header-dropdown__inner { + overflow-y: auto; + background-color: var(--main); + position: fixed; + top: 0; + bottom: 0; + right: auto; + z-index: 1; + transition: left 0.2s ease-out; + width: var(--global-nav-width-sm); + left: calc(var(--global-nav-width-sm) * -1); + } + input:checked + .header-dropdown .header-dropdown__inner, .is-opened-dropdown .header-dropdown__inner { + left: 0; + } +} + +.header-dropdown__inner.is-notification { + left: 0; +} + +@media (max-width: 47.9375em) { + .header-dropdown__inner.is-notification .pill-nav__item-link { + border-color: var(--base); + color: var(--reversal-text); + width: 100%; + } +} + +.header-dropdown__inner.is-notification .o-empty-message { + opacity: 0.7; + color: var(--reversal-text); +} + +.header-dropdown__header { + padding: 1rem; + border-bottom: solid 1px var(--main-semi-shade); +} + +.header-dropdown__label { + font-size: 0.625rem; + line-height: 1.4; + font-weight: 700; + padding: 0.25rem 0.75rem; + color: var(--reversal-text); + background-color: var(--main-semi-shade); +} + +.header-dropdown__inner.is-notification .header-dropdown__items { + overflow-y: auto; + max-height: calc(100vh - 134px); + margin-bottom: -1px; +} + +.header-dropdown__item-link { + font-size: 0.875rem; + line-height: 1.4; + display: flex; + text-decoration: none; + padding: 0.75rem; + transition: all 0.2s ease-out; + color: var(--reversal-text); + border-bottom: solid 1px var(--main-semi-shade); +} +.header-dropdown__item-link:hover { + background-color: var(--main-shade); +} + +.header-dropdown__footer { + border-bottom-left-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + overflow: hidden; + border-top: solid 1px var(--main-semi-shade); +} + +.header-dropdown__footer-link { + font-size: 0.875rem; + line-height: 1.4; + display: flex; + text-decoration: none; + align-items: center; + justify-content: center; + width: 100%; + height: 2.75rem; + transition: all 0.2s ease-out; + color: var(--reversal-text); +} +.header-dropdown__footer-link:hover { + background-color: var(--main-shade); +} +.header-dropdown__footer-link { + border-bottom: solid 1px var(--main-semi-shade); +} + +.header-dropdown__background { + background-color: rgba(0, 0, 0, 0.6); + bottom: 0; + left: 0; + position: fixed; + top: 0; + z-index: 1; + height: 100%; + width: 0; + display: inline; + opacity: 0; +} +input:checked + .header-dropdown .header-dropdown__background { + opacity: 1; + width: 100%; + display: block; +} +.header-dropdown__background.is-notification { + opacity: 1; + width: 100%; +} + +.header-dropdown__page-link-container { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + margin-top: 1rem; +} + +.header-dropdown__page-link { + font-size: 0.875rem; + line-height: 1.4; + text-decoration: none; + cursor: pointer; +} +.header-dropdown__page-link:hover, .header-dropdown__page-link:active { + text-decoration: underline; +} +.header-dropdown__page-link { + transition: all 0.2s ease-out; + color: var(--reversal-text); +} + +@media (min-width: 48em) { + .header-dropdown { + display: none; + position: static; + width: auto; + background-color: transparent; + overflow: visible; + } + input:checked + .header-dropdown, .is-opened-dropdown .header-dropdown { + display: block; + } + .header-dropdown__inner { + position: absolute; + right: 0; + top: 100%; + z-index: 2; + background-color: var(--base); + border: solid 1px var(--border-shade); + width: 14rem; + box-shadow: rgba(0, 0, 0, 0.2) 0 0 0.375rem; + border-radius: 0.25rem; + max-height: calc(100vh - 6rem); + left: auto; + overflow: auto; + } + .header-dropdown__inner.is-notification { + width: 15rem; + } + .header-dropdown__inner.is-notification { + left: auto; + background-color: var(--base); + } + .header-dropdown__inner.is-notification .o-empty-message { + color: var(--muted-text); + opacity: 1; + } + .header-dropdown__header { + border-bottom: solid 1px var(--border-tint); + } + .header-dropdown__label { + color: var(--default-text); + background-color: var(--background-semi-shade); + } + .header-dropdown__inner.is-notification .header-dropdown__items { + max-height: calc(100vh - 16rem); + margin-bottom: 0; + } + .header-dropdown__item-link { + color: var(--default-text); + border-bottom: none; + } + .header-dropdown__item:not(:last-child) .header-dropdown__item-link { + border-bottom: solid 1px var(--border-tint); + } + .header-dropdown__item-link:hover { + background-color: var(--primary-tint); + } + .header-dropdown__footer { + border-top: solid 1px var(--border-tint); + } + .header-dropdown__footer-link { + color: var(--main-text); + border-bottom: none; + } + .header-dropdown__footer-link:not(:last-child) { + border-bottom: solid 1px var(--border-tint); + } + .header-dropdown__footer-link:hover { + background-color: var(--background-more-tint); + } + .header-dropdown__background { + background-color: rgba(0, 0, 0, 0.2); + z-index: 2; + } +} + +@media (max-width: 47.9375em) { + .header-dropdown__inner.is-notification .pill-nav__item-link { + border-color: var(--base); + color: var(--reversal-text); + } +} + + +@media (max-width: 47.9375em) { + .header-dropdown__inner.is-notification .pill-nav__item-link.is-active { + background-color: var(--base); + color: var(--main); + } +} + +/* +.header-dropdown__inner.is-notification .pill-nav__item-link.is-active { + background-color: var(--base); + color: var(--main); +} +.header-dropdown__inner.is-notification .pill-nav__item-link { + border-color: var(--border); + color: var(--default-text); +} + +*/ diff --git a/app/assets/stylesheets/application/blocks/header/_header-links.css b/app/assets/stylesheets/application/blocks/header/_header-links.css new file mode 100644 index 00000000000..a11e9e8885b --- /dev/null +++ b/app/assets/stylesheets/application/blocks/header/_header-links.css @@ -0,0 +1,80 @@ +.header-links { + height: 100%; + display: flex; + align-items: center; +} + +.header-links__items { + display: flex; + height: 100%; +} + +.header-links__item { + display: flex; + height: 100%; + border-left: solid var(--border-tint) 0.0625rem; + position: relative; + transition: color 0.2s ease-in, background-color 0.2s ease-in; +} + +.header-links__link { + display: flex; + text-decoration: none; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + font-size: 1em; + line-height: 1; + color: var(--default-text); + position: relative; + transition: all 0.2s ease-in; + cursor: pointer; + font-size: 1.125rem; + width: 2.75rem; +} +.header-links__link:hover { + background-color: #f8f8f8; +} +.header-links__link.is-active { + background-color: var(--warning); + color: var(--main-text); +} + +.header-links__link-label { + margin-top: 0.375em; + font-size: 0.625rem; +} + +.header-links__link-count { + position: absolute; + right: 0.25rem; + top: 0.25rem; +} + +.header-links__image { + width: 1.125rem; +} + +.header-links__link-icon { + font-size: 1.25rem; + line-height: 1; + text-align: center; + font-size: 1.125rem; +} +.has-count .header-links__link-icon { + color: var(--default-text); +} + +@media (min-width: 48em) { + .header-links__link { + font-size: 1.375rem; + width: 3.75rem; + } + .header-links__link-label { + font-size: 0.6875rem; + } + .header-links__image { + width: 1.5rem; + } +} diff --git a/app/assets/stylesheets/application/blocks/header/_header-notification-icon.css b/app/assets/stylesheets/application/blocks/header/_header-notification-icon.css new file mode 100644 index 00000000000..cac48a33606 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/header/_header-notification-icon.css @@ -0,0 +1,108 @@ + +.header-notification-count { + position: absolute; +} + +@media (min-width: 48em) { + .header-notification-count { + right: .25rem; + top: .25rem; + } +} + +@media (max-width: 47.9375em) { + .header-notification-count { + right: .125rem; + top: .125rem; + } +} + +.header-notification-count.is-loading.a-notification-count { + background-color: transparent; +} + +.header-notification-count.is-loading::before { + content: ' .'; + color: var(--default-text); + animation: dots 1s steps(5, end) infinite; + font-size: 1rem; + line-height: 1; + position: absolute; + left: .25rem; + bottom: .25rem; +} + +@keyframes dots { + 0%, 20% { + color: var(--transparent-text); + text-shadow: .25em 0 0 var(--transparent-text), .5em 0 0 var(--transparent-text); + } + 40% { + color: var(--default-text); + text-shadow: .25em 0 0 var(--transparent-text), .5em 0 0 var(--transparent-text); + } + 60% { + text-shadow: .25em 0 0 var(--default-text), .5em 0 0 var(--transparent-text); + } + 80%, 100% { + text-shadow: .25em 0 0 var(--default-text), .5em 0 0 var(--default-text); + } +} + +.header-notifications-item__body { + width: 100%; +} + +@media (min-width: 48em) { + .header-notifications-item__body { + color: var(--default-text); + } +} + +@media (max-width: 47.9375em) { + .header-notifications-item__body { + color: var(--reversal-text); + } +} + +.header-notifications-item__user-icon { + float: left; + height: 2rem; + width: 2rem; + margin-right: .5rem; + margin-bottom: .25rem; +} + +.header-notifications-item__message p { + line-height: 1.45; + margin-bottom: .375em; +} + +@media (min-width: 48em) { + .header-notifications-item__message p { + font-size: .8125rem; + } +} + +@media (max-width: 47.9375em) { + .header-notifications-item__message p { + font-size: .75rem; + } +} + +.header-notifications-item__created-at { + text-align: right; + display: block; +} + +@media (min-width: 48em) { + .header-notifications-item__created-at { + font-size: .75rem; + } +} + +@media (max-width: 47.9375em) { + .header-notifications-item__created-at { + font-size: .625rem; + } +} diff --git a/app/assets/stylesheets/application/blocks/header/_header.css b/app/assets/stylesheets/application/blocks/header/_header.css new file mode 100644 index 00000000000..fbdbc08060b --- /dev/null +++ b/app/assets/stylesheets/application/blocks/header/_header.css @@ -0,0 +1,89 @@ +.header { + background-color: var(--base); + z-index: 5; +} + +@media (min-width: 48em) { + .header { + position: fixed; + top: 0; + right: 0; + left: var(--global-nav-width); + height: var(--header-height__md-up); + } +} + +@media (max-width: 47.9375em) { + .header { + position: relative; + height: var(--header-height__sm-down); + } +} + +.header .a-switch { + margin-left: .5rem; +} + +.header__inner { + display: flex; + justify-content: space-between; + align-items: center; + height: 100%; +} + +.header__start { + display: flex; +} + +.header__end { + display: flex; + height: 100%; +} + +.header__title { + text-decoration: none; + display: flex; + align-items: center; + transition: all .2s ease-out; +} + +.header__title:hover { + opacity: .8; +} + +.header__title-image { +} + +@media (min-width: 48em) { + .header__title-image { + height: 2.25rem; + } +} + +@media (max-width: 47.9375em) { + .header__title-image { + height: 1.75rem; + } +} + +.header-show-mobile-nav { + display: flex; + cursor: pointer; + height: 100%; + justify-content: center; + align-items: center; + width: 3rem; + position: relative; +} + +.header-show-mobile-nav-items { + display: none; +} + +@media (max-width: 47.9375em) { + .header-show-mobile-nav-items { + display: flex; + height: 100%; + margin-right: -1rem; + } +} diff --git a/app/assets/stylesheets/application/blocks/mention/_mention.css b/app/assets/stylesheets/application/blocks/mention/_mention.css new file mode 100644 index 00000000000..d2793b26459 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/mention/_mention.css @@ -0,0 +1,42 @@ +.tribute-container { + position: absolute; + top: 0; + left: 0; + margin-top: 0.5rem; + height: auto; + max-height: 176px; + max-width: 500px; + overflow: auto; + display: block; + z-index: 999; + border: 1px solid #c1c5b9; + border-radius: 3px; + background: var(--reversal-text); +} +.tribute-container ul { + margin: 0; + list-style: none; +} +.tribute-container ul li { + font-size: 0.875rem; + border-bottom: 1px solid #c1c5b9; + padding: 10px 11px; + cursor: pointer; +} +.tribute-container ul li:last-child { + border-bottom: none; +} +.tribute-container ul li.highlight { + background-color: var(--main); + color: var(--reversal-text); + box-shadow: inset 0 0 3px hsl(242, 51%, 41%); +} +.tribute-container ul li span { + font-weight: bold; +} +.tribute-container ul li span.mention { + padding-right: 9px; +} +.tribute-container ul li span.emoji { + padding-left: 4px; +} diff --git a/app/assets/stylesheets/application/blocks/micro-report/_micro-report-actions.css b/app/assets/stylesheets/application/blocks/micro-report/_micro-report-actions.css new file mode 100644 index 00000000000..858733d48c8 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/micro-report/_micro-report-actions.css @@ -0,0 +1,59 @@ + +.micro-report-actions__items { + display: flex; + gap: .5rem; + padding-top: .375rem; +} + +.micro-report-actions__action { + font-size: .75rem; + display: flex; + height: 2rem; + align-items: center; + text-decoration: none; + padding-inline: .75rem; + background-color: var(--background-shade); + border-radius: .25rem; + color: var(--muted-text); + transition: all .2s ease-out; +} + +.micro-report-actions__action:hover { + background-color: var(--main); + color: var(--reversal-text); +} + +.micro-report-actions__user-link { + display: block; + text-decoration: none; +} + +.micro-report__footer .reactions__items { + margin: 0; +} + +.micro-report__footer .reactions__items.is-reacted { + gap: .5rem; +} + +.micro-report__footer .reactions__items.is-reacted .reactions__item.is-reacted { + border: 1px solid var(--border); + border-radius: .25rem; +} + +@media (max-width: 47.9375em) { + .micro-report__footer .reactions__items.is-reacted .reactions__item.is-reacted { + height: 2.25rem; + } +} + +.micro-report__footer .reactions__dropdown-toggle { + margin-left: .5rem; + border: none; +} + +@media (max-width: 47.9375em) { + .micro-report__footer .reactions__dropdown-toggle { + height: 2.25rem; + } +} diff --git a/app/assets/stylesheets/application/blocks/micro-report/_micro-report-form-tabs.css b/app/assets/stylesheets/application/blocks/micro-report/_micro-report-form-tabs.css new file mode 100644 index 00000000000..da19b7639a6 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/micro-report/_micro-report-form-tabs.css @@ -0,0 +1,27 @@ +.micro-report-form-tabs { + background-color: var(--background); +} + +.micro-report-form-tabs + .tab-content { + margin-top: 0.5rem; +} + +.micro-report-form-tabs__items { + display: flex; +} + +.micro-report-form-tabs__item-link { + display: flex; + text-decoration: none; + padding: 0.5rem 0.75rem 1rem; + font-size: 0.875rem; + line-height: 1.4; +} + +.micro-report-form__preview, +.micro-report-form__form { + min-height: 3.75rem; + padding: 0.5rem; + max-height: calc(100vh - 14rem); + overflow-y: auto; +} diff --git a/app/assets/stylesheets/application/blocks/micro-report/_micro-report-form.css b/app/assets/stylesheets/application/blocks/micro-report/_micro-report-form.css new file mode 100644 index 00000000000..d2014669205 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/micro-report/_micro-report-form.css @@ -0,0 +1,29 @@ + +.micro-report-form { + padding-bottom: 1rem; + position: fixed; + bottom: 0; + left: 0; + right: 0; + background-color: var(--background); + z-index: 2; + @media (min-width: 48em) { + margin-left: 5rem; + + } +} +.micro-report-form__inner { + display: flex; + align-items: flex-end; + gap: .75rem; + +} +.micro-report-form__start { + flex: 1; + +} +.micro-report-form__text-area.a-text-input { + height: 3.75rem; + min-height: 0; + +} diff --git a/app/assets/stylesheets/application/blocks/micro-report/_micro-report.css b/app/assets/stylesheets/application/blocks/micro-report/_micro-report.css new file mode 100644 index 00000000000..3dba34f91b0 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/micro-report/_micro-report.css @@ -0,0 +1,274 @@ + + +.micro-report { + position: relative; + display: flex; +} + +.micro-report:not(:last-child) { + margin-top: 1.5rem; +} + +@media (min-width: 48em) { + .micro-report { + gap: 1rem; + } +} + +@media (max-width: 47.9375em) { + .micro-report { + gap: .75rem; + } +} + +.micro-report__start { + flex: 0 0 2.75rem; + width: 2.75rem; + height: 100%; +} + +.micro-report__end { + flex: 1; +} + +@media (min-width: 48em) { + .micro-report__end { + max-width: calc(100% - var(--thread-header-author)); + } +} + +.micro-report__header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: .25rem; +} + +.micro-report__title { + font-size: .875rem; + line-height: 1.4; + font-weight: 600; +} + +@media (min-width: 48em) { + .micro-report__title { + margin-right: .5rem; + flex: 1; + } +} + +@media (max-width: 47.9375em) { + .micro-report__title { + display: flex; + } +} + +.micro-report__title-user-icon { +} + +@media (min-width: 48em) { + .micro-report__title-user-icon { + display: none; + } +} + +@media (max-width: 47.9375em) { + .micro-report__title-user-icon { + width: 1.5rem; + height: 1.5rem; + display: inline-block; + vertical-align: middle; + margin-right: .25rem; + } +} + +.micro-report__title-link { +} + +@media (min-width: 48em) { + .micro-report__title-link { + height: 100%; + display: inline-flex; + align-items: center; + } +} + +@media (max-width: 47.9375em) { + .micro-report__title-link { + display: inline-block; + white-space: nowrap; + max-width: calc(100vw - 15.5rem); + overflow: hidden; + text-overflow: ellipsis; + vertical-align: middle; + } +} + +.micro-report__title-link.a-placeholder { + width: 15%; + height: 1.4em; +} + +.micro-report__title-icon { + width: 1.5rem; + height: 1.5rem; + margin-right: .5rem; +} + +.micro-report__title-label { + font-size: .8125rem; + display: block; + font-weight: 400; + color: var(--muted-text); + margin-bottom: .125rem; +} + +.micro-report__title-label i { + margin-right: .1875rem; +} + +.micro-report__body { +} + +@media (max-width: 47.9375em) { + .micro-report__body { + word-wrap: break-word; + } +} + +.micro-report__user-icon { + width: 3.5rem; + height: 3.5rem; + object-fit: cover; + border-radius: 50%; +} + +@media (max-width: 47.9375em) { + .micro-report__user-icon { + display: none; + } +} + +.micro-report__created-at { + display: block; + font-size: .8125rem; + line-height: 1.4; + white-space: nowrap; + color: var(--muted-text); + text-decoration: none; + cursor: pointer; + position: relative; +} + +@media (max-width: 47.9375em) { + .micro-report__created-at { + font-size: .75rem; + } +} + +.micro-report__created-at:hover, +.micro-report__created-at:active { + text-decoration: underline; +} + +.micro-report__created-at:active, +.micro-report__created-at:focus, +.micro-report__created-at.is-active { + color: var(--danger); +} + +.micro-report__created-at:active::after, +.micro-report__created-at:focus::after, +.micro-report__created-at.is-active::after { + content: "Copied!"; + display: block; + background-color: rgba(black, .4); + border-radius: .125rem; + padding: .25rem; + font-size: .625rem; + line-height: 1; + color: var(--reversal-text); + left: 0; + position: absolute; + top: 100%; +} + +.micro-report__created-at.a-placeholder { + width: 30%; + height: 1.4em; +} + +.micro-report__actions { + padding-block: 0 1rem; +} + +.micro-report__actions-items { + display: flex; + align-items: center; +} + +.micro-report__actions-item-link { + font-size: 1.25rem; + line-height: 1; + display: flex; + text-align: center; + color: var(--muted-text); + width: 2.375rem; + height: 2.375rem; + align-items: center; + justify-content: center; + border-radius: 50%; + transition: color .2s ease-in, background-color .2s ease-in; +} + +.micro-report__actions-item-link.is-success:hover { + background-color: #e0eefe; + color: var(--primary); +} + +.micro-report__actions-item-link.is-danger:hover { + background-color: #f5e6ea; + color: var(--danger); +} + +.micro-report__footer { + display: flex; +} + +@media (min-width: 48em) { + .micro-report__footer { + justify-content: space-between; + } + + .micro-report__footer .reactions { + justify-content: flex-end; + } + + .micro-report__footer .card-footer { + flex: 1; + } +} + +@media (max-width: 47.9375em) { + .micro-report__footer { + flex-direction: column; + gap: .5rem; + } + + .micro-report__footer .reactions { + justify-content: flex-start; + } + + .micro-report__footer .card-footer { + flex: 1; + } +} + +.micro-report__reactions { + flex: 1; +} + +.micro-report_user-icon.a-user-icon { + width: 2.75rem; + height: 2.75rem; +} diff --git a/app/assets/stylesheets/application/blocks/micro-report/_micro-reports.css b/app/assets/stylesheets/application/blocks/micro-report/_micro-reports.css new file mode 100644 index 00000000000..ba1104037df --- /dev/null +++ b/app/assets/stylesheets/application/blocks/micro-report/_micro-reports.css @@ -0,0 +1,24 @@ +.micro-reports { + height: calc(100vh - 10.5rem); + overflow: hidden; + display: flex; + flex-direction: column; + gap: 1.5rem; +} +.micro-reports .thread-comment:last-child { + margin-bottom: 0; +} + +.micro-reports__start { + height: 100%; + overflow-y: scroll; + padding-bottom: 0.5rem; +} + +.micro-reports-with-form { + padding-bottom: 8.75rem; +} + +.micro-reports-without-form { + padding-bottom: 0; +} diff --git a/app/assets/stylesheets/application/blocks/modal/_modal-celebrate-report-count-body.css b/app/assets/stylesheets/application/blocks/modal/_modal-celebrate-report-count-body.css new file mode 100644 index 00000000000..d806355270a --- /dev/null +++ b/app/assets/stylesheets/application/blocks/modal/_modal-celebrate-report-count-body.css @@ -0,0 +1,9 @@ +.modal-celebrate-report-count-body__description { + font-size: 0.875rem; + line-height: 1.6; + text-align: center; +} + +.modal-celebrate-report-count-body__image-container:not(:first-child) { + margin-top: 1rem; +} diff --git a/app/assets/stylesheets/application/blocks/page-content/_page-content-header-actions.css b/app/assets/stylesheets/application/blocks/page-content/_page-content-header-actions.css new file mode 100644 index 00000000000..5b52a04b831 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page-content/_page-content-header-actions.css @@ -0,0 +1,81 @@ + +.page-content-header-actions { + padding-top: .25rem; + display: flex; + flex-wrap: wrap; +} + +@media (min-width: 40em) { + .page-content-header-actions { + justify-content: space-between; + gap: .5rem; + } +} + +@media (max-width: 39.9375em) { + .page-content-header-actions { + justify-content: center; + gap: .25rem; + } +} + +.page-content-header-actions__start { + justify-content: flex-start; +} + +.page-content-header-actions__start, +.page-content-header-actions__end { + display: flex; +} + +@media (min-width: 40em) { + .page-content-header-actions__start, + .page-content-header-actions__end { + flex: 1; + gap: .5rem; + } +} + +.page-content-header-actions__end { + display: flex; +} + +@media (min-width: 40em) { + .page-content-header-actions__end { + flex: 1; + gap: .5rem; + justify-content: flex-end; + } +} + +@media (max-width: 39.9375em) { + .page-content-header-actions__start, + .page-content-header-actions__end { + gap: .25rem; + } +} + +.page-content-header-actions__start { + justify-content: flex-start; + +} + +.page-content-header-actions__action { + min-width: 5.4rem; +} + +.page-content-header-actions__action .a-button { + padding-inline: 0; +} + +@media (min-width: 48em) { + .page-content-header-actions__action { + min-width: 7rem; + } +} + +@media (max-width: 47.9375em) { + .page-content-header-actions__action { + width: 50%; + } +} diff --git a/app/assets/stylesheets/application/blocks/page-content/_page-content-header-metas.css b/app/assets/stylesheets/application/blocks/page-content/_page-content-header-metas.css new file mode 100644 index 00000000000..184a0999d9b --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page-content/_page-content-header-metas.css @@ -0,0 +1,23 @@ + +.page-content-header-metas { +} + +@media (min-width: 48em) { + .page-content-header-metas { + display: flex; + justify-content: space-between; + } +} + +.page-content-header-metas__start { + display: flex; + align-items: center; + flex-wrap: wrap; +} + +.page-content-header-metas__meta { +} + +.page-content-header-metas__meta:not(:last-child) { + margin-right: .75em; +} diff --git a/app/assets/stylesheets/application/blocks/page-content/_page-content-header.css b/app/assets/stylesheets/application/blocks/page-content/_page-content-header.css new file mode 100644 index 00000000000..e20eeb96919 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page-content/_page-content-header.css @@ -0,0 +1,347 @@ + +.page-content-header { + position: relative; +} + +@media (min-width: 48em) { + .page-content-header { + display: flex; + gap: 1rem; + } +} + +@media (min-width: 48em) { + .page-content-header:not(:last-child) { + margin-bottom: 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .page-content-header { + margin-bottom: 1.25rem; + } +} + +.page-content-header .a-watch-button.is-inactive, +.page-content-header .a-bookmark-button.is-inactive { + color: var(--semi-muted-text); + background-color: var(--background-semi-shade); +} + +.page-content-header .a-count-badge { + float: right; + margin-left: .5rem; + margin-top: -.5rem; +} + +.page-content-header__start { + display: flex; + flex-direction: column; + align-items: center; + gap: .5rem; +} + +@media (min-width: 48em) { + .page-content-header__end { + flex: 1; + } +} + +@media (max-width: 47.9375em) { + .page-content-header__start + .page-content-header__end { + margin-top: .5rem; + } +} + +.page-content-header__user { +} + +@media (max-width: 47.9375em) { + .page-content-header__user { + display: flex; + justify-content: center; + } +} + +.page-content-header__category { +} + +@media (max-width: 47.9375em) { + .page-content-header__category { + display: flex; + justify-content: center; + } +} + +.page-content-header__category-icon { + height: 3.5rem; + width: 3.5rem; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: .875rem; + line-height: 1; + font-weight: 600; +} + +.page-content-header__category-icon.is-meeting { + background-color: #7f6fb7; + color: var(--reversal-text); +} + +.page-content-header__category-icon.is-reading-circle { + background-color: #79bcc3; + color: var(--reversal-text); +} + +.page-content-header__category-icon.is-question { + background-color: #de9172; + color: var(--reversal-text); +} + +.page-content-header__category-icon.is-chat { + background-color: #56925c; + color: var(--reversal-text); +} + +.page-content-header__category-icon.is-others { + background-color: #f7cd5b; + color: var(--default-text); +} + +.page-content-header__user-link { + display: block; + text-decoration: none; +} + +.page-content-header__user-icon-image { + height: 3.5rem; + width: 3.5rem; +} + +.page-content-header__company-logo-image { + background-color: var(--base); + object-fit: contain; + border-radius: .25rem; +} + +@media (min-width: 48em) { + .page-content-header__company-logo-image { + height: 3.5rem; + width: 3.5rem; + } +} + +@media (max-width: 47.9375em) { + .page-content-header__company-logo-image { + height: 2.75rem; + width: 2.75rem; + left: 0; + position: absolute; + top: 0; + } +} + +.page-content-header__before-title { + gap: .25rem 1rem; + flex-wrap: wrap; +} + +@media (min-width: 48em) { + .page-content-header__before-title { + display: inline-flex; + margin-bottom: .25rem; + } +} + +@media (max-width: 47.9375em) { + .page-content-header__before-title { + display: flex; + justify-content: center; + text-align: center; + margin-bottom: .5rem; + } +} + +.page-content-header__before-title .a-user-name { +} + +.page-content-header__before-title .a-meta { +} + +.page-content-header__before-title .a-category-link { + font-size: .75rem; +} + +.page-content-header__title { + font-feature-settings: "palt"; + letter-spacing: .02em; + font-size: 1em; + line-height: 1.4; + font-weight: 700; + color: var(--main); + padding-bottom: .25rem; + border-bottom: solid 1px var(--border-shade); +} + +@media (min-width: 48em) { + .page-content-header__title { + font-size: 1.625rem; + word-wrap: break-word; + } +} + +@media (max-width: 47.9375em) { + .page-content-header__title { + font-size: 1.125rem; + word-break: break-all; + } +} + +.page-content-header__title.is-wip { + color: var(--muted-text); +} + +.page-content-header__title.is-skip-on { + color: var(--muted-text); +} + +.page-content-header__title .a-title-label { + display: inline-flex; + vertical-align: top; +} + +@media (min-width: 48em) { + .page-content-header__title .a-title-label { + position: relative; + top: .75em; + } +} + +@media (max-width: 47.9375em) { + .page-content-header__title .a-title-label { + position: relative; + top: .5em; + } +} + +.page-content-header__title-link { + text-decoration: none; + cursor: pointer; + color: var(--main); +} + +.page-content-header__title-link:hover, +.page-content-header__title-link:active { + text-decoration: underline; +} + +.page-content-header__title.is-wip .page-content-header__title-link { + color: var(--muted-text); +} + +.page-content-header__tags { + margin-top: .75rem; +} + +.page-content-header__row { +} + +.page-content-header__row:not(:last-child) { + margin-bottom: .5rem; +} + +.page-content-header__row .a-horizontal-dashed { + margin-bottom: 1rem; +} + +.page-content-header__description { +} + +@media (min-width: 48em) { + .page-content-header__description { + padding-block: .25rem; + } +} + +@media (max-width: 47.9375em) { + .page-content-header__description { + padding-block: .25rem; + } +} + +@media (min-width: 48em) { + .page-content-header__description.a-long-text { + font-size: .9375rem; + } +} + +@media (max-width: 47.9375em) { + .page-content-header__description.a-long-text { + font-size: .8125rem; + } +} + +.page-content-header__emotion { + display: inline-flex; + vertical-align: middle; + position: relative; + top: -.125em; + height: 1em; + width: 1em; +} + +@media (min-width: 48em) { + .page-content-header__emotion { + font-size: 1.75rem; + margin-right: .375em; + } +} + +@media (max-width: 47.9375em) { + .page-content-header__emotion { + font-size: 1.25rem; + margin-right: .25em; + } +} + +.page-content-header__emotion-image { + height: 100%; + width: 100%; +} + +.page-content-header__checker { + position: absolute; + right: 0; + top: -.5rem; +} + +.user-profile__company-logo-image { + background-color: var(--base); + object-fit: contain; + border-radius: .25rem; + height: 4.5rem; + width: 4.5rem; +} + +@media (max-width: 47.9375em) { + .user-profile__company-logo-image { + height: 3.5rem; + width: 3.5rem; + position: absolute; + right: 0; + top: 0; + } +} + +.page-content-header__alert { + background-color: var(--danger-tint); + color: var(--danger-text); + font-size: .875rem; + line-height: 1.4; + text-align: center; + padding: .5rem 1rem; + border: solid 1px var(--danger); + border-radius: .25rem; +} diff --git a/app/assets/stylesheets/application/blocks/page-content/_page-content-members.css b/app/assets/stylesheets/application/blocks/page-content/_page-content-members.css new file mode 100644 index 00000000000..8a5524372f9 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page-content/_page-content-members.css @@ -0,0 +1,47 @@ + +.page-content-members { + background: var(--base); + padding: .75rem 1rem; + border-radius: .25rem; + border: solid 1px var(--border-shade); + +} +.page-content-members__title { + font-size: .8125rem; + line-height: 1.4; + font-weight: 600; + +} +.page-content-members__items { + display: flex; + gap: .75rem; + flex-wrap: wrap; + +} +.page-content-members__item { + display: flex; + gap: .25rem; + @media (min-width: 48em) { + font-size: .875rem; + } + @media (max-width: 47.9375em) { + font-size: .75rem; + } + .a-user-name { + font-size: 1em; + line-height: 1.4; + color: var(--default-text); + + } +} +.page-content-members__user-icon { + @media (min-width: 48em) { + height: 1.5rem; + width: 1.5rem; + } + @media (max-width: 47.9375em) { + height: 1.25rem; + width: 1.25rem; + + } +} diff --git a/app/assets/stylesheets/application/blocks/page-content/_page-content-prev-next.css b/app/assets/stylesheets/application/blocks/page-content/_page-content-prev-next.css new file mode 100644 index 00000000000..97accff8b94 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page-content/_page-content-prev-next.css @@ -0,0 +1,36 @@ +.page-content-prev-next { + display: flex; + justify-content: space-between; + margin-top: 1rem; +} + +.page-content-prev-next__item { + width: 8rem; + max-width: 33.33%; +} + +.page-content-prev-next__item-link { + font-size: 0.8125rem; + line-height: 1.4; + display: block; + text-align: center; + white-space: nowrap; + color: var(--main); + text-decoration: none; + cursor: pointer; +} +.page-content-prev-next__item-link:hover, .page-content-prev-next__item-link:active { + text-decoration: underline; +} +.page-content-prev-next__item-link.is-prev { + text-align: left; +} +.page-content-prev-next__item-link.is-next { + text-align: right; +} +.page-content-prev-next__item-link i:first-child { + margin-right: 0.5rem; +} +.page-content-prev-next__item-link i:last-child { + margin-left: 0.5rem; +} diff --git a/app/assets/stylesheets/application/blocks/page-content/_page-content.css b/app/assets/stylesheets/application/blocks/page-content/_page-content.css new file mode 100644 index 00000000000..0c6d6d11c9e --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page-content/_page-content.css @@ -0,0 +1,40 @@ + +.page-content { +} + +.page-content.is-products { +} + +.page-content.is-questions { +} + +.page-content.is-books { +} + +.page-content.is-users { + width: 100%; +} + +@media (min-width: 48em) { + .page-content:not(:first-child) { + margin-top: 1.25rem; + } +} + +@media (max-width: 47.9375em) { + .page-content:not(:first-child) { + margin-top: 1rem; + } +} + +@media (min-width: 48em) { + .page-content:not(:last-child) { + margin-bottom: 2rem; + } +} + +@media (max-width: 47.9375em) { + .page-content:not(:last-child) { + margin-bottom: 1rem; + } +} diff --git a/app/assets/stylesheets/application/blocks/page/_o-page-info.css b/app/assets/stylesheets/application/blocks/page/_o-page-info.css new file mode 100644 index 00000000000..09394a7ad0b --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_o-page-info.css @@ -0,0 +1,7 @@ +.o-page-info { + background-color: var(--success-tint); + font-size: 0.875rem; + padding-block: 0.75em; + color: var(--success-text); + border-bottom: solid 1px var(--success); +} diff --git a/app/assets/stylesheets/application/blocks/page/_page-body-actions.css b/app/assets/stylesheets/application/blocks/page/_page-body-actions.css new file mode 100644 index 00000000000..d34d297ae4b --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page-body-actions.css @@ -0,0 +1,7 @@ +.page-body-actions { + margin-top: 1.5rem; +} + +.a-empty-message + .page-body-actions { + margin-top: 1rem; +} diff --git a/app/assets/stylesheets/application/blocks/page/_page-body.css b/app/assets/stylesheets/application/blocks/page/_page-body.css new file mode 100644 index 00000000000..72780c689a1 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page-body.css @@ -0,0 +1,239 @@ + +.page-body { + padding-block: 1.5rem; +} + +@media (min-width: 48em) { + .page-body { + flex: 1; + display: flex; + flex-direction: column; + min-height: calc(100vh - 321px); + } +} + +@media (max-width: 47.9375em) { + .page-body { + padding-block: 1.125rem; + } +} + +.page-body__inner { + position: relative; +} + +@media (min-width: 64em) { + .page-body__inner { + flex: 1; + } +} + +@media (min-width: 64em) { + .page-body__inner.has-side-nav { + padding-right: var(--side-nav-width); + } +} + +.page-body__rows { + display: flex; + flex-direction: column; +} + +@media (min-width: 48em) { + .page-body__rows { + gap: 1.25rem; + } +} + +@media (max-width: 47.9375em) { + .page-body__rows { + gap: 1rem; + } +} + +.page-body__rows > * { + width: 100%; +} + +.page-body__columns { +} + +@media (min-width: 64em) { + .page-body__columns { + display: flex; + gap: 1.5rem; + position: relative; + } +} + +.page-body__columns.is-reverse { + display: flex; +} + +@media (min-width: 48em) { + .page-body__columns.is-reverse { + flex-direction: row; + gap: 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .page-body__columns.is-reverse { + flex-direction: column-reverse; + gap: 1rem; + } + + .page-body__columns.is-reverse .page-body__column { + width: 100%; + } +} + +.page-body__column { +} + +.page-body__column.is-main { + flex: 1; + margin-inline: auto; +} + +.page-body__column.is-sub { + flex: 0 0 20rem; +} + +.page-body__column.is-sub.is-sm { + flex: 0 0 14rem; +} + +.page-body__description { +} + +@media (min-width: 48em) { + .page-body__description { + font-size: .875rem; + } +} + +@media (max-width: 47.9375em) { + .page-body__description { + font-size: .8125rem; + } +} + +.page-body__description:not(:last-child) { + margin-bottom: 1.5em; +} + +.page-body__description > *:first-child { + margin-top: 0; +} + +.page-body__description > *:last-child { + margin-bottom: 0; +} + +.page-body__description hr { + display: block; + width: 100%; + height: 0; + border: none; + border-top: dashed 1px var(--border); + margin-block: 1.5em; +} + +.page-body__description p { + font-size: 1em; + line-height: 1.7; + margin-top: 0; + margin-bottom: .75em; +} + +.page-body__description li { + font-size: 1em; + line-height: 1.7; + margin-top: 0; + margin-bottom: .125em; +} + +.page-body__description a { + text-decoration: none; + cursor: pointer; +} + +.page-body__description a:hover, +.page-body__description a:active { + text-decoration: underline; +} + +.page-body__description .message { + background: red; + padding: 1em 1.25em 1em 2.75em; + border-radius: .25rem; + margin-block: 1.5em 2em; + background-color: var(--warning-tint); + color: var(--warning-text); +} + +.page-body__description .message::before { + content: "\f06a"; + font-family: 'Font Awesome 6 Pro'; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + left: .25em; + position: absolute; + top: .25em; + font-size: 1.5em; + color: var(--warning); +} + +.page-body__description .message.alert { +} + +.page-body__description .message.danger { + background-color: var(--danger-tint); + color: var(--danger-text); +} + +.page-body__description .message.danger::before { + color: var(--danger); +} + +.page-body__description .message.warning { + background-color: var(--warning-tint); + color: var(--warning-text); +} + +.page-body__description .message.warning::before { + color: var(--warning); +} + +.page-body__description .message.info { + background-color: var(--info-tint); + color: var(--info-text); +} + +.page-body__description .message.info::before { + color: var(--info); +} + +.page-body__description .message.primary { + background-color: var(--primary-tint); + color: var(--primary-text); +} + +.page-body__description .message.primary::before { + color: var(--primary); +} + +.page-body__description .message.success { + background-color: var(--success-tint); + color: var(--success-text); +} + +.page-body__description .message.success::before { + color: var(--success); +} diff --git a/app/assets/stylesheets/application/blocks/page/_page-filter.css b/app/assets/stylesheets/application/blocks/page/_page-filter.css new file mode 100644 index 00000000000..a12adf213c9 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page-filter.css @@ -0,0 +1,3 @@ +.page-filter { + padding-block: 1rem; +} diff --git a/app/assets/stylesheets/application/blocks/page/_page-header-actions.css b/app/assets/stylesheets/application/blocks/page/_page-header-actions.css new file mode 100644 index 00000000000..1c6a79e81e2 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page-header-actions.css @@ -0,0 +1,53 @@ +.page-header-actions { +} + +@media (max-width: 47.9375em) { + .page-header-actions { + margin-inline: -1rem; + } +} + +.page-header-actions__items { + display: flex; + gap: .5rem; + justify-content: center; +} + +@media (max-width: 47.9375em) { + .page-header-actions__items { + padding-inline: 1rem; + } +} + +.page-header-actions__item { + position: relative; +} + +.page-header-actions__item > * { + width: 100%; +} + +@media (min-width: 48em) { + .page-header-actions__item { + min-width: 10rem; + display: flex; + justify-content: center; + } +} + +@media (max-width: 47.9375em) { + .page-header-actions__item { + flex: 1; + max-width: 50%; + } + + .page-header-actions__item:first-child:last-child { + max-width: 100%; + } +} + +.page-header-actions__item-help { + position: absolute; + right: -.25rem; + top: -.25rem; +} diff --git a/app/assets/stylesheets/application/blocks/page/_page-header.css b/app/assets/stylesheets/application/blocks/page/_page-header.css new file mode 100644 index 00000000000..be7c0a80b87 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page-header.css @@ -0,0 +1,95 @@ + +.page-header { + background-color: var(--base); +} + +.page-header__inner { + position: relative; + display: flex; +} + +@media (min-width: 64em) { + .page-header__inner { + height: 3.25rem; + align-items: center; + justify-content: space-between; + } +} + +@media (min-width: 48em) and (max-width: 63.9375em) { + .page-header__inner { + padding-block: .75rem; + flex-direction: column; + } +} + +@media (max-width: 47.9375em) { + .page-header__inner { + padding-block: .5rem; + flex-direction: column; + gap: .5rem; + } +} + +.page-header__start { + display: flex; + align-items: center; + flex: 1; +} + +@media (min-width: 64em) { + .page-header__start { + max-width: calc(100% - 21rem); + } +} + +.page-header__title { + color: var(--main); + line-height: 1.4; + font-weight: 700; + font-feature-settings: "palt"; + letter-spacing: .02em; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +@media (min-width: 64em) { + .page-header__title { + font-size: 1.25rem; + } +} + +@media (max-width: 63.9375em) { + .page-header__title { + font-size: 1.125rem; + flex: 1; + } +} + +.page-header__title img { + height: auto; + width: 2.5rem; + margin-right: .5rem; +} + +@media (max-width: 47.9375em) { + .page-header__title { + font-size: 1rem; + line-height: 1.4; + color: var(--main); + } +} + +.page-header__start .page-header__title { + align-self: center; +} + +.page-header__action { +} + +@media (max-width: 47.9375em) { + .page-header__action { + display: none; + } +} diff --git a/app/assets/stylesheets/application/blocks/page/_page-main-filter.css b/app/assets/stylesheets/application/blocks/page/_page-main-filter.css new file mode 100644 index 00000000000..8318cc8f22f --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page-main-filter.css @@ -0,0 +1,14 @@ +.page-main-filter__inner { + display: block; + padding-block: 0.75rem; +} + +.page-main-filter__row { + display: flex; + gap: 1rem; + align-items: center; + flex-wrap: wrap; +} +.page-main-filter__row .page-main-filter__row { + gap: 0.5rem; +} diff --git a/app/assets/stylesheets/application/blocks/page/_page-main-header-actions.css b/app/assets/stylesheets/application/blocks/page/_page-main-header-actions.css new file mode 100644 index 00000000000..d95fcb8a73e --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page-main-header-actions.css @@ -0,0 +1,36 @@ + +.page-main-header-actions__items { + display: flex; + gap: .5rem; + justify-content: center; +} + +.page-main-header-actions__item { +} + +@media (min-width: 48em) { + .page-main-header-actions__item { + min-width: 10rem; + display: flex; + justify-content: center; + } +} + +@media (max-width: 47.9375em) { + .page-main-header-actions__item { + flex: 1; + } +} + +.page-main-header-actions__item.is-remove .is-muted { + border: solid 1px var(--border-shade); +} + +.page-main-header-actions__item.is-remove .is-muted:hover { + color: var(--default-text); + background-color: var(--base); +} + +.page-main-header-actions__item .a-button { + height: 2.25rem; +} diff --git a/app/assets/stylesheets/application/blocks/page/_page-main-header.css b/app/assets/stylesheets/application/blocks/page/_page-main-header.css new file mode 100644 index 00000000000..cd49acc496d --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page-main-header.css @@ -0,0 +1,46 @@ + +.page-main-header__inner { + padding-block: .5rem; + display: flex; +} + +@media (min-width: 48em) { + .page-main-header__inner { + min-height: calc(3.5rem - 1px); + align-items: center; + } +} + +@media (max-width: 47.9375em) { + .page-main-header__inner { + flex-direction: column; + gap: .5rem; + } +} + +.a-page-notice + .page-main .page-main-header__inner { + padding-top: .5em; +} + +.page-main-header__start { + flex: 1; +} + +.page-main-header__title { + color: var(--main); + font-weight: 700; +} + +@media (min-width: 48em) { + .page-main-header__title { + font-size: 1.125rem; + line-height: 1.4; + } +} + +@media (max-width: 47.9375em) { + .page-main-header__title { + font-size: 1rem; + line-height: 1.4; + } +} diff --git a/app/assets/stylesheets/application/blocks/page/_page-notices.css b/app/assets/stylesheets/application/blocks/page/_page-notices.css new file mode 100644 index 00000000000..f4176d4a8d2 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page-notices.css @@ -0,0 +1,11 @@ +.page-notices { + margin-block: -0.5rem 1rem; + background-color: var(--success); +} + +.page-notices__item .a-badge { + min-width: 5rem; +} +.page-notices__item:not(:first-child) { + border-top: dashed 1px rgba(255, 255, 255, 0.2); +} diff --git a/app/assets/stylesheets/application/blocks/page/_page-optional-header.css b/app/assets/stylesheets/application/blocks/page/_page-optional-header.css new file mode 100644 index 00000000000..dd4083e3cb2 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page-optional-header.css @@ -0,0 +1,28 @@ + +.page-optional-header { + padding-block: .5rem; + background-color: var(--background); + +} +.page-optional-header__inner { + @media (min-width: 48em) { + display: flex; + align-items: center; + + } +} +.page-optional-header__start { + @media (min-width: 48em) { + flex: 1; + + } +} +.page-optional-header__title { + font-size: 1rem; + line-height: 1.4; + align-items: center; + display: flex; + text-align: center; + font-weight: 700; + +} diff --git a/app/assets/stylesheets/application/blocks/page/_page-tabs.css b/app/assets/stylesheets/application/blocks/page/_page-tabs.css new file mode 100644 index 00000000000..1686060d014 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page-tabs.css @@ -0,0 +1,89 @@ + +.page-tabs { + background-color: var(--base); + border-bottom: solid 1px var(--border); +} + +.page-tabs__items { + display: flex; + gap: .25rem; + transform: translateY(1px); + overflow-y: visible; + overflow-x: auto; + margin-inline: -1rem; + padding-inline: 1rem; +} + +.page-tabs__item { +} + +@media (min-width: 48em) { + .page-tabs__item { + min-width: 8.5rem; + } +} + +@media (max-width: 47.9375em) { + .page-tabs__item { + min-width: 7rem; + } +} + +.page-tabs__item-link { + display: flex; + text-decoration: none; + font-size: .825rem; + line-height: 1; + font-weight: 600; + white-space: nowrap; + color: var(--muted-text); + align-items: center; + justify-content: center; + background-color: var(--base); + padding-inline: 1.25rem; + border-top-left-radius: .25rem; + border-top-right-radius: .25rem; + border: solid 1px var(--border); + position: relative; + transition: all .2s ease-out; +} + +@media (min-width: 48em) { + .page-tabs__item-link { + height: 2.5rem; + } +} + +@media (max-width: 47.9375em) { + .page-tabs__item-link { + height: 2.75rem; + font-size: .75rem; + } +} + +.page-tabs__item-link:hover { + background-color: var(--background-more-tint); + color: var(--muted-text); +} + +.page-tabs__item-link.is-active { + background-color: var(--background); + border-bottom-color: var(--background); + color: var(--default-text); +} + +.page-tabs__item-link.is-sm { + font-size: .75rem; +} + +.page-tabs__item-link.is-inactive { + color: var(--muted-text); + pointer-events: none; + background-color: var(--background-semi-shade); +} + +.page-tabs__item-count { + position: absolute; + right: .125rem; + top: .125rem; +} diff --git a/app/assets/stylesheets/application/blocks/page/_page.css b/app/assets/stylesheets/application/blocks/page/_page.css new file mode 100644 index 00000000000..b295a637610 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/page/_page.css @@ -0,0 +1,14 @@ + +.page { + height: 100%; + display: flex; + flex-direction: column; + @media (min-width: 48em) { + flex: 1; + + } +} +.page-main { + flex: 1; + +} diff --git a/app/assets/stylesheets/application/blocks/practice/_categories.css b/app/assets/stylesheets/application/blocks/practice/_categories.css new file mode 100644 index 00000000000..7b203c4e6e6 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/practice/_categories.css @@ -0,0 +1,91 @@ +.is-hidden-users .a-user-icons { + display: none; +} + +.categories-item:not(:last-child) { + margin-bottom: 2rem; +} + +.categories-item__title { + font-size: 1.25rem; + line-height: 1.4; + font-weight: 700; + color: var(--main-text); + position: relative; +} +.categories-item__title .stamp { + right: -3rem; + top: -0.75rem; + transform: rotate(25deg) scale(0.7); +} + +.categories-item__show-handle { + width: 2rem; + height: 2rem; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + font-size: 1rem; + line-height: 1; + color: var(--muted-text); + transition: all 0.2s ease-out; +} +.categories-item__show-handle:hover { + color: var(--main-text); +} + +.categories-item__header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 0.5rem; +} + +.categories-item__body { + overflow: hidden; + clear: both; +} + +.categories-item__description { + position: relative; + margin-bottom: 1rem; +} + +.categories-item__edit { + float: right; + margin-left: 0.5rem; + position: relative; + top: -0.25rem; + z-index: 2; +} + +.categories-item__edit-link { + width: 2rem; + height: 2rem; + display: flex; + text-decoration: none; + align-items: center; + justify-content: center; + font-size: 1rem; + line-height: 1; + color: var(--muted-text); + transition: all 0.2s ease-out; +} +.categories-item__edit-link:hover { + color: var(--main-text); +} + +@media (min-width: 48em) { + .categories-item:not(:last-child) { + margin-bottom: 3rem; + } + .categories-item__title { + font-size: 1.5rem; + } + .categories-item__title .stamp { + right: -3rem; + top: -0.5rem; + transform: rotate(25deg); + } +} diff --git a/app/assets/stylesheets/application/blocks/practice/_category-practices-item.css b/app/assets/stylesheets/application/blocks/practice/_category-practices-item.css new file mode 100644 index 00000000000..b3b0f6933b2 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/practice/_category-practices-item.css @@ -0,0 +1,165 @@ + +.category-practices-item { + padding: .75rem 1rem; + position: relative; +} + +.category-practices-item:not(:last-child) { + border-bottom: solid 1px var(--border-tint); +} + +.category-practices-item:nth-child(even) { + background-color: var(--background-more-tint); +} + +@media (max-width: 47.9375em) { + .category-practices-item { + flex-wrap: wrap; + padding: .5rem .75rem .75rem; + } +} + +.category-practices-item.sortable-chosen { + background-color: color.tint(var(--warning), 90%); +} + +.category-practices-item.is-skip-on { + background-color: var(--background-tint); +} + +.category-practices-item[draggable="false"] { + background-color: var(--base); + animation: grab-background-color 1.25s ease 0s 1 normal none running; +} + +.category-practices-item__grab { + flex: 0 0 2.75rem; +} + +.category-practices-item__anchor { +} + +@media (min-width: 48em) { + .category-practices-item__anchor { + position: relative; + top: -3.5rem; + } +} + +.category-practices-item__status { + font-size: .8125rem; + line-height: 1; + font-weight: 600; + display: flex; + text-decoration: none; + align-items: center; + justify-content: center; + height: 2.125rem; + width: 4rem; + border-radius: .25rem; +} + +.category-practices-item__status.is-not_complete { + background-color: var(--background); + color: var(--muted-text); +} + +.category-practices-item__status.is-started { + background-color: var(--danger); + color: var(--reversal-text); +} + +.category-practices-item__status.is-submitted { + background-color: var(--warning); + color: var(--default-text); +} + +.category-practices-item__status.is-complete { + background-color: var(--success); + color: var(--reversal-text); +} + +.category-practices-item__status.is-unstarted { + background-color: #fff; + color: var(--muted-text); + border: solid 1px var(--border); +} + +.category-practices-item__status.is-unstarted.is-active { + color: var(--muted-text); + border-color: var(--muted-text); + background-color: var(--background-tint); +} + +.category-practices-item__status.is-skip-on { + background-color: #dcdcdc; + color: var(--muted-text); +} + +.category-practices-item__header { + display: flex; +} + +@media (max-width: 47.9375em) { + .category-practices-item__header { + display: block; + } +} + +.category-practices-item__title { + flex: 1; + margin-right: .5rem; +} + +@media (max-width: 47.9375em) { + .category-practices-item__title { + margin-right: 0; + margin-bottom: .5rem; + } +} + +.category-practices-item__title-link { + font-size: .875rem; + line-height: 1.4; + display: flex; + color: var(--default-text); + align-items: center; + min-height: 1.875rem; + text-decoration: none; +} + +@media (max-width: 47.9375em) { + .category-practices-item__title-link { + font-size: .8125rem; + } +} + +.category-practices-item__title-link .a-badge { + margin-right: .25rem; +} + +.category-practices-item__title-link.is-skip-on { + color: var(--muted-text); +} + +a.category-practices-item__title-link:hover .category-practices-item__title-link-label { + text-decoration: underline; +} + +.category-practices-item__learning-time { + font-size: .75rem; + line-height: 1.4; + color: var(--muted-text); +} + +@media (min-width: 48em) { + .category-practices-item__learning-time { + margin-top: -.25rem; + } +} + +@media (max-width: 47.9375em) { + .category-practices-item__learning-time { + margin-top: .5rem; + } +} diff --git a/app/assets/stylesheets/application/blocks/practice/_completion-massage.css b/app/assets/stylesheets/application/blocks/practice/_completion-massage.css new file mode 100644 index 00000000000..7f11a9bb6a5 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/practice/_completion-massage.css @@ -0,0 +1,3 @@ +.completion-massage { + background-color: var(--success); +} diff --git a/app/assets/stylesheets/application/blocks/practice/_practice-content-actions.css b/app/assets/stylesheets/application/blocks/practice/_practice-content-actions.css new file mode 100644 index 00000000000..e976ea031c0 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/practice/_practice-content-actions.css @@ -0,0 +1,45 @@ + +.practice-content-actions__description { + font-size: .75rem; + line-height: 1.5; + margin-top: 0; + margin-bottom: .75rem; + text-align: center; +} + +.practice-content-actions__items { + display: flex; + align-items: flex-end; + justify-content: center; +} + +@media (max-width: 47.9375em) { + .practice-content-actions__items { + flex-direction: column; + } +} + +.practice-content-actions__item { + padding-inline: .375rem; +} + +.practice-content-actions__item > * { + width: 10rem; + max-width: 100%; +} + +@media (max-width: 47.9375em) { + .practice-content-actions__item { + width: 100%; + padding-inline: 0; + } + + .practice-content-actions__item:nth-child(2), + .practice-content-actions__item:nth-child(3) { + margin-top: .75rem; + } + + .practice-content-actions__item > * { + width: 100%; + } +} diff --git a/app/assets/stylesheets/application/blocks/practice/_practice-content.css b/app/assets/stylesheets/application/blocks/practice/_practice-content.css new file mode 100644 index 00000000000..8a1593648ab --- /dev/null +++ b/app/assets/stylesheets/application/blocks/practice/_practice-content.css @@ -0,0 +1,87 @@ + +.practice-content { + position: relative; + display: block; + margin-bottom: 2rem; +} + +.practice-content.is-memo .a-card { + height: 100%; +} + +.practice-content.is-memo .a-markdown-input__inner { + height: 100%; + margin-bottom: 0; +} + +.practice-content.is-memo .a-markdown-input__inner.is-preview { + overflow: auto; +} + +.practice-content.is-memo .card-footer { + margin-top: 1rem; +} + +.practice-content__body-notice { + border: solid 1px var(--success); + margin-top: 1rem; + background-color: rgba(var(--success), .1); +} + +@media (min-width: 48em) { + .practice-content__body-notice { + padding: .75rem .875rem; + } +} + +@media (max-width: 47.9375em) { + .practice-content__body-notice { + padding: .375rem .625rem; + } +} + +.practice-content__body-notice p { + font-size: .875rem; + line-height: 1.5; + color: var(--success-text); +} + +@media (max-width: 47.9375em) { + .practice-content__body-notice p { + font-size: .75rem; + } +} + +.card-footer__alert { + text-align: center; + margin-top: 1em; +} + +@media (min-width: 48em) { + .card-footer__alert { + font-size: .875rem; + } +} + +@media (max-width: 47.9375em) { + .card-footer__alert { + font-size: .75rem; + } +} + +.card-footer__alert > a { + font-size: 1em; + line-height: 1.5; + color: var(--danger); + text-decoration: none; + cursor: pointer; +} + +.card-footer__alert > a:hover, +.card-footer__alert > a:active { + text-decoration: underline; +} + +.js-markdown-view { + display: none; +} diff --git a/app/assets/stylesheets/application/blocks/practice/_practice-contents.css b/app/assets/stylesheets/application/blocks/practice/_practice-contents.css new file mode 100644 index 00000000000..fb3a7b4b3f8 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/practice/_practice-contents.css @@ -0,0 +1,27 @@ +.practice-contents__pub-date { + margin-bottom: 0.75rem; +} + +.practice-contents__time { + display: inline-flex; + align-items: center; + margin-bottom: 0.5em; + cursor: pointer; + font-size: 0.875rem; +} +.practice-contents__time .a-meta { + font-size: 1em; +} +.practice-contents__time .a-help { + height: 1rem; + width: 1rem; + font-size: 0.75em; + margin-left: 0.375em; + transition: all 0.2s ease-out; +} +.practice-contents__time:hover .a-meta { + color: var(--main-text); +} +.practice-contents__time:hover .a-help { + background-color: var(--main); +} diff --git a/app/assets/stylesheets/application/blocks/practice/_practice-first-actions.css b/app/assets/stylesheets/application/blocks/practice/_practice-first-actions.css new file mode 100644 index 00000000000..b379f5e6684 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/practice/_practice-first-actions.css @@ -0,0 +1,28 @@ +.practice-first-actions { + width: 100%; +} + +@media (min-width: 48em) { + .practice-first-actions { + display: flex; + } +} + +.practice-first-actions__start { + flex: 1; +} + +.practice-first-actions__end { + width: 100%; +} + +@media (min-width: 48em) { + .practice-first-actions__end { + min-width: 6rem; + width: auto; + } +} + +.practice-first-actions__end .is-inactive { + background-color: var(--background-semi-shade); +} diff --git a/app/assets/stylesheets/application/blocks/practice/_practice-status-buttons.css b/app/assets/stylesheets/application/blocks/practice/_practice-status-buttons.css new file mode 100644 index 00000000000..a746740373b --- /dev/null +++ b/app/assets/stylesheets/application/blocks/practice/_practice-status-buttons.css @@ -0,0 +1,123 @@ + +.practice-status-buttons__start { + text-align: center; + width: 100%; + display: flex; + align-items: center; +} + +.practice-status-buttons__label { +} + +@media (min-width: 48em) { + .practice-status-buttons__label { + font-size: .75rem; + font-weight: 600; + white-space: nowrap; + margin-right: 1em; + } +} + +@media (max-width: 47.9375em) { + .practice-status-buttons__label { + display: none; + } +} + +.practice-status-buttons__items { + white-space: nowrap; + flex: 1; +} + +@media (min-width: 48em) { + .practice-status-buttons__items { + max-width: 25rem; + } +} + +.practice-status-buttons__item { + flex: 1; +} + +@media (min-width: 48em) { + .practice-status-buttons__item { + max-width: 4.75rem; + } +} + +.practice-status-buttons__button.is-inactive { + color: var(--muted-text); + background-color: var(--base); + border-color: var(--background-shade); + transition: all .2s ease-out; +} + +.practice-status-buttons__button.is-inactive:hover { + background-color: var(--background-tint); + color: var(--default-text); +} + +.practice-status-buttons__button.is-active { + pointer-events: none; + position: relative; + z-index: 1; + border: solid 1px; +} + +.practice-status-buttons__button.is-active.is-not_complete { + background-color: var(--background); + border-color: var(--background-shade); + color: var(--muted-text); +} + +.practice-status-buttons__button.is-active.is-started { + background-color: var(--danger); + border-color: var(--danger-shade); + color: var(--reversal-text); +} + +.practice-status-buttons__button.is-active.is-submitted { + background-color: var(--warning); + border-color: var(--warning-shade); + color: var(--default-text); +} + +.practice-status-buttons__button.is-active.is-complete { + background-color: var(--success); + border-color: var(--success-shade); + color: var(--reversal-text); +} + +.practice-status-buttons__button.is-active.is-unstarted { + background-color: #fff; + color: var(--muted-text); + border-color: var(--muted-text); + background-color: var(--background-tint); +} + +.practice-status-buttons__button.is-active.is-skip-on { + background-color: #dcdcdc; + border-color: #b0b0b0; + color: var(--muted-text); +} + +.practice-status__buttons-item { +} + +@media (max-width: 47.9375em) { + .practice-status__buttons-item { + width: 33.33%; + } + + .practice-status__buttons-item .a-button { + width: 100%; + } +} + +.practice-status-buttons__note { + font-size: .75rem; + line-height: 1.4; + text-align: left; + color: var(--muted-text); + margin-top: .5em; +} diff --git a/app/assets/stylesheets/application/blocks/practice/_sticky-message.css b/app/assets/stylesheets/application/blocks/practice/_sticky-message.css new file mode 100644 index 00000000000..7e884b0dc2f --- /dev/null +++ b/app/assets/stylesheets/application/blocks/practice/_sticky-message.css @@ -0,0 +1,31 @@ +.sticky-message { + display: none; +} + +@media (min-width: 48em) { + .sticky-message { + background-color: var(--success); + width: 100%; + position: sticky; + left: 0; + bottom: 0; + z-index: 2; + padding-block: 0.5rem; + font-size: 0.875rem; + line-height: 1.4; + text-align: center; + color: var(--reversal-text); + display: block; + } + + .sticky-message a { + text-decoration: none; + cursor: pointer; + color: var(--reversal-text); + } + + .sticky-message a:hover, + .sticky-message a:active { + text-decoration: underline; + } +} diff --git a/app/assets/stylesheets/application/blocks/question/_answer-badge.css b/app/assets/stylesheets/application/blocks/question/_answer-badge.css new file mode 100644 index 00000000000..74aa016ab7f --- /dev/null +++ b/app/assets/stylesheets/application/blocks/question/_answer-badge.css @@ -0,0 +1,32 @@ + +.answer-badge { + border: double .1875rem var(--stamp-color); + border-radius: .75rem; + width: 4rem; + height: 3.5rem; + padding: .125rem; + position: absolute; + right: 0; + top: -.125rem; + z-index: 1; + transform: rotate(25deg); + font-size: .625rem; + line-height: 1; + display: flex; + text-align: center; + color: var(--stamp-color); + flex-direction: column; + align-items: center; + justify-content: center; + pointer-events: none; + @media (max-width: 47.9375em) { + position: absolute; + left: 80%; + top: 0; + + } +} +.answer-badge__icon { + font-size: 1.5rem; + +} diff --git a/app/assets/stylesheets/application/blocks/reaction/_reaction.css b/app/assets/stylesheets/application/blocks/reaction/_reaction.css new file mode 100644 index 00000000000..c2f4d844b8d --- /dev/null +++ b/app/assets/stylesheets/application/blocks/reaction/_reaction.css @@ -0,0 +1,167 @@ + +.reactions { + display: flex; + justify-content: space-between; + position: relative; + user-select: none; + padding: .5rem; +} +.card-body + .reactions { + border-top: none; +} +.reactions__items { + display: flex; + flex-wrap: wrap; + gap: .5rem; +} +.reactions__items[hidden] { + display: none; +} +@media (max-width: 47.9375em) { + .reactions__items { + overflow: hidden; + } +} +.reactions__dropdown .reactions__items { + left: -1px; + position: absolute; + right: -1px; + top: 100%; + z-index: 10; + border: 1px solid var(--border); + background-color: var(--background); + padding: .5rem; + justify-content: flex-end; + border-radius: 0 0 .25rem .25rem; +} +.reactions__item { + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; + height: 2.375rem; + padding-inline: .5rem; + border-radius: .25rem; + background-color: var(--base); + border: 1px solid var(--border); + transition: all .2s ease-out; + position: relative; +} +.reactions__item.is-reacted { + background-color: #f1f1ff; + border-color: #dad9ff; +} +.reactions__item:hover { + background-color: var(--background-more-tint); +} +@media (pointer: fine) { + .reactions__item:hover .reactions__item-login-names { + display: block; + } +} +.reactions__dropdown .reactions__item { + width: 2.75rem; + border-color: var(--border-shade); +} +.reactions__item-emoji { + font-size: 1.125rem; + line-height: 1; + vertical-align: middle; + pointer-events: none; +} +.reactions__item-count { + margin-left: .25rem; + font-size: .75rem; + line-height: 1; +} +.reactions__item-login-names { + display: none; + position: absolute; + top: 2.9rem; + left: .1rem; + font-size: .625rem; + color: var(--reversal-text); + background: var(--main); + padding: 5px 11px 7px; + border-radius: .2rem; + pointer-events: none; + white-space: nowrap; + z-index: 1; +} +.reactions__item-login-names::after { + content: " "; + position: absolute; + bottom: 100%; + left: 1.5rem; + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: transparent transparent var(--main) transparent; +} +.reactions__item-login-names li { + line-height: 1.4; +} +.reactions__dropdown { + position: relative; +} +.reactions__dropdown-toggle { + height: 2.375rem; + width: 2.8125rem; + font-size: 1.25rem; + line-height: 1; + display: flex; + color: var(--main); + cursor: pointer; + align-items: center; + justify-content: center; + border: 1px solid var(--border); + border-radius: .25rem; + transition: all .2s ease-out; +} +.reactions__dropdown-toggle:hover { + color: var(--hover-text); + background: var(--background-more-tint); +} +.reactions__dropdown-toggle.is-disabled { + cursor: not-allowed; + color: var(--disabled); + background: var(--background); +} +.reactions__dropdown-toggle-plus { + font-size: .4em; + margin-right: .3em; +} +.reactions__actions { + display: flex; + gap: .5rem; +} +.reactions__users-list { + position: absolute; + top: 100%; + right: -1px; + left: -1px; + background-color: var(--background); + border: 1px solid var(--border); + padding: 0.5rem; + z-index: 10; + border-radius: 0 0 .25rem .25rem; + display: flex; + flex-direction: column; + gap: .5rem; +} +.reactions__users-list.hidden { + display: none; +} +.reaction-users-line { + display: flex; + align-items: center; + gap: .5rem; +} +.reaction-users-line:not(:last-child) { + border-bottom: 1px dashed var(--border); + padding-bottom: .5rem; +} +.reaction-user__avatar { + height: 1.75rem; + width: 1.75rem; +} diff --git a/app/assets/stylesheets/application/blocks/report/_learning-times.css b/app/assets/stylesheets/application/blocks/report/_learning-times.css new file mode 100644 index 00000000000..a8595659d94 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/report/_learning-times.css @@ -0,0 +1,30 @@ +@charset "UTF-8"; +.learning-times { + flex: 1; + display: flex; + gap: 0.5rem; +} + +.learning-times__header { + display: flex; + align-items: center; + white-space: nowrap; + font-size: 0.8125rem; + line-height: 1.4; + font-weight: 600; + gap: 0.25rem; +} + +.learning-times__items { + display: flex; + flex-wrap: wrap; +} + +.learning-times__item { + font-size: 0.8125rem; + line-height: 1.4; + color: var(--semi-muted-text); +} +.learning-times__item:not(:last-child)::after { + content: "、"; +} diff --git a/app/assets/stylesheets/application/blocks/report/_stamp.css b/app/assets/stylesheets/application/blocks/report/_stamp.css new file mode 100644 index 00000000000..a0fa9c6e527 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/report/_stamp.css @@ -0,0 +1,92 @@ + +.stamp { + border: solid 1px var(--stamp-color); + border-radius: .75rem; + pointer-events: none; + height: 3.5rem; + width: 4rem; + position: absolute; + right: -.25rem; + top: 0; + transform: rotate(25deg); + font-size: .625rem; + line-height: 1; + display: block; + text-align: center; + font-weight: 400; + color: var(--stamp-color); + font-feature-settings: "palt"; + letter-spacing: 0; +} + +@media (max-width: 47.9375em) { + .stamp { + right: 0; + top: 0; + } +} + +.stamp.is-circle { + height: 3.5rem; + width: 3.5rem; + border-radius: 50%; +} + +.stamp.is-solved { + display: flex; + flex-direction: column; + font-size: 1.5rem; + font-weight: 800; + font-family: serif; + justify-content: center; +} + +.stamp.is-cleared { + display: flex; + flex-direction: column; + font-size: 1.125rem; + font-weight: 800; + font-family: serif; + justify-content: center; +} + +.stamp.is-sm { + height: 2.25rem; + width: 4.125em; + position: absolute; + right: .5rem; + top: .5rem; + border-radius: .5rem; + display: flex; + align-items: center; +} + +.stamp__content { + display: flex; + align-items: center; + justify-content: center; +} + +.stamp__content.is-title { +} + +.stamp__content.is-user-name { + height: 32%; + width: 100%; +} + +.stamp__content.is-created-at { + height: 36%; + width: 100%; + border-top: solid 1px var(--stamp-color); + border-bottom: solid 1px var(--stamp-color); +} + +.stamp__content-inner { + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + padding-inline: .25rem; + height: 100%; + line-height: 1.55; +} diff --git a/app/assets/stylesheets/application/blocks/side/_side-tabs-contents.css b/app/assets/stylesheets/application/blocks/side/_side-tabs-contents.css new file mode 100644 index 00000000000..a472cbfa6d8 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/side/_side-tabs-contents.css @@ -0,0 +1,79 @@ +.side-tabs-contents { + position: relative; + z-index: 1; +} + +#side-tabs-1:checked ~ .side-tabs-contents #side-tabs-content-1 { + display: block; +} + +#side-tabs-2:checked ~ .side-tabs-contents #side-tabs-content-2 { + display: block; +} + +#side-tabs-3:checked ~ .side-tabs-contents #side-tabs-content-3 { + display: block; +} + +#side-tabs-4:checked ~ .side-tabs-contents #side-tabs-content-4 { + display: block; +} + +.side-tabs-contents__item { + display: none; +} + +.side-tabs-contents__item .a-card { + border-top-left-radius: 0; + max-height: 76vh; + overflow-y: auto; +} + +.side-tabs-contents__item .card-header { + display: none; +} + +.side-tabs-contents__item .card-header + [class*=a-border] { + display: none; +} + +.side-tabs-contents__item .card-body { + max-height: calc(100vh - 181px); + overflow-y: auto; +} + +.side-tabs-contents__item .user-metas { + margin-top: 0; +} + +.side-tabs-contents__item .user-metas__title { + padding: 0.25rem 0.5rem; + font-size: 0.75rem; +} + +.side-tabs-contents__item .user-metas__item { + font-size: 0.75rem; + line-height: 1.6; + border: solid 1px var(--border); + margin: -1px; +} + +.side-tabs-contents__item .user-metas__item-label { + flex: 0 0 9rem; +} + +.side-tabs-contents__item .a-markdown-input { + padding-inline: 0; +} + +.side-tabs-contents__item .a-long-text { + font-size: 0.8125rem; +} + +.side-tabs-contents__item .page-body { + padding-block: 0; +} + +.side-tabs-contents__item .container { + padding-inline: 0; +} diff --git a/app/assets/stylesheets/application/blocks/side/_side-tabs-nav.css b/app/assets/stylesheets/application/blocks/side/_side-tabs-nav.css new file mode 100644 index 00000000000..1975640e623 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/side/_side-tabs-nav.css @@ -0,0 +1,46 @@ +.side-tabs-nav__items { + display: flex; + position: relative; + z-index: 2; + overflow-y: hidden; + overflow-x: auto; + transform: translateY(1px); +} + +.side-tabs-nav__item { + min-width: 6.5rem; +} + +#side-tabs-1:checked ~ .side-tabs-nav #side-tabs-nav-1, +#side-tabs-2:checked ~ .side-tabs-nav #side-tabs-nav-2, +#side-tabs-3:checked ~ .side-tabs-nav #side-tabs-nav-3, +#side-tabs-4:checked ~ .side-tabs-nav #side-tabs-nav-4 { + background-color: var(--base); + color: var(--default-text); +} + +.side-tabs-nav__item-link { + font-size: 0.8125rem; + line-height: 1.4; + display: flex; + text-align: center; + font-weight: 600; + white-space: nowrap; + justify-content: center; + cursor: pointer; + padding: 0.75em 1em; + border: solid 1px var(--border); + border-bottom: none; + position: relative; + bottom: -1px; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + color: var(--muted-text); + transition: all 0.2s ease-out; +} +.side-tabs-nav__item:not(:first-child) .side-tabs-nav__item-link { + margin-left: -1px; +} +.side-tabs-nav__item-link:hover { + color: var(--default-text); +} diff --git a/app/assets/stylesheets/application/blocks/side/_side-tabs.css b/app/assets/stylesheets/application/blocks/side/_side-tabs.css new file mode 100644 index 00000000000..79da2d1eb11 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/side/_side-tabs.css @@ -0,0 +1,10 @@ +.side-tabs { + @media (min-width: 64em) { + position: sticky; + top: 3.125rem; + } + @media (max-width: 63.9375em) { + margin-top: 1.5rem; + + } +} diff --git a/app/assets/stylesheets/application/blocks/side/_user-statuses.css b/app/assets/stylesheets/application/blocks/side/_user-statuses.css new file mode 100644 index 00000000000..f46dbc32bcc --- /dev/null +++ b/app/assets/stylesheets/application/blocks/side/_user-statuses.css @@ -0,0 +1,40 @@ +.user-statuses { + padding: 0.75rem 1rem; +} + +.user-statuses + .a-card { + border-radius: 0 0 4px 4px; +} + +.user-statuses__actions { + display: flex; + align-items: center; + gap: 0.75rem; +} + +.user-statuses__title { + font-size: 0.8125rem; + line-height: 1.4; + font-weight: 600; +} + +.user-statuses__items { + flex: 1; + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 0.75rem; +} + +.user-statuses__item { + flex: 1; + max-width: calc(50% - 0.75rem); +} + +.user-statuses__delete { + display: flex; + justify-content: flex-end; + margin-top: 0.75rem; + font-size: 0.8125rem; + line-height: 1.4; +} diff --git a/app/assets/stylesheets/application/blocks/static-pages/_thanks-message.css b/app/assets/stylesheets/application/blocks/static-pages/_thanks-message.css new file mode 100644 index 00000000000..2f93647eea3 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/static-pages/_thanks-message.css @@ -0,0 +1,73 @@ + +.thanks-message__header { + color: var(--reversal-text); +} + +.thanks-message__header + .a-card { + margin-top: 2rem; +} + +.thanks-message__title { + line-height: 1.4; + text-align: center; + font-weight: 800; + color: var(--main); +} + +@media (min-width: 48em) { + .thanks-message__title { + font-size: 1.75rem; + } +} + +@media (max-width: 47.9375em) { + .thanks-message__title { + font-size: 1.75rem; + } +} + +.thanks-message__body { + padding: 1.25em 1.5em; + font-size: 1rem; + display: flex; + flex-direction: column; + gap: 1rem; +} + +@media (max-width: 47.9375em) { + .thanks-message__body { + font-size: .875rem; + } +} + +.thanks-message__body p { + font-size: 1em; + line-height: 1.6; + margin-top: 0; + margin-bottom: 1em; +} + +.thanks-message__body p:last-child { + margin-bottom: 0; +} + +.thanks-message__body strong { + font-weight: 600; + display: inline-block; + margin-inline: .25em; +} + +.thanks-message__inputed-values.form { + margin-inline: 0; +} + +.thanks-message__inputed-values-title { + font-size: .875rem; + line-height: 1.4; + font-weight: 800; + background-color: var(--background-shade); + padding: .25rem .5rem; + margin-bottom: 1rem; + border-left: solid .5rem var(--main); + border-radius: .25rem; +} diff --git a/app/assets/stylesheets/application/blocks/static-pages/_thanks.css b/app/assets/stylesheets/application/blocks/static-pages/_thanks.css new file mode 100644 index 00000000000..512fe4ecc2c --- /dev/null +++ b/app/assets/stylesheets/application/blocks/static-pages/_thanks.css @@ -0,0 +1,66 @@ +.thanks { + max-width: 26rem; + padding-inline: 1rem; + margin-inline: auto; + margin-top: 6rem; +} + +.thanks__logo-image { + max-width: 20rem; + display: block; + margin-inline: auto; + margin-bottom: 3rem; +} + +.thanks__body { + background-color: var(--base); + padding: 1.5rem; + border-radius: 0.25rem; +} + +.thanks__icon { + font-size: 4rem; + line-height: 1; + margin-top: 0; + margin-bottom: 0.5rem; + text-align: center; + color: var(--main); +} + +.thanks__title { + font-size: 0.875rem; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.75rem; + text-align: center; + font-weight: 600; +} + +.thanks__message p { + font-size: 0.75rem; + line-height: 1.6; + text-align: center; +} +.thanks__message a { + transition: color 0.2s ease-in; + color: var(--link-text); +} +.thanks__message a:link { + color: var(--link-text); +} +.thanks__message a:visited { + color: hsl(233, 33%, 58%); +} +.thanks__message a:hover { + color: var(--hover-text); +} +.thanks__message a:active { + color: var(--hover-text); +} +.thanks__message a { + text-decoration: none; + cursor: pointer; +} +.thanks__message a:hover, .thanks__message a:active { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/application/blocks/survey/_survey-added-question.css b/app/assets/stylesheets/application/blocks/survey/_survey-added-question.css new file mode 100644 index 00000000000..43b05509c4c --- /dev/null +++ b/app/assets/stylesheets/application/blocks/survey/_survey-added-question.css @@ -0,0 +1,17 @@ +.survey-added-question + .survey-added-question { + margin-top: 1rem; +} + +.survey-added-question__inner { + display: flex; + gap: 0.75rem; + align-items: flex-end; +} + +.survey-added-question__col.is-main { + flex: 1; +} + +.survey-added-question__col.is-main select { + width: 100%; +} diff --git a/app/assets/stylesheets/application/blocks/survey/_survey-additional-question.css b/app/assets/stylesheets/application/blocks/survey/_survey-additional-question.css new file mode 100644 index 00000000000..139c6beba12 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/survey/_survey-additional-question.css @@ -0,0 +1,7 @@ +.survey-additional-question { + margin-top: 1.5rem; +} + +.survey-additional-question__input { + margin-top: 1rem; +} diff --git a/app/assets/stylesheets/application/blocks/survey/_survey-questions-item.css b/app/assets/stylesheets/application/blocks/survey/_survey-questions-item.css new file mode 100644 index 00000000000..cbbdb90aaa0 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/survey/_survey-questions-item.css @@ -0,0 +1,3 @@ +.survey-questions-item__input { + margin-top: 1rem; +} diff --git a/app/assets/stylesheets/application/blocks/survey/_survey-questions.css b/app/assets/stylesheets/application/blocks/survey/_survey-questions.css new file mode 100644 index 00000000000..543cd489fc4 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/survey/_survey-questions.css @@ -0,0 +1,8 @@ +.survey-questions { + margin-top: 2rem; +} + +.survey-questions-item__description { + margin-top: 0.75rem; + color: var(--semi-muted-text); +} diff --git a/app/assets/stylesheets/application/blocks/survey/survey-answer.css b/app/assets/stylesheets/application/blocks/survey/survey-answer.css new file mode 100644 index 00000000000..607fc3eaa86 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/survey/survey-answer.css @@ -0,0 +1,128 @@ +.survey-answer-summary { + margin-bottom: 2rem; + background-color: #fff; + border-radius: 0.5rem; + box-shadow: 0 0 0.5rem rgba(0, 0, 0, 0.1); + padding: 1.5rem; +} +.survey-answer-summary__header { + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 1rem; +} +.survey-answer-summary__user, .survey-answer-summary__date { + display: flex; + align-items: center; + gap: 0.5rem; +} +.survey-answer-summary__icon { + color: #6f7b8a; + font-size: 1rem; +} +.survey-answer-summary__name { + font-weight: bold; + color: #4a90e2; + text-decoration: none; +} +.survey-answer-summary__name:hover { + text-decoration: underline; +} + +.survey-answer-questions { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.survey-answer-question { + background-color: #fff; + border-radius: 0.5rem; + box-shadow: 0 0 0.5rem rgba(0, 0, 0, 0.1); + overflow: hidden; +} +.survey-answer-question__header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 1.5rem; + background-color: #f8f9fa; + border-bottom: 1px solid #e9ecef; + flex-wrap: wrap; + gap: 0.5rem; +} +.survey-answer-question__title { + font-size: 1.125rem; + font-weight: bold; + margin: 0; + flex: 1; +} +.survey-answer-question__badge { + display: inline-flex; + align-items: center; + gap: 0.25rem; + font-size: 0.75rem; + padding: 0.25rem 0.5rem; + border-radius: 1rem; +} +.survey-answer-question__badge i { + font-size: 0.75rem; +} +.survey-answer-question__badge.is-text { + background-color: #e3f2fd; + color: #0d47a1; +} +.survey-answer-question__badge.is-radio { + background-color: #e8f5e9; + color: #1b5e20; +} +.survey-answer-question__badge.is-checkbox { + background-color: #fff3e0; + color: #e65100; +} +.survey-answer-question__badge.is-scale { + background-color: #f3e5f5; + color: #4a148c; +} +.survey-answer-question__content { + padding: 1.5rem; +} +.survey-answer-question__text { + line-height: 1.6; + color: #212529; +} +.survey-answer-question__choice, .survey-answer-question__reason { + margin-bottom: 1rem; + display: flex; + gap: 0.5rem; + flex-wrap: wrap; +} +.survey-answer-question__choice-label, .survey-answer-question__reason-label { + font-weight: bold; + min-width: 3rem; +} +.survey-answer-question__choice-value { + color: #212529; +} +.survey-answer-question__reason-text { + color: #495057; + line-height: 1.6; + flex: 1; + width: 100%; + margin-top: 0.5rem; +} + +@media (max-width: 767px) { + .survey-answer-question__header { + flex-direction: column; + align-items: flex-start; + } + .survey-answer-question__badge { + margin-top: 0.5rem; + } + .survey-answer-question__choice, .survey-answer-question__reason { + flex-direction: column; + gap: 0.25rem; + } +} diff --git a/app/assets/stylesheets/application/blocks/survey/survey-answers.css b/app/assets/stylesheets/application/blocks/survey/survey-answers.css new file mode 100644 index 00000000000..3b2e1eee9ee --- /dev/null +++ b/app/assets/stylesheets/application/blocks/survey/survey-answers.css @@ -0,0 +1,7 @@ +.user-link { + color: #4a90e2; + text-decoration: none; +} +.user-link:hover { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/application/blocks/survey/survey-result.css b/app/assets/stylesheets/application/blocks/survey/survey-result.css new file mode 100644 index 00000000000..1fc05bef291 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/survey/survey-result.css @@ -0,0 +1,161 @@ +.survey-result-summary { + margin-bottom: 2rem; + background-color: #fff; + border-radius: 0.5rem; + box-shadow: 0 0 0.5rem rgba(0, 0, 0, 0.1); + padding: 1.5rem; +} +.survey-result-summary__header { + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 1rem; +} +.survey-result-summary__count, .survey-result-summary__date { + display: flex; + align-items: center; + gap: 0.5rem; +} +.survey-result-summary__icon { + color: #6f7b8a; + font-size: 1rem; +} +.survey-result-summary__value { + font-weight: bold; + font-size: 1.125rem; +} + +.survey-result-questions { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.survey-result-question { + background-color: #fff; + border-radius: 0.5rem; + box-shadow: 0 0 0.5rem rgba(0, 0, 0, 0.1); + overflow: hidden; + margin-bottom: 2rem; +} +.survey-result-question__header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 1.5rem; + background-color: #f8f9fa; + border-bottom: 1px solid #e9ecef; + flex-wrap: wrap; + gap: 0.5rem; +} +.survey-result-question__title { + font-size: 1.125rem; + font-weight: bold; + margin: 0; + flex: 1; +} +.survey-result-question__badge { + display: inline-flex; + align-items: center; + gap: 0.25rem; + font-size: 0.75rem; + padding: 0.25rem 0.5rem; + border-radius: 1rem; +} +.survey-result-question__badge i { + font-size: 0.75rem; +} +.survey-result-question__badge.is-text { + background-color: #e3f2fd; + color: #0d47a1; +} +.survey-result-question__badge.is-radio { + background-color: #e8f5e9; + color: #1b5e20; +} +.survey-result-question__badge.is-checkbox { + background-color: #fff3e0; + color: #e65100; +} +.survey-result-question__badge.is-scale { + background-color: #f3e5f5; + color: #4a148c; +} +.survey-result-question__content { + padding: 1.5rem; +} +.survey-result-question__content .row { + margin-bottom: 1rem; +} +.survey-result-question__content .table { + border-collapse: collapse; + width: 100%; + margin-bottom: 1rem; +} +.survey-result-question__content .table th, .survey-result-question__content .table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #dee2e6; +} +.survey-result-question__content .table thead th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6; + background-color: #f8f9fa; +} +.survey-result-question__content .table tbody + tbody { + border-top: 2px solid #dee2e6; +} +.survey-result-question__content .table .table-info { + background-color: #e3f2fd; +} +.survey-result-question__content .table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} +.survey-result-question__content canvas { + max-width: 100%; + height: auto !important; +} +.survey-result-question__content h4 { + font-size: 1rem; + font-weight: bold; + margin-top: 0; + color: #495057; +} +.survey-result-question__content .text-break { + word-break: break-word; +} +.survey-result-question__content .font-weight-bold { + font-weight: bold; +} +.survey-result-question__content a { + color: #4a90e2; + text-decoration: none; +} +.survey-result-question__content a:hover { + text-decoration: underline; +} + +@media (max-width: 767px) { + .survey-result-question__header { + flex-direction: column; + align-items: flex-start; + } + .survey-result-question__badge { + margin-top: 0.5rem; + } + .survey-result-question__content .row { + margin-left: 0; + margin-right: 0; + } + .survey-result-question__content .col-md-6, .survey-result-question__content .col-md-12 { + padding-left: 0; + padding-right: 0; + margin-bottom: 1.5rem; + } +} + +/*# sourceMappingURL=survey-result.css.map */ diff --git a/app/assets/stylesheets/application/blocks/tags/_random-tags.css b/app/assets/stylesheets/application/blocks/tags/_random-tags.css new file mode 100644 index 00000000000..57ef080a40e --- /dev/null +++ b/app/assets/stylesheets/application/blocks/tags/_random-tags.css @@ -0,0 +1,75 @@ +.random-tags-item:not(:last-child) { + border-bottom: solid 1px var(--border); +} + +.random-tags-item__link { + display: flex; + text-decoration: none; + padding-left: 1rem; + padding-right: 0.5rem; + padding-block: 0.5rem; + min-height: 2.75rem; + align-items: center; + transition: all 0.2s ease-out; +} +.random-tags-item__link:hover { + background-color: var(--primary-tint); +} + +.random-tags-item__link-inner { + position: relative; + flex: 1; + padding-right: 2em; +} + +.random-tags-item__count { + position: absolute; + right: 0; + top: 2px; + font-size: 0.625rem; + display: flex; + text-align: center; + color: var(--default-text); + justify-content: center; + align-items: center; + padding-inline: 0.75em; + background-color: var(--background); + height: 1.5em; + border-radius: 1em; +} + +.random-tags-item__name { + font-size: 0.875rem; + line-height: 1.4; + color: var(--semi-muted-text); +} +.is-first .random-tags-item__name, .is-second .random-tags-item__name, .is-third .random-tags-item__name { + font-weight: 600; +} +.is-first .random-tags-item__name::before, .is-second .random-tags-item__name::before, .is-third .random-tags-item__name::before { + margin-right: 0.5em; + content: "\f521"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; +} +.is-first .random-tags-item__name, .is-first .random-tags-item__name::before { + color: var(--gold); +} +.is-second .random-tags-item__name, .is-second .random-tags-item__name::before { + color: var(--silver); +} +.is-third .random-tags-item__name, .is-third .random-tags-item__name::before { + color: var(--bronze); +} +.is-up .random-tags-item__name { + font-size: 1.125em; +} +.is-low .random-tags-item__name { + font-size: 0.875em; +} diff --git a/app/assets/stylesheets/application/blocks/tags/_tag-input.css b/app/assets/stylesheets/application/blocks/tags/_tag-input.css new file mode 100644 index 00000000000..7ad0c6a5300 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/tags/_tag-input.css @@ -0,0 +1,22 @@ +.tag-input { + margin-top: 0.5rem; + border-radius: 0.25rem; + background-color: var(--background-more-tint); + padding: 0.75rem 1rem; + border: dashed 1px var(--border); +} + +.tag-input__title { + font-size: 0.875rem; + line-height: 1.5; + margin-top: 0; + margin-bottom: 0.5rem; + display: block; + font-weight: 600; +} + +.tag-input__items { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} diff --git a/app/assets/stylesheets/application/blocks/tags/_tag-links.css b/app/assets/stylesheets/application/blocks/tags/_tag-links.css new file mode 100644 index 00000000000..64564232843 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/tags/_tag-links.css @@ -0,0 +1,50 @@ + +.tag-links .form-actions { + margin-top: 1rem; +} + +@media (min-width: 48em) { + .tag-links .form-actions__item.is-main { + min-width: 12rem; + } +} + +.tag-links__items { + display: flex; + align-items: flex-end; + flex-wrap: wrap; + gap: .5rem; +} + +.tag-links__item-link { + font-size: .6875rem; + line-height: 1.4; + display: block; + color: var(--muted-text); + background-color: transparent; + border: solid 1px var(--muted-text); + padding: .1875rem .625rem; + border-radius: 2rem; + transition: all .2s ease-in; + text-decoration: none; +} + +.tag-links__item-link:hover { + background-color: rgba(var(--base), .7); + color: var(--semi-muted-text); + border-color: var(--semi-muted-text); +} + +.tag-links__item-edit { + font-size: .75rem; + line-height: 1.4; + display: block; + color: var(--main); + text-decoration: none; + cursor: pointer; +} + +.tag-links__item-edit:hover, +.tag-links__item-edit:active { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/application/blocks/thread/_action-completed.css b/app/assets/stylesheets/application/blocks/thread/_action-completed.css new file mode 100644 index 00000000000..19e357d9c0a --- /dev/null +++ b/app/assets/stylesheets/application/blocks/thread/_action-completed.css @@ -0,0 +1,22 @@ + +.action-completed__action { + @media (min-width: 48em) { + max-width: 16rem; + margin-left: auto; + margin-right: auto; + + } +} +.action-completed__description { + margin-top: .75rem; + @media (min-width: 48em) { + max-width: 28rem; + margin-left: auto; + margin-right: auto; + } + p { + font-size: .75rem; + line-height: 1.5; + + } +} diff --git a/app/assets/stylesheets/application/blocks/thread/_thread-comment-form.css b/app/assets/stylesheets/application/blocks/thread/_thread-comment-form.css new file mode 100644 index 00000000000..afccf047f55 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/thread/_thread-comment-form.css @@ -0,0 +1,52 @@ +.thread-comment-form { +} + +@media (min-width: 48em) { + .thread-comment-form { + display: flex; + } +} + +.thread-comment-form .card-footer { + border-top: none; +} + +@media (min-width: 48em) { + .thread-comment-form.is-action-completed { + margin-top: 1.5rem; + padding-left: var(--thread-header-author); + } +} + +@media (max-width: 47.9375em) { + .thread-comment-form.is-action-completed { + margin-top: 1rem; + } +} + +.thread-comment-form__author { + flex: 0 0 var(--thread-header-author); + height: 100%; + width: var(--thread-header-author); + padding-right: 2rem; + border-right: solid 1px var(--border-tint); +} + +.thread-comment-form__user-icon { + height: auto; + width: 100%; + border-radius: 50%; +} + +.thread-comment-form__form { +} + +.thread-action-completed-form__form { + flex: 1; + position: relative; + overflow: hidden; +} + +.thread-comment-form__action-completed { + flex: 1; +} diff --git a/app/assets/stylesheets/application/blocks/thread/_thread-comment.css b/app/assets/stylesheets/application/blocks/thread/_thread-comment.css new file mode 100644 index 00000000000..7ab82f12c31 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/thread/_thread-comment.css @@ -0,0 +1,263 @@ + +.thread-comment { + position: relative; + border-radius: .25rem; +} + +@media (min-width: 48em) { + .thread-comment { + display: flex; + margin-bottom: 2rem; + } +} + +@media (max-width: 47.9375em) { + .thread-comment { + padding-left: 0; + margin-bottom: 1rem; + } +} + +.thread-comment__start { +} + +@media (min-width: 48em) { + .thread-comment__start { + flex: 0 0 var(--thread-header-author); + height: 100%; + width: var(--thread-header-author); + } +} + +@media (max-width: 47.9375em) { + .thread-comment__start { + display: none; + } +} + +.thread-comment__end { +} + +@media (min-width: 48em) { + .thread-comment__end { + max-width: calc(100% - var(--thread-header-author)); + flex: 1; + } +} + +.thread-comment__title { + font-size: .875rem; + line-height: 1.4; + font-weight: 600; +} + +@media (min-width: 48em) { + .thread-comment__title { + margin-right: .5rem; + flex: 1; + } +} + +@media (max-width: 47.9375em) { + .thread-comment__title { + display: flex; + } +} + +.thread-comment__title-user-icon { +} + +@media (min-width: 48em) { + .thread-comment__title-user-icon { + display: none; + } +} + +@media (max-width: 47.9375em) { + .thread-comment__title-user-icon { + height: 1.5rem; + width: 1.5rem; + display: inline-block; + vertical-align: middle; + margin-right: .25rem; + } +} + +.thread-comment__title-link { +} + +@media (min-width: 48em) { + .thread-comment__title-link { + height: 100%; + display: inline-flex; + align-items: center; + } +} + +@media (max-width: 47.9375em) { + .thread-comment__title-link { + display: inline-block; + white-space: nowrap; + max-width: calc(100vw - 15.5rem); + overflow: hidden; + text-overflow: ellipsis; + vertical-align: middle; + } +} + +.thread-comment__title-link.a-placeholder { + width: 15%; + height: 1.4em; +} + +.thread-comment__title-icon { + height: 1.5rem; + width: 1.5rem; + margin-right: .5rem; +} + +.thread-comment__title-label { + font-size: .8125rem; + display: block; + font-weight: 400; + color: var(--muted-text); + margin-bottom: .125rem; +} + +.thread-comment__title-label i { + margin-right: .1875rem; +} + +.thread-comment__description { + overflow: hidden; + min-height: 5rem; + padding-block: 1rem; + padding-inline: 1rem; +} + +@media (max-width: 47.9375em) { + .thread-comment__description { + padding: .75rem; + word-wrap: break-word; + } +} + +.thread-comment__user-icon { + height: 3.5rem; + width: 3.5rem; + object-fit: cover; + border-radius: 50%; +} + +@media (max-width: 47.9375em) { + .thread-comment__user-icon { + display: none; + } +} + +.thread-comment__company-logo { + height: 3.5rem; + width: 3.5rem; + object-fit: cover; + border-radius: .25rem; + border: solid 1px var(--border); + background-color: white; +} + +@media (min-width: 48em) { + .thread-comment__company-logo { + margin-top: .5rem; + } +} + +@media (max-width: 47.9375em) { + .thread-comment__company-logo { + height: 2.25rem; + width: 2.25rem; + float: right; + margin-left: .75rem; + margin-bottom: .5rem; + } +} + +.thread-comment__created-at { + display: block; + font-size: .8125rem; + line-height: 1.4; + white-space: nowrap; + color: var(--muted-text); + text-decoration: none; + cursor: pointer; + position: relative; +} + +@media (max-width: 47.9375em) { + .thread-comment__created-at { + font-size: .75rem; + } +} + +.thread-comment__created-at:hover, +.thread-comment__created-at:active { + text-decoration: underline; +} + +.thread-comment__created-at:active, +.thread-comment__created-at:focus, +.thread-comment__created-at.is-active { + color: var(--danger); +} + +.thread-comment__created-at:active::after, +.thread-comment__created-at:focus::after, +.thread-comment__created-at.is-active::after { + content: "Copied!"; + display: block; + background-color: rgba(black, .4); + border-radius: .125rem; + padding: .25rem; + font-size: .625rem; + line-height: 1; + color: var(--reversal-text); + left: 0; + position: absolute; + top: 100%; +} + +.thread-comment__created-at.a-placeholder { + width: 30%; + height: 1.4em; +} + +.thread-comment__actions { + padding-block: 0 1rem; +} + +.thread-comment__actions-items { + display: flex; + align-items: center; +} + +.thread-comment__actions-item-link { + font-size: 1.25rem; + line-height: 1; + display: flex; + text-align: center; + color: var(--muted-text); + height: 2.375rem; + width: 2.375rem; + align-items: center; + justify-content: center; + border-radius: 50%; + transition: color .2s ease-in, background-color .2s ease-in; +} + +.thread-comment__actions-item-link.is-success:hover { + background-color: #e0eefe; + color: var(--primary); +} + +.thread-comment__actions-item-link.is-danger:hover { + background-color: #f5e6ea; + color: var(--danger); +} diff --git a/app/assets/stylesheets/application/blocks/thread/_thread-comments-more.css b/app/assets/stylesheets/application/blocks/thread/_thread-comments-more.css new file mode 100644 index 00000000000..1c0a54c24b4 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/thread/_thread-comments-more.css @@ -0,0 +1,42 @@ + +.thread-comments-more { + position: relative; +} + +@media (min-width: 48em) { + .thread-comments-more { + margin-bottom: 2rem; + padding-left: var(--thread-header-author); + } +} + +@media (max-width: 47.9375em) { + .thread-comments-more { + padding-left: 0; + margin-bottom: 1rem; + } +} + +.thread-comments-more::before, +.thread-comments-more::after { + content: ''; + display: block; + height: 7px; + width: 100%; + background: repeating-linear-gradient(-45deg, var(--border)-shade, var(--border)-shade 3px, transparent 3px, transparent 6px); +} + +.thread-comments-more__inner { + padding-block: 1rem; +} + +.thread-comments-more__action { +} + +@media (min-width: 48em) { + .thread-comments-more__action { + max-width: 16rem; + padding-inline: .375rem; + margin-inline: auto; + } +} diff --git a/app/assets/stylesheets/application/blocks/thread/_thread-comments.css b/app/assets/stylesheets/application/blocks/thread/_thread-comments.css new file mode 100644 index 00000000000..9dfa1a3c4ab --- /dev/null +++ b/app/assets/stylesheets/application/blocks/thread/_thread-comments.css @@ -0,0 +1,50 @@ + +.thread-comments { + position: relative; + +} +.thread-comments__header { + @media (min-width: 48em) { + margin-bottom: 1.5rem; + } + @media (max-width: 47.9375em) { + margin-bottom: 1rem; + + } +} +.thread-comments__title { + align-items: center; + display: flex; + font-weight: 700; + @media (min-width: 48em) { + font-size: 1.125rem; + line-height: 1.45; + } + @media (max-width: 47.9375em) { + font-size: 1rem; + line-height: 1.45; + + } +} +.thread-comments__title-count { + font-size: .875rem; + line-height: 1; + display: flex; + font-weight: 600; + align-items: center; + height: 1.25rem; + width: auto; + background-color: var(--base); + padding-inline: .5rem; + border-radius: 1.5rem; + margin-left: .5rem; + +} +.thread-comments { + .form-actions { + @media (min-width: 48em) { + padding-left: var(--thread)-header-author; + + } + } +} diff --git a/app/assets/stylesheets/application/blocks/thread/_thread-form.css b/app/assets/stylesheets/application/blocks/thread/_thread-form.css new file mode 100644 index 00000000000..cdfb6d11920 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/thread/_thread-form.css @@ -0,0 +1,43 @@ + +.thread-form { +} + +@media (min-width: 48em) { + .thread-form { + padding: 1rem 2rem; + } +} + +@media (max-width: 47.9375em) { + .thread-form { + padding: .75rem 1rem; + } +} + +.thread-form__actions { + margin-top: 1rem; +} + +@media (min-width: 48em) { + .thread-form__actions { + display: flex; + justify-content: center; + gap: .75rem; + } +} + +.thread-form__action { +} + +@media (min-width: 48em) { + .thread-form__action { + flex: 0 0 14rem; + max-width: 50%; + } +} + +@media (max-width: 47.9375em) { + .thread-form__action:not(:first-child) { + margin-top: .5rem; + } +} diff --git a/app/assets/stylesheets/application/blocks/thread/_thread-header.css b/app/assets/stylesheets/application/blocks/thread/_thread-header.css new file mode 100644 index 00000000000..1b111bb1693 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/thread/_thread-header.css @@ -0,0 +1,23 @@ + +.thread-header { + position: relative; + @media (min-width: 48em) { + padding: 1rem 2rem .75rem; + } + @media (max-width: 47.9375em) { + padding: 2.25rem .75rem .5rem; + + } +} +.thread-header__user-icon-link { + margin-inline: .5rem .25rem; + display: flex; + justify-content: center; + align-items: center; + +} +.thread-header__user-icon { + height: 1rem; + width: 1rem; + +} diff --git a/app/assets/stylesheets/application/blocks/user/_a-list-item-badge.css b/app/assets/stylesheets/application/blocks/user/_a-list-item-badge.css new file mode 100644 index 00000000000..07815c36e94 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_a-list-item-badge.css @@ -0,0 +1,77 @@ +.a-list-item-badge { + font-size: 0.625rem; + display: inline-flex; + font-weight: 400; + white-space: nowrap; + color: var(--semi-muted-text); + border-radius: 0.75rem; + align-self: flex-start; + align-items: center; + justify-content: center; + position: relative; + width: 3.75rem; + height: 0.8125rem; +} +.a-list-item-badge span { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%) scale(0.8); + letter-spacing: -0.05em; +} +.a-list-item-badge.is-wip { + background-color: var(--background-semi-shade); + color: var(--semi-muted-text); +} +.a-list-item-badge.is-active { + background-color: var(--danger); + color: var(--reversal-text); +} +.a-list-item-badge.is-unread { + background-color: var(--danger); + color: var(--reversal-text); +} +.a-list-item-badge.is-searchable { + border: solid 1px var(--muted-text); + color: var(--muted-text); +} +.a-list-item-badge.is-ended { + background-color: var(--muted-text); + color: var(--reversal-text); +} +.a-list-item-badge.is-report { + background-color: #7f6fb7; + color: var(--reversal-text); +} +.a-list-item-badge.is-practice { + background-color: #5bbcc7; + color: var(--reversal-text); +} +.a-list-item-badge.is-question { + background-color: #e2965b; + color: var(--reversal-text); +} +.a-list-item-badge.is-page { + background-color: #56925c; + color: var(--reversal-text); +} +.a-list-item-badge.is-announcement { + background-color: #f7cd5b; + color: var(--default-text); +} +.a-list-item-badge.is-event { + background-color: #fb96a3; + color: var(--reversal-text); +} +.a-list-item-badge.is-regular_event { + background-color: #dc6ed2; + color: var(--reversal-text); +} +.a-list-item-badge.is-product { + background-color: #909b3c; + color: var(--reversal-text); +} +.a-list-item-badge.is-user { + background-color: #7cbd9c; + color: var(--reversal-text); +} diff --git a/app/assets/stylesheets/application/blocks/user/_active-practices-list.css b/app/assets/stylesheets/application/blocks/user/_active-practices-list.css new file mode 100644 index 00000000000..ce9f734caa6 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_active-practices-list.css @@ -0,0 +1,38 @@ +.active-practices-list__items { + margin-bottom: -0.25rem; +} + +.active-practices-list-item:not(:last-child) { + border-bottom: dotted 0.0625rem var(--border-tint); +} + +.active-practices-list-item__link { + font-size: 0.875rem; + line-height: 1.55; + display: block; + color: var(--main); + padding-block: 0.5rem; + padding-inline: 1rem; + text-decoration: none; + cursor: pointer; +} +.active-practices-list-item__link:hover, .active-practices-list-item__link:active { + text-decoration: underline; +} +.active-practices-list-item__link::before { + content: "\f060"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + margin-right: 0.5rem; + color: var(--accent); +} +.active-practices-list-item__link:hover::before { + text-decoration: none; +} diff --git a/app/assets/stylesheets/application/blocks/user/_companies-item.css b/app/assets/stylesheets/application/blocks/user/_companies-item.css new file mode 100644 index 00000000000..970d98ecd5d --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_companies-item.css @@ -0,0 +1,109 @@ + +.companies-item { + height: 100%; +} + +.companies-item__inner { +} + +@media (min-width: 48em) { + .companies-item__inner { + height: 100%; + } +} + +.companies-item__header { + padding: 1rem; +} + +.companies-item__header:not(:last-child) { + border-bottom: solid 1px var(--border-tint); +} + +.companies-item__header-inner { + display: flex; + gap: 1rem; +} + +.companies-item__header-start { +} + +@media (min-width: 48em) { + .companies-item__header-start { + flex: 0 0 3.5rem; + } +} + +@media (max-width: 47.9375em) { + .companies-item__header-start { + flex: 0 0 2.5rem; + } +} + +.companies-item__user-icon-image { + background-color: white; +} + +@media (min-width: 48em) { + .companies-item__user-icon-image { + height: 3.5rem; + width: 3.5rem; + } +} + +@media (max-width: 47.9375em) { + .companies-item__user-icon-image { + height: 2.5rem; + width: 2.5rem; + } +} + +.companies-item__header-end { + flex: 1; +} + +.companies-item__name { + font-size: 1em; + line-height: 1.4; + display: block; + font-weight: 600; + color: var(--main); + margin-bottom: .125rem; +} + +@media (min-width: 48em) { + .companies-item__name { + font-size: 1.125rem; + } +} + +@media (max-width: 47.9375em) { + .companies-item__name { + font-size: 1rem; + } +} + +.companies-item__name-link { + color: var(--main-text); + display: block; + text-decoration: none; + cursor: pointer; +} + +.companies-item__name-link:hover, +.companies-item__name-link:active { + text-decoration: underline; +} + +.companies-item__body { + padding: 1rem; +} + +.companies-item__body-row:not(:first-child) { + margin-top: .75rem; +} + +.companies-item__description p { + font-size: .75rem; + line-height: 1.6; +} diff --git a/app/assets/stylesheets/application/blocks/user/_completed-practices-progress.css b/app/assets/stylesheets/application/blocks/user/_completed-practices-progress.css new file mode 100644 index 00000000000..3c22dc2ca26 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_completed-practices-progress.css @@ -0,0 +1,69 @@ +.completed-practices-progress { + padding: 0.75rem 1rem; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.completed-practices-progress__bar-container { + flex: 1; + border-radius: 20rem; + height: 0.75rem; + overflow: hidden; +} + +.completed-practices-progress__bar { + height: 0.75rem; + width: 100%; + background-color: var(--background-semi-shade); +} + +.completed-practices-progress__percentage-bar { + height: 0.75rem; + background-color: var(--success); + position: relative; + top: -0.75rem; + box-shadow: rgba(0, 0, 0, 0.2) 0 0.0625rem 0.0625rem; +} + +.completed-practices-progress__counts { + position: relative; + cursor: pointer; + display: block; +} + +.completed-practices-progress__counts-inner { + cursor: pointer; +} + +.completed-practices-progress__counts-inner:hover .completed-practices-progress__percentage { + text-decoration: underline; +} + +.completed-practices-progress__percentage { + font-size: 0.8125rem; + text-align: right; + white-space: nowrap; +} + +.completed-practices-progress__number { + position: absolute; + right: 0; + bottom: calc(100% + 0.5rem); + background-color: var(--base); + border: solid 1px var(--border); + padding: 0.25rem 0.5rem; + font-size: 0.8125rem; + line-height: 1.4; + text-align: right; + white-space: nowrap; + border-radius: 0.25rem; +} + +.completed-practices-progress__counts input:checked ~ label .completed-practices-progress__number { + display: block; +} + +.completed-practices-progress__counts input:not(:checked) ~ label .completed-practices-progress__number { + display: none; +} diff --git a/app/assets/stylesheets/application/blocks/user/_following.css b/app/assets/stylesheets/application/blocks/user/_following.css new file mode 100644 index 00000000000..a0743dfc21a --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_following.css @@ -0,0 +1,65 @@ +.following { + position: relative; + width: 100%; +} +.following summary { + display: block; +} +.following summary::-webkit-details-marker, +.following summary::marker { + display: none; +} + +.following__dropdown { + position: absolute; + z-index: 3; + width: 18.75rem; +} + +.following-option { + cursor: pointer; + width: 100%; + padding: 0.75rem; + display: block; + text-align: left; + transition: all 0.2s ease-out; +} +.following-option:hover { + background-color: var(--background-more-tint); +} + +.following-option__inner { + position: relative; + padding-left: 1.5rem; +} +.following-option.is-active .following-option__inner::before { + content: "\f00c"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + left: 0; + position: absolute; + top: 0; +} + +.following-option__label { + font-size: 0.875rem; + line-height: 1.4; + font-weight: 600; + color: var(--semi-muted-text); +} +.following-option.is-active .following-option__label { + color: var(--default-text); +} + +.following-option__desciption { + font-size: 0.75rem; + line-height: 1.5; + color: var(--muted-text); + margin-top: 0.125rem; +} diff --git a/app/assets/stylesheets/application/blocks/user/_group-company-name.css b/app/assets/stylesheets/application/blocks/user/_group-company-name.css new file mode 100644 index 00000000000..94a837c18c0 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_group-company-name.css @@ -0,0 +1,68 @@ + +.group-company-name { +} + +@media (min-width: 48em) { + .group-company-name { + font-size: 1.125rem; + } +} + +@media (max-width: 47.9375em) { + .group-company-name { + font-size: 1rem; + } +} + +.group-company-name__link { + text-decoration: none; + color: var(--main-text); + display: flex; + align-items: center; +} + +.group-company-name__icon { + display: block; + height: 2.5rem; + width: 2.5rem; + margin-right: .75rem; +} + +.group-company-name__icon-image { + height: 100%; + width: 100%; + object-fit: cover; + border-radius: .25rem; +} + +.group-company-name__name { + display: block; + flex: 1; +} + +.group-company-name__label { + display: block; + font-weight: 600; +} + +@media (min-width: 48em) { + .group-company-name__label { + margin-right: .25em; + } + + a:hover .group-company-name__label { + text-decoration: underline; + } +} + +.group-company-name__label-option { + font-size: .75rem; + font-weight: 400; + color: var(--muted-text); + margin-top: .5rem; + display: block; +} + +a:hover .group-company-name__label-option { + text-decoration: none; +} diff --git a/app/assets/stylesheets/application/blocks/user/_niconico-calendar.css b/app/assets/stylesheets/application/blocks/user/_niconico-calendar.css new file mode 100644 index 00000000000..8c1167c8fc2 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_niconico-calendar.css @@ -0,0 +1,141 @@ +.niconico-calendar-nav { + display: flex; + justify-content: center; + align-items: center; + margin-top: -1rem; + font-size: 0.875rem; +} + +.niconico-calendar-nav__previous, +.niconico-calendar-nav__next { + height: 2.75rem; + width: 2.75rem; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + text-decoration: none; + cursor: pointer; +} +.niconico-calendar-nav__previous:hover, .niconico-calendar-nav__previous:active, +.niconico-calendar-nav__next:hover, +.niconico-calendar-nav__next:active { + text-decoration: underline; +} +.niconico-calendar-nav__previous, +.niconico-calendar-nav__next { + transition: all 0.2s ease-out; +} +.niconico-calendar-nav__previous:hover, +.niconico-calendar-nav__next:hover { + color: var(--main-text); +} +.niconico-calendar-nav__previous.is-blank, +.niconico-calendar-nav__next.is-blank { + cursor: default; + pointer-events: none; +} + +.niconico-calendar-nav__year--month { + width: 6rem; + text-align: center; +} + +.niconico-calendar { + width: 100%; + table-layout: fixed; +} +.niconico-calendar th, +.niconico-calendar td { + border: solid 1px var(--border-shade); +} +.niconico-calendar td { + height: 3rem; +} + +.niconico-calendar__header { + background-color: var(--background-tint); +} + +.niconico-calendar__header-day { + width: 14.2857142857%; + font-size: 0.75rem; + line-height: 1; + text-align: center; + padding-block: 0.25em; +} +.niconico-calendar__header-day.is-sunday { + color: var(--danger); +} +.niconico-calendar__header-day.is-saturday { + color: var(--main-text); +} + +.niconico-calendar__day.is-blank { + background-color: var(--background-more-tint); +} +.niconico-calendar__day.is-positive { + background-color: var(--positive-background); +} +.niconico-calendar__day.is-negative { + background-color: var(--negative-background); +} +.niconico-calendar__day.is-neutral { + background-color: var(--neutral-background); +} +.niconico-calendar__day.is-today .niconico-calendar__day-inner { + border: dashed 2px var(--success); +} +.niconico-calendar__day.is-today .niconico-calendar__day-label { + font-weight: 600; + color: var(--success); +} + +.niconico-calendar__day-inner { + display: block; + text-decoration: none; + padding-block: 0.25rem 0.125rem; + height: 100%; + width: 100%; +} + +a.niconico-calendar__day-inner { + transition: all 0.2s ease-out; + cursor: pointer; +} +a.niconico-calendar__day-inner:hover { + background-color: color-mix(in srgb, var(--warning) 10%, transparent); + box-shadow: var(--warning) 0 0 0 1px inset; + position: relative; +} + +.niconico-calendar__day-label { + font-size: 0.625rem; + line-height: 1; + text-align: center; + color: var(--default-text); + margin-bottom: 0.125rem; +} +.niconico-calendar__day.is-blank .niconico-calendar__day-label { + color: var(--muted-text); +} + +.niconico-calendar__day-value { + font-size: 1.75rem; + line-height: 1; + display: flex; + text-align: center; + align-items: center; + justify-content: center; + height: 1.875rem; + width: 100%; +} +.niconico-calendar__day.is-blank .niconico-calendar__day-value { + color: var(--muted-text); + font-size: 1.25rem; +} + +.niconico-calendar__emotion-image { + height: 1em; + width: 1em; +} diff --git a/app/assets/stylesheets/application/blocks/user/_sns-links.css b/app/assets/stylesheets/application/blocks/user/_sns-links.css new file mode 100644 index 00000000000..9bc8ed77e03 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_sns-links.css @@ -0,0 +1,19 @@ + +.sns-links { + margin-top: .5rem; + display: flex; + gap: 1rem; + align-items: center; + justify-content: space-between; +} + +.sns-links__items { +} + +.sns-links__item-link { + font-size: .875rem; +} + +.sns-links__item-link:hover { + color: var(--main-text); +} diff --git a/app/assets/stylesheets/application/blocks/user/_user-data.css b/app/assets/stylesheets/application/blocks/user/_user-data.css new file mode 100644 index 00000000000..aa5d55736d4 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_user-data.css @@ -0,0 +1,51 @@ + +.user-data { + padding: 1rem 1.5rem; + position: relative; + display: flex; + flex-direction: column; +} + +@media (min-width: 48em) { + .user-data { + gap: 1rem; + } +} + +@media (max-width: 47.9375em) { + .user-data { + padding: .75rem; + gap: .75rem; + } +} + +.user-data__description { + flex: 0 0 100%; +} + +@media (min-width: 48em) { + .user-data__description { + font-size: .9375rem; + } +} + +@media (max-width: 47.9375em) { + .user-data__description { + font-size: .8125rem; + } +} + +.user-data__description p { + font-size: 1em; + line-height: 1.8; + margin-top: 0; + margin-bottom: .8em; +} + +.user-data__description p:last-child { + margin-bottom: 0; +} + +.user-data__tags { + margin-top: .75rem; +} diff --git a/app/assets/stylesheets/application/blocks/user/_user-grass.css b/app/assets/stylesheets/application/blocks/user/_user-grass.css new file mode 100644 index 00000000000..fc6ecdfb754 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_user-grass.css @@ -0,0 +1,62 @@ + +.user-grass { + padding: 1rem; +} + +@media (max-width: 47.9375em) { + .user-grass { + padding: .75rem; + } +} + +.user-grass__link { + position: relative; + display: block; +} + +.user-grass__link .user-grass__image.is-loading { + animation: loadingNow .5s ease infinite alternate; +} + +.user-grass-nav { + font-size: .875rem; + display: flex; + justify-content: center; + align-items: center; + margin-top: -1rem; +} + +.user-grass-nav__previous, +.user-grass-nav__next { + height: 2.75rem; + width: 2.75rem; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + text-decoration: none; + transition: all .2s ease-out; +} + +.user-grass-nav__previous:hover, +.user-grass-nav__previous:active, +.user-grass-nav__next:hover, +.user-grass-nav__next:active { + text-decoration: underline; +} + +.user-grass-nav__previous:hover, +.user-grass-nav__next:hover { + color: var(--main-text); +} + +.user-grass-nav__previous.is-blank, +.user-grass-nav__next.is-blank { + cursor: default; + pointer-events: none; +} + +.user-grass-nav__year--month { + width: 13rem; + text-align: center; +} diff --git a/app/assets/stylesheets/application/blocks/user/_user-group.css b/app/assets/stylesheets/application/blocks/user/_user-group.css new file mode 100644 index 00000000000..4a08b90c4b5 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_user-group.css @@ -0,0 +1,113 @@ + +.user-group { + padding: 1rem; +} + +.user-group:not(:first-child) { + border-top: solid 1px var(--border-tint); +} + +.user-group__header { + display: flex; + gap: .5rem; +} + +@media (min-width: 48em) { + .user-group__header { + justify-content: space-between; + } +} + +@media (max-width: 47.9375em) { + .user-group__header { + flex-direction: column; + } +} + +.user-group__title { +} + +@media (min-width: 48em) { + .user-group__title { + font-size: 1rem; + } +} + +@media (max-width: 47.9375em) { + .user-group__title { + font-size: 1rem; + } +} + +.user-group__title-link { + text-decoration: none; + color: var(--main-text); + display: flex; + gap: .5rem; +} + +@media (min-width: 48em) { + .user-group__title-link { + align-items: flex-end; + } +} + +@media (max-width: 47.9375em) { + .user-group__title-link { + flex-direction: column; + } +} + +.user-group__title.is-inline .user-group__title-link { + flex-direction: row; + align-items: flex-end; +} + +.user-group__title-label { + display: block; + font-weight: 600; +} + +.user-group__title-link:hover .user-group__title-label { + text-decoration: underline; +} + +.user-group__title-icon.is-first { + color: var(--gold); +} + +.user-group__title-icon.is-second { + color: var(--silver); +} + +.user-group__title-icon.is-third { + color: var(--bronze); +} + +.user-group__date { + font-size: .75rem; + font-weight: 400; + color: var(--muted-text); +} + +.user-group__count { + font-size: .75rem; + font-weight: 400; + color: var(--muted-text); +} + +.user-group__counts { +} + +@media (min-width: 48em) { + .user-group__counts { + margin-top: -.5rem; + flex: 1; + max-width: 29rem; + } +} + +.user-group__counts .card-counts__item { + width: 3.5rem; + color: var(--default-text); +} diff --git a/app/assets/stylesheets/application/blocks/user/_user-metas.css b/app/assets/stylesheets/application/blocks/user/_user-metas.css new file mode 100644 index 00000000000..e91d3658c42 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_user-metas.css @@ -0,0 +1,97 @@ +.user-metas { + background-color: var(--base); +} + +.user-metas__title { + border: solid 1px var(--border); + margin-bottom: -1px; + padding: .375rem .75rem; + font-size: .75rem; + line-height: 1.4; + font-weight: 600; + background-color: var(--background-tint); + position: relative; +} + +.user-metas__items { + border: solid 1px var(--border); +} + +.user-metas__items + .user-metas__items { + border-top: none; +} + +.user-metas__items-label { + border-bottom: solid 1px var(--border); + padding: .25rem .75rem; + font-size: .75rem; + line-height: 1.4; + font-weight: 600; + background-color: var(--background); +} + +.user-metas__items-label span { + font-weight: 400; +} + +.user-metas__item { + font-size: .75rem; + line-height: 1.4; + display: flex; +} + +@media (max-width: 47.9375em) { + .user-metas__item { + display: block; + } +} + +.user-metas__item:nth-child(even) { + background-color: var(--input-background); +} + +.user-metas__item:not(:last-child) { + border-bottom: solid 1px var(--border); +} + +.user-metas__item-label { + text-align: right; + border-right: dashed 1px var(--border); + flex: 0 0 9rem; + padding: .375rem .5rem; +} + +@media (max-width: 47.9375em) { + .user-metas__item-label { + text-align: left; + border-right: none; + border-bottom: dashed 1px var(--border); + } +} + +.user-metas__item-value { + flex: 1; + padding: .375rem .5rem; +} + +.user-metas__item-value ul { + list-style: disc; + margin-left: 2em; +} + +.user-metas__item-value li { + margin-block: .25rem; +} + +.user-metas__item-value *:first-child { + margin-top: 0; +} + +.user-metas__item-value *:last-child { + margin-bottom: 0; +} + +.user-metas__item-value-text.is-danger { + color: var(--danger); + font-weight: 700; +} diff --git a/app/assets/stylesheets/application/blocks/user/_user-profile.css b/app/assets/stylesheets/application/blocks/user/_user-profile.css new file mode 100644 index 00000000000..c5f3884c3a8 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_user-profile.css @@ -0,0 +1,29 @@ + +.user-profile__icon { + @media (max-width: 47.9375em) { + position: static; + text-align: center; + margin-bottom: .25rem; + + } +} +.user-profile__user-icon-image { + @media (min-width: 48em) { + height: 5rem; + width: 5rem; + } + @media (max-width: 47.9375em) { + height: 4rem; + width: 4rem; + + } +} +.user-company-profile__description { + @media (min-width: 48em) { + font-size: .9375rem; + } + @media (max-width: 47.9375em) { + font-size: .8125rem; + + } +} diff --git a/app/assets/stylesheets/application/blocks/user/_user-secret-attributes.css b/app/assets/stylesheets/application/blocks/user/_user-secret-attributes.css new file mode 100644 index 00000000000..18df8d9a1f3 --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_user-secret-attributes.css @@ -0,0 +1,46 @@ +.user-secret-attributes { + font-size: 0.75rem; + border: solid 1px var(--border); + padding: 0.75em 1em; +} + +.user-secret-attributes:not(:first-child) { + margin-top: 0.25em; +} + +.user-secret-attributes__title { + font-size: 0.75rem; + line-height: 1.4; + font-weight: 600; + margin-bottom: 0.25em; +} + +.user-secret-attributes__items { + display: flex; + flex-wrap: wrap; + color: var(--muted-text); +} + +.user-secret-attributes__items + .user-secret-attributes__items { + margin-top: 0.125rem; +} + +.user-secret-attributes__item { + line-height: 1.4; + display: flex; + align-items: center; +} + +.user-secret-attributes__item:not(:first-child)::before { + content: "、"; +} + +.user-secret-attributes__item-label::after { + content: ":"; + margin-right: 0.25rem; +} + +.user-secret-attributes__item-value.is-important { + font-weight: 600; + color: var(--danger); +} diff --git a/app/assets/stylesheets/application/blocks/user/_user-study-streak-tracker.css b/app/assets/stylesheets/application/blocks/user/_user-study-streak-tracker.css new file mode 100644 index 00000000000..4ed031a6c3e --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_user-study-streak-tracker.css @@ -0,0 +1,127 @@ +.streak-card { + margin-bottom: 1.5rem; +} + +.streak-container { + display: flex; + justify-content: center; +} + +@media (min-width: 48em) { + .streak-container { + gap: 1rem; + } +} + +@media (max-width: 47.9375em) { + .streak-container { + gap: .5rem; + } +} + +.streak-item { + flex: 1; + max-width: 10rem; + display: flex; + justify-content: center; + align-items: center; +} + +@media (min-width: 48em) { + .streak-item { + padding-block: 1rem; + } +} + +@media (max-width: 47.9375em) { + .streak-item { + padding-block: .75rem; + } +} + +.streak-item__content { + display: flex; + flex-direction: column; + align-items: center; +} + +.streak-item__days { + display: flex; + align-items: baseline; +} + +.streak-item__number { + font-weight: 700; + color: #f7941d; +} + +@media (min-width: 48em) { + .streak-item__number { + font-size: 2.5rem; + line-height: 1; + } +} + +@media (max-width: 47.9375em) { + .streak-item__number { + font-size: 2rem; + line-height: 1; + } +} + +.streak-item__label { + font-weight: 600; + text-align: center; +} + +@media (min-width: 48em) { + .streak-item__label { + font-size: 1rem; + line-height: 1.4; + } +} + +@media (max-width: 47.9375em) { + .streak-item__label { + font-size: .875rem; + line-height: 1.4; + } +} + +.streak-item__unit { + text-align: center; + color: var(--muted-text); +} + +@media (min-width: 48em) { + .streak-item__unit { + font-size: 1rem; + line-height: 1.4; + } +} + +@media (max-width: 47.9375em) { + .streak-item__unit { + font-size: .75rem; + line-height: 1.4; + } +} + +.streak-item__period { + margin-top: .125rem; + text-align: center; +} + +@media (min-width: 48em) { + .streak-item__period { + font-size: .875rem; + line-height: 1.4; + } +} + +@media (max-width: 47.9375em) { + .streak-item__period { + font-size: .75rem; + line-height: 1.4; + } +} diff --git a/app/assets/stylesheets/application/blocks/user/_users-item.css b/app/assets/stylesheets/application/blocks/user/_users-item.css new file mode 100644 index 00000000000..9202e03dd9a --- /dev/null +++ b/app/assets/stylesheets/application/blocks/user/_users-item.css @@ -0,0 +1,126 @@ + +.users-item { + height: 100%; + container: users-item / inline-size; + +} +.users-item__inactive-message { + background-color: var(--disabled); + font-size: .625rem; + line-height: 1.4; + text-align: center; + padding: .25rem; + border-top-left-radius: .1875rem; + border-top-right-radius: .1875rem; + margin: -1px -1px -.25rem; + +} +.users-item__inner { + @media (min-width: 48em) { + height: 100%; + display: flex; + flex-direction: column; + + } +} +.users-item__header { + position: relative; + padding: .75rem 1rem; + border-bottom: solid 1px var(--border-tint); + +} +.users-item__header-inner { + display: flex; + gap: 1rem; + +} +.users-item__header-start { + display: flex; + flex-direction: column; + gap: .25rem; + align-items: center; + +} +.users-item__header-end { + flex: 1; + +} +.users-item__icon { + @media (min-width: 48em) { + min-width: 3.5rem; + } + @media (max-width: 47.9375em) { + min-width: 2.5rem; + + } +} +.users-item__user-icon-image { + background-color: var(--base); + @media (min-width: 48em) { + height: 3.5rem; + width: 3.5rem; + } + @media (max-width: 47.9375em) { + height: 2.5rem; + width: 2.5rem; + + } +} +.users-item__name { + font-size: 1em; + line-height: 1.4; + display: block; + font-weight: 600; + color: var(--main); + margin-bottom: .125rem; + @media (min-width: 48em) { + font-size: 1.125rem; + } + @media (max-width: 47.9375em) { + font-size: 1rem; + } + i { + color: var(--danger); + margin-left: .25em; + font-size: .75em; + + } +} +.users-item__body { + padding: .75rem 1rem 0; + @media (min-width: 48em) { + flex: 1; + + } +} +.users-item__description { + p { + font-size: .75rem; + line-height: 1.6; + + } +} +.users-item__tags { + margin-top: .75rem; + +} +.users-item__edit { + text-align: center; + margin-top: -.25rem; + padding-bottom: 1rem; + +} +.user-item__company-logo-image { + height: 3.5rem; + width: 3.5rem; + min-width: 3.5rem; + object-fit: cover; + background-color: var(--base); + border-radius: .25rem; + border: solid 1px var(--border-tint); + +} +.users-item__footer { + position: relative; + +} diff --git a/app/assets/stylesheets/atoms/_a-badge.css b/app/assets/stylesheets/atoms/_a-badge.css new file mode 100644 index 00000000000..64f9f9e54d2 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-badge.css @@ -0,0 +1,113 @@ +.a-badge { + text-transform: none; + display: inline-flex; + border: solid 1px; + border-radius: 1em; + font-family: var(--sans-serif); + white-space: nowrap; + text-decoration: none; + align-items: center; + justify-content: center; +} +.a-badge:not(:first-child) { + margin-left: 0.1875em; +} +.a-badge:not(:last-child) { + margin-right: 0.1875em; +} +.a-badge.is-block { + width: 100%; + display: flex; +} +.a-badge.is-block .a-badge__inner { + overflow: hidden; + text-overflow: ellipsis; +} +.a-badge.is-primary { + background-color: var(--primary); + color: var(--reversal-text); + border-color: var(--primary); +} +.a-badge.is-secondary { + background-color: var(--secondary); + color: var(--default-text); + border-color: #d1d1d1; +} +.a-badge.is-info { + background-color: var(--info); + color: var(--reversal-text); + border-color: var(--info); +} +.a-badge.is-success { + background-color: var(--success); + color: var(--reversal-text); + border-color: var(--success); +} +.a-badge.is-warning { + background-color: var(--warning); + color: var(--default-text); + border-color: var(--warning); +} +.a-badge.is-danger { + background-color: var(--danger); + color: var(--reversal-text); + border-color: var(--danger); +} +.a-badge.is-disabled { + background-color: var(--disabled); + color: var(--default-text); + border-color: #d1d1d1; +} +.a-badge.is-main { + background-color: var(--main); + color: var(--reversal-text); + border-color: var(--main); +} +.a-badge.is-muted { + border: none; + color: var(--muted-text); + font-weight: 400; + background-color: var(--background); +} +.a-badge.is-dark-muted { + border: none; + color: var(--semi-muted-text); + font-weight: 400; + background-color: var(--background-semi-shade); +} +.a-badge.is-xs { + font-size: 0.625rem; + padding-inline: 0.625rem; + height: 1.5em; + font-weight: 500; +} +.a-badge.is-xs:not(:first-child) { + margin-left: 0.5em; +} +.a-badge.is-xs:not(:last-child) { + margin-right: 0.5em; +} +.a-badge.is-sm { + font-size: 0.6875rem; + padding-inline: 0.6875rem; + height: 1.65em; + font-weight: 600; +} +.a-badge.is-md { + font-size: 0.8125rem; + padding-inline: 0.8125rem; + height: 1.95em; + font-weight: 600; +} +.a-badge.is-lg { + font-size: 1rem; + padding-inline: 1rem; + height: 2.4em; + font-weight: 600; +} +.a-badge.is-xl { + font-size: 1.25rem; + padding-inline: 1.25rem; + height: 3em; + font-weight: 800; +} diff --git a/app/assets/stylesheets/atoms/_a-block-check.css b/app/assets/stylesheets/atoms/_a-block-check.css new file mode 100644 index 00000000000..4fcaadf0af0 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-block-check.css @@ -0,0 +1,127 @@ +.a-block-check { + height: 100%; +} + +.a-block-check__label { + background-color: var(--input-background); + height: 100%; + min-height: 2.5rem; + font-size: 0.8125rem; + line-height: 1.4; + display: flex; + text-align: center; + gap: 0.25rem; + align-items: center; + justify-content: center; + border: solid 1px var(--input-border); + padding: 0.5rem 1.25rem 0.5rem 2.25rem; + cursor: pointer; + border-radius: 0.25rem; + transition: all 0.2s ease-in; + position: relative; +} + +.a-block-check__label.is-ta-left { + justify-content: flex-start; + text-align: left; +} + +.a-block-check__label.has-input { + flex-wrap: wrap; +} + +.a-block-check__label.has-input label { + flex: 0 0 100%; + cursor: pointer; +} + +.a-block-check__label:hover { + background-color: var(--input-hover-background); + border-color: var(--input-hover-border); +} + +input:checked + .a-block-check__label { + background-color: var(--input-selected-background); + border-color: var(--input-selected-border); + color: var(--input-selected-text); +} + +.a-block-check .a-block-check__label::before { + display: block; + position: absolute; + left: 0.75rem; + top: 50%; + transform: translateY(-50%); +} + +.form-item-block__item .a-block-check__label { + border: none; + border-radius: none; +} + +.a-block-check__label.is-dammy { + pointer-events: none; +} + +/* radio */ +.a-block-check.is-radio .a-block-check__label::before { + content: ""; + width: 0.875rem; + height: 0.875rem; + border: solid 1px var(--input-border); + border-radius: 50%; + background-color: var(--base); +} + +.a-block-check.is-radio input:checked + .a-block-check__label::before { + border-color: var(--primary); + background-color: var(--primary); + box-shadow: inset 0 0 0 2px var(--base); +} + +/* checkbox */ +.a-block-check.is-checkbox .a-block-check__label::before { + content: ""; + width: 0.875rem; + height: 0.875rem; + border: solid 1px var(--input-border); + border-radius: 3px; + background-color: var(--base); +} + +.a-block-check.is-checkbox input:checked + .a-block-check__label::before { + border-color: var(--primary); + background-color: var(--primary); + content: "\f00c"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + color: var(--reversal-text); +} + +.a-block-check__name { + font-size: 0.875rem; + line-height: 1.4; + display: block; + text-align: center; +} + +.a-block-check__image { + width: 2rem; + height: 2rem; +} + +.a-block-check__label.has-icon .a-block-check__image { + width: 1.5rem; + height: 1.5rem; +} + +.a-block-check__account { + margin-left: 0.25em; + font-weight: 400; +} diff --git a/app/assets/stylesheets/atoms/_a-bookmark-button.css b/app/assets/stylesheets/atoms/_a-bookmark-button.css new file mode 100644 index 00000000000..c931781095e --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-bookmark-button.css @@ -0,0 +1,13 @@ +.a-bookmark-button { + border: none; +} +.a-bookmark-button:hover { + border: none; +} +.a-bookmark-button.is-inactive { + color: var(--semi-muted-text); +} +.a-bookmark-button.is-inactive:hover { + color: var(--default-text); + background-color: var(--background-semi-shade); +} diff --git a/app/assets/stylesheets/atoms/_a-border.css b/app/assets/stylesheets/atoms/_a-border.css new file mode 100644 index 00000000000..a697c9cec94 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-border.css @@ -0,0 +1,20 @@ +.a-border { + height: 1px; + width: 100%; + display: block; + border-top: solid 1px var(--border); +} + +.a-border-tint { + height: 1px; + width: 100%; + display: block; + border-top: solid 1px var(--border-tint); +} + +.a-border-shade { + height: 1px; + width: 100%; + display: block; + border-top: solid 1px var(--border-shade); +} diff --git a/app/assets/stylesheets/atoms/_a-button.css b/app/assets/stylesheets/atoms/_a-button.css new file mode 100644 index 00000000000..996202276fa --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-button.css @@ -0,0 +1,549 @@ +.a-button { + text-transform: none; + font-weight: 600; + display: inline-flex; + border: solid 1px; + border-radius: 0.25rem; + font-family: var(--sans-serif); + line-height: 1.4; + white-space: nowrap; + text-decoration: none; + cursor: pointer; + user-select: none; + align-items: center; + justify-content: center; + transition: all 0.2s ease-out; +} +.a-button.is-block { + display: flex; + width: 100%; + max-width: 100%; +} +.a-button.is-block.is-select { + margin-inline: 0; +} +.a-button:focus { + outline: none; +} +.a-button:disabled { + cursor: default; + pointer-events: none; +} +.a-button:disabled * { + cursor: default; +} +.a-button.is-select { + padding-inline: 0; + position: relative; +} +.a-button.is-select::before { + content: "\f0d7"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + height: 100%; + width: 2em; + right: 0; + position: absolute; + top: 0; + bottom: 0; + font-size: 1em; + line-height: 1; + display: flex; + color: var(--muted-text); + align-items: center; + justify-content: center; +} +.a-button select { + width: 100%; + height: 100%; + border: none; + background: none; + font-size: inherit; + font-weight: inherit; + font-family: inherit; + padding: 0 2.5em 0 1em; + position: relative; + z-index: 1; + min-width: 5rem; +} +.a-button * { + cursor: pointer; +} +.a-button i { + margin-right: 0.35em; + margin-top: 0.02em; + font-size: 1.07em; +} +.a-button.is-icon i { + font-size: 1.35em; + line-height: 1; + margin-right: 0; +} +.a-button.is-checkbox { + position: relative; +} +.a-button.is-checkbox::before { + content: ""; + height: 0.9375em; + width: 0.9375em; + border-radius: 0.1875em; + display: block; + border: solid 1px var(--background-shade); + background-color: var(--base); + left: 1em; + position: absolute; + top: 50%; + transform: translate(0, -50%); +} +.a-button.is-checkbox::after { + content: "\f00c"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-size: 1em; + line-height: 1; + display: flex; + color: var(--reversal-text); + align-items: center; + justify-content: center; + height: 0.9375em; + width: 0.9375em; + left: 1em; + position: absolute; + top: 50%; + transform: translate(0, -50%); + opacity: 0; +} +input:checked + .a-button.is-checkbox::before { + border-color: var(--primary); + background-color: var(--primary); +} +input:checked + .a-button.is-checkbox::after { + opacity: 1; +} + +.a-button.is-primary { + background-color: #5752e8; + color: white; + border-color: #5752e8; +} +.a-button.is-primary:focus, .a-button.is-primary:active { + box-shadow: 0 0 0 0.1875rem rgba(87, 82, 232, 0.25); +} +.a-button.is-primary:hover, .a-button.is-primary:focus, .a-button.is-primary:active { + background-color: rgb(67.494552381, 61.829877551, 231.770122449); + border-color: #5752e8; +} +.a-button.is-primary.is-disabled, .a-button.is-primary:disabled { + color: rgba(255, 255, 255, 0.4); + border-color: rgb(81.78, 77.08, 218.08); + pointer-events: none; +} + +.a-button.is-secondary { + background-color: hsl(242, 1%, 100%); + color: hsl(242, 10%, 30%); + border-color: hsl(242, 3%, 88%); + border-color: var(--input-border); +} +.a-button.is-secondary:focus, .a-button.is-secondary:active { + box-shadow: 0 0 0 0.1875rem rgba(255, 255, 255, 0.25); +} +.a-button.is-secondary:hover, .a-button.is-secondary:focus, .a-button.is-secondary:active { + background-color: hsl(242, 3%, 96%); + border-color: hsl(242, 3%, 82%); +} +.a-button.is-secondary.is-disabled, .a-button.is-secondary:disabled { + color: rgba(69.36, 68.85, 84.15, 0.4); + border-color: rgb(239.7, 239.7, 239.7); + pointer-events: none; +} + +.a-button.is-info { + background-color: hsl(190, 73%, 48%); + color: white; + border-color: hsl(190, 73%, 48%); +} +.a-button.is-info:focus, .a-button.is-info:active { + box-shadow: 0 0 0 0.1875rem rgba(33.048, 181.968, 211.752, 0.25); +} +.a-button.is-info:hover, .a-button.is-info:focus, .a-button.is-info:active { + background-color: hsl(190, 75%, 44%); + border-color: hsl(190, 73%, 48%); +} +.a-button.is-info.is-disabled, .a-button.is-info:disabled { + color: rgba(255, 255, 255, 0.4); + border-color: rgb(31.06512, 171.04992, 199.04688); + pointer-events: none; +} + +.a-button.is-success { + background-color: hsl(150, 39%, 49%); + color: white; + border-color: hsl(150, 39%, 49%); +} +.a-button.is-success:focus, .a-button.is-success:active { + box-shadow: 0 0 0 0.1875rem rgba(76.2195, 173.6805, 124.95, 0.25); +} +.a-button.is-success:hover, .a-button.is-success:focus, .a-button.is-success:active { + background-color: hsl(150, 41%, 45%); + border-color: hsl(150, 39%, 49%); +} +.a-button.is-success.is-disabled, .a-button.is-success:disabled { + color: rgba(255, 255, 255, 0.4); + border-color: rgb(71.64633, 163.25967, 117.453); + pointer-events: none; +} + +.a-button.is-warning { + background-color: hsl(44, 96%, 54%); + color: hsl(242, 10%, 30%); + border-color: hsl(44, 96%, 54%); +} +.a-button.is-warning:focus, .a-button.is-warning:active { + box-shadow: 0 0 0 0.1875rem rgba(250.308, 190.2504, 25.092, 0.25); +} +.a-button.is-warning:hover, .a-button.is-warning:focus, .a-button.is-warning:active { + background-color: hsl(44, 98%, 50%); + border-color: hsl(44, 96%, 54%); +} +.a-button.is-warning.is-disabled, .a-button.is-warning:disabled { + color: rgba(69.36, 68.85, 84.15, 0.4); + border-color: rgb(235.28952, 178.835376, 23.58648); + pointer-events: none; +} + +.a-button.is-danger { + background-color: hsl(349, 90%, 62%); + color: white; + border-color: hsl(349, 90%, 62%); +} +.a-button.is-danger:focus, .a-button.is-danger:active { + box-shadow: 0 0 0 0.1875rem rgba(245.31, 70.89, 102.867, 0.25); +} +.a-button.is-danger:hover, .a-button.is-danger:focus, .a-button.is-danger:active { + background-color: hsl(349, 92%, 58%); + border-color: hsl(349, 90%, 62%); +} +.a-button.is-danger.is-disabled, .a-button.is-danger:disabled { + color: rgba(255, 255, 255, 0.4); + border-color: rgb(230.5914, 66.6366, 96.69498); + pointer-events: none; +} + +.a-button.is-disabled { + background-color: hsl(242, 11%, 85%); + color: hsl(242, 10%, 30%); + border-color: hsl(242, 11%, 85%); +} +.a-button.is-disabled:focus, .a-button.is-disabled:active { + box-shadow: 0 0 0 0.1875rem rgba(212.823, 212.5425, 220.9575, 0.25); +} +.a-button.is-disabled:hover, .a-button.is-disabled:focus, .a-button.is-disabled:active { + background-color: hsl(242, 13%, 81%); + border-color: hsl(242, 11%, 85%); +} +.a-button.is-disabled.is-disabled, .a-button.is-disabled:disabled { + color: rgba(69.36, 68.85, 84.15, 0.4); + border-color: rgb(200.05362, 199.78995, 207.70005); + pointer-events: none; +} + +.a-button.is-main { + background-color: hsl(242, 51%, 51%); + color: white; + border-color: hsl(242, 51%, 51%); +} +.a-button.is-main:focus, .a-button.is-main:active { + box-shadow: 0 0 0 0.1875rem rgba(70.5738, 66.3255, 193.7745, 0.25); +} +.a-button.is-main:hover, .a-button.is-main:focus, .a-button.is-main:active { + background-color: hsl(242, 53%, 47%); + border-color: hsl(242, 51%, 51%); +} +.a-button.is-main.is-disabled, .a-button.is-main:disabled { + color: rgba(255, 255, 255, 0.4); + border-color: rgb(66.339372, 62.34597, 182.14803); + pointer-events: none; +} + +.a-button.is-secondary.is-active { + background-color: #5752e8; + color: white; + border-color: #5752e8; +} +.a-button.is-secondary.is-active:focus, .a-button.is-secondary.is-active:active { + box-shadow: 0 0 0 0.1875rem rgba(87, 82, 232, 0.25); +} +.a-button.is-secondary.is-active:hover, .a-button.is-secondary.is-active:focus, .a-button.is-secondary.is-active:active { + background-color: rgb(67.494552381, 61.829877551, 231.770122449); + border-color: #5752e8; +} +.a-button.is-secondary.is-active.is-disabled, .a-button.is-secondary.is-active:disabled { + color: rgba(255, 255, 255, 0.4); + border-color: rgb(81.78, 77.08, 218.08); + pointer-events: none; +} + +.a-button.is-muted { + border: none; + color: var(--muted-text); + font-weight: 400 !important; + background-color: var(--background); +} + +.a-button.is-muted-bordered { + border-color: hsl(242, 7%, 89%); + color: hsl(242, 5%, 64%); + font-weight: 400 !important; + background-color: white; +} +.a-button.is-muted-bordered:hover { + background-color: var(--background-more-tint); + color: var(--semi-muted-text); +} + +.a-button.is-primary-border { + background-color: rgba(255, 255, 255, 0.1); + color: #5752e8; + border-color: #5752e8; +} +.a-button.is-primary-border:focus, .a-button.is-primary-border:active { + box-shadow: 0 0 0 0.1875rem rgba(87, 82, 232, 0.25); +} +.a-button.is-primary-border:hover, .a-button.is-primary-border:focus, .a-button.is-primary-border:active { + background-color: rgba(87, 82, 232, 0.25); +} +.a-button.is-primary-border.is-disabled, .a-button.is-primary-border:disabled { + color: rgba(87, 82, 232, 0.4); + border-color: rgb(81.78, 77.08, 218.08); + pointer-events: none; +} + +.a-button.is-secondary-border { + background-color: rgba(255, 255, 255, 0.1); + color: hsl(242, 1%, 100%); + border-color: hsl(242, 1%, 100%); +} +.a-button.is-secondary-border:focus, .a-button.is-secondary-border:active { + box-shadow: 0 0 0 0.1875rem rgba(255, 255, 255, 0.25); +} +.a-button.is-secondary-border:hover, .a-button.is-secondary-border:focus, .a-button.is-secondary-border:active { + background-color: rgba(255, 255, 255, 0.25); +} +.a-button.is-secondary-border.is-disabled, .a-button.is-secondary-border:disabled { + color: rgba(255, 255, 255, 0.4); + border-color: rgb(239.7, 239.7, 239.7); + pointer-events: none; +} + +.a-button.is-sm-text span { + font-size: 0.875em; +} + +.a-button.is-lg-icon i { + font-size: 1.5em; +} + +.a-button.is-text, +.a-button.is-text-reversal, +.a-button.is-muted-text { + background: none; + border: none; + font-weight: 400; + text-decoration: none; + cursor: pointer; +} +.a-button.is-text:hover, .a-button.is-text:active, +.a-button.is-text-reversal:hover, +.a-button.is-text-reversal:active, +.a-button.is-muted-text:hover, +.a-button.is-muted-text:active { + text-decoration: underline; +} +.a-button.is-text, +.a-button.is-text-reversal, +.a-button.is-muted-text { + height: auto !important; + padding: 0 !important; +} + +.a-button.is-text { + color: #5752e8; +} + +.a-button.is-text-reversal, +.a-button.is-muted-text { + color: hsl(242, 5%, 64%); +} + +.a-button.is-xxs, +.a-button.is-xxs input[type=submit] { + font-size: 0.625rem; + padding-inline: 0.625rem; + height: 1.4rem; + font-weight: 400; +} + +.a-button.is-xs, +.a-button.is-xs input[type=submit] { + font-size: 0.75rem; + padding-inline: 0.75rem; + height: 1.7rem; + font-weight: 400; +} + +.a-button.is-sm, +.a-button.is-sm input[type=submit] { + font-size: 0.75rem; + padding-inline: .625rem; + height: 2rem; +} + +.a-button.is-md, +.a-button.is-md input[type=submit] { + font-size: 0.8125rem; + padding-inline: 1.1375rem; + height: 2.25rem; +} + +.a-button.is-lg, +.a-button.is-lg input[type=submit] { + font-size: 1rem; + padding-inline: 1rem; + height: 2.75rem; +} + +.a-button.is-xl, +.a-button.is-xl input[type=submit] { + font-size: 1.25rem; + padding-inline: 1.25rem; + height: 57px; + font-weight: 800; +} + +.a-button.is-submit-input { + padding: 0; +} +.a-button.is-submit-input.is-left-icon, .a-button.is-submit-input.is-right-icon { + position: relative; +} +.a-button.is-submit-input.is-left-icon i, .a-button.is-submit-input.is-right-icon i { + font-size: 1.125em; + display: flex; + align-items: center; + justify-content: center; + position: absolute; + top: 0; + bottom: 0; +} +.a-button.is-submit-input.is-left-icon i { + left: 0; + margin-left: 0.45em; +} +.a-button.is-submit-input.is-left-icon input[type=submit] { + padding-left: 2.25em; +} +.a-button.is-submit-input.is-right-icon i { + right: 0; + margin-right: 0.45em; +} +.a-button.is-submit-input.is-right-icon input[type=submit] { + padding-right: 2.25em; +} + +.a-button.is-back { + position: relative; + padding-left: 0.75em; + padding-right: 0; +} +.a-button.is-back::before { + content: "\f104"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + left: 0.75em; + position: absolute; + top: 50%; + transform: translate(0, -50%); +} + +input[type=submit].a-button, +input[type=reset].a-button, +input[type=button].a-button { + display: inline-block; + vertical-align: middle; +} +input[type=submit].a-button.is-block, +input[type=reset].a-button.is-block, +input[type=button].a-button.is-block { + width: 100%; + display: block; +} + +.is-button-group { + display: flex; +} +.is-text-align-center .is-button-group { + justify-content: center; +} +.is-button-group > *:not(:last-child) { + margin-right: -1px; +} +.is-button-group li:first-child .a-button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.is-button-group li:last-child .a-button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.is-button-group li:not(:first-child):not(:last-child) .a-button { + border-radius: 0; +} + +.is-inline-buttons { + display: flex; + gap: 0.5rem; +} +.is-text-align-center .is-inline-buttons { + justify-content: center; +} + +[class*=a-button]:not(input) { + padding-block: 0; +} + +[class*=a-button][class*=-primary]:disabled { + background-color: var(--primary); + cursor: default; +} + +@media (max-width: 47.9375em) { + .a-button.is-xl, + .a-button.is-xl input[type=submit] { + font-size: 1.125rem; + padding-inline: 1.125rem; + height: 3rem; + } +} + +.a-button.is-md.is-select, .a-button.is-md input[type=submit].is-select { + padding-inline: 0; +} diff --git a/app/assets/stylesheets/atoms/_a-cancel-button.css b/app/assets/stylesheets/atoms/_a-cancel-button.css new file mode 100644 index 00000000000..709e74b78f9 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-cancel-button.css @@ -0,0 +1,18 @@ +.a-cancel-button { + margin-left: 0.5em; + color: var(--background); + font-size: 0.875rem; + display: flex; + text-decoration: none; + height: 1.5em; + width: 1.5em; + background-color: var(--muted-text); + align-items: center; + justify-content: center; + border-radius: 50%; + transition: all 0.2s ease-out; +} +.a-cancel-button:hover { + background-color: var(--primary); + color: var(--reversal-text); +} diff --git a/app/assets/stylesheets/atoms/_a-card.css b/app/assets/stylesheets/atoms/_a-card.css new file mode 100644 index 00000000000..5bb548f1b74 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-card.css @@ -0,0 +1,141 @@ +.a-card { + display: flex; + flex-direction: column; + border-radius: 0.25rem; + width: 100%; + margin-inline: auto; + background-color: var(--base); + border: solid 1px var(--border); +} + +.a-card.is-danger { + border-color: var(--danger); + color: var(--danger-text); + background-color: var(--danger-tint); +} + +.a-card:not(:last-child) { + margin-bottom: 0; +} + +.a-card + .a-card { + margin-top: 1rem; +} + +.a-card + .a-card-react, +.a-card-react + .a-card { + margin-top: 1rem; +} + +.a-card.is-borderd { + border: solid 4px var(--default-text); +} + +.a-card.is-modal { + width: 42.5rem; + max-width: 100%; +} + +.a-card.is-toggle label { + cursor: pointer; +} + +.a-card.is-toggle > input:not(:checked) + * + * { + display: none; +} + +.a-card.is-toggle > input:not(:checked) + * { + border-bottom: none; +} + +.a-card.is-toggle > input:checked + * + * { + display: block; +} + +.a-card.is-toggle > input:not(:checked) + * .is-hidden-then-unchecked { + display: none; +} + +.a-card.is-toggle > input:checked + * .is-hidden-then-checked { + display: none; +} + +.a-card.is-toggle .card-body { + max-height: 50vh; + overflow-y: auto; +} + +.a-card:has(.a-table) { + border: none; +} + +.a-card:has(.a-table) .card-header { + border: solid 1px var(--border); + border-bottom: none; +} + +.a-card.is-danger { + border: solid 0.25rem var(--danger); +} + +table.a-card { + display: table; +} + +.a-card__alert { + padding: 0.5rem 1.25rem; + background-color: var(--danger); + text-align: center; + font-size: 0.875rem; + line-height: 1.4; + color: var(--reversal-text); + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.a-card__alert a { + text-decoration: none; + cursor: pointer; + color: var(--reversal-text); +} + +.a-card__alert a:hover, +.a-card__alert a:active { + text-decoration: underline; +} + +.a-card__columns { + display: flex; +} + +@media (max-width: 79.9375em) { + .a-card:not(:last-child) { + margin-bottom: 1rem; + } + + .a-card + .a-card, + .a-card + .a-card-react, + .a-card-react + .a-card { + margin-top: 1rem; + } +} + +@media (min-width: 80em) { + .a-card + .a-card, + .a-card + .a-card-react, + .a-card-react + .a-card { + margin-top: 1.25rem; + } +} + +@media (max-width: 47.9375em) { + .a-card.is-modal { + margin-inline: 1rem; + } +} + +@media (max-width: 63.9375em) { + .a-card__columns { + flex-direction: column; + } +} diff --git a/app/assets/stylesheets/atoms/_a-category-link.css b/app/assets/stylesheets/atoms/_a-category-link.css new file mode 100644 index 00000000000..6fe91aa67b0 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-category-link.css @@ -0,0 +1,16 @@ +.a-category-link { + font-size: 0.8125rem; + line-height: 1.4; + color: var(--muted-text); + text-decoration: none; + cursor: pointer; +} +.a-category-link:hover, .a-category-link:active { + text-decoration: underline; +} +.a-category-link { + transition: all 0.2s ease-out; +} +.a-category-link:hover { + color: var(--default-text); +} diff --git a/app/assets/stylesheets/atoms/_a-checkbox.css b/app/assets/stylesheets/atoms/_a-checkbox.css new file mode 100644 index 00000000000..5c23f867df1 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-checkbox.css @@ -0,0 +1,76 @@ +.a-checkbox { + position: relative; +} + +.a-checkbox input[type="checkbox"] { + position: absolute; + left: 0; + top: 0; + visibility: hidden; + opacity: 0; + pointer-events: none; +} + +.a-checkbox span { + position: relative; + display: inline-block; + margin-bottom: 0; + padding-left: 1.5em; + cursor: pointer; +} + +.a-checkbox span::before { + content: ""; + display: block; + height: 0.875rem; + width: 0.875rem; + border: solid 1px var(--muted-text); + border-radius: 0.1875rem; + left: 0; + position: absolute; + top: 50%; + margin-top: -0.4375rem; + background-color: var(--base); +} + +.a-checkbox input:checked + span::before { + content: "\f00c"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-size: 0.75rem; + line-height: 0.875rem; + display: flex; + text-align: center; + align-items: center; + justify-content: center; + color: var(--reversal-text); + background-color: var(--primary); + border-color: var(--primary-text); +} + +.a-checkbox:hover span { + text-decoration: underline; +} + +.a-checkbox:hover span::before, +.a-checkbox:hover span::after { + text-decoration: none; +} + +.a-toggle-checkbox { + height: 0; + width: 0; + display: block; + left: 0; + position: fixed; + opacity: 0; + overflow: hidden; + visibility: hidden; + pointer-events: none; +} diff --git a/app/assets/stylesheets/atoms/_a-checker.css b/app/assets/stylesheets/atoms/_a-checker.css new file mode 100644 index 00000000000..951b5dbf8bc --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-checker.css @@ -0,0 +1,15 @@ +.a-checker { + display: flex; + align-items: center; + justify-content: center; + border: 1px solid var(--danger); + border-radius: 1rem; + background-color: var(--danger-tint); + padding: 0.125rem 0.5rem 0.125rem 0.25rem; +} + +.a-checker__status { + font-size: 0.625rem; + line-height: 1; + margin-left: 0.25rem; +} diff --git a/app/assets/stylesheets/atoms/_a-completion-message.css b/app/assets/stylesheets/atoms/_a-completion-message.css new file mode 100644 index 00000000000..c4268315bad --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-completion-message.css @@ -0,0 +1,45 @@ +.a-completion-message { + background-color: var(--success); + padding-block: 0.5rem; +} +.a-completion-message:not(:last-child) { + margin-bottom: 1.25rem; +} + +.a-completion-message__inner { + display: flex; + justify-content: center; + align-items: center; + gap: 1rem; +} + +.a-completion-message__title { + font-size: 1em; + line-height: 1.4; + text-align: center; + font-weight: 600; + color: var(--reversal-text); + font-size: 1rem; +} + +.a-completion-message__actions-items { + display: flex; + gap: 0.75rem; +} + +.a-completion-message__actions-item { + width: 9rem; +} + +@media (max-width: 47.9375em) { + .a-completion-message__inner { + flex-direction: column; + gap: 0.75rem; + } + .a-completion-message__title { + font-size: 0.8125rem; + } + .a-completion-message__actions-item { + width: 100%; + } +} diff --git a/app/assets/stylesheets/atoms/_a-copy-button.css b/app/assets/stylesheets/atoms/_a-copy-button.css new file mode 100644 index 00000000000..0e1ba79e186 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-copy-button.css @@ -0,0 +1,27 @@ +.a-copy-button { + position: relative; + color: var(--semi-muted-text); + background-color: var(--background-semi-shade); + border: none; +} +.a-copy-button.is-muted { + color: var(--semi-muted-text); + background-color: var(--background-semi-shade); +} +.a-copy-button.is-active { + background-color: hsl(242, 51%, 51%); + color: var(--reversal-text); +} +.a-copy-button.is-active::after { + content: "Copied!"; + display: block; + background-color: rgba(0, 0, 0, 0.4); + border-radius: 0.125rem; + padding: 0.25rem; + font-size: 0.625rem; + line-height: 1; + color: var(--reversal-text); + position: absolute; + left: 0; + top: 100%; +} diff --git a/app/assets/stylesheets/atoms/_a-count-badge.css b/app/assets/stylesheets/atoms/_a-count-badge.css new file mode 100644 index 00000000000..bf3fae49bc8 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-count-badge.css @@ -0,0 +1,58 @@ +.a-count-badge { + font-size: 1.125rem; + line-height: 1; + text-align: center; + border: solid 1px var(--border-shade); + vertical-align: middle; + border-radius: 0.25rem; + overflow: hidden; + background-color: var(--base); + transition: all 0.2s ease-out; + display: flex; + flex-direction: column; + min-width: 2.75em; +} + +a.a-count-badge { + text-decoration: none; +} + +a.a-count-badge:hover { + background-color: var(--background-more-tint); +} + +.a-count-badge__label { + font-size: 0.625rem; + color: var(--default-text); + border-bottom: solid 1px var(--border-shade); + padding-block: 0.25rem; +} + +.a-count-badge__value { + font-size: 1em; + font-weight: 700; + color: var(--danger); + transition: all 0.2s ease-out; + display: flex; + align-items: center; + justify-content: center; + padding: 0.0625em 0.125em 0.1875em; + line-height: 0.9375; +} + +.a-count-badge__value.is-zero { + color: var(--muted-text); +} + +.a-count-badge__value.is-counting { + color: var(--muted-text); + padding: 0; +} + +.a-count-badge__value.is-counting i { + font-size: 0.75em; +} + +.a-count-badge__value + .a-count-badge__value { + display: none; +} diff --git a/app/assets/stylesheets/atoms/_a-dropdown.css b/app/assets/stylesheets/atoms/_a-dropdown.css new file mode 100644 index 00000000000..1107c7ab019 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-dropdown.css @@ -0,0 +1,11 @@ +.a-dropdown { + overflow: hidden; + background-color: var(--base); + border: solid 1px var(--border-shade); + box-shadow: rgba(0, 0, 0, 0.2) 0 0 0.375rem; + border-radius: 0.25rem; +} + +.a-dropdown__item:not(:last-child) { + border-bottom: solid 1px var(--border); +} diff --git a/app/assets/stylesheets/atoms/_a-elapsed-days.css b/app/assets/stylesheets/atoms/_a-elapsed-days.css new file mode 100644 index 00000000000..beb5fb35e72 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-elapsed-days.css @@ -0,0 +1,43 @@ +.card-header.a-elapsed-days { + letter-spacing: 0.125em; + text-indent: 0.125em; + margin: -1px -1px 0; + background-color: var(--base); + border: solid 1px var(--border); +} +.card-header.a-elapsed-days > * { + width: 100%; +} +.card-header.a-elapsed-days.is-reply-warning { + background-color: var(--reply-warning-background); + border-color: var(--reply-warning-border); +} +.card-header.a-elapsed-days.is-reply-alert { + color: var(--reversal-text); + background-color: var(--reply-alert-background); + border-color: var(--reply-alert-border); +} +.card-header.a-elapsed-days.is-reply-deadline { + color: var(--reversal-text); + background-color: var(--reply-deadline-background); + border-color: var(--reply-deadline-border); +} + +@media (min-width: 48em) { + .card-header.a-elapsed-days { + font-size: 1rem; + line-height: 1.4; + text-align: center; + font-weight: 600; + padding: 0.375rem 1rem; + } +} +@media (max-width: 47.9375em) { + .card-header.a-elapsed-days { + font-size: 0.875rem; + line-height: 1.4; + text-align: center; + font-weight: 600; + padding: 0.375rem 0.75rem; + } +} diff --git a/app/assets/stylesheets/atoms/_a-empty-message.css b/app/assets/stylesheets/atoms/_a-empty-message.css new file mode 100644 index 00000000000..69bbf533707 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-empty-message.css @@ -0,0 +1,33 @@ +.a-empty-message { + font-size: 1rem; + line-height: 1.6; + text-align: center; + margin-inline: auto; + max-width: 100%; +} +.a-empty-message.is-info { + border: solid 1px var(--info); + padding: 0.75rem 1.25rem; + border-radius: 0.25rem; + background-color: var(--info-tint); + color: var(--info-text); +} +.a-empty-message p { + font-size: 0.875em; + line-height: 1.6; + text-align: left; +} + +@media (min-width: 48em) { + .a-empty-message { + width: 42.5rem; + } +} +@media (max-width: 47.9375em) { + .a-empty-message { + font-size: 0.8125rem; + } + .a-empty-message.is-info { + padding: 0.75rem 1rem; + } +} diff --git a/app/assets/stylesheets/atoms/_a-file-input.css b/app/assets/stylesheets/atoms/_a-file-input.css new file mode 100644 index 00000000000..6795e317a34 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-file-input.css @@ -0,0 +1,118 @@ +.a-pdf-input { + display: flex; + gap: .75rem; +} + +@media (max-width: 47.9375em) { + .a-pdf-input { + flex-direction: column; + } +} + +.a-pdf-input__inner { + flex: 1; + background-color: var(--base); + display: flex; + align-items: center; + justify-content: center; + position: relative; + overflow: hidden; + cursor: pointer; + border-radius: .25rem; + height: 2.25rem; +} + +.a-file-input label { + height: 10rem; + max-width: 100%; + margin-inline: auto; + border: solid 1px var(--input-border); + background-color: var(--base); + display: flex; + align-items: center; + justify-content: center; + position: relative; + overflow: hidden; + cursor: pointer; + border-radius: .25rem; + padding: .5rem .5rem 2.75rem .5rem; +} + +.a-file-input.is-movie label { + height: auto; + aspect-ratio: 16 / 10; +} + +.a-file-input.is-thumbnail label { + height: 15rem; +} + +.a-file-input img { + max-height: 100%; + transition: all .2s ease-out; +} + +.a-file-input img:hover { + opacity: .6; +} + +.a-file-input.is-square img { + width: 7rem; + height: 7rem; + object-fit: cover; +} + +.a-file-input.is-book img { + max-height: 100%; + max-width: 100%; + object-fit: contain; + border: solid 1px var(--border-tint); +} + +.a-file-input input { + overflow: hidden; + width: 0; + height: 0; + position: absolute; + left: 0; + top: 0; + opacity: 0; +} + +a.a-pdf-input__inner { + text-decoration: none; + color: var(--default-text); +} + +.a-pdf-input__file { + padding: .5rem; + flex: 1; + border-radius: .25rem 0 0 .25rem; + border: solid 1px var(--input-border); + border-right: none; + height: 2.25rem; +} + +.a-pdf-input__file-name { + font-size: .875rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; +} + +@media (min-width: 48em) { + .a-pdf-input__file-name { + max-width: 18rem; + } +} + +@media (max-width: 47.9375em) { + .a-pdf-input__file-name { + max-width: 8rem; + } +} + +.a-pdf-input__upload.a-button { + border-radius: 0 .25rem .25rem 0; +} diff --git a/app/assets/stylesheets/atoms/_a-file-insert.css b/app/assets/stylesheets/atoms/_a-file-insert.css new file mode 100644 index 00000000000..4434c900775 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-file-insert.css @@ -0,0 +1,12 @@ +.a-file-insert { + cursor: pointer; +} +.a-file-insert input { + position: absolute; + left: -44px; + top: 0; + height: 20px; + width: 44px; + background: red; + opacity: 0; +} diff --git a/app/assets/stylesheets/atoms/_a-form-frame.css b/app/assets/stylesheets/atoms/_a-form-frame.css new file mode 100644 index 00000000000..19e3cd0cc68 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-form-frame.css @@ -0,0 +1,8 @@ +.a-form-frame { + max-height: 10rem; + overflow-y: auto; + width: 100%; + padding: 0.5rem; + border: solid 1px var(--input-border); + border-radius: 0.25rem; +} diff --git a/app/assets/stylesheets/atoms/_a-form-help.css b/app/assets/stylesheets/atoms/_a-form-help.css new file mode 100644 index 00000000000..6ce6d52acfd --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-form-help.css @@ -0,0 +1,150 @@ +.a-form-help { + font-size: 0.75rem; + color: var(--semi-muted-text); +} +.a-form-help:not(:first-child) { + margin-top: 0.5rem; +} +label + .a-form-help:not(:first-child) { + margin-top: 0; +} +.a-form-help + input, .a-form-help + textarea { + margin-top: 0.5rem; +} +.a-form-help em { + font-style: normal; + font-weight: 600; +} +.a-form-help.is-danger, +.a-form-help .is-danger { + color: var(--danger); +} +.a-form-help.is-text-align-center { + text-align: center; +} +[class*=a-button] + .a-form-help { + margin-top: 1em; +} +[class*=is-select] + .a-form-help { + margin-top: 0.5em; +} +.form-item-block .a-form-help { + margin-top: 0.75em; +} +.a-form-help p { + font-size: 1em; + line-height: 1.6; +} +.a-form-help p:not(:last-child) { + margin-bottom: 0.75em; +} +.a-form-help a { + text-decoration: none; + cursor: pointer; +} +.a-form-help a:hover, .a-form-help a:active { + text-decoration: underline; +} +.a-form-help *:last-child { + margin-bottom: 0; +} +.a-form-help a { + font-size: 0.75rem; + line-height: 1.6; + text-decoration: none; + cursor: pointer; +} +.a-form-help a:hover, .a-form-help a:active { + text-decoration: underline; +} +.a-form-help a { + cursor: pointer; + transition: color 0.2s ease-in; + color: var(--link-text); +} +.a-form-help a:link { + color: var(--link-text); +} +.a-form-help a:visited { + color: hsl(233, 33%, 58%); +} +.a-form-help a:hover { + color: var(--hover-text); +} +.a-form-help a:active { + color: var(--hover-text); +} +.a-form-help ul { + list-style-type: disc; + list-style-position: outside; + margin-left: 1.5em; +} +.a-form-help ul:not(:last-child) { + margin-bottom: 0.75em; +} +.a-form-help li { + line-height: 1.6; +} +.a-form-help li:not(:first-child) { + margin-top: 0.125em; +} + +.a-form-help-link { + font-size: 0.75rem; + line-height: 1.6; + cursor: pointer; + transition: color 0.2s ease-in; + color: var(--link-text); +} +.a-form-help-link:link { + color: var(--link-text); +} +.a-form-help-link:visited { + color: hsl(233, 33%, 58%); +} +.a-form-help-link:hover { + color: var(--hover-text); +} +.a-form-help-link:active { + color: var(--hover-text); +} +.a-form-help .a-form-help-link.is-danger { + color: var(--danger); +} +.a-form-help-link.is-muted-text { + color: var(--muted-text); +} + +.a-form-help-link__label { + text-decoration: none; + cursor: pointer; +} +.a-form-help-link__label:hover, .a-form-help-link__label:active { + text-decoration: underline; +} + +.a-text-help-link { + cursor: pointer; + transition: color 0.2s ease-in; + color: var(--link-text); +} +.a-text-help-link:link { + color: var(--link-text); +} +.a-text-help-link:visited { + color: hsl(233, 33%, 58%); +} +.a-text-help-link:hover { + color: var(--hover-text); +} +.a-text-help-link:active { + color: var(--hover-text); +} + +.a-text-help-link__label { + text-decoration: none; + cursor: pointer; +} +.a-text-help-link__label:hover, .a-text-help-link__label:active { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/atoms/_a-form-label.css b/app/assets/stylesheets/atoms/_a-form-label.css new file mode 100644 index 00000000000..9591a838969 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-form-label.css @@ -0,0 +1,91 @@ +.a-form-label { + font-size: 0.875rem; + line-height: 1.5; + margin-top: 0; + margin-bottom: 0.5rem; + display: block; + font-weight: 600; +} +.a-form-label:last-child { + margin-bottom: 0; +} +.a-form-label.is-required::after { + content: "\f069"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-size: 0.625rem; + display: inline-block; + color: var(--danger); + margin-left: 0.125rem; + vertical-align: top; + transform: scale(0.7); +} +.a-form-label.is-sm { + font-size: 0.75rem; + line-height: 1.5; +} +.a-form-label.is-lg { + font-size: 1.125rem; + line-height: 1.5; + border-bottom: solid 1px var(--border); + padding-bottom: 0.5rem; +} +.a-form-label.is-inline { + margin-bottom: 0; + margin-right: 0.5rem; +} +.a-form-label.is-margin-bottom-0 { + margin-bottom: 0; +} + +.form-item__label-checkbox { + position: relative; +} +.form-item__label-checkbox .a-form-label { + display: inline-block; + margin-bottom: 0; + padding-left: 0.75em; + cursor: pointer; +} +.form-item__label-checkbox .a-form-label::before { + content: ""; + display: block; + height: 0.875rem; + width: 0.875rem; + border: solid 1px var(--muted-text); + border-radius: 0.1875rem; + left: 0; + position: absolute; + top: 50%; + margin-top: -0.4375rem; + box-shadow: rgba(0, 0, 0, 0.1) 0 1px 2px inset; + background-color: var(--base); +} +.form-item__label-checkbox input:checked + .a-form-label::after { + content: "\f00c"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-size: 0.75rem; + line-height: 0.875rem; + display: block; + text-align: center; + color: var(--primary); + height: 0.875rem; + width: 0.875rem; + left: 0; + position: absolute; + top: 50%; + margin-top: -0.4375rem; +} diff --git a/app/assets/stylesheets/atoms/_a-form-tabs.css b/app/assets/stylesheets/atoms/_a-form-tabs.css new file mode 100644 index 00000000000..bce1585b4b8 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-form-tabs.css @@ -0,0 +1,51 @@ +.a-form-tabs { + display: flex; + background-color: var(--background); + border-bottom: solid 1px var(--border); + margin-bottom: 1rem; + padding: 0.5rem 0.75rem 0; + border-radius: 0.1875rem 0.1875rem 0 0; +} + +.a-form-tabs__tab { + height: 2.5rem; + width: 6.5rem; + font-size: 0.8125rem; + line-height: 1; + display: flex; + font-weight: 600; + color: var(--muted-text); + align-items: center; + justify-content: center; + border-bottom: none; + cursor: pointer; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + border: solid 1px transparent; + position: relative; + bottom: -1px; + transition: all 0.2s ease-out; +} +.a-form-tabs__tab:hover { + color: var(--default-text); +} +.a-form-tabs__tab.is-active { + background-color: var(--base); + color: var(--main-text); + border-color: var(--border); + border-bottom-color: var(--base); +} + +.micro-report-editor .a-form-tabs { + padding: 0; +} +.micro-report-editor .a-markdown-input { + padding-inline: 0; +} +.micro-report-editor .a-markdown-input__preview { + background-color: transparent; +} +.micro-report-editor .a-form-tabs__tab.is-active { + background-color: transparent; + border-bottom-color: var(--background); +} diff --git a/app/assets/stylesheets/atoms/_a-grab.css b/app/assets/stylesheets/atoms/_a-grab.css new file mode 100644 index 00000000000..a626167189e --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-grab.css @@ -0,0 +1,9 @@ +.a-grab { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + min-height: 2.5rem; + cursor: grab; +} diff --git a/app/assets/stylesheets/atoms/_a-grass.css b/app/assets/stylesheets/atoms/_a-grass.css new file mode 100644 index 00000000000..8ccd91681ad --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-grass.css @@ -0,0 +1,5 @@ +.a-grass { + max-width: 100%; + display: block; + margin-inline: auto; +} diff --git a/app/assets/stylesheets/atoms/_a-help.css b/app/assets/stylesheets/atoms/_a-help.css new file mode 100644 index 00000000000..cf2b6f45ddf --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-help.css @@ -0,0 +1,26 @@ +.a-help { + font-size: 0.75em; + line-height: 1; + display: inline-flex; + color: var(--reversal-text); + width: 1.75em; + height: 1.75em; + text-decoration: none; + background-color: var(--muted-text); + vertical-align: middle; + align-items: center; + justify-content: center; + border-radius: 50%; + cursor: pointer; + transition: all 0.2s ease-out; +} +.a-help:hover { + background-color: var(--main); + color: var(--reversal-text); +} +.a-help:last-child { + margin-left: 0.25em; +} +.is-danger .a-help { + background-color: var(--danger); +} diff --git a/app/assets/stylesheets/atoms/_a-hidden-scrollbar.css b/app/assets/stylesheets/atoms/_a-hidden-scrollbar.css new file mode 100644 index 00000000000..af2cae432ab --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-hidden-scrollbar.css @@ -0,0 +1,8 @@ +.a-hidden-scrollbar { + -ms-overflow-style: none; + scrollbar-width: none; +} + +.a-hidden-scrollbar::-webkit-scrollbar { + display: none; +} diff --git a/app/assets/stylesheets/atoms/_a-horizontal-dashed.css b/app/assets/stylesheets/atoms/_a-horizontal-dashed.css new file mode 100644 index 00000000000..f4735cfd40c --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-horizontal-dashed.css @@ -0,0 +1,5 @@ +.a-horizontal-dashed { + width: 100%; + height: 1px; + border-top: dashed 1px var(--border-shade); +} diff --git a/app/assets/stylesheets/atoms/_a-icon-label.css b/app/assets/stylesheets/atoms/_a-icon-label.css new file mode 100644 index 00000000000..c5492e18cc8 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-icon-label.css @@ -0,0 +1,12 @@ +.a-icon-label { + display: flex; + flex-direction: column; +} +.a-icon-label.is-no-holding { + color: var(--muted-text); +} + +.a-icon-label__icon { + font-size: 1.5rem; + line-height: 0.5; +} diff --git a/app/assets/stylesheets/atoms/_a-image-check.css b/app/assets/stylesheets/atoms/_a-image-check.css new file mode 100644 index 00000000000..16ed13d5394 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-image-check.css @@ -0,0 +1,132 @@ +.a-image-check { + height: 100%; +} + +.a-image-check__inner { + background-color: var(--input-background); + height: 100%; + min-height: 2.5rem; + font-size: 0.8125rem; + line-height: 1.4; + display: flex; + text-align: center; + gap: 0.5rem; + flex-direction: column; + align-items: center; + justify-content: center; + border: solid 1px var(--input-border); + cursor: pointer; + border-radius: 0.25rem; + transition: all 0.2s ease-in; + position: relative; + overflow: hidden; +} + +.a-image-check__inner:hover { + background-color: var(--input-hover-background); + border-color: var(--input-hover-border); +} + +input:checked + .a-image-check__inner { + background-color: var(--input-selected-background); + border-color: var(--input-selected-border); + color: var(--input-selected-text); +} + +input:checked + .a-image-check__inner img { + opacity: 0.7; +} + +input:checked + .a-image-check__inner .a-image-check__start { + background-color: var(--primary); +} + +.a-image-check .a-image-check__inner::before { + display: block; + left: 0.75rem; + position: absolute; + top: 0.75rem; + z-index: 2; +} + +.a-image-check.is-radio .a-image-check__inner::before { + content: ""; + height: 0.875rem; + width: 0.875rem; + border: solid 1px var(--input-border); + border-radius: 50%; + background-color: var(--base); +} + +.a-image-check.is-radio input:checked + .a-image-check__inner::before { + border-color: var(--primary); + background-color: var(--primary); + box-shadow: inset 0 0 0 2px var(--base); +} + +.a-image-check.is-checkbox .a-image-check__inner::before { + content: ""; + height: 0.875rem; + width: 0.875rem; + border: solid 1px var(--input-border); + border-radius: 3px; + background-color: var(--base); +} + +.a-image-check.is-checkbox input:checked + .a-image-check__inner::before { + border-color: var(--primary); + background-color: var(--primary); + content: "\f00c"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + color: var(--reversal-text); +} + +.a-image-check__start { + width: 100%; +} + +.a-image-check__end { + padding-bottom: 0.5rem; + width: 100%; +} + +.a-image-check__name { + font-size: 0.875rem; + line-height: 1.4; + display: block; + text-align: center; +} + +.a-image-check__image { + height: 2rem; + width: 2rem; +} + +.a-image-check__inner.has-icon .a-image-check__image { + height: 1.75rem; + width: 1.75rem; + margin-right: 0.5rem; +} + +.a-image-check__upload-image { + display: block; + width: 100%; + background-color: var(--background-shade); + aspect-ratio: 120 / 63; + position: relative; +} + +.a-image-check__upload-image i { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%, -50%); + font-size: 3rem; +} diff --git a/app/assets/stylesheets/atoms/_a-link-card.css b/app/assets/stylesheets/atoms/_a-link-card.css new file mode 100644 index 00000000000..e9140274312 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-link-card.css @@ -0,0 +1,157 @@ +.a-long-text .a-link-card, +.a-long-text .twitter-tweet { + background-color: var(--base); + border: solid 1px var(--border); + padding: 1em; + border-radius: 4px; + width: 36rem; + max-width: 100%; + margin-inline: auto; + display: flex; + flex-direction: column; + gap: 0.5em; +} +.a-long-text .a-link-card img, +.a-long-text .twitter-tweet img { + border: none; +} +.a-long-text .a-link-card div, +.a-long-text .twitter-tweet div { + margin: 0; +} +.a-long-text .a-link-card .a-link-card__title-link, +.a-long-text .twitter-tweet .a-link-card__title-link { + display: inline-block; + max-width: 100%; +} +.a-long-text .a-link-card .a-link-card__title-text, +.a-long-text .twitter-tweet .a-link-card__title-text { + font-weight: 700; + max-width: 100%; + overflow: hidden; + display: -webkit-box; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + font-size: 1em; + line-height: 1.4; +} +.a-long-text .a-link-card .a-link-card__favicon-image, +.a-long-text .twitter-tweet .a-link-card__favicon-image { + width: 1em; + min-width: 1em; + max-width: 1em; + height: 1em; + min-height: 1em; + max-height: 1em; + display: block; +} +.a-long-text .a-link-card .a-link-card__favicon-image.is-blank, +.a-long-text .twitter-tweet .a-link-card__favicon-image.is-blank { + display: none; +} +.a-long-text .a-link-card .a-link-card__body, +.a-long-text .twitter-tweet .a-link-card__body { + font-size: 0.875em; + line-height: 1.4; + color: var(--muted-text); + display: flex; + gap: 1em; +} +.a-long-text .a-link-card .a-link-card__body p, +.a-long-text .twitter-tweet .a-link-card__body p { + line-height: 1.4; + margin: 0; +} +.a-long-text .a-link-card .a-link-card__body-start, +.a-long-text .twitter-tweet .a-link-card__body-start { + flex: 2; +} +.a-long-text .a-link-card .a-link-card__body-end, +.a-long-text .twitter-tweet .a-link-card__body-end { + flex: 1; +} +.a-long-text .a-link-card .a-link-card__body-url-link, +.a-long-text .twitter-tweet .a-link-card__body-url-link { + overflow: hidden; + display: -webkit-box; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} +.a-long-text .a-link-card .a-link-card__image, +.a-long-text .twitter-tweet .a-link-card__image { + max-width: 12rem; +} +.a-long-text .a-link-card .a-link-card__image.is-blank, +.a-long-text .twitter-tweet .a-link-card__image.is-blank { + display: none; +} +.a-long-text .a-link-card .a-link-card__image-ogp, +.a-long-text .twitter-tweet .a-link-card__image-ogp { + object-fit: cover; + width: 100%; + aspect-ratio: 1.91/1; + border-radius: 0.25rem; +} +.a-long-text .a-link-card .a-link-card__site-title, +.a-long-text .twitter-tweet .a-link-card__site-title { + margin-top: 0.5em; +} +.a-long-text .a-link-card .a-link-card__site-title-link, +.a-long-text .twitter-tweet .a-link-card__site-title-link { + display: inline-flex; + gap: 0.25em; + align-items: center; +} +.a-long-text .a-link-card .a-link-card__site-title-text, +.a-long-text .twitter-tweet .a-link-card__site-title-text { + font-size: 0.875em; + line-height: 1.4; + flex: 1; +} +.a-long-text .twitter-tweet { + position: relative; + line-height: 1.4; + font-size: 0.875em; + color: var(--muted-text); + padding: 2em 3em 1em 2em; +} +.a-long-text .twitter-tweet::before { + font-family: "Font Awesome 6 Brands"; + font-weight: 400; + font-size: 1.5em; + content: "\e61b"; + position: absolute; + right: 0.5em; + top: 0.5em; + display: flex; + justify-content: center; + align-items: center; + width: 1em; + height: 1em; + color: #0f1419; +} +.a-long-text .twitter-tweet p { + font-size: 1.125em; + line-height: 1.6; + margin-bottom: 1em; + color: var(--default-text); +} +.a-long-text .twitter-tweet > a:last-child { + color: var(--muted-text); + text-decoration: none; +} +.a-long-text .twitter-tweet > a:last-child:hover { + color: var(--hover-text); + text-decoration: underline; +} + +@media (max-width: 47.9375em) { + .a-long-text .a-link-card__image { + max-width: 7.5rem; + } + .a-long-text .twitter-tweet { + padding: 2em 3em 1em 1em; + } +} diff --git a/app/assets/stylesheets/atoms/_a-list-item-badge.css b/app/assets/stylesheets/atoms/_a-list-item-badge.css new file mode 100644 index 00000000000..07815c36e94 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-list-item-badge.css @@ -0,0 +1,77 @@ +.a-list-item-badge { + font-size: 0.625rem; + display: inline-flex; + font-weight: 400; + white-space: nowrap; + color: var(--semi-muted-text); + border-radius: 0.75rem; + align-self: flex-start; + align-items: center; + justify-content: center; + position: relative; + width: 3.75rem; + height: 0.8125rem; +} +.a-list-item-badge span { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%) scale(0.8); + letter-spacing: -0.05em; +} +.a-list-item-badge.is-wip { + background-color: var(--background-semi-shade); + color: var(--semi-muted-text); +} +.a-list-item-badge.is-active { + background-color: var(--danger); + color: var(--reversal-text); +} +.a-list-item-badge.is-unread { + background-color: var(--danger); + color: var(--reversal-text); +} +.a-list-item-badge.is-searchable { + border: solid 1px var(--muted-text); + color: var(--muted-text); +} +.a-list-item-badge.is-ended { + background-color: var(--muted-text); + color: var(--reversal-text); +} +.a-list-item-badge.is-report { + background-color: #7f6fb7; + color: var(--reversal-text); +} +.a-list-item-badge.is-practice { + background-color: #5bbcc7; + color: var(--reversal-text); +} +.a-list-item-badge.is-question { + background-color: #e2965b; + color: var(--reversal-text); +} +.a-list-item-badge.is-page { + background-color: #56925c; + color: var(--reversal-text); +} +.a-list-item-badge.is-announcement { + background-color: #f7cd5b; + color: var(--default-text); +} +.a-list-item-badge.is-event { + background-color: #fb96a3; + color: var(--reversal-text); +} +.a-list-item-badge.is-regular_event { + background-color: #dc6ed2; + color: var(--reversal-text); +} +.a-list-item-badge.is-product { + background-color: #909b3c; + color: var(--reversal-text); +} +.a-list-item-badge.is-user { + background-color: #7cbd9c; + color: var(--reversal-text); +} diff --git a/app/assets/stylesheets/atoms/_a-long-text.css b/app/assets/stylesheets/atoms/_a-long-text.css new file mode 100644 index 00000000000..2acc4e23a21 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-long-text.css @@ -0,0 +1,648 @@ +.a-long-text { + word-wrap: break-word; +} +.a-long-text h1 { + font-size: 1.875em; + line-height: 1.466; + margin-top: 0; + margin-bottom: 0.75em; + font-weight: 600; + color: var(--main-text); + padding-bottom: 0.25em; + border-bottom: 3px solid var(--border); +} +.a-long-text h2 { + font-size: 1.625em; + line-height: 1.4615; + margin-top: 0; + margin-bottom: 0.75em; + font-weight: 600; + padding-bottom: 0.25em; + border-bottom: 1px solid var(--border); +} +.a-long-text * + h2 { + margin-top: 1.4em; +} +.a-long-text h2 + h3 { + margin-top: 1.4em; +} +.a-long-text * + h2, +.a-long-text * + h3, +.a-long-text * + h4, +.a-long-text * + h5 { + margin-top: 1.5em; +} +.a-long-text h3 { + font-size: 1.375em; + line-height: 1.6; + font-weight: 600; + margin-bottom: 0.625em; +} +.a-long-text h3 + * { + margin-top: 0 !important; +} +.a-long-text h4 { + font-size: 1.25em; + line-height: 1.6; + font-weight: 600; + margin-bottom: 0.625em; +} +.a-long-text h4 + * { + margin-top: 0 !important; +} +.a-long-text h5 { + font-size: 1.125em; + line-height: 1.6; + font-weight: 600; + margin-bottom: 0.625em; +} +.a-long-text h5 + * { + margin-top: 0 !important; +} +.a-long-text h6 { + font-size: 1em; + line-height: 1.6; + font-weight: 600; + margin-bottom: 0.625em; +} +.a-long-text h6 + * { + margin-top: 0 !important; +} +.a-long-text h1, +.a-long-text h2, +.a-long-text h3, +.a-long-text h4, +.a-long-text h5, +.a-long-text h6 { + scroll-snap-align: start; + scroll-snap-stop: always; + position: relative; + outline-style: none; +} +.a-long-text h1:hover .header-anchor, +.a-long-text h2:hover .header-anchor, +.a-long-text h3:hover .header-anchor, +.a-long-text h4:hover .header-anchor, +.a-long-text h5:hover .header-anchor, +.a-long-text h6:hover .header-anchor { + opacity: 1; +} +.a-long-text .header-anchor { + display: flex; + font-size: 0.75rem; + font-weight: 400; + float: left; + position: absolute; + margin-left: -1.5rem; + text-decoration: none !important; + height: 100%; + width: 1.5rem; + align-items: center; + justify-content: center; + transition: all 0.2s ease-out; + opacity: 0; + color: var(--main); +} +.a-long-text video, +.a-long-text canvas, +.a-long-text iframe, +.a-long-text textarea, +.a-long-text figure, +.a-long-text details, +.a-long-text blockquote, +.a-long-text div, +.a-long-text p, +.a-long-text img, +.a-long-text dl, +.a-long-text ol, +.a-long-text ul, +.a-long-text table, +.a-long-text pre, +.a-long-text .speak, +.a-long-text .message { + max-width: 100%; + margin-block: 1.75em; +} +.a-long-text hr { + max-width: 100%; + margin-block: 2.5em; +} +.a-long-text ul, +.a-long-text ol { + list-style-position: outside; + margin-left: 1.75em; +} +.a-long-text li { + font-size: 1em; + line-height: 1.86; + margin-block: 0.5em; +} +.a-long-text li:first-child { + margin-top: 0; +} +.a-long-text li:last-child { + margin-bottom: 0; +} +.a-long-text li input { + margin-right: 0.25rem; +} +.a-long-text li p:last-of-type { + margin-bottom: 0; +} +.a-long-text > p + ul, +.a-long-text > p + ol { + margin-top: 1em; +} +.a-long-text ol { + list-style-type: decimal; +} +.a-long-text ol.is-aiu { + list-style: katakana; +} +.a-long-text > ul { + list-style-type: disc; +} +.a-long-text > ol { + list-style-type: decimal; +} +.a-long-text li ul, +.a-long-text li ol { + margin-block: 0.375em; +} +.a-long-text li ul:first-child, +.a-long-text li ol:first-child { + margin-top: 0.375em; +} +.a-long-text li ul:last-child, +.a-long-text li ol:last-child { + margin-bottom: 0.375em; +} +.a-long-text li > ul { + list-style-type: circle; +} +.a-long-text li > ul > li > ul { + list-style-type: square; +} +.a-long-text .speak.is-mc { + font-weight: 700; +} +.a-long-text .speak__speaker { + margin-bottom: 0.75em; +} +.a-long-text .speak__speaker > a, .a-long-text .speak__speaker > span { + display: flex; + align-items: center; + gap: 0.5rem; + text-decoration: none; + color: var(--default-text); +} +.a-long-text .speak__speaker > a:hover .speak__speaker-name { + text-decoration: underline; +} +.a-long-text .speak__speaker img { + margin-bottom: 0; +} +.a-long-text .speak__speaker-name { + flex: 1; + font-size: 1em; + line-height: 1.6; + font-weight: 700; + text-decoration: none; + white-space: nowrap; +} +.a-long-text .speak__body { + margin-top: 0.5rem; +} +.a-long-text table { + width: 100%; + background-color: var(--base); +} +.a-long-text th, +.a-long-text td { + border: solid 1px var(--border-shade); + padding: 0.5em 0.625em; + font-size: 0.875em; + line-height: 1.6; + text-align: left; +} +.a-long-text th { + background-color: var(--background); +} +.a-long-text tbody tr:nth-child(even) { + background-color: color-mix(in srgb, var(--default-text) 2%, var(--background) 98%); +} +.a-long-text figure:has(figcaption) > *:first-child { + margin-bottom: 0; +} +.a-long-text figcaption { + font-size: 0.875em; + line-height: 1.6; + margin-top: 0.75em; + text-align: center; +} +.a-long-text .message { + padding: 1em 1.25em 1em 2.75em; + border-radius: 0.25rem; + background-color: var(--warning-tint); + color: var(--warning-text); + position: relative; +} +.a-long-text .message::before { + content: "\\f06a"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + left: 0.25em; + position: absolute; + top: 0.25em; + font-size: 1.5em; + color: var(--warning); +} +.a-long-text .message.alert, .a-long-text .message.danger { + background-color: var(--danger-tint); + color: var(--danger-text); +} +.a-long-text .message.alert::before, .a-long-text .message.danger::before { + color: var(--danger); +} +.a-long-text .message.warning { + background-color: var(--warning-tint); + color: var(--warning-text); +} +.a-long-text .message.warning::before { + color: var(--warning); +} +.a-long-text .message.info { + background-color: var(--info-tint); + color: var(--info-text); +} +.a-long-text .message.info::before { + color: var(--info); +} +.a-long-text .message.primary { + background-color: var(--primary-tint); + color: var(--primary-text); +} +.a-long-text .message.primary::before { + color: var(--primary); +} +.a-long-text .message.success { + background-color: var(--success-tint); + color: var(--success-text); +} +.a-long-text .message.success::before { + color: var(--success); +} +.a-long-text ul.contains-task-list { + list-style: none; + margin-left: 0; +} +.a-long-text li.task-list-item { + position: relative; + padding-left: 1.375em; +} +.a-long-text li.task-list-item .task-list-item-checkbox { + left: 0; + position: absolute; + top: 0.5em; +} +.a-long-text p { + font-size: 1em; + line-height: 1.86; +} +.a-long-text a { + text-decoration: none; + cursor: pointer; + transition: color 0.2s ease-in; + color: var(--link-text); +} +.a-long-text a:link { + color: var(--link-text); +} +.a-long-text a:visited { + color: hsl(233, 33%, 58%); +} +.a-long-text a:hover { + color: var(--hover-text); +} +.a-long-text a:active { + color: var(--hover-text); +} +.a-long-text a:hover, .a-long-text a:active { + text-decoration: underline; +} +.a-long-text a:hover img { + border-color: color-mix(in srgb, var(--default-text) 16%, var(--base) 84%); +} +.a-long-text a pre, +.a-long-text a code, +.a-long-text a:link pre, +.a-long-text a:link code, +.a-long-text a:visited pre, +.a-long-text a:visited code, +.a-long-text a:hover pre, +.a-long-text a:hover code { + text-decoration: none !important; +} +.a-long-text dl { + border: 1px solid color-mix(in srgb, var(--default-text) 20%, var(--base) 80%); + padding: 1em; + border-radius: 0.25rem; +} +.a-long-text dt { + font-size: 1em; + line-height: 1.6; + font-weight: 600; + margin-bottom: 0.25em; +} +.a-long-text dd { + font-size: 1em; + line-height: 1.6; +} +.a-long-text dd:not(:last-child) { + margin-block: 1em; +} +.a-long-text code { + font-family: var(--monospace); + tab-size: 2; + hyphens: none; +} +.a-long-text pre { + padding: 0; +} +.a-long-text pre code { + border: none; + font-size: 0.9375em; + line-height: 1.5; + overflow: auto; + display: block; + width: 100%; + padding: 0.875em; +} +.a-long-text code[class*=language-], +.a-long-text pre[class*=language-] { + border: none; + tab-size: 2; +} +.a-long-text pre[class*=language-] { + padding: 0; +} +.a-long-text p *:not(ol):not(ul):first-child, +.a-long-text li *:not(ol):not(ul):first-child { + margin-top: 0; +} +.a-long-text p *:not(ol):not(ul):last-child, +.a-long-text li *:not(ol):not(ul):last-child { + margin-bottom: 0; +} +.a-long-text p pre:not(ol):not(ul):last-child, +.a-long-text li pre:not(ol):not(ul):last-child { + margin-block: 1em; +} +.a-long-text p blockquote, +.a-long-text li blockquote { + margin-left: calc(0.75em + 1px); +} +.a-long-text p blockquote + ul, +.a-long-text li blockquote + ul { + margin-top: -2em; +} +.a-long-text img { + height: auto; + display: block; + margin-inline: auto; + border: 1px solid color-mix(in srgb, var(--default-text) 10%, var(--base) 90%); +} +.a-long-text img.is-xs { + max-width: 10em; +} +.a-long-text img.is-sm { + max-width: 20em; +} +.a-long-text img.is-md { + max-width: 30em; +} +.a-long-text br + img { + margin-block: 1em; +} +.a-long-text div { + position: relative; + width: 100%; +} +.a-long-text div ul, +.a-long-text div ol { + list-style-position: outside; + margin-left: 1.75em; +} +.a-long-text div li { + font-size: 1em; + line-height: 1.86; + margin-block: 0.5em; +} +.a-long-text div li:first-child { + margin-top: 0; +} +.a-long-text div li:last-child { + margin-bottom: 0; +} +.a-long-text div li input { + margin-right: 0.25rem; +} +.a-long-text div li p:last-of-type { + margin-bottom: 0; +} +.a-long-text div > p + ul, +.a-long-text div > p + ol { + margin-top: 1em; +} +.a-long-text div ol { + list-style-type: decimal; +} +.a-long-text div ol.is-aiu { + list-style: katakana; +} +.a-long-text div > ul { + list-style-type: disc; +} +.a-long-text div > ol { + list-style-type: decimal; +} +.a-long-text div li ul, +.a-long-text div li ol { + margin-block: 0.375em; +} +.a-long-text div li ul:first-child, +.a-long-text div li ol:first-child { + margin-top: 0.375em; +} +.a-long-text div li ul:last-child, +.a-long-text div li ol:last-child { + margin-bottom: 0.375em; +} +.a-long-text div li > ul { + list-style-type: circle; +} +.a-long-text div li > ul > li > ul { + list-style-type: square; +} +.a-long-text blockquote { + padding-left: 1.5em; + position: relative; + border-left: solid 0.25em var(--border-tint); +} +.a-long-text blockquote ul, +.a-long-text blockquote ol { + list-style-position: outside; + margin-left: 1.75em; +} +.a-long-text blockquote li { + font-size: 1em; + line-height: 1.86; + margin-block: 0.5em; +} +.a-long-text blockquote li:first-child { + margin-top: 0; +} +.a-long-text blockquote li:last-child { + margin-bottom: 0; +} +p + .a-long-text blockquote { + margin-block: 3em 2.5em; +} +.a-long-text blockquote code { + font-style: normal; +} +.a-long-text blockquote > *:last-child { + margin-bottom: 0 !important; +} +.a-long-text details { + font-size: 0.875rem; + line-height: 1.8; + margin-bottom: 1.5em; + border: solid 1px var(--border); + padding: 0.5em 1em; + border-radius: 0.25rem; +} +.a-long-text details ul, +.a-long-text details ol { + list-style-position: outside; + margin-left: 1.75em; +} +.a-long-text details summary { + font-size: 1em; + line-height: 1.8; + cursor: pointer; + outline: none; + text-decoration: none; +} +.a-long-text details summary:hover, .a-long-text details summary:active { + text-decoration: underline; +} +.a-long-text details[open] summary { + border-bottom: solid 1px var(--border); + padding-bottom: 0.5em; + margin-bottom: 0.5em; +} +.a-long-text iframe { + display: block; + margin-inline: auto; +} +.a-long-text code { + word-break: break-all; + word-wrap: break-word; + white-space: pre-wrap; +} +.a-long-text strong, +.a-long-text b { + font-weight: 700; +} +.a-long-text textarea { + background-color: var(--input-background); + width: 100%; + padding: 0.75em; + border: solid 1px var(--input-border); + border-radius: 0.25rem; + min-height: 16rem; + transition: border-color 0.2s ease-in, background-color 0.2s ease-in, box-shadow 0.2s ease-in; +} +.a-long-text textarea:hover { + background-color: var(--input-hover-background); + border-color: var(--input-hover-border); +} +.a-long-text textarea:focus { + background-color: var(--input-focus-background); + border-color: var(--input-focus-border); + box-shadow: var(--input-focus-shadow); +} +.a-long-text textarea:disabled { + color: #999; + background-color: #dedede; + pointer-events: none; +} +.a-long-text .a-user-emoji-link { + height: 2em; + width: 2em; + display: inline-block; +} +.a-long-text .a-user-emoji-link:not(:first-child) { + margin-left: 0.5em; +} +.a-long-text .a-user-emoji-link .a-user-emoji { + margin-block: 0; +} +.a-long-text .header-anchor + .a-user-emoji-link { + margin-left: 0; +} +.a-long-text .a-user-emoji { + height: 1.8em; + width: 1.8em; + object-fit: cover; + background-color: var(--base); + border-radius: 2px; + display: inline-block !important; + border: none !important; + margin-inline: 0 !important; + vertical-align: middle; +} +.a-long-text *:first-child { + margin-top: 0 !important; +} +.a-long-text *:last-child { + margin-bottom: 0 !important; +} +.a-long-text.is-md { + font-size: 1rem; +} +.a-long-text.is-sm { + font-size: 0.8125rem; +} +.a-long-text.has-no-headding h1, +.a-long-text.has-no-headding h2, +.a-long-text.has-no-headding h3, +.a-long-text.has-no-headding h4, +.a-long-text.has-no-headding h5, +.a-long-text.has-no-headding h6 { + font-size: 1em; + line-height: 1.6; + margin-top: 0; + margin-bottom: 0.625em; + font-weight: 600; + border: none; + padding: 0; +} + +body.articles .a-long-text .a-user-emoji-link, +body.buzz .a-long-text .a-user-emoji-link { + pointer-events: none; +} + +.a-long-text + .a-long-text { + margin-top: 2em; + padding-top: 2em; + border-top: solid 0.25rem var(--border-shade); +} diff --git a/app/assets/stylesheets/atoms/_a-markdown-input.css b/app/assets/stylesheets/atoms/_a-markdown-input.css new file mode 100644 index 00000000000..6a93599e0b1 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-markdown-input.css @@ -0,0 +1,39 @@ +.a-markdown-input { + padding-inline: 1rem; +} +.card-body__description .a-markdown-input { + padding-inline: 0; +} + +.a-markdown-input__inner { + display: none; +} +.a-markdown-input__inner.is-active { + display: block; +} + +.a-markdown-input__textare { + min-height: 9rem; + overflow: hidden; +} + +.a-markdown-input__preview { + background-color: var(--base); + font-size: 0.875rem; + line-height: 1.8; + border-radius: 0.25rem; + min-height: 10rem; +} +.a-markdown-input__preview.has-max-height { + max-height: 70vh; + overflow: auto; +} + +@media (max-width: 47.9375em) { + .a-markdown-input { + padding-inline: 0.75rem; + } + .card-body__description .a-markdown-input { + padding-inline: 0; + } +} diff --git a/app/assets/stylesheets/atoms/_a-meta.css b/app/assets/stylesheets/atoms/_a-meta.css new file mode 100644 index 00000000000..6cc0054b364 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-meta.css @@ -0,0 +1,99 @@ +.a-meta { + font-size: 1em; + line-height: 1.4; + display: flex; + color: var(--muted-text); + align-items: center; + flex-wrap: wrap; +} + +.a-meta .is-important, +.a-meta.is-important { + color: var(--danger); + font-weight: 600; +} + +.a-meta .is-muted { + color: var(--muted-text); +} + +.a-meta .is-emphasized { + color: var(--default-text); + font-weight: 600; +} + +a.a-meta { + text-decoration: none; + cursor: pointer; + color: var(--muted-text); + transition: all 0.2s ease-out; +} + +a.a-meta:hover, +a.a-meta:active { + text-decoration: underline; +} + +a.a-meta:hover { + color: var(--main-text); +} + +a.a-meta.is-disabled { + pointer-events: none; +} + +.a-meta__label::after { + content: ":"; + display: inline-flex; + margin-inline: 0.125em; +} + +.a-meta__icon { + margin-right: 0.125em; +} + +.a-meta__value { + display: flex; + align-items: center; +} + +.a-user-icon + .a-meta__value { + margin-left: 0.25rem; +} + +.a-meta__value.is-danger { + font-weight: 600; + color: var(--danger); +} + +.a-meta__list { + display: inline-flex; +} + +.a-meta__list-item:not(:first-child)::before { + content: "、"; +} + +@media (min-width: 48em) { + .a-meta { + font-size: 0.75rem; + } + + .a-meta + .a-meta { + margin-left: 0.25em; + } + + .a-meta + .a-meta::before { + content: "("; + } + + .a-meta + .a-meta::after { + content: ")"; + } +} + +@media (max-width: 47.9375em) { + .a-meta { + font-size: 0.75rem; + } +} diff --git a/app/assets/stylesheets/atoms/_a-notice-block.css b/app/assets/stylesheets/atoms/_a-notice-block.css new file mode 100644 index 00000000000..6f7c60b2dda --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-notice-block.css @@ -0,0 +1,108 @@ +.a-notice-block { + width: 34rem; + max-width: 100%; + margin-inline: auto; + border: solid var(--success) 2px; + padding: 1em 1.25em; + color: var(--success-text); + background-color: #f8fff2; + border-radius: 4px; + font-size: 0.875rem; +} +.a-notice-block > *:first-child { + margin-top: 0; +} +.a-notice-block > *:last-child { + margin-bottom: 0; +} +.a-notice-block hr { + display: block; + width: 100%; + height: 0; + border: none; + border-top: dashed 1px var(--border); + margin-block: 1.5em; +} +.a-notice-block p { + font-size: 1em; + line-height: 1.7; + margin-top: 0; + margin-bottom: 0.75em; +} +.a-notice-block li { + font-size: 1em; + line-height: 1.7; + margin-top: 0; + margin-bottom: 0.125em; +} +.a-notice-block a { + text-decoration: none; + cursor: pointer; +} +.a-notice-block a:hover, .a-notice-block a:active { + text-decoration: underline; +} +.a-notice-block .message { + background: red; + padding: 1em 1.25em 1em 2.75em; + border-radius: 0.25rem; + margin-block: 1.5em 2em; + background-color: var(--warning-tint); + color: var(--warning-text); +} +.a-notice-block .message::before { + content: "\f06a"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + left: 0.25em; + position: absolute; + top: 0.25em; + font-size: 1.5em; + color: var(--warning); +} +.a-notice-block .message.alert, .a-notice-block .message.danger { + background-color: var(--danger-tint); + color: var(--danger-text); +} +.a-notice-block .message.alert::before, .a-notice-block .message.danger::before { + color: var(--danger); +} +.a-notice-block .message.warning { + background-color: var(--warning-tint); + color: var(--warning-text); +} +.a-notice-block .message.warning::before { + color: var(--warning); +} +.a-notice-block .message.info { + background-color: var(--info-tint); + color: var(--info-text); +} +.a-notice-block .message.info::before { + color: var(--info); +} +.a-notice-block .message.primary { + background-color: var(--primary-tint); + color: var(--primary-text); +} +.a-notice-block .message.primary::before { + color: var(--primary); +} +.a-notice-block .message.success { + background-color: var(--success-tint); + color: var(--success-text); +} +.a-notice-block .message.success::before { + color: var(--success); +} +.a-notice-block.is-danger { + background-color: var(--danger-tint); + border-color: var(--danger); + color: var(--danger-text); +} diff --git a/app/assets/stylesheets/atoms/_a-notification-count.css b/app/assets/stylesheets/atoms/_a-notification-count.css new file mode 100644 index 00000000000..89e9d42fae1 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-notification-count.css @@ -0,0 +1,13 @@ +.a-notification-count { + height: 0.875rem; + width: 1.25rem; + font-family: var(--monospace); + border-radius: 1rem; + background-color: var(--danger); + position: absolute; + font-size: 0.625rem; + display: flex; + color: var(--reversal-text); + align-items: center; + justify-content: center; +} diff --git a/app/assets/stylesheets/atoms/_a-on-off-checkbox.css b/app/assets/stylesheets/atoms/_a-on-off-checkbox.css new file mode 100644 index 00000000000..ec3c8826550 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-on-off-checkbox.css @@ -0,0 +1,113 @@ +.a-on-off-checkbox { + position: relative; + display: block; + cursor: pointer; + padding-block: 0.5rem; + margin-block: -0.5rem; +} + +.a-on-off-checkbox input { + opacity: 0; + left: -1rem; + position: absolute; + top: 0; + height: 0; + width: 0; + display: block; + overflow: hidden; +} + +.a-on-off-checkbox span { + display: block; + background-color: var(--background); + position: relative; + transition: all 0.2s ease-out; +} + +.a-on-off-checkbox span::before { + content: ""; + display: block; + border-radius: 50%; + background-color: var(--base); + left: 0; + position: absolute; + top: 0; + border: solid 1px var(--input-border); +} + +.a-on-off-checkbox span::after { + content: "OFF"; + font-size: 1em; + line-height: 1; + display: flex; + text-align: center; + font-weight: 600; + align-items: center; + justify-content: center; +} + +.a-on-off-checkbox input:checked + span { + background-color: var(--danger); + border-color: var(--danger); +} + +.a-on-off-checkbox input:checked + span::before { + left: auto; + position: absolute; + right: 0; +} + +.a-on-off-checkbox input:checked + span::after { + content: "ON"; + color: var(--reversal-text); +} + +.a-on-off-checkbox.is-md span { + height: calc(1.5rem + 2px); + width: 4.5rem; + border: solid 1px var(--input-border); + border-radius: 1.5rem; + font-size: 0.8125rem; +} + +.a-on-off-checkbox.is-md span::before { + height: 1.5rem; + width: 1.5rem; +} + +.a-on-off-checkbox.is-md span::after { + height: calc(100% - 2px); + width: 100%; + padding-left: 1.5rem; + padding-right: 0.75em; +} + +.a-on-off-checkbox.is-md input:checked + span::after { + padding-left: 1em; + padding-right: 1.5rem; +} + +.a-on-off-checkbox.is-sm span { + height: calc(1.125rem + 2px); + width: 3.5rem; + border: solid 1px var(--input-border); + border-radius: 1.125rem; + font-size: 0.75rem; +} + +.a-on-off-checkbox.is-sm span::before { + height: 1.125rem; + width: 1.125rem; +} + +.a-on-off-checkbox.is-sm span::after { + height: calc(100% - 2px); + width: 100%; + padding-left: 1.125rem; + padding-right: 0.75em; +} + +.a-on-off-checkbox.is-sm input:checked + span::after { + padding-left: 1em; + padding-right: 1.125rem; +} diff --git a/app/assets/stylesheets/atoms/_a-overlay.css b/app/assets/stylesheets/atoms/_a-overlay.css new file mode 100644 index 00000000000..7f1f85bd639 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-overlay.css @@ -0,0 +1,22 @@ +.a-overlay { + position: fixed; + left: 0; + top: 0; + bottom: 0; + z-index: 1; + background-color: rgba(0, 0, 0, 0.6); + width: 100%; + height: 100%; + opacity: 0; +} +.a-overlay.is-js { + opacity: 1; + z-index: 3; + background-color: rgba(0, 0, 0, 0.6); + display: flex; + align-items: center; + justify-content: center; +} +.a-overlay.is-js.hidden { + display: none; +} diff --git a/app/assets/stylesheets/atoms/_a-page-notice.css b/app/assets/stylesheets/atoms/_a-page-notice.css new file mode 100644 index 00000000000..a2d33179596 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-page-notice.css @@ -0,0 +1,128 @@ +.a-page-notice { + background-color: var(--success); + color: var(--reversal-text); +} + +.a-page-notice.is-danger { + background-color: var(--danger); +} + +.a-page-notice.is-muted { + background-color: var(--background-shade); +} + +.a-page-notice.is-muted .a-page-notice__inner { + color: var(--default-text); +} + +.page-body .a-page-notice { + margin-block: -0.5rem 1rem; +} + +.page-body .page-notices__item .a-page-notice { + margin-block: 0; +} + +.page-tabs + .a-page-notice { + margin-top: 1rem; +} + +.a-page-notice__inner { + padding-block: 0.5rem; + color: var(--reversal-text); + text-align: center; + font-size: 0.875rem; +} + +.a-page-notice__inner.has-close { + position: relative; + display: flex; + text-align: left; +} + +.a-page-notice__inner p { + font-size: 0.875rem; + line-height: 1.5; +} + +.a-page-notice__inner a { + color: var(--reversal-text); + text-decoration: none; + cursor: pointer; +} + +.a-page-notice__inner a:hover, +.a-page-notice__inner a:active { + text-decoration: underline; +} + +.a-page-notice__inner a.has-badge { + text-decoration: none; +} + +.a-page-notice__inner a.has-badge .a-badge { + margin-right: 0.75rem; + background-color: rgba(0, 0, 0, 0.4); + border: none; +} + +.a-page-notice__inner a.has-badge .a-page-notice__label { + text-decoration: none; + cursor: pointer; +} + +.a-page-notice__inner a.has-badge .a-page-notice__label:hover, +.a-page-notice__inner a.has-badge .a-page-notice__label:active { + text-decoration: underline; +} + +.a-page-notice__inner-start { + flex: 1; +} + +.a-page-notice__close { + height: 2.75rem; + width: 2.75rem; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + font-size: 1.5rem; + opacity: 0.6; + transition: all 0.2s ease-out; + transform: translateX(1rem); + margin-block: -0.75rem; +} + +.a-page-notice__close:hover { + opacity: 1; +} + +@media (max-width: 47.9375em) { + .a-page-notice__inner { + font-size: 0.75rem; + text-align: center; + } + + .a-page-notice__inner p { + font-size: 0.75rem; + } + + .a-page-notice__inner.has-close { + flex-direction: column; + text-align: left; + } + + .a-page-notice__inner a.has-badge { + display: block; + } + + .a-page-notice__inner a.has-badge .a-badge { + display: inline-flex; + } + + .a-page-notice__close { + transform: none; + margin-block: 0; + } +} diff --git a/app/assets/stylesheets/atoms/_a-panels.css b/app/assets/stylesheets/atoms/_a-panels.css new file mode 100644 index 00000000000..83017506ff0 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-panels.css @@ -0,0 +1,15 @@ +.a-panels__items { + display: grid; + gap: 1rem; +} + +.a-panels__item .a-card { + width: 100%; + height: 100%; +} + +@media (min-width: 64em) { + .a-panels__items { + grid-template: repeat(auto-fill, minmax(10rem, 1fr))/repeat(auto-fill, minmax(20rem, 1fr)); + } +} diff --git a/app/assets/stylesheets/atoms/_a-pdf-input.css b/app/assets/stylesheets/atoms/_a-pdf-input.css new file mode 100644 index 00000000000..c3a5ae44308 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-pdf-input.css @@ -0,0 +1,62 @@ +.a-pdf-input { + display: flex; + gap: 0.75rem; +} + +.a-pdf-input__inner { + flex: 1; + background-color: var(--base); + display: flex; + align-items: center; + justify-content: center; + position: relative; + overflow: hidden; + cursor: pointer; + border-radius: 0.25rem; + height: 2.25rem; +} +.a-pdf-input__inner input { + overflow: hidden; + height: 0; + width: 0; + left: 0; + position: absolute; + top: 0; + opacity: 0; +} + +a.a-pdf-input__inner { + text-decoration: none; + color: var(--default-text); +} + +.a-pdf-input__file { + padding: 0.5rem; + flex: 1; + border-radius: 0.25rem 0 0 0.25rem; + border: solid 1px var(--input-border); + border-right: none; + height: 2.25rem; +} + +.a-pdf-input__file-name { + font-size: 0.875rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + max-width: 18rem; +} + +.a-pdf-input__upload.a-button { + border-radius: 0 0.25rem 0.25rem 0; +} + +@media (max-width: 47.9375em) { + .a-pdf-input { + flex-direction: column; + } + .a-pdf-input__file-name { + max-width: 8rem; + } +} diff --git a/app/assets/stylesheets/atoms/_a-placeholder.css b/app/assets/stylesheets/atoms/_a-placeholder.css new file mode 100644 index 00000000000..23542b46725 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-placeholder.css @@ -0,0 +1,171 @@ +@keyframes loadingNow { + 0% { + opacity: 0.4; + } + 100% { + opacity: 1; + } +} +.a-placeholder { + background-color: var(--placeholder); + animation: loadingNow 0.75s ease infinite alternate; +} +.a-placeholder.a-user-icon { + background-color: var(--placeholder); + display: block; +} +.a-placeholder.page-content-header-metas { + height: 1.4em; + background-color: var(--placeholder); + width: 50%; +} +.a-placeholder.thread-header-title { + height: 1.5em; + width: 70%; +} +.a-placeholder.card-list-item-title { + height: 1.5em; + width: 50%; +} +.a-placeholder.card-list-item-meta__items { + height: 1.4em; + width: 70%; + margin-inline: 0; +} +.a-placeholder.a-button { + background-color: var(--placeholder); + border: none; +} +.a-placeholder.page-nav__item { + border: none; +} +.a-placeholder.page-nav__item .page-nav__item-link-inner { + height: 1.4em; + width: 100%; + background-color: var(--placeholder); + display: block; +} +.a-placeholder.practice-status.category-practices-item__status { + background-color: var(--placeholder); +} +.a-placeholder.categories-item__title { + height: 1.5em; + width: 50%; + background-color: var(--placeholder); +} +.a-placeholder.category-practices-item__title-link { + height: 1.5em; + width: 50%; + background-color: var(--placeholder); +} +.a-placeholder.group-company-name__label { + height: 1em; + width: 50%; + background-color: var(--placeholder); + display: block; +} +.a-placeholder.group-company-name__label-option { + height: 1em; + width: 50%; + background-color: var(--placeholder); + display: block; +} +.a-placeholder.user-group__title-label { + height: 1.2em; + width: 10%; + background-color: var(--placeholder); +} +.a-placeholder.user-group__date { + height: 1em; + width: 20%; + background-color: var(--placeholder); +} +.a-placeholder.a-long-text { + background-color: transparent; +} +.a-placeholder.a-long-text p { + background-color: var(--placeholder); + height: auto; + margin-bottom: 0; +} +.a-placeholder.a-long-text p:not(:first-child) { + margin-top: 0.5em; +} +.a-placeholder.a-long-text p:nth-child(1) { + width: 70%; +} +.a-placeholder.a-long-text p:nth-child(2) { + width: 100%; +} +.a-placeholder.a-long-text p:nth-child(3) { + width: 100%; +} +.a-placeholder.a-long-text p:nth-child(4) { + width: 80%; +} +.a-placeholder.a-long-text p:nth-child(5) { + width: 60%; +} +.a-placeholder.a-long-text p:nth-child(6) { + width: 20%; +} +.a-placeholder.a-long-text p:nth-child(7) { + width: 100%; +} +.a-placeholder.a-long-text p:nth-child(8) { + width: 80%; +} +.a-placeholder.a-long-text p:nth-child(9) { + width: 60%; +} +.a-placeholder.a-long-text p:nth-child(10) { + width: 20%; +} +.a-placeholder.a-long-text p:nth-child(11) { + width: 80%; +} +.a-placeholder.a-long-text p:nth-child(12) { + width: 60%; +} +.a-placeholder.a-long-text p:nth-child(13) { + width: 20%; +} +.a-placeholder.card-list-item-title { + height: 1.2em; + width: 30%; +} +.a-placeholder.card-list-item-meta__item { + height: 1em; + width: 35%; +} +.a-placeholder.sns-links__items.is-button-group { + height: 1.8em; + width: 60%; +} +.a-placeholder.users-item__description.a-short-text { + height: 0.8em; + width: 50%; +} +.a-placeholder.tag-links__item { + height: 1.3em; + width: 20%; +} +.a-placeholder.completed-practices-progress__bar { + height: 1em; + width: 100%; + background-color: var(--placeholder); +} +.a-placeholder.completed-practices-progress__number { + height: 1em; + width: 10%; +} +.a-placeholder.card-counts__item-inner { + height: 2.8125rem; + background-color: var(--placeholder); + border: none; +} + +.a-card.is-loading { + border: none; + background-color: rgba(255, 255, 255, 0.8); +} diff --git a/app/assets/stylesheets/atoms/_a-raw.css b/app/assets/stylesheets/atoms/_a-raw.css new file mode 100644 index 00000000000..ff3813d81ce --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-raw.css @@ -0,0 +1,11 @@ +.a-raw { + font-size: 0.875rem; + line-height: 1.4; + white-space: pre-line; + background-color: var(--input-background); + width: 100%; + padding: 0.5rem; + border: solid 1px var(--input-border); + border-radius: 0.25rem; + transition: border-color 0.2s ease-in, background-color 0.2s ease-in, box-shadow 0.2s ease-in; +} diff --git a/app/assets/stylesheets/atoms/_a-short-text.css b/app/assets/stylesheets/atoms/_a-short-text.css new file mode 100644 index 00000000000..7beee598aba --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-short-text.css @@ -0,0 +1,249 @@ +.a-short-text h3 { + font-size: 1.25em; + line-height: 1.4; + margin-top: 0.75em; +} +.a-short-text p { + font-size: 1em; + line-height: 1.6; + margin-top: 0.75em; +} +.a-short-text li { + font-size: 1em; + line-height: 1.6; +} +.a-short-text ol, +.a-short-text ul { + margin-left: 1.25em; + margin-top: 0.75em; +} +.a-short-text ol { + list-style-type: decimal; +} +.a-short-text > ul { + list-style-type: disc; +} +.a-short-text > ol { + list-style-type: decimal; +} +.a-short-text li ul, +.a-short-text li ol { + margin-block: 0.375em; +} +.a-short-text li ul:first-child, +.a-short-text li ol:first-child { + margin-top: 0.375em; +} +.a-short-text li ul:last-child, +.a-short-text li ol:last-child { + margin-bottom: 0.375em; +} +.a-short-text li > ul { + list-style-type: circle; +} +.a-short-text li > ul > li > ul { + list-style-type: square; +} +.a-short-text a { + text-decoration: none; + cursor: pointer; +} +.a-short-text a:hover, .a-short-text a:active { + text-decoration: underline; +} +.a-short-text a { + transition: color 0.2s ease-in; + color: var(--link-text); +} +.a-short-text a:link { + color: var(--link-text); +} +.a-short-text a:visited { + color: hsl(233, 33%, 58%); +} +.a-short-text a:hover { + color: var(--hover-text); +} +.a-short-text a:active { + color: var(--hover-text); +} +.a-short-text hr { + display: block; + height: 0; + width: 100%; + border: none; + border-top: dashed 1px var(--border); + margin-block: 1.25em; +} +.a-short-text strong, +.a-short-text b { + font-weight: 700; +} +.a-short-text h1 { + font-size: 1.75em; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5em; + font-weight: 600; + color: var(--main-text); + padding-bottom: 0.25em; + border-bottom: 3px solid var(--border); +} +.a-short-text h2 { + font-size: 1.5em; + line-height: 1.4; + margin-top: 0; + margin-bottom: 0.5em; + font-weight: 600; + padding-bottom: 0.25em; + border-bottom: 1px solid var(--border); +} +.a-short-text * + h2, +.a-short-text * + h3, +.a-short-text * + h4, +.a-short-text * + h5 { + margin-top: 0.75em; +} +.a-short-text h3 { + font-size: 1.25em; + line-height: 1.4; + font-weight: 600; + margin-bottom: 0.625em; +} +.a-short-text h3 + * { + margin-top: 0 !important; +} +.a-short-text h4 { + font-size: 1.125em; + line-height: 1.5; + font-weight: 600; + margin-bottom: 0.625em; +} +.a-short-text h4 + * { + margin-top: 0 !important; +} +.a-short-text h5 { + font-size: 1em; + line-height: 1.5; + font-weight: 600; + margin-bottom: 0.625em; +} +.a-short-text h5 + * { + margin-top: 0 !important; +} +.a-short-text h6 { + font-size: 0.875rem; + line-height: 1.5; + font-weight: 600; + margin-bottom: 0.625em; +} +.a-short-text h6 + * { + margin-top: 0 !important; +} +.a-short-text h1, +.a-short-text h2, +.a-short-text h3, +.a-short-text h4, +.a-short-text h5, +.a-short-text h6 { + scroll-snap-align: start; + scroll-snap-stop: always; + position: relative; + outline-style: none; +} +.a-short-text h1:hover .header-anchor, +.a-short-text h2:hover .header-anchor, +.a-short-text h3:hover .header-anchor, +.a-short-text h4:hover .header-anchor, +.a-short-text h5:hover .header-anchor, +.a-short-text h6:hover .header-anchor { + opacity: 1; +} +.a-short-text .header-anchor { + display: flex; + font-size: 0.75rem; + font-weight: 400; + float: left; + position: absolute; + margin-left: -1.5rem; + text-decoration: none !important; + height: 100%; + width: 1.5rem; + align-items: center; + justify-content: center; + transition: all 0.2s ease-out; + opacity: 0; +} +.a-short-text .header-anchor:link, .a-short-text .header-anchor:visited { + color: var(--main); +} +.a-short-text .is-danger { + color: var(--danger) !important; +} +.a-short-text .is-warning { + color: var(--warning) !important; +} +.a-short-text.is-ta-center, +.a-short-text .is-ta-center { + text-align: center; +} +.a-short-text.is-sm { + font-size: 0.8125rem; +} +.a-short-text.has-no-headding h1, +.a-short-text.has-no-headding h2, +.a-short-text.has-no-headding h3, +.a-short-text.has-no-headding h4, +.a-short-text.has-no-headding h5, +.a-short-text.has-no-headding h6 { + font-size: 1em; + line-height: 1.6; + margin-top: 0; + margin-bottom: 0.625em; + font-weight: 700; + border: none; + padding: 0; +} +.a-short-text .message { + padding: 0.875rem 1em; + border-radius: 0.25rem; + margin-block: 1em 1em; + background-color: var(--warning-tint); + color: var(--warning-text); +} +.a-short-text .message.alert, .a-short-text .message.danger { + background-color: var(--danger-tint); + color: var(--danger-text); +} +.a-short-text .message.warning { + background-color: var(--warning-tint); + color: var(--warning-text); +} +.a-short-text .message.info { + background-color: var(--info-tint); + color: var(--info-text); +} +.a-short-text .message.primary { + background-color: var(--primary-tint); + color: var(--primary-text); +} +.a-short-text .message.success { + background-color: var(--success-tint); + color: var(--success-text); +} +.a-short-text .a-help { + width: 1.25em; + height: 1.25em; +} +.a-short-text *:first-child { + margin-top: 0; +} +.a-short-text *:last-child { + margin-bottom: 0; +} + +@media (max-width: 47.9375em) { + .a-short-text.is-sm { + font-size: 0.75rem; + } +} diff --git a/app/assets/stylesheets/atoms/_a-side-nav.css b/app/assets/stylesheets/atoms/_a-side-nav.css new file mode 100644 index 00000000000..0e8ff4b3401 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-side-nav.css @@ -0,0 +1,160 @@ +.a-side-nav { + background-color: var(--base); +} + +@media (min-width: 64em) { + .a-side-nav { + position: absolute; + right: 0px; + top: -1.5rem; + bottom: -1.5rem; + width: var(--side-nav-width); + height: calc(100% + 3rem); + border-left: solid 1px var(--border); + } +} + +@media (max-width: 63.9375em) { + .a-side-nav { + margin-top: 1rem; + margin-inline: 1rem; + border-radius: 0.25rem; + border: solid 1px var(--border); + } +} + +.a-side-nav__inner { + display: flex; + flex-direction: column; + max-height: none; + position: static; +} + +@media (min-width: 64em) { + .a-side-nav__inner { + max-height: 100%; + position: sticky; + top: var(--header-height__md-up); + display: flex; + flex-direction: column; + } +} + +.a-side-nav__header { + height: 2.5rem; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.5rem 0.75rem; +} + +.a-side-nav__title { + font-size: 0.875rem; + line-height: 1.4; + font-weight: 600; + width: 100%; +} + +.a-side-nav__title-link { + display: block; + text-decoration: none; + width: 100%; + text-align: center; + color: var(--default-text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.a-side-nav__title-link:hover { + text-decoration: underline; +} + +.a-side-nav__footer { + height: 2.5rem; + display: flex; + align-items: center; + justify-content: flex-end; + padding: 0.5rem 0.75rem; +} + +.a-side-nav__footer-link { + font-size: 0.8125rem; + line-height: 1.4; + color: var(--muted-text); + text-decoration: none; + cursor: pointer; +} + +.a-side-nav__footer-link:hover, +.a-side-nav__footer-link:active { + text-decoration: underline; +} + +.a-side-nav__body { + overflow: auto; +} + +.a-side-nav__item:not(:first-child) { + border-top: solid 1px var(--border); +} + +.a-side-nav__item.is-active .a-side-nav__item-link { + color: var(--default-text); + font-weight: 700; +} + +.a-side-nav__item.is-current { + position: relative; + z-index: 1; + border: solid 1px var(--primary); + background-color: var(--primary-tint); +} + +.a-side-nav__item.is-current .a-side-nav__item-link { + background-color: transparent; + color: var(--primary-text); + pointer-events: none; +} + +.a-side-nav__item-link { + padding: 0.75rem; + font-size: 0.8125rem; + line-height: 1.4; + color: var(--semi-muted-text); + display: block; + text-decoration: none; + transition: all 0.1s ease-in; + background-color: transparent; +} + +.a-side-nav__item-link:not(.has-metas):hover { + color: var(--primary-text); + text-decoration: underline; +} + +.a-side-nav__item-link.has-metas:hover .a-side-nav__item-title { + transition: all 0.2s ease-out; + color: var(--primary-text); + text-decoration: underline; +} + +.a-side-nav__item-header .a-badge { + transform: translateY(-0.125em); + margin-right: 0.25rem; +} + +.a-side-nav__item-title { + font-size: 0.875rem; + line-height: 1.4; + display: inline; + font-weight: 600; +} + +.a-side-nav-metas { + margin-top: 0.25rem; + font-size: 0.75rem; + display: flex; + flex-wrap: wrap; + gap: 0.25rem 0.75rem; +} diff --git a/app/assets/stylesheets/atoms/_a-switch.css b/app/assets/stylesheets/atoms/_a-switch.css new file mode 100644 index 00000000000..9e608915afb --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-switch.css @@ -0,0 +1,36 @@ +.a-switch { + display: flex; + align-items: center; + cursor: pointer; + transition: all 0.2s ease-out; +} +.a-switch * { + cursor: pointer; +} + +.a-switch__label { + font-size: 0.75rem; + line-height: 1.4; + text-align: center; + color: var(--muted-text); + margin-right: 0.5em; +} +.a-switch__label .a-help { + position: relative; + top: -1px; +} +.a-switch__label:hover .a-switch__label-text { + color: var(--main-text); + text-decoration: underline; +} +.a-switch__label:hover .a-help { + background-color: var(--main); +} + +@media (max-width: 47.9375em) { + .a-switch { + align-items: center; + justify-content: center; + height: 100%; + } +} diff --git a/app/assets/stylesheets/atoms/_a-table.css b/app/assets/stylesheets/atoms/_a-table.css new file mode 100644 index 00000000000..0b0aa14bb3b --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-table.css @@ -0,0 +1,63 @@ +.a-table { + overflow-x: auto; +} + +.a-table.is-sm { + font-size: 0.8125rem; +} + +.a-table td, +.a-table th { + padding: 0.5rem; +} + +.a-table th { + background-color: var(--background-tint); + border: solid 1px var(--border-shade); +} + +.a-table td { + border: solid 1px var(--border); +} + +.a-table table { + border-radius: 0.25rem; + width: 100%; +} + +.a-table thead { + background-color: var(--background-semi-shade); + border: solid 1px var(--border-shade); + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.a-table tr { + border-left: solid 1px var(--border); + border-right: solid 1px var(--border); +} + +.a-table th { + font-size: 0.75rem; + line-height: 1.4; + text-align: center; + font-weight: 600; + border: solid 1px var(--border-shade); + white-space: nowrap; + height: 2rem; + padding-inline: 0.5rem; +} + +.a-table td { + transition: all 0.2s ease-out; + background-color: var(--base); + padding: 0.375rem 0.75rem; + border: solid 1px var(--border); + font-size: 0.8125rem; + line-height: 1.45; +} + +.card-body > .a-table table { + margin: -1px; + width: calc(100% + 2px); +} diff --git a/app/assets/stylesheets/atoms/_a-tags.css b/app/assets/stylesheets/atoms/_a-tags.css new file mode 100644 index 00000000000..59dc03bcc7b --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-tags.css @@ -0,0 +1,5 @@ +.a-tags__items { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} diff --git a/app/assets/stylesheets/atoms/_a-text-input.css b/app/assets/stylesheets/atoms/_a-text-input.css new file mode 100644 index 00000000000..00b81e08cd4 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-text-input.css @@ -0,0 +1,127 @@ +.a-text-input, +.tagify, +.multiselect__single, +.multiselect__input { + font-size: 1em; + line-height: 1.4; + display: block; + background-color: var(--input-background); + width: 100%; + padding: 0.5rem; + border: solid 1px var(--input-border); + border-radius: 0.25rem; + transition: border-color 0.2s ease-in, background-color 0.2s ease-in, box-shadow 0.2s ease-in; +} + +.field_with_errors .a-text-input, +.field_with_errors .tagify, +.field_with_errors .multiselect__single, +.field_with_errors .multiselect__input { + border-color: #e1a7b6; + background-color: #fefafb; +} + +.a-text-input:hover, +.tagify:hover, +.multiselect__single:hover, +.multiselect__input:hover { + background-color: var(--input-hover-background); + border-color: var(--input-hover-border); +} + +.a-text-input:focus, +.tagify:focus, +.multiselect__single:focus, +.multiselect__input:focus { + background-color: var(--input-focus-background); + border-color: var(--input-focus-border); + box-shadow: var(--input-focus-shadow); +} + +.a-text-input:disabled, +.tagify:disabled, +.multiselect__single:disabled, +.multiselect__input:disabled, +.a-text-input[readonly], +.tagify[readonly], +.multiselect__single[readonly], +.multiselect__input[readonly] { + color: var(--muted-text); + background-color: var(--background); + pointer-events: none; +} + +.a-text-input.is-stripe, +.tagify.is-stripe, +.multiselect__single.is-stripe, +.multiselect__input.is-stripe { + box-shadow: none; + padding-top: 0.625rem; +} + +.a-text-input.is-inputed, +.tagify.is-inputed, +.multiselect__single.is-inputed, +.multiselect__input.is-inputed { + border: none; + padding: 0; + background-color: transparent; +} + +input[type="date"].a-text-input, +input[type="month"].a-text-input, +input[type="week"].a-text-input { + position: relative; +} + +input[type="date"].a-text-input::-webkit-inner-spin-button, +input[type="month"].a-text-input::-webkit-inner-spin-button, +input[type="week"].a-text-input::-webkit-inner-spin-button { + -webkit-appearance: none; +} + +input[type="date"].a-text-input::-webkit-clear-button, +input[type="month"].a-text-input::-webkit-clear-button, +input[type="week"].a-text-input::-webkit-clear-button { + position: relative; + z-index: 1; +} + +input[type="date"].a-text-input::-webkit-calendar-picker-indicator, +input[type="month"].a-text-input::-webkit-calendar-picker-indicator, +input[type="week"].a-text-input::-webkit-calendar-picker-indicator { + color: transparent; + background-color: transparent; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; + height: 100%; + cursor: pointer; + opacity: 0; +} + +textarea.a-text-input { + line-height: 1.5; + min-height: 10rem; + overflow: hidden; +} + +textarea.a-text-input.is-xs { + min-height: 6rem; +} + +textarea.a-text-input.is-sm { + min-height: 10rem; +} + +textarea.a-text-input.is-md { + min-height: 16rem; +} + +textarea.a-text-input.has-max-height { + max-height: 70vh; + overflow: auto; +} diff --git a/app/assets/stylesheets/atoms/_a-text-link.css b/app/assets/stylesheets/atoms/_a-text-link.css new file mode 100644 index 00000000000..9b8491dca4d --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-text-link.css @@ -0,0 +1,99 @@ +.a-text-link { + text-decoration: none; + cursor: pointer; + transition: color 0.2s ease-in; + color: var(--link-text); +} + +.a-text-link:link { + color: var(--link-text); +} + +.a-text-link:visited { + color: hsl(233, 33%, 58%); +} + +.a-text-link:hover, +.a-text-link:active { + text-decoration: underline; + color: var(--hover-text); +} + +.a-text-link.has-badge { + text-decoration: none; +} + +.a-text-link.has-badge .a-text-link__text { + text-decoration: none; + cursor: pointer; + transition: color 0.2s ease-in; + color: var(--link-text); +} + +.a-text-link.has-badge .a-text-link__text:link { + color: var(--link-text); +} + +.a-text-link.has-badge .a-text-link__text:visited { + color: hsl(233, 33%, 58%); +} + +.a-text-link.has-badge .a-text-link__text:hover, +.a-text-link.has-badge .a-text-link__text:active { + text-decoration: underline; + color: var(--hover-text); +} + +.a-hover-link, +.a-hover-link-reversal, +.a-reversal-text-link, +.a-muted-text-link { + text-decoration: none; + cursor: pointer; +} + +.a-hover-link:hover, +.a-hover-link:active, +.a-hover-link-reversal:hover, +.a-hover-link-reversal:active { + text-decoration: underline; +} + +.a-reversal-text-link { + transition: color 0.2s ease-in; + color: var(--reversal-text); +} + +.a-reversal-text-link:link { + color: var(--reversal-text); +} + +.a-reversal-text-link:visited { + color: hsl(242, 62%, 74%); +} + +.a-reversal-text-link:hover { + text-decoration: underline; + color: hsl(210, 100%, 80%); +} + +.a-reversal-text-link:active { + text-decoration: underline; + color: hsl(316, 90%, 66%); +} + +.a-muted-text-link { + transition: color 0.2s ease-in; + color: var(--muted-text); +} + +.a-muted-text-link:link, +.a-muted-text-link:visited { + color: var(--muted-text); +} + +.a-muted-text-link:hover, +.a-muted-text-link:active { + text-decoration: underline; + color: var(--link-text); +} diff --git a/app/assets/stylesheets/atoms/_a-text.css b/app/assets/stylesheets/atoms/_a-text.css new file mode 100644 index 00000000000..83a7bff98a6 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-text.css @@ -0,0 +1,3 @@ +.a-text.is-danger { + color: var(--danger-text); +} diff --git a/app/assets/stylesheets/atoms/_a-textarea-bottom-note.css b/app/assets/stylesheets/atoms/_a-textarea-bottom-note.css new file mode 100644 index 00000000000..4a00314e8fd --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-textarea-bottom-note.css @@ -0,0 +1,30 @@ +@media (max-width: 63.9375em) { + .a-textarea-bottom-note__banner { + display: none; + } +} + +@media (min-width: 64em) { + .a-textarea-bottom-note { + position: relative; + } + + .a-textarea-bottom-note .a-text-input { + padding-bottom: 3rem; + } + + .a-textarea-bottom-note__banner { + background-color: var(--background-semi-shade); + position: absolute; + left: 1px; + right: 1px; + bottom: 1px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + padding: 0.5rem; + font-size: 0.75rem; + line-height: 1.4; + text-align: center; + border-top: solid 1px var(--border-shade); + } +} diff --git a/app/assets/stylesheets/atoms/_a-title-label.css b/app/assets/stylesheets/atoms/_a-title-label.css new file mode 100644 index 00000000000..8995cdd165c --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-title-label.css @@ -0,0 +1,44 @@ +.a-title-label { + font-size: 0.5em; + line-height: 1; + display: inline-flex; + font-weight: 500; + white-space: nowrap; + vertical-align: top; + background-color: var(--background-semi-shade); + padding-inline: 1em; + border-radius: 0.75rem; + align-items: center; + position: relative; + top: 0.75em; + margin-right: 0.5em; +} +.a-title-label.is-solved { + color: var(--reversal-text); +} +.a-title-label.is-wip { + color: var(--semi-muted-text); + background-color: var(--background-semi-shade); +} +.a-title-label.is-success { + color: var(--reversal-text); + background-color: var(--success); +} +.a-title-label.is-danger { + color: var(--reversal-text); + background-color: var(--danger); +} + +@media (min-width: 48em) { + .a-title-label { + height: 1.5em; + top: 0.75em; + } +} +@media (max-width: 47.9375em) { + .a-title-label { + font-size: 0.625rem; + height: 1.75em; + top: 0.375em; + } +} diff --git a/app/assets/stylesheets/atoms/_a-user-icon.css b/app/assets/stylesheets/atoms/_a-user-icon.css new file mode 100644 index 00000000000..0023d196d61 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-user-icon.css @@ -0,0 +1,23 @@ +.a-user-icon { + display: block; + object-fit: cover; + border-radius: 50%; + background-color: var(--base); + width: 100%; + height: 100%; +} +.a-user-icon.is-sm { + width: 2rem; + height: 2rem; +} +.a-user-icon.is-xs { + width: 1.5rem; + height: 1.5rem; +} + +@media (max-width: 47.9375em) { + .a-user-icon.is-xs { + width: 1.125rem; + height: 1.125rem; + } +} diff --git a/app/assets/stylesheets/atoms/_a-user-icons.css b/app/assets/stylesheets/atoms/_a-user-icons.css new file mode 100644 index 00000000000..23308e5c362 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-user-icons.css @@ -0,0 +1,17 @@ +.a-user-icons { + padding-top: 0.5rem; + margin-top: 0.75rem; + border-top: dashed 1px var(--border); + margin-bottom: -0.25rem; +} + +.a-user-icons__items { + display: flex; + flex-wrap: wrap; + gap: 0.25rem; +} + +.a-user-icons__item-icon { + width: 2rem; + height: 2rem; +} diff --git a/app/assets/stylesheets/atoms/_a-user-name.css b/app/assets/stylesheets/atoms/_a-user-name.css new file mode 100644 index 00000000000..17e4ff4ba34 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-user-name.css @@ -0,0 +1,21 @@ +.a-user-name { + color: var(--muted-text); + font-size: 0.75rem; + line-height: 1.5; + white-space: nowrap; + font-weight: 400; +} + +a.a-user-name { + text-decoration: none; + cursor: pointer; +} +a.a-user-name:hover, a.a-user-name:active { + text-decoration: underline; +} +a.a-user-name { + display: inline-block; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/app/assets/stylesheets/atoms/_a-user-role-badge.css b/app/assets/stylesheets/atoms/_a-user-role-badge.css new file mode 100644 index 00000000000..68349298c60 --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-user-role-badge.css @@ -0,0 +1,45 @@ +.a-user-role-badge { + border: solid 1px var(--main); + padding-inline: 0.75em; + height: 1.75em; + font-size: 0.625rem; + line-height: 1; + display: flex; + text-align: center; + white-space: nowrap; + color: var(--main); + align-items: center; + margin-right: 0.5rem; + border-radius: 1rem; +} + +.a-user-role-badge.is-header { + margin-left: 0.5rem; + margin-right: 0; +} + +.a-user-role-badge__label { + display: inline-block; +} + +.a-user-role-badge__label + .a-user-role-badge__label::before { + content: "/"; + display: inline-block; + margin-inline: 0.25em; +} + +@media (min-width: 48em) { + .a-user-role-badge { + transform: scale(0.9375, 0.9375); + } +} + +@media (max-width: 47.9375em) { + .a-user-role-badge { + transform: scale(0.875, 0.875); + } + + .a-user-role-badge.is-header { + margin-left: 0.125rem; + } +} diff --git a/app/assets/stylesheets/atoms/_a-user-role.css b/app/assets/stylesheets/atoms/_a-user-role.css new file mode 100644 index 00000000000..9fd1d4eef8b --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-user-role.css @@ -0,0 +1,5 @@ +.a-user-role { + display: inline-block; + border-radius: 50%; + background-color: var(--base); +} diff --git a/app/assets/stylesheets/atoms/_a-watch-button.css b/app/assets/stylesheets/atoms/_a-watch-button.css new file mode 100644 index 00000000000..b92ae13533e --- /dev/null +++ b/app/assets/stylesheets/atoms/_a-watch-button.css @@ -0,0 +1,13 @@ +.a-watch-button { + border: none; +} +.a-watch-button:hover { + border: none; +} +.a-watch-button.is-inactive { + color: var(--semi-muted-text); +} +.a-watch-button.is-inactive:hover { + color: var(--default-text); + background-color: var(--background-semi-shade); +} diff --git a/app/assets/stylesheets/atoms/_o-empty-message.css b/app/assets/stylesheets/atoms/_o-empty-message.css new file mode 100644 index 00000000000..c7fd5145542 --- /dev/null +++ b/app/assets/stylesheets/atoms/_o-empty-message.css @@ -0,0 +1,21 @@ +.o-empty-message { + max-width: 50rem; + margin-inline: auto; + text-align: center; + color: var(--semi-muted-text); +} +.o-empty-message:not(:first-child) { + margin-top: 1.5rem; +} + +.o-empty-message__icon { + font-size: 5rem; + line-height: 1; +} + +.o-empty-message__text { + font-size: 1rem; + line-height: 1.4; + margin-top: 1em; + text-align: center; +} diff --git a/app/assets/stylesheets/common-imports.css b/app/assets/stylesheets/common-imports.css new file mode 100644 index 00000000000..cb7bca44dc8 --- /dev/null +++ b/app/assets/stylesheets/common-imports.css @@ -0,0 +1,142 @@ +@import "./config/variables/_css-variables.css"; +@import "./config/variables/_fonts.css"; +@import "./config/variables/_welcome-colors.css"; +@import "./config/variables/_choices.css"; +@import "./vendor/choices.min.css"; +@import "./modules/_any_login.css"; +@import "./modules/_choices.css"; +@import "./modules/_github.css"; +@import "./modules/_multiselect.css"; +@import "./modules/_select2.css"; +@import "./modules/_stripe.css"; +@import "./modules/_toasts.css"; +@import "./vendor/tagify.css"; +@import "./modules/_tagify.css"; +@import "./modules/_embla.css"; +@import "./shared/helpers/_state.css"; +@import "./shared/utilities/_visibility.css"; +@import "./atoms/_a-badge.css"; +@import "./atoms/_a-block-check.css"; +@import "./atoms/_a-image-check.css"; +@import "./atoms/_a-bookmark-button.css"; +@import "./atoms/_a-border.css"; +@import "./atoms/_a-button.css"; +@import "./atoms/_a-cancel-button.css"; +@import "./atoms/_a-copy-button.css"; +@import "./atoms/_a-card.css"; +@import "./atoms/_a-category-link.css"; +@import "./atoms/_a-checkbox.css"; +@import "./atoms/_a-completion-message.css"; +@import "./atoms/_a-count-badge.css"; +@import "./atoms/_a-dropdown.css"; +@import "./atoms/_a-elapsed-days.css"; +@import "./atoms/_a-empty-message.css"; +@import "./atoms/_a-pdf-input.css"; +@import "./atoms/_a-file-input.css"; +@import "./atoms/_a-form-frame.css"; +@import "./atoms/_a-form-help.css"; +@import "./atoms/_a-form-label.css"; +@import "./atoms/_a-form-tabs.css"; +@import "./atoms/_a-grab.css"; +@import "./atoms/_a-grass.css"; +@import "./atoms/_a-help.css"; +@import "./atoms/_a-horizontal-dashed.css"; +@import "./atoms/_a-list-item-badge.css"; +@import "./atoms/_a-long-text.css"; +@import "./atoms/_a-markdown-input.css"; +@import "./atoms/_a-meta.css"; +@import "./atoms/_a-notification-count.css"; +@import "./atoms/_a-on-off-checkbox.css"; +@import "./atoms/_a-overlay.css"; +@import "./atoms/_a-page-notice.css"; +@import "./atoms/_a-panels.css"; +@import "./atoms/_a-placeholder.css"; +@import "./atoms/_a-short-text.css"; +@import "./atoms/_a-switch.css"; +@import "./atoms/_a-text-input.css"; +@import "./atoms/_a-raw.css"; +@import "./atoms/_a-text-link.css"; +@import "./atoms/_a-text.css"; +@import "./atoms/_a-title-label.css"; +@import "./atoms/_a-user-icon.css"; +@import "./atoms/_a-user-icons.css"; +@import "./atoms/_a-user-name.css"; +@import "./atoms/_a-user-role.css"; +@import "./atoms/_a-user-role-badge.css"; +@import "./atoms/_a-watch-button.css"; +@import "./atoms/_a-checker.css"; +@import "./atoms/_a-file-insert.css"; +@import "./atoms/_a-icon-label.css"; +@import "./atoms/_a-side-nav.css"; +@import "./atoms/_a-notice-block.css"; +@import "./atoms/_a-table.css"; +@import "./atoms/_a-tags.css"; +@import "./atoms/_a-link-card.css"; +@import "./atoms/_o-empty-message.css"; +@import "./atoms/_a-hidden-scrollbar.css"; +@import "./shared/layouts/_wrapper.css"; +@import "./shared/layouts/_container.css"; +@import "./shared/layouts/_columns.css"; +@import "./shared/layouts/_l-container.css"; +@import "./shared/layouts/_l-inner-container.css"; +@import "./shared/test/_test.css"; +@import "./shared/blocks/_code-toolbar.css"; +@import "./shared/blocks/_errors.css"; +@import "./shared/blocks/_flash.css"; +@import "./shared/blocks/_footprints.css"; +@import "./shared/blocks/_global-nav.css"; +@import "./shared/blocks/_modal.css"; +@import "./shared/blocks/_page-nav.css"; +@import "./shared/blocks/_page-search.css"; +@import "./shared/blocks/_page-tags-nav.css"; +@import "./shared/blocks/_pagination.css"; +@import "./shared/blocks/_pill-nav.css"; +@import "./shared/blocks/_prism-ghcolors.css"; +@import "./shared/blocks/_tab-nav.css"; +@import "./shared/blocks/_hour-filter.css"; +@import "./shared/blocks/_not-logged-in-footer.css"; +@import "./shared/blocks/card/_card-body.css"; +@import "./shared/blocks/card/_card-message.css"; +@import "./shared/blocks/card/_card-books.css"; +@import "./shared/blocks/card/_card-eyecatch.css"; +@import "./shared/blocks/card/_card-footer.css"; +@import "./shared/blocks/card/_card-header.css"; +@import "./shared/blocks/card/_card-main-actions.css"; +@import "./shared/blocks/card/_congrats-card-body.css"; +@import "./shared/blocks/card/_practice-books.css"; +@import "./shared/blocks/card/_thumbnail-card.css"; +@import "./shared/blocks/card/_tags-highlight.css"; +@import "./shared/blocks/card-list/_card-list-item-actions.css"; +@import "./shared/blocks/card-list/_card-list-item-meta.css"; +@import "./shared/blocks/card-list/_card-list-item-tags-edit.css"; +@import "./shared/blocks/card-list/_card-list-item-title.css"; +@import "./shared/blocks/card-list/_card-list-item.css"; +@import "./shared/blocks/card-list/_card-list-tools.css"; +@import "./shared/blocks/card-list/_card-list.css"; +@import "./shared/blocks/form/_block-checks.css"; +@import "./shared/blocks/form/_books-form-item.css"; +@import "./shared/blocks/form/_books-form.css"; +@import "./shared/blocks/form/_checkboxes.css"; +@import "./shared/blocks/form/_form-actions.css"; +@import "./shared/blocks/form/_form-added-choice.css"; +@import "./shared/blocks/form/_form-item-actions.css"; +@import "./shared/blocks/form/_form-item-block.css"; +@import "./shared/blocks/form/_form-item-group.css"; +@import "./shared/blocks/form/_form-item.css"; +@import "./shared/blocks/form/_form-link-block.css"; +@import "./shared/blocks/form/_form-notice.css"; +@import "./shared/blocks/form/_form-selects.css"; +@import "./shared/blocks/form/_form-tabs-item.css"; +@import "./shared/blocks/form/_form-tabs.css"; +@import "./shared/blocks/form/_form-times.css"; +@import "./shared/blocks/form/_form.css"; +@import "./shared/blocks/form/_hidden-form-item.css"; +@import "./shared/blocks/form/_important-message.css"; +@import "./shared/blocks/form/_linear-scale.css"; +@import "./shared/blocks/form/_many-check-boxes.css"; +@import "./shared/blocks/form/_markdown-form.css"; +@import "./shared/blocks/form/_radios.css"; +@import "./shared/blocks/form/_vue-tags-input.css"; +@import "./shared/blocks/form/_form-textarea.css"; +@import "./shared/blocks/form/_form-table.css"; +@import "./shared/blocks/_o-empty-message.css"; diff --git a/app/assets/stylesheets/config/variables/_choices.css b/app/assets/stylesheets/config/variables/_choices.css new file mode 100644 index 00000000000..e796fa4006f --- /dev/null +++ b/app/assets/stylesheets/config/variables/_choices.css @@ -0,0 +1,22 @@ +:root { + --choices-selector: "choices"; + --choices-font-size-lg: 1rem; + --choices-font-size-md: 0.875rem; + --choices-font-size-sm: 0.75rem; + --choices-guttering: 1.5rem; + --choices-border-radius: 4px; + --choices-border-radius-item: 4px; + --choices-bg-color: #f9f9f9; + --choices-bg-color-disabled: var(--disabled); + --choices-bg-color-dropdown: var(--base); + --choices-text-color: var(--main-text); + --choices-keyline-color: #ddd; + --choices-primary-color: var(--main-tint); + --choices-disabled-color: var(--disabled); + --choices-highlight-color: var(--main-tint); + --choices-button-dimension: 8px; + --choices-button-offset: 8px; + --choices-icon-cross: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2021%2021%22%20style%3D%22enable-background%3Anew%200%200%2021%2021%22%20xml%3Aspace%3D%22preserve%22%3E%3Cstyle%3E.st0%7Bfill%3A%233f3290%7D%3C%2Fstyle%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M2.6%200%2021%2018.4%2018.4%2021%200%202.6%202.6%200z%22%2F%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M0%2018.4%2018.4%200l2.5%202.5L2.5%2020.9%200%2018.4z%22%2F%3E%3C%2Fsvg%3E"); + --choices-icon-cross-inverse: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2021%2021%22%20style%3D%22enable-background%3Anew%200%200%2021%2021%22%20xml%3Aspace%3D%22preserve%22%3E%3Cstyle%3E.st0%7Bfill%3A%23ffffff%7D%3C%2Fstyle%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M2.6%200%2021%2018.4%2018.4%2021%200%202.6%202.6%200z%22%2F%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M0%2018.4%2018.4%200l2.5%202.5L2.5%2020.9%200%2018.4z%22%2F%3E%3C%2Fsvg%3E"); + --choices-z-index: 1; +} diff --git a/app/assets/stylesheets/config/variables/_css-variables.css b/app/assets/stylesheets/config/variables/_css-variables.css new file mode 100644 index 00000000000..b651655649c --- /dev/null +++ b/app/assets/stylesheets/config/variables/_css-variables.css @@ -0,0 +1,90 @@ +:root { + --main: hsl(242, 51%, 51%); + --accent: hsl(44, 96%, 54%); + --base: white; + --completion: hsl(197, 83%, 49%); + --completion-dark: rgba(0, 0, 0, 0.2); + --background-shade: hsl(242, 11%, 85%); + --background-semi-shade: hsl(242, 24%, 92%); + --background: hsl(242, 34%, 98%); + --background-tint: hsl(242, 20%, 93%); + --background-more-tint: hsl(242, 8%, 98.5%); + --positive-background: #ffecdf; + --negative-background: #ecf3f7; + --neutral-background: #fff9e8; + --gold: #e3a822; + --silver: #898888; + --bronze: #dc7e61; + --default-text: hsl(242, 10%, 30%); + --reversal-text: white; + --muted-text: hsl(242, 5%, 64%); + --semi-muted-text: hsl(242, 7%, 57%); + --link-text: hsl(242, 62%, 33%); + --hover-text: hsl(215, 78%, 50%); + --transparent-text: rgba(0, 0, 0, 0); + --placeholder: rgba(0, 0, 0, 0.075); + --placeholder-text: hsl(242, 0%, 73%); + --border: hsl(242, 7%, 89%); + --border-tint: hsl(242, 14%, 95%); + --border-shade: hsl(242, 7%, 84%); + --border-more-shade: hsl(242, 5%, 64%); + --welcome-blue: hsl(210, 100%, 55%); + --welcome-light-blue: hsl(199, 100%, 92%); + --welcome-yellow: hsl(57, 100%, 49%); + --welcome-orange: hsl(40, 98%, 59%); + --welcome-pink: hsl(344, 80%, 66%); + --primary: #5752e8; + --secondary: hsl(242, 1%, 100%); + --success: hsl(150, 39%, 49%); + --success-shade: hsl(150, 39%, 37%); + --info: hsl(190, 73%, 48%); + --warning: hsl(44, 96%, 54%); + --warning-shade: hsl(44, 96%, 41%); + --danger: hsl(349, 90%, 62%); + --danger-shade: hsl(349, 90%, 47%); + --disabled: hsl(242, 11%, 85%); + --stamp-color: hsl(0, 80%, 62%); + --danger-text: rgb(147.186, 42.534, 61.7202); + --danger-tint: rgb(254.031, 236.589, 239.7867); + --success-text: rgb(30.4878, 69.4722, 49.98); + --success-tint: rgb(237.12195, 246.86805, 241.995); + --info-text: rgb(13.2192, 72.7872, 84.7008); + --info-tint: rgb(232.8048, 247.6968, 250.6752); + --primary-text: rgb(52.2, 49.2, 139.2); + --primary-tint: rgb(238.2, 237.7, 252.7); + --primary-semi-tint: rgb(187.8, 185.8, 245.8); + --primary-background: #ebebf7; + --warning-text: rgb(100.1232, 76.10016, 10.0368); + --warning-tint: rgb(254.5308, 248.52504, 232.0092); + --main-text: rgb(63.51642, 59.69295, 174.39705); + --main-tint: rgb(236.55738, 236.13255, 248.87745); + --main-shade: hsl(254, 60%, 34%); + --main-semi-shade: hsl(254, 52%, 40%); + --lp-bg-3: #DEDEF2; + --lp-bg-2: var(--primary-background); + --lp-bg-1: var(--background); + --reply-warning-background: hsl(44, 96%, 54%); + --reply-warning-border: #d09a0e; + --reply-alert-background: #ff7500; + --reply-alert-border: #d06305; + --reply-deadline-background: hsl(349, 90%, 62%); + --reply-deadline-border: #b50f38; + --input-border: hsl(242, 7%, 84%); + --input-background: hsl(242, 8%, 98.5%); + --input-hover-border: hsl(242, 7%, 84%); + --input-hover-background: white; + --input-selected-background: rgb(238.2, 237.7, 252.7); + --input-selected-border: #5752e8; + --input-selected-text: rgb(52.2, 49.2, 139.2); + --input-focus-background: white; + --input-focus-border: #5752e8; + --input-focus-shadow: rgba(87, 82, 232, 0.4) 0 0 1px 2px; + --header-height__md-up: 3.125rem; + --header-height__sm-down: 2.75rem; + --global-nav-width: 5.5rem; + --global-nav-width-sm: 13rem; + --thread-header-author: 4.75rem; + --side-nav-width: 17rem; +} + +/*# sourceMappingURL=_css-variables.css.map */ diff --git a/app/assets/stylesheets/config/variables/_fonts.css b/app/assets/stylesheets/config/variables/_fonts.css new file mode 100644 index 00000000000..491bc98a2d3 --- /dev/null +++ b/app/assets/stylesheets/config/variables/_fonts.css @@ -0,0 +1,4 @@ +:root { + --sans-serif: YakuHanJPs, "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "ヒラギノ角ゴ ProN W3", "メイリオ", Meiryo, "Apple Color Emoji", "Segoe UI Emoji", sans-serif; + --monospace: "Source Code Pro", monospace; +} diff --git a/app/assets/stylesheets/config/variables/_welcome-colors.css b/app/assets/stylesheets/config/variables/_welcome-colors.css new file mode 100644 index 00000000000..e9db1592c22 --- /dev/null +++ b/app/assets/stylesheets/config/variables/_welcome-colors.css @@ -0,0 +1,4 @@ +:root { + --welcome-main-color: #0bb5e1; + --welcome-accent-color: #f4e90f; +} diff --git a/app/assets/stylesheets/form/_zip-tel-input.css b/app/assets/stylesheets/form/_zip-tel-input.css new file mode 100644 index 00000000000..f187da219c5 --- /dev/null +++ b/app/assets/stylesheets/form/_zip-tel-input.css @@ -0,0 +1,22 @@ +.a-zip-input, +.a-tel-input, +.a-name-input { + display: flex; + align-items: center; + gap: 0.5rem; +} +.a-zip-input__label, +.a-tel-input__label, +.a-name-input__label { + font-size: 1.25rem; + color: var(--muted-text); +} + +.a-name-input__field { + flex: 1; +} +.a-name-input__field .a-form-label { + margin-bottom: 0.25rem; +} + +/*# sourceMappingURL=_zip-tel-input.css.map */ diff --git a/app/assets/stylesheets/lp.css b/app/assets/stylesheets/lp.css new file mode 100644 index 00000000000..a6360ebe56e --- /dev/null +++ b/app/assets/stylesheets/lp.css @@ -0,0 +1,58 @@ +@import "tailwindcss" source(none); +@source "../../views/**/*.slim"; +@source "../../components/**/*.slim"; +@source "../../../app/javascript/**/*.{js,vue,jsx}"; +@source "./**/*.css"; + +@theme { + --container-*: initial; +} + +@import "./lp/base/_base.css"; +@import "./common-imports.css"; +@import "./lp/layouts/_l-cards.css"; +@import "./lp/layouts/_l-sections.css"; +@import "./lp/blocks/lp/_lp-header.css"; +@import "./lp/blocks/lp/_lp-header-nav.css"; +@import "./lp/blocks/lp/_welcome-top-info.css"; +@import "./lp/blocks/lp/_lp-top-cover.css"; +@import "./lp/blocks/lp/_lp-content.css"; +@import "./lp/blocks/lp/_lp-content-stack.css"; +@import "./lp/blocks/lp/_lp-hero-info.css"; +@import "./lp/blocks/lp/_lp-hero-visual.css"; +@import "./lp/blocks/lp/_lp-content-section.css"; +@import "./lp/blocks/lp/_lp-content-title.css"; +@import "./lp/blocks/lp/_lp-content-sub-title.css"; +@import "./lp/blocks/lp/_lp-card-title.css"; +@import "./lp/blocks/lp/_lp-card-description.css"; +@import "./lp/blocks/lp/_lp-card-actions.css"; +@import "./lp/blocks/lp/_lp-left-image-section.css"; +@import "./lp/blocks/lp/_lp-left-number-section.css"; +@import "./lp/blocks/lp/_lp-capture-section.css"; +@import "./lp/blocks/lp/_lp-top-image-sections.css"; +@import "./lp/blocks/lp/_lp-supplementary-info.css"; +@import "./lp/blocks/lp/_lp-page-header.css"; +@import "./lp/blocks/lp/_lp-page-header-nav.css"; +@import "./lp/blocks/lp/_lp-price.css"; +@import "./lp/blocks/lp/_lp-actions.css"; +@import "./lp/blocks/lp/_lp-company-logos.css"; +@import "./lp/blocks/lp/_lp-movie.css"; +@import "./lp/blocks/lp/_lp-practices-table.css"; +@import "./lp/blocks/lp/_lp-table.css"; +@import "./lp/blocks/lp/_lp-faqs.css"; +@import "./lp/blocks/lp/_lp-faq.css"; +@import "./lp/blocks/lp/_side-filter.css"; +@import "./lp/blocks/lp/_lp-course-selection.css"; +@import "./lp/blocks/lp/_lp-course-selection-nav.css"; +@import "./lp/blocks/lp/_lp-course-selection-item.css"; +@import "./lp/blocks/lp/_lp-category-practices.css"; +@import "./lp/blocks/lp/_lp-mentor-books.css"; +@import "./lp/blocks/lp/_lp-mentor.css"; +@import "./lp/blocks/articles/_article.css"; +@import "./lp/blocks/articles/_articles.css"; +@import "./lp/blocks/articles/_articles-item.css"; +@import "./lp/blocks/articles/_share-buttons.css"; +@import "./lp/blocks/articles/_article-author.css"; +@import "./lp/corporate-training/_corporate-training-examples.css"; +@import "./lp/corporate-training/_corporate-training-example.css"; +@import "./lp/corporate-training/_corporate-training-testimonial.css"; diff --git a/app/assets/stylesheets/lp/base/_base.css b/app/assets/stylesheets/lp/base/_base.css new file mode 100644 index 00000000000..fd13293faf8 --- /dev/null +++ b/app/assets/stylesheets/lp/base/_base.css @@ -0,0 +1,85 @@ +html.is-lp { + font-family: var(--sans-serif); + color: var(--default-text); +} + +:root { + --people-bg-image: url("/images/background/people.png"); +} + +body.is-lp { + background-color: var(--background); +} + +.not-logged-in-footer { + color: var(--default-text); +} + +.not-logged-in-footer__nav-item-link { + color: var(--default-text); +} + +.not-logged-in-footer-copyright { + color: var(--default-text); +} + +.card-body__inner-title { + font-size: 1.5rem; + line-height: 1.5; + font-weight: 700; + padding-bottom: 0.25rem; + color: var(--main); + border-bottom: solid 1px var(--border); +} + +.welcome-practices { + margin-top: 1.25rem; + display: flex; + flex-wrap: wrap; + gap: 0.75rem 0.5rem; + flex-direction: column; +} + +.welcome-practices__item { + line-height: 1.6; + font-size: 0.8125rem; + padding-block: 0.5rem; +} +.welcome-practices__item + .welcome-practices__item { + border-top: solid 1px var(--border-tint); +} +.welcome-practices__item:first-child { + padding-top: 0; +} +.welcome-practices__item:last-child { + padding-bottom: 0; +} + +@media (min-width: 48em) { + .welcome-practices { + flex-direction: row; + } + .welcome-practices__item { + font-size: 0.875rem; + padding-block: 0; + border-top: none !important; + } + .welcome-practices__item:not(:last-child)::after { + content: "、"; + } +} +.faqs-item__header { + padding-bottom: 0.5rem; + border-bottom: solid 1px var(--border); +} + +.faqs-item__body { + margin-top: 1.5rem; +} + +.faqs-item__title { + font-size: 1.25rem; + line-height: 1.6; + font-weight: 700; + color: var(--main); +} diff --git a/app/assets/stylesheets/lp/blocks/articles/_article-author.css b/app/assets/stylesheets/lp/blocks/articles/_article-author.css new file mode 100644 index 00000000000..1adf62dff1f --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/articles/_article-author.css @@ -0,0 +1,135 @@ +.article-author.is-welcome-index { + height: 100%; +} + +.article-author__inner { + display: flex; + flex-direction: column; + gap: 1rem; + padding: 0.75rem 1rem 1rem; +} +@media (min-width: 48em) { + .article-author__inner { + padding: 1.25rem 1.5rem 1.5rem; + } +} +.article-author.is-articles-show .article-author__inner { + padding: 0.75rem 1rem 0; +} +.article-author.is-articles-show .article-author__inner:last-child { + padding-bottom: 1rem; +} + +.article-author__header { + display: flex; + gap: 1.5rem; + align-items: flex-start; +} + +.article-author__header-start { + flex: 0 0 4.5rem; +} + +.article-author__header-end { + flex: 1; + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.article-author__image { + border-radius: 0.25rem; + width: 4rem; + display: block; + margin-inline: auto; +} +@media (min-width: 48em) { + .article-author__image { + width: 100%; + margin-inline: 0; + } +} + +.article-author__name { + font-weight: 800; + color: var(--main); + font-size: 1.5rem; + line-height: 1.2; +} + +.article-author__job { + font-weight: 400; + font-size: 0.875rem; + line-height: 1; + margin-bottom: 0.125rem; + color: var(--main); +} + +.article-author__sns { + display: none; +} +@media (min-width: 48em) { + .article-author__sns { + display: flex; + gap: 0.75rem; + } +} + +.article-author__sns-item-link { + font-size: 1.25rem; + line-height: 1.45; + color: var(--main); + display: flex; + height: 2.5rem; + width: 2.5rem; + justify-content: center; + align-items: center; + text-decoration: none; + border: solid 1px var(--main); + border-radius: 0.25rem; + transition: all 0.2s ease-out; +} +.article-author__sns-item-link:hover { + color: var(--welcome-pink); +} + +.article-author__body { + font-size: 0.875rem; +} +.article-author__body.is-trancate { + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; + display: none; +} +@media (min-width: 48em) { + .article-author__body.is-trancate { + display: -webkit-box; + height: 67.2px; + } +} +.article-author__body.is-temp { + font-size: 0.875rem; + line-height: 1.6; +} +.article-author__body.is-temp img { + width: 6.25rem; + float: right; + margin-left: 1rem; + margin-bottom: 0.75rem; +} +.article-author__body.is-temp img.has-3-books { + width: 8.25rem; +} +.article-author__body.is-temp img.has-5-books { + width: 10rem; +} +.article-author__body.is-temp a { + color: var(--link-text); + text-decoration: underline; + cursor: pointer; +} +.article-author__body.is-temp a:hover { + text-decoration: none; +} diff --git a/app/assets/stylesheets/lp/blocks/articles/_article.css b/app/assets/stylesheets/lp/blocks/articles/_article.css new file mode 100644 index 00000000000..0b4d3866f14 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/articles/_article.css @@ -0,0 +1,132 @@ +.article { + padding-block: 1.5rem; +} +@media (min-width: 48em) { + .article { + padding-block: 2rem; + } +} + +.article__inner { + padding: 1rem; +} +@media (min-width: 48em) { + .article__inner { + padding: 1.25rem 2rem; + } +} + +.article__header { + margin-bottom: 3rem; +} + +.article__title { + line-height: 1.4; + font-weight: 700; + font-feature-settings: "palt"; + letter-spacing: 0.025em; + color: var(--main); + font-size: 1.625rem; +} +@media (min-width: 48em) { + .article__title { + font-size: 2.5rem; + } +} +.article__title.is-wip { + color: var(--muted-text); +} + +.article__title-label { + background-color: var(--background-semi-shade); + font-size: 0.625rem; + display: inline-block; + vertical-align: middle; + padding: 0.25rem 0.5rem; + margin-right: 0.25rem; + border-radius: 1rem; + margin-top: -0.5em; + font-weight: 400; + color: var(--default-text); + line-height: 1; +} + +.article__metas { + display: flex; + margin-top: 0.75rem; + font-size: 0.8125rem; +} +@media (min-width: 48em) { + .article__metas { + font-size: 0.875rem; + } +} + +.article__meta:not(:first-child) { + margin-left: 0.75em; +} + +.article__published-at { + font-size: 1em; + line-height: 1.4; + color: var(--semi-muted-text); +} + +.article__author { + display: flex; + align-items: center; + font-size: 1em; + line-height: 1.4; + color: var(--default-text); +} +.article__author img { + width: 1.125rem; + height: 1.125rem; + object-fit: cover; + margin-right: 0.25rem; + border-radius: 50%; +} + +.article__image { + margin-top: 1.5rem; + border-radius: 4px; + aspect-ratio: 40/21; + object-fit: cover; + width: 100%; +} + +.article__body:not(:first-child) { + margin-top: 1.5rem; +} +.article__body.a-long-text { + font-size: 0.875rem; +} +@media (min-width: 48em) { + .article__body.a-long-text { + font-size: 1rem; + } +} + +.article__actions { + margin-top: 2rem; + border-top: dashed 2px var(--border); + padding-top: 1rem; +} +.article__actions ul { + display: flex; + justify-content: center; + align-items: center; + gap: 1rem; +} +.article__actions li { + flex: 1; + max-width: 15rem; +} + +.article__header-row:not(:first-child) { + margin-top: 0.75rem; +} + +.article__ad { + font-size: 0.875rem; +} diff --git a/app/assets/stylesheets/lp/blocks/articles/_articles-item.css b/app/assets/stylesheets/lp/blocks/articles/_articles-item.css new file mode 100644 index 00000000000..fcb176508d8 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/articles/_articles-item.css @@ -0,0 +1,70 @@ +@media (min-width: 48em) { + .articles-item { + height: 100%; + } +} + +.articles-item__link { + display: block; + text-decoration: none; + padding: 1rem; +} +.articles-item__link:hover .articles-item__title { + text-decoration: underline; +} + +.articles-item__row:not(:first-child) { + margin-top: 0.5rem; +} + +.articles-item__image { + display: block; + border-radius: 4px; + aspect-ratio: 40/21; + object-fit: cover; +} + +.articles-item__title { + font-size: 1.125rem; + line-height: 1.4; + font-weight: 700; + color: var(--default-text); +} +.articles-item.is-wip .articles-item__title { + color: var(--muted-text); +} + +.articles-item__metas { + display: flex; +} + +.articles-item__meta:not(:first-child) { + margin-left: 0.75rem; +} + +.articles-item__author { + display: flex; + align-items: center; + font-size: 0.8125rem; + line-height: 1.4; + color: var(--default-text); +} +.articles-item__author img { + width: 1.125rem; + height: 1.125rem; + object-fit: cover; + margin-right: 0.25rem; + border-radius: 50%; +} + +.articles-item__published-at { + font-size: 0.8125rem; + line-height: 1.4; + color: var(--semi-muted-text); +} + +.articles-item__description { + font-size: 0.875rem; + line-height: 1.6; + color: var(--semi-muted-text); +} diff --git a/app/assets/stylesheets/lp/blocks/articles/_articles.css b/app/assets/stylesheets/lp/blocks/articles/_articles.css new file mode 100644 index 00000000000..43f3d943ff1 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/articles/_articles.css @@ -0,0 +1,34 @@ +.articles__header { + background-color: var(--base); +} + +.articles__header-inner { + display: flex; + align-items: center; + height: 3rem; +} +@media (min-width: 48em) { + .articles__header-inner { + height: 3.5rem; + } +} + +.articles__title { + font-weight: 700; + font-size: 1rem; + line-height: 1.4; +} +@media (min-width: 48em) { + .articles__title { + font-size: 1.25rem; + } +} + +.articles__body { + padding-block: 1.5rem; +} +@media (min-width: 48em) { + .articles__body { + padding-block: 2rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/articles/_share-buttons.css b/app/assets/stylesheets/lp/blocks/articles/_share-buttons.css new file mode 100644 index 00000000000..0f7fd8181b1 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/articles/_share-buttons.css @@ -0,0 +1,68 @@ +.share-buttons { + margin-top: 0.75rem; +} + +.share-buttons__items { + display: flex; + gap: 0.5rem; +} +@media (max-width: 20em) { + .share-buttons__items { + gap: 0.25rem; + } +} + +@media (max-width: 20em) { + .share-buttons__item.is-x { + flex: 1; + } +} + +.x-share-button { + width: 5.5rem; + height: 2.5rem; + background-color: white; + display: flex; + text-decoration: none; + flex-direction: column; + border-radius: 0.25rem; + align-items: center; + justify-content: center; + font-size: 0.6875rem; + line-height: 1; + font-weight: 700; + color: var(--reversal-text); + border: solid 1px black; + overflow: hidden; +} +.x-share-button i { + font-size: 0.875rem; + color: black; + flex: 1; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s ease-out; +} +.x-share-button span { + background-color: var(--default-text); + display: flex; + width: 100%; + height: 1.25rem; + align-items: center; + justify-content: center; + transition: all 0.2s ease-out; + padding-top: 1px; +} +.x-share-button:hover i { + background-color: var(--background-tint); +} +.x-share-button:hover span { + background-color: black; +} +@media (max-width: 20em) { + .x-share-button { + width: 100%; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-actions.css b/app/assets/stylesheets/lp/blocks/lp/_lp-actions.css new file mode 100644 index 00000000000..b4b99d4ba38 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-actions.css @@ -0,0 +1,21 @@ +.lp-actions { + align-self: stretch; + width: 100%; +} +@media (min-width: 48em) { + .lp-actions { + max-width: 42.5rem; + margin-inline: auto; + } +} + +.lp-actions__items { + display: flex; + gap: 1rem; + justify-content: center; +} + +.lp-actions__item { + flex: 1; + max-width: 22rem; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-capture-section.css b/app/assets/stylesheets/lp/blocks/lp/_lp-capture-section.css new file mode 100644 index 00000000000..b0a8e2e7ba2 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-capture-section.css @@ -0,0 +1,103 @@ +.lp-capture-section__inner { + display: flex; + gap: 1rem; +} +.lp-content-stack__item:nth-child(even) .lp-capture-section__inner { + flex-direction: row-reverse; +} +@media (min-width: 48em) { + .lp-capture-section__inner { + gap: 3rem; + } +} +@media (max-width: 47.9375em) { + .lp-capture-section__inner .lp-content-sub-title br { + display: none; + } +} + +.lp-capture-section__start, +.lp-capture-section__end { + display: flex; + align-items: center; +} + +.lp-capture-section__start { + flex: 0 0 40%; +} +@media (min-width: 48em) { + .lp-capture-section__start { + flex: 1; + } +} +.lp-capture-section__start.is-sm { + max-width: 10rem; +} +@media (min-width: 48em) and (max-width: 63.9375em) { + .lp-capture-section__start.is-sm { + max-width: 16rem; + } +} +@media (min-width: 64em) { + .lp-capture-section__start.is-sm { + max-width: 20rem; + } +} + +.lp-capture-section__end { + flex: 1; +} +@media (min-width: 48em) and (max-width: 63.9375em) { + .lp-capture-section__end { + flex: 1.5; + } +} +@media (min-width: 64em) { + .lp-capture-section__end { + flex: 1; + } +} + +.lp-capture-section__content { + display: flex; + flex-direction: column; + gap: 1rem; +} +@media (min-width: 48em) { + .lp-capture-section__content { + gap: 1.5rem; + } +} +@media (min-width: 64em) { + .lp-capture-section__content { + gap: 2rem; + } +} + +.lp-capture-section__body { + font-size: 0.875rem; + line-height: 1.6; +} +@media (min-width: 48em) { + .lp-capture-section__body { + font-size: 1rem; + } +} + +.lp-capture-section__border { + height: 1px; + width: 100%; + display: block; + border-top: dashed 1px var(--border-more-shade); +} + +.lp-capture-section__image { + width: 100%; +} +@media (max-width: 47.9375em) { + .lp-capture-section__image { + max-width: 14rem; + margin-inline: auto; + display: block; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-card-actions.css b/app/assets/stylesheets/lp/blocks/lp/_lp-card-actions.css new file mode 100644 index 00000000000..26442c59ce1 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-card-actions.css @@ -0,0 +1,11 @@ +.lp-card-actions__items { + display: flex; + width: 100%; + justify-content: center; + gap: 1.5rem; +} + +.lp-card-actions__item { + width: 12rem; + max-width: 100%; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-card-description.css b/app/assets/stylesheets/lp/blocks/lp/_lp-card-description.css new file mode 100644 index 00000000000..08cb062b1c1 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-card-description.css @@ -0,0 +1,16 @@ +.lp-card-description { + font-size: 0.875rem; +} +@media (min-width: 48em) { + .lp-card-description { + font-size: 1rem; + } +} +.lp-card-description a { + color: #0098f9; + text-decoration: none; + cursor: pointer; +} +.lp-card-description a:hover, .lp-card-description a:active { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-card-title.css b/app/assets/stylesheets/lp/blocks/lp/_lp-card-title.css new file mode 100644 index 00000000000..c5305de5d08 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-card-title.css @@ -0,0 +1,52 @@ +.lp-card-title { + font-feature-settings: "palt"; + letter-spacing: 0.02em; + font-weight: 800; + color: var(--main); + font-size: 1.125rem; + line-height: 1.4; +} +.lp-card-title br { + display: none; +} +@media (min-width: 48em) { + .lp-card-title { + font-size: 1.25rem; + } + .lp-card-title br { + display: inline; + } +} +@media (min-width: 64em) { + .lp-card-title { + font-size: 1.5rem; + } +} +.lp-card-title.is-sm { + font-size: 1rem; + line-height: 1.4; +} +@media (min-width: 48em) { + .lp-card-title.is-sm { + font-size: 1.125rem; + } +} + +.lp-card-title-number { + font-size: 0.9375rem; + line-height: 1; + display: inline-flex; + font-weight: 800; + font-family: "Roboto Mono", monospace; + align-items: center; + justify-content: center; + border-radius: 50%; + height: 1.75rem; + width: 1.75rem; + background-color: var(--lp-bg-3); + margin-right: 0.5rem; + vertical-align: middle; + border: solid 2px var(--main); + position: relative; + top: -1px; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-category-practices.css b/app/assets/stylesheets/lp/blocks/lp/_lp-category-practices.css new file mode 100644 index 00000000000..ed9ad65d893 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-category-practices.css @@ -0,0 +1,37 @@ +.lp-category-practices { + background-color: var(--base); +} + +.lp-category-practices__category { + font-size: 1rem; + line-height: 1.4; + font-weight: 800; + background-color: var(--main); + color: var(--reversal-text); + display: flex; + align-items: center; + padding: 0.5rem 1rem; + border-radius: 0.25rem 0.25rem 0 0; +} + +.lp-category-practices__practices { + border: solid 1px var(--border); + border-radius: 0 0 0.25rem 0.25rem; +} + +.lp-category-practices__practice { + font-size: 0.875rem; + line-height: 1.4; + display: flex; + align-items: center; + padding: 0.5rem 1rem; +} +.lp-category-practices__practice:nth-child(even) { + background-color: var(--background-more-tint); +} +.lp-category-practices__practice:not(:last-child) { + border-bottom: solid 1px var(--border); +} +.lp-category-practices__practice:last-child { + border-radius: 0 0 0.25rem 0.25rem; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-company-logos.css b/app/assets/stylesheets/lp/blocks/lp/_lp-company-logos.css new file mode 100644 index 00000000000..bc5b6587013 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-company-logos.css @@ -0,0 +1,21 @@ +.lp-company-logos { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + gap: 1rem; +} +@media (min-width: 64em) { + .lp-company-logos { + gap: 1.5rem 2rem; + } +} + +.lp-company-logos__item img { + height: 3.5rem; +} +@media (min-width: 64em) { + .lp-company-logos__item img { + height: 5rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-content-section.css b/app/assets/stylesheets/lp/blocks/lp/_lp-content-section.css new file mode 100644 index 00000000000..364b0ab8ca2 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-content-section.css @@ -0,0 +1,19 @@ +.lp-content-section { + display: flex; + flex-direction: column; + gap: 1rem; +} +@media (min-width: 48em) { + .lp-content-section { + gap: 1.5rem; + } +} + +.lp-content__description { + font-size: 0.875rem; +} +@media (min-width: 48em) { + .lp-content__description { + font-size: 1rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-content-stack.css b/app/assets/stylesheets/lp/blocks/lp/_lp-content-stack.css new file mode 100644 index 00000000000..90d59e12d71 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-content-stack.css @@ -0,0 +1,10 @@ +.lp-content-stack { + display: flex; + flex-direction: column; + gap: 1.5rem; +} +@media (min-width: 48em) { + .lp-content-stack { + gap: 3rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-content-sub-title.css b/app/assets/stylesheets/lp/blocks/lp/_lp-content-sub-title.css new file mode 100644 index 00000000000..4ddf6b67d12 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-content-sub-title.css @@ -0,0 +1,45 @@ +.lp-content-sub-title i { + margin-right: 0.25em; + color: var(--main); +} +.lp-content-sub-title strong { + color: var(--main); +} +.lp-content-sub-title { + font-size: 1.375rem; + line-height: 1.4; + font-weight: 800; +} + +@media (max-width: 47.9375em) { + .lp-content-sub-title.is-course-name { + font-size: 0.875rem; + } +} + +@media (min-width: 48em) { + .lp-content-sub-title { + font-size: 1.75rem; + } +} +@media (min-width: 64em) { + .lp-content-sub-title { + font-size: 2.125rem; + } +} +.lp-content-sub-title.is-sm { + color: var(--main); + font-size: 1.125rem; + line-height: 1.4; + font-weight: 800; +} +@media (min-width: 48em) { + .lp-content-sub-title.is-sm { + font-size: 1.25rem; + } +} +@media (min-width: 64em) { + .lp-content-sub-title.is-sm { + font-size: 1.5rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-content-title.css b/app/assets/stylesheets/lp/blocks/lp/_lp-content-title.css new file mode 100644 index 00000000000..e86b2d9762f --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-content-title.css @@ -0,0 +1,151 @@ +.lp-content-title { + font-feature-settings: "palt"; + letter-spacing: 0.02em; + position: relative; + text-align: center; + font-size: 1.75rem; + line-height: 1.4; + font-weight: 800; +} + +.lp-content-title strong { + color: var(--main); +} + +.lp-content-title[class*="is-border-"]::before { + content: ""; + display: block; + border-radius: 10rem; + background-color: #9b9ace; + position: absolute; + left: 50%; + bottom: 0; + transform: translate(-50%); + width: 3.5em; + height: 0.25rem; +} + +@media (max-width: 47.9375em) { + .lp-content-title { + padding-bottom: 1.5rem; + } +} + +@media (min-width: 80em) { + .lp-content-title.is-vertical { + writing-mode: vertical-rl; + text-align: start; + } +} + +@media (min-width: 48em) { + .lp-content-title { + font-size: 2.25rem; + } + + .lp-content-title { + padding-bottom: 2.25rem; + } + + .lp-content-title[class*="is-border-"]::before { + width: 4.5em; + height: 0.5rem; + } +} + +@media (min-width: 64em) { + .lp-content-title { + font-size: 2.75rem; + } +} + +@media (min-width: 80em) { + .lp-content-title { + font-size: 3rem; + white-space: nowrap; + } + + .lp-content-title.is-border-left { + padding-left: 3.5rem; + } + + .lp-content-title.is-border-left::before { + left: 0; + top: 0.25em; + width: 0.5rem; + height: 3.5em; + } + + .lp-content-title.is-vertical.is-border-left::before { + top: 0.125em; + } +} + +.lp-content-title.is-sm { + padding-bottom: 0; + font-size: 1.25rem; + line-height: 1.3; + font-weight: 700; +} + +@media (min-width: 48em) { + .lp-content-title.is-sm { + font-size: 1.5rem; + } +} + +@media (min-width: 64em) { + .lp-content-title.is-sm { + font-size: 2.25rem; + } +} + +.lp-content-title.is-xs { + font-size: 1.25rem; + line-height: 1.3; + font-weight: 700; +} + +@media (min-width: 48em) { + .lp-content-title.is-xs { + font-size: 1.5rem; + } +} + +@media (min-width: 64em) { + .lp-content-title.is-xs { + font-size: 1.75rem; + } +} + +.lp-content-title__option { + display: block; + color: #6e6d9c; + font-size: 1rem; + line-height: 1.4; + margin-top: -0.25rem; + margin-bottom: 0.25rem; +} + +@media (min-width: 48em) { + .lp-content-title__option { + margin-top: -0.5rem; + margin-bottom: 0.5rem; + } +} + +@media (min-width: 64em) { + .lp-content-title__option { + font-size: 1.25rem; + margin-top: -0.75rem; + margin-bottom: 0.75rem; + } +} + +@media (min-width: 80em) { + .lp-content-title__option { + font-size: 1.5rem; + margin-top: -1rem; + margin-bottom: 1rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-content.css b/app/assets/stylesheets/lp/blocks/lp/_lp-content.css new file mode 100644 index 00000000000..b90967b6e2f --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-content.css @@ -0,0 +1,163 @@ +.lp-content { + position: relative; +} +.lp-content .lp-content__inner { + display: flex; +} +.lp-content { + padding-top: 2rem; + padding-bottom: 2rem; +} +@media (min-width: 48em) { + .lp-content { + padding-top: 2.5rem; + padding-bottom: 2.5rem; + } +} +@media (min-width: 64em) { + .lp-content { + padding-top: 4rem; + padding-bottom: 4rem; + } +} +.lp-content.is-campaign { + background-color: var(--main); + padding-top: 1.5rem; + padding-bottom: 2rem; + background-image: var(--campaign-bg-image); + background-repeat: repeat; + background-size: 40rem; + color: var(--reversal-text); +} +.lp-content.is-lp-bg-1 { + background-color: var(--lp-bg-1); +} +.lp-content.is-lp-bg-2 { + background-color: var(--lp-bg-2); +} +.lp-content.is-lp-bg-3 { + background-color: var(--lp-bg-3); +} +.lp-content.is-lp-bg-main { + background-color: var(--main); + color: var(--reversal-text); +} +.lp-content.is-hero { + position: relative; + padding-top: 2rem; + padding-bottom: 3rem; +} +@media (min-width: 48em) { + .lp-content.is-hero { + padding-top: 3rem; + padding-bottom: 4rem; + } +} +.lp-content.is-hero .lp-content__inner { + flex-direction: column; + gap: 1rem; +} +@media (min-width: 48em) { + .lp-content.is-hero .lp-content__inner { + flex-direction: row; + align-items: center; + gap: 3.5rem; + } +} +.lp-content.is-hero .lp-content__start { + flex: 14; +} +.lp-content.is-hero .lp-content__end { + flex: 6; +} +@media (min-width: 64em) { + .lp-content.is-hero .lp-content__end { + flex: 8; + } +} +@media (min-width: 80em) { + .lp-content.is-hero .lp-content__end { + flex: 10; + } +} +.lp-content.is-hero .lp-hero-info { + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + gap: 1rem; +} +@media (min-width: 48em) { + .lp-content.is-hero .lp-hero-info { + gap: 2rem; + } +} +.lp-content.is-top-title .lp-content__inner { + gap: 2rem; + flex-direction: column; +} +@media (min-width: 80em) { + .lp-content.is-top-title .lp-content__inner { + gap: 3.5rem; + } +} +.lp-content.is-right-title .lp-content__inner { + flex-direction: column; + gap: 2rem; +} +@media (min-width: 80em) { + .lp-content.is-right-title .lp-content__inner { + flex-direction: row-reverse; + justify-content: space-between; + gap: 3rem; + } +} +.lp-content.is-right-title .lp-content__end { + flex: 1; + max-width: 100%; +} +@media (min-width: 80em) { + .lp-content.is-right-title .lp-content__end { + max-width: 50rem; + } +} +.lp-content.is-left-title .lp-content__inner { + gap: 2rem; + flex-direction: column; +} +@media (min-width: 80em) { + .lp-content.is-left-title .lp-content__inner { + gap: 3rem; + justify-content: space-between; + flex-direction: row; + } +} +.lp-content.is-left-title .lp-content__end { + flex: 1; + max-width: 100%; +} +@media (min-width: 80em) { + .lp-content.is-left-title .lp-content__end { + max-width: 42.5rem; + } +} +.lp-content .lp-content__inner { + flex-direction: column; + gap: 2rem; +} +@media (min-width: 48em) { + .lp-content .lp-content__inner { + gap: 2.5rem; + } +} +@media (min-width: 64em) { + .lp-content .lp-content__inner { + gap: 3.5rem; + } +} + +.lp-content__body { + display: flex; + flex-direction: column; + gap: 2.5rem; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-course-selection-item.css b/app/assets/stylesheets/lp/blocks/lp/_lp-course-selection-item.css new file mode 100644 index 00000000000..f08307f61f4 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-course-selection-item.css @@ -0,0 +1,45 @@ +.lp-course-selection-item__anchor { + position: relative; + top: -4rem; +} +@media (max-width: 47.9375em) { + .lp-course-selection-item__anchor#front-engineer-course { + margin-top: 4rem; + } +} + +.lp-course-selection-item__inner { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.lp-course-selection-item__title { + font-weight: 700; + font-size: 1.25rem; + line-height: 1.4; +} +@media (min-width: 48em) { + .lp-course-selection-item__title { + font-size: 1.5rem; + } +} + +.lp-course-selection-item__action { + max-width: 20rem; + width: 100%; + margin-inline: auto; +} + +.lp-course-selection-item__categories { + display: flex; + flex-direction: column; + gap: 1.5rem; +} +.lp-course-selection-item__categories details { + background-color: var(--base); +} + +.lp-course-selection-item__body { + padding: 1.5rem; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-course-selection-nav.css b/app/assets/stylesheets/lp/blocks/lp/_lp-course-selection-nav.css new file mode 100644 index 00000000000..8d249ed8ea3 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-course-selection-nav.css @@ -0,0 +1,37 @@ +.lp-course-selection-nav { + position: sticky; + top: 0; + z-index: 2; +} + +.lp-course-selection-nav__inner { + padding-block: 0.5rem; +} + +.lp-course-selection-nav__items { + display: flex; +} + +.lp-course-selection-nav__item { + flex: 1; +} + +.lp-course-selection-nav__item-link { + border: solid 1px var(--main); + background-color: var(--base); + font-size: 0.75rem; + line-height: 1.4; + text-align: center; + display: flex; + text-decoration: none; + height: 2.75rem; + justify-content: center; + align-items: center; +} +.lp-course-selection-nav__item:first-child .lp-course-selection-nav__item-link { + border-radius: 0.25rem 0 0 0.25rem; + margin-right: -1px; +} +.lp-course-selection-nav__item:last-child .lp-course-selection-nav__item-link { + border-radius: 0 0.25rem 0.25rem 0; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-course-selection.css b/app/assets/stylesheets/lp/blocks/lp/_lp-course-selection.css new file mode 100644 index 00000000000..9c2b075daa6 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-course-selection.css @@ -0,0 +1,9 @@ +.lp-course-selection__descritpion { + font-size: 0.875rem; + margin-bottom: 0.5rem; +} +@media (min-width: 48em) { + .lp-course-selection__descritpion { + font-size: 1rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-faq.css b/app/assets/stylesheets/lp/blocks/lp/_lp-faq.css new file mode 100644 index 00000000000..b99696b5068 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-faq.css @@ -0,0 +1,58 @@ +.lp-faq__inner { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.lp-faq__header, +.lp-faq__body { + padding-left: 2.5rem; + position: relative; +} +.lp-faq__header::before, +.lp-faq__body::before { + left: 0; + position: absolute; + top: 0; + font-size: 1.25rem; + line-height: 1; + font-weight: 900; + color: var(--main); + font-family: "Lato", sans-serif; +} + +.lp-faq__header::before { + content: "Q."; +} + +.lp-faq__body::before { + content: "A."; +} + +.lp-faq__title { + font-size: 1.125rem; + line-height: 1.4; + font-weight: 800; +} + +.lp-faq__body { + font-size: 0.875rem; +} +@media (min-width: 48em) { + .lp-faq__body { + font-size: 1rem; + } +} + +.lp-faq__edit { + margin-top: 0.75rem; +} + +.lp-faq__edit-link { + font-size: 0.875rem; + line-height: 1.4; + color: var(--muted-text); +} +.lp-faq__edit-link:hover { + color: var(--main); +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-faqs.css b/app/assets/stylesheets/lp/blocks/lp/_lp-faqs.css new file mode 100644 index 00000000000..a8f09469f55 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-faqs.css @@ -0,0 +1,7 @@ +.lp-faqs__items { + display: flex; + flex-direction: column; + gap: 2rem; + max-width: 40rem; + margin-inline: auto; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-header-nav.css b/app/assets/stylesheets/lp/blocks/lp/_lp-header-nav.css new file mode 100644 index 00000000000..887cea3e10c --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-header-nav.css @@ -0,0 +1,142 @@ +.lp-header-nav { + height: 100%; +} +@media (max-width: 79.9375em) { + .lp-header-nav { + display: none; + } + input:checked + .lp-header-nav { + display: block; + } +} +.lp-header-nav__items { + display: flex; +} +@media (min-width: 96em) { + .lp-header-nav__items { + gap: 1rem; + } +} +@media (min-width: 80em) { + .lp-header-nav__items { + height: 100%; + align-items: center; + gap: 0.5rem; + font-size: 0.875rem; + } +} +@media (min-width: 80em) and (max-width: 95.9375em) { + .lp-header-nav__items { + gap: 0.25rem; + } +} +@media (max-width: 79.9375em) { + .lp-header-nav__items { + flex-direction: column; + position: fixed; + left: 0; + top: 0; + bottom: 0; + z-index: 2; + background-color: white; + background-color: var(--base); + width: 20rem; + max-width: calc(100vw - 3rem); + } + .lp-header-nav__item { + border-bottom: solid 1px hsl(242, 14%, 95%); + border-bottom: solid 1px var(--border-tint); + } +} +.lp-header-nav__item-link { + text-decoration: none; + font-weight: 700; + color: hsl(242, 51%, 51%); + color: var(--main); + white-space: nowrap; + display: flex; + justify-content: center; + align-items: center; + transition: all 0.2s ease-out; +} +.lp-header-nav__item-link span { + white-space: nowrap; +} +@media (min-width: 80em) { + .lp-header-nav__item-link { + height: 2.25rem; + padding-inline: 0.75rem; + font-size: 0.875rem; + background-color: white; + background-color: var(--base); + border-radius: 0.5rem; + } + .lp-header-nav__item-link:hover { + background-color: #DEDEF2; + background-color: var(--lp-bg-3); + } +} +@media (max-width: 79.9375em) { + .lp-header-nav__item-link { + height: 3rem; + padding-inline: 2rem; + font-size: 0.875rem; + } +} +@media (min-width: 80em) { + .lp-header-nav__overlay { + display: none; + } +} +@media (max-width: 79.9375em) { + .lp-header-nav__overlay { + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + z-index: 1; + background-color: rgba(39, 39, 44, 0.8); + } +} +.lp-header__home-link-image { + width: 9.75rem; + min-width: 9.75rem; +} +.lp-header__login { + display: flex; + height: 100%; + align-items: center; +} +@media (min-width: 48em) { + .lp-header__login { + width: 7.5rem; + } +} +@media (max-width: 47.9375em) { + .lp-header__login { + width: auto; + } + .lp-header__login .a-button { + font-size: 0.6875rem; + } +} +@media (min-width: 80em) { + .lp-header__mobile-nav-trigger { + display: none; + } +} +@media (max-width: 79.9375em) { + .lp-header__mobile-nav-trigger { + display: flex; + width: 2.75rem; + height: 2.75rem; + justify-content: center; + align-items: center; + } +} +.lp-header__home { + height: 100%; + display: flex; + align-items: center; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-header.css b/app/assets/stylesheets/lp/blocks/lp/_lp-header.css new file mode 100644 index 00000000000..aa0b0ba4feb --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-header.css @@ -0,0 +1,36 @@ +.lp-header { + background-color: var(--base); + position: sticky; + top: 0; + z-index: 10; +} + +.lp-header__inner { + height: 3.5rem; + display: flex; +} + +.lp-header__start { + height: 100%; + flex: 1; + display: flex; + gap: 2.5rem; +} + +.lp-header__end { + height: 100%; + display: flex; + align-items: center; + margin-right: -1rem; + gap: 0.25rem; +} +@media (min-width: 48em) { + .lp-header__end { + gap: 1rem; + } +} +@media (min-width: 64em) { + .lp-header__end { + margin-right: 0; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-hero-info.css b/app/assets/stylesheets/lp/blocks/lp/_lp-hero-info.css new file mode 100644 index 00000000000..0c893650d21 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-hero-info.css @@ -0,0 +1,59 @@ +.lp-hero-info__titles { + display: flex; + flex-direction: column; + gap: 0.75rem; +} +@media (min-width: 48em) { + .lp-hero-info__titles { + gap: 1rem; + } +} + +.lp-hero-info__title { + font-size: 1rem; + line-height: 1.4; + font-weight: 800; +} +@media (min-width: 48em) { + .lp-hero-info__title { + font-size: 1.5rem; + } +} + +.lp-hero-info__catchcopy { + font-size: 2rem; + line-height: 1.2; + font-weight: 800; +} +.lp-hero-info__catchcopy br { + display: none; +} +@media (min-width: 48em) { + .lp-hero-info__catchcopy { + font-size: 2.75rem; + } + .lp-hero-info__catchcopy br { + display: inline; + } +} +@media (min-width: 64em) { + .lp-hero-info__catchcopy { + font-size: 3.25rem; + } +} +@media (min-width: 80em) { + .lp-hero-info__catchcopy { + font-size: 4rem; + } +} + +.lp-hero-info__description p { + font-size: 0.875rem; + line-height: 1.5; + font-weight: 600; +} +@media (min-width: 48em) { + .lp-hero-info__description p { + font-size: 1rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-hero-visual.css b/app/assets/stylesheets/lp/blocks/lp/_lp-hero-visual.css new file mode 100644 index 00000000000..4a21e49b8ee --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-hero-visual.css @@ -0,0 +1,16 @@ +.lp-hero-visual { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.lp-hero-visual__image { + max-height: 12rem; +} +@media (min-width: 48em) { + .lp-hero-visual__image { + max-height: 26.25rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-left-image-section.css b/app/assets/stylesheets/lp/blocks/lp/_lp-left-image-section.css new file mode 100644 index 00000000000..98a01d56264 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-left-image-section.css @@ -0,0 +1,53 @@ +.lp-left-image-section { + padding: 1rem; +} +@media (min-width: 48em) { + .lp-left-image-section { + padding: 1.5rem; + } +} + +.lp-left-image-section__inner { + display: flex; + align-items: center; + gap: 1rem; +} +@media (min-width: 48em) { + .lp-left-image-section__inner { + gap: 1.5rem; + } +} + +.lp-left-image-section__start { + font-size: 5rem; + flex: 0 0 4rem; +} +@media (min-width: 48em) { + .lp-left-image-section__start { + flex: 0 0 8rem; + } +} + +.lp-left-image-section__end { + display: flex; + flex-direction: column; + justify-content: center; + gap: 1rem; +} + +.lp-left-image-section__icon { + display: flex; + justify-content: center; + align-items: center; + float: left; + width: 6rem; + height: 6rem; + margin-right: 1rem; + margin-bottom: 0.75rem; + font-size: 4rem; +} +@media (min-width: 48em) { + .lp-left-image-section__icon { + float: none; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-left-number-section.css b/app/assets/stylesheets/lp/blocks/lp/_lp-left-number-section.css new file mode 100644 index 00000000000..72d8330d66b --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-left-number-section.css @@ -0,0 +1,75 @@ +.lp-left-number-sections__items { + counter-reset: number 0; +} + +.lp-left-number-section { + padding: 1.5rem; + display: flex; + gap: 1rem; +} +@media (min-width: 48em) { + .lp-left-number-section { + gap: 2rem; + } +} + +.lp-left-number-section__start { + flex: 0 0 6rem; +} +@media (min-width: 48em) { + .lp-left-number-section__start { + flex: 0 0 12rem; + } +} + +.lp-left-number-section__header { + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.lp-left-number-section__title { + text-align: center; + color: var(--main); + font-size: 1.25rem; + line-height: 1.4; + font-weight: 800; +} +.lp-left-number-section__title br { + display: none; +} +@media (min-width: 48em) { + .lp-left-number-section__title { + font-size: 1.5rem; + } + .lp-left-number-section__title br { + display: inline; + } +} +.lp-left-number-section__title::before { + counter-increment: number 1; + content: "0" counter(number); + display: block; + font-family: "Lato", sans-serif; + font-style: italic; + -webkit-text-stroke-width: 1px; + -webkit-text-stroke-color: var(--main); + color: #dedef2; + margin-bottom: -0.125rem; + font-size: 2rem; + line-height: 1.4; + font-weight: 900; +} +@media (min-width: 48em) { + .lp-left-number-section__title::before { + font-size: 2.5rem; + } +} + +.lp-left-number-section__end { + display: flex; + flex-direction: column; + gap: 1.25rem; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-mentor-books.css b/app/assets/stylesheets/lp/blocks/lp/_lp-mentor-books.css new file mode 100644 index 00000000000..1f256c33d3d --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-mentor-books.css @@ -0,0 +1,24 @@ +.lp-mentor-books__items { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; + align-items: flex-end; +} + +.lp-mentor-books__item { + flex: 1; +} +@media (min-width: 48em) { + .lp-mentor-books__item { + flex: 0 0 4.75rem; + } +} + +.lp-mentor-books__item-link { + box-shadow: 0 0 0 1px var(--background); + display: block; + transition: all 0.2s ease-out; +} +.lp-mentor-books__item-link:hover { + box-shadow: 0 0 0 1px var(--warning); +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-mentor.css b/app/assets/stylesheets/lp/blocks/lp/_lp-mentor.css new file mode 100644 index 00000000000..85b858d1a6d --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-mentor.css @@ -0,0 +1,182 @@ +.lp-mentor.is-welcome-index { + height: 100%; +} + +.lp-mentor__inner { + display: flex; + flex-direction: column; + gap: 1rem; + padding: 0.75rem 1rem 1rem; +} +@media (min-width: 48em) { + .lp-mentor__inner { + padding: 1.25rem 1.5rem 1.5rem; + } +} +.lp-mentor.is-articles-show .lp-mentor__inner { + padding: 0.75rem 1rem 0; +} +.lp-mentor.is-articles-show .lp-mentor__inner:last-child { + padding-bottom: 1rem; +} + +.lp-mentor__header { + display: flex; + flex-direction: column; + gap: 1rem; + align-items: flex-start; +} +@media (min-width: 48em) { + .lp-mentor__header { + flex-direction: row; + } +} + +.lp-mentor__header-start { + width: 100%; + display: flex; + align-items: center; +} +@media (min-width: 48em) { + .lp-mentor__header-start { + flex: 0 0 4.5rem; + width: auto; + } +} + +.lp-mentor__header-end { + flex: 1; + display: flex; + flex-direction: column; + gap: 0.5rem; + width: 100%; +} +@media (min-width: 48em) { + .lp-mentor__header-end { + width: auto; + } +} + +.lp-mentor__image { + border-radius: 0.25rem; + width: 3rem; + display: block; + margin-inline: auto; +} +@media (min-width: 48em) { + .lp-mentor__image { + width: 100%; + margin-inline: 0; + } +} + +.lp-mentor__name { + font-weight: 800; + color: var(--main); + font-size: 1.125rem; + line-height: 1.2; + text-align: center; +} +@media (min-width: 48em) { + .lp-mentor__name { + font-size: 1.5rem; + text-align: left; + } +} + +.lp-mentor__job { + font-weight: 400; + color: var(--main); + font-size: 0.625rem; + line-height: 1; + text-align: center; + margin-bottom: 0.125rem; +} +@media (min-width: 48em) { + .lp-mentor__job { + font-size: 0.875rem; + text-align: left; + } +} + +.lp-mentor__sns { + display: flex; + gap: 0.5rem; + flex-wrap: wrap; + justify-content: center; +} +@media (min-width: 48em) { + .lp-mentor__sns { + gap: 0.75rem; + flex-wrap: nowrap; + justify-content: flex-start; + } +} + +.lp-mentor__sns-item-link { + color: var(--main); + display: flex; + justify-content: center; + align-items: center; + text-decoration: none; + border: solid 1px var(--main); + border-radius: 0.25rem; + transition: all 0.2s ease-out; +} +.lp-mentor__sns-item-link:hover { + color: var(--welcome-pink); +} +.lp-mentor__sns-item-link { + height: 1.75rem; + width: 1.75rem; + font-size: 1rem; + line-height: 1.45; +} +@media (min-width: 48em) { + .lp-mentor__sns-item-link { + height: 2.25rem; + width: 2.25rem; + font-size: 1.25rem; + } +} + +.lp-mentor__body { + font-size: 0.875rem; +} +.lp-mentor__body.is-trancate { + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; + display: none; +} +@media (min-width: 48em) { + .lp-mentor__body.is-trancate { + display: -webkit-box; + height: 67.2px; + } +} +.lp-mentor__body.is-temp { + font-size: 0.875rem; + line-height: 1.6; +} +.lp-mentor__body.is-temp img { + width: 6.25rem; + float: right; + margin-left: 1rem; + margin-bottom: 0.75rem; +} +.lp-mentor__body.is-temp img.has-3-books { + width: 8.25rem; +} +.lp-mentor__body.is-temp img.has-5-books { + width: 10rem; +} +.lp-mentor__body.is-temp a { + color: var(--link-text); + text-decoration: underline; + cursor: pointer; +} +.lp-mentor__body.is-temp a:hover { + text-decoration: none; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-movie.css b/app/assets/stylesheets/lp/blocks/lp/_lp-movie.css new file mode 100644 index 00000000000..1d2111c7335 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-movie.css @@ -0,0 +1,15 @@ +.lp-movie { + max-width: 40rem; + margin-inline: auto; +} + +.lp-movie__inner { + width: 100%; + padding: 1rem; + aspect-ratio: 16/9; +} +.lp-movie__inner iframe { + width: 100%; + height: 100%; + aspect-ratio: 16/9; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-page-header-nav.css b/app/assets/stylesheets/lp/blocks/lp/_lp-page-header-nav.css new file mode 100644 index 00000000000..0086de9968f --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-page-header-nav.css @@ -0,0 +1,28 @@ +.lp-page-header-nav { + display: flex; + height: 100%; +} + +.lp-page-header-nav__items { + display: flex; + align-items: center; + gap: 0.75rem; +} + +.lp-page-header-nav__item { + position: relative; + flex: 1; + max-width: 50%; + min-width: 10rem; +} +.lp-page-header-nav__item:first-child:last-child { + max-width: 100%; +} +@media (min-width: 48em) { + .lp-page-header-nav__item { + flex: none; + max-width: none; + display: flex; + justify-content: center; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-page-header.css b/app/assets/stylesheets/lp/blocks/lp/_lp-page-header.css new file mode 100644 index 00000000000..8216df0dd84 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-page-header.css @@ -0,0 +1,38 @@ +.lp-page-header { + background-color: var(--main); +} + +.lp-page-header__title { + color: var(--reversal-text); + font-size: 1.25rem; + line-height: 1.4; + font-weight: 700; + max-width: calc(100vw - 2rem); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +@media (min-width: 48em) { + .lp-page-header__title { + font-size: 1.5rem; + max-width: none; + } +} + +.lp-page-header__inner { + height: 4rem; + display: flex; + align-items: center; +} + +.lp-page-header__start { + flex: 1; + height: 100%; + display: flex; + align-items: center; + height: 100%; +} + +.lp-page-header__end { + height: 100%; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-practices-table.css b/app/assets/stylesheets/lp/blocks/lp/_lp-practices-table.css new file mode 100644 index 00000000000..1c0ea520090 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-practices-table.css @@ -0,0 +1,20 @@ +.lp-practices-table { + width: 100%; +} +.lp-practices-table tr:not(:last-child) { + border-bottom: solid 1px var(--border); +} +.lp-practices-table th, +.lp-practices-table td { + font-size: 0.8125rem; + line-height: 1.5; + padding: 0.5rem 1rem; +} +.lp-practices-table th { + text-align: right; + white-space: nowrap; + font-weight: 400; +} +.lp-practices-table td { + text-align: left; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-price.css b/app/assets/stylesheets/lp/blocks/lp/_lp-price.css new file mode 100644 index 00000000000..9bc716e2163 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-price.css @@ -0,0 +1,116 @@ +.lp-price { + color: var(--main); + display: flex; + justify-content: center; + gap: 0.75em; + font-size: 0.5625rem; +} +@media (min-width: 48em) { + .lp-price { + font-size: 0.875rem; + } +} +@media (min-width: 64em) { + .lp-price { + font-size: 1rem; + } +} +.lp-price.is-total { + gap: 0.25em; +} +.lp-price.is-sm { + justify-content: flex-start; + font-size: 0.375em; +} +.lp-price.is-sm .lp-price__tax { + font-size: 0.875rem; +} +@media (min-width: 48em) { + .lp-price.is-sm { + font-size: 0.5em; + } + .lp-price.is-sm .lp-price__tax { + font-size: 1rem; + } +} +@media (min-width: 64em) { + .lp-price.is-sm { + font-size: 0.5625em; + } + .lp-price.is-sm .lp-price__tax { + font-size: 1.5rem; + } +} + +.lp-price__label { + font-size: 1.25em; + line-height: 1; + font-weight: 700; + align-self: center; + height: 4em; + width: 4em; + border: solid 1px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + letter-spacing: -0.0625em; + text-indent: -0.0625em; +} + +.lp-price__value { + display: flex; + align-self: baseline; + gap: 0.5em; + flex-wrap: wrap; +} + +.lp-price__amount { + font-size: 6.25em; + line-height: 1; + font-weight: 900; + align-self: baseline; + font-family: "Lato", sans-serif; +} + +.lp-price__currency { + font-size: 3.25em; + line-height: 1; + font-weight: 800; + align-self: baseline; +} + +.lp-price__details { + font-size: 2.25em; + line-height: 1; + font-weight: 800; + display: flex; + align-self: baseline; + gap: 0.125em; +} + +.lp-price__separator { + font-weight: 100; + align-self: baseline; +} + +.lp-price__per-person { + align-self: baseline; +} + +.lp-price__tax { + font-size: 1.25em; + align-self: baseline; +} + +.lp-price__total-value { + display: flex; + align-self: baseline; + gap: 0.25em; + font-size: 1.5em; + font-weight: 600; +} + +.lp-price-note { + line-height: 1.4; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-supplementary-info.css b/app/assets/stylesheets/lp/blocks/lp/_lp-supplementary-info.css new file mode 100644 index 00000000000..5da8917fdb8 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-supplementary-info.css @@ -0,0 +1,17 @@ +.lp-supplementary-info { + background-color: var(--lp-bg-3); + border-radius: 0.5rem; +} + +.lp-supplementary-info__inner { + display: flex; + flex-direction: column; + padding: 0.75rem 1rem; + gap: 0.75rem; +} +@media (min-width: 48em) { + .lp-supplementary-info__inner { + padding: 1.5rem 2rem; + gap: 1.25rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-table.css b/app/assets/stylesheets/lp/blocks/lp/_lp-table.css new file mode 100644 index 00000000000..5b408e93e89 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-table.css @@ -0,0 +1,38 @@ +.lp-table { + width: 100%; + background-color: var(--base); +} +.lp-table th, +.lp-table td { + font-size: 0.8125rem; + line-height: 1.5; + padding: 0.5rem 1rem; + border: solid 1px var(--border); + text-align: left; +} +.lp-table th { + font-weight: 400; + width: 30%; + background-color: var(--lp-bg-2); +} +.lp-table td { + text-align: left; +} +.lp-table td *:first-child { + margin-top: 0; +} +.lp-table td *:last-child { + margin-bottom: 0; +} +.lp-table p, +.lp-table ul, +.lp-table ol { + margin-block: 0.75em; +} +.lp-table ul { + list-style-type: disc; + margin-left: 1.5em; +} +.lp-table li { + margin-block: 0.25em; +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-top-cover.css b/app/assets/stylesheets/lp/blocks/lp/_lp-top-cover.css new file mode 100644 index 00000000000..d061b3d94a6 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-top-cover.css @@ -0,0 +1,98 @@ +.lp-top-cover { + background-image: var(--people-bg-image); + background-color: var(--lp-bg-2); + background-repeat: repeat; + position: relative; + height: 24rem; + background-size: 20rem; +} +@media (min-width: 48em) { + .lp-top-cover { + height: 28rem; + background-size: 26rem; + } +} +@media (min-width: 64em) { + .lp-top-cover { + height: 38rem; + background-size: 32rem; + } +} + +.lp-top-cover__container { + height: 100%; +} + +.lp-top-cover__inner { + height: 100%; + position: relative; + z-index: 2; + display: flex; + align-items: center; +} +@media (max-width: 47.9375em) { + .lp-top-cover__inner { + padding-block: 1rem 1.5rem; + } +} + +.lp-top-cover__contents { + max-width: 920px; + margin-inline: auto; +} + +.lp-top-cover__image-container { + display: flex; + justify-content: center; + align-items: center; +} + +.lp-top-cover__logo { + height: auto; + width: 38rem; + display: block; + margin-top: 1.125rem; + margin-inline: auto; +} +@media (max-width: 47.9375em) { + .lp-top-cover__logo { + max-width: 90%; + margin-top: 0.75rem; + } +} + +.lp-top-cover__description { + font-size: 1.5rem; + line-height: 1.4; + text-align: center; + font-weight: 800; + color: var(--reversal-text); + font-feature-settings: "palt"; +} +@media (max-width: 47.9375em) { + .lp-top-cover__description { + font-size: 0.875rem; + } +} + +.lp-top-cover__title { + color: var(--reversal-text); + font-feature-settings: "palt"; + background-color: var(--accent); + color: var(--main); + padding: 0.5rem 1rem; + font-weight: 800; + text-align: center; + font-size: 1.25rem; + line-height: 1.4; +} +@media (min-width: 48em) { + .lp-top-cover__title { + font-size: 2rem; + } +} +@media (min-width: 64em) { + .lp-top-cover__title { + font-size: 2.5rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_lp-top-image-sections.css b/app/assets/stylesheets/lp/blocks/lp/_lp-top-image-sections.css new file mode 100644 index 00000000000..aac98e9f320 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_lp-top-image-sections.css @@ -0,0 +1,62 @@ +.lp-top-image-sections__title-icon { + height: 3rem; + width: 3rem; + margin-right: 0.75rem; +} + +.lp-top-image-section { + height: 100%; +} + +.lp-top-image-section__inner { + height: 100%; + display: flex; + flex-direction: column; + padding: 1rem 1.25rem 1.25rem; + gap: 0.75rem; +} +@media (min-width: 48em) { + .lp-top-image-section__inner { + padding: 1.25rem 1.5rem 1.5rem; + gap: 1.25rem; + } +} + +.lp-top-image-section__icon { + display: block; + margin-inline: auto; + display: flex; + justify-content: center; + align-items: center; + width: 6rem; + font-size: 4rem; +} +@media (min-width: 64em) { + .lp-top-image-section__icon { + width: 8rem; + font-size: 5rem; + } +} + +.lp-top-image-section__chart-container { + aspect-ratio: 3/4; +} +@media (min-width: 48em) { + .lp-top-image-section__chart-container { + aspect-ratio: 5/3; + } +} + +.lp-top-image-section__float-image { + float: left; + border-radius: 0.25rem; + width: 4rem; + margin-right: 1rem; + margin-bottom: 0.75rem; +} +@media (min-width: 48em) { + .lp-top-image-section__float-image { + width: 6.75rem; + margin-right: 1.5rem; + } +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_side-filter.css b/app/assets/stylesheets/lp/blocks/lp/_side-filter.css new file mode 100644 index 00000000000..d4995b2aa59 --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_side-filter.css @@ -0,0 +1,39 @@ +.side-filter { + position: sticky; + top: 4rem; + max-width: 14rem; + margin: 0; +} +.side-filter .a-card { + overflow: hidden; +} +.side-filter { + display: none; +} +@media (min-width: 64em) { + .side-filter { + display: block; + } +} + +.side-filter__item-link { + display: flex; + padding: 0.75rem; + font-size: 0.875rem; + line-height: 1.4; + overflow: hidden; + text-decoration: none; + transition: all 0.2s ease-out; +} +.side-filter__item:not(:last-child) .side-filter__item-link { + border-bottom: solid 1px var(--border-tint); +} +.side-filter__item-link:hover { + background-color: var(--primary-tint); +} +.side-filter__item-link.is-active { + background-color: var(--main); + pointer-events: none; + text-decoration: none; + color: var(--reversal-text); +} diff --git a/app/assets/stylesheets/lp/blocks/lp/_welcome-top-info.css b/app/assets/stylesheets/lp/blocks/lp/_welcome-top-info.css new file mode 100644 index 00000000000..0c920afcc6b --- /dev/null +++ b/app/assets/stylesheets/lp/blocks/lp/_welcome-top-info.css @@ -0,0 +1,55 @@ +.welcome-top-info { + background-color: var(--danger); +} + +.welcome-top-info__inner { + padding-block: 0.75rem; +} +@media (min-width: 48em) { + .welcome-top-info__inner { + display: flex; + align-items: center; + justify-content: center; + } +} + +.welcome-top-info__label { + border: solid 1px var(--reversal-text); + background-color: var(--danger); + font-size: 0.75rem; + line-height: 1.4; + display: flex; + font-weight: 700; + white-space: nowrap; + color: var(--reversal-text); + padding: 0.25rem 0.75rem; + border-radius: 1rem; + align-items: center; + justify-content: center; + width: 10rem; + margin: -26px auto 0.5rem; +} +@media (min-width: 48em) { + .welcome-top-info__label { + margin: 0 0.5rem 0 0; + width: auto; + } +} + +.welcome-top-info__link { + color: var(--reversal-text); + text-decoration: none; + cursor: pointer; +} +.welcome-top-info__link:hover, .welcome-top-info__link:active { + text-decoration: underline; +} +.welcome-top-info__link { + font-size: 0.875rem; + line-height: 1.5; +} +@media (min-width: 48em) { + .welcome-top-info__link { + font-size: 1.125rem; + } +} diff --git a/app/assets/stylesheets/lp/corporate-training/_corporate-training-example.css b/app/assets/stylesheets/lp/corporate-training/_corporate-training-example.css new file mode 100644 index 00000000000..46230a63e81 --- /dev/null +++ b/app/assets/stylesheets/lp/corporate-training/_corporate-training-example.css @@ -0,0 +1,109 @@ +.corporate-training-example__header { + display: flex; + justify-content: center; + align-items: center; + color: var(--main); + border: solid 1px var(--main); + height: 6rem; +} + +@media (min-width: 48em) { + .corporate-training-example__header { + height: 9rem; + } +} + +.corporate-training-example__title { + font-size: 1rem; + line-height: 1.4; +} + +.corporate-training-example__divider { + position: relative; + width: .5rem; + margin: 1.75rem auto; +} + +.corporate-training-example__divider span { + width: .5rem; + height: .5rem; + border-radius: 1rem; + background-color: var(--main); + display: block; + opacity: .5; +} + +.corporate-training-example__divider::before, +.corporate-training-example__divider::after { + content: ''; + width: .5rem; + height: .5rem; + border-radius: 1rem; + background-color: var(--main); + display: block; +} + +.corporate-training-example__divider::before { + left: 0; + position: absolute; + top: -1rem; + opacity: .2; +} + +.corporate-training-example__divider::after { + bottom: -1rem; + left: 0; + position: absolute; + opacity: 1; +} + +.corporate-training-example-content { + padding: 1rem; +} + +.corporate-training-example-content__header { + background-color: var(--main); + color: var(--reversal-text); + display: flex; + justify-content: center; + align-items: center; + height: 3rem; + border-radius: .1875rem; +} + +.corporate-training-example-content__title { + line-height: 1.4; + text-align: center; + font-size: .875rem; +} + +@media (min-width: 48em) { + .corporate-training-example-content__title { + font-size: 1.125rem; + } +} + +.corporate-training-example-content__body { + margin-top: 1.5rem; +} + +.corporate-training-example-content__body ul { + list-style: disc outside; + margin-left: 1.5rem; +} + +.corporate-training-example-content__body li { + font-size: .875rem; + line-height: 1.4; +} + +.corporate-training-example-content__body li + li { + margin-top: .5rem; +} + +.corporate-training-example-content__period { + font-size: 1.25rem; + line-height: 1.4; + font-weight: 800; + text-align: center; +} diff --git a/app/assets/stylesheets/lp/corporate-training/_corporate-training-examples.css b/app/assets/stylesheets/lp/corporate-training/_corporate-training-examples.css new file mode 100644 index 00000000000..634dc487148 --- /dev/null +++ b/app/assets/stylesheets/lp/corporate-training/_corporate-training-examples.css @@ -0,0 +1,11 @@ +.corporate-training-examples__items { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1rem; +} +@media (min-width: 48em) { + .corporate-training-examples__items { + grid-template-columns: repeat(3, 1fr); + gap: 2rem; + } +} diff --git a/app/assets/stylesheets/lp/corporate-training/_corporate-training-testimonial.css b/app/assets/stylesheets/lp/corporate-training/_corporate-training-testimonial.css new file mode 100644 index 00000000000..2641abc239b --- /dev/null +++ b/app/assets/stylesheets/lp/corporate-training/_corporate-training-testimonial.css @@ -0,0 +1,23 @@ +.corporate-training-testimonials__items { + display: flex; + width: 100%; + gap: 2rem; +} + +.corporate-training-testimonial__inner { + padding-inline: 1.5rem; +} +.corporate-training-testimonial__inner.a-card { + margin-inline: 0; +} + +.corporate-training-testimonial__header, +.corporate-training-testimonial__body { + padding-block: 1.5rem; +} + +.corporate-training-testimonial__title { + font-size: 1.25rem; + line-height: 1.4; + font-weight: 800; +} diff --git a/app/assets/stylesheets/lp/layouts/_l-cards.css b/app/assets/stylesheets/lp/layouts/_l-cards.css new file mode 100644 index 00000000000..f320f8b73b8 --- /dev/null +++ b/app/assets/stylesheets/lp/layouts/_l-cards.css @@ -0,0 +1,51 @@ +.l-cards { + display: flex; + flex-direction: column; + gap: 2rem; +} +@media (min-width: 48em) { + .l-cards { + gap: 3rem; + } +} +.l-cards.is-zigzag .l-cards__item:nth-child(odd) { + justify-content: flex-start; +} +.l-cards.is-zigzag .l-cards__item:nth-child(even) { + justify-content: flex-end; +} +.l-cards.is-step-by-step .l-cards__item:first-child { + justify-content: flex-start; +} +.l-cards.is-step-by-step .l-cards__item:nth-child(2) { + justify-content: center; +} +.l-cards.is-step-by-step .l-cards__item:last-child { + justify-content: flex-end; +} +.l-cards.is-stacked { + flex-direction: column; + align-items: center; +} +.l-cards.is-stacked .l-cards__item { + justify-content: center; +} +.l-cards.is-stacked .l-cards__item.is-wide { + flex: 0 0 100%; + max-width: 100%; +} +.l-cards.is-stacked .l-cards__item.is-wide .l-cards__item-inner { + flex: 0 0 100%; +} + +.l-cards__item { + display: flex; +} + +.l-cards__item-inner { + flex: 0 0 40rem; + max-width: calc(100vw - 2rem); +} +.l-cards__item-inner .a-card { + margin-inline: 0; +} diff --git a/app/assets/stylesheets/lp/layouts/_l-sections.css b/app/assets/stylesheets/lp/layouts/_l-sections.css new file mode 100644 index 00000000000..d843667c33a --- /dev/null +++ b/app/assets/stylesheets/lp/layouts/_l-sections.css @@ -0,0 +1 @@ +/* intentionally left blank */ diff --git a/app/assets/stylesheets/modules/_any_login.css b/app/assets/stylesheets/modules/_any_login.css new file mode 100644 index 00000000000..dcd6d8778b2 --- /dev/null +++ b/app/assets/stylesheets/modules/_any_login.css @@ -0,0 +1,76 @@ +body #any_login { + background: black; + opacity: 1; + overflow: hidden; + border-top-right-radius: 0.75rem; +} + +body #any_login #any_login_form_toggle_label { + padding-inline: 1rem; +} + +body #any_login #back_to_previous_id { + margin-right: 1rem; +} + +body #any_login form { + padding: 0; + height: 3.25rem; + display: flex; + align-items: center; +} + +body #any_login form img { + cursor: pointer; + vertical-align: middle; + padding: 1rem; + width: 3.25rem; + height: 3.25rem; + opacity: 1; + transition: all 0.2s ease-out; +} + +body #any_login form img:hover { + opacity: 0.7; +} + +body #any_login form select, +body #any_login form input[type="text"], +body #any_login form input[type="submit"] { + background-color: var(--base); + height: 2rem; + border-radius: 0.25rem; + padding-inline: 0.75rem; +} + +body #any_login form select { + cursor: pointer; + min-width: 10rem; +} + +body #any_login form input[type="text"] { + min-width: 6rem; +} + +body #any_login form input[type="submit"] { + background-color: var(--danger); + color: var(--reversal-text); + font-weight: 600; + margin-inline: 0.5em; + height: 2rem; + padding-inline: 0.75em; +} + +body #any_login form .visible_box { + padding-right: 0.875rem; +} + +body #any_login form .any_login_user_information { + font-size: 0.875rem; + padding-left: 0; +} + +body #any_login form #anylogin_back_to_user { + padding-inline: 0.5rem; + color: var(--reversal-text); +} diff --git a/app/assets/stylesheets/modules/_choices.css b/app/assets/stylesheets/modules/_choices.css new file mode 100644 index 00000000000..b695ca72e87 --- /dev/null +++ b/app/assets/stylesheets/modules/_choices.css @@ -0,0 +1,77 @@ +body .choices.is-open { + z-index: 5; +} +body .choices__inner { + background-color: var(--input-background); + border-color: var(--input-border); + padding: 0.25rem; + border-radius: 4px; + min-height: 2.5rem; +} +body .choices.is-focused .choices__inner { + background-color: var(--base); +} +body .choices[data-type*=select-one] .choices__inner { + padding-block: 0; + display: flex; +} +body .choices__list--single { + padding: 0.25rem 2.5rem 0.25rem 0.5rem; + display: flex; + align-items: center; +} +body .choices__list--single .choices__item { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +body .choices__list--multiple .choices__item, +body .choices__list--multiple .choices__item[data-deletable] { + display: inline-block; + position: relative; + max-width: calc(100% - 0.25rem); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + align-items: center; + border-color: var(--input-selected-border); + color: var(--input-selected-text); + background-color: var(--input-selected-background); + border-radius: 4px; + line-height: 1.625rem; + height: 1.75rem; + padding: 0 2.25rem 0 0.5rem; + margin: 0.125rem; +} +body .choices__list--multiple .choices__item.is-highlighted, +body .choices__list--multiple .choices__item[data-deletable].is-highlighted { + border-color: var(--input-selected-border); + color: var(--input-selected-text); + background-color: var(--input-selected-background); +} +body .choices[data-type*=select-multiple] .choices__button, +body .choices[data-type*=text] .choices__button { + border-left-color: var(--input-selected-border); + color: var(--input-selected-text); + height: 100%; + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2021%2021%22%20style%3D%22enable-background%3Anew%200%200%2021%2021%22%20xml%3Aspace%3D%22preserve%22%3E%3Cstyle%3E.st0%7Bfill%3A%233f3290%7D%3C%2Fstyle%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M2.6%200%2021%2018.4%2018.4%2021%200%202.6%202.6%200z%22%2F%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M0%2018.4%2018.4%200l2.5%202.5L2.5%2020.9%200%2018.4z%22%2F%3E%3C%2Fsvg%3E"); + margin: 0 0 0 0.5rem; + width: 1.75rem; + position: absolute; + right: 0; + top: 0; + transition: all 0.2s ease-out; +} +body .choices[data-type*=select-multiple] .choices__button:hover, +body .choices[data-type*=text] .choices__button:hover { + background-color: var(--primary-semi-tint); + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2021%2021%22%20style%3D%22enable-background%3Anew%200%200%2021%2021%22%20xml%3Aspace%3D%22preserve%22%3E%3Cstyle%3E.st0%7Bfill%3A%23ffffff%7D%3C%2Fstyle%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M2.6%200%2021%2018.4%2018.4%2021%200%202.6%202.6%200z%22%2F%3E%3Cpath%20class%3D%22st0%22%20d%3D%22M0%2018.4%2018.4%200l2.5%202.5L2.5%2020.9%200%2018.4z%22%2F%3E%3C%2Fsvg%3E"); +} + +.choices__list--dropdown .choices__item, .choices__list[aria-expanded] .choices__item { + line-height: 1.5; + padding: 0.5rem; +} +.choices__list--dropdown .choices__item:not(:first-child), .choices__list[aria-expanded] .choices__item:not(:first-child) { + border-top: solid 1px var(--border-tint); +} diff --git a/app/javascript/stylesheets/modules/_embla.css b/app/assets/stylesheets/modules/_embla.css similarity index 100% rename from app/javascript/stylesheets/modules/_embla.css rename to app/assets/stylesheets/modules/_embla.css diff --git a/app/assets/stylesheets/modules/_github.css b/app/assets/stylesheets/modules/_github.css new file mode 100644 index 00000000000..90ea104807a --- /dev/null +++ b/app/assets/stylesheets/modules/_github.css @@ -0,0 +1,535 @@ +:root { + --color-scale-black: #1b1f23; + --color-scale-white: #fff; + --color-scale-gray-0: #fafbfc; + --color-scale-gray-1: #f6f8fa; + --color-scale-gray-2: #e1e4e8; + --color-scale-gray-3: #d1d5da; + --color-scale-gray-4: #959da5; + --color-scale-gray-5: #6a737d; + --color-scale-gray-6: #586069; + --color-scale-gray-7: #444d56; + --color-scale-gray-8: #2f363d; + --color-scale-gray-9: #24292e; + --color-scale-blue-0: #f1f8ff; + --color-scale-blue-1: #dbedff; + --color-scale-blue-2: #c8e1ff; + --color-scale-blue-3: #79b8ff; + --color-scale-blue-4: #2188ff; + --color-scale-blue-5: #0366d6; + --color-scale-blue-6: #005cc5; + --color-scale-blue-7: #044289; + --color-scale-blue-8: #032f62; + --color-scale-blue-9: #05264c; + --color-scale-green-0: #f0fff4; + --color-scale-green-1: #dcffe4; + --color-scale-green-2: #bef5cb; + --color-scale-green-3: #85e89d; + --color-scale-green-4: #34d058; + --color-scale-green-5: #28a745; + --color-scale-green-6: #22863a; + --color-scale-green-7: #176f2c; + --color-scale-green-8: #165c26; + --color-scale-green-9: #144620; + --color-scale-yellow-0: #fffdef; + --color-scale-yellow-1: #fffbdd; + --color-scale-yellow-2: #fff5b1; + --color-scale-yellow-3: #ffea7f; + --color-scale-yellow-4: #ffdf5d; + --color-scale-yellow-5: #ffd33d; + --color-scale-yellow-6: #f9c513; + --color-scale-yellow-7: #dbab09; + --color-scale-yellow-8: #b08800; + --color-scale-yellow-9: #735c0f; + --color-scale-orange-0: #fff8f2; + --color-scale-orange-1: #ffebda; + --color-scale-orange-2: #ffd1ac; + --color-scale-orange-3: #ffab70; + --color-scale-orange-4: #fb8532; + --color-scale-orange-5: #f66a0a; + --color-scale-orange-6: #e36209; + --color-scale-orange-7: #d15704; + --color-scale-orange-8: #c24e00; + --color-scale-orange-9: #a04100; + --color-scale-red-0: #ffeef0; + --color-scale-red-1: #ffdce0; + --color-scale-red-2: #fdaeb7; + --color-scale-red-3: #f97583; + --color-scale-red-4: #ea4a5a; + --color-scale-red-5: #d73a49; + --color-scale-red-6: #cb2431; + --color-scale-red-7: #b31d28; + --color-scale-red-8: #9e1c23; + --color-scale-red-9: #86181d; + --color-scale-purple-0: #f5f0ff; + --color-scale-purple-1: #e6dcfd; + --color-scale-purple-2: #d1bcf9; + --color-scale-purple-3: #b392f0; + --color-scale-purple-4: #8a63d2; + --color-scale-purple-5: #6f42c1; + --color-scale-purple-6: #5a32a3; + --color-scale-purple-7: #4c2889; + --color-scale-purple-8: #3a1d6e; + --color-scale-purple-9: #29134e; + --color-scale-pink-0: #ffeef8; + --color-scale-pink-1: #fedbf0; + --color-scale-pink-2: #f9b3dd; + --color-scale-pink-3: #f692ce; + --color-scale-pink-4: #ec6cb9; + --color-scale-pink-5: #ea4aaa; + --color-scale-pink-6: #d03592; + --color-scale-pink-7: #b93a86; + --color-scale-pink-8: #99306f; + --color-scale-pink-9: #6d224f; + --color-auto-black: #1b1f23; + --color-auto-white: #fff; + --color-auto-gray-0: #fafbfc; + --color-auto-gray-1: #f6f8fa; + --color-auto-gray-2: #e1e4e8; + --color-auto-gray-3: #d1d5da; + --color-auto-gray-4: #959da5; + --color-auto-gray-5: #6a737d; + --color-auto-gray-6: #586069; + --color-auto-gray-7: #444d56; + --color-auto-gray-8: #2f363d; + --color-auto-gray-9: #24292e; + --color-auto-blue-0: #f1f8ff; + --color-auto-blue-1: #dbedff; + --color-auto-blue-2: #c8e1ff; + --color-auto-blue-3: #79b8ff; + --color-auto-blue-4: #2188ff; + --color-auto-blue-5: #0366d6; + --color-auto-blue-6: #005cc5; + --color-auto-blue-7: #044289; + --color-auto-blue-8: #032f62; + --color-auto-blue-9: #05264c; + --color-auto-green-0: #f0fff4; + --color-auto-green-1: #dcffe4; + --color-auto-green-2: #bef5cb; + --color-auto-green-3: #85e89d; + --color-auto-green-4: #34d058; + --color-auto-green-5: #28a745; + --color-auto-green-6: #22863a; + --color-auto-green-7: #176f2c; + --color-auto-green-8: #165c26; + --color-auto-green-9: #144620; + --color-auto-yellow-0: #fffdef; + --color-auto-yellow-1: #fffbdd; + --color-auto-yellow-2: #fff5b1; + --color-auto-yellow-3: #ffea7f; + --color-auto-yellow-4: #ffdf5d; + --color-auto-yellow-5: #ffd33d; + --color-auto-yellow-6: #f9c513; + --color-auto-yellow-7: #dbab09; + --color-auto-yellow-8: #b08800; + --color-auto-yellow-9: #735c0f; + --color-auto-orange-0: #fff8f2; + --color-auto-orange-1: #ffebda; + --color-auto-orange-2: #ffd1ac; + --color-auto-orange-3: #ffab70; + --color-auto-orange-4: #fb8532; + --color-auto-orange-5: #f66a0a; + --color-auto-orange-6: #e36209; + --color-auto-orange-7: #d15704; + --color-auto-orange-8: #c24e00; + --color-auto-orange-9: #a04100; + --color-auto-red-0: #ffeef0; + --color-auto-red-1: #ffdce0; + --color-auto-red-2: #fdaeb7; + --color-auto-red-3: #f97583; + --color-auto-red-4: #ea4a5a; + --color-auto-red-5: #d73a49; + --color-auto-red-6: #cb2431; + --color-auto-red-7: #b31d28; + --color-auto-red-8: #9e1c23; + --color-auto-red-9: #86181d; + --color-auto-purple-0: #f5f0ff; + --color-auto-purple-1: #e6dcfd; + --color-auto-purple-2: #d1bcf9; + --color-auto-purple-3: #b392f0; + --color-auto-purple-4: #8a63d2; + --color-auto-purple-5: #6f42c1; + --color-auto-purple-6: #5a32a3; + --color-auto-purple-7: #4c2889; + --color-auto-purple-8: #3a1d6e; + --color-auto-purple-9: #29134e; + --color-auto-pink-0: #ffeef8; + --color-auto-pink-1: #fedbf0; + --color-auto-pink-2: #f9b3dd; + --color-auto-pink-3: #f692ce; + --color-auto-pink-4: #ec6cb9; + --color-auto-pink-5: #ea4aaa; + --color-auto-pink-6: #d03592; + --color-auto-pink-7: #b93a86; + --color-auto-pink-8: #99306f; + --color-auto-pink-9: #6d224f; + --color-text-primary: #24292e; + --color-text-secondary: #586069; + --color-text-tertiary: #6a737d; + --color-text-placeholder: #6a737d; + --color-text-disabled: #6a737d; + --color-text-inverse: #fff; + --color-text-link: #0366d6; + --color-text-danger: #cb2431; + --color-text-success: #22863a; + --color-text-warning: #b08800; + --color-icon-primary: #24292e; + --color-icon-secondary: #586069; + --color-icon-tertiary: #959da5; + --color-icon-info: #0366d6; + --color-icon-danger: #d73a49; + --color-icon-success: #22863a; + --color-icon-warning: #b08800; + --color-border-primary: #e1e4e8; + --color-border-secondary: #eaecef; + --color-border-tertiary: #d1d5da; + --color-border-inverse: #fff; + --color-border-info: #0366d6; + --color-border-danger: #d73a49; + --color-border-success: #34d058; + --color-border-warning: #f9c513; + --color-bg-canvas: #fff; + --color-bg-canvas-mobile: #fff; + --color-bg-canvas-inverse: #24292e; + --color-bg-primary: #fff; + --color-bg-secondary: #fafbfc; + --color-bg-tertiary: #f6f8fa; + --color-bg-overlay: #fff; + --color-bg-info: #f1f8ff; + --color-bg-info-inverse: #0366d6; + --color-bg-danger: #ffeef0; + --color-bg-danger-inverse: #d73a49; + --color-bg-success: #dcffe4; + --color-bg-success-inverse: #28a745; + --color-bg-warning: #fff5b1; + --color-bg-warning-inverse: #ffd33d; + --color-shadow-small: 0 1px 0 rgba(27,31,35,0.04); + --color-shadow-medium: 0 3px 6px rgba(149,157,165,0.15); + --color-shadow-large: 0 8px 24px rgba(149,157,165,0.2); + --color-shadow-extra-large: 0 12px 48px rgba(149,157,165,0.3); + --color-shadow-highlight: inset 0 1px 0 hsla(0,0%,100%,0.25); + --color-shadow-inset: inset 0 1px 0 rgba(225,228,232,0.2); + --color-state-hover-primary-bg: #0366d6; + --color-state-hover-primary-border: #0366d6; + --color-state-hover-primary-text: #fff; + --color-state-hover-primary-icon: #fff; + --color-state-hover-secondary-bg: #f6f8fa; + --color-state-hover-secondary-border: #f6f8fa; + --color-state-selected-primary-bg: #0366d6; + --color-state-selected-primary-border: #0366d6; + --color-state-selected-primary-text: #fff; + --color-state-selected-primary-icon: #fff; + --color-state-focus-border: #0366d6; + --color-state-focus-shadow: 0 0 0 3px rgba(3,102,214,0.3); + --color-fade-black-10: rgba(27,31,35,0.1); + --color-fade-black-15: rgba(27,31,35,0.15); + --color-fade-black-30: rgba(27,31,35,0.3); + --color-fade-black-50: rgba(27,31,35,0.5); + --color-fade-black-70: rgba(27,31,35,0.7); + --color-fade-black-85: rgba(27,31,35,0.85); + --color-fade-white-10: hsla(0,0%,100%,0.1); + --color-fade-white-15: hsla(0,0%,100%,0.15); + --color-fade-white-30: hsla(0,0%,100%,0.3); + --color-fade-white-50: hsla(0,0%,100%,0.5); + --color-fade-white-70: hsla(0,0%,100%,0.7); + --color-fade-white-85: hsla(0,0%,100%,0.85); + --color-alert-info-text: #24292e; + --color-alert-info-icon: rgba(4,66,137,0.6); + --color-alert-info-bg: #dbedff; + --color-alert-info-border: rgba(4,66,137,0.2); + --color-alert-warn-text: #24292e; + --color-alert-warn-icon: #b08800; + --color-alert-warn-bg: #fffbdd; + --color-alert-warn-border: rgba(176,136,0,0.2); + --color-alert-error-text: #24292e; + --color-alert-error-icon: rgba(158,28,35,0.6); + --color-alert-error-bg: #ffe3e6; + --color-alert-error-border: rgba(158,28,35,0.2); + --color-alert-success-text: #24292e; + --color-alert-success-icon: rgba(23,111,44,0.8); + --color-alert-success-bg: #dcffe4; + --color-alert-success-border: rgba(23,111,44,0.2); + --color-autocomplete-bg: #fff; + --color-autocomplete-border: #e1e4e8; + --color-autocomplete-shadow: 0 3px 6px rgba(149,157,165,0.15); + --color-autocomplete-row-border: #eaecef; + --color-blankslate-icon: #a3aab1; + --color-btn-bg: #fafbfc; + --color-btn-border: rgba(27,31,35,0.15); + --color-btn-text: #24292e; + --color-btn-ic: #6a737d; + --color-btn-shadow: 0 1px 0 rgba(27,31,35,0.04); + --color-btn-shadow-highlight: inset 0 1px 0 hsla(0,0%,100%,0.25); + --color-btn-bg-hover: #f3f4f6; + --color-btn-bg-active: #edeff2; + --color-btn-shadow-active: inset 0 0.15em 0.3em rgba(27,31,35,0.15); + --color-btn-shadow-input-focus: 0 0 0 0.2em rgba(3,102,214,0.3); + --color-btn-primary-bg: #2ea44f; + --color-btn-primary-border: rgba(27,31,35,0.15); + --color-btn-primary-border-disabled: rgba(27,31,35,0.1); + --color-btn-primary-text: #fff; + --color-btn-primary-ic: hsla(0,0%,100%,0.8); + --color-btn-primary-shadow: 0 1px 0 rgba(27,31,35,0.1); + --color-btn-primary-shadow-highlight: inset 0 1px 0 hsla(0,0%,100%,0.03); + --color-btn-primary-shadow-selected: inset 0 1px 0 rgba(20,70,32,0.2); + --color-btn-primary-bg-hover: #2c974b; + --color-btn-primary-bg-active: #2a8f47; + --color-btn-primary-bg-disabled: #94d3a2; + --color-btn-primary-disabled-text: hsla(0,0%,100%,0.8); + --color-btn-primary-disabled-shadow: 0 0 0 3px rgba(46,164,79,0.4); + --color-btn-primary-counter-bg: hsla(0,0%,100%,0.2); + --color-btn-inverse-on-hover-border: rgba(27,31,35,0.15); + --color-btn-inverse-on-hover-shadow: 0 1px 0 rgba(27,31,35,0.1); + --color-btn-inverse-on-hover-shadow-inset: inset 0 1px 0 hsla(0,0%,100%,0.03); + --color-btn-inverse-on-hover-counter-bg: hsla(0,0%,100%,0.2); + --color-btn-danger-text: #d73a49; + --color-btn-danger-text-disabled: rgba(215,58,73,0.5); + --color-btn-danger-bg-hover: #cb2431; + --color-btn-danger-bg-active: #be222e; + --color-btn-danger-shadow: inset 0 1px 0 rgba(134,24,29,0.2); + --color-btn-danger-shadow-focus: 0 0 0 3px rgba(203,36,49,0.4); + --color-btn-danger-counter-bg: rgba(215,58,73,0.1); + --color-btn-danger-counter-bg-disabled: rgba(215,58,73,0.05); + --color-btn-outline-text: #0366d6; + --color-btn-outline-text-disabled: rgba(3,102,214,0.5); + --color-btn-outline-bg-hover: #0366d6; + --color-btn-outline-bg-active: #035fc7; + --color-btn-outline-shadow: inset 0 1px 0 rgba(5,38,76,0.2); + --color-btn-outline-shadow-focus: 0 0 0 3px rgba(0,92,197,0.4); + --color-btn-outline-counter-bg: rgba(3,102,214,0.1); + --color-btn-outline-counter-bg-disabled: rgba(3,102,214,0.05); + --color-btn-counter-bg: rgba(27,31,35,0.08); + --color-counter-text: #24292e; + --color-counter-bg: rgba(209,213,218,0.5); + --color-counter-primary-text: #fff; + --color-counter-primary-bg: #6a737d; + --color-counter-secondary-text: #6a737d; + --color-dropdown-bg: #fff; + --color-dropdown-border: #e1e4e8; + --color-dropdown-shadow: 0 8px 24px rgba(149,157,165,0.2); + --color-label-border: #e1e4e8; + --color-label-primary-text: #24292e; + --color-label-primary-border: #6a737d; + --color-label-secondary-text: #586069; + --color-label-secondary-border: #e1e4e8; + --color-label-info-text: #0366d6; + --color-label-info-border: #0366d6; + --color-label-success-text: #22863a; + --color-label-success-border: #28a745; + --color-label-warning-text: #735c0f; + --color-label-warning-border: #b08800; + --color-label-danger-text: #d73a49; + --color-label-danger-border: #cb2431; + --color-topic-tag-bg: #f1f8ff; + --color-topic-tag-border: #f1f8ff; + --color-topic-tag-text: #0366d6; + --color-input-bg: #fff; + --color-input-contrast-bg: #fafbfc; + --color-input-border: #e1e4e8; + --color-input-shadow: inset 0 1px 2px rgba(27,31,35,0.075); + --color-input-disabled-bg: #fff; + --color-input-disabled-border: #e1e4e8; + --color-input-warning-border: #f9c513; + --color-input-error-border: #cb2431; + --color-input-tooltip-success-text: #144620; + --color-input-tooltip-success-bg: #dcffe4; + --color-input-tooltip-success-border: #34d058; + --color-input-tooltip-warning-text: #735c0f; + --color-input-tooltip-warning-bg: #fff5b1; + --color-input-tooltip-warning-border: #f9c513; + --color-input-tooltip-error-text: #86181d; + --color-input-tooltip-error-bg: #ffeef0; + --color-input-tooltip-error-border: #f97583; + --color-avatar-border: transparent; + --color-avatar-stack-fade: #d1d5da; + --color-avatar-stack-fade-more: #e1e4e8; + --color-avatar-child-shadow: -2px -2px 0 hsla(0,0%,100%,0.8); + --color-toast-ic-bg-loading: #586069; + --color-timeline-text: #444d56; + --color-timeline-badge-bg: #e1e4e8; + --color-timeline-target-badge-border: #2188ff; + --color-timeline-target-badge-shadow: #c8e1ff; + --color-select-menu-bg: #fff; + --color-select-menu-border: #e1e4e8; + --color-select-menu-border-secondary: #eaecef; + --color-select-menu-shadow: 0 0 18px rgba(27,31,35,0.4); + --color-select-menu-backdrop-bg: rgba(27,31,35,0.5); + --color-select-menu-backdrop-border: transparent; + --color-select-menu-tap-highlight: rgba(209,213,218,0.5); + --color-select-menu-tap-focus-bg: #dbedff; + --color-box-blue-border: #c8e1ff; + --color-box-row-yellow-bg: #fffbdd; + --color-box-row-blue-bg: #f1f8ff; + --color-box-header-blue-bg: #f1f8ff; + --color-box-header-blue-border: #c8e1ff; + --color-popover-border: rgba(27,31,35,0.15); + --color-branch-name-text: rgba(27,31,35,0.6); + --color-branch-name-icon: #a8bbd0; + --color-branch-name-bg: #eaf5ff; + --color-branch-name-link-text: #0366d6; + --color-branch-name-link-icon: #a8bbd0; + --color-branch-name-link-bg: #eaf5ff; + --color-markdown-code-bg: rgba(27,31,35,0.05); + --color-markdown-frame-border: #dfe2e5; + --color-markdown-blockquote-border: #dfe2e5; + --color-markdown-table-border: #dfe2e5; + --color-markdown-table-tr-border: #c6cbd1; + --color-menu-heading-text: #24292e; + --color-menu-border-active: #f9826c; + --color-sidenav-selected-bg: #fff; + --color-sidenav-border-active: #f9826c; + --color-tabnav-selected-bg: #fff; + --color-header-text: hsla(0,0%,100%,0.7); + --color-header-bg: #24292e; + --color-header-logo: #fff; + --color-filter-item-bar-bg: #eff3f6; + --color-hidden-text-expander-bg: #dfe2e5; + --color-hidden-text-expander-bg-hover: #c6cbd1; + --color-drag-and-drop-border: #c3c8cf; + --color-upload-enabled-border: #dfe2e5; + --color-upload-enabled-border-focused: #4a9eff; + --color-previewable-comment-form-border: #c3c8cf; + --color-previewable-comment-form-bg: #fff; + --color-underlinenav-border: rgba(209,213,218,0); + --color-underlinenav-border-hover: #d1d5da; + --color-underlinenav-border-active: #f9826c; + --color-underlinenav-text: #24292e; + --color-underlinenav-text-hover: #24292e; + --color-underlinenav-text-active: #24292e; + --color-underlinenav-icon: #959da5; + --color-underlinenav-icon-hover: #959da5; + --color-underlinenav-icon-active: #24292e; + --color-underlinenav-counter-text: #24292e; + --color-social-count-bg: #fff; + --color-header-search-bg: #24292e; + --color-header-search-border: #444d56; + --color-icon-folder: #79b8ff; + --color-hl-author-bg: #f1f8ff; + --color-hl-author-border: #c8e1ff; + --color-logo-subdued: #d1d5da; + --color-discussion-border: #a2cbac; + --color-diff-neutral-bg: #d1d5da; + --color-diff-neutral-border: #d1d5da; + --color-diff-deletion-bg: #d73a49; + --color-diff-deletion-bg-strong: #1b1f23; + --color-diff-deletion-border: #d73a49; + --color-diff-deletion-border-strong: #1b1f23; + --color-diff-addition-bg: #28a745; + --color-diff-addition-bg-strong: #1b1f23; + --color-diff-addition-border: #28a745; + --color-diff-addition-border-strong: #1b1f23; + --color-global-nav-logo: #fff; + --color-global-nav-bg: #24292e; + --color-global-nav-text: #fff; + --color-global-nav-icon: #fff; + --color-global-nav-input-bg: #fafbfc; + --color-global-nav-input-border: #fafbfc; + --color-global-nav-input-icon: #d1d5da; + --color-global-nav-input-placeholder: #959da5; + --color-calendar-graph-day-bg: #ebedf0; + --color-calendar-graph-day-border: rgba(27,31,35,0.06); + --color-calendar-graph-day-L1-bg: #9be9a8; + --color-calendar-graph-day-L2-bg: #40c463; + --color-calendar-graph-day-L3-bg: #30a14e; + --color-calendar-graph-day-L4-bg: #216e39; + --color-calendar-graph-day-L4-border: rgba(27,31,35,0.06); + --color-calendar-graph-day-L3-border: rgba(27,31,35,0.06); + --color-calendar-graph-day-L2-border: rgba(27,31,35,0.06); + --color-calendar-graph-day-L1-border: rgba(27,31,35,0.06); + --color-calendar-halloween-graph-day-L1-bg: #ffee4a; + --color-calendar-halloween-graph-day-L2-bg: #ffc501; + --color-calendar-halloween-graph-day-L3-bg: #fe9600; + --color-calendar-halloween-graph-day-L4-bg: #03001c; + --color-footer-invertocat-octicon: #d1d5da; + --color-footer-invertocat-octicon-hover: #6a737d; + --color-pr-state-draft-text: #fff; + --color-pr-state-draft-bg: #6a737d; + --color-pr-state-draft-border: transparent; + --color-pr-state-open-text: #fff; + --color-pr-state-open-bg: #28a745; + --color-pr-state-open-border: transparent; + --color-pr-state-merged-text: #fff; + --color-pr-state-merged-bg: #6f42c1; + --color-pr-state-merged-border: transparent; + --color-pr-state-closed-text: #fff; + --color-pr-state-closed-bg: #d73a49; + --color-pr-state-closed-border: transparent; +} + +.ContributionCalendar-day, +.ContributionCalendar-day[data-level="0"] { + fill: var(--color-calendar-graph-day-bg); + shape-rendering: geometricPrecision; + background-color: var(--color-calendar-graph-day-bg); + shape-rendering: geometricPrecision; + border-radius: 2px; + outline: 1px solid var(--color-calendar-graph-day-border); + outline-offset: -1px; +} + +.ContributionCalendar-day[data-level="1"] { + background-color: var(--color-calendar-graph-day-L1-bg); + outline: 1px solid var(--color-calendar-graph-day-L1-border); +} + +.ContributionCalendar-day[data-level="2"] { + background-color: var(--color-calendar-graph-day-L2-bg); + outline: 1px solid var(--color-calendar-graph-day-L2-border); +} + +.ContributionCalendar-day[data-level="3"] { + background-color: var(--color-calendar-graph-day-L3-bg); + outline: 1px solid var(--color-calendar-graph-day-L3-border); +} + +.ContributionCalendar-day[data-level="4"] { + background-color: var(--color-calendar-graph-day-L4-bg); + outline: 1px solid var(--color-calendar-graph-day-L4-border); +} + +.ContributionCalendar[data-holiday=halloween].ContributionCalendar-day[data-level="1"] { + background-color: var(--color-calendar-halloween-graph-day-L1-bg); +} + +.ContributionCalendar[data-holiday=halloween].ContributionCalendar-day[data-level="2"] { + background-color: var(--color-calendar-halloween-graph-day-L2-bg); +} + +.ContributionCalendar[data-holiday=halloween].ContributionCalendar-day[data-level="3"] { + background-color: var(--color-calendar-halloween-graph-day-L3-bg); +} + +.ContributionCalendar[data-holiday=halloween].ContributionCalendar-day[data-level="4"] { + background-color: var(--color-calendar-halloween-graph-day-L4-bg); +} + +.ContributionCalendar-label { + font-size: 0.625rem; +} + +.github-grass { + overflow-x: auto; +} + +.ContributionCalendar-grid, +.user-grass__image { + border-spacing: 3px !important; + border-collapse: separate; + overflow: hidden; + position: relative; + color: var(--default-text); + min-width: 707px; + transform: scale(0.75); + margin: -0.8rem -5.5rem -0.8rem -5.3rem; +} +.ContributionCalendar-grid thead tr:first-child td:first-child, +.user-grass__image thead tr:first-child td:first-child { + width: 0.75rem !important; +} + +.ContributionCalendar-label:first-child span { + right: 2px; + bottom: 0 !important; +} + +/*# sourceMappingURL=_github.css.map */ diff --git a/app/assets/stylesheets/modules/_multiselect.css b/app/assets/stylesheets/modules/_multiselect.css new file mode 100644 index 00000000000..c9e79405d54 --- /dev/null +++ b/app/assets/stylesheets/modules/_multiselect.css @@ -0,0 +1,71 @@ +.multiselect { + position: absolute; + left: 0; + top: 0; + right: 0; +} + +.multiselect.book { + position: initial; +} + +.multiselect__single { + position: relative; + z-index: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 100%; +} + +.multiselect__content-wrapper { + overflow-y: scroll; + background-color: var(--base); + border: solid 1px var(--border); + border-bottom-left-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; +} + +.multiselect--active { + overflow-y: hidden !important; +} + +.multiselect__content { + display: block !important; +} + +.multiselect__element { + font-size: 0.875rem; +} +.multiselect__element:not(:first-child) { + border-top: solid 1px var(--border); +} +.multiselect__element > span { + display: flex; + height: 2.75rem; + padding-inline: 0.75rem; + align-items: center; + cursor: pointer; + transition: all 0.2s ease-out; +} +.multiselect__element > span:hover { + background-color: var(--background-tint); +} +.multiselect__element > span > span { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 100%; +} + +.multiselect__option--selected { + pointer-events: none; + background-color: #fff5db; +} + +@media (max-width: 47.9375em) { + .multiselect__element { + font-size: 1rem; + } +} diff --git a/app/assets/stylesheets/modules/_select2.css b/app/assets/stylesheets/modules/_select2.css new file mode 100644 index 00000000000..302dc0f3fd5 --- /dev/null +++ b/app/assets/stylesheets/modules/_select2.css @@ -0,0 +1,403 @@ +.select2-container { + display: inline-block; + position: relative; + vertical-align: middle; + max-width: 100%; +} +.form-item .select2-container { + width: 100% !important; +} + +.select2-selection { + cursor: pointer; + display: block; + min-height: 2.25rem; +} + +.select2-selection__rendered { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 0.8125rem; + line-height: 1; +} + +.select2-search { + line-height: 28px; +} + +.select2-selection--single { + height: 2.25rem; + user-select: none; + -webkit-user-select: none; +} + +.select2-selection--single .select2-selection__rendered { + display: block; + padding-left: 1em; + padding-right: 2em; +} + +.select2-selection--single .select2-selection__clear { + position: relative; +} + +.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered { + padding-right: 1em; + padding-left: 2em; +} + +.select2-selection--multiple { + user-select: none; + -webkit-user-select: none; +} + +.select2-selection--multiple .select2-selection__rendered { + display: inline-block; + padding-left: 8px; +} + +.select2-search--inline .select2-search__field { + border: none; + font-size: 100%; + margin-top: 5px; + padding: 0; +} + +.select2-search--inline .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +.select2-dropdown { + background-color: white; + border: 1px solid var(--background-shade); + border-radius: 4px; + display: block; + position: absolute; + left: -100000px; + width: 100%; + z-index: 1051; +} + +.select2-results__option { + font-size: 0.8125rem; + line-height: 1.5; + padding: 6px; + user-select: none; + -webkit-user-select: none; + transition: all 0.1s ease-out; +} +.select2-results__option:not(:last-child) { + border-bottom: dashed 1px var(--background); +} + +.select2-results__option[aria-selected] { + cursor: pointer; +} + +.select2-results__message { + text-align: center; +} + +.select2-container--open .select2-dropdown { + left: 0; +} + +.select2-container--open .select2-dropdown--above { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--open .select2-dropdown--below { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-search--dropdown { + display: block; + padding: 0.5rem; + border-bottom: solid 1px var(--background-shade); +} + +.select2-search--dropdown .select2-search__field { + padding: 4px; + width: 100%; +} + +.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +.select2-search--dropdown.select2-search--hide { + display: none; +} + +.select2-close-mask { + display: block; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 99; + background-color: #fff; + filter: alpha(opacity=0); +} + +.select2-hidden-accessible { + border: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(50%) !important; + clip-path: inset(50%) !important; + height: 1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; + white-space: nowrap !important; +} + +@media (max-width: 47.9375em) { + .select2-search { + flex: 0 0 100%; + } +} +.select2-container--default .select2-selection--single { + background-color: #fff; + border: 1px solid var(--background-shade); + border-radius: 4px; + outline: 0; +} + +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 2.25rem; +} + +.select2-container--default .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; +} + +.select2-container--default .select2-selection--single .select2-selection__placeholder { + color: #999; +} + +.select2-container--default .select2-selection--single .select2-selection__arrow { + height: 2.25rem; + position: absolute; + right: 1px; + top: 1px; + width: 2em; +} + +.select2-container--default .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + width: 0; + height: 0; + margin-left: -4px; + margin-top: -2px; + left: 50%; + position: absolute; + top: 50%; +} + +.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear { + float: left; +} + +.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; +} + +.select2-container--default.select2-container--disabled .select2-selection--single { + background-color: #eee; + cursor: default; +} + +.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; +} + +.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; +} + +.select2-container--default .select2-selection--multiple { + background-color: white; + border: 1px solid var(--background-shade); + border-radius: 4px; + cursor: text; +} + +.select2-container--default .select2-selection--multiple .select2-selection__rendered { + padding: 0.125rem 0.5rem; + width: 100%; + display: flex; + flex-wrap: wrap; + margin: 0 -0.25rem; +} + +.select2-container--default .select2-selection--multiple .select2-selection__placeholder { + color: #999; + margin-top: 5px; +} + +.select2-container--default .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-top: 5px; + margin-right: 10px; +} + +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: rgb(236.55738, 236.13255, 248.87745); + border: 1px solid hsl(242, 51%, 51%); + color: hsl(242, 51%, 51%); + border-radius: 4px; + cursor: default; + margin: 0.125rem 0.25rem; + padding-right: 0.5rem; + display: flex; + align-items: center; + height: 1.75rem; + max-width: 100%; + overflow: hidden; +} + +.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + cursor: pointer; + align-items: center; + justify-content: center; + width: 1.5rem; + height: 100%; + flex: 0 0 1.5rem; + margin-right: 0.5rem; + font-size: 1.125rem; + display: flex; + font-weight: 700; + color: var(--reversal-text); + background-color: hsl(242, 51%, 51%); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { + background-color: rgb(107.45904, 104.0604, 206.0196); +} + +.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline { + float: right; +} + +.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice { + margin-inline: 5px auto; +} + +.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove { + margin-inline: 2px auto; +} + +.select2-container--default.select2-container--focus .select2-selection--multiple { + outline: 0; +} + +.select2-container--default.select2-container--disabled .select2-selection--multiple { + background-color: #eee; + cursor: default; +} + +.select2-container--default.select2-container--disabled .select2-selection__choice__remove { + display: none; +} + +.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--default .select2-search--dropdown .select2-search__field { + border: 1px solid var(--background-shade); +} + +.select2-container--default .select2-search--inline .select2-search__field { + background: transparent; + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; +} + +.select2-container--default .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; +} + +.select2-container--default .select2-results__option[role=group] { + padding: 0; +} + +.select2-container--default .select2-results__option[aria-disabled=true] { + color: #999; +} + +.select2-container--default .select2-results__option[aria-selected=true] { + background-color: var(--background-shade); +} + +.select2-container--default .select2-results__option .select2-results__option { + padding-left: 1em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; +} + +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: rgba(70.5738, 66.3255, 193.7745, 0.8); + color: var(--reversal-text); +} + +.select2-container--default .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} diff --git a/app/assets/stylesheets/modules/_stripe.css b/app/assets/stylesheets/modules/_stripe.css new file mode 100644 index 00000000000..24a28f73c25 --- /dev/null +++ b/app/assets/stylesheets/modules/_stripe.css @@ -0,0 +1,27 @@ +.StripeElement { + background-color: var(--base); + height: 40px; + padding: 10px 12px; + border-radius: 0.25rem; + box-shadow: 0 1px 3px 0 #e6ebf1; + transition: box-shadow 150ms ease; +} + +.StripeElement--focus { + box-shadow: 0 1px 3px 0 #cfd7df; +} + +.StripeElement--invalid { + border-color: var(--danger); +} + +.StripeElement--webkit-autofill { + background-color: #fefde5 !important; +} + +#card-errors { + color: var(--danger); + font-size: 0.875rem; + line-height: 1.4; + margin-top: 0.25em; +} diff --git a/app/assets/stylesheets/modules/_tagify.css b/app/assets/stylesheets/modules/_tagify.css new file mode 100644 index 00000000000..f0d34afa820 --- /dev/null +++ b/app/assets/stylesheets/modules/_tagify.css @@ -0,0 +1,20 @@ +body .tagify { + display: flex !important; + align-items: center; + padding: 0.5rem; + gap: 0.5rem; + --tag-bg: var(--background-semi-shade); + --tag-inset-shadow-size: 2em; + --tag-text-color: var(--default-text); + --tag-text-color--edit: var(--default-text); + --tag-hover: var(--success-tint); + --tag-invalid-color: var(--danger-text); + --tag-invalid-bg: var(--danger-tint); + --tag-remove-bg: var(--danger-tint); + --tag-remove-btn-color: var(--muted-text); + --tag-remove-btn-bg--hover: var(--danger); +} +body .tagify__input, +body .tagify__tag { + margin: 0; +} diff --git a/app/assets/stylesheets/modules/_toasts.css b/app/assets/stylesheets/modules/_toasts.css new file mode 100644 index 00000000000..ddbe0ab8a90 --- /dev/null +++ b/app/assets/stylesheets/modules/_toasts.css @@ -0,0 +1,199 @@ +@keyframes swal2-toast-show { + 0% { + transform: translateY(0) rotateZ(0deg); + opacity: 0; + } + 33% { + transform: translateY(0) rotateZ(0deg); + } + 66% { + transform: translateY(0) rotateZ(0deg); + } + 100% { + transform: translateY(0) rotateZ(0deg); + opacity: 1; + } +} +@keyframes swal2-toast-hide { + 100% { + transform: rotateZ(0deg); + opacity: 0; + } +} +.swal2-popup.swal2-toast { + box-sizing: border-box; + grid-column: 1/4 !important; + grid-row: 1/4 !important; + grid-template-columns: 1fr 99fr 1fr; + padding: 1em; + overflow-y: hidden; + background: rgba(76.2195, 173.6805, 124.95, 0.9); + box-shadow: none; + pointer-events: none; +} +.swal2-popup.swal2-toast > * { + grid-column: 2; +} +.swal2-popup.swal2-toast .swal2-title { + margin: 0; + padding: 0; + font-size: 0.875rem; + text-align: initial; + color: var(--reversal-text); +} +.swal2-popup.swal2-toast .swal2-loading { + justify-content: center; +} +.swal2-popup.swal2-toast .swal2-input { + height: 2em; + margin: 0.5em; + font-size: 1em; +} +.swal2-popup.swal2-toast .swal2-validation-message { + font-size: 1em; +} +.swal2-popup.swal2-toast .swal2-footer { + margin: 0.5em 0 0; + padding: 0.5em 0 0; + font-size: 0.8em; +} +.swal2-popup.swal2-toast .swal2-close { + grid-column: 3/3; + grid-row: 1/99; + align-self: center; + width: 0.8em; + height: 0.8em; + margin: 0; + font-size: 2em; +} +.swal2-popup.swal2-toast .swal2-html-container { + margin: 1em; + padding: 0; + font-size: 1em; + text-align: initial; +} +.swal2-popup.swal2-toast .swal2-html-container:empty { + padding: 0; +} +.swal2-popup.swal2-toast .swal2-loader { + grid-column: 1; + grid-row: 1/99; + align-self: center; + width: 2em; + height: 2em; + margin: 0.25em; +} +.swal2-popup.swal2-toast .swal2-icon { + grid-column: 1; + grid-row: 1/99; + align-self: center; + width: 2em; + min-width: 2em; + height: 2em; + margin: 0 0.5em 0 0; +} +.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content { + display: flex; + align-items: center; + font-size: 1.8em; + font-weight: bold; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring { + width: 2em; + height: 2em; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line] { + top: 0.875em; + width: 1.375em; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] { + left: 0.3125em; +} +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] { + right: 0.3125em; +} +.swal2-popup.swal2-toast .swal2-actions { + justify-content: flex-start; + height: auto; + margin: 0; + margin-top: 0.3125em; + padding: 0; +} +.swal2-popup.swal2-toast .swal2-styled { + margin: 0.25em 0.5em; + padding: 0.4em 0.6em; + font-size: 1em; +} +.swal2-popup.swal2-toast .swal2-styled:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(100, 150, 200, 0.5); +} +.swal2-popup.swal2-toast .swal2-success { + border-color: #a5dc86; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line] { + position: absolute; + width: 1.6em; + height: 3em; + transform: rotate(45deg); + border-radius: 50%; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left] { + top: -0.8em; + left: -0.5em; + transform: rotate(-45deg); + transform-origin: 2em 2em; + border-radius: 4em 0 0 4em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right] { + top: -0.25em; + left: 0.9375em; + transform-origin: 0 1.5em; + border-radius: 0 4em 4em 0; +} +.swal2-popup.swal2-toast .swal2-success .swal2-success-ring { + width: 2em; + height: 2em; +} +.swal2-popup.swal2-toast .swal2-success .swal2-success-fix { + top: 0; + left: 0.4375em; + width: 0.4375em; + height: 2.6875em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line] { + height: 0.3125em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip] { + top: 1.125em; + left: 0.1875em; + width: 0.75em; +} +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long] { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; +} +.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip { + animation: swal2-toast-animate-success-line-tip 0.75s; +} +.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long { + animation: swal2-toast-animate-success-line-long 0.75s; +} +.swal2-popup.swal2-toast.swal2-show { + animation: swal2-toast-show 0.5s; +} +body.is-text .swal2-popup.swal2-toast.swal2-show { + animation: none; +} +.swal2-popup.swal2-toast.swal2-hide { + animation: swal2-toast-hide 0.1s forwards; +} +body.is-text .swal2-popup.swal2-toast.swal2-hide { + animation: none; +} +.swal2-popup.swal2-toast.is-success { + background: rgba(76.2195, 173.6805, 124.95, 0.9); +} +.swal2-popup.swal2-toast.is-error { + background: rgba(245.31, 70.89, 102.867, 0.9); +} diff --git a/app/assets/stylesheets/not-logged-in.css b/app/assets/stylesheets/not-logged-in.css new file mode 100644 index 00000000000..d49fa9543c1 --- /dev/null +++ b/app/assets/stylesheets/not-logged-in.css @@ -0,0 +1,17 @@ +@import "tailwindcss" source(none); +@source "../../views/**/*.slim"; +@source "../../components/**/*.slim"; +@source "../../../app/javascript/**/*.{js,vue,jsx}"; +@source "./**/*.css"; + +@theme { + --container-*: initial; +} + +@import "./common-imports.css"; +@import "./not-logged-in/base/_base.css"; +@import "./not-logged-in/_not-logged-in-wrapper.css"; +@import "./not-logged-in/_completion.css"; +@import "./not-logged-in/_unauthorized.css"; +@import "./not-logged-in/_unauthorized-header.css"; +@import "./not-logged-in/_join-us-nav.css"; diff --git a/app/assets/stylesheets/not-logged-in/_completion.css b/app/assets/stylesheets/not-logged-in/_completion.css new file mode 100644 index 00000000000..ffccccf6aee --- /dev/null +++ b/app/assets/stylesheets/not-logged-in/_completion.css @@ -0,0 +1,31 @@ +.completion { + padding-block: 4rem 2rem; +} + +.completion__title { + font-size: 1em; + line-height: 1.4; + text-align: center; + font-weight: 800; + color: var(--reversal-text); + font-family: var(--sans-serif); + font-size: 2rem; +} + +.completion__body { + margin-top: 3rem; +} + +.completion__image { + border-radius: 1rem; + border: solid 0.75rem var(--completion-dark); +} + +@media (max-width: 47.9375em) { + .completion__title { + font-size: 1.5rem; + } + .completion__image { + border: solid 0.5rem var(--completion-dark); + } +} diff --git a/app/assets/stylesheets/not-logged-in/_join-us-nav.css b/app/assets/stylesheets/not-logged-in/_join-us-nav.css new file mode 100644 index 00000000000..3fc0bb18e50 --- /dev/null +++ b/app/assets/stylesheets/not-logged-in/_join-us-nav.css @@ -0,0 +1,20 @@ +.join-us-nav__items { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1rem; +} + +.join-us-nav__item { + width: 100%; + display: flex; + justify-content: center; +} +.join-us-nav__item.is-main .join-us-nav__item-link { + width: 22.5rem; + max-width: 100%; +} +.join-us-nav__item.is-sub { + text-align: center; +} diff --git a/app/assets/stylesheets/not-logged-in/_not-logged-in-wrapper.css b/app/assets/stylesheets/not-logged-in/_not-logged-in-wrapper.css new file mode 100644 index 00000000000..9ab226abacf --- /dev/null +++ b/app/assets/stylesheets/not-logged-in/_not-logged-in-wrapper.css @@ -0,0 +1,55 @@ +.not-logged-in-wrapper { + min-height: 100vh; + display: flex; + flex-direction: column; +} +.not-logged-in-wrapper::before { + content: ""; + background-image: url(https://bootcamp.fjord.jp/images/background/background.svg); + background-repeat: repeat; + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + z-index: 1; + z-index-width: 100%; + height: 100%; + opacity: 0.075; + background-size: 22rem auto; +} +body.is-completion .not-logged-in-wrapper::before { + content: ""; + background-image: url("https://bootcamp.fjord.jp/images/background/completion_background.svg"); + background-repeat: repeat; + background-repeat-position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + z-index: 1; + z-index-width: 100%; + height: 100%; + opacity: 0.075; + background-size: 16rem auto; +} + +.not-logged-in-wrapper__start { + flex: 1; + position: relative; + z-index: 2; +} + +.not-logged-in-wrapper__end { + position: relative; + z-index: 2; +} + +@media (max-width: 47.9375em) { + .not-logged-in-wrapper::before { + background-size: 16rem auto; + } + body.is-completion .not-logged-in-wrapper::before { + background-size: auto; + } +} diff --git a/app/assets/stylesheets/not-logged-in/_unauthorized-header.css b/app/assets/stylesheets/not-logged-in/_unauthorized-header.css new file mode 100644 index 00000000000..ee19ae897d7 --- /dev/null +++ b/app/assets/stylesheets/not-logged-in/_unauthorized-header.css @@ -0,0 +1,39 @@ +.unauthorized-header__image { + display: block; + margin-inline: auto; + max-width: 6rem; + margin-bottom: 0.75rem; +} + +.unauthorized-header__titles { + color: var(--reversal-text); + font-family: var(--sans-serif); + text-align: center; +} + +.unauthorized-header__title-label { + display: block; + font-weight: 700; + font-size: 1.25rem; +} + +.unauthorized-header__title { + font-size: 1em; + line-height: 1.4; + font-weight: 800; + margin-top: 0.25em; + font-size: 2rem; +} + +@media (max-width: 47.9375em) { + .unauthorized-header__image { + max-width: 4.5rem; + margin-bottom: 0.5rem; + } + .unauthorized-header__title-label { + font-size: 0.875rem; + } + .unauthorized-header__title { + font-size: 1.5rem; + } +} diff --git a/app/assets/stylesheets/not-logged-in/_unauthorized.css b/app/assets/stylesheets/not-logged-in/_unauthorized.css new file mode 100644 index 00000000000..07f77c490cb --- /dev/null +++ b/app/assets/stylesheets/not-logged-in/_unauthorized.css @@ -0,0 +1,66 @@ +.unauthorized { + padding-block: 3rem 2rem; +} + +.unauthorized__body { + margin-top: 3rem; +} + +.unauthorized__contents { + background-color: rgba(0, 0, 0, 0.3); + border-radius: 0.25rem; +} + +.unauthorized__content { + color: var(--reversal-text); + padding: 1.5rem; +} + +.unauthorized__content + .unauthorized__content { + padding-top: 0; +} + +.unauthorized__content-separalor { + border-top: dashed 1px rgba(255, 255, 255, 0.1); +} + +.must-be-enrolled { + font-size: 1rem; + line-height: 1.8; + text-align: center; +} + +.unauthorized-actions__items { + display: flex; + justify-content: center; + gap: 1.5rem; +} + +.unauthorized-actions.is-vertical .unauthorized-actions__items { + flex-direction: column; + align-items: center; +} + +.unauthorized-actions__item { + flex: 1; + max-width: 50%; + text-align: center; +} + +.unauthorized-actions.is-vertical .unauthorized-actions__item { + width: 100%; +} + +@media (max-width: 47.9375em) { + .unauthorized { + padding-block: 2rem; + } + + .unauthorized__body { + margin-top: 2rem; + } + + .unauthorized__content { + padding: 1rem; + } +} diff --git a/app/assets/stylesheets/not-logged-in/base/_base.css b/app/assets/stylesheets/not-logged-in/base/_base.css new file mode 100644 index 00000000000..1baa90e14ea --- /dev/null +++ b/app/assets/stylesheets/not-logged-in/base/_base.css @@ -0,0 +1,12 @@ +html { + font-family: var(--sans-serif); + color: var(--default-text); +} + +body.is-not-logged-in { + background-color: var(--main); +} + +body.is-completion { + background-color: var(--completion); +} diff --git a/app/assets/stylesheets/paper.css b/app/assets/stylesheets/paper.css new file mode 100644 index 00000000000..5f56cef9fe8 --- /dev/null +++ b/app/assets/stylesheets/paper.css @@ -0,0 +1,20 @@ +.book-name { + font-size: 2.3em; + text-align: center; + margin: 9em 0 10em 0; +} + +.book-company_name { + font-size: 1.5em; + text-align: center; +} + +.book-updated { + font-size: 1.5em; + text-align: center; + margin-bottom: 8em; +} + +img { + max-width: 90%; +} diff --git a/app/assets/stylesheets/shared/blocks/_code-toolbar.css b/app/assets/stylesheets/shared/blocks/_code-toolbar.css new file mode 100644 index 00000000000..86b40e12765 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_code-toolbar.css @@ -0,0 +1,60 @@ +pre.code-toolbar { + position: relative; +} + +pre.code-toolbar > .toolbar { + position: absolute; + top: calc(-1rem + 1px); + right: 0; + transition: opacity 0.3s ease-in-out; +} + +pre.code-toolbar > .toolbar .toolbar-item { + display: inline-block; +} + +pre.code-toolbar > .toolbar .toolbar-item:last-child * { + border-left: none; +} + +pre.code-toolbar > .toolbar a { + cursor: pointer; +} + +pre.code-toolbar > .toolbar button { + background: none; + border: 0; + color: inherit; + font: inherit; + line-height: normal; + overflow: visible; + padding: 0; + -webkit-user-select: none; /* for button */ + -moz-user-select: none; + -ms-user-select: none; +} + +pre.code-toolbar > .toolbar a, +pre.code-toolbar > .toolbar button, +pre.code-toolbar > .toolbar span { + font-size: 0.625rem; + height: 1rem; + display: flex; + align-items: center; + justify-content: center; + padding: 0 0.5em; + background-color: #322931; + border-top-left-radius: 0.125rem; + border-top-right-radius: 0.125rem; + text-decoration: none; +} + +:not(pre) > code[class*=language-] { + padding: 0.2em; + padding-top: 1px; + padding-bottom: 1px; + background: #f8f8f8; + border: 1px solid #dddddd; +} + +/*# sourceMappingURL=_code-toolbar.css.map */ diff --git a/app/assets/stylesheets/shared/blocks/_errors.css b/app/assets/stylesheets/shared/blocks/_errors.css new file mode 100644 index 00000000000..1c67eab7f11 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_errors.css @@ -0,0 +1,45 @@ +.errors { + background-color: var(--danger-tint); + border: solid 1px var(--danger); + margin-bottom: 1.25rem; + max-width: 30rem; + margin-inline: auto; + border-radius: 0.25rem; + padding: 0.875rem 1rem; +} +@media (min-width: 48em) { + .errors { + padding: 1rem 1.5rem; + } +} + +.errors__title { + font-size: 0.875rem; + line-height: 1.45; + margin-top: 0; + margin-bottom: 0.8em; + text-align: center; + font-weight: 600; + color: var(--danger-text); +} +@media (max-width: 47.9375em) { + .errors__title { + font-size: 0.8125rem; + } +} + +.errors__item { + font-size: 0.8125rem; + line-height: 1.6; + margin-top: 0; + margin-bottom: 0.2em; + color: var(--danger-text); +} +@media (max-width: 47.9375em) { + .errors__item { + font-size: 0.75rem; + } +} +.errors__item:last-child { + margin-bottom: 0; +} diff --git a/app/assets/stylesheets/shared/blocks/_flash.css b/app/assets/stylesheets/shared/blocks/_flash.css new file mode 100644 index 00000000000..20f6671e0f9 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_flash.css @@ -0,0 +1,78 @@ +.flash { + background-color: var(--danger); + padding-block: 0.75rem; +} + +.flash.is-alert { + background-color: var(--danger); +} + +.flash.is-notice { + background-color: var(--success); +} + +input:checked + .flash { + display: none; +} + +.flash__container { + position: relative; +} + +.flash__message { + font-size: 0.875rem; + line-height: 1.4; + text-align: center; + color: var(--reversal-text); +} + +.flash__message a { + text-decoration: none; + cursor: pointer; + color: var(--reversal-text); +} + +.flash__message a:hover, +.flash__message a:active { + text-decoration: underline; +} + +.flash__close { + position: absolute; + right: 0; + top: 50%; + display: flex; + justify-content: center; + align-items: center; + height: 2.75rem; + width: 2.75rem; + transform: translate(0, -50%); + cursor: pointer; + opacity: 0.7; + transition: all 0.2s ease-out; +} + +.flash__close::before, +.flash__close::after { + content: ""; + display: block; + height: 2px; + width: 50%; + background-color: var(--reversal-text); + position: absolute; + left: 50%; + top: 50%; + border-radius: 2px; +} + +.flash__close::before { + transform: translate(-50%, -50%) rotate(45deg); +} + +.flash__close::after { + transform: translate(-50%, -50%) rotate(-45deg); +} + +.flash__close:hover { + opacity: 1; +} diff --git a/app/assets/stylesheets/shared/blocks/_footprints.css b/app/assets/stylesheets/shared/blocks/_footprints.css new file mode 100644 index 00000000000..5a2985a28a5 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_footprints.css @@ -0,0 +1,70 @@ +.user-icons, +.user-icons__wrapper { + margin-top: 1.5rem; + display: flex; + gap: 0.75rem; +} + +.user-icons__title { + text-align: right; + font-size: 0.875rem; + line-height: 2rem; + font-weight: 600; + white-space: nowrap; +} + +.user-icons__items { + display: flex; + gap: 0.5rem; + flex-wrap: wrap; +} + +@media (max-width: 47.9375em) { + .user-icons__items { + margin-top: 0.75rem; + } +} + +.user-icons-item { + display: flex; + align-items: center; + gap: 0.25rem; +} + +.user-icons-item__delete { + font-size: 0.75rem; + line-height: 1.4; +} + +.user-icons__more { + font-size: 0.8125rem; + line-height: 1.4; + display: block; + white-space: nowrap; + color: var(--main); + text-decoration: none; + cursor: pointer; +} +.user-icons__more:hover, .user-icons__more:active { + text-decoration: underline; +} +.user-icons__more { + align-self: center; +} + +@media (max-width: 47.9375em) { + .user-icons, + .user-icons__wrapper { + display: block; + } + .user-icons__title { + text-align: left; + line-height: 1.4; + } + .user-icons__items { + margin-top: 0.75rem; + } + .user-icons__more { + margin-top: 0.75rem; + } +} diff --git a/app/assets/stylesheets/shared/blocks/_global-nav.css b/app/assets/stylesheets/shared/blocks/_global-nav.css new file mode 100644 index 00000000000..52cbfff4d68 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_global-nav.css @@ -0,0 +1,106 @@ +.global-nav { + background-color: transparent; +} +@media (min-width: 48em) { + .global-nav { + background-color: inherit; + } +} + +.global-nav__background.a-overlay { + background-color: rgba(0, 0, 0, 0.6); + width: 0; + display: inline; +} +input:checked + .global-nav .global-nav__background.a-overlay { + opacity: 1; + width: 100%; + display: block; +} + +@media (min-width: 48em) { + .global-nav__inner { + background-color: var(--main); + height: 100%; + width: var(--global-nav-width); + bottom: 0; + left: 0; + position: fixed; + top: 0; + z-index: 3; + overflow-y: auto; + } +} + +.global-nav-links__link { + position: relative; + display: flex; + text-decoration: none; + white-space: nowrap; + align-items: center; + justify-content: center; + border-bottom: solid 1px var(--main-semi-shade); + color: var(--reversal-text); + transition: color 0.2s ease-in, background-color 0.2s ease-in; + width: 100%; + flex-direction: row; + height: 2.75rem; + padding-inline: 1rem; + justify-content: flex-start; +} +@media (min-width: 48em) { + .global-nav-links__link { + flex-direction: column; + height: 4.125rem; + gap: 0.25rem; + padding-inline: 0; + justify-content: center; + } +} +.global-nav-links__link:hover { + background-color: var(--main-shade); +} +.global-nav-links__link.is-active { + background-color: var(--accent); + color: var(--main); +} + +.global-nav-links__link-icon { + font-size: 1rem; + line-height: 1; + text-align: center; + margin-right: 0.5rem; +} +@media (min-width: 48em) { + .global-nav-links__link-icon { + font-size: 1.125rem; + margin-right: 0; + margin-bottom: 0.25rem; + } +} +.global-nav-links__link-icon .fa-rocket { + font-size: 1.15em; +} + +.global-nav-links__link-label { + font-size: 0.625rem; + line-height: 1.2; + text-align: center; +} +@media (max-width: 47.9375em) { + .global-nav-links__link-label { + font-size: 0.875rem; + } +} +@media (min-width: 48em) { + .global-nav-links__link-label.is-sm { + transform: scale(0.875); + margin-top: -0.125rem; + } +} + +.global-nav__item-count { + position: absolute; + right: 0.25rem; + top: 0.25rem; +} diff --git a/app/assets/stylesheets/shared/blocks/_hour-filter.css b/app/assets/stylesheets/shared/blocks/_hour-filter.css new file mode 100644 index 00000000000..7a19faca7f6 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_hour-filter.css @@ -0,0 +1,144 @@ +.activity-time-filter { + padding-block: 0.875rem; + border-bottom: solid 1px var(--border); +} + +.activity-time-filter__form { + width: 100%; +} + +.activity-time-filter__controls { + display: flex; + gap: 1rem; + align-items: center; + flex-wrap: wrap; +} + +.dropdown-group { + display: flex; + gap: 0.5rem; + align-items: center; +} + +.dropdown-wrapper { + position: relative; + display: inline-block; +} + +.dropdown-button { + display: block; + text-decoration: none; + font-size: 0.75rem; + line-height: 2.3; + text-align: left; + white-space: nowrap; + color: var(--semi-muted-text); + border: solid 1px var(--border-shade); + border-radius: 20rem; + transition: all 0.2s ease-out; + padding: 0.5rem 1rem; + background-color: var(--background); + cursor: pointer; + display: flex; + align-items: center; + gap: 0.5rem; + min-width: 8rem; +} +.dropdown-button:hover { + background-color: var(--background-semi-shade); +} +.dropdown-button:focus { + outline: none; + box-shadow: 0 0 0 2px var(--main-alpha); +} + +.dropdown-button__text { + flex: 1; +} + +.dropdown-button__icon { + font-size: 0.75rem; + transition: transform 0.2s ease-out; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + background-color: var(--background); + border: solid 1px var(--border-shade); + border-radius: 0.5rem; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + min-width: 100%; + max-height: 200px; + overflow-y: auto; + opacity: 0; + visibility: hidden; + transform: translateY(-10px); + transition: all 0.2s ease-out; +} +.dropdown-menu.is-open { + opacity: 1; + visibility: visible; + transform: translateY(0); +} +.dropdown-menu.is-open .dropdown-button__icon { + transform: rotate(180deg); +} + +.dropdown-item { + padding: 0.5rem 1rem; + cursor: pointer; + transition: background-color 0.2s ease-out; + font-size: 0.75rem; + line-height: 1.5; + text-align: left; + white-space: nowrap; +} +.dropdown-item:hover { + background-color: var(--background-semi-shade); +} +.dropdown-item:first-child { + border-radius: 0.5rem 0.5rem 0 0; +} +.dropdown-item:last-child { + border-radius: 0 0 0.5rem 0.5rem; +} + +.search-button { + display: block; + text-decoration: none; + font-size: 0.75rem; + line-height: 2.3; + text-align: center; + white-space: nowrap; + background-color: var(--main); + border: solid 1px var(--main); + color: var(--reversal-text); + border-radius: 20rem; + transition: all 0.2s ease-out; + padding: 0.5rem 1.5rem; + cursor: pointer; + display: flex; + align-items: center; + gap: 0.5rem; +} +.search-button:hover { + background-color: var(--main-shade); + border-color: var(--main-shade); +} +.search-button:focus { + outline: none; + box-shadow: 0 0 0 2px var(--main-alpha); +} + +@media (max-width: 768px) { + .activity-time-filter__controls { + flex-direction: column; + gap: 0.75rem; + } + .dropdown-button { + width: 100%; + } +} diff --git a/app/assets/stylesheets/shared/blocks/_modal.css b/app/assets/stylesheets/shared/blocks/_modal.css new file mode 100644 index 00000000000..d0e2e69e53b --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_modal.css @@ -0,0 +1,171 @@ +.modal { + display: none; + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 100; + padding: 1rem; +} + +input:checked + .modal, +.modal.is-shown { + display: block; +} + +.modal__overlay { + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; + background-color: rgba(0, 0, 0, .8); +} + +.modal__description.is-md { + font-size: .875rem; +} + +.modal__description + .modal__description { + margin-top: 1.25em; + padding-top: 1.25em; + border-top: dashed 1px var(--border); +} + +.modal-header { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: solid 1px var(--border-tint); +} + +@media (min-width: 48em) { + .modal-header { + padding: .25rem 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .modal-header { + padding: .25rem 1rem; + } +} + +.modal-header__close { + display: flex; + align-items: center; + justify-content: center; + height: 2.75rem; + width: 2.75rem; + cursor: pointer; + opacity: .4; + transition: all .2s ease-out; + position: relative; +} + +@media (min-width: 48em) { + .modal-header__close { + margin-right: -1.5rem; + } +} + +@media (max-width: 47.9375em) { + .modal-header__close { + margin-right: -1rem; + } +} + +.modal-header__close::before, +.modal-header__close::after { + content: ""; + display: block; + height: 2px; + width: 40%; + background-color: var(--default-text); + left: 50%; + position: absolute; + top: 50%; + border-radius: 2px; +} + +.modal-header__close::before { + transform: translate(-50%, -50%) rotate(45deg); +} + +.modal-header__close::after { + transform: translate(-50%, -50%) rotate(-45deg); +} + +.modal-header__close:hover { + opacity: 1; +} + +.modal-content { + left: 50%; + position: absolute; + top: 50%; + z-index: 1; + transform: translate(-50%, -50%); + background-color: var(--base); + border-radius: .25rem; + width: 40rem; + max-width: calc(100% - 2rem); +} + +.modal-content.is-sm { + width: 24rem; +} + +.modal-content > *:last-child { + border-bottom: none; +} + +.modal-body { + max-height: calc(100vh - 11.5rem); + overflow: auto; + border-bottom: solid 1px var(--border-tint); +} + +@media (min-width: 48em) { + .modal-body { + padding: 1rem 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .modal-body { + padding: 1rem; + } +} + +.modal-title { + font-weight: 600; +} + +@media (min-width: 48em) { + .modal-title { + font-size: 1.25rem; + } +} + +@media (max-width: 47.9375em) { + .modal-title { + font-size: 1rem; + } +} + +.modal-footer { +} + +@media (min-width: 48em) { + .modal-footer { + padding: .25rem 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .modal-footer { + padding: .25rem 1rem; + } +} diff --git a/app/assets/stylesheets/shared/blocks/_not-logged-in-footer.css b/app/assets/stylesheets/shared/blocks/_not-logged-in-footer.css new file mode 100644 index 00000000000..3cd553b1e54 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_not-logged-in-footer.css @@ -0,0 +1,146 @@ +.not-logged-in-footer { + padding-bottom: 1.5rem; +} + +.not-logged-in-footer .container { + padding-inline: 0; +} + +@media (min-width: 48em) { + .not-logged-in-footer { + padding-block: 3rem; + } + + .not-logged-in-footer .container { + padding-inline: inherit; + } +} + +.not-logged-in-footer__nav { + margin-bottom: 1.5rem; +} + +@media (max-width: 63.9375em) { + .not-logged-in-footer__nav-items { + border-top: solid 1px rgba(225, 225, 229, 0.1); + } +} + +body.is-lp .not-logged-in-footer__nav-items { + border-top: none; +} + +@media (min-width: 48em) { + .not-logged-in-footer__nav-items { + display: flex; + flex-wrap: wrap; + } +} + +@media (min-width: 64em) { + .not-logged-in-footer__nav-items { + gap: 1rem; + justify-content: center; + align-items: center; + } +} + +@media (max-width: 63.9375em) { + .not-logged-in-footer__nav-item { + border-bottom: solid 1px rgba(225, 225, 229, 0.1); + } +} +body.is-lp .not-logged-in-footer__nav-item { + border-color: var(--border); +} + +@media (min-width: 48em) and (max-width: 63.9375em) { + .not-logged-in-footer__nav-item { + flex: 50% 0 0; + } + + .not-logged-in-footer__nav-item:nth-child(odd) { + border-right: solid 1px rgba(225, 225, 229, 0.1); + } +} + +@media (min-width: 64em) { + .not-logged-in-footer__nav-item { + border-bottom: none; + } +} + +.not-logged-in-footer__nav-item-link { + font-size: 0.875rem; + line-height: 1; + color: var(--reversal-text); + text-decoration: none; + cursor: pointer; + display: flex; + align-items: center; + padding-inline: 1rem; + height: 2.75rem; + width: 100%; +} + +.not-logged-in-footer__nav-item-link:hover, +.not-logged-in-footer__nav-item-link:active { + text-decoration: underline; +} + +@media (min-width: 64em) { + .not-logged-in-footer__nav-item-link { + padding-inline: 0; + height: auto; + width: auto; + display: block; + } +} + +.not-logged-in-footer__nav-item-link i { + font-size: 0.75em; + position: relative; + top: -0.0625em; +} + +.not-logged-in-footer__nav-item-link i:first-child { + margin-right: 0.375em; +} + +body.is-lp .not-logged-in-footer__nav-item-link { + color: var(--default-text); +} + +.not-logged-in-footer-copyright { + justify-content: center; + align-items: center; + font-size: 0.875rem; + line-height: 1.4; + display: flex; + color: var(--reversal-text); + gap: 0.25rem; +} + +body.is-lp .not-logged-in-footer-copyright { + color: var(--default-text); +} + +.not-logged-in-footer-copyright__author { + display: block; +} + +.not-logged-in-footer-copyright__author-link { + text-decoration: none; + cursor: pointer; + color: var(--reversal-text); + margin-right: 0.5em; +} + +.not-logged-in-footer-copyright__author-link:hover, +.not-logged-in-footer-copyright__author-link:active { + text-decoration: underline; +} + +body.is-lp .not-logged-in-footer-copyright__author-link { + color: var(--default-text); +} diff --git a/app/assets/stylesheets/shared/blocks/_o-empty-message.css b/app/assets/stylesheets/shared/blocks/_o-empty-message.css new file mode 100644 index 00000000000..c7fd5145542 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_o-empty-message.css @@ -0,0 +1,21 @@ +.o-empty-message { + max-width: 50rem; + margin-inline: auto; + text-align: center; + color: var(--semi-muted-text); +} +.o-empty-message:not(:first-child) { + margin-top: 1.5rem; +} + +.o-empty-message__icon { + font-size: 5rem; + line-height: 1; +} + +.o-empty-message__text { + font-size: 1rem; + line-height: 1.4; + margin-top: 1em; + text-align: center; +} diff --git a/app/assets/stylesheets/shared/blocks/_page-nav.css b/app/assets/stylesheets/shared/blocks/_page-nav.css new file mode 100644 index 00000000000..5ffbd7ea730 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_page-nav.css @@ -0,0 +1,197 @@ +.page-nav { + position: static; +} + +@media (min-width: 64em) { + .page-nav { + right: 0; + top: 3.5rem; + position: sticky; + overflow: hidden; + } +} + +.page-nav__title { + font-size: 0.875rem; + line-height: 1.4; + font-weight: 600; +} + +.page-nav__title-inner { + display: block; + text-align: center; + padding: 0.5rem 0.75rem; + color: var(--default-text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +a.page-nav__title-inner { + text-decoration: none; +} + +a.page-nav__title-inner:hover { + text-decoration: underline; +} + +.page-nav__footer-link { + display: block; + text-decoration: none; + font-size: 0.8125rem; + line-height: 1.4; + text-align: right; + padding: 0.5rem 0.75rem; + color: var(--default-text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.page-nav__footer-link:hover { + text-decoration: underline; +} + +.page-nav__items { + overflow-y: auto; + position: relative; + z-index: 1; + max-height: 12rem; +} + +@media (min-width: 64em) { + .page-nav__items { + max-height: calc(100vh - 8.5rem); + } +} + +.page-nav__item { + border-bottom: solid 1px var(--border-tint); +} + +.page-nav__item:last-child { + border-bottom: none; +} + +.page-nav__item.is-active .page-nav__item-link { + color: var(--default-text); + font-weight: 700; +} + +.page-nav__item.is-current { + position: relative; + z-index: 1; + box-shadow: 0 0 0 1px var(--primary) inset; + background-color: var(--primary-tint); + border-bottom: none; +} + +.page-nav__item.is-current .page-nav__item-link { + background-color: transparent; + color: var(--primary-text); + pointer-events: none; +} + +.page-nav__item.is-current:not(:last-child) { + margin-bottom: -1px; +} + +.page-nav__item.is-current:last-child { + border-radius: 0 0 0.25rem 0.25rem; +} + +.page-nav__item.is-reply-warning { + position: relative; + z-index: 1; + box-shadow: 0 0 0 1px var(--reply-warning-border) inset; + background-color: var(--reply-warning-background); + border-bottom: none; +} + +.page-nav__item.is-reply-warning .page-nav__item-link { + background-color: transparent; + color: var(--default-text); +} + +.page-nav__item.is-reply-alert { + position: relative; + z-index: 1; + box-shadow: 0 0 0 1px var(--reply-alert-border) inset; + background-color: var(--reply-alert-background); + border-bottom: none; +} + +.page-nav__item.is-reply-alert .page-nav__item-link { + background-color: transparent; + color: var(--reversal-text); +} + +.page-nav__item.is-reply-deadline { + position: relative; + z-index: 1; + box-shadow: 0 0 0 1px var(--reply-deadline-border) inset; + background-color: var(--reply-deadline-background); + border-bottom: none; +} + +.page-nav__item.is-reply-deadline .page-nav__item-link { + background-color: transparent; + color: var(--reversal-text); +} + +.page-nav__item.is-inactive { + position: static; +} + +.page-nav__item.is-inactive:not(:last-child) { + border-bottom: solid 1px var(--border); +} + +.page-nav__item.is-inactive .page-nav__item-link { + background-color: var(--background); + color: var(--muted-text); + pointer-events: none; +} + +.page-nav__item-link { + padding: 0.75rem; + font-size: 0.8125rem; + line-height: 1.4; + color: var(--semi-muted-text); + display: block; + text-decoration: none; + transition: all 0.1s ease-in; + background-color: transparent; +} + +.page-nav__item-link:hover { + color: var(--primary-text); + text-decoration: underline; +} + +.page-nav__item-header .a-badge { + transform: translateY(-0.125em); + margin-right: 0.25rem; +} + +.page-nav__item-title { + font-size: 0.875rem; + line-height: 1.4; + display: inline; + font-weight: 600; +} + +.page-nav-metas { + margin-top: 0.25rem; + font-size: 0.75rem; + display: flex; + flex-wrap: wrap; + gap: 0.25rem 0.75rem; +} + +.page-nav__item-link-inner { + display: flex; + text-decoration: none; + gap: 0.5rem; + align-items: center; +} diff --git a/app/assets/stylesheets/shared/blocks/_page-search.css b/app/assets/stylesheets/shared/blocks/_page-search.css new file mode 100644 index 00000000000..b93f32f1c37 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_page-search.css @@ -0,0 +1,32 @@ +.page-search { + padding-block: 0.75rem; + border-top: solid 1px var(--border-shade); + border-bottom: solid 1px var(--border-shade); +} + +.page-tabs + .page-search { + padding-block: 0; +} + +.page-search__form { + width: 30rem; + max-width: 100%; + margin-inline: auto; + display: flex; + height: 100%; + align-items: center; + padding-right: 0.75rem; +} + +.page-search__text-input { + height: 2rem; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: none; +} + +.is-icon.page-search__submit { + height: 2rem; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} diff --git a/app/assets/stylesheets/shared/blocks/_page-tags-nav.css b/app/assets/stylesheets/shared/blocks/_page-tags-nav.css new file mode 100644 index 00000000000..79930588021 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_page-tags-nav.css @@ -0,0 +1,29 @@ +.page-tags-nav { + padding: 0.5rem 0.75rem; +} + +.page-tags-nav__items { + display: flex; + flex-wrap: wrap; + gap: 0.25rem; +} + +.page-tags-nav__item-link { + padding: 0.3125rem 0.5rem; + border-radius: 1.5em; + font-size: 0.625rem; + line-height: 1.4; + white-space: nowrap; + color: var(--main); + max-width: 8.5rem; + overflow: hidden; + text-overflow: ellipsis; + border: solid 1px var(--main); + display: block; + text-decoration: none; + transition: all 0.1s ease-in; + background-color: transparent; +} +.page-tags-nav__item-link:hover { + background-color: var(--main-tint); +} diff --git a/app/assets/stylesheets/shared/blocks/_pagination.css b/app/assets/stylesheets/shared/blocks/_pagination.css new file mode 100644 index 00000000000..99b69bd5b37 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_pagination.css @@ -0,0 +1,63 @@ +.pagination { + position: relative; + z-index: 1; +} +.pagination:first-child { + margin-bottom: 0.75rem; +} +@media (min-width: 48em) { + .pagination:first-child { + margin-bottom: 1.5rem; + } +} +.pagination:not(:first-child) { + margin-top: 0.75rem; +} +@media (min-width: 48em) { + .pagination:not(:first-child) { + margin-top: 1.5rem; + } +} + +.pagination__items { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 0.25rem; + overflow-x: auto; +} + +.pagination__item.is-disabled { + opacity: 0.4; + pointer-events: none; +} + +.pagination__item-link { + height: 2.5rem; + width: 2.5rem; + border-radius: 50%; + outline: none; + font-size: 0.875rem; + line-height: 1; + color: var(--muted-text); + display: flex; + text-decoration: none; + justify-content: center; + align-items: center; + transition: all 0.2s ease-in; +} +.pagination__item-link:hover { + background-color: rgba(0, 0, 0, 0.1); +} +.pagination__item-link.is-active { + background-color: var(--main); + color: var(--reversal-text); +} +.pagination__item.is-active .pagination__item-link { + background-color: var(--main); + color: var(--reversal-text); +} +.pagination__item-link.is-disabled { + opacity: 0.4; + pointer-events: none; +} diff --git a/app/assets/stylesheets/shared/blocks/_pill-nav.css b/app/assets/stylesheets/shared/blocks/_pill-nav.css new file mode 100644 index 00000000000..6c4039b461c --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_pill-nav.css @@ -0,0 +1,53 @@ +.pill-nav:not(:first-child) { + padding-top: 1.25rem; +} + +.pill-nav__items { + display: flex; + justify-content: center; +} + +.pill-nav__item:first-child .pill-nav__item-link { + border-top-left-radius: 10em; + border-bottom-left-radius: 10em; +} +.pill-nav__item:last-child .pill-nav__item-link { + border-top-right-radius: 10em; + border-bottom-right-radius: 10em; +} +.is-half .pill-nav__item { + flex: 0 0 50%; +} + +.pill-nav__item-link { + display: block; + text-decoration: none; + font-size: 0.75rem; + line-height: 2.3; + text-align: center; + white-space: nowrap; + color: var(--muted-text); + border: solid 1px var(--border-shade); + border-left-width: 0.5px; + border-right-width: 0.5px; + width: 7rem; + transition: all 0.2s ease-out; +} +.pill-nav__item:first-child .pill-nav__item-link { + border-left-width: 1px; +} +.pill-nav__item:last-child .pill-nav__item-link { + border-right-width: 1px; +} +.pill-nav__item-link:hover { + background-color: var(--background-more-tint); +} +.pill-nav__item-link.is-active { + background-color: var(--main); + color: var(--reversal-text); + border-color: var(--main); +} + +div.pill-nav__item-link { + cursor: pointer; +} diff --git a/app/javascript/stylesheets/shared/blocks/_prism-ghcolors.scss b/app/assets/stylesheets/shared/blocks/_prism-ghcolors.css similarity index 85% rename from app/javascript/stylesheets/shared/blocks/_prism-ghcolors.scss rename to app/assets/stylesheets/shared/blocks/_prism-ghcolors.css index 4af4eb31bd3..f28b8687e57 100644 --- a/app/javascript/stylesheets/shared/blocks/_prism-ghcolors.scss +++ b/app/assets/stylesheets/shared/blocks/_prism-ghcolors.css @@ -1,4 +1,3 @@ -@import url(https://fonts.googleapis.com/css?family=Fira+Mono); /* * Hopscotch * by Jan T. Sott @@ -6,9 +5,8 @@ * * This work is licensed under the Creative Commons CC0 1.0 Universal License */ - -code[class*="language-"], -pre[class*="language-"] { +code[class*=language-], +pre[class*=language-] { background: #322931; color: #ffffff; } @@ -25,7 +23,7 @@ pre[class*="language-"] { } .namespace { - opacity: .7; + opacity: 0.7; } .token.null, @@ -34,21 +32,27 @@ pre[class*="language-"] { .token.number { color: #fd8b19; } + .token.property { color: #fdcc59; } + .token.tag { color: #1290bf; } + .token.string { color: #1fcdc2; } + .token.selector { color: #ea8aa4; } + .token.attr-name { color: #fd8b19; } + .token.entity, .token.url, .language-css .token.string, @@ -85,6 +89,8 @@ pre[class*="language-"] { } pre > code.highlight { - outline: .4em solid red; - outline-offset: .4em; + outline: 0.4em solid red; + outline-offset: 0.4em; } + +/*# sourceMappingURL=_prism-ghcolors.css.map */ diff --git a/app/assets/stylesheets/shared/blocks/_tab-nav.css b/app/assets/stylesheets/shared/blocks/_tab-nav.css new file mode 100644 index 00000000000..eb87f5e4c6a --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/_tab-nav.css @@ -0,0 +1,45 @@ +.tab-nav { + padding-block: 0.875rem; + border-bottom: solid 1px var(--border); +} + +.page-main-header + .tab-nav { + border-bottom: none; + padding-bottom: 0; +} + +.tab-nav__items { + display: flex; + gap: 0.5rem; + overflow-x: auto; + overflow-y: hidden; + margin-inline: -1rem; + padding-inline: 1rem; +} + +.tab-nav__item { + flex: 0 0 7rem; +} + +.tab-nav__item-link { + display: block; + text-decoration: none; + font-size: 0.75rem; + line-height: 2.3; + text-align: center; + white-space: nowrap; + color: var(--semi-muted-text); + border: solid 1px var(--border-shade); + border-radius: 20rem; + transition: all 0.2s ease-out; +} + +.tab-nav__item-link:hover { + background-color: var(--background-semi-shade); +} + +.tab-nav__item-link.is-active { + background-color: var(--main); + border-color: var(--main); + color: var(--reversal-text); +} diff --git a/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-actions.css b/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-actions.css new file mode 100644 index 00000000000..54319ada224 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-actions.css @@ -0,0 +1,63 @@ +.card-list-item-actions__trigger { + height: 2.25rem; + width: 2.25rem; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + color: var(--muted-text); + align-self: flex-start; + position: absolute; + left: 0; + top: 2.75rem; +} +@media (min-width: 48em) { + .card-list-item-actions__trigger { + position: static; + margin-top: -0.5rem; + margin-right: -0.5rem; + } +} + +.card-list-item-actions__inner { + display: none; + position: absolute; + right: -0.5rem; + top: -0.5rem; + z-index: 3; +} +input:checked + .card-list-item-actions__inner { + display: block; +} + +.card-list-item-actions__items { + position: relative; + z-index: 2; + border: solid 1px var(--border); + width: 10rem; + border-radius: 0.25rem; + overflow: hidden; +} + +.card-list-item-actions__item + .card-list-item-actions__item { + border-top: dashed 1px var(--border); +} + +.card-list-item-actions__action { + font-size: 0.8125rem; + color: var(--default-text); + display: flex; + text-decoration: none; + align-items: center; + background-color: var(--base); + transition: all 0.2s ease-out; + padding: 0.5em 1em; + min-height: 2.75rem; +} +.card-list-item-actions__action i { + margin-right: 0.5em; +} +.card-list-item-actions__action:hover { + background-color: rgb(245, 246, 252); + color: var(--main-text); +} diff --git a/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-meta.css b/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-meta.css new file mode 100644 index 00000000000..5ab2776bddd --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-meta.css @@ -0,0 +1,47 @@ +@charset "UTF-8"; +.card-list-item-meta__items { + font-size: 0.75rem; + line-height: 1.4; + display: flex; + flex-wrap: wrap; + gap: 0 0.5rem; +} + +.card-list-item-meta__item { + overflow: hidden; +} +.card-list-item-meta__item .a-user-icon { + height: 1rem; + width: 1rem; +} +.card-list-item-meta__item a { + overflow: hidden; + text-overflow: ellipsis; +} + +.card-list-item-meta__item-note { + font-size: 0.75rem; + line-height: 1.4; + color: var(--default-text); +} +.card-list-item-meta__item-note::before { + content: "※"; + position: relative; + top: -0.0625em; +} + +.card-list-item-meta__checkers { + display: inline-block; + margin-left: 0.75rem; +} + +.card-list-item-meta__created-at { + font-size: 0.75rem; + line-height: 1.4; + color: var(--muted-text); +} + +.card-list-item-meta__user { + display: flex; + gap: 0.25rem; +} diff --git a/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-tags-edit.css b/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-tags-edit.css new file mode 100644 index 00000000000..4d0b8e5f681 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-tags-edit.css @@ -0,0 +1,21 @@ +.card-list-item-tags-edit { + width: 100%; +} + +.card-list-item-tags__item-edit { + text-decoration: none; + cursor: pointer; +} +.card-list-item-tags__item-edit:hover, .card-list-item-tags__item-edit:active { + text-decoration: underline; +} +.card-list-item-tags__item-edit { + cursor: pointer; + color: var(--main-text); +} + +.card-list-item-tags-edit__actions { + margin-top: 0.5rem; + display: flex; + gap: 0.5rem; +} diff --git a/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-title.css b/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-title.css new file mode 100644 index 00000000000..0aeee71b954 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card-list/_card-list-item-title.css @@ -0,0 +1,104 @@ + +.card-list-item-title { + display: flex; + justify-content: space-between; +} + +@media (min-width: 48em) { + .card-list-item-title { + align-items: center; + } +} + +@media (max-width: 47.9375em) { + .card-list-item-title { + flex-direction: column; + align-items: flex-start; + } +} + +@media (min-width: 48em) { + .card-list-item-title .a-list-item-badge { + margin-top: .3125rem; + margin-right: .5rem; + } +} + +@media (max-width: 47.9375em) { + .card-list-item-title .a-list-item-badge { + margin-bottom: .25rem; + } +} + +.card-list-item-title__start { +} + +@media (min-width: 48em) { + .card-list-item-title__start { + display: flex; + align-items: center; + flex: 1; + } +} + +@media (max-width: 47.9375em) { + .card-list-item-title__start { + width: 100%; + } +} + +.card-list-item-title__end { + align-self: flex-start; +} + +.card-list-item-title__end:first-child { + flex: 1; + width: 100%; +} + +.card-list-item-title__title { + font-size: .875rem; + line-height: 1.4; + font-weight: 600; + width: 100%; + flex-basis: 100%; + word-break: break-all; + overflow: hidden; + display: -webkit-box; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; +} + +.card-list-item-title__title.is-lg { + font-size: 1rem; +} + +.card-list-item-title__title.is-sm { + font-size: .8125rem; + font-weight: 400; +} + +.card-list-item-title__title .a-user-role { + vertical-align: middle; +} + +.card-list-item-title__emotion-image { + height: 1.125em; + width: 1.125em; + margin-right: .375rem; + transform: translate(0, -.0625em); + display: inline; +} + +.card-list-item-title__link { + word-break: break-all; + display: -webkit-box; + -webkit-line-clamp: 2; + overflow: hidden; + -webkit-box-orient: vertical; +} + +.card-list-item.is-read .card-list-item-title__link { + color: var(--muted-text); +} diff --git a/app/assets/stylesheets/shared/blocks/card-list/_card-list-item.css b/app/assets/stylesheets/shared/blocks/card-list/_card-list-item.css new file mode 100644 index 00000000000..379fba2bcfc --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card-list/_card-list-item.css @@ -0,0 +1,355 @@ + +.card-list-item { + position: relative; +} + +.card-list-item:not(:last-child) { + border-bottom: solid 1px var(--border-tint); +} + +@media (min-width: 48em) { + .card-list-item { + padding: .75rem 1rem; + } +} + +@media (max-width: 47.9375em) { + .card-list-item { + padding: .75rem; + } +} + +.a-side-nav .card-list-item:not(:last-child) { + border-bottom-color: var(--border-shade); +} + +.card-list-item__icon { + font-size: 1.25rem; + margin-right: -.25rem; +} + +.card-list-item__icon.is-danger { + color: var(--danger); +} + +.card-list-item__rows { + flex: 1; + min-width: 0; +} + +.card-list-item__user-icons { + display: flex; + flex-wrap: wrap; + gap: .25rem; +} + +.products-self_assigned-index .card-list-item__notresponded { + position: absolute; + left: -.25rem; + top: -.25rem; + z-index: 2; + height: .5rem; + width: .5rem; + border-radius: 50%; + background-color: var(--danger); +} + +.card-list-item__inner { + position: relative; + display: flex; + gap: 1rem; +} + +a.card-list-item__inner { + display: flex; + text-decoration: none; + color: var(--default-text); +} + +a.card-list-item__inner:hover .card-list-item-title__title { + color: var(--main); + text-decoration: underline; +} + +.card-list-item__assignee { + margin-top: .5rem; +} + +@media (min-width: 48em) { + .card-list-item__assignee { + width: 8rem; + } +} + +.card-list-item__assignee-button.a-button { + border: solid 1px var(--border-shade); + pointer-events: none; + color: var(--muted-text); + background-color: var(--background); +} + +.card-list-item__assignee-image { + flex: 0 0 1.25rem; + margin-right: .375rem; +} + +.card-list-item__assignee-image .a-user-icon { + height: 1.25rem; + width: 1.25rem; +} + +.card-list-item__assignee-name { + display: block; + overflow: hidden; + text-overflow: ellipsis; +} + +.card-list-item__label { + border-radius: .25rem; + color: var(--main); + background-color: var(--base); + border: solid 1px var(--main); + display: flex; + align-items: center; + justify-content: center; + font-size: .625rem; + line-height: 1.4; + text-align: center; + position: relative; + font-feature-settings: "palt"; +} + +@media (min-width: 48em) { + .card-list-item__label { + height: 2.75rem; + width: 2.75rem; + } +} + +@media (max-width: 47.9375em) { + .card-list-item__label { + height: 2.5rem; + width: 2.5rem; + } +} + +.card-list-item__label.is-no-holding { + background-color: transparent; + border: none; +} + +.card-list-item__label-inner.is-sm { + transform: scale(.9); + margin: -1rem; +} + +.card-list-item__user { +} + +@media (min-width: 48em) { + .card-list-item__user { + min-width: 2.75rem; + } +} + +@media (max-width: 47.9375em) { + .card-list-item__user { + min-width: 2.5rem; + } +} + +.card-list-item__user-icon { +} + +@media (min-width: 48em) { + .card-list-item__user-icon { + height: 2.75rem; + width: 2.75rem; + } +} + +@media (max-width: 47.9375em) { + .card-list-item__user-icon { + height: 2.5rem; + width: 2.5rem; + } +} + +.card-list-item.is-wip .card-list-item__user-icon { + opacity: .6; +} + +.card-list-item__row-separator { + border-top: dashed 1px var(--border); + height: 1px; +} + +@media (min-width: 48em) { + .card-list-item__row-separator { + margin-block: .5rem; + } +} + +@media (max-width: 47.9375em) { + .card-list-item__row-separator { + margin-block: .75rem .25rem; + } +} + +.card-list-item__row:not(:first-child) { + margin-top: .25rem; +} + +.card-list-item__show-user-detail { + height: 2.75rem; + width: 2.75rem; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: all .2s ease-out; + position: relative; +} + +@media (min-width: 48em) { + .card-list-item__show-user-detail { + right: -1rem; + } +} + +@media (max-width: 47.9375em) { + .card-list-item__show-user-detail { + right: -.75rem; + } +} + +.card-list-item__show-user-detail:hover { + opacity: .7; +} + +.card-list-item__user-detail { + margin-top: 1rem; + display: none; +} + +input:checked + .card-list-item__user-detail { + display: block; +} + +.card-list-item__user-description { +} + +@media (min-width: 48em) { + .card-list-item__user-description { + font-size: .8125rem; + } +} + +@media (max-width: 47.9375em) { + .card-list-item__user-description { + font-size: .75rem; + } +} + +.card-list-item__close-user-detail { + margin-top: 1rem; + font-size: .8125rem; + line-height: 1.4; + display: flex; + color: var(--main); + align-items: center; + justify-content: center; + text-decoration: none; + cursor: pointer; +} + +.card-list-item__close-user-detail:hover, +.card-list-item__close-user-detail:active { + text-decoration: underline; +} + +.card-list-item__summary { + color: var(--muted-text); + word-break: break-all; +} + +.card-list-item__summary * { + word-break: break-all; + overflow-wrap: anywhere; +} + +.card-list-item__summary p { + font-size: .75rem; + line-height: 1.5; + display: -webkit-box; + -webkit-line-clamp: 2; + overflow: hidden; + -webkit-box-orient: vertical; +} + +.card-list-item__option { + position: absolute; + right: 0; + top: 0; +} + +.card-list-item__option .a-button { + min-width: 4rem; +} + +.card-list-item__thumbnail { + flex: 0 0 6rem; +} + +.card-list-item__thumbnail-inner { + position: relative; + padding-top: 52.5%; + display: block; +} + +.card-list-item__thumbnail-image { + height: 100%; + width: 100%; + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + object-fit: cover; + border-radius: 4px; +} + +.card-list-item__checker { +} + +@media (min-width: 48em) { + .card-list-item__checker { + position: absolute; + right: .5rem; + top: .5rem; + } +} + +@media (max-width: 47.9375em) { + .card-list-item__checker { + margin-top: .5rem; + } +} + +.card-list-item__empty { + font-size: .8125rem; + line-height: 1.4; + text-align: center; + color: var(--muted-text); +} + +.card-list-item__badge { + margin-right: .25rem; +} + +.card-list-item__small-link { + display: flex; + font-size: .75rem; + line-height: 1.4; + margin-top: .5rem; +} diff --git a/app/assets/stylesheets/shared/blocks/card-list/_card-list-tools.css b/app/assets/stylesheets/shared/blocks/card-list/_card-list-tools.css new file mode 100644 index 00000000000..089287957db --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card-list/_card-list-tools.css @@ -0,0 +1,3 @@ +.card-list-tools + .card-list { + margin-top: 1rem; +} diff --git a/app/assets/stylesheets/shared/blocks/card-list/_card-list.css b/app/assets/stylesheets/shared/blocks/card-list/_card-list.css new file mode 100644 index 00000000000..06f1d406465 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card-list/_card-list.css @@ -0,0 +1,99 @@ + +.card-list { + flex: 1; +} + +.card-list.has-scroll { + max-height: 25.5rem; + overflow-y: auto; + position: relative; +} + +.completed-practices-progress + .card-list { + border-top: solid 1px var(--border-tint); +} + +@media (min-width: 48em) { + .side-tabs-contents__item .card-list { + max-height: calc(100vh - 6rem); + overflow-y: auto; + } +} + +.card-list__description { + padding: .75rem 1rem; + background-color: var(--background); +} + +.card-list__message { + padding-block: 2rem; +} + +.card-list__deacription { + padding: .75rem 1rem; +} + +.card-list__deacription p { + font-size: .8125rem; + line-height: 1.6; +} + +@media (max-width: 47.9375em) { + .card-list__deacription p { + font-size: .75rem; + } +} + +.card-list__notice { + border: solid 1px var(--success); + background-color: var(--success-tint); + padding: .75rem 1rem; + color: var(--success-text); +} + +@media (max-width: 47.9375em) { + .card-list__notice { + padding: .5rem .75rem; + } +} + +.card-list__notice a { + color: inherit; + text-decoration: none; + cursor: pointer; +} + +.card-list__notice a:hover, +.card-list__notice a:active { + text-decoration: underline; +} + +.card-list__label { + font-size: .75rem; + line-height: 1.4; + font-weight: 700; + position: sticky; + top: 0; + z-index: 2; + background-color: var(--background); +} + +@media (min-width: 48em) { + .card-list__label { + padding: .25rem 1rem; + } +} + +@media (max-width: 47.9375em) { + .card-list__label { + padding: .25rem .75rem; + } +} + +.card-list__label:first-child { + border-top: solid 1px var(--border); +} + +.card-list__deacription + .card-list__items { + border-top: dotted .0625rem var(--border-tint); +} diff --git a/app/assets/stylesheets/shared/blocks/card/_card-body.css b/app/assets/stylesheets/shared/blocks/card/_card-body.css new file mode 100644 index 00000000000..0ae16d0e4d5 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card/_card-body.css @@ -0,0 +1,54 @@ + +.card-body { + flex: 1; +} + +.card-body.has-scroll { + max-height: 18rem; + overflow-y: auto; +} + +@media (min-width: 48em) { + .card-body__description { + padding: 1rem; + } +} + +@media (max-width: 47.9375em) { + .card-body__description { + padding: .75rem; + } +} + +@media (min-width: 48em) { + .card-body__description.a-long-text { + font-size: .9375rem; + } +} + +@media (max-width: 47.9375em) { + .card-body__description.a-long-text { + font-size: .8125rem; + } +} + +.card__main-movie video { + border-radius: .25rem .25rem 0 0; +} + +.card-body__inner { + max-width: 100%; + width: 100%; +} + +@media (min-width: 48em) { + .card-body__inner { + padding: 1rem 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .card-body__inner { + padding: 1rem; + } +} diff --git a/app/assets/stylesheets/shared/blocks/card/_card-books.css b/app/assets/stylesheets/shared/blocks/card/_card-books.css new file mode 100644 index 00000000000..262242c6177 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card/_card-books.css @@ -0,0 +1,136 @@ + +.card-books-item { +} + +@media (min-width: 48em) { + .card-books-item { + height: 100%; + } +} + +.card-books-item__body { +} + +@media (min-width: 48em) { + .card-books-item__body { + flex: 1; + } +} + +.card-books-item__inner { + padding: .75rem 1rem; + text-decoration: none; +} + +@media (min-width: 48em) { + .card-books-item__inner { + display: flex; + text-decoration: none; + gap: 1rem; + align-items: flex-start; + } +} + +@media (max-width: 47.9375em) { + .card-books-item__inner { + display: block; + overflow: hidden; + } +} + +.card-books-item__start { +} + +@media (min-width: 48em) { + .card-books-item__start { + flex: 0 0 4rem; + } +} + +@media (max-width: 47.9375em) { + .card-books-item__start { + float: left; + margin-right: 1rem; + width: 3.5rem; + } +} + +.card-books-item__end { + flex: 1; +} + +.card-books-item__row:not(:first-child) { + margin-top: .25rem; +} + +.card-books-item__cover-container { + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +.card-books-item__image { + max-height: 100%; + max-width: 100%; + object-fit: contain; + object-position: 50% 0; + border: solid 1px var(--border-tint); + border-radius: 2px; +} + +.card-books-item__title { + font-size: .875rem; + line-height: 1.4; + font-weight: 600; + color: var(--default-text); + transition: all .2s ease-out; +} + +.card-books-item__title .a-badge { + position: relative; + top: -.125em; + margin-right: .5em; +} + +.card-books-item__title-link { + text-decoration: none; +} + +.card-books-item__title-link .card-books-item__title-label { + text-decoration: none; + cursor: pointer; + color: var(--main-text); +} + +.card-books-item__title-link .card-books-item__title-label:hover, +.card-books-item__title-link .card-books-item__title-label:active { + text-decoration: underline; +} + +a.card-books-item__inner:hover .card-books-item__title-label { + text-decoration: underline; + color: var(--main-text); +} + +.card-books-item__price { + font-size: .75rem; + line-height: 1.4; + color: var(--default-text); +} + +.card-books-item__description { + font-size: .75rem; + color: var(--semi-muted-text); +} + +.card-books-item__practices { + padding: 0 1rem .75rem; +} + +.card-books-item__practices .tag-links__item-link { + max-width: 9rem; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} diff --git a/app/assets/stylesheets/shared/blocks/card/_card-eyecatch.css b/app/assets/stylesheets/shared/blocks/card/_card-eyecatch.css new file mode 100644 index 00000000000..a427b04bf22 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card/_card-eyecatch.css @@ -0,0 +1,19 @@ + +.card-eyecatch { + @media (min-width: 48em) { + padding: 1rem 1rem 0; + } + @media (max-width: 47.9375em) { + padding: .75rem .75rem 0; + + } +} +.card-eyecatch__image { + display: block; + border-radius: 4px; + aspect-ratio: 1.91 / 1; + width: 100%; + object-fit: cover; + border-radius: .25rem; + +} diff --git a/app/assets/stylesheets/shared/blocks/card/_card-footer.css b/app/assets/stylesheets/shared/blocks/card/_card-footer.css new file mode 100644 index 00000000000..4106b92fc70 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card/_card-footer.css @@ -0,0 +1,62 @@ + +.card-footer { + position: relative; + z-index: 1; +} +@media (min-width: 48em) { + .card-footer { + padding: .5rem 1rem; + min-height: 3rem; + } +} +@media (max-width: 47.9375em) { + .card-footer { + padding: .5rem .75rem; + } +} +.card-footer:last-child { + border-bottom-left-radius: .25rem; + border-bottom-right-radius: .25rem; +} +.card-footer__description { + font-size: .75rem; + line-height: 1.4; + margin-top: .5rem; + text-align: center; + color: var(--muted-text); +} +@media (max-width: 47.9375em) { + .card-footer__description { + text-align: left; + font-size: .625rem; + } + .card-footer__description br { + display: none; + } +} +.card-footer__notice { + font-size: .8125rem; + line-height: 1.4; + margin-top: .5rem; + text-align: center; + color: var(--success); + +} +.card-footer__footer-link { + height: 100%; + display: flex; + justify-content: flex-end; + align-items: flex-end; + +} +.card-footer__footer-text-link { + font-size: .8125rem; + line-height: 1.4; + color: var(--muted-text); + text-decoration: none; + cursor: pointer; +} +.card-footer__footer-text-link:hover, +.card-footer__footer-text-link:active { + text-decoration: underline; +} diff --git a/app/assets/stylesheets/shared/blocks/card/_card-header.css b/app/assets/stylesheets/shared/blocks/card/_card-header.css new file mode 100644 index 00000000000..2bfd30d4883 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card/_card-header.css @@ -0,0 +1,88 @@ +.card-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.5rem 0.75rem; +} + +@media (min-width: 48em) { + .card-header { + padding: 0.75rem 1rem; + } +} + +.card-header.is-sm { + padding-block: 0.625rem; +} + +.card-header.is-sm .a-button.is-xs { + margin-block: -0.25rem; +} + +.card-header:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.card-header + .a-form-tabs { + margin-top: -1px; +} + +.card-header__inner { + display: flex; + align-items: center; + width: 100%; + gap: 1rem; +} + +.card-header__title { + line-height: 1.4; + font-weight: 600; + flex: 1; + font-size: 0.875rem; +} + +@media (min-width: 48em) { + .card-header__title { + font-size: 1rem; + } +} + +.card-header.is-sm .card-header__title { + font-size: 0.875rem; +} + +.card-header.is-lg .card-header__title { + font-size: 1.5rem; +} + +.card-header__count { + font-weight: 400; + letter-spacing: 0; + margin-left: 0.125rem; +} + +.card-header__title-emotion-image { + height: 1.25em; + width: 1.25em; + display: inline-block; + vertical-align: middle; + margin-inline: 0.125em; + position: relative; + top: -0.125em; +} + +.card-header__sub-title { + font-size: 0.8125rem; + line-height: 1.4; +} + +@media (max-width: 47.9375em) { + .card-header__sub-title { + font-size: 0.75rem; + } +} + +.card-header__action { + display: flex; +} diff --git a/app/assets/stylesheets/shared/blocks/card/_card-main-actions.css b/app/assets/stylesheets/shared/blocks/card/_card-main-actions.css new file mode 100644 index 00000000000..6461660ce81 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card/_card-main-actions.css @@ -0,0 +1,101 @@ +.card-main-actions { + container: card-main-actions / inline-size; +} + +.card-main-actions:not(:first-child) { + margin-top: 0.5rem; +} + +.form__items + .card-main-actions { + margin-top: 1rem; +} + +.card-main-actions__items { + display: flex; + gap: 0.5rem; +} + +@container card-main-actions (min-width: 20em) { + .card-main-actions__items { + position: relative; + justify-content: center; + flex-wrap: wrap; + align-items: flex-end; + min-height: 1.875rem; + } +} + +@container card-main-actions (max-width: 19.9375em) { + .card-main-actions__items { + flex-direction: column; + } +} + +.card-main-actions__items.is-sub-actions { + justify-content: flex-end; +} + +@container card-main-actions (max-width: 19.9375em) { + .card-main-actions__items.is-sub-actions { + flex-direction: row; + } +} + +.card-main-actions__items.is-sub-actions .card-main-actions__item.is-sub { + position: static; + flex: 0 0 auto; +} + +.card-main-actions__item { + flex-basis: 100%; + max-width: 100%; +} + +@container card-main-actions (min-width: 20em) { + .card-main-actions__item { + flex: 1; + max-width: 13rem; + } + + .card-main-actions__item.is-sub { + flex: 0 0 auto; + } +} + +@container card-main-actions (max-width: 19.9375em) { + .card-main-actions__item.is-sub { + text-align: right; + } + + .card-main-actions__item:last-child { + margin-bottom: 0; + } +} + +.card-main-actions__item.is-end { + margin-left: auto; + flex-basis: 2.5rem; +} + +@container card-main-actions (min-width: 20em) { + .card-main-actions.is-3-items .card-main-actions__item { + flex: 1; + } +} + +.card-main-actions__muted-action { + text-decoration: none; + cursor: pointer; + font-size: 0.8125rem; + line-height: 1.4; + color: var(--muted-text); +} + +.card-main-actions__muted-action:hover, +.card-main-actions__muted-action:active { + text-decoration: underline; +} + +.card-main-actions__muted-action:hover { + color: var(--danger); +} diff --git a/app/assets/stylesheets/shared/blocks/card/_card-message.css b/app/assets/stylesheets/shared/blocks/card/_card-message.css new file mode 100644 index 00000000000..f0c143d9f35 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card/_card-message.css @@ -0,0 +1,25 @@ + +.card-message { + text-align: center; +} + +.card-message.is-notice { + background-color: var(--success); + color: var(--reversal-text); +} + +@media (min-width: 48em) { + .card-message { + padding: .75rem 1rem; + font-size: .875rem; + line-height: 1.5; + } +} + +@media (max-width: 47.9375em) { + .card-message { + padding: .75rem; + font-size: .75rem; + line-height: 1.5; + } +} diff --git a/app/assets/stylesheets/shared/blocks/card/_congrats-card-body.css b/app/assets/stylesheets/shared/blocks/card/_congrats-card-body.css new file mode 100644 index 00000000000..edd9a18e757 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card/_congrats-card-body.css @@ -0,0 +1,34 @@ + +.congrats-card-body__title { + font-size: 1.5rem; + line-height: 1.4; + font-weight: 700; + @media (min-width: 48em) { + font-size: 1.5rem; + } + @media (max-width: 47.9375em) { + font-size: 1rem; + + } +} +.congrats-card-body__image-container { + margin-top: 1.25rem; + +} +.congrats-card-body__image-container { + width: 100%; + max-width: 28rem; + margin-inline: auto; + +} +.congrats-card-body__image { + border-radius: .75rem; + border: solid .5rem var(--border-tint); + +} +.congrats-card-body { + .card-main-actions { + margin-top: 1.25rem; + + } +} diff --git a/app/assets/stylesheets/shared/blocks/card/_practice-books.css b/app/assets/stylesheets/shared/blocks/card/_practice-books.css new file mode 100644 index 00000000000..bf2f0ff992a --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card/_practice-books.css @@ -0,0 +1,114 @@ +.practice-books__items { + margin-top: -1px; + display: block; +} +@media (min-width: 48em) { + .practice-books__items { + display: flex; + flex-wrap: wrap; + } +} + +.practice-books-item:not(:first-child) { + border-top: solid 1px var(--border-tint); +} +@media (min-width: 48em) { + .practice-books-item { + border-top: solid 1px var(--border-tint); + flex: 0 0 50%; + height: 100%; + display: flex; + flex-direction: column; + } + .practice-books-item:nth-child(odd) { + border-right: solid 1px var(--border-tint); + } +} + +@media (min-width: 48em) { + .practice-books-item__body { + flex: 1; + } +} + +.practice-books-item__inner { + padding: 0.75rem 1rem; + text-decoration: none; +} +.practice-books .practice-books-item__inner { + height: 100%; + width: 100%; +} +.practice-books-item__inner { + display: block; + overflow: hidden; +} +@media (min-width: 48em) { + .practice-books-item__inner { + display: flex; + gap: 1rem; + align-items: flex-start; + } +} + +.practice-books-item__start { + float: left; + margin-right: 1rem; + width: 3.5rem; +} +@media (min-width: 48em) { + .practice-books-item__start { + float: none; + margin-right: 0; + flex: 0 0 4rem; + } +} + +.practice-books-item__end { + flex: 1; +} + +.practice-books-item__cover-container { + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +.practice-books-item__image { + max-height: 100%; + max-width: 100%; + object-fit: contain; + object-position: 50% 0; + border: solid 1px var(--border-tint); + border-radius: 2px; +} + +.practice-books-item__title { + font-size: 0.875rem; + line-height: 1.4; + font-weight: 600; + color: var(--default-text); + transition: all 0.2s ease-out; +} +.practice-books-item__title .a-badge { + position: relative; + top: -0.125em; + margin-right: 0.5em; +} + +a.practice-books-item__inner:hover .practice-books-item__title-label { + text-decoration: underline; + color: var(--main-text); +} + +.practice-books-item__price { + font-size: 0.75rem; + line-height: 1.4; + color: var(--default-text); +} + +.practice-books-item__description { + font-size: 0.75rem; + color: var(--semi-muted-text); +} diff --git a/app/assets/stylesheets/shared/blocks/card/_tags-highlight.css b/app/assets/stylesheets/shared/blocks/card/_tags-highlight.css new file mode 100644 index 00000000000..c20a26b09e0 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card/_tags-highlight.css @@ -0,0 +1,18 @@ +.tags-highlight { + position: absolute; + left: 0; + top: 0; + padding: 0.5rem 0.75rem; + display: flex; + gap: 0.25rem; + width: 100%; + flex-wrap: wrap; +} + +.tags-highlight__item { + width: 25%; + max-width: 6rem; +} +.tags-highlight__item .a-badge { + border: solid 1px var(--base); +} diff --git a/app/assets/stylesheets/shared/blocks/card/_thumbnail-card.css b/app/assets/stylesheets/shared/blocks/card/_thumbnail-card.css new file mode 100644 index 00000000000..cbef0cca039 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/card/_thumbnail-card.css @@ -0,0 +1,121 @@ + +.thumbnail-card { + padding: 1rem; +} + +@media (min-width: 48em) { + .thumbnail-card { + height: 100%; + } +} + +@media (max-width: 47.9375em) { + .col-xs-6 .thumbnail-card { + height: 100%; + } +} + +.thumbnail-card__inner { + display: flex; + flex-direction: column; + position: relative; +} + +@media (max-width: 47.9375em) { + .thumbnail-card__inner { + gap: .5rem; + } +} + +@media (min-width: 48em) { + .thumbnail-card__inner { + gap: .75rem; + } +} + +a.thumbnail-card__inner { + display: flex; + text-decoration: none; +} + +a.thumbnail-card__inner:hover .thumbnail-card__title { + text-decoration: underline; +} + +.thumbnail-card__image-link { + transition: all .2s ease-out; +} + +.thumbnail-card__image-link:hover { + opacity: .7; +} + +.thumbnail-card__image { + display: block; + border-radius: 4px; + aspect-ratio: 1.91 / 1; + width: 100%; + object-fit: cover; +} + +.thumbnail-card__title { + font-size: 1.125rem; + line-height: 1.4; + font-weight: 700; + color: var(--default-text); + overflow: hidden; + display: -webkit-box; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + max-height: calc(1.125rem * 1.4 * 2); +} + +.thumbnail-card.is-wip .thumbnail-card__title { + color: var(--muted-text); +} + +.thumbnail-card__title-link { + text-decoration: none; + cursor: pointer; +} + +.thumbnail-card__title-link:hover, +.thumbnail-card__title-link:active { + text-decoration: underline; +} + +.thumbnail-card__metas { + display: flex; +} + +.thumbnail-card__meta:not(:first-child) { + margin-left: .75rem; +} + +.thumbnail-card__author { + display: flex; + align-items: center; + font-size: .875rem; + color: var(--default-text); +} + +.thumbnail-card__author img { + height: 1.125rem; + width: 1.125rem; + object-fit: cover; + margin-right: .25rem; + border-radius: 50%; +} + +.thumbnail-card__date { + font-size: .8125rem; + line-height: 1.4; + color: var(--semi-muted-text); +} + +.thumbnail-card__description { + font-size: .875rem; + line-height: 1.6; + color: var(--semi-muted-text); +} diff --git a/app/javascript/stylesheets/shared/blocks/card/_welcome-article.sass b/app/assets/stylesheets/shared/blocks/card/_welcome-article.css similarity index 100% rename from app/javascript/stylesheets/shared/blocks/card/_welcome-article.sass rename to app/assets/stylesheets/shared/blocks/card/_welcome-article.css diff --git a/app/assets/stylesheets/shared/blocks/form/_block-checks.css b/app/assets/stylesheets/shared/blocks/form/_block-checks.css new file mode 100644 index 00000000000..fa26b0fce07 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_block-checks.css @@ -0,0 +1,65 @@ + +.block-checks { + display: flex; + flex-wrap: wrap; + gap: .5rem; +} + +.block-checks.is-margin-top-12 { + margin-top: .75rem; +} + +.block-checks__item { + flex: 1; + max-width: 20rem; +} + +.block-checks.is-vertical { + flex-direction: column; +} + +.block-checks.is-1-item .block-checks__item { + max-width: 100%; +} + +.block-checks.is-1-item.is-centered .block-checks__item { + width: 20rem; +} + +@media (min-width: 40em) { + .block-checks.is-2-items .block-checks__item { + flex: 0 0 calc((100% - .5rem) / 2); + max-width: calc((100% - .5rem) / 2); + } +} + +@media (max-width: 39.9375em) { + .block-checks.is-2-items .block-checks__item { + flex: 0 0 100%; + max-width: 100%; + } +} + +.block-checks.is-3-items .block-checks__item { + width: calc((100% - 1rem) / 3); + flex: 0 0 calc((100% - 1rem) / 3); +} + +@media (max-width: 47.9375em) { + .block-checks.sm-down\:is-3-items .block-checks__item { + width: calc((100% - 1rem) / 3); + flex: 0 0 calc((100% - 1rem) / 3); + } +} + +.block-checks.is-4-items .block-checks__item { + width: calc((100% - 1.5rem) / 4); + flex: 0 0 calc((100% - 1.5rem) / 4); +} + +@media (max-width: 47.9375em) { + .block-checks.sm-down\:is-2-items .block-checks__item { + width: calc((100% - .5rem) / 2); + flex: 0 0 calc((100% - .5rem) / 2); + } +} diff --git a/app/assets/stylesheets/shared/blocks/form/_books-form-item.css b/app/assets/stylesheets/shared/blocks/form/_books-form-item.css new file mode 100644 index 00000000000..c40e44bc762 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_books-form-item.css @@ -0,0 +1,36 @@ +.books-form-item .a-form-label { + font-size: 0.8125rem; + margin-bottom: 0.25em; +} + +.books-form-item .a-form-help { + margin-top: 0.25em; +} + +.books-form-item + .books-form-item { + margin-top: 0.75rem; +} + +.books-form-item.is-inline { + display: flex; +} + +.books-form-item.is-inline *:first-child { + margin-right: 1em; +} + +.books-form-item textarea.a-text-input { + height: 10rem; +} + +.books-form-item__price-container { + position: relative; + display: flex; + align-items: flex-end; + max-width: 10rem; +} + +.books-form-item__price-unit { + padding-bottom: 0.25rem; + margin-left: 0.25rem; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_books-form.css b/app/assets/stylesheets/shared/blocks/form/_books-form.css new file mode 100644 index 00000000000..85dc076efac --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_books-form.css @@ -0,0 +1,67 @@ +.books-form { + border: solid 1px var(--border); + background-color: var(--base); + border-radius: .25rem; +} + +.books-form + .books-form { + margin-top: 2rem; +} + +.books-form__header { + position: relative; +} + +.books-form__delete { + position: absolute; + right: 0; + top: 0; + height: 2.5rem; + width: 2.5rem; + transform: translate(25%, -25%); +} + +.books-form__delete-link { + border: solid 1px var(--border-shade); + font-size: 1.25rem; + color: var(--muted-text); + height: 100%; + width: 100%; + display: flex; + text-decoration: none; + align-items: center; + justify-content: center; + border-radius: 50%; + background-color: var(--base); + transition: all .2s ease-out; +} + +.books-form__delete-link:hover { + color: var(--danger); + border-color: var(--danger); +} + +.books-form__items { +} + +@media (min-width: 48em) { + .books-form__items { + padding: 1rem; + } +} + +@media (max-width: 47.9375em) { + .books-form__items { + padding: .75rem; + } +} + +.books-form__add .a-button { + min-width: 12rem; +} + +@media (max-width: 47.9375em) { + .books-form__add .a-button { + width: 100%; + } +} diff --git a/app/assets/stylesheets/shared/blocks/form/_checkboxes.css b/app/assets/stylesheets/shared/blocks/form/_checkboxes.css new file mode 100644 index 00000000000..346515e05a4 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_checkboxes.css @@ -0,0 +1,123 @@ +.checkboxes__items { + display: flex; + flex-wrap: wrap; + column-gap: 1.5rem; + row-gap: 0.75rem; +} + +.checkboxes__item label { + font-size: 0.875rem; + line-height: 1.4; + display: block; + color: var(--semi-muted-text); + position: relative; + text-decoration: none; + cursor: pointer; + padding-left: calc(0.875rem * 1.4); + transition: text-decoration 0.2s ease-out; +} + +.checkboxes__item label:hover, +.checkboxes__item label:active { + text-decoration: underline; +} + +.checkboxes__item label.is-sm { + font-size: 0.8125rem; +} + +.checkboxes__item label::before { + content: ""; + height: 0.875rem; + width: 0.875rem; + border: solid 1px var(--input-border); + left: 0; + position: absolute; + top: 50%; + transform: translate(0, -50%); + background-color: var(--base); + border-radius: 0.1875rem; + font-size: 0.75rem; + display: flex; + color: var(--reversal-text); + align-items: center; + justify-content: center; + transition: all 0.2s ease-out; +} + +.checkboxes__item label:hover::before { + background-color: rgba(87, 82, 232, 0.4); + border-color: var(--primary); +} + +.checkboxes__item input:checked + label, +.checkboxes__item .is-dammy label { + color: var(--default-text); +} + +.checkboxes__item input:checked + label::before, +.checkboxes__item .is-dammy label::before { + background-color: var(--primary); + border-color: var(--primary); + content: "\f00c"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; +} + +.checkboxes__item input:checked + label:hover::before { + border-color: var(--primary); +} + +.checkboxes__item.is-radio label::before { + border-radius: 50%; +} + +.checkboxes__item.is-radio input:checked + label::before, +.checkboxes__item.is-radio .is-dammy label::before { + content: ""; + box-shadow: inset 0 0 0 2px var(--base); +} + +.checkboxes.has-children > .checkboxes__items { + flex-direction: column; +} + +.checkboxes.has-children > .checkboxes__items > .checkboxes__item { + border: solid 1px var(--border); + border-radius: 0.25rem; + background-color: var(--base); +} + +.checkboxes.has-children > .checkboxes__items > .checkboxes__item > label { + font-size: 1rem; + font-weight: 700; + margin: 0.75rem; +} + +.checkboxes.has-children > .checkboxes__items > .checkboxes__item .checkboxes { + display: none; + border-top: solid 1px var(--border-tint); +} + +.checkboxes.has-children > .checkboxes__items > .checkboxes__item .checkboxes__items { + gap: 0.5rem 1rem; +} + +.checkboxes.has-children > .checkboxes__items > .checkboxes__item input:checked + label + .checkboxes { + display: block; +} + +.checkboxes__item .checkboxes { + padding: 0.75rem; +} + +.checkboxes__title { + margin-bottom: 0.75rem; + color: var(--muted-text); +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-actions.css b/app/assets/stylesheets/shared/blocks/form/_form-actions.css new file mode 100644 index 00000000000..392a8e1de78 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-actions.css @@ -0,0 +1,201 @@ + +.form-actions { +} + +@media (min-width: 48em) { + .form-actions { + margin-top: 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .form-actions { + margin-top: 1rem; + } +} + +@media (min-width: 48em) { + .form-actions.is-report { + padding-bottom: 1.5rem; + } +} + +.form-actions + .form-actions { + border-top: dashed 1px var(--border); +} + +@media (min-width: 48em) { + .form-actions + .form-actions { + margin-top: 1rem; + padding-top: 1rem; + } +} + +@media (max-width: 47.9375em) { + .form-actions + .form-actions { + padding-top: 1rem; + } +} + +.form-actions__items { + gap: .75rem; +} + +@media (min-width: 48em) { + .form-actions__items { + display: flex; + align-items: flex-end; + justify-content: center; + flex-wrap: wrap; + position: relative; + max-width: 45em; + margin-inline: auto; + } +} + +@media (max-width: 47.9375em) { + .form-actions__items { + flex-direction: column; + } +} + +.form-actions__item { + position: relative; +} + +@media (min-width: 48em) { + .form-actions__item.is-sub { + flex: 0 0 auto; + } +} + +@media (max-width: 47.9375em) { + .form-actions__item.is-sub { + text-align: center; + } +} + +@media (min-width: 48em) { + .form-actions__item.is-muted { + position: absolute; + right: 0; + bottom: 0; + } +} + +@media (max-width: 47.9375em) { + .form-actions__item.is-muted { + text-align: right; + } +} + +@media (max-width: 47.9375em) { + .form-actions__item.is-help { + margin-bottom: 1rem; + } +} + +@media (min-width: 40em) { + .form-actions__item.is-main { + min-width: 13rem; + } +} + +@media (max-width: 39.9375em) { + .form-actions__item.is-main { + width: 100%; + } +} + +@media (min-width: 48em) { + .form-actions__item.has-help { + position: relative; + padding-bottom: 1.5rem; + } +} + +@media (max-width: 47.9375em) { + .form-actions__item { + width: 100%; + padding-inline: 0; + } + + .form-actions__item:nth-child(2), + .form-actions__item:nth-child(3) { + margin-top: .75rem; + } + + .form-actions__item > * { + width: 100%; + } + + .form-actions__item .a-button.is-text, + .form-actions__item .a-button.is-muted-text { + width: auto; + } +} + +.form-actions__item-help { + font-size: .8125rem; + line-height: 1; + text-align: center; + padding-top: .5rem; +} + +.form-actions__item-help .a-form-help-link { + margin-left: .5em; +} + +@media (min-width: 48em) { + .form-actions__item-help { + position: absolute; + left: 0; + bottom: 0; + right: 0; + } +} + +.form-actions__item-checkbox { + margin-bottom: .5rem; +} + +.form-actions__delete { + text-align: right; +} + +@media (min-width: 48em) { + .form-actions__delete { + margin-top: .5rem; + } +} + +@media (max-width: 47.9375em) { + .form-actions__delete { + margin-top: .75rem; + } +} + +.form-actions__delete-link { + text-decoration: none; + cursor: pointer; + font-size: .875rem; + line-height: 1.4; + color: var(--muted-text); +} + +.form-actions__delete-link:hover, +.form-actions__delete-link:active { + text-decoration: underline; +} + +.form-actions__delete-link:hover { + color: var(--danger); +} + +.form-action-before-option { + margin-bottom: .5rem; +} + +.form-action-before-option.has-help { + display: flex; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-added-choice.css b/app/assets/stylesheets/shared/blocks/form/_form-added-choice.css new file mode 100644 index 00000000000..df8613db4ed --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-added-choice.css @@ -0,0 +1,59 @@ + +.form-added-choice { +} + +.form-added-choice + .form-added-choice { + margin-top: 1rem; +} + +.form-added-choice__inner { +} + +@media (min-width: 48em) { + .form-added-choice__inner { + display: flex; + align-items: flex-start; + gap: .75rem; + } +} + +.form-added-choice__col.is-main { + flex: 1; +} + +.form-added-choice__items { + display: flex; +} + +@media (max-width: 47.9375em) { + .form-added-choice__items { + gap: 1rem; + } +} + +.form-added-choice__action { +} + +@media (max-width: 47.9375em) { + .form-added-choice__action { + margin-top: .75rem; + display: flex; + justify-content: flex-end; + } +} + +.form-added-choice__label { + display: flex; + height: 2.75rem; + align-items: center; +} + +.form-added-choice__label.is-count { + width: 1.5rem; + text-align: center; + justify-content: center; +} + +.form-item__vertical-separator .form-added-choice__label.is-count { + height: 1.5rem; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-item-actions.css b/app/assets/stylesheets/shared/blocks/form/_form-item-actions.css new file mode 100644 index 00000000000..97d38aa644a --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-item-actions.css @@ -0,0 +1,49 @@ + +.form-item-actions { +} + +@media (min-width: 48em) { + .form-item-actions { + margin-top: -.75rem; + } +} + +@media (max-width: 47.9375em) { + .form-item-actions { + margin-top: -.5rem; + } +} + +.form-item-actions__items { + display: flex; + align-items: center; + gap: .75rem; +} + +.form-item-actions__text-link { + text-decoration: none; + cursor: pointer; + line-height: 1.4; +} + +@media (min-width: 48em) { + .form-item-actions__text-link { + font-size: .8125rem; + } +} + +@media (max-width: 47.9375em) { + .form-item-actions__text-link { + font-size: .75rem; + } +} + +.form-item-actions__text-link:hover, +.form-item-actions__text-link:active { + text-decoration: underline; +} + +.form-item-actions__text-link.is-danger { + color: var(--danger); + font-weight: 600; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-item-block.css b/app/assets/stylesheets/shared/blocks/form/_form-item-block.css new file mode 100644 index 00000000000..d40684f57e1 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-item-block.css @@ -0,0 +1,46 @@ +.form-item-block:not(:last-child) { + margin-bottom: 1.75rem; +} + +.form-item-block .form-checkbox__label { + margin-bottom: 0; + border-radius: 0; + border: none; + color: var(--muted-text); + padding-block: 0.625rem; + background-color: var(--background-more-tint); + transition: all 0.2s ease-out; +} + +.form-item-block .form-checkbox__label:hover { + color: var(--default-text); + background-color: var(--background-tint); +} + +.form-item-block input:checked + .form-checkbox__label { + background-color: #fff7e0; + color: var(--default-text); +} + +.form-item-block__inner { + border: solid var(--border-shade) 1px; + border-radius: 0.25rem; + overflow: hidden; +} + +.form-item-block__header { + padding: 0.5rem 0.75rem; + border-bottom: solid 1px var(--border-shade); + background-color: var(--base); +} + +.form-item-block__title { + font-size: 0.8125rem; + line-height: 1.4; + display: block; + font-weight: 700; +} + +.form-item-block__item:not(:last-child) { + border-bottom: solid 1px var(--border); +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-item-group.css b/app/assets/stylesheets/shared/blocks/form/_form-item-group.css new file mode 100644 index 00000000000..2121fb2f985 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-item-group.css @@ -0,0 +1,19 @@ +.form-item-group + .form-item-group { + margin-top: 0.75rem; + border-top: dashed 1px var(--border); + padding-top: 0.75rem; +} + +.form-item-group__header + .form-item-group__body { + margin-top: 0.25rem; +} + +.form-item-group__title { + font-size: 0.875rem; + line-height: 1.4; + font-weight: 700; +} + +.form-item-group__help { + margin-top: 0.5rem; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-item.css b/app/assets/stylesheets/shared/blocks/form/_form-item.css new file mode 100644 index 00000000000..8afd96f7609 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-item.css @@ -0,0 +1,223 @@ +.form-item { +} + +.form-item:not(:last-child) { + margin-bottom: 1.75rem; +} + +.form-item.is-hidden { + display: none; +} + +.form-item.is-sm { + width: 30rem; + max-width: 100%; +} + +.form-item.is-md { + width: 40rem; + max-width: 100%; +} + +.form-item .choices { + width: 100%; + z-index: 2; +} + +.form-item .a-page-notice { + margin-bottom: 1rem; + border-radius: .25rem; +} + +.edit_report .form-item .a-page-notice { + margin-bottom: 1.75rem; +} + +.form-item .checkboxes:not(:last-child) { + margin-bottom: 1rem; +} + +.form-item.is-inline { + display: flex; + align-items: center; +} + +.form-item.is-inline .a-form-label { + margin-bottom: 0; + margin-right: .75em; + white-space: nowrap; +} + +.form-item.is-inline .a-form-label.is-sm { + margin-right: .5rem; +} + +.form-item.is-inline.is-centered { + justify-content: center; +} + +@media (min-width: 48em) { + .form-item.is-inline-md-up { + display: flex; + align-items: center; + } + + .form-item.is-inline-md-up .a-form-label { + margin-bottom: 0; + margin-right: .75em; + white-space: nowrap; + } +} + +.form-item__row { + display: flex; + gap: .75rem; +} + +.form-item__column.is-sm { + flex: 0 0 6rem; +} + +.form-item__column.is-unit { + align-self: flex-end; + padding-bottom: .25em; +} + +.form-item__column.is-action { + align-self: flex-end; +} + +.form-item__button { + text-align: center; +} + +.form-item__pp { + margin-top: .75rem; +} + +.form-item__one-checkbox { + font-size: .875rem; + cursor: pointer; +} + +.form-item__pp p { + font-size: .8125rem; + line-height: 1.8; + margin-bottom: 1em; +} + +.form-item__pp h2 { + font-size: .8125rem; + line-height: 1.8; + margin-bottom: .4em; + font-weight: 700; +} + +.form-item__pp ul { + margin-bottom: 1em; + list-style: disc outside; + margin-left: 1.5rem; +} + +.form-item__pp li { + font-size: .8125rem; + line-height: 1.8; + margin-bottom: .4em; +} + +.form-item__pp *:last-child { + margin-bottom: 0; +} + +.form-item__mention-input { + position: relative; +} + +.form-item__mention-input::before { + content: '@'; + font-family: 'Font Awesome 6 Pro'; + font-style: normal; + font-weight: 400; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + content: "\f1fa"; + font-size: 1rem; + line-height: 1; + display: flex; + align-items: center; + justify-content: center; + height: 100%; + width: 2rem; + left: 0; + position: absolute; + top: 0; + background-color: var(--background); + border-top-left-radius: .25rem; + border-bottom-left-radius: .25rem; + border: solid 1px #c1c5b9; +} + +.form-item__mention-input input { + padding-left: 2.5rem; +} + +.form-item__lerning-times { + margin-bottom: 1rem; +} + +.form-item__header { + display: flex; + justify-content: space-between; + margin-bottom: .5rem; +} + +.form-item__header .a-form-label { + margin-bottom: 0; +} + +.form-item__price-container { + position: relative; + display: flex; + align-items: flex-end; + max-width: 10rem; +} + +.form-item__price-unit { + padding-bottom: .25rem; + margin-left: .25rem; +} + +.form-item__inline-form-item { + display: flex; + align-items: center; + flex: 0 0 100%; + padding-top: .25rem; + color: var(--default-text); + font-weight: 400; +} + +.form-item__add-times { +} + +@media (min-width: 48em) { + .form-item__add-times { + margin-top: -.125rem; + } +} + +@media (max-width: 47.9375em) { + .form-item__add-times { + margin-top: -1.25rem; + } +} + +.form-item__add-choice { + margin-top: 1rem; +} + +.form-item__option { + margin-top: .5rem; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-link-block.css b/app/assets/stylesheets/shared/blocks/form/_form-link-block.css new file mode 100644 index 00000000000..d8bbb4c9baf --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-link-block.css @@ -0,0 +1,7 @@ +.form-link-block__link { + font-size: 0.875rem; + line-height: 1.4; + display: block; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-notice.css b/app/assets/stylesheets/shared/blocks/form/_form-notice.css new file mode 100644 index 00000000000..1a49d5ff4e4 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-notice.css @@ -0,0 +1,19 @@ + +.form-notice { +} + +.form-notice:not(:first-child) { + margin-top: 1em; +} + +@media (min-width: 48em) { + .form-notice { + margin-bottom: 2rem; + } +} + +@media (max-width: 47.9375em) { + .form-notice { + margin-bottom: 1.5rem; + } +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-selects.css b/app/assets/stylesheets/shared/blocks/form/_form-selects.css new file mode 100644 index 00000000000..2542cde4fe8 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-selects.css @@ -0,0 +1,73 @@ +.form-selects { + display: flex; +} + +.form-selects__item { + display: flex; + align-items: center; +} + +@media (max-width: 47.9375em) { + .form-selects__item { + flex-basis: 50%; + position: relative; + } +} + +@media (max-width: 47.9375em) { + .form-selects__item:first-child { + padding-right: .375rem; + } +} + +@media (max-width: 47.9375em) { + .form-selects__item:last-child { + padding-left: .375rem; + } +} + +.form-selects__item.has-colon::after { + content: ":"; + display: flex; + align-items: center; + justify-content: center; +} + +@media (min-width: 48em) { + .form-selects__item.has-colon::after { + padding-inline: .5rem; + } +} + +@media (max-width: 47.9375em) { + .form-selects__item.has-colon::after { + width: .75rem; + position: absolute; + right: -.375rem; + top: 0; + bottom: 0; + } +} + +.form-selects__item.has-slash::after { + content: "/"; + display: flex; + align-items: center; + justify-content: center; +} + +@media (min-width: 48em) { + .form-selects__item.has-slash::after { + padding-inline: .5rem; + } +} + +@media (max-width: 47.9375em) { + .form-selects__item.has-slash::after { + width: .75rem; + position: absolute; + right: -.375rem; + top: 0; + bottom: 0; + } +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-table.css b/app/assets/stylesheets/shared/blocks/form/_form-table.css new file mode 100644 index 00000000000..20f0e364fe7 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-table.css @@ -0,0 +1,68 @@ +.form-table { + overflow: auto; + max-width: 100%; +} +.form-table.is-sm { + font-size: 0.8125rem; +} +.form-table table { + border: solid 1px var(--border); +} +.form-table td, +.form-table th { + padding: 0.5rem; + border: solid 1px var(--border); +} +.form-table th { + background-color: var(--background-tint); + border: solid 1px var(--border-shade); +} +.form-table .form-table__check { + padding: 0; +} +.form-table .form-table__check label { + display: flex; + align-items: center; + justify-content: center; + padding: 0.5rem; + cursor: pointer; + border-radius: 0.25rem; +} +.form-table .form-table__check label input { + opacity: 0; + position: absolute; + pointer-events: none; +} +.form-table .form-table__check label::after { + content: ""; + height: 0.875rem; + width: 0.875rem; + border: solid 1px var(--border-shade); + border-radius: 0.25rem; +} +.form-table .form-table__check:has(:checked) label { + background: var(--input-selected-background); + box-shadow: 0 0 0 1px var(--input-selected-border) inset; +} +.form-table .form-table__check:has(:checked) label::after { + border: none; + content: "\f00c"; + font-family: "Font Awesome 6 Pro"; + font-style: normal; + font-weight: 900; + font-variant: normal; + text-rendering: auto; + line-height: 1; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + color: var(--main); +} +.form-table.is-sticky thead th { + position: sticky; + top: 0; + z-index: 1; +} +.form-table.is-sticky thead th:first-child { + position: sticky; + left: 0; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-tabs-item.css b/app/assets/stylesheets/shared/blocks/form/_form-tabs-item.css new file mode 100644 index 00000000000..25f2496d4ed --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-tabs-item.css @@ -0,0 +1,19 @@ +.form-tabs-item__markdown { + height: 100%; + display: none; +} +.form-tabs-item__markdown.is-active { + display: block; +} + +.form-tabs-item__textarea { + min-height: 9rem; + overflow: hidden; +} + +.form-tabs-item__preview { + background-color: var(--base); + font-size: 0.875rem; + line-height: 1.8; + min-height: 9rem; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-tabs.css b/app/assets/stylesheets/shared/blocks/form/_form-tabs.css new file mode 100644 index 00000000000..6e8bc5d5ee7 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-tabs.css @@ -0,0 +1,39 @@ +.form-tabs { + display: flex; + border-bottom: solid 1px var(--border); +} + +.form-tabs__tab { + width: 5.5rem; + padding-block: 0.75rem 1rem; + font-size: 0.8125rem; + line-height: 1; + display: flex; + display: flex; + white-space: nowrap; + color: var(--muted-text); + align-items: center; + justify-content: center; + cursor: pointer; + position: relative; + transition: all 0.2s ease-out; +} +.form-tabs__tab:hover { + color: var(--default-text); + text-decoration: underline; +} +.form-tabs__tab.is-active { + color: var(--default-text); + font-weight: 600; + pointer-events: none; +} +.form-tabs__tab.is-active::before { + content: ""; + display: block; + height: 0.375rem; + position: absolute; + left: 0; + right: 0; + bottom: 0; + background-color: var(--warning); +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-textarea.css b/app/assets/stylesheets/shared/blocks/form/_form-textarea.css new file mode 100644 index 00000000000..4ed9ec3e5e3 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-textarea.css @@ -0,0 +1,50 @@ + +.form-textarea { + position: relative; + textarea.a-text-input { + padding-bottom: 3rem; + + } +} +@media (max-width: 63.9375em) { + .form-textarea__bottom-note { + display: none; + + } +} +@media (min-width: 64em) { + .form-textarea__bottom-note { + font-size: .75rem; + line-height: 1.4; + text-align: center; + + } +} +.form-textarea__footer { + height: 2rem; + display: flex; + gap: 1rem; + align-items: center; + background-color: var(--background); + position: absolute; + left: 1px; + bottom: 1px; + right: 1px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + padding-left: .5rem; + padding-right: .5rem; + border-top: solid 1px var(--border-shade); + +} +.form-textarea__bottom-note { + @media (max-width: 63.9375em) { + display: none; + } + @media (min-width: 64em) { + font-size: .75rem; + line-height: 1.4; + text-align: center; + + } +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form-times.css b/app/assets/stylesheets/shared/blocks/form/_form-times.css new file mode 100644 index 00000000000..a4c7bee9498 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form-times.css @@ -0,0 +1,77 @@ + +.form-times { +} + +@media (min-width: 48em) { + .form-times { + display: flex; + align-items: flex-end; + } +} + +@media (max-width: 47.9375em) { + .form-times { + display: block; + } +} + +.form-times__inner { + margin-bottom: 1rem; +} + +@media (min-width: 48em) { + .form-times__inner { + display: flex; + align-items: flex-end; + } +} + +.form-times__items { + display: flex; +} + +@media (max-width: 47.9375em) { + .form-times__items { + gap: 1rem; + } +} + +.form-times__action { +} + +@media (max-width: 47.9375em) { + .form-times__action { + margin-top: .75rem; + display: flex; + justify-content: flex-end; + } +} + +#tasks .form-item:first-child .form-times__action { + display: none; +} + +.form-times__time { + display: flex; + flex-direction: column; +} + +@media (min-width: 48em) { + .form-times__time { + margin-right: 1rem; + } +} + +@media (max-width: 47.9375em) { + .form-times__time { + margin-right: 0; + flex-basis: 50%; + } +} + +.form-times__time-label { + font-size: .75rem; + line-height: 1.4; + margin-bottom: .5em; + display: block; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_form.css b/app/assets/stylesheets/shared/blocks/form/_form.css new file mode 100644 index 00000000000..6aa9d5c9aa7 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_form.css @@ -0,0 +1,38 @@ + +.form { + margin-inline: auto; +} + +.a-card + .form { + margin-top: 1.25rem; +} + +.form + .form { + margin-top: 1rem; + border-top: dashed 1px var(--border); + padding-top: 1rem; +} + +.form__items + .form__items { + margin-top: 1.75rem; +} + +.form__items-title { + font-size: .875rem; + line-height: 1.4; + margin-bottom: 1.5rem; + font-weight: 700; + color: var(--reversal-text); + background-color: var(--main); + padding: .625rem 1rem; + border-radius: .25rem; +} + +.form__items > .a-form-label { + margin-bottom: .875rem; +} + +.form__items-inner { + width: 42.5rem; + max-width: 100%; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_hidden-form-item.css b/app/assets/stylesheets/shared/blocks/form/_hidden-form-item.css new file mode 100644 index 00000000000..4b58d556f1f --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_hidden-form-item.css @@ -0,0 +1,11 @@ +.hidden-form-item__target { + display: none; +} + +input:checked + .hidden-form-item__trigger + .hidden-form-item__target { + display: block; +} + +input:checked + .hidden-form-item__trigger { + display: none; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_important-message.css b/app/assets/stylesheets/shared/blocks/form/_important-message.css new file mode 100644 index 00000000000..193536b9538 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_important-message.css @@ -0,0 +1,28 @@ + +.important-message { + border: solid 2px var(--danger); + border-radius: .25rem; + overflow: hidden; +} + +.important-message + form { + margin-top: 2rem; +} + +.important-message__header { + border-bottom: solid 1px var(--danger); + padding: .5rem 1rem; + background-color: var(--danger-tint); +} + +.important-message__title { + font-size: .875rem; + line-height: 1.4; + font-weight: 800; + color: var(--danger-text); +} + +.important-message__body { + padding: .75rem 1rem; + background-color: var(--danger-tint); +} diff --git a/app/assets/stylesheets/shared/blocks/form/_linear-scale.css b/app/assets/stylesheets/shared/blocks/form/_linear-scale.css new file mode 100644 index 00000000000..3f5bb348e12 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_linear-scale.css @@ -0,0 +1,75 @@ +.linear-scale { + display: flex; + align-items: center; +} + +.linear-scale__label { + font-size: 0.8125rem; + line-height: 1.4; +} + +.linear-scale__label:first-child { + margin-right: 1rem; +} + +.linear-scale__label:last-child { + margin-left: 1rem; +} + +.linear-scale__points { + flex: 1; +} + +.linear-scale__points-items { + display: flex; + justify-content: space-between; +} + +.linear-scale__point { + display: flex; + flex-direction: column; + font-size: 0.875rem; + line-height: 1.4; + color: var(--semi-muted-text); + position: relative; + cursor: pointer; + padding-bottom: 0.875rem; + width: 2.25rem; + text-align: center; + transition: color 0.2s ease-out; +} + +.linear-scale__point::before { + content: ""; + height: 0.875rem; + width: 0.875rem; + border: solid 1px var(--input-border); + bottom: 0; + left: 50%; + position: absolute; + transform: translate(-50%, 0); + background-color: var(--base); + border-radius: 50%; + font-size: 0.75rem; + color: var(--reversal-text); + transition: all 0.2s ease-out; +} + +.linear-scale__point:hover::before { + background-color: rgba(87, 82, 232, 0.4); + border-color: var(--primary); +} + +input:checked + .linear-scale__point { + color: var(--default-text); +} + +input:checked + .linear-scale__point::before { + background-color: var(--primary); + border-color: var(--primary); + box-shadow: inset 0 0 0 1px var(--background); +} + +input:checked + .linear-scale__point:hover::before { + border-color: var(--primary); +} diff --git a/app/assets/stylesheets/shared/blocks/form/_many-check-boxes.css b/app/assets/stylesheets/shared/blocks/form/_many-check-boxes.css new file mode 100644 index 00000000000..818d1106cac --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_many-check-boxes.css @@ -0,0 +1,26 @@ +.many-check-boxes { + max-height: 16rem; + overflow-y: auto; + background-color: #f7f7f7; + border: solid 1px #c1c5b9; + border-radius: 0.25rem; +} + +.many-check-boxes__item-label { + font-size: 0.8125rem; + line-height: 1.4; + display: block; + padding: 0.5rem; + border-bottom: solid 1px #ccc; + cursor: pointer; +} +.many-check-boxes__item-label.is-checked { + background-color: var(--accent); + color: var(--main-text); +} +.many-check-boxes__item:last-child .many-check-boxes__item-label { + border-bottom: none; +} +.many-check-boxes__item-label input { + margin-right: 0.75rem; +} diff --git a/app/assets/stylesheets/shared/blocks/form/_markdown-form.css b/app/assets/stylesheets/shared/blocks/form/_markdown-form.css new file mode 100644 index 00000000000..8d8bfb9e597 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_markdown-form.css @@ -0,0 +1,30 @@ + +.markdown-form__text-area.a-text-input { + min-height: 30rem; +} + +@media (max-width: 47.9375em) { + .markdown-form__text-area.a-text-input { + margin-bottom: 1rem; + } +} + +.markdown-form__preview { + background-color: var(--base); + font-size: .875rem; + line-height: 1.8; + border-radius: .25rem; + min-height: 30rem; +} + +@media (min-width: 48em) { + .markdown-form__preview { + padding: 1rem; + } +} + +@media (max-width: 47.9375em) { + .markdown-form__preview { + padding: .5rem; + } +} diff --git a/app/assets/stylesheets/shared/blocks/form/_radios.css b/app/assets/stylesheets/shared/blocks/form/_radios.css new file mode 100644 index 00000000000..87f547af914 --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_radios.css @@ -0,0 +1,62 @@ +.radios__items { + display: flex; + flex-wrap: wrap; + column-gap: 1.5rem; + row-gap: 0.75rem; +} + +.radios__item label { + font-size: 0.875rem; + line-height: 1.4; + display: block; + color: var(--semi-muted-text); + position: relative; + text-decoration: none; + cursor: pointer; + padding-left: calc(0.875rem * 1.4); + transition: text-decoration 0.2s ease-out; +} + +.radios__item label:hover, +.radios__item label:active { + text-decoration: underline; +} + +.radios__item label.is-sm { + font-size: 0.8125rem; +} + +.radios__item label::before { + content: ""; + height: 0.875rem; + width: 0.875rem; + border: solid 1px var(--input-border); + position: absolute; + left: 0; + top: 50%; + transform: translate(0, -50%); + background-color: var(--base); + border-radius: 50%; + font-size: 0.75rem; + color: var(--reversal-text); + transition: all 0.2s ease-out; +} + +.radios__item label:hover::before { + background-color: rgba(87, 82, 232, 0.4); + border-color: var(--primary); +} + +.radios__item input:checked + label { + color: var(--default-text); +} + +.radios__item input:checked + label::before { + background-color: var(--primary); + border-color: var(--primary); + box-shadow: inset 0 0 0 1px var(--background); +} + +.radios__item input:checked + label:hover::before { + border-color: var(--primary); +} diff --git a/app/assets/stylesheets/shared/blocks/form/_vue-tags-input.css b/app/assets/stylesheets/shared/blocks/form/_vue-tags-input.css new file mode 100644 index 00000000000..5b575d0f7dc --- /dev/null +++ b/app/assets/stylesheets/shared/blocks/form/_vue-tags-input.css @@ -0,0 +1,14 @@ +.vue-tags-input { + max-width: 100% !important; +} + +body .vue-tags-input .ti-input { + border-radius: 4px; + background-color: var(--input-background); + border-color: var(--input-border); + transition: all 0.2s ease-out; +} +body .vue-tags-input .ti-input:hover { + background-color: var(--input-hover-background); + border-color: var(--input-hover-border); +} diff --git a/app/assets/stylesheets/shared/helpers/_state.css b/app/assets/stylesheets/shared/helpers/_state.css new file mode 100644 index 00000000000..13e3b6f6f08 --- /dev/null +++ b/app/assets/stylesheets/shared/helpers/_state.css @@ -0,0 +1,47 @@ +html *[hidden], +html .is-hidden { + display: none !important; +} + +@media (min-width: 64em) { + body .is-hidden-lg-up { + display: none; + } +} + +@media (max-width: 63.9375em) { + body .is-hidden-lg-down { + display: none; + } +} + +@media (min-width: 48em) { + body .is-hidden-md-up { + display: none !important; + } +} + +@media (max-width: 47.9375em) { + body .is-hidden-md-down { + display: none; + } +} + +@media (max-width: 47.9375em) { + body .is-hidden-sm-down { + display: none; + } +} + +body:not(.is-mentor-mode) .is-only-mentor { + display: none !important; +} + +body:not(.is-adviser-mode) .is-only-adviser { + display: none !important; +} + +body.is-mentor-mode .is-only-mentor.is-only-adviser, +body.is-adviser-mode .is-only-mentor.is-only-adviser { + display: block !important; +} diff --git a/app/assets/stylesheets/shared/layouts/_columns.css b/app/assets/stylesheets/shared/layouts/_columns.css new file mode 100644 index 00000000000..0d842a1f9fe --- /dev/null +++ b/app/assets/stylesheets/shared/layouts/_columns.css @@ -0,0 +1,145 @@ +/* ========================================================= + Layout containers +========================================================= */ +:is(.columns, .row) { + display: flex; + flex-wrap: wrap; + + /* defaults */ + --grid-columns: 12; + --gutter: 1rem; + + gap: var(--gutter); + + /* 1 column width (no outer gutters; only between columns) */ + --one-col: calc( + (100% - (var(--grid-columns) - 1) * var(--gutter)) / var(--grid-columns) + ); +} + +:is(.row, .columns).justify-center { + justify-content: center; +} + +.columns + .columns { + margin-top: 1.5rem; +} + + +/* ========================================================= + Gutter variations +========================================================= */ +:is(.row, .columns).is-gutter-width-0 { --gutter: 0; gap: 0; } +:is(.row, .columns).is-gutter-width-24 { --gutter: 1.5rem; gap: 1.5rem; } +:is(.row, .columns).is-gutter-width-32 { --gutter: 2rem; gap: 2rem; } +:is(.row, .columns).is-gutter-width-56 { --gutter: 3.5rem; gap: 3.5rem; } + +/* ========================================================= + Column width helpers (formula) + width(n) = one-col * n + (n - 1) * gutter +========================================================= */ +.col-xs-1 { flex: 0 0 var(--one-col); max-width: var(--one-col); } +.col-xs-2 { flex: 0 0 calc(var(--one-col) * 2 + 1 * var(--gutter)); max-width: calc(var(--one-col) * 2 + 1 * var(--gutter)); } +.col-xs-3 { flex: 0 0 calc(var(--one-col) * 3 + 2 * var(--gutter)); max-width: calc(var(--one-col) * 3 + 2 * var(--gutter)); } +.col-xs-4 { flex: 0 0 calc(var(--one-col) * 4 + 3 * var(--gutter)); max-width: calc(var(--one-col) * 4 + 3 * var(--gutter)); } +.col-xs-5 { flex: 0 0 calc(var(--one-col) * 5 + 4 * var(--gutter)); max-width: calc(var(--one-col) * 5 + 4 * var(--gutter)); } +.col-xs-6 { flex: 0 0 calc(var(--one-col) * 6 + 5 * var(--gutter)); max-width: calc(var(--one-col) * 6 + 5 * var(--gutter)); } +.col-xs-7 { flex: 0 0 calc(var(--one-col) * 7 + 6 * var(--gutter)); max-width: calc(var(--one-col) * 7 + 6 * var(--gutter)); } +.col-xs-8 { flex: 0 0 calc(var(--one-col) * 8 + 7 * var(--gutter)); max-width: calc(var(--one-col) * 8 + 7 * var(--gutter)); } +.col-xs-9 { flex: 0 0 calc(var(--one-col) * 9 + 8 * var(--gutter)); max-width: calc(var(--one-col) * 9 + 8 * var(--gutter)); } +.col-xs-10 { flex: 0 0 calc(var(--one-col) * 10 + 9 * var(--gutter)); max-width: calc(var(--one-col) * 10 + 9 * var(--gutter)); } +.col-xs-11 { flex: 0 0 calc(var(--one-col) * 11 + 10 * var(--gutter)); max-width: calc(var(--one-col) * 11 + 10 * var(--gutter)); } +.col-xs-12 { flex: 0 0 100%; max-width: 100%; } + +/* ========================================================= + Breakpoints +========================================================= */ +@media (min-width: 40em) { + .col-sm-1 { flex: 0 0 var(--one-col); max-width: var(--one-col); } + .col-sm-2 { flex: 0 0 calc(var(--one-col) * 2 + 1 * var(--gutter)); max-width: calc(var(--one-col) * 2 + 1 * var(--gutter)); } + .col-sm-3 { flex: 0 0 calc(var(--one-col) * 3 + 2 * var(--gutter)); max-width: calc(var(--one-col) * 3 + 2 * var(--gutter)); } + .col-sm-4 { flex: 0 0 calc(var(--one-col) * 4 + 3 * var(--gutter)); max-width: calc(var(--one-col) * 4 + 3 * var(--gutter)); } + .col-sm-5 { flex: 0 0 calc(var(--one-col) * 5 + 4 * var(--gutter)); max-width: calc(var(--one-col) * 5 + 4 * var(--gutter)); } + .col-sm-6 { flex: 0 0 calc(var(--one-col) * 6 + 5 * var(--gutter)); max-width: calc(var(--one-col) * 6 + 5 * var(--gutter)); } + .col-sm-7 { flex: 0 0 calc(var(--one-col) * 7 + 6 * var(--gutter)); max-width: calc(var(--one-col) * 7 + 6 * var(--gutter)); } + .col-sm-8 { flex: 0 0 calc(var(--one-col) * 8 + 7 * var(--gutter)); max-width: calc(var(--one-col) * 8 + 7 * var(--gutter)); } + .col-sm-9 { flex: 0 0 calc(var(--one-col) * 9 + 8 * var(--gutter)); max-width: calc(var(--one-col) * 9 + 8 * var(--gutter)); } + .col-sm-10 { flex: 0 0 calc(var(--one-col) * 10 + 9 * var(--gutter)); max-width: calc(var(--one-col) * 10 + 9 * var(--gutter)); } + .col-sm-11 { flex: 0 0 calc(var(--one-col) * 11 + 10 * var(--gutter)); max-width: calc(var(--one-col) * 11 + 10 * var(--gutter)); } + .col-sm-12 { flex: 0 0 100%; max-width: 100%; } +} + +@media (min-width: 48em) { + .col-md-1 { flex: 0 0 var(--one-col); max-width: var(--one-col); } + .col-md-2 { flex: 0 0 calc(var(--one-col) * 2 + 1 * var(--gutter)); max-width: calc(var(--one-col) * 2 + 1 * var(--gutter)); } + .col-md-3 { flex: 0 0 calc(var(--one-col) * 3 + 2 * var(--gutter)); max-width: calc(var(--one-col) * 3 + 2 * var(--gutter)); } + .col-md-4 { flex: 0 0 calc(var(--one-col) * 4 + 3 * var(--gutter)); max-width: calc(var(--one-col) * 4 + 3 * var(--gutter)); } + .col-md-5 { flex: 0 0 calc(var(--one-col) * 5 + 4 * var(--gutter)); max-width: calc(var(--one-col) * 5 + 4 * var(--gutter)); } + .col-md-6 { flex: 0 0 calc(var(--one-col) * 6 + 5 * var(--gutter)); max-width: calc(var(--one-col) * 6 + 5 * var(--gutter)); } + .col-md-7 { flex: 0 0 calc(var(--one-col) * 7 + 6 * var(--gutter)); max-width: calc(var(--one-col) * 7 + 6 * var(--gutter)); } + .col-md-8 { flex: 0 0 calc(var(--one-col) * 8 + 7 * var(--gutter)); max-width: calc(var(--one-col) * 8 + 7 * var(--gutter)); } + .col-md-9 { flex: 0 0 calc(var(--one-col) * 9 + 8 * var(--gutter)); max-width: calc(var(--one-col) * 9 + 8 * var(--gutter)); } + .col-md-10 { flex: 0 0 calc(var(--one-col) * 10 + 9 * var(--gutter)); max-width: calc(var(--one-col) * 10 + 9 * var(--gutter)); } + .col-md-11 { flex: 0 0 calc(var(--one-col) * 11 + 10 * var(--gutter)); max-width: calc(var(--one-col) * 11 + 10 * var(--gutter)); } + .col-md-12 { flex: 0 0 100%; max-width: 100%; } +} + +@media (min-width: 64em) { + .col-lg-1 { flex: 0 0 var(--one-col); max-width: var(--one-col); } + .col-lg-2 { flex: 0 0 calc(var(--one-col) * 2 + 1 * var(--gutter)); max-width: calc(var(--one-col) * 2 + 1 * var(--gutter)); } + .col-lg-3 { flex: 0 0 calc(var(--one-col) * 3 + 2 * var(--gutter)); max-width: calc(var(--one-col) * 3 + 2 * var(--gutter)); } + .col-lg-4 { flex: 0 0 calc(var(--one-col) * 4 + 3 * var(--gutter)); max-width: calc(var(--one-col) * 4 + 3 * var(--gutter)); } + .col-lg-5 { flex: 0 0 calc(var(--one-col) * 5 + 4 * var(--gutter)); max-width: calc(var(--one-col) * 5 + 4 * var(--gutter)); } + .col-lg-6 { flex: 0 0 calc(var(--one-col) * 6 + 5 * var(--gutter)); max-width: calc(var(--one-col) * 6 + 5 * var(--gutter)); } + .col-lg-7 { flex: 0 0 calc(var(--one-col) * 7 + 6 * var(--gutter)); max-width: calc(var(--one-col) * 7 + 6 * var(--gutter)); } + .col-lg-8 { flex: 0 0 calc(var(--one-col) * 8 + 7 * var(--gutter)); max-width: calc(var(--one-col) * 8 + 7 * var(--gutter)); } + .col-lg-9 { flex: 0 0 calc(var(--one-col) * 9 + 8 * var(--gutter)); max-width: calc(var(--one-col) * 9 + 8 * var(--gutter)); } + .col-lg-10 { flex: 0 0 calc(var(--one-col) * 10 + 9 * var(--gutter)); max-width: calc(var(--one-col) * 10 + 9 * var(--gutter)); } + .col-lg-11 { flex: 0 0 calc(var(--one-col) * 11 + 10 * var(--gutter)); max-width: calc(var(--one-col) * 11 + 10 * var(--gutter)); } + .col-lg-12 { flex: 0 0 100%; max-width: 100%; } +} + +@media (min-width: 80em) { + .col-xl-1 { flex: 0 0 var(--one-col); max-width: var(--one-col); } + .col-xl-2 { flex: 0 0 calc(var(--one-col) * 2 + 1 * var(--gutter)); max-width: calc(var(--one-col) * 2 + 1 * var(--gutter)); } + .col-xl-3 { flex: 0 0 calc(var(--one-col) * 3 + 2 * var(--gutter)); max-width: calc(var(--one-col) * 3 + 2 * var(--gutter)); } + .col-xl-4 { flex: 0 0 calc(var(--one-col) * 4 + 3 * var(--gutter)); max-width: calc(var(--one-col) * 4 + 3 * var(--gutter)); } + .col-xl-5 { flex: 0 0 calc(var(--one-col) * 5 + 4 * var(--gutter)); max-width: calc(var(--one-col) * 5 + 4 * var(--gutter)); } + .col-xl-6 { flex: 0 0 calc(var(--one-col) * 6 + 5 * var(--gutter)); max-width: calc(var(--one-col) * 6 + 5 * var(--gutter)); } + .col-xl-7 { flex: 0 0 calc(var(--one-col) * 7 + 6 * var(--gutter)); max-width: calc(var(--one-col) * 7 + 6 * var(--gutter)); } + .col-xl-8 { flex: 0 0 calc(var(--one-col) * 8 + 7 * var(--gutter)); max-width: calc(var(--one-col) * 8 + 7 * var(--gutter)); } + .col-xl-9 { flex: 0 0 calc(var(--one-col) * 9 + 8 * var(--gutter)); max-width: calc(var(--one-col) * 9 + 8 * var(--gutter)); } + .col-xl-10 { flex: 0 0 calc(var(--one-col) * 10 + 9 * var(--gutter)); max-width: calc(var(--one-col) * 10 + 9 * var(--gutter)); } + .col-xl-11 { flex: 0 0 calc(var(--one-col) * 11 + 10 * var(--gutter)); max-width: calc(var(--one-col) * 11 + 10 * var(--gutter)); } + .col-xl-12 { flex: 0 0 100%; max-width: 100%; } +} + +@media (min-width: 96em) { + .col-xxl-1 { flex: 0 0 var(--one-col); max-width: var(--one-col); } + .col-xxl-2 { flex: 0 0 calc(var(--one-col) * 2 + 1 * var(--gutter)); max-width: calc(var(--one-col) * 2 + 1 * var(--gutter)); } + .col-xxl-3 { flex: 0 0 calc(var(--one-col) * 3 + 2 * var(--gutter)); max-width: calc(var(--one-col) * 3 + 2 * var(--gutter)); } + .col-xxl-4 { flex: 0 0 calc(var(--one-col) * 4 + 3 * var(--gutter)); max-width: calc(var(--one-col) * 4 + 3 * var(--gutter)); } + .col-xxl-5 { flex: 0 0 calc(var(--one-col) * 5 + 4 * var(--gutter)); max-width: calc(var(--one-col) * 5 + 4 * var(--gutter)); } + .col-xxl-6 { flex: 0 0 calc(var(--one-col) * 6 + 5 * var(--gutter)); max-width: calc(var(--one-col) * 6 + 5 * var(--gutter)); } + .col-xxl-7 { flex: 0 0 calc(var(--one-col) * 7 + 6 * var(--gutter)); max-width: calc(var(--one-col) * 7 + 6 * var(--gutter)); } + .col-xxl-8 { flex: 0 0 calc(var(--one-col) * 8 + 7 * var(--gutter)); max-width: calc(var(--one-col) * 8 + 7 * var(--gutter)); } + .col-xxl-9 { flex: 0 0 calc(var(--one-col) * 9 + 8 * var(--gutter)); max-width: calc(var(--one-col) * 9 + 8 * var(--gutter)); } + .col-xxl-10 { flex: 0 0 calc(var(--one-col) * 10 + 9 * var(--gutter)); max-width: calc(var(--one-col) * 10 + 9 * var(--gutter)); } + .col-xxl-11 { flex: 0 0 calc(var(--one-col) * 11 + 10 * var(--gutter)); max-width: calc(var(--one-col) * 11 + 10 * var(--gutter)); } + .col-xxl-12 { flex: 0 0 100%; max-width: 100%; } +} + +@media (min-width: 120em) { + .col-xxxl-1 { flex: 0 0 var(--one-col); max-width: var(--one-col); } + .col-xxxl-2 { flex: 0 0 calc(var(--one-col) * 2 + 1 * var(--gutter)); max-width: calc(var(--one-col) * 2 + 1 * var(--gutter)); } + .col-xxxl-3 { flex: 0 0 calc(var(--one-col) * 3 + 2 * var(--gutter)); max-width: calc(var(--one-col) * 3 + 2 * var(--gutter)); } + .col-xxxl-4 { flex: 0 0 calc(var(--one-col) * 4 + 3 * var(--gutter)); max-width: calc(var(--one-col) * 4 + 3 * var(--gutter)); } + .col-xxxl-5 { flex: 0 0 calc(var(--one-col) * 5 + 4 * var(--gutter)); max-width: calc(var(--one-col) * 5 + 4 * var(--gutter)); } + .col-xxxl-6 { flex: 0 0 calc(var(--one-col) * 6 + 5 * var(--gutter)); max-width: calc(var(--one-col) * 6 + 5 * var(--gutter)); } + .col-xxxl-7 { flex: 0 0 calc(var(--one-col) * 7 + 6 * var(--gutter)); max-width: calc(var(--one-col) * 7 + 6 * var(--gutter)); } + .col-xxxl-8 { flex: 0 0 calc(var(--one-col) * 8 + 7 * var(--gutter)); max-width: calc(var(--one-col) * 8 + 7 * var(--gutter)); } + .col-xxxl-9 { flex: 0 0 calc(var(--one-col) * 9 + 8 * var(--gutter)); max-width: calc(var(--one-col) * 9 + 8 * var(--gutter)); } + .col-xxxl-10 { flex: 0 0 calc(var(--one-col) * 10 + 9 * var(--gutter)); max-width: calc(var(--one-col) * 10 + 9 * var(--gutter)); } + .col-xxxl-11 { flex: 0 0 calc(var(--one-col) * 11 + 10 * var(--gutter)); max-width: calc(var(--one-col) * 11 + 10 * var(--gutter)); } + .col-xxxl-12 { flex: 0 0 100%; max-width: 100%; } +} diff --git a/app/assets/stylesheets/shared/layouts/_container.css b/app/assets/stylesheets/shared/layouts/_container.css new file mode 100644 index 00000000000..d41e0a4d0fd --- /dev/null +++ b/app/assets/stylesheets/shared/layouts/_container.css @@ -0,0 +1,36 @@ +.container { + width: 100%; + max-width: 100%; + margin-inline: auto; + padding-inline: 1rem; +} +.container.is-xxxl { + max-width: 108rem; +} +.container.is-xxl { + max-width: 96rem; +} +.container.is-xl { + max-width: 80rem; +} +.container.is-lg { + max-width: 64rem; +} +.container.is-md { + max-width: 48rem; +} +.container.is-sm { + max-width: 40rem; +} +.container.is-xs { + width: 32rem; +} +.container.is-xxs { + max-width: 28rem; +} + +@media (min-width: 48em) { + .container { + padding-inline: 1.5rem; + } +} diff --git a/app/assets/stylesheets/shared/layouts/_l-container.css b/app/assets/stylesheets/shared/layouts/_l-container.css new file mode 100644 index 00000000000..e66dab4d96f --- /dev/null +++ b/app/assets/stylesheets/shared/layouts/_l-container.css @@ -0,0 +1,36 @@ +.l-container { + width: 100%; + max-width: 100vw; + margin-inline: auto; + padding-inline: 1rem; +} +.l-container.is-xxxl { + max-width: 108rem; +} +.l-container.is-xxl { + max-width: 96rem; +} +.l-container.is-xl { + max-width: 80rem; +} +.l-container.is-lg { + max-width: 64rem; +} +.l-container.is-md { + max-width: 48rem; +} +.l-container.is-sm { + width: 40rem; +} +.l-container.is-xs { + width: 32rem; +} +.l-container.is-xxs { + width: 28rem; +} + +@media (min-width: 48em) { + .l-container { + padding-inline: 1.5rem; + } +} diff --git a/app/assets/stylesheets/shared/layouts/_l-inner-container.css b/app/assets/stylesheets/shared/layouts/_l-inner-container.css new file mode 100644 index 00000000000..eb905369c74 --- /dev/null +++ b/app/assets/stylesheets/shared/layouts/_l-inner-container.css @@ -0,0 +1,29 @@ +.l-inner-container { + width: 100%; + max-width: calc(100vw - 32px); + margin-inline: auto; +} +.l-inner-container.is-xxxl { + max-width: 108rem; +} +.l-inner-container.is-xxl { + max-width: 96rem; +} +.l-inner-container.is-xl { + max-width: 80rem; +} +.l-inner-container.is-lg { + max-width: 64rem; +} +.l-inner-container.is-md { + max-width: 48rem; +} +.l-inner-container.is-sm { + width: 40rem; +} +.l-inner-container.is-xs { + width: 32rem; +} +.l-inner-container.is-xxs { + width: 28rem; +} diff --git a/app/assets/stylesheets/shared/layouts/_wrapper.css b/app/assets/stylesheets/shared/layouts/_wrapper.css new file mode 100644 index 00000000000..2cdd2b802f5 --- /dev/null +++ b/app/assets/stylesheets/shared/layouts/_wrapper.css @@ -0,0 +1,18 @@ +.wrapper { + min-height: 100vh; + scroll-behavior: smooth; + overflow-y: visible; + height: auto; + display: block; +} + +.wrapper__main { + flex: 1; +} + +@media (min-width: 48em) { + .wrapper { + display: flex; + flex-direction: column; + } +} diff --git a/app/assets/stylesheets/shared/test/_test.css b/app/assets/stylesheets/shared/test/_test.css new file mode 100644 index 00000000000..bca7edf7d69 --- /dev/null +++ b/app/assets/stylesheets/shared/test/_test.css @@ -0,0 +1,14 @@ +html body.is-test .wrapper { + height: auto; +} +html body.is-test .test-fixed-bottom { + position: fixed; + right: 10rem; + bottom: 10rem; +} +html body.is-test .test-inline-block { + display: inline-block; +} +html body.is-test .test-block { + display: block; +} diff --git a/app/assets/stylesheets/shared/utilities/_visibility.css b/app/assets/stylesheets/shared/utilities/_visibility.css new file mode 100644 index 00000000000..ee59ce7e1b9 --- /dev/null +++ b/app/assets/stylesheets/shared/utilities/_visibility.css @@ -0,0 +1,27 @@ +.is-hidden { + display: none !important; +} + +@media (max-width: 47.9375em) { + .is-hidden-sm-down { + display: none !important; + } +} + +@media (min-width: 48em) { + .is-hidden-md-up { + display: none !important; + } +} + +@media (max-width: 63.9375em) { + .is-hidden-md-down { + display: none !important; + } +} + +@media (min-width: 64em) { + .is-hidden-lg-up { + display: none !important; + } +} diff --git a/app/assets/stylesheets/vendor/choices.min.css b/app/assets/stylesheets/vendor/choices.min.css new file mode 100644 index 00000000000..9260536aa77 --- /dev/null +++ b/app/assets/stylesheets/vendor/choices.min.css @@ -0,0 +1 @@ +.choices{position:relative;overflow:hidden;margin-bottom:24px;font-size:16px}.choices:focus{outline:0}.choices:last-child{margin-bottom:0}.choices.is-open{overflow:visible}.choices.is-disabled .choices__inner,.choices.is-disabled .choices__input{background-color:#eaeaea;cursor:not-allowed;-webkit-user-select:none;user-select:none}.choices.is-disabled .choices__item{cursor:not-allowed}.choices [hidden]{display:none!important}.choices[data-type*=select-one]{cursor:pointer}.choices[data-type*=select-one] .choices__inner{padding-bottom:7.5px}.choices[data-type*=select-one] .choices__input{display:block;width:100%;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;margin:0}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);padding:0;background-size:8px;position:absolute;top:50%;right:0;margin-top:-10px;margin-right:25px;height:20px;width:20px;border-radius:10em;opacity:.25}.choices[data-type*=select-one] .choices__button:focus,.choices[data-type*=select-one] .choices__button:hover{opacity:1}.choices[data-type*=select-one] .choices__button:focus{box-shadow:0 0 0 2px #00bcd4}.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices[data-type*=select-one]::after{content:"";height:0;width:0;border-style:solid;border-color:#333 transparent transparent;border-width:5px;position:absolute;right:11.5px;top:50%;margin-top:-2.5px;pointer-events:none}.choices[data-type*=select-one].is-open::after{border-color:transparent transparent #333;margin-top:-7.5px}.choices[data-type*=select-one][dir=rtl]::after{left:11.5px;right:auto}.choices[data-type*=select-one][dir=rtl] .choices__button{right:auto;left:0;margin-left:25px;margin-right:0}.choices[data-type*=select-multiple] .choices__inner,.choices[data-type*=text] .choices__inner{cursor:text}.choices[data-type*=select-multiple] .choices__button,.choices[data-type*=text] .choices__button{position:relative;display:inline-block;margin:0-4px 0 8px;padding-left:16px;border-left:1px solid #008fa1;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);background-size:8px;width:8px;line-height:1;opacity:.75;border-radius:0}.choices[data-type*=select-multiple] .choices__button:focus,.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=text] .choices__button:focus,.choices[data-type*=text] .choices__button:hover{opacity:1}.choices__inner{display:inline-block;vertical-align:top;width:100%;background-color:#f9f9f9;padding:7.5px 7.5px 3.75px;border:1px solid #ddd;border-radius:2.5px;font-size:14px;min-height:44px;overflow:hidden}.is-focused .choices__inner,.is-open .choices__inner{border-color:#b7b7b7}.is-open .choices__inner{border-radius:2.5px 2.5px 0 0}.is-flipped.is-open .choices__inner{border-radius:0 0 2.5px 2.5px}.choices__list{margin:0;padding-left:0;list-style:none}.choices__list--single{display:inline-block;padding:4px 16px 4px 4px;width:100%}[dir=rtl] .choices__list--single{padding-right:4px;padding-left:16px}.choices__list--single .choices__item{width:100%}.choices__list--multiple{display:inline}.choices__list--multiple .choices__item{display:inline-block;vertical-align:middle;border-radius:20px;padding:4px 10px;font-size:12px;font-weight:500;margin-right:3.75px;margin-bottom:3.75px;background-color:#00bcd4;border:1px solid #00a5bb;color:#fff;word-break:break-all;box-sizing:border-box}.choices__list--multiple .choices__item[data-deletable]{padding-right:5px}[dir=rtl] .choices__list--multiple .choices__item{margin-right:0;margin-left:3.75px}.choices__list--multiple .choices__item.is-highlighted{background-color:#00a5bb;border:1px solid #008fa1}.is-disabled .choices__list--multiple .choices__item{background-color:#aaa;border:1px solid #919191}.choices__list--dropdown,.choices__list[aria-expanded]{visibility:hidden;z-index:1;position:absolute;width:100%;background-color:#fff;border:1px solid #ddd;top:100%;margin-top:-1px;border-bottom-left-radius:2.5px;border-bottom-right-radius:2.5px;overflow:hidden;word-break:break-all;will-change:visibility}.is-active.choices__list--dropdown,.is-active.choices__list[aria-expanded]{visibility:visible}.is-open .choices__list--dropdown,.is-open .choices__list[aria-expanded]{border-color:#b7b7b7}.is-flipped .choices__list--dropdown,.is-flipped .choices__list[aria-expanded]{top:auto;bottom:100%;margin-top:0;margin-bottom:-1px;border-radius:.25rem .25rem 0 0}.choices__list--dropdown .choices__list,.choices__list[aria-expanded] .choices__list{position:relative;max-height:300px;overflow:auto;-webkit-overflow-scrolling:touch;will-change:scroll-position}.choices__list--dropdown .choices__item,.choices__list[aria-expanded] .choices__item{position:relative;padding:10px;font-size:14px}[dir=rtl] .choices__list--dropdown .choices__item,[dir=rtl] .choices__list[aria-expanded] .choices__item{text-align:right}@media (min-width:640px){.choices__list--dropdown .choices__item--selectable,.choices__list[aria-expanded] .choices__item--selectable{padding-right:100px}.choices__list--dropdown .choices__item--selectable::after,.choices__list[aria-expanded] .choices__item--selectable::after{content:attr(data-select-text);font-size:12px;opacity:0;position:absolute;right:10px;top:50%;transform:translateY(-50%)}[dir=rtl] .choices__list--dropdown .choices__item--selectable,[dir=rtl] .choices__list[aria-expanded] .choices__item--selectable{text-align:right;padding-left:100px;padding-right:10px}[dir=rtl] .choices__list--dropdown .choices__item--selectable::after,[dir=rtl] .choices__list[aria-expanded] .choices__item--selectable::after{right:auto;left:10px}}.choices__list--dropdown .choices__item--selectable.is-highlighted,.choices__list[aria-expanded] .choices__item--selectable.is-highlighted{background-color:#f2f2f2}.choices__list--dropdown .choices__item--selectable.is-highlighted::after,.choices__list[aria-expanded] .choices__item--selectable.is-highlighted::after{opacity:.5}.choices__item{cursor:default}.choices__item--selectable{cursor:pointer}.choices__item--disabled{cursor:not-allowed;-webkit-user-select:none;user-select:none;opacity:.5}.choices__heading{font-weight:600;font-size:12px;padding:10px;border-bottom:1px solid #f7f7f7;color:gray}.choices__button{text-indent:-9999px;-webkit-appearance:none;appearance:none;border:0;background-color:transparent;background-repeat:no-repeat;background-position:center;cursor:pointer}.choices__button:focus,.choices__input:focus{outline:0}.choices__input{display:inline-block;vertical-align:baseline;background-color:#f9f9f9;font-size:14px;margin-bottom:5px;border:0;border-radius:0;max-width:100%;padding:4px 0 4px 2px}.choices__input::-webkit-search-cancel-button,.choices__input::-webkit-search-decoration,.choices__input::-webkit-search-results-button,.choices__input::-webkit-search-results-decoration{display:none}.choices__input::-ms-clear,.choices__input::-ms-reveal{display:none;width:0;height:0}[dir=rtl] .choices__input{padding-right:2px;padding-left:0}.choices__placeholder{opacity:.5} \ No newline at end of file diff --git a/app/assets/stylesheets/vendor/tagify.css b/app/assets/stylesheets/vendor/tagify.css new file mode 100644 index 00000000000..009e2d93c76 --- /dev/null +++ b/app/assets/stylesheets/vendor/tagify.css @@ -0,0 +1 @@ +@charset "UTF-8";:root{--tagify-dd-color-primary:rgb(53,149,246);--tagify-dd-bg-color:white;--tagify-dd-item-pad:.3em .5em}.tagify{--tags-disabled-bg:#F1F1F1;--tags-border-color:#DDD;--tags-hover-border-color:#CCC;--tags-focus-border-color:#3595f6;--tag-border-radius:3px;--tag-bg:#E5E5E5;--tag-hover:#D3E2E2;--tag-text-color:black;--tag-text-color--edit:black;--tag-pad:0.3em 0.5em;--tag-inset-shadow-size:1.1em;--tag-invalid-color:#D39494;--tag-invalid-bg:rgba(211, 148, 148, 0.5);--tag-remove-bg:rgba(211, 148, 148, 0.3);--tag-remove-btn-color:black;--tag-remove-btn-bg:none;--tag-remove-btn-bg--hover:#c77777;--input-color:inherit;--tag--min-width:1ch;--tag--max-width:auto;--tag-hide-transition:0.3s;--placeholder-color:rgba(0, 0, 0, 0.4);--placeholder-color-focus:rgba(0, 0, 0, 0.25);--loader-size:.8em;--readonly-striped:1;display:inline-flex;align-items:flex-start;flex-wrap:wrap;border:1px solid var(--tags-border-color);padding:0;line-height:0;cursor:text;outline:0;position:relative;box-sizing:border-box;transition:.1s}@keyframes tags--bump{30%{transform:scale(1.2)}}@keyframes rotateLoader{to{transform:rotate(1turn)}}.tagify:hover:not(.tagify--focus):not(.tagify--invalid){--tags-border-color:var(--tags-hover-border-color)}.tagify[disabled]{background:var(--tags-disabled-bg);filter:saturate(0);opacity:.5;pointer-events:none}.tagify[disabled].tagify--select,.tagify[readonly].tagify--select{pointer-events:none}.tagify[disabled]:not(.tagify--mix):not(.tagify--select),.tagify[readonly]:not(.tagify--mix):not(.tagify--select){cursor:default}.tagify[disabled]:not(.tagify--mix):not(.tagify--select)>.tagify__input,.tagify[readonly]:not(.tagify--mix):not(.tagify--select)>.tagify__input{visibility:hidden;width:0;margin:5px 0}.tagify[disabled]:not(.tagify--mix):not(.tagify--select) .tagify__tag>div,.tagify[readonly]:not(.tagify--mix):not(.tagify--select) .tagify__tag>div{padding:var(--tag-pad)}.tagify[disabled]:not(.tagify--mix):not(.tagify--select) .tagify__tag>div::before,.tagify[readonly]:not(.tagify--mix):not(.tagify--select) .tagify__tag>div::before{animation:readonlyStyles 1s calc(-1s * (var(--readonly-striped) - 1)) paused}@keyframes readonlyStyles{0%{background:linear-gradient(45deg,var(--tag-bg) 25%,transparent 25%,transparent 50%,var(--tag-bg) 50%,var(--tag-bg) 75%,transparent 75%,transparent) 0/5px 5px;box-shadow:none;filter:brightness(.95)}}.tagify[disabled] .tagify__tag__removeBtn,.tagify[readonly] .tagify__tag__removeBtn{display:none}.tagify--loading .tagify__input>br:last-child{display:none}.tagify--loading .tagify__input::before{content:none}.tagify--loading .tagify__input::after{content:"";vertical-align:middle;opacity:1;width:.7em;height:.7em;width:var(--loader-size);height:var(--loader-size);min-width:0;border:3px solid;border-color:#eee #bbb #888 transparent;border-radius:50%;animation:rotateLoader .4s infinite linear;content:""!important;margin:-2px 0 -2px .5em}.tagify--loading .tagify__input:empty::after{margin-left:0}.tagify+input,.tagify+textarea{position:absolute!important;left:-9999em!important;transform:scale(0)!important}.tagify__tag{display:inline-flex;align-items:center;margin:5px 0 5px 5px;position:relative;z-index:1;outline:0;line-height:normal;cursor:default;transition:.13s ease-out}.tagify__tag>div{vertical-align:top;box-sizing:border-box;max-width:100%;padding:var(--tag-pad);color:var(--tag-text-color);line-height:inherit;border-radius:var(--tag-border-radius);white-space:nowrap;transition:.13s ease-out}.tagify__tag>div>*{white-space:pre-wrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;vertical-align:top;min-width:var(--tag--min-width);max-width:var(--tag--max-width);transition:.8s ease,.1s color}.tagify__tag>div>[contenteditable]{outline:0;-webkit-user-select:text;user-select:text;cursor:text;margin:-2px;padding:2px;max-width:350px}.tagify__tag>div::before{content:"";position:absolute;border-radius:inherit;inset:var(--tag-bg-inset,0);z-index:-1;pointer-events:none;transition:120ms ease;animation:tags--bump .3s ease-out 1;box-shadow:0 0 0 var(--tag-inset-shadow-size) var(--tag-bg) inset}.tagify__tag:focus div::before,.tagify__tag:hover:not([readonly]) div::before{--tag-bg-inset:-2.5px;--tag-bg:var(--tag-hover)}.tagify__tag--loading{pointer-events:none}.tagify__tag--loading .tagify__tag__removeBtn{display:none}.tagify__tag--loading::after{--loader-size:.4em;content:"";vertical-align:middle;opacity:1;width:.7em;height:.7em;width:var(--loader-size);height:var(--loader-size);min-width:0;border:3px solid;border-color:#eee #bbb #888 transparent;border-radius:50%;animation:rotateLoader .4s infinite linear;margin:0 .5em 0 -.1em}.tagify__tag--flash div::before{animation:none}.tagify__tag--hide{width:0!important;padding-left:0;padding-right:0;margin-left:0;margin-right:0;opacity:0;transform:scale(0);transition:var(--tag-hide-transition);pointer-events:none}.tagify__tag--hide>div>*{white-space:nowrap}.tagify__tag.tagify--noAnim>div::before{animation:none}.tagify__tag.tagify--notAllowed:not(.tagify__tag--editable) div>span{opacity:.5}.tagify__tag.tagify--notAllowed:not(.tagify__tag--editable) div::before{--tag-bg:var(--tag-invalid-bg);transition:.2s}.tagify__tag[readonly] .tagify__tag__removeBtn{display:none}.tagify__tag[readonly]>div::before{animation:readonlyStyles 1s calc(-1s * (var(--readonly-striped) - 1)) paused}@keyframes readonlyStyles{0%{background:linear-gradient(45deg,var(--tag-bg) 25%,transparent 25%,transparent 50%,var(--tag-bg) 50%,var(--tag-bg) 75%,transparent 75%,transparent) 0/5px 5px;box-shadow:none;filter:brightness(.95)}}.tagify__tag--editable>div{color:var(--tag-text-color--edit)}.tagify__tag--editable>div::before{box-shadow:0 0 0 2px var(--tag-hover) inset!important}.tagify__tag--editable>.tagify__tag__removeBtn{pointer-events:none}.tagify__tag--editable>.tagify__tag__removeBtn::after{opacity:0;transform:translateX(100%) translateX(5px)}.tagify__tag--editable.tagify--invalid>div::before{box-shadow:0 0 0 2px var(--tag-invalid-color) inset!important}.tagify__tag__removeBtn{order:5;display:inline-flex;align-items:center;justify-content:center;border-radius:50px;cursor:pointer;font:14px/1 Arial;background:var(--tag-remove-btn-bg);color:var(--tag-remove-btn-color);width:14px;height:14px;margin-right:4.6666666667px;margin-left:auto;overflow:hidden;transition:.2s ease-out}.tagify__tag__removeBtn::after{content:"×";transition:.3s,color 0s}.tagify__tag__removeBtn:hover{color:#fff;background:var(--tag-remove-btn-bg--hover)}.tagify__tag__removeBtn:hover+div>span{opacity:.5}.tagify__tag__removeBtn:hover+div::before{box-shadow:0 0 0 var(--tag-inset-shadow-size) var(--tag-remove-bg,rgba(211,148,148,.3)) inset!important;transition:box-shadow .2s}.tagify:not(.tagify--mix) .tagify__input br{display:none}.tagify:not(.tagify--mix) .tagify__input *{display:inline;white-space:nowrap}.tagify__input{flex-grow:1;display:inline-block;min-width:110px;margin:5px;padding:var(--tag-pad);line-height:normal;position:relative;white-space:pre-wrap;color:var(--input-color);box-sizing:inherit}.tagify__input:empty::before{position:static}.tagify__input:focus{outline:0}.tagify__input:focus::before{transition:.2s ease-out;opacity:0;transform:translatex(6px)}@supports (-ms-ime-align:auto){.tagify__input:focus::before{display:none}}.tagify__input:focus:empty::before{transition:.2s ease-out;opacity:1;transform:none;color:rgba(0,0,0,.25);color:var(--placeholder-color-focus)}@-moz-document url-prefix(){.tagify__input:focus:empty::after{display:none}}.tagify__input::before{content:attr(data-placeholder);height:1em;line-height:1em;margin:auto 0;z-index:1;color:var(--placeholder-color);white-space:nowrap;pointer-events:none;opacity:0;position:absolute}.tagify__input::after{content:attr(data-suggest);display:inline-block;vertical-align:middle;position:absolute;min-width:calc(100% - 1.5em);text-overflow:ellipsis;overflow:hidden;white-space:pre;color:var(--tag-text-color);opacity:.3;pointer-events:none;max-width:100px}.tagify__input .tagify__tag{margin:0 1px}.tagify--mix{display:block}.tagify--mix .tagify__input{padding:5px;margin:0;width:100%;height:100%;line-height:1.5;display:block}.tagify--mix .tagify__input::before{height:auto;display:none;line-height:inherit}.tagify--mix .tagify__input::after{content:none}.tagify--select::after{content:">";opacity:.5;position:absolute;top:50%;right:0;bottom:0;font:16px monospace;line-height:8px;height:8px;pointer-events:none;transform:translate(-150%,-50%) scaleX(1.2) rotate(90deg);transition:.2s ease-in-out}.tagify--select[aria-expanded=true]::after{transform:translate(-150%,-50%) rotate(270deg) scaleY(1.2)}.tagify--select .tagify__tag{position:absolute;top:0;right:1.8em;bottom:0}.tagify--select .tagify__tag div{display:none}.tagify--select .tagify__input{width:100%}.tagify--empty .tagify__input::before{transition:.2s ease-out;opacity:1;transform:none;display:inline-block;width:auto}.tagify--mix .tagify--empty .tagify__input::before{display:inline-block}.tagify--focus{--tags-border-color:var(--tags-focus-border-color);transition:0s}.tagify--invalid{--tags-border-color:#D39494}.tagify__dropdown{position:absolute;z-index:9999;transform:translateY(1px);overflow:hidden}.tagify__dropdown[placement=top]{margin-top:0;transform:translateY(-100%)}.tagify__dropdown[placement=top] .tagify__dropdown__wrapper{border-top-width:1.1px;border-bottom-width:0}.tagify__dropdown[position=text]{box-shadow:0 0 0 3px rgba(var(--tagify-dd-color-primary),.1);font-size:.9em}.tagify__dropdown[position=text] .tagify__dropdown__wrapper{border-width:1px}.tagify__dropdown__wrapper{max-height:300px;overflow:auto;overflow-x:hidden;background:var(--tagify-dd-bg-color);border:1px solid;border-color:var(--tagify-dd-color-primary);border-bottom-width:1.5px;border-top-width:0;box-shadow:0 2px 4px -2px rgba(0,0,0,.2);transition:.25s cubic-bezier(0,1,.5,1)}.tagify__dropdown__header:empty{display:none}.tagify__dropdown__footer{display:inline-block;margin-top:.5em;padding:var(--tagify-dd-item-pad);font-size:.7em;font-style:italic;opacity:.5}.tagify__dropdown__footer:empty{display:none}.tagify__dropdown--initial .tagify__dropdown__wrapper{max-height:20px;transform:translateY(-1em)}.tagify__dropdown--initial[placement=top] .tagify__dropdown__wrapper{transform:translateY(2em)}.tagify__dropdown__item{box-sizing:border-box;padding:var(--tagify-dd-item-pad);margin:1px;white-space:pre-wrap;cursor:pointer;border-radius:2px;position:relative;outline:0;max-height:60px;max-width:100%}.tagify__dropdown__item--active{background:var(--tagify-dd-color-primary);color:#fff}.tagify__dropdown__item:active{filter:brightness(105%)}.tagify__dropdown__item--hidden{padding-top:0;padding-bottom:0;margin:0 1px;pointer-events:none;overflow:hidden;max-height:0;transition:var(--tagify-dd-item--hidden-duration,.3s)!important}.tagify__dropdown__item--hidden>*{transform:translateY(-100%);opacity:0;transition:inherit} \ No newline at end of file diff --git a/app/components/products/unassigned_products_component.html.slim b/app/components/products/unassigned_products_component.html.slim index 9e21eb8bf65..b03de57430e 100644 --- a/app/components/products/unassigned_products_component.html.slim +++ b/app/components/products/unassigned_products_component.html.slim @@ -19,7 +19,7 @@ .under-cards .under-cards__links.mt-4.text-center.leading-normal.text-sm - = link_to "/products/unassigned##{@reply_warning_days - 1}days-elapsed", + = link_to "/products/unassigned#elapsed-#{@reply_warning_days - 1}days", class: "divide-indigo-800 block p-2 border rounded border-solid text-indigo-800 a-hover-link" do - if count_almost_passed_reply_warning_days > 0 strong = count_almost_passed_reply_warning_days diff --git a/app/components/products/unassigned_products_component.rb b/app/components/products/unassigned_products_component.rb index b86917a79d9..930cc43f864 100644 --- a/app/components/products/unassigned_products_component.rb +++ b/app/components/products/unassigned_products_component.rb @@ -44,7 +44,7 @@ def elapsed_days_text(elapsed_days) end def elapsed_days_id(elapsed_days) - "#{elapsed_days}days-elapsed" + "elapsed-#{elapsed_days}days" end def count_almost_passed_reply_warning_days diff --git a/app/controllers/admin/embedding_status_controller.rb b/app/controllers/admin/embedding_status_controller.rb new file mode 100644 index 00000000000..4b97e92a317 --- /dev/null +++ b/app/controllers/admin/embedding_status_controller.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +class Admin::EmbeddingStatusController < AdminController + def index + @embedding_stats = fetch_embedding_stats + @total_stats = calculate_total_stats(@embedding_stats) + end + + private + + def fetch_embedding_stats + SmartSearch::Configuration::EMBEDDING_MODELS.filter_map do |model_name| + model_class = model_name.safe_constantize + next if model_class.nil? + next unless model_class.column_names.include?('embedding') + + total = model_class.count + with_embedding = model_class.where.not(embedding: nil).count + percentage = total.positive? ? (with_embedding.to_f / total * 100).round(1) : 0 + + { + model_name:, + total:, + with_embedding:, + percentage: + } + end + end + + def calculate_total_stats(stats) + total = stats.sum { |s| s[:total] } + with_embedding = stats.sum { |s| s[:with_embedding] } + percentage = total.positive? ? (with_embedding.to_f / total * 100).round(1) : 0 + + { total:, with_embedding:, percentage: } + end +end diff --git a/app/controllers/searchables_controller.rb b/app/controllers/searchables_controller.rb index dd9d280496b..b8486fef5d2 100644 --- a/app/controllers/searchables_controller.rb +++ b/app/controllers/searchables_controller.rb @@ -6,12 +6,14 @@ class SearchablesController < ApplicationController def index @word = params[:word].to_s @document_type = params[:document_type]&.to_sym || :all + @mode = params[:mode]&.to_sym || :keyword searcher = Searcher.new( keyword: params[:word], document_type: params[:document_type], only_me: params[:only_me].present?, - current_user: + current_user:, + mode: @mode ) results = searcher.search @searchables = Kaminari.paginate_array(results).page(params[:page]).per(PER_PAGE) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index bedf46919de..768588c202d 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -6,4 +6,13 @@ def my_practice?(practice) [:everyone, current_user.job].include?(practice.target) end + + # development/test環境では常に有効、それ以外はフィーチャーフラグで制御 + def smart_search_available? + Rails.env.local? || Switchlet.enabled?(:smart_search) + end + + def movie_available? + Rails.env.local? || Switchlet.enabled?(:movie) + end end diff --git a/app/helpers/label_helper.rb b/app/helpers/label_helper.rb new file mode 100644 index 00000000000..4e478684eb4 --- /dev/null +++ b/app/helpers/label_helper.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +module LabelHelper + def bookmarkable_label(bookmarkable) + case bookmarkable.model_name.name + when 'RegularEvent' + safe_join(%w[定期 イベント], tag.br) + else + bookmarkable.model_name.human + end + end +end diff --git a/app/helpers/page_tabs/practices_helper.rb b/app/helpers/page_tabs/practices_helper.rb index 14298271c4b..ff0e9a2b6ff 100644 --- a/app/helpers/page_tabs/practices_helper.rb +++ b/app/helpers/page_tabs/practices_helper.rb @@ -8,8 +8,7 @@ def practice_page_tabs(practice, active_tab:) tabs << { name: '日報', link: practice_reports_path(practice), count: practice.reports.length } tabs << { name: '質問', link: practice_questions_path(practice), count: practice.questions.length } tabs << { name: 'Docs', link: practice_pages_path(practice), count: practice.pages.length } - # TODO: 動画機能の完成時に本番環境で公開。動画リンクを隠した状態でのリリース。 - tabs << { name: '動画', link: practice_movies_path(practice), count: practice.movies.length } unless Rails.env.production? + tabs << { name: '動画', link: practice_movies_path(practice), count: practice.movies.length } if movie_available? tabs << { name: '提出物', link: practice_products_path(practice) } tabs << { name: '模範解答', link: practice_submission_answer_path(practice) } if practice.submission_answer.present? tabs << { name: 'コーディングテスト', link: practice_coding_tests_path(practice) } if practice.coding_tests.present? diff --git a/app/javascript/components/BookmarksInDashboard.jsx b/app/javascript/components/BookmarksInDashboard.jsx index e815df8977c..1c77dab64ec 100644 --- a/app/javascript/components/BookmarksInDashboard.jsx +++ b/app/javascript/components/BookmarksInDashboard.jsx @@ -119,7 +119,17 @@ const Bookmark = ({ bookmark, editable, bookmarksUrl }) => { {bookmark.modelName === 'Talk' ? (
) : ( -