This component no longer exists. It was in obsidianui’s manifest when we first indexed it and is not there now — the registry served its inventory on 2026-08-05 and this item was not on it. The install command below will fail. It is kept here because a tutorial somewhere still tells people to run it.
glowing-scroll-indicator
obsidianui/glowing-scroll-indicatorRemovedComponent
obsidianui publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by obsidianui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://obsidianui.dev/r/glowing-scroll-indicator.jsonSource
1'use client';23import { motion, MotionValue, useScroll, useTransform } from 'framer-motion';4import React, { useEffect } from 'react';56const BARS = 40;78const ScrollBar = ({9 index,10 scrollProgress11}: {12 index: number;13 scrollProgress: MotionValue<number>;14}) => {15 const thisBarPosition = index / BARS;16 const preStep = Math.max(0, (index - 3) / BARS);17 const postStep = Math.min(1, (index + 3) / BARS);1819 const height = useTransform(20 scrollProgress,21 [0, preStep, thisBarPosition, postStep, 1],22 [5, 15, 35, 15, 5]23 );24 const opacity = useTransform(25 scrollProgress,26 [0, preStep, thisBarPosition, postStep, 1],27 [0.1, 0.4, 1, 0.4, 0.1]28 );29 const width = useTransform(scrollProgress, [0, thisBarPosition, 1], [1.5, 5, 1.5]);3031 return (32 <motion.div33 className="bg-white dark:bg-white"34 style={{35 height: height,36 opacity: useTransform(opacity, (value) => `${value}`),37 width: useTransform(width, (value) => `${value}px`)38 }}39 />40 );41};4243const ScrollIndicatorBars = ({44 container,45 direction46}: {47 container: HTMLElement;48 direction: 'vertical' | 'horizontal';49}) => {50 const ref = React.useRef<HTMLElement>(container);5152 React.useEffect(() => {53 ref.current = container;54 }, [container]);5556 const { scrollXProgress, scrollYProgress } = useScroll({ container: ref });5758 const scrollProgress = direction === 'vertical' ? scrollYProgress : scrollXProgress;59 const left = useTransform(scrollProgress, [0, 1], [0, 100]);6061 return (62 <div className="flex items-end justify-center gap-1 md:gap-2 relative w-fit">63 {Array.from({ length: BARS }).map((_, index) => (64 <ScrollBar65 key={`scroll-bar-${index}`}66 index={index}67 scrollProgress={scrollProgress}68 />69 ))}70 <motion.div71 className="h-20 bg-red-700 w-1 absolute bottom-0 left-1/2 -translate-x-1/2"72 style={{ left: useTransform(left, (value) => `${value}%`) }}73 >74 <div className="w-3.5 h-3.5 rounded-full shadow-sm bg-red-500 absolute top-0 left-1/2 -translate-x-1/2" />75 </motion.div>76 </div>77 );78};7980interface GlowingScrollIndicatorProps {81 scrollContainerId?: string;82 direction?: 'vertical' | 'horizontal';83}8485// … truncated
What it pulls in
npm packages
