@fest-lib/fl-ui 0.1.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.
Files changed (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/assets/OPFS.uniform.worker-Ddx6J_37.js +2982 -0
  4. package/dist/fl-ui.js +16004 -0
  5. package/dist/font-registry-BWosB92f.js +271 -0
  6. package/package.json +104 -0
  7. package/src/styles/font-loader.ts +224 -0
  8. package/src/styles/font-registry.ts +275 -0
  9. package/src/styles/fonts/_index.scss +8 -0
  10. package/src/styles/fonts/_inter.scss +171 -0
  11. package/src/styles/index.scss +2 -0
  12. package/src/styles/index.ts +33 -0
  13. package/src/styles/layers.scss +1 -0
  14. package/src/styles/patch-global-native-controls.scss +13 -0
  15. package/src/styles/scripts/encode-fonts.ts +172 -0
  16. package/src/styles/skins/thin/Thin.ts +13 -0
  17. package/src/styles/ui/_bar.scss +271 -0
  18. package/src/styles/ui/_buttons.scss +215 -0
  19. package/src/styles/ui/_color.scss +3 -0
  20. package/src/styles/ui/_colorize.scss +5 -0
  21. package/src/styles/ui/_content.scss +169 -0
  22. package/src/styles/ui/_essentials-options.scss +2 -0
  23. package/src/styles/ui/_essentials.scss +705 -0
  24. package/src/styles/ui/_explorer-content.scss +362 -0
  25. package/src/styles/ui/_explorer.scss +237 -0
  26. package/src/styles/ui/_forms-bare-host-elements.scss +25 -0
  27. package/src/styles/ui/_forms-options.scss +2 -0
  28. package/src/styles/ui/_forms.scss +280 -0
  29. package/src/styles/ui/_forms_misc.scss +201 -0
  30. package/src/styles/ui/_gridbox.scss +298 -0
  31. package/src/styles/ui/_home-host.scss +179 -0
  32. package/src/styles/ui/_index.scss +22 -0
  33. package/src/styles/ui/_launcher-typography.scss +31 -0
  34. package/src/styles/ui/_layers.scss +48 -0
  35. package/src/styles/ui/_layout.scss +3 -0
  36. package/src/styles/ui/_markdown.scss +1636 -0
  37. package/src/styles/ui/_modal.scss +258 -0
  38. package/src/styles/ui/_motion.scss +3 -0
  39. package/src/styles/ui/_native-host-button-chrome.scss +31 -0
  40. package/src/styles/ui/_orientation-functions.scss +274 -0
  41. package/src/styles/ui/_orientbox.scss +97 -0
  42. package/src/styles/ui/_scrollbar.scss +257 -0
  43. package/src/styles/ui/_shared-overlays.scss +16 -0
  44. package/src/styles/ui/_sidebar.scss +477 -0
  45. package/src/styles/ui/_speed-dial.scss +47 -0
  46. package/src/styles/ui/_tables.scss +28 -0
  47. package/src/styles/ui/_tabs.scss +406 -0
  48. package/src/styles/ui/_taskbar.scss +215 -0
  49. package/src/styles/ui/_toolbars.scss +165 -0
  50. package/src/styles/ui/_typography.scss +11 -0
  51. package/src/styles/ui/_utils.scss +8 -0
  52. package/src/styles/ui/_variables.scss +45 -0
  53. package/src/styles/ui/_viewport.scss +469 -0
  54. package/src/styles/ui/_window-frame.scss +658 -0
  55. package/src/styles/ui/home-host-apply.scss +10 -0
@@ -0,0 +1,658 @@
1
+ // Window Frame component mixins - veela-independent fallbacks
2
+
3
+ @use "../misc/layout" as l;
4
+ @use "../misc/utils" as utils;
5
+
6
+ // default styles
7
+ @mixin reset-styles {
8
+ & { all: unset; }
9
+
10
+ & {
11
+ box-sizing: border-box;
12
+ margin: 0px;
13
+ padding: 0px;
14
+ border: 0px;
15
+ }
16
+
17
+ & {
18
+ font-size: 100%;
19
+ font-weight: 400;
20
+ font-family: inherit;
21
+ }
22
+
23
+ & {
24
+ color: inherit;
25
+ background-color: transparent;
26
+ }
27
+
28
+ & {
29
+ text-align: start;
30
+ text-decoration: none;
31
+ text-transform: none;
32
+ letter-spacing: normal;
33
+ line-height: normal;
34
+ white-space: normal;
35
+ word-break: normal;
36
+ word-wrap: normal;
37
+ overflow-wrap: normal;
38
+ overflow-wrap: break-word;
39
+ }
40
+
41
+ & {
42
+ user-select: none;
43
+ cursor: default;
44
+ pointer-events: none;
45
+ }
46
+
47
+ & {
48
+ contain: none;
49
+ container-type: normal;
50
+ }
51
+
52
+ & {
53
+ vertical-align: baseline;
54
+ }
55
+ }
56
+
57
+ // variables
58
+ @mixin window-frame-variables {
59
+ --ui-window-frame-shadow: 0 4px 12px rgb(0 0 0 / 0.15), 0 1px 3px rgb(0 0 0 / 0.1);
60
+ --ui-window-frame-outline: #{"oklch(from --c2-on-surface(0.0, var(--current)) l c h / 0.1)"};
61
+ --ui-window-frame-surface: #{"oklch(from --c2-surface(0.1, var(--current)) l c h / 1)"};
62
+ --ui-window-frame-border-radius: 0.5rem;
63
+ --ui-window-frame-border-width: 0px;
64
+ --ui-window-frame-border-color: --c2-on-surface(0.0, var(--current));
65
+ --ui-window-frame-padding: 0px;
66
+ --ui-window-frame-margin: 0px;
67
+ --ui-window-frame-height: 100%;
68
+ --ui-window-frame-on-surface: #{"oklch(from --c2-on-surface(0.0, var(--current)) l c h / 1)"};
69
+ --ui-window-frame-on-surface-secondary: --c2-on-surface(0.0, var(--secondary));
70
+ --ui-window-frame-on-surface-tertiary: --c2-on-surface(0.0, var(--tertiary));
71
+ --ui-window-frame-on-surface-quaternary: --c2-on-surface(0.0, var(--quaternary));
72
+ --ui-window-frame-on-surface-quinary: --c2-on-surface(0.0, var(--quinary));
73
+ --ui-window-frame-titlebar-height: 32px;
74
+ --ui-window-frame-titlebar-padding: 0px;
75
+ --ui-window-frame-titlebar-margin: 0px;
76
+ --ui-window-frame-content-border-radius: 0.5rem;
77
+ --ui-window-frame-content-border-width: 1px;
78
+ --ui-window-frame-content-border-color: --c2-on-surface(0.0, var(--current));
79
+ --ui-window-frame-content-background-color: --c2-surface(0.0, var(--current));
80
+ --ui-window-frame-content-color: --c2-on-surface(0.0, var(--current));
81
+ --ui-window-frame-content-padding: 0px;
82
+ --ui-window-frame-content-margin: 0.125rem;
83
+ --ui-window-frame-control-hover-bg: --c2-surface(0.1, var(--current));
84
+ --ui-window-frame-control-active-bg: --c2-surface(0.1, var(--current));
85
+ --ui-window-frame-control-close-hover-bg: --c2-on-surface(0.0, var(--secondary));
86
+ --ui-window-frame-control-close-hover-color: --c2-surface(0.0, var(--secondary));
87
+ }
88
+
89
+ // layout
90
+ @mixin window-frame-layout {
91
+ @include l.border-radius(var(--ui-window-frame-border-radius));
92
+ @include l.border(var(--ui-window-frame-border-width), solid, var(--ui-window-frame-border-color));
93
+ @include l.container-layout(ui-window-frame, strict);
94
+ @include l.grid();
95
+ @include l.place('center', 'center');
96
+
97
+ //
98
+ & {
99
+ background-color: var(--ui-window-frame-surface);
100
+ color: var(--ui-window-frame-on-surface);
101
+ --icon-color: var(--ui-window-frame-on-surface);
102
+ opacity: var(--opacity, 1);
103
+ }
104
+
105
+ & {
106
+ padding: var(--ui-window-frame-padding);
107
+ margin: var(--ui-window-frame-margin);
108
+ }
109
+
110
+ & {
111
+ inline-size: stretch;
112
+ inline-size: var(--ui-window-frame-width, stretch);
113
+ block-size: var(--ui-window-frame-height, stretch);
114
+ }
115
+
116
+ & {
117
+ position: fixed;
118
+ }
119
+
120
+ & {
121
+ gap: 0px;
122
+ grid-template-areas: "titlebar" "content";
123
+ grid-column: 1 / -1;
124
+ grid-row: 1 / -1;
125
+ }
126
+
127
+ & {
128
+ pointer-events: auto;
129
+ }
130
+
131
+ & {
132
+ transform-origin: 50% 50%;
133
+ transform-style: flat;
134
+ transform-box: fill-box;
135
+ transform:
136
+ scale3d(var(--scale, 1), var(--scale, 1), var(--scale, 1))
137
+ translate3d(calc(var(--drag-x, 0) * 1px), calc(var(--drag-y, 0) * 1px), 0px);
138
+ }
139
+
140
+ & { /* z-index: 1 + sibling index */
141
+ --z-index-order: var(--order, sibling-index()); /* z-index: 1 + custom order (order property) */
142
+ --z-index: var(--z-index-order, sibling-index());
143
+ z-index: calc(99 + var(--z-index, 0)) !important;
144
+ }
145
+ }
146
+
147
+ // content
148
+ @mixin content-styles {
149
+ @include l.container-layout(ui-content, strict);
150
+ @include l.border-radius(var(--ui-window-frame-content-border-radius));
151
+ @include l.border(0px, solid, transparent);
152
+
153
+ // grid-specific styles
154
+ & { grid-area: content; display: flex; flex-direction: column; gap: 0.5rem; place-content: stretch; place-items: stretch; }
155
+ & {
156
+ border-block-start: none;
157
+ }
158
+
159
+ & {
160
+ display: grid;
161
+ grid-template-columns: minmax(0px, 1fr);
162
+ grid-template-rows: minmax(0px, 1fr);
163
+ }
164
+
165
+ //
166
+ & {
167
+ padding: var(--ui-window-frame-content-padding);
168
+ margin: var(--ui-window-frame-content-margin, 0.125rem);
169
+ }
170
+
171
+ & {
172
+ overflow: hidden;
173
+ inline-size: stretch;
174
+ block-size: stretch;
175
+ }
176
+
177
+ & {
178
+ background-color: transparent;
179
+ color: var(--ui-window-frame-content-color);
180
+ --icon-color: var(--ui-window-frame-content-color);
181
+ }
182
+
183
+ &::slotted(*) {
184
+ grid-column: 1 / -1;
185
+ grid-row: 1 / -1;
186
+ inline-size: stretch;
187
+ block-size: stretch;
188
+ }
189
+
190
+ & > *:not(slot) {
191
+ grid-column: 1 / -1;
192
+ grid-row: 1 / -1;
193
+ inline-size: stretch;
194
+ block-size: stretch;
195
+ }
196
+ }
197
+
198
+ // resize handle
199
+ @mixin resize-handle-styles {
200
+ & {
201
+ inline-size: 12px;
202
+ block-size: 12px;
203
+ }
204
+
205
+ & {
206
+ cursor: nwse-resize;
207
+ pointer-events: auto !important;
208
+ }
209
+
210
+ & {
211
+ position: absolute !important;
212
+ inset: auto !important;
213
+ inset-inline-end: 0px !important;
214
+ inset-block-end: 0px !important;
215
+ }
216
+
217
+ & {
218
+ border-radius: 50%;
219
+ border-end-start-radius: 0.15rem;
220
+ border-start-end-radius: 0.15rem;
221
+ border-width: 0px;
222
+ border-style: solid;
223
+ border-color: transparent;
224
+ }
225
+
226
+ & {
227
+ color: transparent;
228
+ background-color: var(--ui-window-frame-on-surface);
229
+ opacity: 0.1;
230
+ }
231
+
232
+ @include utils.when-hover { opacity: 0.2; }
233
+ @include utils.when-active { opacity: 0.2; }
234
+ @include utils.when-focus-visible { opacity: 0.2; }
235
+ }
236
+
237
+ // titlebar
238
+ @mixin titlebar-layout {
239
+ @include l.container-layout(ui-titlebar, strict);
240
+ @include l.display('flex', 'row', 'space-between', 'center');
241
+
242
+ //
243
+ & {
244
+ inline-size: stretch;
245
+ block-size: stretch;
246
+ max-block-size: 2rem;
247
+ }
248
+
249
+ //
250
+ & {
251
+ gap: 0px;
252
+ pointer-events: auto;
253
+ background-color: transparent;
254
+ }
255
+ }
256
+
257
+ // titlebar handle
258
+ @mixin titlebar-handle-styles {
259
+ @include l.flex(row, flex-start, center);
260
+ @include l.container-layout(ui-titlebar-handle, strict);
261
+
262
+ & {
263
+ pointer-events: auto !important;
264
+ }
265
+
266
+ & {
267
+ inline-size: stretch;
268
+ block-size: stretch;
269
+ min-inline-size: 0px;
270
+ }
271
+
272
+ & {
273
+ color: var(--ui-window-frame-on-surface);
274
+ }
275
+
276
+ & {
277
+ padding-inline-start: 12px;
278
+ padding-inline-end: 12px;
279
+ }
280
+
281
+ & {
282
+ flex: 1 1 0px;
283
+ gap: 8px;
284
+ flex-basis: stretch;
285
+ }
286
+ }
287
+
288
+ // title text
289
+ @mixin title-text-styles {
290
+ @include l.text(var(--font-size-lg), 500, var(--ui-window-frame-titlebar-color));
291
+ @include l.flex(column, flex-start, center);
292
+ @include l.text-ellipsis();
293
+
294
+ & {
295
+ place-content: center;
296
+ place-items: center;
297
+ justify-content: center;
298
+ align-items: flex-start;
299
+ }
300
+
301
+ & {
302
+ inline-size: stretch;
303
+ block-size: stretch;
304
+ }
305
+
306
+ & {
307
+ gap: 0px;
308
+ pointer-events: none;
309
+ flex: 1 1 0px;
310
+ min-inline-size: 0px;
311
+ }
312
+ }
313
+
314
+ // subtitle text
315
+ @mixin subtitle-text-styles {
316
+ @include l.flex(row, flex-start, center);
317
+ @include l.text-ellipsis();
318
+ @include l.text(var(--font-size-sm), 400, #{"--c2-on-surface(0.0, var(--current))"});
319
+
320
+ & {
321
+ inline-size: fit-content;
322
+ block-size: stretch;
323
+ }
324
+
325
+ & {
326
+ gap: 0px;
327
+ flex-basis: max-content;
328
+ flex-shrink: 0;
329
+ place-content: center;
330
+ place-items: center;
331
+ }
332
+
333
+ & {
334
+ padding: 0px;
335
+ }
336
+
337
+ & {
338
+ opacity: 0.5;
339
+ }
340
+
341
+ & {
342
+ pointer-events: none;
343
+ }
344
+ }
345
+
346
+ // app icon
347
+ @mixin app-icon-styles {
348
+ @include l.flex(row, center, center);
349
+
350
+ & {
351
+ inline-size: fit-content;
352
+ block-size: stretch;
353
+ min-inline-size: 1rem;
354
+ }
355
+
356
+ & {
357
+ flex-basis: max-content;
358
+ place-content: center;
359
+ place-items: center;
360
+ }
361
+
362
+ & {
363
+ color: --c2-on-surface(0.0, var(--current));
364
+ --icon-color: --c2-on-surface(0.0, var(--current));
365
+ }
366
+
367
+ & {
368
+ padding: 0px;
369
+ margin: 0px;
370
+ }
371
+
372
+ & {
373
+ pointer-events: none;
374
+ }
375
+
376
+ ui-icon { // icon styles
377
+ & {
378
+ block-size: stretch;
379
+ inline-size: auto;
380
+ aspect-ratio: 1 / 1;
381
+ }
382
+
383
+ & {
384
+ color: inherit;
385
+ --icon-color: currentColor;
386
+ background-color: transparent;
387
+ }
388
+
389
+ & {
390
+ border: none;
391
+ outline: none;
392
+ padding: 0px;
393
+ margin: 0px;
394
+ margin-block: 0.5rem;
395
+ }
396
+ }
397
+ }
398
+
399
+ // controls
400
+ @mixin controls-layout {
401
+ @include l.flex(row, flex-end, center);
402
+
403
+ & {
404
+ flex-shrink: 0;
405
+ flex-basis: max-content;
406
+ }
407
+
408
+ & {
409
+ block-size: stretch;
410
+ inline-size: fit-content;
411
+ max-block-size: 2rem;
412
+ }
413
+
414
+ & {
415
+ padding: 0px;
416
+ gap: 0px;
417
+ }
418
+
419
+ & {
420
+ pointer-events: none;
421
+ }
422
+
423
+ ui-icon {
424
+ & {
425
+ inline-size: auto;
426
+ block-size: stretch;
427
+ aspect-ratio: 1 / 1;
428
+ }
429
+
430
+ & {
431
+ color: var(--ui-window-frame-on-surface);
432
+ background-color: transparent;
433
+ }
434
+
435
+ & {
436
+ outline: none;
437
+ border: none;
438
+ padding: 0px;
439
+ margin: 0px;
440
+ }
441
+ }
442
+ }
443
+
444
+ // control button base
445
+ @mixin control-button-base {
446
+ & {
447
+ block-size: stretch;
448
+ inline-size: auto;
449
+ aspect-ratio: 1 / 1;
450
+ }
451
+
452
+ & {
453
+ display: flex;
454
+ place-content: center;
455
+ place-items: center;
456
+ flex-shrink: 0;
457
+ }
458
+
459
+ & {
460
+ color: var(--ui-window-frame-on-surface);
461
+ --window-frame-control-fg: var(--ui-window-frame-on-surface);
462
+ --window-frame-control-bg: --c2-surface(0.1, var(--current));
463
+ --icon-color: var(--window-frame-control-fg);
464
+ background-color: var(--window-frame-control-bg);
465
+ outline: none;
466
+ }
467
+
468
+ & {
469
+ margin: 0.25rem;
470
+ padding: 0.25rem;
471
+ gap: 0px;
472
+ }
473
+
474
+ & {
475
+ border: none;
476
+ border-radius: 50%;
477
+ }
478
+
479
+ & { pointer-events: auto; }
480
+ @include utils.when-hover { --window-frame-control-bg: --c2-surface(0.15, var(--current)); }
481
+ @include utils.when-active { --window-frame-control-bg: --c2-surface(0.15, var(--current)); }
482
+ @include utils.when-focus-visible { --window-frame-control-bg: --c2-surface(0.15, var(--current)); }
483
+ }
484
+
485
+ // close button
486
+ @mixin close-button-styles {
487
+ & {
488
+ --window-frame-close-bg: --c2-on-surface(-0.05, var(--current));
489
+ --window-frame-close-fg: --c2-surface(0.0, var(--current));
490
+
491
+ background-color: var(--window-frame-close-bg);
492
+ color: var(--window-frame-close-fg);
493
+
494
+ ui-icon { --icon-color: var(--window-frame-close-fg); }
495
+ }
496
+
497
+ //
498
+ @include utils.when-hover { --window-frame-close-bg: --c2-on-surface(-0.1, var(--current)); }
499
+ @include utils.when-active { --window-frame-close-bg: --c2-on-surface(-0.1, var(--current)); }
500
+ @include utils.when-focus-visible { --window-frame-close-bg: --c2-on-surface(-0.1, var(--current)); }
501
+ }
502
+
503
+
504
+ @mixin window-frame-variables {
505
+ // Window frame CSS custom properties — prefer veela/MD tokens over raw hex
506
+ --ui-window-frame-bg: var(--fl-surface, var(--color-surface, --u2-color-mod(var(--base-color, #5a7fff), 40)));
507
+ --ui-window-frame-color: var(--fl-on-surface, var(--color-on-surface, --u2-color-mod(var(--base-color, #5a7fff), 900)));
508
+ --ui-window-frame-border-radius: var(--fl-radius-lg, 0.85rem);
509
+ --ui-window-frame-shadow: var(--fl-shadow-xl, 0 20px 25px rgba(0, 0, 0, 0.1));
510
+ --ui-window-frame-titlebar-height: 2.5rem;
511
+ --ui-window-frame-resize-handle-size: 8px;
512
+ --ui-window-frame-min-width: 200px;
513
+ --ui-window-frame-min-height: 150px;
514
+ }
515
+
516
+ @mixin window-frame-layout {
517
+ display: grid;
518
+ grid-template-rows: var(--ui-window-frame-titlebar-height) 1fr;
519
+ grid-template-columns: 1fr;
520
+ position: fixed;
521
+ inline-size: var(--ui-window-frame-width, 400px);
522
+ block-size: var(--ui-window-frame-height, 300px);
523
+ min-inline-size: var(--ui-window-frame-min-width);
524
+ min-block-size: var(--ui-window-frame-min-height);
525
+ background-color: var(--ui-window-frame-bg);
526
+ color: var(--ui-window-frame-color);
527
+ border-radius: var(--ui-window-frame-border-radius);
528
+ box-shadow: var(--ui-window-frame-shadow);
529
+ overflow: hidden;
530
+ contain: layout paint style;
531
+ }
532
+
533
+ @mixin content-styles {
534
+ position: relative;
535
+ overflow: auto;
536
+ pointer-events: auto;
537
+ }
538
+
539
+ @mixin resize-handle-styles {
540
+ position: absolute;
541
+ pointer-events: auto;
542
+ z-index: 10;
543
+
544
+ &[data-edge="e"], &[data-edge="w"] {
545
+ cursor: ew-resize;
546
+ inline-size: var(--ui-window-frame-resize-handle-size);
547
+ block-size: 100%;
548
+ }
549
+
550
+ &[data-edge="n"], &[data-edge="s"] {
551
+ cursor: ns-resize;
552
+ inline-size: 100%;
553
+ block-size: var(--ui-window-frame-resize-handle-size);
554
+ }
555
+
556
+ &[data-edge="ne"], &[data-edge="sw"] {
557
+ cursor: nesw-resize;
558
+ }
559
+
560
+ &[data-edge="nw"], &[data-edge="se"] {
561
+ cursor: nwse-resize;
562
+ }
563
+ }
564
+
565
+ @mixin titlebar-layout {
566
+ display: flex;
567
+ align-items: center;
568
+ justify-content: space-between;
569
+ padding-inline: 0.75rem;
570
+ gap: 0.5rem;
571
+ pointer-events: auto;
572
+ }
573
+
574
+ @mixin titlebar-handle-styles {
575
+ display: flex;
576
+ align-items: center;
577
+ gap: 0.5rem;
578
+ flex: 1;
579
+ min-inline-size: 0;
580
+ overflow: hidden;
581
+ cursor: grab;
582
+
583
+ &:active {
584
+ cursor: grabbing;
585
+ }
586
+ }
587
+
588
+ @mixin title-text-styles {
589
+ font-size: var(--fl-text-sm, 0.875rem);
590
+ font-weight: var(--fl-font-weight-medium, 500);
591
+ overflow: hidden;
592
+ text-overflow: ellipsis;
593
+ white-space: nowrap;
594
+ }
595
+
596
+ @mixin subtitle-text-styles {
597
+ font-size: var(--fl-text-xs, 0.75rem);
598
+ opacity: 0.7;
599
+ overflow: hidden;
600
+ text-overflow: ellipsis;
601
+ white-space: nowrap;
602
+ }
603
+
604
+ @mixin app-icon-styles {
605
+ inline-size: 1.25rem;
606
+ block-size: 1.25rem;
607
+ flex-shrink: 0;
608
+ }
609
+
610
+ @mixin controls-layout {
611
+ display: flex;
612
+ align-items: center;
613
+ gap: 0.25rem;
614
+ flex-shrink: 0;
615
+ }
616
+
617
+ @mixin control-button-base {
618
+ inline-size: 1.5rem;
619
+ block-size: 1.5rem;
620
+ border-radius: 50%;
621
+ border: none;
622
+ background: transparent;
623
+ display: flex;
624
+ align-items: center;
625
+ justify-content: center;
626
+ cursor: pointer;
627
+ transition: background-color 0.15s ease;
628
+ pointer-events: auto;
629
+
630
+ &:hover {
631
+ background-color: rgba(0, 0, 0, 0.1);
632
+ }
633
+ }
634
+
635
+ @mixin close-button-styles {
636
+ &:hover {
637
+ background-color: rgba(255, 0, 0, 0.15);
638
+ color: #d32f2f;
639
+ }
640
+ }
641
+
642
+ // Behavior mixins (simplified versions)
643
+ @mixin ps-draggable {
644
+ // Draggable positioning logic
645
+ inset-inline-start: calc(var(--inset-x, 0) * 1px);
646
+ inset-block-start: calc(var(--inset-y, 0) * 1px);
647
+ }
648
+
649
+ @mixin ps-resizable {
650
+ // Resizable sizing logic
651
+ inline-size: calc(var(--size-x, 400) * 1px);
652
+ block-size: calc(var(--size-y, 300) * 1px);
653
+ }
654
+
655
+ @mixin ps-mechanic {
656
+ // Z-index and focus management
657
+ z-index: calc(100 + var(--z-index, 0));
658
+ }
@@ -0,0 +1,10 @@
1
+ /*
2
+ * Filename: home-host-apply.scss
3
+ * FullPath: modules/projects/fl.ui/src/styles/ui/home-host-apply.scss
4
+ * Change date and time: 12.15.00_03.08.2026
5
+ * Reason for changes: Symlink-safe entry for adopted SpeedDial host styles (no relative @use from ts/).
6
+ */
7
+
8
+ @use "./home-host" as home-host;
9
+
10
+ @include home-host.home-view-host-styles();