Replace from Code Climate to Super-Linter (#18587)
This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							3f14260574
						
					
				
				
					commit
					84266f87e7
				
			@@ -26,13 +26,11 @@ plugins:
 | 
			
		||||
  bundler-audit:
 | 
			
		||||
    enabled: true
 | 
			
		||||
  eslint:
 | 
			
		||||
    enabled: true
 | 
			
		||||
    channel: eslint-7
 | 
			
		||||
    enabled: false
 | 
			
		||||
  rubocop:
 | 
			
		||||
    enabled: true
 | 
			
		||||
    channel: rubocop-1-9-1
 | 
			
		||||
    enabled: false
 | 
			
		||||
  sass-lint:
 | 
			
		||||
    enabled: true
 | 
			
		||||
    enabled: false
 | 
			
		||||
exclude_patterns:
 | 
			
		||||
  - spec/
 | 
			
		||||
  - vendor/asset/
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ module.exports = {
 | 
			
		||||
    ATTACHMENT_HOST: false,
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  parser: 'babel-eslint',
 | 
			
		||||
  parser: '@babel/eslint-parser',
 | 
			
		||||
 | 
			
		||||
  plugins: [
 | 
			
		||||
    'react',
 | 
			
		||||
@@ -27,7 +27,7 @@ module.exports = {
 | 
			
		||||
      experimentalObjectRestSpread: true,
 | 
			
		||||
      jsx: true,
 | 
			
		||||
    },
 | 
			
		||||
    ecmaVersion: 2018,
 | 
			
		||||
    ecmaVersion: 2021,
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  settings: {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										71
									
								
								.github/workflows/linter.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								.github/workflows/linter.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
---
 | 
			
		||||
#################################
 | 
			
		||||
#################################
 | 
			
		||||
## Super Linter GitHub Actions ##
 | 
			
		||||
#################################
 | 
			
		||||
#################################
 | 
			
		||||
name: Lint Code Base
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Documentation:
 | 
			
		||||
# https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
#############################
 | 
			
		||||
# Start the job on all push #
 | 
			
		||||
#############################
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches-ignore: [main]
 | 
			
		||||
    # Remove the line above to run when pushing to master
 | 
			
		||||
  pull_request:
 | 
			
		||||
    branches: [main]
 | 
			
		||||
 | 
			
		||||
###############
 | 
			
		||||
# Set the Job #
 | 
			
		||||
###############
 | 
			
		||||
permissions:
 | 
			
		||||
  checks: write
 | 
			
		||||
  contents: read
 | 
			
		||||
  pull-requests: write
 | 
			
		||||
  statuses: write
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
    # Name the Job
 | 
			
		||||
    name: Lint Code Base
 | 
			
		||||
    # Set the agent to run on
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    ##################
 | 
			
		||||
    # Load all steps #
 | 
			
		||||
    ##################
 | 
			
		||||
    steps:
 | 
			
		||||
      ##########################
 | 
			
		||||
      # Checkout the code base #
 | 
			
		||||
      ##########################
 | 
			
		||||
      - name: Checkout Code
 | 
			
		||||
        uses: actions/checkout@v3
 | 
			
		||||
        with:
 | 
			
		||||
          # Full git history is needed to get a proper list of changed files within `super-linter`
 | 
			
		||||
          fetch-depth: 0
 | 
			
		||||
 | 
			
		||||
      - name: Intall dependencies
 | 
			
		||||
        run: yarn install --frozen-lockfile
 | 
			
		||||
 | 
			
		||||
      ################################
 | 
			
		||||
      # Run Linter against code base #
 | 
			
		||||
      ################################
 | 
			
		||||
      - name: Lint Code Base
 | 
			
		||||
        uses: github/super-linter@v4
 | 
			
		||||
        env:
 | 
			
		||||
          CSS_FILE_NAME: stylelint.config.js
 | 
			
		||||
          DEFAULT_BRANCH: main
 | 
			
		||||
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
          JAVASCRIPT_ES_CONFIG_FILE: .eslintrc.js
 | 
			
		||||
          LINTER_RULES_PATH: .
 | 
			
		||||
          RUBY_CONFIG_FILE: .rubocop.yml
 | 
			
		||||
          VALIDATE_ALL_CODEBASE: false
 | 
			
		||||
          VALIDATE_CSS: true
 | 
			
		||||
          VALIDATE_JAVASCRIPT_ES: true
 | 
			
		||||
          VALIDATE_RUBY: true
 | 
			
		||||
@@ -1,37 +0,0 @@
 | 
			
		||||
# Linter Documentation:
 | 
			
		||||
# https://github.com/sasstools/sass-lint/tree/v1.13.1/docs/options
 | 
			
		||||
 | 
			
		||||
files:
 | 
			
		||||
  include: app/javascript/styles/**/*.scss
 | 
			
		||||
  ignore:
 | 
			
		||||
    - app/javascript/styles/mastodon/reset.scss
 | 
			
		||||
 | 
			
		||||
rules:
 | 
			
		||||
  # Disallows
 | 
			
		||||
  no-color-literals: 0
 | 
			
		||||
  no-css-comments: 0
 | 
			
		||||
  no-duplicate-properties: 0
 | 
			
		||||
  no-ids: 0
 | 
			
		||||
  no-important: 0
 | 
			
		||||
  no-mergeable-selectors: 0
 | 
			
		||||
  no-misspelled-properties: 0
 | 
			
		||||
  no-qualifying-elements: 0
 | 
			
		||||
  no-transition-all: 0
 | 
			
		||||
  no-vendor-prefixes: 0
 | 
			
		||||
 | 
			
		||||
  # Nesting
 | 
			
		||||
  force-element-nesting: 0
 | 
			
		||||
  force-attribute-nesting: 0
 | 
			
		||||
  force-pseudo-nesting: 0
 | 
			
		||||
 | 
			
		||||
  # Name Formats
 | 
			
		||||
  class-name-format: 0
 | 
			
		||||
  leading-zero: 0
 | 
			
		||||
 | 
			
		||||
  # Style Guide
 | 
			
		||||
  attribute-quotes: 0
 | 
			
		||||
  hex-length: 0
 | 
			
		||||
  indentation: 0
 | 
			
		||||
  nesting-depth: 0
 | 
			
		||||
  property-sort-order: 0
 | 
			
		||||
  quotes: 0
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'mastodon-font-display';
 | 
			
		||||
  src: local('Montserrat'),
 | 
			
		||||
  font-family: mastodon-font-display;
 | 
			
		||||
  src:
 | 
			
		||||
    local('Montserrat'),
 | 
			
		||||
    url('../fonts/montserrat/Montserrat-Regular.woff2') format('woff2'),
 | 
			
		||||
    url('../fonts/montserrat/Montserrat-Regular.woff') format('woff'),
 | 
			
		||||
    url('../fonts/montserrat/Montserrat-Regular.ttf') format('truetype');
 | 
			
		||||
@@ -10,8 +11,9 @@
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'mastodon-font-display';
 | 
			
		||||
  src: local('Montserrat Medium'),
 | 
			
		||||
  font-family: mastodon-font-display;
 | 
			
		||||
  src:
 | 
			
		||||
    local('Montserrat Medium'),
 | 
			
		||||
    url('../fonts/montserrat/Montserrat-Medium.ttf') format('truetype');
 | 
			
		||||
  font-weight: 500;
 | 
			
		||||
  font-display: swap;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'mastodon-font-monospace';
 | 
			
		||||
  src: local('Roboto Mono'),
 | 
			
		||||
  font-family: mastodon-font-monospace;
 | 
			
		||||
  src:
 | 
			
		||||
    local('Roboto Mono'),
 | 
			
		||||
    url('../fonts/roboto-mono/robotomono-regular-webfont.woff2') format('woff2'),
 | 
			
		||||
    url('../fonts/roboto-mono/robotomono-regular-webfont.woff') format('woff'),
 | 
			
		||||
    url('../fonts/roboto-mono/robotomono-regular-webfont.ttf') format('truetype'),
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'mastodon-font-sans-serif';
 | 
			
		||||
  src: local('Roboto Italic'),
 | 
			
		||||
  font-family: mastodon-font-sans-serif;
 | 
			
		||||
  src:
 | 
			
		||||
    local('Roboto Italic'),
 | 
			
		||||
    url('../fonts/roboto/roboto-italic-webfont.woff2') format('woff2'),
 | 
			
		||||
    url('../fonts/roboto/roboto-italic-webfont.woff') format('woff'),
 | 
			
		||||
    url('../fonts/roboto/roboto-italic-webfont.ttf') format('truetype'),
 | 
			
		||||
@@ -11,8 +12,9 @@
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'mastodon-font-sans-serif';
 | 
			
		||||
  src: local('Roboto Bold'),
 | 
			
		||||
  font-family: mastodon-font-sans-serif;
 | 
			
		||||
  src:
 | 
			
		||||
    local('Roboto Bold'),
 | 
			
		||||
    url('../fonts/roboto/roboto-bold-webfont.woff2') format('woff2'),
 | 
			
		||||
    url('../fonts/roboto/roboto-bold-webfont.woff') format('woff'),
 | 
			
		||||
    url('../fonts/roboto/roboto-bold-webfont.ttf') format('truetype'),
 | 
			
		||||
@@ -23,8 +25,9 @@
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'mastodon-font-sans-serif';
 | 
			
		||||
  src: local('Roboto Medium'),
 | 
			
		||||
  font-family: mastodon-font-sans-serif;
 | 
			
		||||
  src:
 | 
			
		||||
    local('Roboto Medium'),
 | 
			
		||||
    url('../fonts/roboto/roboto-medium-webfont.woff2') format('woff2'),
 | 
			
		||||
    url('../fonts/roboto/roboto-medium-webfont.woff') format('woff'),
 | 
			
		||||
    url('../fonts/roboto/roboto-medium-webfont.ttf') format('truetype'),
 | 
			
		||||
@@ -35,8 +38,9 @@
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'mastodon-font-sans-serif';
 | 
			
		||||
  src: local('Roboto'),
 | 
			
		||||
  font-family: mastodon-font-sans-serif;
 | 
			
		||||
  src:
 | 
			
		||||
    local('Roboto'),
 | 
			
		||||
    url('../fonts/roboto/roboto-regular-webfont.woff2') format('woff2'),
 | 
			
		||||
    url('../fonts/roboto/roboto-regular-webfont.woff') format('woff'),
 | 
			
		||||
    url('../fonts/roboto/roboto-regular-webfont.ttf') format('truetype'),
 | 
			
		||||
 
 | 
			
		||||
@@ -542,10 +542,10 @@ html {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.simple_form {
 | 
			
		||||
  input[type=text],
 | 
			
		||||
  input[type=number],
 | 
			
		||||
  input[type=email],
 | 
			
		||||
  input[type=password],
 | 
			
		||||
  input[type="text"],
 | 
			
		||||
  input[type="number"],
 | 
			
		||||
  input[type="email"],
 | 
			
		||||
  input[type="password"],
 | 
			
		||||
  textarea {
 | 
			
		||||
    &:hover {
 | 
			
		||||
      border-color: lighten($ui-base-color, 12%);
 | 
			
		||||
 
 | 
			
		||||
@@ -28,10 +28,10 @@ $inverted-text-color: $black !default;
 | 
			
		||||
$lighter-text-color: $classic-base-color !default;
 | 
			
		||||
$light-text-color: #444b5d;
 | 
			
		||||
 | 
			
		||||
//Newly added colors
 | 
			
		||||
// Newly added colors
 | 
			
		||||
$account-background-color: $white !default;
 | 
			
		||||
 | 
			
		||||
//Invert darkened and lightened colors
 | 
			
		||||
// Invert darkened and lightened colors
 | 
			
		||||
@function darken($color, $amount) {
 | 
			
		||||
  @return hsl(hue($color), saturation($color), lightness($color) + $amount);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ $small-breakpoint: 960px;
 | 
			
		||||
 | 
			
		||||
  p {
 | 
			
		||||
    margin-top: 0;
 | 
			
		||||
    margin-bottom: .85em;
 | 
			
		||||
    margin-bottom: 0.85em;
 | 
			
		||||
 | 
			
		||||
    &:last-child {
 | 
			
		||||
      margin-bottom: 0;
 | 
			
		||||
@@ -73,7 +73,7 @@ $small-breakpoint: 960px;
 | 
			
		||||
  h6 {
 | 
			
		||||
    font-family: $font-display, sans-serif;
 | 
			
		||||
    margin-top: 1.275em;
 | 
			
		||||
    margin-bottom: .85em;
 | 
			
		||||
    margin-bottom: 0.85em;
 | 
			
		||||
    font-weight: 500;
 | 
			
		||||
    color: $secondary-text-color;
 | 
			
		||||
  }
 | 
			
		||||
@@ -436,7 +436,7 @@ $small-breakpoint: 960px;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 0;
 | 
			
		||||
    border: 0;
 | 
			
		||||
    border-bottom: 1px solid rgba($ui-base-lighter-color, .6);
 | 
			
		||||
    border-bottom: 1px solid rgba($ui-base-lighter-color, 0.6);
 | 
			
		||||
    margin: 20px 0;
 | 
			
		||||
 | 
			
		||||
    &.spacer {
 | 
			
		||||
 
 | 
			
		||||
@@ -183,12 +183,9 @@ $content-width: 840px;
 | 
			
		||||
 | 
			
		||||
    &-heading {
 | 
			
		||||
      display: flex;
 | 
			
		||||
 | 
			
		||||
      padding-bottom: 36px;
 | 
			
		||||
      border-bottom: 1px solid lighten($ui-base-color, 8%);
 | 
			
		||||
 | 
			
		||||
      margin: -15px -15px 40px 0;
 | 
			
		||||
 | 
			
		||||
      flex-wrap: wrap;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
@@ -294,7 +291,7 @@ $content-width: 840px;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      height: 0;
 | 
			
		||||
      border: 0;
 | 
			
		||||
      border-bottom: 1px solid rgba($ui-base-lighter-color, .6);
 | 
			
		||||
      border-bottom: 1px solid rgba($ui-base-lighter-color, 0.6);
 | 
			
		||||
      margin: 20px 0;
 | 
			
		||||
 | 
			
		||||
      &.spacer {
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ body {
 | 
			
		||||
  text-rendering: optimizelegibility;
 | 
			
		||||
  font-feature-settings: "kern";
 | 
			
		||||
  text-size-adjust: none;
 | 
			
		||||
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
 | 
			
		||||
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0%);
 | 
			
		||||
  -webkit-tap-highlight-color: transparent;
 | 
			
		||||
 | 
			
		||||
  &.system-font {
 | 
			
		||||
@@ -31,7 +31,7 @@ body {
 | 
			
		||||
    // Droid Sans => Older Androids (<4.0)
 | 
			
		||||
    // Helvetica Neue => Older macOS <10.11
 | 
			
		||||
    // $font-sans-serif => web-font (Roboto) fallback and newer Androids (>=4.0)
 | 
			
		||||
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", $font-sans-serif, sans-serif;
 | 
			
		||||
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", $font-sans-serif, sans-serif;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &.app-body {
 | 
			
		||||
@@ -202,7 +202,7 @@ button {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  p {
 | 
			
		||||
    margin-bottom: .85em;
 | 
			
		||||
    margin-bottom: 0.85em;
 | 
			
		||||
 | 
			
		||||
    &:last-child {
 | 
			
		||||
      margin-bottom: 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -341,7 +341,6 @@
 | 
			
		||||
  &__sensitive-button {
 | 
			
		||||
    padding: 10px;
 | 
			
		||||
    padding-top: 0;
 | 
			
		||||
 | 
			
		||||
    font-size: 14px;
 | 
			
		||||
    font-weight: 500;
 | 
			
		||||
 | 
			
		||||
@@ -349,7 +348,7 @@
 | 
			
		||||
      color: $highlight-text-color;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    input[type=checkbox] {
 | 
			
		||||
    input[type="checkbox"] {
 | 
			
		||||
      display: none;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -709,7 +708,7 @@
 | 
			
		||||
  font-size: inherit;
 | 
			
		||||
  vertical-align: middle;
 | 
			
		||||
  object-fit: contain;
 | 
			
		||||
  margin: -.2ex .15em .2ex;
 | 
			
		||||
  margin: -0.2ex 0.15em 0.2ex;
 | 
			
		||||
  width: 16px;
 | 
			
		||||
  height: 16px;
 | 
			
		||||
 | 
			
		||||
@@ -1313,9 +1312,9 @@
 | 
			
		||||
 | 
			
		||||
.account__avatar {
 | 
			
		||||
  @include avatar-radius;
 | 
			
		||||
 | 
			
		||||
  display: block;
 | 
			
		||||
  position: relative;
 | 
			
		||||
 | 
			
		||||
  width: 36px;
 | 
			
		||||
  height: 36px;
 | 
			
		||||
  background-size: 36px 36px;
 | 
			
		||||
@@ -1328,6 +1327,7 @@
 | 
			
		||||
 | 
			
		||||
  &-composite {
 | 
			
		||||
    @include avatar-radius;
 | 
			
		||||
 | 
			
		||||
    border-radius: 50%;
 | 
			
		||||
    overflow: hidden;
 | 
			
		||||
    position: relative;
 | 
			
		||||
@@ -1365,6 +1365,7 @@ a .account__avatar {
 | 
			
		||||
 | 
			
		||||
    img {
 | 
			
		||||
      @include avatar-radius;
 | 
			
		||||
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      height: 100%;
 | 
			
		||||
    }
 | 
			
		||||
@@ -1381,6 +1382,7 @@ a .account__avatar {
 | 
			
		||||
 | 
			
		||||
    img {
 | 
			
		||||
      @include avatar-radius;
 | 
			
		||||
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      height: 100%;
 | 
			
		||||
    }
 | 
			
		||||
@@ -2328,7 +2330,7 @@ a.account__display-name {
 | 
			
		||||
  .scrollable {
 | 
			
		||||
    overflow: visible;
 | 
			
		||||
 | 
			
		||||
    @supports(display: grid) {
 | 
			
		||||
    @supports (display: grid) {
 | 
			
		||||
      contain: content;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@@ -2751,7 +2753,7 @@ a.account__display-name {
 | 
			
		||||
    overflow-y: auto;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @supports(display: grid) { // hack to fix Chrome <57
 | 
			
		||||
  @supports (display: grid) { // hack to fix Chrome <57
 | 
			
		||||
    contain: strict;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -2772,7 +2774,7 @@ a.account__display-name {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.scrollable.fullscreen {
 | 
			
		||||
  @supports(display: grid) { // hack to fix Chrome <57
 | 
			
		||||
  @supports (display: grid) { // hack to fix Chrome <57
 | 
			
		||||
    contain: none;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -3980,6 +3982,7 @@ a.status-card.compact:hover {
 | 
			
		||||
 | 
			
		||||
    &__menu {
 | 
			
		||||
      @include search-popout;
 | 
			
		||||
 | 
			
		||||
      padding: 0;
 | 
			
		||||
      background: $ui-secondary-color;
 | 
			
		||||
    }
 | 
			
		||||
@@ -4061,7 +4064,7 @@ a.status-card.compact:hover {
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  justify-content: center;
 | 
			
		||||
 | 
			
		||||
  @supports(display: grid) { // hack to fix Chrome <57
 | 
			
		||||
  @supports (display: grid) { // hack to fix Chrome <57
 | 
			
		||||
    contain: strict;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -4878,7 +4881,7 @@ a.status-card.compact:hover {
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  border: 0;
 | 
			
		||||
  font-size: 0;
 | 
			
		||||
  transition: opacity .2s ease-in-out;
 | 
			
		||||
  transition: opacity 0.2s ease-in-out;
 | 
			
		||||
 | 
			
		||||
  &.active {
 | 
			
		||||
    opacity: 1;
 | 
			
		||||
@@ -4933,7 +4936,6 @@ a.status-card.compact:hover {
 | 
			
		||||
    height: 100%;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 25px;
 | 
			
		||||
    display: none;
 | 
			
		||||
    flex-direction: column;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    justify-content: center;
 | 
			
		||||
@@ -5274,7 +5276,6 @@ a.status-card.compact:hover {
 | 
			
		||||
    display: block;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    margin: 0;
 | 
			
		||||
    color: $inverted-text-color;
 | 
			
		||||
    background: $simple-background-color;
 | 
			
		||||
    padding: 10px;
 | 
			
		||||
@@ -5406,7 +5407,6 @@ a.status-card.compact:hover {
 | 
			
		||||
    font-family: inherit;
 | 
			
		||||
    font-size: 14px;
 | 
			
		||||
    resize: none;
 | 
			
		||||
    border: 0;
 | 
			
		||||
    outline: 0;
 | 
			
		||||
    border-radius: 4px;
 | 
			
		||||
    border: 1px solid $ui-secondary-color;
 | 
			
		||||
@@ -5857,6 +5857,7 @@ a.status-card.compact:hover {
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* End Media Gallery */
 | 
			
		||||
 | 
			
		||||
.detailed,
 | 
			
		||||
@@ -5869,7 +5870,6 @@ a.status-card.compact:hover {
 | 
			
		||||
  .video-player__volume__handle {
 | 
			
		||||
    bottom: 23px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.audio-player {
 | 
			
		||||
@@ -5991,7 +5991,7 @@ a.status-card.compact:hover {
 | 
			
		||||
    background: linear-gradient(0deg, rgba($base-shadow-color, 0.85) 0, rgba($base-shadow-color, 0.45) 60%, transparent);
 | 
			
		||||
    padding: 0 15px;
 | 
			
		||||
    opacity: 0;
 | 
			
		||||
    transition: opacity .1s ease;
 | 
			
		||||
    transition: opacity 0.1s ease;
 | 
			
		||||
 | 
			
		||||
    &.active {
 | 
			
		||||
      opacity: 1;
 | 
			
		||||
@@ -6066,7 +6066,6 @@ a.status-card.compact:hover {
 | 
			
		||||
    .player-button {
 | 
			
		||||
      display: inline-block;
 | 
			
		||||
      outline: 0;
 | 
			
		||||
 | 
			
		||||
      flex: 0 0 auto;
 | 
			
		||||
      background: transparent;
 | 
			
		||||
      padding: 5px;
 | 
			
		||||
@@ -6237,7 +6236,7 @@ a.status-card.compact:hover {
 | 
			
		||||
      box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2);
 | 
			
		||||
 | 
			
		||||
      .no-reduce-motion & {
 | 
			
		||||
        transition: opacity .1s ease;
 | 
			
		||||
        transition: opacity 0.1s ease;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      &.active {
 | 
			
		||||
@@ -6405,14 +6404,13 @@ a.status-card.compact:hover {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  padding: 6px 0;
 | 
			
		||||
  line-height: 18px;
 | 
			
		||||
  cursor: default;
 | 
			
		||||
  white-space: nowrap;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  text-overflow: ellipsis;
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
 | 
			
		||||
  input[type=radio],
 | 
			
		||||
  input[type=checkbox] {
 | 
			
		||||
  input[type="radio"],
 | 
			
		||||
  input[type="checkbox"] {
 | 
			
		||||
    display: none;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -6505,14 +6503,16 @@ noscript {
 | 
			
		||||
    .navigation-bar__actions {
 | 
			
		||||
      & > .icon-button.close {
 | 
			
		||||
        will-change: opacity transform;
 | 
			
		||||
        transition: opacity $duration * 0.5 $delay,
 | 
			
		||||
                    transform $duration $delay;
 | 
			
		||||
        transition:
 | 
			
		||||
          opacity $duration * 0.5 $delay,
 | 
			
		||||
          transform $duration $delay;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      & > .compose__action-bar .icon-button {
 | 
			
		||||
        will-change: opacity transform;
 | 
			
		||||
        transition: opacity $duration * 0.5 $delay + $duration * 0.5,
 | 
			
		||||
                    transform $duration $delay;
 | 
			
		||||
        transition:
 | 
			
		||||
          opacity $duration * 0.5 $delay + $duration * 0.5,
 | 
			
		||||
          transform $duration $delay;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@@ -7286,7 +7286,7 @@ noscript {
 | 
			
		||||
    border-radius: 50%;
 | 
			
		||||
    width: 0.625rem;
 | 
			
		||||
    height: 0.625rem;
 | 
			
		||||
    margin: -.1ex .15em .1ex;
 | 
			
		||||
    margin: -0.1ex 0.15em 0.1ex;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__content {
 | 
			
		||||
@@ -7549,7 +7549,6 @@ noscript {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 0;
 | 
			
		||||
      left: 0;
 | 
			
		||||
      pointer-events: 0;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      height: 100%;
 | 
			
		||||
      border-left: 2px solid $highlight-text-color;
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,6 @@
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    font-weight: 500;
 | 
			
		||||
    font-size: 24px;
 | 
			
		||||
    line-height: 21px;
 | 
			
		||||
    color: $primary-text-color;
 | 
			
		||||
    font-family: $font-display, sans-serif;
 | 
			
		||||
    margin-bottom: 20px;
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,7 @@
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  padding: 12px 4px;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  transition: color .1s ease-out;
 | 
			
		||||
  transition: color 0.1s ease-out;
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
  background: transparent;
 | 
			
		||||
  border: 0;
 | 
			
		||||
@@ -242,8 +242,8 @@
 | 
			
		||||
  padding: 5px 6px;
 | 
			
		||||
  padding-top: 70px;
 | 
			
		||||
 | 
			
		||||
 .emoji-mart-no-results-label {
 | 
			
		||||
    margin-top: .2em;
 | 
			
		||||
  .emoji-mart-no-results-label {
 | 
			
		||||
    margin-top: 0.2em;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .emoji-mart-emoji:hover::before {
 | 
			
		||||
 
 | 
			
		||||
@@ -352,7 +352,7 @@ code {
 | 
			
		||||
        flex: 1 1 auto;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      input[type=checkbox] {
 | 
			
		||||
      input[type="checkbox"] {
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        left: 0;
 | 
			
		||||
        top: 5px;
 | 
			
		||||
@@ -368,11 +368,11 @@ code {
 | 
			
		||||
    border-radius: 4px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  input[type=text],
 | 
			
		||||
  input[type=number],
 | 
			
		||||
  input[type=email],
 | 
			
		||||
  input[type=password],
 | 
			
		||||
  input[type=url],
 | 
			
		||||
  input[type="text"],
 | 
			
		||||
  input[type="number"],
 | 
			
		||||
  input[type="email"],
 | 
			
		||||
  input[type="password"],
 | 
			
		||||
  input[type="url"],
 | 
			
		||||
  textarea {
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    font-size: 16px;
 | 
			
		||||
@@ -410,10 +410,10 @@ code {
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  input[type=text],
 | 
			
		||||
  input[type=number],
 | 
			
		||||
  input[type=email],
 | 
			
		||||
  input[type=password] {
 | 
			
		||||
  input[type="text"],
 | 
			
		||||
  input[type="number"],
 | 
			
		||||
  input[type="email"],
 | 
			
		||||
  input[type="password"] {
 | 
			
		||||
    &:focus:invalid:not(:placeholder-shown),
 | 
			
		||||
    &:required:invalid:not(:placeholder-shown) {
 | 
			
		||||
      border-color: lighten($error-red, 12%);
 | 
			
		||||
@@ -425,10 +425,10 @@ code {
 | 
			
		||||
      color: lighten($error-red, 12%);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    input[type=text],
 | 
			
		||||
    input[type=number],
 | 
			
		||||
    input[type=email],
 | 
			
		||||
    input[type=password],
 | 
			
		||||
    input[type="text"],
 | 
			
		||||
    input[type="number"],
 | 
			
		||||
    input[type="email"],
 | 
			
		||||
    input[type="password"],
 | 
			
		||||
    textarea,
 | 
			
		||||
    select {
 | 
			
		||||
      border-color: lighten($error-red, 12%);
 | 
			
		||||
@@ -1000,7 +1000,7 @@ code {
 | 
			
		||||
    flex: 1 1 auto;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  input[type=text] {
 | 
			
		||||
  input[type="text"] {
 | 
			
		||||
    background: transparent;
 | 
			
		||||
    border: 0;
 | 
			
		||||
    padding: 10px;
 | 
			
		||||
 
 | 
			
		||||
@@ -64,8 +64,8 @@
 | 
			
		||||
      max-width: calc(100% - 45px - 25px);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    input[type=radio],
 | 
			
		||||
    input[type=checkbox] {
 | 
			
		||||
    input[type="radio"],
 | 
			
		||||
    input[type="checkbox"] {
 | 
			
		||||
      display: none;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -73,7 +73,7 @@
 | 
			
		||||
      flex: 1 1 auto;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    input[type=text] {
 | 
			
		||||
    input[type="text"] {
 | 
			
		||||
      display: block;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
@@ -109,7 +109,6 @@
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    width: 18px;
 | 
			
		||||
    height: 18px;
 | 
			
		||||
    flex: 0 0 auto;
 | 
			
		||||
    margin-right: 10px;
 | 
			
		||||
    top: -1px;
 | 
			
		||||
    border-radius: 50%;
 | 
			
		||||
@@ -198,7 +197,7 @@
 | 
			
		||||
 | 
			
		||||
    &:active,
 | 
			
		||||
    &:focus {
 | 
			
		||||
      background-color: rgba($dark-text-color, .1);
 | 
			
		||||
      background-color: rgba($dark-text-color, 0.1);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -139,7 +139,7 @@ a.button.logo-button {
 | 
			
		||||
 | 
			
		||||
.embed,
 | 
			
		||||
.public-layout {
 | 
			
		||||
  .status__content[data-spoiler=folded] {
 | 
			
		||||
  .status__content[data-spoiler="folded"] {
 | 
			
		||||
    .e-content {
 | 
			
		||||
      display: none;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -38,6 +38,7 @@ $highlight-text-color: $ui-highlight-color !default;
 | 
			
		||||
$action-button-color: $ui-base-lighter-color !default;
 | 
			
		||||
$passive-text-color: $gold-star !default;
 | 
			
		||||
$active-passive-text-color: $success-green !default;
 | 
			
		||||
 | 
			
		||||
// For texts on inverted backgrounds
 | 
			
		||||
$inverted-text-color: $ui-base-color !default;
 | 
			
		||||
$lighter-text-color: $ui-base-lighter-color !default;
 | 
			
		||||
@@ -48,6 +49,7 @@ $cjk-langs: ja, ko, zh-CN, zh-HK, zh-TW;
 | 
			
		||||
 | 
			
		||||
// Variables for components
 | 
			
		||||
$media-modal-media-max-width: 100%;
 | 
			
		||||
 | 
			
		||||
// put margins on top and bottom of image to avoid the screen covered by image.
 | 
			
		||||
$media-modal-media-max-height: 80%;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								package.json
									
									
									
									
									
								
							@@ -13,10 +13,10 @@
 | 
			
		||||
    "test": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:jest",
 | 
			
		||||
    "test:lint": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:lint:sass",
 | 
			
		||||
    "test:lint:js": "eslint --ext=js . --cache",
 | 
			
		||||
    "test:lint:sass": "sass-lint -v",
 | 
			
		||||
    "test:lint:sass": "stylelint '**/*.scss'",
 | 
			
		||||
    "test:jest": "cross-env NODE_ENV=test jest",
 | 
			
		||||
    "format": "prettier --write '**/*.{json,yml}",
 | 
			
		||||
    "format-check": "prettier --write '**/*.{json,yml}"
 | 
			
		||||
    "format": "prettier --write '**/*.{json,yml}'",
 | 
			
		||||
    "format-check": "prettier --write '**/*.{json,yml}'"
 | 
			
		||||
  },
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
@@ -43,7 +43,6 @@
 | 
			
		||||
    "babel-plugin-preval": "^5.1.0",
 | 
			
		||||
    "babel-plugin-react-intl": "^6.2.0",
 | 
			
		||||
    "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
 | 
			
		||||
    "babel-runtime": "^6.26.0",
 | 
			
		||||
    "blurhash": "^1.1.5",
 | 
			
		||||
    "classnames": "^2.3.1",
 | 
			
		||||
    "color-blend": "^3.0.1",
 | 
			
		||||
@@ -84,6 +83,7 @@
 | 
			
		||||
    "offline-plugin": "^5.0.7",
 | 
			
		||||
    "path-complete-extname": "^1.0.0",
 | 
			
		||||
    "pg": "^8.5.0",
 | 
			
		||||
    "postcss": "^8.4.14",
 | 
			
		||||
    "postcss-loader": "^3.0.0",
 | 
			
		||||
    "postcss-object-fit-images": "^1.1.2",
 | 
			
		||||
    "promise.prototype.finally": "^3.1.3",
 | 
			
		||||
@@ -137,9 +137,9 @@
 | 
			
		||||
    "ws": "^8.6.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@babel/eslint-parser": "^7.18.2",
 | 
			
		||||
    "@testing-library/jest-dom": "^5.16.4",
 | 
			
		||||
    "@testing-library/react": "^12.1.5",
 | 
			
		||||
    "babel-eslint": "^10.1.0",
 | 
			
		||||
    "babel-jest": "^28.1.0",
 | 
			
		||||
    "eslint": "^7.32.0",
 | 
			
		||||
    "eslint-plugin-import": "~2.26.0",
 | 
			
		||||
@@ -148,11 +148,13 @@
 | 
			
		||||
    "eslint-plugin-react": "~7.30.0",
 | 
			
		||||
    "jest": "^28.1.0",
 | 
			
		||||
    "jest-environment-jsdom": "^28.1.0",
 | 
			
		||||
    "postcss-scss": "^4.0.4",
 | 
			
		||||
    "prettier": "^2.6.2",
 | 
			
		||||
    "raf": "^3.4.1",
 | 
			
		||||
    "react-intl-translations-manager": "^5.0.3",
 | 
			
		||||
    "react-test-renderer": "^16.14.0",
 | 
			
		||||
    "sass-lint": "^1.13.1",
 | 
			
		||||
    "stylelint": "^14.8.5",
 | 
			
		||||
    "stylelint-config-standard-scss": "^4.0.0",
 | 
			
		||||
    "webpack-dev-server": "^3.11.3",
 | 
			
		||||
    "yargs": "^17.5.1"
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								stylelint.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								stylelint.config.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
  extends: ['stylelint-config-standard-scss'],
 | 
			
		||||
  ignoreFiles: [
 | 
			
		||||
    'app/javascript/styles/mastodon/reset.scss',
 | 
			
		||||
    'node_modules/**/*',
 | 
			
		||||
    'vendor/**/*',
 | 
			
		||||
  ],
 | 
			
		||||
  rules: {
 | 
			
		||||
    'at-rule-empty-line-before': null,
 | 
			
		||||
    'color-function-notation': null,
 | 
			
		||||
    'color-hex-length': null,
 | 
			
		||||
    'declaration-block-no-redundant-longhand-properties': null,
 | 
			
		||||
    'max-line-length': null,
 | 
			
		||||
    'no-descending-specificity': null,
 | 
			
		||||
    'no-duplicate-selectors': null,
 | 
			
		||||
    'number-max-precision': 8,
 | 
			
		||||
    'property-no-unknown': null,
 | 
			
		||||
    'property-no-vendor-prefix': null,
 | 
			
		||||
    'selector-class-pattern': null,
 | 
			
		||||
    'selector-id-pattern': null,
 | 
			
		||||
    'string-quotes': null,
 | 
			
		||||
    'value-keyword-case': null,
 | 
			
		||||
    'value-no-vendor-prefix': null,
 | 
			
		||||
 | 
			
		||||
    'scss/dollar-variable-empty-line-before': null,
 | 
			
		||||
    'scss/no-global-function-names': null,
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
		Reference in New Issue
	
	Block a user