Compare commits

...

4 Commits
v3.1.1 ... main

Author SHA1 Message Date
3616bbb9a7 v3.2.0
Some checks failed
Default (tags) / security (push) Failing after 16s
Default (tags) / test (push) Failing after 17s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2025-12-08 20:23:03 +00:00
27c071f7dc feat(dees-simple-appdash,dees-simple-login,dees-terminal): Revamp UI: dashboard & login styling, standardize icons to Lucide, and add terminal background/config 2025-12-08 20:23:03 +00:00
ac1ef4e497 v3.1.2
Some checks failed
Default (tags) / security (push) Failing after 12s
Default (tags) / test (push) Failing after 13s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2025-12-08 16:17:52 +00:00
9c61c0542b fix(DeesAppuiMainmenu, DeesAppuiSecondarymenu): Add position: relative to main and secondary app UI menus to fix positioning of overlays and tooltips 2025-12-08 16:17:52 +00:00
10 changed files with 316 additions and 168 deletions

View File

@@ -1,5 +1,23 @@
# Changelog # Changelog
## 2025-12-08 - 3.2.0 - feat(dees-simple-appdash,dees-simple-login,dees-terminal)
Revamp UI: dashboard & login styling, standardize icons to Lucide, and add terminal background/config
- Standardize icon usage to Lucide prefixes in dees-simple-appdash; add fallback handling for legacy icon names
- Revamped dees-simple-appdash sidebar: updated spacing, typography, header icon wrapper, scrollbar styling, section labels, hover/selected states, and visual indicators
- Change 'Logout' label to 'Sign out' in dees-simple-appdash and add explicit status classes for controlbar (connected, terminal)
- Improve terminal UX: smoother launch/close animations, updated shadow and sizing logic in dees-simple-appdash
- Add background property to dees-terminal, sync it to a CSS variable and apply it to xterm theme for configurable terminal background
- Redesign dees-simple-login: new header/subheader, card layout, spacing, and updated submit text to 'Sign in'
- Bump devDependency @git.zone/tswatch to ^2.3.5
## 2025-12-08 - 3.1.2 - fix(DeesAppuiMainmenu, DeesAppuiSecondarymenu)
Add position: relative to main and secondary app UI menus to fix positioning of overlays and tooltips
- ts_web/elements/00group-appui/dees-appui-mainmenu/dees-appui-mainmenu.ts: add `position: relative` to host styles
- ts_web/elements/00group-appui/dees-appui-secondarymenu/dees-appui-secondarymenu.ts: add `position: relative` to host styles
- Fixes incorrect positioning for absolutely positioned children (tooltips, overlays, badges) inside the main and secondary menus
## 2025-12-08 - 3.1.1 - fix(dees-appui) ## 2025-12-08 - 3.1.1 - fix(dees-appui)
Extract demos for main and secondary app menus, adjust collapsed styles and toggle placement, bump devDependency Extract demos for main and secondary app menus, adjust collapsed styles and toggle placement, bump devDependency

View File

@@ -1,6 +1,6 @@
{ {
"name": "@design.estate/dees-catalog", "name": "@design.estate/dees-catalog",
"version": "3.1.1", "version": "3.2.0",
"private": false, "private": false,
"description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.", "description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
"main": "dist_ts_web/index.js", "main": "dist_ts_web/index.js",
@@ -48,7 +48,7 @@
"@git.zone/tsbuild": "^3.1.2", "@git.zone/tsbuild": "^3.1.2",
"@git.zone/tsbundle": "^2.6.3", "@git.zone/tsbundle": "^2.6.3",
"@git.zone/tstest": "^3.1.3", "@git.zone/tstest": "^3.1.3",
"@git.zone/tswatch": "^2.3.2", "@git.zone/tswatch": "^2.3.5",
"@push.rocks/projectinfo": "^5.0.2", "@push.rocks/projectinfo": "^5.0.2",
"@push.rocks/tapbundle": "^6.0.3", "@push.rocks/tapbundle": "^6.0.3",
"@types/node": "^24.10.1" "@types/node": "^24.10.1"

75
pnpm-lock.yaml generated
View File

@@ -98,10 +98,10 @@ importers:
version: 2.6.3 version: 2.6.3
'@git.zone/tstest': '@git.zone/tstest':
specifier: ^3.1.3 specifier: ^3.1.3
version: 3.1.3(@push.rocks/smartserve@1.3.0)(socks@2.8.7)(typescript@5.9.3) version: 3.1.3(@push.rocks/smartserve@1.4.0)(socks@2.8.7)(typescript@5.9.3)
'@git.zone/tswatch': '@git.zone/tswatch':
specifier: ^2.3.2 specifier: ^2.3.5
version: 2.3.2(@tiptap/pm@2.27.1) version: 2.3.5(@tiptap/pm@2.27.1)
'@push.rocks/projectinfo': '@push.rocks/projectinfo':
specifier: ^5.0.2 specifier: ^5.0.2
version: 5.0.2 version: 5.0.2
@@ -126,8 +126,8 @@ packages:
'@api.global/typedserver@3.0.80': '@api.global/typedserver@3.0.80':
resolution: {integrity: sha512-dcp0oXsjBL+XdFg1wUUP08uJQid5bQ0Yv3V3Y3lnI2QCbat0FU+Tsb0TZRnZ4+P150Vj/ITBqJUgDzFsF34grA==} resolution: {integrity: sha512-dcp0oXsjBL+XdFg1wUUP08uJQid5bQ0Yv3V3Y3lnI2QCbat0FU+Tsb0TZRnZ4+P150Vj/ITBqJUgDzFsF34grA==}
'@api.global/typedserver@7.11.0': '@api.global/typedserver@7.11.1':
resolution: {integrity: sha512-DHB3oGRgiLbAeRRFAlXIbjvNACw9YqsfOtLVCPq0nUcGMGSsUQ4SNrJ5OGk9GhVF8bl/jn8SF8w08rnApmZ0uw==} resolution: {integrity: sha512-1vQUJ2/DszDFHVkCmqqBy/qNiIP/jltFN3KxHtoNLxjbdBZYfw1Zd1Odjs6YSPalAD0p8wQ/alJblJEAewNQVg==}
'@api.global/typedsocket@3.1.1': '@api.global/typedsocket@3.1.1':
resolution: {integrity: sha512-Wkz3NlhmfdZMKqXXI2c2dMtGGmSmhdOegZiziL+9b2mqPYdc7Gd8AZRdEOKvbSoIvc9G22/5BEadIWHrfq66TA==} resolution: {integrity: sha512-Wkz3NlhmfdZMKqXXI2c2dMtGGmSmhdOegZiziL+9b2mqPYdc7Gd8AZRdEOKvbSoIvc9G22/5BEadIWHrfq66TA==}
@@ -316,6 +316,9 @@ packages:
'@borewit/text-codec@0.1.1': '@borewit/text-codec@0.1.1':
resolution: {integrity: sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==} resolution: {integrity: sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==}
'@cfworker/json-schema@4.1.1':
resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==}
'@cloudflare/workers-types@4.20251205.0': '@cloudflare/workers-types@4.20251205.0':
resolution: {integrity: sha512-7pup7fYkuQW5XD8RUS/vkxF9SXlrGyCXuZ4ro3uVQvca/GTeSa+8bZ8T4wbq1Aea5lmLIGSlKbhl2msME7bRBA==} resolution: {integrity: sha512-7pup7fYkuQW5XD8RUS/vkxF9SXlrGyCXuZ4ro3uVQvca/GTeSa+8bZ8T4wbq1Aea5lmLIGSlKbhl2msME7bRBA==}
@@ -329,8 +332,8 @@ packages:
'@dabh/diagnostics@2.0.8': '@dabh/diagnostics@2.0.8':
resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==}
'@design.estate/dees-catalog@2.0.7': '@design.estate/dees-catalog@3.1.2':
resolution: {integrity: sha512-rshv71LqA2PXaEEf6C1/hv6Yu2ovRuWaZhdnUznCDpjdYgxBq7PHkiHCNvg/m6wJ9Ue/03HcuuPqtj2bksgAag==} resolution: {integrity: sha512-T4ZhoZzl6NAWGhrz00MDFla5syeMz53euZ+QcBftRMmHuqPHDU/JlBi+K2SmILtnRfWH/lGYWBKugYop6q0chg==}
'@design.estate/dees-comms@1.0.30': '@design.estate/dees-comms@1.0.30':
resolution: {integrity: sha512-KchMlklJfKAjQiJiR0xmofXtQ27VgZtBIxcMwPE9d+h3jJRv+lPZxzBQVOM0eyM0uS44S5vJMZ11IeV4uDXSHg==} resolution: {integrity: sha512-KchMlklJfKAjQiJiR0xmofXtQ27VgZtBIxcMwPE9d+h3jJRv+lPZxzBQVOM0eyM0uS44S5vJMZ11IeV4uDXSHg==}
@@ -552,8 +555,8 @@ packages:
resolution: {integrity: sha512-t+/cKV21JHK8X7NGAmihs5M/eMm+V+jn4R5rzfwGG97WJFAcP5qE1Os9VYtyZw3tx/NZXA2yA4abo/ELluTuRA==} resolution: {integrity: sha512-t+/cKV21JHK8X7NGAmihs5M/eMm+V+jn4R5rzfwGG97WJFAcP5qE1Os9VYtyZw3tx/NZXA2yA4abo/ELluTuRA==}
hasBin: true hasBin: true
'@git.zone/tswatch@2.3.2': '@git.zone/tswatch@2.3.5':
resolution: {integrity: sha512-M4B4D7BlfGb3ssgMHFMHc+hhEmxY6WzNd87ihuLReXMD+twjMA99u2hyAvAnboa3lERlixvHz/nN+rdbGH5VlA==} resolution: {integrity: sha512-wYekG7Q/wg5uptXHPHhVi7dHq19QnLoevQpcpAzF6hMiNbOozN3+4zxOktyJBl6EHUYcFvHXA4fZ4bkJpo5TcA==}
hasBin: true hasBin: true
'@hapi/bourne@3.0.0': '@hapi/bourne@3.0.0':
@@ -981,8 +984,8 @@ packages:
'@push.rocks/smarts3@3.0.3': '@push.rocks/smarts3@3.0.3':
resolution: {integrity: sha512-Y9nXMwurthJ9Z7yi0RwjhPFUC58aY8Mhia8kFo6Xj1tBM4LE8Oxg/ydejF7otHqQGr3QyqV5C4YrDEG17rUuzg==} resolution: {integrity: sha512-Y9nXMwurthJ9Z7yi0RwjhPFUC58aY8Mhia8kFo6Xj1tBM4LE8Oxg/ydejF7otHqQGr3QyqV5C4YrDEG17rUuzg==}
'@push.rocks/smartserve@1.3.0': '@push.rocks/smartserve@1.4.0':
resolution: {integrity: sha512-4ZR9uKVWXVAPzU5wtCQ1mA9jNmOlUl3oGr50EceLT6803UwbNcst7Ek/BhzSaZ0qb2pz0jO5T/V+icgvZ1/5ww==} resolution: {integrity: sha512-cEoXZQSBX3pOv9AyhxRPkrMAWzs2XQhTBmW95BFtTSNzZdji0XgqUu92p7iuF+NVuTFX1QZ8+dbCClLCoRRW7g==}
'@push.rocks/smartshell@3.3.0': '@push.rocks/smartshell@3.3.0':
resolution: {integrity: sha512-m0w618H6YBs+vXGz1CgS4nPi5CUAnqRtckcS9/koGwfcIx1IpjqmiP47BoCTbdgcv0IPUxQVBG1IXTHPuZ8Z5g==} resolution: {integrity: sha512-m0w618H6YBs+vXGz1CgS4nPi5CUAnqRtckcS9/koGwfcIx1IpjqmiP47BoCTbdgcv0IPUxQVBG1IXTHPuZ8Z5g==}
@@ -1020,8 +1023,8 @@ packages:
'@push.rocks/smartversion@3.0.5': '@push.rocks/smartversion@3.0.5':
resolution: {integrity: sha512-8MZSo1yqyaKxKq0Q5N188l4un++9GFWVbhCAX5mXJwewZHn97ujffTeL+eOQYpWFTEpUhaq1QhL4NhqObBCt1Q==} resolution: {integrity: sha512-8MZSo1yqyaKxKq0Q5N188l4un++9GFWVbhCAX5mXJwewZHn97ujffTeL+eOQYpWFTEpUhaq1QhL4NhqObBCt1Q==}
'@push.rocks/smartwatch@5.1.0': '@push.rocks/smartwatch@6.1.1':
resolution: {integrity: sha512-vf4yT8F8V+vstnrr0sh64rGF/8Z8dZlLR4T95KcVtm7F0H3dKxLcvZ3HT0xayw0gQow8+CCtDdts9Wgq5ipJTw==} resolution: {integrity: sha512-wmhLKu9bdpvRcjOfitJOi4jsNKD7S2hVlVq6fAv3IhB2ZbRlSB+Hai4DwOlrdUZaWrg+dFIZU+/ifTOozOPiMg==}
engines: {node: '>=20.0.0'} engines: {node: '>=20.0.0'}
'@push.rocks/smartxml@2.0.0': '@push.rocks/smartxml@2.0.0':
@@ -4656,11 +4659,11 @@ snapshots:
'@push.rocks/webrequest': 3.0.37 '@push.rocks/webrequest': 3.0.37
'@push.rocks/webstream': 1.0.10 '@push.rocks/webstream': 1.0.10
'@api.global/typedserver@3.0.80(@push.rocks/smartserve@1.3.0)': '@api.global/typedserver@3.0.80(@push.rocks/smartserve@1.4.0)':
dependencies: dependencies:
'@api.global/typedrequest': 3.2.5 '@api.global/typedrequest': 3.2.5
'@api.global/typedrequest-interfaces': 3.0.19 '@api.global/typedrequest-interfaces': 3.0.19
'@api.global/typedsocket': 3.1.1(@push.rocks/smartserve@1.3.0) '@api.global/typedsocket': 3.1.1(@push.rocks/smartserve@1.4.0)
'@cloudflare/workers-types': 4.20251205.0 '@cloudflare/workers-types': 4.20251205.0
'@design.estate/dees-comms': 1.0.30 '@design.estate/dees-comms': 1.0.30
'@push.rocks/lik': 6.2.2 '@push.rocks/lik': 6.2.2
@@ -4704,13 +4707,13 @@ snapshots:
- utf-8-validate - utf-8-validate
- vue - vue
'@api.global/typedserver@7.11.0(@tiptap/pm@2.27.1)': '@api.global/typedserver@7.11.1(@tiptap/pm@2.27.1)':
dependencies: dependencies:
'@api.global/typedrequest': 3.2.5 '@api.global/typedrequest': 3.2.5
'@api.global/typedrequest-interfaces': 3.0.19 '@api.global/typedrequest-interfaces': 3.0.19
'@api.global/typedsocket': 4.1.0(@push.rocks/smartserve@1.3.0) '@api.global/typedsocket': 4.1.0(@push.rocks/smartserve@1.4.0)
'@cloudflare/workers-types': 4.20251205.0 '@cloudflare/workers-types': 4.20251205.0
'@design.estate/dees-catalog': 2.0.7(@tiptap/pm@2.27.1) '@design.estate/dees-catalog': 3.1.2(@tiptap/pm@2.27.1)
'@design.estate/dees-comms': 1.0.30 '@design.estate/dees-comms': 1.0.30
'@push.rocks/lik': 6.2.2 '@push.rocks/lik': 6.2.2
'@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartdelay': 3.0.5
@@ -4731,11 +4734,11 @@ snapshots:
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrequest': 5.0.1 '@push.rocks/smartrequest': 5.0.1
'@push.rocks/smartrx': 3.0.10 '@push.rocks/smartrx': 3.0.10
'@push.rocks/smartserve': 1.3.0 '@push.rocks/smartserve': 1.4.0
'@push.rocks/smartsitemap': 2.0.4 '@push.rocks/smartsitemap': 2.0.4
'@push.rocks/smartstream': 3.2.5 '@push.rocks/smartstream': 3.2.5
'@push.rocks/smarttime': 4.1.1 '@push.rocks/smarttime': 4.1.1
'@push.rocks/smartwatch': 5.1.0 '@push.rocks/smartwatch': 6.1.1
'@push.rocks/taskbuffer': 3.5.0 '@push.rocks/taskbuffer': 3.5.0
'@push.rocks/webrequest': 4.0.1 '@push.rocks/webrequest': 4.0.1
'@push.rocks/webstore': 2.0.20 '@push.rocks/webstore': 2.0.20
@@ -4750,7 +4753,7 @@ snapshots:
- utf-8-validate - utf-8-validate
- vue - vue
'@api.global/typedsocket@3.1.1(@push.rocks/smartserve@1.3.0)': '@api.global/typedsocket@3.1.1(@push.rocks/smartserve@1.4.0)':
dependencies: dependencies:
'@api.global/typedrequest': 3.2.5 '@api.global/typedrequest': 3.2.5
'@api.global/typedrequest-interfaces': 3.0.19 '@api.global/typedrequest-interfaces': 3.0.19
@@ -4761,7 +4764,7 @@ snapshots:
'@push.rocks/smartstring': 4.1.0 '@push.rocks/smartstring': 4.1.0
'@push.rocks/smarturl': 3.1.0 '@push.rocks/smarturl': 3.1.0
optionalDependencies: optionalDependencies:
'@push.rocks/smartserve': 1.3.0 '@push.rocks/smartserve': 1.4.0
transitivePeerDependencies: transitivePeerDependencies:
- '@nuxt/kit' - '@nuxt/kit'
- bufferutil - bufferutil
@@ -4770,7 +4773,7 @@ snapshots:
- utf-8-validate - utf-8-validate
- vue - vue
'@api.global/typedsocket@4.1.0(@push.rocks/smartserve@1.3.0)': '@api.global/typedsocket@4.1.0(@push.rocks/smartserve@1.4.0)':
dependencies: dependencies:
'@api.global/typedrequest': 3.2.5 '@api.global/typedrequest': 3.2.5
'@api.global/typedrequest-interfaces': 3.0.19 '@api.global/typedrequest-interfaces': 3.0.19
@@ -4779,7 +4782,7 @@ snapshots:
'@push.rocks/smartjson': 5.2.0 '@push.rocks/smartjson': 5.2.0
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrx': 3.0.10 '@push.rocks/smartrx': 3.0.10
'@push.rocks/smartserve': 1.3.0 '@push.rocks/smartserve': 1.4.0
'@push.rocks/smartstring': 4.1.0 '@push.rocks/smartstring': 4.1.0
'@push.rocks/smarturl': 3.1.0 '@push.rocks/smarturl': 3.1.0
@@ -5274,6 +5277,8 @@ snapshots:
'@borewit/text-codec@0.1.1': {} '@borewit/text-codec@0.1.1': {}
'@cfworker/json-schema@4.1.1': {}
'@cloudflare/workers-types@4.20251205.0': {} '@cloudflare/workers-types@4.20251205.0': {}
'@colors/colors@1.6.0': {} '@colors/colors@1.6.0': {}
@@ -5288,7 +5293,7 @@ snapshots:
enabled: 2.0.0 enabled: 2.0.0
kuler: 2.0.0 kuler: 2.0.0
'@design.estate/dees-catalog@2.0.7(@tiptap/pm@2.27.1)': '@design.estate/dees-catalog@3.1.2(@tiptap/pm@2.27.1)':
dependencies: dependencies:
'@design.estate/dees-domtools': 2.3.6 '@design.estate/dees-domtools': 2.3.6
'@design.estate/dees-element': 2.1.3 '@design.estate/dees-element': 2.1.3
@@ -5564,9 +5569,9 @@ snapshots:
'@push.rocks/smartshell': 3.3.0 '@push.rocks/smartshell': 3.3.0
tsx: 4.21.0 tsx: 4.21.0
'@git.zone/tstest@3.1.3(@push.rocks/smartserve@1.3.0)(socks@2.8.7)(typescript@5.9.3)': '@git.zone/tstest@3.1.3(@push.rocks/smartserve@1.4.0)(socks@2.8.7)(typescript@5.9.3)':
dependencies: dependencies:
'@api.global/typedserver': 3.0.80(@push.rocks/smartserve@1.3.0) '@api.global/typedserver': 3.0.80(@push.rocks/smartserve@1.4.0)
'@git.zone/tsbundle': 2.6.3 '@git.zone/tsbundle': 2.6.3
'@git.zone/tsrun': 2.0.0 '@git.zone/tsrun': 2.0.0
'@push.rocks/consolecolor': 2.0.3 '@push.rocks/consolecolor': 2.0.3
@@ -5613,9 +5618,9 @@ snapshots:
- utf-8-validate - utf-8-validate
- vue - vue
'@git.zone/tswatch@2.3.2(@tiptap/pm@2.27.1)': '@git.zone/tswatch@2.3.5(@tiptap/pm@2.27.1)':
dependencies: dependencies:
'@api.global/typedserver': 7.11.0(@tiptap/pm@2.27.1) '@api.global/typedserver': 7.11.1(@tiptap/pm@2.27.1)
'@git.zone/tsbundle': 2.6.3 '@git.zone/tsbundle': 2.6.3
'@git.zone/tsrun': 2.0.0 '@git.zone/tsrun': 2.0.0
'@push.rocks/early': 4.0.4 '@push.rocks/early': 4.0.4
@@ -5626,7 +5631,7 @@ snapshots:
'@push.rocks/smartlog': 3.1.10 '@push.rocks/smartlog': 3.1.10
'@push.rocks/smartlog-destination-local': 9.0.2 '@push.rocks/smartlog-destination-local': 9.0.2
'@push.rocks/smartshell': 3.3.0 '@push.rocks/smartshell': 3.3.0
'@push.rocks/smartwatch': 5.1.0 '@push.rocks/smartwatch': 6.1.1
'@push.rocks/taskbuffer': 3.5.0 '@push.rocks/taskbuffer': 3.5.0
transitivePeerDependencies: transitivePeerDependencies:
- '@nuxt/kit' - '@nuxt/kit'
@@ -6555,9 +6560,10 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- aws-crt - aws-crt
'@push.rocks/smartserve@1.3.0': '@push.rocks/smartserve@1.4.0':
dependencies: dependencies:
'@api.global/typedrequest': 3.2.5 '@api.global/typedrequest': 3.2.5
'@cfworker/json-schema': 4.1.1
'@push.rocks/lik': 6.2.2 '@push.rocks/lik': 6.2.2
'@push.rocks/smartenv': 6.0.0 '@push.rocks/smartenv': 6.0.0
'@push.rocks/smartlog': 3.1.10 '@push.rocks/smartlog': 3.1.10
@@ -6588,7 +6594,7 @@ snapshots:
'@push.rocks/smartsocket@2.1.0': '@push.rocks/smartsocket@2.1.0':
dependencies: dependencies:
'@api.global/typedrequest-interfaces': 3.0.19 '@api.global/typedrequest-interfaces': 3.0.19
'@api.global/typedserver': 3.0.80(@push.rocks/smartserve@1.3.0) '@api.global/typedserver': 3.0.80(@push.rocks/smartserve@1.4.0)
'@push.rocks/isohash': 2.0.1 '@push.rocks/isohash': 2.0.1
'@push.rocks/isounique': 1.0.5 '@push.rocks/isounique': 1.0.5
'@push.rocks/lik': 6.2.2 '@push.rocks/lik': 6.2.2
@@ -6672,7 +6678,7 @@ snapshots:
'@types/semver': 7.7.1 '@types/semver': 7.7.1
semver: 7.7.3 semver: 7.7.3
'@push.rocks/smartwatch@5.1.0': '@push.rocks/smartwatch@6.1.1':
dependencies: dependencies:
'@push.rocks/lik': 6.2.2 '@push.rocks/lik': 6.2.2
'@push.rocks/smartenv': 6.0.0 '@push.rocks/smartenv': 6.0.0
@@ -6715,20 +6721,17 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- '@aws-sdk/credential-providers' - '@aws-sdk/credential-providers'
- '@mongodb-js/zstd' - '@mongodb-js/zstd'
- '@nuxt/kit'
- aws-crt - aws-crt
- bare-abort-controller - bare-abort-controller
- bufferutil - bufferutil
- gcp-metadata - gcp-metadata
- kerberos - kerberos
- mongodb-client-encryption - mongodb-client-encryption
- react
- react-native-b4a - react-native-b4a
- snappy - snappy
- socks - socks
- supports-color - supports-color
- utf-8-validate - utf-8-validate
- vue
'@push.rocks/taskbuffer@3.5.0': '@push.rocks/taskbuffer@3.5.0':
dependencies: dependencies:

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@design.estate/dees-catalog', name: '@design.estate/dees-catalog',
version: '3.1.1', version: '3.2.0',
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.' description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
} }

View File

@@ -57,6 +57,7 @@ export class DeesAppuiMainmenu extends DeesElement {
--menu-width-collapsed: 56px; --menu-width-collapsed: 56px;
--tooltip-bg: ${cssManager.bdTheme('#18181b', '#fafafa')}; --tooltip-bg: ${cssManager.bdTheme('#18181b', '#fafafa')};
--tooltip-fg: ${cssManager.bdTheme('#fafafa', '#18181b')}; --tooltip-fg: ${cssManager.bdTheme('#fafafa', '#18181b')};
position: relative;
display: block; display: block;
height: 100%; height: 100%;
} }

View File

@@ -77,6 +77,7 @@ export class DeesAppuiSecondarymenu extends DeesElement {
--badge-error-bg: ${cssManager.bdTheme('#fee2e2', '#450a0a')}; --badge-error-bg: ${cssManager.bdTheme('#fee2e2', '#450a0a')};
--badge-error-fg: ${cssManager.bdTheme('#991b1b', '#f87171')}; --badge-error-fg: ${cssManager.bdTheme('#991b1b', '#f87171')};
position: relative;
display: block; display: block;
height: 100%; height: 100%;
width: var(--sidebar-width-expanded); width: var(--sidebar-width-expanded);

View File

@@ -266,17 +266,17 @@ export const demoFunc = () => html`
.viewTabs=${[ .viewTabs=${[
{ {
name: 'Dashboard', name: 'Dashboard',
iconName: 'home', iconName: 'lucide:home',
element: DemoViewDashboard, element: DemoViewDashboard,
}, },
{ {
name: 'Analytics', name: 'Analytics',
iconName: 'lineChart', iconName: 'lucide:lineChart',
element: DemoViewAnalytics, element: DemoViewAnalytics,
}, },
{ {
name: 'Settings', name: 'Settings',
iconName: 'settings', iconName: 'lucide:settings',
element: DemoViewSettings, element: DemoViewSettings,
} }
] as IView[]} ] as IView[]}

View File

@@ -51,7 +51,7 @@ export class DeesSimpleAppDash extends DeesElement {
cssManager.defaultStyles, cssManager.defaultStyles,
css` css`
:host { :host {
color: ${cssManager.bdTheme('#333', '#ccc')}; color: ${cssManager.bdTheme('hsl(0 0% 15%)', 'hsl(0 0% 90%)')};
user-select: none; user-select: none;
display: block; display: block;
overflow: hidden; overflow: hidden;
@@ -75,67 +75,122 @@ export class DeesSimpleAppDash extends DeesElement {
left: 0px; left: 0px;
height: calc(100% - 24px); height: calc(100% - 24px);
width: 240px; width: 240px;
background: ${cssManager.bdTheme('#fafafa', '#000')}; background: ${cssManager.bdTheme('hsl(0 0% 99%)', 'hsl(0 0% 7%)')};
border-right: 1px solid ${cssManager.bdTheme('#e0e0e0', '#202020')}; border-right: 1px solid ${cssManager.bdTheme('hsl(0 0% 91%)', 'hsl(0 0% 13%)')};
font-size: 12px; font-size: 13px;
font-family: 'Geist Sans', sans-serif; font-family: 'Geist Sans', sans-serif;
z-index: 2; z-index: 2;
display: grid; display: grid;
grid-template-rows: auto min-content; grid-template-rows: auto 1fr min-content;
overflow: hidden; overflow: hidden;
} }
.sidebar-header { .sidebar-header {
padding: 16px 12px; padding: 20px 16px;
border-bottom: 1px solid ${cssManager.bdTheme('#e0e0e0', '#202020')}; border-bottom: 1px solid ${cssManager.bdTheme('hsl(0 0% 91%)', 'hsl(0 0% 13%)')};
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 12px;
}
.header-icon-wrapper {
display: flex;
align-items: center;
justify-content: center;
width: 36px;
height: 36px;
border-radius: 10px;
background: ${cssManager.bdTheme(
'linear-gradient(135deg, hsl(215 20% 95%) 0%, hsl(215 20% 90%) 100%)',
'linear-gradient(135deg, hsl(215 20% 18%) 0%, hsl(215 20% 14%) 100%)'
)};
box-shadow: ${cssManager.bdTheme(
'0 1px 2px rgb(0 0 0 / 0.05), inset 0 1px 0 rgb(255 255 255 / 0.5)',
'0 1px 2px rgb(0 0 0 / 0.2), inset 0 1px 0 rgb(255 255 255 / 0.05)'
)};
}
.header-icon-wrapper dees-icon {
font-size: 18px;
color: ${cssManager.bdTheme('hsl(215 20% 40%)', 'hsl(215 20% 70%)')};
} }
.appName { .appName {
font-size: 14px; font-size: 15px;
font-weight: 600; font-weight: 600;
color: ${cssManager.bdTheme('#000', '#fff')}; color: ${cssManager.bdTheme('hsl(0 0% 9%)', 'hsl(0 0% 98%)')};
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
letter-spacing: -0.02em;
} }
.viewTabs-container { .viewTabs-container {
flex: 1;
overflow-y: auto; overflow-y: auto;
padding: 4px 0; padding: 12px 8px;
scrollbar-width: thin;
scrollbar-color: ${cssManager.bdTheme('hsl(0 0% 85%)', 'hsl(0 0% 20%)')} transparent;
}
.viewTabs-container::-webkit-scrollbar {
width: 6px;
}
.viewTabs-container::-webkit-scrollbar-track {
background: transparent;
}
.viewTabs-container::-webkit-scrollbar-thumb {
background: ${cssManager.bdTheme('hsl(0 0% 85%)', 'hsl(0 0% 20%)')};
border-radius: 3px;
}
.viewTabs-container::-webkit-scrollbar-thumb:hover {
background: ${cssManager.bdTheme('hsl(0 0% 75%)', 'hsl(0 0% 30%)')};
}
.section-label {
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
color: ${cssManager.bdTheme('hsl(0 0% 50%)', 'hsl(0 0% 50%)')};
padding: 8px 12px 8px;
margin-bottom: 4px;
} }
.viewTabs { .viewTabs {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 2px;
} }
.viewTab { .viewTab {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 10px;
padding: 8px 12px; padding: 10px 12px;
cursor: default; cursor: default;
transition: background 0.1s; transition: all 0.15s ease;
color: ${cssManager.bdTheme('#333', '#ccc')}; color: ${cssManager.bdTheme('hsl(0 0% 40%)', 'hsl(0 0% 65%)')};
user-select: none; user-select: none;
position: relative; position: relative;
border-radius: 8px;
} }
.viewTab:hover { .viewTab:hover {
background: ${cssManager.bdTheme('rgba(0, 0, 0, 0.04)', 'rgba(255, 255, 255, 0.08)')}; background: ${cssManager.bdTheme('hsl(0 0% 0% / 0.04)', 'hsl(0 0% 100% / 0.05)')};
color: ${cssManager.bdTheme('hsl(0 0% 15%)', 'hsl(0 0% 90%)')};
} }
.viewTab:active { .viewTab:active {
background: ${cssManager.bdTheme('rgba(0, 0, 0, 0.08)', 'rgba(255, 255, 255, 0.12)')}; background: ${cssManager.bdTheme('hsl(0 0% 0% / 0.06)', 'hsl(0 0% 100% / 0.07)')};
transform: scale(0.99);
} }
.viewTab.selected { .viewTab.selected {
background: ${cssManager.bdTheme('rgba(0, 0, 0, 0.08)', 'rgba(255, 255, 255, 0.12)')}; background: ${cssManager.bdTheme('hsl(215 25% 95%)', 'hsl(215 20% 15%)')};
color: ${cssManager.bdTheme('#000', '#fff')}; color: ${cssManager.bdTheme('hsl(215 25% 30%)', 'hsl(215 25% 85%)')};
font-weight: 500; font-weight: 500;
} }
@@ -143,41 +198,65 @@ export class DeesSimpleAppDash extends DeesElement {
content: ''; content: '';
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: 8px;
bottom: 0; bottom: 8px;
width: 3px; width: 3px;
background: ${cssManager.bdTheme('#26a69a', '#26a69a')}; border-radius: 0 2px 2px 0;
background: ${cssManager.bdTheme('hsl(215 70% 50%)', 'hsl(215 70% 60%)')};
} }
.viewTab dees-icon { .viewTab dees-icon {
font-size: 14px; font-size: 16px;
opacity: 0.7; opacity: 0.55;
transition: all 0.15s ease;
} }
.viewTab:hover dees-icon {
opacity: 0.75;
}
.viewTab.selected dees-icon {
opacity: 0.9;
color: ${cssManager.bdTheme('hsl(215 70% 45%)', 'hsl(215 70% 65%)')};
}
.viewTab span {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.appActions { .appActions {
padding: 12px; padding: 12px 8px;
border-top: 1px solid ${cssManager.bdTheme('#e0e0e0', '#202020')}; border-top: 1px solid ${cssManager.bdTheme('hsl(0 0% 91%)', 'hsl(0 0% 13%)')};
} }
.action { .action {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 10px;
padding: 8px; padding: 10px 12px;
border-radius: 4px; border-radius: 8px;
cursor: default; cursor: default;
transition: background 0.1s; transition: all 0.15s ease;
color: ${cssManager.bdTheme('#333', '#ccc')}; color: ${cssManager.bdTheme('hsl(0 0% 40%)', 'hsl(0 0% 65%)')};
} }
.action:hover { .action:hover {
background: ${cssManager.bdTheme('rgba(0, 0, 0, 0.04)', 'rgba(255, 255, 255, 0.08)')}; background: ${cssManager.bdTheme('hsl(0 84% 60% / 0.08)', 'hsl(0 84% 60% / 0.12)')};
color: ${cssManager.bdTheme('hsl(0 84% 45%)', 'hsl(0 84% 65%)')};
} }
.action dees-icon { .action dees-icon {
font-size: 14px; font-size: 16px;
opacity: 0.7; opacity: 0.6;
transition: all 0.15s ease;
}
.action:hover dees-icon {
opacity: 0.9;
color: ${cssManager.bdTheme('hsl(0 84% 45%)', 'hsl(0 84% 65%)')};
} }
.appcontent { .appcontent {
@@ -189,7 +268,7 @@ export class DeesSimpleAppDash extends DeesElement {
bottom: 24px; bottom: 24px;
width: calc(100% - 240px); width: calc(100% - 240px);
overflow: auto; overflow: auto;
background: ${cssManager.bdTheme('#f5f5f5', '#000')}; background: ${cssManager.bdTheme('hsl(0 0% 97%)', 'hsl(0 0% 5%)')};
overscroll-behavior: contain; overscroll-behavior: contain;
} }
@@ -199,36 +278,51 @@ export class DeesSimpleAppDash extends DeesElement {
bottom: 0px; bottom: 0px;
left: 0px; left: 0px;
width: 100%; width: 100%;
border-top: 1px solid ${cssManager.bdTheme('#00000020', '#ffffff20')};
height: 24px; height: 24px;
background: ${cssManager.bdTheme('#2196f3', '#1565c0')}; background: ${cssManager.bdTheme('hsl(220 13% 18%)', 'hsl(220 13% 12%)')};
z-index: 2; z-index: 2;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
align-items: center; align-items: center;
flex-direction: row; flex-direction: row;
font-size: 12px; font-size: 11px;
font-weight: 500;
letter-spacing: 0.01em;
} }
.control { .control {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 4px; gap: 6px;
margin-right: 16px; padding: 0 12px;
height: 100%;
white-space: nowrap; white-space: nowrap;
cursor: default; cursor: default;
opacity: 0.8; color: hsl(0 0% 70%);
transition: opacity 0.2s; transition: all 0.15s ease;
border-left: 1px solid hsl(0 0% 100% / 0.08);
}
.control:first-child {
border-left: none;
} }
.control:hover { .control:hover {
opacity: 1; background: hsl(0 0% 100% / 0.06);
color: hsl(0 0% 95%);
} }
.control dees-icon { .control dees-icon {
font-size: 14px; font-size: 13px;
} }
.control.status-connected dees-icon {
color: hsl(142 70% 50%);
}
.control.status-terminal dees-icon {
color: hsl(45 90% 55%);
}
`, `,
]; ];
@@ -236,12 +330,14 @@ export class DeesSimpleAppDash extends DeesElement {
return html` return html`
<div class="maincontainer"> <div class="maincontainer">
<div class="appbar"> <div class="appbar">
<div>
<div class="sidebar-header"> <div class="sidebar-header">
<dees-icon .icon="${'lucide:grid3x3'}" style="font-size: 18px;"></dees-icon> <div class="header-icon-wrapper">
<dees-icon .icon="${'lucide:layoutGrid'}"></dees-icon>
</div>
<div class="appName">${this.name}</div> <div class="appName">${this.name}</div>
</div> </div>
<div class="viewTabs-container"> <div class="viewTabs-container">
<div class="section-label">Navigation</div>
<div class="viewTabs"> <div class="viewTabs">
${this.viewTabs.map( ${this.viewTabs.map(
(view) => html` (view) => html`
@@ -250,21 +346,22 @@ export class DeesSimpleAppDash extends DeesElement {
@click=${() => this.loadView(view)} @click=${() => this.loadView(view)}
> >
${view.iconName ? html` ${view.iconName ? html`
<dees-icon .icon="${`${view.iconName}`}"></dees-icon> <dees-icon .icon="${view.iconName.includes(':') ? view.iconName : `lucide:${view.iconName}`}"></dees-icon>
` : ''} ` : html`
<span style="flex: 1;">${view.name}</span> <dees-icon .icon="${'lucide:file'}"></dees-icon>
`}
<span>${view.name}</span>
</div> </div>
` `
)} )}
</div> </div>
</div> </div>
</div>
<div class="appActions"> <div class="appActions">
<div class="action" @click=${() => { <div class="action" @click=${() => {
this.dispatchEvent(new CustomEvent('logout', { bubbles: true, composed: true })); this.dispatchEvent(new CustomEvent('logout', { bubbles: true, composed: true }));
}}> }}>
<dees-icon .icon="${'lucide:logOut'}"></dees-icon> <dees-icon .icon="${'lucide:logOut'}"></dees-icon>
<span>Logout</span> <span>Sign out</span>
</div> </div>
</div> </div>
</div> </div>
@@ -272,11 +369,11 @@ export class DeesSimpleAppDash extends DeesElement {
<!-- Content goes here --> <!-- Content goes here -->
</div> </div>
<div class="controlbar"> <div class="controlbar">
<div class="control"> <div class="control status-connected">
<dees-icon .icon="${'lucide:wifi'}"></dees-icon> <dees-icon .icon="${'lucide:wifi'}"></dees-icon>
<span>Connected</span> <span>Connected</span>
</div> </div>
<div class="control" @click=${this.launchTerminal}> <div class="control status-terminal" @click=${this.launchTerminal}>
<dees-icon .icon="${'lucide:terminal'}"></dees-icon> <dees-icon .icon="${'lucide:terminal'}"></dees-icon>
<span>Terminal</span> <span>Terminal</span>
</div> </div>
@@ -315,10 +412,10 @@ export class DeesSimpleAppDash extends DeesElement {
terminal.style.right = '0px'; terminal.style.right = '0px';
terminal.style.bottom = '24px'; terminal.style.bottom = '24px';
terminal.style.opacity = '0'; terminal.style.opacity = '0';
terminal.style.transform = 'translateY(20px)'; terminal.style.transform = 'translateY(8px) scale(0.99)';
terminal.style.transition = 'all 0.2s'; terminal.style.transition = 'all 0.25s cubic-bezier(0.4, 0, 0.2, 1)';
terminal.style.background = '#000'; terminal.background = 'hsl(220 13% 8%)';
terminal.style.boxShadow = '0 4px 20px rgba(0, 0, 0, 0.3)'; terminal.style.boxShadow = '0 25px 50px -12px rgb(0 0 0 / 0.5), 0 0 0 1px rgb(255 255 255 / 0.05)';
terminal.style.maxWidth = `calc(${maincontainer.clientWidth}px -240px)`; terminal.style.maxWidth = `calc(${maincontainer.clientWidth}px -240px)`;
terminal.style.maxHeight = `calc(${maincontainer.clientHeight}px - 24px)`; terminal.style.maxHeight = `calc(${maincontainer.clientHeight}px - 24px)`;
@@ -327,7 +424,7 @@ export class DeesSimpleAppDash extends DeesElement {
await domtools.convenience.smartdelay.delayFor(0); await domtools.convenience.smartdelay.delayFor(0);
terminal.style.opacity = '1'; terminal.style.opacity = '1';
terminal.style.transform = 'translateY(0px)'; terminal.style.transform = 'translateY(0) scale(1)';
return terminal; return terminal;
} }
@@ -335,8 +432,8 @@ export class DeesSimpleAppDash extends DeesElement {
const domtools = await this.domtoolsPromise; const domtools = await this.domtoolsPromise;
if (this.currentTerminal) { if (this.currentTerminal) {
this.currentTerminal.style.opacity = '0'; this.currentTerminal.style.opacity = '0';
this.currentTerminal.style.transform = 'translateY(20px)'; this.currentTerminal.style.transform = 'translateY(8px) scale(0.99)';
await domtools.convenience.smartdelay.delayFor(200); await domtools.convenience.smartdelay.delayFor(250);
this.currentTerminal.remove(); this.currentTerminal.remove();
this.currentTerminal = null; this.currentTerminal = null;
} }

View File

@@ -29,7 +29,7 @@ export class DeesSimpleLogin extends DeesElement {
cssManager.defaultStyles, cssManager.defaultStyles,
css` css`
:host { :host {
color: ${cssManager.bdTheme('#333', '#ccc')}; color: ${cssManager.bdTheme('hsl(0 0% 3.9%)', 'hsl(0 0% 98%)')};
user-select: none; user-select: none;
display: block; display: block;
width: 100%; width: 100%;
@@ -46,7 +46,7 @@ export class DeesSimpleLogin extends DeesElement {
height: 100%; height: 100%;
top: 0; top: 0;
left: 0; left: 0;
background: ${cssManager.bdTheme('#f5f5f5', '#000')}; background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(0 0% 3.9%)')};
} }
.slotContainer { .slotContainer {
@@ -56,43 +56,56 @@ export class DeesSimpleLogin extends DeesElement {
top: 0; top: 0;
left: 0; left: 0;
opacity: 0; opacity: 0;
transition: opacity 0.3s, transform 0.3s; transition: opacity 0.2s ease, transform 0.2s ease;
pointer-events: none; pointer-events: none;
} }
.login { .login {
min-width: 320px; width: 100%;
background: ${cssManager.bdTheme('#ffffff', '#111')}; max-width: 360px;
box-shadow: ${cssManager.bdTheme( display: flex;
'0 4px 12px rgba(0, 0, 0, 0.15)', flex-direction: column;
'0 4px 12px rgba(0, 0, 0, 0.3)' gap: 24px;
)}; }
border-radius: 8px;
border: 1px solid ${cssManager.bdTheme('#e0e0e0', '#202020')}; .login-header {
padding: 24px; display: flex;
transition: opacity 0.3s, transform 0.3s; flex-direction: column;
gap: 8px;
text-align: center;
} }
.header { .header {
text-align: center; font-size: 24px;
font-size: 16px;
font-weight: 600; font-weight: 600;
margin-bottom: 20px; letter-spacing: -0.025em;
color: ${cssManager.bdTheme('#000', '#fff')}; color: ${cssManager.bdTheme('hsl(0 0% 9%)', 'hsl(0 0% 98%)')};
} }
.login dees-form { .subheader {
font-size: 14px;
color: ${cssManager.bdTheme('hsl(0 0% 45.1%)', 'hsl(0 0% 63.9%)')};
}
.login-card {
background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(0 0% 9%)')};
border: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')};
border-radius: 8px;
padding: 24px;
}
.login-card dees-form {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 12px; gap: 16px;
} }
.login dees-input-text { .login-card dees-input-text {
width: 100%; width: 100%;
} }
.login dees-form-submit { .login-card dees-form-submit {
margin-top: 4px; margin-top: 8px;
width: 100%; width: 100%;
} }
`, `,
@@ -102,14 +115,19 @@ export class DeesSimpleLogin extends DeesElement {
return html` return html`
<div class="loginContainer"> <div class="loginContainer">
<div class="login"> <div class="login">
<div class="header">Login to ${this.name}</div> <div class="login-header">
<div class="header">Sign in</div>
<div class="subheader">Enter your credentials to access ${this.name}</div>
</div>
<div class="login-card">
<dees-form> <dees-form>
<dees-input-text key="username" label="Username" required></dees-input-text> <dees-input-text key="username" label="Username" required></dees-input-text>
<dees-input-text key="password" label="Password" isPasswordBool required></dees-input-text> <dees-input-text key="password" label="Password" isPasswordBool required></dees-input-text>
<dees-form-submit>Login</dees-form-submit> <dees-form-submit>Sign in</dees-form-submit>
</dees-form> </dees-form>
</div> </div>
</div> </div>
</div>
<div class="slotContainer"> <div class="slotContainer">
<slot></slot> <slot></slot>
</div> </div>

View File

@@ -38,6 +38,9 @@ export class DeesTerminal extends DeesElement {
@property() @property()
accessor environment: {[key: string]: string} = {}; accessor environment: {[key: string]: string} = {};
@property()
accessor background: string = '#000000';
// exposing webcontainer // exposing webcontainer
private webcontainerDeferred = new domtools.plugins.smartpromise.Deferred<webcontainer.WebContainer>(); private webcontainerDeferred = new domtools.plugins.smartpromise.Deferred<webcontainer.WebContainer>();
public webcontainerPromise = this.webcontainerDeferred.promise; public webcontainerPromise = this.webcontainerDeferred.promise;
@@ -58,7 +61,7 @@ export class DeesTerminal extends DeesElement {
css` css`
:host { :host {
padding: 20px; padding: 20px;
background: #000; background: var(--dees-terminal-background, #000000);
position: absolute; position: absolute;
height: 100%; height: 100%;
width: 100%; width: 100%;
@@ -153,7 +156,7 @@ export class DeesTerminal extends DeesElement {
.xterm .composition-view { .xterm .composition-view {
/* TODO: Composition position got messed up somewhere */ /* TODO: Composition position got messed up somewhere */
background: #000; background: var(--dees-terminal-background, #000000);
color: #fff; color: #fff;
display: none; display: none;
position: absolute; position: absolute;
@@ -167,7 +170,7 @@ export class DeesTerminal extends DeesElement {
.xterm .xterm-viewport { .xterm .xterm-viewport {
/* On OS X this is required in order for the scroll bar to appear fully opaque */ /* On OS X this is required in order for the scroll bar to appear fully opaque */
background-color: #000; background-color: var(--dees-terminal-background, #000000);
overflow-y: scroll; overflow-y: scroll;
cursor: default; cursor: default;
position: absolute; position: absolute;
@@ -261,11 +264,18 @@ export class DeesTerminal extends DeesElement {
): Promise<void> { ): Promise<void> {
const domtools = await this.domtoolsPromise; const domtools = await this.domtoolsPromise;
super.firstUpdated(_changedProperties); super.firstUpdated(_changedProperties);
// Sync CSS variable with background property
this.style.setProperty('--dees-terminal-background', this.background);
const container = this.shadowRoot.getElementById('container'); const container = this.shadowRoot.getElementById('container');
const term = new Terminal({ const term = new Terminal({
convertEol: true, convertEol: true,
cursorBlink: true, cursorBlink: true,
theme: {
background: this.background,
},
}); });
this.fitAddon = new FitAddon(); this.fitAddon = new FitAddon();
term.loadAddon(this.fitAddon); term.loadAddon(this.fitAddon);