Skip to content

Commit b6b87c8

Browse files
committed
add vue-pacer adapter and update pacer marketing
1 parent 4a0a79f commit b6b87c8

2 files changed

Lines changed: 55 additions & 82 deletions

File tree

src/libraries/pacer.tsx

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { VscPreview, VscWand } from 'react-icons/vsc'
22
import { Library } from '.'
3-
import { FaGithub, FaBolt, FaCogs } from 'react-icons/fa'
3+
import { FaGithub } from 'react-icons/fa'
44
import { BiBookAlt } from 'react-icons/bi'
5+
import { GiF1Car } from 'react-icons/gi'
56
import { twMerge } from 'tailwind-merge'
7+
import { FaTimeline } from 'react-icons/fa6'
68

79
const repo = 'tanstack/pacer'
810

@@ -13,8 +15,8 @@ export const pacerProject = {
1315
name: 'TanStack Pacer',
1416
cardStyles: `shadow-xl shadow-lime-700/20 dark:shadow-lg dark:shadow-lime-500/20 text-lime-500 dark:text-lime-400 border-2 border-transparent hover:border-current`,
1517
to: '/pacer',
16-
tagline: `Framework agnostic debouncing, throttling, and queueing utilities`,
17-
description: `Set the pace of interactions in your applications. Limit the rate at which functions can fire, or intelligently queue long-running tasks with Concurrency Control.`,
18+
tagline: `Framework agnostic debouncing, throttling, rate limiting, queuing, and batching utilities`,
19+
description: `Optimize your application's performance with TanStack Pacer's core primitives: Debouncing, Throttling, Rate Limiting, Queuing, and Batching.`,
1820
ogImage: 'https://github.com/tanstack/pacer/raw/main/media/repo-header.png',
1921
badge: 'alpha',
2022
bgStyle: `bg-lime-700`,
@@ -26,7 +28,7 @@ export const pacerProject = {
2628
colorFrom: `from-lime-500`,
2729
colorTo: `to-lime-700`,
2830
textColor: `text-lime-700`,
29-
frameworks: ['react', 'solid'],
31+
frameworks: ['react', 'solid', 'vue'],
3032
scarfId: '302d0fef-cb3f-43c6-b45c-f055b9745edb',
3133
defaultDocs: 'overview',
3234
menu: [
@@ -48,7 +50,7 @@ export const pacerProject = {
4850
],
4951
featureHighlights: [
5052
{
51-
title: 'Framework Agnostic & Type-Safe',
53+
title: 'Flexible & Type-Safe',
5254
icon: <VscWand className={twMerge(textStyles)} />,
5355
description: (
5456
<div>
@@ -64,35 +66,35 @@ export const pacerProject = {
6466
),
6567
},
6668
{
67-
title: 'Flexible Rate Limiting Controls',
68-
icon: <FaBolt className={twMerge(textStyles)} />,
69+
title: 'Optimize Performance',
70+
icon: <GiF1Car className={twMerge(textStyles)} />,
6971
description: (
7072
<div>
71-
Take control of your application's timing with powerful utilities for{' '}
73+
Enhance your application's efficiency with flexible utilities for{' '}
7274
<span className={twMerge('font-semibold', textStyles)}>
73-
rate limiting, throttling, and debouncing
75+
throttling, debouncing, queuing, and batching
7476
</span>
75-
. Leverage built-in cleanup and cancellation capabilities to help you
76-
manage execution timing with precision while preventing memory leaks.
77-
Flexible configuration options let you fine-tune the behavior to match
78-
your needs.
77+
. Reduce unnecessary operations and resource consumption while
78+
maintaining smooth user experiences. Built-in cleanup and cancellation
79+
capabilities help prevent memory leaks and optimize resource usage.
80+
Fine-tune behavior with flexible configuration options to match your
81+
specific performance needs.
7982
</div>
8083
),
8184
},
8285
{
83-
title: 'Async/Sync Queue Management',
84-
icon: <FaCogs className={twMerge(textStyles)} />,
86+
title: 'Async or Sync',
87+
icon: <FaTimeline className={twMerge(textStyles)} />,
8588
description: (
8689
<div>
87-
Handle complex asynchronous workflows with intelligent queuing and
88-
concurrency control.{' '}
90+
Choose between async or sync execution for each utility based on your
91+
needs.{' '}
8992
<span className={twMerge('font-semibold', textStyles)}>
90-
Manage long-running tasks with FIFO/LIFO ordering, priority queuing,
91-
and parallel execution
93+
Track success and error states with comprehensive event handling and
94+
status reporting
9295
</span>
93-
. Built-in pause, resume and cancel capabilities give you complete
94-
control over your queue's lifecycle. Perfect for managing API calls,
95-
animations, and other sequential operations.
96+
. Perfect for handling both simple synchronous operations and complex
97+
task pooling workflows with with or without concurrency control.
9698
</div>
9799
),
98100
},

src/routes/_libraries/pacer.$version.index.tsx

Lines changed: 31 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import { CgSpinner } from 'react-icons/cg'
2-
import * as React from 'react'
32
import { Link, getRouteApi } from '@tanstack/react-router'
4-
import { Carbon } from '~/components/Carbon'
53
import { Footer } from '~/components/Footer'
6-
import { TbHeartHandshake } from 'react-icons/tb'
74
import { FaCheckCircle } from 'react-icons/fa'
85
import SponsorPack from '~/components/SponsorPack'
96
import { pacerProject } from '~/libraries/pacer'
@@ -42,31 +39,50 @@ export default function PacerVersionIndex() {
4239
<span>TanStack</span>
4340
<span className={twMerge(gradientText)}>Pacer</span>
4441
</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>
4553
<h2
4654
className="font-bold text-2xl max-w-md
4755
md:text-3xl
4856
lg:text-5xl lg:max-w-2xl"
4957
>
5058
<span className="underline decoration-dashed decoration-gray-500 decoration-3 underline-offset-2">
51-
Framework agnostic
59+
Flexible
5260
</span>{' '}
53-
type-safe rate-limiting and queueing utilities
61+
type-safe throttling and queuing utilities
5462
</h2>
5563
<p
5664
className="text opacity-90 max-w-[500px]
5765
lg:text-xl lg:max-w-[800px]"
5866
>
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.
6581
</p>
6682
<Link
6783
to="/$libraryId/$version/docs"
6884
params={{ libraryId: library.id, version }}
69-
className={`py-2 px-4 bg-stone-600 text-white rounded uppercase font-extrabold`}
85+
className={`py-2 px-4 bg-lime-600 hover:bg-lime-700 text-white rounded uppercase font-extrabold transition-colors`}
7086
>
7187
Get Started
7288
</Link>
@@ -94,14 +110,15 @@ export default function PacerVersionIndex() {
94110
'Rate Limiting',
95111
'Throttling',
96112
'Debouncing',
97-
'Queueing',
113+
'Queuing',
114+
'Batching',
98115
'LIFO/FIFO/Dequeue Ordering',
99116
'Concurrency Control',
100117
'Queue Prioritization',
101118
'Pause/Resume Controls',
102119
'Cancellation',
103120
'Abort Controller Support',
104-
'Promise Integration',
121+
'Async/Sync Execution',
105122
'Multiple Layers of Abstraction',
106123
].map((d, i) => {
107124
return (
@@ -172,52 +189,6 @@ export default function PacerVersionIndex() {
172189

173190
<LandingPageGad />
174191

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-
221192
<div className="flex flex-col gap-4 items-center">
222193
<div className="font-extrabold text-xl lg:text-2xl">
223194
Wow, you've come a long way!

0 commit comments

Comments
 (0)