orio-ui 1.10.2 → 1.10.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/README.md +25 -8
- package/dist/module.json +1 -1
- package/dist/runtime/components/AnimatedContainer.vue +5 -1
- package/dist/runtime/composables/index.d.ts +1 -0
- package/dist/runtime/composables/index.js +1 -0
- package/dist/runtime/composables/useSound.d.ts +7 -0
- package/dist/runtime/composables/useSound.js +13 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.js +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# Orio UI
|
|
2
2
|
|
|
3
|
-
A delightful, lightweight component library for Nuxt 3 applications. Built with TypeScript, fully tested, and designed for modern web development.
|
|
3
|
+
A delightful, lightweight component library for Nuxt 3+ applications. Built with TypeScript, fully tested, and designed for modern web development.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/orio-ui)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|
|
|
8
8
|
## Features
|
|
9
9
|
|
|
10
|
-
✨ **
|
|
10
|
+
✨ **26 Components** - Beautiful, accessible components ready to use
|
|
11
11
|
🎨 **Themeable** - 5 built-in accent themes with light/dark mode support
|
|
12
12
|
🚀 **Auto-imported** - Works seamlessly with Nuxt's auto-import system
|
|
13
13
|
📦 **Tree-shakeable** - Only bundle what you use
|
|
14
14
|
🎯 **TypeScript** - Fully typed for great developer experience
|
|
15
|
-
🧪 **Tested** -
|
|
15
|
+
🧪 **Tested** - 240+ unit tests for reliability
|
|
16
16
|
📱 **Responsive** - Mobile-first design approach
|
|
17
17
|
♿ **Accessible** - ARIA-compliant components
|
|
18
18
|
|
|
@@ -65,31 +65,37 @@ function handleClick() {
|
|
|
65
65
|
|
|
66
66
|
## What's Included
|
|
67
67
|
|
|
68
|
-
### Components (
|
|
68
|
+
### Components (26)
|
|
69
69
|
|
|
70
70
|
#### Form Controls
|
|
71
71
|
|
|
72
72
|
- **Input** - Text input with label support
|
|
73
73
|
- **Textarea** - Multi-line text input
|
|
74
|
+
- **NumberInput** - Numeric input with increment/decrement (horizontal & vertical variants)
|
|
74
75
|
- **CheckBox** - Custom checkbox with icon states
|
|
76
|
+
- **SwitchButton** - Toggle switch component
|
|
75
77
|
- **DatePicker** - Date selection with month/year options
|
|
76
78
|
- **DateRangePicker** - Start and end date selection
|
|
77
79
|
- **Selector** - Generic dropdown selector (single/multi-select)
|
|
78
80
|
- **Tag** - Styled tag/badge component
|
|
81
|
+
- **Badge** - Status badge with variants
|
|
79
82
|
|
|
80
83
|
#### Interactive
|
|
81
84
|
|
|
82
85
|
- **Button** - Primary, secondary, subdued variants with loading/icon support
|
|
86
|
+
- **NavButton** - Navigation button component
|
|
83
87
|
- **Modal** - Animated modal with origin morphing
|
|
84
88
|
- **Popover** - Positioned popover with smart placement
|
|
89
|
+
- **Tooltip** - Hover tooltip component
|
|
85
90
|
|
|
86
91
|
#### Display
|
|
87
92
|
|
|
88
|
-
- **Icon** - SVG icon system with
|
|
93
|
+
- **Icon** - SVG icon system with 97 bundled icons
|
|
89
94
|
- **LoadingSpinner** - Animated loading indicator
|
|
90
95
|
- **EmptyState** - Empty state placeholder
|
|
91
96
|
- **DashedContainer** - Dashed border container with icon
|
|
92
97
|
- **ControlElement** - Form control wrapper
|
|
98
|
+
- **AnimatedContainer** - Flex container with fade-in animation and optional sound
|
|
93
99
|
|
|
94
100
|
#### View
|
|
95
101
|
|
|
@@ -97,12 +103,23 @@ function handleClick() {
|
|
|
97
103
|
- **Dates** - Date range display formatter
|
|
98
104
|
- **Separator** - Visual divider
|
|
99
105
|
|
|
100
|
-
|
|
106
|
+
#### Gallery
|
|
107
|
+
|
|
108
|
+
- **Carousel** - Image carousel component
|
|
109
|
+
|
|
110
|
+
#### Upload
|
|
111
|
+
|
|
112
|
+
- **Upload** - File upload component
|
|
113
|
+
|
|
114
|
+
### Composables (7)
|
|
101
115
|
|
|
102
116
|
- **useTheme** - Theme and color mode management
|
|
103
117
|
- **useModal** - Modal state with animation origin tracking
|
|
104
118
|
- **useFuzzySearch** - Fuzzy search powered by Fuse.js
|
|
105
119
|
- **useApi** - Type-safe API request wrapper
|
|
120
|
+
- **useDecimalFormatter** - Number formatting utilities
|
|
121
|
+
- **usePressAndHold** - Press and hold interaction handler
|
|
122
|
+
- **useSound** - Audio playback with CDN-hosted sounds
|
|
106
123
|
|
|
107
124
|
### Theming
|
|
108
125
|
|
|
@@ -166,8 +183,8 @@ npm run docs:dev
|
|
|
166
183
|
orio-ui/
|
|
167
184
|
├── src/
|
|
168
185
|
│ ├── runtime/
|
|
169
|
-
│ │ ├── components/ #
|
|
170
|
-
│ │ ├── composables/ #
|
|
186
|
+
│ │ ├── components/ # 26 Vue components
|
|
187
|
+
│ │ ├── composables/ # 7 composables
|
|
171
188
|
│ │ ├── assets/css/ # Theme CSS files
|
|
172
189
|
│ │ └── utils/ # Icon registry
|
|
173
190
|
│ └── module.ts # Nuxt Module definition
|
package/dist/module.json
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import { useSound } from "../composables/useSound";
|
|
3
|
+
|
|
2
4
|
interface Props {
|
|
3
5
|
direction?: "column" | "row";
|
|
4
6
|
}
|
|
@@ -6,11 +8,13 @@ interface Props {
|
|
|
6
8
|
withDefaults(defineProps<Props>(), {
|
|
7
9
|
direction: "row",
|
|
8
10
|
});
|
|
11
|
+
|
|
12
|
+
const { play } = useSound();
|
|
9
13
|
</script>
|
|
10
14
|
|
|
11
15
|
<template>
|
|
12
16
|
<div class="animated-container" :class="[direction]">
|
|
13
|
-
<slot />
|
|
17
|
+
<slot :play />
|
|
14
18
|
</div>
|
|
15
19
|
</template>
|
|
16
20
|
|
|
@@ -4,3 +4,4 @@ export { useModal, type ModalProps, type OriginRect } from "./useModal.js";
|
|
|
4
4
|
export { useTheme } from "./useTheme.js";
|
|
5
5
|
export { useDecimalFormatter } from "./useDecimalFormatter.js";
|
|
6
6
|
export { usePressAndHold } from "./usePressAndHold.js";
|
|
7
|
+
export { useSound, type SoundOptions } from "./useSound.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const DEFAULT_SOUND = "https://cdn.jsdelivr.net/gh/oriondor/orio-ui@main/docs/public/sounds/mechanical-switch.wav";
|
|
2
|
+
export function useSound(options = {}) {
|
|
3
|
+
const { src = DEFAULT_SOUND, volume = 0.3 } = options;
|
|
4
|
+
const audio = typeof window !== "undefined" ? new Audio(src) : null;
|
|
5
|
+
const play = () => {
|
|
6
|
+
if (!audio) return;
|
|
7
|
+
audio.currentTime = 0;
|
|
8
|
+
audio.volume = volume;
|
|
9
|
+
audio.play().catch(() => {
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
return { play };
|
|
13
|
+
}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { default as AnimatedContainer } from "./components/AnimatedContainer.vue.js";
|
|
1
2
|
export { default as Button } from "./components/Button.vue.js";
|
|
2
3
|
export { default as NavButton } from "./components/NavButton.vue.js";
|
|
3
4
|
export { default as Input } from "./components/Input.vue.js";
|
package/dist/runtime/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { default as AnimatedContainer } from "./components/AnimatedContainer.vue";
|
|
1
2
|
export { default as Button } from "./components/Button.vue";
|
|
2
3
|
export { default as NavButton } from "./components/NavButton.vue";
|
|
3
4
|
export { default as Input } from "./components/Input.vue";
|