diff --git a/gatsby-node.js b/gatsby-node.js index 8c05d8b5e..16d1564dd 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -1,4 +1,3 @@ -const siteConfig = require('./site-config'); const { createFilePath } = require('gatsby-source-filesystem'); const appInsights = require('applicationinsights'); const WebpackAssetsManifest = require('webpack-assets-manifest'); @@ -239,13 +238,6 @@ exports.createPages = async ({ graphql, actions }) => { }); }); }); - - const profilePage = require.resolve('./src/pages/profile.js'); - createPage({ - path: `${siteConfig.pathPrefix}/people/`, - matchPath: `${siteConfig.pathPrefix}/people/:gitHubUsername`, - component: profilePage, - }); }; exports.sourceNodes = async ({ actions, createNodeId }) => { diff --git a/site-config.js b/site-config.js index 2f2e4f34c..ac7344299 100644 --- a/site-config.js +++ b/site-config.js @@ -6,7 +6,6 @@ const titles = { '/user/': `User Rules`, '/orphaned/': `Orphaned Rules`, '/archived/': `Archived Rules`, - '/profile/': `Profile`, }; module.exports = { diff --git a/src/components/comments-not-connected/comments-not-connected.js b/src/components/comments-not-connected/comments-not-connected.js deleted file mode 100644 index 1e8723c1a..000000000 --- a/src/components/comments-not-connected/comments-not-connected.js +++ /dev/null @@ -1,100 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import PropTypes from 'prop-types'; - -import { - GetDisqusUser, - ConnectUserCommentsAccount, - DisqusError, -} from '../../services/apiService'; -import { useAuthService } from '../../services/authService'; -import DisqusIcon from '-!svg-react-loader!../../images/disqusIcon.svg'; - -import { useAuth0 } from '@auth0/auth0-react'; -import useAppInsights from '../../hooks/useAppInsights'; - -const CommentsNotConnected = ({ userCommentsConnected, setState, state }) => { - const [disqusUsername, setDisqusUsername] = useState(); - const [errorMessage, setErrorMessage] = useState(null); - - const { user } = useAuth0(); - const { fetchIdToken } = useAuthService(); - - const { trackException } = useAppInsights(); - - function connectAccounts() { - if (disqusUsername) { - GetDisqusUser(disqusUsername) - .then(async (success) => { - if (success.code == DisqusError.InvalidArg) { - setErrorMessage('Username does not exist'); - } - const jwt = await fetchIdToken(); - ConnectUserCommentsAccount( - { - UserId: user.sub, - CommentsUserId: success.response.id, - }, - jwt - ) - .then((response) => { - setState(state + 1); - if (response == 409) { - setErrorMessage( - 'Another user is already using this comments account' - ); - } - }) - .catch((err) => { - trackException(err, 3); - }); - }) - .catch((err) => { - trackException(err, 3); - }); - } - } - - useEffect(() => {}, [userCommentsConnected, state]); - return ( -
- -
-
- setDisqusUsername(e.target.value)} - /> -
- {/* eslint-disable-next-line jsx-a11y/anchor-has-content */} - - Forgot username? -
-

{errorMessage}

-
- - -
-
- ); -}; - -CommentsNotConnected.propTypes = { - userCommentsConnected: PropTypes.bool, - setState: PropTypes.func, - state: PropTypes.number, -}; - -export default CommentsNotConnected; diff --git a/src/components/dropdown-card/dropdown-card.js b/src/components/dropdown-card/dropdown-card.js index 24fed0dd6..a091fede6 100644 --- a/src/components/dropdown-card/dropdown-card.js +++ b/src/components/dropdown-card/dropdown-card.js @@ -1,10 +1,9 @@ import React from 'react'; -import { navigate } from 'gatsby'; import PropTypes from 'prop-types'; import { useAuth0 } from '@auth0/auth0-react'; import GitHubIcon from '-!svg-react-loader!../../images/github.svg'; -const DropdownCard = ({ setOpen }) => { +const DropdownCard = () => { const { logout, user } = useAuth0(); return ( <> @@ -20,15 +19,6 @@ const DropdownCard = ({ setOpen }) => {
- - )} - - -
- -
-
-
-

- - Read more - -

-
- - ); - })} - - - )} - {type == 'comment' && userCommentsConnected ? ( - - ) : ( - <> - )} - - ); -}; - -RuleList.propTypes = { - rules: PropTypes.array.isRequired, - viewStyle: PropTypes.string.isRequired, - type: PropTypes.string.isRequired, - onRemoveClick: PropTypes.func.isRequired, - userCommentsConnected: PropTypes.bool, - setState: PropTypes.func, - state: PropTypes.number, - disqusPrivacyEnabled: PropTypes.bool, -}; - -export default ProfileContent; diff --git a/src/components/profile-filter-menu/profile-filter-menu.js b/src/components/profile-filter-menu/profile-filter-menu.js deleted file mode 100644 index d7c88e0f5..000000000 --- a/src/components/profile-filter-menu/profile-filter-menu.js +++ /dev/null @@ -1,200 +0,0 @@ -/* eslint-disable no-console */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ -import React from 'react'; -import PropTypes from 'prop-types'; -import BookmarkIcon from '-!svg-react-loader!../../images/bookmarkIcon.svg'; -import DisqusIcon from '-!svg-react-loader!../../images/disqusIcon.svg'; - -const ProfileFilterMenu = ({ - selectedFilter, - setSelectedFilter, - superLikedRulesCount, - likedRulesCount, - dislikedRulesCount, - superDislikedRulesCount, - bookmarkedRulesCount, - commentedRulesCount, -}) => { - return ( - <> -
-
{ - setSelectedFilter(Filter.Bookmarks); - }} - > - Bookmarks - -
{bookmarkedRulesCount ?? 0}
-
-
{ - setSelectedFilter(Filter.Comments); - }} - > - Comments - -
{commentedRulesCount ?? 0}
-
-
{ - setSelectedFilter(Filter.SuperLikes); - }} - > -
- Love it -
-
{superLikedRulesCount ?? 0}
-
-
{ - setSelectedFilter(Filter.Likes); - }} - > -
- Agree -
-
{likedRulesCount ?? 0}
-
-
{ - setSelectedFilter(Filter.Dislikes); - }} - > -
- Disagree -
-
{dislikedRulesCount ?? 0}
-
-
{ - setSelectedFilter(Filter.SuperDislikes); - }} - > -
- No way -
-
{superDislikedRulesCount ?? 0}
-
-
- - ); -}; - -ProfileFilterMenu.propTypes = { - selectedFilter: PropTypes.number.isRequired, - setSelectedFilter: PropTypes.func.isRequired, - superLikedRulesCount: PropTypes.number, - likedRulesCount: PropTypes.number, - dislikedRulesCount: PropTypes.number, - superDislikedRulesCount: PropTypes.number, - bookmarkedRulesCount: PropTypes.number, - commentedRulesCount: PropTypes.number, -}; - -export const Filter = { - Comments: 5, - Bookmarks: 4, - SuperLikes: 3, - Likes: 2, - Dislikes: 1, - SuperDislikes: 0, -}; -export default ProfileFilterMenu; diff --git a/src/pages/profile.js b/src/pages/profile.js deleted file mode 100644 index 05dce2404..000000000 --- a/src/pages/profile.js +++ /dev/null @@ -1,173 +0,0 @@ -/* eslint-disable no-console */ -import React, { useEffect, useState } from 'react'; -import PropTypes from 'prop-types'; -import { useStaticQuery, graphql } from 'gatsby'; -import Breadcrumb from '../components/breadcrumb/breadcrumb'; -import ProfileBadge from '../components/profile-badge/profile-badge'; -import ProfileContent from '../components/profile-content/profile-content'; -import ProfileFilterMenu from '../components/profile-filter-menu/profile-filter-menu'; -import GitHubIcon from '-!svg-react-loader!../images/github.svg'; -import DisqusIcon from '-!svg-react-loader!../images/disqusIcon.svg'; -import { useAuth0 } from '@auth0/auth0-react'; -import { GetUser } from '../services/apiService'; -import { useAuthService } from '../services/authService'; -import useAppInsights from '../hooks/useAppInsights'; - -const Profile = ({ data, gitHubUsername }) => { - const [selectedFilter, setSelectedFilter] = useState(4); - const [state, setState] = useState(0); - const { user, isAuthenticated, loginWithRedirect } = useAuth0(); - const { fetchIdToken } = useAuthService(); - const [commentsConnected, setCommentsConnected] = useState(false); - const [bookmarkedRulesCount, setBookmarkedRulesCount] = useState(); - const [superLikedRulesCount, setSuperLikedRulesCount] = useState(); - const [likedRulesCount, setLikedRulesCount] = useState(); - const [dislikedRulesCount, setDislikedRulesCount] = useState(); - const [superDislikedRulesCount, setSuperDislikedRulesCount] = useState(); - const [commentedRulesCount, setCommentedRulesCount] = useState(); - const { trackException } = useAppInsights(); - - async function CheckUser() { - const jwt = await fetchIdToken(); - GetUser(user.sub, jwt) - .then((success) => { - setCommentsConnected(success.commentsConnected); - }) - .catch((err) => { - trackException(err, 3); - }); - } - - useEffect(() => { - if (isAuthenticated) { - CheckUser(); - } - }, [state, user]); - if (isAuthenticated) { - return ( - <> - -
-
-
-
-
- -
-
- {isAuthenticated ? user.name : ''} -
- - - GitHub account - - {commentsConnected ? ( - - - Disqus account - - ) : null} -
- -
-
- -
-
-
- - ); - } else { - return ( -
- -
{gitHubUsername}
-
- ); - } -}; -Profile.propTypes = { - data: PropTypes.object.isRequired, - gitHubUsername: PropTypes.string, -}; - -function ProfileWithQuery(props) { - const data = useStaticQuery(graphql` - query ProfilePageQuery { - allMarkdownRemark(filter: { frontmatter: { type: { eq: "rule" } } }) { - nodes { - excerpt(format: HTML, pruneLength: 500) - frontmatter { - title - uri - guid - authors { - title - } - } - htmlAst - } - } - } - `); - - return ; -} - -ProfilePage.propTypes = { - gitHubUsername: PropTypes.string, - props: PropTypes.any, -}; - -export default function ProfilePage({ gitHubUsername, props }) { - return ( - <> - - - ); -} diff --git a/src/services/apiService.js b/src/services/apiService.js index 07cd12fed..af4d52b60 100644 --- a/src/services/apiService.js +++ b/src/services/apiService.js @@ -1,67 +1,5 @@ -/* Reactions */ - const API_URL = process.env.API_BASE_URL + '/api'; const GITHUB_API_PAT = process.env.GITHUB_API_PAT; -const DISQUS_API_KEY = process.env.DISQUS_API_KEY; - -export async function GetReactionForUser(ruleId, userId) { - var query = userId - ? `${API_URL}/GetReactionsFunction?rule_guid=${ruleId}&user_id=${userId}` - : `${API_URL}/GetReactionsFunction?rule_guid=${ruleId}`; - const response = await fetch(query); - return await response.json(); -} - -export async function GetAllLikedDisliked(userId) { - var query = `${API_URL}/GetAllReactionsFunction?&user_id=${userId}`; - const response = await fetch(query); - return await response.json(); -} - -export async function PostReactionForUser(data, token) { - const isEmpty = Object.values(data).some((x) => x == null); - if (!data || isEmpty) { - return { - error: true, - message: 'Data is empty or in the wrong format', - }; - } - - const response = await fetch(`${API_URL}/ReactFunction`, { - method: 'POST', - headers: { - Authorization: `Bearer ${token}`, - 'Content-Type': 'application/json', - }, - body: JSON.stringify(data), - }); - return response.json(); -} - -export const ReactionType = { - SuperLike: 3, - Like: 2, - DisLike: 1, - SuperDisLike: 0, -}; - -export async function RemoveReaction(data, token) { - if (!data || Object.values(data).some((x) => !x)) { - return { - error: true, - message: 'Data is empty or in the wrong format', - }; - } - const response = await fetch(`${API_URL}/RemoveReactionFunction`, { - method: 'POST', - headers: { - Authorization: `Bearer ${token}`, - 'Content-Type': 'application/json', - }, - body: JSON.stringify(data), - }); - return response.json(); -} /* Bookmarks */ @@ -171,74 +109,3 @@ export async function GetSecretContent(Id, token) { }); return response.json(); } - -/* User */ - -export async function GetUser(userId, token) { - const response = await fetch(`${API_URL}/GetUserFunction?user_id=${userId}`, { - method: 'GET', - headers: { - Authorization: `Bearer ${token}`, - }, - }); - - if (!response.ok) return null; - - return response.json(); -} - -export async function ConnectUserCommentsAccount(data, token) { - if (!data || Object.values(data).some((x) => !x)) { - return { - error: true, - message: 'Data is empty or in the wrong format', - }; - } - const response = await fetch(`${API_URL}/ConnectUserCommentsFunction`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${token}`, - }, - body: JSON.stringify(data), - }); - return response.status; -} - -export async function RemoveUserCommentsAccount(data, token) { - if (!data || Object.values(data).some((x) => !x)) { - return { - error: true, - message: 'Data is empty or in the wrong format', - }; - } - await fetch(`${API_URL}/RemoveUserCommentsAccountFunction`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${token}`, - }, - body: JSON.stringify(data), - }); -} - -export async function GetDisqusUser(commentsUsername) { - const response = await fetch( - `https://disqus.com/api/3.0/users/details.json?user=username:${commentsUsername}&api_key=${DISQUS_API_KEY}` - ); - return response.json(); -} - -/* Comments */ -export async function GetDisqusUserCommentsList(commentsUserId) { - const response = await fetch( - `https://disqus.com/api/3.0/users/listPosts.json?user=${commentsUserId}&api_key=${DISQUS_API_KEY}&related=thread` - ); - return response.json(); -} - -export const DisqusError = { - Success: 0, - AccessTooLow: 12, - InvalidArg: 2, -}; diff --git a/src/style.css b/src/style.css index 9fdb63424..6574940ba 100644 --- a/src/style.css +++ b/src/style.css @@ -816,7 +816,7 @@ blockquote :last-child { } .rule-content a:hover, -.rule-category a:hover:not(.github-link, .disqus-link, .get-username-btn::after) { +.rule-category a:hover:not(.github-link) { text-decoration:underline; @apply text-ssw-red; } @@ -1282,7 +1282,7 @@ div.bad-example { margin-top: 0; } -.tooltip, .disqus-tooltip, .info-tooltip, .forgot-username-tooltip { +.tooltip, .info-tooltip { position: relative; margin: 2px 0; height: 2.5rem; @@ -1338,24 +1338,10 @@ div.bad-example { margin-left: -58px; } -.disqus-tooltip { - margin: auto 1rem auto auto; - height: 3rem; -} - .info-tooltip { margin: 1.85rem auto 0 0; } -.forgot-username-tooltip { - margin: 1.85rem auto 0 0; - text-decoration: none; -} - -.forgot-username-tooltip a { - text-decoration: none; -} - .tooltiptext { visibility: hidden; width: 100px; @@ -1375,13 +1361,6 @@ div.bad-example { bottom: 105%; } -.disqus-tooltip .tooltiptext { - margin-left: 0 !important; - bottom: 2.5rem; - left: -1.6rem; - width: 5rem; -} - .info-tooltip .tooltiptext { left: 65%; margin-left: -79px; @@ -1389,12 +1368,6 @@ div.bad-example { width: 10rem; } -.forgot-username-tooltip .tooltiptext{ - right: -4.4rem; - margin-bottom: 1rem; - width: 10rem; -} - .tooltiptext::after { content: ""; position: absolute; @@ -1407,7 +1380,7 @@ div.bad-example { } /* Show the tooltip text when you mouse over the tooltip container */ -.tooltip:hover .tooltiptext, .disqus-tooltip:hover .tooltip, .info-tooltip:hover .tooltiptext, .forgot-username-tooltip:hover .tooltiptext{ +.tooltip:hover .tooltiptext, .info-tooltip:hover .tooltiptext{ visibility: visible; opacity: 1; padding: 0.3rem !important; @@ -1453,26 +1426,6 @@ div.bad-example { margin: 0.15rem 0.2rem 0 0; } -.dropdown-user-btn-container:before { - content: "\f007"; - font-family: FontAwesome; - font-size: 1.5rem !important; - margin: 0rem 1rem; -} - -.dropdown-user-btn-container { - color: #666666; - display: flex; - align-items: center; - margin-left: 0; - margin-bottom: 0.5rem; - font-size: 0.9rem; -} - -.dropdown-user-btn-container:hover { - @apply text-ssw-red !important; -} - .dropdown-signout-btn-container:before { content: "\f08b"; font-family: FontAwesome; @@ -1511,20 +1464,6 @@ div.bad-example { z-index: 21; } -/* Profile Page --------------------------------------------------- */ - -.no-content-message { - text-align: center; - margin: 2rem auto; -} - -.profile-header { - background-color: #f5f5f5; - padding: 3rem; - height: auto; -} - .grid-container { display: grid; grid-template-columns: 8rem auto auto; @@ -1544,43 +1483,11 @@ div.bad-example { height: 6.25rem; } -.profile-github-icon { - margin: 0.2rem 0.25rem 0 0; -} - -.profile-disqus-icon { - margin: 0.1rem 0.1rem 0 -0.15rem; - height: 1.3rem; - width: 1.3rem; - fill: #CC4141; -} - -.profile-image { - grid-row-start: 1; - grid-row-end: 3; -} - @media screen and (max-width: 600px) { .rule-content { padding: 1rem; } - .profile-image { - visibility: hidden; - grid-column: 1; - height: 0 - } - .profile-bookmark-icon, .profile-like-icon, .profile-dislike-icon{ - display: none !important; - } - .profile-large-name { - grid-column: 1; - } - .profile-github-icon { - margin: 0.2rem 0 0 0; - height: 1rem; - width: 1.8rem; - } - .github-link, .disqus-link { + .github-link { grid-column: 1 !important; padding-top: 0.75rem; } @@ -1593,9 +1500,6 @@ div.bad-example { .rule-content-title { padding: 0 !important; } - .remove-item { - padding: 0 !important; - } } @media screen and (max-width: 1024px) { .radio-button-1 { @@ -1607,32 +1511,9 @@ div.bad-example { .radio-button-3 { grid-column: unset !important; } - .profile-large-name { - font-size: 1.75rem !important; - } -} -@media screen and (max-width: 800px) { - .filter-menu { - grid-template-columns: auto !important; - margin-left: auto; - margin-right: auto; - left: 0 !important; - top: 2rem !important; - } - .menu-item { - grid-column: 1 !important; - } - .profile-header { - height: auto; - } -} - -.profile-large-name { - font-size: 1.75rem; - grid-row: 1; } -.github-link, .disqus-link { +.github-link { width: fit-content; font-size: 14; @apply text-ssw-red !important; @@ -1644,23 +1525,10 @@ div.bad-example { grid-column: 2; } -.disqus-link { - grid-row: 3; - grid-column: 2; -} - -.github-link:hover, .disqus-link:hover { +.github-link:hover { opacity: 0.8; } -.filter-menu { - top: 3rem; - position: relative; - display: grid; - grid-template-columns: auto auto auto auto auto auto auto; - column-gap: 1rem; -} - .radio-button-1 { grid-column: 2; } @@ -1671,50 +1539,6 @@ div.bad-example { grid-column: 4; } -.menu-item { - padding: 0 0.5rem 0.5rem; - text-align: center; - position: relative; - display: flex; - margin: auto; - white-space: nowrap; -} - -.menu-item:hover { - padding: 0 0.5rem 0.25rem; - border-bottom: 0.25rem solid #CC4141; - cursor: pointer; -} - -.menu-item:hover .agree-title:after, .menu-item:hover .love-title:after, .menu-item:hover .disagree-title:after, .menu-item:hover .comments-title:after, .menu-item:hover .super-disagree-title:after, .menu-item:hover .filter-menu-bookmark-icon { - @apply text-ssw-red; -} - -.bookmarks-item:after, .love-title:after, .love-title-pressed:after, .agree-title:after, .agree-title-pressed:after, .super-disagree-title:after, .super-disagree-title-pressed:after, .disagree-title:after, .disagree-title-pressed:after, .comments-title:after, .comments-title-pressed:after { - padding-left: 0.5rem; - font-family: FontAwesome; -} - -.love-title:after, .love-title-pressed:after { - content: '\f004'; -} - -.agree-title:after, .agree-title-pressed:after { - content: '\f164'; -} - -.disagree-title:after, .disagree-title-pressed:after { - content: '\f165'; -} - -.super-disagree-title:after, .super-disagree-title-pressed:after { - content: '\f05e'; -} - -.love-title-pressed:after, .agree-title-pressed:after, .disagree-title-pressed:after, .super-disagree-title-pressed:after { - @apply text-ssw-red; -} - .heading-container { display: inline-flex; background: #f5f5f5; @@ -1729,34 +1553,6 @@ div.bad-example { margin: 0.5rem 0.8rem; } -.profile-bookmark-icon, .profile-like-icon, .profile-dislike-icon { - height: 2rem; - font-size: 1.8rem !important; - margin: auto auto auto 0; -} - -.filter-menu-bookmark-icon, .filter-menu-bookmark-icon-pressed { - margin: auto; - margin-right: -0.5rem; - height: 1rem; - width: 1.8rem; -} - -.filter-menu-bookmark-icon-pressed { - @apply text-ssw-red; -} - -.filter-menu-disqus-icon, .filter-menu-disqus-icon-pressed { - margin: auto; - margin-right: -0.5rem; - height: 1.5rem; - width: 1.5rem; -} - -.filter-menu-disqus-icon-pressed { - @apply text-ssw-red; -} - .rule-heading-love:after { content: '\f004'; font-family: FontAwesome; @@ -1786,121 +1582,11 @@ div.bad-example { margin-left: 1rem; } -.remove-item, .disqus-comment-link { - margin-left: auto; - right: 3rem; - margin: auto 1rem auto auto; - font-size: 1.8rem !important; -} - -.disqus-comment-link { - cursor: pointer; -} - -.disqus-comment-link svg { - height: 50px; -} - -.remove-item { - width: 1.6rem; -} - -.remove-item:after { - content: '\f057'; - font-family: FontAwesome; - color: #ddd; -} - -.remove-item:hover:after { - @apply text-ssw-red !important; -} - .gavel-icon { height: 50px; margin-top: 10px; } -.no-tagged-message:before { - font-family: FontAwesome; - content: '\f00d'; - margin-right: 0.5rem; -} - -.username-input-box, .username-input-box-error { - border: 0.1rem solid rgb(136, 136, 136); - border-radius: 5px; - margin-top: 2rem; - width: 15rem; - height: 28px; - padding-left: .7rem; - margin-right: .3rem; - /* text-align: center; */ -} - -.username-input-box-error { - border-color: #CC4141; -} - -.connect-acc-button { - margin-left: 1.5rem; - background-color: #CC4141; - color: white; - position: relative; - /* height: 20px; */ - box-sizing: border-box; - padding: 2px 10px 2px 8px; - border-radius: 5px; - cursor: pointer; - margin-top: 2rem; - margin-bottom: 1.8rem; - height: 28px; - font-size: 1rem !important; -} - -.disconnect-acc-button { - margin: 0 4.2rem 1rem auto; - cursor: pointer; - display: flex; - vertical-align: middle; - font-size: 1rem; - color: #666; -} - -.disconnect-acc-button:before { - display: inline-block; - font-family: FontAwesome; - content: '\f00d'; - text-decoration: none !important; - margin: auto; - font-size: 1.1rem; - margin-top: -0.02rem; - padding-right: 0.4rem; -} - -.disconnect-acc-button svg { - height: 1.6rem; - width: 1.6rem; - margin-left: .3rem; -} - -.disconnect-acc-button:hover { - @apply text-ssw-red; -} - -.connect-acc-container { - text-align: center; - margin: 2rem auto; - display: grid; - grid-template-columns: 6rem auto; -} - -.disqus-large-icon { - height: 6rem; - width: 6rem; - margin: 1rem 0 1.8rem 12rem; - color: #575B5D; -} - .disqus-profile-link { @apply text-ssw-red !important; } @@ -1925,18 +1611,6 @@ div.bad-example { margin: auto 10.51rem 3rem; } -.get-username-btn::after { - font-family: FontAwesome; - content: '\f059'; - font-size: 1.4rem; - margin: 0.5rem auto; - vertical-align: middle; -} - -.get-username-btn:hover:after { - @apply text-ssw-red; -} - .form { display: inline-flex; margin: auto; @@ -1967,15 +1641,6 @@ div.bad-example { .warning-box { width: unset; } - .connect-acc-container { - text-align: center; - grid-template-rows: auto auto; - grid-template-columns: unset; - } - .disqus-large-icon { - grid-row: 1; - margin: auto; - } .form { text-align: center; grid-row: 2;