feat: implement real-time LED strip preview

- Add LED strip visualization around display previews
- Show real-time color status for each LED pixel
- Support multi-display LED strip configurations
- Use elegant 16px thin LED strip design
- Real-time LED color sync via WebSocket
- Responsive layout with display scaling support
This commit is contained in:
2025-07-03 02:08:40 +08:00
parent 6c30a824b0
commit 93ad9ae46c
23 changed files with 6954 additions and 1148 deletions

120
pnpm-lock.yaml generated
View File

@ -12,8 +12,8 @@ importers:
specifier: ^0.8.4
version: 0.8.4(solid-js@1.9.7)
'@tauri-apps/api':
specifier: ^1.6.0
version: 1.6.0
specifier: ^2.6.0
version: 2.6.0
debug:
specifier: ^4.4.1
version: 4.4.1
@ -34,8 +34,8 @@ importers:
specifier: ^4.1.11
version: 4.1.11
'@tauri-apps/cli':
specifier: ^1.6.3
version: 1.6.3
specifier: ^2.6.2
version: 2.6.2
'@types/debug':
specifier: ^4.1.12
version: 4.1.12
@ -511,72 +511,77 @@ packages:
'@tailwindcss/postcss@4.1.11':
resolution: {integrity: sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==}
'@tauri-apps/api@1.6.0':
resolution: {integrity: sha512-rqI++FWClU5I2UBp4HXFvl+sBWkdigBkxnpJDQUWttNyG7IZP4FwQGhTNL5EOw0vI8i6eSAJ5frLqO7n7jbJdg==}
engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'}
'@tauri-apps/api@2.6.0':
resolution: {integrity: sha512-hRNcdercfgpzgFrMXWwNDBN0B7vNzOzRepy6ZAmhxi5mDLVPNrTpo9MGg2tN/F7JRugj4d2aF7E1rtPXAHaetg==}
'@tauri-apps/cli-darwin-arm64@1.6.3':
resolution: {integrity: sha512-fQN6IYSL8bG4NvkdKE4sAGF4dF/QqqQq4hOAU+t8ksOzHJr0hUlJYfncFeJYutr/MMkdF7hYKadSb0j5EE9r0A==}
'@tauri-apps/cli-darwin-arm64@2.6.2':
resolution: {integrity: sha512-YlvT+Yb7u2HplyN2Cf/nBplCQARC/I4uedlYHlgtxg6rV7xbo9BvG1jLOo29IFhqA2rOp5w1LtgvVGwsOf2kxw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@tauri-apps/cli-darwin-x64@1.6.3':
resolution: {integrity: sha512-1yTXZzLajKAYINJOJhZfmMhCzweHSgKQ3bEgJSn6t+1vFkOgY8Yx4oFgWcybrrWI5J1ZLZAl47+LPOY81dLcyA==}
'@tauri-apps/cli-darwin-x64@2.6.2':
resolution: {integrity: sha512-21gdPWfv1bP8rkTdCL44in70QcYcPaDM70L+y78N8TkBuC+/+wqnHcwwjzb+mUyck6UoEw2DORagSI/oKKUGJw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@tauri-apps/cli-linux-arm-gnueabihf@1.6.3':
resolution: {integrity: sha512-CjTEr9r9xgjcvos09AQw8QMRPuH152B1jvlZt4PfAsyJNPFigzuwed5/SF7XAd8bFikA7zArP4UT12RdBxrx7w==}
'@tauri-apps/cli-linux-arm-gnueabihf@2.6.2':
resolution: {integrity: sha512-MW8Y6HqHS5yzQkwGoLk/ZyE1tWpnz/seDoY4INsbvUZdknuUf80yn3H+s6eGKtT/0Bfqon/W9sY7pEkgHRPQgA==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
'@tauri-apps/cli-linux-arm64-gnu@1.6.3':
resolution: {integrity: sha512-G9EUUS4M8M/Jz1UKZqvJmQQCKOzgTb8/0jZKvfBuGfh5AjFBu8LHvlFpwkKVm1l4951Xg4ulUp6P9Q7WRJ9XSA==}
'@tauri-apps/cli-linux-arm64-gnu@2.6.2':
resolution: {integrity: sha512-9PdINTUtnyrnQt9hvC4y1m0NoxKSw/wUB9OTBAQabPj8WLAdvySWiUpEiqJjwLhlu4T6ltXZRpNTEzous3/RXg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@tauri-apps/cli-linux-arm64-musl@1.6.3':
resolution: {integrity: sha512-MuBTHJyNpZRbPVG8IZBN8+Zs7aKqwD22tkWVBcL1yOGL4zNNTJlkfL+zs5qxRnHlUsn6YAlbW/5HKocfpxVwBw==}
'@tauri-apps/cli-linux-arm64-musl@2.6.2':
resolution: {integrity: sha512-LrcJTRr7FrtQlTDkYaRXIGo/8YU/xkWmBPC646WwKNZ/S6yqCiDcOMoPe7Cx4ZvcG6sK6LUCLQMfaSNEL7PT0A==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@tauri-apps/cli-linux-x64-gnu@1.6.3':
resolution: {integrity: sha512-Uvi7M+NK3tAjCZEY1WGel+dFlzJmqcvu3KND+nqa22762NFmOuBIZ4KJR/IQHfpEYqKFNUhJfCGnpUDfiC3Oxg==}
'@tauri-apps/cli-linux-riscv64-gnu@2.6.2':
resolution: {integrity: sha512-GnTshO/BaZ9KGIazz2EiFfXGWgLur5/pjqklRA/ck42PGdUQJhV/Ao7A7TdXPjqAzpFxNo6M/Hx0GCH2iMS7IA==}
engines: {node: '>= 10'}
cpu: [riscv64]
os: [linux]
'@tauri-apps/cli-linux-x64-gnu@2.6.2':
resolution: {integrity: sha512-QDG3WeJD6UJekmrtVPCJRzlKgn9sGzhvD58oAw5gIU+DRovgmmG2U1jH9fS361oYGjWWO7d/KM9t0kugZzi4lQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@tauri-apps/cli-linux-x64-musl@1.6.3':
resolution: {integrity: sha512-rc6B342C0ra8VezB/OJom9j/N+9oW4VRA4qMxS2f4bHY2B/z3J9NPOe6GOILeg4v/CV62ojkLsC3/K/CeF3fqQ==}
'@tauri-apps/cli-linux-x64-musl@2.6.2':
resolution: {integrity: sha512-TNVTDDtnWzuVqWBFdZ4+8ZTg17tc21v+CT5XBQ+KYCoYtCrIaHpW04fS5Tmudi+vYdBwoPDfwpKEB6LhCeFraQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@tauri-apps/cli-win32-arm64-msvc@1.6.3':
resolution: {integrity: sha512-cSH2qOBYuYC4UVIFtrc1YsGfc5tfYrotoHrpTvRjUGu0VywvmyNk82+ZsHEnWZ2UHmu3l3lXIGRqSWveLln0xg==}
'@tauri-apps/cli-win32-arm64-msvc@2.6.2':
resolution: {integrity: sha512-z77C1oa/hMLO/jM1JF39tK3M3v9nou7RsBnQoOY54z5WPcpVAbS0XdFhXB7sSN72BOiO3moDky9lQANQz6L3CA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@tauri-apps/cli-win32-ia32-msvc@1.6.3':
resolution: {integrity: sha512-T8V6SJQqE4PSWmYBl0ChQVmS6AR2hXFHURH2DwAhgSGSQ6uBXgwlYFcfIeQpBQA727K2Eq8X2hGfvmoySyHMRw==}
'@tauri-apps/cli-win32-ia32-msvc@2.6.2':
resolution: {integrity: sha512-TmD8BbzbjluBw8+QEIWUVmFa9aAluSkT1N937n1mpYLXcPbTpbunqRFiIznTwupoJNJIdtpF/t7BdZDRh5rrcg==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
'@tauri-apps/cli-win32-x64-msvc@1.6.3':
resolution: {integrity: sha512-HUkWZ+lYHI/Gjkh2QjHD/OBDpqLVmvjZGpLK9losur1Eg974Jip6k+vsoTUxQBCBDfj30eDBct9E1FvXOspWeg==}
'@tauri-apps/cli-win32-x64-msvc@2.6.2':
resolution: {integrity: sha512-ItB8RCKk+nCmqOxOvbNtltz6x1A4QX6cSM21kj3NkpcnjT9rHSMcfyf8WVI2fkoMUJR80iqCblUX6ARxC3lj6w==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@tauri-apps/cli@1.6.3':
resolution: {integrity: sha512-q46umd6QLRKDd4Gg6WyZBGa2fWvk0pbeUA5vFomm4uOs1/17LIciHv2iQ4UD+2Yv5H7AO8YiE1t50V0POiEGEw==}
'@tauri-apps/cli@2.6.2':
resolution: {integrity: sha512-s1/eyBHxk0wG1blLeOY2IDjgZcxVrkxU5HFL8rNDwjYGr0o7yr3RAtwmuUPhz13NO+xGAL1bJZaLFBdp+5joKg==}
engines: {node: '>= 10'}
hasBin: true
@ -851,11 +856,6 @@ packages:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
semver@7.7.2:
resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==}
engines: {node: '>=10'}
hasBin: true
seroval-plugins@1.3.2:
resolution: {integrity: sha512-0QvCV2lM3aj/U3YozDiVwx9zpH0q8A60CTWIv4Jszj/givcudPb48B+rkU5D51NJ0pTpweGMttHjboPa9/zoIQ==}
engines: {node: '>=10'}
@ -1344,52 +1344,54 @@ snapshots:
postcss: 8.5.6
tailwindcss: 4.1.11
'@tauri-apps/api@1.6.0': {}
'@tauri-apps/api@2.6.0': {}
'@tauri-apps/cli-darwin-arm64@1.6.3':
'@tauri-apps/cli-darwin-arm64@2.6.2':
optional: true
'@tauri-apps/cli-darwin-x64@1.6.3':
'@tauri-apps/cli-darwin-x64@2.6.2':
optional: true
'@tauri-apps/cli-linux-arm-gnueabihf@1.6.3':
'@tauri-apps/cli-linux-arm-gnueabihf@2.6.2':
optional: true
'@tauri-apps/cli-linux-arm64-gnu@1.6.3':
'@tauri-apps/cli-linux-arm64-gnu@2.6.2':
optional: true
'@tauri-apps/cli-linux-arm64-musl@1.6.3':
'@tauri-apps/cli-linux-arm64-musl@2.6.2':
optional: true
'@tauri-apps/cli-linux-x64-gnu@1.6.3':
'@tauri-apps/cli-linux-riscv64-gnu@2.6.2':
optional: true
'@tauri-apps/cli-linux-x64-musl@1.6.3':
'@tauri-apps/cli-linux-x64-gnu@2.6.2':
optional: true
'@tauri-apps/cli-win32-arm64-msvc@1.6.3':
'@tauri-apps/cli-linux-x64-musl@2.6.2':
optional: true
'@tauri-apps/cli-win32-ia32-msvc@1.6.3':
'@tauri-apps/cli-win32-arm64-msvc@2.6.2':
optional: true
'@tauri-apps/cli-win32-x64-msvc@1.6.3':
'@tauri-apps/cli-win32-ia32-msvc@2.6.2':
optional: true
'@tauri-apps/cli@1.6.3':
dependencies:
semver: 7.7.2
'@tauri-apps/cli-win32-x64-msvc@2.6.2':
optional: true
'@tauri-apps/cli@2.6.2':
optionalDependencies:
'@tauri-apps/cli-darwin-arm64': 1.6.3
'@tauri-apps/cli-darwin-x64': 1.6.3
'@tauri-apps/cli-linux-arm-gnueabihf': 1.6.3
'@tauri-apps/cli-linux-arm64-gnu': 1.6.3
'@tauri-apps/cli-linux-arm64-musl': 1.6.3
'@tauri-apps/cli-linux-x64-gnu': 1.6.3
'@tauri-apps/cli-linux-x64-musl': 1.6.3
'@tauri-apps/cli-win32-arm64-msvc': 1.6.3
'@tauri-apps/cli-win32-ia32-msvc': 1.6.3
'@tauri-apps/cli-win32-x64-msvc': 1.6.3
'@tauri-apps/cli-darwin-arm64': 2.6.2
'@tauri-apps/cli-darwin-x64': 2.6.2
'@tauri-apps/cli-linux-arm-gnueabihf': 2.6.2
'@tauri-apps/cli-linux-arm64-gnu': 2.6.2
'@tauri-apps/cli-linux-arm64-musl': 2.6.2
'@tauri-apps/cli-linux-riscv64-gnu': 2.6.2
'@tauri-apps/cli-linux-x64-gnu': 2.6.2
'@tauri-apps/cli-linux-x64-musl': 2.6.2
'@tauri-apps/cli-win32-arm64-msvc': 2.6.2
'@tauri-apps/cli-win32-ia32-msvc': 2.6.2
'@tauri-apps/cli-win32-x64-msvc': 2.6.2
'@types/babel__core@7.20.5':
dependencies:
@ -1653,8 +1655,6 @@ snapshots:
semver@6.3.1: {}
semver@7.7.2: {}
seroval-plugins@1.3.2(seroval@1.3.2):
dependencies:
seroval: 1.3.2