1
1
import { CgSpinner } from 'react-icons/cg'
2
- import * as React from 'react'
3
2
import { Link , getRouteApi } from '@tanstack/react-router'
4
- import { Carbon } from '~/components/Carbon'
5
3
import { Footer } from '~/components/Footer'
6
- import { TbHeartHandshake } from 'react-icons/tb'
7
4
import { FaCheckCircle } from 'react-icons/fa'
8
5
import SponsorPack from '~/components/SponsorPack'
9
6
import { pacerProject } from '~/libraries/pacer'
@@ -42,31 +39,62 @@ export default function PacerVersionIndex() {
42
39
< span > TanStack</ span >
43
40
< span className = { twMerge ( gradientText ) } > Pacer</ span >
44
41
</ h1 >
42
+ < div
43
+ className = { twMerge (
44
+ 'text-sm' ,
45
+ 'md:text-base font-black' ,
46
+ 'lg:text-lg align-super text-white animate-bounce uppercase' ,
47
+ 'dark:text-black bg-black dark:bg-white shadow-xl shadow-black/30 px-2 py-1 rounded-md' ,
48
+ 'leading-none whitespace-nowrap'
49
+ ) }
50
+ >
51
+ STATUS: ALPHA
52
+ </ div >
45
53
< h2
46
54
className = "font-bold text-2xl max-w-md
47
55
md:text-3xl
48
56
lg:text-5xl lg:max-w-2xl"
49
57
>
50
58
< span className = "underline decoration-dashed decoration-gray-500 decoration-3 underline-offset-2" >
51
- Framework agnostic
59
+ Flexible
52
60
</ span > { ' ' }
53
- type-safe rate-limiting and queueing utilities
61
+ type-safe throttling and queuing utilities
54
62
</ h2 >
55
63
< p
56
64
className = "text opacity-90 max-w-[500px]
57
65
lg:text-xl lg:max-w-[800px]"
58
66
>
59
- Take control of your application's timing with TanStack Pacer's{ ' ' }
60
- < strong > rate limiting, throttling, and debouncing utilities</ strong >
61
- . Manage complex async workflows using{ ' ' }
62
- < strong > intelligent queuing and concurrency controls</ strong > while
63
- maintaining full control with built-in pause, resume, and cancel
64
- capabilities.
67
+ Optimize your application's performance with TanStack Pacer's core
68
+ primitives:{ ' ' }
69
+ < strong >
70
+ Debouncing, Throttling, Rate Limiting, Queuing, and Batching
71
+ </ strong >
72
+ .
73
+ </ p >
74
+ < p
75
+ className = "text opacity-90 max-w-[500px]
76
+ lg:text-xl lg:max-w-[800px]"
77
+ >
78
+ Choose from multiple layers of abstraction using high-level
79
+ pre-built hooks or low-level primitives that you can connect to your
80
+ own state management solutions of choice.
81
+ </ p >
82
+ < p
83
+ className = "text opacity-90 max-w-[500px]
84
+ lg:text-xl lg:max-w-[800px]"
85
+ >
86
+ TanStack Pacer is built on top of { /* @ts -ignore */ }
87
+ < Link target = "_blank" to = "/store/latest" className = "underline" >
88
+ TanStack Store
89
+ </ Link > { ' ' }
90
+ with reactive and subscribable state to make interacting with your
91
+ state management or persistence solution of choice a breeze, no
92
+ matter which framework you're using.
65
93
</ p >
66
94
< Link
67
95
to = "/$libraryId/$version/docs"
68
96
params = { { libraryId : library . id , version } }
69
- className = { `py-2 px-4 bg-stone -600 text-white rounded uppercase font-extrabold` }
97
+ className = { `py-2 px-4 bg-lime -600 hover:bg-lime-700 text-white rounded uppercase font-extrabold transition-colors ` }
70
98
>
71
99
Get Started
72
100
</ Link >
@@ -91,17 +119,21 @@ export default function PacerVersionIndex() {
91
119
'Lightweight' ,
92
120
'Tree-Shaking' ,
93
121
'Type-Safe' ,
122
+ 'Framework Agnostic' ,
123
+ 'Reactive & Subscribable State' ,
94
124
'Rate Limiting' ,
95
125
'Throttling' ,
96
126
'Debouncing' ,
97
- 'Queueing' ,
127
+ 'Queuing' ,
128
+ 'Batching' ,
129
+ 'Flush Controls' ,
98
130
'LIFO/FIFO/Dequeue Ordering' ,
99
131
'Concurrency Control' ,
100
132
'Queue Prioritization' ,
101
133
'Pause/Resume Controls' ,
102
134
'Cancellation' ,
103
135
'Abort Controller Support' ,
104
- 'Promise Integration ' ,
136
+ 'Async/Sync Execution ' ,
105
137
'Multiple Layers of Abstraction' ,
106
138
] . map ( ( d , i ) => {
107
139
return (
@@ -172,52 +204,6 @@ export default function PacerVersionIndex() {
172
204
173
205
< LandingPageGad />
174
206
175
- { /* <div className="flex flex-col gap-4">
176
- <div className="px-4 sm:px-6 lg:px-8 mx-auto container max-w-3xl sm:text-center">
177
- <h3 className="text-3xl text-center leading-8 font-extrabold tracking-tight sm:text-4xl sm:leading-10 lg:leading-none mt-2">
178
- Take it for a spin!
179
- </h3>
180
- <p className="my-4 text-xl leading-7 text-gray-600">
181
- With just a few lines of code, you can start using powerful rate
182
- limiting, throttling, debouncing, and queueing utilities.
183
- </p>
184
- <div className="flex flex-wrap gap-2 justify-center">
185
- {(
186
- [
187
- { label: 'React', value: 'react' },
188
- // More adapters coming soon
189
- // { label: 'Solid', value: 'solid' },
190
- // { label: 'Svelte', value: 'svelte' },
191
- // { label: 'Vue', value: 'vue' },
192
- // { label: 'Vanilla', value: 'vanilla' },
193
- ] as const
194
- ).map((item) => (
195
- <button
196
- key={item.value}
197
- className={`inline-block py-2 px-4 rounded text-white uppercase font-extrabold bg-stone-600`}
198
- >
199
- {item.label}
200
- </button>
201
- ))}
202
- </div>
203
- </div>
204
- </div>
205
-
206
- <div className="bg-white dark:bg-black">
207
- <iframe
208
- src={`https://stackblitz.com/github/${pacerProject.repo}/tree/main/examples/react/useDebouncer?embed=1&theme=dark&preset=node&file=src/main.tsx` }
209
- title="tanstack/pacer: useDebouncer"
210
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
211
- className="shadow-2xl"
212
- loading="lazy"
213
- style={{
214
- width: '100%',
215
- height: '80vh',
216
- border: '0',
217
- }}
218
- ></iframe>
219
- </div> */ }
220
-
221
207
< div className = "flex flex-col gap-4 items-center" >
222
208
< div className = "font-extrabold text-xl lg:text-2xl" >
223
209
Wow, you've come a long way!
0 commit comments