veloria-ui 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +119 -152
  2. package/README.md +152 -28
  3. package/dist/cli/index.js +136 -48
  4. package/dist/index.d.mts +293 -70
  5. package/dist/index.d.ts +293 -70
  6. package/dist/index.js +2669 -1073
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.mjs +2655 -1071
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/provider.d.mts +3 -3
  11. package/dist/provider.d.ts +3 -3
  12. package/dist/provider.js +291 -212
  13. package/dist/provider.js.map +1 -1
  14. package/dist/provider.mjs +290 -211
  15. package/dist/provider.mjs.map +1 -1
  16. package/dist/tailwind.d.ts +12 -16
  17. package/dist/tailwind.js +18 -13
  18. package/package.json +145 -25
  19. package/src/cli/index.ts +10 -10
  20. package/src/cli/registry.ts +143 -101
  21. package/src/components/basic/Button.tsx +13 -7
  22. package/src/components/basic/IconButton.tsx +8 -1
  23. package/src/components/basic/index.tsx +120 -92
  24. package/src/components/data-display/AuroraCard.tsx +117 -0
  25. package/src/components/data-display/FileCard.tsx +231 -0
  26. package/src/components/data-display/GaugeChart.tsx +254 -0
  27. package/src/components/data-display/PricingCard.tsx +181 -0
  28. package/src/components/data-display/RadialProgressChart.tsx +175 -0
  29. package/src/components/data-display/SparklineChart.tsx +139 -0
  30. package/src/components/data-display/index.tsx +467 -470
  31. package/src/components/feedback/StepProgress.tsx +96 -0
  32. package/src/components/feedback/index.tsx +194 -144
  33. package/src/components/forms/AvatarUpload.tsx +251 -0
  34. package/src/components/forms/NumberInput.tsx +181 -0
  35. package/src/components/forms/index.tsx +293 -100
  36. package/src/components/utility/TypewriterText.tsx +121 -0
  37. package/src/components/utility/index.tsx +108 -95
  38. package/src/hooks/index.ts +10 -7
  39. package/src/hooks/use-toast.tsx +5 -5
  40. package/src/index.ts +41 -6
  41. package/src/provider.tsx +7 -7
  42. package/src/styles/veloria.css +251 -0
  43. package/src/tailwind.ts +51 -29
  44. package/src/types/index.ts +3 -3
  45. package/src/styles/atlas.css +0 -252
package/CHANGELOG.md CHANGED
@@ -1,174 +1,120 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to Veloria UI are documented here.
4
- Project by [JohnDev19](https://github.com/JohnDev19) · [GitHub](https://github.com/JohnDev19/Veloria-UI) · [veloria-ui.vercel.app](https://veloria-ui.vercel.app/)
3
+ All notable changes to Veloria UI are documented here.
4
+ Project by [JohnDev19](https://github.com/JohnDev19) · [GitHub](https://github.com/JohnDev19/Veloria-UI) · [ui-veloria.vercel.app](https://ui-veloria.vercel.app/)
5
5
 
6
6
  This project follows [Semantic Versioning](https://semver.org).
7
7
 
8
8
  ---
9
9
 
10
- ## [0.1.0] — 2024-06-28
10
+ ## [0.1.4] — 2026-03-16
11
11
 
12
- ### Initial Release
12
+ ### New Components (10)
13
13
 
14
- First public release of Veloria UI. 102 components, a full CLI, 18 hooks, a Tailwind
15
- plugin, and a complete CSS token system with light + dark mode.
14
+ **Charts**
15
+ - `SparklineChart` — zero-dependency SVG inline trend line with optional area fill, animated draw-on, and end-point dot. Designed to slot directly into `StatsCard` or any compact metric surface. No external chart library needed.
16
+ - `RadialProgressChart` — multi-segment animated SVG donut ring. Each arc is independently sized via `stroke-dasharray`, eased in on mount, with a customizable center label slot and an optional colour legend below.
17
+ - `GaugeChart` — half-circle SVG gauge with a `requestAnimationFrame`-driven animated needle, configurable colour zones (green → amber → red by default), per-zone stroke arcs, and rendered min/max/value labels. Fully controlled via `value`, `min`, `max`, and `zones` props.
16
18
 
17
- ---
19
+ **Modern & Unique**
20
+ - `AuroraCard` — dark-surface card with three aurora gradient blobs that track mouse position via `onMouseMove` offset math. Each blob moves at a different speed and direction, creating a parallax aurora effect. The content renders inside a relative `z-10` panel on top. Zero external dependencies — pure CSS transforms + inline style.
21
+ - `TypewriterText` — cycles through a `strings[]` array, typing each character-by-character then erasing, with configurable `speed`, `deleteSpeed`, `pause`, `cursor`, and `loop` props. Cursor blinks independently of the typing loop via a separate `setInterval`. Accessible with `aria-live="polite"`.
18
22
 
19
- #### veloria-ui
20
-
21
- **Basic (10)**
22
- - `Button` — solid, outline, ghost, soft, link, danger variants · sizes xs–xl · loading state · left/right icon slots
23
- - `IconButton` — square or circular icon-only button with all button variants
24
- - `Link` — anchor with external link indicator and underline control
25
- - `Badge` — compact label with 5 color variants and optional dot
26
- - `Avatar` — image with fallback initials, online/offline status ring, 6 sizes
27
- - `AvatarGroup` — stacked avatar row with overflow count
28
- - `Divider` — horizontal/vertical with optional center label
29
- - `Tag` — closable colored tag with icon slot
30
- - `Chip` — toggleable with avatar/icon support and remove button
31
- - `Tooltip` — Radix-powered, all four sides, configurable delay
32
-
33
- **Layout (10)**
34
- - `Container` — responsive max-width wrapper with padding control
35
- - `Stack` — flex column/row with gap, align, justify, and divider support
36
- - `Grid` — CSS Grid with column/row/gap config
37
- - `Flex` — inline flex with full directional control
38
- - `Section` — semantic `<section>` with vertical padding presets
39
- - `Spacer` — invisible spacer
40
- - `AspectRatio` — Radix aspect-ratio wrapper
41
- - `Center` — flex centering helper
42
- - `ScrollArea` — custom scrollbar via Radix ScrollArea
43
- - `Masonry` — CSS multi-column masonry grid
44
-
45
- **Navigation (10)**
46
- - `Navbar` — sticky + glass-blur top bar
47
- - `Sidebar` — collapsible with width transition
48
- - `Menu` / `MenuItem` — vertical nav with active/disabled states
49
- - `DropdownMenu` — full Radix Dropdown with all sub-primitives
50
- - `Breadcrumb` — accessible trail with custom separator
51
- - `Pagination` — page numbers, ellipsis, prev/next
52
- - `Tabs` — line, pills, enclosed variants · Radix powered
53
- - `Stepper` — horizontal/vertical multi-step progress indicator
54
- - `CommandDialog` — ⌘K command palette via cmdk
55
-
56
- **Forms (10)**
57
- - `Input` — left/right icon slots, sizes, error state
58
- - `TextArea` — resize control, error state
59
- - `Select` — full Radix Select with all sub-primitives
60
- - `Checkbox` — with label, description, error state
61
- - `RadioGroup` — per-option labels and descriptions
62
- - `Switch` — three sizes, label, description
63
- - `Slider` — range slider
64
- - `RangeSlider` — dual-thumb slider
65
- - `DatePicker` — native date input wrapper
66
- - `TimePicker` — native time input wrapper
67
-
68
- **Advanced Forms (10)**
69
- - `FileUpload` — drag-and-drop zone with click-to-upload fallback
70
- - `OTPInput` — PIN/OTP with auto-advance and paste support
71
- - `ColorPicker` — swatches + hex input
72
- - `SearchInput` — search with loading state and clear button
73
- - `PasswordInput` — toggle show/hide
74
- - `Combobox` — searchable single-value select
75
- - `MultiSelect` — multi-value select with chips
76
- - `FormField` / `FormLabel` / `FormError` — composable form primitives
77
-
78
- **Data Display (10)**
79
- - `Card` — surface with header/content/footer slots · 5 variants
80
- - `Table` + sub-primitives — full HTML table system
81
- - `DataTable` — sortable data table with loading and empty states
82
- - `List` / `ListItem` — simple, bordered, and divided lists
83
- - `Statistic` — key metric with trend indicator
84
- - `Timeline` — vertical events with color-coded icons
85
- - `Calendar` — month picker with highlighted dates
86
- - `CodeBlock` — code display with copy button and line numbers
87
- - `Chart` — chart wrapper (bring your own chart library)
88
-
89
- **Feedback (10)**
90
- - `Alert` — info/success/warning/danger with optional dismiss
91
- - `Toast` — Radix Toast with all sub-primitives
92
- - `Snackbar` — positioned message with action
93
- - `Progress` — linear bar with color variants
94
- - `CircularProgress` — SVG ring with indeterminate mode
95
- - `Skeleton` — pulse placeholder for text, rect, circle
96
- - `LoadingSpinner` — accessible SVG spinner
97
- - `EmptyState` — icon + title + description + action slot
98
- - `StatusIndicator` — online/offline/busy/away dot with pulse
99
- - `Notification` — notification item with avatar, timestamp, unread dot
100
-
101
- **Overlay (10)**
102
- - `Modal` — preset dialog with size variants (sm → full)
103
- - `Dialog` — full Radix Dialog primitive suite
104
- - `Drawer` — slide-in from any edge (left/right/top/bottom)
105
- - `Sheet` — Drawer alias
106
- - `Popover` — floating panel
107
- - `HoverCard` — rich hover preview
108
- - `ContextMenu` — right-click menu
109
- - `CommandDialog` — ⌘K palette
110
- - `Lightbox` / `ImageViewer` — full-screen image overlay
111
-
112
- **Media (5)**
113
- - `Image` — fallback, aspect ratio, object-fit, rounded, caption
114
- - `VideoPlayer` — HTML5 video with captions/subtitles track support
115
- - `AudioPlayer` — custom UI with seek bar, cover art
116
- - `Carousel` — autoplay, dots, arrows, loop, slidesPerView
117
- - `Gallery` — responsive image grid with click handler
118
-
119
- **Utility (5)**
120
- - `ThemeSwitcher` — icon / toggle / select variants
121
- - `CopyButton` — icon or labelled button with success feedback
122
- - `KeyboardShortcut` — styled `<kbd>` shortcut display
123
- - `ResizablePanel` — drag-to-resize with min/max constraints
124
- - `DragDropArea` — accessible file drop zone
125
-
126
- #### Hooks
127
- - `useDisclosure` — open/close state management
128
- - `useMediaQuery` — window media query subscription
129
- - `useBreakpoint` — Tailwind breakpoint helper
130
- - `useClipboard` — clipboard copy with timeout feedback
131
- - `useLocalStorage` — persistent state
132
- - `useTheme` — theme switching (persists to localStorage)
133
- - `useDebounce` — debounced value
134
- - `useOnClickOutside` — outside click detection
135
- - `useKeydown` — keyboard shortcut listener with modifier support
136
- - `useMounted` — SSR-safe mount check
137
- - `useToast` — programmatic toast notifications
138
-
139
- #### Infrastructure
140
- - Tailwind CSS plugin + preset (`atlasPlugin`, `atlasPreset`)
141
- - Full CSS design token system — light and dark themes
142
- - `AtlasProvider` for Next.js App Router
143
- - TypeScript strict throughout — full named type exports
144
- - Tree-shakeable ESM + CJS dual build via tsup
145
- - Turbo monorepo setup
146
-
147
- #### veloria-ui CLI
148
- - `init` — project setup wizard (detects Next.js, writes atlas.config.json)
149
- - `add` — copies components + installs npm deps, resolves Veloria UI peer deps
150
- - `list` — browse all 102 components filtered by category
151
- - `diff` — compare local copy to latest (registry fetch, coming soon)
152
- - Auto-detects npm / pnpm / yarn / bun
23
+ **Data Display**
24
+ - `FileCard` — file attachment surface with auto-derived type badge (colour-coded per extension), formatted file size, optional upload/download progress bar that turns green on completion, and download/remove action buttons. Two layout variants: `compact` (inline pill) and `full` (card with icon block).
25
+ - `PricingCard` — structured pricing tier with plan name, price + billing period, optional description, feature list with check/cross icons and optional notes, a CTA button that highlights when `popular` is set, and a "Most popular" ribbon badge. Supports `classic` bevel variant.
153
26
 
154
- ---
27
+ **Forms**
28
+ - `NumberInput` — stepper input flanked by − and + buttons. Clamps to `min`/`max`, steps by configurable `step` amount, increments on `ArrowUp`/`ArrowDown` keyboard events, and adjusts on mouse scroll when focused. Hides native browser spinners. Supports controlled and uncontrolled modes. Sizes `xs`–`lg`.
29
+ - `AvatarUpload` — avatar circle with a camera overlay that appears on hover, a hidden `<input type="file">` triggered on click or keyboard, instant `FileReader` base64 preview, max-size validation with an error message, and a "Remove photo" link. Sizes `sm`–`xl`. Fully accessible with `role="button"` and `aria-label`.
30
+
31
+ **Feedback**
32
+ - `StepProgress` — animated segmented progress bar. Each segment fills left-to-right with a staggered CSS `scaleX` transition (40ms per-segment delay). Props: `steps`, `current`, `color`, `animated`, `showLabel`, `size`. Renders a `role="progressbar"` with correct ARIA attributes.
33
+
34
+ **Utility**
35
+ - `TypewriterText` — see Modern & Unique above (also exported from `utility`).
36
+
37
+ ### Architecture
38
+
39
+ All 10 new components are **standalone files** — each lives in its own `.tsx` file alongside the relevant `index.tsx`. This means `index.tsx` re-exports them without duplicating implementation, tree-shaking works per-component, and diffs stay minimal when individual components change.
40
+
41
+ - `src/components/data-display/SparklineChart.tsx`
42
+ - `src/components/data-display/RadialProgressChart.tsx`
43
+ - `src/components/data-display/GaugeChart.tsx`
44
+ - `src/components/data-display/AuroraCard.tsx`
45
+ - `src/components/data-display/FileCard.tsx`
46
+ - `src/components/data-display/PricingCard.tsx`
47
+ - `src/components/forms/NumberInput.tsx`
48
+ - `src/components/forms/AvatarUpload.tsx`
49
+ - `src/components/feedback/StepProgress.tsx`
50
+ - `src/components/utility/TypewriterText.tsx`
51
+
52
+ ### CLI Registry
53
+
54
+ All 10 new components are registered in `src/cli/registry.ts` and are available via:
55
+
56
+ ```bash
57
+ npx veloria-ui add sparkline-chart
58
+ npx veloria-ui add radial-progress-chart
59
+ npx veloria-ui add gauge-chart
60
+ npx veloria-ui add aurora-card
61
+ npx veloria-ui add pricing-card
62
+ npx veloria-ui add file-card
63
+ npx veloria-ui add number-input
64
+ npx veloria-ui add avatar-upload
65
+ npx veloria-ui add step-progress
66
+ npx veloria-ui add typewriter-text
67
+ ```
155
68
 
156
69
  ---
157
70
 
158
- ## [0.1.1] — 2026-03-13 (UPDATED)
71
+ ## [0.1.3] — 2026-03-16
159
72
 
160
- ### Build fixes
73
+ ### Classic Variant
161
74
 
162
- - Fixed `tailwindcss/plugin` resolve error marked as external in tsup, switched to `require()` at runtime
163
- - Fixed `"types"` export condition ordering in `package.json` `types` now comes before `import`/`require`
164
- - Fixed `use-toast.ts` renamed to `use-toast.tsx` file contained JSX but had `.ts` extension
165
- - Fixed `TS2320` / `TS2322` conflicts across all component interfaces `HTMLAttributes` built-in props (`color`, `size`, `title`, `prefix`, `onChange`, `onDrop`, `onDragOver`) now properly `Omit`-ed before extending
166
- - Renamed package from `veloria-ui-kit` to `veloria-ui`
167
- - CLI `--version` flag now reads dynamically from `package.json` instead of being hardcoded
75
+ Added `classic` variant across **Button**, **IconButton**, **Badge**, **Tag**, **Chip**, and **Card** components. The classic style uses beveled inset box-shadows to mimic the tactile feel of physical plastic or rubber:
76
+ - Top-left inset highlight (`rgba(255,255,255,0.72)` light mode, `rgba(255,255,255,0.10)` dark)
77
+ - Bottom-right inset shadow (`rgba(0,0,0,0.14)` light mode, `rgba(0,0,0,0.50)` dark)
78
+ - Active/pressed state inverts the bevel to simulate a physical click-down
79
+
80
+ New CSS utilities added to `veloria.css`:
81
+ - `.veloria-classic` — applies the raised bevel shadow
82
+ - `.veloria-classic-pressed` — applies the pressed/inverted bevel shadow
83
+ - CSS custom properties `--classic-highlight`, `--classic-shadow`, `--classic-bevel`, `--classic-bevel-pressed` — all responsive to dark mode
84
+
85
+ ### Select Dropdown Redesign
86
+
87
+ Replaced the system-native OS picker with a fully custom animated dropdown:
88
+ - Layered `box-shadow` (soft ambient + key shadow, separate dark mode values)
89
+ - Open animation: `fade-in-0` + `zoom-in-[0.97]` + directional slide from trigger
90
+ - Close animation: `fade-out-0` + `zoom-out-95` + reverse slide
91
+ - `SelectScrollUpButton` / `SelectScrollDownButton` — appear when list overflows, replacing the OS scrollbar
92
+ - Chevron icon rotates 180° when dropdown is open (CSS rule on `.atlas-select-trigger[data-state="open"] svg`)
93
+ - `SelectLabel` styled as uppercase tracking-widened group headers
94
+ - Max height capped to `min(available-height, 18rem)` to prevent off-screen overflow
95
+
96
+ ### Branding & Naming
97
+
98
+ - Renamed all `atlas-` CSS keyframe and class prefixes to `veloria-` throughout `veloria.css`
99
+ - Renamed `atlas.css` to `veloria.css` — update your import to `import "veloria-ui/styles"`
100
+ - Renamed `atlasPlugin` → `veloriaPlugin` and `atlasPreset` → `veloriaPreset` in `tailwind.ts`
101
+ - Renamed `AtlasProvider` → `VeloriaProvider` and `AtlasProviderProps` → `VeloriaProviderProps` in `provider.tsx`
102
+ - Renamed `AtlasTheme` type → `VeloriaTheme` in `hooks/index.ts`
103
+ - Renamed `AtlasBaseProps` → `VeloriaBaseProps` and `AtlasAriaProps` → `VeloriaAriaProps` in `types/index.ts`
104
+ - Renamed `atlas.config.json` → `veloria.config.json` — CLI `init` now writes `veloria.config.json`
105
+ - Renamed localStorage theme key from `atlas-theme` to `veloria-theme`
106
+ - Removed legacy `atlas` bin alias from `package.json`
107
+ - Updated all homepage and docs URLs to `https://ui-veloria.vercel.app/`
108
+
109
+ ### Bug Fixes
110
+
111
+ - Fixed `TypeError: Cannot read properties of null (reading 'matches')` — `window.matchMedia` now uses optional chaining (`?.`) in `useTheme` and an explicit null guard in `useMediaQuery`, preventing crashes in jsdom and certain SSR environments
112
+ - Fixed `TS2430` on `StatisticProps` — added `Omit<..., "prefix">` to resolve conflict with `HTMLAttributes.prefix`
113
+ - Fixed `TS2430` on `CalendarProps` — added `Omit<..., "onChange">` to resolve conflict with `HTMLAttributes.onChange`
168
114
 
169
115
  ---
170
116
 
171
- ## [0.1.2] — 2026-03-15 (UPDATED)
117
+ ## [0.1.2] — 2026-03-15
172
118
 
173
119
  ### New Components (20)
174
120
 
@@ -203,4 +149,25 @@ plugin, and a complete CSS token system with light + dark mode.
203
149
  - `useIntersection` — IntersectionObserver wrapper with optional `once` mode
204
150
  - `useWindowSize` — reactive window width and height, SSR-safe
205
151
  - `useStep` — multi-step wizard state with `isFirst`, `isLast`, and progress percentage
206
- - `useCountdown` — countdown timer with `start`, `pause`, and `reset` controls
152
+ - `useCountdown` — countdown timer with `start`, `pause`, and `reset` controls
153
+
154
+ ---
155
+
156
+ ## [0.1.1] — 2026-03-13
157
+
158
+ ### Build fixes
159
+
160
+ - Fixed `tailwindcss/plugin` resolve error — marked as external in tsup, switched to `require()` at runtime
161
+ - Fixed `"types"` export condition ordering in `package.json` — `types` now comes before `import`/`require`
162
+ - Fixed `use-toast.ts` renamed to `use-toast.tsx` — file contained JSX but had `.ts` extension
163
+ - Fixed `TS2320` / `TS2322` conflicts across all component interfaces — `HTMLAttributes` built-in props (`color`, `size`, `title`, `prefix`, `onChange`, `onDrop`, `onDragOver`) now properly `Omit`-ed before extending
164
+ - Renamed package from `veloria-ui-kit` to `veloria-ui`
165
+ - CLI `--version` flag now reads dynamically from `package.json` instead of being hardcoded
166
+
167
+ ---
168
+
169
+ ## [0.1.0] — 2024-06-28
170
+
171
+ ### Initial Release
172
+
173
+ First public release of Veloria UI. A full CLI, hooks, a Tailwind plugin, and a complete CSS token system with light + dark mode.
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ### **Build anything. Ship faster.**
12
12
 
13
- 102 production-ready React components — accessible, composable, dark-mode ready.
13
+ Production-ready React components — accessible, composable, dark-mode ready.
14
14
  Works with Tailwind CSS and Next.js out of the box.
15
15
 
16
16
  [![npm](https://img.shields.io/npm/v/veloria-ui?color=0ea5e9&label=veloria-ui)](https://www.npmjs.com/package/veloria-ui)
@@ -18,7 +18,7 @@ Works with Tailwind CSS and Next.js out of the box.
18
18
  [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-3178c6)](https://www.typescriptlang.org)
19
19
  [![GitHub](https://img.shields.io/github/stars/JohnDev19/Veloria-UI?style=social)](https://github.com/JohnDev19/Veloria-UI)
20
20
 
21
- **[Docs](https://veloria-ui.vercel.app/)** · **[Components](https://veloria-ui.vercel.app/components)** · **[Issues](https://github.com/JohnDev19/Veloria-UI/issues)** · **[Changelog](CHANGELOG.md)**
21
+ **[Docs](https://ui-veloria.vercel.app/)** · **[Components](https://ui-veloria.vercel.app/components)** · **[Issues](https://github.com/JohnDev19/Veloria-UI/issues)** · **[Changelog](CHANGELOG.md)**
22
22
 
23
23
  </div>
24
24
 
@@ -47,12 +47,12 @@ import "veloria-ui/styles";
47
47
 
48
48
  ```ts
49
49
  // tailwind.config.ts
50
- import { atlasPlugin } from "veloria-ui/tailwind";
50
+ import { veloriaPlugin } from "veloria-ui/tailwind";
51
51
 
52
52
  export default {
53
53
  darkMode: ["class"],
54
54
  content: ["./app/**/*.{ts,tsx}", "./components/**/*.{ts,tsx}"],
55
- plugins: [atlasPlugin],
55
+ plugins: [veloriaPlugin],
56
56
  };
57
57
  ```
58
58
 
@@ -60,13 +60,13 @@ export default {
60
60
 
61
61
  ```tsx
62
62
  // app/layout.tsx
63
- import { AtlasProvider } from "veloria-ui/provider";
63
+ import { VeloriaProvider } from "veloria-ui/provider";
64
64
 
65
65
  export default function RootLayout({ children }) {
66
66
  return (
67
67
  <html lang="en">
68
68
  <body>
69
- <AtlasProvider>{children}</AtlasProvider>
69
+ <VeloriaProvider>{children}</VeloriaProvider>
70
70
  </body>
71
71
  </html>
72
72
  );
@@ -98,14 +98,14 @@ export default function Page() {
98
98
  veloria-ui ships with a CLI that copies components straight into your project — shadcn-style. You own the code.
99
99
 
100
100
  ```bash
101
- # Set up veloria-ui in your project (writes atlas.config.json)
101
+ # Set up veloria-ui in your project (writes veloria.config.json)
102
102
  npx veloria-ui init
103
103
 
104
104
  # Add components
105
105
  npx veloria-ui add button
106
106
  npx veloria-ui add card modal drawer toast
107
107
 
108
- # Browse all 102 components
108
+ # Browse all components
109
109
  npx veloria-ui list
110
110
  npx veloria-ui list --category forms
111
111
 
@@ -117,28 +117,32 @@ After running `add`, a file like `components/ui/button/index.tsx` appears in you
117
117
 
118
118
  ---
119
119
 
120
- ## Components (90)
120
+ ## Components
121
121
 
122
122
  ### Basic (10)
123
123
  `Button` `IconButton` `Link` `Badge` `Avatar` `AvatarGroup` `Divider` `Tag` `Chip` `Tooltip`
124
124
 
125
+ > All interactive components now support a `classic` variant — beveled edges that mimic physical plastic or rubber with a tactile press effect.
126
+
125
127
  ### Layout (10)
126
128
  `Container` `Stack` `Grid` `Flex` `Section` `Spacer` `AspectRatio` `Center` `ScrollArea` `Masonry`
127
129
 
128
130
  ### Navigation (10)
129
131
  `Navbar` `Sidebar` `Menu` `DropdownMenu` `Breadcrumb` `Pagination` `Tabs` `CommandPalette` `NavigationMenu` `Stepper`
130
132
 
131
- ### Forms (10)
132
- `Input` `TextArea` `Select` `Checkbox` `RadioGroup` `Switch` `Slider` `RangeSlider` `DatePicker` `TimePicker`
133
+ ### Forms (12)
134
+ `Input` `TextArea` `Select` `Checkbox` `RadioGroup` `Switch` `Slider` `RangeSlider` `DatePicker` `TimePicker` `NumberInput` `AvatarUpload`
135
+
136
+ > `Select` now uses a fully custom animated dropdown — no OS picker. Includes scroll buttons, chevron animation, and directional slide-in/out transitions.
133
137
 
134
- ### Advanced Forms (10)
135
- `FileUpload` `OTPInput` `ColorPicker` `SearchInput` `PasswordInput` `Combobox` `MultiSelect` `FormField` `FormLabel` `FormError`
138
+ ### Advanced Forms (14)
139
+ `FileUpload` `OTPInput` `ColorPicker` `SearchInput` `PasswordInput` `Combobox` `MultiSelect` `FormField` `FormLabel` `FormError` `PhoneInput` `TagInput` `CurrencyInput` `RatingInput`
136
140
 
137
- ### Data Display (10)
138
- `Card` `Table` `DataTable` `List` `ListItem` `Statistic` `Timeline` `Calendar` `Chart` `CodeBlock`
141
+ ### Data Display (19)
142
+ `Card` `Table` `DataTable` `List` `ListItem` `Statistic` `Timeline` `Calendar` `Chart` `CodeBlock` `StatsCard` `TreeView` `JsonViewer` `Heatmap` `KanbanBoard` `SparklineChart` `RadialProgressChart` `GaugeChart` `AuroraCard` `FileCard` `PricingCard`
139
143
 
140
- ### Feedback (10)
141
- `Alert` `Toast` `Snackbar` `Progress` `CircularProgress` `Skeleton` `LoadingSpinner` `EmptyState` `StatusIndicator` `Notification`
144
+ ### Feedback (15)
145
+ `Alert` `Toast` `Snackbar` `Progress` `CircularProgress` `Skeleton` `LoadingSpinner` `EmptyState` `StatusIndicator` `Notification` `BannerAlert` `ConfirmDialog` `FloatingActionButton` `RichTooltip` `Tour` `StepProgress`
142
146
 
143
147
  ### Overlay (10)
144
148
  `Modal` `Dialog` `Drawer` `Popover` `HoverCard` `ContextMenu` `CommandDialog` `Sheet` `Lightbox` `ImageViewer`
@@ -146,8 +150,121 @@ After running `add`, a file like `components/ui/button/index.tsx` appears in you
146
150
  ### Media (5)
147
151
  `Image` `VideoPlayer` `AudioPlayer` `Carousel` `Gallery`
148
152
 
149
- ### Utility (5)
150
- `ThemeSwitcher` `CopyButton` `KeyboardShortcut` `ResizablePanel` `DragDropArea`
153
+ ### Utility (8)
154
+ `ThemeSwitcher` `CopyButton` `KeyboardShortcut` `ResizablePanel` `DragDropArea` `InfiniteScroll` `VirtualList` `TypewriterText`
155
+
156
+ ---
157
+
158
+ ## New in v0.1.4
159
+
160
+ ### Charts
161
+
162
+ ```tsx
163
+ import { SparklineChart, RadialProgressChart, GaugeChart } from "veloria-ui";
164
+
165
+ // Inline trend line — slots into any stat card
166
+ <SparklineChart data={[12, 18, 14, 22, 19, 28, 31]} color="hsl(var(--primary))" />
167
+
168
+ // Animated multi-segment ring
169
+ <RadialProgressChart
170
+ segments={[
171
+ { value: 65, label: "Series A", color: "#7F77DD" },
172
+ { value: 25, label: "Series B", color: "#1D9E75" },
173
+ { value: 10, label: "Series C", color: "#EF9F27" },
174
+ ]}
175
+ size={140}
176
+ centerLabel={<span className="text-lg font-bold">90%</span>}
177
+ />
178
+
179
+ // Gauge with animated needle
180
+ <GaugeChart value={72} label="CPU usage" size={200} />
181
+ ```
182
+
183
+ ### Modern & Unique
184
+
185
+ ```tsx
186
+ import { AuroraCard, TypewriterText } from "veloria-ui";
187
+
188
+ // Dark card with mouse-reactive aurora blobs
189
+ <AuroraCard className="p-8 text-white">
190
+ <h2 className="text-2xl font-bold">Ship faster</h2>
191
+ <p className="mt-2 text-white/70">Aurora reacts to your cursor.</p>
192
+ </AuroraCard>
193
+
194
+ // Typewriter cycling through strings
195
+ <TypewriterText
196
+ strings={["Build anything.", "Ship faster.", "Dark mode ready."]}
197
+ speed={80}
198
+ pause={2000}
199
+ />
200
+ ```
201
+
202
+ ### New Form Components
203
+
204
+ ```tsx
205
+ import { NumberInput, AvatarUpload } from "veloria-ui";
206
+
207
+ <NumberInput value={qty} onChange={setQty} min={1} max={99} step={1} size="md" />
208
+
209
+ <AvatarUpload
210
+ value={avatarUrl}
211
+ onChange={(file, preview) => upload(file)}
212
+ onRemove={() => setAvatarUrl(undefined)}
213
+ maxSize={2 * 1024 * 1024}
214
+ fallback="JD"
215
+ size="lg"
216
+ />
217
+ ```
218
+
219
+ ### StepProgress
220
+
221
+ ```tsx
222
+ import { StepProgress } from "veloria-ui";
223
+
224
+ <StepProgress steps={4} current={2} showLabel size="md" />
225
+ // → Step 2 of 4 · 50%
226
+ ```
227
+
228
+ ### PricingCard & FileCard
229
+
230
+ ```tsx
231
+ import { PricingCard, FileCard } from "veloria-ui";
232
+
233
+ <PricingCard
234
+ name="Pro"
235
+ price={29}
236
+ period="/month"
237
+ description="For teams that ship fast."
238
+ popular
239
+ features={[
240
+ { label: "Unlimited projects", included: true },
241
+ { label: "Priority support", included: true },
242
+ { label: "Custom domain", included: false },
243
+ ]}
244
+ onCtaClick={() => checkout("pro")}
245
+ />
246
+
247
+ <FileCard
248
+ filename="Q4_report_final.pdf"
249
+ size={2.4 * 1024 * 1024}
250
+ progress={100}
251
+ onDownload={() => download()}
252
+ onRemove={() => remove()}
253
+ />
254
+ ```
255
+
256
+ ---
257
+
258
+ ## Classic variant
259
+
260
+ All interactive components now accept `variant="classic"` — a beveled style that mimics physical plastic or rubber:
261
+
262
+ ```tsx
263
+ <Button variant="classic">Classic button</Button>
264
+ <Badge variant="classic" color="success">New</Badge>
265
+ <Card variant="classic" interactive>Classic card</Card>
266
+ <Chip classic>Filter</Chip>
267
+ ```
151
268
 
152
269
  ---
153
270
 
@@ -166,6 +283,12 @@ import {
166
283
  useKeydown, // keyboard shortcut listener with modifier support
167
284
  useMounted, // SSR-safe mount check
168
285
  useToast, // fire toasts programmatically
286
+ useForm, // form state + validation, no dependencies
287
+ usePagination, // pagination logic decoupled from UI
288
+ useIntersection, // IntersectionObserver wrapper
289
+ useWindowSize, // reactive viewport dimensions, SSR-safe
290
+ useStep, // multi-step wizard state
291
+ useCountdown, // countdown timer with start/pause/reset
169
292
  } from "veloria-ui";
170
293
  ```
171
294
 
@@ -214,20 +337,21 @@ veloria-ui/
214
337
  │ │ ├── basic/ Button, IconButton, Badge, Avatar, Tooltip…
215
338
  │ │ ├── layout/ Container, Stack, Grid, ScrollArea, Masonry…
216
339
  │ │ ├── navigation/ Navbar, Tabs, DropdownMenu, Stepper…
217
- │ │ ├── forms/ Input, Select, Checkbox, Slider, Switch
340
+ │ │ ├── forms/ Input, Select, Checkbox, Slider, NumberInput, AvatarUpload
218
341
  │ │ ├── advanced-forms/ OTPInput, ColorPicker, Combobox, MultiSelect…
219
- │ │ ├── data-display/ Card, DataTable, Timeline, Calendar, CodeBlock…
220
- │ │ ├── feedback/ Alert, Toast, Skeleton, EmptyState, Progress
342
+ │ │ ├── data-display/ Card, DataTable, SparklineChart, RadialProgressChart,
343
+ │ │ │ GaugeChart, AuroraCard, PricingCard, FileCard
344
+ │ │ ├── feedback/ Alert, Toast, Skeleton, StepProgress, EmptyState…
221
345
  │ │ ├── overlay/ Modal, Drawer, CommandDialog, Lightbox…
222
346
  │ │ ├── media/ VideoPlayer, AudioPlayer, Carousel, Gallery…
223
- │ │ └── utility/ ThemeSwitcher, CopyButton, ResizablePanel
224
- │ ├── hooks/ 18 utility hooks
225
- │ ├── styles/ atlas.css — full design token system
347
+ │ │ └── utility/ ThemeSwitcher, CopyButton, TypewriterText
348
+ │ ├── hooks/ utility hooks
349
+ │ ├── styles/ veloria.css — full design token system
226
350
  │ ├── types/ shared TypeScript types
227
351
  │ ├── utils/ cn() and helpers
228
352
  │ ├── cli/ veloria-ui CLI (add, init, list, diff)
229
- │ ├── provider.tsx AtlasProvider for Next.js
230
- │ └── tailwind.ts atlasPlugin + atlasPreset
353
+ │ ├── provider.tsx VeloriaProvider for Next.js
354
+ │ └── tailwind.ts veloriaPlugin + veloriaPreset
231
355
  ├── package.json
232
356
  ├── tsup.config.ts
233
357
  └── tsconfig.json
@@ -250,4 +374,4 @@ MIT © [JohnDev19](https://github.com/JohnDev19)
250
374
 
251
375
  <div align="center">
252
376
  <sub>Built by JohnDev19</sub>
253
- </div>
377
+ </div>