defuss-desktop 0.0.1

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.
@@ -0,0 +1,160 @@
1
+ @use "variables" as *;
2
+
3
+ ul.start {
4
+ font-family: $default-font-family;
5
+ list-style: none;
6
+ height: 100%;
7
+ margin: 0;
8
+ padding-left: 0;
9
+ > li {
10
+ background-color: #518e3a;
11
+ background-image: linear-gradient(
12
+ 180deg,
13
+ rgba(255, 255, 255, 0) 0%,
14
+ rgba(255, 255, 255, 0.2) 22%,
15
+ rgba(255, 255, 255, 0) 72%,
16
+ rgba(255, 255, 255, 0.2) 100%
17
+ );
18
+ display: inline-block;
19
+ width: 140px;
20
+ height: 100%;
21
+ display: flex;
22
+ justify-content: flex-start;
23
+ padding-left: 14px;
24
+ align-items: center;
25
+ position: relative;
26
+ border-top-right-radius: 5px;
27
+ border-bottom-right-radius: 5px;
28
+
29
+ > a {
30
+ color: #fff;
31
+ text-decoration: none;
32
+ pointer-events: none;
33
+ font-size: 26px;
34
+ font-style: italic;
35
+ font-weight: bold;
36
+
37
+ > img {
38
+ vertical-align: middle;
39
+ height: 28px;
40
+ width: 28px;
41
+ margin-right: 5px;
42
+ }
43
+ }
44
+
45
+ &:hover {
46
+ cursor: pointer;
47
+ }
48
+
49
+ &:focus,
50
+ &.open {
51
+ .slide-open {
52
+ display: block;
53
+ transform: translateY(-100%);
54
+ }
55
+ }
56
+ }
57
+ }
58
+
59
+ .slide-open {
60
+ position: absolute;
61
+ cursor: auto;
62
+ top: 0;
63
+ left: 0;
64
+ width: 366px;
65
+ transition: 0.4s ease-in;
66
+ transform: translateY(100%);
67
+ z-index: 1;
68
+ // display: none;
69
+ .top,
70
+ .bottom {
71
+ background-color: $barBlue;
72
+ }
73
+ .top {
74
+ display: flex;
75
+ align-items: center;
76
+ height: 60px;
77
+ width: 100%;
78
+ color: #fff;
79
+ border-top-right-radius: 8px;
80
+ border-top-left-radius: 8px;
81
+ // background: rgb(255, 255, 255);
82
+ background-image: linear-gradient(
83
+ 180deg,
84
+ rgba(255, 255, 255, 1) 0%,
85
+ rgba(255, 255, 255, 0.43) 4%,
86
+ rgba(255, 255, 255, 0) 56%,
87
+ rgba(255, 255, 255, 0.2) 100%
88
+ );
89
+
90
+ h1 {
91
+ font-size: 20px;
92
+ padding-left: 20px;
93
+ }
94
+ }
95
+ .bottom {
96
+ height: 40px;
97
+ width: 100%;
98
+ background-image: linear-gradient(
99
+ 180deg,
100
+ rgba(255, 255, 255, 0) 0%,
101
+ rgba(255, 255, 255, 0.2) 22%,
102
+ rgba(255, 255, 255, 0) 72%,
103
+ rgba(255, 255, 255, 0.2) 100%
104
+ );
105
+ }
106
+ .menu {
107
+ height: 355px;
108
+ background-color: #186ad5;
109
+ display: flex;
110
+ border-right: 2px solid #186ad5;
111
+
112
+ .programs,
113
+ .system {
114
+ padding-top: 8px;
115
+ flex-basis: 50%;
116
+ height: 100%;
117
+ border: 1px solid #b1c2e2;
118
+ border-top: 0;
119
+ border-bottom: 0;
120
+
121
+ ul {
122
+ list-style: none;
123
+ margin: 0;
124
+ padding-left: 8px;
125
+
126
+ $menuItemHeight: 35px;
127
+ li {
128
+ margin-bottom: 8px;
129
+ height: $menuItemHeight;
130
+ padding-left: 38px;
131
+ // padding-top: 8px;
132
+ display: flex;
133
+ align-items: center;
134
+ position: relative;
135
+ }
136
+ img {
137
+ position: absolute;
138
+ left: 0;
139
+ top: 0;
140
+ height: $menuItemHeight;
141
+ width: $menuItemHeight;
142
+ vertical-align: middle;
143
+ margin-right: 6px;
144
+ }
145
+ a {
146
+ color: #000;
147
+ font-family: serif;
148
+ text-decoration: none;
149
+ font-size: 13px;
150
+ }
151
+ }
152
+ }
153
+ .programs {
154
+ background-color: #fff;
155
+ }
156
+ .system {
157
+ background-color: #d2e5fb;
158
+ }
159
+ }
160
+ }
@@ -0,0 +1,60 @@
1
+ /*-------------------------------------------*\
2
+ Tabs
3
+ \*-------------------------------------------*/
4
+
5
+ :root {
6
+ --tab-border: 1px solid #888;
7
+ --tab-bg: var(--surface);
8
+ }
9
+
10
+ [role="tabpanel"] {
11
+ position: relative;
12
+ z-index: 2;
13
+ }
14
+
15
+ menu[role="tablist"] {
16
+ position: relative;
17
+ margin: 0 0 -2px 0;
18
+ text-indent: 0;
19
+ list-style-type: none;
20
+ display: flex;
21
+ padding-left: 3px;
22
+ button {
23
+ border-top-left-radius: 3px;
24
+ border-top-right-radius: 3px;
25
+ z-index: 1;
26
+ display: block;
27
+ color: #222;
28
+ text-decoration: none;
29
+ min-width: unset;
30
+ &[aria-selected="true"] {
31
+ padding-bottom: 2px;
32
+ margin-top: -2px;
33
+ background-color: var(--surface);
34
+ position: relative;
35
+ z-index: 8;
36
+ margin-left: -3px;
37
+ margin-bottom: 1px;
38
+ }
39
+ &:focus {
40
+ outline: 1px dotted #222;
41
+ outline-offset: -4px;
42
+ }
43
+ }
44
+ &.justified {
45
+ button {
46
+ flex-grow: 1;
47
+ text-align: center;
48
+ }
49
+ }
50
+ }
51
+
52
+ [role="tabpanel"] {
53
+ padding: 14px;
54
+ clear: both;
55
+ background: var(--tab-bg);
56
+ border: var(--tab-border);
57
+ position: relative;
58
+ z-index: 2;
59
+ margin-bottom: 9px;
60
+ }
@@ -0,0 +1,162 @@
1
+ @use "variables" as *;
2
+
3
+ .bar {
4
+ position: fixed;
5
+ bottom: 0;
6
+ left: 0;
7
+ height: 30px;
8
+ width: 100%;
9
+ background-color: $barBlue;
10
+ z-index: 2;
11
+ display: flex;
12
+ background-image: linear-gradient(
13
+ 180deg,
14
+ rgba(255, 255, 255, 0.3) 0%,
15
+ rgba(148, 187, 233, 0) 18%
16
+ );
17
+ box-shadow: inset 0px -2px 5px 0px rgba(0, 0, 0, 0.3);
18
+ }
19
+
20
+ $taskbarItemBlue: #1e94f0;
21
+ $taskbarItemBorderDark: #0067ba;
22
+ $taskbarItemBorderLight: #1c87d7;
23
+ $clockBlue: #47b2ea;
24
+
25
+ ul.taskbar {
26
+ margin: 0;
27
+ padding: 3px 0px 3px 10px;
28
+ list-style: none;
29
+ height: 100%;
30
+ display: flex;
31
+ justify-content: flex-start;
32
+ flex-wrap: nowrap;
33
+ flex-grow: 1;
34
+
35
+ li {
36
+ height: 100%;
37
+ flex: 0 1 146px;
38
+ margin: 0px 1px 0px 0px;
39
+ background-color: $taskbarItemBlue;
40
+ border: 1px solid $taskbarItemBorderLight;
41
+ border-top-color: $taskbarItemBorderDark;
42
+ border-bottom-color: $taskbarItemBorderDark;
43
+ border-right-color: $taskbarItemBorderDark;
44
+ padding: 3px 10px;
45
+ border-radius: 4px;
46
+ // white glow in top left corner
47
+ background-image: linear-gradient(
48
+ 157deg,
49
+ rgba(255, 255, 255, 0.4) 0%,
50
+ rgba(148, 187, 233, 0) 18%
51
+ );
52
+ // Tiny inset box shadow on the bottom
53
+ box-shadow: inset 0px -1px 0px 0px rgba(0, 0, 0, 0.05);
54
+
55
+ &.active {
56
+ background-color: #0063b6;
57
+ border-color: #004d9a;
58
+ background-image: none;
59
+ box-shadow: inset 2px 2px 0px 0px rgba(0, 0, 0, 0.2);
60
+ }
61
+ }
62
+ .cell {
63
+ height: 100%;
64
+ display: flex;
65
+ align-items: center;
66
+ img {
67
+ width: 18px;
68
+ max-height: 100%;
69
+ margin-right: 4px;
70
+ }
71
+ .cell-name {
72
+ display: block;
73
+ white-space: nowrap;
74
+ overflow: hidden;
75
+ text-overflow: ellipsis;
76
+ color: #fff;
77
+ font-size: 13px;
78
+ }
79
+ }
80
+ }
81
+
82
+ .taskbar__clock {
83
+ background-color: $clockBlue;
84
+ color: #fff;
85
+ display: flex;
86
+ align-items: center;
87
+ padding: 0 15px 0 22px;
88
+ background-image: linear-gradient(
89
+ 180deg,
90
+ rgba(255, 255, 255, 0.3) 0%,
91
+ rgba(148, 187, 233, 0) 18%
92
+ );
93
+ box-shadow: inset 0px -2px 5px 0px rgba(0, 0, 0, 0.3);
94
+
95
+ span {
96
+ width: 60px; // so the container width doesn't change when the time changes
97
+ font-size: 14px;
98
+ }
99
+ }
100
+
101
+ .tray-toggle {
102
+ position: relative;
103
+ display: flex;
104
+ justify-content: center;
105
+ align-items: center;
106
+ width: 21px;
107
+ height: 21px;
108
+ margin-right: -11px;
109
+ margin-top: 4.5px;
110
+ border-radius: 50%;
111
+ background-image: radial-gradient(
112
+ ellipse 75% 70% at 15% 15%,
113
+ #c3e5f9 0%,
114
+ #0d98e8 90%
115
+ );
116
+
117
+ &::before {
118
+ content: "";
119
+ position: absolute;
120
+ top: 0;
121
+ left: 0;
122
+ right: 0;
123
+ bottom: 0;
124
+ border-radius: 50%;
125
+ padding: 1.25px;
126
+ background: linear-gradient(to bottom right, #10225ecc 20%, #ced6e6cc 80%);
127
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
128
+ mask-composite: exclude;
129
+ }
130
+
131
+ .arrow {
132
+ width: 0;
133
+ height: 0;
134
+ border-left: 4px solid transparent;
135
+ border-right: 4px solid transparent;
136
+ border-top: 4px solid white;
137
+ filter: drop-shadow(0 0 4px #077eed);
138
+ z-index: 1;
139
+ transform: rotate(90deg);
140
+ margin-right: 2px;
141
+ }
142
+
143
+ &:hover {
144
+ background-image: radial-gradient(
145
+ ellipse 75% 70% at 15% 15%,
146
+ #e1f1fa 0%,
147
+ #41b0f1 90%
148
+ );
149
+ }
150
+
151
+ &:active,
152
+ &.active {
153
+ background-image: radial-gradient(
154
+ ellipse 60% 60% at 10% 10%,
155
+ #90d7f9 0%,
156
+ #1a7bea 90%
157
+ );
158
+ .arrow {
159
+ border-top-color: #6dcaf8;
160
+ }
161
+ }
162
+ }
@@ -0,0 +1,91 @@
1
+ /*-------------------------------------------*\
2
+ Tree View
3
+ \*-------------------------------------------*/
4
+
5
+ ul.tree-view {
6
+ font-family: var(--sans-serif);
7
+ font-size: 11px;
8
+ display: block;
9
+ background: var(--button-highlight);
10
+ padding: 6px;
11
+ margin: 0;
12
+ li {
13
+ list-style-type: none;
14
+ margin-top: 3px;
15
+ }
16
+ a {
17
+ text-decoration: none;
18
+ color: #000;
19
+ &:focus {
20
+ background-color: var(--dialog-blue);
21
+ color: var(--button-highlight);
22
+ }
23
+ }
24
+ ul {
25
+ margin-top: 3px;
26
+ margin-left: 16px;
27
+ padding-left: 16px;
28
+ border-left: 1px dotted #808080;
29
+ > li {
30
+ position: relative;
31
+ &::before {
32
+ content: "";
33
+ display: block;
34
+ position: absolute;
35
+ left: -16px;
36
+ top: 6px;
37
+ width: 12px;
38
+ border-bottom: 1px dotted #808080;
39
+ }
40
+ &:last-child {
41
+ &::after {
42
+ content: "";
43
+ display: block;
44
+ position: absolute;
45
+ left: -20px;
46
+ top: 7px;
47
+ bottom: 0px;
48
+ width: 8px;
49
+ background: var(--button-highlight);
50
+ }
51
+ }
52
+ }
53
+ details {
54
+ > summary {
55
+ &:before {
56
+ margin-left: -22px;
57
+ position: relative;
58
+ z-index: 1;
59
+ }
60
+ }
61
+ }
62
+ }
63
+ details {
64
+ margin-top: 0;
65
+ > summary {
66
+ &:before {
67
+ text-align: center;
68
+ display: block;
69
+ float: left;
70
+ content: "+";
71
+ border: 1px solid #808080;
72
+ width: 8px;
73
+ height: 9px;
74
+ line-height: 9px;
75
+ margin-right: 5px;
76
+ padding-left: 1px;
77
+ background-color: #fff;
78
+ }
79
+ }
80
+ }
81
+ details[open] {
82
+ summary {
83
+ margin-bottom: 0;
84
+ }
85
+ > summary {
86
+ &:before {
87
+ content: "-";
88
+ }
89
+ }
90
+ }
91
+ }
@@ -0,0 +1,85 @@
1
+ /*-------------------------------------------*\
2
+ Variables
3
+ \*-------------------------------------------*/
4
+
5
+ // SCSS Variables (available at compile time)
6
+ $icon-base-path: "/icons/";
7
+
8
+ // Default font paths
9
+ $font-base-path: "/fonts/";
10
+
11
+ // SCSS Variables
12
+ $primary-bg: #000;
13
+
14
+ // Default cursor paths
15
+ $cursor-base-path: "/cursors/";
16
+
17
+ // Default font stack with custom fonts
18
+ $default-font-family: 'Tahoma', Geneva, Verdana, sans-serif;
19
+ $default-font-size: 16px;
20
+
21
+ // Font utility variables
22
+ $font-families: (
23
+ 'default': $default-font-family,
24
+ 'system': (system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif)
25
+ );
26
+
27
+ $menuHoverBlue: #1c79c3;
28
+ $barBlue: #0075e1;
29
+
30
+ :root {
31
+ --sans-serif: "Pixelated MS Sans Serif", Arial;
32
+ --tahoma: "Tahoma", sans-serif;
33
+ --font-size: 16px;
34
+
35
+ /* Color */
36
+ --surface: lightblue;
37
+ --button-highlight: #ffffff;
38
+ --button-face: #dfdfdf;
39
+ --button-shadow: #808080;
40
+ --window-frame: #0a0a0a;
41
+ --dialog-blue: #000080;
42
+ --dialog-blue-light: #1084d0;
43
+ --link-blue: #0000ff;
44
+
45
+ /* Spacing */
46
+ --element-spacing: 8px;
47
+ --grouped-button-spacing: 4px;
48
+ --grouped-element-spacing: 6px;
49
+ --radio-width: 12px;
50
+ --checkbox-width: 13px;
51
+ --radio-label-spacing: 6px;
52
+ --range-track-height: 4px;
53
+ --range-spacing: 10px;
54
+
55
+ /* Some detailed computations for radio buttons and checkboxes */
56
+ --radio-total-width-precalc: var(--radio-width) + var(--radio-label-spacing);
57
+ --radio-total-width: calc(var(--radio-total-width-precalc));
58
+ --radio-left: calc(-1 * var(--radio-total-width-precalc));
59
+ --radio-dot-width: 4px;
60
+ --radio-dot-top: calc(var(--radio-width) / 2 - var(--radio-dot-width) / 2);
61
+ --radio-dot-left: calc(
62
+ -1 * (var(--radio-total-width-precalc)) + var(--radio-width) / 2 - var(--radio-dot-width) / 2
63
+ );
64
+ --checkbox-total-width-precalc: var(--checkbox-width) + var(--radio-label-spacing);
65
+ --checkbox-total-width: calc(var(--checkbox-total-width-precalc));
66
+ --checkbox-left: calc(-1 * var(--checkbox-total-width-precalc));
67
+ --checkmark-width: 7px;
68
+ --checkmark-top: 3px;
69
+ --checkmark-left: 3px;
70
+
71
+ /* Borders */
72
+ --border-width: 1px;
73
+ --border-raised-outer: inset -1px -1px var(--window-frame), inset 1px 1px var(--button-highlight);
74
+ --border-raised-inner: inset -2px -2px var(--button-shadow), inset 2px 2px var(--button-face);
75
+ --border-sunken-outer: inset -1px -1px var(--button-highlight), inset 1px 1px var(--window-frame);
76
+ --border-sunken-inner: inset -2px -2px var(--button-face), inset 2px 2px var(--button-shadow);
77
+
78
+ /* Window borders flip button-face and button-highlight */
79
+ --border-window-outer: inset -1px -1px var(--window-frame), inset 1px 1px var(--button-face);
80
+ --border-window-inner: inset -2px -2px var(--button-shadow), inset 2px 2px var(--button-highlight);
81
+ --border-field: inset -1px -1px var(--button-highlight), inset 1px 1px var(--button-shadow),
82
+ inset -2px -2px var(--button-face), inset 2px 2px var(--window-frame);
83
+
84
+ --border-status-bar-field: inset -1px -1px var(--button-face), inset 1px 1px var(--button-shadow);
85
+ }
@@ -0,0 +1,75 @@
1
+ /*-------------------------------------------*\
2
+ Window
3
+ \*-------------------------------------------*/
4
+
5
+ :root {
6
+ --title-bar-bg: black;
7
+ }
8
+ .window {
9
+ position: absolute;
10
+ font-size: 11px;
11
+ box-shadow: var(--border-window-outer), var(--border-window-inner);
12
+ background: var(--surface);
13
+ padding: 3px;
14
+ fieldset {
15
+ margin-bottom: 9px;
16
+ }
17
+ }
18
+ .title-bar {
19
+ font-size: 11px;
20
+ font-family: var(--sans-serif);
21
+ background: var(--title-bar-bg);
22
+ padding: 3px 2px 3px 3px;
23
+ display: flex;
24
+ justify-content: space-between;
25
+ align-items: center;
26
+ }
27
+
28
+ .title-bar-text {
29
+ font-weight: bold;
30
+ color: white;
31
+ letter-spacing: 0;
32
+ margin-right: 24px;
33
+ }
34
+
35
+
36
+ .title-bar-controls {
37
+ display: flex;
38
+ button {
39
+ padding: 0;
40
+ display: block;
41
+ min-width: 16px;
42
+ min-height: 14px;
43
+ &:focus {
44
+ outline: none;
45
+ }
46
+ }
47
+ button[aria-label="Minimize"] {
48
+ }
49
+ button[aria-label="Maximize"] {
50
+ }
51
+ button[aria-label="Help"] {
52
+ }
53
+ button[aria-label="Close"] {
54
+ }
55
+ }
56
+ .window-body {
57
+ font-size: var(--font-size);
58
+ margin: var(--element-spacing);
59
+ pre {
60
+ margin: -8px;
61
+ }
62
+ }
63
+
64
+ .status-bar {
65
+ margin: 0px 1px;
66
+ display: flex;
67
+ gap: 1px;
68
+ }
69
+
70
+ .status-bar-field {
71
+ box-shadow: var(--border-status-bar-field);
72
+ flex-grow: 1;
73
+ padding: 2px 3px;
74
+ margin: 0;
75
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * GUI.css
3
+ * Copyright (c) 2025 Aron Homberg <info@aron-homberg.de>
4
+ * Copyright (c) 2020 Adam Hammad <adamham.dev>
5
+ * Based on 98.css by Jordan Scales <thatjdanisso.cool>
6
+ * https://github.com/botoxparty/XP.css/blob/main/LICENSE
7
+ */
8
+
9
+ @forward "_variables.scss";
10
+ @forward "_fonts.scss";
11
+ @forward "_global.scss";
12
+ @forward "_buttons.scss";
13
+ @forward "_forms.scss";
14
+ @forward "_window.scss";
15
+ @forward "_treeview.scss";
16
+ @forward "_groupbox.scss";
17
+ @forward "_tabs.scss";
18
+ @forward "_desktop.scss";
19
+ @forward "_logon.scss";
20
+ @forward "_taskbar.scss";
21
+ @forward "_startmenu.scss";
22
+ @forward "_crt.scss";