@ind-ds/core 0.1.0
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 +41 -0
- package/dist/cjs/ind-alarm.cjs.entry.js +35 -0
- package/dist/cjs/ind-alarm.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-app-header.cjs.entry.js +42 -0
- package/dist/cjs/ind-app-header.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-button.cjs.entry.js +79 -0
- package/dist/cjs/ind-button.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-checkbox.cjs.entry.js +49 -0
- package/dist/cjs/ind-checkbox.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-dialog.cjs.entry.js +101 -0
- package/dist/cjs/ind-dialog.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-divider.cjs.entry.js +21 -0
- package/dist/cjs/ind-divider.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-ds.cjs.js +27 -0
- package/dist/cjs/ind-ds.cjs.js.map +1 -0
- package/dist/cjs/ind-fill-row.cjs.entry.js +34 -0
- package/dist/cjs/ind-fill-row.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-health-card.cjs.entry.js +38 -0
- package/dist/cjs/ind-health-card.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-input.cjs.entry.js +57 -0
- package/dist/cjs/ind-input.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-led.cjs.entry.js +29 -0
- package/dist/cjs/ind-led.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-mqtt-monitor.cjs.entry.js +75 -0
- package/dist/cjs/ind-mqtt-monitor.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-nav-item.cjs.entry.js +48 -0
- package/dist/cjs/ind-nav-item.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-progress.cjs.entry.js +48 -0
- package/dist/cjs/ind-progress.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-scara-canvas.cjs.entry.js +57 -0
- package/dist/cjs/ind-scara-canvas.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-select.cjs.entry.js +55 -0
- package/dist/cjs/ind-select.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-shelf-canvas.cjs.entry.js +88 -0
- package/dist/cjs/ind-shelf-canvas.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-sidebar-nav.cjs.entry.js +20 -0
- package/dist/cjs/ind-sidebar-nav.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-status-bar.cjs.entry.js +22 -0
- package/dist/cjs/ind-status-bar.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-status-dot.cjs.entry.js +31 -0
- package/dist/cjs/ind-status-dot.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-textarea.cjs.entry.js +66 -0
- package/dist/cjs/ind-textarea.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-toolbar-action.cjs.entry.js +23 -0
- package/dist/cjs/ind-toolbar-action.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-value.cjs.entry.js +47 -0
- package/dist/cjs/ind-value.cjs.entry.js.map +1 -0
- package/dist/cjs/ind-valve.cjs.entry.js +31 -0
- package/dist/cjs/ind-valve.cjs.entry.js.map +1 -0
- package/dist/cjs/index-ph7ZTjuY.js +1638 -0
- package/dist/cjs/index-ph7ZTjuY.js.map +1 -0
- package/dist/cjs/index.cjs.js +5 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +15 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/collection/collection-manifest.json +35 -0
- package/dist/collection/components/atoms/alarm/alarm.css +87 -0
- package/dist/collection/components/atoms/alarm/alarm.js +122 -0
- package/dist/collection/components/atoms/alarm/alarm.js.map +1 -0
- package/dist/collection/components/atoms/button/button.css +110 -0
- package/dist/collection/components/atoms/button/button.js +215 -0
- package/dist/collection/components/atoms/button/button.js.map +1 -0
- package/dist/collection/components/atoms/checkbox/checkbox.css +92 -0
- package/dist/collection/components/atoms/checkbox/checkbox.js +214 -0
- package/dist/collection/components/atoms/checkbox/checkbox.js.map +1 -0
- package/dist/collection/components/atoms/dialog/dialog.css +85 -0
- package/dist/collection/components/atoms/dialog/dialog.js +265 -0
- package/dist/collection/components/atoms/dialog/dialog.js.map +1 -0
- package/dist/collection/components/atoms/divider/divider.css +16 -0
- package/dist/collection/components/atoms/divider/divider.js +50 -0
- package/dist/collection/components/atoms/divider/divider.js.map +1 -0
- package/dist/collection/components/atoms/input/input.css +92 -0
- package/dist/collection/components/atoms/input/input.js +427 -0
- package/dist/collection/components/atoms/input/input.js.map +1 -0
- package/dist/collection/components/atoms/led/led.css +91 -0
- package/dist/collection/components/atoms/led/led.js +123 -0
- package/dist/collection/components/atoms/led/led.js.map +1 -0
- package/dist/collection/components/atoms/progress/progress.css +69 -0
- package/dist/collection/components/atoms/progress/progress.js +221 -0
- package/dist/collection/components/atoms/progress/progress.js.map +1 -0
- package/dist/collection/components/atoms/scara-canvas/scara-canvas.css +100 -0
- package/dist/collection/components/atoms/scara-canvas/scara-canvas.js +138 -0
- package/dist/collection/components/atoms/scara-canvas/scara-canvas.js.map +1 -0
- package/dist/collection/components/atoms/select/select.css +88 -0
- package/dist/collection/components/atoms/select/select.js +244 -0
- package/dist/collection/components/atoms/select/select.js.map +1 -0
- package/dist/collection/components/atoms/shelf-canvas/shelf-canvas.css +67 -0
- package/dist/collection/components/atoms/shelf-canvas/shelf-canvas.js +184 -0
- package/dist/collection/components/atoms/shelf-canvas/shelf-canvas.js.map +1 -0
- package/dist/collection/components/atoms/status-dot/status-dot.css +69 -0
- package/dist/collection/components/atoms/status-dot/status-dot.js +125 -0
- package/dist/collection/components/atoms/status-dot/status-dot.js.map +1 -0
- package/dist/collection/components/atoms/textarea/textarea.css +74 -0
- package/dist/collection/components/atoms/textarea/textarea.js +331 -0
- package/dist/collection/components/atoms/textarea/textarea.js.map +1 -0
- package/dist/collection/components/atoms/value/value.css +115 -0
- package/dist/collection/components/atoms/value/value.js +223 -0
- package/dist/collection/components/atoms/value/value.js.map +1 -0
- package/dist/collection/components/atoms/valve/valve.css +101 -0
- package/dist/collection/components/atoms/valve/valve.js +150 -0
- package/dist/collection/components/atoms/valve/valve.js.map +1 -0
- package/dist/collection/components/molecules/fill-row/fill-row.css +70 -0
- package/dist/collection/components/molecules/fill-row/fill-row.js +181 -0
- package/dist/collection/components/molecules/fill-row/fill-row.js.map +1 -0
- package/dist/collection/components/molecules/health-card/health-card.css +53 -0
- package/dist/collection/components/molecules/health-card/health-card.js +124 -0
- package/dist/collection/components/molecules/health-card/health-card.js.map +1 -0
- package/dist/collection/components/molecules/nav-item/nav-item.css +82 -0
- package/dist/collection/components/molecules/nav-item/nav-item.js +165 -0
- package/dist/collection/components/molecules/nav-item/nav-item.js.map +1 -0
- package/dist/collection/components/molecules/toolbar-action/toolbar-action.css +36 -0
- package/dist/collection/components/molecules/toolbar-action/toolbar-action.js +45 -0
- package/dist/collection/components/molecules/toolbar-action/toolbar-action.js.map +1 -0
- package/dist/collection/components/organisms/app-header/app-header.css +127 -0
- package/dist/collection/components/organisms/app-header/app-header.js +256 -0
- package/dist/collection/components/organisms/app-header/app-header.js.map +1 -0
- package/dist/collection/components/organisms/mqtt-monitor/mqtt-monitor.css +96 -0
- package/dist/collection/components/organisms/mqtt-monitor/mqtt-monitor.js +205 -0
- package/dist/collection/components/organisms/mqtt-monitor/mqtt-monitor.js.map +1 -0
- package/dist/collection/components/organisms/sidebar-nav/sidebar-nav.css +39 -0
- package/dist/collection/components/organisms/sidebar-nav/sidebar-nav.js +26 -0
- package/dist/collection/components/organisms/sidebar-nav/sidebar-nav.js.map +1 -0
- package/dist/collection/components/organisms/status-bar/status-bar.css +34 -0
- package/dist/collection/components/organisms/status-bar/status-bar.js +76 -0
- package/dist/collection/components/organisms/status-bar/status-bar.js.map +1 -0
- package/dist/collection/index.js +2 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/components/ind-alarm.d.ts +11 -0
- package/dist/components/ind-alarm.js +2 -0
- package/dist/components/ind-alarm.js.map +1 -0
- package/dist/components/ind-app-header.d.ts +11 -0
- package/dist/components/ind-app-header.js +2 -0
- package/dist/components/ind-app-header.js.map +1 -0
- package/dist/components/ind-button.d.ts +11 -0
- package/dist/components/ind-button.js +2 -0
- package/dist/components/ind-button.js.map +1 -0
- package/dist/components/ind-checkbox.d.ts +11 -0
- package/dist/components/ind-checkbox.js +2 -0
- package/dist/components/ind-checkbox.js.map +1 -0
- package/dist/components/ind-dialog.d.ts +11 -0
- package/dist/components/ind-dialog.js +2 -0
- package/dist/components/ind-dialog.js.map +1 -0
- package/dist/components/ind-divider.d.ts +11 -0
- package/dist/components/ind-divider.js +2 -0
- package/dist/components/ind-divider.js.map +1 -0
- package/dist/components/ind-fill-row.d.ts +11 -0
- package/dist/components/ind-fill-row.js +2 -0
- package/dist/components/ind-fill-row.js.map +1 -0
- package/dist/components/ind-health-card.d.ts +11 -0
- package/dist/components/ind-health-card.js +2 -0
- package/dist/components/ind-health-card.js.map +1 -0
- package/dist/components/ind-input.d.ts +11 -0
- package/dist/components/ind-input.js +2 -0
- package/dist/components/ind-input.js.map +1 -0
- package/dist/components/ind-led.d.ts +11 -0
- package/dist/components/ind-led.js +2 -0
- package/dist/components/ind-led.js.map +1 -0
- package/dist/components/ind-mqtt-monitor.d.ts +11 -0
- package/dist/components/ind-mqtt-monitor.js +2 -0
- package/dist/components/ind-mqtt-monitor.js.map +1 -0
- package/dist/components/ind-nav-item.d.ts +11 -0
- package/dist/components/ind-nav-item.js +2 -0
- package/dist/components/ind-nav-item.js.map +1 -0
- package/dist/components/ind-progress.d.ts +11 -0
- package/dist/components/ind-progress.js +2 -0
- package/dist/components/ind-progress.js.map +1 -0
- package/dist/components/ind-scara-canvas.d.ts +11 -0
- package/dist/components/ind-scara-canvas.js +2 -0
- package/dist/components/ind-scara-canvas.js.map +1 -0
- package/dist/components/ind-select.d.ts +11 -0
- package/dist/components/ind-select.js +2 -0
- package/dist/components/ind-select.js.map +1 -0
- package/dist/components/ind-shelf-canvas.d.ts +11 -0
- package/dist/components/ind-shelf-canvas.js +2 -0
- package/dist/components/ind-shelf-canvas.js.map +1 -0
- package/dist/components/ind-sidebar-nav.d.ts +11 -0
- package/dist/components/ind-sidebar-nav.js +2 -0
- package/dist/components/ind-sidebar-nav.js.map +1 -0
- package/dist/components/ind-status-bar.d.ts +11 -0
- package/dist/components/ind-status-bar.js +2 -0
- package/dist/components/ind-status-bar.js.map +1 -0
- package/dist/components/ind-status-dot.d.ts +11 -0
- package/dist/components/ind-status-dot.js +2 -0
- package/dist/components/ind-status-dot.js.map +1 -0
- package/dist/components/ind-textarea.d.ts +11 -0
- package/dist/components/ind-textarea.js +2 -0
- package/dist/components/ind-textarea.js.map +1 -0
- package/dist/components/ind-toolbar-action.d.ts +11 -0
- package/dist/components/ind-toolbar-action.js +2 -0
- package/dist/components/ind-toolbar-action.js.map +1 -0
- package/dist/components/ind-value.d.ts +11 -0
- package/dist/components/ind-value.js +2 -0
- package/dist/components/ind-value.js.map +1 -0
- package/dist/components/ind-valve.d.ts +11 -0
- package/dist/components/ind-valve.js +2 -0
- package/dist/components/ind-valve.js.map +1 -0
- package/dist/components/index.d.ts +35 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/p-D-FsSjAC.js +2 -0
- package/dist/components/p-D-FsSjAC.js.map +1 -0
- package/dist/components/p-acsAzrRn.js +2 -0
- package/dist/components/p-acsAzrRn.js.map +1 -0
- package/dist/docs.d.ts +480 -0
- package/dist/docs.json +5360 -0
- package/dist/esm/ind-alarm.entry.js +33 -0
- package/dist/esm/ind-alarm.entry.js.map +1 -0
- package/dist/esm/ind-app-header.entry.js +40 -0
- package/dist/esm/ind-app-header.entry.js.map +1 -0
- package/dist/esm/ind-button.entry.js +77 -0
- package/dist/esm/ind-button.entry.js.map +1 -0
- package/dist/esm/ind-checkbox.entry.js +47 -0
- package/dist/esm/ind-checkbox.entry.js.map +1 -0
- package/dist/esm/ind-dialog.entry.js +99 -0
- package/dist/esm/ind-dialog.entry.js.map +1 -0
- package/dist/esm/ind-divider.entry.js +19 -0
- package/dist/esm/ind-divider.entry.js.map +1 -0
- package/dist/esm/ind-ds.js +23 -0
- package/dist/esm/ind-ds.js.map +1 -0
- package/dist/esm/ind-fill-row.entry.js +32 -0
- package/dist/esm/ind-fill-row.entry.js.map +1 -0
- package/dist/esm/ind-health-card.entry.js +36 -0
- package/dist/esm/ind-health-card.entry.js.map +1 -0
- package/dist/esm/ind-input.entry.js +55 -0
- package/dist/esm/ind-input.entry.js.map +1 -0
- package/dist/esm/ind-led.entry.js +27 -0
- package/dist/esm/ind-led.entry.js.map +1 -0
- package/dist/esm/ind-mqtt-monitor.entry.js +73 -0
- package/dist/esm/ind-mqtt-monitor.entry.js.map +1 -0
- package/dist/esm/ind-nav-item.entry.js +46 -0
- package/dist/esm/ind-nav-item.entry.js.map +1 -0
- package/dist/esm/ind-progress.entry.js +46 -0
- package/dist/esm/ind-progress.entry.js.map +1 -0
- package/dist/esm/ind-scara-canvas.entry.js +55 -0
- package/dist/esm/ind-scara-canvas.entry.js.map +1 -0
- package/dist/esm/ind-select.entry.js +53 -0
- package/dist/esm/ind-select.entry.js.map +1 -0
- package/dist/esm/ind-shelf-canvas.entry.js +86 -0
- package/dist/esm/ind-shelf-canvas.entry.js.map +1 -0
- package/dist/esm/ind-sidebar-nav.entry.js +18 -0
- package/dist/esm/ind-sidebar-nav.entry.js.map +1 -0
- package/dist/esm/ind-status-bar.entry.js +20 -0
- package/dist/esm/ind-status-bar.entry.js.map +1 -0
- package/dist/esm/ind-status-dot.entry.js +29 -0
- package/dist/esm/ind-status-dot.entry.js.map +1 -0
- package/dist/esm/ind-textarea.entry.js +64 -0
- package/dist/esm/ind-textarea.entry.js.map +1 -0
- package/dist/esm/ind-toolbar-action.entry.js +21 -0
- package/dist/esm/ind-toolbar-action.entry.js.map +1 -0
- package/dist/esm/ind-value.entry.js +45 -0
- package/dist/esm/ind-value.entry.js.map +1 -0
- package/dist/esm/ind-valve.entry.js +29 -0
- package/dist/esm/ind-valve.entry.js.map +1 -0
- package/dist/esm/index-D2yNiL0d.js +1628 -0
- package/dist/esm/index-D2yNiL0d.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +13 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/ind-ds/ind-ds.css +1 -0
- package/dist/ind-ds/ind-ds.esm.js +2 -0
- package/dist/ind-ds/ind-ds.esm.js.map +1 -0
- package/dist/ind-ds/index.esm.js +2 -0
- package/dist/ind-ds/index.esm.js.map +1 -0
- package/dist/ind-ds/p-0840007d.entry.js +2 -0
- package/dist/ind-ds/p-0840007d.entry.js.map +1 -0
- package/dist/ind-ds/p-1727b403.entry.js +2 -0
- package/dist/ind-ds/p-1727b403.entry.js.map +1 -0
- package/dist/ind-ds/p-1d871f3f.entry.js +2 -0
- package/dist/ind-ds/p-1d871f3f.entry.js.map +1 -0
- package/dist/ind-ds/p-296b0c55.entry.js +2 -0
- package/dist/ind-ds/p-296b0c55.entry.js.map +1 -0
- package/dist/ind-ds/p-459405b6.entry.js +2 -0
- package/dist/ind-ds/p-459405b6.entry.js.map +1 -0
- package/dist/ind-ds/p-4a4811ab.entry.js +2 -0
- package/dist/ind-ds/p-4a4811ab.entry.js.map +1 -0
- package/dist/ind-ds/p-52b18003.entry.js +2 -0
- package/dist/ind-ds/p-52b18003.entry.js.map +1 -0
- package/dist/ind-ds/p-5369d63a.entry.js +2 -0
- package/dist/ind-ds/p-5369d63a.entry.js.map +1 -0
- package/dist/ind-ds/p-595ccdce.entry.js +2 -0
- package/dist/ind-ds/p-595ccdce.entry.js.map +1 -0
- package/dist/ind-ds/p-6c5c8053.entry.js +2 -0
- package/dist/ind-ds/p-6c5c8053.entry.js.map +1 -0
- package/dist/ind-ds/p-6c8f4bbd.entry.js +2 -0
- package/dist/ind-ds/p-6c8f4bbd.entry.js.map +1 -0
- package/dist/ind-ds/p-781e21df.entry.js +2 -0
- package/dist/ind-ds/p-781e21df.entry.js.map +1 -0
- package/dist/ind-ds/p-8817625a.entry.js +2 -0
- package/dist/ind-ds/p-8817625a.entry.js.map +1 -0
- package/dist/ind-ds/p-99f55d2a.entry.js +2 -0
- package/dist/ind-ds/p-99f55d2a.entry.js.map +1 -0
- package/dist/ind-ds/p-9b93fb09.entry.js +2 -0
- package/dist/ind-ds/p-9b93fb09.entry.js.map +1 -0
- package/dist/ind-ds/p-D2yNiL0d.js +3 -0
- package/dist/ind-ds/p-D2yNiL0d.js.map +1 -0
- package/dist/ind-ds/p-c8de42e9.entry.js +2 -0
- package/dist/ind-ds/p-c8de42e9.entry.js.map +1 -0
- package/dist/ind-ds/p-c9f752e6.entry.js +2 -0
- package/dist/ind-ds/p-c9f752e6.entry.js.map +1 -0
- package/dist/ind-ds/p-cee8bf2b.entry.js +2 -0
- package/dist/ind-ds/p-cee8bf2b.entry.js.map +1 -0
- package/dist/ind-ds/p-cf07b580.entry.js +2 -0
- package/dist/ind-ds/p-cf07b580.entry.js.map +1 -0
- package/dist/ind-ds/p-d1edc052.entry.js +2 -0
- package/dist/ind-ds/p-d1edc052.entry.js.map +1 -0
- package/dist/ind-ds/p-ea24a59d.entry.js +2 -0
- package/dist/ind-ds/p-ea24a59d.entry.js.map +1 -0
- package/dist/ind-ds/p-ec0b3785.entry.js +2 -0
- package/dist/ind-ds/p-ec0b3785.entry.js.map +1 -0
- package/dist/ind-ds/p-ee453874.entry.js +2 -0
- package/dist/ind-ds/p-ee453874.entry.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/types/components/atoms/alarm/alarm.d.ts +13 -0
- package/dist/types/components/atoms/button/button.d.ts +31 -0
- package/dist/types/components/atoms/checkbox/checkbox.d.ts +18 -0
- package/dist/types/components/atoms/dialog/dialog.d.ts +29 -0
- package/dist/types/components/atoms/divider/divider.d.ts +6 -0
- package/dist/types/components/atoms/input/input.d.ts +34 -0
- package/dist/types/components/atoms/led/led.d.ts +14 -0
- package/dist/types/components/atoms/progress/progress.d.ts +24 -0
- package/dist/types/components/atoms/scara-canvas/scara-canvas.d.ts +21 -0
- package/dist/types/components/atoms/select/select.d.ts +27 -0
- package/dist/types/components/atoms/shelf-canvas/shelf-canvas.d.ts +29 -0
- package/dist/types/components/atoms/status-dot/status-dot.d.ts +14 -0
- package/dist/types/components/atoms/textarea/textarea.d.ts +28 -0
- package/dist/types/components/atoms/value/value.d.ts +24 -0
- package/dist/types/components/atoms/valve/valve.d.ts +17 -0
- package/dist/types/components/molecules/fill-row/fill-row.d.ts +19 -0
- package/dist/types/components/molecules/health-card/health-card.d.ts +13 -0
- package/dist/types/components/molecules/nav-item/nav-item.d.ts +17 -0
- package/dist/types/components/molecules/toolbar-action/toolbar-action.d.ts +6 -0
- package/dist/types/components/organisms/app-header/app-header.d.ts +26 -0
- package/dist/types/components/organisms/mqtt-monitor/mqtt-monitor.d.ts +23 -0
- package/dist/types/components/organisms/sidebar-nav/sidebar-nav.d.ts +11 -0
- package/dist/types/components/organisms/status-bar/status-bar.d.ts +13 -0
- package/dist/types/components.d.ts +1775 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/stencil-public-runtime.d.ts +1861 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/package.json +87 -0
- package/utilities.css +324 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { h, Host } from "@stencil/core";
|
|
2
|
+
/**
|
|
3
|
+
* Grid of bottle/container slots showing their fill level. Generic — represents
|
|
4
|
+
* any rack of resupplyable containers (bottles, cartridges, kegs, etc.).
|
|
5
|
+
*
|
|
6
|
+
* <ind-shelf-canvas
|
|
7
|
+
* .slots=${[{id:'a', label:'A', level:78}, {id:'b', label:'B', level:12}]}
|
|
8
|
+
* cols="2"></ind-shelf-canvas>
|
|
9
|
+
*/
|
|
10
|
+
export class IndShelfCanvas {
|
|
11
|
+
slots = [];
|
|
12
|
+
rows = 1;
|
|
13
|
+
cols = 4;
|
|
14
|
+
heading;
|
|
15
|
+
parseSlots() {
|
|
16
|
+
if (Array.isArray(this.slots))
|
|
17
|
+
return this.slots;
|
|
18
|
+
if (typeof this.slots === 'string' && this.slots.trim()) {
|
|
19
|
+
try {
|
|
20
|
+
const p = JSON.parse(this.slots);
|
|
21
|
+
return Array.isArray(p) ? p : [];
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
resolveState(s) {
|
|
30
|
+
if (s.state)
|
|
31
|
+
return s.state;
|
|
32
|
+
if (s.level === undefined)
|
|
33
|
+
return 'missing';
|
|
34
|
+
if (s.level >= 60)
|
|
35
|
+
return 'full';
|
|
36
|
+
if (s.level >= 20)
|
|
37
|
+
return 'partial';
|
|
38
|
+
return 'empty';
|
|
39
|
+
}
|
|
40
|
+
render() {
|
|
41
|
+
const slots = this.parseSlots();
|
|
42
|
+
const W = 480;
|
|
43
|
+
const H = 340;
|
|
44
|
+
const padX = 24;
|
|
45
|
+
const padTop = this.heading ? 40 : 24;
|
|
46
|
+
const padBottom = 28;
|
|
47
|
+
const gridW = W - padX * 2;
|
|
48
|
+
const gridH = H - padTop - padBottom;
|
|
49
|
+
const cellW = gridW / this.cols;
|
|
50
|
+
const cellH = gridH / this.rows;
|
|
51
|
+
return (h(Host, { key: 'e368cf70181cf224e4076b937a1e12a53e95e58f', role: "img", "aria-label": this.heading ?? 'Shelf inventory' }, h("svg", { key: 'e5fa8c4d7bed40cddbd4c6a691aa49a9c29007a5', viewBox: `0 0 ${W} ${H}`, part: "svg" }, this.heading && (h("text", { key: 'ec0c820367a330cc570b2c44c6d63c11fbed7f3b', x: W / 2, y: "22", class: "heading", "text-anchor": "middle" }, this.heading)), slots.slice(0, this.rows * this.cols).map((s) => {
|
|
52
|
+
const i = slots.indexOf(s);
|
|
53
|
+
const col = i % this.cols;
|
|
54
|
+
const row = Math.floor(i / this.cols);
|
|
55
|
+
const cx = padX + col * cellW + cellW / 2;
|
|
56
|
+
const cy = padTop + row * cellH + cellH / 2;
|
|
57
|
+
const w = Math.min(cellW - 30, 80);
|
|
58
|
+
const bodyH = Math.max(40, cellH - 60);
|
|
59
|
+
const x = cx - w / 2;
|
|
60
|
+
const y = cy - bodyH / 2;
|
|
61
|
+
const neckTopX1 = x + w * 0.32;
|
|
62
|
+
const neckTopX2 = x + w * 0.68;
|
|
63
|
+
const shoulderY = y + 14;
|
|
64
|
+
const state = this.resolveState(s);
|
|
65
|
+
const level = s.level ?? 0;
|
|
66
|
+
const innerPad = 5;
|
|
67
|
+
const innerH = bodyH - 20 - innerPad * 2;
|
|
68
|
+
const fillH = Math.max(0, innerH * (level / 100));
|
|
69
|
+
return (h("g", { class: `slot slot--${state}` }, h("path", { class: "outline", d: `
|
|
70
|
+
M ${neckTopX1} ${y}
|
|
71
|
+
L ${neckTopX2} ${y}
|
|
72
|
+
L ${neckTopX2} ${y + 8}
|
|
73
|
+
L ${x + w} ${shoulderY}
|
|
74
|
+
L ${x + w} ${y + bodyH}
|
|
75
|
+
L ${x} ${y + bodyH}
|
|
76
|
+
L ${x} ${shoulderY}
|
|
77
|
+
L ${neckTopX1} ${y + 8}
|
|
78
|
+
Z
|
|
79
|
+
` }), state !== 'missing' && level > 0 && (h("rect", { class: "fill", x: x + innerPad, y: y + bodyH - innerPad - fillH, width: w - innerPad * 2, height: fillH, rx: "2" })), state !== 'missing' && (h("text", { x: cx, y: cy + 4, class: "level", "text-anchor": "middle" }, Math.round(level), "%")), h("text", { x: cx, y: y + bodyH + 16, class: "label", "text-anchor": "middle" }, s.label)));
|
|
80
|
+
}))));
|
|
81
|
+
}
|
|
82
|
+
static get is() { return "ind-shelf-canvas"; }
|
|
83
|
+
static get encapsulation() { return "shadow"; }
|
|
84
|
+
static get originalStyleUrls() {
|
|
85
|
+
return {
|
|
86
|
+
"$": ["shelf-canvas.css"]
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
static get styleUrls() {
|
|
90
|
+
return {
|
|
91
|
+
"$": ["shelf-canvas.css"]
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
static get properties() {
|
|
95
|
+
return {
|
|
96
|
+
"slots": {
|
|
97
|
+
"type": "string",
|
|
98
|
+
"mutable": false,
|
|
99
|
+
"complexType": {
|
|
100
|
+
"original": "ShelfSlot[] | string",
|
|
101
|
+
"resolved": "ShelfSlot[] | string",
|
|
102
|
+
"references": {
|
|
103
|
+
"ShelfSlot": {
|
|
104
|
+
"location": "local",
|
|
105
|
+
"path": "C:/www/ind-ds/packages/core/src/components/atoms/shelf-canvas/shelf-canvas.tsx",
|
|
106
|
+
"id": "src/components/atoms/shelf-canvas/shelf-canvas.tsx::ShelfSlot"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"required": false,
|
|
111
|
+
"optional": false,
|
|
112
|
+
"docs": {
|
|
113
|
+
"tags": [],
|
|
114
|
+
"text": ""
|
|
115
|
+
},
|
|
116
|
+
"getter": false,
|
|
117
|
+
"setter": false,
|
|
118
|
+
"reflect": false,
|
|
119
|
+
"attribute": "slots",
|
|
120
|
+
"defaultValue": "[]"
|
|
121
|
+
},
|
|
122
|
+
"rows": {
|
|
123
|
+
"type": "number",
|
|
124
|
+
"mutable": false,
|
|
125
|
+
"complexType": {
|
|
126
|
+
"original": "number",
|
|
127
|
+
"resolved": "number",
|
|
128
|
+
"references": {}
|
|
129
|
+
},
|
|
130
|
+
"required": false,
|
|
131
|
+
"optional": false,
|
|
132
|
+
"docs": {
|
|
133
|
+
"tags": [],
|
|
134
|
+
"text": ""
|
|
135
|
+
},
|
|
136
|
+
"getter": false,
|
|
137
|
+
"setter": false,
|
|
138
|
+
"reflect": false,
|
|
139
|
+
"attribute": "rows",
|
|
140
|
+
"defaultValue": "1"
|
|
141
|
+
},
|
|
142
|
+
"cols": {
|
|
143
|
+
"type": "number",
|
|
144
|
+
"mutable": false,
|
|
145
|
+
"complexType": {
|
|
146
|
+
"original": "number",
|
|
147
|
+
"resolved": "number",
|
|
148
|
+
"references": {}
|
|
149
|
+
},
|
|
150
|
+
"required": false,
|
|
151
|
+
"optional": false,
|
|
152
|
+
"docs": {
|
|
153
|
+
"tags": [],
|
|
154
|
+
"text": ""
|
|
155
|
+
},
|
|
156
|
+
"getter": false,
|
|
157
|
+
"setter": false,
|
|
158
|
+
"reflect": false,
|
|
159
|
+
"attribute": "cols",
|
|
160
|
+
"defaultValue": "4"
|
|
161
|
+
},
|
|
162
|
+
"heading": {
|
|
163
|
+
"type": "string",
|
|
164
|
+
"mutable": false,
|
|
165
|
+
"complexType": {
|
|
166
|
+
"original": "string",
|
|
167
|
+
"resolved": "string | undefined",
|
|
168
|
+
"references": {}
|
|
169
|
+
},
|
|
170
|
+
"required": false,
|
|
171
|
+
"optional": true,
|
|
172
|
+
"docs": {
|
|
173
|
+
"tags": [],
|
|
174
|
+
"text": ""
|
|
175
|
+
},
|
|
176
|
+
"getter": false,
|
|
177
|
+
"setter": false,
|
|
178
|
+
"reflect": false,
|
|
179
|
+
"attribute": "heading"
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=shelf-canvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shelf-canvas.js","sourceRoot":"","sources":["../../../../src/components/atoms/shelf-canvas/shelf-canvas.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAezD;;;;;;;GAOG;AAMH,MAAM,OAAO,cAAc;IACjB,KAAK,GAAyB,EAAE,CAAC;IACjC,IAAI,GAAW,CAAC,CAAC;IACjB,IAAI,GAAW,CAAC,CAAC;IACjB,OAAO,CAAU;IAEjB,UAAU;QAChB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;QACjD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,YAAY,CAAC,CAAY;QAC/B,IAAI,CAAC,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC5C,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;YAAE,OAAO,MAAM,CAAC;QACjC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;YAAE,OAAO,SAAS,CAAC;QACpC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,GAAG,CAAC;QACd,MAAM,CAAC,GAAG,GAAG,CAAC;QACd,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QAEhC,OAAO,CACL,EAAC,IAAI,qDAAC,IAAI,EAAC,KAAK,gBAAa,IAAI,CAAC,OAAO,IAAI,iBAAiB;YAC5D,4DAAK,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAC,KAAK;gBACtC,IAAI,CAAC,OAAO,IAAI,CACf,6DAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,iBAAa,QAAQ,IACxD,IAAI,CAAC,OAAO,CACR,CACR;gBAEA,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC/C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;oBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtC,MAAM,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;oBAC1C,MAAM,EAAE,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;oBAE5C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;oBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;oBACvC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;oBACzB,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBAC/B,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBAC/B,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC;oBAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;oBAC3B,MAAM,QAAQ,GAAG,CAAC,CAAC;oBACnB,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC;oBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;oBAElD,OAAO,CACL,SAAG,KAAK,EAAE,cAAc,KAAK,EAAE;wBAE7B,YACE,KAAK,EAAC,SAAS,EACf,CAAC,EAAE;wBACG,SAAS,IAAI,CAAC;wBACd,SAAS,IAAI,CAAC;wBACd,SAAS,IAAI,CAAC,GAAG,CAAC;wBAClB,CAAC,GAAG,CAAC,IAAI,SAAS;wBAClB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK;wBAClB,CAAC,IAAI,CAAC,GAAG,KAAK;wBACd,CAAC,IAAI,SAAS;wBACd,SAAS,IAAI,CAAC,GAAG,CAAC;;mBAEvB,GACD;wBAGD,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,IAAI,CACnC,YACE,KAAK,EAAC,MAAM,EACZ,CAAC,EAAE,CAAC,GAAG,QAAQ,EACf,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,EAC/B,KAAK,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EACvB,MAAM,EAAE,KAAK,EACb,EAAE,EAAC,GAAG,GACN,CACH;wBAGA,KAAK,KAAK,SAAS,IAAI,CACtB,YAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,EAAC,OAAO,iBAAa,QAAQ;4BACvD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gCACb,CACR;wBAGD,YAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,EAAE,EAAE,KAAK,EAAC,OAAO,iBAAa,QAAQ,IAC/D,CAAC,CAAC,KAAK,CACH,CACL,CACL,CAAC;gBACJ,CAAC,CAAC,CACE,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, Host } from '@stencil/core';\n\nexport type ShelfSlotState = 'full' | 'partial' | 'empty' | 'missing';\n\nexport interface ShelfSlot {\n /** Stable identifier for keying / cell click events. */\n id: string;\n /** Short label shown under the container. */\n label: string;\n /** 0–100 fill level. `undefined` ⇒ container considered missing. */\n level?: number;\n /** Explicit state — overrides the level-based default. */\n state?: ShelfSlotState;\n}\n\n/**\n * Grid of bottle/container slots showing their fill level. Generic — represents\n * any rack of resupplyable containers (bottles, cartridges, kegs, etc.).\n *\n * <ind-shelf-canvas\n * .slots=${[{id:'a', label:'A', level:78}, {id:'b', label:'B', level:12}]}\n * cols=\"2\"></ind-shelf-canvas>\n */\n@Component({\n tag: 'ind-shelf-canvas',\n styleUrl: 'shelf-canvas.css',\n shadow: true,\n})\nexport class IndShelfCanvas {\n @Prop() slots: ShelfSlot[] | string = [];\n @Prop() rows: number = 1;\n @Prop() cols: number = 4;\n @Prop() heading?: string;\n\n private parseSlots(): ShelfSlot[] {\n if (Array.isArray(this.slots)) return this.slots;\n if (typeof this.slots === 'string' && this.slots.trim()) {\n try {\n const p = JSON.parse(this.slots);\n return Array.isArray(p) ? p : [];\n } catch {\n return [];\n }\n }\n return [];\n }\n\n private resolveState(s: ShelfSlot): ShelfSlotState {\n if (s.state) return s.state;\n if (s.level === undefined) return 'missing';\n if (s.level >= 60) return 'full';\n if (s.level >= 20) return 'partial';\n return 'empty';\n }\n\n render() {\n const slots = this.parseSlots();\n const W = 480;\n const H = 340;\n const padX = 24;\n const padTop = this.heading ? 40 : 24;\n const padBottom = 28;\n const gridW = W - padX * 2;\n const gridH = H - padTop - padBottom;\n const cellW = gridW / this.cols;\n const cellH = gridH / this.rows;\n\n return (\n <Host role=\"img\" aria-label={this.heading ?? 'Shelf inventory'}>\n <svg viewBox={`0 0 ${W} ${H}`} part=\"svg\">\n {this.heading && (\n <text x={W / 2} y=\"22\" class=\"heading\" text-anchor=\"middle\">\n {this.heading}\n </text>\n )}\n\n {slots.slice(0, this.rows * this.cols).map((s) => {\n const i = slots.indexOf(s);\n const col = i % this.cols;\n const row = Math.floor(i / this.cols);\n const cx = padX + col * cellW + cellW / 2;\n const cy = padTop + row * cellH + cellH / 2;\n\n const w = Math.min(cellW - 30, 80);\n const bodyH = Math.max(40, cellH - 60);\n const x = cx - w / 2;\n const y = cy - bodyH / 2;\n const neckTopX1 = x + w * 0.32;\n const neckTopX2 = x + w * 0.68;\n const shoulderY = y + 14;\n\n const state = this.resolveState(s);\n const level = s.level ?? 0;\n const innerPad = 5;\n const innerH = bodyH - 20 - innerPad * 2;\n const fillH = Math.max(0, innerH * (level / 100));\n\n return (\n <g class={`slot slot--${state}`}>\n {/* container outline — bottle silhouette */}\n <path\n class=\"outline\"\n d={`\n M ${neckTopX1} ${y}\n L ${neckTopX2} ${y}\n L ${neckTopX2} ${y + 8}\n L ${x + w} ${shoulderY}\n L ${x + w} ${y + bodyH}\n L ${x} ${y + bodyH}\n L ${x} ${shoulderY}\n L ${neckTopX1} ${y + 8}\n Z\n `}\n />\n\n {/* fill */}\n {state !== 'missing' && level > 0 && (\n <rect\n class=\"fill\"\n x={x + innerPad}\n y={y + bodyH - innerPad - fillH}\n width={w - innerPad * 2}\n height={fillH}\n rx=\"2\"\n />\n )}\n\n {/* level text inside the body */}\n {state !== 'missing' && (\n <text x={cx} y={cy + 4} class=\"level\" text-anchor=\"middle\">\n {Math.round(level)}%\n </text>\n )}\n\n {/* label under the container */}\n <text x={cx} y={y + bodyH + 16} class=\"label\" text-anchor=\"middle\">\n {s.label}\n </text>\n </g>\n );\n })}\n </svg>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: inline-block;
|
|
3
|
+
--_size: 8px;
|
|
4
|
+
--_bg: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));
|
|
5
|
+
--_glow: transparent;
|
|
6
|
+
|
|
7
|
+
width: var(--_size);
|
|
8
|
+
height: var(--_size);
|
|
9
|
+
border-radius: 50%;
|
|
10
|
+
background: var(--_bg);
|
|
11
|
+
box-shadow: 0 0 6px var(--_glow);
|
|
12
|
+
flex-shrink: 0;
|
|
13
|
+
vertical-align: middle;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
:host([size="sm"]) { --_size: 6px; }
|
|
17
|
+
:host([size="md"]) { --_size: 8px; }
|
|
18
|
+
:host([size="lg"]) { --_size: 12px; }
|
|
19
|
+
|
|
20
|
+
:host([state="running"]) {
|
|
21
|
+
--_bg: var(--ind-state-running-bg, #16a34a);
|
|
22
|
+
--_glow: var(--ind-state-running-glow, rgba(34, 197, 94, 0.6));
|
|
23
|
+
}
|
|
24
|
+
:host([state="stopped"]) {
|
|
25
|
+
--_bg: var(--ind-state-stopped-bg, #5a6776);
|
|
26
|
+
}
|
|
27
|
+
:host([state="fault"]) {
|
|
28
|
+
--_bg: var(--ind-state-fault-bg, #dc2626);
|
|
29
|
+
--_glow: var(--ind-state-fault-glow, rgba(220, 38, 38, 0.7));
|
|
30
|
+
}
|
|
31
|
+
:host([state="warning"]) {
|
|
32
|
+
--_bg: var(--ind-state-warning-bg, #f59e0b);
|
|
33
|
+
--_glow: var(--ind-state-warning-glow, rgba(245, 158, 11, 0.6));
|
|
34
|
+
}
|
|
35
|
+
:host([state="maintenance"]) {
|
|
36
|
+
--_bg: var(--ind-state-maintenance-bg, #2563eb);
|
|
37
|
+
--_glow: var(--ind-state-maintenance-glow, rgba(37, 99, 235, 0.6));
|
|
38
|
+
}
|
|
39
|
+
:host([state="success"]) {
|
|
40
|
+
--_bg: var(--ind-feedback-success-bg, #16a34a);
|
|
41
|
+
--_glow: rgba(34, 197, 94, 0.5);
|
|
42
|
+
}
|
|
43
|
+
:host([state="info"]) {
|
|
44
|
+
--_bg: var(--ind-feedback-info-bg, #0891b2);
|
|
45
|
+
--_glow: rgba(8, 145, 178, 0.5);
|
|
46
|
+
}
|
|
47
|
+
:host([state="error"]) {
|
|
48
|
+
--_bg: var(--ind-feedback-error-bg, #dc2626);
|
|
49
|
+
--_glow: rgba(220, 38, 38, 0.6);
|
|
50
|
+
}
|
|
51
|
+
:host([state="neutral"]) {
|
|
52
|
+
--_bg: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:host([blinking]) {
|
|
56
|
+
animation: ind-status-dot-blink var(--ind-motion-blink-fast, 400ms) steps(2, end) infinite;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@keyframes ind-status-dot-blink {
|
|
60
|
+
50% { opacity: 0.3; box-shadow: none; }
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@media (prefers-reduced-motion: reduce) {
|
|
64
|
+
:host([blinking]) {
|
|
65
|
+
animation: none;
|
|
66
|
+
outline: 2px solid currentColor;
|
|
67
|
+
outline-offset: 2px;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { h, Host } from "@stencil/core";
|
|
2
|
+
export class IndStatusDot {
|
|
3
|
+
state = 'neutral';
|
|
4
|
+
size = 'md';
|
|
5
|
+
blinking = false;
|
|
6
|
+
/**
|
|
7
|
+
* Optional accessible name. Set when the dot stands alone; leave undefined
|
|
8
|
+
* when it's paired with adjacent text that already names the status.
|
|
9
|
+
*/
|
|
10
|
+
label;
|
|
11
|
+
render() {
|
|
12
|
+
if (this.label) {
|
|
13
|
+
return h(Host, { role: "status", "aria-label": this.label });
|
|
14
|
+
}
|
|
15
|
+
return h(Host, { "aria-hidden": "true" });
|
|
16
|
+
}
|
|
17
|
+
static get is() { return "ind-status-dot"; }
|
|
18
|
+
static get encapsulation() { return "shadow"; }
|
|
19
|
+
static get originalStyleUrls() {
|
|
20
|
+
return {
|
|
21
|
+
"$": ["status-dot.css"]
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
static get styleUrls() {
|
|
25
|
+
return {
|
|
26
|
+
"$": ["status-dot.css"]
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
static get properties() {
|
|
30
|
+
return {
|
|
31
|
+
"state": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"mutable": false,
|
|
34
|
+
"complexType": {
|
|
35
|
+
"original": "StatusDotState",
|
|
36
|
+
"resolved": "\"error\" | \"fault\" | \"info\" | \"maintenance\" | \"neutral\" | \"running\" | \"stopped\" | \"success\" | \"warning\"",
|
|
37
|
+
"references": {
|
|
38
|
+
"StatusDotState": {
|
|
39
|
+
"location": "local",
|
|
40
|
+
"path": "C:/www/ind-ds/packages/core/src/components/atoms/status-dot/status-dot.tsx",
|
|
41
|
+
"id": "src/components/atoms/status-dot/status-dot.tsx::StatusDotState"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"required": false,
|
|
46
|
+
"optional": false,
|
|
47
|
+
"docs": {
|
|
48
|
+
"tags": [],
|
|
49
|
+
"text": ""
|
|
50
|
+
},
|
|
51
|
+
"getter": false,
|
|
52
|
+
"setter": false,
|
|
53
|
+
"reflect": true,
|
|
54
|
+
"attribute": "state",
|
|
55
|
+
"defaultValue": "'neutral'"
|
|
56
|
+
},
|
|
57
|
+
"size": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"mutable": false,
|
|
60
|
+
"complexType": {
|
|
61
|
+
"original": "StatusDotSize",
|
|
62
|
+
"resolved": "\"lg\" | \"md\" | \"sm\"",
|
|
63
|
+
"references": {
|
|
64
|
+
"StatusDotSize": {
|
|
65
|
+
"location": "local",
|
|
66
|
+
"path": "C:/www/ind-ds/packages/core/src/components/atoms/status-dot/status-dot.tsx",
|
|
67
|
+
"id": "src/components/atoms/status-dot/status-dot.tsx::StatusDotSize"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"required": false,
|
|
72
|
+
"optional": false,
|
|
73
|
+
"docs": {
|
|
74
|
+
"tags": [],
|
|
75
|
+
"text": ""
|
|
76
|
+
},
|
|
77
|
+
"getter": false,
|
|
78
|
+
"setter": false,
|
|
79
|
+
"reflect": true,
|
|
80
|
+
"attribute": "size",
|
|
81
|
+
"defaultValue": "'md'"
|
|
82
|
+
},
|
|
83
|
+
"blinking": {
|
|
84
|
+
"type": "boolean",
|
|
85
|
+
"mutable": false,
|
|
86
|
+
"complexType": {
|
|
87
|
+
"original": "boolean",
|
|
88
|
+
"resolved": "boolean",
|
|
89
|
+
"references": {}
|
|
90
|
+
},
|
|
91
|
+
"required": false,
|
|
92
|
+
"optional": false,
|
|
93
|
+
"docs": {
|
|
94
|
+
"tags": [],
|
|
95
|
+
"text": ""
|
|
96
|
+
},
|
|
97
|
+
"getter": false,
|
|
98
|
+
"setter": false,
|
|
99
|
+
"reflect": true,
|
|
100
|
+
"attribute": "blinking",
|
|
101
|
+
"defaultValue": "false"
|
|
102
|
+
},
|
|
103
|
+
"label": {
|
|
104
|
+
"type": "string",
|
|
105
|
+
"mutable": false,
|
|
106
|
+
"complexType": {
|
|
107
|
+
"original": "string",
|
|
108
|
+
"resolved": "string | undefined",
|
|
109
|
+
"references": {}
|
|
110
|
+
},
|
|
111
|
+
"required": false,
|
|
112
|
+
"optional": true,
|
|
113
|
+
"docs": {
|
|
114
|
+
"tags": [],
|
|
115
|
+
"text": "Optional accessible name. Set when the dot stands alone; leave undefined\nwhen it's paired with adjacent text that already names the status."
|
|
116
|
+
},
|
|
117
|
+
"getter": false,
|
|
118
|
+
"setter": false,
|
|
119
|
+
"reflect": false,
|
|
120
|
+
"attribute": "label"
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=status-dot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-dot.js","sourceRoot":"","sources":["../../../../src/components/atoms/status-dot/status-dot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAoBzD,MAAM,OAAO,YAAY;IACE,KAAK,GAAmB,SAAS,CAAC;IAClC,IAAI,GAAkB,IAAI,CAAC;IAC3B,QAAQ,GAAY,KAAK,CAAC;IAEnD;;;OAGG;IACK,KAAK,CAAU;IAEvB,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,EAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,gBAAa,IAAI,CAAC,KAAK,GAAI,CAAC;QACxD,CAAC;QACD,OAAO,EAAC,IAAI,mBAAa,MAAM,GAAG,CAAC;IACrC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, Host } from '@stencil/core';\n\nexport type StatusDotState =\n | 'neutral'\n | 'running'\n | 'stopped'\n | 'fault'\n | 'warning'\n | 'maintenance'\n | 'success'\n | 'info'\n | 'error';\n\nexport type StatusDotSize = 'sm' | 'md' | 'lg';\n\n@Component({\n tag: 'ind-status-dot',\n styleUrl: 'status-dot.css',\n shadow: true,\n})\nexport class IndStatusDot {\n @Prop({ reflect: true }) state: StatusDotState = 'neutral';\n @Prop({ reflect: true }) size: StatusDotSize = 'md';\n @Prop({ reflect: true }) blinking: boolean = false;\n\n /**\n * Optional accessible name. Set when the dot stands alone; leave undefined\n * when it's paired with adjacent text that already names the status.\n */\n @Prop() label?: string;\n\n render() {\n if (this.label) {\n return <Host role=\"status\" aria-label={this.label} />;\n }\n return <Host aria-hidden=\"true\" />;\n }\n}\n"]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: inline-block;
|
|
3
|
+
width: 100%;
|
|
4
|
+
font-family: var(--ind-font-family-sans);
|
|
5
|
+
color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.wrap {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
gap: var(--ind-spacing-2, 4px);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.label {
|
|
15
|
+
font-size: var(--ind-font-size-sm, 11px);
|
|
16
|
+
font-weight: var(--ind-font-weight-medium, 500);
|
|
17
|
+
color: var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));
|
|
18
|
+
letter-spacing: 0.04em;
|
|
19
|
+
text-transform: uppercase;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.textarea {
|
|
23
|
+
width: 100%;
|
|
24
|
+
box-sizing: border-box;
|
|
25
|
+
padding: var(--ind-spacing-3, 6px) var(--ind-spacing-4, 8px);
|
|
26
|
+
background: var(--ind-surface-sunken, light-dark(#ffffff, #000000));
|
|
27
|
+
border: 1px solid var(--ind-surface-border-default, #2a3340);
|
|
28
|
+
border-radius: var(--ind-radius-md, 3px);
|
|
29
|
+
font-family: inherit;
|
|
30
|
+
font-size: var(--ind-font-size-base, 12px);
|
|
31
|
+
line-height: var(--ind-font-line-height-normal, 1.4);
|
|
32
|
+
color: inherit;
|
|
33
|
+
resize: vertical;
|
|
34
|
+
outline: none;
|
|
35
|
+
font-feature-settings: var(--ind-font-feature-tabular, "tnum" 1);
|
|
36
|
+
transition:
|
|
37
|
+
border-color var(--ind-motion-duration-fast, 120ms),
|
|
38
|
+
box-shadow var(--ind-motion-duration-fast, 120ms);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.textarea:focus {
|
|
42
|
+
border-color: var(--ind-surface-focus-ring, #22d3ee);
|
|
43
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ind-surface-focus-ring, #22d3ee) 35%, transparent);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.textarea::placeholder {
|
|
47
|
+
color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));
|
|
48
|
+
opacity: 1;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:host([variant="mono"]) .textarea {
|
|
52
|
+
font-family: var(--ind-font-family-mono);
|
|
53
|
+
font-size: var(--ind-font-size-sm, 11px);
|
|
54
|
+
line-height: var(--ind-font-line-height-tight, 1.4);
|
|
55
|
+
background: var(--ind-color-palette-neutral-0, #000000);
|
|
56
|
+
color: var(--ind-color-palette-neutral-800, #d0d7e0);
|
|
57
|
+
border-color: var(--ind-surface-border-strong, #5a6776);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
:host([invalid]) .textarea {
|
|
61
|
+
border-color: var(--ind-feedback-error-bg, #dc2626);
|
|
62
|
+
}
|
|
63
|
+
:host([invalid]) .textarea:focus {
|
|
64
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ind-feedback-error-bg, #dc2626) 40%, transparent);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
:host([readonly]) .textarea {
|
|
68
|
+
cursor: default;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
:host([disabled]) {
|
|
72
|
+
opacity: 0.55;
|
|
73
|
+
pointer-events: none;
|
|
74
|
+
}
|