diff --git a/.azure/azure-pipelines.yml b/.azure/azure-pipelines.yml index ed936f050..eb8b148ac 100644 --- a/.azure/azure-pipelines.yml +++ b/.azure/azure-pipelines.yml @@ -7,8 +7,7 @@ trigger: none pr: branches: include: - - "*" - + - "*" pool: vmImage: ubuntu-latest @@ -24,4 +23,4 @@ stages: parameters: s3_development_bucket_url: s3://revenuecat-docs-development cloudfront_development_distribution: E3H8J4FFZ74FTY - deploy_branch: refs/heads/main \ No newline at end of file + deploy_branch: refs/heads/main diff --git a/.azure/deploy-pipeline.yml b/.azure/deploy-pipeline.yml index 4a8f8ca5d..72bc3ae0d 100644 --- a/.azure/deploy-pipeline.yml +++ b/.azure/deploy-pipeline.yml @@ -7,7 +7,7 @@ trigger: batch: true branches: include: - - main + - main pr: none @@ -27,4 +27,4 @@ stages: s3_production_bucket_url: s3://revenuecat-docs-production cloudfront_staging_distribution: E35S07LS4FQN6M cloudfront_production_distribution: E2CUF57UZ7I2JV - deploy_branch: refs/heads/main \ No newline at end of file + deploy_branch: refs/heads/main diff --git a/.azure/templates/deploy_stages.yml b/.azure/templates/deploy_stages.yml index 2b32eb6da..c6d3975f6 100644 --- a/.azure/templates/deploy_stages.yml +++ b/.azure/templates/deploy_stages.yml @@ -1,17 +1,17 @@ -stages: - - stage: Build - displayName: 'Build Docs' +stages: + - stage: Build + displayName: "Build Docs" dependsOn: [] jobs: - job: InstallAndBuild - displayName: 'Install and build' + displayName: "Install and build" pool: vmImage: "ubuntu-latest" steps: - task: NodeTool@0 inputs: - versionSpec: '20.x' - displayName: 'Install Node.js' + versionSpec: "20.x" + displayName: "Install Node.js" - bash: | set -e @@ -27,7 +27,7 @@ stages: yarn yarn build yarn clean-redirect-double-extensions - displayName: 'yarn install and build' + displayName: "yarn install and build" - publish: $(System.DefaultWorkingDirectory)/build artifact: docs-build-files displayName: Publishing build artifact @@ -99,4 +99,4 @@ stages: awsCredentials: "AWS (azure-devops user)" regionName: "us-east-1" scriptType: "inline" - inlineScript: 'aws cloudfront create-invalidation --distribution-id ${{ parameters.cloudfront_production_distribution }} --paths "/docs/*"' \ No newline at end of file + inlineScript: 'aws cloudfront create-invalidation --distribution-id ${{ parameters.cloudfront_production_distribution }} --paths "/docs/*"' diff --git a/.azure/templates/test_stages.yml b/.azure/templates/test_stages.yml index f83408fc4..409a4e56b 100644 --- a/.azure/templates/test_stages.yml +++ b/.azure/templates/test_stages.yml @@ -1,20 +1,20 @@ -stages: - - stage: Build - displayName: 'Build Docs' +stages: + - stage: Build + displayName: "Build Docs" dependsOn: [] jobs: - job: InstallAndBuild - displayName: 'Install and build' + displayName: "Install and build" pool: vmImage: "ubuntu-latest" steps: - task: NodeTool@0 inputs: - versionSpec: '20.x' - displayName: 'Install Node.js' + versionSpec: "20.x" + displayName: "Install Node.js" - bash: | set -e - + if [ "$(Build.Reason)" = "PullRequest" ]; then export DOC_BASE_URL=pr-$(System.PullRequest.PullRequestNumber) fi @@ -27,11 +27,11 @@ stages: export SIXSENSE_TOKEN=$(SIXSENSE_TOKEN) export GOOGLE_SITE_VERIFICATION=${GOOGLE_SITE_VERIFICATION} export HOCKEYSTACK_API_KEY=$(HOCKEYSTACK_API_KEY) - + yarn yarn build yarn clean-redirect-double-extensions - displayName: 'yarn install and build' + displayName: "yarn install and build" - publish: $(System.DefaultWorkingDirectory)/build artifact: docs-build-files displayName: Publishing build artifact @@ -71,4 +71,4 @@ stages: awsCredentials: "AWS (azure-devops user)" regionName: "us-east-1" scriptType: "inline" - inlineScript: 'aws cloudfront create-invalidation --distribution-id ${{ parameters.cloudfront_development_distribution }} --paths "/pr-$(pr_number)/*"' \ No newline at end of file + inlineScript: 'aws cloudfront create-invalidation --distribution-id ${{ parameters.cloudfront_development_distribution }} --paths "/pr-$(pr_number)/*"' diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..fd05453c1 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,22 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/typescript-node:22", + "customizations": { + "vscode": { + "extensions": [ + // + "esbenp.prettier-vscode", + "unifiedjs.vscode-mdx" + ] + } + }, + "onCreateCommand": "yarn install", + "postAttachCommand": "yarn start", + "forwardPorts": [3030], + "portsAttributes": { + "3030": { + "label": "Docusaurus Dev Server" + } + }, + "remoteUser": "node" +} diff --git a/.gitignore b/.gitignore index d296a4b6e..e2c9a5066 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,3 @@ package-lock.json .DS_Store build .idea -.vscode/**/* -.prettierignore \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..19dccfebd --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +tools +code_blocks +openapi-spec +# TODO: Reformat. MDX is whitespace sensitive, so it requires making sure all the docs still look good. +**/*.md +**/*.mdx diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 000000000..e3b692e3d --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["esbenp.prettier-vscode", "unifiedjs.vscode-mdx"] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..02b5dc131 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" + } +} diff --git a/babel.config.js b/babel.config.js index e00595dae..bfd75dbdf 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,3 +1,3 @@ module.exports = { - presets: [require.resolve('@docusaurus/core/lib/babel/preset')], + presets: [require.resolve("@docusaurus/core/lib/babel/preset")], }; diff --git a/package.json b/package.json index 80d8d1e6d..be091d68c 100644 --- a/package.json +++ b/package.json @@ -1,58 +1,61 @@ { - "name": "revenuecat-docs", - "version": "0.0.0", - "private": true, - "scripts": { - "docusaurus": "docusaurus", - "start": "docusaurus start --port 3030", - "build": "docusaurus build", - "clean-redirect-double-extensions": "scripts/remove_duplicate_html_extension.sh", - "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy", - "clear": "docusaurus clear", - "serve": "docusaurus serve", - "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids", - "process-images": "scripts/move_images.sh" - }, - "dependencies": { - "@docusaurus/core": "^3.6.3", - "@docusaurus/plugin-client-redirects": "^3.6.3", - "@docusaurus/plugin-google-gtag": "^3.6.3", - "@docusaurus/preset-classic": "^3.6.3", - "@docusaurus/theme-common": "^3.6.3", - "@mdx-js/react": "^3.0.0", - "clsx": "^2.0.0", - "docusaurus-theme-redoc": "^2.2.0", - "medium-zoom": "1.1.0", - "prism-react-renderer": "^2.3.0", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "redocusaurus": "^2.0.0" - }, - "devDependencies": { - "@docusaurus/module-type-aliases": "^3.6.3", - "@docusaurus/tsconfig": "^3.6.3", - "@docusaurus/types": "^3.6.3", - "autoprefixer": "^10.4.17", - "postcss": "^8.4.35", - "raw-loader": "^4.0.2", - "tailwindcss": "^3.4.1", - "typescript": "^5.3.3" - }, - "browserslist": { - "production": [ - ">0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 3 chrome version", - "last 3 firefox version", - "last 5 safari version" - ] - }, - "engines": { - "node": ">=18.0" - } + "name": "revenuecat-docs", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start --port 3030", + "build": "docusaurus build", + "clean-redirect-double-extensions": "scripts/remove_duplicate_html_extension.sh", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids", + "process-images": "scripts/move_images.sh", + "format": "prettier --write ." + }, + "dependencies": { + "@docusaurus/core": "^3.6.3", + "@docusaurus/plugin-client-redirects": "^3.6.3", + "@docusaurus/plugin-google-gtag": "^3.6.3", + "@docusaurus/preset-classic": "^3.6.3", + "@docusaurus/theme-common": "^3.6.3", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "docusaurus-theme-redoc": "^2.2.0", + "medium-zoom": "1.1.0", + "prism-react-renderer": "^2.3.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "redocusaurus": "^2.0.0" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "^3.6.3", + "@docusaurus/tsconfig": "^3.6.3", + "@docusaurus/types": "^3.6.3", + "autoprefixer": "^10.4.17", + "postcss": "^8.4.35", + "prettier": "^3.4.2", + "raw-loader": "^4.0.2", + "tailwindcss": "^3.4.1", + "typescript": "^5.3.3" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 3 chrome version", + "last 3 firefox version", + "last 5 safari version" + ] + }, + "engines": { + "node": ">=18.0" + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx index a6f18c7db..cad5253ec 100644 --- a/src/components/Button/Button.tsx +++ b/src/components/Button/Button.tsx @@ -22,7 +22,7 @@ const Button: React.FC = ({ variant === "primary" ? "bg-primary text-white hover:bg-primaryDark" : "bg-transparent text-primary hover:bg-base-100 dark:hover:bg-base-800", - additionalClasses + additionalClasses, )} href={href} target={target} diff --git a/src/components/ContentCardItem/ContentCardItem.tsx b/src/components/ContentCardItem/ContentCardItem.tsx index 5d84a2b17..3401f3caa 100644 --- a/src/components/ContentCardItem/ContentCardItem.tsx +++ b/src/components/ContentCardItem/ContentCardItem.tsx @@ -1,62 +1,71 @@ -import React from 'react'; +import React from "react"; import styles from "./item.styles.module.css"; -import useBaseUrl from '@docusaurus/useBaseUrl'; +import useBaseUrl from "@docusaurus/useBaseUrl"; interface ContentCardLinkProps { - link: string; - title: string; + link: string; + title: string; } export interface ContentCardItemProps { - title: string; - subtitle: string; - link: string; - icon: string; - links: ContentCardLinkProps[]; + title: string; + subtitle: string; + link: string; + icon: string; + links: ContentCardLinkProps[]; } -const ContentCardItem: React.FC = ({ title, subtitle, link, icon, links }) => { - let img = useBaseUrl(`/images/${icon}`); - - // Determine the href for the root tag - const rootHref = link || (links && links.length > 0 ? links[0].link : ""); +const ContentCardItem: React.FC = ({ + title, + subtitle, + link, + icon, + links, +}) => { + let img = useBaseUrl(`/images/${icon}`); - return ( - -
-

- {title} -

-

{subtitle}

- -
+ // Determine the href for the root tag + const rootHref = link || (links && links.length > 0 ? links[0].link : ""); -
-
- {title} -
-
- ); + return ( + +
+

{title}

+

{subtitle}

+ +
+
+
+ {title} +
+ + ); }; export default ContentCardItem; -export const ContentCardItemProvider: React.FC = ({ title, subtitle, link, icon, links }) => { - return ( - - ); - }; - \ No newline at end of file +export const ContentCardItemProvider: React.FC = ({ + title, + subtitle, + link, + icon, + links, +}) => { + return ( + + ); +}; diff --git a/src/components/ContentCardItem/item.styles.module.css b/src/components/ContentCardItem/item.styles.module.css index 0fe259c5e..904313783 100644 --- a/src/components/ContentCardItem/item.styles.module.css +++ b/src/components/ContentCardItem/item.styles.module.css @@ -1,91 +1,91 @@ .feature-container { - position: relative; - padding: 20px; - border: 1px solid #00000025; - border-radius: 8px; - display: flex; - justify-content: space-between; - align-items: center; - text-decoration: none; - color: inherit; - background-color: #00000005; - overflow: hidden; - cursor: pointer; - transition: box-shadow 0.3s ease-in-out; - margin-bottom: 20px; + position: relative; + padding: 20px; + border: 1px solid #00000025; + border-radius: 8px; + display: flex; + justify-content: space-between; + align-items: center; + text-decoration: none; + color: inherit; + background-color: #00000005; + overflow: hidden; + cursor: pointer; + transition: box-shadow 0.3s ease-in-out; + margin-bottom: 20px; } .feature-container:hover { - box-shadow: 0 4px 14px rgba(0,0,0,0.075); - text-decoration: none; + box-shadow: 0 4px 14px rgba(0, 0, 0, 0.075); + text-decoration: none; } .feature-container a { - cursor: pointer; + cursor: pointer; } .icon-background { - width: 30%; - height: 40%; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - z-index: 0; - opacity: 0.25; - display: flex; - justify-content: flex-end; - align-items: center; - padding-right: 20px; + width: 30%; + height: 40%; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + z-index: 0; + opacity: 0.25; + display: flex; + justify-content: flex-end; + align-items: center; + padding-right: 20px; } .icon-background img { - max-width: 100%; - max-height: 100%; - object-fit: contain; + max-width: 100%; + max-height: 100%; + object-fit: contain; } .content { - z-index: 1; - text-align: left; - width: 60%; + z-index: 1; + text-align: left; + width: 60%; } .title { - font-size: 1.5rem; - font-weight: 700; - margin-bottom: 10px; + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 10px; } .subtitle { - margin-bottom: 0px; - font-weight: 500; + margin-bottom: 0px; + font-weight: 500; } .links-list { - margin-top: 10px; - margin-bottom: 0px; + margin-top: 10px; + margin-bottom: 0px; } -[data-theme='dark'] .feature-container { - border: 1px solid #ffffff25; - background-color: #ffffff05; +[data-theme="dark"] .feature-container { + border: 1px solid #ffffff25; + background-color: #ffffff05; } @media (max-width: 768px) { - .feature-container { - padding: 24px; - } + .feature-container { + padding: 24px; + } - .title { - font-size: 1.2rem; - } + .title { + font-size: 1.2rem; + } - .icon-background { - width: 30%; - } + .icon-background { + width: 30%; + } - .content { - width: 70%; - } + .content { + width: 70%; + } } diff --git a/src/components/ExternalButton/styles.module.css b/src/components/ExternalButton/styles.module.css index df24bec2b..e3aa988a4 100644 --- a/src/components/ExternalButton/styles.module.css +++ b/src/components/ExternalButton/styles.module.css @@ -1,25 +1,25 @@ .external_button { - box-shadow:inset 0px 1px 0px 0px #ffffff; - background-color:#f9f9f9; - border-radius:6px; - border:1px solid #dcdcdc; - display:inline-block; - cursor:pointer; - color:#000000; - font-family:Arial; - font-size:15px; - font-weight:bold; - padding:12px 32px; - text-decoration:none; - text-shadow:0px 1px 0px #ffffff; - margin-top: 12px; - margin-right: 6px; - text-decoration:none!important; - } - .external_button:hover { - background-color:#e9e9e9; - } - .external_button:active { - position:relative; - top:1px; - } \ No newline at end of file + box-shadow: inset 0px 1px 0px 0px #ffffff; + background-color: #f9f9f9; + border-radius: 6px; + border: 1px solid #dcdcdc; + display: inline-block; + cursor: pointer; + color: #000000; + font-family: Arial; + font-size: 15px; + font-weight: bold; + padding: 12px 32px; + text-decoration: none; + text-shadow: 0px 1px 0px #ffffff; + margin-top: 12px; + margin-right: 6px; + text-decoration: none !important; +} +.external_button:hover { + background-color: #e9e9e9; +} +.external_button:active { + position: relative; + top: 1px; +} diff --git a/src/components/FeatureItem/FeatureItem.tsx b/src/components/FeatureItem/FeatureItem.tsx index 9079bcc7f..2c1f205f8 100644 --- a/src/components/FeatureItem/FeatureItem.tsx +++ b/src/components/FeatureItem/FeatureItem.tsx @@ -1,15 +1,17 @@ import styles from "./styles.module.css"; const FeatureItem = ({ title, subtitle, link, emoji }) => { - return ( - -
{emoji}
-
-

{emoji}  {title}

-

{subtitle}

-
-
- ); + return ( + +
{emoji}
+
+

+ {emoji}  {title} +

+

{subtitle}

+
+
+ ); }; export default FeatureItem; diff --git a/src/components/FeatureItem/styles.module.css b/src/components/FeatureItem/styles.module.css index 254ac2172..2f29c794b 100644 --- a/src/components/FeatureItem/styles.module.css +++ b/src/components/FeatureItem/styles.module.css @@ -1,74 +1,74 @@ .feature-container { - position: relative; - padding: 20px; - border: 1px solid #00000025; - border-radius: 8px; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - text-decoration: none; - color: inherit; - background-color: #00000005; - overflow: hidden; - cursor: pointer; - transition: box-shadow 0.3s ease-in-out; - margin-bottom: 20px; + position: relative; + padding: 20px; + border: 1px solid #00000025; + border-radius: 8px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + text-decoration: none; + color: inherit; + background-color: #00000005; + overflow: hidden; + cursor: pointer; + transition: box-shadow 0.3s ease-in-out; + margin-bottom: 20px; } .feature-container:hover { - box-shadow: 0 4px 14px rgba(0,0,0,0.075); - text-decoration: none; + box-shadow: 0 4px 14px rgba(0, 0, 0, 0.075); + text-decoration: none; } -a:hover { - color: inherit; +a:hover { + color: inherit; } .emoji-background { - font-size: 20rem; - color: #f0f0f0; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - z-index: 0; - opacity: 0.075; + font-size: 20rem; + color: #f0f0f0; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 0; + opacity: 0.075; } .content { - z-index: 1; - text-align: center; + z-index: 1; + text-align: center; } .title { - font-size: 1.5rem; - font-weight: 700; - margin-bottom: 10px; + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 10px; } .subtitle { - margin-bottom: 0px; - font-weight: 500; + margin-bottom: 0px; + font-weight: 500; } -[data-theme='dark'] .feature-container { - border: 1px solid #ffffff25; - background-color: #ffffff05; +[data-theme="dark"] .feature-container { + border: 1px solid #ffffff25; + background-color: #ffffff05; } @media (max-width: 768px) { - .feature-container { - padding: 24px; - } + .feature-container { + padding: 24px; + } - .emoji-background { - font-size: 14rem; - } + .emoji-background { + font-size: 14rem; + } - .title { - font-size: 1.2rem; - font-weight: 700; - margin-bottom: 10px; - } + .title { + font-size: 1.2rem; + font-weight: 700; + margin-bottom: 10px; + } } diff --git a/src/components/Integrations/SearchableContentCard.tsx b/src/components/Integrations/SearchableContentCard.tsx index ed88789b1..59e2b1ce5 100644 --- a/src/components/Integrations/SearchableContentCard.tsx +++ b/src/components/Integrations/SearchableContentCard.tsx @@ -1,31 +1,32 @@ -import { useState } from 'react'; -import { ContentCardItemProvider } from '../ContentCardItem/ContentCardItem'; -import { ContentCardItemProps } from '../ContentCardItem/ContentCardItem'; +import { useState } from "react"; +import { ContentCardItemProvider } from "../ContentCardItem/ContentCardItem"; +import { ContentCardItemProps } from "../ContentCardItem/ContentCardItem"; interface SearchableContentProviderProps { - content: ContentCardItemProps[]; + content: ContentCardItemProps[]; } -export const SearchableContentProvider = ({ content }: SearchableContentProviderProps) => { - const [searchTerm, setSearchTerm] = useState(''); - - const filteredProviders = content.filter(provider => - provider.title.toLowerCase().includes(searchTerm.toLowerCase()) - ); - - return ( -
- setSearchTerm(e.target.value)} - style={{ marginBottom: '1rem', padding: '0.5rem', width: '100%' }} - /> - {filteredProviders.map((provider, index) => ( - - ))} -
- ); - }; - \ No newline at end of file +export const SearchableContentProvider = ({ + content, +}: SearchableContentProviderProps) => { + const [searchTerm, setSearchTerm] = useState(""); + + const filteredProviders = content.filter((provider) => + provider.title.toLowerCase().includes(searchTerm.toLowerCase()), + ); + + return ( +
+ setSearchTerm(e.target.value)} + style={{ marginBottom: "1rem", padding: "0.5rem", width: "100%" }} + /> + {filteredProviders.map((provider, index) => ( + + ))} +
+ ); +}; diff --git a/src/components/RCCodeBlock/index.js b/src/components/RCCodeBlock/index.js index 141597c97..2e0cdc5c6 100644 --- a/src/components/RCCodeBlock/index.js +++ b/src/components/RCCodeBlock/index.js @@ -70,7 +70,7 @@ RCCodeBlock.propTypes = { title: PropTypes.string, name: PropTypes.string, region: PropTypes.string, - }) + }), ).isRequired, }; @@ -99,7 +99,7 @@ function getTabTitle(type) { case "typescript": return "TypeScript"; case "brightscript": - return "BrightScript"; + return "BrightScript"; default: return "Code"; } @@ -136,7 +136,7 @@ function getLanguageType(type) { case "svelte": return "html"; case "brightscript": - return "brightscript"; + return "brightscript"; default: return "Code"; } diff --git a/src/components/YouTubeEmbed/styles.css b/src/components/YouTubeEmbed/styles.css index 7a0ec682f..3fbe44b8e 100644 --- a/src/components/YouTubeEmbed/styles.css +++ b/src/components/YouTubeEmbed/styles.css @@ -4,7 +4,10 @@ padding: 0.5rem; background-color: white; border-radius: 1.2rem; - box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.05) 0px 0.5px 0px 0px, rgba(0, 0, 0, 0.05) 0px 0px 0px 0.5px; + box-shadow: + rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, + rgba(0, 0, 0, 0.05) 0px 0.5px 0px 0px, + rgba(0, 0, 0, 0.05) 0px 0px 0px 0.5px; margin-bottom: 16px; outline: currentcolor; transition: 0.3s ease-in-out; diff --git a/src/css/custom.css b/src/css/custom.css index 7a20d0a03..2a0713902 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -200,7 +200,7 @@ h1 { h2 { font-size: 1.75rem; - font-weight: 700; + font-weight: 700; } h3 { @@ -226,8 +226,10 @@ h4 { margin-left: auto; margin-right: auto; padding: 0.5rem; - box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.05) 0px 0.5px 0px 0px, rgba(0, 0, 0, 0.05) 0px 0px 0px 0.5px; - + box-shadow: + rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, + rgba(0, 0, 0, 0.05) 0px 0.5px 0px 0px, + rgba(0, 0, 0, 0.05) 0px 0px 0px 0.5px; } html[data-theme="dark"].markdown img { @@ -268,7 +270,9 @@ html[data-theme="dark"] .table-of-contents, [class*="tocCollapsibleButton"] { background-color: var(--ifm-mobile-toc-background); - box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + box-shadow: + 0 1px 3px 0 rgb(0 0 0 / 0.1), + 0 1px 2px -1px rgb(0 0 0 / 0.1); } } @@ -359,4 +363,4 @@ main .row { #sample-apps { @apply w-full grid grid-cols-1 gap-6 xl:grid-cols-2; } -} \ No newline at end of file +} diff --git a/src/pages/index.module.css b/src/pages/index.module.css index 3921ae383..8754cd7cb 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -28,7 +28,7 @@ text-transform: uppercase; font-size: 1rem; font-weight: 700; - color: #F2545B; + color: #f2545b; letter-spacing: 0.15rem; margin-bottom: 0; } @@ -45,21 +45,24 @@ .button { margin: clamp(3rem, 2.55rem + 2.27vi, 4rem) auto; padding: 0.75rem 4rem; - background-color: #576CDB; + background-color: #576cdb; color: #fff; border: none; - box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + box-shadow: + 0 4px 6px -1px rgb(0 0 0 / 0.1), + 0 2px 4px -2px rgb(0 0 0 / 0.1); } .button:hover { background-color: #495cb9; } -html[data-theme='dark'] .button:hover { +html[data-theme="dark"] .button:hover { color: #fff; } -.containerQuickLinks {} +.containerQuickLinks { +} .quickLinksTitle { font-weight: 600; @@ -88,7 +91,7 @@ html[data-theme='dark'] .button:hover { white-space: nowrap; } -html[data-theme='dark'] .quickLinkText { +html[data-theme="dark"] .quickLinkText { color: #fff; } @@ -96,8 +99,8 @@ html[data-theme='dark'] .quickLinkText { min-width: 16px; } -html[data-theme='dark'] .quickLinkIcon { - filter: invert(1) +html[data-theme="dark"] .quickLinkIcon { + filter: invert(1); } .containerRight { @@ -106,7 +109,7 @@ html[data-theme='dark'] .quickLinkIcon { @media only screen and (min-width: 640px) { .quickLinks { - grid-template-columns: repeat(2, minmax(0, 1fr)); + grid-template-columns: repeat(2, minmax(0, 1fr)); } } @@ -124,7 +127,7 @@ html[data-theme='dark'] .quickLinkIcon { } .containerRight { - display: block; - width: 100%; + display: block; + width: 100%; } -} \ No newline at end of file +} diff --git a/src/plugins/tailwind/tailwind-config.cjs b/src/plugins/tailwind/tailwind-config.cjs index 8a7558baf..15d954ddb 100644 --- a/src/plugins/tailwind/tailwind-config.cjs +++ b/src/plugins/tailwind/tailwind-config.cjs @@ -1,15 +1,15 @@ function tailwindPlugin(context, options) { - return { - name: 'tailwind-plugin', - configurePostCss(postcssOptions) { - postcssOptions.plugins = [ - require('postcss-import'), - require('tailwindcss'), - require('autoprefixer'), - ]; - return postcssOptions; - }, - }; + return { + name: "tailwind-plugin", + configurePostCss(postcssOptions) { + postcssOptions.plugins = [ + require("postcss-import"), + require("tailwindcss"), + require("autoprefixer"), + ]; + return postcssOptions; + }, + }; } -module.exports = tailwindPlugin; \ No newline at end of file +module.exports = tailwindPlugin; diff --git a/src/redirects/redirects.js b/src/redirects/redirects.js index a5ea4f09f..a2870a44e 100644 --- a/src/redirects/redirects.js +++ b/src/redirects/redirects.js @@ -1564,7 +1564,7 @@ const redirects = { // Add redirects with a .html appended to the "from" path for redirecting in S3/Cloudfront redirects.redirects.push( - ...redirects.redirects.map(({ from, to }) => ({ from: `${from}.html`, to })) + ...redirects.redirects.map(({ from, to }) => ({ from: `${from}.html`, to })), ); export default redirects; diff --git a/src/sidebars/sidebar-utils.js b/src/sidebars/sidebar-utils.js index f2a433d16..98e8b3882 100644 --- a/src/sidebars/sidebar-utils.js +++ b/src/sidebars/sidebar-utils.js @@ -4,7 +4,7 @@ const buildItem = (item, pagePrefix) => { let object = { ...item, items: item.items.map((subItem) => - buildItem(subItem, prefix + (subItem.itemsPrefix || "")) + buildItem(subItem, prefix + (subItem.itemsPrefix || "")), ), }; diff --git a/src/theme/ApiDoc/index.js b/src/theme/ApiDoc/index.js index c55430ccc..d2a3897ba 100644 --- a/src/theme/ApiDoc/index.js +++ b/src/theme/ApiDoc/index.js @@ -1,13 +1,17 @@ -import React from 'react'; -import ApiDoc from '@theme-original/ApiDoc'; -import Head from '@docusaurus/Head'; +import React from "react"; +import ApiDoc from "@theme-original/ApiDoc"; +import Head from "@docusaurus/Head"; export default function ApiDocWrapper(props) { // Adds meta robots directive to any specs that have the top-level field `x-revenuecat-hidden` set to `true`. const hidden = props.specProps.spec["x-revenuecat-hidden"] === true; return ( <> - {hidden && } + {hidden && ( + + + + )} ); diff --git a/src/theme/DocSidebarItem/Category/index.js b/src/theme/DocSidebarItem/Category/index.js index 8973fe490..55ad3b326 100644 --- a/src/theme/DocSidebarItem/Category/index.js +++ b/src/theme/DocSidebarItem/Category/index.js @@ -53,7 +53,7 @@ function CollapseButton({ message: "Expand sidebar category '{label}'", description: "The ARIA label to expand the sidebar category", }, - { label: categoryLabel } + { label: categoryLabel }, ) : translate( { @@ -61,7 +61,7 @@ function CollapseButton({ message: "Collapse sidebar category '{label}'", description: "The ARIA label to collapse the sidebar category", }, - { label: categoryLabel } + { label: categoryLabel }, ) } type="button" @@ -122,7 +122,7 @@ export default function DocSidebarItemCategory({ { "mb-2": isTopLevelCategory, }, - className + className, )} >
{href && collapsible && ( @@ -148,7 +148,7 @@ export default function DocSidebarItemCategory({ { "rotate-90": !collapsed }, isCurrentPage ? "text-primary" - : "text-base-700 group-hover/category:text-base-400 dark:text-base-300 dark:group-hover/category:text-base-600" + : "text-base-700 group-hover/category:text-base-400 dark:text-base-300 dark:group-hover/category:text-base-600", )} /> )} @@ -162,7 +162,7 @@ export default function DocSidebarItemCategory({ isCurrentPage ? "text-primary" : !isTopLevelCategory && - "text-base-700 hover:text-base-400 dark:text-base-300 dark:group-hover/category:text-base-600" + "text-base-700 hover:text-base-400 dark:text-base-300 dark:group-hover/category:text-base-600", )} onClick={ collapsible @@ -181,7 +181,9 @@ export default function DocSidebarItemCategory({ } aria-current={isCurrentPage ? "page" : undefined} aria-expanded={collapsible ? !collapsed : undefined} - href={collapsible ? hrefWithSSRFallback ?? "#" : hrefWithSSRFallback} + href={ + collapsible ? (hrefWithSSRFallback ?? "#") : hrefWithSSRFallback + } {...props} > {isTopLevelCategory && ( diff --git a/src/theme/DocSidebarItem/Html/index.js b/src/theme/DocSidebarItem/Html/index.js index a3712f9c1..6b12ecb05 100644 --- a/src/theme/DocSidebarItem/Html/index.js +++ b/src/theme/DocSidebarItem/Html/index.js @@ -1,20 +1,20 @@ -import React from 'react'; -import clsx from 'clsx'; -import {ThemeClassNames} from '@docusaurus/theme-common'; -import styles from './styles.module.css'; -export default function DocSidebarItemHtml({item, level, index}) { - const {value, defaultStyle, className} = item; +import React from "react"; +import clsx from "clsx"; +import { ThemeClassNames } from "@docusaurus/theme-common"; +import styles from "./styles.module.css"; +export default function DocSidebarItemHtml({ item, level, index }) { + const { value, defaultStyle, className } = item; return (
  • ); } diff --git a/src/theme/DocSidebarItem/Link/index.js b/src/theme/DocSidebarItem/Link/index.js index c56fe4d83..c9657d677 100644 --- a/src/theme/DocSidebarItem/Link/index.js +++ b/src/theme/DocSidebarItem/Link/index.js @@ -23,7 +23,7 @@ export default function DocSidebarItemLink({ "text-[14px] rounded-md py-1 px-5 w-[90%] hover:no-underline block", isActive ? "text-primary bg-primary/15" - : "text-base-700 hover:text-base-400 dark:text-base-300 dark:hover:text-base-600" + : "text-base-700 hover:text-base-400 dark:text-base-300 dark:hover:text-base-600", )} autoAddBaseUrl={autoAddBaseUrl} aria-current={isActive ? "page" : undefined} diff --git a/src/theme/DocSidebarItem/index.js b/src/theme/DocSidebarItem/index.js index 5f32d129d..a0f8d1d5a 100644 --- a/src/theme/DocSidebarItem/index.js +++ b/src/theme/DocSidebarItem/index.js @@ -1,14 +1,14 @@ -import React from 'react'; -import DocSidebarItemCategory from '@theme/DocSidebarItem/Category'; -import DocSidebarItemLink from '@theme/DocSidebarItem/Link'; -import DocSidebarItemHtml from '@theme/DocSidebarItem/Html'; -export default function DocSidebarItem({item, ...props}) { +import React from "react"; +import DocSidebarItemCategory from "@theme/DocSidebarItem/Category"; +import DocSidebarItemLink from "@theme/DocSidebarItem/Link"; +import DocSidebarItemHtml from "@theme/DocSidebarItem/Html"; +export default function DocSidebarItem({ item, ...props }) { switch (item.type) { - case 'category': + case "category": return ; - case 'html': + case "html": return ; - case 'link': + case "link": default: return ; } diff --git a/src/theme/Footer/Copyright/index.js b/src/theme/Footer/Copyright/index.js index d239a7a26..55e20331a 100644 --- a/src/theme/Footer/Copyright/index.js +++ b/src/theme/Footer/Copyright/index.js @@ -1,11 +1,11 @@ -import React from 'react'; -export default function FooterCopyright({copyright}) { +import React from "react"; +export default function FooterCopyright({ copyright }) { return (
    ); } diff --git a/src/theme/Footer/Layout/index.js b/src/theme/Footer/Layout/index.js index cbbefc474..bb209e857 100644 --- a/src/theme/Footer/Layout/index.js +++ b/src/theme/Footer/Layout/index.js @@ -1,11 +1,12 @@ -import React from 'react'; -import clsx from 'clsx'; -export default function FooterLayout({style, links, logo, copyright}) { +import React from "react"; +import clsx from "clsx"; +export default function FooterLayout({ style, links, logo, copyright }) { return (