From 0eb0cb7d46900f985ed7f0781a1f5ee86a697773 Mon Sep 17 00:00:00 2001
From: ruru <142723369+ruru-m07@users.noreply.github.com>
Date: Mon, 23 Sep 2024 21:18:47 +0530
Subject: [PATCH 1/4] feat(components): add dropzone component
---
apps/www/app/playground/page.tsx | 10 ++
.../preview/dropzone/advanceDropzone.tsx | 51 +++++++
.../components/preview/dropzone/dropzone.tsx | 15 ++
apps/www/components/preview/index.tsx | 2 +
apps/www/content/docs/components/dropzone.mdx | 140 ++++++++++++++++++
apps/www/package.json | 1 +
.../public/registry/components/dropzone.json | 11 ++
apps/www/public/registry/index.json | 6 +
apps/www/registry/ui.ts | 6 +
packages/ui/package.json | 1 +
packages/ui/src/components/dropzone.tsx | 86 +++++++++++
pnpm-lock.yaml | 32 +++-
12 files changed, 359 insertions(+), 2 deletions(-)
create mode 100644 apps/www/components/preview/dropzone/advanceDropzone.tsx
create mode 100644 apps/www/components/preview/dropzone/dropzone.tsx
create mode 100644 apps/www/content/docs/components/dropzone.mdx
create mode 100644 apps/www/public/registry/components/dropzone.json
create mode 100644 packages/ui/src/components/dropzone.tsx
diff --git a/apps/www/app/playground/page.tsx b/apps/www/app/playground/page.tsx
index 9364dc4..274daec 100644
--- a/apps/www/app/playground/page.tsx
+++ b/apps/www/app/playground/page.tsx
@@ -39,6 +39,8 @@ import {
selectAnimationVariants,
} from "ruru-ui/components/select";
import Modal, { ModalProvider } from "ruru-ui/components/modal";
+import { Dropzone } from "ruru-ui/components/dropzone";
+import AdvanceDropzone from "@/components/preview/dropzone/advanceDropzone";
const Playground = () => {
const handleSubmit = async () => {
@@ -607,6 +609,14 @@ const Playground = () => {
+
+ console.log(acceptedFiles)} />
+
+
+
+
+
+
);
diff --git a/apps/www/components/preview/dropzone/advanceDropzone.tsx b/apps/www/components/preview/dropzone/advanceDropzone.tsx
new file mode 100644
index 0000000..b8fded3
--- /dev/null
+++ b/apps/www/components/preview/dropzone/advanceDropzone.tsx
@@ -0,0 +1,51 @@
+"use client";
+
+import React from "react";
+import { Dropzone, RD } from "ruru-ui/components/dropzone";
+
+import { File } from "lucide-react";
+
+const AdvanceDropzone = () => {
+ const [files, setFiles] = React.useState([]);
+
+ function formatFileSize(bytes: number) {
+ if (bytes === 0) return "0 Bytes";
+ const k = 1024;
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB"];
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
+ }
+
+ const onDrop = (acceptedFiles: RD.FileWithPath[]) => {
+ setFiles((p) => [...p, ...acceptedFiles]);
+ };
+
+ return (
+
+
+ {files.length > 0 && (
+
+
+ Files
+
+ {files.map((file, index) => (
+
+
+
+ {file.path}
+
+
+ {formatFileSize(file.size)}
+
+
+ ))}
+
+ )}
+
+ );
+};
+
+export default AdvanceDropzone;
diff --git a/apps/www/components/preview/dropzone/dropzone.tsx b/apps/www/components/preview/dropzone/dropzone.tsx
new file mode 100644
index 0000000..3626c1d
--- /dev/null
+++ b/apps/www/components/preview/dropzone/dropzone.tsx
@@ -0,0 +1,15 @@
+"use client";
+
+import React from "react";
+import { Wrapper } from "../wrapper";
+import { Dropzone } from "ruru-ui/components/dropzone";
+
+const DropzonePreview = () => {
+ return (
+
+
+
+ );
+};
+
+export default DropzonePreview;
diff --git a/apps/www/components/preview/index.tsx b/apps/www/components/preview/index.tsx
index 65a2a35..298fa93 100644
--- a/apps/www/components/preview/index.tsx
+++ b/apps/www/components/preview/index.tsx
@@ -30,6 +30,7 @@ import { BadgePreview } from "../badgePreview";
import Tabspreview from "../tabs";
import { default as ModalPreview } from "./Modal/preview";
import FormPreview from "./form/preview";
+import DropzonePreview from "./dropzone/dropzone";
export default {
button: (
@@ -184,4 +185,5 @@ export default {
),
+ dropzone: ,
} as Record;
diff --git a/apps/www/content/docs/components/dropzone.mdx b/apps/www/content/docs/components/dropzone.mdx
new file mode 100644
index 0000000..f2ab0e7
--- /dev/null
+++ b/apps/www/content/docs/components/dropzone.mdx
@@ -0,0 +1,140 @@
+---
+title: Dropzone
+description: Dropzone allows the user to drag and drop files to upload.
+preview: dropzone
+---
+
+import { Tab, Tabs } from "fumadocs-ui/components/tabs";
+import { Tabs as Rutabs, Tab as Rutab } from "ruru-ui/components/tabs";
+import { Dropzone } from "ruru-ui/components/dropzone";
+import AdvanceDropzone from "@/components/preview/dropzone/advanceDropzone";
+
+## Installation
+
+
+
+
+
+```bash
+npx ruru-ui-cli@latest add dropzone
+```
+
+
+```bash
+pnpm dlx ruru-ui-cli@latest add dropzone
+```
+
+
+```bash
+npx ruru-ui-cli@latest add dropzone
+```
+
+
+```bash
+bunx --bun ruru-ui-cli@latest add dropzone
+```
+
+
+
+
+
+```package-install
+npm install ruru-ui@latest
+```
+
+
+
+## Usage
+
+The `Dropzone` component is used to allow the user to drag and drop files to upload.
+This component is a **wrapper** around the [react-dropzone](https://github.com/react-dropzone/react-dropzone) library.
+
+
+
+
+
+
+```tsx
+// [!code word:Dropzone]
+import { Dropzone } from "ruru-ui/components/dropzone";
+
+export function Demo() {
+ return console.log(acceptedFiles)} />;
+}
+```
+
+
+
+---
+
+### Advanced Example
+
+In this example, we learn how to handle files using the Dropzone component.
+
+
+
+
+
+
+```tsx
+"use client";
+
+import React from "react";
+import { Dropzone, RD } from "ruru-ui/components/dropzone";
+
+import { File } from "lucide-react";
+
+const AdvanceDropzone = () => {
+ const [files, setFiles] = React.useState([]);
+
+ function formatFileSize(bytes: number) {
+ if (bytes === 0) return "0 Bytes";
+ const k = 1024;
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB"];
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
+ }
+
+ const onDrop = (acceptedFiles: RD.FileWithPath[]) => {
+ setFiles((p) => [...p, ...acceptedFiles]);
+ };
+
+ return (
+
+
+ {files.length > 0 && (
+
+
+ Files
+
+ {files.map((file, index) => (
+
+
+
+ {file.path}
+
+
+ {formatFileSize(file.size)}
+
+
+ ))}
+
+ )}
+
+ );
+};
+
+export default AdvanceDropzone;
+```
+
+
+
+## Props
+
+| Name | Type | Default | Description |
+| --------- | ------------------------------------------------- | ------- | --------------------------------------------------------- |
+| className | string | "" | Optional additional class names for styling the dropzone. |
+| props | DropzoneProps & React.RefAttributes\ | {} | Props passed to the `react-dropzone` component. |
diff --git a/apps/www/package.json b/apps/www/package.json
index c3d8fe1..9647d95 100644
--- a/apps/www/package.json
+++ b/apps/www/package.json
@@ -40,6 +40,7 @@
"react": "^18.3.1",
"react-color-palette": "^7.3.0",
"react-dom": "^18.3.1",
+ "react-dropzone": "^14.2.3",
"react-resizable-panels": "^2.1.2",
"rehype-katex": "^7.0.0",
"remark-math": "^6.0.0",
diff --git a/apps/www/public/registry/components/dropzone.json b/apps/www/public/registry/components/dropzone.json
new file mode 100644
index 0000000..32e33fe
--- /dev/null
+++ b/apps/www/public/registry/components/dropzone.json
@@ -0,0 +1,11 @@
+{
+ "name": "dropzone",
+ "dependencies": ["react-dropzone"],
+ "files": [
+ {
+ "name": "dropzone.tsx",
+ "content": "\"use client\";\n\nimport React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { FilePlusIcon } from \"@radix-ui/react-icons\";\nimport ReactDropzone, { DropzoneProps, DropzoneRef } from \"react-dropzone\";\n\n\nexport const Dropzone = ({\n className,\n ...props\n}: DropzoneProps &\n React.RefAttributes & {\n className?: string;\n }): React.ReactNode => {\n return (\n <>\n {}\n \n {}\n
\n {({ getRootProps, getInputProps, isDragActive }) => (\n \n {}\n \n
\n {isDragActive ? (\n \n
\n
\n \n \n Drop to Upload file\n \n
\n
\n ) : (\n \n
\n \n \n Drag files here to add them to your repository\n \n \n or{\" \"}\n \n choose your file\n \n \n
\n )}\n
\n \n )}\n \n
\n >\n );\n};\n\nimport * as RD from \"react-dropzone\";\nexport { RD };\n"
+ }
+ ],
+ "type": "components:ui"
+}
diff --git a/apps/www/public/registry/index.json b/apps/www/public/registry/index.json
index ca316a9..e38e069 100644
--- a/apps/www/public/registry/index.json
+++ b/apps/www/public/registry/index.json
@@ -78,5 +78,11 @@
"name": "label",
"files": ["label.tsx"],
"type": "components:ui"
+ },
+ {
+ "name": "dropzone",
+ "dependencies": ["react-dropzone"],
+ "files": ["dropzone.tsx"],
+ "type": "components:ui"
}
]
diff --git a/apps/www/registry/ui.ts b/apps/www/registry/ui.ts
index 6657438..a8ad817 100644
--- a/apps/www/registry/ui.ts
+++ b/apps/www/registry/ui.ts
@@ -81,4 +81,10 @@ export const ui: Registry = [
type: "components:ui",
files: ["label.tsx"],
},
+ {
+ name: "dropzone",
+ type: "components:ui",
+ files: ["dropzone.tsx"],
+ dependencies: ["react-dropzone"],
+ },
];
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 69839a1..779d562 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -104,6 +104,7 @@
"framer-motion": "^11.3.28",
"next-themes": "^0.3.0",
"react": "^18.2.0",
+ "react-dropzone": "^14.2.3",
"react-hook-form": "^7.53.0",
"tailwind-merge": "^2.4.0",
"tailwindcss-animate": "^1.0.7",
diff --git a/packages/ui/src/components/dropzone.tsx b/packages/ui/src/components/dropzone.tsx
new file mode 100644
index 0000000..396aaa4
--- /dev/null
+++ b/packages/ui/src/components/dropzone.tsx
@@ -0,0 +1,86 @@
+"use client";
+
+import React from "react";
+import { cn } from "@/utils/cn";
+import { FilePlusIcon } from "@radix-ui/react-icons";
+import ReactDropzone, { DropzoneProps, DropzoneRef } from "react-dropzone";
+
+/**
+ * Dropzone component allows users to drag and drop files for upload.
+ * It integrates with `react-dropzone` to handle file drag-and-drop events.
+ *
+ * @param {string} className - Optional additional class names for styling the dropzone.
+ * @param {DropzoneProps & React.RefAttributes} props - Props passed to the `react-dropzone` component.
+ *
+ * @returns {React.ReactNode} - A dropzone area with visual indicators for drag-and-drop actions.
+ */
+export const Dropzone = ({
+ className,
+ ...props
+}: DropzoneProps &
+ React.RefAttributes & {
+ className?: string;
+ }): React.ReactNode => {
+ return (
+ <>
+ {/* Wrapper div with optional class names */}
+
+ {/* ReactDropzone handles file drag and drop logic */}
+
+ {({ getRootProps, getInputProps, isDragActive }) => (
+
+ {/* Root dropzone area */}
+
+
+ {isDragActive ? (
+ // When a file is dragged over the dropzone
+
+
+
+
+ Drop to Upload file
+
+
+
+ ) : (
+ // Default state of the dropzone when no file is dragged
+
+
+
+ Drag files here to add them to your repository
+
+
+ or{" "}
+
+ choose your file
+
+
+
+ )}
+
+
+ )}
+
+
+ >
+ );
+};
+
+import * as RD from "react-dropzone";
+export { RD };
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6b9a8bf..41dd3f7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -218,6 +218,9 @@ importers:
react-dom:
specifier: ^18.3.1
version: 18.3.1(react@18.3.1)
+ react-dropzone:
+ specifier: ^14.2.3
+ version: 14.2.3(react@18.3.1)
react-resizable-panels:
specifier: ^2.1.2
version: 2.1.2(react-dom@18.3.1)(react@18.3.1)
@@ -417,6 +420,9 @@ importers:
react:
specifier: ^18.2.0
version: 18.3.1
+ react-dropzone:
+ specifier: ^14.2.3
+ version: 14.2.3(react@18.3.1)
react-hook-form:
specifier: ^7.53.0
version: 7.53.0(react@18.3.1)
@@ -4186,6 +4192,11 @@ packages:
hasBin: true
dev: false
+ /attr-accept@2.2.2:
+ resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==}
+ engines: {node: '>=4'}
+ dev: false
+
/autoprefixer@10.4.19(postcss@8.4.39):
resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==}
engines: {node: ^10 || ^12 || >=14}
@@ -5810,6 +5821,13 @@ packages:
flat-cache: 3.2.0
dev: true
+ /file-selector@0.6.0:
+ resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==}
+ engines: {node: '>= 12'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
/fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
@@ -8920,7 +8938,6 @@ packages:
loose-envify: 1.4.0
object-assign: 4.1.1
react-is: 16.13.1
- dev: true
/property-information@6.5.0:
resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
@@ -8986,6 +9003,18 @@ packages:
scheduler: 0.23.2
dev: false
+ /react-dropzone@14.2.3(react@18.3.1):
+ resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==}
+ engines: {node: '>= 10.13'}
+ peerDependencies:
+ react: '>= 16.8 || 18.0.0'
+ dependencies:
+ attr-accept: 2.2.2
+ file-selector: 0.6.0
+ prop-types: 15.8.1
+ react: 18.3.1
+ dev: false
+
/react-hook-form@7.53.0(react@18.3.1):
resolution: {integrity: sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==}
engines: {node: '>=18.0.0'}
@@ -8997,7 +9026,6 @@ packages:
/react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
- dev: true
/react-medium-image-zoom@5.2.7(react-dom@18.3.1)(react@18.3.1):
resolution: {integrity: sha512-I2mC3zQMmJ/JH5D04WIT5cS8jxFvB9Ybr3ORiIIeT3hPWRxT6mnC4dNUyvO1mVxxg158H6249UClr7tXRm5IUQ==}
From a99f540279f23248ecf13258e42936d114d2e620 Mon Sep 17 00:00:00 2001
From: ruru <142723369+ruru-m07@users.noreply.github.com>
Date: Tue, 24 Sep 2024 18:08:53 +0530
Subject: [PATCH 2/4] fix(docs): fix dropzone docs and make it more cleaner
---
apps/www/content/docs/components/dropzone.mdx | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/apps/www/content/docs/components/dropzone.mdx b/apps/www/content/docs/components/dropzone.mdx
index f2ab0e7..c50c83c 100644
--- a/apps/www/content/docs/components/dropzone.mdx
+++ b/apps/www/content/docs/components/dropzone.mdx
@@ -51,7 +51,9 @@ This component is a **wrapper** around the [react-dropzone](https://github.com/r
-
+
+
+
```tsx
@@ -73,7 +75,9 @@ In this example, we learn how to handle files using the Dropzone component.
-
+
```tsx
@@ -132,6 +136,17 @@ export default AdvanceDropzone;
+## Import
+
+We are exporting the `RD` component from the `react-dropzone` module.
+Here RD is the alias for the `react-dropzone` library.
+
+```tsx title="dropzone.tsx"
+// [!code word:RD]
+import * as RD from "react-dropzone";
+export { RD };
+```
+
## Props
| Name | Type | Default | Description |
From 40ffc6eef1c037abba6a8ea34149d68b87f7c635 Mon Sep 17 00:00:00 2001
From: ruru <142723369+ruru-m07@users.noreply.github.com>
Date: Tue, 24 Sep 2024 18:39:44 +0530
Subject: [PATCH 3/4] chore(sitemap): update sitemap config and sitemap.xml
---
apps/www/next-sitemap.config.js | 16 --------
apps/www/public/robots.txt | 3 ++
apps/www/public/sitemap-0.xml | 67 +++++++++++++++++----------------
3 files changed, 37 insertions(+), 49 deletions(-)
diff --git a/apps/www/next-sitemap.config.js b/apps/www/next-sitemap.config.js
index 150c9f6..88dd169 100644
--- a/apps/www/next-sitemap.config.js
+++ b/apps/www/next-sitemap.config.js
@@ -1,30 +1,14 @@
-const { execSync } = require("child_process");
-
/** @type {import('next-sitemap').IConfig} */
module.exports = {
siteUrl: process.env.SITE_URL || "https://ruru-ui.vercel.app",
generateRobotsTxt: true,
exclude: ["/api/*"],
transform: async (config, path) => {
- const lastmod = await getLastModifiedDate(path);
return {
loc: path,
changefreq: config.changefreq,
priority: config.priority,
- lastmod,
alternateRefs: config.alternateRefs ?? [],
};
},
};
-
-async function getLastModifiedDate(path) {
- try {
- const timestamp = execSync(`git log -1 --format=%ct ${path}`)
- .toString()
- .trim();
- return new Date(parseInt(timestamp, 10) * 1000).toISOString();
- } catch (error) {
- console.error(`Error getting last modified date for ${path}:`, error);
- return new Date().toISOString(); // Fallback to current date
- }
-}
diff --git a/apps/www/public/robots.txt b/apps/www/public/robots.txt
index a4690f9..685b79c 100644
--- a/apps/www/public/robots.txt
+++ b/apps/www/public/robots.txt
@@ -2,5 +2,8 @@
User-agent: *
Allow: /
+# Host
+Host: https://ruru-ui.vercel.app
+
# Sitemaps
Sitemap: https://ruru-ui.vercel.app/sitemap.xml
diff --git a/apps/www/public/sitemap-0.xml b/apps/www/public/sitemap-0.xml
index fada55a..6ccf3fb 100644
--- a/apps/www/public/sitemap-0.xml
+++ b/apps/www/public/sitemap-0.xml
@@ -1,36 +1,37 @@
-https://ruru-ui.vercel.app/color2024-09-19T13:01:48.136Zdaily0.7
-https://ruru-ui.vercel.app/playground2024-09-19T13:01:48.366Zdaily0.7
-https://ruru-ui.vercel.app/blocks/login-12024-09-19T13:01:48.627Zdaily0.7
-https://ruru-ui.vercel.app/blocks/register-12024-09-19T13:01:49.034Zdaily0.7
-https://ruru-ui.vercel.app/blocks/forgot-12024-09-19T13:01:49.467Zdaily0.7
-https://ruru-ui.vercel.app/theme__2024-09-19T13:01:49.716Zdaily0.7
-https://ruru-ui.vercel.app/sponsors2024-09-19T13:01:50.000Zdaily0.7
-https://ruru-ui.vercel.app2024-09-19T13:01:50.303Zdaily0.7
-https://ruru-ui.vercel.app/docs/animation2024-09-19T13:01:50.579Zdaily0.7
-https://ruru-ui.vercel.app/docs/block2024-09-19T13:01:50.826Zdaily0.7
-https://ruru-ui.vercel.app/docs/cli2024-09-19T13:01:51.081Zdaily0.7
-https://ruru-ui.vercel.app/docs/dark-mode2024-09-19T13:01:51.334Zdaily0.7
-https://ruru-ui.vercel.app/docs/hooks2024-09-19T13:01:51.578Zdaily0.7
-https://ruru-ui.vercel.app/docs2024-09-19T13:01:51.780Zdaily0.7
-https://ruru-ui.vercel.app/docs/installation2024-09-19T13:01:52.025Zdaily0.7
-https://ruru-ui.vercel.app/docs/provider2024-09-19T13:01:52.231Zdaily0.7
-https://ruru-ui.vercel.app/docs/ruru-json2024-09-19T13:01:52.420Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/avatar2024-09-19T13:01:52.683Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/badge2024-09-19T13:01:52.876Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/button2024-09-19T13:01:53.131Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/checkbox2024-09-19T13:01:53.356Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/form2024-09-19T13:01:53.544Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/input2024-09-19T13:01:53.758Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/label2024-09-19T13:01:53.997Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/modal2024-09-19T13:01:54.221Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/select2024-09-19T13:01:54.408Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/spinner2024-09-19T13:01:54.635Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/switch2024-09-19T13:01:54.854Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/tabs2024-09-19T13:01:55.093Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/textarea2024-09-19T13:01:55.282Zdaily0.7
-https://ruru-ui.vercel.app/docs/components/tooltip2024-09-19T13:01:55.480Zdaily0.7
-https://ruru-ui.vercel.app/blocks2024-09-19T13:01:55.645Zdaily0.7
-https://ruru-ui.vercel.app/theme2024-09-19T13:01:55.883Zdaily0.7
+https://ruru-ui.vercel.app/theme__daily0.7
+https://ruru-ui.vercel.app/colordaily0.7
+https://ruru-ui.vercel.app/blocks/login-1daily0.7
+https://ruru-ui.vercel.app/blocks/register-1daily0.7
+https://ruru-ui.vercel.app/blocks/forgot-1daily0.7
+https://ruru-ui.vercel.appdaily0.7
+https://ruru-ui.vercel.app/playgrounddaily0.7
+https://ruru-ui.vercel.app/docs/animationdaily0.7
+https://ruru-ui.vercel.app/docs/blockdaily0.7
+https://ruru-ui.vercel.app/docs/clidaily0.7
+https://ruru-ui.vercel.app/docs/dark-modedaily0.7
+https://ruru-ui.vercel.app/docs/hooksdaily0.7
+https://ruru-ui.vercel.app/docsdaily0.7
+https://ruru-ui.vercel.app/docs/installationdaily0.7
+https://ruru-ui.vercel.app/docs/providerdaily0.7
+https://ruru-ui.vercel.app/docs/ruru-jsondaily0.7
+https://ruru-ui.vercel.app/docs/components/avatardaily0.7
+https://ruru-ui.vercel.app/docs/components/badgedaily0.7
+https://ruru-ui.vercel.app/docs/components/buttondaily0.7
+https://ruru-ui.vercel.app/docs/components/checkboxdaily0.7
+https://ruru-ui.vercel.app/docs/components/dropzonedaily0.7
+https://ruru-ui.vercel.app/docs/components/formdaily0.7
+https://ruru-ui.vercel.app/docs/components/inputdaily0.7
+https://ruru-ui.vercel.app/docs/components/labeldaily0.7
+https://ruru-ui.vercel.app/docs/components/modaldaily0.7
+https://ruru-ui.vercel.app/docs/components/selectdaily0.7
+https://ruru-ui.vercel.app/docs/components/spinnerdaily0.7
+https://ruru-ui.vercel.app/docs/components/switchdaily0.7
+https://ruru-ui.vercel.app/docs/components/tabsdaily0.7
+https://ruru-ui.vercel.app/docs/components/textareadaily0.7
+https://ruru-ui.vercel.app/docs/components/tooltipdaily0.7
+https://ruru-ui.vercel.app/sponsorsdaily0.7
+https://ruru-ui.vercel.app/themedaily0.7
+https://ruru-ui.vercel.app/blocksdaily0.7
\ No newline at end of file
From 4e79a6e4d27901524444c11b533269bcca7587d9 Mon Sep 17 00:00:00 2001
From: ruru <142723369+ruru-m07@users.noreply.github.com>
Date: Tue, 24 Sep 2024 19:24:51 +0530
Subject: [PATCH 4/4] chore(release): bump version to v2.2.1
---
packages/ui/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 779d562..5c13b0c 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -1,6 +1,6 @@
{
"name": "ruru-ui",
- "version": "2.2.0",
+ "version": "2.2.1",
"description": "Ruru UI Components",
"publishConfig": {
"access": "public"