From a02c45b434a97faf1c8e35ae84e74459d219cb35 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Dec 2025 12:15:09 +0000 Subject: [PATCH 1/4] chore(deps): bump lucide-react from 0.561.0 to 0.562.0 Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 0.561.0 to 0.562.0. - [Release notes](https://github.com/lucide-icons/lucide/releases) - [Commits](https://github.com/lucide-icons/lucide/commits/0.562.0/packages/lucide-react) --- updated-dependencies: - dependency-name: lucide-react dependency-version: 0.562.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- apps/docs/package.json | 2 +- pnpm-lock.yaml | 29 +++++++++++++---------------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/apps/docs/package.json b/apps/docs/package.json index 5722d3b..79d02cf 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -48,7 +48,7 @@ "embla-carousel-react": "^8.6.0", "eslint-config-next": "16.1.0", "input-otp": "^1.4.2", - "lucide-react": "^0.561.0", + "lucide-react": "^0.562.0", "next": "16.1.0", "next-themes": "^0.4.6", "prism-react-renderer": "^2.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df89c01..023deac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 3.3.3 eslint-config-next: specifier: 16.1.0 - version: 16.1.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) devDependencies: '@changesets/changelog-github': specifier: ^0.5.2 @@ -203,13 +203,13 @@ importers: version: 8.6.0(react@19.2.3) eslint-config-next: specifier: 16.1.0 - version: 16.1.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) input-otp: specifier: ^1.4.2 version: 1.4.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) lucide-react: - specifier: ^0.561.0 - version: 0.561.0(react@19.2.3) + specifier: ^0.562.0 + version: 0.562.0(react@19.2.3) next: specifier: 16.1.0 version: 16.1.0(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -3759,8 +3759,8 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - lucide-react@0.561.0: - resolution: {integrity: sha512-Y59gMY38tl4/i0qewcqohPdEbieBy7SovpBL9IFebhc2mDd8x4PZSOsiFRkpPcOq6bj1r/mjH/Rk73gSlIJP2A==} + lucide-react@0.562.0: + resolution: {integrity: sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -7671,13 +7671,13 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-next@16.1.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: '@next/eslint-plugin-next': 16.1.0 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1)) @@ -7710,22 +7710,21 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): + eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7736,7 +7735,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7747,8 +7746,6 @@ snapshots: semver: 6.3.1 string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -8520,7 +8517,7 @@ snapshots: dependencies: yallist: 4.0.0 - lucide-react@0.561.0(react@19.2.3): + lucide-react@0.562.0(react@19.2.3): dependencies: react: 19.2.3 From 8cf9e7f2da6ed0da990b56b24855fa0dd310029d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Dec 2025 12:39:00 +0000 Subject: [PATCH 2/4] chore(deps): bump react-hook-form in the react group across 1 directory Bumps the react group with 1 update in the / directory: [react-hook-form](https://github.com/react-hook-form/react-hook-form). Updates `react-hook-form` from 7.68.0 to 7.69.0 - [Release notes](https://github.com/react-hook-form/react-hook-form/releases) - [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md) - [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.68.0...v7.69.0) --- updated-dependencies: - dependency-name: react-hook-form dependency-version: 7.69.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: react ... Signed-off-by: dependabot[bot] --- apps/docs/package.json | 2 +- pnpm-lock.yaml | 35 ++++++++++++++++------------------- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/apps/docs/package.json b/apps/docs/package.json index 16b4c10..7ed2da6 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -38,7 +38,7 @@ "prism-react-renderer": "^2.4.1", "react": "^19.2.3", "react-dom": "^19.2.3", - "react-hook-form": "^7.68.0", + "react-hook-form": "^7.69.0", "react-icons": "^5.5.0", "tailwind-merge": "^3.4.0", "tailwindcss-animate": "^1.0.7" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 633a3ee..cf165b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 3.3.3 eslint-config-next: specifier: 16.1.0 - version: 16.1.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) devDependencies: '@changesets/changelog-github': specifier: ^0.5.2 @@ -95,7 +95,7 @@ importers: dependencies: '@hookform/resolvers': specifier: ^5.2.2 - version: 5.2.2(react-hook-form@7.68.0(react@19.2.3)) + version: 5.2.2(react-hook-form@7.69.0(react@19.2.3)) '@lglab/react-qr-code': specifier: workspace:* version: link:../../packages/react-qr-code @@ -158,7 +158,7 @@ importers: version: 4.1.0 eslint-config-next: specifier: 16.1.0 - version: 16.1.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) lucide-react: specifier: ^0.562.0 version: 0.562.0(react@19.2.3) @@ -178,8 +178,8 @@ importers: specifier: ^19.2.3 version: 19.2.3(react@19.2.3) react-hook-form: - specifier: ^7.68.0 - version: 7.68.0(react@19.2.3) + specifier: ^7.69.0 + version: 7.69.0(react@19.2.3) react-icons: specifier: ^5.5.0 version: 5.5.0(react@19.2.3) @@ -3767,8 +3767,8 @@ packages: peerDependencies: react: ^19.2.3 - react-hook-form@7.68.0: - resolution: {integrity: sha512-oNN3fjrZ/Xo40SWlHf1yCjlMK417JxoSJVUXQjGdvdRCU07NTFei1i1f8ApUAts+IVh14e4EdakeLEA+BEAs/Q==} + react-hook-form@7.69.0: + resolution: {integrity: sha512-yt6ZGME9f4F6WHwevrvpAjh42HMvocuSnSIHUGycBqXIJdhqGSPQzTpGF+1NLREk/58IdPxEMfPcFCjlMhclGw==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 @@ -4972,10 +4972,10 @@ snapshots: '@floating-ui/utils@0.2.10': {} - '@hookform/resolvers@5.2.2(react-hook-form@7.68.0(react@19.2.3))': + '@hookform/resolvers@5.2.2(react-hook-form@7.69.0(react@19.2.3))': dependencies: '@standard-schema/utils': 0.3.0 - react-hook-form: 7.68.0(react@19.2.3) + react-hook-form: 7.69.0(react@19.2.3) '@humanfs/core@0.19.1': {} @@ -7082,13 +7082,13 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-next@16.1.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: '@next/eslint-plugin-next': 16.1.0 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1)) @@ -7121,22 +7121,21 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): + eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7147,7 +7146,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7158,8 +7157,6 @@ snapshots: semver: 6.3.1 string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -8225,7 +8222,7 @@ snapshots: react: 19.2.3 scheduler: 0.27.0 - react-hook-form@7.68.0(react@19.2.3): + react-hook-form@7.69.0(react@19.2.3): dependencies: react: 19.2.3 From 6eafe5c3d9e128437c8e3c4c0da9e9aaee29949d Mon Sep 17 00:00:00 2001 From: LGLabGreg Date: Sun, 21 Dec 2025 10:08:12 +0000 Subject: [PATCH 3/4] feat: llms.txt --- apps/docs/public/llms-full.txt | 138 +++++++++++++++++++++ apps/docs/public/llms.txt | 26 ++++ apps/docs/src/app/llms-txt/page.tsx | 111 +++++++++++++++++ apps/docs/src/components/ui/typography.tsx | 2 +- apps/docs/src/config/navigation.ts | 4 + package.json | 1 + pnpm-lock.yaml | 36 +++--- 7 files changed, 302 insertions(+), 16 deletions(-) create mode 100644 apps/docs/public/llms-full.txt create mode 100644 apps/docs/public/llms.txt create mode 100644 apps/docs/src/app/llms-txt/page.tsx diff --git a/apps/docs/public/llms-full.txt b/apps/docs/public/llms-full.txt new file mode 100644 index 0000000..03abc2d --- /dev/null +++ b/apps/docs/public/llms-full.txt @@ -0,0 +1,138 @@ +# @lglab/react-qr-code Technical Reference + +> Comprehensive technical documentation for @lglab/react-qr-code, a highly customizable React QR code generator. + +This file provides all technical details including component props, types, and API references to enable LLMs to work with the library without fetching additional context. + +## ReactQRCode Component + +The main component exported by the library. + +### Props (ReactQRCodeProps) + +| Prop | Type | Default | Description | +| --- | --- | --- | --- | +| `value` | `string \| string[]` | - | **Required.** The value to encode. Use an array for multi-segment optimization. | +| `size` | `number` | `128` | The size in pixels of the rendered QR code. | +| `level` | `'L' \| 'M' \| 'Q' \| 'H'` | `'L'` | Error Correction Level. | +| `marginSize` | `number` | `0` | Number of modules to use for the margin. | +| `minVersion` | `number` | `1` | Minimum version (1-40) for the QR code. | +| `boostLevel` | `boolean` | `true` | Boosts ECL if version remains the same. | +| `background` | `BackgroundSettings` | `'#FFFFFF'` | Background color (hex) or `GradientSettings`. | +| `gradient` | `GradientSettings` | - | Gradient applied to data modules and finder patterns. | +| `dataModulesSettings` | `DataModulesSettings` | - | Configuration for data modules styling. | +| `finderPatternOuterSettings` | `FinderPatternOuterSettings` | - | Configuration for outer finder patterns. | +| `finderPatternInnerSettings` | `FinderPatternInnerSettings` | - | Configuration for inner finder patterns. | +| `imageSettings` | `ImageSettings` | - | Settings for an embedded logo or image. | +| `svgProps` | `React.SVGProps` | - | Additional props passed to the root SVG element. | + +--- + +## Sub-Settings Interfaces + +### DataModulesSettings + +| Property | Type | Default | Description | +| --- | --- | --- | --- | +| `color` | `string` | - | Color of the data modules (overridden by `gradient`). | +| `style` | `DataModulesStyle` | `'square'` | Shape of the data modules. | +| `randomSize` | `boolean` | `false` | If true, modules will have slightly varied sizes. | + +**Available Styles (`DataModulesStyle`):** +`'square'`, `'square-sm'`, `'pinched-square'`, `'rounded'`, `'leaf'`, `'vertical-line'`, `'horizontal-line'`, `'circle'`, `'diamond'`, `'star'`, `'heart'`, `'hashtag'` + +### FinderPatternOuterSettings + +| Property | Type | Default | Description | +| --- | --- | --- | --- | +| `color` | `string` | - | Color of the outer pattern (overridden by `gradient`). | +| `style` | `FinderPatternOuterStyle` | `'square'` | Shape of the outer finder pattern. | + +**Available Styles (`FinderPatternOuterStyle`):** +`'square'`, `'pinched-square'`, `'rounded-sm'`, `'rounded'`, `'rounded-lg'`, `'circle'`, `'inpoint-sm'`, `'inpoint'`, `'inpoint-lg'`, `'outpoint-sm'`, `'outpoint'`, `'outpoint-lg'`, `'leaf-sm'`, `'leaf'`, `'leaf-lg'` + +### FinderPatternInnerSettings + +| Property | Type | Default | Description | +| --- | --- | --- | --- | +| `color` | `string` | - | Color of the inner pattern (overridden by `gradient`). | +| `style` | `FinderPatternInnerStyle` | `'square'` | Shape of the inner finder pattern. | + +**Available Styles (`FinderPatternInnerStyle`):** +Includes all `FinderPatternOuterStyle` plus: `'diamond'`, `'star'`, `'heart'`, `'hashtag'` + +### ImageSettings + +| Property | Type | Default | Description | +| --- | --- | --- | --- | +| `src` | `string` | - | **Required.** URL/Source of the image. | +| `height` | `number` | - | **Required.** Height in pixels. | +| `width` | `number` | - | **Required.** Width in pixels. | +| `excavate` | `boolean` | `false` | Remove modules behind the image. | +| `x` | `number` | - | Horizontal offset (centered by default). | +| `y` | `number` | - | Vertical offset (centered by default). | +| `opacity` | `number` | `1` | Image opacity (0-1). | +| `crossOrigin` | `CrossOrigin` | - | CORS setting for the image. | + +### GradientSettings + +| Property | Type | Default | Description | +| --- | --- | --- | --- | +| `type` | `'linear' \| 'radial'` | - | **Required.** Type of gradient. | +| `stops` | `GradientSettingsStop[]` | - | **Required.** Array of `{ offset: string, color: string }`. | +| `rotation` | `number` | `0` | Rotation in degrees (for linear gradients). | + +--- + +## Imperative API (Ref) + +The component exposes the following via `forwardRef`: + +### ReactQRCodeRef + +| Method / Property | Type | Description | +| --- | --- | --- | +| `svg` | `SVGSVGElement \| null` | Reference to the underlying SVG element. | +| `download` | `(options: DownloadOptions) => void` | Triggers a download of the QR code. | + +### DownloadOptions + +| Property | Type | Default | Description | +| --- | --- | --- | --- | +| `name` | `string` | `'qr-code'` | Filename without extension. | +| `format` | `'svg' \| 'png' \| 'jpeg'` | `'svg'` | Target file format. | +| `size` | `number` | `500` | Target size in pixels for the export. | + +--- + +## Examples + +### Basic Usage +```tsx +import { ReactQRCode } from '@lglab/react-qr-code'; + + +``` + +### Advanced Customization +```tsx + +``` + diff --git a/apps/docs/public/llms.txt b/apps/docs/public/llms.txt new file mode 100644 index 0000000..efd13a2 --- /dev/null +++ b/apps/docs/public/llms.txt @@ -0,0 +1,26 @@ +# reactqrcode.com + +> Official documentation and demo for @lglab/react-qr-code, a highly customizable React QR code generator. + +This site serves as the central hub for the `@lglab/react-qr-code` library, providing installation guides, API references, and an interactive demo for generating custom QR codes. + +## Documentation Pages + +- [Introduction](https://reactqrcode.com/) +- [Installation](https://reactqrcode.com/installation) +- [Quick Start](https://reactqrcode.com/quick-start) +- [Interactive Demo](https://reactqrcode.com/demo) +- [ReactQRCode Props](https://reactqrcode.com/react-qr-code-props) +- [Ref API](https://reactqrcode.com/ref-api) +- [Data Modules Settings](https://reactqrcode.com/data-modules-settings) +- [Finder Pattern Inner Settings](https://reactqrcode.com/finder-pattern-inner-settings) +- [Finder Pattern Outer Settings](https://reactqrcode.com/finder-pattern-outer-settings) +- [Gradient Settings](https://reactqrcode.com/gradient-settings) +- [Image Settings](https://reactqrcode.com/image-settings) +- [Examples](https://reactqrcode.com/examples) + +## External Links + +- [GitHub Repository](https://github.com/LGLabGreg/react-qr-code) +- [npm Package](https://www.npmjs.com/package/@lglab/react-qr-code) + diff --git a/apps/docs/src/app/llms-txt/page.tsx b/apps/docs/src/app/llms-txt/page.tsx new file mode 100644 index 0000000..f8a5cd3 --- /dev/null +++ b/apps/docs/src/app/llms-txt/page.tsx @@ -0,0 +1,111 @@ +import { PageHeading } from '@/components/page-heading' +import { + TypographyBold, + TypographyH2, + TypographyInlineCode, + TypographyList, + TypographyP, +} from '@/components/ui/typography' + +export default function Page() { + return ( + <> + + + We support the llms.txt standard to help AI + coding assistants better understand the{' '} + @lglab/react-qr-code library, its + API, and various customization options. + + + What is llms.txt? + + The llms.txt file is a proposal to standardize + the provision of information to Large Language Models (LLMs) at inference time. It + provides a curated, LLM-friendly overview of a project, making it easier for AI + tools to provide accurate code suggestions and documentation. + + + Available Routes + + We provide two distinct files to cater to different levels of detail: + + + + + /llms.txt + + {' '} + - A structured overview of the project with links to all documentation + pages. + + ), + }, + { + key: 'llms-full', + content: ( + <> + + + /llms-full.txt + + {' '} + - A comprehensive technical reference including all component props, + settings interfaces, and usage examples. + + ), + }, + ]} + /> + + Usage with Cursor + + You can use these files in Cursor to enhance its + understanding of the library. For more details, see the{' '} + + Cursor Documentation + + . + + + Type @Docs in the chat or + composer and select Add new doc. Paste{' '} + + https://reactqrcode.com/llms-full.txt + {' '} + to give Cursor full access to the library specification. + + ), + }, + { + key: 'cursor-chat', + content: ( + <> + Alternatively, you can reference the file directly in any prompt by typing{' '} + + @https://reactqrcode.com/llms-full.txt + {' '} + for immediate context. + + ), + }, + ]} + /> + + ) +} diff --git a/apps/docs/src/components/ui/typography.tsx b/apps/docs/src/components/ui/typography.tsx index 1739328..4b67ac0 100644 --- a/apps/docs/src/components/ui/typography.tsx +++ b/apps/docs/src/components/ui/typography.tsx @@ -57,7 +57,7 @@ export function TypographyH4({ children, className }: TypographyProps) { } export function TypographyP({ children, className }: TypographyProps) { - return

{children}

+ return

{children}

} export function TypographyBlockquote({ children, className }: TypographyProps) { diff --git a/apps/docs/src/config/navigation.ts b/apps/docs/src/config/navigation.ts index 4928f03..32b79a6 100644 --- a/apps/docs/src/config/navigation.ts +++ b/apps/docs/src/config/navigation.ts @@ -21,6 +21,10 @@ export const mainNav: MenuItemProps[] = [ title: 'Demo', url: '/demo', }, + { + title: 'llms.txt', + url: '/llms-txt', + }, ], }, { diff --git a/package.json b/package.json index eb453a2..ca0dd4b 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "husky": "^9.1.7", "jsdom": "^27.3.0", "lint-staged": "^16.2.7", + "prettier": "^3.7.4", "react": "^19.2.3", "react-dom": "^19.2.3", "typescript": "~5.9.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cf165b3..d79151f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 3.3.3 eslint-config-next: specifier: 16.1.0 - version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 16.1.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) devDependencies: '@changesets/changelog-github': specifier: ^0.5.2 @@ -32,7 +32,7 @@ importers: version: 16.3.1(@testing-library/dom@10.4.0)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.0 - version: 6.0.0(@vue/compiler-sfc@3.5.25)(prettier@3.5.2) + version: 6.0.0(@vue/compiler-sfc@3.5.25)(prettier@3.7.4) '@types/jsdom': specifier: ^27.0.0 version: 27.0.0 @@ -72,6 +72,9 @@ importers: lint-staged: specifier: ^16.2.7 version: 16.2.7 + prettier: + specifier: ^3.7.4 + version: 3.7.4 react: specifier: ^19.2.3 version: 19.2.3 @@ -158,7 +161,7 @@ importers: version: 4.1.0 eslint-config-next: specifier: 16.1.0 - version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 16.1.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) lucide-react: specifier: ^0.562.0 version: 0.562.0(react@19.2.3) @@ -195,7 +198,7 @@ importers: version: 4.1.18 '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.0 - version: 6.0.0(@vue/compiler-sfc@3.5.25)(prettier@3.5.2) + version: 6.0.0(@vue/compiler-sfc@3.5.25)(prettier@3.7.4) '@types/node': specifier: ^25.0.3 version: 25.0.3 @@ -3735,8 +3738,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.5.2: - resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==} + prettier@3.7.4: + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} engines: {node: '>=14'} hasBin: true @@ -5924,7 +5927,7 @@ snapshots: '@types/react': 19.2.7 '@types/react-dom': 19.2.3(@types/react@19.2.7) - '@trivago/prettier-plugin-sort-imports@6.0.0(@vue/compiler-sfc@3.5.25)(prettier@3.5.2)': + '@trivago/prettier-plugin-sort-imports@6.0.0(@vue/compiler-sfc@3.5.25)(prettier@3.7.4)': dependencies: '@babel/generator': 7.28.5 '@babel/parser': 7.28.5 @@ -5934,7 +5937,7 @@ snapshots: lodash-es: 4.17.21 minimatch: 9.0.5 parse-imports-exports: 0.2.4 - prettier: 3.5.2 + prettier: 3.7.4 optionalDependencies: '@vue/compiler-sfc': 3.5.25 transitivePeerDependencies: @@ -7082,13 +7085,13 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + eslint-config-next@16.1.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: '@next/eslint-plugin-next': 16.1.0 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1)) @@ -7121,21 +7124,22 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: + '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7146,7 +7150,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7157,6 +7161,8 @@ snapshots: semver: 6.3.1 string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -8191,7 +8197,7 @@ snapshots: prettier@2.8.8: {} - prettier@3.5.2: {} + prettier@3.7.4: {} pretty-format@27.5.1: dependencies: From 2f0e6cc1382ead1071c763ee73a95e0615092712 Mon Sep 17 00:00:00 2001 From: LGLabGreg Date: Sun, 21 Dec 2025 10:34:20 +0000 Subject: [PATCH 4/4] feat: improve homepage --- apps/docs/src/app/page.tsx | 149 +++++++++++---------- apps/docs/src/components/hero.tsx | 35 +++++ apps/docs/src/components/ui/typography.tsx | 4 +- 3 files changed, 114 insertions(+), 74 deletions(-) create mode 100644 apps/docs/src/components/hero.tsx diff --git a/apps/docs/src/app/page.tsx b/apps/docs/src/app/page.tsx index 069b6c4..13b6182 100644 --- a/apps/docs/src/app/page.tsx +++ b/apps/docs/src/app/page.tsx @@ -1,82 +1,87 @@ -import { type PropsWithChildren } from 'react' -import { FaCheckSquare } from 'react-icons/fa' +import { Code, Layers, Sparkles, Zap } from 'lucide-react' +import Link from 'next/link' -import { PageHeading } from '@/components/page-heading' +import { Hero } from '@/components/hero' import { - TypographyBold, - TypographyH2, - TypographyList, - TypographyP, -} from '@/components/ui/typography' + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from '@/components/ui/card' +import { TypographyBold } from '@/components/ui/typography' export default function Page() { - const Check = () => - const ListItem = ({ children }: PropsWithChildren) => ( -
- - {children} -
- ) + const features = [ + { + title: 'Highly Customizable', + description: + 'Style finder patterns, modules, and colors exactly how you want with advanced configuration.', + icon: , + }, + { + title: 'Performance Optimized', + description: + 'Generates QR codes efficiently without sacrificing quality or bundle size.', + icon: , + }, + { + title: 'SVG-Based Rendering', + description: 'Crisp and scalable output for web and print, powered by SVG.', + icon: , + }, + { + title: 'Developer-Friendly', + description: + 'Built with TypeScript, easy to use, and focused on a great developer experience.', + icon: , + }, + ] + return ( <> - - The Ultimate Customizable QR Code Generator for React - - Welcome to @lglab/react-qr-code, the modern, - high-performance QR code generator built for React developers. Designed for - flexibility, this library lets you create highly customizable QR codes with - advanced styling options. - + +
+ {features.map((feature) => ( + + +
+ {feature.icon} +
+
+ {feature.title} + + {feature.description} + +
+
+
+ ))} +
- -
- Highly Customizable - Style the - finder patterns, modules, and colors exactly how you want. -
- - ), - }, - { - key: 'Performance', - content: ( - -
- Performance Optimized - Generates - QR codes efficiently without sacrificing quality. -
-
- ), - }, - { - key: 'SVG', - content: ( - -
- SVG-Based Rendering - Crisp and - scalable output for web and print -
-
- ), - }, - { - key: 'Developer-Friendly', - content: ( - -
- Developer-Friendly - Built with - TypeScript, easy to use, and well-documented -
-
- ), - }, - ]} - >
+ + +
+ +
+
+ Optimized for AI + + We provide llms.txt and{' '} + llms-full.txt files to help tools like + Cursor and Windsurf understand the library documentation instantly. + +
+
+ + + Learn how to use with AI tools → + + +
) } diff --git a/apps/docs/src/components/hero.tsx b/apps/docs/src/components/hero.tsx new file mode 100644 index 0000000..3bb8cb3 --- /dev/null +++ b/apps/docs/src/components/hero.tsx @@ -0,0 +1,35 @@ +import { ArrowRight } from 'lucide-react' +import Link from 'next/link' + +import { Button } from '@/components/ui/button' + +import { TypographyLead } from './ui/typography' + +export const Hero = () => { + return ( +
+
+
+

+ The ultimate customizable QR code generator for React +

+ + Create high-performance, stylized QR codes with a library designed for the + modern web. + +
+
+ + +
+
+
+ ) +} diff --git a/apps/docs/src/components/ui/typography.tsx b/apps/docs/src/components/ui/typography.tsx index 4b67ac0..d766f4f 100644 --- a/apps/docs/src/components/ui/typography.tsx +++ b/apps/docs/src/components/ui/typography.tsx @@ -139,7 +139,7 @@ export function TypographyTable({ {headers.map((header) => ( {header} @@ -152,7 +152,7 @@ export function TypographyTable({ {items.map((item) => ( {item}