diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 0000000..5ee2981 --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,75 @@ +# CodeRabbit Configuration +language: en-US # Language for reviews + +# Review settings +reviews: + profile: chill # Options: chill, assertive + high_level_summary: true + high_level_summary_placeholder: '@coderabbitai summary' + auto_title_placeholder: '@coderabbitai' + changed_files_summary: true + sequence_diagrams: true + assess_linked_issues: true + related_issues: true + related_prs: true + suggested_labels: true + suggested_reviewers: true + poem: true + + # Path filters and instructions + path_filters: [] # Add glob patterns to include/exclude files + path_instructions: [] # Add path-specific review instructions + + # Auto review settings + auto_review: + enabled: true + auto_incremental_review: true + drafts: false + base_branches: + - main + - help-center-base + + + + # Tool integrations + tools: + # Common tools (all enabled by default) + ast-grep: + essential_rules: true + shellcheck: + enabled: true + ruff: + enabled: true + markdownlint: + enabled: true + biome: + enabled: true + eslint: + enabled: true + gitleaks: + enabled: true + +# Chat settings +chat: + auto_reply: true + create_issues: true + +# Knowledge base settings +knowledge_base: + web_search: + enabled: true + learnings: + scope: auto + issues: + scope: auto + pull_requests: + scope: auto + +# Code generation settings +code_generation: + docstrings: + path_instructions: + - path: "**/*.js" + instructions: | + End all docstrings with a notice that says "Auto-generated by CodeRabbit.". + Do not omit the closing tags; the docstring must be valid. diff --git a/bin/help-center.js b/bin/help-center.js index 05b4332..7e02291 100644 --- a/bin/help-center.js +++ b/bin/help-center.js @@ -69,14 +69,6 @@ program console.log(' Deploys the help center to your specified domain.'); }); -program - .command('build') - .description('Build the help center for production') - .action(() => { - console.log(chalk.blue('Building help center...')); - execSync('next build', { stdio: 'inherit' }); - }); - program .command('start') .description('Start the development server') diff --git a/context/ThemeContext.js b/context/ThemeContext.js new file mode 100644 index 0000000..be36f4f --- /dev/null +++ b/context/ThemeContext.js @@ -0,0 +1,35 @@ +import React, { createContext, useState, useEffect, useContext } from 'react'; + +const ThemeContext = createContext(); + +export const useTheme = () => useContext(ThemeContext); + +export const ThemeProvider = ({ children }) => { + const [theme, setTheme] = useState('light'); // Default theme + + useEffect(() => { + const storedTheme = localStorage.getItem('theme'); + if (storedTheme) { + setTheme(storedTheme); + } + }, []); + + useEffect(() => { + if (theme === 'dark') { + document.body.classList.add('dark-mode'); + } else { + document.body.classList.remove('dark-mode'); + } + localStorage.setItem('theme', theme); + }, [theme]); + + const toggleTheme = () => { + setTheme((prevTheme) => (prevTheme === 'light' ? 'dark' : 'light')); + }; + + return ( + + {children} + + ); +}; diff --git a/pages/_app.js b/pages/_app.js index abad977..b2723e3 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -1,12 +1,17 @@ import '../styles/globals.css'; import { config } from '@fortawesome/fontawesome-svg-core'; import '@fortawesome/fontawesome-svg-core/styles.css'; +import { ThemeProvider } from '../context/ThemeContext'; // Prevent Font Awesome from adding its CSS since we did it manually above config.autoAddCss = false; function MyApp({ Component, pageProps }) { - return ; + return ( + + + + ); } export default MyApp; \ No newline at end of file diff --git a/pages/index.js b/pages/index.js index 61afe7c..a964ad2 100644 --- a/pages/index.js +++ b/pages/index.js @@ -7,11 +7,14 @@ import { faBook, faCreditCard, faCode, - faUser + faUser, + faSun, + faMoon } from '@fortawesome/free-solid-svg-icons'; import { faTwitter, faLinkedin } from '@fortawesome/free-brands-svg-icons'; import { categories, articles } from '../data'; import styles from '../styles/Home.module.css'; +import { useTheme } from '../context/ThemeContext'; // Import useTheme const iconMap = { 'rocket': faRocket, @@ -22,6 +25,7 @@ const iconMap = { export default function Home() { const [query, setQuery] = useState(''); + const { theme, toggleTheme } = useTheme(); // Use theme context const filteredArticles = articles.filter(article => article.title.toLowerCase().includes(query.toLowerCase()) ); @@ -30,21 +34,31 @@ export default function Home() {
Acme Corp +

Advice and answers from the Acme Corp Team

+
diff --git a/styles/Home.module.css b/styles/Home.module.css index 35c6c5e..691809b 100644 --- a/styles/Home.module.css +++ b/styles/Home.module.css @@ -8,6 +8,9 @@ background-color: #0f172a; padding: 1.5rem 2rem; color: white; + display: flex; /* Enable flexbox for alignment */ + justify-content: space-between; /* Space between logo and toggle */ + align-items: center; /* Vertically align items */ } .logo { @@ -175,4 +178,81 @@ .socialIcon svg { width: 1.25rem !important; height: 1.25rem; +} + +.themeToggle { + background: none; + border: none; + color: white; + cursor: pointer; + font-size: 1.25rem; /* Adjust icon size as needed */ +} + +.themeToggle:hover { + color: #cbd5e0; /* Lighter color on hover */ +} + +/* Dark Mode adjustments for Home.module.css */ +/* You might need to add specific dark mode overrides for components in this file */ +/* For example, if a card has a light background, you\'ll want to change it for dark mode */ + +body.dark-mode .search { + background-color: #2d3748; /* Darker search input background */ + border-color: #4a5568; /* Darker border */ + color: #e2e8f0; /* Light text for input */ +} + +body.dark-mode .search::placeholder { + color: #a0aec0; /* Lighter placeholder text */ +} + +body.dark-mode .search:focus { + border-color: #63b3ed; /* Lighter blue for focus */ + background-color: #1a202c; +} + +body.dark-mode .categoryCard { + background: #2d3748; /* Darker card background */ + border-color: #4a5568; +} + +body.dark-mode .categoryCard:hover { + border-color: #63b3ed; +} + +body.dark-mode .categoryCard h2 { + color: #e2e8f0; +} + +body.dark-mode .categoryCard p, +body.dark-mode .articleCount { + color: #a0aec0; +} + +body.dark-mode .searchResults { + background: #2d3748; + box-shadow: 0 1px 3px rgba(0,0,0,0.3); /* Adjust shadow for dark mode */ +} + +body.dark-mode .searchResults li a { + color: #e2e8f0; +} + +body.dark-mode .searchResults li a:hover { + color: #63b3ed; +} + +body.dark-mode .footer { + border-top-color: #4a5568; +} + +body.dark-mode .footerLogo, +body.dark-mode .footerLink, +body.dark-mode .socialIcon { + color: #a0aec0; +} + +body.dark-mode .footerLink:hover, +body.dark-mode .socialIcon:hover { + color: #e2e8f0; } \ No newline at end of file diff --git a/styles/globals.css b/styles/globals.css index 7571abd..d1081bf 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -4,6 +4,21 @@ html, body { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; background: #ffffff; color: #111827; + transition: background-color 0.3s ease, color 0.3s ease; +} + +/* Dark Mode Styles */ +body.dark-mode { + background-color: #1a202c; /* Dark background */ + color: #e2e8f0; /* Light text */ +} + +body.dark-mode a { + color: #63b3ed; /* Lighter blue for links in dark mode */ +} + +body.dark-mode a:hover { + color: #4299e1; } * {