Skip to content

Add development guidelines, enhance modal and theme toggle components #6

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
May 1, 2025

Conversation

iknowmagic
Copy link
Owner

@iknowmagic iknowmagic commented May 1, 2025

Introduce development guidelines and project structure in the README. Implement a customizable Modal component and a Zustand store for managing its state. Enhance the Home component with new features and improve layout. Implement a theme toggle feature with Zustand for state management. Clean up by removing unused Modal components and related files. Update package versions and adjust Visual Studio Code settings.

Summary by CodeRabbit

  • New Features

    • Enhanced the ThemeToggle component with customizable props for class names, badge display, icon sizes, and theme change callbacks.
    • Expanded the ThemeToggle Storybook stories with new scenarios and improved layout options.
    • Improved the Home page with animations, new feature highlights, icons, and a more engaging layout.
  • Bug Fixes

    • Improved synchronization between theme changes and UI elements in ThemeToggle.
  • Documentation

    • Major rewrite and expansion of the main README, adding detailed setup, features, and workflow instructions.
    • Added a new Copilot README with project structure and development guidelines.
    • Updated VS Code settings to enable Copilot and advanced indentation.
    • Added and updated comments in configuration files for clarity.
  • Tests

    • Added and expanded tests for ThemeToggle and theme store, increasing coverage and reliability.
  • Chores

    • Upgraded several dependencies and bumped the package version to 1.6.0.
    • Added a new npm script for type checking.
    • Updated .gitignore rules for VS Code files.
    • Removed the Vitest workspace configuration file.
  • Refactor

    • Broadened ThemeToggle exports to include additional utilities and types.
    • Updated theme type definitions to derive from available themes array.

Copy link

coderabbitai bot commented May 1, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

This update introduces significant improvements across documentation, configuration, component APIs, and testing in the ReactCraft project. The main README and a new Copilot-specific README were extensively rewritten and expanded to provide detailed project overview, structure, workflow, theming, and development guidelines. The ThemeToggle component received new props for customization, a refactored API, and more robust testing, including new test suites for both the component and its theme store. Storybook stories and configuration were enhanced, while developer tooling was updated with new scripts, dependency upgrades, and VS Code Copilot settings. The Home page was visually and structurally enriched, and obsolete or redundant configuration files were cleaned up.

Changes

File(s) Change Summary
README.md, .github/copilot/README.md Comprehensive rewrite and expansion of main and Copilot README files, adding detailed project overview, structure, workflow, theming, and development guidelines.
.vscode/settings.json Added GitHub Copilot enablement and configuration for multiple file types and advanced indentation for TypeScript.
.gitignore Removed rules ignoring .vscode/ except for certain config files, allowing all .vscode/ files to be tracked.
package.json Updated version to 1.6.0, added "typecheck" script, and upgraded several dependencies to latest patch versions.
.storybook/main.ts, .storybook/vitest.setup.ts Commented out Chromatic Storybook addon in config; added a file path comment in setup file.
vitest.config.ts Added file path and purpose comments at the top of the Vitest config file.
vitest.workspace.ts Deleted Vitest workspace config for Storybook integration and browser testing.
src/components/ThemeToggle/ThemeToggle.tsx, ThemeToggle.types.ts, index.ts Expanded ThemeToggle API with new props (className, showThemeBadge, onThemeChange, size), dynamic icon sizing, and conditional badge display. Updated types and exports to include theme store utilities and new interfaces.
src/components/ThemeToggle/ThemeToggle.stories.tsx Refactored stories to use a wrapper for theme resetting, added stories for different initial themes, enhanced meta with layout/backgrounds/decorators, and improved demonstration of customization.
src/components/ThemeToggle/ThemeToggle.test.tsx Refactored and expanded tests for ThemeToggle to cover state synchronization, DOM updates, badge rendering, and interaction with the store, using Vitest and React's act.
src/components/ThemeToggle/themeStore.test.ts New test suite for theme store covering initialization, theme switching, dark/light detection, document attribute updates, and allowed themes.
src/pages/Home/Home.tsx Major visual/content overhaul: added Framer Motion animations, new feature and tooling cards with icons, improved layout, and updated section content for a richer homepage.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant ThemeToggle
    participant ThemeStore
    participant Document

    User->>ThemeToggle: Clicks toggle checkbox
    ThemeToggle->>ThemeStore: setTheme(newTheme)
    ThemeStore->>Document: Update data-theme attribute
    ThemeToggle->>User: Calls onThemeChange callback (if provided)
    ThemeToggle->>ThemeToggle: Update icon and badge display
Loading

Poem

🐇
Hopping through code with a flick of my paw,
New docs and toggles—oh, what I saw!
Themes now switch with a gentle delight,
While tests and stories shine ever so bright.
The homepage sparkles with features anew,
ReactCraft grows stronger—thanks to all of you!


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ae25001 and 32055f2.

📒 Files selected for processing (1)
  • src/components/ThemeToggle/themeStore.ts (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (10)
.storybook/vitest.setup.ts (1)

1-1: Consider removing redundant file path comment
The comment at line 1 repeats the file path, which is already clear from the file system. To keep the file concise, consider removing or enhancing it with more meaningful context.

vitest.config.ts (1)

1-1: Remove redundant config file comment
The added comment at the top duplicates information evident from the filename. You can remove it to reduce clutter or replace it with specific notes about custom configurations if needed.

src/components/ThemeToggle/ThemeToggle.types.ts (1)

27-30: Consider adding JSDoc comments to ThemeIconProps.

While the ThemeIconProps interface is correctly defined, it would benefit from JSDoc comments similar to those in ThemeToggleProps to maintain documentation consistency.

 export interface ThemeIconProps {
+  /**
+   * Size of the icon
+   */
   size?: string
+  /**
+   * Additional CSS class names
+   */
   className?: string
 }
.github/copilot/README.md (2)

1-29: Excellent documentation of project structure and technology stack.

The README clearly outlines the project structure and technology stack, which will help GitHub Copilot generate more contextually relevant code suggestions. The folder structure example is particularly helpful.

Add a language specifier to the fenced code block:

-```
+```text
 src/
 ├── components/       # Reusable UI components
 │   └── ComponentName/
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

9-9: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


30-44: Clear development guidelines for consistent implementation.

The development and styling guidelines provide excellent direction for maintaining consistency throughout the project. They outline key practices like using data-testid attributes, proper TypeScript typing, and following the mobile-first approach.

Minor grammar improvement on line 43:

-Follow DaisyUI component patterns and theme variables
+Follow DaisyUI component patterns and use theme variables
🧰 Tools
🪛 LanguageTool

[uncategorized] ~43-~43: Possible missing preposition found.
Context: ...ns first, then add responsive classes - Follow DaisyUI component patterns and theme va...

(AI_HYDRA_LEO_MISSING_TO)

src/components/ThemeToggle/ThemeToggle.tsx (1)

9-14: Consider importing the interface from the types file rather than redefining it

I notice you've defined ThemeToggleProps interface directly in the component file, but the AI summary mentions you have a separate ThemeToggle.types.ts file. To maintain a single source of truth and improve maintainability, consider importing the interface from the types file instead of defining it here.

- interface ThemeToggleProps {
-   className?: string
-   showThemeBadge?: boolean
-   onThemeChange?: (_theme: string) => void
-   size?: 'sm' | 'md' | 'lg'
- }
+ import { ThemeToggleProps } from './ThemeToggle.types'
src/pages/Home/Home.tsx (1)

27-27: Consider adding functionality to the Get Started button

The Get Started button looks like a placeholder without actual navigation functionality. Consider adding a link or handler to direct users to documentation, a getting started guide, or GitHub repository.

- <button className="btn btn-primary">Get Started</button>
+ <a href="/docs/getting-started" className="btn btn-primary">Get Started</a>

Or with a router:

- <button className="btn btn-primary">Get Started</button>
+ <Link to="/docs/getting-started" className="btn btn-primary">Get Started</Link>
README.md (3)

24-30: Consistent list indentation. Nested items under "Modern Build System" and "Styling & UI" should use the same indentation (e.g., two spaces) for better readability:

-  - Vite
-  - Hot Module Replacement (HMR)
+    - Vite
+    - Hot Module Replacement (HMR)

40-43: Reduce duplication of "testing". Both Storybook and Testing Library entries reference testing. Consider rephrasing one to avoid repetition, for example:

  • Storybook 8 – Component documentation and visual regression
  • Testing Library – User-centric testing utilities
🧰 Tools
🪛 LanguageTool

[duplication] ~42-~42: Possible typo: you repeated a word.
Context: ...orybook 8 - Component documentation and testing - Testing Library - User-centric testing utilitie...

(ENGLISH_WORD_REPEAT_RULE)


102-107: Specify the language for the fenced code block. Adding a language identifier (e.g., bash or text) improves syntax highlighting:

- ```
+ ```bash
  reactcraft/
  ├── .storybook/          # Storybook configuration
  ...
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

102-102: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4b94137 and ae25001.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (16)
  • .github/copilot/README.md (1 hunks)
  • .gitignore (0 hunks)
  • .storybook/main.ts (1 hunks)
  • .storybook/vitest.setup.ts (1 hunks)
  • .vscode/settings.json (1 hunks)
  • README.md (1 hunks)
  • package.json (4 hunks)
  • src/components/ThemeToggle/ThemeToggle.stories.tsx (1 hunks)
  • src/components/ThemeToggle/ThemeToggle.test.tsx (1 hunks)
  • src/components/ThemeToggle/ThemeToggle.tsx (3 hunks)
  • src/components/ThemeToggle/ThemeToggle.types.ts (1 hunks)
  • src/components/ThemeToggle/index.ts (1 hunks)
  • src/components/ThemeToggle/themeStore.test.ts (1 hunks)
  • src/pages/Home/Home.tsx (2 hunks)
  • vitest.config.ts (1 hunks)
  • vitest.workspace.ts (0 hunks)
💤 Files with no reviewable changes (2)
  • .gitignore
  • vitest.workspace.ts
🧰 Additional context used
🧬 Code Graph Analysis (3)
src/components/ThemeToggle/ThemeToggle.types.ts (1)
src/components/ThemeToggle/themeStore.ts (1)
  • Theme (16-16)
src/components/ThemeToggle/ThemeToggle.test.tsx (3)
src/components/ThemeToggle/index.ts (3)
  • useThemeStore (5-5)
  • THEME_LIGHT (7-7)
  • THEME_DARK (6-6)
src/components/ThemeToggle/themeStore.ts (3)
  • useThemeStore (25-46)
  • THEME_LIGHT (6-6)
  • THEME_DARK (5-5)
src/components/ThemeToggle/ThemeToggle.tsx (1)
  • ThemeToggle (16-71)
src/components/ThemeToggle/ThemeToggle.tsx (2)
src/components/ThemeToggle/ThemeToggle.types.ts (1)
  • ThemeToggleProps (3-25)
src/components/ThemeToggle/themeStore.ts (2)
  • THEME_LIGHT (6-6)
  • THEME_DARK (5-5)
🪛 LanguageTool
.github/copilot/README.md

[uncategorized] ~43-~43: Possible missing preposition found.
Context: ...ns first, then add responsive classes - Follow DaisyUI component patterns and theme va...

(AI_HYDRA_LEO_MISSING_TO)

README.md

[duplication] ~42-~42: Possible typo: you repeated a word.
Context: ...orybook 8 - Component documentation and testing - Testing Library - User-centric testing utilitie...

(ENGLISH_WORD_REPEAT_RULE)


[uncategorized] ~158-~158: Possible missing comma found.
Context: ...Craft is designed to support all modern browsers including: - Chrome/Edge (latest) - Fi...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 markdownlint-cli2 (0.17.2)
.github/copilot/README.md

9-9: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

README.md

102-102: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

🔇 Additional comments (57)
package.json (8)

4-4: Verify version bump consistency
You've updated "version" to 1.6.0. Ensure related docs (CHANGELOG.md, release notes) and any CI/CD triggers are updated to reflect this new version.


18-18: Confirm build-storybook script addition
Adding "build-storybook": "storybook build" aligns with your Storybook enhancements documentation. Looks good.


19-19: Approve typecheck script
Introducing "typecheck": "tsc --noEmit" reinforces strict typing without emitting files. Approved.


27-27: Approve Tailwind plugin patch bump
Upgrading @tailwindcss/vite to ^4.1.5 matches your Tailwind v4 integration in the README—no issues.


33-33: Approve tailwindcss version upgrade
Updating to ^4.1.5 is consistent with the plugin bump. Approved.


58-58: Approve @types/react-dom patch update
Bumping to ^19.1.3 keeps your React DOM typings up to date. Good to go.


65-65: Approve daisyui version bump
Moving to ^5.0.32 aligns with documented DaisyUI v5 usage—approved.


85-85: Approve Vite patch upgrade
Upgrading Vite to ^6.3.4 is a safe patch release. No further action needed.

.storybook/main.ts (1)

8-8: Ensure Chromatic workflow adjustments
You’ve commented out @chromatic-com/storybook, effectively disabling Chromatic integration. Please verify that CI/CD workflows, documentation, or any automated tests are updated accordingly.

.vscode/settings.json (2)

2-8: Approve Copilot enablement settings
Enabling GitHub Copilot globally and for specific file types supports the new Copilot guidance. This will standardize AI assistance across the team.


9-14: Approve advanced Copilot indentation settings
Configuring advanced indentation mode for TypeScript and TSX enhances formatting for Copilot-generated code. Looks good.

src/components/ThemeToggle/themeStore.test.ts (8)

1-9: Good testing imports and organization.

Proper imports for Vitest testing utilities and React's act function. The imports from the theme store are well-structured, extracting all necessary constants and the store hook for testing.


10-17: Well-structured test setup with proper state management.

The beforeEach hook correctly resets to the default light theme before each test using act, which is essential when working with React state updates in tests. This ensures a clean starting point for each test case.


19-22: Good initial state verification.

This test properly verifies that the theme store initializes with the expected default theme.


24-33: Properly wrapped state change with act.

The test correctly uses React's act to wrap state changes, ensuring that all state updates and their side effects are processed before assertions are made.


35-52: Complete testing of dark theme detection.

The test thoroughly checks the isDarkTheme helper for all relevant cases: light theme, dark theme, and non-dark custom themes. This ensures reliable theme detection across the application.


54-71: Comprehensive light theme detection tests.

Similar to the dark theme tests, this thoroughly verifies isLightTheme for all relevant scenarios. The tests correctly expect only the default light theme to return true.


73-81: Important DOM integration test.

This test verifies that theme changes properly update the document's data-theme attribute, which is crucial for ensuring theme styles are correctly applied at the DOM level.


83-93: Thorough validation of theme availability.

The test systematically verifies that all themes from AVAILABLE_THEMES can be set in the store, using a loop to test each theme individually. This ensures the theme store only accepts valid themes.

src/components/ThemeToggle/index.ts (1)

2-8: Well-structured exports for better component API.

The expanded exports improve the component's API by making all related types, utilities, and constants available to consumers. This promotes better reusability of the ThemeToggle component and its theme management functionality.

src/components/ThemeToggle/ThemeToggle.types.ts (2)

1-2: Good type import from themeStore.

Properly importing the Theme type from the theme store ensures type consistency across the component.


3-25: Well-documented props with clear JSDoc comments.

The ThemeToggleProps interface is well-structured with descriptive JSDoc comments, default values, and appropriate type definitions. The size options ('sm', 'md', 'lg') provide good flexibility for different UI contexts.

.github/copilot/README.md (3)

45-53: Helpful animation guidelines with specific use cases.

The animation section provides clear guidance on when to use Framer Motion, focusing on meaningful interactions that enhance user experience rather than gratuitous animations.


54-63: Concise testing and state management guidance.

The testing and state management sections provide clear, actionable guidance without being overly prescriptive. The distinction between global and local state is particularly helpful.


65-68: Useful migration note for React testing.

This important update about using React.act instead of the deprecated ReactDOMTestUtils.act helps ensure that new test code follows current best practices.

src/components/ThemeToggle/ThemeToggle.tsx (4)

32-32: Good implementation of the callback pattern

The optional callback approach with the nullish operator is a clean implementation that follows best practices for component events.


35-44: Well-structured icon size handling

The getIconSize function is a clean approach to handle dynamic sizing based on the prop value.


47-50: Good test accessibility with data-testid

Adding the data-testid attribute facilitates component testing, and the className merging pattern allows for good component customization.


66-68: Good conditional rendering logic for the badge

The badge is only shown when both conditions are met: the showThemeBadge prop is true and the theme is non-standard. This prevents unnecessary UI elements when using standard themes.

src/components/ThemeToggle/ThemeToggle.test.tsx (6)

8-16: Excellent test setup with proper state reset

The beforeEach hook ensures each test starts with a clean slate by resetting the theme store and cleaning up DOM attributes. This is a good testing practice that prevents tests from affecting each other.


24-39: Well-structured test for theme store synchronization

This test properly verifies that the component reflects the current theme from the store. The use of act() to wrap state changes ensures React state updates are properly processed.


41-55: Comprehensive toggle functionality test

Good test coverage that verifies both directions of theme toggling. The test properly validates the component's primary interaction.


57-70: Critical DOM attribute update test

This test is important as it validates that the DOM is being properly updated with theme changes, ensuring the visual theme actually changes for users.


72-88: Complete badge display logic test

The test properly verifies both cases of the badge display logic - showing for custom themes and hiding for standard themes.


90-105: Good external state change handling test

This test ensures the component stays in sync with external theme changes, which is important for a stateful component that needs to react to external state management.

src/pages/Home/Home.tsx (4)

17-28: Nice animation integration with Framer Motion

The fade-in and slide animation provides a smooth entry experience for the hero section. The animation timing (0.5s) is appropriate for a subtle effect without delaying content visibility.


37-76: Well-structured feature cards section

The responsive grid layout with consistent card styling provides a clean, organized presentation of the key features. The hover effects add a nice interactive touch.


79-110: Good section on styling and state management

This section effectively highlights two key aspects of the framework with clear, concise explanations and appropriate icons.


112-134: Creative use of badges for developer tools

The badges provide a visually appealing way to showcase the various developer tools included in the framework. The centered icon and descriptive text provide good context.

src/components/ThemeToggle/ThemeToggle.stories.tsx (3)

7-21: Excellent wrapper component for story isolation

The ThemeToggleWithReset wrapper ensures proper theme setup and cleanup between stories, which is a best practice for Storybook to ensure stories don't affect each other.


27-43: Enhanced story presentation with meta configuration

The added layout settings, background options, and decorators improve the presentation of the component in Storybook. The dark/light background options are particularly useful for a theme toggle component.


50-65: Comprehensive story coverage for different states

The addition of stories for initial dark theme and custom theme provides good coverage of the component's different states and configurations. The dark background for the dark theme story provides appropriate visual context.

README.md (15)

14-17: Clear and concise introduction! The new "Modern React Development Toolkit" header and description provide a strong overview of ReactCraft’s purpose.


20-23: Verify the React version listed. The README specifies "React 19", but React 18.x is the latest stable release as of May 2025. Please confirm the target version (and package.json) or update it to the correct one.


53-56: Step 1: Clone the repository. Instructions are clear. Optionally, note that <repository-url> should be replaced with the actual GitHub HTTPS or SSH URL.


58-62: Step 2: Install dependencies. Clear and accurate instruction for npm install.


64-68: Step 3: Start the development server. The npm run dev command aligns with Vite’s conventions.


70-74: Step 4: Generate a new component. Plop integration is well documented and matches the .templates/ setup.


76-80: Step 5: Create a standardized commit. The npm run commit step (Commitizen) is clearly defined.


82-86: Step 6: Run tests. The npm run test command correctly ties into Vitest and Testing Library.


88-92: Step 7: Launch Storybook. Accurate reflection of the Storybook 8 upgrade and configuration.


94-98: Step 8: Build for production. The npm run build command matches the Vite build process.


123-131: Theme System details are thorough. Coverage of light/dark modes, system preference, persistence, and animations is comprehensive.


133-139: Component Generation section is clear. The outputs of the Plop generator are well listed and match the project templates.


148-155: Git Workflow is well-defined. Pre-commit hooks, lint-staged, and commit message standards are clearly outlined.


156-163: Browser Support list looks good. Including all major modern browsers ensures broad compatibility.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~158-~158: Possible missing comma found.
Context: ...Craft is designed to support all modern browsers including: - Chrome/Edge (latest) - Fi...

(AI_HYDRA_LEO_MISSING_COMMA)


164-171: Contributing & License sections are appropriate. Encouraging forks and PRs while stating the MIT license is standard and complete.

🧰 Tools
🪛 LanguageTool

[style] ~165-~165: Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...st) - Safari (latest) ## Contributing Feel free to fork this repository and submit pull re...

(FEEL_FREE_TO_STYLE_ME)

@iknowmagic iknowmagic merged commit 88fc855 into main May 1, 2025
1 check was pending
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant