;
+
+/* --------------------------------------------------------------- */
+/* Playground with controls */
+/* --------------------------------------------------------------- */
+
+export const Playground: Story = {
+ render: (args) => (
+
+
+
+ ),
+ args: {
+ items: WORDS,
+ radius: 110,
+ innerGap: 90,
+ startAngle: -90,
+ clockwise: true,
+ rotateOnScroll: true,
+ scrollDegrees: 300,
+ autoSpinDegPerSec: 0,
+ springStiffness: 120,
+ height: 340,
+ textClassName: 'text-[18px] font-serif text-zinc-800 dark:text-zinc-100',
+ } satisfies TextCircleScrollProps,
+};
+
+/* --------------------------------------------------------------- */
+/* Like screenshot: scroll-driven serif words */
+/* --------------------------------------------------------------- */
+
+export const ScrollDriven: Story = {
+ render: () => (
+
+
+
+ ),
+};
+
+/* --------------------------------------------------------------- */
+/* Auto-spin only (counter-clockwise) */
+/* --------------------------------------------------------------- */
+
+export const AutoSpin: Story = {
+ render: () => (
+
+
+ (
+ ['Aurora', 'Lullaby', 'Labyrinth', 'Idyllic', 'Felicity'] as const
+ )[i % 5]
+ )}
+ radius={120}
+ innerGap={80}
+ startAngle={-60}
+ clockwise={false}
+ rotateOnScroll={false}
+ autoSpinDegPerSec={18}
+ textClassName='text-[17px] tracking-wide text-zinc-700 dark:text-zinc-100'
+ />
+
+ ),
+};
+
+/* --------------------------------------------------------------- */
+/* Custom React nodes around the circle */
+/* --------------------------------------------------------------- */
+
+export const CustomNodes: Story = {
+ render: () => (
+
+
+ Design
+ ,
+
+ Motion
+ ,
+
+ UI
+ ,
+
+ DX
+ ,
+
+ A11y
+ ,
+
+ Next.js
+ ,
+
+ Tailwind
+ ,
+
+ Framer
+ ,
+ ]}
+ radius={95}
+ innerGap={70}
+ startAngle={-90}
+ rotateOnScroll
+ autoSpinDegPerSec={10}
+ scrollDegrees={180}
+ textClassName='text-[14px] uppercase tracking-[0.18em] text-sky-700 dark:text-sky-200'
+ />
+
+ ),
+};