Vue 3 component library for building kiosk-style applications on the Eventfinity platform
npm install @gramercytech/gx-componentkitA Vue 3 component library for building kiosk-style applications on the Eventfinity platform.
Gx ComponentKit provides a comprehensive set of Vue 3 components and composables designed specifically for creating interactive kiosk applications. It includes everything you need to build engaging user experiences with camera functionality, media playback, barcode scanning, and more.
- 🎯 Kiosk-focused Components: Pre-built page components for common kiosk workflows
- 📷 Media Handling: Camera, video player, and audio visualization components
- 🔍 Scanning: Barcode and QR code scanning capabilities
- 🎨 Theming: Comprehensive theming system with CSS variables
- 📱 Responsive: Mobile-first design with touch-friendly interfaces
- ⚡ Vue 3: Built with Vue 3 Composition API and TypeScript
- 🛠 Composables: Reusable logic for media, animations, and more
``bash`
npm install @gramercytech/gx-componentkit
`javascript
import { createApp } from 'vue'
import GxComponentKit from '@gramercytech/gx-componentkit'
import '@gramercytech/gx-componentkit/style.css'
const app = createApp(App)
app.use(GxComponentKit)
app.mount('#app')
`
`javascript`
import { GxPageStart, GxModal, GxCountdown } from '@gramercytech/gx-componentkit'
import '@gramercytech/gx-componentkit/style.css'
- GxPageStart - Landing page with logo, title, and start button
- GxPageInstructions - Instructions and user input collection
- GxPagePrompt - Prompt selection and user interaction
- GxPageCamera - Camera capture interface
- GxPageCameraReview - Review captured media
- GxPageResults - Display results and options
- GxPageFinal - Final confirmation and completion
- GxPageLoading - Loading states with spinner
- GxPageShare - Social sharing interface
- GxPageForm - Form input collection
- GxPageQuiz - Quiz and question interface
- GxPageTerms - Terms and conditions display
- GxModal - Customizable modal dialogs
- GxCountdown - Countdown timer with progress
- GxVideoPlayer - Video player with custom controls
- GxCamera - Camera capture component
- GxAudioVisualizer - Audio visualization
- GxBarcodeScanner - Barcode/QR code scanner
- GxThemeWrapper - Theme application wrapper
`javascript
import { useMedia } from '@gramercytech/gx-componentkit'
const {
videoStream,
audioStream,
startRecording,
stopRecording,
photoBlob,
setVideoDevice
} = useMedia()
`
`javascript
import { useAnimations } from '@gramercytech/gx-componentkit'
const {
fadeIn,
fadeOut,
slideIn,
slideOut,
addAnimation
} = useAnimations()
`
`javascript
import { useScanning } from '@gramercytech/gx-componentkit'
const {
isScanning,
scanResult,
startScanning,
stopScanning
} = useScanning()
`
`javascript
import { useErrors } from '@gramercytech/gx-componentkit'
const {
errorMessages,
addError,
clearErrors
} = useErrors()
`
`javascript
import { useCameraBorder } from '@gramercytech/gx-componentkit'
const {
borderStyles,
setBorderColor,
animateBorder
} = useCameraBorder()
`
`vue
:asset-urls="assetUrls"
:strings-list="stringsList"
:theme="theme"
@start="handleStart"
@idle-timeout="handleTimeout"
/>
`
`vue
`
The library supports comprehensive theming through CSS variables:
`css`
:root {
--gx-primary-color: #007bff;
--gx-secondary-color: #6c757d;
--gx-background-color: #ffffff;
--gx-text-color: #333333;
--gx-border-radius: 8px;
}
Full TypeScript support with exported types:
`typescript`
import type {
PluginVars,
AssetList,
StringsList,
Theme,
MediaDevice,
RecordingOptions
} from '@gramercytech/gx-componentkit'
- Chrome 80+
- Firefox 75+
- Safari 13+
- Edge 80+
`bashInstall dependencies
npm install
Contributing
1. Fork the repository
2. Create your feature branch (
git checkout -b feature/amazing-feature)
3. Commit your changes (git commit -m 'Add some amazing feature')
4. Push to the branch (git push origin feature/amazing-feature`)ISC License - see LICENSE file for details.
- gx-toolkit - Development tools for the platform
- z-plugin-components - Legacy component library (being migrated to this library)
For support and questions, please open an issue on GitHub or contact the development team.