@nice2dev/ui-iot 1.0.10

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/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ .nice-iot-dashboard{display:flex;flex-direction:column;height:100%;font-family:system-ui,-apple-system,sans-serif;background:var(--nice-bg, #f4f5f7);color:var(--nice-text, #1a1a1a)}.nice-iot-dashboard__header{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:#fff;border-bottom:1px solid var(--nice-border, #ddd)}.nice-iot-dashboard__header h1{margin:0;font-size:1.25rem;font-weight:600}.nice-iot-dashboard__stats{display:flex;gap:1rem;margin-left:1rem}.nice-iot-dashboard__stat{display:flex;align-items:center;gap:.25rem;font-size:.875rem}.nice-iot-dashboard__stat--alarms{color:#dc3545;font-weight:500}.nice-iot-dashboard__nav{display:flex;gap:.25rem;margin-left:auto}.nice-iot-dashboard__nav button{padding:.5rem 1rem;border:none;background:transparent;border-radius:4px;cursor:pointer;font-size:.875rem}.nice-iot-dashboard__nav button:hover{background:var(--nice-hover, #e9ecef)}.nice-iot-dashboard__nav button.active{background:var(--nice-primary, #0066cc);color:#fff}.nice-iot-dashboard__actions button{padding:.5rem 1rem;border:1px solid var(--nice-border, #ddd);background:#fff;border-radius:4px;cursor:pointer}.nice-iot-dashboard__main{display:flex;flex:1;overflow:hidden}.nice-iot-dashboard__palette{width:200px;padding:.5rem;background:#fff;border-right:1px solid var(--nice-border, #ddd);overflow-y:auto}.nice-iot-dashboard__palette h4{margin:.5rem 0;font-size:.75rem;color:var(--nice-text-muted, #6c757d);text-transform:uppercase}.nice-iot-dashboard__palette-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem;border:1px solid var(--nice-border, #ddd);background:#fff;border-radius:4px;cursor:pointer;font-size:.875rem;margin-bottom:.25rem}.nice-iot-dashboard__palette-item:hover{background:var(--nice-hover, #e9ecef)}.nice-iot-dashboard__grid{flex:1;display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:60px;gap:.5rem;padding:1rem;overflow:auto}.nice-iot-dashboard__empty{grid-column:1 / -1;display:flex;align-items:center;justify-content:center;color:var(--nice-text-muted, #6c757d);min-height:200px}.nice-iot-dashboard__widget{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;overflow:hidden}.nice-iot-dashboard__widget-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-bottom:1px solid var(--nice-border, #eee);background:var(--nice-bg-secondary, #f8f9fa)}.nice-iot-dashboard__widget-icon{font-size:.875rem}.nice-iot-dashboard__widget-title{flex:1;font-size:.8125rem;font-weight:500}.nice-iot-dashboard__widget-delete{padding:0;width:20px;height:20px;border:none;background:transparent;cursor:pointer;color:#dc3545}.nice-iot-dashboard__widget-content{flex:1;padding:.75rem;overflow:auto}.nice-iot-dashboard__device-list-item{display:flex;align-items:center;gap:.5rem;padding:.375rem 0;border-bottom:1px solid #eee;font-size:.8125rem}.nice-iot-dashboard__device-status{width:8px;height:8px;border-radius:50%}.nice-iot-dashboard__device-type{margin-left:auto;font-size:.75rem;color:var(--nice-text-muted, #6c757d)}.nice-iot-dashboard__status-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}.nice-iot-dashboard__status-card{display:flex;flex-direction:column;align-items:center;padding:.5rem;background:var(--nice-bg-secondary, #f8f9fa);border-radius:4px}.nice-iot-dashboard__status-indicator{width:12px;height:12px;border-radius:50%}.nice-iot-dashboard__status-count{font-size:1.5rem;font-weight:700}.nice-iot-dashboard__status-label{font-size:.75rem;color:var(--nice-text-muted, #6c757d);text-transform:capitalize}.nice-iot-dashboard__gauge svg{width:100%;height:100%}.nice-iot-dashboard__chart-placeholder,.nice-iot-dashboard__map-placeholder,.nice-iot-dashboard__control-placeholder,.nice-iot-dashboard__widget-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;color:var(--nice-text-muted, #6c757d);height:100%}.nice-iot-dashboard__kpi{text-align:center}.nice-iot-dashboard__kpi-value{font-size:2.5rem;font-weight:700;color:var(--nice-primary, #0066cc)}.nice-iot-dashboard__kpi-label{font-size:.875rem;color:var(--nice-text-muted, #6c757d)}.nice-iot-dashboard__alarm-list{display:flex;flex-direction:column;gap:.5rem}.nice-iot-dashboard__alarm-empty{text-align:center;color:var(--nice-text-muted, #6c757d);padding:1rem}.nice-iot-dashboard__alarm-item{display:flex;gap:.5rem;padding:.5rem;border-radius:4px;font-size:.8125rem}.nice-iot-dashboard__alarm-item--critical,.nice-iot-dashboard__alarm-item--high{background:#f8d7da}.nice-iot-dashboard__alarm-item--medium{background:#fff3cd}.nice-iot-dashboard__alarm-severity{text-transform:uppercase;font-size:.625rem;font-weight:600}.nice-iot-dashboard__devices{display:flex;flex:1;overflow:hidden}.nice-iot-dashboard__devices-toolbar{padding:.75rem 1rem;background:#fff;border-bottom:1px solid var(--nice-border, #ddd)}.nice-iot-dashboard__devices-toolbar input{padding:.5rem;border:1px solid var(--nice-border, #ddd);border-radius:4px;width:300px}.nice-iot-dashboard__device-grid{flex:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;padding:1rem;overflow:auto}.nice-iot-dashboard__device-card{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;cursor:pointer;transition:box-shadow .2s}.nice-iot-dashboard__device-card:hover{box-shadow:0 2px 8px #00000026}.nice-iot-dashboard__device-card--selected{box-shadow:0 0 0 2px var(--nice-primary, #0066cc)}.nice-iot-dashboard__device-card-header{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-bottom:1px solid #eee}.nice-iot-dashboard__device-name{font-weight:500}.nice-iot-dashboard__device-card-body{padding:.75rem 1rem}.nice-iot-dashboard__device-info{display:flex;gap:1rem;font-size:.8125rem;color:var(--nice-text-muted, #6c757d)}.nice-iot-dashboard__device-lastseen{font-size:.75rem;color:var(--nice-text-muted, #6c757d);margin-top:.5rem}.nice-iot-dashboard__device-capabilities{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.5rem}.nice-iot-dashboard__capability-badge{padding:.125rem .375rem;background:var(--nice-bg-secondary, #e9ecef);border-radius:4px;font-size:.75rem}.nice-iot-dashboard__device-detail{width:350px;background:#fff;border-left:1px solid var(--nice-border, #ddd);display:flex;flex-direction:column}.nice-iot-dashboard__device-detail-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--nice-border, #ddd)}.nice-iot-dashboard__device-detail-header h3{margin:0;font-size:1rem}.nice-iot-dashboard__device-detail-content{flex:1;overflow-y:auto;padding:1rem}.nice-iot-dashboard__device-detail-content section{margin-bottom:1.5rem}.nice-iot-dashboard__device-detail-content h4{margin:0 0 .5rem;font-size:.8125rem;color:var(--nice-text-muted, #6c757d);text-transform:uppercase}.nice-iot-dashboard__detail-row{display:flex;justify-content:space-between;padding:.375rem 0;font-size:.875rem;border-bottom:1px solid #eee}.nice-iot-dashboard__status-badge{padding:.125rem .5rem;border-radius:4px;color:#fff;font-size:.75rem}.nice-iot-dashboard__capabilities-list{display:flex;flex-direction:column;gap:.25rem}.nice-iot-dashboard__capability-item{display:flex;align-items:center;gap:.5rem;padding:.375rem;background:var(--nice-bg-secondary, #f8f9fa);border-radius:4px;font-size:.8125rem}.nice-iot-dashboard__capability-name{flex:1}.nice-iot-dashboard__capability-type{color:var(--nice-text-muted, #6c757d);font-size:.75rem}.nice-iot-dashboard__capability-control{padding:.25rem .5rem;border:1px solid var(--nice-primary, #0066cc);background:transparent;color:var(--nice-primary, #0066cc);border-radius:4px;cursor:pointer;font-size:.75rem}.nice-iot-dashboard__alarms{flex:1;padding:1rem;overflow:auto}.nice-iot-dashboard__alarm-table{width:100%;background:#fff;border-collapse:collapse;border-radius:8px;overflow:hidden}.nice-iot-dashboard__alarm-table th,.nice-iot-dashboard__alarm-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--nice-border, #ddd)}.nice-iot-dashboard__alarm-table th{background:var(--nice-bg-secondary, #f8f9fa);font-weight:500;font-size:.875rem}.nice-iot-dashboard__alarm-row--critical,.nice-iot-dashboard__alarm-row--high{background:#fff5f5}.nice-iot-dashboard__severity{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500;text-transform:uppercase}.nice-iot-dashboard__severity--critical{background:#dc3545;color:#fff}.nice-iot-dashboard__severity--high{background:#fd7e14;color:#fff}.nice-iot-dashboard__severity--medium{background:#ffc107;color:#212529}.nice-iot-dashboard__severity--low{background:#28a745;color:#fff}.nice-iot-dashboard__no-alarms{text-align:center;color:var(--nice-text-muted, #6c757d);padding:2rem}.nice-edge-manager{display:flex;flex-direction:column;height:100%;font-family:system-ui,-apple-system,sans-serif;background:var(--nice-bg, #f4f5f7)}.nice-edge-manager__header{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:#fff;border-bottom:1px solid var(--nice-border, #ddd)}.nice-edge-manager__header h1{margin:0;font-size:1.25rem}.nice-edge-manager__nav{display:flex;gap:.25rem;margin-left:auto}.nice-edge-manager__nav button{padding:.5rem 1rem;border:none;background:transparent;border-radius:4px;cursor:pointer}.nice-edge-manager__nav button.active{background:var(--nice-primary, #0066cc);color:#fff}.nice-edge-manager__main{display:flex;flex:1;overflow:hidden}.nice-edge-manager__nodes,.nice-edge-manager__modules{flex:1;padding:1rem;overflow:auto}.nice-edge-manager__modules-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.nice-edge-manager__modules-header h3{margin:0}.nice-edge-manager__deploy-btn{padding:.5rem 1rem;background:var(--nice-primary, #0066cc);color:#fff;border:none;border-radius:4px;cursor:pointer}.nice-edge-manager__node-grid,.nice-edge-manager__module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.nice-edge-manager__empty,.nice-edge-manager__no-selection{text-align:center;color:var(--nice-text-muted, #6c757d);padding:2rem}.nice-edge-manager__node-card,.nice-edge-manager__module-card{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;cursor:pointer}.nice-edge-manager__node-card--selected{box-shadow:0 0 0 2px var(--nice-primary, #0066cc)}.nice-edge-manager__node-header,.nice-edge-manager__module-header{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-bottom:1px solid #eee}.nice-edge-manager__node-status,.nice-edge-manager__module-status{width:10px;height:10px;border-radius:50%}.nice-edge-manager__node-name,.nice-edge-manager__module-name{flex:1;font-weight:500}.nice-edge-manager__node-type,.nice-edge-manager__module-version{font-size:.75rem;color:var(--nice-text-muted, #6c757d)}.nice-edge-manager__node-body,.nice-edge-manager__module-body{padding:.75rem 1rem}.nice-edge-manager__node-info{display:flex;gap:1rem;font-size:.8125rem;color:var(--nice-text-muted, #6c757d)}.nice-edge-manager__node-metrics{margin-top:.75rem}.nice-edge-manager__metric{display:flex;align-items:center;gap:.5rem;margin-bottom:.375rem;font-size:.8125rem}.nice-edge-manager__metric-label{width:40px;color:var(--nice-text-muted, #6c757d)}.nice-edge-manager__metric-bar,.nice-edge-manager__resource-bar{flex:1;height:6px;background:#e9ecef;border-radius:3px;overflow:hidden}.nice-edge-manager__metric-fill,.nice-edge-manager__resource-fill{height:100%;background:var(--nice-primary, #0066cc)}.nice-edge-manager__metric-value{width:40px;text-align:right;font-size:.75rem}.nice-edge-manager__node-modules{margin-top:.5rem;font-size:.8125rem;color:var(--nice-text-muted, #6c757d)}.nice-edge-manager__module-image{font-size:.8125rem;color:var(--nice-text-muted, #6c757d);font-family:monospace}.nice-edge-manager__module-resources,.nice-edge-manager__module-ports{font-size:.75rem;color:var(--nice-text-muted, #6c757d);margin-top:.25rem}.nice-edge-manager__module-actions{display:flex;gap:.5rem;padding:.75rem 1rem;border-top:1px solid #eee}.nice-edge-manager__module-actions button{padding:.375rem .75rem;border:1px solid var(--nice-border, #ddd);background:#fff;border-radius:4px;cursor:pointer;font-size:.8125rem}.nice-edge-manager__module-remove{color:#dc3545}.nice-edge-manager__detail{width:350px;background:#fff;border-left:1px solid var(--nice-border, #ddd);display:flex;flex-direction:column}.nice-edge-manager__detail-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--nice-border, #ddd)}.nice-edge-manager__detail-header h3{margin:0;font-size:1rem}.nice-edge-manager__detail-actions{display:flex;gap:.5rem}.nice-edge-manager__detail-actions button{padding:.25rem .5rem;border:1px solid var(--nice-border, #ddd);background:#fff;border-radius:4px;cursor:pointer}.nice-edge-manager__detail-content{flex:1;overflow-y:auto;padding:1rem}.nice-edge-manager__detail-content section{margin-bottom:1.5rem}.nice-edge-manager__detail-content h4{margin:0 0 .5rem;font-size:.8125rem;color:var(--nice-text-muted, #6c757d);text-transform:uppercase}.nice-edge-manager__detail-row{display:flex;justify-content:space-between;padding:.375rem 0;font-size:.875rem;border-bottom:1px solid #eee}.nice-edge-manager__status-badge{padding:.125rem .5rem;border-radius:4px;color:#fff;font-size:.75rem}.nice-edge-manager__resource-chart{display:flex;flex-direction:column;gap:.5rem}.nice-edge-manager__resource-item{display:flex;align-items:center;gap:.5rem;font-size:.8125rem}.nice-edge-manager__resource-item span:first-child{width:50px}.nice-edge-manager__network-stats{display:flex;gap:1rem;margin-top:.5rem;font-size:.8125rem;color:var(--nice-text-muted, #6c757d)}.nice-edge-manager__dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.nice-edge-manager__dialog{background:#fff;border-radius:8px;width:400px;max-width:90vw;box-shadow:0 4px 20px #0003}.nice-edge-manager__dialog-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--nice-border, #ddd)}.nice-edge-manager__dialog-header h3{margin:0}.nice-edge-manager__dialog-content{padding:1rem}.nice-edge-manager__dialog-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem;border-top:1px solid var(--nice-border, #ddd)}.nice-edge-manager__dialog-footer button{padding:.5rem 1rem;border:1px solid var(--nice-border, #ddd);background:#fff;border-radius:4px;cursor:pointer}.nice-edge-manager__deploy-confirm{background:var(--nice-primary, #0066cc)!important;color:#fff;border-color:var(--nice-primary, #0066cc)!important}.nice-edge-manager__field{margin-bottom:1rem}.nice-edge-manager__field label{display:block;margin-bottom:.25rem;font-size:.875rem;font-weight:500}.nice-edge-manager__field input,.nice-edge-manager__field select{width:100%;padding:.5rem;border:1px solid var(--nice-border, #ddd);border-radius:4px;font-size:.875rem}.nice-protocol-config{display:flex;flex-direction:column;height:100%;font-family:system-ui,-apple-system,sans-serif;background:var(--nice-bg, #fff)}.nice-protocol-config__header{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid var(--nice-border, #ddd)}.nice-protocol-config__header h2{margin:0;font-size:1.25rem}.nice-protocol-config__protocol-selector{display:flex;align-items:center;gap:.5rem}.nice-protocol-config__protocol-selector select{padding:.5rem;border:1px solid var(--nice-border, #ddd);border-radius:4px}.nice-protocol-config__content{flex:1;overflow-y:auto;padding:1rem}.nice-protocol-config__section h3{margin:0 0 1rem;font-size:1rem}.nice-protocol-config__section h4{margin:1.5rem 0 .5rem;font-size:.9375rem}.nice-protocol-config__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}.nice-protocol-config__field{display:flex;flex-direction:column}.nice-protocol-config__field--full{grid-column:1 / -1}.nice-protocol-config__field label{margin-bottom:.25rem;font-size:.875rem;font-weight:500}.nice-protocol-config__field input,.nice-protocol-config__field select{padding:.5rem;border:1px solid var(--nice-border, #ddd);border-radius:4px;font-size:.875rem}.nice-protocol-config__field input[type=checkbox]{width:auto;margin-right:.5rem}.nice-protocol-config__topics,.nice-protocol-config__resources,.nice-protocol-config__nodes{display:flex;flex-direction:column;gap:.5rem}.nice-protocol-config__topic-row,.nice-protocol-config__resource-row,.nice-protocol-config__node-row{display:flex;gap:.5rem}.nice-protocol-config__topic-row input,.nice-protocol-config__resource-row input,.nice-protocol-config__node-row input{flex:1;padding:.375rem .5rem;border:1px solid var(--nice-border, #ddd);border-radius:4px}.nice-protocol-config__topic-row select{padding:.375rem .5rem;border:1px solid var(--nice-border, #ddd);border-radius:4px}.nice-protocol-config__topic-row button,.nice-protocol-config__resource-row button,.nice-protocol-config__node-row button{padding:.375rem .5rem;border:1px solid var(--nice-border, #ddd);background:#fff;border-radius:4px;cursor:pointer}.nice-protocol-config__topics>button,.nice-protocol-config__resources>button,.nice-protocol-config__nodes>button{align-self:flex-start;padding:.5rem 1rem;border:1px dashed var(--nice-border, #ddd);background:transparent;border-radius:4px;cursor:pointer}.nice-protocol-config__registers-table{width:100%;border-collapse:collapse;margin-bottom:.5rem}.nice-protocol-config__registers-table th,.nice-protocol-config__registers-table td{padding:.5rem;border:1px solid var(--nice-border, #ddd);text-align:left}.nice-protocol-config__registers-table th{background:var(--nice-bg-secondary, #f8f9fa);font-weight:500;font-size:.8125rem}.nice-protocol-config__registers-table input,.nice-protocol-config__registers-table select{width:100%;padding:.25rem;border:1px solid var(--nice-border, #ddd);border-radius:4px;font-size:.8125rem}.nice-protocol-config__registers-table input[type=checkbox]{width:auto}.nice-protocol-config__test-result{margin:0 1rem;padding:.75rem 1rem;border-radius:4px;font-size:.875rem}.nice-protocol-config__test-result--success{background:#d4edda;color:#155724}.nice-protocol-config__test-result--error{background:#f8d7da;color:#721c24}.nice-protocol-config__footer{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem;border-top:1px solid var(--nice-border, #ddd)}.nice-protocol-config__test-btn,.nice-protocol-config__save-btn{padding:.5rem 1rem;border:1px solid var(--nice-border, #ddd);background:#fff;border-radius:4px;cursor:pointer}.nice-protocol-config__save-btn{background:var(--nice-primary, #0066cc);color:#fff;border-color:var(--nice-primary, #0066cc)}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@nice2dev/ui-iot",
3
+ "version": "1.0.10",
4
+ "description": "Nice2Dev IoT Components - Device dashboards, edge management, and protocol support",
5
+ "type": "module",
6
+ "sideEffects": [
7
+ "*.css"
8
+ ],
9
+ "main": "./dist/index.cjs",
10
+ "module": "./dist/index.mjs",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "import": "./dist/index.mjs",
15
+ "require": "./dist/index.cjs",
16
+ "types": "./dist/index.d.ts"
17
+ },
18
+ "./style.css": "./dist/style.css"
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "README.md"
23
+ ],
24
+ "scripts": {
25
+ "build": "vite build",
26
+ "build:types": "tsc --emitDeclarationOnly",
27
+ "dev": "vite build --watch",
28
+ "lint": "eslint src --ext .ts,.tsx",
29
+ "test": "vitest run --passWithNoTests",
30
+ "test:watch": "vitest"
31
+ },
32
+ "dependencies": {},
33
+ "peerDependencies": {
34
+ "react": ">=17.0.0",
35
+ "react-dom": ">=17.0.0"
36
+ },
37
+ "devDependencies": {
38
+ "@testing-library/react": "^14.1.0",
39
+ "@types/react": "^18.2.0",
40
+ "@types/react-dom": "^18.2.0",
41
+ "react": "^18.2.0",
42
+ "react-dom": "^18.2.0",
43
+ "typescript": "^5.3.0",
44
+ "vite": "^5.0.0",
45
+ "vite-plugin-dts": "^3.7.0",
46
+ "vitest": "^4.1.0"
47
+ },
48
+ "keywords": [
49
+ "iot",
50
+ "mqtt",
51
+ "coap",
52
+ "modbus",
53
+ "opc-ua",
54
+ "edge",
55
+ "devices",
56
+ "sensors",
57
+ "nice2dev",
58
+ "react"
59
+ ],
60
+ "author": "Nice2Dev",
61
+ "license": "MIT",
62
+ "repository": {
63
+ "type": "git",
64
+ "url": "https://github.com/nicetoDev/nicetoDev-ui.git",
65
+ "directory": "packages/ui-iot"
66
+ }
67
+ }