-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
fix: #4381 make the buttons responsive #4390
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,6 @@ | ||
| /// <reference types="next" /> | ||
| /// <reference types="next/image-types/global" /> | ||
| /// <reference path="./.next/types/routes.d.ts" /> | ||
|
|
||
| // NOTE: This file should not be edited | ||
| // see https://nextjs.org/docs/pages/api-reference/config/typescript for more information. |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -18,7 +18,7 @@ import Paragraph from '../../components/typography/Paragraph'; | |||||||||||||||||||||||||||||||||
| */ | ||||||||||||||||||||||||||||||||||
| function renderButtons(): React.JSX.Element { | ||||||||||||||||||||||||||||||||||
| return ( | ||||||||||||||||||||||||||||||||||
| <div className='mt-8 flex flex-wrap gap-4'> | ||||||||||||||||||||||||||||||||||
| <div className="mt-8 flex flex-wrap gap-4"> | ||||||||||||||||||||||||||||||||||
| {/* <Button | ||||||||||||||||||||||||||||||||||
| text="Learn more" | ||||||||||||||||||||||||||||||||||
| href="/docs/tools/generator" | ||||||||||||||||||||||||||||||||||
|
|
@@ -27,11 +27,15 @@ function renderButtons(): React.JSX.Element { | |||||||||||||||||||||||||||||||||
| className="w-full mb-2 sm:w-auto sm:mb-0 sm:mr-2" | ||||||||||||||||||||||||||||||||||
| /> */} | ||||||||||||||||||||||||||||||||||
| <GithubButton | ||||||||||||||||||||||||||||||||||
| text='View on Github' | ||||||||||||||||||||||||||||||||||
| className='w-full text-center sm:w-fit sm:text-left' | ||||||||||||||||||||||||||||||||||
| href='https://www.github.com/asyncapi/generator' | ||||||||||||||||||||||||||||||||||
| text="View on Github" | ||||||||||||||||||||||||||||||||||
| className="w-full text-center sm:w-fit sm:text-left" | ||||||||||||||||||||||||||||||||||
|
Comment on lines
+30
to
+31
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fix brand capitalization: GitHub. User-facing copy should use “GitHub”. - text="View on Github"
+ text="View on GitHub"📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||
| href="https://www.github.com/asyncapi/generator" | ||||||||||||||||||||||||||||||||||
| /> | ||||||||||||||||||||||||||||||||||
| <Button | ||||||||||||||||||||||||||||||||||
| text="View Docs" | ||||||||||||||||||||||||||||||||||
| href="/docs/tools/generator" | ||||||||||||||||||||||||||||||||||
| className="w-full text-center sm:w-fit sm:text-left" | ||||||||||||||||||||||||||||||||||
| /> | ||||||||||||||||||||||||||||||||||
|
Comment on lines
+31
to
38
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainVerify Tailwind version supports
Run: 🏁 Script executed: #!/bin/bash
# Check Tailwind version
rg -n '"tailwindcss"\s*:\s*"' -n package.json -C1
# Show Prettier JSX quote setting
rg -n '"jsxSingleQuote"\s*:\s*true' -S --glob '{.prettierrc,.prettierrc.*,package.json}'
# Auto-fix formatting issues in this file
npx prettier --write pages/tools/generator.tsx
npx eslint pages/tools/generator.tsx --fixLength of output: 1056 🏁 Script executed: #!/bin/bash
set -eux
# List Prettier config files
ls -1 .prettierrc* || true
grep -R '"prettier"' -n package.json || true
# If .prettierrc*.json exists, dump its contents
for file in .prettierrc .prettierrc.json .prettierrc.js .prettierrc.yaml .prettierrc.yml; do
[ -f "$file" ] && echo "==== $file ====" && sed -n '1,200p' "$file"
done
# Inspect quote usage in other JSX/TSX files
echo "---- pages/index.tsx ----"
rg -n "className=" -C2 pages/index.tsx || true
echo "---- components/Header.tsx (if exists) ----"
rg -n "className=" -C2 components/Header.tsx || true
echo "---- pages/tools/generator.tsx ----"
rg -n "className=" -C2 pages/tools/generator.tsx || trueLength of output: 7125 Use single quotes for JSX attributes; Tailwind’s
📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||
| <Button text='View Docs' href='/docs/tools/generator' className='w-full text-center sm:w-fit sm:text-left' /> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| ); | ||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||
|
|
@@ -40,112 +44,162 @@ function renderButtons(): React.JSX.Element { | |||||||||||||||||||||||||||||||||
| * @description The Generator page component. | ||||||||||||||||||||||||||||||||||
| */ | ||||||||||||||||||||||||||||||||||
| export default function GeneratorPage() { | ||||||||||||||||||||||||||||||||||
| const description = 'Generate documentation, code, and more out of your AsyncAPI files with the Generator.'; | ||||||||||||||||||||||||||||||||||
| const description = | ||||||||||||||||||||||||||||||||||
| 'Generate documentation, code, and more out of your AsyncAPI files with the Generator.'; | ||||||||||||||||||||||||||||||||||
| const image = '/img/social/generator-card.jpg'; | ||||||||||||||||||||||||||||||||||
| const generatorimage = '/img/diagrams/generator.webp'; | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| return ( | ||||||||||||||||||||||||||||||||||
| <GenericLayout title='Generator' description={description} image={image} wide> | ||||||||||||||||||||||||||||||||||
| <div className='overflow-hidden py-12'> | ||||||||||||||||||||||||||||||||||
| <div className='relative mx-auto max-w-xl px-4 sm:px-6 lg:max-w-screen-xl lg:px-8'> | ||||||||||||||||||||||||||||||||||
| <div className='relative text-center'> | ||||||||||||||||||||||||||||||||||
| <GenericLayout | ||||||||||||||||||||||||||||||||||
| title="Generator" | ||||||||||||||||||||||||||||||||||
| description={description} | ||||||||||||||||||||||||||||||||||
| image={image} | ||||||||||||||||||||||||||||||||||
| wide | ||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||
| <div className="overflow-hidden py-12"> | ||||||||||||||||||||||||||||||||||
| <div className="relative mx-auto max-w-xl px-4 sm:px-6 lg:max-w-screen-xl lg:px-8"> | ||||||||||||||||||||||||||||||||||
| <div className="relative text-center"> | ||||||||||||||||||||||||||||||||||
| <Heading level={HeadingLevel.h1} typeStyle={HeadingTypeStyle.lg}> | ||||||||||||||||||||||||||||||||||
| Docs, Code, Anything! | ||||||||||||||||||||||||||||||||||
| </Heading> | ||||||||||||||||||||||||||||||||||
| <Paragraph className='mt-4'>{description}</Paragraph> | ||||||||||||||||||||||||||||||||||
| <img src={generatorimage} alt='generator diagram' className=' mx-auto h-auto object-cover lg:w-1/2' /> | ||||||||||||||||||||||||||||||||||
| <Paragraph className="mt-4">{description}</Paragraph> | ||||||||||||||||||||||||||||||||||
| <img | ||||||||||||||||||||||||||||||||||
| src={generatorimage} | ||||||||||||||||||||||||||||||||||
| alt="generator diagram" | ||||||||||||||||||||||||||||||||||
| className=" mx-auto h-auto object-cover lg:w-1/2" | ||||||||||||||||||||||||||||||||||
| /> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| <div className='relative mt-12 lg:mt-20 lg:grid lg:grid-cols-2 lg:items-center lg:gap-8'> | ||||||||||||||||||||||||||||||||||
| <div className='relative lg:mt-8'> | ||||||||||||||||||||||||||||||||||
| <Heading level={HeadingLevel.h2} typeStyle={HeadingTypeStyle.mdSemibold}> | ||||||||||||||||||||||||||||||||||
| <div className="relative mt-12 lg:mt-20 lg:grid lg:grid-cols-2 lg:items-center lg:gap-8"> | ||||||||||||||||||||||||||||||||||
| <div className="relative lg:mt-8"> | ||||||||||||||||||||||||||||||||||
| <Heading | ||||||||||||||||||||||||||||||||||
| level={HeadingLevel.h2} | ||||||||||||||||||||||||||||||||||
| typeStyle={HeadingTypeStyle.mdSemibold} | ||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||
| Installation & Usage | ||||||||||||||||||||||||||||||||||
| </Heading> | ||||||||||||||||||||||||||||||||||
| <Paragraph className='mt-3 lg:pr-4'> | ||||||||||||||||||||||||||||||||||
| Start using Generator really quickly. Select one of the multiple templates we offer and start generating | ||||||||||||||||||||||||||||||||||
| documentation and code in a few seconds. | ||||||||||||||||||||||||||||||||||
| <Paragraph className="mt-3 lg:pr-4"> | ||||||||||||||||||||||||||||||||||
| Start using Generator really quickly. Select one of the multiple | ||||||||||||||||||||||||||||||||||
| templates we offer and start generating documentation and code | ||||||||||||||||||||||||||||||||||
| in a few seconds. | ||||||||||||||||||||||||||||||||||
| </Paragraph> | ||||||||||||||||||||||||||||||||||
|
Comment on lines
+81
to
85
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Grammar: “seat” → “sit”. Minor but user-facing. - that will seat along with your code? Perfect!
+ that will sit alongside your code? Perfect!Also applies to: 124-127 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||
| {renderButtons()} | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| <GeneratorInstallation /> | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| <div className='relative mt-20'> | ||||||||||||||||||||||||||||||||||
| <Heading level={HeadingLevel.h2} typeStyle={HeadingTypeStyle.mdSemibold}> | ||||||||||||||||||||||||||||||||||
| <div className="relative mt-20"> | ||||||||||||||||||||||||||||||||||
| <Heading | ||||||||||||||||||||||||||||||||||
| level={HeadingLevel.h2} | ||||||||||||||||||||||||||||||||||
| typeStyle={HeadingTypeStyle.mdSemibold} | ||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||
| Ready to use | ||||||||||||||||||||||||||||||||||
| </Heading> | ||||||||||||||||||||||||||||||||||
| <Paragraph className='mt-3 lg:pr-4'> | ||||||||||||||||||||||||||||||||||
| The Generator is our solution to automatically generate documentation and code from your AsyncAPI files. | ||||||||||||||||||||||||||||||||||
| It comes packed with lots of cool features you can't miss. Have a look! | ||||||||||||||||||||||||||||||||||
| <Paragraph className="mt-3 lg:pr-4"> | ||||||||||||||||||||||||||||||||||
| The Generator is our solution to automatically generate | ||||||||||||||||||||||||||||||||||
| documentation and code from your AsyncAPI files. It comes packed | ||||||||||||||||||||||||||||||||||
| with lots of cool features you can't miss. Have a look! | ||||||||||||||||||||||||||||||||||
| </Paragraph> | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| <ul className='mt-10 lg:pr-4'> | ||||||||||||||||||||||||||||||||||
| <ul className="mt-10 lg:pr-4"> | ||||||||||||||||||||||||||||||||||
| <li> | ||||||||||||||||||||||||||||||||||
| <div className='flex'> | ||||||||||||||||||||||||||||||||||
| <div className='shrink-0'> | ||||||||||||||||||||||||||||||||||
| <div className='flex size-12 items-center justify-center rounded-md border border-gray-900 bg-secondary-100 text-gray-900'> | ||||||||||||||||||||||||||||||||||
| <IconDocuments className='size-6' /> | ||||||||||||||||||||||||||||||||||
| <div className="flex"> | ||||||||||||||||||||||||||||||||||
| <div className="shrink-0"> | ||||||||||||||||||||||||||||||||||
| <div className="flex size-12 items-center justify-center rounded-md border border-gray-900 bg-secondary-100 text-gray-900"> | ||||||||||||||||||||||||||||||||||
| <IconDocuments className="size-6" /> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| <div className='ml-4'> | ||||||||||||||||||||||||||||||||||
| <div className="ml-4"> | ||||||||||||||||||||||||||||||||||
| {/* <Heading level="h4" typeStyle="heading-sm-semibold"> */} | ||||||||||||||||||||||||||||||||||
| <Heading level={HeadingLevel.h4} typeStyle={HeadingTypeStyle.smSemibold}> | ||||||||||||||||||||||||||||||||||
| <Heading | ||||||||||||||||||||||||||||||||||
| level={HeadingLevel.h4} | ||||||||||||||||||||||||||||||||||
| typeStyle={HeadingTypeStyle.smSemibold} | ||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||
| HTML & Markdown | ||||||||||||||||||||||||||||||||||
| </Heading> | ||||||||||||||||||||||||||||||||||
| <Paragraph typeStyle={ParagraphTypeStyle.md} className='mt-2'> | ||||||||||||||||||||||||||||||||||
| Generate beautiful HTML documentation that's easy to share with your team and customers. | ||||||||||||||||||||||||||||||||||
| Markdown docs that will seat along with your code? Perfect! | ||||||||||||||||||||||||||||||||||
| <Paragraph | ||||||||||||||||||||||||||||||||||
| typeStyle={ParagraphTypeStyle.md} | ||||||||||||||||||||||||||||||||||
| className="mt-2" | ||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||
| Generate beautiful HTML documentation that's easy | ||||||||||||||||||||||||||||||||||
| to share with your team and customers. Markdown docs | ||||||||||||||||||||||||||||||||||
| that will seat along with your code? Perfect! | ||||||||||||||||||||||||||||||||||
| </Paragraph> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </li> | ||||||||||||||||||||||||||||||||||
| <li className='mt-10'> | ||||||||||||||||||||||||||||||||||
| <div className='flex'> | ||||||||||||||||||||||||||||||||||
| <div className='shrink-0'> | ||||||||||||||||||||||||||||||||||
| <div className='flex size-12 items-center justify-center rounded-md border border-gray-900 bg-secondary-100 text-gray-900'> | ||||||||||||||||||||||||||||||||||
| <IconCode className='size-6' /> | ||||||||||||||||||||||||||||||||||
| <li className="mt-10"> | ||||||||||||||||||||||||||||||||||
| <div className="flex"> | ||||||||||||||||||||||||||||||||||
| <div className="shrink-0"> | ||||||||||||||||||||||||||||||||||
| <div className="flex size-12 items-center justify-center rounded-md border border-gray-900 bg-secondary-100 text-gray-900"> | ||||||||||||||||||||||||||||||||||
| <IconCode className="size-6" /> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| <div className='ml-4'> | ||||||||||||||||||||||||||||||||||
| <Heading level={HeadingLevel.h4} typeStyle={HeadingTypeStyle.smSemibold}> | ||||||||||||||||||||||||||||||||||
| <div className="ml-4"> | ||||||||||||||||||||||||||||||||||
| <Heading | ||||||||||||||||||||||||||||||||||
| level={HeadingLevel.h4} | ||||||||||||||||||||||||||||||||||
| typeStyle={HeadingTypeStyle.smSemibold} | ||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||
| Node.js, Java, Python, and more... | ||||||||||||||||||||||||||||||||||
| </Heading> | ||||||||||||||||||||||||||||||||||
| <Paragraph typeStyle={ParagraphTypeStyle.md} className='mt-2'> | ||||||||||||||||||||||||||||||||||
| Generate code out of your AsyncAPI files in your favourite programming language. Speed up the | ||||||||||||||||||||||||||||||||||
| time-to-first-prototype. Keep using it even after you wrote your custom business logic. | ||||||||||||||||||||||||||||||||||
| <Paragraph | ||||||||||||||||||||||||||||||||||
| typeStyle={ParagraphTypeStyle.md} | ||||||||||||||||||||||||||||||||||
| className="mt-2" | ||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||
| Generate code out of your AsyncAPI files in your | ||||||||||||||||||||||||||||||||||
| favourite programming language. Speed up the | ||||||||||||||||||||||||||||||||||
| time-to-first-prototype. Keep using it even after you | ||||||||||||||||||||||||||||||||||
| wrote your custom business logic. | ||||||||||||||||||||||||||||||||||
| </Paragraph> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </li> | ||||||||||||||||||||||||||||||||||
| <li className='mt-10'> | ||||||||||||||||||||||||||||||||||
| <div className='flex'> | ||||||||||||||||||||||||||||||||||
| <div className='shrink-0'> | ||||||||||||||||||||||||||||||||||
| <div className='flex size-12 items-center justify-center rounded-md border border-gray-900 bg-secondary-100 text-gray-900'> | ||||||||||||||||||||||||||||||||||
| <IconPowerPlug className='size-6' /> | ||||||||||||||||||||||||||||||||||
| <li className="mt-10"> | ||||||||||||||||||||||||||||||||||
| <div className="flex"> | ||||||||||||||||||||||||||||||||||
| <div className="shrink-0"> | ||||||||||||||||||||||||||||||||||
| <div className="flex size-12 items-center justify-center rounded-md border border-gray-900 bg-secondary-100 text-gray-900"> | ||||||||||||||||||||||||||||||||||
| <IconPowerPlug className="size-6" /> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| <div className='ml-4'> | ||||||||||||||||||||||||||||||||||
| <Heading level={HeadingLevel.h4} typeStyle={HeadingTypeStyle.smSemibold}> | ||||||||||||||||||||||||||||||||||
| <div className="ml-4"> | ||||||||||||||||||||||||||||||||||
| <Heading | ||||||||||||||||||||||||||||||||||
| level={HeadingLevel.h4} | ||||||||||||||||||||||||||||||||||
| typeStyle={HeadingTypeStyle.smSemibold} | ||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||
| Highly extensible | ||||||||||||||||||||||||||||||||||
| </Heading> | ||||||||||||||||||||||||||||||||||
| <Paragraph typeStyle={ParagraphTypeStyle.md} className='mt-2'> | ||||||||||||||||||||||||||||||||||
| Don't see your programming language of choice? Want to generate docs that meet your brand | ||||||||||||||||||||||||||||||||||
| look and feel? Create your custom templates or extend existing ones. | ||||||||||||||||||||||||||||||||||
| <Paragraph | ||||||||||||||||||||||||||||||||||
| typeStyle={ParagraphTypeStyle.md} | ||||||||||||||||||||||||||||||||||
| className="mt-2" | ||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||
| Don't see your programming language of choice? Want | ||||||||||||||||||||||||||||||||||
| to generate docs that meet your brand look and feel? | ||||||||||||||||||||||||||||||||||
| Create your custom templates or extend existing ones. | ||||||||||||||||||||||||||||||||||
| </Paragraph> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </li> | ||||||||||||||||||||||||||||||||||
| </ul> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| <div className='relative -mx-4 mt-10 lg:mt-0'> | ||||||||||||||||||||||||||||||||||
| <img className='relative mx-auto rounded shadow-lg' src='/img/tools/generator-1.png' alt='' /> | ||||||||||||||||||||||||||||||||||
| <img className='relative mx-auto mt-8 rounded shadow-lg' src='/img/tools/generator-2.png' alt='' /> | ||||||||||||||||||||||||||||||||||
| <div className="relative -mx-4 mt-10 lg:mt-0"> | ||||||||||||||||||||||||||||||||||
| <img | ||||||||||||||||||||||||||||||||||
| className="relative mx-auto rounded shadow-lg" | ||||||||||||||||||||||||||||||||||
| src="/img/tools/generator-1.png" | ||||||||||||||||||||||||||||||||||
| alt="" | ||||||||||||||||||||||||||||||||||
| /> | ||||||||||||||||||||||||||||||||||
| <img | ||||||||||||||||||||||||||||||||||
| className="relative mx-auto mt-8 rounded shadow-lg" | ||||||||||||||||||||||||||||||||||
| src="/img/tools/generator-2.png" | ||||||||||||||||||||||||||||||||||
| alt="" | ||||||||||||||||||||||||||||||||||
| /> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| <div className='mt-16 text-center'>{renderButtons()}</div> | ||||||||||||||||||||||||||||||||||
| <div className="mt-16 text-center sm:text-left sm:flex sm:justify-center"> | ||||||||||||||||||||||||||||||||||
| {renderButtons()} | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||
| </GenericLayout> | ||||||||||||||||||||||||||||||||||
| ); | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Drop explicit React.JSX.Element return type or switch to a type-only import.
Avoid pulling in a value import just for the type. Keep it simple and let TS infer the return type.
Alternatively:
📝 Committable suggestion
🤖 Prompt for AI Agents