From bc8656d659ff0e1a29796d8c6ef779354d6ff997 Mon Sep 17 00:00:00 2001 From: WK Wong Date: Tue, 27 Jan 2026 17:34:40 +0800 Subject: [PATCH 1/3] chore(deps): remove flat library --- packages/core/theme/package.json | 1 - pnpm-lock.yaml | 3 --- 2 files changed, 4 deletions(-) diff --git a/packages/core/theme/package.json b/packages/core/theme/package.json index 897732e55a..5276477e06 100644 --- a/packages/core/theme/package.json +++ b/packages/core/theme/package.json @@ -49,7 +49,6 @@ "color": "^4.2.3", "color2k": "^2.0.3", "deepmerge": "4.3.1", - "flat": "^5.0.2", "tailwind-variants": "3.2.2", "tailwind-merge": "3.4.0", "@heroui/shared-utils": "workspace:*" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ffdbaf7b8c..03cd61b9ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3228,9 +3228,6 @@ importers: deepmerge: specifier: 4.3.1 version: 4.3.1 - flat: - specifier: ^5.0.2 - version: 5.0.2 tailwind-merge: specifier: 3.4.0 version: 3.4.0 From 5b80cf67272eaa3daf1c2734aa964041b60f2b1b Mon Sep 17 00:00:00 2001 From: WK Wong Date: Tue, 27 Jan 2026 17:35:06 +0800 Subject: [PATCH 2/3] refactor(theme): replace flatten from flat --- packages/core/theme/src/utils/object.ts | 53 ++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/packages/core/theme/src/utils/object.ts b/packages/core/theme/src/utils/object.ts index c320764cd0..60f8911bd3 100644 --- a/packages/core/theme/src/utils/object.ts +++ b/packages/core/theme/src/utils/object.ts @@ -1,5 +1,3 @@ -import flatten from "flat"; - export function swapColorValues(colors: T) { const swappedColors = {}; const keys = Object.keys(colors); @@ -40,6 +38,57 @@ export function removeDefaultKeys(obj: T) { return newObj; } +function isBuffer(obj) { + return ( + obj && + obj.constructor && + typeof obj.constructor.isBuffer === "function" && + obj.constructor.isBuffer(obj) + ); +} + +function keyIdentity(key) { + return key; +} + +export function flatten(target, opts) { + opts = opts || {}; + + const delimiter = opts.delimiter || "."; + const maxDepth = opts.maxDepth; + const transformKey = opts.transformKey || keyIdentity; + const output = {}; + + function step(object, prev, currentDepth) { + currentDepth = currentDepth || 1; + Object.keys(object).forEach(function (key) { + const value = object[key]; + const isarray = opts.safe && Array.isArray(value); + const type = Object.prototype.toString.call(value); + const isbuffer = isBuffer(value); + const isobject = type === "[object Object]" || type === "[object Array]"; + + const newKey = prev ? prev + delimiter + transformKey(key) : transformKey(key); + + if ( + !isarray && + !isbuffer && + isobject && + Object.keys(value).length && + (!opts.maxDepth || currentDepth < maxDepth) + ) { + return step(value, newKey, currentDepth + 1); + } + + output[newKey] = value; + }); + } + + step(target, null, null); + + return output; +} + /** * * Flatten theme object and remove default keys From fa3a58aa992d79c91e13fd6bd5d5c5514c46ef47 Mon Sep 17 00:00:00 2001 From: WK Wong Date: Tue, 27 Jan 2026 17:35:37 +0800 Subject: [PATCH 3/3] chore: add changeset --- .changeset/strong-shoes-exist.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/strong-shoes-exist.md diff --git a/.changeset/strong-shoes-exist.md b/.changeset/strong-shoes-exist.md new file mode 100644 index 0000000000..10eccf1ccd --- /dev/null +++ b/.changeset/strong-shoes-exist.md @@ -0,0 +1,5 @@ +--- +"@heroui/theme": patch +--- + +remove flat dependencies (#6148)