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.
- package/CHANGELOG.md +119 -152
- package/README.md +152 -28
- package/dist/cli/index.js +136 -48
- package/dist/index.d.mts +293 -70
- package/dist/index.d.ts +293 -70
- package/dist/index.js +2669 -1073
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2655 -1071
- package/dist/index.mjs.map +1 -1
- package/dist/provider.d.mts +3 -3
- package/dist/provider.d.ts +3 -3
- package/dist/provider.js +291 -212
- package/dist/provider.js.map +1 -1
- package/dist/provider.mjs +290 -211
- package/dist/provider.mjs.map +1 -1
- package/dist/tailwind.d.ts +12 -16
- package/dist/tailwind.js +18 -13
- package/package.json +145 -25
- package/src/cli/index.ts +10 -10
- 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/hooks/index.ts +10 -7
- package/src/hooks/use-toast.tsx +5 -5
- package/src/index.ts +41 -6
- package/src/provider.tsx +7 -7
- package/src/styles/veloria.css +251 -0
- package/src/tailwind.ts +51 -29
- package/src/types/index.ts +3 -3
- 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
|
|
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.
|
|
10
|
+
## [0.1.4] — 2026-03-16
|
|
11
11
|
|
|
12
|
-
###
|
|
12
|
+
### New Components (10)
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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.
|
|
71
|
+
## [0.1.3] — 2026-03-16
|
|
159
72
|
|
|
160
|
-
###
|
|
73
|
+
### Classic Variant
|
|
161
74
|
|
|
162
|
-
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
|
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
|
-
|
|
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
|
[](https://www.npmjs.com/package/veloria-ui)
|
|
@@ -18,7 +18,7 @@ Works with Tailwind CSS and Next.js out of the box.
|
|
|
18
18
|
[](https://www.typescriptlang.org)
|
|
19
19
|
[](https://github.com/JohnDev19/Veloria-UI)
|
|
20
20
|
|
|
21
|
-
**[Docs](https://veloria
|
|
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 {
|
|
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: [
|
|
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 {
|
|
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
|
-
<
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
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,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,
|
|
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,
|
|
224
|
-
│ ├── hooks/
|
|
225
|
-
│ ├── styles/
|
|
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
|
|
230
|
-
│ └── tailwind.ts
|
|
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>
|