From 092100a7c0d4ad241e23aae79eb04304e73dd961 Mon Sep 17 00:00:00 2001 From: Kian Bazza Date: Sat, 12 Apr 2025 18:56:16 -0400 Subject: [PATCH 1/8] feat(data-table-filter): the great decoupling (#47) Decoupled from TanStack Table. --- .gitignore | 4 + .vscode/launch.json | 47 + apps/web/app/demo/page.tsx | 17 + apps/web/app/layout.tsx | 5 +- apps/web/app/page.tsx | 2 +- apps/web/components/code-block.tsx | 48 + .../data.ts | 0 .../demo.tsx | 0 .../dynamic/columns.tsx | 277 +++ .../dynamic/data-table.tsx | 100 + .../data-table-filter-demo/dynamic/data.ts | 540 +++++ .../data-table-filter-demo/dynamic/demo.tsx | 52 + .../data-table-filter-demo/dynamic/types.ts | 31 + .../data-table-filter-demo/dynamic/utils.ts | 13 + .../types.tsx | 0 .../data-table-filter-demo/v2/columns.tsx | 280 +++ .../data-table-filter-demo/v2/data-table.tsx | 123 ++ .../data-table-filter-demo/v2/data.ts | 544 +++++ .../data-table-filter-demo/v2/demo.tsx | 149 ++ .../data-table-filter-demo/v2/types.ts | 32 + .../data-table-filter-demo/v2/utils.ts | 13 + apps/web/components/mdx.tsx | 2 +- apps/web/components/ui/select.tsx | 185 ++ apps/web/lib/highlighter.ts | 30 + apps/web/lib/utils.ts | 4 + apps/web/package.json | 3 +- .../components/data-table-filter.tsx | 1796 +++++++++++++++++ .../data-table-filter-v2/lib/array.ts | 27 + .../data-table-filter-v2/lib/filter-fns.ts | 296 +++ .../data-table-filter-v2/lib/filters-tst.ts | 93 + .../data-table-filter-v2/lib/filters.test.ts | 44 + .../data-table-filter-v2/lib/filters.ts | 735 +++++++ .../data-table-filter-v2/lib/filters.types.ts | 308 +++ .../registry/data-table-filter-v2/lib/memo.ts | 35 + bun.lock | 6 +- 35 files changed, 5836 insertions(+), 5 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 apps/web/app/demo/page.tsx create mode 100644 apps/web/components/code-block.tsx rename apps/web/components/{data-table-filter => data-table-filter-demo}/data.ts (100%) rename apps/web/components/{data-table-filter => data-table-filter-demo}/demo.tsx (100%) create mode 100644 apps/web/components/data-table-filter-demo/dynamic/columns.tsx create mode 100644 apps/web/components/data-table-filter-demo/dynamic/data-table.tsx create mode 100644 apps/web/components/data-table-filter-demo/dynamic/data.ts create mode 100644 apps/web/components/data-table-filter-demo/dynamic/demo.tsx create mode 100644 apps/web/components/data-table-filter-demo/dynamic/types.ts create mode 100644 apps/web/components/data-table-filter-demo/dynamic/utils.ts rename apps/web/components/{data-table-filter => data-table-filter-demo}/types.tsx (100%) create mode 100644 apps/web/components/data-table-filter-demo/v2/columns.tsx create mode 100644 apps/web/components/data-table-filter-demo/v2/data-table.tsx create mode 100644 apps/web/components/data-table-filter-demo/v2/data.ts create mode 100644 apps/web/components/data-table-filter-demo/v2/demo.tsx create mode 100644 apps/web/components/data-table-filter-demo/v2/types.ts create mode 100644 apps/web/components/data-table-filter-demo/v2/utils.ts create mode 100644 apps/web/components/ui/select.tsx create mode 100644 apps/web/lib/highlighter.ts create mode 100644 apps/web/registry/data-table-filter-v2/components/data-table-filter.tsx create mode 100644 apps/web/registry/data-table-filter-v2/lib/array.ts create mode 100644 apps/web/registry/data-table-filter-v2/lib/filter-fns.ts create mode 100644 apps/web/registry/data-table-filter-v2/lib/filters-tst.ts create mode 100644 apps/web/registry/data-table-filter-v2/lib/filters.test.ts create mode 100644 apps/web/registry/data-table-filter-v2/lib/filters.ts create mode 100644 apps/web/registry/data-table-filter-v2/lib/filters.types.ts create mode 100644 apps/web/registry/data-table-filter-v2/lib/memo.ts diff --git a/.gitignore b/.gitignore index 96fab4fe..b082d458 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,7 @@ yarn-error.log* # Misc .DS_Store *.pem + + +# Repomix +repomix-output.txt \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..7e4c92ad --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,47 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Next.js: debug server-side", + "type": "node-terminal", + "request": "launch", + "command": "bun dev", + "cwd": "${workspaceFolder}/apps/web" + }, + { + "name": "Next.js: debug client-side", + "type": "chrome", + "request": "launch", + "url": "http://localhost:3000" + }, + { + "name": "Next.js: debug client-side (Firefox)", + "type": "firefox", + "request": "launch", + "url": "http://localhost:3000", + "reAttach": true, + "pathMappings": [ + { + "url": "webpack://_N_E", + "path": "${workspaceFolder}" + } + ] + }, + { + "name": "Next.js: debug full stack", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/node_modules/.bin/next", + "cwd": "${workspaceFolder}/apps/web", + "runtimeArgs": ["--inspect"], + "skipFiles": ["/**"], + "serverReadyAction": { + "action": "debugWithEdge", + "killOnServerStop": true, + "pattern": "- Local:.+(https?://.+)", + "uriFormat": "%s", + "webRoot": "${workspaceFolder}" + } + } + ] +} diff --git a/apps/web/app/demo/page.tsx b/apps/web/app/demo/page.tsx new file mode 100644 index 00000000..95dfd2d3 --- /dev/null +++ b/apps/web/app/demo/page.tsx @@ -0,0 +1,17 @@ +'use client' + +import dynamic from 'next/dynamic' + +const DataTableDemo = dynamic( + () => import('@/components/data-table-filter-demo/v2/demo'), + { ssr: false }, +) +// import DataTableDemo from '@/components/data-table-filter/v2/demo' + +export default function DemoPage() { + return ( +
+ +
+ ) +} diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx index 3754693d..85429723 100644 --- a/apps/web/app/layout.tsx +++ b/apps/web/app/layout.tsx @@ -5,6 +5,8 @@ import { env } from '@/lib/env' import { berkeleyMono, inter } from '@/lib/fonts' import { ThemeProvider } from '@/providers/theme-provider' import type { Viewport } from 'next' +import Head from 'next/head' +import Script from 'next/script' import { NuqsAdapter } from 'nuqs/adapters/next/app' const title = 'bazza/ui — Hand-crafted, modern React components' @@ -75,7 +77,8 @@ export default function RootLayout({ }>) { return ( - +