Repository: briansegs/manza-search
Pull request #6: Brian/customize cms
Author: login: briansegs
Created: 2025-03-01T17:03:53Z | Merged: 2025-03-01T17:38:59Z



<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced new graphics elements, including `Icon` and `Logo`, that refresh the site’s visual identity.
  - Updated social sharing settings with rebranded title, description, and preview image.

- **Style**
  - Added customizable theming support for both light and dark modes for a consistent user experience.

- **Refactor**
  - Streamlined dashboard and login interfaces with clearer messaging and simplified guidance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 75504e7..541e5f0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1699,8 +1699,8 @@ packages:
   '@types/json5@0.0.29':
     resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
 
-  '@types/lodash@4.17.15':
-    resolution: {integrity: sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==}
+  '@types/lodash@4.17.16':
+    resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==}
 
   '@types/mdast@4.0.4':
     resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
@@ -4228,8 +4228,8 @@ packages:
     resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
     engines: {node: '>= 0.8.0'}
 
-  type-fest@4.35.0:
-    resolution: {integrity: sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A==}
+  type-fest@4.36.0:
+    resolution: {integrity: sha512-3T/PUdKTCnkUmhQU6FFJEHsLwadsRegktX3TNHk+2JJB9HlA8gp1/VXblXVDI93kSnXF2rdPx0GMbHtJIV2LPg==}
     engines: {node: '>=16'}
 
   typed-array-buffer@1.0.3:
@@ -6611,7 +6611,7 @@ snapshots:
 
   '@types/json5@0.0.29': {}
 
-  '@types/lodash@4.17.15': {}
+  '@types/lodash@4.17.16': {}
 
   '@types/mdast@4.0.4':
     dependencies:
@@ -7213,7 +7213,7 @@ snapshots:
   dot-case@3.0.4:
     dependencies:
       no-case: 3.0.4
-      tslib: 2.8.1
+      tslib: 2.4.1
 
   dunder-proto@1.0.1:
     dependencies:
@@ -8077,7 +8077,7 @@ snapshots:
     dependencies:
       '@apidevtools/json-schema-ref-parser': 11.9.3
       '@types/json-schema': 7.0.15
-      '@types/lodash': 4.17.15
+      '@types/lodash': 4.17.16
       is-glob: 4.0.3
       js-yaml: 4.1.0
       lodash: 4.17.21
@@ -8153,7 +8153,7 @@ snapshots:
 
   lower-case@2.0.2:
     dependencies:
-      tslib: 2.8.1
+      tslib: 2.4.1
 
   lru-cache@10.4.3: {}
 
@@ -8532,7 +8532,7 @@ snapshots:
   no-case@3.0.4:
     dependencies:
       lower-case: 2.0.2
-      tslib: 2.8.1
+      tslib: 2.4.1
 
   node-abi@3.74.0:
     dependencies:
@@ -9256,13 +9256,13 @@ snapshots:
   snake-case@3.0.4:
     dependencies:
       dot-case: 3.0.4
-      tslib: 2.8.1
+      tslib: 2.4.1
 
   snakecase-keys@8.0.1:
     dependencies:
       map-obj: 4.3.0
       snake-case: 3.0.4
-      type-fest: 4.35.0
+      type-fest: 4.36.0
 
   sonic-boom@4.2.0:
     dependencies:
@@ -9581,7 +9581,7 @@ snapshots:
     dependencies:
       prelude-ls: 1.2.1
 
-  type-fest@4.35.0: {}
+  type-fest@4.36.0: {}
 
   typed-array-buffer@1.0.3:
     dependencies:
diff --git a/public/favicon.ico b/public/favicon.ico
index 1ec2c19..6f1a4ba 100644
Binary files a/public/favicon.ico and b/public/favicon.ico differ
diff --git a/public/favicon.svg b/public/favicon.svg
index d7ccc5a..eb3f0ab 100644
--- a/public/favicon.svg
+++ b/public/favicon.svg
@@ -1,23 +1,11 @@
-<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" width="1000" height="1000"><style>
-    #light-icon {
-      display: inline;
-    }
-    #dark-icon {
-      display: none;
-    }
-
-    @media (prefers-color-scheme: dark) {
-      #light-icon {
-        display: none;
-      }
-      #dark-icon {
-        display: inline;
-      }
-    }
-  </style><g id="light-icon"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" width="1000" height="1000"><g clip-path="url(#SvgjsClipPath1059)"><rect width="1000" height="1000" fill="#000000"></rect><g transform="matrix(5,0,0,5,192.5,150)"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" width="123" height="140"><svg width="123" height="140" viewBox="0 0 123 140" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M60.2569 118.758L18.9035 94.9917C18.4016 94.6917 18.067 94.1583 18.067 93.5583V56.825C18.067 56.1917 18.7696 55.7917 19.3049 56.0917L67.3164 83.6917C67.9855 84.0917 68.822 83.5917 68.822 82.825V64.925C68.822 64.225 68.4539 63.5583 67.8182 63.1917L10.0707 29.9917C9.56883 29.6917 8.89968 29.6917 8.39782 29.9917L0.836436 34.3583C0.334574 34.6583 0 35.1917 0 35.7917V104.025C0 104.625 0.334574 105.158 0.836436 105.458L60.1565 139.592C60.6583 139.892 61.3275 139.892 61.8293 139.592L111.647 110.925C112.317 110.525 112.317 109.592 111.647 109.192L96.1232 100.258C95.4875 99.8917 94.7515 99.8917 94.1158 100.258L61.9632 118.758C61.4613 119.058 60.7922 119.058 60.2903 118.758H60.2569Z" fill="white"></path>
-<path d="M121.149 34.325L61.8294 0.225C61.3275 -0.075 60.6584 -0.075 60.1565 0.225L28.8069 18.2583C28.1378 18.6583 28.1378 19.5917 28.8069 19.9917L44.1973 28.8583C44.833 29.225 45.5691 29.225 46.2048 28.8583L60.2569 20.7917C60.7588 20.4917 61.4279 20.4917 61.9298 20.7917L103.283 44.5583C103.785 44.8583 104.12 45.3917 104.12 45.9917V82.8917C104.12 83.5917 104.488 84.2583 105.123 84.625L120.514 93.4583C121.183 93.8583 122.019 93.3583 122.019 92.5917V35.7917C122.019 35.1917 121.685 34.6583 121.183 34.3583L121.149 34.325Z" fill="white"></path>
-</svg></svg></g></g><defs><clipPath id="SvgjsClipPath1059"><rect width="1000" height="1000" x="0" y="0" rx="350" ry="350"></rect></clipPath></defs></svg></g><g id="dark-icon"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" width="1000" height="1000"><g clip-path="url(#SvgjsClipPath1060)"><rect width="1000" height="1000" fill="#000000"></rect><g transform="matrix(5,0,0,5,192.5,150)"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" width="123" height="140"><svg width="123" height="140" viewBox="0 0 123 140" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M60.2569 118.758L18.9035 94.9917C18.4016 94.6917 18.067 94.1583 18.067 93.5583V56.825C18.067 56.1917 18.7696 55.7917 19.3049 56.0917L67.3164 83.6917C67.9855 84.0917 68.822 83.5917 68.822 82.825V64.925C68.822 64.225 68.4539 63.5583 67.8182 63.1917L10.0707 29.9917C9.56883 29.6917 8.89968 29.6917 8.39782 29.9917L0.836436 34.3583C0.334574 34.6583 0 35.1917 0 35.7917V104.025C0 104.625 0.334574 105.158 0.836436 105.458L60.1565 139.592C60.6583 139.892 61.3275 139.892 61.8293 139.592L111.647 110.925C112.317 110.525 112.317 109.592 111.647 109.192L96.1232 100.258C95.4875 99.8917 94.7515 99.8917 94.1158 100.258L61.9632 118.758C61.4613 119.058 60.7922 119.058 60.2903 118.758H60.2569Z" fill="white"></path>
-<path d="M121.149 34.325L61.8294 0.225C61.3275 -0.075 60.6584 -0.075 60.1565 0.225L28.8069 18.2583C28.1378 18.6583 28.1378 19.5917 28.8069 19.9917L44.1973 28.8583C44.833 29.225 45.5691 29.225 46.2048 28.8583L60.2569 20.7917C60.7588 20.4917 61.4279 20.4917 61.9298 20.7917L103.283 44.5583C103.785 44.8583 104.12 45.3917 104.12 45.9917V82.8917C104.12 83.5917 104.488 84.2583 105.123 84.625L120.514 93.4583C121.183 93.8583 122.019 93.3583 122.019 92.5917V35.7917C122.019 35.1917 121.685 34.6583 121.183 34.3583L121.149 34.325Z" fill="white"></path>
-</svg></svg></g></g><defs><clipPath id="SvgjsClipPath1060"><rect width="1000" height="1000" x="0" y="0" rx="350" ry="350"></rect></clipPath></defs></svg></g></svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" width="661" height="528"><svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 661 528" width="661" height="528">
+	<title>Manza_Logo_light</title>
+	<style>
+		.s0 { fill: #000000 } 
+	</style>
+	<path class="s0" d="m143.7 143.2c-1-7-2-13.9-2.3-20.9 26.7-0.2 71.7 8 94.3 21.7-22.3-3.2-44.2-2.3-66.4 0.8 0.3 5.5 1.2 11 1.8 16.5q2.1 17.2 3.6 34.4 4.9 67.3 6.1 134.8c21.7-1.2 44 3.5 64.3 10.6 26.4 9.3 50.5 24.3 69.2 45.3 5.3 6 10.4 12.4 13.9 19.7-2.7-2.8-5.1-5.9-7.7-8.8q-4.8-5.3-10.2-10-5.4-4.6-11.3-8.6c-30.2-20.2-67.9-31-104.3-28.1-12.1 1-24.2 3.8-36.2 6.2-1.1-28-1.7-56-3.1-84q-2.8-50.8-7.7-101.4c-6.9 1.1-14 1.5-20.9 2.6 0.4 6.4 1.1 12.7 1.7 19.1 0.8 6.1 1.2 12.4 1.7 18.5q1.7 20 3.1 39.9 4.6 67.7 5.3 135.5c30.6-9.5 61.4-16.6 93.7-15.7 34.3 1.1 72.9 11.9 97.1 37.6-2.6-1.3-5.2-2.4-7.9-3.4q-8.3-3.1-16.9-5.6-8.6-2.4-17.3-4.2c-44.9-8.6-95.6-3.2-138.6 11.8-10.6 3.7-20.9 8.4-31.1 13.2-0.4-7.6-1.3-15.2-2-22.7l-3.9-43.6-12.4-141.2-2.9-34.3c-0.9-9.8-1.9-19.5-2.3-29.3 8.7-1.5 17.3-3.4 26-4.5 7.8-1.1 15.7-1.4 23.6-1.9z"></path>
+	<path class="s0" d="m422.9 144.1c27.9-13 56.7-19.9 87.5-21.6 2.6-0.3 5.3-0.2 8-0.3-0.4 7-1.5 14-2.4 21 4.5 0.5 9 0.5 13.5 0.9 11.8 0.9 24.2 2.4 35.5 5.8q0.2 0.4 0.3 0.9c1 3.6-3.2 41.5-3.9 49.5l-11 126.9c-2.5 28.7-4.8 57.4-7.7 86.1-0.2 2.2-0.1 5.3-1.3 7.3-0.2-0.2-0.4-0.4-0.7-0.6-5.2-3.5-13.6-6.2-19.4-8.6-43.3-17.4-96.8-24.4-142.9-16.8-9.6 1.6-19.4 3.7-28.6 6.8-6.1 2.1-12.2 5.3-18.5 6.5l-0.4-0.3c0.8-1.3 2.8-2.4 4-3.4 7.5-6 15-11.4 23.5-15.9 36.2-19.1 80-20.4 119.5-12.7 14.7 2.8 28.8 7 43.1 11.4-0.1-18 0.6-36.2 1.3-54.2q1.7-53.3 5.9-106.3c0.3-4.4 2.8-24 1.8-27.4 0.2-0.2 0.3-0.3 0.4-0.7 0.9-3.3 3.1-21.9 1.6-24.4-3.8-1.5-15.3-2.1-20-2.6-5.2 40.3-7.2 81.1-8.6 121.7l-1.4 39.3c-0.3 8-0.1 16.4-1.1 24.3-6.5-0.9-12.9-2.5-19.3-3.7-11-2.1-21.8-3.2-33-2.8-35.2 1.1-74.1 14.6-100.6 38.1-6.4 5.6-11.1 12.1-16.9 18.2 3.7-9.1 11.4-17.8 18.2-24.6 27-27.4 63.9-44.7 101.9-49.8 9.2-1.3 18.4-1.6 27.7-1.6q0.3-46.5 3.2-92.9 2.9-46.4 8.3-92.6c-21.3-4.6-45.9-3.4-67.5-0.9z"></path>
+	<path class="s0" d="m252.1 187.2c-0.1-1.7-0.4-4.2 0.3-5.7l0.9-0.2q18.4-0.2 36.8 0.1c3.8 10.3 8.7 20.4 13 30.6l27.2 63.3c1-2.9 2.5-5.7 3.7-8.5q3.5-7.6 6.9-15.3c10.2-23.4 21.2-46.6 30.7-70.2q17.9-0.6 35.7 0.2v5.7c-3.6 0.5-7.7 0.8-10.7 3-3 2.2-3.8 5.9-4.3 9.3-0.9 6.7-0.7 13.5-0.7 20.2v25 22.9c0 5.6-0.2 11.4 0.5 17.1 0.3 2.8 0.9 5.8 2.8 8.1 3.1 3.9 9.6 3.8 14 4.3v5.8c-17.1 0.4-34.2 0.2-51.3 0l-0.1-5.8c4.7-0.6 10.2-0.6 13.8-4.1 1.9-2 2.6-5 3-7.6 1.3-8.3 0.7-17.1 0.7-25.4v-40c0.1-6.6 0.5-13.5-0.4-20.2-3.3 4.9-5.3 10.3-7.7 15.6l-8.2 18.6-31.7 71.1c-1.1 0-2.3-0.2-3.4-0.2-10.4-22.9-20.2-46.1-30.3-69.1-5.1-11.9-10.1-23.9-15.8-35.5 0.2 17.9 0.1 35.8 0 53.8 0 9.4-0.6 19 0.3 28.4 0.3 2.9 0.7 7.4 2.6 9.8 3.3 4.3 9.6 4.2 14.4 4.8l-0.1 5.8c-14.7 0.4-29.5 0.2-44.2 0v-5.8c4.1-0.6 9-0.6 12.5-3.1 3.1-2.3 3.7-5.4 4.3-9 0.9-6 0.7-12.2 0.7-18.3v-22.3-25c0-5.8 0.1-11.7-0.4-17.5-0.2-2.8-0.5-7.1-2.3-9.4-3.1-4.2-8.5-4.6-13.2-5.3z"></path>
+</svg><style>@media (prefers-color-scheme: light) { :root { filter: none; } }
+@media (prefers-color-scheme: dark) { :root { filter: none; } }
+</style></svg>
\ No newline at end of file
diff --git a/public/manza-search-OG.webp b/public/manza-search-OG.webp
new file mode 100644
index 0000000..1346f72
Binary files /dev/null and b/public/manza-search-OG.webp differ
diff --git a/public/website-template-OG.webp b/public/website-template-OG.webp
deleted file mode 100644
index ceb0efc..0000000
Binary files a/public/website-template-OG.webp and /dev/null differ
diff --git a/src/app/(payload)/admin/importMap.js b/src/app/(payload)/admin/importMap.js
index 896ea84..f3a5523 100644
--- a/src/app/(payload)/admin/importMap.js
+++ b/src/app/(payload)/admin/importMap.js
@@ -20,49 +20,36 @@ import { LinkToDoc as LinkToDoc_aead06e4cbf6b2620c5c51c9ab283634 } from '@payloa
 import { ReindexButton as ReindexButton_aead06e4cbf6b2620c5c51c9ab283634 } from '@payloadcms/plugin-search/client'
 import { RowLabel as RowLabel_ec255a65fa6fa8d1faeb09cf35284224 } from '@/Header/RowLabel'
 import { RowLabel as RowLabel_1f6ff6ff633e3695d348f4f3c58f1466 } from '@/Footer/RowLabel'
+import { Icon as Icon_a712f2e0e6d8ddaa8b559ddd06cfe304 } from '@/components/Graphics/Icon.tsx'
+import { Logo as Logo_0b153f32bbe0ef56002a7ada293bad49 } from '@/components/Graphics/Logo.tsx'
 import { default as default_1a7510af427896d367a49dbf838d2de6 } from '@/components/BeforeDashboard'
 import { default as default_8a7ab0eb7ab5c511aba12e68480bfe5e } from '@/components/BeforeLogin'
 
 export const importMap = {
-  '@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell':
-    RscEntryLexicalCell_44fe37237e0ebf4470c9990d8cb7b07e,
-  '@payloadcms/richtext-lexical/rsc#RscEntryLexicalField':
-    RscEntryLexicalField_44fe37237e0ebf4470c9990d8cb7b07e,
-  '@payloadcms/richtext-lexical/client#InlineToolbarFeatureClient':
-    InlineToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
-  '@payloadcms/richtext-lexical/client#FixedToolbarFeatureClient':
-    FixedToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
-  '@payloadcms/richtext-lexical/client#HeadingFeatureClient':
-    HeadingFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
-  '@payloadcms/richtext-lexical/client#ParagraphFeatureClient':
-    ParagraphFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
-  '@payloadcms/richtext-lexical/client#UnderlineFeatureClient':
-    UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
-  '@payloadcms/richtext-lexical/client#BoldFeatureClient':
-    BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
-  '@payloadcms/richtext-lexical/client#ItalicFeatureClient':
-    ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
-  '@payloadcms/richtext-lexical/client#LinkFeatureClient':
-    LinkFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
-  '@payloadcms/plugin-seo/client#OverviewComponent':
-    OverviewComponent_a8a977ebc872c5d5ea7ee689724c0860,
-  '@payloadcms/plugin-seo/client#MetaTitleComponent':
-    MetaTitleComponent_a8a977ebc872c5d5ea7ee689724c0860,
-  '@payloadcms/plugin-seo/client#MetaImageComponent':
-    MetaImageComponent_a8a977ebc872c5d5ea7ee689724c0860,
-  '@payloadcms/plugin-seo/client#MetaDescriptionComponent':
-    MetaDescriptionComponent_a8a977ebc872c5d5ea7ee689724c0860,
-  '@payloadcms/plugin-seo/client#PreviewComponent':
-    PreviewComponent_a8a977ebc872c5d5ea7ee689724c0860,
-  '@/fields/slug/SlugComponent#SlugComponent': SlugComponent_92cc057d0a2abb4f6cf0307edf59f986,
-  '@payloadcms/richtext-lexical/client#HorizontalRuleFeatureClient':
-    HorizontalRuleFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
-  '@payloadcms/richtext-lexical/client#BlocksFeatureClient':
-    BlocksFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
-  '@payloadcms/plugin-search/client#LinkToDoc': LinkToDoc_aead06e4cbf6b2620c5c51c9ab283634,
-  '@payloadcms/plugin-search/client#ReindexButton': ReindexButton_aead06e4cbf6b2620c5c51c9ab283634,
-  '@/Header/RowLabel#RowLabel': RowLabel_ec255a65fa6fa8d1faeb09cf35284224,
-  '@/Footer/RowLabel#RowLabel': RowLabel_1f6ff6ff633e3695d348f4f3c58f1466,
-  '@/components/BeforeDashboard#default': default_1a7510af427896d367a49dbf838d2de6,
-  '@/components/BeforeLogin#default': default_8a7ab0eb7ab5c511aba12e68480bfe5e,
+  "@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell": RscEntryLexicalCell_44fe37237e0ebf4470c9990d8cb7b07e,
+  "@payloadcms/richtext-lexical/rsc#RscEntryLexicalField": RscEntryLexicalField_44fe37237e0ebf4470c9990d8cb7b07e,
+  "@payloadcms/richtext-lexical/client#InlineToolbarFeatureClient": InlineToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
+  "@payloadcms/richtext-lexical/client#FixedToolbarFeatureClient": FixedToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
+  "@payloadcms/richtext-lexical/client#HeadingFeatureClient": HeadingFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
+  "@payloadcms/richtext-lexical/client#ParagraphFeatureClient": ParagraphFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
+  "@payloadcms/richtext-lexical/client#UnderlineFeatureClient": UnderlineFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
+  "@payloadcms/richtext-lexical/client#BoldFeatureClient": BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
+  "@payloadcms/richtext-lexical/client#ItalicFeatureClient": ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
+  "@payloadcms/richtext-lexical/client#LinkFeatureClient": LinkFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
+  "@payloadcms/plugin-seo/client#OverviewComponent": OverviewComponent_a8a977ebc872c5d5ea7ee689724c0860,
+  "@payloadcms/plugin-seo/client#MetaTitleComponent": MetaTitleComponent_a8a977ebc872c5d5ea7ee689724c0860,
+  "@payloadcms/plugin-seo/client#MetaImageComponent": MetaImageComponent_a8a977ebc872c5d5ea7ee689724c0860,
+  "@payloadcms/plugin-seo/client#MetaDescriptionComponent": MetaDescriptionComponent_a8a977ebc872c5d5ea7ee689724c0860,
+  "@payloadcms/plugin-seo/client#PreviewComponent": PreviewComponent_a8a977ebc872c5d5ea7ee689724c0860,
+  "@/fields/slug/SlugComponent#SlugComponent": SlugComponent_92cc057d0a2abb4f6cf0307edf59f986,
+  "@payloadcms/richtext-lexical/client#HorizontalRuleFeatureClient": HorizontalRuleFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
+  "@payloadcms/richtext-lexical/client#BlocksFeatureClient": BlocksFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
+  "@payloadcms/plugin-search/client#LinkToDoc": LinkToDoc_aead06e4cbf6b2620c5c51c9ab283634,
+  "@payloadcms/plugin-search/client#ReindexButton": ReindexButton_aead06e4cbf6b2620c5c51c9ab283634,
+  "@/Header/RowLabel#RowLabel": RowLabel_ec255a65fa6fa8d1faeb09cf35284224,
+  "@/Footer/RowLabel#RowLabel": RowLabel_1f6ff6ff633e3695d348f4f3c58f1466,
+  "@/components/Graphics/Icon.tsx#Icon": Icon_a712f2e0e6d8ddaa8b559ddd06cfe304,
+  "@/components/Graphics/Logo.tsx#Logo": Logo_0b153f32bbe0ef56002a7ada293bad49,
+  "@/components/BeforeDashboard#default": default_1a7510af427896d367a49dbf838d2de6,
+  "@/components/BeforeLogin#default": default_8a7ab0eb7ab5c511aba12e68480bfe5e
 }
diff --git a/src/app/(payload)/custom.scss b/src/app/(payload)/custom.scss
index e69de29..a450280 100644
--- a/src/app/(payload)/custom.scss
+++ b/src/app/(payload)/custom.scss
@@ -0,0 +1,72 @@
+@tailwind components;
+@tailwind utilities;
+
+:root {
+  --background: 0 0% 100%;
+  --foreground: 222.2 84% 4.9%;
+
+  --card: 240 5% 96%;
+  --card-foreground: 222.2 84% 4.9%;
+
+  --popover: 0 0% 100%;
+  --popover-foreground: 222.2 84% 4.9%;
+
+  --primary: 222.2 47.4% 11.2%;
+  --primary-foreground: 210 40% 98%;
+
+  --secondary: 210 40% 96.1%;
+  --secondary-foreground: 222.2 47.4% 11.2%;
+
+  --muted: 210 40% 96.1%;
+  --muted-foreground: 215.4 16.3% 46.9%;
+
+  --accent: 210 40% 96.1%;
+  --accent-foreground: 222.2 47.4% 11.2%;
+
+  --destructive: 0 84.2% 60.2%;
+  --destructive-foreground: 210 40% 98%;
+
+  --border: 240 6% 80%;
+  --input: 214.3 31.8% 91.4%;
+  --ring: 222.2 84% 4.9%;
+
+  --radius: 0.2rem;
+
+  --success: 196 52% 74%;
+  --warning: 34 89% 85%;
+  --error: 10 100% 86%;
+}
+
+[data-theme='dark'] {
+  --background: 0 0% 0%;
+  --foreground: 210 40% 98%;
+
+  --card: 0 0% 4%;
+  --card-foreground: 210 40% 98%;
+
+  --popover: 222.2 84% 4.9%;
+  --popover-foreground: 210 40% 98%;
+
+  --primary: 210 40% 98%;
+  --primary-foreground: 222.2 47.4% 11.2%;
+
+  --secondary: 217.2 32.6% 17.5%;
+  --secondary-foreground: 210 40% 98%;
+
+  --muted: 217.2 32.6% 17.5%;
+  --muted-foreground: 215 20.2% 65.1%;
+
+  --accent: 217.2 32.6% 17.5%;
+  --accent-foreground: 210 40% 98%;
+
+  --destructive: 0 62.8% 30.6%;
+  --destructive-foreground: 210 40% 98%;
+
+  --border: 0, 0%, 15%, 0.8;
+  --input: 217.2 32.6% 17.5%;
+  --ring: 212.7 26.8% 83.9%;
+
+  --success: 196 100% 14%;
+  --warning: 34 51% 25%;
+  --error: 10 39% 43%;
+}
diff --git a/src/components/BeforeDashboard/SeedButton/index.scss b/src/components/BeforeDashboard/SeedButton/index.scss
deleted file mode 100644
index 3ed9bcb..0000000
--- a/src/components/BeforeDashboard/SeedButton/index.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.seedButton {
-  appearance: none;
-  background: none;
-  border: none;
-  padding: 0;
-  text-decoration: underline;
-
-  &:hover {
-    cursor: pointer;
-    opacity: 0.85;
-  }
-}
diff --git a/src/components/BeforeDashboard/SeedButton/index.tsx b/src/components/BeforeDashboard/SeedButton/index.tsx
deleted file mode 100644
index 87abdf8..0000000
--- a/src/components/BeforeDashboard/SeedButton/index.tsx
+++ /dev/null
@@ -1,88 +0,0 @@
-'use client'
-
-import React, { Fragment, useCallback, useState } from 'react'
-import { toast } from '@payloadcms/ui'
-
-import './index.scss'
-
-const SuccessMessage: React.FC = () => (
-  <div>
-    Database seeded! You can now{' '}
-    <a target="_blank" href="/">
-      visit your website
-    </a>
-  </div>
-)
-
-export const SeedButton: React.FC = () => {
-  const [loading, setLoading] = useState(false)
-  const [seeded, setSeeded] = useState(false)
-  const [error, setError] = useState<null | string>(null)
-
-  const handleClick = useCallback(
-    async (e: React.MouseEvent<HTMLButtonElement>) => {
-      e.preventDefault()
-
-      if (seeded) {
-        toast.info('Database already seeded.')
-        return
-      }
-      if (loading) {
-        toast.info('Seeding already in progress.')
-        return
-      }
-      if (error) {
-        toast.error(`An error occurred, please refresh and try again.`)
-        return
-      }
-
-      setLoading(true)
-
-      try {
-        toast.promise(
-          new Promise((resolve, reject) => {
-            try {
-              fetch('/next/seed', { method: 'POST', credentials: 'include' })
-                .then((res) => {
-                  if (res.ok) {
-                    resolve(true)
-                    setSeeded(true)
-                  } else {
-                    reject('An error occurred while seeding.')
-                  }
-                })
-                .catch((error) => {
-                  reject(error)
-                })
-            } catch (error) {
-              reject(error)
-            }
-          }),
-          {
-            loading: 'Seeding with data....',
-            success: <SuccessMessage />,
-            error: 'An error occurred while seeding.',
-          },
-        )
-      } catch (err) {
-        const error = err instanceof Error ? err.message : String(err)
-        setError(error)
-      }
-    },
-    [loading, seeded, error],
-  )
-
-  let message = ''
-  if (loading) message = ' (seeding...)'
-  if (seeded) message = ' (done!)'
-  if (error) message = ` (error: ${error})`
-
-  return (
-    <Fragment>
-      <button className="seedButton" onClick={handleClick}>
-        Seed your database
-      </button>
-      {message}
-    </Fragment>
-  )
-}
diff --git a/src/components/BeforeDashboard/index.tsx b/src/components/BeforeDashboard/index.tsx
index 907eae4..ed2383a 100644
--- a/src/components/BeforeDashboard/index.tsx
+++ b/src/components/BeforeDashboard/index.tsx
@@ -1,7 +1,6 @@
 import { Banner } from '@payloadcms/ui/elements/Banner'
 import React from 'react'
 
-import { SeedButton } from './SeedButton'
 import './index.scss'
 
 const baseClass = 'before-dashboard'
@@ -12,61 +11,14 @@ const BeforeDashboard: React.FC = () => {
       <Banner className={`${baseClass}__banner`} type="success">
         <h4>Welcome to your dashboard!</h4>
       </Banner>
-      Here&apos;s what to do next:
+      <p>{"Here's what to do next:"}</p>
       <ul className={`${baseClass}__instructions`}>
-        <li>
-          <SeedButton />
-          {' with a few pages, posts, and projects to jump-start your new site, then '}
-          <a href="/" target="_blank">
-            visit your website
-          </a>
-          {' to see the results.'}
-        </li>
-        <li>
-          If you created this repo using Payload Cloud, head over to GitHub and clone it to your
-          local machine. It will be under the <i>GitHub Scope</i> that you selected when creating
-          this project.
-        </li>
-        <li>
-          {'Modify your '}
-          <a
-            href="https://payloadcms.com/docs/configuration/collections"
-            rel="noopener noreferrer"
-            target="_blank"
-          >
-            collections
-          </a>
-          {' and add more '}
-          <a
-            href="https://payloadcms.com/docs/fields/overview"
-            rel="noopener noreferrer"
-            target="_blank"
-          >
-            fields
-          </a>
-          {' as needed. If you are new to Payload, we also recommend you check out the '}
-          <a
-            href="https://payloadcms.com/docs/getting-started/what-is-payload"
-            rel="noopener noreferrer"
-            target="_blank"
-          >
-            Getting Started
-          </a>
-          {' docs.'}
-        </li>
-        <li>
-          Commit and push your changes to the repository to trigger a redeployment of your project.
-        </li>
+        <li>Suggestion</li>
+        <li>Suggestion</li>
+        <li>Suggestion</li>
+        <li>Suggestion</li>
       </ul>
-      {'Pro Tip: This block is a '}
-      <a
-        href="https://payloadcms.com/docs/admin/custom-components/overview#base-component-overrides"
-        rel="noopener noreferrer"
-        target="_blank"
-      >
-        custom component
-      </a>
-      , you can remove it at any time by updating your <strong>payload.config</strong>.
+      <p>{'Pro Tip: '}</p>
     </div>
   )
 }
diff --git a/src/components/BeforeLogin/index.tsx b/src/components/BeforeLogin/index.tsx
index 8768831..dbca020 100644
--- a/src/components/BeforeLogin/index.tsx
+++ b/src/components/BeforeLogin/index.tsx
@@ -2,10 +2,10 @@ import React from 'react'
 
 const BeforeLogin: React.FC = () => {
   return (
-    <div>
+    <div className="pb-4">
       <p>
         <b>Welcome to your dashboard!</b>
-        {' This is where site admins will log in to manage your website.'}
+        {' This is where you and your site admins will log in to manage your website.'}
       </p>
     </div>
   )
diff --git a/src/components/Graphics/Icon.tsx b/src/components/Graphics/Icon.tsx
new file mode 100644
index 0000000..c27e052
--- /dev/null
+++ b/src/components/Graphics/Icon.tsx
@@ -0,0 +1,11 @@
+export const Icon = ({
+  size = 'size-6',
+  src = '/favicon.svg',
+  alt = 'Manza Search Icon',
+  className = '',
+}) => {
+  return (
+    // eslint-disable-next-line @next/next/no-img-element
+    <img src={src} alt={alt} className={`${size} dark:rounded-lg dark:bg-white ${className}`} />
+  )
+}
diff --git a/src/components/Graphics/Logo.tsx b/src/components/Graphics/Logo.tsx
new file mode 100644
index 0000000..7dcdf28
--- /dev/null
+++ b/src/components/Graphics/Logo.tsx
@@ -0,0 +1,11 @@
+export const Logo = ({
+  size = 'size-64',
+  src = '/favicon.svg',
+  alt = 'Manza Search logo',
+  className = '',
+}) => {
+  return (
+    // eslint-disable-next-line @next/next/no-img-element
+    <img src={src} alt={alt} className={`${size} ${className}`} />
+  )
+}
diff --git a/src/payload.config.ts b/src/payload.config.ts
index 3cd91ac..4c8be14 100644
--- a/src/payload.config.ts
+++ b/src/payload.config.ts
@@ -31,6 +31,17 @@ export default buildConfig({
       // The `BeforeDashboard` component renders the 'welcome' block that you see after logging into your admin panel.
       // Feel free to delete this at any time. Simply remove the line below and the import `BeforeDashboard` statement on line 15.
       beforeDashboard: ['@/components/BeforeDashboard'],
+
+      // Logo and Icon
+      graphics: {
+        Icon: '@/components/Graphics/Icon.tsx#Icon',
+        Logo: '@/components/Graphics/Logo.tsx#Logo',
+      },
+    },
+    meta: {
+      description: 'Where you find and study anything in the world.',
+      icons: [{ type: 'image/png', rel: 'icon', url: '/favicon.svg' }],
+      titleSuffix: '- Manza Search',
     },
     importMap: {
       baseDir: path.resolve(dirname),
diff --git a/src/utilities/generateMeta.ts b/src/utilities/generateMeta.ts
index 7395c87..ac4f0b4 100644
--- a/src/utilities/generateMeta.ts
+++ b/src/utilities/generateMeta.ts
@@ -8,7 +8,7 @@ import { getServerSideURL } from './getURL'
 const getImageURL = (image?: Media | Config['db']['defaultIDType'] | null) => {
   const serverUrl = getServerSideURL()
 
-  let url = serverUrl + '/website-template-OG.webp'
+  let url = serverUrl + '/manza-search-OG.webp'
 
   if (image && typeof image === 'object' && 'url' in image) {
     const ogUrl = image.sizes?.og?.url
diff --git a/src/utilities/mergeOpenGraph.ts b/src/utilities/mergeOpenGraph.ts
index a331a2a..0644e68 100644
--- a/src/utilities/mergeOpenGraph.ts
+++ b/src/utilities/mergeOpenGraph.ts
@@ -3,14 +3,15 @@ import { getServerSideURL } from './getURL'
 
 const defaultOpenGraph: Metadata['openGraph'] = {
   type: 'website',
-  description: 'An open-source website built with Payload and Next.js.',
+  description:
+    'Manza Search provides curated articles and in-depth research tools for students, professionals, and anyone interested in deep knowledge.',
   images: [
     {
-      url: `${getServerSideURL()}/website-template-OG.webp`,
+      url: `${getServerSideURL()}/manza-search-OG.webp`,
     },
   ],
-  siteName: 'Payload Website Template',
-  title: 'Payload Website Template',
+  siteName: 'Manza Search',
+  title: 'Manza Search',
 }
 
 export const mergeOpenGraph = (og?: Metadata['openGraph']): Metadata['openGraph'] => {


Reviews:
user: login: coderabbitai[bot]
body: **Actionable comments posted: 1**

<details>
<summary>🧹 Nitpick comments (6)</summary><blockquote>

<details>
<summary>src/components/Graphics/Icon.tsx (2)</summary><blockquote>

`1-10`: **Consider making the Icon component more flexible with props**

The component is well-structured and follows appropriate practices for accessibility with a descriptive alt text. The ESLint directive is justified since you're intentionally using an `<img>` tag.

For improved reusability, consider accepting props like size, source, alt text to make this component more flexible for different use cases.

```diff
-export const Icon = () => {
+export const Icon = ({ 
+  size = "size-6", 
+  src = "/favicon.svg", 
+  alt = "Manza Search Icon",
+  className = "" 
+}) => {
  return (
    // eslint-disable-next-line @next/next/no-img-element
    <img
-      src="/favicon.svg"
-      alt="Manza Search Icon"
-      className="size-6 dark:rounded-lg dark:bg-white"
+      src={src}
+      alt={alt}
+      className={`${size} dark:rounded-lg dark:bg-white ${className}`}
    />
  )
}
```

---

`4-8`: **Consider using Next.js Image component for performance benefits**

The current implementation uses a standard HTML `<img>` tag. Next.js provides an optimized `Image` component that offers automatic image optimization including:
- Improved performance 
- Automatic responsive sizing
- Visual stability to prevent layout shift


```diff
-// eslint-disable-next-line @next/next/no-img-element
-<img
-  src="/favicon.svg"
-  alt="Manza Search Icon"
-  className="size-6 dark:rounded-lg dark:bg-white"
-/>
+import Image from 'next/image'
+
+<Image
+  src="/favicon.svg"
+  alt="Manza Search Icon"
+  width={24}
+  height={24}
+  className="dark:rounded-lg dark:bg-white"
+/>
```

</blockquote></details>
<details>
<summary>src/components/Graphics/Logo.tsx (1)</summary><blockquote>

`1-6`: **Make Logo component more configurable with props**

Similar to the Icon component, the Logo could benefit from accepting props for greater flexibility.


```diff
-export const Logo = () => {
+export const Logo = ({ 
+  size = "size-64", 
+  src = "/favicon.svg", 
+  alt = "Manza Search logo",
+  className = "" 
+}) => {
  return (
    // eslint-disable-next-line @next/next/no-img-element
-    <img src="/favicon.svg" alt="Manza Search logo" className="size-64" />
+    <img src={src} alt={alt} className={`${size} ${className}`} />
  )
}
```

</blockquote></details>
<details>
<summary>src/utilities/mergeOpenGraph.ts (1)</summary><blockquote>

`6-6`: **Consider adding more specific details to the description**

The new description "A website for articles and research" is quite generic. Consider adding more specific details about what makes Manza Search unique or valuable to users.

```diff
-  description: 'A website for articles and research.',
+  description: 'Manza Search provides curated articles and in-depth research tools for [specific domain/audience].',
```

</blockquote></details>
<details>
<summary>src/app/(payload)/custom.scss (1)</summary><blockquote>

`40-72`: **Inconsistent format for border variable in dark theme**

While most variables maintain consistent formatting between themes, there's an inconsistency in the border variable.


```diff
-  --border: 0, 0%, 15%, 0.8;
+  --border: 0 0% 15% / 0.8;
```

The light theme uses space separation (line 29) while the dark theme uses comma separation with alpha (line 65). This could cause styling inconsistencies.

</blockquote></details>
<details>
<summary>src/components/BeforeDashboard/index.tsx (1)</summary><blockquote>

`14-20`: **Dashboard instructions replaced with generic placeholders**

The specific guidance previously provided has been replaced with generic "Suggestion" placeholders. Consider providing actual, helpful suggestions to guide users.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

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

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between d2585e464a04072aa0406a1eeb8c4d68e12f0578 and 6cff696d958b10432eadc93ba62987b21ea1190b.

</details>

<details>
<summary>⛔ Files ignored due to path filters (3)</summary>

* `pnpm-lock.yaml` is excluded by `!**/pnpm-lock.yaml`
* `public/favicon.ico` is excluded by `!**/*.ico`
* `public/favicon.svg` is excluded by `!**/*.svg`

</details>

<details>
<summary>📒 Files selected for processing (11)</summary>

* `src/app/(payload)/admin/importMap.js` (1 hunks)
* `src/app/(payload)/custom.scss` (1 hunks)
* `src/components/BeforeDashboard/SeedButton/index.scss` (0 hunks)
* `src/components/BeforeDashboard/SeedButton/index.tsx` (0 hunks)
* `src/components/BeforeDashboard/index.tsx` (1 hunks)
* `src/components/BeforeLogin/index.tsx` (1 hunks)
* `src/components/Graphics/Icon.tsx` (1 hunks)
* `src/components/Graphics/Logo.tsx` (1 hunks)
* `src/payload.config.ts` (1 hunks)
* `src/utilities/generateMeta.ts` (1 hunks)
* `src/utilities/mergeOpenGraph.ts` (1 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (2)</summary>

* src/components/BeforeDashboard/SeedButton/index.tsx
* src/components/BeforeDashboard/SeedButton/index.scss

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (1)</summary>

* src/utilities/generateMeta.ts

</details>

<details>
<summary>🔇 Additional comments (11)</summary><blockquote>

<details>
<summary>src/components/Graphics/Logo.tsx (2)</summary>

`1-6`: **Logo component uses same source file as Icon component**

Both the Logo and Icon components use `/favicon.svg` as their source file. Typically, a logo and favicon would be different images - one optimized for site branding and the other for browser tabs.

Consider using a dedicated logo file that better represents your brand at larger sizes.

---

`4-4`: **Verify the size-64 class for logo dimensions**

The `size-64` class in Tailwind CSS equates to 16rem or 256px, which is quite large for a typical logo. Ensure this size is intentional for your design.

If this is too large, consider using a smaller size class or making the size configurable through props.

</details>
<details>
<summary>src/components/BeforeLogin/index.tsx (2)</summary>

`5-5`: **Added padding improves layout** 

The addition of `pb-4` class provides appropriate spacing below the welcome message, improving the visual hierarchy of the login screen.

---

`8-8`: **Message text is now more inclusive**

Changing the text to include "you and" before "your site admins" makes the message more inclusive and directly addresses the user, which improves the user experience.

</details>
<details>
<summary>src/utilities/mergeOpenGraph.ts (2)</summary>

`12-13`: **Consistent branding update**

The site name and title have been consistently updated to "Manza Search" which aligns with the overall rebranding effort seen in other files.

---

`9-9`: <details>
<summary>✅ Verification successful</summary>

**Verify that the new OG image exists**

The path has been updated to reference a new image file: `/manza-search-OG.webp`. Make sure this file exists in the correct location, or social media platforms will fail to display your preview image.

---

🏁 Script executed:

```shell
#!/bin/bash
# Check if the OG image exists in the public directory
find public -name "manza-search-OG.webp" -type f
```

Length of output: 76

---



</details>

**Confirmation: OG Image Exists in Correct Location**

The verification confirms that the image file `manza-search-OG.webp` is present in the public directory at `public/manza-search-OG.webp`. No further action is needed as the file exists and is correctly referenced.

</details>
<details>
<summary>src/payload.config.ts (2)</summary>

`34-39`: **Custom branding components added to admin panel**

The addition of custom Icon and Logo components enhances the admin interface with branded graphics. This is a good implementation that follows PayloadCMS's component customization pattern.

---

`41-45`: **Metadata configuration appropriately defined**

The metadata configuration provides essential information for the admin panel, including a descriptive tagline, favicon, and title suffix. This improves branding consistency across the application.

</details>
<details>
<summary>src/app/(payload)/custom.scss (1)</summary>

`4-38`: **Well-structured theming variables for light mode**

The CSS custom properties are well-organized with appropriate naming conventions, creating a comprehensive theming system. The HSL color format provides flexibility for color manipulation.

</details>
<details>
<summary>src/app/(payload)/admin/importMap.js (2)</summary>

`23-24`: **New graphic components imported**

The addition of Icon and Logo components supports the custom branding changes in the admin interface.

---

`29-54`: **Updated component reference formatting**

The component references have been updated from single quotes to double quotes. While this is mainly a stylistic change, it provides consistency throughout the file.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-03-01T17:07:09Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 1**

<details>
<summary>🧹 Nitpick comments (1)</summary><blockquote>

<details>
<summary>src/components/Graphics/Icon.tsx (1)</summary><blockquote>

`1-11`: **Well-structured Icon component, consider using Next.js Image component**

The Icon component is well-implemented with appropriate defaults and dark mode styling. However, you're disabling the ESLint rule that recommends using Next.js `Image` component over the standard HTML `img` tag.

The Next.js `Image` component offers advantages like automatic optimization, lazy loading, and responsive resizing. Consider refactoring to use it unless there's a specific reason to use the standard HTML element.


```diff
+import Image from 'next/image'

 export const Icon = ({
   size = 'size-6',
   src = '/favicon.svg',
   alt = 'Manza Search Icon',
   className = '',
 }) => {
   return (
-    // eslint-disable-next-line @next/next/no-img-element
-    <img src={src} alt={alt} className={`${size} dark:rounded-lg dark:bg-white ${className}`} />
+    <Image
+      src={src}
+      alt={alt}
+      className={`${size} dark:rounded-lg dark:bg-white ${className}`}
+      width={24}
+      height={24}
+    />
   )
 }
```

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

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

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 6cff696d958b10432eadc93ba62987b21ea1190b and 3eb77ccd87aae148d776d45b91812ec3651eef2d.

</details>

<details>
<summary>📒 Files selected for processing (3)</summary>

* `src/components/Graphics/Icon.tsx` (1 hunks)
* `src/components/Graphics/Logo.tsx` (1 hunks)
* `src/utilities/mergeOpenGraph.ts` (1 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* src/utilities/mergeOpenGraph.ts

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-03-01T17:34:21Z

Review comments:
diff_hunk: @@ -12,61 +11,14 @@ const BeforeDashboard: React.FC = () => {
       <Banner className={`${baseClass}__banner`} type="success">
         <h4>Welcome to your dashboard!</h4>
       </Banner>
-      Here&apos;s what to do next:
+      <p>{"Here's what to do next:"}</p>
       <ul className={`${baseClass}__instructions`}>
-        <li>
-          <SeedButton />
-          {' with a few pages, posts, and projects to jump-start your new site, then '}
-          <a href="/" target="_blank">
-            visit your website
-          </a>
-          {' to see the results.'}
-        </li>
-        <li>
-          If you created this repo using Payload Cloud, head over to GitHub and clone it to your
-          local machine. It will be under the <i>GitHub Scope</i> that you selected when creating
-          this project.
-        </li>
-        <li>
-          {'Modify your '}
-          <a
-            href="https://payloadcms.com/docs/configuration/collections"
-            rel="noopener noreferrer"
-            target="_blank"
-          >
-            collections
-          </a>
-          {' and add more '}
-          <a
-            href="https://payloadcms.com/docs/fields/overview"
-            rel="noopener noreferrer"
-            target="_blank"
-          >
-            fields
-          </a>
-          {' as needed. If you are new to Payload, we also recommend you check out the '}
-          <a
-            href="https://payloadcms.com/docs/getting-started/what-is-payload"
-            rel="noopener noreferrer"
-            target="_blank"
-          >
-            Getting Started
-          </a>
-          {' docs.'}
-        </li>
-        <li>
-          Commit and push your changes to the repository to trigger a redeployment of your project.
-        </li>
+        <li>Suggestion</li>
+        <li>Suggestion</li>
+        <li>Suggestion</li>
+        <li>Suggestion</li>
       </ul>
-      {'Pro Tip: This block is a '}
-      <a
-        href="https://payloadcms.com/docs/admin/custom-components/overview#base-component-overrides"
-        rel="noopener noreferrer"
-        target="_blank"
-      >
-        custom component
-      </a>
-      , you can remove it at any time by updating your <strong>payload.config</strong>.
+      <p>{'Pro Tip: '}</p>
path: src/components/BeforeDashboard/index.tsx
user: login: coderabbitai[bot]
body: _🛠️ Refactor suggestion_

**Missing content for Pro Tip**

The "Pro Tip:" text is present but doesn't contain any actual tip content, making it unhelpful for users.


Consider either removing this line completely or adding meaningful content to provide value to users.

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-01T17:07:07Z
author_association: NONE
diff_hunk: @@ -0,0 +1,11 @@
+export const Logo = ({
+  size = 'size-64',
+  src = '/favicon.svg',
+  alt = 'Manza Search logo',
+  className = '',
+}) => {
+  return (
+    // eslint-disable-next-line @next/next/no-img-element
+    <img src={src} alt={alt} className={`${size} ${className}`} />
+  )
+}
path: src/components/Graphics/Logo.tsx
user: login: coderabbitai[bot]
body: _🛠️ Refactor suggestion_

**Consider consolidating Logo and Icon components to reduce duplication**

The Logo component is almost identical to the Icon component with just different defaults for size and alt text. Consider consolidating them into a single reusable component to avoid code duplication and improve maintainability.

Additionally:
1. Both Logo and Icon use the same default src="/favicon.svg", which may not be appropriate - typically logos and icons are different assets
2. Like with the Icon component, consider using Next.js `Image` component instead of HTML `img` for better performance and optimization


```diff
+import Image from 'next/image'

-export const Logo = ({
+export const GraphicComponent = ({
   size = 'size-64',
   src = '/favicon.svg',
-  alt = 'Manza Search logo',
+  alt = 'Manza Search',
   className = '',
+  darkMode = false,
+  type = 'logo',
 }) => {
+  const defaultSize = type === 'logo' ? 'size-64' : 'size-6'
+  const defaultAlt = type === 'logo' ? 'Manza Search logo' : 'Manza Search Icon'
+  const darkModeClasses = darkMode ? 'dark:rounded-lg dark:bg-white' : ''
+
   return (
-    // eslint-disable-next-line @next/next/no-img-element
-    <img src={src} alt={alt} className={`${size} ${className}`} />
+    <Image
+      src={src}
+      alt={alt || defaultAlt}
+      className={`${size || defaultSize} ${darkModeClasses} ${className}`}
+      width={type === 'logo' ? 256 : 24}
+      height={type === 'logo' ? 256 : 24}
+    />
   )
 }
+
+export const Logo = (props) => <GraphicComponent {...props} type="logo" />
+export const Icon = (props) => <GraphicComponent {...props} type="icon" darkMode={true} />
```


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

`````suggestion
import Image from 'next/image'

export const GraphicComponent = ({
  size = 'size-64',
  src = '/favicon.svg',
  alt = 'Manza Search',
  className = '',
  darkMode = false,
  type = 'logo',
}) => {
  const defaultSize = type === 'logo' ? 'size-64' : 'size-6'
  const defaultAlt = type === 'logo' ? 'Manza Search logo' : 'Manza Search Icon'
  const darkModeClasses = darkMode ? 'dark:rounded-lg dark:bg-white' : ''

  return (
    <Image
      src={src}
      alt={alt || defaultAlt}
      className={`${size || defaultSize} ${darkModeClasses} ${className}`}
      width={type === 'logo' ? 256 : 24}
      height={type === 'logo' ? 256 : 24}
    />
  )
}

export const Logo = (props) => <GraphicComponent {...props} type="logo" />
export const Icon = (props) => <GraphicComponent {...props} type="icon" darkMode={true} />
`````

</details>

<!-- suggestion_end -->

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-01T17:34:20Z
author_association: NONE

PR comments:
user: login: vercel[bot]
created_at: 2025-03-01T17:03:58Z
body: [vc]: #Jt6xzYI1XAKrrpOlt88zmUh7iR5yeBLXQP/irBTyxQk=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJtYW56YS1zZWFyY2giLCJpbnNwZWN0b3JVcmwiOiJodHRwczovL3ZlcmNlbC5jb20vYnJpYW5zLXByb2plY3RzLWEzNWEwMTYwL21hbnphLXNlYXJjaC9COWhnMTh4N1ppZWU5WUFUM1BDYm1OTW9zZ2d0IiwicHJldmlld1VybCI6Im1hbnphLXNlYXJjaC1naXQtYnJpYW4tY3VzdG9taXplLWNtcy1icmlhbnMtcHJvamVjdHMtYTM1YTAxNjAudmVyY2VsLmFwcCIsIm5leHRDb21taXRTdGF0dXMiOiJERVBMT1lFRCIsImxpdmVGZWVkYmFjayI6eyJyZXNvbHZlZCI6MCwidW5yZXNvbHZlZCI6MCwidG90YWwiOjAsImxpbmsiOiJtYW56YS1zZWFyY2gtZ2l0LWJyaWFuLWN1c3RvbWl6ZS1jbXMtYnJpYW5zLXByb2plY3RzLWEzNWEwMTYwLnZlcmNlbC5hcHAifSwicm9vdERpcmVjdG9yeSI6bnVsbH1dfQ==
**The latest updates on your projects**. Learn more about [Vercel for Git ↗︎](https://vercel.link/github-learn-more)

| Name | Status | Preview | Comments | Updated (UTC) |
| :--- | :----- | :------ | :------- | :------ |
| **manza-search** | ✅ Ready ([Inspect](https://vercel.com/brians-projects-a35a0160/manza-search/B9hg18x7Ziee9YAT3PCbmNMosggt)) | [Visit Preview](https://manza-search-git-brian-customize-cms-brians-projects-a35a0160.vercel.app) | 💬 [**Add feedback**](https://vercel.live/open-feedback/manza-search-git-brian-customize-cms-brians-projects-a35a0160.vercel.app?via=pr-comment-feedback-link) | Mar 1, 2025 5:33pm |


author_association: NONE
user: login: coderabbitai[bot]
created_at: 2025-03-01T17:04:15Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough

The changes update the way components are imported by modifying the import map format and reconfiguring component references. Several components have been removed (including the SeedButton and outdated styling) while new graphic components (Icon and Logo) have been introduced. In addition, theming capabilities have been added via a new SCSS file, and metadata settings have been refreshed in configuration and utility files. The changes adjust text content and layout for dashboard and login views, along with a rebranding of open graph metadata.

## Changes

| File(s)                                                      | Changes Summary                                                                                                                                                                                                                                                                                           |
|--------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `src/app/…/admin/importMap.js`                               | Updated import map entries to use double quotes; removed redundant entries and added new ones; introduced mappings for new `Icon` and `Logo` components.                                                                                                                                                 |
| `src/app/…/custom.scss`                                      | Added a new SCSS file defining CSS custom properties for theming with light and dark theme variables.                                                                                                                                                                                                    |
| `src/components/BeforeDashboard/…/index.scss`<br>`src/components/BeforeDashboard/…/index.tsx` | Removed the styling file and component for `SeedButton`, eliminating the seeding functionality.                                                                                                                                                                                                          |
| `src/components/BeforeDashboard/index.tsx`<br>`src/components/BeforeLogin/index.tsx` | Modified displayed text and layout; replaced detailed instructions with generic suggestions; added a CSS class (`pb-4`) in the login component.                                                                                                                                                         |
| `src/components/Graphics/Icon.tsx`<br>`src/components/Graphics/Logo.tsx` | Introduced new React components for graphics, rendering images with specified alt texts and styling.                                                                                                                                                                                                      |
| `src/payload.config.ts`<br>`src/utilities/generateMeta.ts`<br>`src/utilities/mergeOpenGraph.ts` | Revised metadata and configuration settings; added a new `graphics` object and `meta` settings; updated image URLs and rebranded open graph fields.                                                                                                                                                        |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant U as User
    participant A as App
    participant C as Config
    participant I as ImportMap
    participant G as Graphics (Icon/Logo)
    
    U->>A: Request page load
    A->>C: Load configuration (meta & graphics)
    C->>I: Provide updated import mappings
    I->>G: Reference new Icon & Logo components
    G-->>I: Return graphic components
    I-->>A: Supply components with updated settings
    A-->>U: Render page with new theming and branding
```

## Poem

> I'm a little rabbit, hopping through the code,  
> Leaving old seeds behind on this winding road.  
> New logos and icons now sparkle in the light,  
> With fresh themes and metadata shining bright.  
> I twirl my ears with joy in every byte!  
> Hop on, code friends—our journey's looking right!

<!-- walkthrough_end -->
<!-- internal state start -->


<!-- DwQgtGAEAqAWCWBnSTIEMB26CuAXA9mAOYCmGJATmriQCaQDG+Ats2bgFyQAOFk+AIwBWJBrngA3EsgEBPRvlqU0AgfFwA6NPEgQAfACgjoCEejqANiS4AhCvEwB6BtkQFm8AF4lGzRAYA5bGYBSi4ANgMAVUQwyAF7TFiifwN9Y3AoMnp8ADMcAmIyZRp6JlZ2Ll5+YVFxKRl5JiUqVXUtHXSTKDhUVEwCwlJyKlKFCoxOSCoAd0hEYOY0Cnk5BRaVNU1tXTBDDNMDRAoGRzRubkcACm40WQt8NFoASjPaDwxHeGZufApcACy5w0QkQHAMACIoQYAMQwyAAQQAkkURtQ6PNFst5HlGLBMKRUnAfLR4Ll8ohYPgZsg0PNKPBpPx8sxFGT4AxqPB8BhkARILhYD4AAbfX7/IHcYU1ERiFBYQUi46nc6XG53B5PV5PD5fH5/QHA0HS3LwKwaGBCvEEpm8b7LM3yeAYCT4CxSAVWigkVkSNAWZn0qRUAPsexM3IUFiekVig2S6WYeiK9C0UniHmB8hzMOMxAWgDK3FE7M5FgssgANDHILk3Q8Zs6iJBc0yZpQfN7fXRwWlIADsBZxNwrONfuRJshvRZ0cn8DXhQABW73R60Bh+Rz2BiwGgAD1wYCse45/sTGHoS5XmvXm5H2CIzrAsXw0tuDAA1mhCdXnQwLNgpIYM2fr2Pgri1iQ1DYN6jAWIyk7oBeY48uw+Z9sSLaTOGyB1nwwoADLOh+0D4AAIvgDDnpeABKJDOkoe42HgBAYCaUbMAuy4amuG6II496Phgz5QScsBvmgn7fiQGgYVawo0dSBEqCQFjSuU45obWHHxPggoLgAElBLTUZAwoAGL4HplDCrJPTyQWAFEAAwiwmmTOx0YpsKpqqbQ/GIE50qkt6Yh/LIdmWiKNgkHhJBkWglICI8FC0KZwoxXFBH4EJ6luahk6yQYSJYEw2GJbg1YptmWG4DhqZKHOC5xhK5zSn+AFKDWiBoGwKETrgfL4rgkDtrBXb4FItDVgIeAxvIyw+Bg1K1n8Sy4GMjb6bQ4ECKOACO2DWcgzpuMZgaIE2B1HTQ+aImm6jchg/oVlVMzzjVGkFYN1bCkiZXpdlRCvtW+IeqEZDynVijYAwGKRl58mLs4+UDfxADiVDcAgDCIMF8ChQQKwWphk3KOW8x1bDuAwT4uLeS1hpStMPraLyUOSZV8RzSmO42lOsVWHKdKUmSI3OjWeHreIwGBimH4kLItLISmHWuE9WYkHMRBYzj/VoUVmF88BTI7ZAy0jf6NB8Cm2AXpQFZNrWdtiE9/rqDi+QM/qrVSjNPNCvIZusqSuTyCmMx3PriGLSzuQdhgcP0FtCAKlagiypoRhGHCiJDiUT18vOKZKP+yxcjyyC4iQe7imMfw8Nge0crVj3SEYUABFrKA+4NDU9gYkC6GZ/08p5nFLij+po44mPnDj/GjxgGiDXuwqD8PhE5a+2nRpPX0z3P2McvxQP4CviBrxvfYAKLYXm8pmYzCaQNg3C0LOArzq4JK7ddx3yjOk8C6V0fCHQAXhSW9ZqRNnBEPKAV4eJPD4luDku4a6HmPKeCwW5EAMBhDRPBd86qyAIjXbBzlVJqQ3gg7iq5kGbm3Ogg8R5yFllwfgwhDBiErDISeMs5lGQWDSjQsydCbwoKYfuTBbD/TOHguwGEJV4LkFIm6AQyxzJQRpt6ZyCiPKiMQfQ28/EpEYNYfwuR/4EK4BhIIvcdA1EWA0RQLR0FdH6NwOveBYjry8UYWg6RFjsHyJsTCIyTwmxuJ0SQPRNjvGb3Ef40xgTzFYPYdYxRAAFcuOt57RNpnE9gCTaF+IYSkncQT0lWM8TCKI9sKAqJIAUjx8TDFJPKagypaTZE4MyZMGENg3S0BabEzxJTfFIJMV05hMjLF9NqUiXA7sGCjKKQYnxRiJEBO6Sw6pCywlEQwB+NZ4z2llOmYJJ8L5QmKIAPLBgkIyGYrlp7FPOVMlBVzhI3P6bYgEJBlnmFwFYV57kvEfOMV8py1ySD4FuQMgFyykRLFIGC76EytnJIEjCn5cKEX/MBWgMi0gGD2G4BmDA6KBqYo6Zc3FIl4V/JhFk70TytbUveZs5GvlhEBSco4RyD5OUDKFS5VGXLEkXMkakvZvSCXhL+F4HkyyLA0UHM07RhSznculTs2ZwSMm1JsA8T8iBTltN1Z8u8DLYjLB3Aqo5JFyKUVpXq/i3yRL2tgAquiDEa7MQ2mPdpjgIktEcIpGYylQgWAIUpFS1DuWOEstZCgEb40xrjVGhNtKp7gv4plP48VEqwGSssWgMIlC5DQIOCFSaD5oUcIW70QNnSVtijWoc68oQQg7ocZUZwLjXAua8FwbgWAaDwYgMEkJoS52RKiEoGIFisGxIGY2hIzBWg3UyZ00NaCwx8HSGqBZnIFgLLWM0PhBTUEgFW50TIz0XrHe4HgUZiz/AflcUCDg9rSGeKtG2QoPjNglnSdsAh0AXHgpySlJN5IcCjHpaUsQhZExbG4FQ8FKSmw7bWyAfoAIRgbj+8CyBeD4A/eIJkCwdzoGQMKCAGjPw63AheYUv0IBxVY3bNKnGwCclShxpCORFQUEQNWGYONYDoFgj/egkC3D3Cdg2xCYHIDwSILuGMbALQIgepSl6VZ0BmQANof2WWARUbAAC8AByD+FAPx2YALoodUnUBu/Q0wYn5BRp5XUraUGevUHwhHsDEaA9IHwFGqMPyk5DEuywPw6Z8P0aDjJaDwb6InTqTInhCFcLgNgiF+RMAeOJwD8RJIfh4xeCTgGSB1f8tWQTLWRP8DE5AKISIWxWBK33fkZAFiwVVO+xINAFDlTcB1p5l01DwVwE6LAjmUshxklFN9lHKDUeQPe8g9A1ZdUY2AO0SwVjCZO7EMqjnZCXYgMwPAdB7tgEknDDy/GlBuAoNTSQJBhNJk60KcTkn1AycQMWBgpYFAVYI/6CLJ0sAGQLARQD614NpewjDV2mZ6ZCliHDxIf7aTlmpLhBudJWSwVyFgv9HWlh7rZlho9FwoySRk/yazTsJYplVDBiuy9s6wnhAifOoxC5fxrKXGc4vK6BhrnXDEDduBNxg63XbHdIABHnEF2X7NOdWml+XSlVd8gK4NErvgKvm4MHV/FjskAlhdR5wgPbZJciyR7X2sARgB2qcGk22KRaEpJRSrQQVJA6CBtYl8e2e5J24xnV7+dKJhhLvoCu87ntrQmyJIbjzYxTSjlFHHhP068qTDZsupbVhyd8DpE+uCiVkDPTYJeSdkfaDR7Hhjym9xcOmgOzWVUolMBwzllaWaQaMDVliBtJ2sWdsP1ozJxKZkR/l0Tv936zHatRl45d5KqUbK/VuA9YCAPkLCiCaXP4AvbL3XTG7csxn1Dyn/IBDEdIqTBkpuiT0t6Ic7Ivm26MEiADc/IdIvwe6lAHWBWRWIBdM74HskuAADBoAABwACso0QoacPgU+rEo0a+P+HYOQwYveE0hGE+qARePgqk3wzo6IJOAYzelEDgYwSmKizYkC3kHeUeLEY8Te061YaA5IdQ3Ofcc22A/ob60WlelKHWMBVArsTyS2RUOcIuYuAuRcUuogMuOh8utcFuOQVuquLc7AbcqQUAjeZc06LM3YtAXAtksQAh0+7UWAwofuEqk4gecUIepaYeEebhMe/q8eU6eMs6vaaQ/aJwea30BaQe3oARZaqUwRXeghnwYRF8e44IyeIuqexQowy6WIKw66+IueW6JIBe8MV6Zk3hbyvhzaxaoe5a6R3eWRpeq8FeyyD69AdIdEnM0cI0reGIwoBYneHRwmUmaCW2AW8MLshmi28gimneTsdIFmKgiUG2RsPhI0Swz0pAh2fcmGk26sssVI+AH4DWEOJYpoZYFYAoKhH4TsN4TspxrgkmQoXWSWyyGiBO+I9AEMWArhjUohyEmA8glAUYlWN6I0lELgFA3o9AB69gssKYoJC+UYcM06FoVRZkFRtAoKMGH4JoixGskcQ0PgTAsEDwj4tueO1JexVU9gRApAyJ8QC03M0+cEHIH4FoSy7+eWGeJAwYshO4og1xkuvAop7Ajuta8AI4PgmJss1ANAPwg0XAb+70g49AFsZI4cVoP8fAZIUu1AWxBOlJ6AFg3oTw8goJdAv4+QIsaxss22euxBiOW2Os0gDWXmXswOPgVpAw5CbgTs0JfwFoUQ44vJn4TsKYhBPITp5sqEE+0WU2T+cuY0PgbAXM2p4Ewi8oj0/+dI8cuAdG3oh00gI0Bu9BF40BkwZkjg5AB4jgoJ0o5xzYdIWSdyBY0AjugKVIWWkA+JZZFZJAVZM2VpMwWMxYh2WAUBHESA16w0LM4B7oSuC5mIDAOJiAuQg4a544sQ1Yb8Fm8ZVoDpGeyyk2gOpIEOM4sg6x25u5A5060kApAZnY0gR5QZa+Fs/AX4r+I0OphZ3omcNYFGHglpYOSELYSJDcbAb5pAFoN88FfAhJ3Bnp1p4BPcSpA2vm84sGdGkJLYe4cMFKEuqJ55PgY5Mm7pAuve/ucx8AjUr8sQfA8cdAu+no++WmX8FUKZ4g9xhhkCoc8c3ojZpx0gXAbxwEs+sMu54J9AEZFAhs26exLMDSX+3JRBvBrJ7J1F9IdAWJlEvpHWd5I4dwGIiFPUhI1WsQOQ+BjAMEElI0UlkAVwslRAs+nejp/AfAKlzwGhwuec1shhtZd6+hxuEu1cxh/wlujcNudu7cfYIqI0VBPYZkExIRQhEsXhcR/uiR/hJaqR4e2VGR0+sejEOR3a0IMRPuRwBVexRVweJVQR2Rq8eRc6BRi6xRGepR2eO6ee1JFRdlLu0USRLRgR5aeUjR4sLoboHol0RAGApYmA+xbIwlJukuvMKqcpFlD5GIKc41wxvejMf+6pcpkC4xkxmR0o+IMgkeWAGV008opIsG55t6CZmRKALe84DwJsVuyw8Jn5mlLQSueAKumgm2SqQksh0ikAEIRk3odmyAUmX184ZsLZnAEIkAD18QT1LMllSco0MFUBuSusfWPocpZUvRq16JF5vU16GCohYukh5G3osQChGsU+glKAfctN7AeJBgmE2GINgCVMOO7MMpTyZGjx/mLFGIJ1dsfw4N9AYteNa+wJrc048g3oxNR1MFdYMEGmSA4s6pDWUEdGtNbMhlCNEIBYD4hIcGuNvQyAO6DhZMe2RKV69ARA2ALFY+R6yE+tM4OJ/NpN+kae24PAYdJAVIwilADWDEp4MsXZ8wCAuQ81NYzoUsAuzFrFEVxpemBmz+r0NYsNTBAYEIrK845g3AuN12ih+N2tl0Pw8EvkTU5NVAeS2MVNA21YVBhlsAsgH6KiKWgOTwmZz0AYgtB46AyUAc1JRW0Y/uRUDy5MFgVU26o1TI3oNOdQJmyJv2mYJ1txUO9xKBt5PtAYjJEtP2UtysyYipHNk0itTUts7F1YvoTsCMnEdIGk3oeBl0S1gKgYnMbsdO6gPouhlORakA0dLcedWc2c862h21EVRueupupFiuphiVaulhGufY2u1pYVGDxc+eZc2DRheD/lBDFhkwVho0DuTumOnoqAYlnudVEADVDR+afhRaranR1VnVURIVC60dn8mea6uIQ1+JQ1juTw16lDE1WUOUzos14Kj8+VpwhVgjLaGjIjNcNVQpn+w+pduOzpkAthM49hEVwowApIEgeg0oHmA2cBjum1qdGsEVCNx1Tljj3Arj/dQtkARYdx2C5d3kTjkgIT7jcpy0cwR2TIvMdjDG3AAgYAAALNMdJqbQrI8WIfHGICdCcTXk2CXdPUZtvczfPS3YTbrvDDpBCG7b9bgQ7pdDee8KdKTRTHSY/PyAcdJJALIOBHwBBl0zJLjfyK067u0wlrBGM9gB1ss3wFM6mB8GjWaAGAMzzvOMM6QKM+MywwIFMxoBCDNGzkoPTc2LzoBAhOPnfTZSM/yCk7pPpJ/bAYDhszqKdMFWg+QxLpg1FTQ7FXQ8ruYbbkQ3mJrqQ7ruFao5FdQ4YeCyYfQ9boQ0w7tiw7BGw9w9Ebw77k1XNRjLrCfI4EvDkV1b2inr1dIwNeUfzEYAiObN3PuYnEscMebEzZeEvPdVrYTXulGAeiTSdXQfUSSwI0fAvJS2VDVdlu7RpW9iQBSq/dwHXvUV4NvpK1RL9FbJfpeHYYgAEEzdMTBVWp2iNOFjRmA9dZdN4ImMgKjdq2AOEHZr9MqE65AHZo4NWk8vK4gBIEQB6x1sKAa/Rj60CBgJ4HSBMd6pAEvHZoxRpRJS0MrD3CMwk42VcI498EQK4wBp2TGATrFg1oDm/ikxmzfCjnunegTBIR6PyHecziZufdDj9qON6EQOWoZT/GmWZMAPm/E/1nKRLF3AeCCOhBI+g8C0i1g6i2bnFfXGYUlTCylZ3N3ExVPZlcKObv8FNjNkvJADZh5QAN7zDauz4nCs1czGumt9QAC+AGNmegkAZ7j7Hhur8Rh85LuMcrPINV4j9VxLejzVs8f7p8281L4jdLUjnBjLcju9qQrLNUHLUt4pGloxl4Z8Arj1kMwr2OStTlErujP7jaMrFLZ8CrloqA27O5qrfcZbVWXh2rl2Xr+rXaSlZk97ZroO20eGQ4cORGyAc+VWVtsAAp6VgKME7MdIAAUgWAABqhONlwlg1J2wX2hHMpzdSQ7AGXgcfr5ccdblBqBD7Gs8uIW7wTwOv/Zhu8dsAP76bVMv61OwT9BYA1tHIjQhSNsqP1s9R04iz6f3HTAaosw9upR9sE5315vMAFtuOjuTC/gXg+MM1fXzNMWcPSDwArUEVjiPG6dwz/Bsym1MOyyYYXjlrTuAsFxy4gsovbVovxX4OYuMPiDEObtzDbs+ZOE8eVwjS4c6P8MJEQfzxUfQfdHAdEuNWnAXIaBlSmhEAXw0sSOFFogIerplFIfMsi0738xQwiuHomY1TCi90LzSgZyH0BMLh/NsRTbLcwQC5fGzFVsCjvRbZxbSUjwAxhu4coXs5fc7Z62xQJzh0heRO25MUSu3CCipfvVcgM0+Cmr5132c2Q6hYIN/vDF3QuePQ8g1OnfdzCi5loBXe1ByjeZglTZ03nnegxbvpL4/fChfZkqKmUqXYciVyGtmSddWCO3kjwBry96s+krkqc8F35YCgYIyEBhs8S8ax3184+NJm4F1GihlR4ztMDDLBUCGm3rtu+QZvc9YASu6fqB8ij3B30DTg6EIDcCi/88kCC+mhrxQbFj1ZtvYBC97g7VWjO8Dsq8fWAdRQE5T0E/sxkAVHj67UYBPcelrAK1ATNgXfYKqd9yA5k+bFVa84ZYh+C6oNaFAsNfzuguLu4PouQtrvYuwskPdzXfCx9fOFp+4xfslyCcjT7vi3CizRmi0CuTx95dftkcLdLd5cXzrzdcyiH07v9ek9Ert/57Vr4bd+Bi98B3CKD/Lcj8Dpj88jLeT8zexGnB4BmhWGODwckBIpoCrewc9VX/9XbeDXIcKO71eOhwPwphRA0So7fYqY8hYMZAT+A43YrBgogjSaUD+lba3dvIpAXACimkg/8CIZJTlk9F7yV0Z63WX/lhQbJp1JcIsa8i3G040U6iqPMYLemFCOBJm0DKzD6Eso0AwAdydGBoAgx+x1edGBppDFDqSRDa+kY9N3GQE8B8Ae6eMvOCoEHFY2XqMSEwJYFsCH8bTBFooWKZ1AqSkVFfkJxIHYDUc3oHREPjWAph0OihBLFgGWjzBQuxA1FHTEp7ixX68xYcphE5ri1DB5JHkKjQ0waMGAqXD/CnxrAYUnYcXEgRJCoC5lvmKsL0DJwoAglry1NFLg4TZjIAXYu9LLELjq40NGuBhZrkuwharssWnXOvvC1nal89CTXGKtkKr65COuzDbMko2dxpxOG7uAlt7lA6OAz+i2PMI4DYAUBSAdyT3jKzv75FEQG3dPJiGf5MtKi+3EaodxOpkc2hF/LoT0L6G6xJ+l6UcM6FdAblX478Zgv7xFCWta0vQsgDKwp6ZxXudGVAPTGt5mQb+mxUzHZm2wYAZWrmBQfJAV4c8noJoIRPQC4FYAgCndGzojQRBYAHhz4cZuPhoGTY++QnXTjkmMQdYJ2mgUEBc0lwQho2sbcJqJDozJ8mQiJT+MDQ5C14lCwkJQBShkyc1MRHOKyBYE1ZuBP8k4asBRnjjTpn85bCEhgDGbkAoYHYM6POUiqqtIAH4JJlYFoDIVXa8kEgdrz153B3BwoGCGpGB7/B5APwnPEcQBHCgAAJGe3gETEKAwYAsIrWQFXBngj7agSQDOa0D1SDAkgLINYFmjmY/IDUVqMBQ6i9RBo3/kaJNGSC0A0gncDaPkFVNI+RPZKJ83khTMH29nQHNfksD2deU/kTWuDEJqnlP4f9RGrCJvCQAAA6maI2bQB6BM4GgDM3nCojMA6I+NmJGRHEgCcijFOkAKPpmiqAaXN0qDQeHY954A5ZZDnzYJQ5P4unCONmOgZFQ0hiLEoZkLKGV9WuGLKFslWsJa4dcRQ/XGX1KFy4WuK7BhtC1r5thWGyjQZvMy4bH99g3QLCDkGdJ4AhgRRT+OUAGxcBZgowrPJyXWDKA2g2wToHsAMCHjLx6gAAPosVEAn4tlM8joCfjMMB7dIG+MyCQBwgDAckOEAACc4QWgDBKwIYEBAAARlQLZMAAzAACZjIDAGCRhI0ThAsJMEjAgAHYBAWElCVBBQkoSYJqBSDF0HAkYSzRpE0iTuVoBkS0AaAEgChOyYYFaArE+CdkywICAYJKEjAihJwkMAMJ4QLAlRNihYT6AoE98SwA8C4Bvx/kP8aKQAm0BPx2QXYHoCAA -->

<!-- internal state end -->
<!-- finishing_touch_checkbox_start -->

<details>
<summary>✨ Finishing Touches</summary>

- [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> 📝 Generate Docstrings

</details>

<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->

---



<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai):

- 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.`

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](https://docs.coderabbit.ai/finishing-touches/docstrings) for 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](https://docs.coderabbit.ai/guides/configure-coderabbit) 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](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: NONE