Skip to content

Commit 5252ca2

Browse files
authored
chore: ESLint Fixes and Tailwind CSS Integration Improvements (#968)
# ESLint Fixes and Tailwind CSS Integration Improvements ## Changes Made ### ESLint Fixes - Re-enabled and fixed all `@typescript-eslint/no-use-before-define` rule violations - Fixed code structure in multiple files to properly declare variables and functions before use: - [BaseSprintfPlaceholderConversions.tsx](cci:7://file:///Users/home/Developer/documentation/src/component/docs/formats/BaseSprintfPlaceholderConversions.tsx:0:0-0:0) - [getSpecData.ts](cci:7://file:///Users/home/Developer/documentation/apiSpecGeneration/scripts/getSpecData.ts:0:0-0:0) - [plausible.ts](cci:7://file:///Users/home/Developer/documentation/src/component/externalScripts/plausible.ts:0:0-0:0) - Added proper TypeScript types for variables where needed - Removed duplicate React imports ### Tailwind CSS Integration - Implemented modular plugin approach for better Docusaurus v3 compatibility - Created dedicated [plugins/tailwind-config.cjs](cci:7://file:///Users/home/Developer/documentation/plugins/tailwind-config.cjs:0:0-0:0) for PostCSS configuration - Updated Tailwind CSS to v3.4.1 from v3.1.4 for latest features and improvements - Fixed CSS import order in [custom.css](cci:7://file:///Users/home/Developer/documentation/src/css/custom.css:0:0-0:0) to resolve PostCSS warnings - Added `postcss-import` dependency for better CSS processing ### Dependency Management - Updated PostCSS to v8.4.31 to resolve dependency warnings - Removed unused dependencies to reduce conflicts and simplify maintenance ## Testing - Verified successful builds with no ESLint errors - Confirmed Tailwind CSS styles are properly applied - Tested dark mode compatibility ## Technical Details The PR follows the official Docusaurus v3 + Tailwind CSS integration best practices, replacing the previous inline plugin approach with a more maintainable modular structure. The updated configuration properly handles dark mode with Docusaurus v3's theming system.
1 parent c4545cc commit 5252ca2

25 files changed

+2250
-3212
lines changed

.eslintignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules
2+
build
3+
.docusaurus

.eslintrc.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"extends": [
1212
"eslint:recommended",
1313
"plugin:react/recommended",
14-
"plugin:@typescript-eslint/recommended"
14+
"plugin:@typescript-eslint/recommended",
15+
"plugin:@docusaurus/recommended"
1516
],
1617
"parser": "@typescript-eslint/parser",
1718
"parserOptions": {

.npmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
legacy-peer-deps=true
1+
legacy-peer-deps=true

apiSpecGeneration/scripts/getSpecData.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
11
import fs from 'fs';
22

3+
export const possibleExtensions = ['ee', 'cloud', 'self-hosted'] as const;
4+
type Extension = (typeof possibleExtensions)[number];
5+
6+
function convertCamelToKebab(string: string) {
7+
return string
8+
.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2')
9+
.replace('_', '-')
10+
.toLowerCase();
11+
}
12+
313
export function getData() {
414
const json = fs.readFileSync(__dirname + '/../apiSpecs.json').toString();
515
const apis = JSON.parse(json);
616

7-
const tags = {};
8-
const operations = {};
17+
const tags: Record<string, number> = {};
18+
const operations: Record<string, number> = {};
919
const extensions: Record<string, Extension[]> = {};
1020

1121
for (const path in apis.paths) {
@@ -31,13 +41,3 @@ export function getData() {
3141
}
3242
return { tags, operations, extensions };
3343
}
34-
35-
export const possibleExtensions = ['ee', 'cloud', 'self-hosted'] as const;
36-
type Extension = (typeof possibleExtensions)[number];
37-
38-
function convertCamelToKebab(string) {
39-
return string
40-
.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2')
41-
.replace('_', '-')
42-
.toLowerCase();
43-
}

babel.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export default {
22
presets: ['@docusaurus/babel/preset'],
3-
};
3+
};

docusaurus.config.ts

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { navbar } from './navbar';
77
import { footer } from './footer';
88
import type { Config } from '@docusaurus/types';
99
import openApiPluginConfig from './apiSpecGeneration/pluginConfig';
10+
import tailwindPlugin from './plugins/tailwind-config.cjs';
1011

1112
const config: Config = {
1213
title: 'Tolgee',
@@ -72,21 +73,9 @@ const config: Config = {
7273
plugins: [
7374
'docusaurus-plugin-image-zoom',
7475
['@docusaurus/plugin-client-redirects', redirects],
75-
'@signalwire/docusaurus-plugin-llms-txt',
76-
async function tailwind() {
77-
return {
78-
name: 'docusaurus-tailwindcss',
79-
configurePostCss(postcssOptions) {
80-
postcssOptions.plugins = [
81-
require('tailwindcss'),
82-
require('autoprefixer'),
83-
];
84-
return postcssOptions;
85-
},
86-
};
87-
},
8876
openApiPluginConfig,
8977
...docs,
78+
tailwindPlugin,
9079
],
9180
customFields: {
9281
googleTrackingId: process.env.DOCUSAURUS_GOOGLE_TRACKING_ID,

0 commit comments

Comments
 (0)