Skip to content

Commit b71eac3

Browse files
committed
initial go at adding tanstack/db
1 parent ed70bb6 commit b71eac3

File tree

5 files changed

+324
-116
lines changed

5 files changed

+324
-116
lines changed

src/libraries/db.tsx

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import { VscPreview, VscWand } from 'react-icons/vsc'
2+
import { Library } from '.'
3+
import { FaGithub, FaBolt, FaCogs } from 'react-icons/fa'
4+
import { BiBookAlt } from 'react-icons/bi'
5+
import { twMerge } from 'tailwind-merge'
6+
7+
const repo = 'tanstack/db'
8+
9+
const textStyles = `text-orange-600 dark:text-orange-500`
10+
11+
export const dbProject = {
12+
id: 'db',
13+
name: 'TanStack DB',
14+
cardStyles: `shadow-xl shadow-orange-700/20 dark:shadow-lg dark:shadow-orange-500/20 text-orange-500 dark:text-orange-400 border-2 border-transparent hover:border-current`,
15+
to: '/db',
16+
tagline: `A reactive client store for building super fast apps on sync`,
17+
description: `TanStack DB extends TanStack Query with collections, live queries and optimistic mutations that keep your UI reactive, consistent and blazing fast 🔥`,
18+
ogImage:
19+
'https://github.com/tanstack/db/raw/main/media/repo-header.png',
20+
badge: 'soon',
21+
bgStyle: `bg-orange-700`,
22+
textStyle: `text-orange-500`,
23+
repo,
24+
latestBranch: 'main',
25+
latestVersion: 'v0',
26+
availableVersions: ['v0'],
27+
colorFrom: `from-orange-500`,
28+
colorTo: `to-orange-700`,
29+
textColor: `text-orange-700`,
30+
frameworks: ['react', 'solid'],
31+
scarfId: '302d0fef-cb3f-43c6-b45c-f055b9745edb',
32+
defaultDocs: 'overview',
33+
menu: [
34+
{
35+
icon: <VscPreview />,
36+
label: 'Examples',
37+
to: '/db/latest/docs/framework/react/examples/simple',
38+
},
39+
{
40+
icon: <BiBookAlt />,
41+
label: 'Docs',
42+
to: '/db/latest/docs',
43+
},
44+
{
45+
icon: <FaGithub />,
46+
label: 'Github',
47+
to: `https://github.com/${repo}`,
48+
},
49+
],
50+
featureHighlights: [
51+
{
52+
title: 'Collections',
53+
icon: <VscWand className={twMerge(textStyles)} />,
54+
description: (
55+
<div>Typed sets of objects that can mirror a backend table or be populated with a filtered view or result set, such as <code>pendingTodos</code> or <code>decemberNewTodos</code>.
56+
Collections are just JavaScript data — load them on demand and define as many as you need.
57+
</div>
58+
),
59+
},
60+
{
61+
title: 'Live Queries',
62+
icon: <FaBolt className={twMerge(textStyles)} />,
63+
description: (
64+
<div>Queries run reactively against and across collections with support for joins, filters and aggregates. They're powered by differential dataflow: query results update incrementally, not by re-running the whole query.</div>
65+
),
66+
},
67+
{
68+
title: 'Transactional mutators',
69+
icon: <FaCogs className={twMerge(textStyles)} />,
70+
description: (
71+
<div>Batch and stage local changes across collections with immediate application of local optimistic updates. Then sync transactions to the backend with automatic rollbacks and management of optimistic state.</div>
72+
),
73+
},
74+
],
75+
} satisfies Library

src/libraries/index.tsx

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { virtualProject } from './virtual'
1717
import { rangerProject } from './ranger'
1818
import { storeProject } from './store'
1919
import { pacerProject } from './pacer'
20-
// import { optimisticProject } from './optimistic'
20+
import { dbProject } from './db'
2121

2222
export const frameworkOptions = [
2323
{ label: 'React', value: 'react', logo: reactLogo, color: 'bg-blue-500' },
@@ -45,18 +45,18 @@ export type Framework = (typeof frameworkOptions)[number]['value']
4545

4646
export type Library = {
4747
id:
48-
| 'start'
49-
| 'router'
50-
| 'query'
51-
| 'table'
52-
| 'form'
53-
| 'virtual'
54-
| 'ranger'
55-
| 'store'
56-
| 'pacer'
57-
| 'optimistic'
58-
| 'config'
59-
| 'react-charts'
48+
| 'start'
49+
| 'router'
50+
| 'query'
51+
| 'table'
52+
| 'form'
53+
| 'virtual'
54+
| 'ranger'
55+
| 'store'
56+
| 'pacer'
57+
| 'db'
58+
| 'config'
59+
| 'react-charts'
6060
name: string
6161
cardStyles: string
6262
to: string
@@ -107,13 +107,13 @@ export const libraries = [
107107
pacerProject,
108108
storeProject,
109109
rangerProject,
110-
// optimisticProject,
110+
dbProject,
111111
configProject,
112112
] satisfies Library[]
113113

114114
export const librariesByGroup = {
115115
app: [startProject, routerProject],
116-
state: [queryProject, storeProject, pacerProject],
116+
state: [queryProject, dbProject, storeProject, pacerProject],
117117
headlessUI: [tableProject, formProject, virtualProject, rangerProject],
118118
other: [configProject],
119119
}

src/libraries/optimistic.tsx

Lines changed: 0 additions & 101 deletions
This file was deleted.

src/routeTree.gen.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import { Route as LibrariesRangerVersionIndexRouteImport } from './routes/_libra
4343
import { Route as LibrariesQueryVersionIndexRouteImport } from './routes/_libraries/query.$version.index'
4444
import { Route as LibrariesPacerVersionIndexRouteImport } from './routes/_libraries/pacer.$version.index'
4545
import { Route as LibrariesFormVersionIndexRouteImport } from './routes/_libraries/form.$version.index'
46+
import { Route as LibrariesDbVersionIndexRouteImport } from './routes/_libraries/db.$version.index'
4647
import { Route as LibrariesConfigVersionIndexRouteImport } from './routes/_libraries/config.$version.index'
4748
import { Route as LibraryIdVersionDocsIndexRouteImport } from './routes/$libraryId/$version.docs.index'
4849
import { Route as LibraryIdVersionDocsSplatRouteImport } from './routes/$libraryId/$version.docs.$'
@@ -242,6 +243,12 @@ const LibrariesFormVersionIndexRoute =
242243
getParentRoute: () => LibrariesRouteRoute,
243244
} as any)
244245

246+
const LibrariesDbVersionIndexRoute = LibrariesDbVersionIndexRouteImport.update({
247+
id: '/db/$version/',
248+
path: '/db/$version/',
249+
getParentRoute: () => LibrariesRouteRoute,
250+
} as any)
251+
245252
const LibrariesConfigVersionIndexRoute =
246253
LibrariesConfigVersionIndexRouteImport.update({
247254
id: '/config/$version/',
@@ -463,6 +470,13 @@ declare module '@tanstack/react-router' {
463470
preLoaderRoute: typeof LibrariesConfigVersionIndexRouteImport
464471
parentRoute: typeof LibrariesRouteRouteImport
465472
}
473+
'/_libraries/db/$version/': {
474+
id: '/_libraries/db/$version/'
475+
path: '/db/$version'
476+
fullPath: '/db/$version'
477+
preLoaderRoute: typeof LibrariesDbVersionIndexRouteImport
478+
parentRoute: typeof LibrariesRouteRouteImport
479+
}
466480
'/_libraries/form/$version/': {
467481
id: '/_libraries/form/$version/'
468482
path: '/form/$version'
@@ -775,6 +789,15 @@ declare module './routes/_libraries/config.$version.index' {
775789
FileRoutesByPath['/_libraries/config/$version/']['fullPath']
776790
>
777791
}
792+
declare module './routes/_libraries/db.$version.index' {
793+
const createFileRoute: CreateFileRoute<
794+
'/_libraries/db/$version/',
795+
FileRoutesByPath['/_libraries/db/$version/']['parentRoute'],
796+
FileRoutesByPath['/_libraries/db/$version/']['id'],
797+
FileRoutesByPath['/_libraries/db/$version/']['path'],
798+
FileRoutesByPath['/_libraries/db/$version/']['fullPath']
799+
>
800+
}
778801
declare module './routes/_libraries/form.$version.index' {
779802
const createFileRoute: CreateFileRoute<
780803
'/_libraries/form/$version/',
@@ -969,6 +992,7 @@ interface LibrariesRouteRouteChildren {
969992
LibrariesTermsRoute: typeof LibrariesTermsRoute
970993
LibrariesIndexRoute: typeof LibrariesIndexRoute
971994
LibrariesConfigVersionIndexRoute: typeof LibrariesConfigVersionIndexRoute
995+
LibrariesDbVersionIndexRoute: typeof LibrariesDbVersionIndexRoute
972996
LibrariesFormVersionIndexRoute: typeof LibrariesFormVersionIndexRoute
973997
LibrariesPacerVersionIndexRoute: typeof LibrariesPacerVersionIndexRoute
974998
LibrariesQueryVersionIndexRoute: typeof LibrariesQueryVersionIndexRoute
@@ -990,6 +1014,7 @@ const LibrariesRouteRouteChildren: LibrariesRouteRouteChildren = {
9901014
LibrariesTermsRoute: LibrariesTermsRoute,
9911015
LibrariesIndexRoute: LibrariesIndexRoute,
9921016
LibrariesConfigVersionIndexRoute: LibrariesConfigVersionIndexRoute,
1017+
LibrariesDbVersionIndexRoute: LibrariesDbVersionIndexRoute,
9931018
LibrariesFormVersionIndexRoute: LibrariesFormVersionIndexRoute,
9941019
LibrariesPacerVersionIndexRoute: LibrariesPacerVersionIndexRoute,
9951020
LibrariesQueryVersionIndexRoute: LibrariesQueryVersionIndexRoute,
@@ -1030,6 +1055,7 @@ export interface FileRoutesByFullPath {
10301055
'/$libraryId/$version/docs/$': typeof LibraryIdVersionDocsSplatRoute
10311056
'/$libraryId/$version/docs/': typeof LibraryIdVersionDocsIndexRoute
10321057
'/config/$version': typeof LibrariesConfigVersionIndexRoute
1058+
'/db/$version': typeof LibrariesDbVersionIndexRoute
10331059
'/form/$version': typeof LibrariesFormVersionIndexRoute
10341060
'/pacer/$version': typeof LibrariesPacerVersionIndexRoute
10351061
'/query/$version': typeof LibrariesQueryVersionIndexRoute
@@ -1066,6 +1092,7 @@ export interface FileRoutesByTo {
10661092
'/$libraryId/$version/docs/$': typeof LibraryIdVersionDocsSplatRoute
10671093
'/$libraryId/$version/docs': typeof LibraryIdVersionDocsIndexRoute
10681094
'/config/$version': typeof LibrariesConfigVersionIndexRoute
1095+
'/db/$version': typeof LibrariesDbVersionIndexRoute
10691096
'/form/$version': typeof LibrariesFormVersionIndexRoute
10701097
'/pacer/$version': typeof LibrariesPacerVersionIndexRoute
10711098
'/query/$version': typeof LibrariesQueryVersionIndexRoute
@@ -1107,6 +1134,7 @@ export interface FileRoutesById {
11071134
'/$libraryId/$version/docs/$': typeof LibraryIdVersionDocsSplatRoute
11081135
'/$libraryId/$version/docs/': typeof LibraryIdVersionDocsIndexRoute
11091136
'/_libraries/config/$version/': typeof LibrariesConfigVersionIndexRoute
1137+
'/_libraries/db/$version/': typeof LibrariesDbVersionIndexRoute
11101138
'/_libraries/form/$version/': typeof LibrariesFormVersionIndexRoute
11111139
'/_libraries/pacer/$version/': typeof LibrariesPacerVersionIndexRoute
11121140
'/_libraries/query/$version/': typeof LibrariesQueryVersionIndexRoute
@@ -1149,6 +1177,7 @@ export interface FileRouteTypes {
11491177
| '/$libraryId/$version/docs/$'
11501178
| '/$libraryId/$version/docs/'
11511179
| '/config/$version'
1180+
| '/db/$version'
11521181
| '/form/$version'
11531182
| '/pacer/$version'
11541183
| '/query/$version'
@@ -1184,6 +1213,7 @@ export interface FileRouteTypes {
11841213
| '/$libraryId/$version/docs/$'
11851214
| '/$libraryId/$version/docs'
11861215
| '/config/$version'
1216+
| '/db/$version'
11871217
| '/form/$version'
11881218
| '/pacer/$version'
11891219
| '/query/$version'
@@ -1223,6 +1253,7 @@ export interface FileRouteTypes {
12231253
| '/$libraryId/$version/docs/$'
12241254
| '/$libraryId/$version/docs/'
12251255
| '/_libraries/config/$version/'
1256+
| '/_libraries/db/$version/'
12261257
| '/_libraries/form/$version/'
12271258
| '/_libraries/pacer/$version/'
12281259
| '/_libraries/query/$version/'
@@ -1300,6 +1331,7 @@ export const routeTree = rootRoute
13001331
"/_libraries/terms",
13011332
"/_libraries/",
13021333
"/_libraries/config/$version/",
1334+
"/_libraries/db/$version/",
13031335
"/_libraries/form/$version/",
13041336
"/_libraries/pacer/$version/",
13051337
"/_libraries/query/$version/",
@@ -1408,6 +1440,10 @@ export const routeTree = rootRoute
14081440
"filePath": "_libraries/config.$version.index.tsx",
14091441
"parent": "/_libraries"
14101442
},
1443+
"/_libraries/db/$version/": {
1444+
"filePath": "_libraries/db.$version.index.tsx",
1445+
"parent": "/_libraries"
1446+
},
14111447
"/_libraries/form/$version/": {
14121448
"filePath": "_libraries/form.$version.index.tsx",
14131449
"parent": "/_libraries"

0 commit comments

Comments
 (0)