@geniusdynamics/ns8-ui-lib
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-lib
CSS 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-check
License
GPL-3.0-or-later
Author
Genius Dynamics
Related Packages
@nethesis/vue-components
This library contains: - a collection of Vue 3 components based on Flowbite - a...
13,853
3
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 1.0.9 | ^3.3.0 | GPL-3.0-or-later | |
| 1.0.8 | ^3.3.0 | GPL-3.0-or-later | |
| 1.0.7 | ^3.3.0 | GPL-3.0-or-later | |
| 1.0.6 | ^3.3.0 | GPL-3.0-or-later | |
| 1.0.5 | ^3.3.0 | GPL-3.0-or-later | |
| 1.0.4 | ^3.3.0 | GPL-3.0-or-later | |
| 1.0.3 | ^3.3.0 | GPL-3.0-or-later | |
| 1.0.2 | ^3.3.0 | GPL-3.0-or-later | |
| 1.0.1 | ^3.3.0 | GPL-3.0-or-later | |
| 1.0.0 | ^3.3.0 | GPL-3.0-or-later |