veloria-ui 0.1.3 → 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.
- package/CHANGELOG.md +90 -145
- package/README.md +139 -15
- package/dist/cli/index.js +125 -35
- package/dist/index.d.mts +283 -60
- package/dist/index.d.ts +283 -60
- package/dist/index.js +2659 -1064
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2647 -1064
- package/dist/index.mjs.map +1 -1
- package/dist/provider.js +288 -209
- package/dist/provider.js.map +1 -1
- package/dist/provider.mjs +288 -209
- package/dist/provider.mjs.map +1 -1
- package/dist/tailwind.d.ts +7 -11
- package/dist/tailwind.js +9 -4
- package/package.json +141 -19
- package/src/cli/registry.ts +143 -101
- package/src/components/basic/Button.tsx +13 -7
- package/src/components/basic/IconButton.tsx +8 -1
- package/src/components/basic/index.tsx +120 -92
- package/src/components/data-display/AuroraCard.tsx +117 -0
- package/src/components/data-display/FileCard.tsx +231 -0
- package/src/components/data-display/GaugeChart.tsx +254 -0
- package/src/components/data-display/PricingCard.tsx +181 -0
- package/src/components/data-display/RadialProgressChart.tsx +175 -0
- package/src/components/data-display/SparklineChart.tsx +139 -0
- package/src/components/data-display/index.tsx +467 -470
- package/src/components/feedback/StepProgress.tsx +96 -0
- package/src/components/feedback/index.tsx +194 -144
- package/src/components/forms/AvatarUpload.tsx +251 -0
- package/src/components/forms/NumberInput.tsx +181 -0
- package/src/components/forms/index.tsx +293 -100
- package/src/components/utility/TypewriterText.tsx +121 -0
- package/src/components/utility/index.tsx +108 -95
- package/src/index.ts +36 -1
- package/src/styles/veloria.css +93 -82
- package/src/tailwind.ts +45 -23
package/CHANGELOG.md
CHANGED
|
@@ -1,13 +1,97 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
All notable changes to Veloria UI are documented here.
|
|
3
|
+
All notable changes to Veloria UI are documented here.
|
|
4
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.
|
|
10
|
+
## [0.1.4] — 2026-03-16
|
|
11
|
+
|
|
12
|
+
### New Components (10)
|
|
13
|
+
|
|
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.
|
|
18
|
+
|
|
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"`.
|
|
22
|
+
|
|
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.
|
|
26
|
+
|
|
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
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## [0.1.3] — 2026-03-16
|
|
72
|
+
|
|
73
|
+
### Classic Variant
|
|
74
|
+
|
|
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
|
|
11
95
|
|
|
12
96
|
### Branding & Naming
|
|
13
97
|
|
|
@@ -21,15 +105,16 @@ This project follows [Semantic Versioning](https://semver.org).
|
|
|
21
105
|
- Renamed localStorage theme key from `atlas-theme` to `veloria-theme`
|
|
22
106
|
- Removed legacy `atlas` bin alias from `package.json`
|
|
23
107
|
- Updated all homepage and docs URLs to `https://ui-veloria.vercel.app/`
|
|
24
|
-
- Removed hardcoded component count from descriptions and CLI copy
|
|
25
108
|
|
|
26
109
|
### Bug Fixes
|
|
27
110
|
|
|
28
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`
|
|
29
114
|
|
|
30
115
|
---
|
|
31
116
|
|
|
32
|
-
## [0.1.2] — 2026-03-15
|
|
117
|
+
## [0.1.2] — 2026-03-15
|
|
33
118
|
|
|
34
119
|
### New Components (20)
|
|
35
120
|
|
|
@@ -68,7 +153,7 @@ This project follows [Semantic Versioning](https://semver.org).
|
|
|
68
153
|
|
|
69
154
|
---
|
|
70
155
|
|
|
71
|
-
## [0.1.1] — 2026-03-13
|
|
156
|
+
## [0.1.1] — 2026-03-13
|
|
72
157
|
|
|
73
158
|
### Build fixes
|
|
74
159
|
|
|
@@ -86,143 +171,3 @@ This project follows [Semantic Versioning](https://semver.org).
|
|
|
86
171
|
### Initial Release
|
|
87
172
|
|
|
88
173
|
First public release of Veloria UI. A full CLI, hooks, a Tailwind plugin, and a complete CSS token system with light + dark mode.
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
#### veloria-ui
|
|
93
|
-
|
|
94
|
-
**Basic (10)**
|
|
95
|
-
- `Button` — solid, outline, ghost, soft, link, danger variants · sizes xs–xl · loading state · left/right icon slots
|
|
96
|
-
- `IconButton` — square or circular icon-only button with all button variants
|
|
97
|
-
- `Link` — anchor with external link indicator and underline control
|
|
98
|
-
- `Badge` — compact label with 5 color variants and optional dot
|
|
99
|
-
- `Avatar` — image with fallback initials, online/offline status ring, 6 sizes
|
|
100
|
-
- `AvatarGroup` — stacked avatar row with overflow count
|
|
101
|
-
- `Divider` — horizontal/vertical with optional center label
|
|
102
|
-
- `Tag` — closable colored tag with icon slot
|
|
103
|
-
- `Chip` — toggleable with avatar/icon support and remove button
|
|
104
|
-
- `Tooltip` — Radix-powered, all four sides, configurable delay
|
|
105
|
-
|
|
106
|
-
**Layout (10)**
|
|
107
|
-
- `Container` — responsive max-width wrapper with padding control
|
|
108
|
-
- `Stack` — flex column/row with gap, align, justify, and divider support
|
|
109
|
-
- `Grid` — CSS Grid with column/row/gap config
|
|
110
|
-
- `Flex` — inline flex with full directional control
|
|
111
|
-
- `Section` — semantic `<section>` with vertical padding presets
|
|
112
|
-
- `Spacer` — invisible spacer
|
|
113
|
-
- `AspectRatio` — Radix aspect-ratio wrapper
|
|
114
|
-
- `Center` — flex centering helper
|
|
115
|
-
- `ScrollArea` — custom scrollbar via Radix ScrollArea
|
|
116
|
-
- `Masonry` — CSS multi-column masonry grid
|
|
117
|
-
|
|
118
|
-
**Navigation (10)**
|
|
119
|
-
- `Navbar` — sticky + glass-blur top bar
|
|
120
|
-
- `Sidebar` — collapsible with width transition
|
|
121
|
-
- `Menu` / `MenuItem` — vertical nav with active/disabled states
|
|
122
|
-
- `DropdownMenu` — full Radix Dropdown with all sub-primitives
|
|
123
|
-
- `Breadcrumb` — accessible trail with custom separator
|
|
124
|
-
- `Pagination` — page numbers, ellipsis, prev/next
|
|
125
|
-
- `Tabs` — line, pills, enclosed variants · Radix powered
|
|
126
|
-
- `Stepper` — horizontal/vertical multi-step progress indicator
|
|
127
|
-
- `CommandDialog` — ⌘K command palette via cmdk
|
|
128
|
-
|
|
129
|
-
**Forms (10)**
|
|
130
|
-
- `Input` — left/right icon slots, sizes, error state
|
|
131
|
-
- `TextArea` — resize control, error state
|
|
132
|
-
- `Select` — full Radix Select with all sub-primitives
|
|
133
|
-
- `Checkbox` — with label, description, error state
|
|
134
|
-
- `RadioGroup` — per-option labels and descriptions
|
|
135
|
-
- `Switch` — three sizes, label, description
|
|
136
|
-
- `Slider` — range slider
|
|
137
|
-
- `RangeSlider` — dual-thumb slider
|
|
138
|
-
- `DatePicker` — calendar popover with keyboard navigation
|
|
139
|
-
- `TimePicker` — hour/minute/second with AM/PM toggle
|
|
140
|
-
|
|
141
|
-
**Advanced Forms (10)**
|
|
142
|
-
- `FileUpload` — drag-and-drop with preview, size limit, MIME type filter
|
|
143
|
-
- `OTPInput` — SMS-style one-time-password input
|
|
144
|
-
- `ColorPicker` — HEX/RGB/HSL input with swatch palette
|
|
145
|
-
- `SearchInput` — debounced search with clear button
|
|
146
|
-
- `PasswordInput` — toggle visibility with strength meter
|
|
147
|
-
- `Combobox` — searchable dropdown with keyboard navigation
|
|
148
|
-
- `MultiSelect` — tag-style multi-value select
|
|
149
|
-
- `FormField` — label + input + error wrapper
|
|
150
|
-
- `FormLabel` — accessible label
|
|
151
|
-
- `FormError` — error message slot
|
|
152
|
-
|
|
153
|
-
**Data Display (10)**
|
|
154
|
-
- `Card` / `CardHeader` / `CardContent` / `CardFooter`
|
|
155
|
-
- `Table` — sortable columns, sticky header
|
|
156
|
-
- `DataTable` — full-featured table with pagination and row selection
|
|
157
|
-
- `List` / `ListItem`
|
|
158
|
-
- `Statistic` — large number with label and trend
|
|
159
|
-
- `Timeline` — vertical event list
|
|
160
|
-
- `Calendar` — month grid with event dots
|
|
161
|
-
- `Chart` — wrapper around Recharts with theme tokens
|
|
162
|
-
- `CodeBlock` — syntax-highlighted code with copy button
|
|
163
|
-
|
|
164
|
-
**Feedback (10)**
|
|
165
|
-
- `Alert` — inline alert with 5 variants and icon slot
|
|
166
|
-
- `Toast` — Radix Toast with 5 variants · programmatic via `useToast`
|
|
167
|
-
- `Snackbar` — bottom-anchored status message
|
|
168
|
-
- `Progress` — linear with animated fill
|
|
169
|
-
- `CircularProgress` — SVG ring with percentage label
|
|
170
|
-
- `Skeleton` — text, rect, circle variants
|
|
171
|
-
- `LoadingSpinner` — 4 sizes · 3 variants
|
|
172
|
-
- `EmptyState` — icon + title + description + action slot
|
|
173
|
-
- `StatusIndicator` — colored dot with pulse animation
|
|
174
|
-
- `Notification` — card-style notification with timestamp
|
|
175
|
-
|
|
176
|
-
**Overlay (10)**
|
|
177
|
-
- `Modal` — centered dialog with close button
|
|
178
|
-
- `Dialog` — full Radix Dialog with all sub-primitives
|
|
179
|
-
- `Drawer` — side-sheet with 4 sides
|
|
180
|
-
- `Sheet` — lightweight Drawer alias
|
|
181
|
-
- `Popover` — Radix Popover
|
|
182
|
-
- `HoverCard` — hover-triggered card
|
|
183
|
-
- `ContextMenu` — right-click menu via Radix
|
|
184
|
-
- `CommandDialog` — ⌘K palette
|
|
185
|
-
- `Lightbox` — full-screen image viewer with zoom
|
|
186
|
-
- `ImageViewer` — in-place image pan and zoom
|
|
187
|
-
|
|
188
|
-
**Media (5)**
|
|
189
|
-
- `Image` — next/image wrapper with blur placeholder and fallback
|
|
190
|
-
- `VideoPlayer` — custom controls, poster, autoplay, loop, track support
|
|
191
|
-
- `AudioPlayer` — custom UI with seek bar, cover art
|
|
192
|
-
- `Carousel` — autoplay, dots, arrows, loop, slidesPerView
|
|
193
|
-
- `Gallery` — responsive image grid with click handler
|
|
194
|
-
|
|
195
|
-
**Utility (5)**
|
|
196
|
-
- `ThemeSwitcher` — icon / toggle / select variants
|
|
197
|
-
- `CopyButton` — icon or labelled button with success feedback
|
|
198
|
-
- `KeyboardShortcut` — styled `<kbd>` shortcut display
|
|
199
|
-
- `ResizablePanel` — drag-to-resize with min/max constraints
|
|
200
|
-
- `DragDropArea` — accessible file drop zone
|
|
201
|
-
|
|
202
|
-
#### Hooks
|
|
203
|
-
- `useDisclosure` — open/close state management
|
|
204
|
-
- `useMediaQuery` — window media query subscription
|
|
205
|
-
- `useBreakpoint` — Tailwind breakpoint helper
|
|
206
|
-
- `useClipboard` — clipboard copy with timeout feedback
|
|
207
|
-
- `useLocalStorage` — persistent state
|
|
208
|
-
- `useTheme` — theme switching (persists to localStorage)
|
|
209
|
-
- `useDebounce` — debounced value
|
|
210
|
-
- `useOnClickOutside` — outside click detection
|
|
211
|
-
- `useKeydown` — keyboard shortcut listener with modifier support
|
|
212
|
-
- `useMounted` — SSR-safe mount check
|
|
213
|
-
- `useToast` — programmatic toast notifications
|
|
214
|
-
|
|
215
|
-
#### Infrastructure
|
|
216
|
-
- Tailwind CSS plugin + preset (`veloriaPlugin`, `veloriaPreset`)
|
|
217
|
-
- Full CSS design token system — light and dark themes
|
|
218
|
-
- `VeloriaProvider` for Next.js App Router
|
|
219
|
-
- TypeScript strict throughout — full named type exports
|
|
220
|
-
- Tree-shakeable ESM + CJS dual build via tsup
|
|
221
|
-
- Turbo monorepo setup
|
|
222
|
-
|
|
223
|
-
#### veloria-ui CLI
|
|
224
|
-
- `init` — project setup wizard (detects Next.js, writes veloria.config.json)
|
|
225
|
-
- `add` — copies components + installs npm deps, resolves Veloria UI peer deps
|
|
226
|
-
- `list` — browse all components filtered by category
|
|
227
|
-
- `diff` — compare local copy to latest (registry fetch, coming soon)
|
|
228
|
-
- Auto-detects npm / pnpm / yarn / bun
|
package/README.md
CHANGED
|
@@ -122,23 +122,27 @@ After running `add`, a file like `components/ui/button/index.tsx` appears in you
|
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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,13 +337,14 @@ 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,
|
|
340
|
+
│ │ ├── forms/ Input, Select, Checkbox, Slider, NumberInput, AvatarUpload…
|
|
218
341
|
│ │ ├── advanced-forms/ OTPInput, ColorPicker, Combobox, MultiSelect…
|
|
219
|
-
│ │ ├── data-display/ Card, DataTable,
|
|
220
|
-
│ │
|
|
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,
|
|
347
|
+
│ │ └── utility/ ThemeSwitcher, CopyButton, TypewriterText…
|
|
224
348
|
│ ├── hooks/ utility hooks
|
|
225
349
|
│ ├── styles/ veloria.css — full design token system
|
|
226
350
|
│ ├── types/ shared TypeScript types
|
|
@@ -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>
|