diff --git a/.astro/collections/blogs.schema.json b/.astro/collections/blogs.schema.json
index 01bee94f..bcb58842 100644
--- a/.astro/collections/blogs.schema.json
+++ b/.astro/collections/blogs.schema.json
@@ -8,6 +8,9 @@
"type": "string",
"maxLength": 60
},
+ "slug": {
+ "type": "string"
+ },
"publishDate": {
"anyOf": [
{
diff --git a/.astro/content.d.ts b/.astro/content.d.ts
index ed534152..eca009b5 100644
--- a/.astro/content.d.ts
+++ b/.astro/content.d.ts
@@ -178,5 +178,5 @@ declare module 'astro:content' {
type AnyEntryMap = ContentEntryMap & DataEntryMap;
- export type ContentConfig = typeof import("../src/content.config.js");
+ export type ContentConfig = typeof import("./../src/content.config.js");
}
diff --git a/.astro/data-store.json b/.astro/data-store.json
index f13bbb5b..08885928 100644
--- a/.astro/data-store.json
+++ b/.astro/data-store.json
@@ -1 +1 @@
-[["Map",1,2,9,10,202,203],"meta::meta",["Map",3,4,5,6,7,8],"astro-version","5.1.1","content-config-digest","5284684971596d0f","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"site\":\"https://parixan.xyz\",\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"server\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true},\"redirects\":{},\"prefetch\":true,\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[]},\"devToolbar\":{\"enabled\":false},\"markdown\":{\"syntaxHighlight\":\"shiki\",\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"responsiveImages\":false,\"svg\":{\"mode\":\"inline\"}},\"legacy\":{\"collections\":false}}","blogs",["Map",11,12,58,96,130,131,155,156],"technology-used",{"id":11,"data":13,"body":20,"filePath":21,"digest":22,"rendered":23},{"title":14,"publishDate":15,"tags":16,"draft":18,"description":19},"The tech stack that we preferred",["Date","2024-12-23T18:30:00.000Z"],[17],"rz",false,"The tech stack that we work with and why we choose it ? ","## **Project Technology Stack Documentation**\n\n## **Frontend**\n\n### **Astro.js**\n\n- **Purpose**: Utilized as the core frontend framework for building the project.\n- **Features**:\n - File-based routing.\n - Supports server-side rendering (SSR) and static site generation (SSG).\n - Integrates seamlessly with other frameworks like React.\n\n### **React**\n\n- **Purpose**: Used for creating interactive and dynamic components within the Astro.js framework.\n- **Features**:\n - Component-based architecture.\n - State management and lifecycle methods.\n\n### **Styling**\n\n#### **Tailwind CSS**\n\n- **Purpose**: A utility-first CSS framework used for styling.\n- **Features**:\n - Rapid prototyping with predefined classes.\n - Highly customizable via a configuration file.\n\n### **Component Library**\n\n#### **shadcn/ui**\n\n- **Purpose**: A pre-built React-based component library for faster UI development.\n- **Features**:\n - Offers accessible and customizable components.\n - Works seamlessly with Tailwind CSS.\n\n### **Icons**\n\n- **Purpose**: Used for visual enhancements and icons across the application.\n- **Libraries**:\n - **Astro Icons**: Icon library designed for use in Astro.js.\n - **React Icons**: A collection of popular icon libraries for React.\n - **Lucide Icons**: Modern, consistent, and open-source icon library.\n\n### **State Management**\n\n#### **Zustand**\n\n- **Purpose**: Lightweight state management library for handling global state in the frontend.\n- **Features**:\n - Minimal boilerplate.\n - Simple and scalable API for managing state.\n\n### **Data Validation**\n\n#### **Zod**\n\n- **Purpose**: Schema-based data validation library.\n- **Features**:\n - Runtime validation for form data and API responses.\n - TypeScript integration for type safety.\n\n---\n\n## **Backend**\n\n### **Node.js**\n\n- **Purpose**: Backend runtime environment.\n- **Features**:\n - Non-blocking, event-driven architecture for handling asynchronous operations.\n - Large ecosystem of libraries and tools.\n\n### **Hono.js Framework**\n\n- **Purpose**: Lightweight, high-performance framework for building backend APIs.\n- **Features**:\n - Minimalistic API design.\n - Excellent for creating RESTful services.\n\n---\n\n## **Database**\n\n### **MongoDB**\n\n- **Purpose**: NoSQL database used for storing application data.\n- **Features**:\n - Document-oriented storage.\n - Scalable and flexible schema design.\n\n### **Mongoose**\n\n- **Purpose**: Object Relational Mapping (ORM) library for MongoDB.\n- **Features**:\n - Simplifies data modeling and validation.\n - Provides built-in schema and middleware support.\n\n---\n\n## **Other Tools**\n\n### **Code Formatting & Linting**\n\n- **Prettier**: For consistent code formatting.\n- **ESLint**: For identifying and fixing coding errors.","src/content/blog/technology-used.md","aabc9237546da961",{"html":24,"metadata":25},"\u003Ch2 id=\"project-technology-stack-documentation\">\u003Cstrong>Project Technology Stack Documentation\u003C/strong>\u003C/h2>\n\u003Ch2 id=\"frontend\">\u003Cstrong>Frontend\u003C/strong>\u003C/h2>\n\u003Ch3 id=\"astrojs\">\u003Cstrong>Astro.js\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Utilized as the core frontend framework for building the project.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>File-based routing.\u003C/li>\n\u003Cli>Supports server-side rendering (SSR) and static site generation (SSG).\u003C/li>\n\u003Cli>Integrates seamlessly with other frameworks like React.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"react\">\u003Cstrong>React\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Used for creating interactive and dynamic components within the Astro.js framework.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Component-based architecture.\u003C/li>\n\u003Cli>State management and lifecycle methods.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"styling\">\u003Cstrong>Styling\u003C/strong>\u003C/h3>\n\u003Ch4 id=\"tailwind-css\">\u003Cstrong>Tailwind CSS\u003C/strong>\u003C/h4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: A utility-first CSS framework used for styling.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Rapid prototyping with predefined classes.\u003C/li>\n\u003Cli>Highly customizable via a configuration file.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"component-library\">\u003Cstrong>Component Library\u003C/strong>\u003C/h3>\n\u003Ch4 id=\"shadcnui\">\u003Cstrong>shadcn/ui\u003C/strong>\u003C/h4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: A pre-built React-based component library for faster UI development.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Offers accessible and customizable components.\u003C/li>\n\u003Cli>Works seamlessly with Tailwind CSS.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"icons\">\u003Cstrong>Icons\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Used for visual enhancements and icons across the application.\u003C/li>\n\u003Cli>\u003Cstrong>Libraries\u003C/strong>:\n\u003Cul>\n\u003Cli>\u003Cstrong>Astro Icons\u003C/strong>: Icon library designed for use in Astro.js.\u003C/li>\n\u003Cli>\u003Cstrong>React Icons\u003C/strong>: A collection of popular icon libraries for React.\u003C/li>\n\u003Cli>\u003Cstrong>Lucide Icons\u003C/strong>: Modern, consistent, and open-source icon library.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"state-management\">\u003Cstrong>State Management\u003C/strong>\u003C/h3>\n\u003Ch4 id=\"zustand\">\u003Cstrong>Zustand\u003C/strong>\u003C/h4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Lightweight state management library for handling global state in the frontend.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Minimal boilerplate.\u003C/li>\n\u003Cli>Simple and scalable API for managing state.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"data-validation\">\u003Cstrong>Data Validation\u003C/strong>\u003C/h3>\n\u003Ch4 id=\"zod\">\u003Cstrong>Zod\u003C/strong>\u003C/h4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Schema-based data validation library.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Runtime validation for form data and API responses.\u003C/li>\n\u003Cli>TypeScript integration for type safety.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"backend\">\u003Cstrong>Backend\u003C/strong>\u003C/h2>\n\u003Ch3 id=\"nodejs\">\u003Cstrong>Node.js\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Backend runtime environment.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Non-blocking, event-driven architecture for handling asynchronous operations.\u003C/li>\n\u003Cli>Large ecosystem of libraries and tools.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"honojs-framework\">\u003Cstrong>Hono.js Framework\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Lightweight, high-performance framework for building backend APIs.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Minimalistic API design.\u003C/li>\n\u003Cli>Excellent for creating RESTful services.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"database\">\u003Cstrong>Database\u003C/strong>\u003C/h2>\n\u003Ch3 id=\"mongodb\">\u003Cstrong>MongoDB\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: NoSQL database used for storing application data.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Document-oriented storage.\u003C/li>\n\u003Cli>Scalable and flexible schema design.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"mongoose\">\u003Cstrong>Mongoose\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Object Relational Mapping (ORM) library for MongoDB.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Simplifies data modeling and validation.\u003C/li>\n\u003Cli>Provides built-in schema and middleware support.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"other-tools\">\u003Cstrong>Other Tools\u003C/strong>\u003C/h2>\n\u003Ch3 id=\"code-formatting--linting\">\u003Cstrong>Code Formatting & Linting\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Prettier\u003C/strong>: For consistent code formatting.\u003C/li>\n\u003Cli>\u003Cstrong>ESLint\u003C/strong>: For identifying and fixing coding errors.\u003C/li>\n\u003C/ul>",{"headings":26,"imagePaths":93,"frontmatter":94},[27,31,34,38,41,44,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90],{"depth":28,"slug":29,"text":30},2,"project-technology-stack-documentation","Project Technology Stack Documentation",{"depth":28,"slug":32,"text":33},"frontend","Frontend",{"depth":35,"slug":36,"text":37},3,"astrojs","Astro.js",{"depth":35,"slug":39,"text":40},"react","React",{"depth":35,"slug":42,"text":43},"styling","Styling",{"depth":45,"slug":46,"text":47},4,"tailwind-css","Tailwind CSS",{"depth":35,"slug":49,"text":50},"component-library","Component Library",{"depth":45,"slug":52,"text":53},"shadcnui","shadcn/ui",{"depth":35,"slug":55,"text":56},"icons","Icons",{"depth":35,"slug":58,"text":59},"state-management","State Management",{"depth":45,"slug":61,"text":62},"zustand","Zustand",{"depth":35,"slug":64,"text":65},"data-validation","Data Validation",{"depth":45,"slug":67,"text":68},"zod","Zod",{"depth":28,"slug":70,"text":71},"backend","Backend",{"depth":35,"slug":73,"text":74},"nodejs","Node.js",{"depth":35,"slug":76,"text":77},"honojs-framework","Hono.js Framework",{"depth":28,"slug":79,"text":80},"database","Database",{"depth":35,"slug":82,"text":83},"mongodb","MongoDB",{"depth":35,"slug":85,"text":86},"mongoose","Mongoose",{"depth":28,"slug":88,"text":89},"other-tools","Other Tools",{"depth":35,"slug":91,"text":92},"code-formatting--linting","Code Formatting & Linting",[],{"title":14,"description":19,"publishDate":95},"24 December 2024",{"id":58,"data":97,"body":102,"filePath":103,"digest":104,"rendered":105},{"title":98,"publishDate":99,"tags":100,"draft":18,"description":101},"The new era of state management with Zustand ?",["Date","2024-12-11T18:30:00.000Z"],[17],"The simple and easy to understand all about Zustand the new and simple way to manage the state in client side. ","## Zustand Documentation\n\n## What is Zustand?\n\nZustand is a small, fast, and flexible state management library for React. It allows you to manage global state with minimal setup, using React hooks to access and modify the state directly within your components.\n\n---\n\n## How Zustand is Used in This Project\n\nIn this project, Zustand is used to manage the search state across the application. This includes handling the user's search query, selected category, price range, sorting options, and rating filters.\n\n---\n\n## Creating the Store\n\nWe create a Zustand store using the `create` function. The store manages various pieces of state related to search functionality, such as the search query, category, price range, sort options, and ratings.\n\n```ts\nimport { create } from \"zustand\";\n\ninterface SearchStore {\n searchQuery: string;\n selectCategory: string;\n priceRange: string;\n selectSortOption: string;\n selectRating: string;\n\n setSearchQuery: (query: string) => void;\n setSelectCategory: (category: string) => void;\n setPriceRange: (range: string) => void;\n setSelectSortOption: (option: string) => void;\n setSelectRating: (rating: string) => void;\n}\n\nconst useSearchStore = create\u003CSearchStore>((set) => ({\n searchQuery: \"\",\n selectCategory: \"\",\n priceRange: \"\",\n selectSortOption: \"\",\n selectRating: \"\",\n\n setSearchQuery: (query) => set({ searchQuery: query }),\n setSelectCategory: (category) => set({ selectCategory: category }),\n setPriceRange: (range) => set({ priceRange: range }),\n setSelectSortOption: (option) => set({ selectSortOption: option }),\n setSelectRating: (rating) => set({ selectRating: rating })\n}));\n\nexport default useSearchStore;\n```\n\n#### Store State and Actions\n\n- **State Variables:**\n\n - searchQuery: The current search query input by the user.\n - selectCategory: The category filter selected by the user.\n - priceRange: The price range filter.\n - selectSortOption: The sort option applied to the search results.\n - selectRating: The rating filter applied to the results.\n\n- **Actions (Setters):**\n\n - setSearchQuery(query): Updates the search query.\n - setSelectCategory(category): Updates the selected category.\n - setPriceRange(range): Updates the price range.\n - setSelectSortOption(option): Updates the sorting option.\n - setSelectRating(rating): Updates the selected rating.\n\n#### Accessing the Store in Components\n\nTo use Zustand state and actions in your React components, you use the useSearchStore hook.\n\n**Example: Search Input Component**\nThe SearchInput component allows users to input a search query. It uses the global searchQuery from the store and updates it with setSearchQuery:\n\n```ts\nconst SearchInput = () => {\n const { searchQuery, setSearchQuery } = useSearchStore();\n\n return (\n \u003CInput\n type=\"search\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder=\"Search...\"\n className=\"search-input\"\n />\n );\n};\n```","src/content/blog/state-management.md","7be39d8a62975399",{"html":106,"metadata":107},"\u003Ch2 id=\"zustand-documentation\">Zustand Documentation\u003C/h2>\n\u003Ch2 id=\"what-is-zustand\">What is Zustand?\u003C/h2>\n\u003Cp>Zustand is a small, fast, and flexible state management library for React. It allows you to manage global state with minimal setup, using React hooks to access and modify the state directly within your components.\u003C/p>\n\u003Chr>\n\u003Ch2 id=\"how-zustand-is-used-in-this-project\">How Zustand is Used in This Project\u003C/h2>\n\u003Cp>In this project, Zustand is used to manage the search state across the application. This includes handling the user’s search query, selected category, price range, sorting options, and rating filters.\u003C/p>\n\u003Chr>\n\u003Ch2 id=\"creating-the-store\">Creating the Store\u003C/h2>\n\u003Cp>We create a Zustand store using the \u003Ccode>create\u003C/code> function. The store manages various pieces of state related to search functionality, such as the search query, category, price range, sort options, and ratings.\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">import\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> { create } \u003C/span>\u003Cspan style=\"color:#F97583\">from\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"zustand\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">interface\u003C/span>\u003Cspan style=\"color:#B392F0\"> SearchStore\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\"> searchQuery\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\"> selectCategory\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\"> priceRange\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\"> selectSortOption\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\"> selectRating\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\"> setSearchQuery\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#FFAB70\">query\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#79B8FF\"> void\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\"> setSelectCategory\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#FFAB70\">category\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#79B8FF\"> void\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\"> setPriceRange\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#FFAB70\">range\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#79B8FF\"> void\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\"> setSelectSortOption\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#FFAB70\">option\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#79B8FF\"> void\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\"> setSelectRating\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#FFAB70\">rating\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#79B8FF\"> void\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> useSearchStore\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#B392F0\"> create\u003C/span>\u003Cspan style=\"color:#E1E4E8\"><\u003C/span>\u003Cspan style=\"color:#B392F0\">SearchStore\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>((\u003C/span>\u003Cspan style=\"color:#FFAB70\">set\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ({\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> searchQuery: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> selectCategory: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> priceRange: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> selectSortOption: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> selectRating: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\"> setSearchQuery\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: (\u003C/span>\u003Cspan style=\"color:#FFAB70\">query\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#B392F0\"> set\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({ searchQuery: query }),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\"> setSelectCategory\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: (\u003C/span>\u003Cspan style=\"color:#FFAB70\">category\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#B392F0\"> set\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({ selectCategory: category }),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\"> setPriceRange\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: (\u003C/span>\u003Cspan style=\"color:#FFAB70\">range\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#B392F0\"> set\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({ priceRange: range }),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\"> setSelectSortOption\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: (\u003C/span>\u003Cspan style=\"color:#FFAB70\">option\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#B392F0\"> set\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({ selectSortOption: option }),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\"> setSelectRating\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: (\u003C/span>\u003Cspan style=\"color:#FFAB70\">rating\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#B392F0\"> set\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({ selectRating: rating })\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}));\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">export\u003C/span>\u003Cspan style=\"color:#F97583\"> default\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> useSearchStore;\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch4 id=\"store-state-and-actions\">Store State and Actions\u003C/h4>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>State Variables:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>searchQuery: The current search query input by the user.\u003C/li>\n\u003Cli>selectCategory: The category filter selected by the user.\u003C/li>\n\u003Cli>priceRange: The price range filter.\u003C/li>\n\u003Cli>selectSortOption: The sort option applied to the search results.\u003C/li>\n\u003Cli>selectRating: The rating filter applied to the results.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Actions (Setters):\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>setSearchQuery(query): Updates the search query.\u003C/li>\n\u003Cli>setSelectCategory(category): Updates the selected category.\u003C/li>\n\u003Cli>setPriceRange(range): Updates the price range.\u003C/li>\n\u003Cli>setSelectSortOption(option): Updates the sorting option.\u003C/li>\n\u003Cli>setSelectRating(rating): Updates the selected rating.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch4 id=\"accessing-the-store-in-components\">Accessing the Store in Components\u003C/h4>\n\u003Cp>To use Zustand state and actions in your React components, you use the useSearchStore hook.\u003C/p>\n\u003Cp>\u003Cstrong>Example: Search Input Component\u003C/strong>\nThe SearchInput component allows users to input a search query. It uses the global searchQuery from the store and updates it with setSearchQuery:\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">const\u003C/span>\u003Cspan style=\"color:#B392F0\"> SearchInput\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> () \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\"> const\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> { \u003C/span>\u003Cspan style=\"color:#79B8FF\">searchQuery\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">setSearchQuery\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> } \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#B392F0\"> useSearchStore\u003C/span>\u003Cspan style=\"color:#E1E4E8\">();\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\"> return\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\"> <\u003C/span>\u003Cspan style=\"color:#FFAB70\">Input\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> type\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"search\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> value\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\">{searchQuery}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> onChange\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\">{(e) => \u003C/span>\u003Cspan style=\"color:#B392F0\">setSearchQuery\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(e.target.value)}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> placeholder\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Search...\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> className\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"search-input\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\"> />\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> );\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">};\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":108,"imagePaths":127,"frontmatter":128},[109,112,115,118,121,124],{"depth":28,"slug":110,"text":111},"zustand-documentation","Zustand Documentation",{"depth":28,"slug":113,"text":114},"what-is-zustand","What is Zustand?",{"depth":28,"slug":116,"text":117},"how-zustand-is-used-in-this-project","How Zustand is Used in This Project",{"depth":28,"slug":119,"text":120},"creating-the-store","Creating the Store",{"depth":45,"slug":122,"text":123},"store-state-and-actions","Store State and Actions",{"depth":45,"slug":125,"text":126},"accessing-the-store-in-components","Accessing the Store in Components",[],{"title":98,"description":101,"publishDate":129},"12 December 2024","routing-astro",{"id":130,"data":132,"body":137,"filePath":138,"digest":139,"rendered":140},{"title":133,"publishDate":134,"tags":135,"draft":18,"description":136},"How routing works in Astro ?",["Date","2024-12-11T18:30:00.000Z"],[17],"The full guide on routing in astro framework . The easy and simple guide to understand and implement routing ","## Adding a New Route in Astro.js\n\nAstro uses a **file-based routing system**, where the file structure in the `src/pages` directory determines the routes.\n\n## **Steps to Add a New Route**\n\n1. **Create a New File in the `src/pages` Directory**\n\n - Go to the `src/pages` directory in your project.\n - Create a new file for your route. For example:\n - `about.astro` → `/about` route\n - `blog.astro` → `/blog` route\n - `contact.html` → `/contact` route (static HTML)\n\n2. **Add Content to the New F ile**\n\n Add the desired HTML or Astro component syntax inside your new file. For example, in `about.astro`:\n\n ```astro\n ---\n // Frontmatter (optional)\n const pageTitle = \"About Us\";\n ---\n\n \u003Chtml>\n \u003Chead>\n \u003Ctitle>{pageTitle}\u003C/title>\n \u003C/head>\n \u003Cbody>\n \u003Ch1>{pageTitle}\u003C/h1>\n \u003Cp>Welcome to the About page of our Astro site!\u003C/p>\n \u003C/body>\n \u003C/html>\n ```\n\n3. **Start the Development Server**\n\n Run the Astro development server to see your changes:\n\n ```bash\n npm run dev\n ```\n\n Visit `http://localhost:3000/about` (or the corresponding route) in your browser.\n\n4. **Optional: Add Dynamic Routes**\n\n If you need dynamic routes (e.g., `/blog/:slug`), create a file with square brackets in its name, such as `[slug].astro`. Example:\n\n - File: `src/pages/blog/[slug].astro`\n\n ```astro\n ---\n const { slug } = Astro.params;\n ---\n\n \u003Ch1>Blog Post: {slug}\u003C/h1>\n ```\n\n - Visit `/blog/example` to see the route in action.\n\n5. **Optional: Add Links to Your Route**\n\n Update your site's navigation to link to the new route. For example, in your `src/layouts/Header.astro`:\n\n ```astro\n \u003Cnav>\n \u003Ca href=\"/\">Home\u003C/a>\n \u003Ca href=\"/about\">About\u003C/a>\n \u003Ca href=\"/blog\">Blog\u003C/a>\n \u003C/nav>\n ```\n\n---\n\n### **Example File Structure for Routes**\n\n```\nsrc/\n├── pages/\n│ ├── index.astro → /\n│ ├── about.astro → /about\n│ ├── blog.astro → /blog\n│ ├── blog/\n│ │ ├── [slug].astro → /blog/:slug\n```","src/content/blog/routing-astro.md","51b86047071d592e",{"html":141,"metadata":142},"\u003Ch2 id=\"adding-a-new-route-in-astrojs\">Adding a New Route in Astro.js\u003C/h2>\n\u003Cp>Astro uses a \u003Cstrong>file-based routing system\u003C/strong>, where the file structure in the \u003Ccode>src/pages\u003C/code> directory determines the routes.\u003C/p>\n\u003Ch2 id=\"steps-to-add-a-new-route\">\u003Cstrong>Steps to Add a New Route\u003C/strong>\u003C/h2>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Create a New File in the \u003Ccode>src/pages\u003C/code> Directory\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Go to the \u003Ccode>src/pages\u003C/code> directory in your project.\u003C/li>\n\u003Cli>Create a new file for your route. For example:\n\u003Cul>\n\u003Cli>\u003Ccode>about.astro\u003C/code> → \u003Ccode>/about\u003C/code> route\u003C/li>\n\u003Cli>\u003Ccode>blog.astro\u003C/code> → \u003Ccode>/blog\u003C/code> route\u003C/li>\n\u003Cli>\u003Ccode>contact.html\u003C/code> → \u003Ccode>/contact\u003C/code> route (static HTML)\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Add Content to the New F ile\u003C/strong>\u003C/p>\n\u003Cp>Add the desired HTML or Astro component syntax inside your new file. For example, in \u003Ccode>about.astro\u003C/code>:\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"astro\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">---\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">// Frontmatter (optional)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> pageTitle\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"About Us\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">---\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"><\u003C/span>\u003Cspan style=\"color:#85E89D\">html\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#85E89D\">head\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#85E89D\">title\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>{pageTitle}</title>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> </\u003C/span>\u003Cspan style=\"color:#85E89D\">head\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#85E89D\">body\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#85E89D\">h1\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>{pageTitle}</h1>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#85E89D\">p\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Welcome to the About page of our Astro site!</\u003C/span>\u003Cspan style=\"color:#85E89D\">p\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> </\u003C/span>\u003Cspan style=\"color:#85E89D\">body\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"></\u003C/span>\u003Cspan style=\"color:#85E89D\">html\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Start the Development Server\u003C/strong>\u003C/p>\n\u003Cp>Run the Astro development server to see your changes:\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">npm\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> run\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> dev\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Visit \u003Ccode>http://localhost:3000/about\u003C/code> (or the corresponding route) in your browser.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Optional: Add Dynamic Routes\u003C/strong>\u003C/p>\n\u003Cp>If you need dynamic routes (e.g., \u003Ccode>/blog/:slug\u003C/code>), create a file with square brackets in its name, such as \u003Ccode>[slug].astro\u003C/code>. Example:\u003C/p>\n\u003Cul>\n\u003Cli>\n\u003Cp>File: \u003Ccode>src/pages/blog/[slug].astro\u003C/code>\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"astro\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">---\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">const\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> { \u003C/span>\u003Cspan style=\"color:#79B8FF\">slug\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> } \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> Astro.params;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">---\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"><\u003C/span>\u003Cspan style=\"color:#85E89D\">h1\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Blog Post: {slug}</\u003C/span>\u003Cspan style=\"color:#85E89D\">h1\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003C/li>\n\u003Cli>\n\u003Cp>Visit \u003Ccode>/blog/example\u003C/code> to see the route in action.\u003C/p>\n\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Optional: Add Links to Your Route\u003C/strong>\u003C/p>\n\u003Cp>Update your site’s navigation to link to the new route. For example, in your \u003Ccode>src/layouts/Header.astro\u003C/code>:\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"astro\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"><\u003C/span>\u003Cspan style=\"color:#85E89D\">nav\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#85E89D\">a\u003C/span>\u003Cspan style=\"color:#B392F0\"> href\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"/\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Home</\u003C/span>\u003Cspan style=\"color:#85E89D\">a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#85E89D\">a\u003C/span>\u003Cspan style=\"color:#B392F0\"> href\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"/about\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>About</\u003C/span>\u003Cspan style=\"color:#85E89D\">a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#85E89D\">a\u003C/span>\u003Cspan style=\"color:#B392F0\"> href\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"/blog\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Blog</\u003C/span>\u003Cspan style=\"color:#85E89D\">a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"></\u003C/span>\u003Cspan style=\"color:#85E89D\">nav\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003C/li>\n\u003C/ol>\n\u003Chr>\n\u003Ch3 id=\"example-file-structure-for-routes\">\u003Cstrong>Example File Structure for Routes\u003C/strong>\u003C/h3>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>src/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>├── pages/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>│ ├── index.astro → /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>│ ├── about.astro → /about\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>│ ├── blog.astro → /blog\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>│ ├── blog/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>│ │ ├── [slug].astro → /blog/:slug\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":143,"imagePaths":153,"frontmatter":154},[144,147,150],{"depth":28,"slug":145,"text":146},"adding-a-new-route-in-astrojs","Adding a New Route in Astro.js",{"depth":28,"slug":148,"text":149},"steps-to-add-a-new-route","Steps to Add a New Route",{"depth":35,"slug":151,"text":152},"example-file-structure-for-routes","Example File Structure for Routes",[],{"title":133,"description":136,"publishDate":129},"style-guide",{"id":155,"data":157,"body":162,"filePath":163,"digest":164,"rendered":165},{"title":158,"publishDate":159,"tags":160,"draft":18,"description":161},"The style guide the must know to start the code",["Date","2024-12-25T18:30:00.000Z"],[17],"The full guid on file structure , css naming convention , tailwind usage and , css classes naming convention . ","## Style Guide Documentation\n\nThis document outlines the style guide we follow to maintain consistency and readability in our codebase. These principles apply to both CSS and JavaScript/TypeScript components.\n\n---\n\n## **1. File Structure**\n\n- Use a clear and consistent folder structure.\n- Place CSS files for components inside the `assets/styles` folder, named according to the component (e.g., `result-products.css` for `ResultProducts` component).\n- Keep reusable styles in a `globals.css` file.\n\n---\n\n## **2. CSS Naming Convention**\n\n- Use `kebab-case` for CSS class names.\n - Example: `card__image`, `container__card`\n- For component-specific styles, use the format: \n `componentName__element` (e.g., `card__image` for an image in the `Card` component).\n- Use utility classes from Tailwind CSS wherever possible for common properties (e.g., margins, padding, colors).\n\n---\n\n## **3. Tailwind CSS Usage**\n\n- **Use Tailwind utilities for common tasks** like spacing, typography, and colors:\n\n - Example:\n\n ```html\n \u003Cdiv class=\"rounded-lg bg-white p-4 text-gray-800\">\u003C/div>\n ```\n\n- **Avoid redundancy:** Don't add CSS rules for properties already provided by Tailwind classes.\n- Create custom styles only when:\n - Tailwind utilities cannot achieve the desired layout or behavior.\n - Styles are specific to a particular component.\n\n---\n\n## **4. Component-Specific CSS**\n\n- For each React component, create a corresponding CSS file if it requires custom styles.\n- **CSS file naming**: Use the same name as the component, in lowercase and hyphen-separated.\n - Example:\n - Component: `ResultProducts.tsx`\n - CSS File: `result-products.css`\n- Limit the use of global styles to prevent style conflicts.\n\n---\n\n## **5. Naming Variables & Functions**\n\n- Use `camelCase` for variables, functions, and methods.\n - Example: `filterItemsByRating`, `sortItems`\n- Use `PascalCase` for React components and TypeScript interfaces/types.\n - Example: `ResultProducts`, `ProductProps`\n- Use `UPPER_SNAKE_CASE` for constants.\n - Example: `BASE_IMAGE_PATH`\n\n---\n\n## **7. JSX Structure**\n\n- **Keep JSX clean and readable:**\n - Use meaningful class names.\n - Avoid inline styles unless absolutely necessary.\n- Wrap component logic (e.g., filtering, sorting) in separate functions for clarity.\n\n### **12. Example: Component and CSS Pair**\n\n#### React Component (`ResultProducts.tsx`)\n\n```tsx\n\u003Cdiv className=\"container__card\">\n \u003CCardBase className=\"card__base\">\n \u003Cimg className=\"card__image\" src={imageSrc} alt=\"Product Image\" />\n \u003CCardContent>\n \u003CCardTitle className=\"card__content\">Product Name\u003C/CardTitle>\n \u003C/CardContent>\n \u003C/CardBase>\n\u003C/div>\n```\n\n#### CSS File (`result-products.css`)\n\n```css\n.container__card {\n @apply rounded-lg border bg-white p-4 shadow-md;\n}\n\n.card__base {\n @apply flex flex-col items-center;\n}\n\n.card__image {\n @apply h-40 w-full rounded-md object-cover;\n}\n\n.card__content {\n @apply text-lg font-semibold text-gray-800;\n}\n```","src/content/blog/style-guide.md","0439145f24bd2cb6",{"html":166,"metadata":167},"\u003Ch2 id=\"style-guide-documentation\">Style Guide Documentation\u003C/h2>\n\u003Cp>This document outlines the style guide we follow to maintain consistency and readability in our codebase. These principles apply to both CSS and JavaScript/TypeScript components.\u003C/p>\n\u003Chr>\n\u003Ch2 id=\"1-file-structure\">\u003Cstrong>1. File Structure\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>Use a clear and consistent folder structure.\u003C/li>\n\u003Cli>Place CSS files for components inside the \u003Ccode>assets/styles\u003C/code> folder, named according to the component (e.g., \u003Ccode>result-products.css\u003C/code> for \u003Ccode>ResultProducts\u003C/code> component).\u003C/li>\n\u003Cli>Keep reusable styles in a \u003Ccode>globals.css\u003C/code> file.\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"2-css-naming-convention\">\u003Cstrong>2. CSS Naming Convention\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>Use \u003Ccode>kebab-case\u003C/code> for CSS class names.\n\u003Cul>\n\u003Cli>Example: \u003Ccode>card__image\u003C/code>, \u003Ccode>container__card\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>For component-specific styles, use the format:\u003Cbr>\n\u003Ccode>componentName__element\u003C/code> (e.g., \u003Ccode>card__image\u003C/code> for an image in the \u003Ccode>Card\u003C/code> component).\u003C/li>\n\u003Cli>Use utility classes from Tailwind CSS wherever possible for common properties (e.g., margins, padding, colors).\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"3-tailwind-css-usage\">\u003Cstrong>3. Tailwind CSS Usage\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Use Tailwind utilities for common tasks\u003C/strong> like spacing, typography, and colors:\u003C/p>\n\u003Cul>\n\u003Cli>\n\u003Cp>Example:\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"html\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"><\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#B392F0\"> class\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"rounded-lg bg-white p-4 text-gray-800\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">></\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Avoid redundancy:\u003C/strong> Don’t add CSS rules for properties already provided by Tailwind classes.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>Create custom styles only when:\u003C/p>\n\u003Cul>\n\u003Cli>Tailwind utilities cannot achieve the desired layout or behavior.\u003C/li>\n\u003Cli>Styles are specific to a particular component.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"4-component-specific-css\">\u003Cstrong>4. Component-Specific CSS\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>For each React component, create a corresponding CSS file if it requires custom styles.\u003C/li>\n\u003Cli>\u003Cstrong>CSS file naming\u003C/strong>: Use the same name as the component, in lowercase and hyphen-separated.\n\u003Cul>\n\u003Cli>Example:\n\u003Cul>\n\u003Cli>Component: \u003Ccode>ResultProducts.tsx\u003C/code>\u003C/li>\n\u003Cli>CSS File: \u003Ccode>result-products.css\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Limit the use of global styles to prevent style conflicts.\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"5-naming-variables--functions\">\u003Cstrong>5. Naming Variables & Functions\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>Use \u003Ccode>camelCase\u003C/code> for variables, functions, and methods.\n\u003Cul>\n\u003Cli>Example: \u003Ccode>filterItemsByRating\u003C/code>, \u003Ccode>sortItems\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Use \u003Ccode>PascalCase\u003C/code> for React components and TypeScript interfaces/types.\n\u003Cul>\n\u003Cli>Example: \u003Ccode>ResultProducts\u003C/code>, \u003Ccode>ProductProps\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Use \u003Ccode>UPPER_SNAKE_CASE\u003C/code> for constants.\n\u003Cul>\n\u003Cli>Example: \u003Ccode>BASE_IMAGE_PATH\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"7-jsx-structure\">\u003Cstrong>7. JSX Structure\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Keep JSX clean and readable:\u003C/strong>\n\u003Cul>\n\u003Cli>Use meaningful class names.\u003C/li>\n\u003Cli>Avoid inline styles unless absolutely necessary.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Wrap component logic (e.g., filtering, sorting) in separate functions for clarity.\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"12-example-component-and-css-pair\">\u003Cstrong>12. Example: Component and CSS Pair\u003C/strong>\u003C/h3>\n\u003Ch4 id=\"react-component-resultproductstsx\">React Component (\u003Ccode>ResultProducts.tsx\u003C/code>)\u003C/h4>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"tsx\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"><\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#B392F0\"> className\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"container__card\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardBase\u003C/span>\u003Cspan style=\"color:#B392F0\"> className\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"card__base\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#85E89D\">img\u003C/span>\u003Cspan style=\"color:#B392F0\"> className\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"card__image\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> src\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\">{imageSrc} \u003C/span>\u003Cspan style=\"color:#B392F0\">alt\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Product Image\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> />\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardContent\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardTitle\u003C/span>\u003Cspan style=\"color:#B392F0\"> className\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"card__content\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Product Name</\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardTitle\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> </\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardContent\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> </\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardBase\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"></\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch4 id=\"css-file-result-productscss\">CSS File (\u003Ccode>result-products.css\u003C/code>)\u003C/h4>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"css\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">.container__card\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> @\u003C/span>\u003Cspan style=\"color:#79B8FF\">apply\u003C/span>\u003Cspan style=\"color:#79B8FF\"> rounded-lg\u003C/span>\u003Cspan style=\"color:#79B8FF\"> border\u003C/span>\u003Cspan style=\"color:#79B8FF\"> bg-white\u003C/span>\u003Cspan style=\"color:#79B8FF\"> p-\u003C/span>\u003Cspan style=\"color:#E1E4E8\">4 \u003C/span>\u003Cspan style=\"color:#79B8FF\">shadow-md\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">.card__base\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> @\u003C/span>\u003Cspan style=\"color:#79B8FF\">apply\u003C/span>\u003Cspan style=\"color:#79B8FF\"> flex\u003C/span>\u003Cspan style=\"color:#79B8FF\"> flex-col\u003C/span>\u003Cspan style=\"color:#79B8FF\"> items-center\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">.card__image\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> @\u003C/span>\u003Cspan style=\"color:#79B8FF\">apply\u003C/span>\u003Cspan style=\"color:#79B8FF\"> h-\u003C/span>\u003Cspan style=\"color:#E1E4E8\">40 \u003C/span>\u003Cspan style=\"color:#79B8FF\">w-full\u003C/span>\u003Cspan style=\"color:#79B8FF\"> rounded-md\u003C/span>\u003Cspan style=\"color:#79B8FF\"> object-cover\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">.card__content\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> @\u003C/span>\u003Cspan style=\"color:#79B8FF\">apply\u003C/span>\u003Cspan style=\"color:#79B8FF\"> text-lg\u003C/span>\u003Cspan style=\"color:#79B8FF\"> font-semibold\u003C/span>\u003Cspan style=\"color:#79B8FF\"> text-gray-\u003C/span>\u003Cspan style=\"color:#E1E4E8\">800;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":168,"imagePaths":199,"frontmatter":200},[169,172,175,178,181,184,187,190,193,196],{"depth":28,"slug":170,"text":171},"style-guide-documentation","Style Guide Documentation",{"depth":28,"slug":173,"text":174},"1-file-structure","1. File Structure",{"depth":28,"slug":176,"text":177},"2-css-naming-convention","2. CSS Naming Convention",{"depth":28,"slug":179,"text":180},"3-tailwind-css-usage","3. Tailwind CSS Usage",{"depth":28,"slug":182,"text":183},"4-component-specific-css","4. Component-Specific CSS",{"depth":28,"slug":185,"text":186},"5-naming-variables--functions","5. Naming Variables & Functions",{"depth":28,"slug":188,"text":189},"7-jsx-structure","7. JSX Structure",{"depth":35,"slug":191,"text":192},"12-example-component-and-css-pair","12. Example: Component and CSS Pair",{"depth":45,"slug":194,"text":195},"react-component-resultproductstsx","React Component (ResultProducts.tsx)",{"depth":45,"slug":197,"text":198},"css-file-result-productscss","CSS File (result-products.css)",[],{"title":158,"description":161,"publishDate":201},"26 December 2024","articles",["Map",204,205],"terms",{"id":204,"data":206,"body":209,"filePath":210,"digest":211,"rendered":212},{"title":207,"author":208},"Terms & Conditions","Admin","Welcome to COMPANY-NAME! These terms and conditions outline the rules and regulations for the use of COMPANY-NAME's Website, located at [COMPANY-NAME.com](https://www.COMPANY-NAME.com).\n\nBy accessing this website, we assume you accept these terms and conditions. Do not continue to use [Your Company\nName] if you do not agree to take all of the terms and conditions stated on this page.\n\nThe following terminology applies to these Terms and Conditions, Privacy Statement and Disclaimer Notice and all Agreements: \"Client\", \"You\" and \"Your\" refers to you, the person log on this website and compliant to the Company's terms and conditions.\n\"The Company\", \"Ourselves\", \"We\", \"Our\" and \"Us\", refers to our Company. \"Party\", \"Parties\", or \"Us\", refers to both the Client and ourselves. All terms refer to the offer, acceptance, and\nconsideration of payment necessary to undertake the process of our assistance to the Client in the most appropriate manner for the express purpose of meeting the Client's needs in respect of the provision of the\nCompany's stated services, in accordance with and subject to, prevailing law of Netherlands. Any use of the above terminology or other words in the singular, plural, capitalization, and/or he/she or they, are taken as\ninterchangeable and therefore as referring to same.\n\n## Cookies\n\nWe employ the use of cookies. By accessing COMPANY-NAME, you agreed to use cookies in agreement with the COMPANY-NAME's Privacy Policy.\n\nMost interactive websites use cookies to let us retrieve the user's details for each visit. Cookies are used by\nour website to enable the functionality of certain areas to make it easier for people visiting our website. Some\nof our affiliate/advertising partners may also use cookies.\n\n## License\n\nUnless otherwise stated, COMPANY-NAME and/or its licensors own the intellectual property rights for all material on COMPANY-NAME. All intellectual property rights are reserved.\nYou may access this from COMPANY-NAME for your own personal use subjected to restrictions set in these terms and conditions.\n\n### You must not\n\n- Republish material from COMPANY-NAME\n- Sell, rent, or sub-license material from COMPANY-NAME\n- Reproduce, duplicate or copy material from COMPANY-NAME\n- Redistribute content from COMPANY-NAME\n\nIf you have any questions about our Terms and Conditions, please [contact us](/contact)","src/content/article/terms.md","c9a57ebc5b9030f2",{"html":213,"metadata":214},"\u003Cp>Welcome to COMPANY-NAME! These terms and conditions outline the rules and regulations for the use of COMPANY-NAME’s Website, located at \u003Ca href=\"https://www.COMPANY-NAME.com\">COMPANY-NAME.com\u003C/a>.\u003C/p>\n\u003Cp>By accessing this website, we assume you accept these terms and conditions. Do not continue to use [Your Company\nName] if you do not agree to take all of the terms and conditions stated on this page.\u003C/p>\n\u003Cp>The following terminology applies to these Terms and Conditions, Privacy Statement and Disclaimer Notice and all Agreements: “Client”, “You” and “Your” refers to you, the person log on this website and compliant to the Company’s terms and conditions.\n“The Company”, “Ourselves”, “We”, “Our” and “Us”, refers to our Company. “Party”, “Parties”, or “Us”, refers to both the Client and ourselves. All terms refer to the offer, acceptance, and\nconsideration of payment necessary to undertake the process of our assistance to the Client in the most appropriate manner for the express purpose of meeting the Client’s needs in respect of the provision of the\nCompany’s stated services, in accordance with and subject to, prevailing law of Netherlands. Any use of the above terminology or other words in the singular, plural, capitalization, and/or he/she or they, are taken as\ninterchangeable and therefore as referring to same.\u003C/p>\n\u003Ch2 id=\"cookies\">Cookies\u003C/h2>\n\u003Cp>We employ the use of cookies. By accessing COMPANY-NAME, you agreed to use cookies in agreement with the COMPANY-NAME’s Privacy Policy.\u003C/p>\n\u003Cp>Most interactive websites use cookies to let us retrieve the user’s details for each visit. Cookies are used by\nour website to enable the functionality of certain areas to make it easier for people visiting our website. Some\nof our affiliate/advertising partners may also use cookies.\u003C/p>\n\u003Ch2 id=\"license\">License\u003C/h2>\n\u003Cp>Unless otherwise stated, COMPANY-NAME and/or its licensors own the intellectual property rights for all material on COMPANY-NAME. All intellectual property rights are reserved.\nYou may access this from COMPANY-NAME for your own personal use subjected to restrictions set in these terms and conditions.\u003C/p>\n\u003Ch3 id=\"you-must-not\">You must not\u003C/h3>\n\u003Cul>\n\u003Cli>Republish material from COMPANY-NAME\u003C/li>\n\u003Cli>Sell, rent, or sub-license material from COMPANY-NAME\u003C/li>\n\u003Cli>Reproduce, duplicate or copy material from COMPANY-NAME\u003C/li>\n\u003Cli>Redistribute content from COMPANY-NAME\u003C/li>\n\u003C/ul>\n\u003Cp>If you have any questions about our Terms and Conditions, please \u003Ca href=\"/contact\">contact us\u003C/a>\u003C/p>",{"headings":215,"imagePaths":225,"frontmatter":226},[216,219,222],{"depth":28,"slug":217,"text":218},"cookies","Cookies",{"depth":28,"slug":220,"text":221},"license","License",{"depth":35,"slug":223,"text":224},"you-must-not","You must not",[],{"title":207,"author":208}]
\ No newline at end of file
+[["Map",1,2,9,10,143,144],"meta::meta",["Map",3,4,5,6,7,8],"astro-version","5.1.1","content-config-digest","cb57b37d92ecf6ac","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"site\":\"https://parixan.xyz\",\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"server\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true},\"redirects\":{},\"prefetch\":true,\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[]},\"devToolbar\":{\"enabled\":false},\"markdown\":{\"syntaxHighlight\":\"shiki\",\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"responsiveImages\":false,\"svg\":{\"mode\":\"inline\"}},\"legacy\":{\"collections\":false}}","blogs",["Map",11,12,96,97],"technology-used",{"id":11,"data":13,"body":20,"filePath":21,"digest":22,"rendered":23},{"title":14,"publishDate":15,"tags":16,"draft":18,"description":19},"The tech stack that we preferred",["Date","2024-12-23T18:30:00.000Z"],[17],"rz",false,"The tech stack that we work with and why we choose it ? ","## **Project Technology Stack Documentation**\r\n\r\n## **Frontend**\r\n\r\n### **Astro.js**\r\n\r\n- **Purpose**: Utilized as the core frontend framework for building the project.\r\n- **Features**:\r\n - File-based routing.\r\n - Supports server-side rendering (SSR) and static site generation (SSG).\r\n - Integrates seamlessly with other frameworks like React.\r\n\r\n### **React**\r\n\r\n- **Purpose**: Used for creating interactive and dynamic components within the Astro.js framework.\r\n- **Features**:\r\n - Component-based architecture.\r\n - State management and lifecycle methods.\r\n\r\n### **Styling**\r\n\r\n#### **Tailwind CSS**\r\n\r\n- **Purpose**: A utility-first CSS framework used for styling.\r\n- **Features**:\r\n - Rapid prototyping with predefined classes.\r\n - Highly customizable via a configuration file.\r\n\r\n### **Component Library**\r\n\r\n#### **shadcn/ui**\r\n\r\n- **Purpose**: A pre-built React-based component library for faster UI development.\r\n- **Features**:\r\n - Offers accessible and customizable components.\r\n - Works seamlessly with Tailwind CSS.\r\n\r\n### **Icons**\r\n\r\n- **Purpose**: Used for visual enhancements and icons across the application.\r\n- **Libraries**:\r\n - **Astro Icons**: Icon library designed for use in Astro.js.\r\n - **React Icons**: A collection of popular icon libraries for React.\r\n - **Lucide Icons**: Modern, consistent, and open-source icon library.\r\n\r\n### **State Management**\r\n\r\n#### **Zustand**\r\n\r\n- **Purpose**: Lightweight state management library for handling global state in the frontend.\r\n- **Features**:\r\n - Minimal boilerplate.\r\n - Simple and scalable API for managing state.\r\n\r\n### **Data Validation**\r\n\r\n#### **Zod**\r\n\r\n- **Purpose**: Schema-based data validation library.\r\n- **Features**:\r\n - Runtime validation for form data and API responses.\r\n - TypeScript integration for type safety.\r\n\r\n---\r\n\r\n## **Backend**\r\n\r\n### **Node.js**\r\n\r\n- **Purpose**: Backend runtime environment.\r\n- **Features**:\r\n - Non-blocking, event-driven architecture for handling asynchronous operations.\r\n - Large ecosystem of libraries and tools.\r\n\r\n### **Hono.js Framework**\r\n\r\n- **Purpose**: Lightweight, high-performance framework for building backend APIs.\r\n- **Features**:\r\n - Minimalistic API design.\r\n - Excellent for creating RESTful services.\r\n\r\n---\r\n\r\n## **Database**\r\n\r\n### **MongoDB**\r\n\r\n- **Purpose**: NoSQL database used for storing application data.\r\n- **Features**:\r\n - Document-oriented storage.\r\n - Scalable and flexible schema design.\r\n\r\n### **Mongoose**\r\n\r\n- **Purpose**: Object Relational Mapping (ORM) library for MongoDB.\r\n- **Features**:\r\n - Simplifies data modeling and validation.\r\n - Provides built-in schema and middleware support.\r\n\r\n---\r\n\r\n## **Other Tools**\r\n\r\n### **Code Formatting & Linting**\r\n\r\n- **Prettier**: For consistent code formatting.\r\n- **ESLint**: For identifying and fixing coding errors.","src/content/blog/technology-used.md","98f7cc9eeca22c01",{"html":24,"metadata":25},"\u003Ch2 id=\"project-technology-stack-documentation\">\u003Cstrong>Project Technology Stack Documentation\u003C/strong>\u003C/h2>\n\u003Ch2 id=\"frontend\">\u003Cstrong>Frontend\u003C/strong>\u003C/h2>\n\u003Ch3 id=\"astrojs\">\u003Cstrong>Astro.js\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Utilized as the core frontend framework for building the project.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>File-based routing.\u003C/li>\n\u003Cli>Supports server-side rendering (SSR) and static site generation (SSG).\u003C/li>\n\u003Cli>Integrates seamlessly with other frameworks like React.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"react\">\u003Cstrong>React\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Used for creating interactive and dynamic components within the Astro.js framework.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Component-based architecture.\u003C/li>\n\u003Cli>State management and lifecycle methods.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"styling\">\u003Cstrong>Styling\u003C/strong>\u003C/h3>\n\u003Ch4 id=\"tailwind-css\">\u003Cstrong>Tailwind CSS\u003C/strong>\u003C/h4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: A utility-first CSS framework used for styling.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Rapid prototyping with predefined classes.\u003C/li>\n\u003Cli>Highly customizable via a configuration file.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"component-library\">\u003Cstrong>Component Library\u003C/strong>\u003C/h3>\n\u003Ch4 id=\"shadcnui\">\u003Cstrong>shadcn/ui\u003C/strong>\u003C/h4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: A pre-built React-based component library for faster UI development.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Offers accessible and customizable components.\u003C/li>\n\u003Cli>Works seamlessly with Tailwind CSS.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"icons\">\u003Cstrong>Icons\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Used for visual enhancements and icons across the application.\u003C/li>\n\u003Cli>\u003Cstrong>Libraries\u003C/strong>:\n\u003Cul>\n\u003Cli>\u003Cstrong>Astro Icons\u003C/strong>: Icon library designed for use in Astro.js.\u003C/li>\n\u003Cli>\u003Cstrong>React Icons\u003C/strong>: A collection of popular icon libraries for React.\u003C/li>\n\u003Cli>\u003Cstrong>Lucide Icons\u003C/strong>: Modern, consistent, and open-source icon library.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"state-management\">\u003Cstrong>State Management\u003C/strong>\u003C/h3>\n\u003Ch4 id=\"zustand\">\u003Cstrong>Zustand\u003C/strong>\u003C/h4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Lightweight state management library for handling global state in the frontend.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Minimal boilerplate.\u003C/li>\n\u003Cli>Simple and scalable API for managing state.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"data-validation\">\u003Cstrong>Data Validation\u003C/strong>\u003C/h3>\n\u003Ch4 id=\"zod\">\u003Cstrong>Zod\u003C/strong>\u003C/h4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Schema-based data validation library.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Runtime validation for form data and API responses.\u003C/li>\n\u003Cli>TypeScript integration for type safety.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"backend\">\u003Cstrong>Backend\u003C/strong>\u003C/h2>\n\u003Ch3 id=\"nodejs\">\u003Cstrong>Node.js\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Backend runtime environment.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Non-blocking, event-driven architecture for handling asynchronous operations.\u003C/li>\n\u003Cli>Large ecosystem of libraries and tools.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"honojs-framework\">\u003Cstrong>Hono.js Framework\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Lightweight, high-performance framework for building backend APIs.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Minimalistic API design.\u003C/li>\n\u003Cli>Excellent for creating RESTful services.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"database\">\u003Cstrong>Database\u003C/strong>\u003C/h2>\n\u003Ch3 id=\"mongodb\">\u003Cstrong>MongoDB\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: NoSQL database used for storing application data.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Document-oriented storage.\u003C/li>\n\u003Cli>Scalable and flexible schema design.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"mongoose\">\u003Cstrong>Mongoose\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Purpose\u003C/strong>: Object Relational Mapping (ORM) library for MongoDB.\u003C/li>\n\u003Cli>\u003Cstrong>Features\u003C/strong>:\n\u003Cul>\n\u003Cli>Simplifies data modeling and validation.\u003C/li>\n\u003Cli>Provides built-in schema and middleware support.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"other-tools\">\u003Cstrong>Other Tools\u003C/strong>\u003C/h2>\n\u003Ch3 id=\"code-formatting--linting\">\u003Cstrong>Code Formatting & Linting\u003C/strong>\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Prettier\u003C/strong>: For consistent code formatting.\u003C/li>\n\u003Cli>\u003Cstrong>ESLint\u003C/strong>: For identifying and fixing coding errors.\u003C/li>\n\u003C/ul>",{"headings":26,"imagePaths":93,"frontmatter":94},[27,31,34,38,41,44,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90],{"depth":28,"slug":29,"text":30},2,"project-technology-stack-documentation","Project Technology Stack Documentation",{"depth":28,"slug":32,"text":33},"frontend","Frontend",{"depth":35,"slug":36,"text":37},3,"astrojs","Astro.js",{"depth":35,"slug":39,"text":40},"react","React",{"depth":35,"slug":42,"text":43},"styling","Styling",{"depth":45,"slug":46,"text":47},4,"tailwind-css","Tailwind CSS",{"depth":35,"slug":49,"text":50},"component-library","Component Library",{"depth":45,"slug":52,"text":53},"shadcnui","shadcn/ui",{"depth":35,"slug":55,"text":56},"icons","Icons",{"depth":35,"slug":58,"text":59},"state-management","State Management",{"depth":45,"slug":61,"text":62},"zustand","Zustand",{"depth":35,"slug":64,"text":65},"data-validation","Data Validation",{"depth":45,"slug":67,"text":68},"zod","Zod",{"depth":28,"slug":70,"text":71},"backend","Backend",{"depth":35,"slug":73,"text":74},"nodejs","Node.js",{"depth":35,"slug":76,"text":77},"honojs-framework","Hono.js Framework",{"depth":28,"slug":79,"text":80},"database","Database",{"depth":35,"slug":82,"text":83},"mongodb","MongoDB",{"depth":35,"slug":85,"text":86},"mongoose","Mongoose",{"depth":28,"slug":88,"text":89},"other-tools","Other Tools",{"depth":35,"slug":91,"text":92},"code-formatting--linting","Code Formatting & Linting",[],{"title":14,"description":19,"publishDate":95},"24 December 2024","style-guide",{"id":96,"data":98,"body":103,"filePath":104,"digest":105,"rendered":106},{"title":99,"publishDate":100,"tags":101,"draft":18,"description":102},"The style guide the must know to start the code",["Date","2024-12-25T18:30:00.000Z"],[17],"The full guid on file structure , css naming convention , tailwind usage and , css classes naming convention . ","## Style Guide Documentation\r\n\r\nThis document outlines the style guide we follow to maintain consistency and readability in our codebase. These principles apply to both CSS and JavaScript/TypeScript components.\r\n\r\n---\r\n\r\n## **1. File Structure**\r\n\r\n- Use a clear and consistent folder structure.\r\n- Place CSS files for components inside the `assets/styles` folder, named according to the component (e.g., `result-products.css` for `ResultProducts` component).\r\n- Keep reusable styles in a `globals.css` file.\r\n\r\n---\r\n\r\n## **2. CSS Naming Convention**\r\n\r\n- Use `kebab-case` for CSS class names.\r\n - Example: `card__image`, `container__card`\r\n- For component-specific styles, use the format: \r\n `componentName__element` (e.g., `card__image` for an image in the `Card` component).\r\n- Use utility classes from Tailwind CSS wherever possible for common properties (e.g., margins, padding, colors).\r\n\r\n---\r\n\r\n## **3. Tailwind CSS Usage**\r\n\r\n- **Use Tailwind utilities for common tasks** like spacing, typography, and colors:\r\n\r\n - Example:\r\n\r\n ```html\r\n \u003Cdiv class=\"rounded-lg bg-white p-4 text-gray-800\">\u003C/div>\r\n ```\r\n\r\n- **Avoid redundancy:** Don't add CSS rules for properties already provided by Tailwind classes.\r\n- Create custom styles only when:\r\n - Tailwind utilities cannot achieve the desired layout or behavior.\r\n - Styles are specific to a particular component.\r\n\r\n---\r\n\r\n## **4. Component-Specific CSS**\r\n\r\n- For each React component, create a corresponding CSS file if it requires custom styles.\r\n- **CSS file naming**: Use the same name as the component, in lowercase and hyphen-separated.\r\n - Example:\r\n - Component: `ResultProducts.tsx`\r\n - CSS File: `result-products.css`\r\n- Limit the use of global styles to prevent style conflicts.\r\n\r\n---\r\n\r\n## **5. Naming Variables & Functions**\r\n\r\n- Use `camelCase` for variables, functions, and methods.\r\n - Example: `filterItemsByRating`, `sortItems`\r\n- Use `PascalCase` for React components and TypeScript interfaces/types.\r\n - Example: `ResultProducts`, `ProductProps`\r\n- Use `UPPER_SNAKE_CASE` for constants.\r\n - Example: `BASE_IMAGE_PATH`\r\n\r\n---\r\n\r\n## **7. JSX Structure**\r\n\r\n- **Keep JSX clean and readable:**\r\n - Use meaningful class names.\r\n - Avoid inline styles unless absolutely necessary.\r\n- Wrap component logic (e.g., filtering, sorting) in separate functions for clarity.\r\n\r\n### **12. Example: Component and CSS Pair**\r\n\r\n#### React Component (`ResultProducts.tsx`)\r\n\r\n```tsx\r\n\u003Cdiv className=\"container__card\">\r\n \u003CCardBase className=\"card__base\">\r\n \u003Cimg className=\"card__image\" src={imageSrc} alt=\"Product Image\" />\r\n \u003CCardContent>\r\n \u003CCardTitle className=\"card__content\">Product Name\u003C/CardTitle>\r\n \u003C/CardContent>\r\n \u003C/CardBase>\r\n\u003C/div>\r\n```\r\n\r\n#### CSS File (`result-products.css`)\r\n\r\n```css\r\n.container__card {\r\n @apply rounded-lg border bg-white p-4 shadow-md;\r\n}\r\n\r\n.card__base {\r\n @apply flex flex-col items-center;\r\n}\r\n\r\n.card__image {\r\n @apply h-40 w-full rounded-md object-cover;\r\n}\r\n\r\n.card__content {\r\n @apply text-lg font-semibold text-gray-800;\r\n}\r\n```","src/content/blog/style-guide.md","94e22f51342f6959",{"html":107,"metadata":108},"\u003Ch2 id=\"style-guide-documentation\">Style Guide Documentation\u003C/h2>\n\u003Cp>This document outlines the style guide we follow to maintain consistency and readability in our codebase. These principles apply to both CSS and JavaScript/TypeScript components.\u003C/p>\n\u003Chr>\n\u003Ch2 id=\"1-file-structure\">\u003Cstrong>1. File Structure\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>Use a clear and consistent folder structure.\u003C/li>\n\u003Cli>Place CSS files for components inside the \u003Ccode>assets/styles\u003C/code> folder, named according to the component (e.g., \u003Ccode>result-products.css\u003C/code> for \u003Ccode>ResultProducts\u003C/code> component).\u003C/li>\n\u003Cli>Keep reusable styles in a \u003Ccode>globals.css\u003C/code> file.\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"2-css-naming-convention\">\u003Cstrong>2. CSS Naming Convention\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>Use \u003Ccode>kebab-case\u003C/code> for CSS class names.\n\u003Cul>\n\u003Cli>Example: \u003Ccode>card__image\u003C/code>, \u003Ccode>container__card\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>For component-specific styles, use the format:\u003Cbr>\n\u003Ccode>componentName__element\u003C/code> (e.g., \u003Ccode>card__image\u003C/code> for an image in the \u003Ccode>Card\u003C/code> component).\u003C/li>\n\u003Cli>Use utility classes from Tailwind CSS wherever possible for common properties (e.g., margins, padding, colors).\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"3-tailwind-css-usage\">\u003Cstrong>3. Tailwind CSS Usage\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Use Tailwind utilities for common tasks\u003C/strong> like spacing, typography, and colors:\u003C/p>\n\u003Cul>\n\u003Cli>\n\u003Cp>Example:\u003C/p>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"html\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"><\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#B392F0\"> class\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"rounded-lg bg-white p-4 text-gray-800\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">></\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Avoid redundancy:\u003C/strong> Don’t add CSS rules for properties already provided by Tailwind classes.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>Create custom styles only when:\u003C/p>\n\u003Cul>\n\u003Cli>Tailwind utilities cannot achieve the desired layout or behavior.\u003C/li>\n\u003Cli>Styles are specific to a particular component.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"4-component-specific-css\">\u003Cstrong>4. Component-Specific CSS\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>For each React component, create a corresponding CSS file if it requires custom styles.\u003C/li>\n\u003Cli>\u003Cstrong>CSS file naming\u003C/strong>: Use the same name as the component, in lowercase and hyphen-separated.\n\u003Cul>\n\u003Cli>Example:\n\u003Cul>\n\u003Cli>Component: \u003Ccode>ResultProducts.tsx\u003C/code>\u003C/li>\n\u003Cli>CSS File: \u003Ccode>result-products.css\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Limit the use of global styles to prevent style conflicts.\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"5-naming-variables--functions\">\u003Cstrong>5. Naming Variables & Functions\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>Use \u003Ccode>camelCase\u003C/code> for variables, functions, and methods.\n\u003Cul>\n\u003Cli>Example: \u003Ccode>filterItemsByRating\u003C/code>, \u003Ccode>sortItems\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Use \u003Ccode>PascalCase\u003C/code> for React components and TypeScript interfaces/types.\n\u003Cul>\n\u003Cli>Example: \u003Ccode>ResultProducts\u003C/code>, \u003Ccode>ProductProps\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Use \u003Ccode>UPPER_SNAKE_CASE\u003C/code> for constants.\n\u003Cul>\n\u003Cli>Example: \u003Ccode>BASE_IMAGE_PATH\u003C/code>\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2 id=\"7-jsx-structure\">\u003Cstrong>7. JSX Structure\u003C/strong>\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Keep JSX clean and readable:\u003C/strong>\n\u003Cul>\n\u003Cli>Use meaningful class names.\u003C/li>\n\u003Cli>Avoid inline styles unless absolutely necessary.\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Wrap component logic (e.g., filtering, sorting) in separate functions for clarity.\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"12-example-component-and-css-pair\">\u003Cstrong>12. Example: Component and CSS Pair\u003C/strong>\u003C/h3>\n\u003Ch4 id=\"react-component-resultproductstsx\">React Component (\u003Ccode>ResultProducts.tsx\u003C/code>)\u003C/h4>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"tsx\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"><\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#B392F0\"> className\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"container__card\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardBase\u003C/span>\u003Cspan style=\"color:#B392F0\"> className\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"card__base\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#85E89D\">img\u003C/span>\u003Cspan style=\"color:#B392F0\"> className\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"card__image\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> src\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\">{imageSrc} \u003C/span>\u003Cspan style=\"color:#B392F0\">alt\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Product Image\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> />\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardContent\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> <\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardTitle\u003C/span>\u003Cspan style=\"color:#B392F0\"> className\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"card__content\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Product Name</\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardTitle\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> </\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardContent\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> </\u003C/span>\u003Cspan style=\"color:#79B8FF\">CardBase\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"></\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch4 id=\"css-file-result-productscss\">CSS File (\u003Ccode>result-products.css\u003C/code>)\u003C/h4>\n\u003Cpre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"css\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">.container__card\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> @\u003C/span>\u003Cspan style=\"color:#79B8FF\">apply\u003C/span>\u003Cspan style=\"color:#79B8FF\"> rounded-lg\u003C/span>\u003Cspan style=\"color:#79B8FF\"> border\u003C/span>\u003Cspan style=\"color:#79B8FF\"> bg-white\u003C/span>\u003Cspan style=\"color:#79B8FF\"> p-\u003C/span>\u003Cspan style=\"color:#E1E4E8\">4 \u003C/span>\u003Cspan style=\"color:#79B8FF\">shadow-md\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">.card__base\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> @\u003C/span>\u003Cspan style=\"color:#79B8FF\">apply\u003C/span>\u003Cspan style=\"color:#79B8FF\"> flex\u003C/span>\u003Cspan style=\"color:#79B8FF\"> flex-col\u003C/span>\u003Cspan style=\"color:#79B8FF\"> items-center\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">.card__image\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> @\u003C/span>\u003Cspan style=\"color:#79B8FF\">apply\u003C/span>\u003Cspan style=\"color:#79B8FF\"> h-\u003C/span>\u003Cspan style=\"color:#E1E4E8\">40 \u003C/span>\u003Cspan style=\"color:#79B8FF\">w-full\u003C/span>\u003Cspan style=\"color:#79B8FF\"> rounded-md\u003C/span>\u003Cspan style=\"color:#79B8FF\"> object-cover\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">.card__content\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\"> @\u003C/span>\u003Cspan style=\"color:#79B8FF\">apply\u003C/span>\u003Cspan style=\"color:#79B8FF\"> text-lg\u003C/span>\u003Cspan style=\"color:#79B8FF\"> font-semibold\u003C/span>\u003Cspan style=\"color:#79B8FF\"> text-gray-\u003C/span>\u003Cspan style=\"color:#E1E4E8\">800;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":109,"imagePaths":140,"frontmatter":141},[110,113,116,119,122,125,128,131,134,137],{"depth":28,"slug":111,"text":112},"style-guide-documentation","Style Guide Documentation",{"depth":28,"slug":114,"text":115},"1-file-structure","1. File Structure",{"depth":28,"slug":117,"text":118},"2-css-naming-convention","2. CSS Naming Convention",{"depth":28,"slug":120,"text":121},"3-tailwind-css-usage","3. Tailwind CSS Usage",{"depth":28,"slug":123,"text":124},"4-component-specific-css","4. Component-Specific CSS",{"depth":28,"slug":126,"text":127},"5-naming-variables--functions","5. Naming Variables & Functions",{"depth":28,"slug":129,"text":130},"7-jsx-structure","7. JSX Structure",{"depth":35,"slug":132,"text":133},"12-example-component-and-css-pair","12. Example: Component and CSS Pair",{"depth":45,"slug":135,"text":136},"react-component-resultproductstsx","React Component (ResultProducts.tsx)",{"depth":45,"slug":138,"text":139},"css-file-result-productscss","CSS File (result-products.css)",[],{"title":99,"description":102,"publishDate":142},"26 December 2024","articles",["Map",145,146],"terms",{"id":145,"data":147,"body":150,"filePath":151,"digest":152,"rendered":153},{"title":148,"author":149},"Terms & Conditions","Admin","Welcome to COMPANY-NAME! These terms and conditions outline the rules and regulations for the use of COMPANY-NAME's Website, located at [COMPANY-NAME.com](https://www.COMPANY-NAME.com).\r\n\r\nBy accessing this website, we assume you accept these terms and conditions. Do not continue to use [Your Company\r\nName] if you do not agree to take all of the terms and conditions stated on this page.\r\n\r\nThe following terminology applies to these Terms and Conditions, Privacy Statement and Disclaimer Notice and all Agreements: \"Client\", \"You\" and \"Your\" refers to you, the person log on this website and compliant to the Company's terms and conditions.\r\n\"The Company\", \"Ourselves\", \"We\", \"Our\" and \"Us\", refers to our Company. \"Party\", \"Parties\", or \"Us\", refers to both the Client and ourselves. All terms refer to the offer, acceptance, and\r\nconsideration of payment necessary to undertake the process of our assistance to the Client in the most appropriate manner for the express purpose of meeting the Client's needs in respect of the provision of the\r\nCompany's stated services, in accordance with and subject to, prevailing law of Netherlands. Any use of the above terminology or other words in the singular, plural, capitalization, and/or he/she or they, are taken as\r\ninterchangeable and therefore as referring to same.\r\n\r\n## Cookies\r\n\r\nWe employ the use of cookies. By accessing COMPANY-NAME, you agreed to use cookies in agreement with the COMPANY-NAME's Privacy Policy.\r\n\r\nMost interactive websites use cookies to let us retrieve the user's details for each visit. Cookies are used by\r\nour website to enable the functionality of certain areas to make it easier for people visiting our website. Some\r\nof our affiliate/advertising partners may also use cookies.\r\n\r\n## License\r\n\r\nUnless otherwise stated, COMPANY-NAME and/or its licensors own the intellectual property rights for all material on COMPANY-NAME. All intellectual property rights are reserved.\r\nYou may access this from COMPANY-NAME for your own personal use subjected to restrictions set in these terms and conditions.\r\n\r\n### You must not\r\n\r\n- Republish material from COMPANY-NAME\r\n- Sell, rent, or sub-license material from COMPANY-NAME\r\n- Reproduce, duplicate or copy material from COMPANY-NAME\r\n- Redistribute content from COMPANY-NAME\r\n\r\nIf you have any questions about our Terms and Conditions, please [contact us](/contact)","src/content/article/terms.md","15c64083a4c7769f",{"html":154,"metadata":155},"\u003Cp>Welcome to COMPANY-NAME! These terms and conditions outline the rules and regulations for the use of COMPANY-NAME’s Website, located at \u003Ca href=\"https://www.COMPANY-NAME.com\">COMPANY-NAME.com\u003C/a>.\u003C/p>\n\u003Cp>By accessing this website, we assume you accept these terms and conditions. Do not continue to use [Your Company\r\nName] if you do not agree to take all of the terms and conditions stated on this page.\u003C/p>\n\u003Cp>The following terminology applies to these Terms and Conditions, Privacy Statement and Disclaimer Notice and all Agreements: “Client”, “You” and “Your” refers to you, the person log on this website and compliant to the Company’s terms and conditions.\r\n“The Company”, “Ourselves”, “We”, “Our” and “Us”, refers to our Company. “Party”, “Parties”, or “Us”, refers to both the Client and ourselves. All terms refer to the offer, acceptance, and\r\nconsideration of payment necessary to undertake the process of our assistance to the Client in the most appropriate manner for the express purpose of meeting the Client’s needs in respect of the provision of the\r\nCompany’s stated services, in accordance with and subject to, prevailing law of Netherlands. Any use of the above terminology or other words in the singular, plural, capitalization, and/or he/she or they, are taken as\r\ninterchangeable and therefore as referring to same.\u003C/p>\n\u003Ch2 id=\"cookies\">Cookies\u003C/h2>\n\u003Cp>We employ the use of cookies. By accessing COMPANY-NAME, you agreed to use cookies in agreement with the COMPANY-NAME’s Privacy Policy.\u003C/p>\n\u003Cp>Most interactive websites use cookies to let us retrieve the user’s details for each visit. Cookies are used by\r\nour website to enable the functionality of certain areas to make it easier for people visiting our website. Some\r\nof our affiliate/advertising partners may also use cookies.\u003C/p>\n\u003Ch2 id=\"license\">License\u003C/h2>\n\u003Cp>Unless otherwise stated, COMPANY-NAME and/or its licensors own the intellectual property rights for all material on COMPANY-NAME. All intellectual property rights are reserved.\r\nYou may access this from COMPANY-NAME for your own personal use subjected to restrictions set in these terms and conditions.\u003C/p>\n\u003Ch3 id=\"you-must-not\">You must not\u003C/h3>\n\u003Cul>\n\u003Cli>Republish material from COMPANY-NAME\u003C/li>\n\u003Cli>Sell, rent, or sub-license material from COMPANY-NAME\u003C/li>\n\u003Cli>Reproduce, duplicate or copy material from COMPANY-NAME\u003C/li>\n\u003Cli>Redistribute content from COMPANY-NAME\u003C/li>\n\u003C/ul>\n\u003Cp>If you have any questions about our Terms and Conditions, please \u003Ca href=\"/contact\">contact us\u003C/a>\u003C/p>",{"headings":156,"imagePaths":166,"frontmatter":167},[157,160,163],{"depth":28,"slug":158,"text":159},"cookies","Cookies",{"depth":28,"slug":161,"text":162},"license","License",{"depth":35,"slug":164,"text":165},"you-must-not","You must not",[],{"title":148,"author":149}]
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 1b9176bf..95507aca 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -53,13 +53,11 @@
"activityBarBadge.foreground": "#15202b",
"commandCenter.border": "#15202b99",
"sash.hoverBorder": "#e98cf9",
- "sideBar.border": "#e98cf9",
"statusBar.background": "#e05bf7",
"statusBar.foreground": "#15202b",
"statusBarItem.hoverBackground": "#d72af5",
"statusBarItem.remoteBackground": "#e05bf7",
"statusBarItem.remoteForeground": "#15202b",
- "tab.activeBorder": "#e98cf9",
"titleBar.activeBackground": "#e05bf7",
"titleBar.activeForeground": "#15202b",
"titleBar.inactiveBackground": "#e05bf799",
diff --git a/abcd.code-workspace b/abcd.code-workspace
index 0d8bf4f0..96c9a17d 100644
--- a/abcd.code-workspace
+++ b/abcd.code-workspace
@@ -173,8 +173,7 @@
"titleBar.activeBackground": "#abcd00",
"titleBar.activeForeground": "#15202b",
"titleBar.inactiveBackground": "#abcd0099",
- "titleBar.inactiveForeground": "#15202b99",
- "tab.activeBorder": "#d5ff01"
+ "titleBar.inactiveForeground": "#15202b99"
},
"workbench.colorTheme": "Tokyo Night Storm",
"workbench.editor.pinnedTabSizing": "compact",
diff --git a/public/map_assets/images/Gujrat.jpg b/public/map_assets/images/Gujrat.jpg
new file mode 100644
index 00000000..4e13a05d
Binary files /dev/null and b/public/map_assets/images/Gujrat.jpg differ
diff --git a/public/map_assets/images/Haryana.jpeg b/public/map_assets/images/Haryana.jpeg
new file mode 100644
index 00000000..8b103de1
Binary files /dev/null and b/public/map_assets/images/Haryana.jpeg differ
diff --git a/public/map_assets/images/andhra.jpg b/public/map_assets/images/andhra.jpg
new file mode 100644
index 00000000..80795d2e
Binary files /dev/null and b/public/map_assets/images/andhra.jpg differ
diff --git a/public/map_assets/images/arunachal.jpeg b/public/map_assets/images/arunachal.jpeg
new file mode 100644
index 00000000..b8c5b23c
Binary files /dev/null and b/public/map_assets/images/arunachal.jpeg differ
diff --git a/public/map_assets/images/assam.jpg b/public/map_assets/images/assam.jpg
new file mode 100644
index 00000000..4c5a6490
Binary files /dev/null and b/public/map_assets/images/assam.jpg differ
diff --git a/public/map_assets/images/bihar.jpeg b/public/map_assets/images/bihar.jpeg
new file mode 100644
index 00000000..a8972f3c
Binary files /dev/null and b/public/map_assets/images/bihar.jpeg differ
diff --git a/public/map_assets/images/chattisgarh.jpg b/public/map_assets/images/chattisgarh.jpg
new file mode 100644
index 00000000..86e29fb2
Binary files /dev/null and b/public/map_assets/images/chattisgarh.jpg differ
diff --git a/public/map_assets/images/delhi.jpg b/public/map_assets/images/delhi.jpg
new file mode 100644
index 00000000..4281da4c
Binary files /dev/null and b/public/map_assets/images/delhi.jpg differ
diff --git a/public/map_assets/images/goa.jpg b/public/map_assets/images/goa.jpg
new file mode 100644
index 00000000..5656cc6a
Binary files /dev/null and b/public/map_assets/images/goa.jpg differ
diff --git a/public/map_assets/images/himachal.jpg b/public/map_assets/images/himachal.jpg
new file mode 100644
index 00000000..11e6ddd3
Binary files /dev/null and b/public/map_assets/images/himachal.jpg differ
diff --git a/public/map_assets/images/jharkhand.jpg b/public/map_assets/images/jharkhand.jpg
new file mode 100644
index 00000000..44f6efd4
Binary files /dev/null and b/public/map_assets/images/jharkhand.jpg differ
diff --git a/public/map_assets/images/karnataka.jpg b/public/map_assets/images/karnataka.jpg
new file mode 100644
index 00000000..38033ed3
Binary files /dev/null and b/public/map_assets/images/karnataka.jpg differ
diff --git a/public/map_assets/images/kashmir.jpeg b/public/map_assets/images/kashmir.jpeg
new file mode 100644
index 00000000..148f5081
Binary files /dev/null and b/public/map_assets/images/kashmir.jpeg differ
diff --git a/public/map_assets/images/kerala.jpg b/public/map_assets/images/kerala.jpg
new file mode 100644
index 00000000..7868262b
Binary files /dev/null and b/public/map_assets/images/kerala.jpg differ
diff --git a/public/map_assets/images/madhyapradesh.jpg b/public/map_assets/images/madhyapradesh.jpg
new file mode 100644
index 00000000..6764034a
Binary files /dev/null and b/public/map_assets/images/madhyapradesh.jpg differ
diff --git a/public/map_assets/images/maharashtra.jpg b/public/map_assets/images/maharashtra.jpg
new file mode 100644
index 00000000..779fda3a
Binary files /dev/null and b/public/map_assets/images/maharashtra.jpg differ
diff --git a/public/map_assets/images/manipur.jpeg b/public/map_assets/images/manipur.jpeg
new file mode 100644
index 00000000..0d266bbe
Binary files /dev/null and b/public/map_assets/images/manipur.jpeg differ
diff --git a/public/map_assets/images/meghalaya.jpeg b/public/map_assets/images/meghalaya.jpeg
new file mode 100644
index 00000000..c46b568c
Binary files /dev/null and b/public/map_assets/images/meghalaya.jpeg differ
diff --git a/public/map_assets/images/mizoram.jpg b/public/map_assets/images/mizoram.jpg
new file mode 100644
index 00000000..bc3a1fd1
Binary files /dev/null and b/public/map_assets/images/mizoram.jpg differ
diff --git a/public/map_assets/images/nagaland.jpeg b/public/map_assets/images/nagaland.jpeg
new file mode 100644
index 00000000..f3a94e69
Binary files /dev/null and b/public/map_assets/images/nagaland.jpeg differ
diff --git a/public/map_assets/images/odisha.jpg b/public/map_assets/images/odisha.jpg
new file mode 100644
index 00000000..02d77f83
Binary files /dev/null and b/public/map_assets/images/odisha.jpg differ
diff --git a/public/map_assets/images/punjab.jpg b/public/map_assets/images/punjab.jpg
new file mode 100644
index 00000000..0063ccf5
Binary files /dev/null and b/public/map_assets/images/punjab.jpg differ
diff --git a/public/map_assets/images/rajasthan.jpg b/public/map_assets/images/rajasthan.jpg
new file mode 100644
index 00000000..050f51a4
Binary files /dev/null and b/public/map_assets/images/rajasthan.jpg differ
diff --git a/public/map_assets/images/sikkim.jpg b/public/map_assets/images/sikkim.jpg
new file mode 100644
index 00000000..c87bcf9b
Binary files /dev/null and b/public/map_assets/images/sikkim.jpg differ
diff --git a/public/map_assets/images/tamilnadu.jpeg b/public/map_assets/images/tamilnadu.jpeg
new file mode 100644
index 00000000..e6586785
Binary files /dev/null and b/public/map_assets/images/tamilnadu.jpeg differ
diff --git a/public/map_assets/images/telangana.jpg b/public/map_assets/images/telangana.jpg
new file mode 100644
index 00000000..a4d49a9e
Binary files /dev/null and b/public/map_assets/images/telangana.jpg differ
diff --git a/public/map_assets/images/tripura.jpg b/public/map_assets/images/tripura.jpg
new file mode 100644
index 00000000..295b748f
Binary files /dev/null and b/public/map_assets/images/tripura.jpg differ
diff --git a/public/map_assets/images/uttarakhand.jpeg b/public/map_assets/images/uttarakhand.jpeg
new file mode 100644
index 00000000..83f64fa3
Binary files /dev/null and b/public/map_assets/images/uttarakhand.jpeg differ
diff --git a/public/map_assets/images/uttarpradesh.jpg b/public/map_assets/images/uttarpradesh.jpg
new file mode 100644
index 00000000..de05cee6
Binary files /dev/null and b/public/map_assets/images/uttarpradesh.jpg differ
diff --git a/public/map_assets/images/westbengal.jpg b/public/map_assets/images/westbengal.jpg
new file mode 100644
index 00000000..44f6efd4
Binary files /dev/null and b/public/map_assets/images/westbengal.jpg differ
diff --git a/public/map_assets/svg/Andhra.svg b/public/map_assets/svg/Andhra.svg
new file mode 100644
index 00000000..2359769e
--- /dev/null
+++ b/public/map_assets/svg/Andhra.svg
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/ArunachalPradesh.svg b/public/map_assets/svg/ArunachalPradesh.svg
new file mode 100644
index 00000000..7c5f56ae
--- /dev/null
+++ b/public/map_assets/svg/ArunachalPradesh.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Bihar.svg b/public/map_assets/svg/Bihar.svg
new file mode 100644
index 00000000..7eb508f2
--- /dev/null
+++ b/public/map_assets/svg/Bihar.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Chhatisgarh.svg b/public/map_assets/svg/Chhatisgarh.svg
new file mode 100644
index 00000000..816042eb
--- /dev/null
+++ b/public/map_assets/svg/Chhatisgarh.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Delhi.svg b/public/map_assets/svg/Delhi.svg
new file mode 100644
index 00000000..8e92c067
--- /dev/null
+++ b/public/map_assets/svg/Delhi.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Goa.svg b/public/map_assets/svg/Goa.svg
new file mode 100644
index 00000000..948353b1
--- /dev/null
+++ b/public/map_assets/svg/Goa.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Gujrat.svg b/public/map_assets/svg/Gujrat.svg
new file mode 100644
index 00000000..19ced1a1
--- /dev/null
+++ b/public/map_assets/svg/Gujrat.svg
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Harayana.svg b/public/map_assets/svg/Harayana.svg
new file mode 100644
index 00000000..95d1cc62
--- /dev/null
+++ b/public/map_assets/svg/Harayana.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/HimachalPradesh.svg b/public/map_assets/svg/HimachalPradesh.svg
new file mode 100644
index 00000000..cd8110a7
--- /dev/null
+++ b/public/map_assets/svg/HimachalPradesh.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Jharkhand.svg b/public/map_assets/svg/Jharkhand.svg
new file mode 100644
index 00000000..7c2ba1ad
--- /dev/null
+++ b/public/map_assets/svg/Jharkhand.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Karnataka.svg b/public/map_assets/svg/Karnataka.svg
new file mode 100644
index 00000000..76131bc2
--- /dev/null
+++ b/public/map_assets/svg/Karnataka.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Kashmir.svg b/public/map_assets/svg/Kashmir.svg
new file mode 100644
index 00000000..ff1e11af
--- /dev/null
+++ b/public/map_assets/svg/Kashmir.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Kerala.svg b/public/map_assets/svg/Kerala.svg
new file mode 100644
index 00000000..83bccdcb
--- /dev/null
+++ b/public/map_assets/svg/Kerala.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/MadhyaPradesh.svg b/public/map_assets/svg/MadhyaPradesh.svg
new file mode 100644
index 00000000..e2edf4fe
--- /dev/null
+++ b/public/map_assets/svg/MadhyaPradesh.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Maharashtra.svg b/public/map_assets/svg/Maharashtra.svg
new file mode 100644
index 00000000..13233ff7
--- /dev/null
+++ b/public/map_assets/svg/Maharashtra.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Manipur.svg b/public/map_assets/svg/Manipur.svg
new file mode 100644
index 00000000..68c8223c
--- /dev/null
+++ b/public/map_assets/svg/Manipur.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Meghalaya.svg b/public/map_assets/svg/Meghalaya.svg
new file mode 100644
index 00000000..ca843537
--- /dev/null
+++ b/public/map_assets/svg/Meghalaya.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Mizoram.svg b/public/map_assets/svg/Mizoram.svg
new file mode 100644
index 00000000..43855c3d
--- /dev/null
+++ b/public/map_assets/svg/Mizoram.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Nagaland.svg b/public/map_assets/svg/Nagaland.svg
new file mode 100644
index 00000000..3dc1b772
--- /dev/null
+++ b/public/map_assets/svg/Nagaland.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Odisha.svg b/public/map_assets/svg/Odisha.svg
new file mode 100644
index 00000000..3b2a03a7
--- /dev/null
+++ b/public/map_assets/svg/Odisha.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Rajasthan.svg b/public/map_assets/svg/Rajasthan.svg
new file mode 100644
index 00000000..29f7885e
--- /dev/null
+++ b/public/map_assets/svg/Rajasthan.svg
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Sikkim.svg b/public/map_assets/svg/Sikkim.svg
new file mode 100644
index 00000000..b8d7f593
--- /dev/null
+++ b/public/map_assets/svg/Sikkim.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/TamilNadu.svg b/public/map_assets/svg/TamilNadu.svg
new file mode 100644
index 00000000..ae5a9620
--- /dev/null
+++ b/public/map_assets/svg/TamilNadu.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Telangana.svg b/public/map_assets/svg/Telangana.svg
new file mode 100644
index 00000000..cc552e19
--- /dev/null
+++ b/public/map_assets/svg/Telangana.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Tripura.svg b/public/map_assets/svg/Tripura.svg
new file mode 100644
index 00000000..331d428d
--- /dev/null
+++ b/public/map_assets/svg/Tripura.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/UttarPradesh.svg b/public/map_assets/svg/UttarPradesh.svg
new file mode 100644
index 00000000..af8e7a3d
--- /dev/null
+++ b/public/map_assets/svg/UttarPradesh.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/Uttarakhand.svg b/public/map_assets/svg/Uttarakhand.svg
new file mode 100644
index 00000000..bb1ea70f
--- /dev/null
+++ b/public/map_assets/svg/Uttarakhand.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/WestBengal.svg b/public/map_assets/svg/WestBengal.svg
new file mode 100644
index 00000000..d392d136
--- /dev/null
+++ b/public/map_assets/svg/WestBengal.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/assam.svg b/public/map_assets/svg/assam.svg
new file mode 100644
index 00000000..1d216ffb
--- /dev/null
+++ b/public/map_assets/svg/assam.svg
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/public/map_assets/svg/punjab.svg b/public/map_assets/svg/punjab.svg
new file mode 100644
index 00000000..6e571ff1
--- /dev/null
+++ b/public/map_assets/svg/punjab.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/src/assets/map_assets/stateData.json b/src/assets/map_assets/stateData.json
new file mode 100644
index 00000000..80f277b0
--- /dev/null
+++ b/src/assets/map_assets/stateData.json
@@ -0,0 +1,392 @@
+[
+ {
+ "id": "andhrapradesh",
+ "state_id": 1,
+ "name": "Andhra Pradesh",
+ "dance": "Kuchipudi",
+ "festival": "Sankranti",
+ "description": "Kuchipudi is one of the eight major Indian classical dances and originated in Andhra Pradesh.",
+ "image": "andhra.jpg",
+ "svg": "Andhra.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Andhra_Pradesh",
+ "official_website": "https://www.ap.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "arunachalpradesh",
+ "state_id": 2,
+ "name": "Arunachal Pradesh",
+ "dance": "Yak Dance",
+ "festival": "Losar, Reh",
+ "description": "The Yak dance is a traditional dance form performed during major festivals in Arunachal Pradesh.",
+ "image": "arunachal.jpeg",
+ "svg": "ArunachalPradesh.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Arunachal_Pradesh",
+ "official_website": "https://www.arunachalpradesh.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "assam",
+ "state_id": 3,
+ "name": "Assam",
+ "dance": "Bihu Dance",
+ "festival": "Bihu",
+ "description": "The Bihu dance is an energetic and vibrant folk dance performed during the Bihu festival in Assam.",
+ "image": "assam.jpg",
+ "svg": "assam.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Assam",
+ "official_website": "https://www.assam.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "bihar",
+ "state_id": 4,
+ "name": "Bihar",
+ "dance": "Jat-Jatin",
+ "festival": "Chhath Puja",
+ "description": "Jat-Jatin is a popular folk dance of Bihar that represents rural life and relationships.",
+ "image": "bihar.jpeg",
+ "svg": "Bihar.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Bihar",
+ "official_website": "https://state.bihar.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "chhattisgarh",
+ "state_id": 5,
+ "name": "Chhattisgarh",
+ "dance": "Panthi Dance",
+ "festival": "Bastar Dussehra",
+ "description": "Panthi Dance is a traditional dance performed by the Satnami community of Chhattisgarh.",
+ "image": "chattisgarh.jpg",
+ "svg": "Chhatisgarh.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Chhattisgarh",
+ "official_website": "https://www.cgstate.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "delhi",
+ "state_id": 29,
+ "name": "Delhi",
+ "dance": "Dilli Kathak",
+ "festival": "Republic Day Parade",
+ "description": "Delhi is known for its rich cultural heritage and performances of classical and contemporary Kathak dance.",
+ "image": "delhi.jpg",
+ "svg": "Delhi.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Delhi",
+ "official_website": "https://delhi.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "goa",
+ "state_id": 6,
+ "name": "Goa",
+ "dance": "Dekhnni",
+ "festival": "Carnival",
+ "description": "Dekhnni is a semi-classical Goan dance form that blends Indian and Western influences.",
+ "image": "goa.jpg",
+ "svg": "Goa.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Goa",
+ "official_website": "https://www.goa.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "gujarat",
+ "state_id": 7,
+ "name": "Gujarat",
+ "dance": "Garba",
+ "festival": "Navratri",
+ "description": "Garba is a popular folk dance of Gujarat performed during the Navratri festival.",
+ "image": "Gujrat.jpg",
+ "svg": "Gujrat.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Gujarat",
+ "official_website": "https://gujaratindia.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "haryana",
+ "state_id": 8,
+ "name": "Haryana",
+ "dance": "Phag Dance",
+ "festival": "Teej",
+ "description": "Phag Dance is a vibrant folk dance of Haryana performed during the harvest season.",
+ "image": "Harayana.jpg",
+ "svg": "Harayana.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Haryana",
+ "official_website": "https://haryana.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "himachalpradesh",
+ "state_id": 9,
+ "name": "Himachal Pradesh",
+ "dance": "Nati",
+ "festival": "Kullu Dussehra",
+ "description": "Nati is a traditional folk dance of Himachal Pradesh, known for its slow rhythm and graceful movements.",
+ "image": "himachal.jpg",
+ "svg": "HimachalPradesh.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Himachal_Pradesh",
+ "official_website": "https://himachal.nic.in",
+ "isActive": true
+ },
+ {
+ "id": "jammuandkashmir",
+ "state_id": 30,
+ "name": "Jammu and Kashmir",
+ "dance": "Rouf",
+ "festival": "Hemis Festival",
+ "description": "Jammu and Kashmir is renowned for its traditional Rouf dance and vibrant cultural festivals like the Hemis Festival.",
+ "image": "kashmir.jpeg",
+ "svg": "Kashmir.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Jammu_and_Kashmir",
+ "official_website": "https://jk.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "jharkhand",
+ "state_id": 10,
+ "name": "Jharkhand",
+ "dance": "Chhau Dance",
+ "festival": "Sarhul",
+ "description": "Chhau Dance is a semi-classical dance form that incorporates martial arts and storytelling.",
+ "image": "jharkhand.jpg",
+ "svg": "Jharkhand.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Jharkhand",
+ "official_website": "https://www.jharkhand.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "karnataka",
+ "state_id": 11,
+ "name": "Karnataka",
+ "dance": "Yakshagana",
+ "festival": "Dasara",
+ "description": "Yakshagana is a traditional theater and dance form that originated in Karnataka.",
+ "image": "karnataka.jpg",
+ "svg": "Karnataka.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Karnataka",
+ "official_website": "https://www.karnataka.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "kerala",
+ "state_id": 12,
+ "name": "Kerala",
+ "dance": "Kathakali",
+ "festival": "Onam",
+ "description": "Kathakali is a classical dance-drama from Kerala, known for its elaborate costumes and makeup.",
+ "image": "kerala.jpg",
+ "svg": "Kerala.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Kerala",
+ "official_website": "https://www.kerala.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "madhyapradesh",
+ "state_id": 13,
+ "name": "Madhya Pradesh",
+ "dance": "Matki Dance",
+ "festival": "Khajuraho Dance Festival",
+ "description": "Matki Dance is a traditional folk dance of Madhya Pradesh performed during celebrations.",
+ "image": "madhyapradesh.jpg",
+ "svg": "MadhyaPradesh.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Madhya_Pradesh",
+ "official_website": "https://www.mp.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "maharashtra",
+ "state_id": 14,
+ "name": "Maharashtra",
+ "dance": "Lavani",
+ "festival": "Ganesh Chaturthi",
+ "description": "Lavani is a traditional folk dance of Maharashtra known for its energetic and graceful performances.",
+ "image": "maharashtra.jpg",
+ "svg": "Maharashtra.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Maharashtra",
+ "official_website": "https://www.maharashtra.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "manipur",
+ "state_id": 15,
+ "name": "Manipur",
+ "dance": "Raas Leela",
+ "festival": "Yaoshang",
+ "description": "Raas Leela is a classical Manipuri dance depicting the love story of Radha and Krishna.",
+ "image": "manipur.jpeg",
+ "svg": "Manipur.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Manipur",
+ "official_website": "https://manipur.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "meghalaya",
+ "state_id": 16,
+ "name": "Meghalaya",
+ "dance": "Nongkrem Dance",
+ "festival": "Shad Suk Mynsiem",
+ "description": "The Nongkrem Dance is a traditional tribal dance performed by the Khasi community in Meghalaya.",
+ "image": "meghalaya.jpeg",
+ "svg": "Meghalaya.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Meghalaya",
+ "official_website": "https://www.meghalaya.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "mizoram",
+ "state_id": 17,
+ "name": "Mizoram",
+ "dance": "Cheraw Dance",
+ "festival": "Chapchar Kut",
+ "description": "Cheraw Dance, also known as Bamboo Dance, is a popular traditional dance of Mizoram.",
+ "image": "mizoram.jpg",
+ "svg": "Mizoram.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Mizoram",
+ "official_website": "https://mizoram.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "nagaland",
+ "state_id": 18,
+ "name": "Nagaland",
+ "dance": "Chang Lo",
+ "festival": "Hornbill Festival",
+ "description": "Chang Lo is a traditional folk dance of the Chang tribe in Nagaland.",
+ "image": "nagaland.jpeg",
+ "svg": "Nagaland.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Nagaland",
+ "official_website": "https://www.nagaland.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "odisha",
+ "state_id": 19,
+ "name": "Odisha",
+ "dance": "Odissi",
+ "festival": "Rath Yatra",
+ "description": "Odissi is one of the eight major Indian classical dance forms and originated in Odisha.",
+ "image": "odisha.jpg",
+ "svg": "Odisha.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Odisha",
+ "official_website": "https://www.odisha.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "punjab",
+ "state_id": 20,
+ "name": "Punjab",
+ "dance": "Bhangra",
+ "festival": "Lohri",
+ "description": "Bhangra is a vibrant and energetic folk dance of Punjab, performed during harvest festivals.",
+ "image": "punjab.jpg",
+ "svg": "punjab.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Punjab,_India",
+ "official_website": "https://www.punjab.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "rajasthan",
+ "state_id": 21,
+ "name": "Rajasthan",
+ "dance": "Ghoomar",
+ "festival": "Gangaur",
+ "description": "Ghoomar is a traditional folk dance of Rajasthan performed by women in colorful attire.",
+ "image": "rajasthan.jpg",
+ "svg": "Rajasthan.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Rajasthan",
+ "official_website": "https://www.rajasthan.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "sikkim",
+ "state_id": 22,
+ "name": "Sikkim",
+ "dance": "Singhi Chham",
+ "festival": "Losar",
+ "description": "Singhi Chham is a traditional mask dance of Sikkim performed during the Losar festival.",
+ "image": "sikkim.jpg",
+ "svg": "Sikkim.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Sikkim",
+ "official_website": "https://www.sikkim.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "tamilnadu",
+ "state_id": 23,
+ "name": "Tamil Nadu",
+ "dance": "Bharatanatyam",
+ "festival": "Pongal",
+ "description": "Bharatanatyam is one of the oldest classical dance forms of India, originating in Tamil Nadu.",
+ "image": "tamilnadu.jpg",
+ "svg": "TamilNadu.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Tamil_Nadu",
+ "official_website": "https://www.tn.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "telangana",
+ "state_id": 24,
+ "name": "Telangana",
+ "dance": "Perini Shivatandavam",
+ "festival": "Bonalu",
+ "description": "Perini Shivatandavam is an ancient dance form dedicated to Lord Shiva, revived in Telangana.",
+ "image": "telangana.jpg",
+ "svg": "Telangana.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Telangana",
+ "official_website": "https://www.telangana.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "tripura",
+ "state_id": 25,
+ "name": "Tripura",
+ "dance": "Hojagiri",
+ "festival": "Kharchi Puja",
+ "description": "Hojagiri is a traditional tribal dance performed by the Reang community of Tripura.",
+ "image": "tripura.jpg",
+ "svg": "Tripura.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Tripura",
+ "official_website": "https://www.tripura.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "uttarpradesh",
+ "state_id": 26,
+ "name": "Uttar Pradesh",
+ "dance": "Kathak",
+ "festival": "Diwali",
+ "description": "Kathak is one of the eight major Indian classical dance forms and is widely practiced in Uttar Pradesh.",
+ "image": "uttarpradesh.jpg",
+ "svg": "UttarPradesh.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Uttar_Pradesh",
+ "official_website": "https://up.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "uttarakhand",
+ "state_id": 27,
+ "name": "Uttarakhand",
+ "dance": "Barada Nati",
+ "festival": "Kumaoni Holi",
+ "description": "Barada Nati is a folk dance performed in the Jaunsar-Bawar region of Uttarakhand.",
+ "image": "uttarakhand.jpeg",
+ "svg": "Uttarakhand.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/Uttarakhand",
+ "official_website": "https://uk.gov.in",
+ "isActive": true
+ },
+ {
+ "id": "westbengal",
+ "state_id": 28,
+ "name": "West Bengal",
+ "dance": "Chhau Dance",
+ "festival": "Durga Puja",
+ "description": "Chhau Dance is a semi-classical dance form performed in Purulia district of West Bengal.",
+ "image": "westbengal.jpg",
+ "svg": "WestBengal.svg",
+ "wikiLink": "https://en.wikipedia.org/wiki/West_Bengal",
+ "official_website": "https://www.wb.gov.in",
+ "isActive": true
+ }
+]
\ No newline at end of file
diff --git a/src/assets/map_assets/states.json b/src/assets/map_assets/states.json
new file mode 100644
index 00000000..3ac3c786
--- /dev/null
+++ b/src/assets/map_assets/states.json
@@ -0,0 +1,212 @@
+{
+ "andhra": {
+ "id": "Andhra.html",
+ "name": "Andhra Pradesh",
+ "dance": "Kuchipudi Dance",
+ "image": "andhra.jpg",
+ "svg": "Andhra.svg"
+ },
+ "assam": {
+ "id": "Assam.html",
+ "name": "Assam",
+ "dance": "Bihu Dance",
+ "image": "assam.jpg",
+ "svg": "assam.svg"
+ },
+ "arunachalpradesh": {
+ "id": "ArunachalPradesh.html",
+ "name": "Arunachal Pradesh",
+ "dance": "Bari Dance",
+ "image": "arunachal.jpeg",
+ "svg": "ArunachalPradesh.svg"
+ },
+ "bihar": {
+ "id": "Bihar.html",
+ "name": "Bihar",
+ "dance": "Bihar Folk Dance",
+ "image": "bihar.jpeg",
+ "svg": "Bihar.svg"
+ },
+ "chhatisgarh": {
+ "id": "Chhatisgarh.html",
+ "name": "Chhattisgarh",
+ "dance": "Raut Nacha",
+ "image": "chattisgarh.jpg",
+ "svg": "Chhatisgarh.svg"
+ },
+ "delhi": {
+ "id": "Delhi.html",
+ "name": "Delhi",
+ "dance": "Kathak",
+ "image": "delhi.jpg",
+ "svg": "Delhi.svg"
+ },
+ "telangana": {
+ "id": "Telangana.html",
+ "name": "Telangana",
+ "dance": "Perini Shiva Thandavam",
+ "image": "telangana.jpg",
+ "svg": "Telangana.svg"
+ },
+ "goa": {
+ "id": "Goa.html",
+ "name": "Goa",
+ "dance": "Dekhnni",
+ "image": "goa.jpg",
+ "svg": "Goa.svg"
+ },
+ "gujarat": {
+ "id": "Gujrat.html",
+ "name": "Gujarat",
+ "dance": "Garba",
+ "image": "Gujrat.jpg",
+ "svg": "Gujrat.svg"
+ },
+ "kerala": {
+ "id": "Kerala.html",
+ "name": "Kerala",
+ "dance": "Kathakali",
+ "image": "kerala.jpg",
+ "svg": "Kerala.svg"
+ },
+ "karnataka": {
+ "id": "Karnataka.html",
+ "name": "Karnataka",
+ "dance": "Karnataka Folk Dance",
+ "image": "karnataka.jpg",
+ "svg": "Karnataka.svg"
+ },
+ "maharashtra": {
+ "id": "Maharashtra.html",
+ "name": "Maharashtra",
+ "dance": "Lavani",
+ "image": "maharashtra.jpg",
+ "svg": "Maharashtra.svg"
+ },
+ "madhyapradesh": {
+ "id": "MadhyaPradesh.html",
+ "name": "Madhya Pradesh",
+ "dance": "Gond Dance",
+ "image": "madhyapradesh.jpg",
+ "svg": "MadhyaPradesh.svg"
+ },
+ "uttarpradesh": {
+ "id": "UttarPradesh.html",
+ "name": "Uttar Pradesh",
+ "dance": "Kathak",
+ "image": "uttarpradesh.jpg",
+ "svg": "UttarPradesh.svg"
+ },
+ "nagaland": {
+ "id": "Nagaland.html",
+ "name": "Nagaland",
+ "dance": "Heka Dance",
+ "image": "nagaland.jpeg",
+ "svg": "Nagaland.svg"
+ },
+ "manipur": {
+ "id": "Manipur.html",
+ "name": "Manipur",
+ "dance": "Manipuri Dance",
+ "image": "manipur.jpeg",
+ "svg": "Manipur.svg"
+ },
+ "meghalaya": {
+ "id": "Meghalaya.html",
+ "name": "Meghalaya",
+ "dance": "Laho Dance",
+ "image": "meghalaya.jpeg",
+ "svg": "Meghalaya.svg"
+ },
+ "mizoram": {
+ "id": "Mizoram.html",
+ "name": "Mizoram",
+ "dance": "Cheraw Dance",
+ "image": "mizoram.jpg",
+ "svg": "Mizoram.svg"
+ },
+ "odisha": {
+ "id": "Odisha.html",
+ "name": "Odisha",
+ "dance": "Odissi",
+ "image": "odisha.jpg",
+ "svg": "Odisha.svg"
+ },
+ "rajasthan": {
+ "id": "Rajasthan.html",
+ "name": "Rajasthan",
+ "dance": "Ghoomar",
+ "image": "rajasthan.jpg",
+ "svg": "Rajasthan.svg"
+ },
+ "sikkim": {
+ "id": "Sikkim.html",
+ "name": "Sikkim",
+ "dance": "Chyabrung Dance",
+ "image": "sikkim.jpg",
+ "svg": "Sikkim.svg"
+ },
+ "tamilnadu": {
+ "id": "TamilNadu.html",
+ "name": "Tamil Nadu",
+ "dance": "Bharatanatyam",
+ "image": "tamilnadu.jpeg",
+ "svg": "TamilNadu.svg"
+ },
+ "haryana": {
+ "id": "Harayana.html",
+ "name": "Haryana",
+ "dance": "Ghoomar",
+ "image": "Haryana.jpeg",
+ "svg": "Harayana.svg"
+ },
+ "punjab": {
+ "id": "punjab.html",
+ "name": "Punjab",
+ "dance": "Bhangra",
+ "image": "punjab.jpg",
+ "svg": "punjab.svg"
+ },
+ "tripura": {
+ "id": "Tripura.html",
+ "name": "Tripura",
+ "dance": "Hojagiri Dance",
+ "image": "tripura.jpg",
+ "svg": "Tripura.svg"
+ },
+ "uttarakhand": {
+ "id": "Uttarakhand.html",
+ "name": "Uttarakhand",
+ "dance": "Langvir Dance",
+ "image": "uttarakhand.jpeg",
+ "svg": "Uttarakhand.svg"
+ },
+ "himachalpradesh": {
+ "id": "HimachalPradesh.html",
+ "name": "Himachal Pradesh",
+ "dance": "Nati Dance",
+ "image": "himachal.jpg",
+ "svg": "HimachalPradesh.svg"
+ },
+ "jammuandkashmir": {
+ "id": "Kashmir.html",
+ "name": "Jammu and Kashmir",
+ "dance": "Rauf Dance",
+ "image": "kashmir.jpeg",
+ "svg": "Kashmir.svg"
+ },
+ "westbengal": {
+ "id": "WestBengal.html",
+ "name": "West Bengal",
+ "dance": "Bhatiali",
+ "image": "westbengal.jpg",
+ "svg": "WestBengal.svg"
+ },
+ "jharkhand": {
+ "id": "Jharkhand.html",
+ "name": "Jharkhand",
+ "dance": "Chhau Dance",
+ "image": "jharkhand.jpg",
+ "svg": "Jharkhand.svg"
+ }
+}
diff --git a/src/assets/styles/map_styles/map.css b/src/assets/styles/map_styles/map.css
new file mode 100644
index 00000000..90b21151
--- /dev/null
+++ b/src/assets/styles/map_styles/map.css
@@ -0,0 +1,45 @@
+.container_map {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ width: 100%;
+ max-width: 1200px;
+ margin: 40px auto;
+ position: relative;
+}
+
+svg {
+ width: 100%;
+ height: auto;
+ max-width: 100%;
+}
+
+.tooltip {
+ position: absolute;
+ background-color: rgba(0, 0, 0, 0.8);
+ color: white;
+ padding: 8px 12px;
+ border-radius: 4px;
+ font-size: 14px;
+ pointer-events: none;
+ z-index: 500;
+ display: none;
+ transform: translate(-500px, -200px);
+}
+
+
+
+
+
+
+ path {
+ fill: #aee38a;
+ cursor: pointer;
+ transition: fill 0.2s ease, transform 0.1s ease;
+ }
+
+ path:hover {
+ fill: #FFA500;
+ transform: scale(1.05);
+ }
\ No newline at end of file
diff --git a/src/assets/styles/map_styles/popup.css b/src/assets/styles/map_styles/popup.css
new file mode 100644
index 00000000..333bd1af
--- /dev/null
+++ b/src/assets/styles/map_styles/popup.css
@@ -0,0 +1,102 @@
+#state-popup {
+ display: none;
+ flex-direction: column;
+ position: absolute;
+ background-color: #fff;
+ padding: 20px;
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
+ border-radius: 12px;
+ width: 90%;
+ max-width: 400px;
+ z-index: 1000;
+ opacity: 0;
+ transition: opacity 0.3s ease;
+ max-height: 90vh;
+ overflow-y: auto;
+}
+
+#popup-state-name {
+ font-size: 1.8rem;
+ font-weight: bold;
+ margin-bottom: 12px;
+ color: #333;
+}
+
+#popup-state-info {
+ font-size: 1.4rem;
+ margin: 12px 0;
+ color: #444;
+ line-height: 1.4;
+}
+
+#state-popup img {
+ width: 100%;
+ height: auto;
+ max-height: 200px;
+ object-fit: cover;
+ border-radius: 8px;
+ margin: 10px 0;
+}
+
+.close-popup {
+ position: absolute;
+ top: 10px;
+ right: 15px;
+ font-size: 1.8rem;
+ cursor: pointer;
+ color: #666;
+ transition: color 0.2s ease;
+}
+
+.close-popup:hover {
+ color: #333;
+}
+
+#pop-up-buttons {
+ display: flex;
+ gap: 12px;
+ margin-top: 15px;
+}
+
+.copy-button,
+#see-more-button {
+ flex: 1;
+ padding: 10px 16px;
+ font-size: 1.2rem;
+ cursor: pointer;
+ border: none;
+ border-radius: 8px;
+ transition: all 0.2s ease;
+}
+
+.copy-button {
+ background-color: #4caf50;
+ color: white;
+}
+
+#see-more-button {
+ background-color: #007bff;
+ color: white;
+}
+
+.copy-button:hover,
+#see-more-button:hover {
+ transform: translateY(-2px);
+ opacity: 0.9;
+}
+
+@media (max-width: 768px) {
+ #state-popup {
+ width: 85%;
+ padding: 15px;
+ margin: 0 auto;
+ }
+
+ #popup-state-name {
+ font-size: 1.6rem;
+ }
+
+ #popup-state-info {
+ font-size: 1.2rem;
+ }
+}
diff --git a/src/assets/styles/map_styles/stateStyles.css b/src/assets/styles/map_styles/stateStyles.css
new file mode 100644
index 00000000..cd5064f5
--- /dev/null
+++ b/src/assets/styles/map_styles/stateStyles.css
@@ -0,0 +1,188 @@
+
+
+.home-button {
+ position: fixed;
+ top: 30px;
+ left: 30px;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 12px 20px;
+ background-color: #2c3e50;
+ color: white;
+ text-decoration: none;
+ border-radius: 50px;
+ font-weight: 500;
+ transition: all 0.3s ease;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
+ z-index: 100;
+}
+
+.home-button:hover {
+ background-color: #34495e;
+ transform: translateY(-2px);
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
+}
+
+.home-button svg {
+ fill: currentColor;
+ width: 20px;
+ height: 20px;
+}
+
+h1 {
+ text-align: center;
+ font-size: 3rem;
+ color: #2c3e50;
+ margin: 80px 0 50px;
+ font-weight: 700;
+ position: relative;
+}
+
+h1::after {
+ content: '';
+ position: absolute;
+ bottom: -15px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 100px;
+ height: 4px;
+ background: linear-gradient(90deg, #2c3e50, #3498db);
+ border-radius: 2px;
+}
+
+.main-container {
+ display: flex;
+ gap: 100px;
+ max-width:2000px;
+ margin: 0 auto;
+ padding: 20px;
+ justify-content: center;
+}
+
+#state-svg-container {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ background: white;
+ padding: 30px;
+ border-radius: 20px;
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
+ height: 100%;
+ max-width: 800px;
+}
+
+#state-svg-container h2 {
+ margin-bottom: 20px;
+ font-size: 2rem;
+ color: #2c3e50;
+ text-align: center;
+}
+
+#state-svg {
+ width: 100vw;
+ height: 100vh;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+#state-svg svg {
+ width: 100%;
+ height: 100%;
+}
+
+.right-content {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ background: white;
+ padding: 30px;
+ border-radius: 20px;
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
+ height: 100%;
+ max-width: 800px;
+}
+
+.right-content img {
+ width: 100%;
+ height: 500px;
+ object-fit: cover;
+ border-radius: 20px;
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
+ margin-bottom: 20px;
+}
+
+.info-table {
+ width: 100%;
+ border-collapse: collapse;
+ margin-top: 20px;
+ background: #ffffff;
+ border-radius: 10px;
+ overflow: hidden;
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
+}
+
+.info-table th, .info-table td {
+ padding: 15px;
+ border: 1px solid #eef2f7;
+}
+
+.info-table th {
+ background: #3498db;
+ color:black;
+ text-align: left;
+ font-size: 1.2rem;
+ letter-spacing: 0.5px;
+}
+
+.info-table tr:nth-child(even) {
+ background-color: #f8f9fa;
+}
+
+.info-table tr:hover {
+ background-color: #f1f4f8;
+}
+
+.info-table td:first-child {
+ font-weight: 600;
+ color: #2c3e50;
+}
+
+.content-text a {
+ display: block;
+ text-align: center;
+ margin-top: 20px;
+ color: #3498db;
+ text-decoration: none;
+ font-weight: 500;
+ padding: 10px;
+ border-radius: 5px;
+ transition: all 0.3s ease;
+}
+
+.content-text a:hover {
+ color: #2980b9;
+ background-color: #f8f9fa;
+}
+
+@media (max-width: 768px) {
+ .main-container {
+ flex-direction: column;
+ height: auto;
+ gap: 30px;
+ }
+
+ #state-svg-container, .right-content {
+ width: 100%;
+ max-width: none;
+ height: auto;
+ }
+
+ .right-content img {
+ height: 250px;
+ }
+}
\ No newline at end of file
diff --git a/src/components/Map.astro b/src/components/Map.astro
new file mode 100644
index 00000000..f26e6319
--- /dev/null
+++ b/src/components/Map.astro
@@ -0,0 +1,74 @@
+---
+import statesData from '@/assets/map_assets/states.json';
+---
+
+