@mohamedatia/fly-design-system 1.3.2 → 1.3.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mohamedatia/fly-design-system",
3
- "version": "1.3.2",
3
+ "version": "1.3.5",
4
4
  "description": "FlyOS design system — shared components, directives, pipes, services, and models for Business App developers.",
5
5
  "keywords": [
6
6
  "flyos",
@@ -0,0 +1,208 @@
1
+ @use 'vos-button-mixins' as *;
2
+
3
+ // ─── visionOS Button Utility Classes (shared with FlyOS desktop shell) ────────
4
+ // Requires @use 'fly-theme' (or equivalent tokens) before this partial.
5
+
6
+ .vos-btn {
7
+ position: relative;
8
+ display: inline-flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ border: none;
12
+ background: transparent;
13
+ color: var(--label-primary);
14
+ font-family: var(--font-family);
15
+ font-weight: var(--btn-font-weight);
16
+ cursor: pointer;
17
+ white-space: nowrap;
18
+ overflow: clip;
19
+ padding: 0;
20
+ transition: background 0.15s ease, color 0.15s ease;
21
+
22
+ &.sm {
23
+ height: var(--btn-sm-height);
24
+ padding: var(--btn-sm-padding);
25
+ font-size: var(--btn-sm-font-size);
26
+ line-height: var(--btn-sm-line-height);
27
+ gap: var(--btn-sm-gap);
28
+ border-radius: var(--btn-radius-capsule);
29
+
30
+ i, .btn-symbol { font-size: var(--btn-sm-symbol-size); }
31
+ }
32
+
33
+ &.reg {
34
+ height: var(--btn-reg-height);
35
+ padding: var(--btn-reg-padding);
36
+ font-size: var(--btn-reg-font-size);
37
+ line-height: var(--btn-reg-line-height);
38
+ gap: var(--btn-reg-gap);
39
+ border-radius: var(--btn-radius-capsule);
40
+
41
+ i, .btn-symbol { font-size: var(--btn-reg-symbol-size); }
42
+ }
43
+
44
+ &.lg {
45
+ height: var(--btn-lg-height);
46
+ padding: var(--btn-lg-padding);
47
+ font-size: var(--btn-lg-font-size);
48
+ line-height: var(--btn-lg-line-height);
49
+ gap: var(--btn-lg-gap);
50
+ border-radius: var(--btn-radius-capsule);
51
+
52
+ i, .btn-symbol { font-size: var(--btn-lg-symbol-size); }
53
+ }
54
+
55
+ &.rect {
56
+ &.sm { border-radius: var(--btn-radius-rect-sm); }
57
+ &.reg { border-radius: var(--btn-radius-rect-sm); }
58
+ &.lg { border-radius: var(--btn-radius-rect-lg); }
59
+ }
60
+
61
+ &.platter::before {
62
+ @include vos-platter-layers(inherit);
63
+ }
64
+
65
+ &:hover:not(:disabled):not(.selected):not(.active)::before {
66
+ @include vos-platter-layers(inherit);
67
+ }
68
+
69
+ &.selected,
70
+ &.active {
71
+ background: var(--btn-selected-bg);
72
+ color: var(--btn-selected-text);
73
+
74
+ &::before { display: none; }
75
+ }
76
+
77
+ &:disabled, &.disabled {
78
+ cursor: default;
79
+ color: var(--btn-disabled-text);
80
+ pointer-events: none;
81
+
82
+ &::before {
83
+ @include vos-disabled-layers(inherit);
84
+ }
85
+ }
86
+
87
+ &.danger {
88
+ color: var(--system-red);
89
+ }
90
+
91
+ &.primary {
92
+ &.platter::before, &:hover:not(:disabled)::before {
93
+ background: linear-gradient(var(--primary-color), var(--primary-color));
94
+ mix-blend-mode: normal;
95
+ opacity: 0.15;
96
+ }
97
+ &.selected,
98
+ &.active {
99
+ background: var(--primary-color);
100
+ color: #fff;
101
+ }
102
+ }
103
+ }
104
+
105
+ .vos-btn-symbol {
106
+ position: relative;
107
+ display: inline-flex;
108
+ align-items: center;
109
+ justify-content: center;
110
+ border: none;
111
+ background: transparent;
112
+ color: var(--label-primary);
113
+ font-family: var(--font-family);
114
+ font-weight: var(--btn-symbol-font-weight);
115
+ cursor: pointer;
116
+ overflow: clip;
117
+ border-radius: 500px;
118
+ padding: 0;
119
+ transition: background 0.15s ease, color 0.15s ease;
120
+
121
+ &.mini {
122
+ width: var(--btn-symbol-mini);
123
+ height: var(--btn-symbol-mini);
124
+ font-size: var(--btn-symbol-mini-font);
125
+ font-weight: var(--btn-font-weight);
126
+ }
127
+
128
+ &.sm {
129
+ width: var(--btn-symbol-sm);
130
+ height: var(--btn-symbol-sm);
131
+ font-size: var(--btn-symbol-sm-font);
132
+ }
133
+
134
+ &.reg {
135
+ width: var(--btn-symbol-reg);
136
+ height: var(--btn-symbol-reg);
137
+ font-size: var(--btn-symbol-reg-font);
138
+ }
139
+
140
+ &.lg {
141
+ width: var(--btn-symbol-lg);
142
+ height: var(--btn-symbol-lg);
143
+ font-size: var(--btn-symbol-lg-font);
144
+ }
145
+
146
+ &.xl {
147
+ width: var(--btn-symbol-xl);
148
+ height: var(--btn-symbol-xl);
149
+ font-size: var(--btn-symbol-xl-font);
150
+ }
151
+
152
+ &.platter::before {
153
+ @include vos-platter-layers(500px);
154
+ }
155
+
156
+ &:hover:not(:disabled):not(.selected):not(.active)::before {
157
+ @include vos-platter-layers(500px);
158
+ }
159
+
160
+ &.selected,
161
+ &.active {
162
+ background: var(--btn-selected-bg);
163
+ color: var(--btn-selected-text);
164
+
165
+ &::before { display: none; }
166
+ }
167
+
168
+ &:disabled, &.disabled {
169
+ cursor: default;
170
+ color: var(--btn-disabled-text);
171
+ pointer-events: none;
172
+
173
+ &::before {
174
+ @include vos-disabled-layers(500px);
175
+ }
176
+ }
177
+
178
+ &.danger {
179
+ &:hover:not(:disabled) {
180
+ background: rgba(255, 69, 58, 0.15);
181
+ color: var(--system-red);
182
+ }
183
+ }
184
+ }
185
+
186
+ .vos-link {
187
+ display: inline-flex;
188
+ align-items: center;
189
+ justify-content: center;
190
+ height: var(--link-height);
191
+ padding: 0 3px;
192
+ border: none;
193
+ background: transparent;
194
+ color: var(--link-color);
195
+ font-family: var(--font-family);
196
+ font-weight: var(--btn-font-weight);
197
+ font-size: var(--link-font-size);
198
+ cursor: pointer;
199
+ white-space: nowrap;
200
+ text-decoration: none;
201
+ border-radius: var(--btn-radius-capsule);
202
+ transition: background 0.15s ease;
203
+
204
+ &:hover {
205
+ background: rgba(60, 211, 254, 0.1);
206
+ border-radius: var(--btn-radius-rect-sm);
207
+ }
208
+ }
@@ -35,4 +35,23 @@
35
35
  --sidebar-border: rgba(255, 255, 255, 0.08);
36
36
 
37
37
  --focus-ring: rgba(232, 115, 42, 0.6);
38
+
39
+ // Opaque Business App surfaces (mirror light-theme semantic set for embeds).
40
+ --label-primary: var(--text-color);
41
+ --label-secondary: var(--text-color-secondary);
42
+ --label-tertiary: rgba(242, 242, 247, 0.42);
43
+ --separator-primary: rgba(255, 255, 255, 0.14);
44
+ --separator: var(--separator-primary);
45
+ --fill-secondary: rgba(255, 255, 255, 0.1);
46
+ --fill-tertiary: rgba(255, 255, 255, 0.06);
47
+ --material-glass: rgba(28, 28, 30, 0.92);
48
+
49
+ --fly-color-surface: rgba(28, 28, 30, 0.95);
50
+ --fly-color-surface-alt: rgba(38, 38, 42, 0.9);
51
+ --fly-color-border: rgba(255, 255, 255, 0.12);
52
+ --fly-color-text-muted: var(--text-color-secondary);
53
+ --fly-color-primary: var(--primary-color);
54
+ --fly-color-primary-hover: var(--primary-hover);
55
+ --fly-color-danger: var(--system-red);
56
+ --fly-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.35);
38
57
  }
@@ -0,0 +1,28 @@
1
+ // visionOS button pseudo-element layers (used by _business-app-buttons.scss).
2
+ // Kept separate from desktop-app glass mixins so Business Apps only pull button-related SCSS.
3
+
4
+ @mixin vos-platter-layers($radius) {
5
+ content: '';
6
+ position: absolute;
7
+ inset: 0;
8
+ border-radius: $radius;
9
+ pointer-events: none;
10
+ background:
11
+ linear-gradient(var(--btn-platter-lighten), var(--btn-platter-lighten)),
12
+ linear-gradient(var(--btn-platter-dodge), var(--btn-platter-dodge));
13
+ background-blend-mode: lighten, color-dodge;
14
+ mix-blend-mode: screen;
15
+ }
16
+
17
+ @mixin vos-disabled-layers($radius) {
18
+ content: '';
19
+ position: absolute;
20
+ inset: 0;
21
+ border-radius: $radius;
22
+ pointer-events: none;
23
+ background:
24
+ linear-gradient(var(--btn-disabled-lighten), var(--btn-disabled-lighten)),
25
+ linear-gradient(var(--btn-disabled-dodge), var(--btn-disabled-dodge));
26
+ background-blend-mode: lighten, color-dodge;
27
+ mix-blend-mode: screen;
28
+ }