Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
139 commits
Select commit Hold shift + click to select a range
b9a6e65
chore: πŸ€– update required packages
punkbit Jan 19, 2026
5283ab3
chore: πŸ€– provide styled components types
punkbit Jan 19, 2026
3143f07
fix: πŸ› linter should ignore d.ts files
punkbit Jan 19, 2026
6238526
fix: πŸ› use double quotes
punkbit Jan 19, 2026
4b09413
fix: πŸ› vite > v2 separates vitest config
punkbit Jan 19, 2026
3f1333b
chore: πŸ€– reorder package
punkbit Jan 19, 2026
750d3ec
chore: πŸ€– remove side property (deprecated)
punkbit Jan 19, 2026
62c10ef
fix: πŸ› dropdown amends
punkbit Jan 19, 2026
4a20902
fix: πŸ› theme prop
punkbit Jan 19, 2026
2ed9c1c
fix: πŸ› type
punkbit Jan 19, 2026
37ec2c9
chore: πŸ€– TIAS build version supported on next v16 RSC
punkbit Jan 20, 2026
f72ad14
chore: πŸ€– WIP ongoing styled-component v6.1.11 (non experimental) support
punkbit Jan 20, 2026
b6c48a4
chore: πŸ€– strict react version for dev
punkbit Jan 20, 2026
ea50f3e
fix: πŸ› missing ref on forwardRef, might have plenty of these
punkbit Jan 20, 2026
57c554d
chore: πŸ€– update lockfile
punkbit Jan 20, 2026
b22624d
chore: πŸ€– remove optional flag from ref (typo)
punkbit Jan 20, 2026
a769ad9
chore: πŸ€– add comment for future ref
punkbit Jan 20, 2026
694b240
refactor: πŸ’‘ banner
punkbit Jan 20, 2026
b373fd2
chore: πŸ€– lint amends (double quotes)
punkbit Jan 20, 2026
1ce4ff9
refactor: πŸ’‘ removes style prop as typed prop
punkbit Jan 20, 2026
f9cc7f4
chore: πŸ€– remove ajv
punkbit Jan 20, 2026
0c406c0
chore: πŸ€– format
punkbit Jan 20, 2026
c9bf9f4
test: πŸ’ add aria pressed to ButtonGroup
punkbit Jan 20, 2026
eb0d393
chore: πŸ€– format
punkbit Jan 20, 2026
8dea336
test: πŸ’ use local getByText
punkbit Jan 20, 2026
a231533
chore: πŸ€– update lockfile
punkbit Jan 21, 2026
91f4800
chore: πŸ€– add changeset
punkbit Jan 21, 2026
2206a99
chore: πŸ€– small text amend to trigger vercel deploy
punkbit Jan 21, 2026
4729912
chore: πŸ€– prevent running on CI
punkbit Jan 22, 2026
48523da
chore: πŸ€– add HUSKY to preven husky runnig pre-commit hook
punkbit Jan 22, 2026
82ff68b
Merge branch 'main' into fix/minimal-react-19-rsc-support
punkbit Jan 22, 2026
f3a0dcc
Merge branch 'chore/prevent-pre-commit-run-on-ci' into fix/minimal-re…
punkbit Jan 22, 2026
b1de479
fix: πŸ› conflict resolution
punkbit Jan 22, 2026
b23c72f
chore: πŸ€– bump rc number
punkbit Jan 22, 2026
adb82c3
docs: πŸ“ build esm, how to use
punkbit Jan 23, 2026
9e0cbc3
chore: πŸ€– ESM vite builder (wip)
punkbit Jan 23, 2026
738d97e
fix: πŸ› remove .tsx extension from import statements
punkbit Jan 23, 2026
1e99d39
fix: πŸ› remove .tsx extension from import statements
punkbit Jan 23, 2026
ed4f7b8
fix: πŸ› remove .tsx extension from import statements
punkbit Jan 23, 2026
a5e4ee9
Merge branch 'main' into fix/remove-tsx-extension-import-statements
punkbit Jan 23, 2026
ade0c8a
Merge branch 'fix/remove-tsx-extension-import-statements' into perf/d…
punkbit Jan 23, 2026
a7a4b9d
fix: πŸ› remove .ts extension from import statements
punkbit Jan 23, 2026
f8a39e8
fix: πŸ› remove .ts extension from import statements
punkbit Jan 23, 2026
3da59f1
chore: πŸ€– add eslint to assess import extensions not required
punkbit Jan 23, 2026
0b4d381
Merge branch 'chore/prevent-import-extensions' into perf/distribute-e…
punkbit Jan 23, 2026
1d0d42c
Merge branch 'fix/remove-tsx-extension-import-statements' into perf/d…
punkbit Jan 23, 2026
9df6254
chore: πŸ€– format
punkbit Jan 23, 2026
641ca6b
chore: πŸ€– temporary custom resolve tsconfig path
punkbit Jan 23, 2026
0f1082d
refactor: πŸ’‘ export from correct theme boundary
punkbit Jan 23, 2026
219b6ae
chore: πŸ€– node externals in vite, remove alias
punkbit Jan 23, 2026
ae52a23
chore: πŸ€– use relative paths
punkbit Jan 23, 2026
777ca23
chore: πŸ€– use externalize deps
punkbit Jan 23, 2026
9f48675
Merge branch 'main' into perf/distribute-esm-unbundled
punkbit Jan 23, 2026
652552b
chore: πŸ€– for ESM compatibility, tweak/handle CJS components
punkbit Jan 23, 2026
4487fcb
chore: revert ts alias rewrite to relative
punkbit Jan 23, 2026
95830e0
chore: lint do not allow barrel imports
punkbit Jan 23, 2026
b0bfea5
chore: remove excludes from tsconfig
punkbit Jan 23, 2026
e17a4ec
chore: set vite settings to preserve file struct in output
punkbit Jan 23, 2026
51a8c5b
fix: solve import cycles
punkbit Jan 23, 2026
3a50adf
fix: solve import cycles in stories
punkbit Jan 23, 2026
3c0f773
fix: build amends
punkbit Jan 23, 2026
677d314
fix: add .js extension
punkbit Jan 23, 2026
b80a63b
chore: analyze and visualise bundle
punkbit Jan 23, 2026
56099bb
chore: split ESM, CJS distribution
punkbit Jan 23, 2026
e76a47d
Merge branch 'main' into chore/distribution-unbundled
punkbit Jan 26, 2026
ac9c7c8
Merge branch 'main' into chore/distribution-unbundled
punkbit Jan 26, 2026
2f0b0f3
chore: format
punkbit Jan 26, 2026
3dd00a2
fix: πŸ› lint code block
punkbit Jan 26, 2026
a2ffec6
fix: πŸ› import Separator
punkbit Jan 26, 2026
d54269a
chore: format
punkbit Jan 26, 2026
ee433d9
fix: πŸ› import Separator
punkbit Jan 26, 2026
4edae27
chore: πŸ€– add changeset
punkbit Jan 26, 2026
8a820d8
chore: merge main
punkbit Jan 29, 2026
ecbbc8b
chore: πŸ€– use 0.0.251-rc.62
punkbit Jan 29, 2026
578471e
chore: πŸ€– resolve conflict resolution, deleted files which were remove…
punkbit Jan 29, 2026
32cfad1
chore: πŸ€– resolve conflict resolution, middle truncator
punkbit Jan 29, 2026
777aee5
chore: πŸ€– resolve conflict resolution, missing container changes
punkbit Jan 29, 2026
e163516
refactor: πŸ’‘ FileMultiUpload to follow FileUpload due to middle truncator
punkbit Jan 29, 2026
38a68b1
fix: πŸ› prevent icon success pushed right
punkbit Jan 29, 2026
447491c
Merge branch 'fix/middle-truncator-icon-success-upload-val-position' …
punkbit Jan 29, 2026
b0fafa5
fix: πŸ› remove file size from multiple file upload
punkbit Jan 29, 2026
c682e36
Merge branch 'main' into chore/distribution-unbundled
punkbit Feb 2, 2026
ad93bef
Merge branch 'main' into chore/distribution-unbundled
punkbit Feb 2, 2026
332649d
chore: πŸ€– merge conflict amend for ButtonGroup
punkbit Feb 2, 2026
c13bcd7
chore: πŸ€– remove comment
punkbit Feb 2, 2026
a8c8db4
refactor: πŸ’‘ reduce import path redundancy (WIP, pt1)
punkbit Feb 2, 2026
9c13175
refactor: πŸ’‘ accordion as index
punkbit Feb 2, 2026
0d9b045
refactor: πŸ’‘ rename component by directory name to index
punkbit Feb 2, 2026
b2ee6e4
refactor: πŸ’‘ update import statements to prefer index
punkbit Feb 2, 2026
439d12b
chore: πŸ€– remove old indexes (this was a failed attempt, which importe…
punkbit Feb 2, 2026
7ab0652
fix: πŸ› import statements
punkbit Feb 2, 2026
e0cba91
fix: πŸ› import statements
punkbit Feb 2, 2026
f9dfadd
fix: πŸ› import statements
punkbit Feb 2, 2026
7c323c6
fix: πŸ› icon names in types
punkbit Feb 2, 2026
6a3d7f4
chore: πŸ€– add note
punkbit Feb 2, 2026
6d759b6
chore: πŸ€– format
punkbit Feb 2, 2026
4105497
fix: πŸ› icon names location
punkbit Feb 2, 2026
3104380
fix: πŸ› icon names location
punkbit Feb 2, 2026
a0316ba
chore: πŸ€– update changeset
punkbit Feb 2, 2026
9dd1f85
refactor: πŸ’‘ use component level barrel, to allow devs see component n…
punkbit Feb 2, 2026
150fe10
fix: πŸ› import statements
punkbit Feb 2, 2026
0da025f
chore: πŸ€– add eslint to prevent imports from index and request use of …
punkbit Feb 2, 2026
2edec36
Merge branch 'main' into chore/distribution-unbundled
punkbit Feb 2, 2026
cee7b6b
Merge branch 'main' into chore/distribution-unbundled
punkbit Feb 3, 2026
abc152e
Merge branch 'chore/distribution-unbundled' into refactor/component-p…
punkbit Feb 3, 2026
af4e441
fix: πŸ› merge main conflict resolution
punkbit Feb 16, 2026
00ee734
fix: πŸ› dayjs version
punkbit Feb 16, 2026
beeae4f
fix: πŸ› merge from main,m incorrectly changed
punkbit Feb 16, 2026
8477295
chore: πŸ€– prepare merge main
punkbit Feb 20, 2026
52e7c18
Merge branch 'main' into refactor/component-path-redundancy
punkbit Feb 20, 2026
7def5d8
fix: πŸ› merge conflicts
punkbit Feb 20, 2026
2be183c
refactor: πŸ’‘ further paths pass
punkbit Feb 20, 2026
16a4d5f
chore: πŸ€– add note
punkbit Feb 20, 2026
b4ae1dc
chore: πŸ€– format
punkbit Feb 20, 2026
329401f
refactor: πŸ’‘ further paths pass for AutoComplete
punkbit Feb 20, 2026
1c24c0d
fix: πŸ› merge conflict
punkbit Feb 20, 2026
332dd11
refactor: πŸ’‘ further paths pass for Collapsible
punkbit Feb 20, 2026
9b51373
fix: πŸ› merge conflict
punkbit Feb 20, 2026
eeabb54
fix: πŸ› file extension
punkbit Feb 20, 2026
7ac1cc7
chore: πŸ€– add hmr benchmark
punkbit Feb 23, 2026
9c0715e
chore: πŸ€– make component build name index to remove redundancy
punkbit Feb 23, 2026
9100a4e
chore: πŸ€– generate exports, e.g. expose direct component imports and i…
punkbit Feb 23, 2026
f4308ad
perf: ⚑ benchmark hmr deep nested components
punkbit Feb 23, 2026
3398bc2
chore: πŸ€– link @clickhouse/click-ui to itself, required for benchmark
punkbit Feb 23, 2026
fabed86
perf: ⚑ generate component exports, e.g. speedy component and type ac…
punkbit Feb 23, 2026
b18ce79
refactor: πŸ’‘ remove unused re-export files
punkbit Feb 23, 2026
3fdfbdb
chore: πŸ€– update changeset
punkbit Feb 23, 2026
cf8aa56
chore: πŸ€– remove comments
punkbit Feb 23, 2026
6c8d24f
Merge branch 'main' into refactor/component-path-redundancy
punkbit Feb 23, 2026
3389991
Merge branch 'main' into refactor/component-path-redundancy
punkbit Feb 24, 2026
75452a2
Merge branch 'main' into refactor/component-path-redundancy
punkbit Feb 26, 2026
113fdae
test: πŸ’ update test (due to merge issues)
punkbit Feb 26, 2026
91cff6d
Merge branch 'main' into refactor/component-path-redundancy
punkbit Feb 26, 2026
3a5527c
fix: πŸ› error TS2724: './IconButton' has no exported member named 'Ic…
punkbit Feb 26, 2026
3a29007
Merge branch 'main' into refactor/component-path-redundancy
punkbit Mar 4, 2026
ab22012
Merge branch 'main' into refactor/component-path-redundancy
punkbit Mar 4, 2026
1809ea8
Merge branch 'main' into refactor/component-path-redundancy
punkbit Mar 5, 2026
6cf17e3
Merge branch 'main' into refactor/component-path-redundancy
punkbit Mar 5, 2026
39e467c
Merge branch 'main' into refactor/component-path-redundancy
punkbit Mar 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .changeset/wide-humans-enter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
'@clickhouse/click-ui': minor
---

Resolve component path redundancy and allow public API encapsulation.

As work progressed on reducing import path verbosity, several deeper issues surfaced that were addressed as part of this PR. Component import statements previously required the component name twice, e.g. clickhouse/click-ui/components/EllipsisContent/EllipsisContent, which was unnecessary. Beyond that, the original version inadvertently exposed internal implementation details, allowing consumers to directly access and depend on third-party APIs such as Radix UI components and types. This has led to applications incorrectly coupling themselves to these internals rather than the library's intended public API, a problem that now requires careful, incremental cleanup using @deprecated warnings.

While addressing the above, circular dependencies were discovered throughout the source code. These were not anticipated but were resolved as part of this PR, and new ESLint rules have been introduced to prevent them from reappearing as the library grows.

Finally, after #773 (distribute unbundled) was merged, which solved critical distribution size issues, could now confirm that tree-shaking works correctly under the revised conditions and both import strategies, e.g. top-package level and component-level.

### API improvements

1. Elegant import statements with zero performance cost, e.g. gets rid of redundant component name on import, such as `@clickhouse/click-ui/components/EllipsisContent/EllipsisContent`

```tsx
import { EllipsisContent } from '@clickhouse/click-ui/EllipsisContent';
```

2. Decoupling consumers from the underlying implementation and improving the long-term maintainability of the library, e.g. The original version exposes internal implementation details, allowing consumers to directly access and depend on third-party APIs such as Radix UI elements/types. This has led to applications incorrectly coupling themselves to these internals rather than the library's intended public API, which now requires a lot of unwanted work as we have to rely on `@deprecated` warnings to remove them gradually! The PR addresses this by encapsulating these details, ensuring only the deliberate public API surface is accessible.

### Build output size improvements

The [original production version](https://www.npmjs.com/package/@clickhouse/click-ui/v/0.0.250) of the Click UI library had a critical bundling issue, producing a build output of 1,216.21 kB with chunks exceeding the 500 kB threshold after minification.
To benchmark the improvements, a baseline Vite app without Click UI was measured at 193.30 kB. After integrating the updated PR version of Click UI, the results were as follows:

Importing a component via the main barrel file / public API produced a build output of 223.70 kB, an overhead of just ~30 kB over the baseline. Importing directly from the component-specific export path (e.g. @clickhouse/click-ui/Button) brought this down marginally further to 223.09 kB.

Both approaches represent a dramatic reduction from the original, with the PR version adding less than 30 kB over a bare Vite app regardless of import strategy.

This is made possible by several changes to resolve component paths and, of course, by the introduction of #773, which makes the package distribution unbundled and moves optimisation responsibility to the consumer side. Before, the consumer always had an unscalable bundled/unoptimizable package of 1,216.21 kB.
Loading
Loading