@geniusdynamics/ns8-ui-lib
v1.0.4
Published
Vue 3 library for NethServer 8 UI with TailwindCSS and Shadcn Vue
Maintainers
Readme
NS8 UI Library
A Vue 3 component library for NethServer 8 UI applications, built with TypeScript, TailwindCSS, and Shadcn Vue.
Installation
pnpm add @geniusdynamics/ns8-ui-lib
# or
npm install @geniusdynamics/ns8-ui-lib
# or
yarn add @geniusdynamics/ns8-ui-libCSS Import
Import the library CSS in your main entry file (e.g., main.ts or main.js):
import '@geniusdynamics/ns8-ui-lib/dist/style.css'Features
- Vue 3 - Composition API with TypeScript support
- TailwindCSS - Utility-first CSS framework
- Shadcn Vue - Accessible UI components
- TypeScript - Full type support
- Vite - Fast development and building
Components
NS Components (Enhanced)
NSCheckbox- Checkbox component with validationNSTextInput- Text input with validation and iconsNSToggle- Toggle/switch componentNSTag- Tag/badge componentNSEmptyState- Empty state displayNSInlineNotification- Inline notifications (info, success, warning, error)NSToastNotification- Toast notificationsNSProgress/NSProgressBar- Progress indicatorsNSModal/NSModalTrigger- Modal dialogsNSSlider/NSByteSlider- Slider inputsNSPagination- Pagination componentNSDataTable- Data table with sorting, filtering, and paginationNSWizard- Multi-step wizardNSBackupCard- Backup management cardNSSystemdServiceCard- Systemd service status cardNSSystemInfoCard- System information cardNSLottieAnimation- Lottie animation component
UI Components (Shadcn Vue)
- Button, Card, Dialog, Input, Label, Select
- Sheet, Switch, Table, Tabs, Textarea
Composables
import {
useUtilService,
useDateTimeService,
useQueryParamService,
usePageTitleService,
useTaskService,
useFilterService,
useStorageService,
useIconService
} from '@geniusdynamics/ns8-ui-lib'
// UtilService - UUID generation, error messages, sorting
const { getUuid, getErrorMessage, sortByProperty } = useUtilService()
// DateTimeService - Date formatting
const { formatDate, formatTime } = useDateTimeService()
// QueryParamService - URL query parameter handling
const { getPage, getQueryParamsForApp } = useQueryParamService()
// PageTitleService - Page title management
const { setPageTitle } = usePageTitleService()
// TaskService - NS8 task execution
const {
createModuleTaskForApp,
createClusterTaskForApp,
createErrorNotificationForApp
} = useTaskService()Usage Example
<script setup lang="ts">
import {
NSInlineNotification,
NSTextInput,
NSToggle,
useTaskService
} from '@geniusdynamics/ns8-ui-lib'
const { createModuleTaskForApp } = useTaskService()
</script>
<template>
<NSInlineNotification
variant="success"
title="Success!"
description="Operation completed successfully."
/>
<NSTextInput
label="Hostname"
placeholder="example.org"
/>
<NSToggle
label="Enable feature"
left-text="Off"
right-text="On"
/>
</template>Example Application
See the example-vue3/ directory for a complete NS8 module UI example that demonstrates:
- Status page with services, images, volumes
- Settings page with configuration
- About page with module information
- Side menu navigation
- i18n internationalization
Development
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Build library
pnpm build-lib
# Type check
pnpm type-checkLicense
GPL-3.0-or-later
Author
Genius Dynamics
