From c6c1491344a8ec8e3b2f722b097ea8fe0a7a667b Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:09:59 +0200 Subject: [PATCH 01/15] chore(lazy-motion): init repo, install deps --- .../components/lazy-motion/.gitignore | 42 +++++++++++++++ src/packages/components/lazy-motion/bun.lockb | Bin 0 -> 41670 bytes .../components/lazy-motion/package.json | 48 ++++++++++++++++++ .../components/lazy-motion/tsconfig.json | 4 ++ 4 files changed, 94 insertions(+) create mode 100644 src/packages/components/lazy-motion/.gitignore create mode 100755 src/packages/components/lazy-motion/bun.lockb create mode 100644 src/packages/components/lazy-motion/package.json create mode 100644 src/packages/components/lazy-motion/tsconfig.json diff --git a/src/packages/components/lazy-motion/.gitignore b/src/packages/components/lazy-motion/.gitignore new file mode 100644 index 0000000..73ac1e6 --- /dev/null +++ b/src/packages/components/lazy-motion/.gitignore @@ -0,0 +1,42 @@ + +# dependencies +node_modules + +# build +dist +dist-ssr +build +out +*.tsbuildinfo + +# testing & coverage +coverage +coverage-ts + +# env +.env + +# Editor directories and files +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +*.local +*.pem +.idea +.todo +.DS_Store + +# vendors +.turbo +.vercel + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* diff --git a/src/packages/components/lazy-motion/bun.lockb b/src/packages/components/lazy-motion/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..fb024d1adad546dbeafb7f5bd33ef46e5f69c014 GIT binary patch literal 41670 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 lz70JA&3|+UGNA9vkPwa=18", + "react-dom": ">=18" + }, + "private": false, + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/lovrozagar/renderui.git" + }, + "scripts": { + "build": "bunchee -m" + }, + "sideEffects": false, + "type": "module", + "types": "./dist/index.d.ts", + "version": "1.0.0" +} diff --git a/src/packages/components/lazy-motion/tsconfig.json b/src/packages/components/lazy-motion/tsconfig.json new file mode 100644 index 0000000..d2db219 --- /dev/null +++ b/src/packages/components/lazy-motion/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../../../tsconfig.json", + "include": ["src"] +} From ae2b5433b7dd322df283376ca6e7a58ef0e6f4cd Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:10:51 +0200 Subject: [PATCH 02/15] feat(lazy-motion): add dom animation provider --- .../lazy-motion-dom-animation-provider.tsx | 17 +++++++++++++++++ .../lazy-motion/src/lib/dom-animation.ts | 1 + .../src/types/lazy-motion-provider.ts | 6 ++++++ 3 files changed, 24 insertions(+) create mode 100644 src/packages/components/lazy-motion/src/components/lazy-motion-dom-animation-provider.tsx create mode 100644 src/packages/components/lazy-motion/src/lib/dom-animation.ts create mode 100644 src/packages/components/lazy-motion/src/types/lazy-motion-provider.ts diff --git a/src/packages/components/lazy-motion/src/components/lazy-motion-dom-animation-provider.tsx b/src/packages/components/lazy-motion/src/components/lazy-motion-dom-animation-provider.tsx new file mode 100644 index 0000000..80ecf82 --- /dev/null +++ b/src/packages/components/lazy-motion/src/components/lazy-motion-dom-animation-provider.tsx @@ -0,0 +1,17 @@ +import { LazyMotion } from "framer-motion" +import type { LazyMotionProviderProps } from "../types/lazy-motion-provider" + +const LazyMotionDomAnimationProvider = (props: LazyMotionProviderProps) => { + const { children, strict = true } = props + + return ( + import("../lib/dom-animation").then((res) => res.default)} + strict={strict} + > + {children} + + ) +} + +export { LazyMotionDomAnimationProvider } diff --git a/src/packages/components/lazy-motion/src/lib/dom-animation.ts b/src/packages/components/lazy-motion/src/lib/dom-animation.ts new file mode 100644 index 0000000..c25206e --- /dev/null +++ b/src/packages/components/lazy-motion/src/lib/dom-animation.ts @@ -0,0 +1 @@ +export { domAnimation as default } from 'framer-motion' diff --git a/src/packages/components/lazy-motion/src/types/lazy-motion-provider.ts b/src/packages/components/lazy-motion/src/types/lazy-motion-provider.ts new file mode 100644 index 0000000..6c9d661 --- /dev/null +++ b/src/packages/components/lazy-motion/src/types/lazy-motion-provider.ts @@ -0,0 +1,6 @@ +import type { LazyMotion } from "framer-motion" +import type { ComponentPropsWithRef } from "react" + +type LazyMotionProviderProps = Omit, "features"> + +export type { LazyMotionProviderProps } From d8da7d78a6fed3ba56a649f3e5f5401156589df6 Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:11:23 +0200 Subject: [PATCH 03/15] feat(lazy-motion): add dom max provider --- .../components/lazy-motion-dom-max-provider.tsx | 17 +++++++++++++++++ .../components/lazy-motion/src/lib/dom-max.ts | 1 + 2 files changed, 18 insertions(+) create mode 100644 src/packages/components/lazy-motion/src/components/lazy-motion-dom-max-provider.tsx create mode 100644 src/packages/components/lazy-motion/src/lib/dom-max.ts diff --git a/src/packages/components/lazy-motion/src/components/lazy-motion-dom-max-provider.tsx b/src/packages/components/lazy-motion/src/components/lazy-motion-dom-max-provider.tsx new file mode 100644 index 0000000..3eb70f5 --- /dev/null +++ b/src/packages/components/lazy-motion/src/components/lazy-motion-dom-max-provider.tsx @@ -0,0 +1,17 @@ +import { LazyMotion } from "framer-motion" +import type { LazyMotionProviderProps } from "../types/lazy-motion-provider" + +const LazyMotionDomMaxProvider = (props: LazyMotionProviderProps) => { + const { children, strict = true } = props + + return ( + import("../lib/dom-max").then((res) => res.default)} + strict={strict} + > + {children} + + ) +} + +export { LazyMotionDomMaxProvider } diff --git a/src/packages/components/lazy-motion/src/lib/dom-max.ts b/src/packages/components/lazy-motion/src/lib/dom-max.ts new file mode 100644 index 0000000..b61a58f --- /dev/null +++ b/src/packages/components/lazy-motion/src/lib/dom-max.ts @@ -0,0 +1 @@ +export { domMax as default } from "framer-motion" From 2445446c3f863ac7aae8358dc51de3b13a609e3b Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:12:03 +0200 Subject: [PATCH 04/15] feat(lazy-motion): add compound component provider --- .../src/components/lazy-motion-provider.tsx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/packages/components/lazy-motion/src/components/lazy-motion-provider.tsx diff --git a/src/packages/components/lazy-motion/src/components/lazy-motion-provider.tsx b/src/packages/components/lazy-motion/src/components/lazy-motion-provider.tsx new file mode 100644 index 0000000..4c484a9 --- /dev/null +++ b/src/packages/components/lazy-motion/src/components/lazy-motion-provider.tsx @@ -0,0 +1,15 @@ +import { LazyMotionDomAnimationProvider } from "./lazy-motion-dom-animation-provider" +import { LazyMotionDomMaxProvider } from "./lazy-motion-dom-max-provider" + +type LazyMotionProviderCompoundComponent = JSX.Element & { + DomAnimation: typeof LazyMotionDomAnimationProvider + DomMax: typeof LazyMotionDomMaxProvider +} + +/* biome-ignore lint/complexity/noUselessFragments: */ +const LazyMotionProvider = (<>) as LazyMotionProviderCompoundComponent + +LazyMotionProvider.DomAnimation = LazyMotionDomAnimationProvider +LazyMotionProvider.DomMax = LazyMotionDomMaxProvider + +export { LazyMotionProvider } From 8246d96e169b1091e76991d3d6f42acfc00f8cc1 Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:12:44 +0200 Subject: [PATCH 05/15] chore(lazy-motion): export components & types --- src/packages/components/lazy-motion/src/index.ts | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/packages/components/lazy-motion/src/index.ts diff --git a/src/packages/components/lazy-motion/src/index.ts b/src/packages/components/lazy-motion/src/index.ts new file mode 100644 index 0000000..d0a45e1 --- /dev/null +++ b/src/packages/components/lazy-motion/src/index.ts @@ -0,0 +1,4 @@ +export { LazyMotionDomAnimationProvider } from "./components/lazy-motion-dom-animation-provider" +export { LazyMotionDomMaxProvider } from "./components/lazy-motion-dom-max-provider" +export { LazyMotionProvider } from "./components/lazy-motion-provider" +export type { LazyMotionProviderProps } from "./types/lazy-motion-provider" From bd4a3cdda666fbf8b80fdb7675eec29036c249b4 Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:13:12 +0200 Subject: [PATCH 06/15] build(lazy-motion): add changelog, build & publish --- src/packages/components/lazy-motion/CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/packages/components/lazy-motion/CHANGELOG.md diff --git a/src/packages/components/lazy-motion/CHANGELOG.md b/src/packages/components/lazy-motion/CHANGELOG.md new file mode 100644 index 0000000..ce56d13 --- /dev/null +++ b/src/packages/components/lazy-motion/CHANGELOG.md @@ -0,0 +1,8 @@ +# @renderui/lazy-motion + +## 1.0.0 + +### Patch changes + +- Added abstraction providers for framer-motion dom animationa and dom max features +- Added provider compount component From 75d3ace3b71204e70efb94c8bff2c454567f6bc9 Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:27:03 +0200 Subject: [PATCH 07/15] chore(hooks): init repo, install deps --- src/packages/hooks/shared/.gitignore | 63 +++++++++-------- src/packages/hooks/shared/bun.lockb | Bin 0 -> 39154 bytes src/packages/hooks/shared/package.json | 87 ++++++++++++------------ src/packages/hooks/shared/tsconfig.json | 4 +- 4 files changed, 77 insertions(+), 77 deletions(-) create mode 100755 src/packages/hooks/shared/bun.lockb diff --git a/src/packages/hooks/shared/.gitignore b/src/packages/hooks/shared/.gitignore index 0b62d33..73ac1e6 100644 --- a/src/packages/hooks/shared/.gitignore +++ b/src/packages/hooks/shared/.gitignore @@ -1,43 +1,42 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies -/node_modules -/.pnp -.pnp.js -.yarn/install-state.gz +node_modules -# testing -/coverage +# build +dist +dist-ssr +build +out +*.tsbuildinfo -# next.js -/.next/ -/out/ +# testing & coverage +coverage +coverage-ts -# production -/build -/dist +# env +.env -# misc -.DS_Store +# Editor directories and files +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +*.local *.pem +.idea +.todo +.DS_Store -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env -.env*.local - -# turbo +# vendors .turbo - -# vercel .vercel -# typescript -*.tsbuildinfo - -# coverage-ts -coverage-ts +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* diff --git a/src/packages/hooks/shared/bun.lockb b/src/packages/hooks/shared/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..d0c8412694a51af750991ff710375c9af94b060c GIT binary patch literal 39154 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", - "react-dom": ">=18" - }, - "private": false, - "publishConfig": { - "access": "public" - }, - "repository": { - "type": "git", - "url": "https://github.com/lovrozagar/renderui" - }, - "scripts": { - "build": "bunchee -m" - }, - "type": "module", - "types": "./dist/index.d.ts", - "version": "0.1.7" + "author": { + "email": "lovro.zagar5@gmail.com", + "name": "Lovro Žagar" + }, + "devDependencies": { + "bunchee": "^5.5.1", + "react": "19.0.0-rc-a960b92c-20240819", + "react-dom": "19.0.0-rc-a960b92c-20240819", + "types-react": "^19.0.0-rc.1", + "types-react-dom": "^19.0.0-rc.1", + "typescript": "^5.5.4" + }, + "exports": { + ".": { + "import": { + "default": "./dist/index.js", + "types": "./dist/index.d.ts" + } + } + }, + "files": ["dist"], + "license": "MIT", + "main": "./dist/index.js", + "module": "./dist/index.js", + "name": "@renderui/sub-layer", + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "private": false, + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/lovrozagar/renderui.git" + }, + "scripts": { + "build": "bunchee -m" + }, + "sideEffects": false, + "type": "module", + "types": "./dist/index.d.ts", + "version": "1.0.0" } diff --git a/src/packages/hooks/shared/tsconfig.json b/src/packages/hooks/shared/tsconfig.json index 9bcd127..d2db219 100644 --- a/src/packages/hooks/shared/tsconfig.json +++ b/src/packages/hooks/shared/tsconfig.json @@ -1,4 +1,4 @@ { - "extends": "../../../../tsconfig.json", - "include": ["src", "index.ts"] + "extends": "../../../../tsconfig.json", + "include": ["src"] } From 60e1d8d76600299dd23be4f08798b764feaece96 Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:27:27 +0200 Subject: [PATCH 08/15] feat(hooks): add use fresh ref hook --- .../shared/src/use-fresh-ref/use-fresh-ref.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/packages/hooks/shared/src/use-fresh-ref/use-fresh-ref.ts diff --git a/src/packages/hooks/shared/src/use-fresh-ref/use-fresh-ref.ts b/src/packages/hooks/shared/src/use-fresh-ref/use-fresh-ref.ts new file mode 100644 index 0000000..5566d78 --- /dev/null +++ b/src/packages/hooks/shared/src/use-fresh-ref/use-fresh-ref.ts @@ -0,0 +1,17 @@ +"use client" + +import { useEffect, useRef } from "react" + +function useFreshRef(value: T) { + const ref = useRef(value) + + useEffect(() => { + ref.current = value + }, [value]) + + return ref +} + +type UseFreshRefReturn = ReturnType + +export { useFreshRef, type UseFreshRefReturn } From 2354eb4fb300366870e71cbf9448850e856508aa Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:35:17 +0200 Subject: [PATCH 09/15] feat(hooks): add use mutation observer hook --- .../use-mutation-observer.ts | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/packages/hooks/shared/src/use-mutation-observer/use-mutation-observer.ts diff --git a/src/packages/hooks/shared/src/use-mutation-observer/use-mutation-observer.ts b/src/packages/hooks/shared/src/use-mutation-observer/use-mutation-observer.ts new file mode 100644 index 0000000..5f9eff6 --- /dev/null +++ b/src/packages/hooks/shared/src/use-mutation-observer/use-mutation-observer.ts @@ -0,0 +1,43 @@ +"use client" + +import { useEffect, useRef } from "react" +import { useFreshRef } from "../use-fresh-ref/use-fresh-ref" + +type UseMutationObserverProps = { + node: T | null + callback: MutationCallback + options: MutationObserverInit + enabled?: boolean +} + +function useMutationObserver(props: UseMutationObserverProps) { + const { node, callback, options, enabled } = props + + const freshCallback = useFreshRef(callback) + const freshOptions = useFreshRef(options) + const observerRef = useRef(null) + + /* biome-ignore lint/correctness/useExhaustiveDependencies: using fresh ref pattern, ref dep not needed */ + useEffect(() => { + if (!node || !enabled) { + if (!observerRef.current) return + + observerRef.current.disconnect() + + return + } + + if (observerRef.current) return + + observerRef.current = new MutationObserver(freshCallback.current) + observerRef.current.observe(node, freshOptions.current) + + return () => { + if (observerRef.current) { + observerRef.current.disconnect() + } + } + }, [node, enabled]) +} + +export { useMutationObserver, type UseMutationObserverProps } From f8a8834544e8f49eead390b0f40475fbfe15e50c Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:35:44 +0200 Subject: [PATCH 10/15] chore(hooks): add index.ts, export hooks & types --- src/packages/hooks/shared/src/index.ts | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/packages/hooks/shared/src/index.ts diff --git a/src/packages/hooks/shared/src/index.ts b/src/packages/hooks/shared/src/index.ts new file mode 100644 index 0000000..d57dbd0 --- /dev/null +++ b/src/packages/hooks/shared/src/index.ts @@ -0,0 +1,5 @@ +export { useFreshRef, type UseFreshRefReturn } from "./use-fresh-ref/use-fresh-ref" +export { + useMutationObserver, + type UseMutationObserverProps, +} from "./use-mutation-observer/use-mutation-observer" From 0374655960b85f766544a72e4f8503dfe1c49a8c Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:38:23 +0200 Subject: [PATCH 11/15] build(hooks): update changelog, build and publish package --- src/packages/hooks/shared/CHANGELOG.md | 6 +++--- src/packages/hooks/shared/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/packages/hooks/shared/CHANGELOG.md b/src/packages/hooks/shared/CHANGELOG.md index 6137aac..44de6a9 100644 --- a/src/packages/hooks/shared/CHANGELOG.md +++ b/src/packages/hooks/shared/CHANGELOG.md @@ -1,7 +1,7 @@ -# @renderui/utils +# @renderui/hooks -## 0.2.4 +## 0.1.8 ### Patch changes -- Refactor and export shared utility functions +- Added useFreshRef and useMutationObserverHooks, refactor from @renderui/core diff --git a/src/packages/hooks/shared/package.json b/src/packages/hooks/shared/package.json index 6d7cccc..ab41f7b 100644 --- a/src/packages/hooks/shared/package.json +++ b/src/packages/hooks/shared/package.json @@ -23,7 +23,7 @@ "license": "MIT", "main": "./dist/index.js", "module": "./dist/index.js", - "name": "@renderui/sub-layer", + "name": "@renderui/hooks", "peerDependencies": { "react": ">=18", "react-dom": ">=18" From 7e769551964f1aa81244006c8e1e52505c0cde07 Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:56:21 +0200 Subject: [PATCH 12/15] chore(ripple): init repo, install deps --- src/packages/components/ripple/.gitignore | 42 +++++++++++++++++++ src/packages/components/ripple/bun.lockb | Bin 0 -> 43141 bytes src/packages/components/ripple/package.json | 39 +++++++++++++++++ src/packages/components/ripple/tsconfig.json | 4 ++ 4 files changed, 85 insertions(+) create mode 100644 src/packages/components/ripple/.gitignore create mode 100755 src/packages/components/ripple/bun.lockb create mode 100644 src/packages/components/ripple/package.json create mode 100644 src/packages/components/ripple/tsconfig.json diff --git a/src/packages/components/ripple/.gitignore b/src/packages/components/ripple/.gitignore new file mode 100644 index 0000000..73ac1e6 --- /dev/null +++ b/src/packages/components/ripple/.gitignore @@ -0,0 +1,42 @@ + +# dependencies +node_modules + +# build +dist +dist-ssr +build +out +*.tsbuildinfo + +# testing & coverage +coverage +coverage-ts + +# env +.env + +# Editor directories and files +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +*.local +*.pem +.idea +.todo +.DS_Store + +# vendors +.turbo +.vercel + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* diff --git a/src/packages/components/ripple/bun.lockb b/src/packages/components/ripple/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..7ddc47e6340806b00c1f32d5b3366861455f3134 GIT binary patch literal 43141 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.0.0", + "@renderui/sub-layer": ">=1.0.0", + "@renderui/utils": ">=0.2.6", + "@renderui/hooks": ">=1.0.0", + "bunchee": "^5.5.1", + "framer-motion": "^11.11.10", + "react": "19.0.0-rc-a960b92c-20240819", + "react-dom": "19.0.0-rc-a960b92c-20240819", + "types-react": "^19.0.0-rc.1", + "types-react-dom": "^19.0.0-rc.1", + "typescript": "^5.5.4" + }, + "license": "MIT", + "name": "@renderui/ripple", + "peerDependencies": { + "@renderui/lazy-motion": ">=1.0.0", + "@renderui/sub-layer": ">=1.0.0", + "@renderui/hooks": ">=1.0.0", + "@renderui/utils": ">=0.2.6", + "framer-motion": "^11.11.10", + "react": ">=18", + "react-dom": ">=18" + }, + "private": false, + "repository": { + "type": "git", + "url": "https://github.com/lovrozagar/renderui" + }, + "scripts": { + "build": "bunchee -m" + }, + "version": "0.0.1" +} \ No newline at end of file diff --git a/src/packages/components/ripple/tsconfig.json b/src/packages/components/ripple/tsconfig.json new file mode 100644 index 0000000..d2db219 --- /dev/null +++ b/src/packages/components/ripple/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../../../tsconfig.json", + "include": ["src"] +} From e6ab2864efd2bdc36fb36e9baec67f5796bdc91c Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:57:23 +0200 Subject: [PATCH 13/15] feat(ripple): add component --- .../ripple/src/components/ripple.tsx | 29 +++++ .../ripple/src/constants/constants.ts | 49 ++++++++ .../ripple/src/hooks/use-keyboard-ripple.ts | 51 ++++++++ .../ripple/src/hooks/use-press-ripple.ts | 45 +++++++ .../components/ripple/src/hooks/use-ripple.ts | 115 ++++++++++++++++++ .../ripple/src/types/ripple-ripple.ts | 10 ++ .../components/ripple/src/types/ripple.ts | 18 +++ .../ripple/src/utils/create-ripple.ts | 49 ++++++++ .../ripple/src/utils/get-ripple-duration.ts | 21 ++++ 9 files changed, 387 insertions(+) create mode 100644 src/packages/components/ripple/src/components/ripple.tsx create mode 100644 src/packages/components/ripple/src/constants/constants.ts create mode 100644 src/packages/components/ripple/src/hooks/use-keyboard-ripple.ts create mode 100644 src/packages/components/ripple/src/hooks/use-press-ripple.ts create mode 100644 src/packages/components/ripple/src/hooks/use-ripple.ts create mode 100644 src/packages/components/ripple/src/types/ripple-ripple.ts create mode 100644 src/packages/components/ripple/src/types/ripple.ts create mode 100644 src/packages/components/ripple/src/utils/create-ripple.ts create mode 100644 src/packages/components/ripple/src/utils/get-ripple-duration.ts diff --git a/src/packages/components/ripple/src/components/ripple.tsx b/src/packages/components/ripple/src/components/ripple.tsx new file mode 100644 index 0000000..35ba765 --- /dev/null +++ b/src/packages/components/ripple/src/components/ripple.tsx @@ -0,0 +1,29 @@ +"use client" + +import { LazyMotionDomAnimationProvider } from "@renderui/lazy-motion" +import { SubLayer } from "@renderui/sub-layer" +import { getOptionalObject } from "@renderui/utils" +import { AnimatePresence, m } from "framer-motion" +import { useRipple } from "../hooks/use-ripple" +import type { RippleProps } from "../types/ripple" + +const Ripple = (props: RippleProps) => { + const { subLayerProps, ...otherProps } = getOptionalObject(props) + + const { ripples, internalSubLayerRef, addRippleOnPress, getRippleRipplesProps } = + useRipple(otherProps) + + return ( + + {ripples.map((ripple) => ( + + + + + + ))} + + ) +} + +export { Ripple } diff --git a/src/packages/components/ripple/src/constants/constants.ts b/src/packages/components/ripple/src/constants/constants.ts new file mode 100644 index 0000000..fc378a6 --- /dev/null +++ b/src/packages/components/ripple/src/constants/constants.ts @@ -0,0 +1,49 @@ +const DEFAULT_RIPPLE_CLASSNAME = "_ripple bg-current" + +const RIPPLE_ANIMATION_END_OPACITY = 0 +const RIPPLE_ANIMATION_START_SCALE = 0 +const RIPPLE_ANIMATION_END_DEFAULT_SCALE = 2 + +const RIPPLE_DEFAULT_OPACITY = 0.25 +const RIPPLE_DEFAULT_DURATION_MULTIPLIER = 1 +const RIPPLE_DEFAULT_SCALE_MULTIPLIER = 1 + +const RIPPLE_BASE_MULTIPLIER = 0.01 +const RIPPLE_MIDDLE_DURATION = 0.25 +const RIPPLE_SIZE_100 = 100 +const RIPPLE_OVER_100_DURATION = 0.75 +const RIPPLE_UNDER_100_DURATION = 0.675 + +const RIPPLE_RIPPLE_BASE_STYLE = { + backgroundColor: "current", + position: "absolute", + borderRadius: "100%", + transformOrigin: "center", + pointerEvents: "none", + zIndex: "0", +} as const + +const KEYBOARD_RIPPLE_DATASET_ATTRIBUTE = "data-keyboard-pressed" + +const KEYBOARD_RIPPLE_MUTATION_OBSERVER_OPTIONS = { + attributes: true, + attributeFilter: [KEYBOARD_RIPPLE_DATASET_ATTRIBUTE], +} + +export { + DEFAULT_RIPPLE_CLASSNAME, + KEYBOARD_RIPPLE_MUTATION_OBSERVER_OPTIONS, + RIPPLE_ANIMATION_END_DEFAULT_SCALE, + RIPPLE_ANIMATION_END_OPACITY, + RIPPLE_ANIMATION_START_SCALE, + RIPPLE_BASE_MULTIPLIER, + RIPPLE_DEFAULT_DURATION_MULTIPLIER, + RIPPLE_DEFAULT_OPACITY, + RIPPLE_DEFAULT_SCALE_MULTIPLIER, + RIPPLE_MIDDLE_DURATION, + RIPPLE_OVER_100_DURATION, + RIPPLE_RIPPLE_BASE_STYLE, + RIPPLE_SIZE_100, + RIPPLE_UNDER_100_DURATION, + KEYBOARD_RIPPLE_DATASET_ATTRIBUTE, +} diff --git a/src/packages/components/ripple/src/hooks/use-keyboard-ripple.ts b/src/packages/components/ripple/src/hooks/use-keyboard-ripple.ts new file mode 100644 index 0000000..29fddaa --- /dev/null +++ b/src/packages/components/ripple/src/hooks/use-keyboard-ripple.ts @@ -0,0 +1,51 @@ +import { useMutationObserver } from "@renderui/hooks" +import { type Dispatch, type RefObject, type SetStateAction, useCallback } from "react" +import { KEYBOARD_RIPPLE_DATASET_ATTRIBUTE, KEYBOARD_RIPPLE_MUTATION_OBSERVER_OPTIONS } from "../constants/constants" +import type { RippleRipple } from "../types/ripple-ripple" +import { createRipple } from "../utils/create-ripple" + +function useKeyboardRipple( + ref: RefObject, + setRipples: Dispatch>, +) { + const addRippleOnKeyboardPress = useCallback( + (height: number, width: number) => { + const newRipple = createRipple({ type: "keyboard", width, height }) + + setRipples((previousRipples) => [...previousRipples, newRipple]) + + return newRipple.key + }, + [setRipples], + ) + + const mutationHandler = useCallback( + (mutations: MutationRecord[]) => { + const element = ref.current?.parentElement + const parentElement = element + + if (!parentElement) return + + mutations.forEach((mutation) => { + if (mutation.attributeName !== KEYBOARD_RIPPLE_DATASET_ATTRIBUTE) return + + const parentDatasetState = parentElement.dataset.pressed + + if (parentDatasetState === "true") return + + addRippleOnKeyboardPress(element.clientHeight, element.clientWidth) + }) + }, + [ref, addRippleOnKeyboardPress], + ) + + const parentRef = ref.current?.parentElement ?? null + + useMutationObserver({ + node: parentRef, + options: KEYBOARD_RIPPLE_MUTATION_OBSERVER_OPTIONS, + callback: mutationHandler, + }) +} + +export { useKeyboardRipple } diff --git a/src/packages/components/ripple/src/hooks/use-press-ripple.ts b/src/packages/components/ripple/src/hooks/use-press-ripple.ts new file mode 100644 index 0000000..f34b1a4 --- /dev/null +++ b/src/packages/components/ripple/src/hooks/use-press-ripple.ts @@ -0,0 +1,45 @@ +import { + type Dispatch, + type MouseEvent, + type MouseEventHandler, + type SetStateAction, + useCallback, + useEffect, + useState, +} from "react" +import type { RippleRipple } from "../types/ripple-ripple" +import { createRipple } from "../utils/create-ripple" + +function usePressRipple( + setRipples: Dispatch>, + isDisabled: boolean | undefined = undefined, +) { + const [isRaised, setIsRaised] = useState(false) + + useEffect(() => { + let timeoutId: NodeJS.Timeout | undefined = undefined + + if (isDisabled) { + timeoutId = setTimeout(() => setIsRaised(true), 0) + } else { + setIsRaised(false) + } + + return () => clearTimeout(timeoutId) + }, [isDisabled]) + + return useCallback( + (event: React.MouseEvent) => { + if (isRaised) return "" + + const newRipple = createRipple({ type: "pointer", event: event }) + + setRipples((previousRipples) => [...previousRipples, newRipple]) + + return newRipple.key + }, + [isRaised, setRipples], + ) as unknown as MouseEventHandler +} + +export { usePressRipple } diff --git a/src/packages/components/ripple/src/hooks/use-ripple.ts b/src/packages/components/ripple/src/hooks/use-ripple.ts new file mode 100644 index 0000000..e1ad074 --- /dev/null +++ b/src/packages/components/ripple/src/hooks/use-ripple.ts @@ -0,0 +1,115 @@ +"use client" + +import { cn } from "@renderui/utils" +import type { AnimationDefinition } from "framer-motion" +import { type Key, type RefObject, useRef, useState } from "react" +import { + DEFAULT_RIPPLE_CLASSNAME, + RIPPLE_ANIMATION_END_DEFAULT_SCALE, + RIPPLE_ANIMATION_END_OPACITY, + RIPPLE_ANIMATION_START_SCALE, + RIPPLE_DEFAULT_OPACITY, + RIPPLE_RIPPLE_BASE_STYLE, +} from "../constants/constants" +import type { RippleProps } from "../types/ripple" +import type { RippleRipple } from "../types/ripple-ripple" +import { getRippleDuration } from "../utils/get-ripple-duration" +import { useKeyboardRipple } from "./use-keyboard-ripple" +import { usePressRipple } from "./use-press-ripple" + +type UseRippleReturnType = { + ripples: RippleRipple[] + internalSubLayerRef: RefObject + addRippleOnPress: ReturnType + /* biome-ignore lint/suspicious/noExplicitAny: avoid external module reference error */ + getRippleRipplesProps: (ripple: RippleRipple) => any +} + +function useRipple(props: Omit): UseRippleReturnType { + const { + ref, + opacity: opacityProp, + duration: durationProp, + scale: scaleProp, + transition: transitionProp, + initial: initialProp, + animate: animateProp, + exit: exitProp, + style: styleProp, + className, + isDisabled, + onAnimationComplete: onAnimationCompleteProp, + ...restProps + } = props + + const internalSubLayerRef = useRef(null) + const [ripples, setRipples] = useState([]) + + const addRippleOnPress = usePressRipple(setRipples, isDisabled) + + useKeyboardRipple(internalSubLayerRef, setRipples) + + const clearRipple = (key: Key) => { + setRipples((previousState) => previousState.filter((ripple) => ripple.key !== key)) + } + + const onAnimationComplete = (ripple: RippleRipple, definition: AnimationDefinition) => { + clearRipple(ripple.key) + + if (onAnimationCompleteProp) { + onAnimationCompleteProp(definition) + } + } + + const getRippleRipplesProps = (ripple: RippleRipple) => { + const duration = durationProp ?? getRippleDuration(ripple.size) + + const scale = scaleProp ?? RIPPLE_ANIMATION_END_DEFAULT_SCALE + + const initial = initialProp ?? { + transform: `scale(${RIPPLE_ANIMATION_START_SCALE})`, + opacity: opacityProp ?? RIPPLE_DEFAULT_OPACITY, + } + + const animate = animateProp ?? { + transform: `scale(${scale})`, + opacity: RIPPLE_ANIMATION_END_OPACITY, + } + + const exit = exitProp ?? { opacity: RIPPLE_ANIMATION_END_OPACITY } + + const transition = { duration, ...transitionProp } + + const style = { + ...RIPPLE_RIPPLE_BASE_STYLE, + top: ripple.y, + left: ripple.x, + width: `${ripple.size}px`, + height: `${ripple.size}px`, + ...styleProp, + } + + return { + ref, + initial, + animate, + exit, + transition, + style, + "data-slot": "ripple", + className: cn(DEFAULT_RIPPLE_CLASSNAME, className), + onAnimationComplete: (definition: AnimationDefinition) => + onAnimationComplete(ripple, definition), + ...restProps, + } + } + + return { + ripples, + internalSubLayerRef, + addRippleOnPress, + getRippleRipplesProps, + } +} + +export { useRipple } diff --git a/src/packages/components/ripple/src/types/ripple-ripple.ts b/src/packages/components/ripple/src/types/ripple-ripple.ts new file mode 100644 index 0000000..496491b --- /dev/null +++ b/src/packages/components/ripple/src/types/ripple-ripple.ts @@ -0,0 +1,10 @@ +import type { Key } from "react" + +type RippleRipple = { + key: Key + x: number + y: number + size: number +} + +export type { RippleRipple } diff --git a/src/packages/components/ripple/src/types/ripple.ts b/src/packages/components/ripple/src/types/ripple.ts new file mode 100644 index 0000000..eafd4be --- /dev/null +++ b/src/packages/components/ripple/src/types/ripple.ts @@ -0,0 +1,18 @@ +import type { SubLayerProps } from "@renderui/sub-layer" +import type { Simplify } from "@renderui/utils" +import type { m } from "framer-motion" +import type { ComponentPropsWithRef } from "react" + +type RipplePrimitiveProps = ComponentPropsWithRef + +type RippleCustomProps = { + isDisabled?: boolean + opacity?: number + duration?: number + scale?: number + subLayerProps?: SubLayerProps +} + +type RippleProps = Simplify + +export type { RippleProps } diff --git a/src/packages/components/ripple/src/utils/create-ripple.ts b/src/packages/components/ripple/src/utils/create-ripple.ts new file mode 100644 index 0000000..b346648 --- /dev/null +++ b/src/packages/components/ripple/src/utils/create-ripple.ts @@ -0,0 +1,49 @@ +import type { MouseEvent } from "react" + +type CreateRipplePointerProps = { + type: "pointer" + event: React.MouseEvent +} + +type CreateRippleKeyboardProps = { + type: "keyboard" + width: number + height: number +} + +type CreateRippleProps = CreateRipplePointerProps | CreateRippleKeyboardProps + +function createRipple(props: CreateRippleProps) { + const { type } = props + + const rippleKey = crypto.randomUUID() + + const size = + type === "keyboard" + ? Math.max(props.width, props.height) + : Math.max(props.event.clientX, props.event.clientY) + + const rect = + type === "keyboard" ? { x: 0, y: 0 } : props.event.currentTarget.getBoundingClientRect() + + const coordinates = + type === "keyboard" + ? { + /* center keyboard ripple in middle of element */ + x: 0, + y: -props.width / 2 + props.height / 2, + } + : { + /* origin point is the exact pointer click coordinate */ + x: props.event.clientX - rect.x - size / 2, + y: props.event.clientY - rect.y - size / 2, + } + + return { + key: rippleKey, + size, + ...coordinates, + } +} + +export { createRipple } diff --git a/src/packages/components/ripple/src/utils/get-ripple-duration.ts b/src/packages/components/ripple/src/utils/get-ripple-duration.ts new file mode 100644 index 0000000..ad33e22 --- /dev/null +++ b/src/packages/components/ripple/src/utils/get-ripple-duration.ts @@ -0,0 +1,21 @@ +import { + RIPPLE_BASE_MULTIPLIER, + RIPPLE_MIDDLE_DURATION, + RIPPLE_OVER_100_DURATION, + RIPPLE_SIZE_100, + RIPPLE_UNDER_100_DURATION, +} from "../constants/constants" + +function clamp(value: number, min: number, max: number) { + return Math.min(Math.max(value, min), max) +} + +function getRippleDuration(rippleSize: number) { + return clamp( + RIPPLE_BASE_MULTIPLIER * rippleSize, + RIPPLE_MIDDLE_DURATION, + rippleSize > RIPPLE_SIZE_100 ? RIPPLE_OVER_100_DURATION : RIPPLE_UNDER_100_DURATION, + ) +} + +export { getRippleDuration } From a9ab6676a6653cda5a46ff4215257611f36ee531 Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:58:20 +0200 Subject: [PATCH 14/15] chore(ripple): export component & types --- src/packages/components/ripple/src/index.ts | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/packages/components/ripple/src/index.ts diff --git a/src/packages/components/ripple/src/index.ts b/src/packages/components/ripple/src/index.ts new file mode 100644 index 0000000..188b117 --- /dev/null +++ b/src/packages/components/ripple/src/index.ts @@ -0,0 +1,3 @@ +export { Ripple } from "./components/ripple"; +export type { RippleProps } from "./types/ripple"; + From 3a02043e831f2ceeca37f862be8b4e0b49fe832f Mon Sep 17 00:00:00 2001 From: lovrozagar Date: Sat, 26 Oct 2024 19:59:01 +0200 Subject: [PATCH 15/15] build(ripple): add changelog, build & publish package --- src/packages/components/ripple/CHANGELOG.md | 7 ++ src/packages/components/ripple/package.json | 73 +++++++++++++-------- 2 files changed, 52 insertions(+), 28 deletions(-) create mode 100644 src/packages/components/ripple/CHANGELOG.md diff --git a/src/packages/components/ripple/CHANGELOG.md b/src/packages/components/ripple/CHANGELOG.md new file mode 100644 index 0000000..f1d6077 --- /dev/null +++ b/src/packages/components/ripple/CHANGELOG.md @@ -0,0 +1,7 @@ +# @renderui/ripple + +## 1.0.0 + +### Patch changes + +- Added ripple component diff --git a/src/packages/components/ripple/package.json b/src/packages/components/ripple/package.json index a97ab05..bc74cf0 100644 --- a/src/packages/components/ripple/package.json +++ b/src/packages/components/ripple/package.json @@ -1,39 +1,56 @@ { - "author": { - "email": "lovro.zagar5@gmail.com", - "name": "Lovro Žagar" - }, - "devDependencies": { + "author": { + "email": "lovro.zagar5@gmail.com", + "name": "Lovro Žagar" + }, + "devDependencies": { "@renderui/lazy-motion": ">=1.0.0", "@renderui/sub-layer": ">=1.0.0", "@renderui/utils": ">=0.2.6", "@renderui/hooks": ">=1.0.0", "bunchee": "^5.5.1", "framer-motion": "^11.11.10", - "react": "19.0.0-rc-a960b92c-20240819", - "react-dom": "19.0.0-rc-a960b92c-20240819", - "types-react": "^19.0.0-rc.1", - "types-react-dom": "^19.0.0-rc.1", - "typescript": "^5.5.4" - }, - "license": "MIT", - "name": "@renderui/ripple", - "peerDependencies": { + "react": "19.0.0-rc-a960b92c-20240819", + "react-dom": "19.0.0-rc-a960b92c-20240819", + "types-react": "^19.0.0-rc.1", + "types-react-dom": "^19.0.0-rc.1", + "typescript": "^5.5.4" + }, + "exports": { + ".": { + "import": { + "default": "./dist/index.js", + "types": "./dist/index.d.ts" + } + } + }, + "files": ["dist"], + "license": "MIT", + "main": "./dist/index.js", + "module": "./dist/index.js", + "name": "@renderui/ripple", + "peerDependencies": { "@renderui/lazy-motion": ">=1.0.0", "@renderui/sub-layer": ">=1.0.0", - "@renderui/hooks": ">=1.0.0", "@renderui/utils": ">=0.2.6", + "@renderui/hooks": ">=1.0.0", "framer-motion": "^11.11.10", - "react": ">=18", - "react-dom": ">=18" - }, - "private": false, - "repository": { - "type": "git", - "url": "https://github.com/lovrozagar/renderui" - }, - "scripts": { - "build": "bunchee -m" - }, - "version": "0.0.1" -} \ No newline at end of file + "react": ">=18", + "react-dom": ">=18" + }, + "private": false, + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/lovrozagar/renderui.git" + }, + "scripts": { + "build": "bunchee -m" + }, + "sideEffects": false, + "type": "module", + "types": "./dist/index.d.ts", + "version": "1.0.0" +}