@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,2 @@
|
|
|
1
|
+
import{p as e,H as t,c as n,h as a,a as r,t as i}from"./index.js";const o=()=>`:host{display:flex;flex-direction:column;font-family:var(--ind-font-family-sans);background:var(--ind-surface-panel);border:1px solid var(--ind-surface-border-default);border-radius:var(--ind-radius-md, 3px);overflow:hidden;color:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5))}.toolbar{display:flex;align-items:center;gap:var(--ind-spacing-4, 8px);padding:var(--ind-spacing-3, 6px) var(--ind-spacing-4, 8px);border-bottom:1px solid var(--ind-surface-border-default);flex-wrap:wrap}.filter{flex:1;min-width:200px;height:var(--ind-size-input-sm, 24px);padding:0 var(--ind-spacing-4, 8px);background:var(--ind-surface-sunken);border:1px solid var(--ind-surface-border-default);border-radius:var(--ind-radius-md, 3px);font:inherit;font-size:var(--ind-font-size-sm, 11px);color:inherit;outline:none;box-sizing:border-box}.filter::placeholder{color:var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0))}.filter:focus{border-color:var(--ind-surface-focus-ring);box-shadow:0 0 0 2px color-mix(in srgb, var(--ind-surface-focus-ring) 35%, transparent)}.check{display:inline-flex;align-items:center;gap:var(--ind-spacing-2, 4px);font-size:var(--ind-font-size-sm, 11px);cursor:pointer;user-select:none;white-space:nowrap}.spacer{flex:1}.counter{font-family:var(--ind-font-family-mono);font-feature-settings:var(--ind-font-feature-tabular, "tnum" 1);color:var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));font-size:var(--ind-font-size-sm, 11px);white-space:nowrap}.clear{height:var(--ind-size-button-sm, 26px);padding:0 var(--ind-spacing-5, 12px);background:var(--ind-button-default-bg);color:var(--ind-button-default-fg);border:1px solid var(--ind-button-default-border);border-radius:var(--ind-radius-md, 3px);font:inherit;font-size:var(--ind-font-size-sm, 11px);font-weight:var(--ind-font-weight-semibold, 600);cursor:pointer}.clear:hover{background:var(--ind-button-default-bg-hover)}.clear:focus-visible{outline:2px solid var(--ind-surface-focus-ring);outline-offset:2px}.log{flex:1;width:100%;box-sizing:border-box;padding:var(--ind-spacing-3, 6px) var(--ind-spacing-4, 8px);background:var(--ind-color-palette-neutral-0, #000);color:var(--ind-color-palette-neutral-800, #d0d7e0);border:none;outline:none;font-family:var(--ind-font-family-mono);font-size:var(--ind-font-size-sm, 11px);line-height:var(--ind-font-line-height-normal, 1.4);font-feature-settings:var(--ind-font-feature-tabular, "tnum" 1);resize:vertical;cursor:default}`;const s=e(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.indFilterChange=n(this,"indFilterChange");this.indPauseChange=n(this,"indPauseChange");this.indClear=n(this,"indClear")}get host(){return this}log="";filterValue="";paused=false;rows=18;indFilterChange;indPauseChange;indClear;componentDidLoad(){this.scrollToBottom()}onLogChange(){if(!this.paused)this.scrollToBottom()}scrollToBottom(){requestAnimationFrame((()=>{const e=this.host.shadowRoot?.querySelector(".log");if(e)e.scrollTop=e.scrollHeight}))}filteredLines(){const e=this.log.split("\n");if(!this.filterValue)return e;const t=this.filterValue.toLowerCase();return e.filter((e=>e.toLowerCase().includes(t)))}onFilter=e=>{const t=e.target.value;this.filterValue=t;this.indFilterChange.emit(t)};onPause=e=>{const t=e.target.checked;this.paused=t;this.indPauseChange.emit(t)};render(){const e=this.filteredLines();const t=this.log?this.log.split("\n").filter((e=>e.length>0)).length:0;const n=e.filter((e=>e.length>0)).length;const i=this.filterValue?`${n} / ${t} msg`:`${t} msg`;return a(r,{key:"611c593c0c13009b372c0f3d8077c363c9801b97"},a("div",{key:"6552180414c9c06bf728b6d94eaa4ec282f9ecc9",class:"toolbar",part:"toolbar"},a("input",{key:"715c06c1dcd91764b619093804bd52dd9ebb512c",class:"filter",part:"filter",type:"search",placeholder:"Filter topic / payload...",value:this.filterValue,onInput:this.onFilter}),a("label",{key:"c7fc734cd7d0e08d28191804852ef7bf11ed01c7",class:"check"},a("input",{key:"6b250678c32e5e83b2925275cdd44579cf682933",type:"checkbox",checked:this.paused,onChange:this.onPause}),a("span",{key:"77f2a59bd50c2a8c48c27a719730ba2efc5e5b9e"},"Pause")),a("span",{key:"eb60e89a998c60548f62d982691ffbdc1ce08eb7",class:"spacer"}),a("span",{key:"298521f0328cb32523d63dd3a45248575313b6f6",class:"counter",part:"counter"},i),a("button",{key:"32a5aa35b0e622e8fac010a79bbd30cb434ba09e",type:"button",class:"clear",part:"clear",onClick:()=>this.indClear.emit()},"Clear")),a("textarea",{key:"7ca66e1a42cdd672faae4d14004af23c2cae7bae",class:"log",part:"log",readonly:true,rows:this.rows},e.join("\n")))}static get watchers(){return{log:[{onLogChange:0}]}}static get style(){return o()}},[513,"ind-mqtt-monitor",{log:[1],filterValue:[1025,"filter-value"],paused:[1028],rows:[2]},undefined,{log:[{onLogChange:0}]}]);function d(){if(typeof customElements==="undefined"){return}const e=["ind-mqtt-monitor"];e.forEach((e=>{switch(e){case"ind-mqtt-monitor":if(!customElements.get(i(e))){customElements.define(i(e),s)}break}}))}d();const c=s;const l=d;export{c as IndMqttMonitor,l as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ind-mqtt-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["mqttMonitorCss","IndMqttMonitor","__stencil_proxyCustomElement","HTMLElement","log","filterValue","paused","rows","indFilterChange","indPauseChange","indClear","componentDidLoad","this","scrollToBottom","onLogChange","requestAnimationFrame","ta","host","shadowRoot","querySelector","scrollTop","scrollHeight","filteredLines","lines","split","f","toLowerCase","filter","l","includes","onFilter","e","v","target","value","emit","onPause","checked","render","filtered","total","length","visible","countLabel","h","Host","key","class","part","type","placeholder","onInput","onChange","onClick","readonly","join"],"sources":["src/components/organisms/mqtt-monitor/mqtt-monitor.css?tag=ind-mqtt-monitor&encapsulation=shadow","src/components/organisms/mqtt-monitor/mqtt-monitor.tsx"],"sourcesContent":[":host {\n display: flex;\n flex-direction: column;\n font-family: var(--ind-font-family-sans);\n background: var(--ind-surface-panel);\n border: 1px solid var(--ind-surface-border-default);\n border-radius: var(--ind-radius-md, 3px);\n overflow: hidden;\n color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n}\n\n.toolbar {\n display: flex;\n align-items: center;\n gap: var(--ind-spacing-4, 8px);\n padding: var(--ind-spacing-3, 6px) var(--ind-spacing-4, 8px);\n border-bottom: 1px solid var(--ind-surface-border-default);\n flex-wrap: wrap;\n}\n\n.filter {\n flex: 1;\n min-width: 200px;\n height: var(--ind-size-input-sm, 24px);\n padding: 0 var(--ind-spacing-4, 8px);\n background: var(--ind-surface-sunken);\n border: 1px solid var(--ind-surface-border-default);\n border-radius: var(--ind-radius-md, 3px);\n font: inherit;\n font-size: var(--ind-font-size-sm, 11px);\n color: inherit;\n outline: none;\n box-sizing: border-box;\n}\n.filter::placeholder {\n color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));\n}\n.filter:focus {\n border-color: var(--ind-surface-focus-ring);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--ind-surface-focus-ring) 35%, transparent);\n}\n\n.check {\n display: inline-flex;\n align-items: center;\n gap: var(--ind-spacing-2, 4px);\n font-size: var(--ind-font-size-sm, 11px);\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n}\n\n.spacer { flex: 1; }\n\n.counter {\n font-family: var(--ind-font-family-mono);\n font-feature-settings: var(--ind-font-feature-tabular, \"tnum\" 1);\n color: var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));\n font-size: var(--ind-font-size-sm, 11px);\n white-space: nowrap;\n}\n\n.clear {\n height: var(--ind-size-button-sm, 26px);\n padding: 0 var(--ind-spacing-5, 12px);\n background: var(--ind-button-default-bg);\n color: var(--ind-button-default-fg);\n border: 1px solid var(--ind-button-default-border);\n border-radius: var(--ind-radius-md, 3px);\n font: inherit;\n font-size: var(--ind-font-size-sm, 11px);\n font-weight: var(--ind-font-weight-semibold, 600);\n cursor: pointer;\n}\n.clear:hover { background: var(--ind-button-default-bg-hover); }\n.clear:focus-visible {\n outline: 2px solid var(--ind-surface-focus-ring);\n outline-offset: 2px;\n}\n\n.log {\n flex: 1;\n width: 100%;\n box-sizing: border-box;\n padding: var(--ind-spacing-3, 6px) var(--ind-spacing-4, 8px);\n background: var(--ind-color-palette-neutral-0, #000);\n color: var(--ind-color-palette-neutral-800, #d0d7e0);\n border: none;\n outline: none;\n font-family: var(--ind-font-family-mono);\n font-size: var(--ind-font-size-sm, 11px);\n line-height: var(--ind-font-line-height-normal, 1.4);\n font-feature-settings: var(--ind-font-feature-tabular, \"tnum\" 1);\n resize: vertical;\n cursor: default;\n}\n","import {\n Component,\n Prop,\n Event,\n EventEmitter,\n Element,\n Watch,\n h,\n Host,\n} from '@stencil/core';\n\n@Component({\n tag: 'ind-mqtt-monitor',\n styleUrl: 'mqtt-monitor.css',\n shadow: true,\n})\nexport class IndMqttMonitor {\n @Element() host!: HTMLElement;\n\n /** Full log content. Newline-separated lines. */\n @Prop() log: string = '';\n /** Active filter — substring match on each line, case-insensitive. */\n @Prop({ mutable: true }) filterValue: string = '';\n /** When true, the log doesn't auto-scroll on new content. */\n @Prop({ mutable: true }) paused: boolean = false;\n /** Visible rows of the log textarea. */\n @Prop() rows: number = 18;\n\n @Event() indFilterChange!: EventEmitter<string>;\n @Event() indPauseChange!: EventEmitter<boolean>;\n @Event() indClear!: EventEmitter<void>;\n\n componentDidLoad() {\n this.scrollToBottom();\n }\n\n @Watch('log')\n onLogChange() {\n if (!this.paused) this.scrollToBottom();\n }\n\n private scrollToBottom() {\n requestAnimationFrame(() => {\n const ta = this.host.shadowRoot?.querySelector<HTMLTextAreaElement>('.log');\n if (ta) ta.scrollTop = ta.scrollHeight;\n });\n }\n\n private filteredLines(): string[] {\n const lines = this.log.split('\\n');\n if (!this.filterValue) return lines;\n const f = this.filterValue.toLowerCase();\n return lines.filter((l) => l.toLowerCase().includes(f));\n }\n\n private onFilter = (e: Event) => {\n const v = (e.target as HTMLInputElement).value;\n this.filterValue = v;\n this.indFilterChange.emit(v);\n };\n\n private onPause = (e: Event) => {\n const v = (e.target as HTMLInputElement).checked;\n this.paused = v;\n this.indPauseChange.emit(v);\n };\n\n render() {\n const filtered = this.filteredLines();\n const total = this.log ? this.log.split('\\n').filter((l) => l.length > 0).length : 0;\n const visible = filtered.filter((l) => l.length > 0).length;\n const countLabel = this.filterValue ? `${visible} / ${total} msg` : `${total} msg`;\n return (\n <Host>\n <div class=\"toolbar\" part=\"toolbar\">\n <input\n class=\"filter\"\n part=\"filter\"\n type=\"search\"\n placeholder=\"Filter topic / payload...\"\n value={this.filterValue}\n onInput={this.onFilter}\n />\n <label class=\"check\">\n <input type=\"checkbox\" checked={this.paused} onChange={this.onPause} />\n <span>Pause</span>\n </label>\n <span class=\"spacer\" />\n <span class=\"counter\" part=\"counter\">{countLabel}</span>\n <button\n type=\"button\"\n class=\"clear\"\n part=\"clear\"\n onClick={() => this.indClear.emit()}\n >Clear</button>\n </div>\n <textarea\n class=\"log\"\n part=\"log\"\n readonly\n rows={this.rows}\n >{filtered.join('\\n')}</textarea>\n </Host>\n );\n }\n}\n"],"mappings":"kEAAA,MAAMA,EAAiB,IAAM,+5E,MCgBhBC,EAAcC,EAAA,MAAAD,UAAAE,E,qOAIjBC,IAAc,GAEGC,YAAsB,GAEtBC,OAAkB,MAEnCC,KAAe,GAEdC,gBACAC,eACAC,SAET,gBAAAC,GACEC,KAAKC,gB,CAIP,WAAAC,GACE,IAAKF,KAAKN,OAAQM,KAAKC,gB,CAGjB,cAAAA,GACNE,uBAAsB,KACpB,MAAMC,EAAKJ,KAAKK,KAAKC,YAAYC,cAAmC,QACpE,GAAIH,EAAIA,EAAGI,UAAYJ,EAAGK,YAAY,G,CAIlC,aAAAC,GACN,MAAMC,EAAQX,KAAKR,IAAIoB,MAAM,MAC7B,IAAKZ,KAAKP,YAAa,OAAOkB,EAC9B,MAAME,EAAIb,KAAKP,YAAYqB,cAC3B,OAAOH,EAAMI,QAAQC,GAAMA,EAAEF,cAAcG,SAASJ,I,CAG9CK,SAAYC,IAClB,MAAMC,EAAKD,EAAEE,OAA4BC,MACzCtB,KAAKP,YAAc2B,EACnBpB,KAAKJ,gBAAgB2B,KAAKH,EAAE,EAGtBI,QAAWL,IACjB,MAAMC,EAAKD,EAAEE,OAA4BI,QACzCzB,KAAKN,OAAS0B,EACdpB,KAAKH,eAAe0B,KAAKH,EAAE,EAG7B,MAAAM,GACE,MAAMC,EAAW3B,KAAKU,gBACtB,MAAMkB,EAAQ5B,KAAKR,IAAMQ,KAAKR,IAAIoB,MAAM,MAAMG,QAAQC,GAAMA,EAAEa,OAAS,IAAGA,OAAS,EACnF,MAAMC,EAAUH,EAASZ,QAAQC,GAAMA,EAAEa,OAAS,IAAGA,OACrD,MAAME,EAAa/B,KAAKP,YAAc,GAAGqC,OAAaF,QAAc,GAAGA,QACvE,OACEI,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,UAAUC,KAAK,WACxBJ,EAAA,SAAAE,IAAA,2CACEC,MAAM,SACNC,KAAK,SACLC,KAAK,SACLC,YAAY,4BACZhB,MAAOtB,KAAKP,YACZ8C,QAASvC,KAAKkB,WAEhBc,EAAA,SAAAE,IAAA,2CAAOC,MAAM,SACXH,EAAA,SAAAE,IAAA,2CAAOG,KAAK,WAAWZ,QAASzB,KAAKN,OAAQ8C,SAAUxC,KAAKwB,UAC5DQ,EAAA,QAAAE,IAAA,sDAEFF,EAAA,QAAAE,IAAA,2CAAMC,MAAM,WACZH,EAAA,QAAAE,IAAA,2CAAMC,MAAM,UAAUC,KAAK,WAAWL,GACtCC,EAAA,UAAAE,IAAA,2CACEG,KAAK,SACLF,MAAM,QACNC,KAAK,QACLK,QAAS,IAAMzC,KAAKF,SAASyB,QAAM,UAGvCS,EAAA,YAAAE,IAAA,2CACEC,MAAM,MACNC,KAAK,MACLM,SAAQ,KACR/C,KAAMK,KAAKL,MACXgC,EAASgB,KAAK,O","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndNavItem extends Components.IndNavItem, HTMLElement {}
|
|
4
|
+
export const IndNavItem: {
|
|
5
|
+
prototype: IndNavItem;
|
|
6
|
+
new (): IndNavItem;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as t,H as e,c as i,h as a,a as n,t as r}from"./index.js";const s=()=>`:host{display:block;font-family:var(--ind-font-family-sans)}.item{position:relative;display:flex;align-items:center;gap:var(--ind-spacing-3, 6px);width:100%;height:var(--ind-nav-item-height, 38px);padding:0 var(--ind-spacing-5, 12px);background:transparent;border:none;color:var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));font:inherit;font-size:var(--ind-font-size-base, 12px);text-align:left;text-decoration:none;cursor:pointer;user-select:none;box-sizing:border-box;transition:background-color var(--ind-motion-duration-fast, 120ms), color var(--ind-motion-duration-fast, 120ms)}.indicator{width:10px;font-size:9px;color:var(--ind-feedback-info-bg, #0891b2);opacity:0;transition:opacity var(--ind-motion-duration-fast, 120ms);text-align:center}.content{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{font-size:var(--ind-font-size-xs, 10px);font-family:var(--ind-font-family-mono);font-weight:var(--ind-font-weight-bold, 700);font-feature-settings:var(--ind-font-feature-tabular, "tnum" 1);padding:1px var(--ind-spacing-2, 4px);min-width:16px;text-align:center;border-radius:var(--ind-radius-sm, 2px);background:var(--ind-feedback-error-bg, #dc2626);color:var(--ind-feedback-error-fg, #ffffff);line-height:1.2}.item:hover:not(:disabled):not([aria-disabled="true"]){background:var(--ind-surface-raised);color:var(--ind-surface-text-primary)}.item:focus-visible{outline:2px solid var(--ind-surface-focus-ring, #22d3ee);outline-offset:-2px}:host([active]) .item{background:var(--ind-surface-raised);color:var(--ind-surface-text-primary);font-weight:var(--ind-font-weight-semibold, 600)}:host([active]) .indicator{opacity:1}:host([disabled]){opacity:0.4;pointer-events:none}`;const o=t(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.indSelect=i(this,"indSelect")}active=false;disabled=false;label;href;badge;indSelect;onClick=t=>{if(this.disabled){t.preventDefault();return}if(!this.href)t.preventDefault();this.indSelect.emit()};render(){const t=this.active?"page":undefined;const e=this.badge!==undefined&&this.badge!==""&&this.badge!==null;const i=[a("span",{key:"ad9e90d0aab88711ff9e5f5db2cd988a76520c3c",class:"indicator",part:"indicator","aria-hidden":"true"},"▶"),a("span",{key:"33fa94a1e111cfc992dbd20ec1c8cfc9a30b18c5",class:"content",part:"content"},a("slot",{key:"bfc5072816f07d0fc276d67621efa09d4ce421f4"},this.label)),e?a("span",{class:"badge",part:"badge"},this.badge):null];return a(n,{key:"895afdd6a1a347adadb7213e4b42ece2d3e32c65"},this.href?a("a",{class:"item",part:"item",href:this.href,"aria-current":t,"aria-disabled":this.disabled?"true":undefined,onClick:this.onClick},i):a("button",{type:"button",class:"item",part:"item",disabled:this.disabled,"aria-current":t,onClick:this.onClick},i))}static get style(){return s()}},[769,"ind-nav-item",{active:[516],disabled:[516],label:[1],href:[1],badge:[8]}]);function d(){if(typeof customElements==="undefined"){return}const t=["ind-nav-item"];t.forEach((t=>{switch(t){case"ind-nav-item":if(!customElements.get(r(t))){customElements.define(r(t),o)}break}}))}d();const c=o;const f=d;export{c as IndNavItem,f as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ind-nav-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["navItemCss","IndNavItem","__stencil_proxyCustomElement","HTMLElement","active","disabled","label","href","badge","indSelect","onClick","e","this","preventDefault","emit","render","ariaCurrent","undefined","showBadge","inner","h","key","class","part","Host","type"],"sources":["src/components/molecules/nav-item/nav-item.css?tag=ind-nav-item&encapsulation=shadow","src/components/molecules/nav-item/nav-item.tsx"],"sourcesContent":[":host {\n display: block;\n font-family: var(--ind-font-family-sans);\n}\n\n.item {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--ind-spacing-3, 6px);\n width: 100%;\n height: var(--ind-nav-item-height, 38px);\n padding: 0 var(--ind-spacing-5, 12px);\n background: transparent;\n border: none;\n color: var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));\n font: inherit;\n font-size: var(--ind-font-size-base, 12px);\n text-align: left;\n text-decoration: none;\n cursor: pointer;\n user-select: none;\n box-sizing: border-box;\n transition:\n background-color var(--ind-motion-duration-fast, 120ms),\n color var(--ind-motion-duration-fast, 120ms);\n}\n\n.indicator {\n width: 10px;\n font-size: 9px;\n color: var(--ind-feedback-info-bg, #0891b2);\n opacity: 0;\n transition: opacity var(--ind-motion-duration-fast, 120ms);\n text-align: center;\n}\n\n.content {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.badge {\n font-size: var(--ind-font-size-xs, 10px);\n font-family: var(--ind-font-family-mono);\n font-weight: var(--ind-font-weight-bold, 700);\n font-feature-settings: var(--ind-font-feature-tabular, \"tnum\" 1);\n padding: 1px var(--ind-spacing-2, 4px);\n min-width: 16px;\n text-align: center;\n border-radius: var(--ind-radius-sm, 2px);\n background: var(--ind-feedback-error-bg, #dc2626);\n color: var(--ind-feedback-error-fg, #ffffff);\n line-height: 1.2;\n}\n\n.item:hover:not(:disabled):not([aria-disabled=\"true\"]) {\n background: var(--ind-surface-raised);\n color: var(--ind-surface-text-primary);\n}\n\n.item:focus-visible {\n outline: 2px solid var(--ind-surface-focus-ring, #22d3ee);\n outline-offset: -2px;\n}\n\n:host([active]) .item {\n background: var(--ind-surface-raised);\n color: var(--ind-surface-text-primary);\n font-weight: var(--ind-font-weight-semibold, 600);\n}\n\n:host([active]) .indicator {\n opacity: 1;\n}\n\n:host([disabled]) {\n opacity: 0.4;\n pointer-events: none;\n}\n","import { Component, Prop, h, Host, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'ind-nav-item',\n styleUrl: 'nav-item.css',\n shadow: true,\n})\nexport class IndNavItem {\n /** Current page indicator — gets the ▶ prefix and active styling. */\n @Prop({ reflect: true }) active: boolean = false;\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Label text. Falls back to slotted content. */\n @Prop() label?: string;\n /** Optional href. When set, renders as `<a>` so middle-click / right-click open in new tab. */\n @Prop() href?: string;\n /** Optional badge — alarm count, unread messages, etc. */\n @Prop() badge?: string | number;\n\n /** Fires on click (or Enter / Space). Use this to drive client-side routers. */\n @Event() indSelect!: EventEmitter<void>;\n\n private onClick = (e: MouseEvent) => {\n if (this.disabled) {\n e.preventDefault();\n return;\n }\n if (!this.href) e.preventDefault();\n this.indSelect.emit();\n };\n\n render() {\n const ariaCurrent = this.active ? 'page' : undefined;\n const showBadge = this.badge !== undefined && this.badge !== '' && this.badge !== null;\n\n const inner = [\n <span class=\"indicator\" part=\"indicator\" aria-hidden=\"true\">▶</span>,\n <span class=\"content\" part=\"content\"><slot>{this.label}</slot></span>,\n showBadge ? <span class=\"badge\" part=\"badge\">{this.badge}</span> : null,\n ];\n\n return (\n <Host>\n {this.href ? (\n <a\n class=\"item\"\n part=\"item\"\n href={this.href}\n aria-current={ariaCurrent}\n aria-disabled={this.disabled ? 'true' : undefined}\n onClick={this.onClick}\n >\n {inner}\n </a>\n ) : (\n <button\n type=\"button\"\n class=\"item\"\n part=\"item\"\n disabled={this.disabled}\n aria-current={ariaCurrent}\n onClick={this.onClick}\n >\n {inner}\n </button>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"kEAAA,MAAMA,EAAa,IAAM,msD,MCOZC,EAAUC,EAAA,MAAAD,UAAAE,E,oHAEIC,OAAkB,MAClBC,SAAoB,MAErCC,MAEAC,KAEAC,MAGCC,UAEDC,QAAWC,IACjB,GAAIC,KAAKP,SAAU,CACjBM,EAAEE,iBACF,M,CAEF,IAAKD,KAAKL,KAAMI,EAAEE,iBAClBD,KAAKH,UAAUK,MAAM,EAGvB,MAAAC,GACE,MAAMC,EAAcJ,KAAKR,OAAS,OAASa,UAC3C,MAAMC,EAAYN,KAAKJ,QAAUS,WAAaL,KAAKJ,QAAU,IAAMI,KAAKJ,QAAU,KAElF,MAAMW,EAAQ,CACZC,EAAA,QAAAC,IAAA,2CAAMC,MAAM,YAAYC,KAAK,YAAW,cAAa,QAAM,KAC3DH,EAAA,QAAAC,IAAA,2CAAMC,MAAM,UAAUC,KAAK,WAAUH,EAAA,QAAAC,IAAA,4CAAOT,KAAKN,QACjDY,EAAYE,EAAA,QAAME,MAAM,QAAQC,KAAK,SAASX,KAAKJ,OAAgB,MAGrE,OACEY,EAACI,EAAI,CAAAH,IAAA,4CACFT,KAAKL,KACJa,EAAA,KACEE,MAAM,OACNC,KAAK,OACLhB,KAAMK,KAAKL,KAAI,eACDS,EAAW,gBACVJ,KAAKP,SAAW,OAASY,UACxCP,QAASE,KAAKF,SAEbS,GAGHC,EAAA,UACEK,KAAK,SACLH,MAAM,OACNC,KAAK,OACLlB,SAAUO,KAAKP,SAAQ,eACTW,EACdN,QAASE,KAAKF,SAEbS,G","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndProgress extends Components.IndProgress, HTMLElement {}
|
|
4
|
+
export const IndProgress: {
|
|
5
|
+
prototype: IndProgress;
|
|
6
|
+
new (): IndProgress;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndScaraCanvas extends Components.IndScaraCanvas, HTMLElement {}
|
|
4
|
+
export const IndScaraCanvas: {
|
|
5
|
+
prototype: IndScaraCanvas;
|
|
6
|
+
new (): IndScaraCanvas;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as a,h as t,a as s,t as r}from"./index.js";const n=()=>`:host{display:block;width:var(--ind-size-canvas-robot-width, 320px);height:var(--ind-size-canvas-robot-height, 220px);font-family:var(--ind-font-family-mono)}svg{display:block;width:100%;height:100%;background:var(--ind-surface-sunken, light-dark(#ffffff, #000000));border:1px solid var(--ind-surface-border-default);border-radius:var(--ind-radius-md, 3px)}.envelope{fill:none;stroke:var(--ind-surface-border-subtle);stroke-dasharray:2 4}.envelope-inner{stroke-dasharray:1 3;opacity:0.6}.axis{stroke:var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));stroke-width:1}.axis-label{font-family:var(--ind-font-family-mono);font-size:9px;fill:var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0))}.link{stroke-width:5;stroke-linecap:round;transition:stroke 240ms}.link-1{stroke:var(--ind-state-running-bg, #16a34a)}.link-2{stroke:var(--ind-state-running-border, #4ade80)}.wrist{stroke:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));stroke-width:2;stroke-linecap:round}.joint{fill:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));stroke:var(--ind-surface-border-strong);stroke-width:1}.joint.base{fill:var(--ind-state-stopped-bg, #5a6776);stroke:var(--ind-state-stopped-border, #8390a0)}.joint.effector{fill:var(--ind-state-warning-bg, #f59e0b);stroke:var(--ind-state-warning-border, #fcd34d)}.readout text{font-size:9px;fill:var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));font-feature-settings:"tnum" 1}.readout tspan{fill:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));font-weight:700}:host([state="moving"]) .link{stroke-dasharray:4 2;animation:ind-scara-move 1.2s linear infinite}:host([state="fault"]) .link,:host([state="fault"]) .wrist{stroke:var(--ind-state-fault-bg, #dc2626)}:host([state="fault"]) .joint{stroke:var(--ind-state-fault-border, #f87171)}@keyframes ind-scara-move{to{stroke-dashoffset:-12}}@media (prefers-reduced-motion: reduce){:host([state="moving"]) .link{animation:none}}`;const c=e(class e extends a{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow()}joints=[0,0,0];linkLengths=[110,90];state="idle";parseArr(e){if(Array.isArray(e))return e;if(typeof e==="string"&&e.trim()){try{const a=JSON.parse(e);return Array.isArray(a)?a:[]}catch{return[]}}return[]}render(){const e=this.parseArr(this.joints);const a=this.parseArr(this.linkLengths);const[r=0,n=0,c=0]=e;const[i=110,f=90]=a;const d=160;const o=105;const l=r*Math.PI/180;const b=n*Math.PI/180;const k=c*Math.PI/180;const y=d+i*Math.cos(l);const h=o+i*Math.sin(l);const x=y+f*Math.cos(l+b);const u=h+f*Math.sin(l+b);const v=14;const p=x+v*Math.cos(l+b+k);const g=u+v*Math.sin(l+b+k);const m=e=>e.toFixed(1);const w=e=>e.toFixed(0);return t(s,{key:"0634f9fc9b197f66bf334c43c38e85c19066d090",role:"img","aria-label":`SCARA arm: J1 ${m(r)}°, J2 ${m(n)}°, J3 ${m(c)}°`},t("svg",{key:"c16607c36459cfad670b9ab913d46c23daf99883",viewBox:"0 0 320 220",part:"svg"},t("circle",{key:"4fc539c4f5a658ffbb4a2a9594a864e04cd6e9fe",cx:d,cy:o,r:i+f,class:"envelope envelope-outer"}),t("circle",{key:"b493720a1f306e75dedf48dbd1ccb53850248230",cx:d,cy:o,r:Math.max(0,i-f),class:"envelope envelope-inner"}),t("line",{key:"e28c6dc2ac8e73bac4381bba4dfb4cdb983097c7",x1:"10",y1:o,x2:"22",y2:o,class:"axis"}),t("line",{key:"5f460ffa1860dd1484100e972d043fd9a1491621",x1:d,y1:"6",x2:d,y2:"18",class:"axis"}),t("text",{key:"f4cb4f52a3279f7924aea8d8e642a91be18c38a5",x:"24",y:o+3,class:"axis-label"},"X"),t("text",{key:"d3d18e860674380af133295b763c52bc0adf591b",x:d+4,y:"14",class:"axis-label"},"Y"),t("line",{key:"cfad2277909207ee8a0f99fc73cc823db20f4f8e",x1:d,y1:o,x2:y,y2:h,class:"link link-1"}),t("line",{key:"2ea11a2363123b2f6876179a2519dc38e9882126",x1:y,y1:h,x2:x,y2:u,class:"link link-2"}),t("line",{key:"ad0a714279eea710da7e72a2141aab8165576c34",x1:x,y1:u,x2:p,y2:g,class:"wrist"}),t("circle",{key:"89f2b18ca37ed7b0e67b0dee6ed28e0702cafa54",cx:d,cy:o,r:"8",class:"joint base"}),t("circle",{key:"44129fff9afa9becab60e20ab86933e4a111f854",cx:y,cy:h,r:"6",class:"joint elbow"}),t("circle",{key:"bfa99f679b71e28f58c244267e5876c73c9cd6aa",cx:x,cy:u,r:"7",class:"joint effector"}),t("g",{key:"3753b9117625a70389a12c518330660d943a237f",class:"readout"},t("text",{key:"420f362c46c764ea86fbf12128727600a1454e51",x:"10",y:"198"},"J1 ",t("tspan",{key:"4f1afe52d964043034d93d02eb27b4fc4e7b7f3c"},m(r),"°")),t("text",{key:"185d3d66158b63322153d59a97d79792e5105957",x:"74",y:"198"},"J2 ",t("tspan",{key:"9c6802f9ee9b2bb8ae3154880e2b7b1ffaf21167"},m(n),"°")),t("text",{key:"b6d0a5aa47c925997cc7efa0c1cadd067f184243",x:"138",y:"198"},"J3 ",t("tspan",{key:"5c06a24d477670deeceb6f80e3fb707b39b1b1e3"},m(c),"°")),t("text",{key:"99c96bf07d28555af967c4cb22a2856c1bdb46fb",x:"202",y:"198"},"X ",t("tspan",{key:"4097b0a431bed9c608f5a43994ad213bfdd56663"},w(x-d))),t("text",{key:"56ccbac660ea805f260977c0e64fdf424f1d40fe",x:"254",y:"198"},"Y ",t("tspan",{key:"d4cfa6e17fc0da8494f8f526e7d5f27cf233dc22"},w(u-o))))))}static get style(){return n()}},[513,"ind-scara-canvas",{joints:[1],linkLengths:[1,"link-lengths"],state:[513]}]);function i(){if(typeof customElements==="undefined"){return}const e=["ind-scara-canvas"];e.forEach((e=>{switch(e){case"ind-scara-canvas":if(!customElements.get(r(e))){customElements.define(r(e),c)}break}}))}i();const f=c;const d=i;export{f as IndScaraCanvas,d as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ind-scara-canvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["scaraCanvasCss","IndScaraCanvas","__stencil_proxyCustomElement","HTMLElement","joints","linkLengths","state","parseArr","v","Array","isArray","trim","p","JSON","parse","render","j","this","l","j1","j2","j3","l1","l2","cx","cy","j1r","Math","PI","j2r","j3r","ex","cos","ey","sin","eex","eey","wlen","wx","wy","fmt","n","toFixed","fmt0","h","Host","key","role","viewBox","part","r","class","max","x1","y1","x2","y2","x","y"],"sources":["src/components/atoms/scara-canvas/scara-canvas.css?tag=ind-scara-canvas&encapsulation=shadow","src/components/atoms/scara-canvas/scara-canvas.tsx"],"sourcesContent":[":host {\n display: block;\n width: var(--ind-size-canvas-robot-width, 320px);\n height: var(--ind-size-canvas-robot-height, 220px);\n font-family: var(--ind-font-family-mono);\n}\n\nsvg {\n display: block;\n width: 100%;\n height: 100%;\n background: var(--ind-surface-sunken, light-dark(#ffffff, #000000));\n border: 1px solid var(--ind-surface-border-default);\n border-radius: var(--ind-radius-md, 3px);\n}\n\n.envelope {\n fill: none;\n stroke: var(--ind-surface-border-subtle);\n stroke-dasharray: 2 4;\n}\n\n.envelope-inner {\n stroke-dasharray: 1 3;\n opacity: 0.6;\n}\n\n.axis {\n stroke: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));\n stroke-width: 1;\n}\n\n.axis-label {\n font-family: var(--ind-font-family-mono);\n font-size: 9px;\n fill: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));\n}\n\n.link {\n stroke-width: 5;\n stroke-linecap: round;\n transition: stroke 240ms;\n}\n.link-1 { stroke: var(--ind-state-running-bg, #16a34a); }\n.link-2 { stroke: var(--ind-state-running-border, #4ade80); }\n\n.wrist {\n stroke: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n.joint {\n fill: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n stroke: var(--ind-surface-border-strong);\n stroke-width: 1;\n}\n\n.joint.base {\n fill: var(--ind-state-stopped-bg, #5a6776);\n stroke: var(--ind-state-stopped-border, #8390a0);\n}\n\n.joint.effector {\n fill: var(--ind-state-warning-bg, #f59e0b);\n stroke: var(--ind-state-warning-border, #fcd34d);\n}\n\n.readout text {\n font-size: 9px;\n fill: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));\n font-feature-settings: \"tnum\" 1;\n}\n.readout tspan {\n fill: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n font-weight: 700;\n}\n\n:host([state=\"moving\"]) .link {\n stroke-dasharray: 4 2;\n animation: ind-scara-move 1.2s linear infinite;\n}\n\n:host([state=\"fault\"]) .link,\n:host([state=\"fault\"]) .wrist {\n stroke: var(--ind-state-fault-bg, #dc2626);\n}\n:host([state=\"fault\"]) .joint {\n stroke: var(--ind-state-fault-border, #f87171);\n}\n\n@keyframes ind-scara-move {\n to { stroke-dashoffset: -12; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host([state=\"moving\"]) .link {\n animation: none;\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\nexport type ScaraState = 'idle' | 'moving' | 'fault';\n\n/**\n * 2D top-down SCARA arm view. Pure presentational — pass joint angles and\n * link lengths, the component computes forward kinematics in SVG space.\n *\n * <ind-scara-canvas .joints=${[30, 45, 0]} state=\"moving\"></ind-scara-canvas>\n *\n * - `joints[0]` (J1) — shoulder rotation in degrees, 0 = +X axis\n * - `joints[1]` (J2) — elbow rotation in degrees, relative to link 1\n * - `joints[2]` (J3) — wrist (end effector) rotation, drives the small indicator\n *\n * Z translation isn't represented — it would require a separate side view.\n */\n@Component({\n tag: 'ind-scara-canvas',\n styleUrl: 'scara-canvas.css',\n shadow: true,\n})\nexport class IndScaraCanvas {\n @Prop() joints: number[] | string = [0, 0, 0];\n @Prop() linkLengths: number[] | string = [110, 90];\n @Prop({ reflect: true }) state: ScaraState = 'idle';\n\n private parseArr(v: number[] | string): number[] {\n if (Array.isArray(v)) return v;\n if (typeof v === 'string' && v.trim()) {\n try {\n const p = JSON.parse(v);\n return Array.isArray(p) ? p : [];\n } catch {\n return [];\n }\n }\n return [];\n }\n\n render() {\n const j = this.parseArr(this.joints);\n const l = this.parseArr(this.linkLengths);\n const [j1 = 0, j2 = 0, j3 = 0] = j;\n const [l1 = 110, l2 = 90] = l;\n\n const cx = 160;\n const cy = 105;\n\n const j1r = (j1 * Math.PI) / 180;\n const j2r = (j2 * Math.PI) / 180;\n const j3r = (j3 * Math.PI) / 180;\n\n // Forward kinematics\n const ex = cx + l1 * Math.cos(j1r);\n const ey = cy + l1 * Math.sin(j1r);\n const eex = ex + l2 * Math.cos(j1r + j2r);\n const eey = ey + l2 * Math.sin(j1r + j2r);\n\n // Wrist indicator (J3)\n const wlen = 14;\n const wx = eex + wlen * Math.cos(j1r + j2r + j3r);\n const wy = eey + wlen * Math.sin(j1r + j2r + j3r);\n\n const fmt = (n: number) => n.toFixed(1);\n const fmt0 = (n: number) => n.toFixed(0);\n\n return (\n <Host\n role=\"img\"\n aria-label={`SCARA arm: J1 ${fmt(j1)}°, J2 ${fmt(j2)}°, J3 ${fmt(j3)}°`}\n >\n <svg viewBox=\"0 0 320 220\" part=\"svg\">\n {/* Working envelope */}\n <circle cx={cx} cy={cy} r={l1 + l2} class=\"envelope envelope-outer\" />\n <circle cx={cx} cy={cy} r={Math.max(0, l1 - l2)} class=\"envelope envelope-inner\" />\n\n {/* Reference axes */}\n <line x1=\"10\" y1={cy} x2=\"22\" y2={cy} class=\"axis\" />\n <line x1={cx} y1=\"6\" x2={cx} y2=\"18\" class=\"axis\" />\n <text x=\"24\" y={cy + 3} class=\"axis-label\">X</text>\n <text x={cx + 4} y=\"14\" class=\"axis-label\">Y</text>\n\n {/* Links */}\n <line x1={cx} y1={cy} x2={ex} y2={ey} class=\"link link-1\" />\n <line x1={ex} y1={ey} x2={eex} y2={eey} class=\"link link-2\" />\n <line x1={eex} y1={eey} x2={wx} y2={wy} class=\"wrist\" />\n\n {/* Joints */}\n <circle cx={cx} cy={cy} r=\"8\" class=\"joint base\" />\n <circle cx={ex} cy={ey} r=\"6\" class=\"joint elbow\" />\n <circle cx={eex} cy={eey} r=\"7\" class=\"joint effector\" />\n\n {/* Readout */}\n <g class=\"readout\">\n <text x=\"10\" y=\"198\">J1 <tspan>{fmt(j1)}°</tspan></text>\n <text x=\"74\" y=\"198\">J2 <tspan>{fmt(j2)}°</tspan></text>\n <text x=\"138\" y=\"198\">J3 <tspan>{fmt(j3)}°</tspan></text>\n <text x=\"202\" y=\"198\">X <tspan>{fmt0(eex - cx)}</tspan></text>\n <text x=\"254\" y=\"198\">Y <tspan>{fmt0(eey - cy)}</tspan></text>\n </g>\n </svg>\n </Host>\n );\n }\n}\n"],"mappings":"2DAAA,MAAMA,EAAiB,IAAM,86D,MCqBhBC,EAAcC,EAAA,MAAAD,UAAAE,E,iFACjBC,OAA4B,CAAC,EAAG,EAAG,GACnCC,YAAiC,CAAC,IAAK,IACtBC,MAAoB,OAErC,QAAAC,CAASC,GACf,GAAIC,MAAMC,QAAQF,GAAI,OAAOA,EAC7B,UAAWA,IAAM,UAAYA,EAAEG,OAAQ,CACrC,IACE,MAAMC,EAAIC,KAAKC,MAAMN,GACrB,OAAOC,MAAMC,QAAQE,GAAKA,EAAI,E,CAC9B,MACA,MAAO,E,EAGX,MAAO,E,CAGT,MAAAG,GACE,MAAMC,EAAIC,KAAKV,SAASU,KAAKb,QAC7B,MAAMc,EAAID,KAAKV,SAASU,KAAKZ,aAC7B,MAAOc,EAAK,EAAGC,EAAK,EAAGC,EAAK,GAAKL,EACjC,MAAOM,EAAK,IAAKC,EAAK,IAAML,EAE5B,MAAMM,EAAK,IACX,MAAMC,EAAK,IAEX,MAAMC,EAAOP,EAAKQ,KAAKC,GAAM,IAC7B,MAAMC,EAAOT,EAAKO,KAAKC,GAAM,IAC7B,MAAME,EAAOT,EAAKM,KAAKC,GAAM,IAG7B,MAAMG,EAAKP,EAAKF,EAAKK,KAAKK,IAAIN,GAC9B,MAAMO,EAAKR,EAAKH,EAAKK,KAAKO,IAAIR,GAC9B,MAAMS,EAAMJ,EAAKR,EAAKI,KAAKK,IAAIN,EAAMG,GACrC,MAAMO,EAAMH,EAAKV,EAAKI,KAAKO,IAAIR,EAAMG,GAGrC,MAAMQ,EAAO,GACb,MAAMC,EAAKH,EAAME,EAAOV,KAAKK,IAAIN,EAAMG,EAAMC,GAC7C,MAAMS,EAAKH,EAAMC,EAAOV,KAAKO,IAAIR,EAAMG,EAAMC,GAE7C,MAAMU,EAAOC,GAAcA,EAAEC,QAAQ,GACrC,MAAMC,EAAQF,GAAcA,EAAEC,QAAQ,GAEtC,OACEE,EAACC,EAAI,CAAAC,IAAA,2CACHC,KAAK,MAAK,aACE,iBAAiBP,EAAIrB,WAAYqB,EAAIpB,WAAYoB,EAAInB,OAEjEuB,EAAA,OAAAE,IAAA,2CAAKE,QAAQ,cAAcC,KAAK,OAE9BL,EAAA,UAAAE,IAAA,2CAAQtB,GAAIA,EAAIC,GAAIA,EAAIyB,EAAG5B,EAAKC,EAAI4B,MAAM,4BAC1CP,EAAA,UAAAE,IAAA,2CAAQtB,GAAIA,EAAIC,GAAIA,EAAIyB,EAAGvB,KAAKyB,IAAI,EAAG9B,EAAKC,GAAK4B,MAAM,4BAGvDP,EAAA,QAAAE,IAAA,2CAAMO,GAAG,KAAKC,GAAI7B,EAAI8B,GAAG,KAAKC,GAAI/B,EAAI0B,MAAM,SAC5CP,EAAA,QAAAE,IAAA,2CAAMO,GAAI7B,EAAI8B,GAAG,IAAIC,GAAI/B,EAAIgC,GAAG,KAAKL,MAAM,SAC3CP,EAAA,QAAAE,IAAA,2CAAMW,EAAE,KAAKC,EAAGjC,EAAK,EAAG0B,MAAM,cAAY,KAC1CP,EAAA,QAAAE,IAAA,2CAAMW,EAAGjC,EAAK,EAAGkC,EAAE,KAAKP,MAAM,cAAY,KAG1CP,EAAA,QAAAE,IAAA,2CAAMO,GAAI7B,EAAI8B,GAAI7B,EAAI8B,GAAIxB,EAAIyB,GAAIvB,EAAIkB,MAAM,gBAC5CP,EAAA,QAAAE,IAAA,2CAAMO,GAAItB,EAAIuB,GAAIrB,EAAIsB,GAAIpB,EAAKqB,GAAIpB,EAAKe,MAAM,gBAC9CP,EAAA,QAAAE,IAAA,2CAAMO,GAAIlB,EAAKmB,GAAIlB,EAAKmB,GAAIjB,EAAIkB,GAAIjB,EAAIY,MAAM,UAG9CP,EAAA,UAAAE,IAAA,2CAAQtB,GAAIA,EAAIC,GAAIA,EAAIyB,EAAE,IAAIC,MAAM,eACpCP,EAAA,UAAAE,IAAA,2CAAQtB,GAAIO,EAAIN,GAAIQ,EAAIiB,EAAE,IAAIC,MAAM,gBACpCP,EAAA,UAAAE,IAAA,2CAAQtB,GAAIW,EAAKV,GAAIW,EAAKc,EAAE,IAAIC,MAAM,mBAGtCP,EAAA,KAAAE,IAAA,2CAAGK,MAAM,WACPP,EAAA,QAAAE,IAAA,2CAAMW,EAAE,KAAKC,EAAE,OAAK,MAAId,EAAA,SAAAE,IAAA,4CAAQN,EAAIrB,GAAG,MACvCyB,EAAA,QAAAE,IAAA,2CAAMW,EAAE,KAAKC,EAAE,OAAK,MAAId,EAAA,SAAAE,IAAA,4CAAQN,EAAIpB,GAAG,MACvCwB,EAAA,QAAAE,IAAA,2CAAMW,EAAE,MAAMC,EAAE,OAAK,MAAId,EAAA,SAAAE,IAAA,4CAAQN,EAAInB,GAAG,MACxCuB,EAAA,QAAAE,IAAA,2CAAMW,EAAE,MAAMC,EAAE,OAAK,KAAGd,EAAA,SAAAE,IAAA,4CAAQH,EAAKR,EAAMX,KAC3CoB,EAAA,QAAAE,IAAA,2CAAMW,EAAE,MAAMC,EAAE,OAAK,KAAGd,EAAA,SAAAE,IAAA,4CAAQH,EAAKP,EAAMX,O","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndSelect extends Components.IndSelect, HTMLElement {}
|
|
4
|
+
export const IndSelect: {
|
|
5
|
+
prototype: IndSelect;
|
|
6
|
+
new (): IndSelect;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as a,c as i,h as n,a as t,t as r}from"./index.js";const s=()=>`:host{display:inline-block;font-family:var(--ind-font-family-sans);color:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));--_h:var(--ind-size-input-md, 32px)}:host([size="sm"]){--_h:var(--ind-size-input-sm, 24px)}:host([size="md"]){--_h:var(--ind-size-input-md, 32px)}:host([size="lg"]){--_h:var(--ind-size-input-lg, 40px)}.wrap{display:inline-flex;flex-direction:column;gap:var(--ind-spacing-2, 4px);min-width:160px}.label{font-size:var(--ind-font-size-sm, 11px);font-weight:var(--ind-font-weight-medium, 500);color:var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));letter-spacing:0.04em;text-transform:uppercase}.field{position:relative;display:inline-flex;align-items:center;height:var(--_h);background:var(--ind-surface-sunken, light-dark(#ffffff, #000000));border:1px solid var(--ind-surface-border-default, #2a3340);border-radius:var(--ind-radius-md, 3px);transition:border-color var(--ind-motion-duration-fast, 120ms), box-shadow var(--ind-motion-duration-fast, 120ms)}.field:focus-within{border-color:var(--ind-surface-focus-ring, #22d3ee);box-shadow:0 0 0 2px color-mix(in srgb, var(--ind-surface-focus-ring, #22d3ee) 35%, transparent)}.native{appearance:none;-webkit-appearance:none;flex:1;height:100%;background:transparent;border:none;outline:none;padding:0 calc(var(--ind-spacing-7, 20px) + 8px) 0 var(--ind-spacing-4, 8px);font:inherit;color:inherit;cursor:pointer;font-feature-settings:var(--ind-font-feature-tabular, "tnum" 1)}.native::-ms-expand{display:none}.native option{background:var(--ind-surface-panel);color:var(--ind-surface-text-primary)}.caret{position:absolute;right:var(--ind-spacing-4, 8px);font-size:var(--ind-font-size-base, 12px);color:var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));pointer-events:none;line-height:1}:host([invalid]) .field{border-color:var(--ind-feedback-error-bg, #dc2626)}:host([invalid]) .field:focus-within{box-shadow:0 0 0 2px color-mix(in srgb, var(--ind-feedback-error-bg, #dc2626) 40%, transparent)}:host([disabled]){opacity:0.55;pointer-events:none}`;const d=e(class e extends a{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.indChange=i(this,"indChange")}options=[];value="";placeholder;label;name;size="md";disabled=false;invalid=false;indChange;parseOptions(){if(Array.isArray(this.options))return this.options;if(typeof this.options==="string"&&this.options.trim()){try{const e=JSON.parse(this.options);return Array.isArray(e)?e:[]}catch{return[]}}return[]}onChange=e=>{const a=e.target.value;this.value=a;this.indChange.emit(a)};render(){const e=this.parseOptions();return n(t,{key:"283d3e72b726d0b04958b452629df4e579907f05"},n("label",{key:"dcbfc48d00c096cd6b709e4eb16b687cd07dd350",class:"wrap",part:"wrap"},this.label&&n("span",{key:"011fa524c21bfc749cedc70f6ec810ca90a73be2",class:"label",part:"label"},this.label),n("span",{key:"8fc35e3db2cbf2bd9cb780d8e1e1ee395c022d1a",class:"field",part:"field"},n("select",{key:"a8944a8a82162e4f1b36e9384145dd4e0399afaf",class:"native",part:"native",disabled:this.disabled,name:this.name,"aria-invalid":this.invalid?"true":"false",onChange:this.onChange},this.placeholder&&n("option",{key:"8da45f0c3d932005210e61a216f7f9dfa9581767",value:"",disabled:true,selected:this.value===""},this.placeholder),e.map((e=>n("option",{value:e.value,disabled:e.disabled,selected:e.value===this.value},e.label)))),n("span",{key:"ca2db8e41ee4fe3a8ef1a51458189face0450541",class:"caret",part:"caret","aria-hidden":"true"},"▾"))))}static get style(){return s()}},[513,"ind-select",{options:[1],value:[1025],placeholder:[1],label:[1],name:[1],size:[513],disabled:[516],invalid:[516]}]);function o(){if(typeof customElements==="undefined"){return}const e=["ind-select"];e.forEach((e=>{switch(e){case"ind-select":if(!customElements.get(r(e))){customElements.define(r(e),d)}break}}))}o();const c=d;const l=o;export{c as IndSelect,l as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ind-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["selectCss","IndSelect","__stencil_proxyCustomElement","HTMLElement","options","value","placeholder","label","name","size","disabled","invalid","indChange","parseOptions","Array","isArray","this","trim","parsed","JSON","parse","onChange","e","v","target","emit","render","opts","h","Host","key","class","part","selected","map","o"],"sources":["src/components/atoms/select/select.css?tag=ind-select&encapsulation=shadow","src/components/atoms/select/select.tsx"],"sourcesContent":[":host {\n display: inline-block;\n font-family: var(--ind-font-family-sans);\n color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n --_h: var(--ind-size-input-md, 32px);\n}\n\n:host([size=\"sm\"]) { --_h: var(--ind-size-input-sm, 24px); }\n:host([size=\"md\"]) { --_h: var(--ind-size-input-md, 32px); }\n:host([size=\"lg\"]) { --_h: var(--ind-size-input-lg, 40px); }\n\n.wrap {\n display: inline-flex;\n flex-direction: column;\n gap: var(--ind-spacing-2, 4px);\n min-width: 160px;\n}\n\n.label {\n font-size: var(--ind-font-size-sm, 11px);\n font-weight: var(--ind-font-weight-medium, 500);\n color: var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.field {\n position: relative;\n display: inline-flex;\n align-items: center;\n height: var(--_h);\n background: var(--ind-surface-sunken, light-dark(#ffffff, #000000));\n border: 1px solid var(--ind-surface-border-default, #2a3340);\n border-radius: var(--ind-radius-md, 3px);\n transition:\n border-color var(--ind-motion-duration-fast, 120ms),\n box-shadow var(--ind-motion-duration-fast, 120ms);\n}\n\n.field:focus-within {\n border-color: var(--ind-surface-focus-ring, #22d3ee);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--ind-surface-focus-ring, #22d3ee) 35%, transparent);\n}\n\n.native {\n appearance: none;\n -webkit-appearance: none;\n flex: 1;\n height: 100%;\n background: transparent;\n border: none;\n outline: none;\n padding: 0 calc(var(--ind-spacing-7, 20px) + 8px) 0 var(--ind-spacing-4, 8px);\n font: inherit;\n color: inherit;\n cursor: pointer;\n font-feature-settings: var(--ind-font-feature-tabular, \"tnum\" 1);\n}\n\n.native::-ms-expand { display: none; }\n\n/* Native option styling: at least give them a dark theme bg when\n * the OS picker honors it (Chrome/Edge mostly do). */\n.native option {\n background: var(--ind-surface-panel);\n color: var(--ind-surface-text-primary);\n}\n\n.caret {\n position: absolute;\n right: var(--ind-spacing-4, 8px);\n font-size: var(--ind-font-size-base, 12px);\n color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));\n pointer-events: none;\n line-height: 1;\n}\n\n:host([invalid]) .field {\n border-color: var(--ind-feedback-error-bg, #dc2626);\n}\n:host([invalid]) .field:focus-within {\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--ind-feedback-error-bg, #dc2626) 40%, transparent);\n}\n\n:host([disabled]) {\n opacity: 0.55;\n pointer-events: none;\n}\n","import { Component, Prop, h, Host, Event, EventEmitter } from '@stencil/core';\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport type SelectSize = 'sm' | 'md' | 'lg';\n\n@Component({\n tag: 'ind-select',\n styleUrl: 'select.css',\n shadow: true,\n})\nexport class IndSelect {\n /**\n * Options. Pass an array via JS property (`.options = [...]`) OR a JSON-stringified\n * array via the HTML `options` attribute. The native picker handles keyboard nav and\n * mobile UI without us building a popover.\n */\n @Prop() options: SelectOption[] | string = [];\n @Prop({ mutable: true }) value: string = '';\n @Prop() placeholder?: string;\n @Prop() label?: string;\n @Prop() name?: string;\n @Prop({ reflect: true }) size: SelectSize = 'md';\n @Prop({ reflect: true }) disabled: boolean = false;\n @Prop({ reflect: true }) invalid: boolean = false;\n\n @Event() indChange!: EventEmitter<string>;\n\n private parseOptions(): SelectOption[] {\n if (Array.isArray(this.options)) return this.options;\n if (typeof this.options === 'string' && this.options.trim()) {\n try {\n const parsed = JSON.parse(this.options);\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n }\n return [];\n }\n\n private onChange = (e: Event) => {\n const v = (e.target as HTMLSelectElement).value;\n this.value = v;\n this.indChange.emit(v);\n };\n\n render() {\n const opts = this.parseOptions();\n return (\n <Host>\n <label class=\"wrap\" part=\"wrap\">\n {this.label && <span class=\"label\" part=\"label\">{this.label}</span>}\n <span class=\"field\" part=\"field\">\n <select\n class=\"native\"\n part=\"native\"\n disabled={this.disabled}\n name={this.name}\n aria-invalid={this.invalid ? 'true' : 'false'}\n onChange={this.onChange}\n >\n {this.placeholder && (\n <option value=\"\" disabled selected={this.value === ''}>\n {this.placeholder}\n </option>\n )}\n {opts.map((o) => (\n <option value={o.value} disabled={o.disabled} selected={o.value === this.value}>\n {o.label}\n </option>\n ))}\n </select>\n <span class=\"caret\" part=\"caret\" aria-hidden=\"true\">▾</span>\n </span>\n </label>\n </Host>\n );\n }\n}\n"],"mappings":"kEAAA,MAAMA,EAAY,IAAM,2gE,MCeXC,EAASC,EAAA,MAAAD,UAAAE,E,oHAMZC,QAAmC,GAClBC,MAAgB,GACjCC,YACAC,MACAC,KACiBC,KAAmB,KACnBC,SAAoB,MACpBC,QAAmB,MAEnCC,UAED,YAAAC,GACN,GAAIC,MAAMC,QAAQC,KAAKZ,SAAU,OAAOY,KAAKZ,QAC7C,UAAWY,KAAKZ,UAAY,UAAYY,KAAKZ,QAAQa,OAAQ,CAC3D,IACE,MAAMC,EAASC,KAAKC,MAAMJ,KAAKZ,SAC/B,OAAOU,MAAMC,QAAQG,GAAUA,EAAS,E,CACxC,MACA,MAAO,E,EAGX,MAAO,E,CAGDG,SAAYC,IAClB,MAAMC,EAAKD,EAAEE,OAA6BnB,MAC1CW,KAAKX,MAAQkB,EACbP,KAAKJ,UAAUa,KAAKF,EAAE,EAGxB,MAAAG,GACE,MAAMC,EAAOX,KAAKH,eAClB,OACEe,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,SAAAE,IAAA,2CAAOC,MAAM,OAAOC,KAAK,QACtBhB,KAAKT,OAASqB,EAAA,QAAAE,IAAA,2CAAMC,MAAM,QAAQC,KAAK,SAAShB,KAAKT,OACtDqB,EAAA,QAAAE,IAAA,2CAAMC,MAAM,QAAQC,KAAK,SACvBJ,EAAA,UAAAE,IAAA,2CACEC,MAAM,SACNC,KAAK,SACLtB,SAAUM,KAAKN,SACfF,KAAMQ,KAAKR,KAAI,eACDQ,KAAKL,QAAU,OAAS,QACtCU,SAAUL,KAAKK,UAEdL,KAAKV,aACJsB,EAAA,UAAAE,IAAA,2CAAQzB,MAAM,GAAGK,SAAQ,KAACuB,SAAUjB,KAAKX,QAAU,IAChDW,KAAKV,aAGTqB,EAAKO,KAAKC,GACTP,EAAA,UAAQvB,MAAO8B,EAAE9B,MAAOK,SAAUyB,EAAEzB,SAAUuB,SAAUE,EAAE9B,QAAUW,KAAKX,OACtE8B,EAAE5B,UAITqB,EAAA,QAAAE,IAAA,2CAAMC,MAAM,QAAQC,KAAK,QAAO,cAAa,QAAM,O","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndShelfCanvas extends Components.IndShelfCanvas, HTMLElement {}
|
|
4
|
+
export const IndShelfCanvas: {
|
|
5
|
+
prototype: IndShelfCanvas;
|
|
6
|
+
new (): IndShelfCanvas;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as t,H as s,h as e,a as n,t as i}from"./index.js";const r=()=>`:host{display:block;width:var(--ind-size-canvas-shelves-width, 480px);height:var(--ind-size-canvas-shelves-height, 340px);font-family:var(--ind-font-family-sans);font-feature-settings:var(--ind-font-feature-tabular, "tnum" 1)}svg{display:block;width:100%;height:100%;background:var(--ind-surface-sunken, light-dark(#ffffff, #000000));border:1px solid var(--ind-surface-border-default);border-radius:var(--ind-radius-md, 3px)}.heading{font-family:var(--ind-font-family-sans);font-size:13px;font-weight:700;fill:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));text-transform:uppercase;letter-spacing:0.05em}.outline{fill:color-mix(in srgb, var(--ind-surface-raised) 40%, transparent);stroke:var(--ind-surface-border-strong);stroke-width:1.5;stroke-linejoin:round}.fill{fill:var(--ind-state-running-bg, #16a34a);transition:y 240ms, height 240ms}.slot--partial .fill{fill:var(--ind-feedback-warning-bg, #f59e0b)}.slot--empty .fill{fill:var(--ind-feedback-error-bg, #dc2626)}.slot--missing .outline{fill:transparent;stroke-dasharray:4 2;stroke:var(--ind-surface-border-subtle)}.label{font-family:var(--ind-font-family-mono);font-size:11px;font-weight:600;fill:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));letter-spacing:0.02em}.level{font-family:var(--ind-font-family-mono);font-size:12px;font-weight:700;fill:#ffffff;paint-order:stroke;stroke:rgba(0, 0, 0, 0.55);stroke-width:3;letter-spacing:0.02em}.slot--missing .level{display:none}`;const a=t(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow()}slots=[];rows=1;cols=4;heading;parseSlots(){if(Array.isArray(this.slots))return this.slots;if(typeof this.slots==="string"&&this.slots.trim()){try{const t=JSON.parse(this.slots);return Array.isArray(t)?t:[]}catch{return[]}}return[]}resolveState(t){if(t.state)return t.state;if(t.level===undefined)return"missing";if(t.level>=60)return"full";if(t.level>=20)return"partial";return"empty"}render(){const t=this.parseSlots();const s=480;const i=340;const r=24;const a=this.heading?40:24;const o=28;const l=s-r*2;const c=i-a-o;const f=l/this.cols;const d=c/this.rows;return e(n,{key:"e368cf70181cf224e4076b937a1e12a53e95e58f",role:"img","aria-label":this.heading??"Shelf inventory"},e("svg",{key:"e5fa8c4d7bed40cddbd4c6a691aa49a9c29007a5",viewBox:`0 0 ${s} ${i}`,part:"svg"},this.heading&&e("text",{key:"ec0c820367a330cc570b2c44c6d63c11fbed7f3b",x:s/2,y:"22",class:"heading","text-anchor":"middle"},this.heading),t.slice(0,this.rows*this.cols).map((s=>{const n=t.indexOf(s);const i=n%this.cols;const o=Math.floor(n/this.cols);const l=r+i*f+f/2;const c=a+o*d+d/2;const h=Math.min(f-30,80);const u=Math.max(40,d-60);const g=l-h/2;const m=c-u/2;const v=g+h*.32;const p=g+h*.68;const y=m+14;const b=this.resolveState(s);const x=s.level??0;const k=5;const $=u-20-k*2;const w=Math.max(0,$*(x/100));return e("g",{class:`slot slot--${b}`},e("path",{class:"outline",d:`\n M ${v} ${m}\n L ${p} ${m}\n L ${p} ${m+8}\n L ${g+h} ${y}\n L ${g+h} ${m+u}\n L ${g} ${m+u}\n L ${g} ${y}\n L ${v} ${m+8}\n Z\n `}),b!=="missing"&&x>0&&e("rect",{class:"fill",x:g+k,y:m+u-k-w,width:h-k*2,height:w,rx:"2"}),b!=="missing"&&e("text",{x:l,y:c+4,class:"level","text-anchor":"middle"},Math.round(x),"%"),e("text",{x:l,y:m+u+16,class:"label","text-anchor":"middle"},s.label))}))))}static get style(){return r()}},[513,"ind-shelf-canvas",{slots:[1],rows:[2],cols:[2],heading:[1]}]);function o(){if(typeof customElements==="undefined"){return}const t=["ind-shelf-canvas"];t.forEach((t=>{switch(t){case"ind-shelf-canvas":if(!customElements.get(i(t))){customElements.define(i(t),a)}break}}))}o();const l=a;const c=o;export{l as IndShelfCanvas,c as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ind-shelf-canvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["shelfCanvasCss","IndShelfCanvas","__stencil_proxyCustomElement","HTMLElement","slots","rows","cols","heading","parseSlots","Array","isArray","this","trim","p","JSON","parse","resolveState","s","state","level","undefined","render","W","H","padX","padTop","padBottom","gridW","gridH","cellW","cellH","h","Host","key","role","viewBox","part","x","y","class","slice","map","i","indexOf","col","row","Math","floor","cx","cy","w","min","bodyH","max","neckTopX1","neckTopX2","shoulderY","innerPad","innerH","fillH","d","width","height","rx","round","label"],"sources":["src/components/atoms/shelf-canvas/shelf-canvas.css?tag=ind-shelf-canvas&encapsulation=shadow","src/components/atoms/shelf-canvas/shelf-canvas.tsx"],"sourcesContent":[":host {\n display: block;\n width: var(--ind-size-canvas-shelves-width, 480px);\n height: var(--ind-size-canvas-shelves-height, 340px);\n font-family: var(--ind-font-family-sans);\n font-feature-settings: var(--ind-font-feature-tabular, \"tnum\" 1);\n}\n\nsvg {\n display: block;\n width: 100%;\n height: 100%;\n background: var(--ind-surface-sunken, light-dark(#ffffff, #000000));\n border: 1px solid var(--ind-surface-border-default);\n border-radius: var(--ind-radius-md, 3px);\n}\n\n.heading {\n font-family: var(--ind-font-family-sans);\n font-size: 13px;\n font-weight: 700;\n fill: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n text-transform: uppercase;\n letter-spacing: 0.05em;\n}\n\n.outline {\n fill: color-mix(in srgb, var(--ind-surface-raised) 40%, transparent);\n stroke: var(--ind-surface-border-strong);\n stroke-width: 1.5;\n stroke-linejoin: round;\n}\n\n.fill {\n fill: var(--ind-state-running-bg, #16a34a);\n transition: y 240ms, height 240ms;\n}\n\n.slot--partial .fill { fill: var(--ind-feedback-warning-bg, #f59e0b); }\n.slot--empty .fill { fill: var(--ind-feedback-error-bg, #dc2626); }\n\n.slot--missing .outline {\n fill: transparent;\n stroke-dasharray: 4 2;\n stroke: var(--ind-surface-border-subtle);\n}\n\n.label {\n font-family: var(--ind-font-family-mono);\n font-size: 11px;\n font-weight: 600;\n fill: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n letter-spacing: 0.02em;\n}\n\n.level {\n font-family: var(--ind-font-family-mono);\n font-size: 12px;\n font-weight: 700;\n fill: #ffffff;\n paint-order: stroke;\n stroke: rgba(0, 0, 0, 0.55);\n stroke-width: 3;\n letter-spacing: 0.02em;\n}\n\n.slot--missing .level { display: none; }\n","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"],"mappings":"2DAAA,MAAMA,EAAiB,IAAM,y7C,MC4BhBC,EAAcC,EAAA,MAAAD,UAAAE,E,iFACjBC,MAA8B,GAC9BC,KAAe,EACfC,KAAe,EACfC,QAEA,UAAAC,GACN,GAAIC,MAAMC,QAAQC,KAAKP,OAAQ,OAAOO,KAAKP,MAC3C,UAAWO,KAAKP,QAAU,UAAYO,KAAKP,MAAMQ,OAAQ,CACvD,IACE,MAAMC,EAAIC,KAAKC,MAAMJ,KAAKP,OAC1B,OAAOK,MAAMC,QAAQG,GAAKA,EAAI,E,CAC9B,MACA,MAAO,E,EAGX,MAAO,E,CAGD,YAAAG,CAAaC,GACnB,GAAIA,EAAEC,MAAO,OAAOD,EAAEC,MACtB,GAAID,EAAEE,QAAUC,UAAW,MAAO,UAClC,GAAIH,EAAEE,OAAS,GAAI,MAAO,OAC1B,GAAIF,EAAEE,OAAS,GAAI,MAAO,UAC1B,MAAO,O,CAGT,MAAAE,GACE,MAAMjB,EAAQO,KAAKH,aACnB,MAAMc,EAAI,IACV,MAAMC,EAAI,IACV,MAAMC,EAAO,GACb,MAAMC,EAASd,KAAKJ,QAAU,GAAK,GACnC,MAAMmB,EAAY,GAClB,MAAMC,EAAQL,EAAIE,EAAO,EACzB,MAAMI,EAAQL,EAAIE,EAASC,EAC3B,MAAMG,EAAQF,EAAQhB,KAAKL,KAC3B,MAAMwB,EAAQF,EAAQjB,KAAKN,KAE3B,OACE0B,EAACC,EAAI,CAAAC,IAAA,2CAACC,KAAK,MAAK,aAAavB,KAAKJ,SAAW,mBAC3CwB,EAAA,OAAAE,IAAA,2CAAKE,QAAS,OAAOb,KAAKC,IAAKa,KAAK,OACjCzB,KAAKJ,SACJwB,EAAA,QAAAE,IAAA,2CAAMI,EAAGf,EAAI,EAAGgB,EAAE,KAAKC,MAAM,UAAS,cAAa,UAChD5B,KAAKJ,SAITH,EAAMoC,MAAM,EAAG7B,KAAKN,KAAOM,KAAKL,MAAMmC,KAAKxB,IAC1C,MAAMyB,EAAItC,EAAMuC,QAAQ1B,GACxB,MAAM2B,EAAMF,EAAI/B,KAAKL,KACrB,MAAMuC,EAAMC,KAAKC,MAAML,EAAI/B,KAAKL,MAChC,MAAM0C,EAAKxB,EAAOoB,EAAMf,EAAQA,EAAQ,EACxC,MAAMoB,EAAKxB,EAASoB,EAAMf,EAAQA,EAAQ,EAE1C,MAAMoB,EAAIJ,KAAKK,IAAItB,EAAQ,GAAI,IAC/B,MAAMuB,EAAQN,KAAKO,IAAI,GAAIvB,EAAQ,IACnC,MAAMO,EAAIW,EAAKE,EAAI,EACnB,MAAMZ,EAAIW,EAAKG,EAAQ,EACvB,MAAME,EAAYjB,EAAIa,EAAI,IAC1B,MAAMK,EAAYlB,EAAIa,EAAI,IAC1B,MAAMM,EAAYlB,EAAI,GAEtB,MAAMpB,EAAQP,KAAKK,aAAaC,GAChC,MAAME,EAAQF,EAAEE,OAAS,EACzB,MAAMsC,EAAW,EACjB,MAAMC,EAASN,EAAQ,GAAKK,EAAW,EACvC,MAAME,EAAQb,KAAKO,IAAI,EAAGK,GAAUvC,EAAQ,MAE5C,OACEY,EAAA,KAAGQ,MAAO,cAAcrB,KAEtBa,EAAA,QACEQ,MAAM,UACNqB,EAAG,2BACGN,KAAahB,4BACbiB,KAAajB,4BACbiB,KAAajB,EAAI,4BACjBD,EAAIa,KAAKM,4BACTnB,EAAIa,KAAKZ,EAAIc,4BACbf,KAAKC,EAAIc,4BACTf,KAAKmB,4BACLF,KAAahB,EAAI,iDAMxBpB,IAAU,WAAaC,EAAQ,GAC9BY,EAAA,QACEQ,MAAM,OACNF,EAAGA,EAAIoB,EACPnB,EAAGA,EAAIc,EAAQK,EAAWE,EAC1BE,MAAOX,EAAIO,EAAW,EACtBK,OAAQH,EACRI,GAAG,MAKN7C,IAAU,WACTa,EAAA,QAAMM,EAAGW,EAAIV,EAAGW,EAAK,EAAGV,MAAM,QAAO,cAAa,UAC/CO,KAAKkB,MAAM7C,GAAM,KAKtBY,EAAA,QAAMM,EAAGW,EAAIV,EAAGA,EAAIc,EAAQ,GAAIb,MAAM,QAAO,cAAa,UACvDtB,EAAEgD,OAEH,K","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndSidebarNav extends Components.IndSidebarNav, HTMLElement {}
|
|
4
|
+
export const IndSidebarNav: {
|
|
5
|
+
prototype: IndSidebarNav;
|
|
6
|
+
new (): IndSidebarNav;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as a,H as e,h as r,a as d,t as s}from"./index.js";const t=()=>`:host{display:flex;flex-direction:column;width:var(--ind-size-sidebar-width, 178px);height:100%;background:var(--ind-surface-panel);border-right:1px solid var(--ind-surface-border-default);font-family:var(--ind-font-family-sans);color:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));flex-shrink:0;box-sizing:border-box}.brand{padding:var(--ind-spacing-4, 8px) var(--ind-spacing-5, 12px)}.brand:has(>:nth-child(1):empty),.brand:not(:has(*)){display:none}.items{flex:1;overflow-y:auto;padding:var(--ind-spacing-2, 4px) 0;scrollbar-width:thin;scrollbar-color:var(--ind-surface-border-strong) transparent}.items::-webkit-scrollbar{width:8px}.items::-webkit-scrollbar-thumb{background:var(--ind-surface-border-strong);border-radius:4px}.items::-webkit-scrollbar-track{background:transparent}.footer{padding:var(--ind-spacing-3, 6px) var(--ind-spacing-5, 12px);border-top:1px solid var(--ind-surface-border-subtle);font-size:var(--ind-font-size-sm, 11px);color:var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0))}.footer:not(:has(*)){display:none}`;const n=a(class a extends e{constructor(a){super();if(a!==false){this.__registerHost()}this.__attachShadow()}render(){return r(d,{key:"3ffd6c6d8afe2ed104b24ad1435d7a1d163c5071",role:"navigation"},r("div",{key:"2a56d85274fca7043d8e5624a93cb99c8767fc74",class:"brand",part:"brand"},r("slot",{key:"d185e1c6570b33648700dd922e671f023b3d34fc",name:"brand"})),r("div",{key:"31aaa48b8e08549a3a4990cbe4ae74507b0a8ccb",class:"items",part:"items"},r("slot",{key:"4ddb250ed915874ea6114588ab336e662526383f"})),r("div",{key:"d666ea3f666be22246d6f2e2464a85b741b4bfed",class:"footer",part:"footer"},r("slot",{key:"fff6600b601ec97d47f2a79b983d0a7ef261db33",name:"footer"})))}static get style(){return t()}},[257,"ind-sidebar-nav"]);function i(){if(typeof customElements==="undefined"){return}const a=["ind-sidebar-nav"];a.forEach((a=>{switch(a){case"ind-sidebar-nav":if(!customElements.get(s(a))){customElements.define(s(a),n)}break}}))}i();const o=n;const c=i;export{o as IndSidebarNav,c as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ind-sidebar-nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["sidebarNavCss","IndSidebarNav","__stencil_proxyCustomElement","HTMLElement","render","h","Host","key","role","class","part","name"],"sources":["src/components/organisms/sidebar-nav/sidebar-nav.css?tag=ind-sidebar-nav&encapsulation=shadow","src/components/organisms/sidebar-nav/sidebar-nav.tsx"],"sourcesContent":[":host {\n display: flex;\n flex-direction: column;\n width: var(--ind-size-sidebar-width, 178px);\n height: 100%;\n background: var(--ind-surface-panel);\n border-right: 1px solid var(--ind-surface-border-default);\n font-family: var(--ind-font-family-sans);\n color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n flex-shrink: 0;\n box-sizing: border-box;\n}\n\n.brand {\n padding: var(--ind-spacing-4, 8px) var(--ind-spacing-5, 12px);\n}\n\n.brand:has(> :nth-child(1):empty),\n.brand:not(:has(*)) { display: none; }\n\n.items {\n flex: 1;\n overflow-y: auto;\n padding: var(--ind-spacing-2, 4px) 0;\n scrollbar-width: thin;\n scrollbar-color: var(--ind-surface-border-strong) transparent;\n}\n.items::-webkit-scrollbar { width: 8px; }\n.items::-webkit-scrollbar-thumb { background: var(--ind-surface-border-strong); border-radius: 4px; }\n.items::-webkit-scrollbar-track { background: transparent; }\n\n.footer {\n padding: var(--ind-spacing-3, 6px) var(--ind-spacing-5, 12px);\n border-top: 1px solid var(--ind-surface-border-subtle);\n font-size: var(--ind-font-size-sm, 11px);\n color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));\n}\n\n.footer:not(:has(*)) { display: none; }\n","import { Component, h, Host } from '@stencil/core';\n\n/**\n * Sidebar shell: a brand area on top, a scrollable nav list, and a footer area.\n *\n * State management is left to the consumer — drive `active` on each <ind-nav-item>\n * from your router. The component is intentionally thin so it works with any\n * routing approach (React Router, Vue Router, hash-based, none).\n */\n@Component({\n tag: 'ind-sidebar-nav',\n styleUrl: 'sidebar-nav.css',\n shadow: true,\n})\nexport class IndSidebarNav {\n render() {\n return (\n <Host role=\"navigation\">\n <div class=\"brand\" part=\"brand\">\n <slot name=\"brand\" />\n </div>\n <div class=\"items\" part=\"items\">\n <slot />\n </div>\n <div class=\"footer\" part=\"footer\">\n <slot name=\"footer\" />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"2DAAA,MAAMA,EAAgB,IAAM,0iC,MCcfC,EAAaC,EAAA,MAAAD,UAAAE,E,iFACxB,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,KAAK,cACTH,EAAA,OAAAE,IAAA,2CAAKE,MAAM,QAAQC,KAAK,SACtBL,EAAA,QAAAE,IAAA,2CAAMI,KAAK,WAEbN,EAAA,OAAAE,IAAA,2CAAKE,MAAM,QAAQC,KAAK,SACtBL,EAAA,QAAAE,IAAA,8CAEFF,EAAA,OAAAE,IAAA,2CAAKE,MAAM,SAASC,KAAK,UACvBL,EAAA,QAAAE,IAAA,2CAAMI,KAAK,Y","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndStatusBar extends Components.IndStatusBar, HTMLElement {}
|
|
4
|
+
export const IndStatusBar: {
|
|
5
|
+
prototype: IndStatusBar;
|
|
6
|
+
new (): IndStatusBar;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as s,h as a,a as t,t as n}from"./index.js";import{d as i}from"./p-D-FsSjAC.js";const r=()=>`:host{display:flex;align-items:center;gap:var(--ind-spacing-3, 6px);padding:var(--ind-spacing-2, 4px) var(--ind-spacing-5, 12px);background:var(--ind-surface-panel);border-top:1px solid var(--ind-surface-border-default);font-family:var(--ind-font-family-sans);font-size:var(--ind-font-size-sm, 11px);color:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));min-height:24px;font-feature-settings:var(--ind-font-feature-tabular, "tnum" 1)}.message{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spacer{flex:1}.end{display:inline-flex;align-items:center;gap:var(--ind-spacing-3, 6px)}::slotted(*){font-size:var(--ind-font-size-sm, 11px)}`;const d=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow()}state="neutral";message;render(){return a(t,{key:"ea26634fed8ac15e259de910eb7bcd4e5ce3d094",role:"status","aria-live":"polite"},a("ind-status-dot",{key:"a9305e75e5b0e35c5cccf526020ed00177d729e4",state:this.state,size:"sm"}),this.message&&a("span",{key:"816506e0c34aaf66249bcca19fa0741841a1dae5",class:"message",part:"message"},this.message),a("span",{key:"15edfed427f793ad354d7b71e256149323ab59b4",class:"spacer"}),a("span",{key:"abd85f3229fbc9ad3e6257400a87bab0e9743dae",class:"end",part:"end"},a("slot",{key:"bc0a1f8844f91d9158ec4f265ae12cc27b443740"})))}static get style(){return r()}},[769,"ind-status-bar",{state:[513],message:[1]}]);function c(){if(typeof customElements==="undefined"){return}const e=["ind-status-bar","ind-status-dot"];e.forEach((e=>{switch(e){case"ind-status-bar":if(!customElements.get(n(e))){customElements.define(n(e),d)}break;case"ind-status-dot":if(!customElements.get(n(e))){i()}break}}))}c();const o=d;const f=c;export{o as IndStatusBar,f as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ind-status-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["statusBarCss","IndStatusBar","__stencil_proxyCustomElement","HTMLElement","state","message","render","h","Host","key","role","this","size","class","part"],"sources":["src/components/organisms/status-bar/status-bar.css?tag=ind-status-bar&encapsulation=shadow","src/components/organisms/status-bar/status-bar.tsx"],"sourcesContent":[":host {\n display: flex;\n align-items: center;\n gap: var(--ind-spacing-3, 6px);\n padding: var(--ind-spacing-2, 4px) var(--ind-spacing-5, 12px);\n background: var(--ind-surface-panel);\n border-top: 1px solid var(--ind-surface-border-default);\n font-family: var(--ind-font-family-sans);\n font-size: var(--ind-font-size-sm, 11px);\n color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n min-height: 24px;\n font-feature-settings: var(--ind-font-feature-tabular, \"tnum\" 1);\n}\n\n.message {\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.spacer {\n flex: 1;\n}\n\n.end {\n display: inline-flex;\n align-items: center;\n gap: var(--ind-spacing-3, 6px);\n}\n\n::slotted(*) {\n font-size: var(--ind-font-size-sm, 11px);\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\nexport type StatusBarState =\n | 'neutral' | 'running' | 'stopped' | 'fault' | 'warning' | 'maintenance' | 'success' | 'info' | 'error';\n\n/**\n * Global footer bar: status dot + message on the left, slotted content on the right.\n *\n * Sized to be unobtrusive (~24 px). Drop additional `<span>` / `<ind-button size=\"sm\">`\n * children for right-aligned context (timestamps, server identifiers, action buttons).\n */\n@Component({\n tag: 'ind-status-bar',\n styleUrl: 'status-bar.css',\n shadow: true,\n})\nexport class IndStatusBar {\n @Prop({ reflect: true }) state: StatusBarState = 'neutral';\n @Prop() message?: string;\n\n render() {\n return (\n <Host role=\"status\" aria-live=\"polite\">\n <ind-status-dot state={this.state} size=\"sm\" />\n {this.message && <span class=\"message\" part=\"message\">{this.message}</span>}\n <span class=\"spacer\" />\n <span class=\"end\" part=\"end\"><slot /></span>\n </Host>\n );\n }\n}\n"],"mappings":"+FAAA,MAAMA,EAAe,IAAM,kqB,MCgBdC,EAAYC,EAAA,MAAAD,UAAAE,E,iFACEC,MAAwB,UACzCC,QAER,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,KAAK,SAAQ,YAAW,UAC5BH,EAAA,kBAAAE,IAAA,2CAAgBL,MAAOO,KAAKP,MAAOQ,KAAK,OACvCD,KAAKN,SAAWE,EAAA,QAAAE,IAAA,2CAAMI,MAAM,UAAUC,KAAK,WAAWH,KAAKN,SAC5DE,EAAA,QAAAE,IAAA,2CAAMI,MAAM,WACZN,EAAA,QAAAE,IAAA,2CAAMI,MAAM,MAAMC,KAAK,OAAMP,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndStatusDot extends Components.IndStatusDot, HTMLElement {}
|
|
4
|
+
export const IndStatusDot: {
|
|
5
|
+
prototype: IndStatusDot;
|
|
6
|
+
new (): IndStatusDot;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndTextarea extends Components.IndTextarea, HTMLElement {}
|
|
4
|
+
export const IndTextarea: {
|
|
5
|
+
prototype: IndTextarea;
|
|
6
|
+
new (): IndTextarea;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as a,H as e,c as t,h as r,a as i,t as n}from"./index.js";const o=()=>`:host{display:inline-block;width:100%;font-family:var(--ind-font-family-sans);color:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5))}.wrap{display:flex;flex-direction:column;gap:var(--ind-spacing-2, 4px)}.label{font-size:var(--ind-font-size-sm, 11px);font-weight:var(--ind-font-weight-medium, 500);color:var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));letter-spacing:0.04em;text-transform:uppercase}.textarea{width:100%;box-sizing:border-box;padding:var(--ind-spacing-3, 6px) var(--ind-spacing-4, 8px);background:var(--ind-surface-sunken, light-dark(#ffffff, #000000));border:1px solid var(--ind-surface-border-default, #2a3340);border-radius:var(--ind-radius-md, 3px);font-family:inherit;font-size:var(--ind-font-size-base, 12px);line-height:var(--ind-font-line-height-normal, 1.4);color:inherit;resize:vertical;outline:none;font-feature-settings:var(--ind-font-feature-tabular, "tnum" 1);transition:border-color var(--ind-motion-duration-fast, 120ms), box-shadow var(--ind-motion-duration-fast, 120ms)}.textarea:focus{border-color:var(--ind-surface-focus-ring, #22d3ee);box-shadow:0 0 0 2px color-mix(in srgb, var(--ind-surface-focus-ring, #22d3ee) 35%, transparent)}.textarea::placeholder{color:var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));opacity:1}:host([variant="mono"]) .textarea{font-family:var(--ind-font-family-mono);font-size:var(--ind-font-size-sm, 11px);line-height:var(--ind-font-line-height-tight, 1.4);background:var(--ind-color-palette-neutral-0, #000000);color:var(--ind-color-palette-neutral-800, #d0d7e0);border-color:var(--ind-surface-border-strong, #5a6776)}:host([invalid]) .textarea{border-color:var(--ind-feedback-error-bg, #dc2626)}:host([invalid]) .textarea:focus{box-shadow:0 0 0 2px color-mix(in srgb, var(--ind-feedback-error-bg, #dc2626) 40%, transparent)}:host([readonly]) .textarea{cursor:default}:host([disabled]){opacity:0.55;pointer-events:none}`;const s=a(class a extends e{constructor(a){super();if(a!==false){this.__registerHost()}this.__attachShadow();this.indInput=t(this,"indInput");this.indChange=t(this,"indChange")}get host(){return this}value="";placeholder;label;name;rows=4;size="md";variant="default";disabled=false;readonly=false;invalid=false;autoScroll=false;indInput;indChange;componentDidLoad(){if(this.autoScroll)this.scrollToBottom()}onValueChange(){if(this.autoScroll)this.scrollToBottom()}scrollToBottom(){requestAnimationFrame((()=>{const a=this.host.shadowRoot?.querySelector("textarea");if(a)a.scrollTop=a.scrollHeight}))}onInput=a=>{const e=a.target.value;this.value=e;this.indInput.emit(e)};onChange=a=>{this.indChange.emit(a.target.value)};render(){return r(i,{key:"a4ca904c7a9ca65900e0ccc696aab66429bdde71"},r("label",{key:"57f1880efe8a30a2bd5e1253c81f058360519c9f",class:"wrap",part:"wrap"},this.label&&r("span",{key:"aa0367d91235eca6d69fd520617ea831b1ac71fc",class:"label",part:"label"},this.label),r("textarea",{key:"2248ea771f4ac6f8ae9fb0cc12ea4ed038e7ab24",part:"textarea",class:"textarea",placeholder:this.placeholder,rows:this.rows,disabled:this.disabled,readonly:this.readonly,name:this.name,"aria-invalid":this.invalid?"true":"false",onInput:this.onInput,onChange:this.onChange},this.value)))}static get watchers(){return{value:[{onValueChange:0}]}}static get style(){return o()}},[513,"ind-textarea",{value:[1025],placeholder:[1],label:[1],name:[1],rows:[2],size:[513],variant:[513],disabled:[516],readonly:[516],invalid:[516],autoScroll:[4,"auto-scroll"]},undefined,{value:[{onValueChange:0}]}]);function d(){if(typeof customElements==="undefined"){return}const a=["ind-textarea"];a.forEach((a=>{switch(a){case"ind-textarea":if(!customElements.get(n(a))){customElements.define(n(a),s)}break}}))}d();const l=s;const c=d;export{l as IndTextarea,c as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ind-textarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["textareaCss","IndTextarea","__stencil_proxyCustomElement","HTMLElement","value","placeholder","label","name","rows","size","variant","disabled","readonly","invalid","autoScroll","indInput","indChange","componentDidLoad","this","scrollToBottom","onValueChange","requestAnimationFrame","ta","host","shadowRoot","querySelector","scrollTop","scrollHeight","onInput","e","v","target","emit","onChange","render","h","Host","key","class","part"],"sources":["src/components/atoms/textarea/textarea.css?tag=ind-textarea&encapsulation=shadow","src/components/atoms/textarea/textarea.tsx"],"sourcesContent":[":host {\n display: inline-block;\n width: 100%;\n font-family: var(--ind-font-family-sans);\n color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n}\n\n.wrap {\n display: flex;\n flex-direction: column;\n gap: var(--ind-spacing-2, 4px);\n}\n\n.label {\n font-size: var(--ind-font-size-sm, 11px);\n font-weight: var(--ind-font-weight-medium, 500);\n color: var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.textarea {\n width: 100%;\n box-sizing: border-box;\n padding: var(--ind-spacing-3, 6px) var(--ind-spacing-4, 8px);\n background: var(--ind-surface-sunken, light-dark(#ffffff, #000000));\n border: 1px solid var(--ind-surface-border-default, #2a3340);\n border-radius: var(--ind-radius-md, 3px);\n font-family: inherit;\n font-size: var(--ind-font-size-base, 12px);\n line-height: var(--ind-font-line-height-normal, 1.4);\n color: inherit;\n resize: vertical;\n outline: none;\n font-feature-settings: var(--ind-font-feature-tabular, \"tnum\" 1);\n transition:\n border-color var(--ind-motion-duration-fast, 120ms),\n box-shadow var(--ind-motion-duration-fast, 120ms);\n}\n\n.textarea:focus {\n border-color: var(--ind-surface-focus-ring, #22d3ee);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--ind-surface-focus-ring, #22d3ee) 35%, transparent);\n}\n\n.textarea::placeholder {\n color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));\n opacity: 1;\n}\n\n:host([variant=\"mono\"]) .textarea {\n font-family: var(--ind-font-family-mono);\n font-size: var(--ind-font-size-sm, 11px);\n line-height: var(--ind-font-line-height-tight, 1.4);\n background: var(--ind-color-palette-neutral-0, #000000);\n color: var(--ind-color-palette-neutral-800, #d0d7e0);\n border-color: var(--ind-surface-border-strong, #5a6776);\n}\n\n:host([invalid]) .textarea {\n border-color: var(--ind-feedback-error-bg, #dc2626);\n}\n:host([invalid]) .textarea:focus {\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--ind-feedback-error-bg, #dc2626) 40%, transparent);\n}\n\n:host([readonly]) .textarea {\n cursor: default;\n}\n\n:host([disabled]) {\n opacity: 0.55;\n pointer-events: none;\n}\n","import {\n Component,\n Prop,\n Event,\n EventEmitter,\n Element,\n Watch,\n h,\n Host,\n} from '@stencil/core';\n\nexport type TextareaSize = 'sm' | 'md' | 'lg';\nexport type TextareaVariant = 'default' | 'mono';\n\n@Component({\n tag: 'ind-textarea',\n styleUrl: 'textarea.css',\n shadow: true,\n})\nexport class IndTextarea {\n @Element() host!: HTMLElement;\n\n @Prop({ mutable: true }) value: string = '';\n @Prop() placeholder?: string;\n @Prop() label?: string;\n @Prop() name?: string;\n @Prop() rows: number = 4;\n @Prop({ reflect: true }) size: TextareaSize = 'md';\n /** `mono` swaps to JetBrains Mono and small font — for logs and MQTT streams. */\n @Prop({ reflect: true }) variant: TextareaVariant = 'default';\n @Prop({ reflect: true }) disabled: boolean = false;\n @Prop({ reflect: true }) readonly: boolean = false;\n @Prop({ reflect: true }) invalid: boolean = false;\n /** When true, auto-scrolls to bottom whenever `value` changes. Pair with `readonly` for log streams. */\n @Prop() autoScroll: boolean = false;\n\n @Event() indInput!: EventEmitter<string>;\n @Event() indChange!: EventEmitter<string>;\n\n componentDidLoad() {\n if (this.autoScroll) this.scrollToBottom();\n }\n\n @Watch('value')\n onValueChange() {\n if (this.autoScroll) this.scrollToBottom();\n }\n\n private scrollToBottom() {\n requestAnimationFrame(() => {\n const ta = this.host.shadowRoot?.querySelector('textarea');\n if (ta) ta.scrollTop = ta.scrollHeight;\n });\n }\n\n private onInput = (e: Event) => {\n const v = (e.target as HTMLTextAreaElement).value;\n this.value = v;\n this.indInput.emit(v);\n };\n\n private onChange = (e: Event) => {\n this.indChange.emit((e.target as HTMLTextAreaElement).value);\n };\n\n render() {\n return (\n <Host>\n <label class=\"wrap\" part=\"wrap\">\n {this.label && <span class=\"label\" part=\"label\">{this.label}</span>}\n <textarea\n part=\"textarea\"\n class=\"textarea\"\n placeholder={this.placeholder}\n rows={this.rows}\n disabled={this.disabled}\n readonly={this.readonly}\n name={this.name}\n aria-invalid={this.invalid ? 'true' : 'false'}\n onInput={this.onInput}\n onChange={this.onChange}\n >{this.value}</textarea>\n </label>\n </Host>\n );\n }\n}\n"],"mappings":"kEAAA,MAAMA,EAAc,IAAM,84D,MCmBbC,EAAWC,EAAA,MAAAD,UAAAE,E,4KAGGC,MAAgB,GACjCC,YACAC,MACAC,KACAC,KAAe,EACEC,KAAqB,KAErBC,QAA2B,UAC3BC,SAAoB,MACpBC,SAAoB,MACpBC,QAAmB,MAEpCC,WAAsB,MAErBC,SACAC,UAET,gBAAAC,GACE,GAAIC,KAAKJ,WAAYI,KAAKC,gB,CAI5B,aAAAC,GACE,GAAIF,KAAKJ,WAAYI,KAAKC,gB,CAGpB,cAAAA,GACNE,uBAAsB,KACpB,MAAMC,EAAKJ,KAAKK,KAAKC,YAAYC,cAAc,YAC/C,GAAIH,EAAIA,EAAGI,UAAYJ,EAAGK,YAAY,G,CAIlCC,QAAWC,IACjB,MAAMC,EAAKD,EAAEE,OAA+B3B,MAC5Cc,KAAKd,MAAQ0B,EACbZ,KAAKH,SAASiB,KAAKF,EAAE,EAGfG,SAAYJ,IAClBX,KAAKF,UAAUgB,KAAMH,EAAEE,OAA+B3B,MAAM,EAG9D,MAAA8B,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,SAAAE,IAAA,2CAAOC,MAAM,OAAOC,KAAK,QACtBrB,KAAKZ,OAAS6B,EAAA,QAAAE,IAAA,2CAAMC,MAAM,QAAQC,KAAK,SAASrB,KAAKZ,OACtD6B,EAAA,YAAAE,IAAA,2CACEE,KAAK,WACLD,MAAM,WACNjC,YAAaa,KAAKb,YAClBG,KAAMU,KAAKV,KACXG,SAAUO,KAAKP,SACfC,SAAUM,KAAKN,SACfL,KAAMW,KAAKX,KAAI,eACDW,KAAKL,QAAU,OAAS,QACtCe,QAASV,KAAKU,QACdK,SAAUf,KAAKe,UACff,KAAKd,Q","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndToolbarAction extends Components.IndToolbarAction, HTMLElement {}
|
|
4
|
+
export const IndToolbarAction: {
|
|
5
|
+
prototype: IndToolbarAction;
|
|
6
|
+
new (): IndToolbarAction;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as a,H as e,h as t,a as n,t as s}from"./index.js";const c=()=>`:host{display:flex;align-items:center;gap:var(--ind-spacing-4, 8px);padding:var(--ind-spacing-3, 6px) var(--ind-spacing-5, 12px);background:var(--ind-surface-panel);border-bottom:1px solid var(--ind-surface-border-default);font-family:var(--ind-font-family-sans);color:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));flex-wrap:wrap}.filter ::slotted(*){min-width:200px}.flags{display:flex;align-items:center;gap:var(--ind-spacing-4, 8px)}.spacer{flex:1}.counter{font-family:var(--ind-font-family-mono);font-feature-settings:var(--ind-font-feature-tabular, "tnum" 1);color:var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));font-size:var(--ind-font-size-sm, 11px);white-space:nowrap}.actions{display:flex;gap:var(--ind-spacing-3, 6px)}`;const i=a(class a extends e{constructor(a){super();if(a!==false){this.__registerHost()}this.__attachShadow()}counter;render(){const a=this.counter!==undefined&&this.counter!==""&&this.counter!==null;return t(n,{key:"335b711876377ee50cfeaac4635c2794d5c038eb"},t("span",{key:"69cf5e6ca388c2bef9004cddd515db9c1d34f2f9",class:"filter",part:"filter"},t("slot",{key:"6a5d72136095b2531214ea2e28a39a795e8b7e2d",name:"filter"})),t("span",{key:"614f12f7432752c3deef9cca8174a503d7048878",class:"flags",part:"flags"},t("slot",{key:"db14ea5398c70574cb0b690db2e0578aafa6a545",name:"flags"})),t("span",{key:"07ff837c88d3228666b7bcd36ae52f9efa5b081d",class:"spacer"}),a&&t("span",{key:"ee9220383a9a4c9c471f4945da3c28f67dada3ee",class:"counter",part:"counter"},this.counter),t("span",{key:"53bc247add97382c56d4447b30c9b73e663fbe96",class:"actions",part:"actions"},t("slot",{key:"da6c78e96a87a412f44d620356268ef1a746fc99",name:"actions"})))}static get style(){return c()}},[769,"ind-toolbar-action",{counter:[8]}]);function r(){if(typeof customElements==="undefined"){return}const a=["ind-toolbar-action"];a.forEach((a=>{switch(a){case"ind-toolbar-action":if(!customElements.get(s(a))){customElements.define(s(a),i)}break}}))}r();const f=i;const d=r;export{f as IndToolbarAction,d as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ind-toolbar-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toolbarActionCss","IndToolbarAction","__stencil_proxyCustomElement","HTMLElement","counter","render","hasCounter","this","undefined","h","Host","key","class","part","name"],"sources":["src/components/molecules/toolbar-action/toolbar-action.css?tag=ind-toolbar-action&encapsulation=shadow","src/components/molecules/toolbar-action/toolbar-action.tsx"],"sourcesContent":[":host {\n display: flex;\n align-items: center;\n gap: var(--ind-spacing-4, 8px);\n padding: var(--ind-spacing-3, 6px) var(--ind-spacing-5, 12px);\n background: var(--ind-surface-panel);\n border-bottom: 1px solid var(--ind-surface-border-default);\n font-family: var(--ind-font-family-sans);\n color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n flex-wrap: wrap;\n}\n\n.filter ::slotted(*) {\n min-width: 200px;\n}\n\n.flags {\n display: flex;\n align-items: center;\n gap: var(--ind-spacing-4, 8px);\n}\n\n.spacer { flex: 1; }\n\n.counter {\n font-family: var(--ind-font-family-mono);\n font-feature-settings: var(--ind-font-feature-tabular, \"tnum\" 1);\n color: var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));\n font-size: var(--ind-font-size-sm, 11px);\n white-space: nowrap;\n}\n\n.actions {\n display: flex;\n gap: var(--ind-spacing-3, 6px);\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'ind-toolbar-action',\n styleUrl: 'toolbar-action.css',\n shadow: true,\n})\nexport class IndToolbarAction {\n /** Counter rendered before the actions (e.g. \"1 248 messages\"). */\n @Prop() counter?: string | number;\n\n render() {\n const hasCounter = this.counter !== undefined && this.counter !== '' && this.counter !== null;\n return (\n <Host>\n <span class=\"filter\" part=\"filter\"><slot name=\"filter\" /></span>\n <span class=\"flags\" part=\"flags\"><slot name=\"flags\" /></span>\n <span class=\"spacer\" />\n {hasCounter && <span class=\"counter\" part=\"counter\">{this.counter}</span>}\n <span class=\"actions\" part=\"actions\"><slot name=\"actions\" /></span>\n </Host>\n );\n }\n}\n"],"mappings":"2DAAA,MAAMA,EAAmB,IAAM,4vB,MCOlBC,EAAgBC,EAAA,MAAAD,UAAAE,E,iFAEnBC,QAER,MAAAC,GACE,MAAMC,EAAaC,KAAKH,UAAYI,WAAaD,KAAKH,UAAY,IAAMG,KAAKH,UAAY,KACzF,OACEK,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,QAAAE,IAAA,2CAAMC,MAAM,SAASC,KAAK,UAASJ,EAAA,QAAAE,IAAA,2CAAMG,KAAK,YAC9CL,EAAA,QAAAE,IAAA,2CAAMC,MAAM,QAAQC,KAAK,SAAQJ,EAAA,QAAAE,IAAA,2CAAMG,KAAK,WAC5CL,EAAA,QAAAE,IAAA,2CAAMC,MAAM,WACXN,GAAcG,EAAA,QAAAE,IAAA,2CAAMC,MAAM,UAAUC,KAAK,WAAWN,KAAKH,SAC1DK,EAAA,QAAAE,IAAA,2CAAMC,MAAM,UAAUC,KAAK,WAAUJ,EAAA,QAAAE,IAAA,2CAAMG,KAAK,a","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndValue extends Components.IndValue, HTMLElement {}
|
|
4
|
+
export const IndValue: {
|
|
5
|
+
prototype: IndValue;
|
|
6
|
+
new (): IndValue;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as a,H as e,h as r,a as n,t}from"./index.js";const i=()=>`:host{display:inline-flex;flex-direction:column;gap:var(--ind-spacing-2, 4px);padding:var(--ind-spacing-4, 8px) var(--ind-spacing-5, 12px);background:var(--ind-surface-sunken, #000);border:1px solid var(--ind-surface-border-default, #2a3340);border-radius:var(--ind-radius-md, 3px);font-family:var(--ind-font-family-sans);font-feature-settings:var(--ind-font-feature-tabular, "tnum" 1);color:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));min-width:96px;transition:background-color var(--ind-motion-duration-base, 200ms), border-color var(--ind-motion-duration-base, 200ms), color var(--ind-motion-duration-base, 200ms)}.header{display:flex;gap:var(--ind-spacing-3, 6px);align-items:baseline;font-size:var(--ind-font-size-sm, 11px);line-height:var(--ind-font-line-height-tight, 1.1);color:var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2))}.tag{font-family:var(--ind-font-family-mono);font-weight:var(--ind-font-weight-semibold, 600);letter-spacing:0.02em}.label{color:var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0))}.readout{display:flex;align-items:baseline;gap:var(--ind-spacing-2, 4px);line-height:1}.number{font-family:var(--ind-font-family-mono);font-weight:var(--ind-font-weight-bold, 700);font-variant-numeric:tabular-nums}.unit{font-size:var(--ind-font-size-sm, 11px);color:var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));font-weight:var(--ind-font-weight-medium, 500)}.trend{font-size:var(--ind-font-size-md, 13px);margin-left:var(--ind-spacing-2, 4px)}:host([size="sm"]) .number{font-size:var(--ind-font-size-xl, 16px)}:host([size="md"]) .number{font-size:var(--ind-font-size-2xl, 20px)}:host([size="lg"]) .number{font-size:var(--ind-font-size-3xl, 28px)}:host([alarm="high-high"]){background:var(--ind-alarm-high-high-bg, #dc2626);color:var(--ind-alarm-high-high-fg, #ffffff);border-color:var(--ind-alarm-high-high-border, #f87171)}:host([alarm="high"]){background:var(--ind-alarm-high-bg, #f59e0b);color:var(--ind-alarm-high-fg, #000000);border-color:var(--ind-alarm-high-border, #fcd34d)}:host([alarm="low"]){background:var(--ind-alarm-low-bg, #0891b2);color:var(--ind-alarm-low-fg, #ffffff);border-color:var(--ind-alarm-low-border, #22d3ee)}:host([alarm="low-low"]){background:var(--ind-alarm-low-low-bg, #7c3aed);color:var(--ind-alarm-low-low-fg, #ffffff);border-color:var(--ind-alarm-low-low-border, #a78bfa)}:host([alarm]:not([alarm="none"])) .header,:host([alarm]:not([alarm="none"])) .tag,:host([alarm]:not([alarm="none"])) .label,:host([alarm]:not([alarm="none"])) .unit{color:inherit}:host([alarm]:not([alarm="none"])) .label,:host([alarm]:not([alarm="none"])) .unit{opacity:0.85}:host([alarm]:not([alarm="none"])) .tag{opacity:1;font-weight:var(--ind-font-weight-bold, 700)}:host([trend="up"]) .trend{color:var(--ind-trend-up-fg, #fcd34d)}:host([trend="down"]) .trend{color:var(--ind-trend-down-fg, #22d3ee)}:host([trend="stable"]) .trend{color:var(--ind-trend-stable-fg, #8390a0)}`;const o=a(class a extends e{constructor(a){super();if(a!==false){this.__registerHost()}this.__attachShadow()}value;unit;precision;alarm="none";trend="none";size="md";label;tag;formatted(){if(typeof this.value==="string")return this.value;if(!Number.isFinite(this.value))return"--";if(this.precision!==undefined)return this.value.toFixed(this.precision);return String(this.value)}render(){const a=this.label??this.tag??"process value";const e=this.alarm!=="none"?`, alarm ${this.alarm}`:"";return r(n,{key:"cda5c03f956f161e618626d2aef0aac40409281a",role:"group","aria-label":`${a}: ${this.formatted()}${this.unit?" "+this.unit:""}${e}`,"aria-live":this.alarm==="high-high"?"assertive":"polite"},(this.tag||this.label)&&r("div",{key:"8fe9dfd6fb733e6ba0e7e607efc5d023736cca9e",class:"header",part:"header"},this.tag&&r("span",{key:"adec308000bce2cee378504fffedf8662a091c8c",class:"tag",part:"tag"},this.tag),this.label&&r("span",{key:"4de4405dfbb798ca1781ade6fd7e1419089226ca",class:"label",part:"label"},this.label)),r("div",{key:"b7f9e66b333a6d7e3341585af4bba571dae65bf6",class:"readout",part:"readout"},r("span",{key:"c6a942f2a64187cf9acd75b112d262928556d84b",class:"number",part:"number"},this.formatted()),this.unit&&r("span",{key:"39714e17d50497d59afe6e81eca9b51cf2182332",class:"unit",part:"unit"},this.unit),this.trend!=="none"&&r("span",{key:"1e4f671cc86bf24617f26e3db4eb3709160291b3",class:"trend",part:"trend","aria-hidden":"true"},this.trend==="up"?"▲":this.trend==="down"?"▼":"◆")))}static get style(){return i()}},[513,"ind-value",{value:[8],unit:[1],precision:[2],alarm:[513],trend:[513],size:[513],label:[1],tag:[1]}]);function s(){if(typeof customElements==="undefined"){return}const a=["ind-value"];a.forEach((a=>{switch(a){case"ind-value":if(!customElements.get(t(a))){customElements.define(t(a),o)}break}}))}s();const d=o;const l=s;export{d as IndValue,l as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ind-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["valueCss","IndValue","__stencil_proxyCustomElement","HTMLElement","value","unit","precision","alarm","trend","size","label","tag","formatted","this","Number","isFinite","undefined","toFixed","String","render","accessibleName","alarmSuffix","h","Host","key","role","class","part"],"sources":["src/components/atoms/value/value.css?tag=ind-value&encapsulation=shadow","src/components/atoms/value/value.tsx"],"sourcesContent":[":host {\n display: inline-flex;\n flex-direction: column;\n gap: var(--ind-spacing-2, 4px);\n padding: var(--ind-spacing-4, 8px) var(--ind-spacing-5, 12px);\n background: var(--ind-surface-sunken, #000);\n border: 1px solid var(--ind-surface-border-default, #2a3340);\n border-radius: var(--ind-radius-md, 3px);\n font-family: var(--ind-font-family-sans);\n font-feature-settings: var(--ind-font-feature-tabular, \"tnum\" 1);\n color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n min-width: 96px;\n transition:\n background-color var(--ind-motion-duration-base, 200ms),\n border-color var(--ind-motion-duration-base, 200ms),\n color var(--ind-motion-duration-base, 200ms);\n}\n\n.header {\n display: flex;\n gap: var(--ind-spacing-3, 6px);\n align-items: baseline;\n font-size: var(--ind-font-size-sm, 11px);\n line-height: var(--ind-font-line-height-tight, 1.1);\n color: var(--ind-surface-text-secondary, light-dark(#2a3340, #aab5c2));\n}\n\n.tag {\n font-family: var(--ind-font-family-mono);\n font-weight: var(--ind-font-weight-semibold, 600);\n letter-spacing: 0.02em;\n}\n\n.label {\n color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));\n}\n\n.readout {\n display: flex;\n align-items: baseline;\n gap: var(--ind-spacing-2, 4px);\n line-height: 1;\n}\n\n.number {\n font-family: var(--ind-font-family-mono);\n font-weight: var(--ind-font-weight-bold, 700);\n font-variant-numeric: tabular-nums;\n}\n\n.unit {\n font-size: var(--ind-font-size-sm, 11px);\n color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));\n font-weight: var(--ind-font-weight-medium, 500);\n}\n\n.trend {\n font-size: var(--ind-font-size-md, 13px);\n margin-left: var(--ind-spacing-2, 4px);\n}\n\n:host([size=\"sm\"]) .number { font-size: var(--ind-font-size-xl, 16px); }\n:host([size=\"md\"]) .number { font-size: var(--ind-font-size-2xl, 20px); }\n:host([size=\"lg\"]) .number { font-size: var(--ind-font-size-3xl, 28px); }\n\n/* Alarm highlight — uses the ISA-18.2 alarm tokens directly. */\n:host([alarm=\"high-high\"]) {\n background: var(--ind-alarm-high-high-bg, #dc2626);\n color: var(--ind-alarm-high-high-fg, #ffffff);\n border-color: var(--ind-alarm-high-high-border, #f87171);\n}\n:host([alarm=\"high\"]) {\n background: var(--ind-alarm-high-bg, #f59e0b);\n color: var(--ind-alarm-high-fg, #000000);\n border-color: var(--ind-alarm-high-border, #fcd34d);\n}\n:host([alarm=\"low\"]) {\n background: var(--ind-alarm-low-bg, #0891b2);\n color: var(--ind-alarm-low-fg, #ffffff);\n border-color: var(--ind-alarm-low-border, #22d3ee);\n}\n:host([alarm=\"low-low\"]) {\n background: var(--ind-alarm-low-low-bg, #7c3aed);\n color: var(--ind-alarm-low-low-fg, #ffffff);\n border-color: var(--ind-alarm-low-low-border, #a78bfa);\n}\n\n/* When in an alarm state, force every descendant to inherit the host color\n * (which is the high-contrast alarm fg, e.g. black on amber for \"high\").\n *\n * We have to override `.header` explicitly because it sets its own color —\n * otherwise `.label` and `.tag` inherit *from .header*, not from :host,\n * and stay at the original muted neutral color (broken contrast on alarm bg).\n */\n:host([alarm]:not([alarm=\"none\"])) .header,\n:host([alarm]:not([alarm=\"none\"])) .tag,\n:host([alarm]:not([alarm=\"none\"])) .label,\n:host([alarm]:not([alarm=\"none\"])) .unit {\n color: inherit;\n}\n\n/* The tag identifies WHICH instrument is alarming — keep it at full opacity\n * so operators can read it at a glance. Label/unit can be slightly faded. */\n:host([alarm]:not([alarm=\"none\"])) .label,\n:host([alarm]:not([alarm=\"none\"])) .unit {\n opacity: 0.85;\n}\n:host([alarm]:not([alarm=\"none\"])) .tag {\n opacity: 1;\n font-weight: var(--ind-font-weight-bold, 700);\n}\n\n:host([trend=\"up\"]) .trend { color: var(--ind-trend-up-fg, #fcd34d); }\n:host([trend=\"down\"]) .trend { color: var(--ind-trend-down-fg, #22d3ee); }\n:host([trend=\"stable\"]) .trend { color: var(--ind-trend-stable-fg, #8390a0); }\n","import { Component, Prop, h, Host } from '@stencil/core';\n\nexport type ValueAlarm = 'none' | 'low-low' | 'low' | 'high' | 'high-high';\nexport type ValueTrend = 'none' | 'up' | 'down' | 'stable';\nexport type ValueSize = 'sm' | 'md' | 'lg';\n\n@Component({\n tag: 'ind-value',\n styleUrl: 'value.css',\n shadow: true,\n})\nexport class IndValue {\n /** Raw value to display. Numeric values are formatted with `precision`. */\n @Prop() value!: number | string;\n\n /** Engineering unit shown after the number (e.g. \"bar\", \"°C\", \"m³/h\"). */\n @Prop() unit?: string;\n\n /** Decimal places when `value` is numeric. Default: as-is. */\n @Prop() precision?: number;\n\n /** Active alarm priority. Highlights the readout with the ISA-18.2 color. */\n @Prop({ reflect: true }) alarm: ValueAlarm = 'none';\n\n /** Process trend direction. Renders a small arrow next to the unit. */\n @Prop({ reflect: true }) trend: ValueTrend = 'none';\n\n /** Readout size — `lg` is appropriate for primary KPIs (uses the 3xl font). */\n @Prop({ reflect: true }) size: ValueSize = 'md';\n\n /** Human label shown above the number (e.g. \"Discharge pressure\"). */\n @Prop() label?: string;\n\n /** Equipment tag shown above the number (e.g. \"PT-101\"). */\n @Prop() tag?: string;\n\n private formatted(): string {\n if (typeof this.value === 'string') return this.value;\n if (!Number.isFinite(this.value)) return '--';\n if (this.precision !== undefined) return this.value.toFixed(this.precision);\n return String(this.value);\n }\n\n render() {\n const accessibleName = this.label ?? this.tag ?? 'process value';\n const alarmSuffix = this.alarm !== 'none' ? `, alarm ${this.alarm}` : '';\n return (\n <Host\n role=\"group\"\n aria-label={`${accessibleName}: ${this.formatted()}${this.unit ? ' ' + this.unit : ''}${alarmSuffix}`}\n aria-live={this.alarm === 'high-high' ? 'assertive' : 'polite'}\n >\n {(this.tag || this.label) && (\n <div class=\"header\" part=\"header\">\n {this.tag && <span class=\"tag\" part=\"tag\">{this.tag}</span>}\n {this.label && <span class=\"label\" part=\"label\">{this.label}</span>}\n </div>\n )}\n <div class=\"readout\" part=\"readout\">\n <span class=\"number\" part=\"number\">{this.formatted()}</span>\n {this.unit && <span class=\"unit\" part=\"unit\">{this.unit}</span>}\n {this.trend !== 'none' && (\n <span class=\"trend\" part=\"trend\" aria-hidden=\"true\">\n {this.trend === 'up' ? '▲' : this.trend === 'down' ? '▼' : '◆'}\n </span>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"sDAAA,MAAMA,EAAW,IAAM,u5F,MCWVC,EAAQC,EAAA,MAAAD,UAAAE,E,iFAEXC,MAGAC,KAGAC,UAGiBC,MAAoB,OAGpBC,MAAoB,OAGpBC,KAAkB,KAGnCC,MAGAC,IAEA,SAAAC,GACN,UAAWC,KAAKT,QAAU,SAAU,OAAOS,KAAKT,MAChD,IAAKU,OAAOC,SAASF,KAAKT,OAAQ,MAAO,KACzC,GAAIS,KAAKP,YAAcU,UAAW,OAAOH,KAAKT,MAAMa,QAAQJ,KAAKP,WACjE,OAAOY,OAAOL,KAAKT,M,CAGrB,MAAAe,GACE,MAAMC,EAAiBP,KAAKH,OAASG,KAAKF,KAAO,gBACjD,MAAMU,EAAcR,KAAKN,QAAU,OAAS,WAAWM,KAAKN,QAAU,GACtE,OACEe,EAACC,EAAI,CAAAC,IAAA,2CACHC,KAAK,QAAO,aACA,GAAGL,MAAmBP,KAAKD,cAAcC,KAAKR,KAAO,IAAMQ,KAAKR,KAAO,KAAKgB,IAAa,YAC1FR,KAAKN,QAAU,YAAc,YAAc,WAEpDM,KAAKF,KAAOE,KAAKH,QACjBY,EAAA,OAAAE,IAAA,2CAAKE,MAAM,SAASC,KAAK,UACtBd,KAAKF,KAAOW,EAAA,QAAAE,IAAA,2CAAME,MAAM,MAAMC,KAAK,OAAOd,KAAKF,KAC/CE,KAAKH,OAASY,EAAA,QAAAE,IAAA,2CAAME,MAAM,QAAQC,KAAK,SAASd,KAAKH,QAG1DY,EAAA,OAAAE,IAAA,2CAAKE,MAAM,UAAUC,KAAK,WACxBL,EAAA,QAAAE,IAAA,2CAAME,MAAM,SAASC,KAAK,UAAUd,KAAKD,aACxCC,KAAKR,MAAQiB,EAAA,QAAAE,IAAA,2CAAME,MAAM,OAAOC,KAAK,QAAQd,KAAKR,MAClDQ,KAAKL,QAAU,QACdc,EAAA,QAAAE,IAAA,2CAAME,MAAM,QAAQC,KAAK,QAAO,cAAa,QAC1Cd,KAAKL,QAAU,KAAO,IAAMK,KAAKL,QAAU,OAAS,IAAM,M","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface IndValve extends Components.IndValve, HTMLElement {}
|
|
4
|
+
export const IndValve: {
|
|
5
|
+
prototype: IndValve;
|
|
6
|
+
new (): IndValve;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as t,H as a,h as e,a as s,t as i}from"./index.js";const r=()=>`:host{display:inline-flex;flex-direction:column;align-items:center;gap:var(--ind-spacing-2, 4px);font-family:var(--ind-font-family-sans);font-size:var(--ind-font-size-base, 12px);color:var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));font-feature-settings:var(--ind-font-feature-tabular, "tnum" 1)}.symbol{--_w:var(--ind-valve-width, 48px);--_fill:var(--ind-state-stopped-bg, #5a6776);--_stroke:var(--ind-state-stopped-border, #8390a0);width:var(--_w);height:calc(var(--_w) / 2);display:block}:host([orientation="vertical"]) .symbol{transform:rotate(90deg)}:host([size="sm"]) .symbol{--_w:32px}:host([size="md"]) .symbol{--_w:48px}:host([size="lg"]) .symbol{--_w:72px}.left,.right{fill:var(--_fill);stroke:var(--_stroke);stroke-width:1.25;stroke-linejoin:round;transition:fill var(--ind-motion-duration-base, 200ms), stroke var(--ind-motion-duration-base, 200ms)}.stem{stroke:var(--_stroke);stroke-width:2;stroke-linecap:round}:host([state="open"]) .symbol{--_fill:var(--ind-state-running-bg, #16a34a);--_stroke:var(--ind-state-running-border, #4ade80)}:host([state="closed"]) .symbol{--_fill:var(--ind-state-stopped-bg, #5a6776);--_stroke:var(--ind-state-stopped-border, #8390a0)}:host([state="fault"]) .symbol{--_fill:var(--ind-state-fault-bg, #dc2626);--_stroke:var(--ind-state-fault-border, #f87171)}:host([state="transit"]) .symbol{--_fill:var(--ind-state-warning-bg, #f59e0b);--_stroke:var(--ind-state-warning-border, #fcd34d)}:host([state="transit"]) .left,:host([state="transit"]) .right{stroke-dasharray:4 2;animation:ind-valve-march var(--ind-motion-blink-slow, 1000ms) linear infinite}@keyframes ind-valve-march{to{stroke-dashoffset:-6}}.caption{display:flex;gap:var(--ind-spacing-3, 6px);align-items:baseline;font-size:var(--ind-font-size-sm, 11px)}.tag{font-family:var(--ind-font-family-mono);font-weight:var(--ind-font-weight-semibold, 600)}.label{color:var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0))}@media (prefers-reduced-motion: reduce){:host([state="transit"]) .left,:host([state="transit"]) .right{animation:none;stroke-dasharray:4 2}}`;const n=t(class t extends a{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow()}state="closed";orientation="horizontal";size="md";label;tag;render(){const t=this.label??this.tag??"valve";return e(s,{key:"f0a9a4f7a1401c7ffc091bb10e52d13854e0fd42",role:"img","aria-label":`${t} — ${this.state}`},e("svg",{key:"1ba7a6466df31802d8ca141016670c6c301bc066",class:"symbol",part:"symbol",viewBox:"0 0 32 16","aria-hidden":"true"},e("polygon",{key:"89f77217a84e53606ce38e126c8ce87358fafb8b",class:"left",part:"left",points:"2,2 2,14 16,8"}),e("polygon",{key:"12ca5cd5ad1c117c48cc54275fe98509daba3267",class:"right",part:"right",points:"30,2 30,14 16,8"}),e("line",{key:"24510448beca41c7ab421b61c06de63840bddf99",class:"stem",part:"stem",x1:"16",y1:"2",x2:"16",y2:"14"})),(this.tag||this.label)&&e("div",{key:"18b6f7a60c0fdb8b5b7a688d5f6151811a9d587b",class:"caption",part:"caption"},this.tag&&e("span",{key:"7a8eb4c486380e3cb1a92e1ab3bdcbd2689cbd50",class:"tag",part:"tag"},this.tag),this.label&&e("span",{key:"6281ca7b4ae18e455a28b18890d28c58f38c14c1",class:"label",part:"label"},this.label)))}static get style(){return r()}},[513,"ind-valve",{state:[513],orientation:[513],size:[513],label:[1],tag:[1]}]);function o(){if(typeof customElements==="undefined"){return}const t=["ind-valve"];t.forEach((t=>{switch(t){case"ind-valve":if(!customElements.get(i(t))){customElements.define(i(t),n)}break}}))}o();const l=n;const d=o;export{l as IndValve,d as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ind-valve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["valveCss","IndValve","__stencil_proxyCustomElement","HTMLElement","state","orientation","size","label","tag","render","name","this","h","Host","key","role","class","part","viewBox","points","x1","y1","x2","y2"],"sources":["src/components/atoms/valve/valve.css?tag=ind-valve&encapsulation=shadow","src/components/atoms/valve/valve.tsx"],"sourcesContent":[":host {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n gap: var(--ind-spacing-2, 4px);\n font-family: var(--ind-font-family-sans);\n font-size: var(--ind-font-size-base, 12px);\n /* `light-dark()` makes the fallback adapt to the page's color-scheme so the\n * caption stays readable even if the atom lands on a surface whose theme\n * doesn't match the loaded tokens (e.g. Storybook autodocs on white). */\n color: var(--ind-surface-text-primary, light-dark(#11161c, #eef1f5));\n font-feature-settings: var(--ind-font-feature-tabular, \"tnum\" 1);\n}\n\n.symbol {\n --_w: var(--ind-valve-width, 48px);\n --_fill: var(--ind-state-stopped-bg, #5a6776);\n --_stroke: var(--ind-state-stopped-border, #8390a0);\n\n width: var(--_w);\n height: calc(var(--_w) / 2);\n display: block;\n}\n\n:host([orientation=\"vertical\"]) .symbol {\n transform: rotate(90deg);\n}\n\n:host([size=\"sm\"]) .symbol { --_w: 32px; }\n:host([size=\"md\"]) .symbol { --_w: 48px; }\n:host([size=\"lg\"]) .symbol { --_w: 72px; }\n\n.left,\n.right {\n fill: var(--_fill);\n stroke: var(--_stroke);\n stroke-width: 1.25;\n stroke-linejoin: round;\n transition:\n fill var(--ind-motion-duration-base, 200ms),\n stroke var(--ind-motion-duration-base, 200ms);\n}\n\n.stem {\n stroke: var(--_stroke);\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n:host([state=\"open\"]) .symbol {\n --_fill: var(--ind-state-running-bg, #16a34a);\n --_stroke: var(--ind-state-running-border, #4ade80);\n}\n:host([state=\"closed\"]) .symbol {\n --_fill: var(--ind-state-stopped-bg, #5a6776);\n --_stroke: var(--ind-state-stopped-border, #8390a0);\n}\n:host([state=\"fault\"]) .symbol {\n --_fill: var(--ind-state-fault-bg, #dc2626);\n --_stroke: var(--ind-state-fault-border, #f87171);\n}\n:host([state=\"transit\"]) .symbol {\n --_fill: var(--ind-state-warning-bg, #f59e0b);\n --_stroke: var(--ind-state-warning-border, #fcd34d);\n}\n\n/* Transit: marching ants on the perimeter — universally read as\n * \"in motion / transitioning\" by control room operators. */\n:host([state=\"transit\"]) .left,\n:host([state=\"transit\"]) .right {\n stroke-dasharray: 4 2;\n animation: ind-valve-march var(--ind-motion-blink-slow, 1000ms) linear infinite;\n}\n\n@keyframes ind-valve-march {\n to { stroke-dashoffset: -6; }\n}\n\n.caption {\n display: flex;\n gap: var(--ind-spacing-3, 6px);\n align-items: baseline;\n font-size: var(--ind-font-size-sm, 11px);\n}\n\n.tag {\n font-family: var(--ind-font-family-mono);\n font-weight: var(--ind-font-weight-semibold, 600);\n}\n\n.label {\n color: var(--ind-surface-text-muted, light-dark(#5a6776, #8390a0));\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host([state=\"transit\"]) .left,\n :host([state=\"transit\"]) .right {\n animation: none;\n stroke-dasharray: 4 2;\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\nexport type ValveState = 'open' | 'closed' | 'transit' | 'fault';\nexport type ValveOrientation = 'horizontal' | 'vertical';\nexport type ValveSize = 'sm' | 'md' | 'lg';\n\n@Component({\n tag: 'ind-valve',\n styleUrl: 'valve.css',\n shadow: true,\n})\nexport class IndValve {\n /** Valve state. `transit` is mid-stroke (transitioning between open and closed). */\n @Prop({ reflect: true }) state: ValveState = 'closed';\n\n /** Render the symbol along the flow direction. */\n @Prop({ reflect: true }) orientation: ValveOrientation = 'horizontal';\n\n /** Visual size. */\n @Prop({ reflect: true }) size: ValveSize = 'md';\n\n /** Human label rendered as caption (e.g. \"Discharge valve\"). */\n @Prop() label?: string;\n\n /** Equipment tag rendered as caption (e.g. \"V-12\"). */\n @Prop() tag?: string;\n\n render() {\n const name = this.label ?? this.tag ?? 'valve';\n return (\n <Host\n role=\"img\"\n aria-label={`${name} — ${this.state}`}\n >\n {/* ISA-5.1 bowtie symbol. ViewBox is 32×16 so the natural ratio is 2:1. */}\n <svg class=\"symbol\" part=\"symbol\" viewBox=\"0 0 32 16\" aria-hidden=\"true\">\n <polygon class=\"left\" part=\"left\" points=\"2,2 2,14 16,8\" />\n <polygon class=\"right\" part=\"right\" points=\"30,2 30,14 16,8\" />\n <line class=\"stem\" part=\"stem\" x1=\"16\" y1=\"2\" x2=\"16\" y2=\"14\" />\n </svg>\n {(this.tag || this.label) && (\n <div class=\"caption\" part=\"caption\">\n {this.tag && <span class=\"tag\" part=\"tag\">{this.tag}</span>}\n {this.label && <span class=\"label\" part=\"label\">{this.label}</span>}\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"2DAAA,MAAMA,EAAW,IAAM,wiE,MCWVC,EAAQC,EAAA,MAAAD,UAAAE,E,iFAEMC,MAAoB,SAGpBC,YAAgC,aAGhCC,KAAkB,KAGnCC,MAGAC,IAER,MAAAC,GACE,MAAMC,EAAOC,KAAKJ,OAASI,KAAKH,KAAO,QACvC,OACEI,EAACC,EAAI,CAAAC,IAAA,2CACHC,KAAK,MAAK,aACE,GAAGL,OAAUC,KAAKP,SAG9BQ,EAAA,OAAAE,IAAA,2CAAKE,MAAM,SAASC,KAAK,SAASC,QAAQ,YAAW,cAAa,QAChEN,EAAA,WAAAE,IAAA,2CAASE,MAAM,OAAQC,KAAK,OAAQE,OAAO,kBAC3CP,EAAA,WAAAE,IAAA,2CAASE,MAAM,QAAQC,KAAK,QAAQE,OAAO,oBAC3CP,EAAA,QAAAE,IAAA,2CAASE,MAAM,OAAQC,KAAK,OAAQG,GAAG,KAAKC,GAAG,IAAIC,GAAG,KAAKC,GAAG,SAE9DZ,KAAKH,KAAOG,KAAKJ,QACjBK,EAAA,OAAAE,IAAA,2CAAKE,MAAM,UAAUC,KAAK,WACvBN,KAAKH,KAAOI,EAAA,QAAAE,IAAA,2CAAME,MAAM,MAAMC,KAAK,OAAON,KAAKH,KAC/CG,KAAKJ,OAASK,EAAA,QAAAE,IAAA,2CAAME,MAAM,QAAQC,KAAK,SAASN,KAAKJ,Q","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the base path to where the assets can be found. Use "setAssetPath(path)"
|
|
3
|
+
* if the path needs to be customized.
|
|
4
|
+
*/
|
|
5
|
+
export declare const getAssetPath: (path: string) => string;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Used to manually set the base path where assets can be found.
|
|
9
|
+
* If the script is used as "module", it's recommended to use "import.meta.url",
|
|
10
|
+
* such as "setAssetPath(import.meta.url)". Other options include
|
|
11
|
+
* "setAssetPath(document.currentScript.src)", or using a bundler's replace plugin to
|
|
12
|
+
* dynamically set the path at build time, such as "setAssetPath(process.env.ASSET_PATH)".
|
|
13
|
+
* But do note that this configuration depends on how your script is bundled, or lack of
|
|
14
|
+
* bundling, and where your assets can be loaded from. Additionally custom bundling
|
|
15
|
+
* will have to ensure the static assets are copied to its build directory.
|
|
16
|
+
*/
|
|
17
|
+
export declare const setAssetPath: (path: string) => void;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Used to specify a nonce value that corresponds with an application's CSP.
|
|
21
|
+
* When set, the nonce will be added to all dynamically created script and style tags at runtime.
|
|
22
|
+
* Alternatively, the nonce value can be set on a meta tag in the DOM head
|
|
23
|
+
* (<meta name="csp-nonce" content="{ nonce value here }" />) which
|
|
24
|
+
* will result in the same behavior.
|
|
25
|
+
*/
|
|
26
|
+
export declare const setNonce: (nonce: string) => void
|
|
27
|
+
|
|
28
|
+
export interface SetPlatformOptions {
|
|
29
|
+
raf?: (c: FrameRequestCallback) => number;
|
|
30
|
+
ael?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
|
31
|
+
rel?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
|
32
|
+
}
|
|
33
|
+
export declare const setPlatformOptions: (opts: SetPlatformOptions) => void;
|
|
34
|
+
|
|
35
|
+
export * from '../types';
|