From a34600cec2f766c479bac7d941aa759e7fd132ee Mon Sep 17 00:00:00 2001 From: willuhmjs Date: Sun, 23 Apr 2023 23:35:41 -0400 Subject: [PATCH] style: format --- .devcontainer/devcontainer.json | 62 +- .github/workflows/github-pages.yml | 62 +- .github/workflows/repolinter.yaml | 14 +- .github/workflows/update-data.yml | 67 +- .vscode/tasks.json | 4 +- README.md | 4 +- assets/css/README.md | 9 +- assets/css/_feather-component-button.scss | 750 +++-- assets/css/_feather-core.scss | 1698 +++++----- assets/css/_feather-custom.scss | 30 +- assets/css/_main.scss | 353 ++- assets/css/index.scss | 157 +- assets/css/memberships.scss | 171 +- assets/css/projects.scss | 140 +- assets/css/year-in-review.scss | 789 ++--- codemeta.yaml | 6 +- config.yaml | 40 +- content/_index.html | 95 +- content/status.md | 137 +- data/augur/aggregate_summary.json | 11 +- data/augur/repo_commits.json | 576 ++-- data/memberships.yml | 12 +- data/projects.json | 3404 ++++++++++----------- data/projects_tracked.json | 379 ++- data/repo_ids.json | 1405 +++++---- layouts/404.html | 10 +- layouts/_default/memberships.html | 54 +- layouts/_default/projects.html | 76 +- layouts/_default/single.html | 4 +- layouts/index.html | 10 +- layouts/partials/formatNum.html | 5 +- layouts/partials/ga.html | 15 +- layouts/partials/head.html | 67 +- static/js/main.js | 10 +- static/js/projects.js | 143 +- static/js/year-in-review.js | 124 +- 36 files changed, 5599 insertions(+), 5294 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 149d75fcd..625648c2b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,41 +1,37 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: // https://github.com/microsoft/vscode-dev-containers/tree/v0.205.0/containers/hugo { - "name": "Hugo (Community)", - "build": { - "dockerfile": "Dockerfile", - "args": { - // Update VARIANT to pick hugo variant. - // Example variants: hugo, hugo_extended - // Rebuild the container if it already exists to update. - "VARIANT": "hugo_extended", - // Update VERSION to pick a specific hugo version. - // Example versions: latest, 0.73.0, 0,71.1 - // Rebuild the container if it already exists to update. - "VERSION": "latest", - // Update NODE_VERSION to pick the Node.js version: 12, 14 - "NODE_VERSION": "14", - } - }, + "name": "Hugo (Community)", + "build": { + "dockerfile": "Dockerfile", + "args": { + // Update VARIANT to pick hugo variant. + // Example variants: hugo, hugo_extended + // Rebuild the container if it already exists to update. + "VARIANT": "hugo_extended", + // Update VERSION to pick a specific hugo version. + // Example versions: latest, 0.73.0, 0,71.1 + // Rebuild the container if it already exists to update. + "VERSION": "latest", + // Update NODE_VERSION to pick the Node.js version: 12, 14 + "NODE_VERSION": "14" + } + }, - // Set *default* container specific settings.json values on container create. - "settings": { - "html.format.templating": true, - }, - - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "davidanson.vscode-markdownlint" - ], + // Set *default* container specific settings.json values on container create. + "settings": { + "html.format.templating": true + }, - // Use 'forwardPorts' to make a list of ports inside the container available locally. - "forwardPorts": [ - 1313 - ], + // Add the IDs of extensions you want installed when the container is created. + "extensions": ["davidanson.vscode-markdownlint"], - // Use 'postCreateCommand' to run commands after the container is created. - // "postCreateCommand": "uname -a", + // Use 'forwardPorts' to make a list of ports inside the container available locally. + "forwardPorts": [1313], - // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "node" + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "uname -a", + + // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "node" } diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml index 992b77d34..fa4cc2667 100644 --- a/.github/workflows/github-pages.yml +++ b/.github/workflows/github-pages.yml @@ -1,39 +1,39 @@ name: github-pages on: - workflow_dispatch: {} - schedule: - # Run Mondays at 3:00 am (15 minutes after Update data) - # Ideally, this shouldn't need a schedule at all, but - # workflows (like Update data) can't trigger other workflows. - - cron: "00 3 * * 1" - push: - branches: - - main + workflow_dispatch: {} + schedule: + # Run Mondays at 3:00 am (15 minutes after Update data) + # Ideally, this shouldn't need a schedule at all, but + # workflows (like Update data) can't trigger other workflows. + - cron: "00 3 * * 1" + push: + branches: + - main jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - submodules: true - fetch-depth: 0 + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + fetch-depth: 0 - - name: setup hugo - uses: peaceiris/actions-hugo@2e89aa66d0093e4cd14751b3028fc1a179452c2e # v2.4.13 - with: - hugo-version: '0.78.0' - extended: true + - name: setup hugo + uses: peaceiris/actions-hugo@2e89aa66d0093e4cd14751b3028fc1a179452c2e # v2.4.13 + with: + hugo-version: "0.78.0" + extended: true - - name: build - run: hugo + - name: build + run: hugo - - name: deploy - uses: peaceiris/actions-gh-pages@bbdfb200618d235585ad98e965f4aafc39b4c501 # v3.7.3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - user_name: twitter-service - user_email: - publish_dir: ./public - cname: opensource.twitter.dev + - name: deploy + uses: peaceiris/actions-gh-pages@bbdfb200618d235585ad98e965f4aafc39b4c501 # v3.7.3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + user_name: twitter-service + user_email: + publish_dir: ./public + cname: opensource.twitter.dev diff --git a/.github/workflows/repolinter.yaml b/.github/workflows/repolinter.yaml index ea04f89e9..5b7c4882b 100644 --- a/.github/workflows/repolinter.yaml +++ b/.github/workflows/repolinter.yaml @@ -2,10 +2,10 @@ name: repolinter on: [push, pull_request] jobs: - repolinter: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: todogroup/repolinter-action@v1 - with: - config_file: .github/repolinter.yaml + repolinter: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: todogroup/repolinter-action@v1 + with: + config_file: .github/repolinter.yaml diff --git a/.github/workflows/update-data.yml b/.github/workflows/update-data.yml index 1a7b448f8..88fa50b30 100644 --- a/.github/workflows/update-data.yml +++ b/.github/workflows/update-data.yml @@ -1,41 +1,40 @@ name: Update data on: - workflow_dispatch: {} - schedule: - # Run Mondays at 2:45 am - - cron: "45 2 * * 1" + workflow_dispatch: {} + schedule: + # Run Mondays at 2:45 am + - cron: "45 2 * * 1" jobs: - update: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 + update: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 - # update stats - - uses: actions/setup-python@v2 - with: - python-version: '3.9' - - name: cache pip - uses: actions/cache@v2 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - - run: pip install -r requirements.txt + # update stats + - uses: actions/setup-python@v2 + with: + python-version: "3.9" + - name: cache pip + uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + - run: pip install -r requirements.txt + # Eventually call scripts/fetch_augur_metrics.py and + # scripts/fetch_year_in_review.py as well when possible + - run: python scripts/fetch_projects.py + env: + OAUTH_TOKEN: ${{ secrets.GH_API_TOKEN }} + GH_USERNAME: ${{ secrets.GH_USERNAME }} - # Eventually call scripts/fetch_augur_metrics.py and - # scripts/fetch_year_in_review.py as well when possible - - run: python scripts/fetch_projects.py - env: - OAUTH_TOKEN: ${{ secrets.GH_API_TOKEN }} - GH_USERNAME: ${{ secrets.GH_USERNAME }} - - - run: | - git config user.name 'GitHub Actions' - git config user.email 'actions@users.noreply.github.com' - git add -A - timestamp=$(date -u) - git commit -m "update data: ${timestamp}" || exit 0 - git push + - run: | + git config user.name 'GitHub Actions' + git config user.email 'actions@users.noreply.github.com' + git add -A + timestamp=$(date -u) + git commit -m "update data: ${timestamp}" || exit 0 + git push diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 31cf73697..331361488 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -8,7 +8,7 @@ "type": "shell", "command": "hugo serve", "group": "build", - "isBackground": true, + "isBackground": true } ] -} \ No newline at end of file +} diff --git a/README.md b/README.md index e328194d2..a29e3d4b7 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ This is the Twitter Open Source website at https://opensource.twitter.dev. -This site is built with [hugo], using a custom built-in theme. Follow the -standard instructions on the hugo website to [install] and [run] hugo. Just +This site is built with [hugo], using a custom built-in theme. Follow the +standard instructions on the hugo website to [install] and [run] hugo. Just make sure to use hugo-extended, which has added support for Sass/SCSS stylesheets. diff --git a/assets/css/README.md b/assets/css/README.md index 10041bca6..47e27a16a 100644 --- a/assets/css/README.md +++ b/assets/css/README.md @@ -1,13 +1,12 @@ -Stylesheets -=========== +# Stylesheets `_feather-*` files are part of the internal Feather framework used at Twitter. They should not be edited directly, since they will be overwritten the next time -the components are upgraded. Instead, any overrides that are needed should be +the components are upgraded. Instead, any overrides that are needed should be added to `_feather-custom.scss`. Tweeps can get the latest feather resources at http://go/feathercode. Specifically, we use: - - http://go/featherraw/feather-core/dist/css/feather-core.css - - http://go/featherraw/feather-component-button/dist/css/feather-component-button.css +- http://go/featherraw/feather-core/dist/css/feather-core.css +- http://go/featherraw/feather-component-button/dist/css/feather-component-button.css diff --git a/assets/css/_feather-component-button.scss b/assets/css/_feather-component-button.scss index 952ca7b49..ce3251ac1 100644 --- a/assets/css/_feather-component-button.scss +++ b/assets/css/_feather-component-button.scss @@ -2,365 +2,444 @@ /* @generated */ /* Button groups */ .ButtonGroup { - display: inline-block; - vertical-align: middle; + display: inline-block; + vertical-align: middle; } .ButtonGroup > .Button { - position: relative; - float: left; - text-align: center; + position: relative; + float: left; + text-align: center; } .ButtonGroup > .Button:focus { - outline: none; + outline: none; } .ButtonGroup > .Button { - z-index: 1; - transition-property: background-color, border-color; + z-index: 1; + transition-property: background-color, border-color; } .ButtonGroup > .Button:hover { - z-index: 2; + z-index: 2; } .ButtonGroup > .Button.is-selected { - z-index: 3; + z-index: 3; } .ButtonGroup > .Button.is-selected, .ButtonGroup > .Button.is-selected:visited { - background-color: var(--feather-button-group-selected-background-color); - border: 1px solid var(--feather-button-group-selected-border-color); - color: var(--feather-button-group-selected-color); + background-color: var(--feather-button-group-selected-background-color); + border: 1px solid var(--feather-button-group-selected-border-color); + color: var(--feather-button-group-selected-color); } .ButtonGroup > .Button.is-selected:focus, .ButtonGroup > .Button.is-selected.is-focus { - background: var(--feather-button-group-selected-background-color); - border-color: var(--feather-button-group-selected-border-color); - color: var(--feather-button-group-selected-color); + background: var(--feather-button-group-selected-background-color); + border-color: var(--feather-button-group-selected-border-color); + color: var(--feather-button-group-selected-color); } .ButtonGroup > .Button.is-selected:focus:not(.is-mouseFocus), .ButtonGroup > .Button.is-selected.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px white, 0 0 0 3px var(--feather-button-group-selected-outline-color-focus), 0 0 2px 3px var(--feather-button-group-selected-outline-color-focus); -} -.u-featherBackgroundDark .ButtonGroup > .Button.is-selected:focus:not(.is-mouseFocus), -.u-featherBackgroundDark .ButtonGroup > .Button.is-selected.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px black, 0 0 0 3px var(--feather-button-group-selected-outline-color-focus), 0 0 2px 3px var(--feather-button-group-selected-outline-color-focus); + box-shadow: 0 0 0 1px white, + 0 0 0 3px var(--feather-button-group-selected-outline-color-focus), + 0 0 2px 3px var(--feather-button-group-selected-outline-color-focus); +} +.u-featherBackgroundDark + .ButtonGroup + > .Button.is-selected:focus:not(.is-mouseFocus), +.u-featherBackgroundDark + .ButtonGroup + > .Button.is-selected.is-focus:not(.is-mouseFocus) { + box-shadow: 0 0 0 1px black, + 0 0 0 3px var(--feather-button-group-selected-outline-color-focus), + 0 0 2px 3px var(--feather-button-group-selected-outline-color-focus); } .ButtonGroup > .Button.is-selected:hover, .ButtonGroup > .Button.is-selected.is-hover { - background-color: var(--feather-button-group-selected-background-color-hover); - border-color: var(--feather-button-group-selected-border-color-hover); - color: var(--feather-button-group-selected-color); + background-color: var( + --feather-button-group-selected-background-color-hover + ); + border-color: var(--feather-button-group-selected-border-color-hover); + color: var(--feather-button-group-selected-color); } .ButtonGroup > .Button.is-selected:active, .ButtonGroup > .Button.is-selected.is-active { - background-color: var(--feather-button-group-selected-background-color-active); - border-color: var(--feather-button-group-selected-border-color-active); - color: var(--feather-button-group-selected-color); + background-color: var( + --feather-button-group-selected-background-color-active + ); + border-color: var(--feather-button-group-selected-border-color-active); + color: var(--feather-button-group-selected-color); } .ButtonGroup > .Button.is-selected[disabled], .ButtonGroup > .Button.is-selected.is-disabled, fieldset[disabled] .ButtonGroup > .Button.is-selected { - background-color: var(--feather-button-group-selected-background-color); - border-color: var(--feather-button-group-selected-border-color); - box-shadow: none; + background-color: var(--feather-button-group-selected-background-color); + border-color: var(--feather-button-group-selected-border-color); + box-shadow: none; } .ButtonGroup > .Button:focus:not(.is-mouseFocus), .ButtonGroup > .Button.is-focus:not(.is-mouseFocus) { - z-index: 4; + z-index: 4; } .ButtonGroup > .Button + .Button { - margin-left: -1px; + margin-left: -1px; } .ButtonGroup > .Button:not(:first-child):not(:last-child) { - border-radius: 0; + border-radius: 0; } .ButtonGroup > .Button:first-child:not(:last-child) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-top-right-radius: 0; } .ButtonGroup > .Button:last-child:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; } /* Sizing */ /* Variants */ .ButtonGroup--primary > .Button + .Button { - margin-left: 1px; + margin-left: 1px; } .ButtonGroup--justified { - display: flex; - width: 100%; + display: flex; + width: 100%; } .ButtonGroup--justified > .Button { - flex: 1; + flex: 1; } .Button .Icon { - line-height: 1; - vertical-align: -1px; + line-height: 1; + vertical-align: -1px; } .Button--large .Icon { - vertical-align: -2px; + vertical-align: -2px; } .ButtonGroup .Icon { - line-height: 1; - vertical-align: -1px; + line-height: 1; + vertical-align: -1px; } .ButtonGroup--large .Icon { - vertical-align: -2px; + vertical-align: -2px; } .Button > .Icon--caretDown { - margin: 0 var(--feather-form-control-default-adornment-margin); + margin: 0 var(--feather-form-control-default-adornment-margin); } .Button--xsmall > .Icon--caretDown { - margin: 0 var(--feather-form-control-xsmall-adornment-margin); + margin: 0 var(--feather-form-control-xsmall-adornment-margin); } .Button--small > .Icon--caretDown { - margin: 0 var(--feather-form-control-small-adornment-margin); + margin: 0 var(--feather-form-control-small-adornment-margin); } .Button--large > .Icon--caretDown { - margin: 0 var(--feather-form-control-large-adornment-margin); + margin: 0 var(--feather-form-control-large-adornment-margin); } .Button > .Icon--caretDown { - float: right; - margin-right: 0; - line-height: inherit; + float: right; + margin-right: 0; + line-height: inherit; } .Button-label { - flex: 1 1 auto; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + flex: 1 1 auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .Button-adornment { - margin: 0 var(--feather-form-control-default-adornment-margin); - flex: 0 0 auto; + margin: 0 var(--feather-form-control-default-adornment-margin); + flex: 0 0 auto; } .Button--xsmall .Button-adornment, .ButtonGroup--xsmall .Button-adornment { - margin: 0 var(--feather-form-control-xsmall-adornment-margin); + margin: 0 var(--feather-form-control-xsmall-adornment-margin); } .Button--small .Button-adornment, .ButtonGroup--small .Button-adornment { - margin: 0 var(--feather-form-control-small-adornment-margin); + margin: 0 var(--feather-form-control-small-adornment-margin); } .Button--large .Button-adornment, .ButtonGroup--large .Button-adornment { - margin: 0 var(--feather-form-control-large-adornment-margin); + margin: 0 var(--feather-form-control-large-adornment-margin); } .Button-adornment:only-child { - margin-right: 0; - margin-left: 0; + margin-right: 0; + margin-left: 0; } -html:not([dir='rtl']) .Button:not([dir='rtl']) .Button-adornment:first-child, -.Button[dir='ltr'] .Button-adornment:first-child { - margin-left: 0; +html:not([dir="rtl"]) .Button:not([dir="rtl"]) .Button-adornment:first-child, +.Button[dir="ltr"] .Button-adornment:first-child { + margin-left: 0; } -html[dir='rtl'] .Button:not([dir='ltr']) .Button-adornment:first-child, -.Button[dir='rtl'] .Button-adornment:first-child { - margin-right: 0; +html[dir="rtl"] .Button:not([dir="ltr"]) .Button-adornment:first-child, +.Button[dir="rtl"] .Button-adornment:first-child { + margin-right: 0; } -html:not([dir='rtl']) .Button:not([dir='rtl']) .Button-adornment:last-child, -.Button[dir='ltr'] .Button-adornment:last-child { - margin-right: 0; +html:not([dir="rtl"]) .Button:not([dir="rtl"]) .Button-adornment:last-child, +.Button[dir="ltr"] .Button-adornment:last-child { + margin-right: 0; } -html[dir='rtl'] .Button:not([dir='ltr']) .Button-adornment:last-child, -.Button[dir='rtl'] .Button-adornment:last-child { - margin-left: 0; +html[dir="rtl"] .Button:not([dir="ltr"]) .Button-adornment:last-child, +.Button[dir="rtl"] .Button-adornment:last-child { + margin-left: 0; } /* Category labels */ .Button--withCategoryLabel .Button-label { - font-weight: 400; + font-weight: 400; } .Button-categoryLabel { - font-weight: 700; + font-weight: 700; } .Button { - --feather-button-background-color-active: rgba(55, 67, 77, 0.2); - --feather-button-background-color: white; - --feather-button-background-color-hover: var(--tw-color-gray-100); - --feather-button-border-color-active: rgba(55, 67, 77, 0); - --feather-button-border-color: var(--tw-color-gray-200); - --feather-button-border-color-hover: var(--feather-button-border-color); - --feather-button-color: var(--tw-color-text-primary); - --feather-button-outline-color-focus: rgba(29, 155, 240, 0.5); - --feather-button-primary-background-color-active: #3f4347; - --feather-button-primary-background-color: var(--tw-color-gray-1100); - --feather-button-primary-background-color-hover: #272b30; - --feather-button-primary-border-color-active: var(--feather-button-primary-background-color-active); - --feather-button-primary-border-color: var(--feather-button-primary-background-color); - --feather-button-primary-border-color-hover: var(--feather-button-primary-background-color-hover); - --feather-button-primary-color: white; - --feather-button-primary-outline-color-focus: var(--feather-button-outline-color-focus); - --feather-button-brand-primary-background-color-active: #177cc0; - --feather-button-brand-primary-background-color: var(--tw-color-blue-500); - --feather-button-brand-primary-background-color-hover: #1a8cd8; - --feather-button-brand-primary-border-color-active: #177cc0; - --feather-button-brand-primary-border-color: var(--feather-button-brand-primary-background-color); - --feather-button-brand-primary-border-color-hover: #1a8cd8; - --feather-button-brand-primary-color: white; - --feather-button-brand-primary-outline-color-focus: var(--feather-button-outline-color-focus); - --feather-button-danger-primary-background-color-active: #c31a25; - --feather-button-danger-primary-background-color: var(--tw-color-red-500); - --feather-button-danger-primary-background-color-hover: #dc1e29; - --feather-button-danger-primary-border-color-active: var(--feather-button-danger-primary-background-color-active); - --feather-button-danger-primary-border-color: var(--feather-button-danger-primary-background-color); - --feather-button-danger-primary-border-color-hover: var(--feather-button-danger-primary-background-color-hover); - --feather-button-danger-primary-color: white; - --feather-button-danger-primary-outline-color-focus: var(--tw-color-red-500); - --feather-button-danger-secondary-background-color-active: rgba(244, 33, 46, 0.2); - --feather-button-danger-secondary-background-color: white; - --feather-button-danger-secondary-background-color-hover: rgba(244, 33, 46, 0.1); - --feather-button-danger-secondary-border-color-active: rgba(244, 33, 46, 0); - --feather-button-danger-secondary-border-color: var(--tw-color-red-100); - --feather-button-danger-secondary-border-color-hover: rgba(244, 33, 46, 0.1); - --feather-button-danger-secondary-color: var(--tw-color-red-500); - --feather-button-danger-secondary-outline-color-focus: rgba(244, 33, 46, 0.5); - --feather-button-link-color: var(--tw-color-text-primary); - --feather-button-link-font-weight: var(--feather-font-weight-bold); - --feather-button-danger-link-color: var(--tw-color-red-500); - --feather-button-group-selected-background-color-active: var(--feather-button-primary-background-color-active); - --feather-button-group-selected-background-color: var(--feather-button-primary-background-color); - --feather-button-group-selected-background-color-hover: var(--feather-button-primary-background-color-hover); - --feather-button-group-selected-border-color-active: var(--feather-button-primary-border-color-active); - --feather-button-group-selected-border-color: var(--feather-button-primary-border-color); - --feather-button-group-selected-border-color-hover: var(--feather-button-primary-border-color-hover); - --feather-button-group-selected-color: var(--feather-button-primary-color); - --feather-button-group-selected-outline-color-focus: var(--feather-button-primary-outline-color-focus); + --feather-button-background-color-active: rgba(55, 67, 77, 0.2); + --feather-button-background-color: white; + --feather-button-background-color-hover: var(--tw-color-gray-100); + --feather-button-border-color-active: rgba(55, 67, 77, 0); + --feather-button-border-color: var(--tw-color-gray-200); + --feather-button-border-color-hover: var(--feather-button-border-color); + --feather-button-color: var(--tw-color-text-primary); + --feather-button-outline-color-focus: rgba(29, 155, 240, 0.5); + --feather-button-primary-background-color-active: #3f4347; + --feather-button-primary-background-color: var(--tw-color-gray-1100); + --feather-button-primary-background-color-hover: #272b30; + --feather-button-primary-border-color-active: var( + --feather-button-primary-background-color-active + ); + --feather-button-primary-border-color: var( + --feather-button-primary-background-color + ); + --feather-button-primary-border-color-hover: var( + --feather-button-primary-background-color-hover + ); + --feather-button-primary-color: white; + --feather-button-primary-outline-color-focus: var( + --feather-button-outline-color-focus + ); + --feather-button-brand-primary-background-color-active: #177cc0; + --feather-button-brand-primary-background-color: var(--tw-color-blue-500); + --feather-button-brand-primary-background-color-hover: #1a8cd8; + --feather-button-brand-primary-border-color-active: #177cc0; + --feather-button-brand-primary-border-color: var( + --feather-button-brand-primary-background-color + ); + --feather-button-brand-primary-border-color-hover: #1a8cd8; + --feather-button-brand-primary-color: white; + --feather-button-brand-primary-outline-color-focus: var( + --feather-button-outline-color-focus + ); + --feather-button-danger-primary-background-color-active: #c31a25; + --feather-button-danger-primary-background-color: var(--tw-color-red-500); + --feather-button-danger-primary-background-color-hover: #dc1e29; + --feather-button-danger-primary-border-color-active: var( + --feather-button-danger-primary-background-color-active + ); + --feather-button-danger-primary-border-color: var( + --feather-button-danger-primary-background-color + ); + --feather-button-danger-primary-border-color-hover: var( + --feather-button-danger-primary-background-color-hover + ); + --feather-button-danger-primary-color: white; + --feather-button-danger-primary-outline-color-focus: var( + --tw-color-red-500 + ); + --feather-button-danger-secondary-background-color-active: rgba( + 244, + 33, + 46, + 0.2 + ); + --feather-button-danger-secondary-background-color: white; + --feather-button-danger-secondary-background-color-hover: rgba( + 244, + 33, + 46, + 0.1 + ); + --feather-button-danger-secondary-border-color-active: rgba(244, 33, 46, 0); + --feather-button-danger-secondary-border-color: var(--tw-color-red-100); + --feather-button-danger-secondary-border-color-hover: rgba( + 244, + 33, + 46, + 0.1 + ); + --feather-button-danger-secondary-color: var(--tw-color-red-500); + --feather-button-danger-secondary-outline-color-focus: rgba( + 244, + 33, + 46, + 0.5 + ); + --feather-button-link-color: var(--tw-color-text-primary); + --feather-button-link-font-weight: var(--feather-font-weight-bold); + --feather-button-danger-link-color: var(--tw-color-red-500); + --feather-button-group-selected-background-color-active: var( + --feather-button-primary-background-color-active + ); + --feather-button-group-selected-background-color: var( + --feather-button-primary-background-color + ); + --feather-button-group-selected-background-color-hover: var( + --feather-button-primary-background-color-hover + ); + --feather-button-group-selected-border-color-active: var( + --feather-button-primary-border-color-active + ); + --feather-button-group-selected-border-color: var( + --feather-button-primary-border-color + ); + --feather-button-group-selected-border-color-hover: var( + --feather-button-primary-border-color-hover + ); + --feather-button-group-selected-color: var(--feather-button-primary-color); + --feather-button-group-selected-outline-color-focus: var( + --feather-button-primary-outline-color-focus + ); } .Button { - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition-property: box-shadow, background-color, border-color; - text-align: center; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition-property: box-shadow, background-color, border-color; + text-align: center; } .Button:focus { - outline: none; + outline: none; } .Button:-moz-focusring, -.Button[type='button']:-moz-focusring, -.Button[type='reset']:-moz-focusring, -.Button[type='submit']:-moz-focusring { - outline: none; +.Button[type="button"]:-moz-focusring, +.Button[type="reset"]:-moz-focusring, +.Button[type="submit"]:-moz-focusring { + outline: none; } .Button, .Button:visited, .Button.is-visited { - display: inline-flex; - align-items: center; - justify-content: center; - position: relative; - cursor: pointer; - font-family: var(--feather-font-family-base); - font-weight: 700; + display: inline-flex; + align-items: center; + justify-content: center; + position: relative; + cursor: pointer; + font-family: var(--feather-font-family-base); + font-weight: 700; } .Button:focus, .Button.is-focus { - text-decoration: none; + text-decoration: none; } .Button:focus:not(.is-mouseFocus), .Button.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px white, 0 0 0 3px rgba(29, 155, 240, 0.5), 0 0 2px 3px rgba(29, 155, 240, 0.5); + box-shadow: 0 0 0 1px white, 0 0 0 3px rgba(29, 155, 240, 0.5), + 0 0 2px 3px rgba(29, 155, 240, 0.5); } .Button:hover, .Button.is-hover { - text-decoration: none; + text-decoration: none; } .Button[disabled], .Button.is-disabled, fieldset[disabled] .Button { - cursor: default; - opacity: 0.5; - box-shadow: none; + cursor: default; + opacity: 0.5; + box-shadow: none; } a.Button.is-disabled, fieldset[disabled] a.Button { - pointer-events: none; + pointer-events: none; } -.Button[type='button'] { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; +.Button[type="button"] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } /* Variants */ .Button, .Button:visited { - background-color: var(--feather-button-background-color); - border: 1px solid var(--feather-button-border-color); - color: var(--feather-button-color); + background-color: var(--feather-button-background-color); + border: 1px solid var(--feather-button-border-color); + color: var(--feather-button-color); } .Button:focus, .Button.is-focus { - background: var(--feather-button-background-color); - border-color: var(--feather-button-border-color); - color: var(--feather-button-color); + background: var(--feather-button-background-color); + border-color: var(--feather-button-border-color); + color: var(--feather-button-color); } .Button:focus:not(.is-mouseFocus), .Button.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px white, 0 0 0 3px var(--feather-button-outline-color-focus), 0 0 2px 3px var(--feather-button-outline-color-focus); + box-shadow: 0 0 0 1px white, + 0 0 0 3px var(--feather-button-outline-color-focus), + 0 0 2px 3px var(--feather-button-outline-color-focus); } .u-featherBackgroundDark .Button:focus:not(.is-mouseFocus), .u-featherBackgroundDark .Button.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px black, 0 0 0 3px var(--feather-button-outline-color-focus), 0 0 2px 3px var(--feather-button-outline-color-focus); + box-shadow: 0 0 0 1px black, + 0 0 0 3px var(--feather-button-outline-color-focus), + 0 0 2px 3px var(--feather-button-outline-color-focus); } .Button:hover, .Button.is-hover { - background-color: var(--feather-button-background-color-hover); - border-color: var(--feather-button-border-color-hover); - color: var(--feather-button-color); + background-color: var(--feather-button-background-color-hover); + border-color: var(--feather-button-border-color-hover); + color: var(--feather-button-color); } .Button:active, .Button.is-active { - background-color: var(--feather-button-background-color-active); - border-color: var(--feather-button-border-color-active); - color: var(--feather-button-color); + background-color: var(--feather-button-background-color-active); + border-color: var(--feather-button-border-color-active); + color: var(--feather-button-color); } .Button[disabled], .Button.is-disabled, fieldset[disabled] .Button { - background-color: var(--feather-button-background-color); - border-color: var(--feather-button-border-color); - box-shadow: none; + background-color: var(--feather-button-background-color); + border-color: var(--feather-button-border-color); + box-shadow: none; } .Button.Button--primary, .Button.Button--primary:visited, .ButtonGroup--primary > .Button, .ButtonGroup--primary > .Button:visited { - background-color: var(--feather-button-primary-background-color); - border: 1px solid var(--feather-button-primary-border-color); - color: var(--feather-button-primary-color); + background-color: var(--feather-button-primary-background-color); + border: 1px solid var(--feather-button-primary-border-color); + color: var(--feather-button-primary-color); } .Button.Button--primary:focus, .Button.Button--primary.is-focus, .ButtonGroup--primary > .Button:focus, .ButtonGroup--primary > .Button.is-focus { - background: var(--feather-button-primary-background-color); - border-color: var(--feather-button-primary-border-color); - color: var(--feather-button-primary-color); + background: var(--feather-button-primary-background-color); + border-color: var(--feather-button-primary-border-color); + color: var(--feather-button-primary-color); } .Button.Button--primary:focus:not(.is-mouseFocus), .Button.Button--primary.is-focus:not(.is-mouseFocus), .ButtonGroup--primary > .Button:focus:not(.is-mouseFocus), .ButtonGroup--primary > .Button.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px white, 0 0 0 3px var(--feather-button-primary-outline-color-focus), 0 0 2px 3px var(--feather-button-primary-outline-color-focus); + box-shadow: 0 0 0 1px white, + 0 0 0 3px var(--feather-button-primary-outline-color-focus), + 0 0 2px 3px var(--feather-button-primary-outline-color-focus); } .u-featherBackgroundDark .Button.Button--primary:focus:not(.is-mouseFocus), .u-featherBackgroundDark .Button.Button--primary.is-focus:not(.is-mouseFocus), -.u-featherBackgroundDark .ButtonGroup--primary > .Button:focus:not(.is-mouseFocus), -.u-featherBackgroundDark .ButtonGroup--primary > .Button.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px black, 0 0 0 3px var(--feather-button-primary-outline-color-focus), 0 0 2px 3px var(--feather-button-primary-outline-color-focus); +.u-featherBackgroundDark + .ButtonGroup--primary + > .Button:focus:not(.is-mouseFocus), +.u-featherBackgroundDark + .ButtonGroup--primary + > .Button.is-focus:not(.is-mouseFocus) { + box-shadow: 0 0 0 1px black, + 0 0 0 3px var(--feather-button-primary-outline-color-focus), + 0 0 2px 3px var(--feather-button-primary-outline-color-focus); } .Button.Button--primary:hover, .Button.Button--primary.is-hover, .ButtonGroup--primary > .Button:hover, .ButtonGroup--primary > .Button.is-hover { - background-color: var(--feather-button-primary-background-color-hover); - border-color: var(--feather-button-primary-border-color-hover); - color: var(--feather-button-primary-color); + background-color: var(--feather-button-primary-background-color-hover); + border-color: var(--feather-button-primary-border-color-hover); + color: var(--feather-button-primary-color); } .Button.Button--primary:active, .Button.Button--primary.is-active, .ButtonGroup--primary > .Button:active, .ButtonGroup--primary > .Button.is-active { - background-color: var(--feather-button-primary-background-color-active); - border-color: var(--feather-button-primary-border-color-active); - color: var(--feather-button-primary-color); + background-color: var(--feather-button-primary-background-color-active); + border-color: var(--feather-button-primary-border-color-active); + color: var(--feather-button-primary-color); } .Button.Button--primary[disabled], .Button.Button--primary.is-disabled, @@ -368,92 +447,111 @@ fieldset[disabled] .Button.Button--primary, .ButtonGroup--primary > .Button[disabled], .ButtonGroup--primary > .Button.is-disabled, fieldset[disabled] .ButtonGroup--primary > .Button { - background-color: var(--feather-button-primary-background-color); - border-color: var(--feather-button-primary-border-color); - box-shadow: none; + background-color: var(--feather-button-primary-background-color); + border-color: var(--feather-button-primary-border-color); + box-shadow: none; } .Button.Button--brandPrimary, .Button.Button--brandPrimary:visited { - background-color: var(--feather-button-brand-primary-background-color); - border: 1px solid var(--feather-button-brand-primary-border-color); - color: var(--feather-button-brand-primary-color); + background-color: var(--feather-button-brand-primary-background-color); + border: 1px solid var(--feather-button-brand-primary-border-color); + color: var(--feather-button-brand-primary-color); } .Button.Button--brandPrimary:focus, .Button.Button--brandPrimary.is-focus { - background: var(--feather-button-brand-primary-background-color); - border-color: var(--feather-button-brand-primary-border-color); - color: var(--feather-button-brand-primary-color); + background: var(--feather-button-brand-primary-background-color); + border-color: var(--feather-button-brand-primary-border-color); + color: var(--feather-button-brand-primary-color); } .Button.Button--brandPrimary:focus:not(.is-mouseFocus), .Button.Button--brandPrimary.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px white, 0 0 0 3px var(--feather-button-brand-primary-outline-color-focus), 0 0 2px 3px var(--feather-button-brand-primary-outline-color-focus); + box-shadow: 0 0 0 1px white, + 0 0 0 3px var(--feather-button-brand-primary-outline-color-focus), + 0 0 2px 3px var(--feather-button-brand-primary-outline-color-focus); } .u-featherBackgroundDark .Button.Button--brandPrimary:focus:not(.is-mouseFocus), -.u-featherBackgroundDark .Button.Button--brandPrimary.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px black, 0 0 0 3px var(--feather-button-brand-primary-outline-color-focus), 0 0 2px 3px var(--feather-button-brand-primary-outline-color-focus); +.u-featherBackgroundDark + .Button.Button--brandPrimary.is-focus:not(.is-mouseFocus) { + box-shadow: 0 0 0 1px black, + 0 0 0 3px var(--feather-button-brand-primary-outline-color-focus), + 0 0 2px 3px var(--feather-button-brand-primary-outline-color-focus); } .Button.Button--brandPrimary:hover, .Button.Button--brandPrimary.is-hover { - background-color: var(--feather-button-brand-primary-background-color-hover); - border-color: var(--feather-button-brand-primary-border-color-hover); - color: var(--feather-button-brand-primary-color); + background-color: var( + --feather-button-brand-primary-background-color-hover + ); + border-color: var(--feather-button-brand-primary-border-color-hover); + color: var(--feather-button-brand-primary-color); } .Button.Button--brandPrimary:active, .Button.Button--brandPrimary.is-active { - background-color: var(--feather-button-brand-primary-background-color-active); - border-color: var(--feather-button-brand-primary-border-color-active); - color: var(--feather-button-brand-primary-color); + background-color: var( + --feather-button-brand-primary-background-color-active + ); + border-color: var(--feather-button-brand-primary-border-color-active); + color: var(--feather-button-brand-primary-color); } .Button.Button--brandPrimary[disabled], .Button.Button--brandPrimary.is-disabled, fieldset[disabled] .Button.Button--brandPrimary { - background-color: var(--feather-button-brand-primary-background-color); - border-color: var(--feather-button-brand-primary-border-color); - box-shadow: none; + background-color: var(--feather-button-brand-primary-background-color); + border-color: var(--feather-button-brand-primary-border-color); + box-shadow: none; } .Button.Button--dangerPrimary, .Button.Button--danger, .Button.Button--dangerPrimary:visited, .Button.Button--danger:visited { - background-color: var(--feather-button-danger-primary-background-color); - border: 1px solid var(--feather-button-danger-primary-border-color); - color: var(--feather-button-danger-primary-color); + background-color: var(--feather-button-danger-primary-background-color); + border: 1px solid var(--feather-button-danger-primary-border-color); + color: var(--feather-button-danger-primary-color); } .Button.Button--dangerPrimary:focus, .Button.Button--danger:focus, .Button.Button--dangerPrimary.is-focus, .Button.Button--danger.is-focus { - background: var(--feather-button-danger-primary-background-color); - border-color: var(--feather-button-danger-primary-border-color); - color: var(--feather-button-danger-primary-color); + background: var(--feather-button-danger-primary-background-color); + border-color: var(--feather-button-danger-primary-border-color); + color: var(--feather-button-danger-primary-color); } .Button.Button--dangerPrimary:focus:not(.is-mouseFocus), .Button.Button--danger:focus:not(.is-mouseFocus), .Button.Button--dangerPrimary.is-focus:not(.is-mouseFocus), .Button.Button--danger.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px white, 0 0 0 3px var(--feather-button-danger-primary-outline-color-focus), 0 0 2px 3px var(--feather-button-danger-primary-outline-color-focus); + box-shadow: 0 0 0 1px white, + 0 0 0 3px var(--feather-button-danger-primary-outline-color-focus), + 0 0 2px 3px var(--feather-button-danger-primary-outline-color-focus); } -.u-featherBackgroundDark .Button.Button--dangerPrimary:focus:not(.is-mouseFocus), +.u-featherBackgroundDark + .Button.Button--dangerPrimary:focus:not(.is-mouseFocus), .u-featherBackgroundDark .Button.Button--danger:focus:not(.is-mouseFocus), -.u-featherBackgroundDark .Button.Button--dangerPrimary.is-focus:not(.is-mouseFocus), +.u-featherBackgroundDark + .Button.Button--dangerPrimary.is-focus:not(.is-mouseFocus), .u-featherBackgroundDark .Button.Button--danger.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px black, 0 0 0 3px var(--feather-button-danger-primary-outline-color-focus), 0 0 2px 3px var(--feather-button-danger-primary-outline-color-focus); + box-shadow: 0 0 0 1px black, + 0 0 0 3px var(--feather-button-danger-primary-outline-color-focus), + 0 0 2px 3px var(--feather-button-danger-primary-outline-color-focus); } .Button.Button--dangerPrimary:hover, .Button.Button--danger:hover, .Button.Button--dangerPrimary.is-hover, .Button.Button--danger.is-hover { - background-color: var(--feather-button-danger-primary-background-color-hover); - border-color: var(--feather-button-danger-primary-border-color-hover); - color: var(--feather-button-danger-primary-color); + background-color: var( + --feather-button-danger-primary-background-color-hover + ); + border-color: var(--feather-button-danger-primary-border-color-hover); + color: var(--feather-button-danger-primary-color); } .Button.Button--dangerPrimary:active, .Button.Button--danger:active, .Button.Button--dangerPrimary.is-active, .Button.Button--danger.is-active { - background-color: var(--feather-button-danger-primary-background-color-active); - border-color: var(--feather-button-danger-primary-border-color-active); - color: var(--feather-button-danger-primary-color); + background-color: var( + --feather-button-danger-primary-background-color-active + ); + border-color: var(--feather-button-danger-primary-border-color-active); + color: var(--feather-button-danger-primary-color); } .Button.Button--dangerPrimary[disabled], .Button.Button--danger[disabled], @@ -461,63 +559,73 @@ fieldset[disabled] .Button.Button--brandPrimary { .Button.Button--danger.is-disabled, fieldset[disabled] .Button.Button--dangerPrimary, fieldset[disabled] .Button.Button--danger { - background-color: var(--feather-button-danger-primary-background-color); - border-color: var(--feather-button-danger-primary-border-color); - box-shadow: none; + background-color: var(--feather-button-danger-primary-background-color); + border-color: var(--feather-button-danger-primary-border-color); + box-shadow: none; } .Button.Button--dangerSecondary, .Button.Button--dangerSecondary:visited { - background-color: var(--feather-button-danger-secondary-background-color); - border: 1px solid var(--feather-button-danger-secondary-border-color); - color: var(--feather-button-danger-secondary-color); + background-color: var(--feather-button-danger-secondary-background-color); + border: 1px solid var(--feather-button-danger-secondary-border-color); + color: var(--feather-button-danger-secondary-color); } .Button.Button--dangerSecondary:focus, .Button.Button--dangerSecondary.is-focus { - background: var(--feather-button-danger-secondary-background-color); - border-color: var(--feather-button-danger-secondary-border-color); - color: var(--feather-button-danger-secondary-color); + background: var(--feather-button-danger-secondary-background-color); + border-color: var(--feather-button-danger-secondary-border-color); + color: var(--feather-button-danger-secondary-color); } .Button.Button--dangerSecondary:focus:not(.is-mouseFocus), .Button.Button--dangerSecondary.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px white, 0 0 0 3px var(--feather-button-danger-secondary-outline-color-focus), 0 0 2px 3px var(--feather-button-danger-secondary-outline-color-focus); -} -.u-featherBackgroundDark .Button.Button--dangerSecondary:focus:not(.is-mouseFocus), -.u-featherBackgroundDark .Button.Button--dangerSecondary.is-focus:not(.is-mouseFocus) { - box-shadow: 0 0 0 1px black, 0 0 0 3px var(--feather-button-danger-secondary-outline-color-focus), 0 0 2px 3px var(--feather-button-danger-secondary-outline-color-focus); + box-shadow: 0 0 0 1px white, + 0 0 0 3px var(--feather-button-danger-secondary-outline-color-focus), + 0 0 2px 3px var(--feather-button-danger-secondary-outline-color-focus); +} +.u-featherBackgroundDark + .Button.Button--dangerSecondary:focus:not(.is-mouseFocus), +.u-featherBackgroundDark + .Button.Button--dangerSecondary.is-focus:not(.is-mouseFocus) { + box-shadow: 0 0 0 1px black, + 0 0 0 3px var(--feather-button-danger-secondary-outline-color-focus), + 0 0 2px 3px var(--feather-button-danger-secondary-outline-color-focus); } .Button.Button--dangerSecondary:hover, .Button.Button--dangerSecondary.is-hover { - background-color: var(--feather-button-danger-secondary-background-color-hover); - border-color: var(--feather-button-danger-secondary-border-color-hover); - color: var(--feather-button-danger-secondary-color); + background-color: var( + --feather-button-danger-secondary-background-color-hover + ); + border-color: var(--feather-button-danger-secondary-border-color-hover); + color: var(--feather-button-danger-secondary-color); } .Button.Button--dangerSecondary:active, .Button.Button--dangerSecondary.is-active { - background-color: var(--feather-button-danger-secondary-background-color-active); - border-color: var(--feather-button-danger-secondary-border-color-active); - color: var(--feather-button-danger-secondary-color); + background-color: var( + --feather-button-danger-secondary-background-color-active + ); + border-color: var(--feather-button-danger-secondary-border-color-active); + color: var(--feather-button-danger-secondary-color); } .Button.Button--dangerSecondary[disabled], .Button.Button--dangerSecondary.is-disabled, fieldset[disabled] .Button.Button--dangerSecondary { - background-color: var(--feather-button-danger-secondary-background-color); - border-color: var(--feather-button-danger-secondary-border-color); - box-shadow: none; + background-color: var(--feather-button-danger-secondary-background-color); + border-color: var(--feather-button-danger-secondary-border-color); + box-shadow: none; } .Button.Button--link { - padding-left: 0; - padding-right: 0; - background: transparent; - border: none; - border-radius: var(--feather-form-control-default-border-radius); - box-shadow: none; - color: var(--feather-button-link-color); - cursor: pointer; - font-family: var(--feather-font-family-base); - font-weight: var(--feather-button-link-font-weight); - text-decoration: underline; - text-decoration-thickness: var(--feather-space-1); - text-underline-offset: var(--feather-space-4); + padding-left: 0; + padding-right: 0; + background: transparent; + border: none; + border-radius: var(--feather-form-control-default-border-radius); + box-shadow: none; + color: var(--feather-button-link-color); + cursor: pointer; + font-family: var(--feather-font-family-base); + font-weight: var(--feather-button-link-font-weight); + text-decoration: underline; + text-decoration-thickness: var(--feather-space-1); + text-underline-offset: var(--feather-space-4); } .Button.Button--link:hover, .Button.Button--link.is-hover, @@ -535,34 +643,34 @@ fieldset[disabled] .Button.Button--dangerSecondary { .u-featherBackgroundDark .Button.Button--link.is-active, .u-featherBackgroundDark .Button.Button--link.is-focus.is-active, .u-featherBackgroundDark .Button.Button--link:focus:active:not(.is-mouseFocus) { - background: transparent; - border-color: transparent; - color: var(--feather-button-link-color); - text-decoration: underline; - text-decoration-thickness: var(--feather-space-2); + background: transparent; + border-color: transparent; + color: var(--feather-button-link-color); + text-decoration: underline; + text-decoration-thickness: var(--feather-space-2); } .Button.Button--link[disabled], .Button.Button--link.is-disabled, fieldset[disabled] .Button.Button--link { - cursor: default; - opacity: 0.5; - text-decoration: underline; - text-decoration-thickness: var(--feather-space-1); + cursor: default; + opacity: 0.5; + text-decoration: underline; + text-decoration-thickness: var(--feather-space-1); } .Button.Button--dangerLink { - padding-left: 0; - padding-right: 0; - background: transparent; - border: none; - border-radius: var(--feather-form-control-default-border-radius); - box-shadow: none; - color: var(--feather-button-danger-link-color); - cursor: pointer; - font-family: var(--feather-font-family-base); - font-weight: var(--feather-button-link-font-weight); - text-decoration: underline; - text-decoration-thickness: var(--feather-space-1); - text-underline-offset: var(--feather-space-4); + padding-left: 0; + padding-right: 0; + background: transparent; + border: none; + border-radius: var(--feather-form-control-default-border-radius); + box-shadow: none; + color: var(--feather-button-danger-link-color); + cursor: pointer; + font-family: var(--feather-font-family-base); + font-weight: var(--feather-button-link-font-weight); + text-decoration: underline; + text-decoration-thickness: var(--feather-space-1); + text-underline-offset: var(--feather-space-4); } .Button.Button--dangerLink:hover, .Button.Button--dangerLink.is-hover, @@ -579,51 +687,63 @@ fieldset[disabled] .Button.Button--link { .u-featherBackgroundDark .Button.Button--dangerLink:active, .u-featherBackgroundDark .Button.Button--dangerLink.is-active, .u-featherBackgroundDark .Button.Button--dangerLink.is-focus.is-active, -.u-featherBackgroundDark .Button.Button--dangerLink:focus:active:not(.is-mouseFocus) { - background: transparent; - border-color: transparent; - color: var(--feather-button-danger-link-color); - text-decoration: underline; - text-decoration-thickness: var(--feather-space-2); +.u-featherBackgroundDark + .Button.Button--dangerLink:focus:active:not(.is-mouseFocus) { + background: transparent; + border-color: transparent; + color: var(--feather-button-danger-link-color); + text-decoration: underline; + text-decoration-thickness: var(--feather-space-2); } .Button.Button--dangerLink[disabled], .Button.Button--dangerLink.is-disabled, fieldset[disabled] .Button.Button--dangerLink { - cursor: default; - opacity: 0.5; - text-decoration: underline; - text-decoration-thickness: var(--feather-space-1); + cursor: default; + opacity: 0.5; + text-decoration: underline; + text-decoration-thickness: var(--feather-space-1); } /* Sizes */ .Button { - padding: 0 var(--feather-space-16); - border-radius: var(--feather-form-control-default-height); - font-size: var(--feather-form-control-default-font-size); - height: var(--feather-form-control-default-height); - line-height: calc(var(--feather-form-control-default-height) - (var(--feather-border-width-small-experimental) * 2)); + padding: 0 var(--feather-space-16); + border-radius: var(--feather-form-control-default-height); + font-size: var(--feather-form-control-default-font-size); + height: var(--feather-form-control-default-height); + line-height: calc( + var(--feather-form-control-default-height) - + (var(--feather-border-width-small-experimental) * 2) + ); } .Button--xsmall, .ButtonGroup--xsmall > .Button { - padding: 0 var(--feather-space-12); - border-radius: var(--feather-form-control-xsmall-height); - font-size: var(--feather-font-size-subtext-1); - height: var(--feather-form-control-xsmall-height); - line-height: calc(var(--feather-form-control-xsmall-height) - (var(--feather-border-width-small-experimental) * 2)); + padding: 0 var(--feather-space-12); + border-radius: var(--feather-form-control-xsmall-height); + font-size: var(--feather-font-size-subtext-1); + height: var(--feather-form-control-xsmall-height); + line-height: calc( + var(--feather-form-control-xsmall-height) - + (var(--feather-border-width-small-experimental) * 2) + ); } .Button--small, .ButtonGroup--small > .Button { - padding: 0 var(--feather-space-16); - border-radius: var(--feather-form-control-small-height); - font-size: var(--feather-font-size-subtext-1); - height: var(--feather-form-control-small-height); - line-height: calc(var(--feather-form-control-small-height) - (var(--feather-border-width-small-experimental) * 2)); + padding: 0 var(--feather-space-16); + border-radius: var(--feather-form-control-small-height); + font-size: var(--feather-font-size-subtext-1); + height: var(--feather-form-control-small-height); + line-height: calc( + var(--feather-form-control-small-height) - + (var(--feather-border-width-small-experimental) * 2) + ); } .Button--large, .ButtonGroup--large > .Button { - padding: 0 var(--feather-space-24); - border-radius: var(--feather-form-control-large-height); - font-size: var(--feather-font-size-body); - height: var(--feather-form-control-large-height); - line-height: calc(var(--feather-form-control-large-height) - (var(--feather-border-width-small-experimental) * 2)); + padding: 0 var(--feather-space-24); + border-radius: var(--feather-form-control-large-height); + font-size: var(--feather-font-size-body); + height: var(--feather-form-control-large-height); + line-height: calc( + var(--feather-form-control-large-height) - + (var(--feather-border-width-small-experimental) * 2) + ); } - diff --git a/assets/css/_feather-core.scss b/assets/css/_feather-core.scss index 2e7750ba0..41067ff1d 100644 --- a/assets/css/_feather-core.scss +++ b/assets/css/_feather-core.scss @@ -10,12 +10,12 @@ * IE on Windows Phone and in iOS. */ html { - line-height: 1.15; - /* 1 */ - -ms-text-size-adjust: 100%; - /* 2 */ - -webkit-text-size-adjust: 100%; - /* 2 */ + line-height: 1.15; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } /* Sections ========================================================================== */ @@ -23,7 +23,7 @@ html { * Remove the margin in all browsers (opinionated). */ body { - margin: 0; + margin: 0; } /** * Add the correct display in IE 9-. @@ -34,15 +34,15 @@ footer, header, nav, section { - display: block; + display: block; } /** * Correct the font size and margin on `h1` elements within `section` and * `article` contexts in Chrome, Firefox, and Safari. */ h1 { - font-size: 2em; - margin: 0.67em 0; + font-size: 2em; + margin: 0.67em 0; } /* Grouping content ========================================================================== */ @@ -53,36 +53,36 @@ h1 { figcaption, figure, main { - /* 1 */ - display: block; + /* 1 */ + display: block; } /** * Add the correct margin in IE 8. */ figure { - margin: 1em 40px; + margin: 1em 40px; } /** * 1. Add the correct box sizing in Firefox. * 2. Show the overflow in Edge and IE. */ hr { - box-sizing: content-box; - /* 1 */ - height: 0; - /* 1 */ - overflow: visible; - /* 2 */ + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ } /** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. */ pre { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } /* Text-level semantics ========================================================================== */ @@ -91,37 +91,37 @@ pre { * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. */ a { - background-color: transparent; - /* 1 */ - -webkit-text-decoration-skip: objects; - /* 2 */ + background-color: transparent; + /* 1 */ + -webkit-text-decoration-skip: objects; + /* 2 */ } /** * 1. Remove the bottom border in Chrome 57- and Firefox 39-. * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ abbr[title] { - border-bottom: none; - /* 1 */ - text-decoration: underline; - /* 2 */ - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - /* 2 */ + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + /* 2 */ } /** * Prevent the duplicate application of `bolder` by the next rule in Safari 6. */ b, strong { - font-weight: inherit; + font-weight: inherit; } /** * Add the correct font weight in Chrome, Edge, and Safari. */ b, strong { - font-weight: bolder; + font-weight: bolder; } /** * 1. Correct the inheritance and scaling of font size in all browsers. @@ -130,29 +130,29 @@ strong { code, kbd, samp { - font-family: monospace, monospace; - /* 1 */ - font-size: 1em; - /* 2 */ + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ } /** * Add the correct font style in Android 4.3-. */ dfn { - font-style: italic; + font-style: italic; } /** * Add the correct background and color in IE 9-. */ mark { - background-color: #ff0; - color: #000; + background-color: #ff0; + color: #000; } /** * Add the correct font size in all browsers. */ small { - font-size: 80%; + font-size: 80%; } /** * Prevent `sub` and `sup` elements from affecting the line height in @@ -160,16 +160,16 @@ small { */ sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } sub { - bottom: -0.25em; + bottom: -0.25em; } sup { - top: -0.5em; + top: -0.5em; } /* Embedded content ========================================================================== */ @@ -178,26 +178,26 @@ sup { */ audio, video { - display: inline-block; + display: inline-block; } /** * Add the correct display in iOS 4-7. */ audio:not([controls]) { - display: none; - height: 0; + display: none; + height: 0; } /** * Remove the border on images inside links in IE 10-. */ img { - border-style: none; + border-style: none; } /** * Hide the overflow in IE. */ svg:not(:root) { - overflow: hidden; + overflow: hidden; } /* Forms ========================================================================== */ @@ -210,14 +210,14 @@ input, optgroup, select, textarea { - font-family: sans-serif; - /* 1 */ - font-size: 100%; - /* 1 */ - line-height: 1.15; - /* 1 */ - margin: 0; - /* 2 */ + font-family: sans-serif; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ } /** * Show the overflow in IE. @@ -225,8 +225,8 @@ textarea { */ button, input { - /* 1 */ - overflow: visible; + /* 1 */ + overflow: visible; } /** * Remove the inheritance of text transform in Edge, Firefox, and IE. @@ -234,8 +234,8 @@ input { */ button, select { - /* 1 */ - text-transform: none; + /* 1 */ + text-transform: none; } /** * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` @@ -246,8 +246,8 @@ button, html [type="button"], [type="reset"], [type="submit"] { - -webkit-appearance: button; - /* 2 */ + -webkit-appearance: button; + /* 2 */ } /** * Remove the inner border and padding in Firefox. @@ -256,8 +256,8 @@ button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; + border-style: none; + padding: 0; } /** * Restore the focus styles unset by the previous rule. @@ -266,13 +266,13 @@ button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; + outline: 1px dotted ButtonText; } /** * Correct the padding in Firefox. */ fieldset { - padding: 0.35em 0.75em 0.625em; + padding: 0.35em 0.75em 0.625em; } /** * 1. Correct the text wrapping in Edge and IE. @@ -281,34 +281,34 @@ fieldset { * `fieldset` elements in all browsers. */ legend { - box-sizing: border-box; - /* 1 */ - color: inherit; - /* 2 */ - display: table; - /* 1 */ - max-width: 100%; - /* 1 */ - padding: 0; - /* 3 */ - white-space: normal; - /* 1 */ + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ } /** * 1. Add the correct display in IE 9-. * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. */ progress { - display: inline-block; - /* 1 */ - vertical-align: baseline; - /* 2 */ + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } /** * Remove the default vertical scrollbar in IE. */ textarea { - overflow: auto; + overflow: auto; } /** * 1. Add the correct box sizing in IE 10-. @@ -316,44 +316,44 @@ textarea { */ [type="checkbox"], [type="radio"] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } /** * Correct the cursor style of increment and decrement buttons in Chrome. */ [type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { - height: auto; + height: auto; } /** * 1. Correct the odd appearance in Chrome and Safari. * 2. Correct the outline style in Safari. */ [type="search"] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ } /** * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. */ [type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration { - -webkit-appearance: none; + -webkit-appearance: none; } /** * 1. Correct the inability to style clickable types in iOS and Safari. * 2. Change font properties to `inherit` in Safari. */ ::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ } /* Interactive ========================================================================== */ @@ -363,13 +363,13 @@ textarea { */ details, menu { - display: block; + display: block; } /* * Add the correct display in all browsers. */ summary { - display: list-item; + display: list-item; } /* Scripting ========================================================================== */ @@ -377,13 +377,13 @@ summary { * Add the correct display in IE 9-. */ canvas { - display: inline-block; + display: inline-block; } /** * Add the correct display in IE. */ template { - display: none; + display: none; } /* Hidden ========================================================================== */ @@ -391,7 +391,7 @@ template { * Add the correct display in IE 10-. */ [hidden] { - display: none; + display: none; } /** * A thin layer on top of normalize.css that provides a starting point more @@ -403,15 +403,15 @@ template { * 2. Change the default font family in all browsers */ html { - box-sizing: border-box; - /* 1 */ - font-family: sans-serif; - /* 2 */ + box-sizing: border-box; + /* 1 */ + font-family: sans-serif; + /* 2 */ } *, *::before, *::after { - box-sizing: inherit; + box-sizing: inherit; } /** * Removes the default spacing and border for appropriate elements. @@ -429,34 +429,34 @@ h6, figure, p, pre { - margin: 0; + margin: 0; } button { - background: transparent; - border: 0; - padding: 0; + background: transparent; + border: 0; + padding: 0; } /** * Work around a Firefox/IE bug where the transparent `button` background * results in a loss of the default `button` focus styles. */ button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; } fieldset { - border: 0; - margin: 0; - padding: 0; + border: 0; + margin: 0; + padding: 0; } iframe { - border: 0; + border: 0; } ol, ul { - list-style: none; - margin: 0; - padding: 0; + list-style: none; + margin: 0; + padding: 0; } /** * Suppress the focus outline on elements that cannot be accessed via keyboard. @@ -464,7 +464,7 @@ ul { * might still respond to pointer events. */ [tabindex="-1"]:focus { - outline: none !important; + outline: none !important; } /** * Remove the outline on focused links when they are also active or hovered @@ -472,7 +472,7 @@ ul { */ a:active, a:hover { - outline-width: 0; + outline-width: 0; } /** * Change the font styles in all browsers. @@ -482,41 +482,41 @@ input, optgroup, select, textarea { - font-family: sans-serif; - font-size: 100%; - line-height: 1.15; + font-family: sans-serif; + font-size: 100%; + line-height: 1.15; } /** * Change the border, margin, and padding in all browsers. */ fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } * { - box-sizing: border-box; + box-sizing: border-box; } *::before, *::after { - box-sizing: border-box; + box-sizing: border-box; } button:not([disabled]) { - cursor: pointer; + cursor: pointer; } fieldset { - margin: 0; - padding: 0; - border: 0; + margin: 0; + padding: 0; + border: 0; } .u-featherHiddenVisually { - border: 0 !important; - clip: rect(1px, 1px, 1px, 1px) !important; - height: 1px !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - width: 1px !important; + border: 0 !important; + clip: rect(1px, 1px, 1px, 1px) !important; + height: 1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; } /* DO NOT EDIT. @@ -524,303 +524,306 @@ You can rebuild this file by running `yarn dist-js` in `feather-source`. The content of this file is derived from feather-core. */ :root { - /* Border radii */ - --feather-border-radius-none-experimental: 0px; - --feather-border-radius-xsmall-experimental: 2px; - --feather-border-radius-small-experimental: 4px; - --feather-border-radius-medium-experimental: 8px; - --feather-border-radius-large-experimental: 12px; - --feather-border-radius-xlarge-experimental: 16px; - --feather-border-radius-infinite-experimental: 9999px; - /* Border widths */ - --feather-border-width-none-experimental: 0px; - --feather-border-width-small-experimental: 1px; - --feather-border-width-medium-experimental: 2px; - --feather-border-width-large-experimental: 4px; - /* Breakpoints (private variables for internal Feather use only) */ - --feather-breakpoint-xsmall-experimental: 0px; - --feather-breakpoint-small-experimental: 600px; - --feather-breakpoint-medium-experimental: 1024px; - --feather-breakpoint-large-experimental: 1280px; - --feather-breakpoint-xlarge-experimental: 1920px; - /* Colors */ - --tw-color-gray-deep: #536471; - --tw-color-gray-medium: #B9CAD3; - --tw-color-gray-light: #CFD9DE; - --tw-color-gray-faded: #EFF3F4; - --tw-color-gray-faint: #F7F9F9; - --tw-color-red-deep: #D11A28; - --tw-color-red-medium: #F4212E; - --tw-color-red-light: #F87580; - --tw-color-red-faded: #FB9FA8; - --tw-color-orange-deep: #D86000; - --tw-color-orange-medium: #FF7A00; - --tw-color-orange-light: #FFAD61; - --tw-color-orange-faded: #FFC692; - --tw-color-yellow-deep: #DCAB00; - --tw-color-yellow-medium: #FFD400; - --tw-color-yellow-light: #FFEB6B; - --tw-color-yellow-faded: #FFF595; - --tw-color-green-deep: #009C64; - --tw-color-green-medium: #00BA7C; - --tw-color-green-light: #61D6A3; - --tw-color-green-faded: #92E3BF; - --tw-color-blue-deep: #0083EB; - --tw-color-blue-medium: #1D9BF0; - --tw-color-blue-light: #6BC9FB; - --tw-color-blue-faded: #97E3FF; - --tw-color-blue-faint: #EAFAFF; - --tw-color-purple-deep: #6545DB; - --tw-color-purple-medium: #7856FF; - --tw-color-purple-light: #AC97FF; - --tw-color-purple-faded: #C5B7FF; - --tw-color-blue-0: #EAFAFF; - --tw-color-blue-50: #D7F6FF; - --tw-color-blue-100: #BFF2FF; - --tw-color-blue-200: #97E3FF; - --tw-color-blue-300: #6BC9FB; - --tw-color-blue-500: #1D9BF0; - --tw-color-blue-600: #0083EB; - --tw-color-blue-900: #003886; - --tw-color-gray-0: #F7F9F9; - --tw-color-gray-50: #EFF3F4; - --tw-color-gray-100: #E5EAEC; - --tw-color-gray-200: #CFD9DE; - --tw-color-gray-300: #B9CAD3; - --tw-color-gray-500: #829AAB; - --tw-color-gray-700: #536471; - --tw-color-gray-900: #37434D; - --tw-color-gray-1100: #0F1419; - --tw-color-green-0: #EDFFF9; - --tw-color-green-50: #DBF8EB; - --tw-color-green-100: #C2F1DC; - --tw-color-green-200: #92E3BF; - --tw-color-green-300: #61D6A3; - --tw-color-green-500: #00BA7C; - --tw-color-green-600: #009C64; - --tw-color-green-900: #004329; - --tw-color-magenta-0: #FFF1F8; - --tw-color-magenta-50: #FFDDED; - --tw-color-magenta-100: #FEC7E1; - --tw-color-magenta-200: #FD9BC9; - --tw-color-magenta-300: #FB70B0; - --tw-color-magenta-500: #F91880; - --tw-color-magenta-600: #D4136D; - --tw-color-magenta-900: #640533; - --tw-color-orange-0: #FEF5EC; - --tw-color-orange-50: #FFEDDB; - --tw-color-orange-100: #FFE0C2; - --tw-color-orange-200: #FFC692; - --tw-color-orange-300: #FFAD61; - --tw-color-orange-500: #FF7A00; - --tw-color-orange-600: #D86000; - --tw-color-orange-900: #692100; - --tw-color-plum-0: #FFEFFF; - --tw-color-plum-50: #FAE0FA; - --tw-color-plum-100: #F4CDF5; - --tw-color-plum-200: #E9A7EB; - --tw-color-plum-300: #DF82E0; - --tw-color-plum-500: #C936CC; - --tw-color-plum-600: #AB2BAE; - --tw-color-plum-900: #520B53; - --tw-color-purple-0: #F5F3FF; - --tw-color-purple-50: #ECE8FF; - --tw-color-purple-100: #DFD8FF; - --tw-color-purple-200: #C5B7FF; - --tw-color-purple-300: #AC97FF; - --tw-color-purple-500: #7856FF; - --tw-color-purple-600: #6545DB; - --tw-color-purple-900: #2C116E; - --tw-color-red-0: #FFF0F1; - --tw-color-red-50: #FEDEE3; - --tw-color-red-100: #FDC9CE; - --tw-color-red-200: #FB9FA8; - --tw-color-red-300: #F87580; - --tw-color-red-500: #F4212E; - --tw-color-red-600: #D11A28; - --tw-color-red-900: #67070F; - --tw-color-teal-0: #E9FEFF; - --tw-color-teal-50: #D1F8FA; - --tw-color-teal-100: #B3F1F4; - --tw-color-teal-200: #78E4E8; - --tw-color-teal-300: #3CD6DD; - --tw-color-teal-500: #00AFB6; - --tw-color-teal-600: #009399; - --tw-color-teal-900: #003E42; - --tw-color-yellow-0: #FFFDEA; - --tw-color-yellow-50: #FFFED7; - --tw-color-yellow-100: #FFFEC0; - --tw-color-yellow-200: #FFF595; - --tw-color-yellow-300: #FFEB6B; - --tw-color-yellow-500: #FFD400; - --tw-color-yellow-600: #DCAB00; - --tw-color-yellow-900: #6F3E00; - --tw-color-blue-primary: #1D9BF0; - --tw-color-text-primary: #0F1419; - --tw-color-text-link: #0083EB; - /* Form controls */ - --feather-form-control-xsmall-font-size: 0.65rem; - --feather-form-control-xsmall-height: 1.2rem; - --feather-form-control-xsmall-border-radius: 8px; - --feather-form-control-xsmall-padding-x: 0.4rem; - --feather-form-control-xsmall-adornment-margin: 0.2rem; - --feather-form-control-small-font-size: 0.65rem; - --feather-form-control-small-height: 1.6rem; - --feather-form-control-small-border-radius: 8px; - --feather-form-control-small-padding-x: 0.6rem; - --feather-form-control-small-adornment-margin: 0.2rem; - --feather-form-control-default-font-size: 0.75rem; - --feather-form-control-default-height: 1.8rem; - --feather-form-control-default-border-radius: 8px; - --feather-form-control-default-padding-x: 0.6rem; - --feather-form-control-default-adornment-margin: 0.4rem; - --feather-form-control-large-font-size: 0.85rem; - --feather-form-control-large-height: 2.2rem; - --feather-form-control-large-border-radius: 8px; - --feather-form-control-large-padding-x: 0.6rem; - --feather-form-control-large-adornment-margin: 0.4rem; - /* Grid */ - --feather-grid-micro: 0.2rem; - --feather-grid-xxsmall: 0.4rem; - --feather-grid-xsmall: 0.6rem; - --feather-grid-small: 0.8rem; - --feather-grid-medium: 1rem; - --feather-grid-large: 1.2rem; - --feather-grid-mega: 2rem; - --feather-grid-baseline-gap: 8px; - --feather-grid-column-gap: 20px; - --feather-grid-column-width: 78px; - --feather-grid-page-width: 1156px; - /* Layout */ - --feather-layout-container-padding-x: 1.2rem; - --feather-layout-navigation-bar-height-experimental: 2.8rem; - --feather-layout-navigation-sidebar-width-experimental: 14rem; - /* Spaces */ - --feather-space-1: 1px; - --feather-space-2: 0.1rem; - --feather-space-4: 0.2rem; - --feather-space-6: 0.3rem; - --feather-space-8: 0.4rem; - --feather-space-12: 0.6rem; - --feather-space-16: 0.8rem; - --feather-space-20: 1rem; - --feather-space-24: 1.2rem; - --feather-space-28: 1.4rem; - --feather-space-32: 1.6rem; - --feather-space-36: 1.8rem; - --feather-space-40: 2rem; - --feather-space-48: 2.4rem; - --feather-space-64: 3.2rem; - --feather-space-80: 4rem; - /* Typography */ - --feather-font-family-base: TwitterChirp, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif; - --feather-font-family-monospace: Menlo, Monaco, Consolas, 'Courier New', monospace; - --feather-font-size-root: 20px; - --feather-font-size-title-3: 1.3rem; - --feather-line-height-title-3: 1.6rem; - --feather-font-size-title-4: 1.15rem; - --feather-line-height-title-4: 1.4rem; - --feather-font-size-headline-1: 1rem; - --feather-line-height-headline-1: 1.2rem; - --feather-font-size-headline-2: 0.85rem; - --feather-line-height-headline-2: 1rem; - --feather-font-size-body: 0.75rem; - --feather-line-height-body: 1rem; - --feather-font-size-subtext-1: 0.7rem; - --feather-line-height-subtext-1: 0.8rem; - --feather-font-size-subtext-2: 0.65rem; - --feather-line-height-subtext-2: 0.8rem; - --feather-font-size-subtext-3: 0.55rem; - --feather-line-height-subtext-3: 0.6rem; - --feather-font-size-jumbo: 1.3rem; - --feather-line-height-jumbo: 1.6rem; - --feather-font-size-xlarge: 1.15rem; - --feather-line-height-xlarge: 1.4rem; - --feather-font-size-large: 1rem; - --feather-line-height-large: 1.2rem; - --feather-font-size-normal: 0.75rem; - --feather-line-height-normal: 1rem; - --feather-font-size-small: 0.65rem; - --feather-line-height-small: 0.8rem; - --feather-font-weight-normal: 400; - --feather-font-weight-medium: 500; - --feather-font-weight-bold: 700; - --feather-font-weight-heavy-experimental: 800; + /* Border radii */ + --feather-border-radius-none-experimental: 0px; + --feather-border-radius-xsmall-experimental: 2px; + --feather-border-radius-small-experimental: 4px; + --feather-border-radius-medium-experimental: 8px; + --feather-border-radius-large-experimental: 12px; + --feather-border-radius-xlarge-experimental: 16px; + --feather-border-radius-infinite-experimental: 9999px; + /* Border widths */ + --feather-border-width-none-experimental: 0px; + --feather-border-width-small-experimental: 1px; + --feather-border-width-medium-experimental: 2px; + --feather-border-width-large-experimental: 4px; + /* Breakpoints (private variables for internal Feather use only) */ + --feather-breakpoint-xsmall-experimental: 0px; + --feather-breakpoint-small-experimental: 600px; + --feather-breakpoint-medium-experimental: 1024px; + --feather-breakpoint-large-experimental: 1280px; + --feather-breakpoint-xlarge-experimental: 1920px; + /* Colors */ + --tw-color-gray-deep: #536471; + --tw-color-gray-medium: #b9cad3; + --tw-color-gray-light: #cfd9de; + --tw-color-gray-faded: #eff3f4; + --tw-color-gray-faint: #f7f9f9; + --tw-color-red-deep: #d11a28; + --tw-color-red-medium: #f4212e; + --tw-color-red-light: #f87580; + --tw-color-red-faded: #fb9fa8; + --tw-color-orange-deep: #d86000; + --tw-color-orange-medium: #ff7a00; + --tw-color-orange-light: #ffad61; + --tw-color-orange-faded: #ffc692; + --tw-color-yellow-deep: #dcab00; + --tw-color-yellow-medium: #ffd400; + --tw-color-yellow-light: #ffeb6b; + --tw-color-yellow-faded: #fff595; + --tw-color-green-deep: #009c64; + --tw-color-green-medium: #00ba7c; + --tw-color-green-light: #61d6a3; + --tw-color-green-faded: #92e3bf; + --tw-color-blue-deep: #0083eb; + --tw-color-blue-medium: #1d9bf0; + --tw-color-blue-light: #6bc9fb; + --tw-color-blue-faded: #97e3ff; + --tw-color-blue-faint: #eafaff; + --tw-color-purple-deep: #6545db; + --tw-color-purple-medium: #7856ff; + --tw-color-purple-light: #ac97ff; + --tw-color-purple-faded: #c5b7ff; + --tw-color-blue-0: #eafaff; + --tw-color-blue-50: #d7f6ff; + --tw-color-blue-100: #bff2ff; + --tw-color-blue-200: #97e3ff; + --tw-color-blue-300: #6bc9fb; + --tw-color-blue-500: #1d9bf0; + --tw-color-blue-600: #0083eb; + --tw-color-blue-900: #003886; + --tw-color-gray-0: #f7f9f9; + --tw-color-gray-50: #eff3f4; + --tw-color-gray-100: #e5eaec; + --tw-color-gray-200: #cfd9de; + --tw-color-gray-300: #b9cad3; + --tw-color-gray-500: #829aab; + --tw-color-gray-700: #536471; + --tw-color-gray-900: #37434d; + --tw-color-gray-1100: #0f1419; + --tw-color-green-0: #edfff9; + --tw-color-green-50: #dbf8eb; + --tw-color-green-100: #c2f1dc; + --tw-color-green-200: #92e3bf; + --tw-color-green-300: #61d6a3; + --tw-color-green-500: #00ba7c; + --tw-color-green-600: #009c64; + --tw-color-green-900: #004329; + --tw-color-magenta-0: #fff1f8; + --tw-color-magenta-50: #ffdded; + --tw-color-magenta-100: #fec7e1; + --tw-color-magenta-200: #fd9bc9; + --tw-color-magenta-300: #fb70b0; + --tw-color-magenta-500: #f91880; + --tw-color-magenta-600: #d4136d; + --tw-color-magenta-900: #640533; + --tw-color-orange-0: #fef5ec; + --tw-color-orange-50: #ffeddb; + --tw-color-orange-100: #ffe0c2; + --tw-color-orange-200: #ffc692; + --tw-color-orange-300: #ffad61; + --tw-color-orange-500: #ff7a00; + --tw-color-orange-600: #d86000; + --tw-color-orange-900: #692100; + --tw-color-plum-0: #ffefff; + --tw-color-plum-50: #fae0fa; + --tw-color-plum-100: #f4cdf5; + --tw-color-plum-200: #e9a7eb; + --tw-color-plum-300: #df82e0; + --tw-color-plum-500: #c936cc; + --tw-color-plum-600: #ab2bae; + --tw-color-plum-900: #520b53; + --tw-color-purple-0: #f5f3ff; + --tw-color-purple-50: #ece8ff; + --tw-color-purple-100: #dfd8ff; + --tw-color-purple-200: #c5b7ff; + --tw-color-purple-300: #ac97ff; + --tw-color-purple-500: #7856ff; + --tw-color-purple-600: #6545db; + --tw-color-purple-900: #2c116e; + --tw-color-red-0: #fff0f1; + --tw-color-red-50: #fedee3; + --tw-color-red-100: #fdc9ce; + --tw-color-red-200: #fb9fa8; + --tw-color-red-300: #f87580; + --tw-color-red-500: #f4212e; + --tw-color-red-600: #d11a28; + --tw-color-red-900: #67070f; + --tw-color-teal-0: #e9feff; + --tw-color-teal-50: #d1f8fa; + --tw-color-teal-100: #b3f1f4; + --tw-color-teal-200: #78e4e8; + --tw-color-teal-300: #3cd6dd; + --tw-color-teal-500: #00afb6; + --tw-color-teal-600: #009399; + --tw-color-teal-900: #003e42; + --tw-color-yellow-0: #fffdea; + --tw-color-yellow-50: #fffed7; + --tw-color-yellow-100: #fffec0; + --tw-color-yellow-200: #fff595; + --tw-color-yellow-300: #ffeb6b; + --tw-color-yellow-500: #ffd400; + --tw-color-yellow-600: #dcab00; + --tw-color-yellow-900: #6f3e00; + --tw-color-blue-primary: #1d9bf0; + --tw-color-text-primary: #0f1419; + --tw-color-text-link: #0083eb; + /* Form controls */ + --feather-form-control-xsmall-font-size: 0.65rem; + --feather-form-control-xsmall-height: 1.2rem; + --feather-form-control-xsmall-border-radius: 8px; + --feather-form-control-xsmall-padding-x: 0.4rem; + --feather-form-control-xsmall-adornment-margin: 0.2rem; + --feather-form-control-small-font-size: 0.65rem; + --feather-form-control-small-height: 1.6rem; + --feather-form-control-small-border-radius: 8px; + --feather-form-control-small-padding-x: 0.6rem; + --feather-form-control-small-adornment-margin: 0.2rem; + --feather-form-control-default-font-size: 0.75rem; + --feather-form-control-default-height: 1.8rem; + --feather-form-control-default-border-radius: 8px; + --feather-form-control-default-padding-x: 0.6rem; + --feather-form-control-default-adornment-margin: 0.4rem; + --feather-form-control-large-font-size: 0.85rem; + --feather-form-control-large-height: 2.2rem; + --feather-form-control-large-border-radius: 8px; + --feather-form-control-large-padding-x: 0.6rem; + --feather-form-control-large-adornment-margin: 0.4rem; + /* Grid */ + --feather-grid-micro: 0.2rem; + --feather-grid-xxsmall: 0.4rem; + --feather-grid-xsmall: 0.6rem; + --feather-grid-small: 0.8rem; + --feather-grid-medium: 1rem; + --feather-grid-large: 1.2rem; + --feather-grid-mega: 2rem; + --feather-grid-baseline-gap: 8px; + --feather-grid-column-gap: 20px; + --feather-grid-column-width: 78px; + --feather-grid-page-width: 1156px; + /* Layout */ + --feather-layout-container-padding-x: 1.2rem; + --feather-layout-navigation-bar-height-experimental: 2.8rem; + --feather-layout-navigation-sidebar-width-experimental: 14rem; + /* Spaces */ + --feather-space-1: 1px; + --feather-space-2: 0.1rem; + --feather-space-4: 0.2rem; + --feather-space-6: 0.3rem; + --feather-space-8: 0.4rem; + --feather-space-12: 0.6rem; + --feather-space-16: 0.8rem; + --feather-space-20: 1rem; + --feather-space-24: 1.2rem; + --feather-space-28: 1.4rem; + --feather-space-32: 1.6rem; + --feather-space-36: 1.8rem; + --feather-space-40: 2rem; + --feather-space-48: 2.4rem; + --feather-space-64: 3.2rem; + --feather-space-80: 4rem; + /* Typography */ + --feather-font-family-base: TwitterChirp, -apple-system, BlinkMacSystemFont, + "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", + sans-serif; + --feather-font-family-monospace: Menlo, Monaco, Consolas, "Courier New", + monospace; + --feather-font-size-root: 20px; + --feather-font-size-title-3: 1.3rem; + --feather-line-height-title-3: 1.6rem; + --feather-font-size-title-4: 1.15rem; + --feather-line-height-title-4: 1.4rem; + --feather-font-size-headline-1: 1rem; + --feather-line-height-headline-1: 1.2rem; + --feather-font-size-headline-2: 0.85rem; + --feather-line-height-headline-2: 1rem; + --feather-font-size-body: 0.75rem; + --feather-line-height-body: 1rem; + --feather-font-size-subtext-1: 0.7rem; + --feather-line-height-subtext-1: 0.8rem; + --feather-font-size-subtext-2: 0.65rem; + --feather-line-height-subtext-2: 0.8rem; + --feather-font-size-subtext-3: 0.55rem; + --feather-line-height-subtext-3: 0.6rem; + --feather-font-size-jumbo: 1.3rem; + --feather-line-height-jumbo: 1.6rem; + --feather-font-size-xlarge: 1.15rem; + --feather-line-height-xlarge: 1.4rem; + --feather-font-size-large: 1rem; + --feather-line-height-large: 1.2rem; + --feather-font-size-normal: 0.75rem; + --feather-line-height-normal: 1rem; + --feather-font-size-small: 0.65rem; + --feather-line-height-small: 0.8rem; + --feather-font-weight-normal: 400; + --feather-font-weight-medium: 500; + --feather-font-weight-bold: 700; + --feather-font-weight-heavy-experimental: 800; } /* Typography class names */ .feather-text-title-3 { - font-size: var(--feather-font-size-title-3); - line-height: var(--feather-line-height-title-3); + font-size: var(--feather-font-size-title-3); + line-height: var(--feather-line-height-title-3); } .feather-text-title-4 { - font-size: var(--feather-font-size-title-4); - line-height: var(--feather-line-height-title-4); + font-size: var(--feather-font-size-title-4); + line-height: var(--feather-line-height-title-4); } .feather-text-headline-1 { - font-size: var(--feather-font-size-headline-1); - line-height: var(--feather-line-height-headline-1); + font-size: var(--feather-font-size-headline-1); + line-height: var(--feather-line-height-headline-1); } .feather-text-headline-2 { - font-size: var(--feather-font-size-headline-2); - line-height: var(--feather-line-height-headline-2); + font-size: var(--feather-font-size-headline-2); + line-height: var(--feather-line-height-headline-2); } .feather-text-body { - font-size: var(--feather-font-size-body); - line-height: var(--feather-line-height-body); + font-size: var(--feather-font-size-body); + line-height: var(--feather-line-height-body); } .feather-text-subtext-1 { - font-size: var(--feather-font-size-subtext-1); - line-height: var(--feather-line-height-subtext-1); + font-size: var(--feather-font-size-subtext-1); + line-height: var(--feather-line-height-subtext-1); } .feather-text-subtext-2 { - font-size: var(--feather-font-size-subtext-2); - line-height: var(--feather-line-height-subtext-2); + font-size: var(--feather-font-size-subtext-2); + line-height: var(--feather-line-height-subtext-2); } .feather-text-subtext-3 { - font-size: var(--feather-font-size-subtext-3); - line-height: var(--feather-line-height-subtext-3); + font-size: var(--feather-font-size-subtext-3); + line-height: var(--feather-line-height-subtext-3); } .feather-text-jumbo { - font-size: var(--feather-font-size-jumbo); - line-height: var(--feather-line-height-jumbo); + font-size: var(--feather-font-size-jumbo); + line-height: var(--feather-line-height-jumbo); } .feather-text-xlarge { - font-size: var(--feather-font-size-xlarge); - line-height: var(--feather-line-height-xlarge); + font-size: var(--feather-font-size-xlarge); + line-height: var(--feather-line-height-xlarge); } .feather-text-large { - font-size: var(--feather-font-size-large); - line-height: var(--feather-line-height-large); + font-size: var(--feather-font-size-large); + line-height: var(--feather-line-height-large); } .feather-text-normal { - font-size: var(--feather-font-size-normal); - line-height: var(--feather-line-height-normal); + font-size: var(--feather-font-size-normal); + line-height: var(--feather-line-height-normal); } .feather-text-small { - font-size: var(--feather-font-size-small); - line-height: var(--feather-line-height-small); + font-size: var(--feather-font-size-small); + line-height: var(--feather-line-height-small); } .feather-text-small-caps { - font-weight: var(--feather-font-weight-bold); - letter-spacing: 0.025rem; - text-transform: uppercase; - font-size: var(--feather-font-size-small); - line-height: var(--feather-line-height-small); + font-weight: var(--feather-font-weight-bold); + letter-spacing: 0.025rem; + text-transform: uppercase; + font-size: var(--feather-font-size-small); + line-height: var(--feather-line-height-small); } .feather-h1 { - font-weight: var(--feather-font-weight-bold); - font-size: var(--feather-font-size-title-3); - line-height: var(--feather-line-height-title-3); + font-weight: var(--feather-font-weight-bold); + font-size: var(--feather-font-size-title-3); + line-height: var(--feather-line-height-title-3); } .feather-h2 { - font-weight: var(--feather-font-weight-bold); - font-size: var(--feather-font-size-title-4); - line-height: var(--feather-line-height-title-4); + font-weight: var(--feather-font-weight-bold); + font-size: var(--feather-font-size-title-4); + line-height: var(--feather-line-height-title-4); } .feather-h3 { - font-weight: var(--feather-font-weight-bold); - font-size: var(--feather-font-size-headline-1); - line-height: var(--feather-line-height-headline-1); + font-weight: var(--feather-font-weight-bold); + font-size: var(--feather-font-size-headline-1); + line-height: var(--feather-line-height-headline-1); } /* DO NOT EDIT. @@ -828,236 +831,250 @@ You can rebuild this file by running `yarn dist-js` in `feather-source`. The content of this file is derived from feather-core. */ .feather-text-title-3 { - font-size: var(--feather-font-size-title-3); - line-height: var(--feather-line-height-title-3); + font-size: var(--feather-font-size-title-3); + line-height: var(--feather-line-height-title-3); } .feather-text-title-4 { - font-size: var(--feather-font-size-title-4); - line-height: var(--feather-line-height-title-4); + font-size: var(--feather-font-size-title-4); + line-height: var(--feather-line-height-title-4); } .feather-text-headline-1 { - font-size: var(--feather-font-size-headline-1); - line-height: var(--feather-line-height-headline-1); + font-size: var(--feather-font-size-headline-1); + line-height: var(--feather-line-height-headline-1); } .feather-text-headline-2 { - font-size: var(--feather-font-size-headline-2); - line-height: var(--feather-line-height-headline-2); + font-size: var(--feather-font-size-headline-2); + line-height: var(--feather-line-height-headline-2); } .feather-text-body { - font-size: var(--feather-font-size-body); - line-height: var(--feather-line-height-body); + font-size: var(--feather-font-size-body); + line-height: var(--feather-line-height-body); } .feather-text-subtext-1 { - font-size: var(--feather-font-size-subtext-1); - line-height: var(--feather-line-height-subtext-1); + font-size: var(--feather-font-size-subtext-1); + line-height: var(--feather-line-height-subtext-1); } .feather-text-subtext-2 { - font-size: var(--feather-font-size-subtext-2); - line-height: var(--feather-line-height-subtext-2); + font-size: var(--feather-font-size-subtext-2); + line-height: var(--feather-line-height-subtext-2); } .feather-text-subtext-3 { - font-size: var(--feather-font-size-subtext-3); - line-height: var(--feather-line-height-subtext-3); + font-size: var(--feather-font-size-subtext-3); + line-height: var(--feather-line-height-subtext-3); } .feather-text-jumbo { - font-size: var(--feather-font-size-jumbo); - line-height: var(--feather-line-height-jumbo); + font-size: var(--feather-font-size-jumbo); + line-height: var(--feather-line-height-jumbo); } .feather-text-xlarge { - font-size: var(--feather-font-size-xlarge); - line-height: var(--feather-line-height-xlarge); + font-size: var(--feather-font-size-xlarge); + line-height: var(--feather-line-height-xlarge); } .feather-text-large { - font-size: var(--feather-font-size-large); - line-height: var(--feather-line-height-large); + font-size: var(--feather-font-size-large); + line-height: var(--feather-line-height-large); } .feather-text-normal { - font-size: var(--feather-font-size-normal); - line-height: var(--feather-line-height-normal); + font-size: var(--feather-font-size-normal); + line-height: var(--feather-line-height-normal); } .feather-text-small { - font-size: var(--feather-font-size-small); - line-height: var(--feather-line-height-small); + font-size: var(--feather-font-size-small); + line-height: var(--feather-line-height-small); } .feather-text-small-caps { - font-weight: var(--feather-font-weight-bold); - letter-spacing: 0.025rem; - text-transform: uppercase; - font-size: var(--feather-font-size-small); - line-height: var(--feather-line-height-small); + font-weight: var(--feather-font-weight-bold); + letter-spacing: 0.025rem; + text-transform: uppercase; + font-size: var(--feather-font-size-small); + line-height: var(--feather-line-height-small); } @font-face { - font-family: 'TwitterChirp'; - src: url('https://abs.twimg.com/fonts/v2/chirp-regular-web.woff2') format('woff2'), url('https://abs.twimg.com/fonts/v2/chirp-regular-web.woff') format('woff'); - font-style: normal; - font-weight: 400; + font-family: "TwitterChirp"; + src: url("https://abs.twimg.com/fonts/v2/chirp-regular-web.woff2") + format("woff2"), + url("https://abs.twimg.com/fonts/v2/chirp-regular-web.woff") + format("woff"); + font-style: normal; + font-weight: 400; } @font-face { - font-family: 'TwitterChirp'; - src: url('https://abs.twimg.com/fonts/v2/chirp-medium-web.woff2') format('woff2'), url('https://abs.twimg.com/fonts/v2/chirp-medium-web.woff') format('woff'); - font-style: normal; - font-weight: 500; + font-family: "TwitterChirp"; + src: url("https://abs.twimg.com/fonts/v2/chirp-medium-web.woff2") + format("woff2"), + url("https://abs.twimg.com/fonts/v2/chirp-medium-web.woff") + format("woff"); + font-style: normal; + font-weight: 500; } @font-face { - font-family: 'TwitterChirp'; - src: url('https://abs.twimg.com/fonts/v2/chirp-bold-web.woff2') format('woff2'), url('https://abs.twimg.com/fonts/v2/chirp-bold-web.woff') format('woff'); - font-style: normal; - font-weight: 700; + font-family: "TwitterChirp"; + src: url("https://abs.twimg.com/fonts/v2/chirp-bold-web.woff2") + format("woff2"), + url("https://abs.twimg.com/fonts/v2/chirp-bold-web.woff") format("woff"); + font-style: normal; + font-weight: 700; } @font-face { - font-family: 'TwitterChirp'; - src: url('https://abs.twimg.com/fonts/v2/chirp-heavy-web.woff2') format('woff2'), url('https://abs.twimg.com/fonts/v2/chirp-heavy-web.woff') format('woff'); - font-style: normal; - font-weight: 800; + font-family: "TwitterChirp"; + src: url("https://abs.twimg.com/fonts/v2/chirp-heavy-web.woff2") + format("woff2"), + url("https://abs.twimg.com/fonts/v2/chirp-heavy-web.woff") + format("woff"); + font-style: normal; + font-weight: 800; } /* Feather-specific icons */ .Icon--arrowRight:before { - content: '\f114'; + content: "\f114"; } .Icon--featherAd:before { - content: '\f407'; + content: "\f407"; } .Icon--featherAdCampaign:before { - content: '\f405'; + content: "\f405"; } .Icon--featherAdGroup:before { - content: '\f406'; + content: "\f406"; } .Icon--featherAudience:before { - content: '\f408'; + content: "\f408"; } .Icon--featherCard:before { - content: '\f204'; + content: "\f204"; } .Icon--featherCircleCheck:before { - content: '\f043'; + content: "\f043"; } .Icon--featherCircleCheckFilled:before { - content: '\f220'; + content: "\f220"; } .Icon--featherCircleFail:before { - content: '\f044'; + content: "\f044"; } .Icon--featherCircleFailFilled:before { - content: "\f222"; + content: "\f222"; } .Icon--featherClone:before { - content: '\f214'; + content: "\f214"; } .Icon--featherCode:before { - content: '\f410'; + content: "\f410"; } .Icon--featherCurrency:before { - content: '\f403'; + content: "\f403"; } .Icon--featherDownload:before { - content: '\f186'; + content: "\f186"; } .Icon--featherDraggableGrip:before { - content: '\f206'; + content: "\f206"; } .Icon--featherFail:before { - content: '\f221'; + content: "\f221"; } .Icon--featherFilm:before { - content: '\f211'; + content: "\f211"; } .Icon--featherHistory:before { - content: '\f404'; + content: "\f404"; } .Icon--featherMegaphoneStroke:before { - content: '\f070'; + content: "\f070"; } .Icon--featherPhotoAlbum:before { - content: '\f109'; + content: "\f109"; } .Icon--featherPreview:before { - content: '\f216'; + content: "\f216"; } .Icon--featherReload:before { - content: '\f303'; + content: "\f303"; } .Icon--featherSignal:before { - content: '\f212'; + content: "\f212"; } .Icon--featherWarning:before { - content: '\f182'; + content: "\f182"; } .Icon--featherWebsiteVisit:before { - content: '\f213'; + content: "\f213"; } /* DEPRECATED Feather-specific icons */ /* Colors */ .Icon--featherWarning { - color: var(--tw-color-orange-500); + color: var(--tw-color-orange-500); } .Icon--featherFail { - color: var(--tw-color-red-500); + color: var(--tw-color-red-500); } .Icon.Icon--featherTooltipCue { - position: relative; - width: 0.7rem; - height: 0.7rem; - background-color: var(--tw-color-blue-300); - border-radius: 50%; - vertical-align: middle; + position: relative; + width: 0.7rem; + height: 0.7rem; + background-color: var(--tw-color-blue-300); + border-radius: 50%; + vertical-align: middle; } h1 .Icon.Icon--featherTooltipCue, h2 .Icon.Icon--featherTooltipCue { - vertical-align: super; + vertical-align: super; } .Icon.Icon--featherTooltipCue::before { - position: absolute; - top: 0.35rem; - width: 100%; - color: white; - content: '?'; - font-family: var(--feather-font-family-base); - font-size: 0.5rem; - font-weight: 700; - line-height: 0; + position: absolute; + top: 0.35rem; + width: 100%; + color: white; + content: "?"; + font-family: var(--feather-font-family-base); + font-size: 0.5rem; + font-weight: 700; + line-height: 0; } .Icon.Icon--featherTooltipCue:hover, .Icon.Icon--featherTooltipCue:focus { - background-color: var(--tw-color-blue-500); - cursor: pointer; + background-color: var(--tw-color-blue-500); + cursor: pointer; } .Icon.Icon--loadingSmall { - width: 0.7rem; - height: 0.7rem; - background: url(../images/spinner-rosetta-blue-14x14@2x.gif) 0 0 no-repeat; - background-size: 0.7rem 0.7rem; + width: 0.7rem; + height: 0.7rem; + background: url(../images/spinner-rosetta-blue-14x14@2x.gif) 0 0 no-repeat; + background-size: 0.7rem 0.7rem; } .Icon.Icon--loadingMedium { - width: 1.3rem; - height: 1.3rem; - background: url(../images/spinner-rosetta-blue-26x26@2x.gif) 0 0 no-repeat; - background-size: 1.3rem 1.3rem; + width: 1.3rem; + height: 1.3rem; + background: url(../images/spinner-rosetta-blue-26x26@2x.gif) 0 0 no-repeat; + background-size: 1.3rem 1.3rem; } .Icon.Icon--loadingLarge { - width: 1.6rem; - height: 1.6rem; - background: url(../images/spinner-rosetta-blue-32x32@2x.gif) 0 0 no-repeat; - background-size: 1.6rem 1.6rem; + width: 1.6rem; + height: 1.6rem; + background: url(../images/spinner-rosetta-blue-32x32@2x.gif) 0 0 no-repeat; + background-size: 1.6rem 1.6rem; } /* Font-based icons */ @font-face { - font-family: "edgeicons"; - src: url(../fonts/edge-icons-Regular.eot); - /* IE9 Compat Modes */ - src: url(../fonts/edge-icons-Regular.eot?#iefix) format("embedded-opentype"), /* IE8 */ url(../fonts/edge-icons-Regular.woff) format("woff"), /* Modern Browsers */ url(../fonts/edge-icons-Regular.ttf) format("truetype"); - /* Safari, Android, iOS */ + font-family: "edgeicons"; + src: url(../fonts/edge-icons-Regular.eot); + /* IE9 Compat Modes */ + src: url(../fonts/edge-icons-Regular.eot?#iefix) format("embedded-opentype"), + /* IE8 */ url(../fonts/edge-icons-Regular.woff) format("woff"), + /* Modern Browsers */ url(../fonts/edge-icons-Regular.ttf) + format("truetype"); + /* Safari, Android, iOS */ } /* * Reset styles for any element that may be used to display an icon (including * overrides of legacy CSS). */ .Icon { - background: transparent; - display: inline-block; - font-style: normal; - vertical-align: baseline; - position: relative; + background: transparent; + display: inline-block; + font-style: normal; + vertical-align: baseline; + position: relative; } /** * A pseudo-element is used to display the icon's glyph. If an icon needs to be @@ -1066,556 +1083,556 @@ h2 .Icon.Icon--featherTooltipCue { */ .Icon:after, .Icon:before { - display: block; - font-family: 'edgeicons'; - font-weight: normal; - font-style: normal; - text-align: center; - /* Make sure we get the best rendering for the icons on webkit */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + display: block; + font-family: "edgeicons"; + font-weight: normal; + font-style: normal; + text-align: center; + /* Make sure we get the best rendering for the icons on webkit */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } /** * Icon sizes & spacing */ .Icon--smallest { - font-size: 0.6rem; - line-height: 0.6rem; + font-size: 0.6rem; + line-height: 0.6rem; } .Icon--small { - font-size: 0.8rem; - line-height: 0.75rem; + font-size: 0.8rem; + line-height: 0.75rem; } .Icon--medium { - font-size: 0.9rem; - line-height: 0.9rem; + font-size: 0.9rem; + line-height: 0.9rem; } .Icon--large { - font-size: 1.05rem; - line-height: 1; + font-size: 1.05rem; + line-height: 1; } .Icon--extraLarge { - font-size: 1.6rem; - line-height: 1; + font-size: 1.6rem; + line-height: 1; } /** * Individual icons * Keep this list alphabetized */ .Icon--add:before { - content: "\f183"; + content: "\f183"; } .Icon--addLight:before { - content: "\f198"; + content: "\f198"; } /* Lighter version of the add icon */ .Icon--analytics:before { - content: "\f200"; + content: "\f200"; } .Icon--arrowDown:before { - content: "\f174"; + content: "\f174"; } .Icon--arrowLeft:before { - content: "\f114"; - /*@replace: initial*/ - transform: scaleX(-1); + content: "\f114"; + /*@replace: initial*/ + transform: scaleX(-1); } .Icon--arrowUp:before { - content: "\f188"; + content: "\f188"; } .Icon--atSymbol:before { - content: "\f050"; + content: "\f050"; } .Icon--attachFile:before { - content: "\f088"; + content: "\f088"; } .Icon--audioBadge:before { - content: "\f311"; + content: "\f311"; } .Icon--audioMuted:before { - content: "\f306"; + content: "\f306"; } .Icon--audioUnmuted:before { - content: "\f305"; + content: "\f305"; } .Icon--balloon:before { - content: "\f092"; + content: "\f092"; } .Icon--bird:before { - content: "\f179"; + content: "\f179"; } /* TODO: combine with Icon--logo */ .Icon--bookmark:before { - content: "\f155"; + content: "\f155"; } .Icon--calendar:before { - content: "\f203"; + content: "\f203"; } .Icon--camera:before { - content: "\f027"; + content: "\f027"; } .Icon--cameraPlus:before { - content: "\f111"; + content: "\f111"; } .Icon--cameraVideo:before { - content: "\f030"; + content: "\f030"; } .Icon--cards:before { - content: "\f402"; + content: "\f402"; } .Icon--caretDown:before { - content: "\f181"; + content: "\f181"; } .Icon--caretLeft:before { - /*@replace: "\f173"*/ - content: "\f172"; + /*@replace: "\f173"*/ + content: "\f172"; } .Icon--caretLeftLight:before { - content: "\f193"; + content: "\f193"; } .Icon--caretRight:before { - /*@replace: "\f172"*/ - content: "\f173"; + /*@replace: "\f172"*/ + content: "\f173"; } .Icon--caretRightLight:before { - content: "\f194"; + content: "\f194"; } .Icon--caretUp:before { - content: "\f181"; - transform: scaleY(-1); + content: "\f181"; + transform: scaleY(-1); } .Icon--cart:before { - content: "\f095"; + content: "\f095"; } .Icon--check:before { - content: "\f170"; + content: "\f170"; } .Icon--checkLight:before { - content: "\f197"; + content: "\f197"; } /* Lighter version of the check icon */ .Icon--chevronDown:before { - content: "\f202"; + content: "\f202"; } .Icon--chevronUp:before { - content: "\f201"; + content: "\f201"; } .Icon--circleActiveAnalytics:before { - content: "\f516"; + content: "\f516"; } .Icon--circleActiveBird:before { - content: "\f520"; + content: "\f520"; } .Icon--circleActiveDm:before { - content: "\f517"; + content: "\f517"; } .Icon--circleActiveHeart:before { - content: "\f514"; + content: "\f514"; } .Icon--circleActiveList:before { - content: "\f518"; + content: "\f518"; } .Icon--circleActiveMe:before { - content: "\f519"; + content: "\f519"; } .Icon--circleActiveMore:before { - content: "\f515"; + content: "\f515"; } .Icon--circleActiveRetweet:before { - content: "\f512"; + content: "\f512"; } .Icon--circleActiveStar:before { - content: "\f513"; + content: "\f513"; } .Icon--circleError:before { - content: "\f042"; + content: "\f042"; } .Icon--circleMe:before { - content: "\f519"; + content: "\f519"; } .Icon--circleReply:before { - content: "\f511"; + content: "\f511"; } .Icon--clock:before { - content: "\f177"; + content: "\f177"; } .Icon--close:before { - content: "\f045"; + content: "\f045"; } .Icon--cog:before { - content: "\f059"; + content: "\f059"; } .Icon--cogWithCaret:before { - content: "\f124"; + content: "\f124"; } .Icon--collapseTweets:before { - content: "\f051"; + content: "\f051"; } .Icon--collections:before { - content: "\f008"; + content: "\f008"; } .Icon--conversation:before { - content: "\f157"; + content: "\f157"; } .Icon--cover:before { - content: "\f163"; + content: "\f163"; } .Icon--createMoment:before { - content: "\f162"; + content: "\f162"; } .Icon--creditCard:before { - content: "\f401"; + content: "\f401"; } .Icon--crescent:before { - content: "\f066"; + content: "\f066"; } .Icon--crescentFilled:before { - content: "\f567"; + content: "\f567"; } .Icon--crop:before { - content: "\f190"; + content: "\f190"; } .Icon--cvv:before { - content: "\f402"; + content: "\f402"; } .Icon--delete:before { - content: "\f154"; + content: "\f154"; } .Icon--deskBell:before { - content: "\f090"; + content: "\f090"; } .Icon--desktop:before { - content: "\f087"; + content: "\f087"; } .Icon--device:before { - content: "\f085"; + content: "\f085"; } .Icon--discover:before { - content: "\f052"; + content: "\f052"; } /* TODO: rename to Icon--hashtag */ .Icon--dm:before { - content: "\f054"; + content: "\f054"; } .Icon--dmCompose:before { - content: "\f035"; + content: "\f035"; } .Icon--dots:before { - content: "\f150"; + content: "\f150"; } .Icon--dotsVertical:before { - content: "\f149"; + content: "\f149"; } .Icon--download:before { - content: "\f186"; + content: "\f186"; } .Icon--editPencil:before { - content: "\f112"; + content: "\f112"; } .Icon--envelope:before { - content: "\f187"; + content: "\f187"; } .Icon--fail:before { - content: "\f000"; + content: "\f000"; } /* TODO: DESIGN-993 – create a dedicated fail icon */ .Icon--filter:before { - content: "\f138"; + content: "\f138"; } .Icon--follow:before { - content: "\f175"; + content: "\f175"; } .Icon--follower:before { - content: "\f002"; + content: "\f002"; } /* TODO: rename to Icon--followBadge */ .Icon--following:before { - content: "\f176"; + content: "\f176"; } .Icon--geo:before { - content: "\f031"; + content: "\f031"; } .Icon--geoBadge:before { - content: "\f010"; + content: "\f010"; } .Icon--gif:before { - content: "\f028"; + content: "\f028"; } .Icon--gifBadge:before { - content: "\f309"; + content: "\f309"; } .Icon--grid:before { - content: "\f046"; + content: "\f046"; } .Icon--handset:before { - content: "\f091"; + content: "\f091"; } .Icon--heart:before { - content: "\f148"; + content: "\f148"; } .Icon--heartBadge:before { - content: "\f015"; + content: "\f015"; } .Icon--home:before { - content: "\f053"; + content: "\f053"; } .Icon--homeFilled:before { - content: "\f553"; + content: "\f553"; } .Icon--horizontalBarChart:before { - content: "\f048"; + content: "\f048"; } .Icon--info:before { - content: "\f209"; + content: "\f209"; } .Icon--infoFilled:before { - content: "\f217"; + content: "\f217"; } .Icon--imageCrop:before { - content: "\f158"; + content: "\f158"; } .Icon--laptop:before { - content: "\f084"; + content: "\f084"; } .Icon--lifeline:before { - content: "\f026"; + content: "\f026"; } .Icon--lifelineBadge:before { - content: "\f000"; + content: "\f000"; } .Icon--lightBulbOn:before { - content: "\f066"; + content: "\f066"; } .Icon--lightBulbOff:before { - content: "\f567"; + content: "\f567"; } .Icon--lightning:before { - content: "\f160"; + content: "\f160"; } .Icon--lightningBadge:before { - content: "\f161"; + content: "\f161"; } .Icon--lightningFilled:before { - content: "\f017"; + content: "\f017"; } .Icon--list:before { - content: "\f094"; + content: "\f094"; } .Icon--listBadge:before { - content: "\f012"; + content: "\f012"; } .Icon--logo:before { - content: "\f179"; + content: "\f179"; } /* TODO: combine with Icon--bird */ .Icon--magicrecs:before { - content: "\f014"; + content: "\f014"; } .Icon--markAllRead:before { - content: "\f036"; + content: "\f036"; } .Icon--me:before { - content: "\f056"; + content: "\f056"; } /* TODO: rename to Icon--profile */ .Icon--meFilled:before { - content: "\f002"; + content: "\f002"; } /* TODO: rename to Icon--profileFilled */ .Icon--media:before { - content: "\f109"; + content: "\f109"; } .Icon--mediaCollapse:before { - content: "\f335"; + content: "\f335"; } .Icon--mediaDocking:before { - content: "\f336"; + content: "\f336"; } .Icon--mediaExpand:before { - content: "\f334"; + content: "\f334"; } .Icon--menu:before { - content: "\f093"; + content: "\f093"; } .Icon--message:before { - content: "\f054"; + content: "\f054"; } /* TODO: combine with Icon--dm */ .Icon--moderator:before { - content: "\f089"; + content: "\f089"; } .Icon--muted:before { - content: "\f101"; + content: "\f101"; } .Icon--newsBadge:before { - content: "\f009"; + content: "\f009"; } .Icon--notifications:before { - content: "\f055"; + content: "\f055"; } .Icon--notificationsFilled:before { - content: "\f019"; + content: "\f019"; } .Icon--notificationsDisabled:before { - content: "\f037"; + content: "\f037"; } .Icon--paintbrush:before { - content: "\f159"; + content: "\f159"; } .Icon--pause:before { - content: "\f302"; + content: "\f302"; } .Icon--periscopeBadge:before { - content: "\f320"; + content: "\f320"; } .Icon--person:before { - content: "\f056"; + content: "\f056"; } .Icon--people:before { - content: "\f178"; + content: "\f178"; } .Icon--pinned:before { - content: "\f003"; + content: "\f003"; } .Icon--play:before { - content: "\f301"; + content: "\f301"; } .Icon--poll:before { - content: "\f034"; + content: "\f034"; } .Icon--pollBar:before { - content: "\f199"; + content: "\f199"; } .Icon--promoted:before { - content: "\f004"; + content: "\f004"; } .Icon--promotedStroked:before { - content: "\f504"; + content: "\f504"; } .Icon--promotedTrend:before { - content: "\f011"; + content: "\f011"; } .Icon--promoteMode:before { - content: "\f409"; + content: "\f409"; } .Icon--protected:before { - content: "\f096"; + content: "\f096"; } .Icon--refresh:before { - content: "\f189"; + content: "\f189"; } .Icon--reply:before { - content: "\f151"; + content: "\f151"; } .Icon--report:before { - content: "\e609"; + content: "\e609"; } .Icon--retweet:before { - content: "\f152"; + content: "\f152"; } .Icon--retweeted:before { - content: "\f006"; + content: "\f006"; } /* TODO: rename to Icon--retweetBadge */ .Icon--search:before { - content: "\f058"; + content: "\f058"; } .Icon--share:before { - content: "\f185"; + content: "\f185"; } .Icon--smileRating1:before { - content: "\f430"; + content: "\f430"; } .Icon--smileRating1Fill:before { - content: "\f431"; + content: "\f431"; } .Icon--smileRating2:before { - content: "\f432"; + content: "\f432"; } .Icon--smileRating2Fill:before { - content: "\f433"; + content: "\f433"; } .Icon--smileRating3:before { - content: "\f434"; + content: "\f434"; } .Icon--smileRating3Fill:before { - content: "\f435"; + content: "\f435"; } .Icon--smileRating4:before { - content: "\f436"; + content: "\f436"; } .Icon--smileRating4Fill:before { - content: "\f437"; + content: "\f437"; } .Icon--smileRating5:before { - content: "\f438"; + content: "\f438"; } .Icon--smileRating5Fill:before { - content: "\f439"; + content: "\f439"; } .Icon--smiley:before { - content: "\f033"; + content: "\f033"; } .Icon--snapReelBadge:before { - content: "\f312"; + content: "\f312"; } .Icon--soundOff:before { - content: "\f306"; + content: "\f306"; } .Icon--soundOn:before { - content: "\f305"; + content: "\f305"; } .Icon--stickerBadge:before { - content: "\f047"; + content: "\f047"; } .Icon--summary:before { - content: "\f156"; + content: "\f156"; } .Icon--tablet:before { - content: "\f086"; + content: "\f086"; } .Icon--top:before { - content: "\f007"; + content: "\f007"; } .Icon--translator:before { - content: "\f089"; + content: "\f089"; } .Icon--truck:before { - content: "\f400"; + content: "\f400"; } .Icon--tweet:before { - content: "\f029"; + content: "\f029"; } /* TODO: rename to Icon--compose */ .Icon--unfollow:before { - content: "\f097"; + content: "\f097"; } .Icon--unmuted:before { - content: "\f101"; + content: "\f101"; } .Icon--url:before { - content: "\f098"; + content: "\f098"; } .Icon--vineBadge:before { - content: "\f310"; + content: "\f310"; } .Icon--visibilityFollowers:before { - content: "\f103"; + content: "\f103"; } .Icon--visibilityFollowing:before { - content: "\f105"; + content: "\f105"; } .Icon--visibilityMutual:before { - content: "\f104"; + content: "\f104"; } .Icon--visibilityOnlyMe:before { - content: "\f106"; + content: "\f106"; } .Icon--visibilityPublic:before { - content: "\f102"; + content: "\f102"; } .Icon--warning:before { - content: "\f182"; + content: "\f182"; } /** * Design token icons @@ -1625,88 +1642,88 @@ h2 .Icon.Icon--featherTooltipCue { * latest Twitter-wide icons. */ .Icon--app:before { - content: "\f413"; + content: "\f413"; } .Icon--areaChart:before { - content: "\f422"; + content: "\f422"; } .Icon--cloud:before { - content: "\f442"; + content: "\f442"; } .Icon--codeBlock:before { - content: "\f411"; + content: "\f411"; } .Icon--cube:before { - content: "\f450"; + content: "\f450"; } .Icon--database:before { - content: "\f412"; + content: "\f412"; } .Icon--dataCenter:before { - content: "\f414"; + content: "\f414"; } .Icon--directedAcyclicGraph:before { - content: "\f419"; + content: "\f419"; } .Icon--eyeOff:before { - content: "\f456"; + content: "\f456"; } .Icon--flowChart:before { - content: "\f418"; + content: "\f418"; } .Icon--folderClosed:before { - content: "\f444"; + content: "\f444"; } .Icon--folderOpen:before { - content: "\f445"; + content: "\f445"; } .Icon--heatMap:before { - content: "\f420"; + content: "\f420"; } .Icon--helpCircle:before { - content: "\f039"; + content: "\f039"; } .Icon--helpCircleFilled:before { - content: "\f208"; + content: "\f208"; } .Icon--histogram:before { - content: "\f417"; + content: "\f417"; } .Icon--lineChart:before { - content: "\f423"; + content: "\f423"; } .Icon--network:before { - content: "\f443"; + content: "\f443"; } .Icon--pyramid:before { - content: "\f451"; + content: "\f451"; } .Icon--replyOff:before { - content: "\f457"; + content: "\f457"; } .Icon--sankeyChart:before { - content: "\f415"; + content: "\f415"; } .Icon--scatterPlot:before { - content: "\f416"; + content: "\f416"; } .Icon--stackedAreaChart:before { - content: "\f424"; + content: "\f424"; } .Icon--stackedLineChart:before { - content: "\f425"; + content: "\f425"; } .Icon--tetrahedron:before { - content: "\f452"; + content: "\f452"; } .Icon--thumbsDown:before { - content: "\f441"; + content: "\f441"; } .Icon--thumbsUp:before { - content: "\f440"; + content: "\f440"; } .Icon--treeHierarchy:before { - content: "\f421"; + content: "\f421"; } /** * Stacked verified icon @@ -1717,17 +1734,17 @@ h2 .Icon.Icon--featherTooltipCue { * verified icon to be what gives the element width and height, not the fill. */ .Icon--verified:before { - content: "\f032"; - font-size: 0.6em; - left: 20%; - line-height: 1; - position: absolute; - top: 25%; + content: "\f032"; + font-size: 0.6em; + left: 20%; + line-height: 1; + position: absolute; + top: 25%; } .Icon--verified:after { - content: "\f099"; - line-height: 1; - position: relative; + content: "\f099"; + line-height: 1; + position: relative; } /** * Stacked play icon @@ -1738,106 +1755,106 @@ h2 .Icon.Icon--featherTooltipCue { * be what gives the element width and height. */ .Icon--playButton:before { - content: "\f032"; - line-height: 1; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - opacity: 0.8; + content: "\f032"; + line-height: 1; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + opacity: 0.8; } .Icon--playButton:after { - content: "\f040"; - line-height: 1; - position: relative; + content: "\f040"; + line-height: 1; + position: relative; } /** * 1. The protected glyph is a bit small relative to the verified glyph. Resize * so that they take up the same visual space when placed next to each other. */ .Icon--protected { - font-size: 1.1em; - /* 1 */ - padding-left: 1px; - /* 1 */ + font-size: 1.1em; + /* 1 */ + padding-left: 1px; + /* 1 */ } /* Colors */ .Icon--fail { - color: var(--tw-color-red-500); + color: var(--tw-color-red-500); } .Icon--follower, .Icon--magicrecs, .Icon--colorLightning, .Icon--colorFollower { - color: var(--tw-color-blue-primary); + color: var(--tw-color-blue-primary); } .Icon--lifelineBadge { - color: var(--tw-color-orange-600); + color: var(--tw-color-orange-600); } .Icon--listBadge:before { - color: var(--tw-color-gray-700); + color: var(--tw-color-gray-700); } .Icon--muted { - color: var(--tw-color-red-500); + color: var(--tw-color-red-500); } .Icon--promoted { - color: var(--tw-color-gray-700); + color: var(--tw-color-gray-700); } .Icon--promotedTrend { - color: var(--tw-color-yellow-500); + color: var(--tw-color-yellow-500); } .Icon--protected { - color: var(--tw-color-text-primary); + color: var(--tw-color-text-primary); } .Icon--retweeted, .Icon--colorRetweeted { - color: var(--tw-color-green-500); + color: var(--tw-color-green-500); } .Icon--smiley { - color: var(--tw-color-gray-300); + color: var(--tw-color-gray-300); } .Icon--top { - color: var(--tw-color-blue-primary); + color: var(--tw-color-blue-primary); } .Icon--translator { - color: var(--tw-color-blue-primary); + color: var(--tw-color-blue-primary); } .Icon--moderator { - color: var(--tw-color-yellow-500); + color: var(--tw-color-yellow-500); } .Icon--unmuted { - color: var(--tw-color-gray-200); + color: var(--tw-color-gray-200); } .Icon--verified { - color: var(--tw-color-blue-primary); + color: var(--tw-color-blue-primary); } .Icon--verified:before { - color: white; + color: white; } .Icon--circleActiveMe, .Icon--circleActiveBird { - color: var(--tw-color-blue-primary); + color: var(--tw-color-blue-primary); } .Icon--colorHeart, .Icon--circleActiveHeart, .Icon--heartBadge { - color: var(--tw-color-red-500); + color: var(--tw-color-red-500); } .Icon--circleActiveRetweet { - color: var(--tw-color-green-500); + color: var(--tw-color-green-500); } .Icon--circleActiveList { - color: var(--tw-color-gray-700); + color: var(--tw-color-gray-700); } .Icon--playButton { - color: var(--tw-color-blue-primary); + color: var(--tw-color-blue-primary); } .Icon--playButton:after { - color: white; + color: white; } .Icon--white { - color: white; + color: white; } /** * Inverted Color Scheme @@ -1845,77 +1862,77 @@ h2 .Icon.Icon--featherTooltipCue { * Icon colors for placement on dark backgrounds */ .Icon--inverted.Icon--verified { - color: white; + color: white; } .Icon--inverted.Icon--verified:before { - color: var(--tw-color-text-primary); + color: var(--tw-color-text-primary); } :root { - --feather-font-size-jumbo: var(--feather-font-size-title-3); - --feather-font-size-large: var(--feather-font-size-headline-1); - --feather-font-size-normal: var(--feather-font-size-body); - --feather-font-size-small: var(--feather-font-size-subtext-2); - --feather-font-size-xlarge: var(--feather-font-size-title-4); - --feather-line-height-jumbo: var(--feather-line-height-title-3); - --feather-line-height-large: var(--feather-line-height-headline-1); - --feather-line-height-normal: var(--feather-line-height-body); - --feather-line-height-small: var(--feather-line-height-subtext-2); - --feather-line-height-xlarge: var(--feather-line-height-title-4); + --feather-font-size-jumbo: var(--feather-font-size-title-3); + --feather-font-size-large: var(--feather-font-size-headline-1); + --feather-font-size-normal: var(--feather-font-size-body); + --feather-font-size-small: var(--feather-font-size-subtext-2); + --feather-font-size-xlarge: var(--feather-font-size-title-4); + --feather-line-height-jumbo: var(--feather-line-height-title-3); + --feather-line-height-large: var(--feather-line-height-headline-1); + --feather-line-height-normal: var(--feather-line-height-body); + --feather-line-height-small: var(--feather-line-height-subtext-2); + --feather-line-height-xlarge: var(--feather-line-height-title-4); } /* Body text */ html { - font-size: 20px; + font-size: 20px; } body { - color: var(--tw-color-text-primary); - font-family: var(--feather-font-family-base); - font-size: var(--feather-font-size-body); - line-height: var(--feather-line-height-body); + color: var(--tw-color-text-primary); + font-family: var(--feather-font-family-base); + font-size: var(--feather-font-size-body); + line-height: var(--feather-line-height-body); } a { - color: var(--tw-color-text-link); - text-decoration: none; + color: var(--tw-color-text-link); + text-decoration: none; } a:hover, a:focus { - color: var(--tw-color-text-link); - text-decoration: underline; + color: var(--tw-color-text-link); + text-decoration: underline; } p { - margin: 0 0 var(--feather-space-8); + margin: 0 0 var(--feather-space-8); } ol, ul { - margin: var(--feather-space-8) 0; - padding-left: var(--feather-space-24); + margin: var(--feather-space-8) 0; + padding-left: var(--feather-space-24); } ol { - list-style: decimal; + list-style: decimal; } ol ol { - list-style: lower-alpha; + list-style: lower-alpha; } ol ol ol { - list-style: lower-roman; + list-style: lower-roman; } ul { - list-style: disc; + list-style: disc; } ul ul { - list-style: circle; + list-style: circle; } ul ul ul { - list-style: square; + list-style: square; } code, kbd, pre, samp { - font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; } button { - font-family: var(--feather-font-family-base); - line-height: inherit; + font-family: var(--feather-font-family-base); + line-height: inherit; } /* Headings */ h1, @@ -1924,35 +1941,35 @@ h3, h4, h5, h6 { - font-family: var(--feather-font-family-base); + font-family: var(--feather-font-family-base); } h1 { - font-weight: var(--feather-font-weight-bold); - font-size: var(--feather-font-size-title-3); - line-height: var(--feather-line-height-title-3); + font-weight: var(--feather-font-weight-bold); + font-size: var(--feather-font-size-title-3); + line-height: var(--feather-line-height-title-3); } h2 { - font-weight: var(--feather-font-weight-bold); - font-size: var(--feather-font-size-title-4); - line-height: var(--feather-line-height-title-4); + font-weight: var(--feather-font-weight-bold); + font-size: var(--feather-font-size-title-4); + line-height: var(--feather-line-height-title-4); } h3 { - font-weight: var(--feather-font-weight-bold); - font-size: var(--feather-font-size-headline-1); - line-height: var(--feather-line-height-headline-1); + font-weight: var(--feather-font-weight-bold); + font-size: var(--feather-font-size-headline-1); + line-height: var(--feather-line-height-headline-1); } h4, h5, h6 { - font-size: var(--feather-font-size-body); - line-height: var(--feather-line-height-body); - font-weight: 700; + font-size: var(--feather-font-size-body); + line-height: var(--feather-line-height-body); + font-weight: 700; } /* Icons */ .Icon::after, .Icon::before { - -moz-osx-font-smoothing: auto; - -webkit-font-smoothing: subpixel-antialiased; + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: subpixel-antialiased; } .Icon.Icon--medium::after, .Icon.Icon--large::after, @@ -1960,12 +1977,11 @@ h6 { .Icon.Icon--medium::before, .Icon.Icon--large::before, .Icon.Icon--extraLarge::before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; } .Icon.Icon--verified::after, .Icon.Icon--verified::before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; } - diff --git a/assets/css/_feather-custom.scss b/assets/css/_feather-custom.scss index 23f18eebf..36f2aee4c 100644 --- a/assets/css/_feather-custom.scss +++ b/assets/css/_feather-custom.scss @@ -1,16 +1,20 @@ @media (prefers-color-scheme: dark) { - // very basic support for dark mode until Feather supports this natively - :root { - --tw-color-text-primary: var(--tw-color-gray-0); - } - .Button { - --feather-button-background-color: var(--tw-color-gray-1100); - --feather-button-background-color-hover: var(--tw-color-gray-900); - --feather-button-border-color: var(--tw-color-gray-700); + // very basic support for dark mode until Feather supports this natively + :root { + --tw-color-text-primary: var(--tw-color-gray-0); + } + .Button { + --feather-button-background-color: var(--tw-color-gray-1100); + --feather-button-background-color-hover: var(--tw-color-gray-900); + --feather-button-border-color: var(--tw-color-gray-700); - --feather-button-primary-background-color-active: var(--tw-color-gray-200); - --feather-button-primary-background-color: var(--tw-color-gray-0); - --feather-button-primary-background-color-hover: var(--tw-color-gray-100); - --feather-button-primary-color: var(--tw-color-gray-1100); - } + --feather-button-primary-background-color-active: var( + --tw-color-gray-200 + ); + --feather-button-primary-background-color: var(--tw-color-gray-0); + --feather-button-primary-background-color-hover: var( + --tw-color-gray-100 + ); + --feather-button-primary-color: var(--tw-color-gray-1100); + } } diff --git a/assets/css/_main.scss b/assets/css/_main.scss index f6e39d578..4a21ca122 100644 --- a/assets/css/_main.scss +++ b/assets/css/_main.scss @@ -1,336 +1,359 @@ /* Custom sizes */ :root { - --font-size-xxjumbo: 3.2rem; - --line-height-xxjumbo: 3.6rem; - --font-size-xjumbo: 2.2rem; - --line-height-xjumbo: 2.5rem; - --font-size-mini-jumbo: 1.6rem; - --line-height-mini-jumbo: 1.8rem; + --font-size-xxjumbo: 3.2rem; + --line-height-xxjumbo: 3.6rem; + --font-size-xjumbo: 2.2rem; + --line-height-xjumbo: 2.5rem; + --font-size-mini-jumbo: 1.6rem; + --line-height-mini-jumbo: 1.8rem; } /* Animations */ @keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } + from { + opacity: 0; + } + to { + opacity: 1; + } } /* Firefox < 16 */ @-moz-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } + from { + opacity: 0; + } + to { + opacity: 1; + } } /* Safari, Chrome and Opera > 12.1 */ @-webkit-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } + from { + opacity: 0; + } + to { + opacity: 1; + } } /* Internet Explorer */ @-ms-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } + from { + opacity: 0; + } + to { + opacity: 1; + } } /* Opera < 12.1 */ @-o-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } + from { + opacity: 0; + } + to { + opacity: 1; + } } html { - scroll-padding-top: 2.5rem; + scroll-padding-top: 2.5rem; } /* Containers */ body { - background-color: white; - display: flex; - min-height: 100vh; - flex-direction: column; + background-color: white; + display: flex; + min-height: 100vh; + flex-direction: column; - @media (prefers-color-scheme: dark) { - background-color: var(--tw-color-gray-1100); - color: var(--tw-color-gray-faint); - } + @media (prefers-color-scheme: dark) { + background-color: var(--tw-color-gray-1100); + color: var(--tw-color-gray-faint); + } } main { - flex: 1; + flex: 1; } .content { - padding: var(--feather-grid-mega) 0; + padding: var(--feather-grid-mega) 0; } .section { - padding: calc(var(--feather-grid-mega) * 2) 0; + padding: calc(var(--feather-grid-mega) * 2) 0; } .container { - max-width: var(--feather-grid-page-width); - margin: 0 auto; + max-width: var(--feather-grid-page-width); + margin: 0 auto; } - // common styles across nav, header, and footer -nav, .header, .footer { - background-color: var(--tw-color-blue-primary); - color: white; +nav, +.header, +.footer { + background-color: var(--tw-color-blue-primary); + color: white; - @media (prefers-color-scheme: dark) { - background-color: black; - } + @media (prefers-color-scheme: dark) { + background-color: black; + } - a:not(.Button) { - color: white; - text-decoration: none; + a:not(.Button) { + color: white; + text-decoration: none; - &:hover, &:active { - text-decoration: none; - color: var(--tw-color-blue-faded); + &:hover, + &:active { + text-decoration: none; + color: var(--tw-color-blue-faded); - @media (prefers-color-scheme: dark) { - color: var(--tw-color-gray-light); - } + @media (prefers-color-scheme: dark) { + color: var(--tw-color-gray-light); + } + } } - } } // Navigation nav { - padding: var(--feather-grid-xsmall) var(--feather-grid-mega); - width: 100%; - position: fixed; - z-index: 2; - display: flex; - justify-content: space-between; - flex-wrap: wrap; + padding: var(--feather-grid-xsmall) var(--feather-grid-mega); + width: 100%; + position: fixed; + z-index: 2; + display: flex; + justify-content: space-between; + flex-wrap: wrap; } -.nav-title { - flex-shrink: 0; +.nav-title { + flex-shrink: 0; - img { - height: 1.3em; - width: 1.3em; - vertical-align: bottom; - margin-right: var(--feather-grid-xxsmall); - } + img { + height: 1.3em; + width: 1.3em; + vertical-align: bottom; + margin-right: var(--feather-grid-xxsmall); + } } .home-link { - font-weight: var(--feather-font-weight-bold); + font-weight: var(--feather-font-weight-bold); } #nav-menu { - margin: 0; - padding: 0; - li { - display: inline-block; - margin-left: var(--feather-grid-small); - } + margin: 0; + padding: 0; + li { + display: inline-block; + margin-left: var(--feather-grid-small); + } } #menu-toggle { - display: none; + display: none; } // Navigation - mobile @media (max-width: 650px) { - #nav-menu { - margin-top: var(--feather-grid-xxsmall); - } - html:not(.no-js) { - #menu-toggle { - display: block; + #nav-menu { + margin-top: var(--feather-grid-xxsmall); } + html:not(.no-js) { + #menu-toggle { + display: block; + } - #nav-menu { - display: none; - height: 100vh; - width: 100%; - margin: 0; - margin-top: calc(var(--feather-grid-mega) * 2); - animation: fadein 1.5s; - - li { - display: block; - font-weight: var(--feather-font-weight-bold); - font-size: var(--feather-font-size-jumbo); - line-height: var(--feather-line-height-jumbo); - padding: var(--feather-grid-medium) 0; - margin: 0; - &:not(:last-child) { - border-bottom: 1px solid var(--tw-color-blue-faded); + #nav-menu { + display: none; + height: 100vh; + width: 100%; + margin: 0; + margin-top: calc(var(--feather-grid-mega) * 2); + animation: fadein 1.5s; + + li { + display: block; + font-weight: var(--feather-font-weight-bold); + font-size: var(--feather-font-size-jumbo); + line-height: var(--feather-line-height-jumbo); + padding: var(--feather-grid-medium) 0; + margin: 0; + &:not(:last-child) { + border-bottom: 1px solid var(--tw-color-blue-faded); + } + } } - } - } - #nav-menu.active { - display: block; + #nav-menu.active { + display: block; + } } - } } - /* Headers */ -.header, .footer { - padding: var(--feather-grid-mega) 0; +.header, +.footer { + padding: var(--feather-grid-mega) 0; } .header { - padding-top: calc(var(--feather-grid-mega) * 3); + padding-top: calc(var(--feather-grid-mega) * 3); } .large-title { - font-size: var(--font-size-xxjumbo); - line-height: var(--line-height-xxjumbo); + font-size: var(--font-size-xxjumbo); + line-height: var(--line-height-xxjumbo); } .subtitle { - margin: var(--feather-grid-large) 0; + margin: var(--feather-grid-large) 0; } /* Footer */ @media (min-width: 800px) { - .footer .container { - display: flex; - flex-wrap: wrap; - } + .footer .container { + display: flex; + flex-wrap: wrap; + } - .footer .footer-cell { - flex: 1 1 25%; - } + .footer .footer-cell { + flex: 1 1 25%; + } } a.foot-link { - display: block; - line-height: var(--feather-line-height-xlarge); + display: block; + line-height: var(--feather-line-height-xlarge); } .footer-margin { - margin-bottom: calc(var(--feather-grid-mega) * 1.25); + margin-bottom: calc(var(--feather-grid-mega) * 1.25); } /* Margins */ .center-margin { - margin-left: auto; - margin-right: auto; + margin-left: auto; + margin-right: auto; } .same-mega-margin { - margin-bottom: var(--feather-grid-mega); + margin-bottom: var(--feather-grid-mega); } .mega-margin { - margin-bottom: var(--feather-grid-mega); + margin-bottom: var(--feather-grid-mega); } .large-margin { - margin-bottom: var(--feather-grid-large); + margin-bottom: var(--feather-grid-large); } .medium-margin { - margin-bottom: var(--feather-grid-medium); + margin-bottom: var(--feather-grid-medium); } .small-margin { - margin-bottom: var(--feather-grid-small); + margin-bottom: var(--feather-grid-small); } .xsmall-margin { - margin-bottom: var(--feather-grid-xsmall); + margin-bottom: var(--feather-grid-xsmall); } /* Text */ body { - font-size: 0.8rem; // 16px - line-height: 1.5; // 24px + font-size: 0.8rem; // 16px + line-height: 1.5; // 24px } h2 { - margin: 1.5em 0 0.5em; + margin: 1.5em 0 0.5em; } .center-text { - text-align: center; + text-align: center; } .small-title { - font-size: var(--font-size-xjumbo); - line-height: var(--line-height-xjumbo); + font-size: var(--font-size-xjumbo); + line-height: var(--line-height-xjumbo); } br { - line-height: var(--feather-line-height-xlarge); + line-height: var(--feather-line-height-xlarge); } pre { - font-size: 0.8em; - padding: 3px; + font-size: 0.8em; + padding: 3px; } .hide { - display: none; + display: none; } /* Media queries */ /* Less than --feather-grid-page-width + (--feather-grid-mega * 2) */ @media (max-width: 1236px) { - .container { - margin: 0 var(--feather-grid-mega); - } + .container { + margin: 0 var(--feather-grid-mega); + } - .large-title { - font-size: var(--font-size-xjumbo); - line-height: var(--line-height-xjumbo); - } + .large-title { + font-size: var(--font-size-xjumbo); + line-height: var(--line-height-xjumbo); + } - .small-title { - font-size: var(--font-size-mini-jumbo); - line-height: var(--line-height-mini-jumbo); - } + .small-title { + font-size: var(--font-size-mini-jumbo); + line-height: var(--line-height-mini-jumbo); + } - .mega-margin { - margin-bottom: var(--feather-grid-large); - } + .mega-margin { + margin-bottom: var(--feather-grid-large); + } - .large-margin { - margin-bottom: var(--feather-grid-medium); - } + .large-margin { + margin-bottom: var(--feather-grid-medium); + } - .medium-margin { - margin-bottom: var(--feather-grid-small); - } + .medium-margin { + margin-bottom: var(--feather-grid-small); + } } @media (max-width: 800px) { - .footer-margin { - margin-bottom: var(--feather-grid-mega); - } + .footer-margin { + margin-bottom: var(--feather-grid-mega); + } } /* Less than 600px */ @media (max-width: 600px) { - .section { - padding: calc(var(--feather-grid-mega) * 1.5) 0; - } + .section { + padding: calc(var(--feather-grid-mega) * 1.5) 0; + } - .container { - margin: 0 var(--feather-grid-medium); - } + .container { + margin: 0 var(--feather-grid-medium); + } } @media (max-width: 480px) { - .content, .section { - padding: var(--feather-grid-large) 0; - } + .content, + .section { + padding: var(--feather-grid-large) 0; + } } diff --git a/assets/css/index.scss b/assets/css/index.scss index 97902472c..4ce57d20b 100644 --- a/assets/css/index.scss +++ b/assets/css/index.scss @@ -1,130 +1,133 @@ /* Styles specific to home page */ .content { - padding: 0; + padding: 0; } .grey { - background-color: var(--tw-color-gray-faint); + background-color: var(--tw-color-gray-faint); - @media (prefers-color-scheme: dark) { - background-color: var(--tw-color-gray-1100); - color: white; - } + @media (prefers-color-scheme: dark) { + background-color: var(--tw-color-gray-1100); + color: white; + } } .small-container { - max-width: calc(var(--feather-grid-page-width) - var(--feather-grid-mega) * 4); - margin: 0 auto; + max-width: calc( + var(--feather-grid-page-width) - var(--feather-grid-mega) * 4 + ); + margin: 0 auto; } -.twitter-timeline, .timeline-cell { - height: 500px; +.twitter-timeline, +.timeline-cell { + height: 500px; } - @media (min-width: 600px) { - #follow-us .container { - display: flex; - flex-direction: row-reverse; - > div { - flex: 1 1 50%; + #follow-us .container { + display: flex; + flex-direction: row-reverse; + > div { + flex: 1 1 50%; + } + } + #open-source-text { + display: flex; + flex-direction: column; + justify-content: center; } - } - #open-source-text { - display: flex; - flex-direction: column; - justify-content: center; - } } .open-source-title a { - text-decoration: none; - &:link, &:visited { - color: inherit; - } - &:hover, &:active { - color: var(--tw-color-text-link); - } + text-decoration: none; + &:link, + &:visited { + color: inherit; + } + &:hover, + &:active { + color: var(--tw-color-text-link); + } } - /* Center text vertically */ #career-text { - text-align: center; + text-align: center; } @media (min-width: 600px) { - #career .container { - display: flex; - > div { - flex: 1 1 50%; + #career .container { + display: flex; + > div { + flex: 1 1 50%; + } + } + #career-text { + text-align: left; + margin-top: 100px; } - } - #career-text { - text-align: left; - margin-top: 100px; - } } /* Our Philosophy - images */ #emoji-cards { - display: flex; - flex-direction: column; - margin: auto; + display: flex; + flex-direction: column; + margin: auto; } .emoji-card { - padding: var(--feather-grid-large) var(--feather-grid-mega); - max-width: 600px; - margin: 0 auto; - flex: 1 1 33%; + padding: var(--feather-grid-large) var(--feather-grid-mega); + max-width: 600px; + margin: 0 auto; + flex: 1 1 33%; } @media (min-width: 900px) { - #emoji-cards { - flex-direction: row; - } + #emoji-cards { + flex-direction: row; + } } img.emoji-img { - display: block; - width: 175px; - height: 175px; + display: block; + width: 175px; + height: 175px; } /* Home page media queries */ /* Less than --feather-grid-page-width + (--feather-grid-mega * 2) */ @media (max-width: 1236px) { - .home-header { - padding-bottom: calc(var(--feather-grid-mega) * 1.5); - } + .home-header { + padding-bottom: calc(var(--feather-grid-mega) * 1.5); + } } /* Explore Projects */ #explore-projects { - background-image: url("../assets/network.svg"); - background-repeat: no-repeat; - background-size: auto 380px; - background-position: bottom left 5vw; - - @media (min-width: 600px) { - background-position: bottom left 35vw; - } - @media (min-width: 1100px) { - background-position: bottom right; - } + background-image: url("../assets/network.svg"); + background-repeat: no-repeat; + background-size: auto 380px; + background-position: bottom left 5vw; + + @media (min-width: 600px) { + background-position: bottom left 35vw; + } + @media (min-width: 1100px) { + background-position: bottom right; + } } .explore-text { - // space to display network graphic - margin-bottom: 320px; - - @media (min-width: 600px) { - margin-bottom: 0; - max-width: 35%; - } - @media (min-width: 1100px) { - max-width: 40%; - } + // space to display network graphic + margin-bottom: 320px; + + @media (min-width: 600px) { + margin-bottom: 0; + max-width: 35%; + } + @media (min-width: 1100px) { + max-width: 40%; + } } diff --git a/assets/css/memberships.scss b/assets/css/memberships.scss index f40ec63ee..a4bee9566 100644 --- a/assets/css/memberships.scss +++ b/assets/css/memberships.scss @@ -3,166 +3,173 @@ /* Logo sizes for membership cards */ :root { - --logo-size-normal: 80px; - --logo-size-small: 60px; + --logo-size-normal: 80px; + --logo-size-small: 60px; } /* Adjusts width and margins of membership-container */ .membership-container { - max-width: calc(var(--feather-grid-page-width) - var(--feather-grid-mega) * 3); - margin: 0 auto; + max-width: calc( + var(--feather-grid-page-width) - var(--feather-grid-mega) * 3 + ); + margin: 0 auto; } /* Less than var(--feather-grid-page-width) - var(--feather-grid-mega) */ @media (max-width: 1116px) { - .membership-container { - margin: 0 var(--feather-grid-mega); - } + .membership-container { + margin: 0 var(--feather-grid-mega); + } } @media (max-width: 600px) { - .membership-container { - margin: 0 var(--feather-grid-medium); - } + .membership-container { + margin: 0 var(--feather-grid-medium); + } } /* Membership card elements that are consistent throughout all screen sizes */ .membership { - padding: var(--feather-grid-large) 0; - border-top: solid 1px var(--tw-color-gray-light); - position: relative; + padding: var(--feather-grid-large) 0; + border-top: solid 1px var(--tw-color-gray-light); + position: relative; - &:first-child { - border-top: none; - } + &:first-child { + border-top: none; + } } -a.membership-handle:link, a.membership-handle:visited { - color: var(--tw-color-gray-deep); - font-size: var(--feather-font-size-normal); - line-height: var(--feather-line-height-normal); - text-decoration: none; +a.membership-handle:link, +a.membership-handle:visited { + color: var(--tw-color-gray-deep); + font-size: var(--feather-font-size-normal); + line-height: var(--feather-line-height-normal); + text-decoration: none; } -a.membership-handle:hover, a.membership-handle:active { - color: var(--tw-color-text-link); +a.membership-handle:hover, +a.membership-handle:active { + color: var(--tw-color-text-link); } .membership .Button { - position: absolute; - top: var(--feather-grid-large); - right: 0; + position: absolute; + top: var(--feather-grid-large); + right: 0; } /* Membership card layout: greater than 940px */ /* Logo's position is absolute, and text content is shifted to the right using margins */ .name-handle { - width: 80%; + width: 80%; } .membership h2 { - margin: 0; - padding-bottom: var(--feather-grid-micro); + margin: 0; + padding-bottom: var(--feather-grid-micro); } .membership p { - padding-top: var(--feather-grid-xsmall); - margin-bottom: 0; + padding-top: var(--feather-grid-xsmall); + margin-bottom: 0; } .membership-logo { - position: absolute; - top: var(--feather-grid-large); - left: 0; - height: var(--logo-size-normal); - width: var(--logo-size-normal); /* will this distort image though */ + position: absolute; + top: var(--feather-grid-large); + left: 0; + height: var(--logo-size-normal); + width: var(--logo-size-normal); /* will this distort image though */ } -.name-handle, .membership p { - margin-left: calc(var(--logo-size-normal) + var(--feather-grid-large)); +.name-handle, +.membership p { + margin-left: calc(var(--logo-size-normal) + var(--feather-grid-large)); } /* Membership card layout: between 680px and 940px */ @media (max-width: 940px) { - .name-handle { - width: 70%; - } + .name-handle { + width: 70%; + } } /* Membership card layout: less than 680px */ /* Logo's position is static, and text is no longer shifted to the right with margins */ @media (max-width: 680px) { - .membership-logo, .name-handle { - position: static; - display: inline-block; - } + .membership-logo, + .name-handle { + position: static; + display: inline-block; + } - .membership-logo { - height: var(--logo-size-small); - width: var(--logo-size-small); - } + .membership-logo { + height: var(--logo-size-small); + width: var(--logo-size-small); + } - .name-handle { - margin-left: var(--feather-grid-large); - vertical-align: top; - } + .name-handle { + margin-left: var(--feather-grid-large); + vertical-align: top; + } - .membership p { - padding-top: var(--feather-grid-xxsmall); - margin-left: 0; - } + .membership p { + padding-top: var(--feather-grid-xxsmall); + margin-left: 0; + } } /* Membership card layout: less than 620px */ @media (max-width: 620px) { - .name-handle { - width: 60%; - } + .name-handle { + width: 60%; + } } /* Membership card layout: less than 620px */ /* Decrease font size of name */ @media (max-width: 480px) { - .membership h2 { - font-size: var(--feather-font-size-large); - line-height: var(--feather-line-height-large); - } + .membership h2 { + font-size: var(--feather-font-size-large); + line-height: var(--feather-line-height-large); + } - .name-handle { - margin-left: var(--feather-grid-small); - } + .name-handle { + margin-left: var(--feather-grid-small); + } - .membership p { - padding-top: var(--feather-grid-xxsmall); - } + .membership p { + padding-top: var(--feather-grid-xxsmall); + } } /* Membership card layout: less than 420px */ @media (max-width: 420px) { - .name-handle { - width: 50%; - } + .name-handle { + width: 50%; + } } /* Membership card layout: less than 340px */ /* Name and handle move below logo */ @media (max-width: 340px) { - .membership-logo, .name-handle { - display: block; - } - - .name-handle { - padding-top: var(--feather-grid-small); - margin-left: 0; - width: 100%; - } + .membership-logo, + .name-handle { + display: block; + } + + .name-handle { + padding-top: var(--feather-grid-small); + margin-left: 0; + width: 100%; + } } diff --git a/assets/css/projects.scss b/assets/css/projects.scss index 4c6a05430..85faf43fb 100644 --- a/assets/css/projects.scss +++ b/assets/css/projects.scss @@ -2,116 +2,118 @@ /* Widths */ :root { - --project-card-min-width: 385px; - --project-card-max-width: 500px; - --search-bar-width: 450px; + --project-card-min-width: 385px; + --project-card-max-width: 500px; + --search-bar-width: 450px; } .all-projects { - display: flex; - flex-wrap: wrap; + display: flex; + flex-wrap: wrap; } .project-card { - position: relative; - flex: 1 1; - padding: var(--feather-grid-mega) calc(var(--feather-grid-mega) * 1.5); - min-width: var(--project-card-min-width); - max-width: var(--project-card-max-width); + position: relative; + flex: 1 1; + padding: var(--feather-grid-mega) calc(var(--feather-grid-mega) * 1.5); + min-width: var(--project-card-min-width); + max-width: var(--project-card-max-width); } .border { - width: 150px; - border-bottom-style: solid; - border-bottom-width: 5px; + width: 150px; + border-bottom-style: solid; + border-bottom-width: 5px; } .project-language { - color: var(--tw-color-gray-deep); - font-size: var(--feather-font-size-normal); - line-height: var(--feather-line-height-normal); + color: var(--tw-color-gray-deep); + font-size: var(--feather-font-size-normal); + line-height: var(--feather-line-height-normal); - @media (prefers-color-scheme: dark) { - color: var(--tw-color-gray-faded); - } + @media (prefers-color-scheme: dark) { + color: var(--tw-color-gray-faded); + } } .project-links a { - display: block; - font-weight: var(--feather-font-weight-bold); - text-decoration: none; + display: block; + font-weight: var(--feather-font-weight-bold); + text-decoration: none; } -.project-links a:link, .project-links a:visited { - color: var(--tw-color-text-primary); +.project-links a:link, +.project-links a:visited { + color: var(--tw-color-text-primary); - @media (prefers-color-scheme: dark) { - color: white; - } + @media (prefers-color-scheme: dark) { + color: white; + } } -.project-links a:hover, .project-links a:active { - color: var(--tw-color-text-link); +.project-links a:hover, +.project-links a:active { + color: var(--tw-color-text-link); } .whitespace { - height: calc(var(--feather-grid-mega) * 1.6); + height: calc(var(--feather-grid-mega) * 1.6); } .project-links { - position: absolute; - bottom: var(--feather-grid-mega); + position: absolute; + bottom: var(--feather-grid-mega); } .project-card .Button { - position: absolute; - bottom: var(--feather-grid-mega); - right: calc(var(--feather-grid-mega) * 1.5); + position: absolute; + bottom: var(--feather-grid-mega); + right: calc(var(--feather-grid-mega) * 1.5); } - /* Search Bar */ #search-bar { - margin-top: var(--feather-grid-mega); - border-radius: 1.6rem; - border: 0; - max-width: var(--search-bar-width); - min-width: 183px; - line-height: calc(1.8rem - (1px * 2)); - padding: 0 var(--feather-grid-medium); - background-color: var(--tw-color-blue-light); - display: flex; - justify-content: space-between; - - @media (prefers-color-scheme: dark) { - background-color: var(--tw-color-gray-deep); - } + margin-top: var(--feather-grid-mega); + border-radius: 1.6rem; + border: 0; + max-width: var(--search-bar-width); + min-width: 183px; + line-height: calc(1.8rem - (1px * 2)); + padding: 0 var(--feather-grid-medium); + background-color: var(--tw-color-blue-light); + display: flex; + justify-content: space-between; + + @media (prefers-color-scheme: dark) { + background-color: var(--tw-color-gray-deep); + } } #search-box { - color: white; - border: 0; - min-width: 90%; - line-height: calc(1.8rem - (1px * 2)); - background-color: transparent; - &::placeholder { color: white; - } - &:focus { - outline: none; - } + border: 0; + min-width: 90%; + line-height: calc(1.8rem - (1px * 2)); + background-color: transparent; + &::placeholder { + color: white; + } + &:focus { + outline: none; + } } #search-icon { - fill: #ffffff; - height: 17px; - width: 17px; - margin-top: 9px; - flex-shrink: 0; + fill: #ffffff; + height: 17px; + width: 17px; + margin-top: 9px; + flex-shrink: 0; } #results { - padding-top: var(--feather-grid-mega); - .count, .query { - font-weight: var(--feather-font-weight-bold); - } + padding-top: var(--feather-grid-mega); + .count, + .query { + font-weight: var(--feather-font-weight-bold); + } } diff --git a/assets/css/year-in-review.scss b/assets/css/year-in-review.scss index 4501ad74b..2448688b7 100644 --- a/assets/css/year-in-review.scss +++ b/assets/css/year-in-review.scss @@ -1,676 +1,693 @@ /* Styles specific to Year in Review page */ :root { - /* General */ - --YIR-page-width: 1200px; - --content-width: 520px; - - /* Timeline nav */ - --timeline-active-text-width: 400px; - /* YIR-nav-body width + longer white line width + active li padding + YIR-nav-wrapper padding + */ - --timeline-total-width: calc(var(--timeline-active-text-width) + 35px + var(--feather-grid-medium) + 2 * var(--feather-grid-large)); - --nav-body-text-height: 80px; - --timeline-element-border-height: 100vh; - - /* Special font sizes */ - --font-size-YIR-heading-text: 6rem; - --line-height-YIR-heading-text: 5.6rem; - --line-height-subheading: 1.9rem; - --font-size-metric-count: 4.2rem; - --line-height-metric-count: 4.8rem; - --font-size-location: 2.5rem; - --line-height-location: 2.7rem; + /* General */ + --YIR-page-width: 1200px; + --content-width: 520px; + + /* Timeline nav */ + --timeline-active-text-width: 400px; + /* YIR-nav-body width + longer white line width + active li padding + YIR-nav-wrapper padding + */ + --timeline-total-width: calc( + var(--timeline-active-text-width) + 35px + var(--feather-grid-medium) + + 2 * var(--feather-grid-large) + ); + --nav-body-text-height: 80px; + --timeline-element-border-height: 100vh; + + /* Special font sizes */ + --font-size-YIR-heading-text: 6rem; + --line-height-YIR-heading-text: 5.6rem; + --line-height-subheading: 1.9rem; + --font-size-metric-count: 4.2rem; + --line-height-metric-count: 4.8rem; + --font-size-location: 2.5rem; + --line-height-location: 2.7rem; } - html { - scroll-padding-top: 0rem; + scroll-padding-top: 0rem; - @media (prefers-reduced-motion: no-preference) { - --scroll-behavior: smooth; - scroll-behavior: smooth; - } + @media (prefers-reduced-motion: no-preference) { + --scroll-behavior: smooth; + scroll-behavior: smooth; + } } a { - color: white; + color: white; } .YIR-wrapper { - color: white; - min-height: 100vh; - position: relative; + color: white; + min-height: 100vh; + position: relative; } .YIR-container { - max-width: var(--YIR-page-width); - margin: 0 auto; + max-width: var(--YIR-page-width); + margin: 0 auto; } .YIR-container-section { - max-width: var(--YIR-page-width); - margin: 0 auto; - min-height: inherit; - display: flex; - flex-direction: column; - justify-content: center; - align-items: flex-end; - padding: var(--feather-grid-large) 0; + max-width: var(--YIR-page-width); + margin: 0 auto; + min-height: inherit; + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-end; + padding: var(--feather-grid-large) 0; } p { - margin: 0; + margin: 0; } - /* All content */ -.inline-heading, .YIR-header, table, .locations, .metric-wrapper, .YIR-tweet-wrapper { - width: var(--content-width); +.inline-heading, +.YIR-header, +table, +.locations, +.metric-wrapper, +.YIR-tweet-wrapper { + width: var(--content-width); } .inline-heading { - padding-bottom: var(--feather-grid-mega); + padding-bottom: var(--feather-grid-mega); } .inline-heading h1 { - font-size: var(--font-size-xxjumbo); - line-height: var(--line-height-xxjumbo); - padding-bottom: var(--feather-grid-xsmall); + font-size: var(--font-size-xxjumbo); + line-height: var(--line-height-xxjumbo); + padding-bottom: var(--feather-grid-xsmall); } /* Sections */ section { - min-height: 100vh; + min-height: 100vh; } section#welcome { - background: var(--tw-color-blue-medium); + background: var(--tw-color-blue-medium); } section#top10 { - background: var(--tw-color-purple-medium); + background: var(--tw-color-purple-medium); } section#locations { - background: var(--tw-color-green-medium); + background: var(--tw-color-green-medium); } section#heat { - background: var(--tw-color-orange-medium); + background: var(--tw-color-orange-medium); } section#light { - background: var(--tw-color-yellow-deep); + background: var(--tw-color-yellow-deep); } section#love { - background: var(--tw-color-red-medium); + background: var(--tw-color-red-medium); } section#follow { - background: var(--tw-color-blue-medium); + background: var(--tw-color-blue-medium); } - /* Top navigation */ nav { - background-color: transparent; + background-color: transparent; } .nav-title a { - text-decoration: none; - font-weight: var(--feather-font-weight-bold); + text-decoration: none; + font-weight: var(--feather-font-weight-bold); } a.YIRnav-home-link { - margin-left: var(--feather-grid-mega); - margin-right: var(--feather-grid-micro); - color: white; + margin-left: var(--feather-grid-mega); + margin-right: var(--feather-grid-micro); + color: white; } a.YIRnav-home-link:hover { - opacity: 0.6; + opacity: 0.6; } - a.YIRnav-YIR-link { - color: white; - opacity: 0.6; - font-weight: var(--feather-font-weight-bold); + color: white; + opacity: 0.6; + font-weight: var(--feather-font-weight-bold); } a.YIRnav-YIR-link:hover { - opacity: 1; + opacity: 1; } #nav-menu { - display: none; + display: none; } - /* Timeline navigation */ /* Code from https://codepen.io/nailaahmad/pen/MyZXVE */ .YIR-nav-wrapper { - position: fixed; - height: 100%; - padding: var(--feather-grid-large); - display: flex; - flex-flow: column nowrap; - justify-content: center; + position: fixed; + height: 100%; + padding: var(--feather-grid-large); + display: flex; + flex-flow: column nowrap; + justify-content: center; } .nav { - margin: 0; - margin-left: var(--feather-grid-large); + margin: 0; + margin-left: var(--feather-grid-large); } .YIR-nav-title { - font-size: var(--feather-font-size-jumbo); - font-weight: var(--feather-font-weight-bold); - @media (prefers-reduced-motion: no-preference) { - transition: all 0.15s ease-out; - } + font-size: var(--feather-font-size-jumbo); + font-weight: var(--feather-font-weight-bold); + @media (prefers-reduced-motion: no-preference) { + transition: all 0.15s ease-out; + } } .nav .section-description { - width: var(--timeline-active-text-width); - height: 0; - overflow: hidden; - opacity: 0; - @media (prefers-reduced-motion: no-preference) { - transition: height 0.3s ease-out, opacity 0.2s ease-out; - } + width: var(--timeline-active-text-width); + height: 0; + overflow: hidden; + opacity: 0; + @media (prefers-reduced-motion: no-preference) { + transition: height 0.3s ease-out, opacity 0.2s ease-out; + } } .nav li { - list-style: none; - position: relative; - margin-bottom: var(--feather-grid-medium); - @media (prefers-reduced-motion: no-preference) { - transition: all 0.3s ease-out; - } + list-style: none; + position: relative; + margin-bottom: var(--feather-grid-medium); + @media (prefers-reduced-motion: no-preference) { + transition: all 0.3s ease-out; + } } /* Shorter white lines */ .nav li:after { - content: ''; - display: block; - border-left: 2px solid white; - border-top: 2px solid white; - position: absolute; - height: var(--timeline-element-border-height); - width: 20px; - left: -30px; - top: 12px; + content: ""; + display: block; + border-left: 2px solid white; + border-top: 2px solid white; + position: absolute; + height: var(--timeline-element-border-height); + width: 20px; + left: -30px; + top: 12px; } .nav li a { - display: block; - padding: 0; - color: white; - @media (prefers-reduced-motion: no-preference) { - transition: all 0.15s ease-out; - } + display: block; + padding: 0; + color: white; + @media (prefers-reduced-motion: no-preference) { + transition: all 0.15s ease-out; + } } .nav li a:hover { - background-color: transparent; - @media (prefers-reduced-motion: no-preference) { - padding-left: 1em; - } + background-color: transparent; + @media (prefers-reduced-motion: no-preference) { + padding-left: 1em; + } } .nav li a:focus { - background-color: transparent; + background-color: transparent; } /* Timeline navigation - active nav title */ .nav li.active { - pointer-events: none; - padding-left: var(--feather-grid-medium); + pointer-events: none; + padding-left: var(--feather-grid-medium); } /* Longer white lines */ .nav li.active:after { - height: var(--timeline-element-border-height); - width: 35px; - top: 35px; + height: var(--timeline-element-border-height); + width: 35px; + top: 35px; } .nav li.active .YIR-nav-title { - font-size: var(--font-size-xxjumbo); - line-height: var(--line-height-xxjumbo); + font-size: var(--font-size-xxjumbo); + line-height: var(--line-height-xxjumbo); } .nav li.active .section-description { - margin: 0; - margin-top: var(--feather-grid-xsmall); - height: var(--nav-body-text-height); - opacity: 1; - overflow: visible; + margin: 0; + margin-top: var(--feather-grid-xsmall); + height: var(--nav-body-text-height); + opacity: 1; + overflow: visible; } - /* Header */ h1.YIR-subheading { - font-size: var(--font-size-mini-jumbo); - line-height: var(--line-height-subheading); + font-size: var(--font-size-mini-jumbo); + line-height: var(--line-height-subheading); } h1#date-range { - color: var( --tw-color-blue-faded); + color: var(--tw-color-blue-faded); } h1#YIR-heading-text { - font-size: var(--font-size-YIR-heading-text); - line-height: var(--line-height-YIR-heading-text); - padding: var(--feather-grid-large) 0; + font-size: var(--font-size-YIR-heading-text); + line-height: var(--line-height-YIR-heading-text); + padding: var(--feather-grid-large) 0; } -h1#YIR-heading-text, .YIR-subheading { - @media (prefers-reduced-motion: no-preference) { - animation: fadein 1s; - } +h1#YIR-heading-text, +.YIR-subheading { + @media (prefers-reduced-motion: no-preference) { + animation: fadein 1s; + } } #YIR-header-inline-heading { - padding: 0; + padding: 0; } #YIR-header-inline-heading p { - padding: 0; - padding-top: var(--feather-grid-large); + padding: 0; + padding-top: var(--feather-grid-large); } /* Hardcoding height so header content doesn't move when text is typed in */ /* 3 lines of text */ h1#type { - height: calc(3 * var(--line-height-subheading)); + height: calc(3 * var(--line-height-subheading)); } - /* Top 10 repos*/ table { - font-weight: var(--feather-font-weight-bold); - font-size: var(--font-size-xjumbo); + font-weight: var(--feather-font-weight-bold); + font-size: var(--font-size-xjumbo); } th { - color: var(--tw-color-purple-faded); - font-size: var(--feather-font-size-jumbo); - padding-bottom: var(--feather-grid-xxsmall); - text-align: right; + color: var(--tw-color-purple-faded); + font-size: var(--feather-font-size-jumbo); + padding-bottom: var(--feather-grid-xxsmall); + text-align: right; } tr.content { - height: var(--line-height-xjumbo); - line-height: 0.9em; + height: var(--line-height-xjumbo); + line-height: 0.9em; } td.num { - color: var(--tw-color-purple-faded); - text-align: right; - padding-right: var(--feather-grid-xsmall); + color: var(--tw-color-purple-faded); + text-align: right; + padding-right: var(--feather-grid-xsmall); } td.commit-value { - text-align: right; + text-align: right; } -td.repo a:link, td.repo a:visited { - color: white; - text-decoration: none; +td.repo a:link, +td.repo a:visited { + color: white; + text-decoration: none; } -td.repo a:hover, td.repo a:active { - color: var(--tw-color-purple-faded); +td.repo a:hover, +td.repo a:active { + color: var(--tw-color-purple-faded); } - /* Locations */ .locations { - display: flex; - flex-direction: column; - font-size: var(--font-size-location); - line-height: var(--line-height-location); - font-weight: var(--feather-font-weight-bold); + display: flex; + flex-direction: column; + font-size: var(--font-size-location); + line-height: var(--line-height-location); + font-weight: var(--feather-font-weight-bold); } .location-item { - display: flex; - justify-content: flex-start; - padding: var(--feather-grid-micro) 0; + display: flex; + justify-content: flex-start; + padding: var(--feather-grid-micro) 0; } .location-item img { - display: inline-block; - height: var(--line-height-location); - padding-right: var(--feather-grid-medium); + display: inline-block; + height: var(--line-height-location); + padding-right: var(--feather-grid-medium); } p.locations-disclaimer { - font-size: var(--feather-font-size-large); - font-weight: var(--feather-font-weight-normal); - line-height: var(--feather-line-height-large); - margin: 0; - padding-top: var(--feather-grid-xxsmall); + font-size: var(--feather-font-size-large); + font-weight: var(--feather-font-weight-normal); + line-height: var(--feather-line-height-large); + margin: 0; + padding-top: var(--feather-grid-xxsmall); } - /* Metrics */ div.metric { - margin-top: var(--feather-grid-large); + margin-top: var(--feather-grid-large); } span.metric-count { - font-weight: var(--feather-font-weight-bold); - font-size: var(--font-size-metric-count); - line-height: var(--line-height-metric-count); + font-weight: var(--feather-font-weight-bold); + font-size: var(--font-size-metric-count); + line-height: var(--line-height-metric-count); } span.metric-name { - font-weight: var(--feather-font-weight-bold); - font-size: var(--font-size-mini-jumbo); - line-height: var(--line-height-mini-jumbo); - padding-left: var(--feather-grid-xxsmall); + font-weight: var(--feather-font-weight-bold); + font-size: var(--font-size-mini-jumbo); + line-height: var(--line-height-mini-jumbo); + padding-left: var(--feather-grid-xxsmall); } /* Metrics SVGs */ .fire-st0 { - fill: none; - stroke: white; - stroke-width: 1; - stroke-miterlimit: 10; - opacity: 1; + fill: none; + stroke: white; + stroke-width: 1; + stroke-miterlimit: 10; + opacity: 1; - stroke-dasharray: 155; - stroke-dashoffset: 155; + stroke-dasharray: 155; + stroke-dashoffset: 155; } .fire-st1 { - fill: none; - stroke: white; - stroke-width: 1; - stroke-miterlimit: 10; - opacity: 1; + fill: none; + stroke: white; + stroke-width: 1; + stroke-miterlimit: 10; + opacity: 1; - stroke-dasharray: 85; - stroke-dashoffset: 85; + stroke-dasharray: 85; + stroke-dashoffset: 85; } .sun-st0 { - fill: none; - stroke: white; - stroke-width: 1; - stroke-miterlimit: 10; - opacity: 1; - - stroke-dasharray: 65; - stroke-dashoffset: 65; -} - -.sun-st1, .sun-st2, .sun-st3, .sun-st4, .sun-st5, .sun-st6, .sun-st7, .sun-st8 { - fill: none; - stroke: white; - stroke-width: 1; - stroke-miterlimit: 10; - opacity: 1; + fill: none; + stroke: white; + stroke-width: 1; + stroke-miterlimit: 10; + opacity: 1; + + stroke-dasharray: 65; + stroke-dashoffset: 65; +} + +.sun-st1, +.sun-st2, +.sun-st3, +.sun-st4, +.sun-st5, +.sun-st6, +.sun-st7, +.sun-st8 { + fill: none; + stroke: white; + stroke-width: 1; + stroke-miterlimit: 10; + opacity: 1; - stroke-dasharray: 20; - stroke-dashoffset: 20; + stroke-dasharray: 20; + stroke-dashoffset: 20; } .heart-st0 { - fill: none; - stroke: white; - stroke-width: 1; - stroke-miterlimit: 10; - opacity: 1; + fill: none; + stroke: white; + stroke-width: 1; + stroke-miterlimit: 10; + opacity: 1; - stroke-dasharray: 105; - stroke-dashoffset: 105; + stroke-dasharray: 105; + stroke-dashoffset: 105; } .heart-st1 { - fill: none; - stroke: white; - stroke-width: 1; - stroke-miterlimit: 10; - opacity: 1; + fill: none; + stroke: white; + stroke-width: 1; + stroke-miterlimit: 10; + opacity: 1; - stroke-dasharray: 75; - stroke-dashoffset: 75; + stroke-dasharray: 75; + stroke-dashoffset: 75; } .in-view path { - animation: stroke 0s forwards; - @media (prefers-reduced-motion: no-preference) { - animation: stroke 2s ease-in-out forwards; - } + animation: stroke 0s forwards; + @media (prefers-reduced-motion: no-preference) { + animation: stroke 2s ease-in-out forwards; + } } @keyframes stroke { - to { - fill: none; - stroke-dashoffset: 0; - } + to { + fill: none; + stroke-dashoffset: 0; + } } - /* Media queries */ /* Less than YIR-page-width + feather-grid-large */ @media (max-width: 1224px) { - .YIR-container-section { - margin: 0 var(--feather-grid-large); - } + .YIR-container-section { + margin: 0 var(--feather-grid-large); + } } /* Hardcoded breakpoints for when window height is too small and causes content to overflow */ /* Header - when content overflows section */ @media (max-height: 544px) and (min-width: 1080px) { - section#welcome { - height: auto; - padding: calc(var(--feather-grid-mega) * 1.5) 0; - } + section#welcome { + height: auto; + padding: calc(var(--feather-grid-mega) * 1.5) 0; + } } /* Top 10 repos - when content overflows section */ @media (max-height: 652px) and (min-width: 1080px) { - section#top10 { - height: auto; - padding: calc(var(--feather-grid-mega) * 1.5) 0; - } + section#top10 { + height: auto; + padding: calc(var(--feather-grid-mega) * 1.5) 0; + } } /* Locations - when content overflows section */ @media (max-height: 772px) and (min-width: 1080px) { - section#locations { - height: auto; - padding: calc(var(--feather-grid-mega) * 1.5) 0; - } + section#locations { + height: auto; + padding: calc(var(--feather-grid-mega) * 1.5) 0; + } } /* Metrics - when content overflows section */ @media (max-height: 658px) and (min-width: 1080px) { - section#heat, section#light, section#love { - height: auto; - padding: calc(var(--feather-grid-mega) * 1.5) 0; - } + section#heat, + section#light, + section#love { + height: auto; + padding: calc(var(--feather-grid-mega) * 1.5) 0; + } } /* Tweet - when content overflows section */ @media (max-height: 721px) and (min-width: 1080px) { - section#follow { - height: auto; - padding: calc(var(--feather-grid-mega) * 1.5) 0; - } + section#follow { + height: auto; + padding: calc(var(--feather-grid-mega) * 1.5) 0; + } } /* Mobile - remove timeline, add mobile headings */ @media (max-width: 1080px) { - .YIR-container { - display: none; - } + .YIR-container { + display: none; + } - .inline-heading { - display: block; - } + .inline-heading { + display: block; + } - section { - height: auto; - padding: calc(var(--feather-grid-mega) * 1.5) 0; - } + section { + height: auto; + padding: calc(var(--feather-grid-mega) * 1.5) 0; + } - .YIR-container-section { - flex-direction: column; - align-items: center; - } - - .YIR-header { - padding-top: var(--feather-grid-mega); /* FIX - DELETE if i make top nav stick to top */ - } - - html { - scroll-padding-top: 2.5rem; - } - nav { - background-color: var(--tw-color-blue-medium); - } - - // Copied from main.css because mobile navigation is activated at a wider width on this page - html:not(.no-js) #menu-toggle { - display: block; - } + .YIR-container-section { + flex-direction: column; + align-items: center; + } - #nav-menu { - display: none; - height: 100vh; - width: 100%; - margin: 0; - margin-top: calc(var(--feather-grid-mega) * 2); - @media (prefers-reduced-motion: no-preference) { - animation: fadein 1.5s; + .YIR-header { + padding-top: var( + --feather-grid-mega + ); /* FIX - DELETE if i make top nav stick to top */ + } + + html { + scroll-padding-top: 2.5rem; + } + nav { + background-color: var(--tw-color-blue-medium); } - li { - display: block; - font-weight: var(--feather-font-weight-bold); - font-size: var(--feather-font-size-jumbo); - line-height: var(--feather-line-height-jumbo); - padding: var(--feather-grid-medium) 0; - margin: 0; - &:not(:last-child) { - border-bottom: 1px solid var(--tw-color-blue-faded); - } + // Copied from main.css because mobile navigation is activated at a wider width on this page + html:not(.no-js) #menu-toggle { + display: block; } - } - #nav-menu.active { - display: block; - } + #nav-menu { + display: none; + height: 100vh; + width: 100%; + margin: 0; + margin-top: calc(var(--feather-grid-mega) * 2); + @media (prefers-reduced-motion: no-preference) { + animation: fadein 1.5s; + } + + li { + display: block; + font-weight: var(--feather-font-weight-bold); + font-size: var(--feather-font-size-jumbo); + line-height: var(--feather-line-height-jumbo); + padding: var(--feather-grid-medium) 0; + margin: 0; + &:not(:last-child) { + border-bottom: 1px solid var(--tw-color-blue-faded); + } + } + } + + #nav-menu.active { + display: block; + } } /* Less than content-width + 2 * feather-grid-large */ @media (max-width: 568px) { - .inline-heading, .YIR-header, table, .locations, .metric-wrapper, .YIR-tweet-wrapper { - width: 100%; - } + .inline-heading, + .YIR-header, + table, + .locations, + .metric-wrapper, + .YIR-tweet-wrapper { + width: 100%; + } - section { - padding: var(--feather-grid-mega) 0; - } + section { + padding: var(--feather-grid-mega) 0; + } - /* Decrease font sizes */ - .inline-heading h1 { - font-size: var(--font-size-mini-jumbo); - line-height: var(--line-height-mini-jumbo); - } + /* Decrease font sizes */ + .inline-heading h1 { + font-size: var(--font-size-mini-jumbo); + line-height: var(--line-height-mini-jumbo); + } - /* Header */ - h1.YIR-subheading { - font-size: var(--feather-font-size-jumbo); - line-height: var(--feather-line-height-jumbo); - } + /* Header */ + h1.YIR-subheading { + font-size: var(--feather-font-size-jumbo); + line-height: var(--feather-line-height-jumbo); + } - h1#YIR-heading-text { - font-size: var(--font-size-xxjumbo); - line-height: calc(var(--line-height-xxjumbo) - 0.5rem); - } + h1#YIR-heading-text { + font-size: var(--font-size-xxjumbo); + line-height: calc(var(--line-height-xxjumbo) - 0.5rem); + } - h1#type { - height: calc(2 * var(--feather-line-height-jumbo)); - } + h1#type { + height: calc(2 * var(--feather-line-height-jumbo)); + } - /* Top 10 repos */ - table { - font-size: var(--feather-font-size-jumbo); - } + /* Top 10 repos */ + table { + font-size: var(--feather-font-size-jumbo); + } - th { - font-size: var(--feather-font-size-large); - padding-bottom: 0; - } + th { + font-size: var(--feather-font-size-large); + padding-bottom: 0; + } - tr.content { - height: calc(var(--feather-line-height-jumbo) - 0.2rem); - } + tr.content { + height: calc(var(--feather-line-height-jumbo) - 0.2rem); + } - td.num { - padding-right: var(--feather-grid-xxsmall); - } + td.num { + padding-right: var(--feather-grid-xxsmall); + } - /* Locations */ - .locations { - font-size: var(--feather-font-size-jumbo); - line-height: var(--feather-line-height-jumbo); - } + /* Locations */ + .locations { + font-size: var(--feather-font-size-jumbo); + line-height: var(--feather-line-height-jumbo); + } - .location-item { - text-transform: capitalize; - padding: 0; - } + .location-item { + text-transform: capitalize; + padding: 0; + } - .location-item img { - height: var(--feather-line-height-jumbo); - padding-right: var(--feather-grid-small); - } + .location-item img { + height: var(--feather-line-height-jumbo); + padding-right: var(--feather-grid-small); + } - /* Metrics */ - .metric-wrapper svg { - padding-top: var(--feather-grid-xxsmall); - } + /* Metrics */ + .metric-wrapper svg { + padding-top: var(--feather-grid-xxsmall); + } - span.metric-count { - font-size: var(--font-size-xxjumbo); - line-height: var(--line-height-xxjumbo); - } + span.metric-count { + font-size: var(--font-size-xxjumbo); + line-height: var(--line-height-xxjumbo); + } - span.metric-name { - font-size: var(--feather-font-size-jumbo); - line-height: var(--feather-line-height-jumbo); - padding-left: var(--feather-grid-micro); - } + span.metric-name { + font-size: var(--feather-font-size-jumbo); + line-height: var(--feather-line-height-jumbo); + padding-left: var(--feather-grid-micro); + } } /* Adjusting height of typed text in subheading */ @media (max-width: 520px) { - h1#type { - height: calc(3 * var(--feather-line-height-jumbo)); - } + h1#type { + height: calc(3 * var(--feather-line-height-jumbo)); + } } @media (max-width: 384px) { - h1#type { - height: calc(4 * var(--feather-line-height-jumbo)); - } + h1#type { + height: calc(4 * var(--feather-line-height-jumbo)); + } } diff --git a/codemeta.yaml b/codemeta.yaml index 779288935..da05e7a19 100644 --- a/codemeta.yaml +++ b/codemeta.yaml @@ -7,6 +7,6 @@ issueTracker: https://github.com/twitter/opensource-website/issues name: opensource.twitter.dev developmentStatus: active author: -- "@type": Organization - identifier: OSS - name: Twitter Open Source Programs Office + - "@type": Organization + identifier: OSS + name: Twitter Open Source Programs Office diff --git a/config.yaml b/config.yaml index 404e82124..8f5e412c8 100644 --- a/config.yaml +++ b/config.yaml @@ -6,27 +6,27 @@ title: Twitter Open Source taxonomies: [] permalinks: - posts: /:year/:month/:title/ + posts: /:year/:month/:title/ markup: - goldmark: - renderer: - unsafe: true - tableOfContents: - startLevel: 1 - endLevel: 9 - highlight: - style: friendly + goldmark: + renderer: + unsafe: true + tableOfContents: + startLevel: 1 + endLevel: 9 + highlight: + style: friendly menu: - main: - # individual pages are added to menu in their front matter - - identifier: blog - name: Blog - url: https://blog.twitter.com/engineering/en_us/topics/open-source - rel: noopener - weight: 10 - - identifier: github - name: GitHub - url: https://github.com/twitter - weight: 20 + main: + # individual pages are added to menu in their front matter + - identifier: blog + name: Blog + url: https://blog.twitter.com/engineering/en_us/topics/open-source + rel: noopener + weight: 10 + - identifier: github + name: GitHub + url: https://github.com/twitter + weight: 20 diff --git a/content/_index.html b/content/_index.html index 49eee3e2a..99ae4a740 100644 --- a/content/_index.html +++ b/content/_index.html @@ -9,28 +9,50 @@

#OurPhilosophy

-

For anything to grow, you need three things:

+

+ For anything to grow, you need three things: +

- Fire emoji + Fire emoji

Heat

-

Heat means work.
Upstream contributions, bug fixes, designs, docs--the rigorous work that drives the community.

+

+ Heat means work.
Upstream contributions, bug fixes, + designs, docs--the rigorous work that drives the community. +

- Sun emoji + Sun emoji

Light

-

Light means visibility.
For the projects, contributions, opportunities, challenges, and people that impact the community.

+

+ Light means visibility.
For the projects, contributions, + opportunities, challenges, and people that impact the community. +

- Pride heart emoji + Pride heart emoji

Love

-

Love means culture and support.
Why we care. How we work. Actions that grow the community.

+

+ Love means culture and support.
Why we care. How we work. + Actions that grow the community. +

-
@@ -40,8 +62,14 @@

Love

Explore Projects

-

Twitter has been built on open source since the beginning. Openness is part of our DNA. The projects you see here were born at Twitter, and patches are always welcome!

- View All Projects +

+ Twitter has been built on open source since the beginning. + Openness is part of our DNA. The projects you see here were born + at Twitter, and patches are always welcome! +

+ View All Projects
@@ -51,11 +79,28 @@

Explore Projects

@@ -66,11 +111,29 @@

Follow Us

Join the Flock

-

We are always on the lookout for innovative and creative individuals who are passionate about building a platform where all voices can be heard.

-
View All Careers +

+ We are always on the lookout for innovative and creative + individuals who are passionate about building a platform where + all voices can be heard. +

+ View All Careers
diff --git a/content/status.md b/content/status.md index 5ea5f693c..a49e297a5 100644 --- a/content/status.md +++ b/content/status.md @@ -17,19 +17,18 @@ Questions about the status of individual projects are generally best directed to the project discussion forum or issue tracker. If those are unavailable, you can also email opensource@twitter.com. - **Project Statuses:** - - [Idea](#idea) - - [Experimental](#experimental) - - [Active](#active) - - [Stable](#stable) - - [Unmaintained](#unmaintained) - - [Deprecated](#deprecated) - - [Retired](#retired) - - [Static](#static) - -Idea ----- + +- [Idea](#idea) +- [Experimental](#experimental) +- [Active](#active) +- [Stable](#stable) +- [Unmaintained](#unmaintained) +- [Deprecated](#deprecated) +- [Retired](#retired) +- [Static](#static) + +## Idea ![status: idea](idea.svg) @@ -39,19 +38,18 @@ This code is in the scoping or specification phase and may be accepting feedback ### Requirements -- Complies with Twitter's legal and security requirements for open source software -- Contains the appropriate Twitter open source category header in the repository's README file -- Typically hosted in the [Twitter Incubator](https://github.com/twitter-incubator) GitHub org -- (Optional) Issues at the project owner's discretion +- Complies with Twitter's legal and security requirements for open source software +- Contains the appropriate Twitter open source category header in the repository's README file +- Typically hosted in the [Twitter Incubator](https://github.com/twitter-incubator) GitHub org +- (Optional) Issues at the project owner's discretion ### Markdown ```markdown [![status: idea](https://opensource.twitter.dev/status/idea.svg)](https://opensource.twitter.dev/status/#idea) -```` +``` -Experimental ------------- +## Experimental ![status: experimental](experimental.svg) @@ -61,19 +59,18 @@ This code is not yet ready for prime time and may be actively seeking feedback. ### Requirements -- Complies with Twitter's legal and security requirements for open source software -- Contains the appropriate Twitter open source category header in the repository's README file -- Typically hosted in the Twitter Incubator GitHub org -- (Optional) Issues at the project owner's discretion +- Complies with Twitter's legal and security requirements for open source software +- Contains the appropriate Twitter open source category header in the repository's README file +- Typically hosted in the Twitter Incubator GitHub org +- (Optional) Issues at the project owner's discretion ### Markdown ```markdown [![status: experimental](https://opensource.twitter.dev/status/experimental.svg)](https://opensource.twitter.dev/status/#experimental) -```` +``` -Active ------- +## Active ![status: active](active.svg) @@ -83,21 +80,20 @@ This code is actively maintained and supported. ### Requirements -- Complies with Twitter's legal and security requirements for open source software -- Contains the appropriate Twitter open source category header in the repository's README file -- Is maintained by a Twitter engineering team -- Issues and PR's managed in GitHub -- For additional details on support options, see the Open Source Support Policy -- An automated release pipeline +- Complies with Twitter's legal and security requirements for open source software +- Contains the appropriate Twitter open source category header in the repository's README file +- Is maintained by a Twitter engineering team +- Issues and PR's managed in GitHub +- For additional details on support options, see the Open Source Support Policy +- An automated release pipeline ### Markdown ```markdown [![status: active](https://opensource.twitter.dev/status/active.svg)](https://opensource.twitter.dev/status/#active) -```` +``` -Stable ------- +## Stable ![status: stable](stable.svg) @@ -107,21 +103,20 @@ This code is stable and not necessarily open to new features or functionality. I ### Requirements -- Complies with Twitter's legal and security requirements for open source software -- Contains the appropriate Twitter open source category header in the repository's README file -- Is maintained by a Twitter engineering team -- Issues and PR’s managed in GitHub -- For additional details on support options, see the Open Source Support Policy -- An automated release pipeline +- Complies with Twitter's legal and security requirements for open source software +- Contains the appropriate Twitter open source category header in the repository's README file +- Is maintained by a Twitter engineering team +- Issues and PR’s managed in GitHub +- For additional details on support options, see the Open Source Support Policy +- An automated release pipeline ### Markdown ```markdown [![status: stable](https://opensource.twitter.dev/status/stable.svg)](https://opensource.twitter.dev/status/#stable) -```` +``` -Unmaintained ------------- +## Unmaintained ![status: unmaintained](unmaintained.svg) @@ -131,20 +126,19 @@ This code is no longer actively maintained nor supported. Possibly actively sear ### Requirements -- Complies with Twitter's legal and security requirements for open source software -- Contains the appropriate Twitter open source category header in the repository's README file -- Previous references to Support should be modified or removed from the README -- May be transitioned to new maintainers -- (Optional) Issues and PR's at the project owner's discretion +- Complies with Twitter's legal and security requirements for open source software +- Contains the appropriate Twitter open source category header in the repository's README file +- Previous references to Support should be modified or removed from the README +- May be transitioned to new maintainers +- (Optional) Issues and PR's at the project owner's discretion ### Markdown ```markdown [![status: unmaintained](https://opensource.twitter.dev/status/unmaintained.svg)](https://opensource.twitter.dev/status/#unmaintained) -```` +``` -Deprecated ----------- +## Deprecated ![status: deprecated](deprecated.svg) @@ -154,20 +148,19 @@ This code has been identified to transition to RETIRED at some point in the futu ### Requirements -- Complies with Twitter's legal and security requirements for open source software -- Contains the appropriate Twitter open source category header in the repository's README file -- Previous references to Support should be modified or removed from the README -- Will be transitioned to RETIRED in the future -- (Optional) Issues and PR's at the project owner's discretion +- Complies with Twitter's legal and security requirements for open source software +- Contains the appropriate Twitter open source category header in the repository's README file +- Previous references to Support should be modified or removed from the README +- Will be transitioned to RETIRED in the future +- (Optional) Issues and PR's at the project owner's discretion ### Markdown ```markdown [![status: deprecated](https://opensource.twitter.dev/status/deprecated.svg)](https://opensource.twitter.dev/status/#deprecated) -```` +``` -Retired -------- +## Retired ![status: retired](retired.svg) @@ -177,19 +170,18 @@ This code is read-only. There is neither a maintainer nor any support. ### Requirements -- Complies with Twitter's legal and security requirements for open source software -- Contains the appropriate Twitter open source category header in the repository's README file -- Previous references to Support should be modified or removed from the README -- Project is read-only and available for cloning only +- Complies with Twitter's legal and security requirements for open source software +- Contains the appropriate Twitter open source category header in the repository's README file +- Previous references to Support should be modified or removed from the README +- Project is read-only and available for cloning only ### Markdown ```markdown [![status: retired](https://opensource.twitter.dev/status/retired.svg)](https://opensource.twitter.dev/status/#retired) -```` +``` -Static ------- +## Static ![status: static](static.svg) @@ -201,18 +193,19 @@ purposes. ### Requirements -- Complies with Twitter's legal and security requirements for open source software -- Contains the appropriate Twitter open source category header in the repository's README file -- (Optional) Issues at the project owner's discretion -- (Optional) Project may be archived as read-only and only available for cloning +- Complies with Twitter's legal and security requirements for open source software +- Contains the appropriate Twitter open source category header in the repository's README file +- (Optional) Issues at the project owner's discretion +- (Optional) Project may be archived as read-only and only available for cloning ### Markdown ```markdown [![status: static](https://opensource.twitter.dev/status/static.svg)](https://opensource.twitter.dev/status/#static) -```` +``` --- + Thanks to [repostatus.org](https://www.repostatus.org/) and [New Relic](https://opensource.newrelic.com/oss-category/) for the inspiration, and [shields.io](https://shields.io/) for the badges. diff --git a/data/augur/aggregate_summary.json b/data/augur/aggregate_summary.json index f500cab5c..2cda33d19 100644 --- a/data/augur/aggregate_summary.json +++ b/data/augur/aggregate_summary.json @@ -1 +1,10 @@ -[{"watcher_count": 7141, "stars_count": 135376, "fork_count": 66634, "merged_count": 2427, "committer_count": 416, "commit_count": 141862.0}] \ No newline at end of file +[ + { + "watcher_count": 7141, + "stars_count": 135376, + "fork_count": 66634, + "merged_count": 2427, + "committer_count": 416, + "commit_count": 141862.0 + } +] diff --git a/data/augur/repo_commits.json b/data/augur/repo_commits.json index 546130303..fa17c1342 100644 --- a/data/augur/repo_commits.json +++ b/data/augur/repo_commits.json @@ -1,290 +1,290 @@ { - "finagle": { - "commit_count": 6781 - }, - "scalding": { - "commit_count": 4148 - }, - "util": { - "commit_count": 2533 - }, - "twitter-text": { - "commit_count": 2277 - }, - "finatra": { - "commit_count": 1950 - }, - "summingbird": { - "commit_count": 1792 - }, - "commons": { - "commit_count": 1656 - }, - "algebird": { - "commit_count": 1505 - }, - "scrooge": { - "commit_count": 1465 - }, - "elephant-bird": { - "commit_count": 1374 - }, - "twitter-cldr-rb": { - "commit_count": 1283 - }, - "ostrich": { - "commit_count": 1270 - }, - "secure_headers": { - "commit_count": 967 - }, - "storehaus": { - "commit_count": 960 - }, - "bookkeeper": { - "commit_count": 831 - }, - "rsc": { - "commit_count": 788 - }, - "twitter-server": { - "commit_count": 695 - }, - "bijection": { - "commit_count": 691 - }, - "ambrose": { - "commit_count": 642 - }, - "ccommon": { - "commit_count": 627 - }, - "torch-autograd": { - "commit_count": 596 - }, - "typeahead.js": { - "commit_count": 594 - }, - "chill": { - "commit_count": 591 - }, - "pelikan": { - "commit_count": 582 - }, - "twitter-korean-text": { - "commit_count": 506 - }, - "cassovary": { - "commit_count": 501 - }, - "twemproxy": { - "commit_count": 495 - }, - "scala_school": { - "commit_count": 482 - }, - "scoot": { - "commit_count": 434 - }, - "cloudhopper-commons": { - "commit_count": 424 - }, - "effectivescala": { - "commit_count": 364 - }, - "interactive": { - "commit_count": 349 - }, - "hraven": { - "commit_count": 338 - }, - "twemoji": { - "commit_count": 338 - }, - "cli-guide.js": { - "commit_count": 332 - }, - "twitter-cldr-js": { - "commit_count": 310 - }, - "joauth": { - "commit_count": 301 - }, - "d3kit": { - "commit_count": 291 - }, - "hadoop-lzo": { - "commit_count": 273 - }, - "rpc-perf": { - "commit_count": 272 - }, - "thrift_client": { - "commit_count": 268 - }, - "tormenta": { - "commit_count": 266 - }, - "hogan.js": { - "commit_count": 244 - }, - "CocoaSPDY": { - "commit_count": 243 - }, - "hbc": { - "commit_count": 241 - }, - "zktraffic": { - "commit_count": 216 - }, - "go-bindata": { - "commit_count": 195 - }, - "labella.js": { - "commit_count": 173 - }, - "twurl": { - "commit_count": 173 - }, - "spitball": { - "commit_count": 162 - }, - "scala_school2": { - "commit_count": 146 - }, - "activerecord-reputation-system": { - "commit_count": 141 - }, - "wordpress": { - "commit_count": 131 - }, - "SentenTree": { - "commit_count": 107 - }, - "cdk": { - "commit_count": 105 - }, - "scala-json": { - "commit_count": 103 - }, - "whiskey": { - "commit_count": 100 - }, - "torch-ipc": { - "commit_count": 98 - }, - "libwatchman": { - "commit_count": 95 - }, - "pycascading": { - "commit_count": 95 - }, - "AnomalyDetection": { - "commit_count": 92 - }, - "distributedlog": { - "commit_count": 91 - }, - "recess": { - "commit_count": 88 - }, - "diffy": { - "commit_count": 78 - }, - "GraphJet": { - "commit_count": 73 - }, - "hpack": { - "commit_count": 63 - }, - "netty-http2": { - "commit_count": 59 - }, - "dodo": { - "commit_count": 57 - }, - "meta-learning-lstm": { - "commit_count": 50 - }, - "finatra-activator-http-seed": { - "commit_count": 50 - }, - "twemcache": { - "commit_count": 42 - }, - "ios-twitter-logging-service": { - "commit_count": 41 - }, - "fatcache": { - "commit_count": 41 - }, - "twitter-cldr-npm": { - "commit_count": 41 - }, - "torch-twrl": { - "commit_count": 38 - }, - "ios-twitter-image-pipeline": { - "commit_count": 34 - }, - "finatra-activator-thrift-seed": { - "commit_count": 31 - }, - "Serial": { - "commit_count": 31 - }, - "nodes": { - "commit_count": 31 - }, - "css-flip": { - "commit_count": 30 - }, - "torch-dataset": { - "commit_count": 28 - }, - "torch-distlearn": { - "commit_count": 20 - }, - "BreakoutDetection": { - "commit_count": 19 - }, - "torch-thrift": { - "commit_count": 16 - }, - "innovators-patent-agreement": { - "commit_count": 12 - }, - "sslconfig": { - "commit_count": 11 - }, - "sekhmet": { - "commit_count": 10 - }, - "code-of-conduct": { - "commit_count": 10 - }, - "vireo": { - "commit_count": 10 - }, - "ossdecks": { - "commit_count": 10 - }, - "torch-decisiontree": { - "commit_count": 8 - }, - "finatra-misc": { - "commit_count": 6 - }, - "hdfs-du": { - "commit_count": 5 - }, - "periscope-live-engagement-unity-sdk": { - "commit_count": 4 - }, - "second-control-probability-distributions": { - "commit_count": 1 - }, - "analytics-infra-governance": { - "commit_count": 1 - } + "finagle": { + "commit_count": 6781 + }, + "scalding": { + "commit_count": 4148 + }, + "util": { + "commit_count": 2533 + }, + "twitter-text": { + "commit_count": 2277 + }, + "finatra": { + "commit_count": 1950 + }, + "summingbird": { + "commit_count": 1792 + }, + "commons": { + "commit_count": 1656 + }, + "algebird": { + "commit_count": 1505 + }, + "scrooge": { + "commit_count": 1465 + }, + "elephant-bird": { + "commit_count": 1374 + }, + "twitter-cldr-rb": { + "commit_count": 1283 + }, + "ostrich": { + "commit_count": 1270 + }, + "secure_headers": { + "commit_count": 967 + }, + "storehaus": { + "commit_count": 960 + }, + "bookkeeper": { + "commit_count": 831 + }, + "rsc": { + "commit_count": 788 + }, + "twitter-server": { + "commit_count": 695 + }, + "bijection": { + "commit_count": 691 + }, + "ambrose": { + "commit_count": 642 + }, + "ccommon": { + "commit_count": 627 + }, + "torch-autograd": { + "commit_count": 596 + }, + "typeahead.js": { + "commit_count": 594 + }, + "chill": { + "commit_count": 591 + }, + "pelikan": { + "commit_count": 582 + }, + "twitter-korean-text": { + "commit_count": 506 + }, + "cassovary": { + "commit_count": 501 + }, + "twemproxy": { + "commit_count": 495 + }, + "scala_school": { + "commit_count": 482 + }, + "scoot": { + "commit_count": 434 + }, + "cloudhopper-commons": { + "commit_count": 424 + }, + "effectivescala": { + "commit_count": 364 + }, + "interactive": { + "commit_count": 349 + }, + "hraven": { + "commit_count": 338 + }, + "twemoji": { + "commit_count": 338 + }, + "cli-guide.js": { + "commit_count": 332 + }, + "twitter-cldr-js": { + "commit_count": 310 + }, + "joauth": { + "commit_count": 301 + }, + "d3kit": { + "commit_count": 291 + }, + "hadoop-lzo": { + "commit_count": 273 + }, + "rpc-perf": { + "commit_count": 272 + }, + "thrift_client": { + "commit_count": 268 + }, + "tormenta": { + "commit_count": 266 + }, + "hogan.js": { + "commit_count": 244 + }, + "CocoaSPDY": { + "commit_count": 243 + }, + "hbc": { + "commit_count": 241 + }, + "zktraffic": { + "commit_count": 216 + }, + "go-bindata": { + "commit_count": 195 + }, + "labella.js": { + "commit_count": 173 + }, + "twurl": { + "commit_count": 173 + }, + "spitball": { + "commit_count": 162 + }, + "scala_school2": { + "commit_count": 146 + }, + "activerecord-reputation-system": { + "commit_count": 141 + }, + "wordpress": { + "commit_count": 131 + }, + "SentenTree": { + "commit_count": 107 + }, + "cdk": { + "commit_count": 105 + }, + "scala-json": { + "commit_count": 103 + }, + "whiskey": { + "commit_count": 100 + }, + "torch-ipc": { + "commit_count": 98 + }, + "libwatchman": { + "commit_count": 95 + }, + "pycascading": { + "commit_count": 95 + }, + "AnomalyDetection": { + "commit_count": 92 + }, + "distributedlog": { + "commit_count": 91 + }, + "recess": { + "commit_count": 88 + }, + "diffy": { + "commit_count": 78 + }, + "GraphJet": { + "commit_count": 73 + }, + "hpack": { + "commit_count": 63 + }, + "netty-http2": { + "commit_count": 59 + }, + "dodo": { + "commit_count": 57 + }, + "meta-learning-lstm": { + "commit_count": 50 + }, + "finatra-activator-http-seed": { + "commit_count": 50 + }, + "twemcache": { + "commit_count": 42 + }, + "ios-twitter-logging-service": { + "commit_count": 41 + }, + "fatcache": { + "commit_count": 41 + }, + "twitter-cldr-npm": { + "commit_count": 41 + }, + "torch-twrl": { + "commit_count": 38 + }, + "ios-twitter-image-pipeline": { + "commit_count": 34 + }, + "finatra-activator-thrift-seed": { + "commit_count": 31 + }, + "Serial": { + "commit_count": 31 + }, + "nodes": { + "commit_count": 31 + }, + "css-flip": { + "commit_count": 30 + }, + "torch-dataset": { + "commit_count": 28 + }, + "torch-distlearn": { + "commit_count": 20 + }, + "BreakoutDetection": { + "commit_count": 19 + }, + "torch-thrift": { + "commit_count": 16 + }, + "innovators-patent-agreement": { + "commit_count": 12 + }, + "sslconfig": { + "commit_count": 11 + }, + "sekhmet": { + "commit_count": 10 + }, + "code-of-conduct": { + "commit_count": 10 + }, + "vireo": { + "commit_count": 10 + }, + "ossdecks": { + "commit_count": 10 + }, + "torch-decisiontree": { + "commit_count": 8 + }, + "finatra-misc": { + "commit_count": 6 + }, + "hdfs-du": { + "commit_count": 5 + }, + "periscope-live-engagement-unity-sdk": { + "commit_count": 4 + }, + "second-control-probability-distributions": { + "commit_count": 1 + }, + "analytics-infra-governance": { + "commit_count": 1 + } } diff --git a/data/memberships.yml b/data/memberships.yml index 590714dfe..63af6131a 100644 --- a/data/memberships.yml +++ b/data/memberships.yml @@ -1,41 +1,41 @@ - id: asf name: Apache Software Foundation - description: 'The all-volunteer ASF develops, stewards, and incubates more than 350 Open Source projects and initiatives that cover a wide range of technologies.' + description: "The all-volunteer ASF develops, stewards, and incubates more than 350 Open Source projects and initiatives that cover a wide range of technologies." logo: /assets/memberships/apache.png website: https://www.apache.org/ twitter: TheASF - id: lf name: Linux Foundation - description: 'A nonprofit organization enabling mass innovation through open source. Updates on our events at @eventsLF #Linux #OpenSource #learnLinux' + description: "A nonprofit organization enabling mass innovation through open source. Updates on our events at @eventsLF #Linux #OpenSource #learnLinux" logo: /assets/memberships/linux-foundation.svg website: https://linuxfoundation.org twitter: linuxfoundation - id: osi name: Open Source Initiative - description: 'Global non-profit: promotes and protects open source software, development & communities through education and advocacy. Yes, we coined the term!' + description: "Global non-profit: promotes and protects open source software, development & communities through education and advocacy. Yes, we coined the term!" logo: /assets/memberships/osi.jpg website: https://www.opensource.org twitter: OpenSourceOrg - id: psf name: Python Software Foundation - description: 'The Python Software Foundation is an organization devoted to advancing open source technology related to the Python programming language.' + description: "The Python Software Foundation is an organization devoted to advancing open source technology related to the Python programming language." logo: /assets/memberships/psf.png website: https://www.python.org/psf-landing/ twitter: ThePSF - id: scala name: Scala Center - description: 'The Scala Center brings together a coalition of individuals and organizations working together to contribute to Scala. All of our members, individual and corporate, are actively involved in the Scala project.' + description: "The Scala Center brings together a coalition of individuals and organizations working together to contribute to Scala. All of our members, individual and corporate, are actively involved in the Scala project." logo: /assets/memberships/scala-center.png website: https://scala.epfl.ch/ twitter: scala_lang - id: unicode name: Unicode Consortium - description: 'The Unicode Consortium enables people around the world to use computers in any language. #Unicode11' + description: "The Unicode Consortium enables people around the world to use computers in any language. #Unicode11" logo: /assets/memberships/unicode.svg website: https://unicode.org twitter: unicode diff --git a/data/projects.json b/data/projects.json index 01b8ad06e..67c54924d 100644 --- a/data/projects.json +++ b/data/projects.json @@ -1,1703 +1,1703 @@ { - "pantsbuild/pants": { - "descriptionHTML": "
The Pantsbuild developer workflow system
", - "forkCount": 536, - "homepageUrl": "https://www.pantsbuild.org", - "isPrivate": false, - "languages": "Python Rust", - "name": "pants", - "nameWithOwner": "pantsbuild/pants", - "primaryLanguage": { - "color": "#3572A5", - "name": "Python" - }, - "pushedAt": "2023-04-24T02:02:52Z", - "repositoryTopics": "build-tool build-tools build-system monorepo python java scala golang javascript rust monorepos pants build protobuf shell docker aws-lambda pex pantsbuild kotlin", - "stargazers": 2635, - "watchers": 67 - }, - "pantsbuild/pex": { - "descriptionHTML": "
A library and tool for generating .pex (Python EXecutable) files
", - "forkCount": 238, - "homepageUrl": "", - "isPrivate": false, - "languages": "Python", - "name": "pex", - "nameWithOwner": "pantsbuild/pex", - "primaryLanguage": { - "color": "#3572A5", - "name": "Python" - }, - "pushedAt": "2023-04-22T08:09:37Z", - "repositoryTopics": "", - "stargazers": 2316, - "watchers": 55 - }, - "twitter/.github": { - "descriptionHTML": "
Twitter GitHub Organization-wide files
", - "forkCount": 55, - "homepageUrl": null, - "isPrivate": false, - "languages": "", - "name": ".github", - "nameWithOwner": "twitter/.github", - "primaryLanguage": null, - "pushedAt": "2023-04-01T06:23:08Z", - "repositoryTopics": "", - "stargazers": 38, - "watchers": 9 - }, - "twitter/AnomalyDetection": { - "descriptionHTML": "
Anomaly Detection with R
", - "forkCount": 781, - "homepageUrl": "", - "isPrivate": false, - "languages": "R", - "name": "AnomalyDetection", - "nameWithOwner": "twitter/AnomalyDetection", - "primaryLanguage": { - "color": "#198CE7", - "name": "R" - }, - "pushedAt": "2019-08-30T19:49:16Z", - "repositoryTopics": "", - "stargazers": 3497, - "watchers": 334 - }, - "twitter/BreakoutDetection": { - "descriptionHTML": "
Breakout Detection via Robust E-Statistics
", - "forkCount": 181, - "homepageUrl": "", - "isPrivate": false, - "languages": "R C++", - "name": "BreakoutDetection", - "nameWithOwner": "twitter/BreakoutDetection", - "primaryLanguage": { - "color": "#f34b7d", - "name": "C++" - }, - "pushedAt": "2017-08-15T03:23:50Z", - "repositoryTopics": "", - "stargazers": 748, - "watchers": 165 - }, - "twitter/GraphJet": { - "descriptionHTML": "
GraphJet is a real-time graph processing library.
", - "forkCount": 105, - "homepageUrl": "", - "isPrivate": false, - "languages": "Java", - "name": "GraphJet", - "nameWithOwner": "twitter/GraphJet", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2023-04-10T11:24:19Z", - "repositoryTopics": "", - "stargazers": 668, - "watchers": 41 - }, - "twitter/SentenTree": { - "descriptionHTML": "
A novel text visualization technique
", - "forkCount": 54, - "homepageUrl": "", - "isPrivate": false, - "languages": "Python JavaScript", - "name": "SentenTree", - "nameWithOwner": "twitter/SentenTree", - "primaryLanguage": { - "color": "#f1e05a", - "name": "JavaScript" - }, - "pushedAt": "2023-04-10T11:37:45Z", - "repositoryTopics": "", - "stargazers": 214, - "watchers": 18 - }, - "twitter/Serial": { - "descriptionHTML": "
Light-weight, fast framework for object serialization in Java, with Android support.
", - "forkCount": 105, - "homepageUrl": null, - "isPrivate": false, - "languages": "Java", - "name": "Serial", - "nameWithOwner": "twitter/Serial", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2023-04-10T11:21:25Z", - "repositoryTopics": "", - "stargazers": 960, - "watchers": 39 - }, - "twitter/TwitterTextEditor": { - "descriptionHTML": "
A standalone, flexible API that provides a full-featured rich text editor for iOS applications.
", - "forkCount": 147, - "homepageUrl": "", - "isPrivate": false, - "languages": "Swift", - "name": "TwitterTextEditor", - "nameWithOwner": "twitter/TwitterTextEditor", - "primaryLanguage": { - "color": "#F05138", - "name": "Swift" - }, - "pushedAt": "2023-04-10T11:23:42Z", - "repositoryTopics": "ios uikit swift textkit", - "stargazers": 2865, - "watchers": 48 - }, - "twitter/activerecord-reputation-system": { - "descriptionHTML": "
An Active Record Reputation System for Rails
", - "forkCount": 134, - "homepageUrl": "", - "isPrivate": false, - "languages": "Ruby", - "name": "activerecord-reputation-system", - "nameWithOwner": "twitter/activerecord-reputation-system", - "primaryLanguage": { - "color": "#701516", - "name": "Ruby" - }, - "pushedAt": "2016-01-14T23:40:36Z", - "repositoryTopics": "", - "stargazers": 1334, - "watchers": 146 - }, - "twitter/algebird": { - "descriptionHTML": "
Abstract Algebra for Scala
", - "forkCount": 344, - "homepageUrl": "https://twitter.github.io/algebird", - "isPrivate": false, - "languages": "Scala", - "name": "algebird", - "nameWithOwner": "twitter/algebird", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-13T18:49:30Z", - "repositoryTopics": "", - "stargazers": 2232, - "watchers": 238 - }, - "twitter/analytics-infra-governance": { - "descriptionHTML": "
Description of the process for how to commit, review, and release code to the Scalding OSS family (Scalding, Summingbird, Algebird, Bijection, Storehaus, etc)
", - "forkCount": 14, - "homepageUrl": "", - "isPrivate": false, - "languages": "", - "name": "analytics-infra-governance", - "nameWithOwner": "twitter/analytics-infra-governance", - "primaryLanguage": null, - "pushedAt": "2017-10-06T19:47:31Z", - "repositoryTopics": "", - "stargazers": 9, - "watchers": 14 - }, - "twitter/bazel-multiversion": { - "descriptionHTML": "
Bazel rules to resolve, fetch and manage 3rdparty JVM dependencies with support for multiple parallel versions of the same dependency. Powered by Coursier.
", - "forkCount": 20, - "homepageUrl": "", - "isPrivate": false, - "languages": "Starlark Scala Shell", - "name": "bazel-multiversion", - "nameWithOwner": "twitter/bazel-multiversion", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-03-10T17:07:08Z", - "repositoryTopics": "bazel jvm dependency-manager coursier scala java kotlin bazel-rules bazel-build", - "stargazers": 43, - "watchers": 12 - }, - "twitter/bijection": { - "descriptionHTML": "
Reversible conversions between types
", - "forkCount": 130, - "homepageUrl": "", - "isPrivate": false, - "languages": "Scala Java", - "name": "bijection", - "nameWithOwner": "twitter/bijection", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-01T23:43:10Z", - "repositoryTopics": "", - "stargazers": 650, - "watchers": 142 - }, - "twitter/birdwatch": { - "descriptionHTML": "
", - "forkCount": 14, - "homepageUrl": null, - "isPrivate": false, - "languages": "", - "name": "birdwatch", - "nameWithOwner": "twitter/birdwatch", - "primaryLanguage": null, - "pushedAt": "2023-04-03T17:01:47Z", - "repositoryTopics": "", - "stargazers": 64, - "watchers": 15 - }, - "twitter/cache-trace": { - "descriptionHTML": "
A collection of Twitter's anonymized production cache traces.
", - "forkCount": 25, - "homepageUrl": "", - "isPrivate": false, - "languages": "Shell", - "name": "cache-trace", - "nameWithOwner": "twitter/cache-trace", - "primaryLanguage": { - "color": "#89e051", - "name": "Shell" - }, - "pushedAt": "2021-12-13T17:31:05Z", - "repositoryTopics": "cache trace production memcached redis", - "stargazers": 126, - "watchers": 9 - }, - "twitter/caladrius": { - "descriptionHTML": "
Performance modelling system for Distributed Stream Processing Systems (DSPS) such as Apache Heron and Apache Storm
", - "forkCount": 17, - "homepageUrl": "", - "isPrivate": false, - "languages": "Python", - "name": "caladrius", - "nameWithOwner": "twitter/caladrius", - "primaryLanguage": { - "color": "#3572A5", - "name": "Python" - }, - "pushedAt": "2023-04-10T11:46:19Z", - "repositoryTopics": "", - "stargazers": 23, - "watchers": 9 - }, - "twitter/cassovary": { - "descriptionHTML": "
Cassovary is a simple big graph processing library for the JVM
", - "forkCount": 152, - "homepageUrl": "http://twitter.com/cassovary", - "isPrivate": false, - "languages": "Scala", - "name": "cassovary", - "nameWithOwner": "twitter/cassovary", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2021-10-08T21:22:29Z", - "repositoryTopics": "", - "stargazers": 1039, - "watchers": 163 - }, - "twitter/ccommon": { - "descriptionHTML": "
Cache Commons
", - "forkCount": 43, - "homepageUrl": null, - "isPrivate": false, - "languages": "CMake C Rust", - "name": "ccommon", - "nameWithOwner": "twitter/ccommon", - "primaryLanguage": { - "color": "#555555", - "name": "C" - }, - "pushedAt": "2022-09-29T20:54:30Z", - "repositoryTopics": "", - "stargazers": 100, - "watchers": 59 - }, - "twitter/check-my-repo": { - "descriptionHTML": "
Automatically check repositories health and quality and build reports that help us understand the current state of Sauce Labs repositories
", - "forkCount": 15, - "homepageUrl": "https://opensource.saucelabs.com/check-my-repo/", - "isPrivate": false, - "languages": "JavaScript Vue", - "name": "check-my-repo", - "nameWithOwner": "twitter/check-my-repo", - "primaryLanguage": { - "color": "#41b883", - "name": "Vue" - }, - "pushedAt": "2023-04-10T11:39:02Z", - "repositoryTopics": "", - "stargazers": 9, - "watchers": 2 - }, - "twitter/chill": { - "descriptionHTML": "
Scala extensions for the Kryo serialization library
", - "forkCount": 148, - "homepageUrl": "https://twitter.com/scalding", - "isPrivate": false, - "languages": "Scala Java", - "name": "chill", - "nameWithOwner": "twitter/chill", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-13T19:58:16Z", - "repositoryTopics": "", - "stargazers": 594, - "watchers": 136 - }, - "twitter/cloudhopper-commons": { - "descriptionHTML": "
Cloudhopper Commons
", - "forkCount": 67, - "homepageUrl": null, - "isPrivate": false, - "languages": "Java", - "name": "cloudhopper-commons", - "nameWithOwner": "twitter/cloudhopper-commons", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2023-04-21T15:31:44Z", - "repositoryTopics": "", - "stargazers": 50, - "watchers": 121 - }, - "twitter/communitynotes": { - "descriptionHTML": "
Documentation and source code powering Twitter's Community Notes
", - "forkCount": 98, - "homepageUrl": "https://twitter.github.io/communitynotes", - "isPrivate": false, - "languages": "Python", - "name": "communitynotes", - "nameWithOwner": "twitter/communitynotes", - "primaryLanguage": { - "color": "#3572A5", - "name": "Python" - }, - "pushedAt": "2023-04-20T21:57:55Z", - "repositoryTopics": "crowdsourcing twitter", - "stargazers": 601, - "watchers": 39 - }, - "twitter/compose-rules": { - "descriptionHTML": "
Static checks to aid with a healthy adoption of Compose
", - "forkCount": 68, - "homepageUrl": "https://twitter.github.io/compose-rules", - "isPrivate": false, - "languages": "Kotlin", - "name": "compose-rules", - "nameWithOwner": "twitter/compose-rules", - "primaryLanguage": { - "color": "#A97BFF", - "name": "Kotlin" - }, - "pushedAt": "2023-04-10T11:40:59Z", - "repositoryTopics": "android jetpack-compose ktlint static-code-analysis", - "stargazers": 1219, - "watchers": 25 - }, - "twitter/curation-style-guide": { - "descriptionHTML": "
Document Repository for Twitter's Curation Style Guide
", - "forkCount": 13, - "homepageUrl": "https://help.twitter.com/en/rules-and-policies/curationstyleguide", - "isPrivate": false, - "languages": "", - "name": "curation-style-guide", - "nameWithOwner": "twitter/curation-style-guide", - "primaryLanguage": null, - "pushedAt": "2019-06-20T20:58:52Z", - "repositoryTopics": "", - "stargazers": 10, - "watchers": 6 - }, - "twitter/d3kit": { - "descriptionHTML": "
D3Kit is a set tools to speed D3 related project development
", - "forkCount": 54, - "homepageUrl": null, - "isPrivate": false, - "languages": "JavaScript", - "name": "d3kit", - "nameWithOwner": "twitter/d3kit", - "primaryLanguage": { - "color": "#f1e05a", - "name": "JavaScript" - }, - "pushedAt": "2021-11-01T17:23:07Z", - "repositoryTopics": "", - "stargazers": 427, - "watchers": 104 - }, - "twitter/dict_minimize": { - "descriptionHTML": "
Access scipy optimizers from your favorite deep learning framework.
", - "forkCount": 19, - "homepageUrl": "", - "isPrivate": false, - "languages": "Python Shell", - "name": "dict_minimize", - "nameWithOwner": "twitter/dict_minimize", - "primaryLanguage": { - "color": "#3572A5", - "name": "Python" - }, - "pushedAt": "2023-04-10T11:40:20Z", - "repositoryTopics": "scipy scipy-stack", - "stargazers": 74, - "watchers": 9 - }, - "twitter/diffusion-rl": { - "descriptionHTML": "
", - "forkCount": 12, - "homepageUrl": null, - "isPrivate": false, - "languages": "Python", - "name": "diffusion-rl", - "nameWithOwner": "twitter/diffusion-rl", - "primaryLanguage": { - "color": "#3572A5", - "name": "Python" - }, - "pushedAt": "2022-12-09T06:48:08Z", - "repositoryTopics": "", - "stargazers": 59, - "watchers": 6 - }, - "twitter/dodo": { - "descriptionHTML": "
The Twitter OSS Project Builder
", - "forkCount": 26, - "homepageUrl": "", - "isPrivate": false, - "languages": "Shell", - "name": "dodo", - "nameWithOwner": "twitter/dodo", - "primaryLanguage": { - "color": "#89e051", - "name": "Shell" - }, - "pushedAt": "2023-04-10T11:42:15Z", - "repositoryTopics": "finagle twitter-oss scrooge ostrich twitter-server finatra sbt util", - "stargazers": 32, - "watchers": 26 - }, - "twitter/dodo-build": { - "descriptionHTML": "
A Github Action for running Dodo: The Twitter OSS Project Builder
", - "forkCount": 11, - "homepageUrl": "https://github.com/twitter/dodo", - "isPrivate": false, - "languages": "TypeScript JavaScript", - "name": "dodo-build", - "nameWithOwner": "twitter/dodo-build", - "primaryLanguage": { - "color": "#3178c6", - "name": "TypeScript" - }, - "pushedAt": "2023-04-10T11:37:03Z", - "repositoryTopics": "", - "stargazers": 3, - "watchers": 3 - }, - "twitter/effectivescala": { - "descriptionHTML": "
Twitter's Effective Scala Guide
", - "forkCount": 636, - "homepageUrl": "https://twitter.github.io/effectivescala", - "isPrivate": false, - "languages": "Makefile Shell HTML", - "name": "effectivescala", - "nameWithOwner": "twitter/effectivescala", - "primaryLanguage": { - "color": "#e34c26", - "name": "HTML" - }, - "pushedAt": "2023-04-10T11:47:00Z", - "repositoryTopics": "", - "stargazers": 2233, - "watchers": 264 - }, - "twitter/elephant-bird": { - "descriptionHTML": "
Twitter's collection of LZO and Protocol Buffer-related Hadoop, Pig, Hive, and HBase code.
", - "forkCount": 402, - "homepageUrl": "", - "isPrivate": false, - "languages": "Java", - "name": "elephant-bird", - "nameWithOwner": "twitter/elephant-bird", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2023-04-10T11:31:57Z", - "repositoryTopics": "", - "stargazers": 1135, - "watchers": 192 - }, - "twitter/fatcache": { - "descriptionHTML": "
Memcache on SSD
", - "forkCount": 186, - "homepageUrl": "", - "isPrivate": false, - "languages": "C", - "name": "fatcache", - "nameWithOwner": "twitter/fatcache", - "primaryLanguage": { - "color": "#555555", - "name": "C" - }, - "pushedAt": "2021-11-01T18:32:51Z", - "repositoryTopics": "", - "stargazers": 1302, - "watchers": 209 - }, - "twitter/finagle": { - "descriptionHTML": "
A fault tolerant, protocol-agnostic RPC system
", - "forkCount": 1465, - "homepageUrl": "https://twitter.github.io/finagle", - "isPrivate": false, - "languages": "Scala", - "name": "finagle", - "nameWithOwner": "twitter/finagle", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-21T16:06:48Z", - "repositoryTopics": "rpc distributed-systems finagle http http2 thrift mysql memcached redis zipkin java scala", - "stargazers": 8631, - "watchers": 564 - }, - "twitter/finatra": { - "descriptionHTML": "
Fast, testable, Scala services built on TwitterServer and Finagle
", - "forkCount": 423, - "homepageUrl": "https://twitter.github.io/finatra/", - "isPrivate": false, - "languages": "Java Scala Starlark", - "name": "finatra", - "nameWithOwner": "twitter/finatra", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-10T11:22:24Z", - "repositoryTopics": "scala finagle twitter-server http framework microservices thrift guice slf4j testing", - "stargazers": 2252, - "watchers": 216 - }, - "twitter/focus": { - "descriptionHTML": "
Focus aligns Git worktree content based on outlines of a repository's Bazel build graph. Focused repos are sparse, shallow, and thin and unlock markedly better performance in large repos.
", - "forkCount": 19, - "homepageUrl": "", - "isPrivate": false, - "languages": "Rust", - "name": "focus", - "nameWithOwner": "twitter/focus", - "primaryLanguage": { - "color": "#dea584", - "name": "Rust" - }, - "pushedAt": "2023-03-25T01:34:54Z", - "repositoryTopics": "bazel git source-control sparse-checkout", - "stargazers": 84, - "watchers": 6 - }, - "twitter/gatekeeper-service": { - "descriptionHTML": "
GateKeeper is a service built to automate the manual steps involved in onboarding, offboarding, and lost asset scenarios.
", - "forkCount": 18, - "homepageUrl": "", - "isPrivate": false, - "languages": "Python HTML", - "name": "gatekeeper-service", - "nameWithOwner": "twitter/gatekeeper-service", - "primaryLanguage": { - "color": "#3572A5", - "name": "Python" - }, - "pushedAt": "2023-02-19T21:23:35Z", - "repositoryTopics": "", - "stargazers": 34, - "watchers": 14 - }, - "twitter/go-bindata": { - "descriptionHTML": "
", - "forkCount": 37, - "homepageUrl": null, - "isPrivate": false, - "languages": "Go", - "name": "go-bindata", - "nameWithOwner": "twitter/go-bindata", - "primaryLanguage": { - "color": "#00ADD8", - "name": "Go" - }, - "pushedAt": "2023-04-10T11:23:03Z", - "repositoryTopics": "", - "stargazers": 67, - "watchers": 11 - }, - "twitter/google-tag-manager-base-tag": { - "descriptionHTML": "
", - "forkCount": 7, - "homepageUrl": null, - "isPrivate": false, - "languages": "Smarty", - "name": "google-tag-manager-base-tag", - "nameWithOwner": "twitter/google-tag-manager-base-tag", - "primaryLanguage": { - "color": "#f0c040", - "name": "Smarty" - }, - "pushedAt": "2022-08-25T20:15:22Z", - "repositoryTopics": "", - "stargazers": 3, - "watchers": 5 - }, - "twitter/google-tag-manager-event-tag": { - "descriptionHTML": "
", - "forkCount": 8, - "homepageUrl": null, - "isPrivate": false, - "languages": "Smarty", - "name": "google-tag-manager-event-tag", - "nameWithOwner": "twitter/google-tag-manager-event-tag", - "primaryLanguage": { - "color": "#f0c040", - "name": "Smarty" - }, - "pushedAt": "2022-08-25T20:16:31Z", - "repositoryTopics": "", - "stargazers": 3, - "watchers": 5 - }, - "twitter/gpl-commitment": { - "descriptionHTML": "
Twitter's GPL Cooperation Commitment
", - "forkCount": 11, - "homepageUrl": "", - "isPrivate": false, - "languages": "", - "name": "gpl-commitment", - "nameWithOwner": "twitter/gpl-commitment", - "primaryLanguage": null, - "pushedAt": "2021-07-13T18:48:10Z", - "repositoryTopics": "", - "stargazers": 5, - "watchers": 8 - }, - "twitter/groupcache": { - "descriptionHTML": "
groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
", - "forkCount": 11, - "homepageUrl": "", - "isPrivate": false, - "languages": "Go", - "name": "groupcache", - "nameWithOwner": "twitter/groupcache", - "primaryLanguage": { - "color": "#00ADD8", - "name": "Go" - }, - "pushedAt": "2023-04-10T11:48:17Z", - "repositoryTopics": "", - "stargazers": 21, - "watchers": 9 - }, - "twitter/hadoop-lzo": { - "descriptionHTML": "
Refactored version of code.google.com/hadoop-gpl-compression for hadoop 0.20
", - "forkCount": 335, - "homepageUrl": "", - "isPrivate": false, - "languages": "Shell Java C", - "name": "hadoop-lzo", - "nameWithOwner": "twitter/hadoop-lzo", - "primaryLanguage": { - "color": "#89e051", - "name": "Shell" - }, - "pushedAt": "2023-04-10T11:34:31Z", - "repositoryTopics": "", - "stargazers": 542, - "watchers": 150 - }, - "twitter/hbc": { - "descriptionHTML": "
A Java HTTP client for consuming Twitter's realtime Streaming API
", - "forkCount": 386, - "homepageUrl": "https://developer.twitter.com/en/docs/tweets/filter-realtime/overview", - "isPrivate": false, - "languages": "Java", - "name": "hbc", - "nameWithOwner": "twitter/hbc", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2022-04-06T19:20:25Z", - "repositoryTopics": "twitter4j stream java realtime tweets", - "stargazers": 962, - "watchers": 194 - }, - "twitter/hogan.js": { - "descriptionHTML": "
A compiler for the Mustache templating language
", - "forkCount": 469, - "homepageUrl": "http://twitter.github.io/hogan.js", - "isPrivate": false, - "languages": "JavaScript", - "name": "hogan.js", - "nameWithOwner": "twitter/hogan.js", - "primaryLanguage": { - "color": "#f1e05a", - "name": "JavaScript" - }, - "pushedAt": "2023-04-10T11:35:08Z", - "repositoryTopics": "", - "stargazers": 5137, - "watchers": 249 - }, - "twitter/hpack": { - "descriptionHTML": "
Header Compression for HTTP/2
", - "forkCount": 63, - "homepageUrl": "https://twitter.com/http_2", - "isPrivate": false, - "languages": "Java", - "name": "hpack", - "nameWithOwner": "twitter/hpack", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2023-04-10T11:35:45Z", - "repositoryTopics": "", - "stargazers": 192, - "watchers": 126 - }, - "twitter/hraven": { - "descriptionHTML": "
hRaven collects run time data and statistics from MapReduce jobs in an easily queryable format
", - "forkCount": 76, - "homepageUrl": "https://twitter.com/twitterhadoop", - "isPrivate": false, - "languages": "Java", - "name": "hraven", - "nameWithOwner": "twitter/hraven", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2022-01-14T18:50:25Z", - "repositoryTopics": "", - "stargazers": 127, - "watchers": 135 - }, - "twitter/iago2": { - "descriptionHTML": "
A load generator, built for engineers
", - "forkCount": 16, - "homepageUrl": "", - "isPrivate": false, - "languages": "Scala", - "name": "iago2", - "nameWithOwner": "twitter/iago2", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-10T11:31:15Z", - "repositoryTopics": "", - "stargazers": 25, - "watchers": 8 - }, - "twitter/innovators-patent-agreement": { - "descriptionHTML": "
Innovators Patent Agreement (IPA)
", - "forkCount": 140, - "homepageUrl": "", - "isPrivate": false, - "languages": "", - "name": "innovators-patent-agreement", - "nameWithOwner": "twitter/innovators-patent-agreement", - "primaryLanguage": null, - "pushedAt": "2016-06-14T06:33:54Z", - "repositoryTopics": "", - "stargazers": 919, - "watchers": 177 - }, - "twitter/interactive": { - "descriptionHTML": "
Twitter interactive visualization
", - "forkCount": 79, - "homepageUrl": "https://twitter.github.io/interactive", - "isPrivate": false, - "languages": "CSS HTML JavaScript", - "name": "interactive", - "nameWithOwner": "twitter/interactive", - "primaryLanguage": { - "color": "#e34c26", - "name": "HTML" - }, - "pushedAt": "2021-11-01T17:11:32Z", - "repositoryTopics": "", - "stargazers": 212, - "watchers": 152 - }, - "twitter/ios-twitter-apache-thrift": { - "descriptionHTML": "
A thrift encoding and decoding library for Swift
", - "forkCount": 15, - "homepageUrl": "", - "isPrivate": false, - "languages": "Swift", - "name": "ios-twitter-apache-thrift", - "nameWithOwner": "twitter/ios-twitter-apache-thrift", - "primaryLanguage": { - "color": "#F05138", - "name": "Swift" - }, - "pushedAt": "2022-02-04T22:44:49Z", - "repositoryTopics": "", - "stargazers": 34, - "watchers": 6 - }, - "twitter/ios-twitter-image-pipeline": { - "descriptionHTML": "
Twitter Image Pipeline is a robust and performant image loading and caching framework for iOS clients
", - "forkCount": 113, - "homepageUrl": "", - "isPrivate": false, - "languages": "Objective-C C Shell Makefile", - "name": "ios-twitter-image-pipeline", - "nameWithOwner": "twitter/ios-twitter-image-pipeline", - "primaryLanguage": { - "color": "#555555", - "name": "C" - }, - "pushedAt": "2023-04-10T11:44:24Z", - "repositoryTopics": "image-pipeline ios swift objective-c twitter cache", - "stargazers": 1843, - "watchers": 38 - }, - "twitter/ios-twitter-logging-service": { - "descriptionHTML": "
Twitter Logging Service is a robust and performant logging framework for iOS clients
", - "forkCount": 42, - "homepageUrl": "", - "isPrivate": false, - "languages": "Objective-C Swift", - "name": "ios-twitter-logging-service", - "nameWithOwner": "twitter/ios-twitter-logging-service", - "primaryLanguage": { - "color": "#438eff", - "name": "Objective-C" - }, - "pushedAt": "2021-10-21T17:29:09Z", - "repositoryTopics": "ios twitter logging xcode", - "stargazers": 292, - "watchers": 16 - }, - "twitter/ios-twitter-network-layer": { - "descriptionHTML": "
Twitter Network Layer is a scalable and feature rich network layer built on top of NSURLSession for Apple platforms
", - "forkCount": 37, - "homepageUrl": "", - "isPrivate": false, - "languages": "Objective-C", - "name": "ios-twitter-network-layer", - "nameWithOwner": "twitter/ios-twitter-network-layer", - "primaryLanguage": { - "color": "#438eff", - "name": "Objective-C" - }, - "pushedAt": "2021-10-21T17:28:27Z", - "repositoryTopics": "ios networking twitter nsurlsession http framework", - "stargazers": 569, - "watchers": 24 - }, - "twitter/joauth": { - "descriptionHTML": "
A Java library for authenticating HTTP Requests using OAuth
", - "forkCount": 67, - "homepageUrl": "", - "isPrivate": false, - "languages": "Scala Java", - "name": "joauth", - "nameWithOwner": "twitter/joauth", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2023-04-10T11:47:38Z", - "repositoryTopics": "", - "stargazers": 206, - "watchers": 131 - }, - "twitter/labella.js": { - "descriptionHTML": "
Placing labels on a timeline without overlap.
", - "forkCount": 155, - "homepageUrl": "http://twitter.github.io/labella.js/", - "isPrivate": false, - "languages": "JavaScript", - "name": "labella.js", - "nameWithOwner": "twitter/labella.js", - "primaryLanguage": { - "color": "#f1e05a", - "name": "JavaScript" - }, - "pushedAt": "2023-04-10T11:45:02Z", - "repositoryTopics": "", - "stargazers": 3843, - "watchers": 81 - }, - "twitter/libwatchman": { - "descriptionHTML": "
A C interface to watchman
", - "forkCount": 34, - "homepageUrl": "", - "isPrivate": false, - "languages": "Shell C", - "name": "libwatchman", - "nameWithOwner": "twitter/libwatchman", - "primaryLanguage": { - "color": "#555555", - "name": "C" - }, - "pushedAt": "2019-06-07T00:45:31Z", - "repositoryTopics": "", - "stargazers": 44, - "watchers": 121 - }, - "twitter/metrics": { - "descriptionHTML": "
", - "forkCount": 35, - "homepageUrl": "https://twitter.github.io/metrics", - "isPrivate": false, - "languages": "", - "name": "metrics", - "nameWithOwner": "twitter/metrics", - "primaryLanguage": null, - "pushedAt": "2023-04-24T02:31:21Z", - "repositoryTopics": "", - "stargazers": 60, - "watchers": 7 - }, - "twitter/netty-http2": { - "descriptionHTML": "
HTTP/2 for Netty
", - "forkCount": 61, - "homepageUrl": "", - "isPrivate": false, - "languages": "Java", - "name": "netty-http2", - "nameWithOwner": "twitter/netty-http2", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2023-04-10T11:45:39Z", - "repositoryTopics": "", - "stargazers": 119, - "watchers": 115 - }, - "twitter/nodes": { - "descriptionHTML": "
A library to implement asynchronous dependency graphs for services in Java
", - "forkCount": 49, - "homepageUrl": "", - "isPrivate": false, - "languages": "Java", - "name": "nodes", - "nameWithOwner": "twitter/nodes", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2023-04-10T11:33:53Z", - "repositoryTopics": "", - "stargazers": 235, - "watchers": 29 - }, - "twitter/opensource-website": { - "descriptionHTML": "
Twitter's open source website, identifying projects we've released, organizations we support, and the work we do to support open source.
", - "forkCount": 757, - "homepageUrl": "https://opensource.twitter.dev", - "isPrivate": false, - "languages": "HTML Python SCSS", - "name": "opensource-website", - "nameWithOwner": "twitter/opensource-website", - "primaryLanguage": { - "color": "#c6538c", - "name": "SCSS" - }, - "pushedAt": "2023-04-20T14:44:27Z", - "repositoryTopics": "ospo", - "stargazers": 2583, - "watchers": 427 - }, - "twitter/ossdecks": { - "descriptionHTML": "
Repository for Twitter Open Source Decks
", - "forkCount": 18, - "homepageUrl": null, - "isPrivate": false, - "languages": "", - "name": "ossdecks", - "nameWithOwner": "twitter/ossdecks", - "primaryLanguage": null, - "pushedAt": "2019-04-18T15:29:53Z", - "repositoryTopics": "", - "stargazers": 11, - "watchers": 213 - }, - "twitter/pelikan": { - "descriptionHTML": "
Pelikan is Twitter's unified cache backend
", - "forkCount": 173, - "homepageUrl": "", - "isPrivate": false, - "languages": "C Rust", - "name": "pelikan", - "nameWithOwner": "twitter/pelikan", - "primaryLanguage": { - "color": "#555555", - "name": "C" - }, - "pushedAt": "2023-02-04T00:37:08Z", - "repositoryTopics": "", - "stargazers": 1865, - "watchers": 52 - }, - "twitter/repo-scaffolding": { - "descriptionHTML": "
Tools for creating repos based on open source standards and best practices
", - "forkCount": 22, - "homepageUrl": "", - "isPrivate": false, - "languages": "", - "name": "repo-scaffolding", - "nameWithOwner": "twitter/repo-scaffolding", - "primaryLanguage": null, - "pushedAt": "2021-08-17T17:58:52Z", - "repositoryTopics": "", - "stargazers": 27, - "watchers": 7 - }, - "twitter/rezolus": { - "descriptionHTML": "
Systems performance telemetry
", - "forkCount": 108, - "homepageUrl": null, - "isPrivate": false, - "languages": "Rust C", - "name": "rezolus", - "nameWithOwner": "twitter/rezolus", - "primaryLanguage": { - "color": "#dea584", - "name": "Rust" - }, - "pushedAt": "2023-03-31T20:23:13Z", - "repositoryTopics": "", - "stargazers": 1499, - "watchers": 36 - }, - "twitter/rpc-perf": { - "descriptionHTML": "
A tool for benchmarking RPC services
", - "forkCount": 79, - "homepageUrl": null, - "isPrivate": false, - "languages": "Rust", - "name": "rpc-perf", - "nameWithOwner": "twitter/rpc-perf", - "primaryLanguage": { - "color": "#dea584", - "name": "Rust" - }, - "pushedAt": "2023-04-03T22:55:54Z", - "repositoryTopics": "", - "stargazers": 456, - "watchers": 27 - }, - "twitter/rsc": { - "descriptionHTML": "
Experimental Scala compiler focused on compilation speed
", - "forkCount": 52, - "homepageUrl": "", - "isPrivate": false, - "languages": "Scala", - "name": "rsc", - "nameWithOwner": "twitter/rsc", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2021-10-21T17:27:10Z", - "repositoryTopics": "", - "stargazers": 1250, - "watchers": 80 - }, - "twitter/rustcommon": { - "descriptionHTML": "
Common Twitter Rust lib
", - "forkCount": 39, - "homepageUrl": null, - "isPrivate": false, - "languages": "Rust", - "name": "rustcommon", - "nameWithOwner": "twitter/rustcommon", - "primaryLanguage": { - "color": "#dea584", - "name": "Rust" - }, - "pushedAt": "2022-10-19T21:26:21Z", - "repositoryTopics": "", - "stargazers": 333, - "watchers": 12 - }, - "twitter/sbf": { - "descriptionHTML": "
", - "forkCount": 33, - "homepageUrl": null, - "isPrivate": false, - "languages": "Java", - "name": "sbf", - "nameWithOwner": "twitter/sbf", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2023-04-10T11:32:34Z", - "repositoryTopics": "", - "stargazers": 127, - "watchers": 6 - }, - "twitter/scala_school": { - "descriptionHTML": "
Lessons in the Fundamentals of Scala
", - "forkCount": 1152, - "homepageUrl": "https://twitter.github.io/scala_school", - "isPrivate": false, - "languages": "Scala Java Shell HTML", - "name": "scala_school", - "nameWithOwner": "twitter/scala_school", - "primaryLanguage": { - "color": "#e34c26", - "name": "HTML" - }, - "pushedAt": "2023-04-10T11:42:57Z", - "repositoryTopics": "", - "stargazers": 3694, - "watchers": 331 - }, - "twitter/scala_school2": { - "descriptionHTML": "
Scala School 2
", - "forkCount": 79, - "homepageUrl": null, - "isPrivate": false, - "languages": "Scala CSS JavaScript HTML", - "name": "scala_school2", - "nameWithOwner": "twitter/scala_school2", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2021-10-08T21:12:10Z", - "repositoryTopics": "", - "stargazers": 344, - "watchers": 155 - }, - "twitter/scalding": { - "descriptionHTML": "
A Scala API for Cascading
", - "forkCount": 710, - "homepageUrl": "http://twitter.com/scalding", - "isPrivate": false, - "languages": "Java Scala", - "name": "scalding", - "nameWithOwner": "twitter/scalding", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2022-05-17T20:59:09Z", - "repositoryTopics": "", - "stargazers": 3428, - "watchers": 324 - }, - "twitter/scoot": { - "descriptionHTML": "
Scoot is a distributed task runner, supporting both a proprietary API and Bazel's Remote Execution.
", - "forkCount": 46, - "homepageUrl": "", - "isPrivate": false, - "languages": "Go", - "name": "scoot", - "nameWithOwner": "twitter/scoot", - "primaryLanguage": { - "color": "#00ADD8", - "name": "Go" - }, - "pushedAt": "2023-04-10T11:28:45Z", - "repositoryTopics": "", - "stargazers": 342, - "watchers": 14 - }, - "twitter/scrooge": { - "descriptionHTML": "
A Thrift parser/generator
", - "forkCount": 253, - "homepageUrl": "http://twitter.github.io/scrooge/", - "isPrivate": false, - "languages": "Scala Java Mustache", - "name": "scrooge", - "nameWithOwner": "twitter/scrooge", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-10T11:39:43Z", - "repositoryTopics": "finagle thrift code-generation lua java scala android cocoa", - "stargazers": 772, - "watchers": 174 - }, - "twitter/second-control-probability-distributions": { - "descriptionHTML": "
", - "forkCount": 11, - "homepageUrl": null, - "isPrivate": false, - "languages": "", - "name": "second-control-probability-distributions", - "nameWithOwner": "twitter/second-control-probability-distributions", - "primaryLanguage": null, - "pushedAt": "2021-05-06T00:36:46Z", - "repositoryTopics": "", - "stargazers": 4, - "watchers": 8 - }, - "twitter/sqrl": { - "descriptionHTML": "
A Safe, Stateful Rules Language for Event Streams
", - "forkCount": 22, - "homepageUrl": "", - "isPrivate": false, - "languages": "TypeScript SCSS", - "name": "sqrl", - "nameWithOwner": "twitter/sqrl", - "primaryLanguage": { - "color": "#3178c6", - "name": "TypeScript" - }, - "pushedAt": "2023-04-10T11:38:24Z", - "repositoryTopics": "", - "stargazers": 98, - "watchers": 11 - }, - "twitter/sslconfig": { - "descriptionHTML": "
Twitter's OpenSSL Configuration
", - "forkCount": 28, - "homepageUrl": "", - "isPrivate": false, - "languages": "", - "name": "sslconfig", - "nameWithOwner": "twitter/sslconfig", - "primaryLanguage": null, - "pushedAt": "2021-10-08T21:04:29Z", - "repositoryTopics": "", - "stargazers": 40, - "watchers": 108 - }, - "twitter/storehaus": { - "descriptionHTML": "
Storehaus is a library that makes it easy to work with asynchronous key value stores
", - "forkCount": 90, - "homepageUrl": "", - "isPrivate": false, - "languages": "Scala", - "name": "storehaus", - "nameWithOwner": "twitter/storehaus", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2020-07-17T18:18:03Z", - "repositoryTopics": "", - "stargazers": 466, - "watchers": 141 - }, - "twitter/summingbird": { - "descriptionHTML": "
Streaming MapReduce with Scalding and Storm
", - "forkCount": 271, - "homepageUrl": "https://twitter.com/summingbird", - "isPrivate": false, - "languages": "Scala", - "name": "summingbird", - "nameWithOwner": "twitter/summingbird", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2022-01-19T17:31:02Z", - "repositoryTopics": "", - "stargazers": 2135, - "watchers": 296 - }, - "twitter/the-algorithm": { - "descriptionHTML": "
Source code for Twitter's Recommendation Algorithm
", - "forkCount": 11568, - "homepageUrl": "https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm", - "isPrivate": false, - "languages": "Starlark Java Scala", - "name": "the-algorithm", - "nameWithOwner": "twitter/the-algorithm", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-23T19:02:36Z", - "repositoryTopics": "", - "stargazers": 55808, - "watchers": 332 - }, - "twitter/the-algorithm-ml": { - "descriptionHTML": "
Source code for Twitter's Recommendation Algorithm
", - "forkCount": 2127, - "homepageUrl": "https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm", - "isPrivate": false, - "languages": "Python", - "name": "the-algorithm-ml", - "nameWithOwner": "twitter/the-algorithm-ml", - "primaryLanguage": { - "color": "#3572A5", - "name": "Python" - }, - "pushedAt": "2023-04-11T18:15:11Z", - "repositoryTopics": "", - "stargazers": 9168, - "watchers": 86 - }, - "twitter/thrift_client": { - "descriptionHTML": "
A Thrift client wrapper that encapsulates some common failover behavior
", - "forkCount": 83, - "homepageUrl": "http://github.com/twitter/thrift_client", - "isPrivate": false, - "languages": "Ruby", - "name": "thrift_client", - "nameWithOwner": "twitter/thrift_client", - "primaryLanguage": { - "color": "#701516", - "name": "Ruby" - }, - "pushedAt": "2019-06-06T01:36:44Z", - "repositoryTopics": "", - "stargazers": 195, - "watchers": 118 - }, - "twitter/tormenta": { - "descriptionHTML": "
Scala extensions for Storm
", - "forkCount": 38, - "homepageUrl": "", - "isPrivate": false, - "languages": "Scala Shell Java", - "name": "tormenta", - "nameWithOwner": "twitter/tormenta", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2019-06-07T01:01:52Z", - "repositoryTopics": "", - "stargazers": 132, - "watchers": 137 - }, - "twitter/twemcache": { - "descriptionHTML": "
Twemcache is the Twitter Memcached
", - "forkCount": 164, - "homepageUrl": "https://twitter.com/twemcache", - "isPrivate": false, - "languages": "Python Ruby C", - "name": "twemcache", - "nameWithOwner": "twitter/twemcache", - "primaryLanguage": { - "color": "#555555", - "name": "C" - }, - "pushedAt": "2021-11-01T18:31:37Z", - "repositoryTopics": "", - "stargazers": 927, - "watchers": 226 - }, - "twitter/twemoji": { - "descriptionHTML": "
Emoji for everyone. https://twemoji.twitter.com/
", - "forkCount": 1883, - "homepageUrl": "", - "isPrivate": false, - "languages": "HTML JavaScript", - "name": "twemoji", - "nameWithOwner": "twitter/twemoji", - "primaryLanguage": { - "color": "#e34c26", - "name": "HTML" - }, - "pushedAt": "2023-04-01T14:14:01Z", - "repositoryTopics": "emoji twemoji", - "stargazers": 15952, - "watchers": 358 - }, - "twitter/twemoji-parser": { - "descriptionHTML": "
A simple library for identifying emoji entities within a string in order to render them as Twemoji.
", - "forkCount": 55, - "homepageUrl": "", - "isPrivate": false, - "languages": "JavaScript Scala Shell", - "name": "twemoji-parser", - "nameWithOwner": "twitter/twemoji-parser", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-10T11:30:38Z", - "repositoryTopics": "", - "stargazers": 147, - "watchers": 17 - }, - "twitter/twemproxy": { - "descriptionHTML": "
A fast, light-weight proxy for memcached and redis
", - "forkCount": 2054, - "homepageUrl": "", - "isPrivate": false, - "languages": "Python Shell C", - "name": "twemproxy", - "nameWithOwner": "twitter/twemproxy", - "primaryLanguage": { - "color": "#555555", - "name": "C" - }, - "pushedAt": "2023-01-14T09:22:36Z", - "repositoryTopics": "", - "stargazers": 11772, - "watchers": 824 - }, - "twitter/twitter-cldr-js": { - "descriptionHTML": "
JavaScript implementation of the ICU (International Components for Unicode) that uses the Common Locale Data Repository to format dates, plurals, and more. Based on twitter-cldr-rb.
", - "forkCount": 62, - "homepageUrl": "", - "isPrivate": false, - "languages": "JavaScript", - "name": "twitter-cldr-js", - "nameWithOwner": "twitter/twitter-cldr-js", - "primaryLanguage": { - "color": "#f1e05a", - "name": "JavaScript" - }, - "pushedAt": "2023-04-10T11:27:13Z", - "repositoryTopics": "", - "stargazers": 340, - "watchers": 124 - }, - "twitter/twitter-cldr-npm": { - "descriptionHTML": "
TwitterCldr npm package
", - "forkCount": 37, - "homepageUrl": "", - "isPrivate": false, - "languages": "JavaScript", - "name": "twitter-cldr-npm", - "nameWithOwner": "twitter/twitter-cldr-npm", - "primaryLanguage": { - "color": "#f1e05a", - "name": "JavaScript" - }, - "pushedAt": "2023-04-10T11:26:13Z", - "repositoryTopics": "", - "stargazers": 49, - "watchers": 116 - }, - "twitter/twitter-cldr-rb": { - "descriptionHTML": "
Ruby implementation of the ICU (International Components for Unicode) that uses the Common Locale Data Repository to format dates, plurals, and more.
", - "forkCount": 95, - "homepageUrl": "", - "isPrivate": false, - "languages": "Ruby", - "name": "twitter-cldr-rb", - "nameWithOwner": "twitter/twitter-cldr-rb", - "primaryLanguage": { - "color": "#701516", - "name": "Ruby" - }, - "pushedAt": "2023-04-10T11:28:06Z", - "repositoryTopics": "", - "stargazers": 659, - "watchers": 119 - }, - "twitter/twitter-korean-text": { - "descriptionHTML": "
Korean tokenizer
", - "forkCount": 175, - "homepageUrl": null, - "isPrivate": false, - "languages": "Java Scala", - "name": "twitter-korean-text", - "nameWithOwner": "twitter/twitter-korean-text", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-10T11:33:16Z", - "repositoryTopics": "", - "stargazers": 812, - "watchers": 175 - }, - "twitter/twitter-server": { - "descriptionHTML": "
Twitter-Server defines a template from which services at Twitter are built
", - "forkCount": 257, - "homepageUrl": "http://twitter.github.io/twitter-server/", - "isPrivate": false, - "languages": "Scala", - "name": "twitter-server", - "nameWithOwner": "twitter/twitter-server", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-10T11:41:38Z", - "repositoryTopics": "finagle finatra", - "stargazers": 1447, - "watchers": 192 - }, - "twitter/twitter-text": { - "descriptionHTML": "
Twitter Text Libraries. This code is used at Twitter to tokenize and parse text to meet the expectations for what can be used on the platform.
", - "forkCount": 505, - "homepageUrl": "https://developer.twitter.com/en/docs/counting-characters", - "isPrivate": false, - "languages": "Ruby HTML Java JavaScript Objective-C", - "name": "twitter-text", - "nameWithOwner": "twitter/twitter-text", - "primaryLanguage": { - "color": "#e34c26", - "name": "HTML" - }, - "pushedAt": "2023-04-10T11:36:23Z", - "repositoryTopics": "twitter-text tweet twitter unicode emoji java ruby nodejs objective-c", - "stargazers": 2975, - "watchers": 183 - }, - "twitter/twitter.github.io": { - "descriptionHTML": "
", - "forkCount": 16, - "homepageUrl": "", - "isPrivate": false, - "languages": "HTML", - "name": "twitter.github.io", - "nameWithOwner": "twitter/twitter.github.io", - "primaryLanguage": { - "color": "#e34c26", - "name": "HTML" - }, - "pushedAt": "2021-10-11T21:40:05Z", - "repositoryTopics": "", - "stargazers": 70, - "watchers": 8 - }, - "twitter/twurl": { - "descriptionHTML": "
OAuth-enabled curl for the Twitter API
", - "forkCount": 335, - "homepageUrl": "https://developer.twitter.com", - "isPrivate": false, - "languages": "Ruby", - "name": "twurl", - "nameWithOwner": "twitter/twurl", - "primaryLanguage": { - "color": "#701516", - "name": "Ruby" - }, - "pushedAt": "2023-04-10T11:43:41Z", - "repositoryTopics": "twitter twitter-api ruby curl cli twurl", - "stargazers": 1747, - "watchers": 195 - }, - "twitter/typeahead.js": { - "descriptionHTML": "
typeahead.js is a fast and fully-featured autocomplete library
", - "forkCount": 3301, - "homepageUrl": "http://twitter.github.io/typeahead.js/", - "isPrivate": false, - "languages": "JavaScript", - "name": "typeahead.js", - "nameWithOwner": "twitter/typeahead.js", - "primaryLanguage": { - "color": "#f1e05a", - "name": "JavaScript" - }, - "pushedAt": "2023-04-14T07:24:33Z", - "repositoryTopics": "", - "stargazers": 16512, - "watchers": 561 - }, - "twitter/util": { - "descriptionHTML": "
Wonderful reusable code from Twitter
", - "forkCount": 591, - "homepageUrl": "https://twitter.github.io/util", - "isPrivate": false, - "languages": "Scala Java", - "name": "util", - "nameWithOwner": "twitter/util", - "primaryLanguage": { - "color": "#c22d40", - "name": "Scala" - }, - "pushedAt": "2023-04-11T23:17:40Z", - "repositoryTopics": "finagle scala utility", - "stargazers": 2631, - "watchers": 230 - }, - "twitter/vireo": { - "descriptionHTML": "
Vireo is a lightweight and versatile video processing library written in C++11
", - "forkCount": 106, - "homepageUrl": "", - "isPrivate": false, - "languages": "Makefile Shell C++", - "name": "vireo", - "nameWithOwner": "twitter/vireo", - "primaryLanguage": { - "color": "#f34b7d", - "name": "C++" - }, - "pushedAt": "2021-10-21T17:26:15Z", - "repositoryTopics": "", - "stargazers": 899, - "watchers": 50 - }, - "twitter/whiskey": { - "descriptionHTML": "
HTTP library for Android (beta)
", - "forkCount": 33, - "homepageUrl": "", - "isPrivate": false, - "languages": "Java", - "name": "whiskey", - "nameWithOwner": "twitter/whiskey", - "primaryLanguage": { - "color": "#b07219", - "name": "Java" - }, - "pushedAt": "2023-04-10T11:48:53Z", - "repositoryTopics": "", - "stargazers": 130, - "watchers": 89 - }, - "twitter/wordpress": { - "descriptionHTML": "
The official Twitter plugin for WordPress. Embed Twitter content and grow your audience on Twitter.
", - "forkCount": 137, - "homepageUrl": "https://github.com/twitter/wordpress/wiki", - "isPrivate": false, - "languages": "PHP", - "name": "wordpress", - "nameWithOwner": "twitter/wordpress", - "primaryLanguage": { - "color": "#4F5D95", - "name": "PHP" - }, - "pushedAt": "2022-04-06T19:15:29Z", - "repositoryTopics": "twitter-plugin php wordpress twitter-cards", - "stargazers": 302, - "watchers": 126 - }, - "twitter/zktraffic": { - "descriptionHTML": "
ZooKeeper protocol analyzer and stats gathering daemon
", - "forkCount": 55, - "homepageUrl": null, - "isPrivate": false, - "languages": "Python", - "name": "zktraffic", - "nameWithOwner": "twitter/zktraffic", - "primaryLanguage": { - "color": "#3572A5", - "name": "Python" - }, - "pushedAt": "2023-04-10T11:49:30Z", - "repositoryTopics": "", - "stargazers": 164, - "watchers": 118 - }, - "twitterdev/search-tweets-python": { - "descriptionHTML": "
Python client for the Twitter 'search Tweets' and 'count Tweets' endpoints (v2/Labs/premium/enterprise). Now supports Twitter API v2 /recent and /all search endpoints.
", - "forkCount": 245, - "homepageUrl": "https://twitterdev.github.io/search-tweets-python/", - "isPrivate": false, - "languages": "Python", - "name": "search-tweets-python", - "nameWithOwner": "twitterdev/search-tweets-python", - "primaryLanguage": { - "color": "#3572A5", - "name": "Python" - }, - "pushedAt": "2023-01-27T00:19:33Z", - "repositoryTopics": "search twitter python twitter-api twitterapi enterprise premium twitter-api-v2", - "stargazers": 759, - "watchers": 39 - } -} \ No newline at end of file + "pantsbuild/pants": { + "descriptionHTML": "
The Pantsbuild developer workflow system
", + "forkCount": 536, + "homepageUrl": "https://www.pantsbuild.org", + "isPrivate": false, + "languages": "Python Rust", + "name": "pants", + "nameWithOwner": "pantsbuild/pants", + "primaryLanguage": { + "color": "#3572A5", + "name": "Python" + }, + "pushedAt": "2023-04-24T02:02:52Z", + "repositoryTopics": "build-tool build-tools build-system monorepo python java scala golang javascript rust monorepos pants build protobuf shell docker aws-lambda pex pantsbuild kotlin", + "stargazers": 2635, + "watchers": 67 + }, + "pantsbuild/pex": { + "descriptionHTML": "
A library and tool for generating .pex (Python EXecutable) files
", + "forkCount": 238, + "homepageUrl": "", + "isPrivate": false, + "languages": "Python", + "name": "pex", + "nameWithOwner": "pantsbuild/pex", + "primaryLanguage": { + "color": "#3572A5", + "name": "Python" + }, + "pushedAt": "2023-04-22T08:09:37Z", + "repositoryTopics": "", + "stargazers": 2316, + "watchers": 55 + }, + "twitter/.github": { + "descriptionHTML": "
Twitter GitHub Organization-wide files
", + "forkCount": 55, + "homepageUrl": null, + "isPrivate": false, + "languages": "", + "name": ".github", + "nameWithOwner": "twitter/.github", + "primaryLanguage": null, + "pushedAt": "2023-04-01T06:23:08Z", + "repositoryTopics": "", + "stargazers": 38, + "watchers": 9 + }, + "twitter/AnomalyDetection": { + "descriptionHTML": "
Anomaly Detection with R
", + "forkCount": 781, + "homepageUrl": "", + "isPrivate": false, + "languages": "R", + "name": "AnomalyDetection", + "nameWithOwner": "twitter/AnomalyDetection", + "primaryLanguage": { + "color": "#198CE7", + "name": "R" + }, + "pushedAt": "2019-08-30T19:49:16Z", + "repositoryTopics": "", + "stargazers": 3497, + "watchers": 334 + }, + "twitter/BreakoutDetection": { + "descriptionHTML": "
Breakout Detection via Robust E-Statistics
", + "forkCount": 181, + "homepageUrl": "", + "isPrivate": false, + "languages": "R C++", + "name": "BreakoutDetection", + "nameWithOwner": "twitter/BreakoutDetection", + "primaryLanguage": { + "color": "#f34b7d", + "name": "C++" + }, + "pushedAt": "2017-08-15T03:23:50Z", + "repositoryTopics": "", + "stargazers": 748, + "watchers": 165 + }, + "twitter/GraphJet": { + "descriptionHTML": "
GraphJet is a real-time graph processing library.
", + "forkCount": 105, + "homepageUrl": "", + "isPrivate": false, + "languages": "Java", + "name": "GraphJet", + "nameWithOwner": "twitter/GraphJet", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2023-04-10T11:24:19Z", + "repositoryTopics": "", + "stargazers": 668, + "watchers": 41 + }, + "twitter/SentenTree": { + "descriptionHTML": "
A novel text visualization technique
", + "forkCount": 54, + "homepageUrl": "", + "isPrivate": false, + "languages": "Python JavaScript", + "name": "SentenTree", + "nameWithOwner": "twitter/SentenTree", + "primaryLanguage": { + "color": "#f1e05a", + "name": "JavaScript" + }, + "pushedAt": "2023-04-10T11:37:45Z", + "repositoryTopics": "", + "stargazers": 214, + "watchers": 18 + }, + "twitter/Serial": { + "descriptionHTML": "
Light-weight, fast framework for object serialization in Java, with Android support.
", + "forkCount": 105, + "homepageUrl": null, + "isPrivate": false, + "languages": "Java", + "name": "Serial", + "nameWithOwner": "twitter/Serial", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2023-04-10T11:21:25Z", + "repositoryTopics": "", + "stargazers": 960, + "watchers": 39 + }, + "twitter/TwitterTextEditor": { + "descriptionHTML": "
A standalone, flexible API that provides a full-featured rich text editor for iOS applications.
", + "forkCount": 147, + "homepageUrl": "", + "isPrivate": false, + "languages": "Swift", + "name": "TwitterTextEditor", + "nameWithOwner": "twitter/TwitterTextEditor", + "primaryLanguage": { + "color": "#F05138", + "name": "Swift" + }, + "pushedAt": "2023-04-10T11:23:42Z", + "repositoryTopics": "ios uikit swift textkit", + "stargazers": 2865, + "watchers": 48 + }, + "twitter/activerecord-reputation-system": { + "descriptionHTML": "
An Active Record Reputation System for Rails
", + "forkCount": 134, + "homepageUrl": "", + "isPrivate": false, + "languages": "Ruby", + "name": "activerecord-reputation-system", + "nameWithOwner": "twitter/activerecord-reputation-system", + "primaryLanguage": { + "color": "#701516", + "name": "Ruby" + }, + "pushedAt": "2016-01-14T23:40:36Z", + "repositoryTopics": "", + "stargazers": 1334, + "watchers": 146 + }, + "twitter/algebird": { + "descriptionHTML": "
Abstract Algebra for Scala
", + "forkCount": 344, + "homepageUrl": "https://twitter.github.io/algebird", + "isPrivate": false, + "languages": "Scala", + "name": "algebird", + "nameWithOwner": "twitter/algebird", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-13T18:49:30Z", + "repositoryTopics": "", + "stargazers": 2232, + "watchers": 238 + }, + "twitter/analytics-infra-governance": { + "descriptionHTML": "
Description of the process for how to commit, review, and release code to the Scalding OSS family (Scalding, Summingbird, Algebird, Bijection, Storehaus, etc)
", + "forkCount": 14, + "homepageUrl": "", + "isPrivate": false, + "languages": "", + "name": "analytics-infra-governance", + "nameWithOwner": "twitter/analytics-infra-governance", + "primaryLanguage": null, + "pushedAt": "2017-10-06T19:47:31Z", + "repositoryTopics": "", + "stargazers": 9, + "watchers": 14 + }, + "twitter/bazel-multiversion": { + "descriptionHTML": "
Bazel rules to resolve, fetch and manage 3rdparty JVM dependencies with support for multiple parallel versions of the same dependency. Powered by Coursier.
", + "forkCount": 20, + "homepageUrl": "", + "isPrivate": false, + "languages": "Starlark Scala Shell", + "name": "bazel-multiversion", + "nameWithOwner": "twitter/bazel-multiversion", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-03-10T17:07:08Z", + "repositoryTopics": "bazel jvm dependency-manager coursier scala java kotlin bazel-rules bazel-build", + "stargazers": 43, + "watchers": 12 + }, + "twitter/bijection": { + "descriptionHTML": "
Reversible conversions between types
", + "forkCount": 130, + "homepageUrl": "", + "isPrivate": false, + "languages": "Scala Java", + "name": "bijection", + "nameWithOwner": "twitter/bijection", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-01T23:43:10Z", + "repositoryTopics": "", + "stargazers": 650, + "watchers": 142 + }, + "twitter/birdwatch": { + "descriptionHTML": "
", + "forkCount": 14, + "homepageUrl": null, + "isPrivate": false, + "languages": "", + "name": "birdwatch", + "nameWithOwner": "twitter/birdwatch", + "primaryLanguage": null, + "pushedAt": "2023-04-03T17:01:47Z", + "repositoryTopics": "", + "stargazers": 64, + "watchers": 15 + }, + "twitter/cache-trace": { + "descriptionHTML": "
A collection of Twitter's anonymized production cache traces.
", + "forkCount": 25, + "homepageUrl": "", + "isPrivate": false, + "languages": "Shell", + "name": "cache-trace", + "nameWithOwner": "twitter/cache-trace", + "primaryLanguage": { + "color": "#89e051", + "name": "Shell" + }, + "pushedAt": "2021-12-13T17:31:05Z", + "repositoryTopics": "cache trace production memcached redis", + "stargazers": 126, + "watchers": 9 + }, + "twitter/caladrius": { + "descriptionHTML": "
Performance modelling system for Distributed Stream Processing Systems (DSPS) such as Apache Heron and Apache Storm
", + "forkCount": 17, + "homepageUrl": "", + "isPrivate": false, + "languages": "Python", + "name": "caladrius", + "nameWithOwner": "twitter/caladrius", + "primaryLanguage": { + "color": "#3572A5", + "name": "Python" + }, + "pushedAt": "2023-04-10T11:46:19Z", + "repositoryTopics": "", + "stargazers": 23, + "watchers": 9 + }, + "twitter/cassovary": { + "descriptionHTML": "
Cassovary is a simple big graph processing library for the JVM
", + "forkCount": 152, + "homepageUrl": "http://twitter.com/cassovary", + "isPrivate": false, + "languages": "Scala", + "name": "cassovary", + "nameWithOwner": "twitter/cassovary", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2021-10-08T21:22:29Z", + "repositoryTopics": "", + "stargazers": 1039, + "watchers": 163 + }, + "twitter/ccommon": { + "descriptionHTML": "
Cache Commons
", + "forkCount": 43, + "homepageUrl": null, + "isPrivate": false, + "languages": "CMake C Rust", + "name": "ccommon", + "nameWithOwner": "twitter/ccommon", + "primaryLanguage": { + "color": "#555555", + "name": "C" + }, + "pushedAt": "2022-09-29T20:54:30Z", + "repositoryTopics": "", + "stargazers": 100, + "watchers": 59 + }, + "twitter/check-my-repo": { + "descriptionHTML": "
Automatically check repositories health and quality and build reports that help us understand the current state of Sauce Labs repositories
", + "forkCount": 15, + "homepageUrl": "https://opensource.saucelabs.com/check-my-repo/", + "isPrivate": false, + "languages": "JavaScript Vue", + "name": "check-my-repo", + "nameWithOwner": "twitter/check-my-repo", + "primaryLanguage": { + "color": "#41b883", + "name": "Vue" + }, + "pushedAt": "2023-04-10T11:39:02Z", + "repositoryTopics": "", + "stargazers": 9, + "watchers": 2 + }, + "twitter/chill": { + "descriptionHTML": "
Scala extensions for the Kryo serialization library
", + "forkCount": 148, + "homepageUrl": "https://twitter.com/scalding", + "isPrivate": false, + "languages": "Scala Java", + "name": "chill", + "nameWithOwner": "twitter/chill", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-13T19:58:16Z", + "repositoryTopics": "", + "stargazers": 594, + "watchers": 136 + }, + "twitter/cloudhopper-commons": { + "descriptionHTML": "
Cloudhopper Commons
", + "forkCount": 67, + "homepageUrl": null, + "isPrivate": false, + "languages": "Java", + "name": "cloudhopper-commons", + "nameWithOwner": "twitter/cloudhopper-commons", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2023-04-21T15:31:44Z", + "repositoryTopics": "", + "stargazers": 50, + "watchers": 121 + }, + "twitter/communitynotes": { + "descriptionHTML": "
Documentation and source code powering Twitter's Community Notes
", + "forkCount": 98, + "homepageUrl": "https://twitter.github.io/communitynotes", + "isPrivate": false, + "languages": "Python", + "name": "communitynotes", + "nameWithOwner": "twitter/communitynotes", + "primaryLanguage": { + "color": "#3572A5", + "name": "Python" + }, + "pushedAt": "2023-04-20T21:57:55Z", + "repositoryTopics": "crowdsourcing twitter", + "stargazers": 601, + "watchers": 39 + }, + "twitter/compose-rules": { + "descriptionHTML": "
Static checks to aid with a healthy adoption of Compose
", + "forkCount": 68, + "homepageUrl": "https://twitter.github.io/compose-rules", + "isPrivate": false, + "languages": "Kotlin", + "name": "compose-rules", + "nameWithOwner": "twitter/compose-rules", + "primaryLanguage": { + "color": "#A97BFF", + "name": "Kotlin" + }, + "pushedAt": "2023-04-10T11:40:59Z", + "repositoryTopics": "android jetpack-compose ktlint static-code-analysis", + "stargazers": 1219, + "watchers": 25 + }, + "twitter/curation-style-guide": { + "descriptionHTML": "
Document Repository for Twitter's Curation Style Guide
", + "forkCount": 13, + "homepageUrl": "https://help.twitter.com/en/rules-and-policies/curationstyleguide", + "isPrivate": false, + "languages": "", + "name": "curation-style-guide", + "nameWithOwner": "twitter/curation-style-guide", + "primaryLanguage": null, + "pushedAt": "2019-06-20T20:58:52Z", + "repositoryTopics": "", + "stargazers": 10, + "watchers": 6 + }, + "twitter/d3kit": { + "descriptionHTML": "
D3Kit is a set tools to speed D3 related project development
", + "forkCount": 54, + "homepageUrl": null, + "isPrivate": false, + "languages": "JavaScript", + "name": "d3kit", + "nameWithOwner": "twitter/d3kit", + "primaryLanguage": { + "color": "#f1e05a", + "name": "JavaScript" + }, + "pushedAt": "2021-11-01T17:23:07Z", + "repositoryTopics": "", + "stargazers": 427, + "watchers": 104 + }, + "twitter/dict_minimize": { + "descriptionHTML": "
Access scipy optimizers from your favorite deep learning framework.
", + "forkCount": 19, + "homepageUrl": "", + "isPrivate": false, + "languages": "Python Shell", + "name": "dict_minimize", + "nameWithOwner": "twitter/dict_minimize", + "primaryLanguage": { + "color": "#3572A5", + "name": "Python" + }, + "pushedAt": "2023-04-10T11:40:20Z", + "repositoryTopics": "scipy scipy-stack", + "stargazers": 74, + "watchers": 9 + }, + "twitter/diffusion-rl": { + "descriptionHTML": "
", + "forkCount": 12, + "homepageUrl": null, + "isPrivate": false, + "languages": "Python", + "name": "diffusion-rl", + "nameWithOwner": "twitter/diffusion-rl", + "primaryLanguage": { + "color": "#3572A5", + "name": "Python" + }, + "pushedAt": "2022-12-09T06:48:08Z", + "repositoryTopics": "", + "stargazers": 59, + "watchers": 6 + }, + "twitter/dodo": { + "descriptionHTML": "
The Twitter OSS Project Builder
", + "forkCount": 26, + "homepageUrl": "", + "isPrivate": false, + "languages": "Shell", + "name": "dodo", + "nameWithOwner": "twitter/dodo", + "primaryLanguage": { + "color": "#89e051", + "name": "Shell" + }, + "pushedAt": "2023-04-10T11:42:15Z", + "repositoryTopics": "finagle twitter-oss scrooge ostrich twitter-server finatra sbt util", + "stargazers": 32, + "watchers": 26 + }, + "twitter/dodo-build": { + "descriptionHTML": "
A Github Action for running Dodo: The Twitter OSS Project Builder
", + "forkCount": 11, + "homepageUrl": "https://github.com/twitter/dodo", + "isPrivate": false, + "languages": "TypeScript JavaScript", + "name": "dodo-build", + "nameWithOwner": "twitter/dodo-build", + "primaryLanguage": { + "color": "#3178c6", + "name": "TypeScript" + }, + "pushedAt": "2023-04-10T11:37:03Z", + "repositoryTopics": "", + "stargazers": 3, + "watchers": 3 + }, + "twitter/effectivescala": { + "descriptionHTML": "
Twitter's Effective Scala Guide
", + "forkCount": 636, + "homepageUrl": "https://twitter.github.io/effectivescala", + "isPrivate": false, + "languages": "Makefile Shell HTML", + "name": "effectivescala", + "nameWithOwner": "twitter/effectivescala", + "primaryLanguage": { + "color": "#e34c26", + "name": "HTML" + }, + "pushedAt": "2023-04-10T11:47:00Z", + "repositoryTopics": "", + "stargazers": 2233, + "watchers": 264 + }, + "twitter/elephant-bird": { + "descriptionHTML": "
Twitter's collection of LZO and Protocol Buffer-related Hadoop, Pig, Hive, and HBase code.
", + "forkCount": 402, + "homepageUrl": "", + "isPrivate": false, + "languages": "Java", + "name": "elephant-bird", + "nameWithOwner": "twitter/elephant-bird", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2023-04-10T11:31:57Z", + "repositoryTopics": "", + "stargazers": 1135, + "watchers": 192 + }, + "twitter/fatcache": { + "descriptionHTML": "
Memcache on SSD
", + "forkCount": 186, + "homepageUrl": "", + "isPrivate": false, + "languages": "C", + "name": "fatcache", + "nameWithOwner": "twitter/fatcache", + "primaryLanguage": { + "color": "#555555", + "name": "C" + }, + "pushedAt": "2021-11-01T18:32:51Z", + "repositoryTopics": "", + "stargazers": 1302, + "watchers": 209 + }, + "twitter/finagle": { + "descriptionHTML": "
A fault tolerant, protocol-agnostic RPC system
", + "forkCount": 1465, + "homepageUrl": "https://twitter.github.io/finagle", + "isPrivate": false, + "languages": "Scala", + "name": "finagle", + "nameWithOwner": "twitter/finagle", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-21T16:06:48Z", + "repositoryTopics": "rpc distributed-systems finagle http http2 thrift mysql memcached redis zipkin java scala", + "stargazers": 8631, + "watchers": 564 + }, + "twitter/finatra": { + "descriptionHTML": "
Fast, testable, Scala services built on TwitterServer and Finagle
", + "forkCount": 423, + "homepageUrl": "https://twitter.github.io/finatra/", + "isPrivate": false, + "languages": "Java Scala Starlark", + "name": "finatra", + "nameWithOwner": "twitter/finatra", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-10T11:22:24Z", + "repositoryTopics": "scala finagle twitter-server http framework microservices thrift guice slf4j testing", + "stargazers": 2252, + "watchers": 216 + }, + "twitter/focus": { + "descriptionHTML": "
Focus aligns Git worktree content based on outlines of a repository's Bazel build graph. Focused repos are sparse, shallow, and thin and unlock markedly better performance in large repos.
", + "forkCount": 19, + "homepageUrl": "", + "isPrivate": false, + "languages": "Rust", + "name": "focus", + "nameWithOwner": "twitter/focus", + "primaryLanguage": { + "color": "#dea584", + "name": "Rust" + }, + "pushedAt": "2023-03-25T01:34:54Z", + "repositoryTopics": "bazel git source-control sparse-checkout", + "stargazers": 84, + "watchers": 6 + }, + "twitter/gatekeeper-service": { + "descriptionHTML": "
GateKeeper is a service built to automate the manual steps involved in onboarding, offboarding, and lost asset scenarios.
", + "forkCount": 18, + "homepageUrl": "", + "isPrivate": false, + "languages": "Python HTML", + "name": "gatekeeper-service", + "nameWithOwner": "twitter/gatekeeper-service", + "primaryLanguage": { + "color": "#3572A5", + "name": "Python" + }, + "pushedAt": "2023-02-19T21:23:35Z", + "repositoryTopics": "", + "stargazers": 34, + "watchers": 14 + }, + "twitter/go-bindata": { + "descriptionHTML": "
", + "forkCount": 37, + "homepageUrl": null, + "isPrivate": false, + "languages": "Go", + "name": "go-bindata", + "nameWithOwner": "twitter/go-bindata", + "primaryLanguage": { + "color": "#00ADD8", + "name": "Go" + }, + "pushedAt": "2023-04-10T11:23:03Z", + "repositoryTopics": "", + "stargazers": 67, + "watchers": 11 + }, + "twitter/google-tag-manager-base-tag": { + "descriptionHTML": "
", + "forkCount": 7, + "homepageUrl": null, + "isPrivate": false, + "languages": "Smarty", + "name": "google-tag-manager-base-tag", + "nameWithOwner": "twitter/google-tag-manager-base-tag", + "primaryLanguage": { + "color": "#f0c040", + "name": "Smarty" + }, + "pushedAt": "2022-08-25T20:15:22Z", + "repositoryTopics": "", + "stargazers": 3, + "watchers": 5 + }, + "twitter/google-tag-manager-event-tag": { + "descriptionHTML": "
", + "forkCount": 8, + "homepageUrl": null, + "isPrivate": false, + "languages": "Smarty", + "name": "google-tag-manager-event-tag", + "nameWithOwner": "twitter/google-tag-manager-event-tag", + "primaryLanguage": { + "color": "#f0c040", + "name": "Smarty" + }, + "pushedAt": "2022-08-25T20:16:31Z", + "repositoryTopics": "", + "stargazers": 3, + "watchers": 5 + }, + "twitter/gpl-commitment": { + "descriptionHTML": "
Twitter's GPL Cooperation Commitment
", + "forkCount": 11, + "homepageUrl": "", + "isPrivate": false, + "languages": "", + "name": "gpl-commitment", + "nameWithOwner": "twitter/gpl-commitment", + "primaryLanguage": null, + "pushedAt": "2021-07-13T18:48:10Z", + "repositoryTopics": "", + "stargazers": 5, + "watchers": 8 + }, + "twitter/groupcache": { + "descriptionHTML": "
groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
", + "forkCount": 11, + "homepageUrl": "", + "isPrivate": false, + "languages": "Go", + "name": "groupcache", + "nameWithOwner": "twitter/groupcache", + "primaryLanguage": { + "color": "#00ADD8", + "name": "Go" + }, + "pushedAt": "2023-04-10T11:48:17Z", + "repositoryTopics": "", + "stargazers": 21, + "watchers": 9 + }, + "twitter/hadoop-lzo": { + "descriptionHTML": "
Refactored version of code.google.com/hadoop-gpl-compression for hadoop 0.20
", + "forkCount": 335, + "homepageUrl": "", + "isPrivate": false, + "languages": "Shell Java C", + "name": "hadoop-lzo", + "nameWithOwner": "twitter/hadoop-lzo", + "primaryLanguage": { + "color": "#89e051", + "name": "Shell" + }, + "pushedAt": "2023-04-10T11:34:31Z", + "repositoryTopics": "", + "stargazers": 542, + "watchers": 150 + }, + "twitter/hbc": { + "descriptionHTML": "
A Java HTTP client for consuming Twitter's realtime Streaming API
", + "forkCount": 386, + "homepageUrl": "https://developer.twitter.com/en/docs/tweets/filter-realtime/overview", + "isPrivate": false, + "languages": "Java", + "name": "hbc", + "nameWithOwner": "twitter/hbc", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2022-04-06T19:20:25Z", + "repositoryTopics": "twitter4j stream java realtime tweets", + "stargazers": 962, + "watchers": 194 + }, + "twitter/hogan.js": { + "descriptionHTML": "
A compiler for the Mustache templating language
", + "forkCount": 469, + "homepageUrl": "http://twitter.github.io/hogan.js", + "isPrivate": false, + "languages": "JavaScript", + "name": "hogan.js", + "nameWithOwner": "twitter/hogan.js", + "primaryLanguage": { + "color": "#f1e05a", + "name": "JavaScript" + }, + "pushedAt": "2023-04-10T11:35:08Z", + "repositoryTopics": "", + "stargazers": 5137, + "watchers": 249 + }, + "twitter/hpack": { + "descriptionHTML": "
Header Compression for HTTP/2
", + "forkCount": 63, + "homepageUrl": "https://twitter.com/http_2", + "isPrivate": false, + "languages": "Java", + "name": "hpack", + "nameWithOwner": "twitter/hpack", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2023-04-10T11:35:45Z", + "repositoryTopics": "", + "stargazers": 192, + "watchers": 126 + }, + "twitter/hraven": { + "descriptionHTML": "
hRaven collects run time data and statistics from MapReduce jobs in an easily queryable format
", + "forkCount": 76, + "homepageUrl": "https://twitter.com/twitterhadoop", + "isPrivate": false, + "languages": "Java", + "name": "hraven", + "nameWithOwner": "twitter/hraven", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2022-01-14T18:50:25Z", + "repositoryTopics": "", + "stargazers": 127, + "watchers": 135 + }, + "twitter/iago2": { + "descriptionHTML": "
A load generator, built for engineers
", + "forkCount": 16, + "homepageUrl": "", + "isPrivate": false, + "languages": "Scala", + "name": "iago2", + "nameWithOwner": "twitter/iago2", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-10T11:31:15Z", + "repositoryTopics": "", + "stargazers": 25, + "watchers": 8 + }, + "twitter/innovators-patent-agreement": { + "descriptionHTML": "
Innovators Patent Agreement (IPA)
", + "forkCount": 140, + "homepageUrl": "", + "isPrivate": false, + "languages": "", + "name": "innovators-patent-agreement", + "nameWithOwner": "twitter/innovators-patent-agreement", + "primaryLanguage": null, + "pushedAt": "2016-06-14T06:33:54Z", + "repositoryTopics": "", + "stargazers": 919, + "watchers": 177 + }, + "twitter/interactive": { + "descriptionHTML": "
Twitter interactive visualization
", + "forkCount": 79, + "homepageUrl": "https://twitter.github.io/interactive", + "isPrivate": false, + "languages": "CSS HTML JavaScript", + "name": "interactive", + "nameWithOwner": "twitter/interactive", + "primaryLanguage": { + "color": "#e34c26", + "name": "HTML" + }, + "pushedAt": "2021-11-01T17:11:32Z", + "repositoryTopics": "", + "stargazers": 212, + "watchers": 152 + }, + "twitter/ios-twitter-apache-thrift": { + "descriptionHTML": "
A thrift encoding and decoding library for Swift
", + "forkCount": 15, + "homepageUrl": "", + "isPrivate": false, + "languages": "Swift", + "name": "ios-twitter-apache-thrift", + "nameWithOwner": "twitter/ios-twitter-apache-thrift", + "primaryLanguage": { + "color": "#F05138", + "name": "Swift" + }, + "pushedAt": "2022-02-04T22:44:49Z", + "repositoryTopics": "", + "stargazers": 34, + "watchers": 6 + }, + "twitter/ios-twitter-image-pipeline": { + "descriptionHTML": "
Twitter Image Pipeline is a robust and performant image loading and caching framework for iOS clients
", + "forkCount": 113, + "homepageUrl": "", + "isPrivate": false, + "languages": "Objective-C C Shell Makefile", + "name": "ios-twitter-image-pipeline", + "nameWithOwner": "twitter/ios-twitter-image-pipeline", + "primaryLanguage": { + "color": "#555555", + "name": "C" + }, + "pushedAt": "2023-04-10T11:44:24Z", + "repositoryTopics": "image-pipeline ios swift objective-c twitter cache", + "stargazers": 1843, + "watchers": 38 + }, + "twitter/ios-twitter-logging-service": { + "descriptionHTML": "
Twitter Logging Service is a robust and performant logging framework for iOS clients
", + "forkCount": 42, + "homepageUrl": "", + "isPrivate": false, + "languages": "Objective-C Swift", + "name": "ios-twitter-logging-service", + "nameWithOwner": "twitter/ios-twitter-logging-service", + "primaryLanguage": { + "color": "#438eff", + "name": "Objective-C" + }, + "pushedAt": "2021-10-21T17:29:09Z", + "repositoryTopics": "ios twitter logging xcode", + "stargazers": 292, + "watchers": 16 + }, + "twitter/ios-twitter-network-layer": { + "descriptionHTML": "
Twitter Network Layer is a scalable and feature rich network layer built on top of NSURLSession for Apple platforms
", + "forkCount": 37, + "homepageUrl": "", + "isPrivate": false, + "languages": "Objective-C", + "name": "ios-twitter-network-layer", + "nameWithOwner": "twitter/ios-twitter-network-layer", + "primaryLanguage": { + "color": "#438eff", + "name": "Objective-C" + }, + "pushedAt": "2021-10-21T17:28:27Z", + "repositoryTopics": "ios networking twitter nsurlsession http framework", + "stargazers": 569, + "watchers": 24 + }, + "twitter/joauth": { + "descriptionHTML": "
A Java library for authenticating HTTP Requests using OAuth
", + "forkCount": 67, + "homepageUrl": "", + "isPrivate": false, + "languages": "Scala Java", + "name": "joauth", + "nameWithOwner": "twitter/joauth", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2023-04-10T11:47:38Z", + "repositoryTopics": "", + "stargazers": 206, + "watchers": 131 + }, + "twitter/labella.js": { + "descriptionHTML": "
Placing labels on a timeline without overlap.
", + "forkCount": 155, + "homepageUrl": "http://twitter.github.io/labella.js/", + "isPrivate": false, + "languages": "JavaScript", + "name": "labella.js", + "nameWithOwner": "twitter/labella.js", + "primaryLanguage": { + "color": "#f1e05a", + "name": "JavaScript" + }, + "pushedAt": "2023-04-10T11:45:02Z", + "repositoryTopics": "", + "stargazers": 3843, + "watchers": 81 + }, + "twitter/libwatchman": { + "descriptionHTML": "
A C interface to watchman
", + "forkCount": 34, + "homepageUrl": "", + "isPrivate": false, + "languages": "Shell C", + "name": "libwatchman", + "nameWithOwner": "twitter/libwatchman", + "primaryLanguage": { + "color": "#555555", + "name": "C" + }, + "pushedAt": "2019-06-07T00:45:31Z", + "repositoryTopics": "", + "stargazers": 44, + "watchers": 121 + }, + "twitter/metrics": { + "descriptionHTML": "
", + "forkCount": 35, + "homepageUrl": "https://twitter.github.io/metrics", + "isPrivate": false, + "languages": "", + "name": "metrics", + "nameWithOwner": "twitter/metrics", + "primaryLanguage": null, + "pushedAt": "2023-04-24T02:31:21Z", + "repositoryTopics": "", + "stargazers": 60, + "watchers": 7 + }, + "twitter/netty-http2": { + "descriptionHTML": "
HTTP/2 for Netty
", + "forkCount": 61, + "homepageUrl": "", + "isPrivate": false, + "languages": "Java", + "name": "netty-http2", + "nameWithOwner": "twitter/netty-http2", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2023-04-10T11:45:39Z", + "repositoryTopics": "", + "stargazers": 119, + "watchers": 115 + }, + "twitter/nodes": { + "descriptionHTML": "
A library to implement asynchronous dependency graphs for services in Java
", + "forkCount": 49, + "homepageUrl": "", + "isPrivate": false, + "languages": "Java", + "name": "nodes", + "nameWithOwner": "twitter/nodes", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2023-04-10T11:33:53Z", + "repositoryTopics": "", + "stargazers": 235, + "watchers": 29 + }, + "twitter/opensource-website": { + "descriptionHTML": "
Twitter's open source website, identifying projects we've released, organizations we support, and the work we do to support open source.
", + "forkCount": 757, + "homepageUrl": "https://opensource.twitter.dev", + "isPrivate": false, + "languages": "HTML Python SCSS", + "name": "opensource-website", + "nameWithOwner": "twitter/opensource-website", + "primaryLanguage": { + "color": "#c6538c", + "name": "SCSS" + }, + "pushedAt": "2023-04-20T14:44:27Z", + "repositoryTopics": "ospo", + "stargazers": 2583, + "watchers": 427 + }, + "twitter/ossdecks": { + "descriptionHTML": "
Repository for Twitter Open Source Decks
", + "forkCount": 18, + "homepageUrl": null, + "isPrivate": false, + "languages": "", + "name": "ossdecks", + "nameWithOwner": "twitter/ossdecks", + "primaryLanguage": null, + "pushedAt": "2019-04-18T15:29:53Z", + "repositoryTopics": "", + "stargazers": 11, + "watchers": 213 + }, + "twitter/pelikan": { + "descriptionHTML": "
Pelikan is Twitter's unified cache backend
", + "forkCount": 173, + "homepageUrl": "", + "isPrivate": false, + "languages": "C Rust", + "name": "pelikan", + "nameWithOwner": "twitter/pelikan", + "primaryLanguage": { + "color": "#555555", + "name": "C" + }, + "pushedAt": "2023-02-04T00:37:08Z", + "repositoryTopics": "", + "stargazers": 1865, + "watchers": 52 + }, + "twitter/repo-scaffolding": { + "descriptionHTML": "
Tools for creating repos based on open source standards and best practices
", + "forkCount": 22, + "homepageUrl": "", + "isPrivate": false, + "languages": "", + "name": "repo-scaffolding", + "nameWithOwner": "twitter/repo-scaffolding", + "primaryLanguage": null, + "pushedAt": "2021-08-17T17:58:52Z", + "repositoryTopics": "", + "stargazers": 27, + "watchers": 7 + }, + "twitter/rezolus": { + "descriptionHTML": "
Systems performance telemetry
", + "forkCount": 108, + "homepageUrl": null, + "isPrivate": false, + "languages": "Rust C", + "name": "rezolus", + "nameWithOwner": "twitter/rezolus", + "primaryLanguage": { + "color": "#dea584", + "name": "Rust" + }, + "pushedAt": "2023-03-31T20:23:13Z", + "repositoryTopics": "", + "stargazers": 1499, + "watchers": 36 + }, + "twitter/rpc-perf": { + "descriptionHTML": "
A tool for benchmarking RPC services
", + "forkCount": 79, + "homepageUrl": null, + "isPrivate": false, + "languages": "Rust", + "name": "rpc-perf", + "nameWithOwner": "twitter/rpc-perf", + "primaryLanguage": { + "color": "#dea584", + "name": "Rust" + }, + "pushedAt": "2023-04-03T22:55:54Z", + "repositoryTopics": "", + "stargazers": 456, + "watchers": 27 + }, + "twitter/rsc": { + "descriptionHTML": "
Experimental Scala compiler focused on compilation speed
", + "forkCount": 52, + "homepageUrl": "", + "isPrivate": false, + "languages": "Scala", + "name": "rsc", + "nameWithOwner": "twitter/rsc", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2021-10-21T17:27:10Z", + "repositoryTopics": "", + "stargazers": 1250, + "watchers": 80 + }, + "twitter/rustcommon": { + "descriptionHTML": "
Common Twitter Rust lib
", + "forkCount": 39, + "homepageUrl": null, + "isPrivate": false, + "languages": "Rust", + "name": "rustcommon", + "nameWithOwner": "twitter/rustcommon", + "primaryLanguage": { + "color": "#dea584", + "name": "Rust" + }, + "pushedAt": "2022-10-19T21:26:21Z", + "repositoryTopics": "", + "stargazers": 333, + "watchers": 12 + }, + "twitter/sbf": { + "descriptionHTML": "
", + "forkCount": 33, + "homepageUrl": null, + "isPrivate": false, + "languages": "Java", + "name": "sbf", + "nameWithOwner": "twitter/sbf", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2023-04-10T11:32:34Z", + "repositoryTopics": "", + "stargazers": 127, + "watchers": 6 + }, + "twitter/scala_school": { + "descriptionHTML": "
Lessons in the Fundamentals of Scala
", + "forkCount": 1152, + "homepageUrl": "https://twitter.github.io/scala_school", + "isPrivate": false, + "languages": "Scala Java Shell HTML", + "name": "scala_school", + "nameWithOwner": "twitter/scala_school", + "primaryLanguage": { + "color": "#e34c26", + "name": "HTML" + }, + "pushedAt": "2023-04-10T11:42:57Z", + "repositoryTopics": "", + "stargazers": 3694, + "watchers": 331 + }, + "twitter/scala_school2": { + "descriptionHTML": "
Scala School 2
", + "forkCount": 79, + "homepageUrl": null, + "isPrivate": false, + "languages": "Scala CSS JavaScript HTML", + "name": "scala_school2", + "nameWithOwner": "twitter/scala_school2", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2021-10-08T21:12:10Z", + "repositoryTopics": "", + "stargazers": 344, + "watchers": 155 + }, + "twitter/scalding": { + "descriptionHTML": "
A Scala API for Cascading
", + "forkCount": 710, + "homepageUrl": "http://twitter.com/scalding", + "isPrivate": false, + "languages": "Java Scala", + "name": "scalding", + "nameWithOwner": "twitter/scalding", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2022-05-17T20:59:09Z", + "repositoryTopics": "", + "stargazers": 3428, + "watchers": 324 + }, + "twitter/scoot": { + "descriptionHTML": "
Scoot is a distributed task runner, supporting both a proprietary API and Bazel's Remote Execution.
", + "forkCount": 46, + "homepageUrl": "", + "isPrivate": false, + "languages": "Go", + "name": "scoot", + "nameWithOwner": "twitter/scoot", + "primaryLanguage": { + "color": "#00ADD8", + "name": "Go" + }, + "pushedAt": "2023-04-10T11:28:45Z", + "repositoryTopics": "", + "stargazers": 342, + "watchers": 14 + }, + "twitter/scrooge": { + "descriptionHTML": "
A Thrift parser/generator
", + "forkCount": 253, + "homepageUrl": "http://twitter.github.io/scrooge/", + "isPrivate": false, + "languages": "Scala Java Mustache", + "name": "scrooge", + "nameWithOwner": "twitter/scrooge", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-10T11:39:43Z", + "repositoryTopics": "finagle thrift code-generation lua java scala android cocoa", + "stargazers": 772, + "watchers": 174 + }, + "twitter/second-control-probability-distributions": { + "descriptionHTML": "
", + "forkCount": 11, + "homepageUrl": null, + "isPrivate": false, + "languages": "", + "name": "second-control-probability-distributions", + "nameWithOwner": "twitter/second-control-probability-distributions", + "primaryLanguage": null, + "pushedAt": "2021-05-06T00:36:46Z", + "repositoryTopics": "", + "stargazers": 4, + "watchers": 8 + }, + "twitter/sqrl": { + "descriptionHTML": "
A Safe, Stateful Rules Language for Event Streams
", + "forkCount": 22, + "homepageUrl": "", + "isPrivate": false, + "languages": "TypeScript SCSS", + "name": "sqrl", + "nameWithOwner": "twitter/sqrl", + "primaryLanguage": { + "color": "#3178c6", + "name": "TypeScript" + }, + "pushedAt": "2023-04-10T11:38:24Z", + "repositoryTopics": "", + "stargazers": 98, + "watchers": 11 + }, + "twitter/sslconfig": { + "descriptionHTML": "
Twitter's OpenSSL Configuration
", + "forkCount": 28, + "homepageUrl": "", + "isPrivate": false, + "languages": "", + "name": "sslconfig", + "nameWithOwner": "twitter/sslconfig", + "primaryLanguage": null, + "pushedAt": "2021-10-08T21:04:29Z", + "repositoryTopics": "", + "stargazers": 40, + "watchers": 108 + }, + "twitter/storehaus": { + "descriptionHTML": "
Storehaus is a library that makes it easy to work with asynchronous key value stores
", + "forkCount": 90, + "homepageUrl": "", + "isPrivate": false, + "languages": "Scala", + "name": "storehaus", + "nameWithOwner": "twitter/storehaus", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2020-07-17T18:18:03Z", + "repositoryTopics": "", + "stargazers": 466, + "watchers": 141 + }, + "twitter/summingbird": { + "descriptionHTML": "
Streaming MapReduce with Scalding and Storm
", + "forkCount": 271, + "homepageUrl": "https://twitter.com/summingbird", + "isPrivate": false, + "languages": "Scala", + "name": "summingbird", + "nameWithOwner": "twitter/summingbird", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2022-01-19T17:31:02Z", + "repositoryTopics": "", + "stargazers": 2135, + "watchers": 296 + }, + "twitter/the-algorithm": { + "descriptionHTML": "
Source code for Twitter's Recommendation Algorithm
", + "forkCount": 11568, + "homepageUrl": "https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm", + "isPrivate": false, + "languages": "Starlark Java Scala", + "name": "the-algorithm", + "nameWithOwner": "twitter/the-algorithm", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-23T19:02:36Z", + "repositoryTopics": "", + "stargazers": 55808, + "watchers": 332 + }, + "twitter/the-algorithm-ml": { + "descriptionHTML": "
Source code for Twitter's Recommendation Algorithm
", + "forkCount": 2127, + "homepageUrl": "https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm", + "isPrivate": false, + "languages": "Python", + "name": "the-algorithm-ml", + "nameWithOwner": "twitter/the-algorithm-ml", + "primaryLanguage": { + "color": "#3572A5", + "name": "Python" + }, + "pushedAt": "2023-04-11T18:15:11Z", + "repositoryTopics": "", + "stargazers": 9168, + "watchers": 86 + }, + "twitter/thrift_client": { + "descriptionHTML": "
A Thrift client wrapper that encapsulates some common failover behavior
", + "forkCount": 83, + "homepageUrl": "http://github.com/twitter/thrift_client", + "isPrivate": false, + "languages": "Ruby", + "name": "thrift_client", + "nameWithOwner": "twitter/thrift_client", + "primaryLanguage": { + "color": "#701516", + "name": "Ruby" + }, + "pushedAt": "2019-06-06T01:36:44Z", + "repositoryTopics": "", + "stargazers": 195, + "watchers": 118 + }, + "twitter/tormenta": { + "descriptionHTML": "
Scala extensions for Storm
", + "forkCount": 38, + "homepageUrl": "", + "isPrivate": false, + "languages": "Scala Shell Java", + "name": "tormenta", + "nameWithOwner": "twitter/tormenta", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2019-06-07T01:01:52Z", + "repositoryTopics": "", + "stargazers": 132, + "watchers": 137 + }, + "twitter/twemcache": { + "descriptionHTML": "
Twemcache is the Twitter Memcached
", + "forkCount": 164, + "homepageUrl": "https://twitter.com/twemcache", + "isPrivate": false, + "languages": "Python Ruby C", + "name": "twemcache", + "nameWithOwner": "twitter/twemcache", + "primaryLanguage": { + "color": "#555555", + "name": "C" + }, + "pushedAt": "2021-11-01T18:31:37Z", + "repositoryTopics": "", + "stargazers": 927, + "watchers": 226 + }, + "twitter/twemoji": { + "descriptionHTML": "
Emoji for everyone. https://twemoji.twitter.com/
", + "forkCount": 1883, + "homepageUrl": "", + "isPrivate": false, + "languages": "HTML JavaScript", + "name": "twemoji", + "nameWithOwner": "twitter/twemoji", + "primaryLanguage": { + "color": "#e34c26", + "name": "HTML" + }, + "pushedAt": "2023-04-01T14:14:01Z", + "repositoryTopics": "emoji twemoji", + "stargazers": 15952, + "watchers": 358 + }, + "twitter/twemoji-parser": { + "descriptionHTML": "
A simple library for identifying emoji entities within a string in order to render them as Twemoji.
", + "forkCount": 55, + "homepageUrl": "", + "isPrivate": false, + "languages": "JavaScript Scala Shell", + "name": "twemoji-parser", + "nameWithOwner": "twitter/twemoji-parser", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-10T11:30:38Z", + "repositoryTopics": "", + "stargazers": 147, + "watchers": 17 + }, + "twitter/twemproxy": { + "descriptionHTML": "
A fast, light-weight proxy for memcached and redis
", + "forkCount": 2054, + "homepageUrl": "", + "isPrivate": false, + "languages": "Python Shell C", + "name": "twemproxy", + "nameWithOwner": "twitter/twemproxy", + "primaryLanguage": { + "color": "#555555", + "name": "C" + }, + "pushedAt": "2023-01-14T09:22:36Z", + "repositoryTopics": "", + "stargazers": 11772, + "watchers": 824 + }, + "twitter/twitter-cldr-js": { + "descriptionHTML": "
JavaScript implementation of the ICU (International Components for Unicode) that uses the Common Locale Data Repository to format dates, plurals, and more. Based on twitter-cldr-rb.
", + "forkCount": 62, + "homepageUrl": "", + "isPrivate": false, + "languages": "JavaScript", + "name": "twitter-cldr-js", + "nameWithOwner": "twitter/twitter-cldr-js", + "primaryLanguage": { + "color": "#f1e05a", + "name": "JavaScript" + }, + "pushedAt": "2023-04-10T11:27:13Z", + "repositoryTopics": "", + "stargazers": 340, + "watchers": 124 + }, + "twitter/twitter-cldr-npm": { + "descriptionHTML": "
TwitterCldr npm package
", + "forkCount": 37, + "homepageUrl": "", + "isPrivate": false, + "languages": "JavaScript", + "name": "twitter-cldr-npm", + "nameWithOwner": "twitter/twitter-cldr-npm", + "primaryLanguage": { + "color": "#f1e05a", + "name": "JavaScript" + }, + "pushedAt": "2023-04-10T11:26:13Z", + "repositoryTopics": "", + "stargazers": 49, + "watchers": 116 + }, + "twitter/twitter-cldr-rb": { + "descriptionHTML": "
Ruby implementation of the ICU (International Components for Unicode) that uses the Common Locale Data Repository to format dates, plurals, and more.
", + "forkCount": 95, + "homepageUrl": "", + "isPrivate": false, + "languages": "Ruby", + "name": "twitter-cldr-rb", + "nameWithOwner": "twitter/twitter-cldr-rb", + "primaryLanguage": { + "color": "#701516", + "name": "Ruby" + }, + "pushedAt": "2023-04-10T11:28:06Z", + "repositoryTopics": "", + "stargazers": 659, + "watchers": 119 + }, + "twitter/twitter-korean-text": { + "descriptionHTML": "
Korean tokenizer
", + "forkCount": 175, + "homepageUrl": null, + "isPrivate": false, + "languages": "Java Scala", + "name": "twitter-korean-text", + "nameWithOwner": "twitter/twitter-korean-text", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-10T11:33:16Z", + "repositoryTopics": "", + "stargazers": 812, + "watchers": 175 + }, + "twitter/twitter-server": { + "descriptionHTML": "
Twitter-Server defines a template from which services at Twitter are built
", + "forkCount": 257, + "homepageUrl": "http://twitter.github.io/twitter-server/", + "isPrivate": false, + "languages": "Scala", + "name": "twitter-server", + "nameWithOwner": "twitter/twitter-server", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-10T11:41:38Z", + "repositoryTopics": "finagle finatra", + "stargazers": 1447, + "watchers": 192 + }, + "twitter/twitter-text": { + "descriptionHTML": "
Twitter Text Libraries. This code is used at Twitter to tokenize and parse text to meet the expectations for what can be used on the platform.
", + "forkCount": 505, + "homepageUrl": "https://developer.twitter.com/en/docs/counting-characters", + "isPrivate": false, + "languages": "Ruby HTML Java JavaScript Objective-C", + "name": "twitter-text", + "nameWithOwner": "twitter/twitter-text", + "primaryLanguage": { + "color": "#e34c26", + "name": "HTML" + }, + "pushedAt": "2023-04-10T11:36:23Z", + "repositoryTopics": "twitter-text tweet twitter unicode emoji java ruby nodejs objective-c", + "stargazers": 2975, + "watchers": 183 + }, + "twitter/twitter.github.io": { + "descriptionHTML": "
", + "forkCount": 16, + "homepageUrl": "", + "isPrivate": false, + "languages": "HTML", + "name": "twitter.github.io", + "nameWithOwner": "twitter/twitter.github.io", + "primaryLanguage": { + "color": "#e34c26", + "name": "HTML" + }, + "pushedAt": "2021-10-11T21:40:05Z", + "repositoryTopics": "", + "stargazers": 70, + "watchers": 8 + }, + "twitter/twurl": { + "descriptionHTML": "
OAuth-enabled curl for the Twitter API
", + "forkCount": 335, + "homepageUrl": "https://developer.twitter.com", + "isPrivate": false, + "languages": "Ruby", + "name": "twurl", + "nameWithOwner": "twitter/twurl", + "primaryLanguage": { + "color": "#701516", + "name": "Ruby" + }, + "pushedAt": "2023-04-10T11:43:41Z", + "repositoryTopics": "twitter twitter-api ruby curl cli twurl", + "stargazers": 1747, + "watchers": 195 + }, + "twitter/typeahead.js": { + "descriptionHTML": "
typeahead.js is a fast and fully-featured autocomplete library
", + "forkCount": 3301, + "homepageUrl": "http://twitter.github.io/typeahead.js/", + "isPrivate": false, + "languages": "JavaScript", + "name": "typeahead.js", + "nameWithOwner": "twitter/typeahead.js", + "primaryLanguage": { + "color": "#f1e05a", + "name": "JavaScript" + }, + "pushedAt": "2023-04-14T07:24:33Z", + "repositoryTopics": "", + "stargazers": 16512, + "watchers": 561 + }, + "twitter/util": { + "descriptionHTML": "
Wonderful reusable code from Twitter
", + "forkCount": 591, + "homepageUrl": "https://twitter.github.io/util", + "isPrivate": false, + "languages": "Scala Java", + "name": "util", + "nameWithOwner": "twitter/util", + "primaryLanguage": { + "color": "#c22d40", + "name": "Scala" + }, + "pushedAt": "2023-04-11T23:17:40Z", + "repositoryTopics": "finagle scala utility", + "stargazers": 2631, + "watchers": 230 + }, + "twitter/vireo": { + "descriptionHTML": "
Vireo is a lightweight and versatile video processing library written in C++11
", + "forkCount": 106, + "homepageUrl": "", + "isPrivate": false, + "languages": "Makefile Shell C++", + "name": "vireo", + "nameWithOwner": "twitter/vireo", + "primaryLanguage": { + "color": "#f34b7d", + "name": "C++" + }, + "pushedAt": "2021-10-21T17:26:15Z", + "repositoryTopics": "", + "stargazers": 899, + "watchers": 50 + }, + "twitter/whiskey": { + "descriptionHTML": "
HTTP library for Android (beta)
", + "forkCount": 33, + "homepageUrl": "", + "isPrivate": false, + "languages": "Java", + "name": "whiskey", + "nameWithOwner": "twitter/whiskey", + "primaryLanguage": { + "color": "#b07219", + "name": "Java" + }, + "pushedAt": "2023-04-10T11:48:53Z", + "repositoryTopics": "", + "stargazers": 130, + "watchers": 89 + }, + "twitter/wordpress": { + "descriptionHTML": "
The official Twitter plugin for WordPress. Embed Twitter content and grow your audience on Twitter.
", + "forkCount": 137, + "homepageUrl": "https://github.com/twitter/wordpress/wiki", + "isPrivate": false, + "languages": "PHP", + "name": "wordpress", + "nameWithOwner": "twitter/wordpress", + "primaryLanguage": { + "color": "#4F5D95", + "name": "PHP" + }, + "pushedAt": "2022-04-06T19:15:29Z", + "repositoryTopics": "twitter-plugin php wordpress twitter-cards", + "stargazers": 302, + "watchers": 126 + }, + "twitter/zktraffic": { + "descriptionHTML": "
ZooKeeper protocol analyzer and stats gathering daemon
", + "forkCount": 55, + "homepageUrl": null, + "isPrivate": false, + "languages": "Python", + "name": "zktraffic", + "nameWithOwner": "twitter/zktraffic", + "primaryLanguage": { + "color": "#3572A5", + "name": "Python" + }, + "pushedAt": "2023-04-10T11:49:30Z", + "repositoryTopics": "", + "stargazers": 164, + "watchers": 118 + }, + "twitterdev/search-tweets-python": { + "descriptionHTML": "
Python client for the Twitter 'search Tweets' and 'count Tweets' endpoints (v2/Labs/premium/enterprise). Now supports Twitter API v2 /recent and /all search endpoints.
", + "forkCount": 245, + "homepageUrl": "https://twitterdev.github.io/search-tweets-python/", + "isPrivate": false, + "languages": "Python", + "name": "search-tweets-python", + "nameWithOwner": "twitterdev/search-tweets-python", + "primaryLanguage": { + "color": "#3572A5", + "name": "Python" + }, + "pushedAt": "2023-01-27T00:19:33Z", + "repositoryTopics": "search twitter python twitter-api twitterapi enterprise premium twitter-api-v2", + "stargazers": 759, + "watchers": 39 + } +} diff --git a/data/projects_tracked.json b/data/projects_tracked.json index caeef50e2..92ab8eb72 100644 --- a/data/projects_tracked.json +++ b/data/projects_tracked.json @@ -1,195 +1,188 @@ { - "orgs": [ - "twitter", - "twitterdev", - "pantsbuild" - ], - "projects": { - "twitter": [ - "scoot", - "wordpress", - "scrooge", - "torch-distlearn", - "analytics-infra-governance", - "activerecord-reputation-system", - "zktraffic", - "hbc", - "spitball", - "second-control-probability-distributions", - "periscope-live-engagement-unity-sdk", - "twurl", - "twitter-server", - "interactive", - "sekhmet", - "gatekeeper-service", - "bijection", - "torch-dataset", - "GraphJet", - "groupcache", - "libwatchman", - "typeahead.js", - "algebird", - "scala-json", - "ios-twitter-image-pipeline", - "finatra", - "distributedlog", - "d3kit", - "hogan.js", - "scala_school2", - "meta-learning-lstm", - "twitter-cldr-rb", - "hpack", - "cloudhopper-commons", - "finatra-activator-thrift-seed", - "css-flip", - "whiskey", - "chill", - "rpc-perf", - "twemcache", - "sslconfig", - "joauth", - "caladrius", - "CocoaSPDY", - "BreakoutDetection", - "ccommon", - "gpl-commitment", - "pelikan", - "ossdecks", - "elephant-bird", - "SentenTree", - "hraven", - "effectivescala", - "cdk", - "innovators-patent-agreement", - "twitter-cldr-js", - "hadoop-lzo", - "finatra-misc", - "torch-thrift", - "torch-autograd", - "nodes", - "util", - "curation-style-guide", - "summingbird", - "netty-http2", - "recess", - "twemoji", - "torch-twrl", - "scala_school", - "dodo", - "twitter-korean-text", - "fatcache", - "Serial", - "twitter-text", - "torch-decisiontree", - "scalding", - "twemproxy", - "secure_headers", - "tormenta", - "hdfs-du", - "ios-twitter-network-layer", - "vireo", - "torch-ipc", - "commons", - "twemoji-parser", - "iago2", - "pycascading", - "storehaus", - "finagle", - "twitter.github.io", - "sqrl", - "ios-twitter-logging-service", - "cassovary", - "finatra-activator-http-seed", - "labella.js", - "diffy", - "ostrich", - "cli-guide.js", - "go-bindata", - "twitter-cldr-npm", - "AnomalyDetection", - "bookkeeper", - "code-of-conduct", - "repo-scaffolding", - "ambrose", - "rsc", - "thrift_client" - ], - "twitterdev": [ - "Gnip-Analysis-Pipeline", - "chrome-extension-tweetbar", - "postman-twitter-ads-api", - "streaming-demos-node", - "Gnip-Insights-Interface", - "engagement-api-explorer", - "engagement-api-client-ruby", - "preview-docs_feedback-api", - "twitter-webhook-boilerplate-node", - "twitter-realtime-voting", - "twitter-ruby-ads-sdk", - "search-tweets-python", - "user-matching-campaign", - "Gnip-Analysis-Tools", - "twitterkit-timelines-ios", - "TwitterKitSample", - "twitter-python-ads-sdk", - "labs-sample-code", - "do_more_with_twitter_data", - "SnowBotDev", - "analytics-tag-check", - "django-rest-apis", - "Photobooth", - "feedback-api-backfill", - "live-event-android", - "twitter-leaderboard", - "Gnip-Tweet-Evaluation", - "sample-angular-node", - "chrome-extension-collections", - "python-enterprise-scripts", - "collections-webserver", - "node-timeline-visualizations", - "data-ads-sample", - "spotatweet", - "historator", - "Gnip-Search-API-Utilities", - "Gnip-Python-Historical-Utilities", - "ruby-app-tweetmap", - "rails-historical-api-demo", - "cards-player-samples", - "enterprise-scripts-python", - "large-video-upload-python", - "parking", - "sinatra-cf-twitter", - "Gnip-Stream-Collector-Metrics", - "ruby-enterprise-scripts", - "api-rosetta-code", - "Data-Science-45min-Intros", - "twauth-web", - "make-music-together", - "account-activity-dashboard", - "audience-api-client-ruby", - "Gnip-Filter-Optimization", - "gnip-python-sdk", - "twitter-streaming-blink1", - "tweet-updates", - "twttr-kinesis", - "ads-platform-tools", - "android-samples", - "twitter-stream-globe", - "ton-upload", - "tweet_parser", - "search-tweets-ruby", - "account-activity-dashboard-enterprise", - "autohook", - "leadgencard-endpoint", - "tweet-search", - "tweather", - "Gnip-Trend-Detection", - "web-recipes", - "twitter-for-bigquery" - ], - "pantsbuild": [ - "pants", - "pex" - ] - } + "orgs": ["twitter", "twitterdev", "pantsbuild"], + "projects": { + "twitter": [ + "scoot", + "wordpress", + "scrooge", + "torch-distlearn", + "analytics-infra-governance", + "activerecord-reputation-system", + "zktraffic", + "hbc", + "spitball", + "second-control-probability-distributions", + "periscope-live-engagement-unity-sdk", + "twurl", + "twitter-server", + "interactive", + "sekhmet", + "gatekeeper-service", + "bijection", + "torch-dataset", + "GraphJet", + "groupcache", + "libwatchman", + "typeahead.js", + "algebird", + "scala-json", + "ios-twitter-image-pipeline", + "finatra", + "distributedlog", + "d3kit", + "hogan.js", + "scala_school2", + "meta-learning-lstm", + "twitter-cldr-rb", + "hpack", + "cloudhopper-commons", + "finatra-activator-thrift-seed", + "css-flip", + "whiskey", + "chill", + "rpc-perf", + "twemcache", + "sslconfig", + "joauth", + "caladrius", + "CocoaSPDY", + "BreakoutDetection", + "ccommon", + "gpl-commitment", + "pelikan", + "ossdecks", + "elephant-bird", + "SentenTree", + "hraven", + "effectivescala", + "cdk", + "innovators-patent-agreement", + "twitter-cldr-js", + "hadoop-lzo", + "finatra-misc", + "torch-thrift", + "torch-autograd", + "nodes", + "util", + "curation-style-guide", + "summingbird", + "netty-http2", + "recess", + "twemoji", + "torch-twrl", + "scala_school", + "dodo", + "twitter-korean-text", + "fatcache", + "Serial", + "twitter-text", + "torch-decisiontree", + "scalding", + "twemproxy", + "secure_headers", + "tormenta", + "hdfs-du", + "ios-twitter-network-layer", + "vireo", + "torch-ipc", + "commons", + "twemoji-parser", + "iago2", + "pycascading", + "storehaus", + "finagle", + "twitter.github.io", + "sqrl", + "ios-twitter-logging-service", + "cassovary", + "finatra-activator-http-seed", + "labella.js", + "diffy", + "ostrich", + "cli-guide.js", + "go-bindata", + "twitter-cldr-npm", + "AnomalyDetection", + "bookkeeper", + "code-of-conduct", + "repo-scaffolding", + "ambrose", + "rsc", + "thrift_client" + ], + "twitterdev": [ + "Gnip-Analysis-Pipeline", + "chrome-extension-tweetbar", + "postman-twitter-ads-api", + "streaming-demos-node", + "Gnip-Insights-Interface", + "engagement-api-explorer", + "engagement-api-client-ruby", + "preview-docs_feedback-api", + "twitter-webhook-boilerplate-node", + "twitter-realtime-voting", + "twitter-ruby-ads-sdk", + "search-tweets-python", + "user-matching-campaign", + "Gnip-Analysis-Tools", + "twitterkit-timelines-ios", + "TwitterKitSample", + "twitter-python-ads-sdk", + "labs-sample-code", + "do_more_with_twitter_data", + "SnowBotDev", + "analytics-tag-check", + "django-rest-apis", + "Photobooth", + "feedback-api-backfill", + "live-event-android", + "twitter-leaderboard", + "Gnip-Tweet-Evaluation", + "sample-angular-node", + "chrome-extension-collections", + "python-enterprise-scripts", + "collections-webserver", + "node-timeline-visualizations", + "data-ads-sample", + "spotatweet", + "historator", + "Gnip-Search-API-Utilities", + "Gnip-Python-Historical-Utilities", + "ruby-app-tweetmap", + "rails-historical-api-demo", + "cards-player-samples", + "enterprise-scripts-python", + "large-video-upload-python", + "parking", + "sinatra-cf-twitter", + "Gnip-Stream-Collector-Metrics", + "ruby-enterprise-scripts", + "api-rosetta-code", + "Data-Science-45min-Intros", + "twauth-web", + "make-music-together", + "account-activity-dashboard", + "audience-api-client-ruby", + "Gnip-Filter-Optimization", + "gnip-python-sdk", + "twitter-streaming-blink1", + "tweet-updates", + "twttr-kinesis", + "ads-platform-tools", + "android-samples", + "twitter-stream-globe", + "ton-upload", + "tweet_parser", + "search-tweets-ruby", + "account-activity-dashboard-enterprise", + "autohook", + "leadgencard-endpoint", + "tweet-search", + "tweather", + "Gnip-Trend-Detection", + "web-recipes", + "twitter-for-bigquery" + ], + "pantsbuild": ["pants", "pex"] + } } diff --git a/data/repo_ids.json b/data/repo_ids.json index 5eaedfe43..6cb7900ab 100644 --- a/data/repo_ids.json +++ b/data/repo_ids.json @@ -1,710 +1,699 @@ { - "finagle": [ - { - "repo_id": 26101, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "ios-twitter-network-layer": [ - ], - "hdfs-du": [ - { - "repo_id": 26124, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "twemcache": [ - { - "repo_id": 26121, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "hadoop-lzo": [ - { - "repo_id": 26132, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "GraphJet": [ - { - "repo_id": 26176, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "vireo": [ - { - "repo_id": 26178, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "cassovary": [ - { - "repo_id": 26113, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "twemproxy": [ - { - "repo_id": 26114, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "diffy": [ - { - "repo_id": 26164, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "CocoaSPDY": [ - { - "repo_id": 26148, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "thrift_client": [ - { - "repo_id": 26133, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "bijection": [ - { - "repo_id": 26135, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "repo-scaffolding": [ - ], - "gatekeeper-service": [ - ], - "torch-dataset": [ - { - "repo_id": 26171, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "hpack": [ - { - "repo_id": 26149, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "pelikan": [ - { - "repo_id": 26166, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "groupcache": [ - ], - "twemoji": [ - { - "repo_id": 26131, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "finatra-activator-thrift-seed": [ - { - "repo_id": 26177, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "fatcache": [ - { - "repo_id": 26136, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "spitball": [ - { - "repo_id": 26098, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "dodo": [ - { - "repo_id": 26180, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "Serial": [ - { - "repo_id": 26188, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "recess": [ - { - "repo_id": 26117, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "sqrl": [ - ], - "iago": [ - { - "repo_id": 26120, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "util": [ - { - "repo_id": 26106, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "d3kit": [ - { - "repo_id": 26155, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "zktraffic": [ - { - "repo_id": 26153, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "scala_school2": [ - { - "repo_id": 26143, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "joauth": [ - { - "repo_id": 26102, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "twitter-cldr-js": [ - { - "repo_id": 26122, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "curation-style-guide": [ - ], - "rsc": [ - { - "repo_id": 26189, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "cdk": [ - { - "repo_id": 26145, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "scala-json": [ - { - "repo_id": 26201, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "ambrose": [ - { - "repo_id": 26118, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "commons": [ - { - "repo_id": 26104, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "sslconfig": [ - { - "repo_id": 26157, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "code-of-conduct": [ - { - "repo_id": 26146, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "activerecord-reputation-system": [ - { - "repo_id": 26119, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "twitter-cldr-rb": [ - { - "repo_id": 26115, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "torch-twrl": [ - { - "repo_id": 26183, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "whiskey": [ - { - "repo_id": 26160, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "twemoji-parser": [ - ], - "storehaus": [ - { - "repo_id": 26137, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "ios-twitter-image-pipeline": [ - { - "repo_id": 26185, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "plumage.js": [ - { - "repo_id": 26152, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "second-control-probability-distributions": [ - { - "repo_id": 26134, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "twitter-server": [ - { - "repo_id": 26140, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "go-bindata": [ - { - "repo_id": 26193, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "twitter-korean-text": [ - { - "repo_id": 26197, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "summingbird": [ - { - "repo_id": 26127, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "wordpress": [ - { - "repo_id": 26195, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "twitter-text": [ - { - "repo_id": 26199, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "cli-guide.js": [ - { - "repo_id": 26161, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "gpl-commitment": [ - ], - "tormenta": [ - { - "repo_id": 26126, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "ccommon": [ - { - "repo_id": 26167, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "css-flip": [ - { - "repo_id": 26150, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "twitter.github.io": [ - ], - "torch-decisiontree": [ - { - "repo_id": 26186, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "pycascading": [ - { - "repo_id": 26108, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "ostrich": [ - { - "repo_id": 26099, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "nodes": [ - { - "repo_id": 26182, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "sekhmet": [ - { - "repo_id": 26194, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "caladrius": [ - ], - "BreakoutDetection": [ - { - "repo_id": 26196, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "ossdecks": [ - { - "repo_id": 26191, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "scala_school": [ - { - "repo_id": 26100, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "chill": [ - { - "repo_id": 26128, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "hbc": [ - { - "repo_id": 26138, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "analytics-infra-governance": [ - { - "repo_id": 26181, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "torch-ipc": [ - { - "repo_id": 26172, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "finatra-misc": [ - { - "repo_id": 26165, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "torch-thrift": [ - { - "repo_id": 26174, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "typeahead.js": [ - { - "repo_id": 26139, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "netty-http2": [ - { - "repo_id": 26141, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "iago2": [ - ], - "torch-autograd": [ - { - "repo_id": 26168, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "hraven": [ - { - "repo_id": 26144, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "elephant-bird": [ - { - "repo_id": 26096, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "labella.js": [ - { - "repo_id": 26162, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "algebird": [ - { - "repo_id": 26123, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "scoot": [ - { - "repo_id": 26170, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "effectivescala": [ - { - "repo_id": 26111, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "ios-twitter-logging-service": [ - { - "repo_id": 26179, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "hogan.js": [ - { - "repo_id": 26109, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "meta-learning-lstm": [ - { - "repo_id": 26184, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "torch-distlearn": [ - { - "repo_id": 26173, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "finatra-activator-http-seed": [ - { - "repo_id": 26163, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "scrooge": [ - { - "repo_id": 26107, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "twitter-cldr-npm": [ - { - "repo_id": 26125, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "scalding": [ - { - "repo_id": 26110, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "innovators-patent-agreement": [ - { - "repo_id": 26116, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "secure_headers": [ - { - "repo_id": 26130, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "distributedlog": [ - { - "repo_id": 26175, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "cloudhopper-commons": [ - { - "repo_id": 26147, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "periscope-live-engagement-unity-sdk": [ - { - "repo_id": 26192, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "rpc-perf": [ - { - "repo_id": 26169, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "interactive": [ - { - "repo_id": 26142, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "twurl": [ - { - "repo_id": 26095, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "libwatchman": [ - { - "repo_id": 26151, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "SentenTree": [ - { - "repo_id": 26154, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "bookkeeper": [ - { - "repo_id": 26129, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "AnomalyDetection": [ - { - "repo_id": 26200, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ], - "finatra": [ - { - "repo_id": 26112, - "repo_group_id": 25155, - "rg_name": "Twitter" - } - ] + "finagle": [ + { + "repo_id": 26101, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "ios-twitter-network-layer": [], + "hdfs-du": [ + { + "repo_id": 26124, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "twemcache": [ + { + "repo_id": 26121, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "hadoop-lzo": [ + { + "repo_id": 26132, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "GraphJet": [ + { + "repo_id": 26176, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "vireo": [ + { + "repo_id": 26178, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "cassovary": [ + { + "repo_id": 26113, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "twemproxy": [ + { + "repo_id": 26114, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "diffy": [ + { + "repo_id": 26164, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "CocoaSPDY": [ + { + "repo_id": 26148, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "thrift_client": [ + { + "repo_id": 26133, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "bijection": [ + { + "repo_id": 26135, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "repo-scaffolding": [], + "gatekeeper-service": [], + "torch-dataset": [ + { + "repo_id": 26171, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "hpack": [ + { + "repo_id": 26149, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "pelikan": [ + { + "repo_id": 26166, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "groupcache": [], + "twemoji": [ + { + "repo_id": 26131, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "finatra-activator-thrift-seed": [ + { + "repo_id": 26177, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "fatcache": [ + { + "repo_id": 26136, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "spitball": [ + { + "repo_id": 26098, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "dodo": [ + { + "repo_id": 26180, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "Serial": [ + { + "repo_id": 26188, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "recess": [ + { + "repo_id": 26117, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "sqrl": [], + "iago": [ + { + "repo_id": 26120, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "util": [ + { + "repo_id": 26106, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "d3kit": [ + { + "repo_id": 26155, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "zktraffic": [ + { + "repo_id": 26153, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "scala_school2": [ + { + "repo_id": 26143, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "joauth": [ + { + "repo_id": 26102, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "twitter-cldr-js": [ + { + "repo_id": 26122, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "curation-style-guide": [], + "rsc": [ + { + "repo_id": 26189, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "cdk": [ + { + "repo_id": 26145, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "scala-json": [ + { + "repo_id": 26201, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "ambrose": [ + { + "repo_id": 26118, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "commons": [ + { + "repo_id": 26104, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "sslconfig": [ + { + "repo_id": 26157, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "code-of-conduct": [ + { + "repo_id": 26146, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "activerecord-reputation-system": [ + { + "repo_id": 26119, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "twitter-cldr-rb": [ + { + "repo_id": 26115, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "torch-twrl": [ + { + "repo_id": 26183, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "whiskey": [ + { + "repo_id": 26160, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "twemoji-parser": [], + "storehaus": [ + { + "repo_id": 26137, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "ios-twitter-image-pipeline": [ + { + "repo_id": 26185, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "plumage.js": [ + { + "repo_id": 26152, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "second-control-probability-distributions": [ + { + "repo_id": 26134, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "twitter-server": [ + { + "repo_id": 26140, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "go-bindata": [ + { + "repo_id": 26193, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "twitter-korean-text": [ + { + "repo_id": 26197, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "summingbird": [ + { + "repo_id": 26127, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "wordpress": [ + { + "repo_id": 26195, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "twitter-text": [ + { + "repo_id": 26199, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "cli-guide.js": [ + { + "repo_id": 26161, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "gpl-commitment": [], + "tormenta": [ + { + "repo_id": 26126, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "ccommon": [ + { + "repo_id": 26167, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "css-flip": [ + { + "repo_id": 26150, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "twitter.github.io": [], + "torch-decisiontree": [ + { + "repo_id": 26186, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "pycascading": [ + { + "repo_id": 26108, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "ostrich": [ + { + "repo_id": 26099, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "nodes": [ + { + "repo_id": 26182, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "sekhmet": [ + { + "repo_id": 26194, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "caladrius": [], + "BreakoutDetection": [ + { + "repo_id": 26196, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "ossdecks": [ + { + "repo_id": 26191, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "scala_school": [ + { + "repo_id": 26100, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "chill": [ + { + "repo_id": 26128, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "hbc": [ + { + "repo_id": 26138, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "analytics-infra-governance": [ + { + "repo_id": 26181, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "torch-ipc": [ + { + "repo_id": 26172, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "finatra-misc": [ + { + "repo_id": 26165, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "torch-thrift": [ + { + "repo_id": 26174, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "typeahead.js": [ + { + "repo_id": 26139, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "netty-http2": [ + { + "repo_id": 26141, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "iago2": [], + "torch-autograd": [ + { + "repo_id": 26168, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "hraven": [ + { + "repo_id": 26144, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "elephant-bird": [ + { + "repo_id": 26096, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "labella.js": [ + { + "repo_id": 26162, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "algebird": [ + { + "repo_id": 26123, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "scoot": [ + { + "repo_id": 26170, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "effectivescala": [ + { + "repo_id": 26111, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "ios-twitter-logging-service": [ + { + "repo_id": 26179, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "hogan.js": [ + { + "repo_id": 26109, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "meta-learning-lstm": [ + { + "repo_id": 26184, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "torch-distlearn": [ + { + "repo_id": 26173, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "finatra-activator-http-seed": [ + { + "repo_id": 26163, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "scrooge": [ + { + "repo_id": 26107, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "twitter-cldr-npm": [ + { + "repo_id": 26125, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "scalding": [ + { + "repo_id": 26110, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "innovators-patent-agreement": [ + { + "repo_id": 26116, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "secure_headers": [ + { + "repo_id": 26130, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "distributedlog": [ + { + "repo_id": 26175, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "cloudhopper-commons": [ + { + "repo_id": 26147, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "periscope-live-engagement-unity-sdk": [ + { + "repo_id": 26192, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "rpc-perf": [ + { + "repo_id": 26169, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "interactive": [ + { + "repo_id": 26142, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "twurl": [ + { + "repo_id": 26095, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "libwatchman": [ + { + "repo_id": 26151, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "SentenTree": [ + { + "repo_id": 26154, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "bookkeeper": [ + { + "repo_id": 26129, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "AnomalyDetection": [ + { + "repo_id": 26200, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ], + "finatra": [ + { + "repo_id": 26112, + "repo_group_id": 25155, + "rg_name": "Twitter" + } + ] } diff --git a/layouts/404.html b/layouts/404.html index 9489c97db..595bdc8dd 100644 --- a/layouts/404.html +++ b/layouts/404.html @@ -1,9 +1,9 @@ {{ define "main" }}
-
-

404

-

Page not found :(

-

ProTip: Make sure you don't have a trailing slash in the URL

-
+
+

404

+

Page not found :(

+

ProTip: Make sure you don't have a trailing slash in the URL

+
{{ end }} diff --git a/layouts/_default/memberships.html b/layouts/_default/memberships.html index 83cc3a020..b2f354eb3 100644 --- a/layouts/_default/memberships.html +++ b/layouts/_default/memberships.html @@ -1,31 +1,35 @@ {{ define "content" }} -
- {{ range $.Site.Data.memberships }} -
- - +
+ {{ range $.Site.Data.memberships }} +
+ + -
- -

{{ .name }}

+
+ +

{{ .name }}

- - {{ with .twitter }} - - @{{ . }} - - {{ end }} -
+ + {{ with .twitter }} + + @{{ . }} + + {{ end }} +
- -

{{ .description }}

+ +

{{ .description }}

- - {{ with .website }} - Visit - {{ end }} - -
- {{ end }} -
+ + {{ with .website }} + Visit + {{ end }} +
+ {{ end }} +
{{ end }} diff --git a/layouts/_default/projects.html b/layouts/_default/projects.html index 9ae1705d0..035f9dd55 100644 --- a/layouts/_default/projects.html +++ b/layouts/_default/projects.html @@ -1,29 +1,77 @@ {{ define "header" }}

Projects

-