@meshmakers/octo-ui 3.3.830 → 3.3.850

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.
@@ -2470,17 +2470,78 @@
2470
2470
 
2471
2471
  // Separator styling
2472
2472
  &.k-drawer-separator {
2473
- height: 1px;
2474
- min-height: 1px;
2475
- padding: 0;
2476
- margin: 8px 12px;
2477
- background: linear-gradient(90deg, var(--octo-mint-30), transparent);
2473
+ display: none;
2478
2474
  }
2479
2475
  }
2480
2476
 
2477
+ // Hierarchy — top-level groups (k-level-0)
2478
+ .k-drawer-item.k-level-0 {
2479
+ color: var(--octo-text-color);
2480
+ text-transform: uppercase;
2481
+ font-weight: 600;
2482
+ letter-spacing: 0.6px;
2483
+ font-size: 12.5px;
2484
+ margin-top: 2px;
2485
+ }
2486
+
2487
+ // Hierarchy — nested items (k-level-1 and k-level-2 share most rules;
2488
+ // per-level overrides set indent, font-size, text colour and the
2489
+ // locally-scoped --guide-x / --icon-scale below).
2490
+ .k-drawer-item.k-level-1,
2491
+ .k-drawer-item.k-level-2 {
2492
+ --guide-x: 22px;
2493
+ --icon-scale: 0.85;
2494
+
2495
+ font-weight: 400;
2496
+ text-transform: none;
2497
+ position: relative;
2498
+
2499
+ .k-icon, .k-svg-icon, kendo-svgicon, svg {
2500
+ transform: scale(var(--icon-scale));
2501
+ opacity: var(--icon-scale);
2502
+ }
2503
+
2504
+ &::before {
2505
+ content: "";
2506
+ position: absolute;
2507
+ top: 0;
2508
+ bottom: 0;
2509
+ left: var(--guide-x);
2510
+ width: 1px;
2511
+ background: color-mix(in srgb, var(--octo-text-color) 10%, transparent);
2512
+ }
2513
+
2514
+ &:hover {
2515
+ color: var(--octo-text-color);
2516
+ background: color-mix(in srgb, var(--octo-text-color) 4%, transparent);
2517
+ }
2518
+
2519
+ &.k-selected {
2520
+ color: var(--octo-mint);
2521
+ background: var(--octo-mint-10);
2522
+ box-shadow: inset 3px 0 0 var(--octo-mint);
2523
+ border-left: none;
2524
+ }
2525
+ }
2526
+
2527
+ .k-drawer-item.k-level-1 {
2528
+ font-size: 13px;
2529
+ color: color-mix(in srgb, var(--octo-text-color) 75%, transparent);
2530
+ padding: 6px 12px 6px 36px;
2531
+ }
2532
+
2533
+ .k-drawer-item.k-level-2 {
2534
+ font-size: 12.5px;
2535
+ color: color-mix(in srgb, var(--octo-text-color) 60%, transparent);
2536
+ padding: 6px 12px 6px 60px;
2537
+ --guide-x: 46px;
2538
+ --icon-scale: 0.75;
2539
+ }
2540
+
2481
2541
  // Collapsed state (mini mode)
2482
2542
  &[style*="flex-basis: 50px"],
2483
- &[style*="flex-basis:50px"] {
2543
+ &[style*="flex-basis:50px"],
2544
+ &.k-drawer-mini {
2484
2545
  .k-drawer-item {
2485
2546
  justify-content: center;
2486
2547
  padding: 10px 0;
@@ -2498,6 +2559,18 @@
2498
2559
  padding-left: 0;
2499
2560
  }
2500
2561
  }
2562
+
2563
+ .k-drawer-item.mm-drawer-level-0:not(.k-selected) {
2564
+ color: var(--octo-text-color);
2565
+ }
2566
+ .k-drawer-item.mm-drawer-level-1:not(.k-selected) {
2567
+ color: color-mix(in srgb, var(--octo-text-color) 75%, transparent);
2568
+ opacity: 0.85;
2569
+ }
2570
+ .k-drawer-item.mm-drawer-level-2:not(.k-selected) {
2571
+ color: color-mix(in srgb, var(--octo-text-color) 60%, transparent);
2572
+ opacity: 0.7;
2573
+ }
2501
2574
  }
2502
2575
  }
2503
2576
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshmakers/octo-ui",
3
- "version": "3.3.830",
3
+ "version": "3.3.850",
4
4
  "peerDependencies": {
5
5
  "@ngx-translate/core": "^17.0.0",
6
6
  "@angular/animations": "^21.0.6",
@@ -0,0 +1,125 @@
1
+ // ============================================================================
2
+ // KENDO DRAWER - HIERARCHY OVERRIDES
3
+ // Structural styling that gives Kendo's drawer a clear visual hierarchy
4
+ // (top-level groups vs nested children). Colors are theme-neutral by default
5
+ // and can be overridden by host applications via CSS custom properties.
6
+ //
7
+ // Usage in a host app:
8
+ //
9
+ // @use "@meshmakers/octo-ui/styles" as octo;
10
+ // @include octo.drawer();
11
+ //
12
+ // :root {
13
+ // --mm-drawer-top-color: #e2e8f0;
14
+ // --mm-drawer-child-color: #cbd5e1;
15
+ // --mm-drawer-deep-color: #a0aec0;
16
+ // --mm-drawer-accent: #64ceb9;
17
+ // ... (see variable list below)
18
+ // }
19
+ //
20
+ // Companion runtime markers come from `@meshmakers/shared-services`
21
+ // (CommandService.createDrawerItems sets `mm-drawer-top` / `mm-drawer-child`
22
+ // per item) so the hierarchy stays visible in mini/collapsed mode where
23
+ // Kendo strips its own k-level-N classes.
24
+ //
25
+ // Three or more nested levels are intentionally NOT styled (k-level-3+ falls
26
+ // back to Kendo defaults) — deeply nested sidebars are a UX smell.
27
+ // ============================================================================
28
+
29
+ @mixin drawer() {
30
+ // --------------------------------------------------------------------------
31
+ // Top-level groups (k-level-0)
32
+ // --------------------------------------------------------------------------
33
+
34
+ .k-drawer-item.k-level-0 {
35
+ font-weight: 600;
36
+ font-size: 12.5px;
37
+ text-transform: uppercase;
38
+ letter-spacing: 0.6px;
39
+ color: var(--mm-drawer-top-color, currentColor);
40
+ margin-top: 2px;
41
+
42
+ &.k-selected {
43
+ color: var(--mm-drawer-accent, var(--kendo-color-primary, currentColor));
44
+ background: var(--mm-drawer-accent-bg-top, transparent);
45
+ }
46
+ }
47
+
48
+ // --------------------------------------------------------------------------
49
+ // Nested items (k-level-1 + k-level-2)
50
+ // Shared rules; per-level overrides differ only in indent, font-size,
51
+ // color, icon scale and guide-line position.
52
+ // --------------------------------------------------------------------------
53
+
54
+ .k-drawer-item.k-level-1,
55
+ .k-drawer-item.k-level-2 {
56
+ font-weight: 400;
57
+ text-transform: none;
58
+ position: relative;
59
+
60
+ .k-icon,
61
+ svg {
62
+ opacity: var(--mm-drawer-scale, 0.85);
63
+ transform: scale(var(--mm-drawer-scale, 0.85));
64
+ }
65
+
66
+ &::before {
67
+ content: "";
68
+ position: absolute;
69
+ top: 0;
70
+ bottom: 0;
71
+ width: 1px;
72
+ left: var(--mm-drawer-guide-x, 22px);
73
+ background: var(--mm-drawer-guide-color, rgba(0, 0, 0, 0.1));
74
+ }
75
+
76
+ &:hover {
77
+ color: var(--mm-drawer-hover-color, currentColor);
78
+ background: var(--mm-drawer-hover-bg, rgba(0, 0, 0, 0.04));
79
+ }
80
+
81
+ &.k-selected {
82
+ color: var(--mm-drawer-accent, var(--kendo-color-primary, currentColor));
83
+ background: var(--mm-drawer-accent-bg, transparent);
84
+ box-shadow: inset 3px 0 0 var(--mm-drawer-accent, var(--kendo-color-primary, currentColor));
85
+ }
86
+ }
87
+
88
+ .k-drawer-item.k-level-1 {
89
+ font-size: 13px;
90
+ color: var(--mm-drawer-child-color, var(--kendo-color-subtle, currentColor));
91
+ padding: 6px 12px 6px 36px;
92
+ }
93
+
94
+ .k-drawer-item.k-level-2 {
95
+ font-size: 12.5px;
96
+ color: var(--mm-drawer-deep-color, var(--kendo-color-subtle, currentColor));
97
+ padding: 6px 12px 6px 60px;
98
+ --mm-drawer-scale: 0.75;
99
+ --mm-drawer-guide-x: 46px;
100
+ }
101
+
102
+ // Hide Kendo's auto-generated separators — they create awkward gaps
103
+ // between logically grouped child items.
104
+ .k-drawer-item.k-drawer-separator {
105
+ display: none;
106
+ }
107
+
108
+ // --------------------------------------------------------------------------
109
+ // Mini drawer (collapsed)
110
+ // Kendo strips k-level-N here, so we rely on the mm-drawer-top /
111
+ // mm-drawer-child marker classes that come from shared-services
112
+ // (parent-id driven) to keep the hierarchy readable.
113
+ // --------------------------------------------------------------------------
114
+
115
+ .k-drawer-mini {
116
+ .k-drawer-item.mm-drawer-top:not(.k-selected) {
117
+ color: var(--mm-drawer-top-color, currentColor);
118
+ }
119
+
120
+ .k-drawer-item.mm-drawer-child:not(.k-selected) {
121
+ color: var(--mm-drawer-child-color, var(--kendo-color-subtle, currentColor));
122
+ opacity: 0.75;
123
+ }
124
+ }
125
+ }