@c8y/style 1023.14.76 → 1023.14.94

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 (264) hide show
  1. package/branding-login.less +1 -1
  2. package/helper-scripts/README-variable-imports.md +155 -0
  3. package/helper-scripts/README.md +104 -0
  4. package/helper-scripts/convert-scss-to-less.sh +502 -0
  5. package/helper-scripts/convert-stroke-icons-to-less.js +115 -0
  6. package/helper-scripts/remove-redundant-variable-imports.sh +80 -0
  7. package/helper-scripts/scss-to-less-skip +20 -0
  8. package/{sync-scss-to-less.sh → helper-scripts/sync-scss-to-less.sh} +2 -2
  9. package/helper-scripts/test-compile.sh +71 -0
  10. package/markdown-files/MANUAL-SYNC-FILES.md +56 -0
  11. package/package.json +2 -2
  12. package/styles/_login-app.less +34 -0
  13. package/styles/_login-app.scss +2 -2
  14. package/styles/_mixins.less +47 -0
  15. package/styles/_utilities.less +21 -0
  16. package/styles/_utilities.scss +1 -0
  17. package/styles/animations/_animate.less +18 -13
  18. package/styles/animations/_component-animations.less +18 -16
  19. package/styles/animations/_realtime-animation-list.less +11 -1
  20. package/styles/animations/_spinner-snake.less +17 -2
  21. package/styles/animations/_spinner.less +24 -6
  22. package/styles/base/_normalize.less +14 -0
  23. package/styles/base/_print.less +25 -12
  24. package/styles/base/_scaffolding.less +24 -28
  25. package/styles/base/_type.less +41 -19
  26. package/styles/components/_markdown-content.less +4 -1
  27. package/styles/components/_smartrules.less +14 -8
  28. package/styles/components/_smartrules.scss +6 -2
  29. package/styles/components/application-and-system/_c8y-cookie-banner.less +36 -0
  30. package/styles/components/{specialized → application-and-system}/_c8y-login.less +20 -6
  31. package/styles/components/data-display-and-visualization/_boxed-label.less +45 -0
  32. package/styles/components/data-display-and-visualization/_boxed-label.scss +46 -0
  33. package/styles/components/{specialized → data-display-and-visualization}/_c8y-data-explorer.less +76 -24
  34. package/styles/components/{specialized → data-display-and-visualization}/_c8y-data-explorer.scss +39 -1
  35. package/styles/components/{specialized → data-display-and-visualization}/_c8y-datapoint-pill.less +29 -13
  36. package/styles/components/{specialized → data-display-and-visualization}/_c8y-pulse.less +33 -6
  37. package/styles/components/data-display-and-visualization/_range-display.less +25 -16
  38. package/styles/components/{specialized → data-display-and-visualization}/_smart-list-icon-label.less +19 -5
  39. package/styles/components/{specialized → data-display-and-visualization}/_status.less +16 -2
  40. package/styles/components/{specialized → data-display-and-visualization}/_statusContainer.less +16 -2
  41. package/styles/components/data-display-and-visualization/_timelines-chart.less +2 -0
  42. package/styles/components/data-display-and-visualization/lists/_c8y-data-point-list.less +10 -0
  43. package/styles/components/data-display-and-visualization/lists/_c8y-empty-state.less +26 -12
  44. package/styles/components/data-display-and-visualization/lists/_c8y-list-group.less +88 -42
  45. package/styles/components/data-display-and-visualization/lists/_cards-layout.less +38 -16
  46. package/styles/components/data-display-and-visualization/lists/_list-group.less +46 -28
  47. package/styles/components/data-display-and-visualization/lists/_smart-rules-template-list.less +12 -1
  48. package/styles/components/data-display-and-visualization/lists/{timeline-list.less → _timeline-list.less} +46 -24
  49. package/styles/components/data-display-and-visualization/tables/_data-grid.less +45 -25
  50. package/styles/components/data-display-and-visualization/tables/_resizable-grid.less +18 -1
  51. package/styles/components/data-display-and-visualization/tables/_tables.less +25 -9
  52. package/styles/components/data-input/_c8y-ai-chat.less +1 -0
  53. package/styles/components/{specialized → data-input}/_c8y-countdown-interval.less +15 -13
  54. package/styles/components/{specialized → data-input}/_c8y-range.less +22 -6
  55. package/styles/components/{specialized → data-input}/_dtm-icon-selector.less +17 -2
  56. package/styles/components/{specialized → data-input}/_dtm-icon-selector.scss +1 -2
  57. package/styles/components/{specialized → data-input}/_measurements-time-control.less +34 -6
  58. package/styles/components/{specialized → data-input}/_measurements-time-control.scss +14 -2
  59. package/styles/components/{specialized → data-input}/_search-header.less +22 -6
  60. package/styles/components/data-input/_static-assets-file-picker.less +22 -0
  61. package/styles/components/data-input/assets/_asset-property-list.less +38 -23
  62. package/styles/components/data-input/assets/_asset-table.less +21 -3
  63. package/styles/components/data-input/assets/_c8y-asset-notes.less +13 -1
  64. package/styles/components/data-input/assets/_c8y-asset-selector-miller.less +27 -8
  65. package/styles/components/data-input/assets/_c8y-asset-selector.less +32 -15
  66. package/styles/components/data-input/assets/_c8y-child-assets-selector.less +90 -9
  67. package/styles/components/{specialized → forms}/_c8y-schema-form.less +44 -17
  68. package/styles/components/{specialized → forms}/_c8y-schema-form.scss +15 -3
  69. package/styles/components/{specialized → navigation-and-layout}/_c8y-role-card.less +21 -5
  70. package/styles/components/{specialized → navigation-and-layout}/_c8y-scrollbar.less +24 -7
  71. package/styles/components/{specialized → navigation-and-layout}/_c8y-smart-rest-tab.less +21 -6
  72. package/styles/components/{specialized → navigation-and-layout}/_c8y-stepper.less +15 -1
  73. package/styles/components/{specialized → navigation-and-layout}/_c8y-user-roles.less +45 -28
  74. package/styles/components/{specialized → navigation-and-layout}/_device-software-tab.less +14 -0
  75. package/styles/components/navigation-and-layout/action-bars/_app-switcher.less +27 -5
  76. package/styles/components/navigation-and-layout/action-bars/_c8y-action-bar.less +49 -21
  77. package/styles/components/navigation-and-layout/cards/_card-dashboard.less +25 -4
  78. package/styles/components/navigation-and-layout/cards/_card-flip.less +41 -14
  79. package/styles/components/navigation-and-layout/cards/_card-grid.less +20 -4
  80. package/styles/components/navigation-and-layout/cards/_card.less +90 -75
  81. package/styles/components/navigation-and-layout/cards/_panels.less +38 -20
  82. package/styles/components/navigation-and-layout/navigation/_breadcrumbs.less +22 -49
  83. package/styles/components/navigation-and-layout/navigation/_c8y-nav-stacked.less +26 -14
  84. package/styles/components/navigation-and-layout/navigation/_main-header.less +39 -13
  85. package/styles/components/navigation-and-layout/navigation/_main-header.scss +1 -1
  86. package/styles/components/navigation-and-layout/navigation/_navbar.less +22 -25
  87. package/styles/components/navigation-and-layout/navigation/_navbar.scss +7 -7
  88. package/styles/components/navigation-and-layout/navigation/_navigator.less +71 -69
  89. package/styles/components/navigation-and-layout/navigation/_navs.less +13 -0
  90. package/styles/components/navigation-and-layout/navigation/_pagination.less +24 -5
  91. package/styles/components/navigation-and-layout/navigation/{steps-navbar.less → _steps-navbar.less} +7 -6
  92. package/styles/components/navigation-and-layout/navigation/_tabs.less +18 -14
  93. package/styles/components/navigation-and-layout/navigation/_tabs.scss +2 -2
  94. package/styles/components/{specialized → status-feedback-and-notifications}/_c8y-message-banner.less +14 -0
  95. package/styles/components/{specialized → status-feedback-and-notifications}/_code.less +18 -2
  96. package/styles/core/buttons/_button-groups.less +29 -79
  97. package/styles/core/buttons/_buttons.less +229 -198
  98. package/styles/core/buttons/_buttons.scss +6 -10
  99. package/styles/core/feedback/_alerts.less +52 -41
  100. package/styles/core/feedback/_badges.less +29 -17
  101. package/styles/core/feedback/_close.less +24 -7
  102. package/styles/core/feedback/_labels.less +21 -8
  103. package/styles/core/feedback/_progress-bars.less +24 -7
  104. package/styles/core/feedback/_tag.less +23 -6
  105. package/styles/core/feedback/_tooltip.less +44 -20
  106. package/styles/core/forms/_c8y-switch.less +39 -19
  107. package/styles/core/forms/_c8y-switch.scss +37 -29
  108. package/styles/core/forms/_file-picker.less +79 -61
  109. package/styles/core/forms/_forms.less +130 -133
  110. package/styles/core/forms/_input-groups.less +110 -59
  111. package/styles/core/forms/_input-groups.scss +21 -3
  112. package/styles/core/overlays/_c8y-dashboard-modal.less +25 -29
  113. package/styles/core/overlays/_c8y-wizard.less +38 -15
  114. package/styles/core/overlays/_dropdowns.less +86 -63
  115. package/styles/core/overlays/_modals.less +58 -40
  116. package/styles/core/overlays/_popovers.less +25 -9
  117. package/styles/dashboard/_availability-pie.less +3 -0
  118. package/styles/dashboard/_c8y-dashboard-style.less +61 -34
  119. package/styles/dashboard/_c8y-gauges.less +20 -4
  120. package/styles/dashboard/_dashboard-widgets.less +17 -4
  121. package/styles/dashboard/_info-gauge.less +20 -5
  122. package/styles/dashboard/_quick-links-widget.less +13 -3
  123. package/styles/{welcome-widget.less → dashboard/_welcome-widget.less} +21 -4
  124. package/styles/dashboard/{welcome.less → _welcome.less} +54 -45
  125. package/styles/icons/_c8y-glyphs.less +12 -1
  126. package/styles/icons/_c8y-glyphs.scss +2 -1
  127. package/styles/icons/_c8y-icons.less +214 -199
  128. package/styles/icons/_dlt-c8y-icons-stroke.less +7238 -1834
  129. package/styles/icons/_dlt-c8y-icons.less +14 -0
  130. package/styles/icons/_marker-icons.less +10 -0
  131. package/styles/index.less +160 -134
  132. package/styles/index.scss +53 -29
  133. package/styles/layout/_bottom-drawer.less +21 -7
  134. package/styles/layout/_c8y-help-drawer.less +30 -9
  135. package/styles/layout/_c8y-right-drawer.less +34 -19
  136. package/styles/layout/_c8y-top-drawer.less +43 -28
  137. package/styles/layout/_grid.less +18 -4
  138. package/styles/layout/_group-info.less +14 -2
  139. package/styles/layout/_layouts.less +48 -30
  140. package/styles/layout/_mcontainer.less +26 -12
  141. package/styles/layout/_page-tabs.less +115 -23
  142. package/styles/layout/_split-scroll.less +16 -4
  143. package/styles/layout/_split-view.less +34 -2
  144. package/styles/login-app-use.scss +2 -2
  145. package/styles/login-app.less +4 -4
  146. package/styles/mixins/_buttons.scss +1 -0
  147. package/styles/mixins/{color-mixins.less → _color-mixins.less} +2 -2
  148. package/styles/mixins/{element-queries.less → _element-queries.less} +2 -2
  149. package/styles/mixins/{forms.less → _forms.less} +1 -1
  150. package/styles/mixins/_gradients.less +117 -0
  151. package/styles/mixins/{grid-framework.less → _grid-framework.less} +21 -21
  152. package/styles/mixins/_icon-base.less +29 -0
  153. package/styles/mixins/{nav-vertical-align.less → _nav-vertical-align.less} +6 -2
  154. package/styles/mixins/_nav-vertical-align.scss +5 -2
  155. package/styles/mixins/{progress-bar.less → _progress-bar.less} +1 -1
  156. package/styles/mixins/{shadows-helper.less → _shadows-helper.less} +3 -5
  157. package/styles/mixins/_shadows-helper.scss +1 -4
  158. package/styles/mixins/{vendor-prefixes.less → _vendor-prefixes.less} +7 -22
  159. package/styles/mixins/_vendor-prefixes.scss +1 -17
  160. package/styles/utilities/_borders.less +21 -11
  161. package/styles/{components/specialized → utilities}/_c8y-utils.less +14 -0
  162. package/styles/{components/specialized → utilities}/_c8y-utils.scss +1 -1
  163. package/styles/utilities/_caret.less +18 -4
  164. package/styles/utilities/_container-queries.less +11 -3
  165. package/styles/utilities/_contextual-colors.less +48 -119
  166. package/styles/utilities/_display.less +26 -41
  167. package/styles/utilities/_elevation.less +17 -7
  168. package/styles/utilities/_flex-containers.less +10 -0
  169. package/styles/utilities/_flex-items.less +11 -0
  170. package/styles/utilities/_icon-utils.less +15 -3
  171. package/styles/utilities/_margins-paddings.less +23 -4
  172. package/styles/utilities/_overflows.less +10 -0
  173. package/styles/utilities/_position.less +11 -0
  174. package/styles/utilities/_quickfloats.less +20 -1
  175. package/styles/utilities/_separators.less +11 -0
  176. package/styles/utilities/_shadows.less +5 -49
  177. package/styles/{utilities.less → utilities/_sizing.less} +13 -21
  178. package/styles/utilities/_text-utils.less +35 -24
  179. package/styles/vendor/ace-editor/_ace-editor.less +1 -0
  180. package/styles/vendor/angular/_loading-bar.less +1 -0
  181. package/styles/vendor/angular/_ui-sortable.less +2 -1
  182. package/styles/vendor/angular/_uib-accordion.less +1 -0
  183. package/styles/{angular-ui-select/select.less → vendor/angular/angular-ui-select/_select.less} +2 -10
  184. package/styles/vendor/cdk/_cdk-drag.less +3 -0
  185. package/styles/vendor/cdk/_cdk-tree.less +6 -3
  186. package/styles/vendor/cdk/_cdk-virtual-scroll-window.less +1 -0
  187. package/styles/vendor/datepicker/_bs-datepicker.less +26 -6
  188. package/styles/vendor/datepicker/_uib-datepicker.less +37 -4
  189. package/styles/vendor/leaflet/_c8y-map-internal.less +44 -54
  190. package/styles/vendor/leaflet/_leaflet.less +4 -1
  191. package/styles/vendor/other/_colorpicker.less +3 -2
  192. package/styles/vendor/selectize/_c8y-selectize.less +33 -10
  193. package/variables/_color-defaults.less +29 -10
  194. package/variables/_color-defaults.scss +29 -10
  195. package/variables/_color-vars.less +37 -89
  196. package/variables/_color-vars.scss +19 -77
  197. package/variables/{login-vars.less → _login-vars.less} +3 -5
  198. package/variables/index.less +3 -3
  199. package/variables/tokens/{c8y-design-tokens-dark.less → _c8y-design-tokens-dark.less} +5 -1
  200. package/variables/tokens/{c8y-design-tokens.less → _c8y-design-tokens.less} +5 -1
  201. package/styles/components/specialized/_boxed-label.less +0 -21
  202. package/styles/components/specialized/_boxed-label.scss +0 -36
  203. package/styles/components/specialized/_c8y-cookie-banner.less +0 -22
  204. package/styles/components/specialized/_static-assets-file-picker.less +0 -8
  205. package/styles/dashboard/welcome-widget.less +0 -50
  206. package/styles/mixins/gradients.less +0 -142
  207. package/styles/mixins.less +0 -45
  208. package/styles/steps-navbar.less +0 -97
  209. package/styles/timeline-list.less +0 -210
  210. package/styles/vendor/angular/angular-ui-select/select.less +0 -161
  211. package/styles/welcome.less +0 -128
  212. /package/styles/components/{specialized → application-and-system}/_c8y-cookie-banner.scss +0 -0
  213. /package/styles/components/{specialized → application-and-system}/_c8y-login.scss +0 -0
  214. /package/styles/components/{specialized → data-display-and-visualization}/_c8y-datapoint-pill.scss +0 -0
  215. /package/styles/components/{specialized → data-display-and-visualization}/_c8y-pulse.scss +0 -0
  216. /package/styles/components/{specialized → data-display-and-visualization}/_smart-list-icon-label.scss +0 -0
  217. /package/styles/components/{specialized → data-display-and-visualization}/_status.scss +0 -0
  218. /package/styles/components/{specialized → data-display-and-visualization}/_statusContainer.scss +0 -0
  219. /package/styles/components/{specialized → data-input}/_c8y-countdown-interval.scss +0 -0
  220. /package/styles/components/{specialized → data-input}/_c8y-range.scss +0 -0
  221. /package/styles/components/{specialized → data-input}/_search-header.scss +0 -0
  222. /package/styles/components/{specialized → data-input}/_static-assets-file-picker.scss +0 -0
  223. /package/styles/components/{specialized → navigation-and-layout}/_c8y-role-card.scss +0 -0
  224. /package/styles/components/{specialized → navigation-and-layout}/_c8y-scrollbar.scss +0 -0
  225. /package/styles/components/{specialized → navigation-and-layout}/_c8y-smart-rest-tab.scss +0 -0
  226. /package/styles/components/{specialized → navigation-and-layout}/_c8y-stepper.scss +0 -0
  227. /package/styles/components/{specialized → navigation-and-layout}/_c8y-user-roles.scss +0 -0
  228. /package/styles/components/{specialized → navigation-and-layout}/_device-software-tab.scss +0 -0
  229. /package/styles/components/{specialized → status-feedback-and-notifications}/_c8y-message-banner.scss +0 -0
  230. /package/styles/components/{specialized → status-feedback-and-notifications}/_code.scss +0 -0
  231. /package/styles/mixins/{alert-variant.less → _alert-variant.less} +0 -0
  232. /package/styles/mixins/{animation.less → _animation.less} +0 -0
  233. /package/styles/mixins/{background-variant.less → _background-variant.less} +0 -0
  234. /package/styles/mixins/{border-radius.less → _border-radius.less} +0 -0
  235. /package/styles/mixins/{buttons.less → _buttons.less} +0 -0
  236. /package/styles/mixins/{c8y-scrollbar.less → _c8y-scrollbar.less} +0 -0
  237. /package/styles/mixins/{center-block.less → _center-block.less} +0 -0
  238. /package/styles/mixins/{clearfix.less → _clearfix.less} +0 -0
  239. /package/styles/mixins/{create-grid.less → _create-grid.less} +0 -0
  240. /package/styles/mixins/{grid.less → _grid.less} +0 -0
  241. /package/styles/mixins/{hide-scrollbars.less → _hide-scrollbars.less} +0 -0
  242. /package/styles/mixins/{hide-text.less → _hide-text.less} +0 -0
  243. /package/styles/mixins/{image.less → _image.less} +0 -0
  244. /package/styles/mixins/{labels.less → _labels.less} +0 -0
  245. /package/styles/mixins/{list-group.less → _list-group.less} +0 -0
  246. /package/styles/mixins/{nav-divider.less → _nav-divider.less} +0 -0
  247. /package/styles/mixins/{opacity.less → _opacity.less} +0 -0
  248. /package/styles/mixins/{pagination.less → _pagination.less} +0 -0
  249. /package/styles/mixins/{panels.less → _panels.less} +0 -0
  250. /package/styles/mixins/{reset-filter.less → _reset-filter.less} +0 -0
  251. /package/styles/mixins/{reset-text.less → _reset-text.less} +0 -0
  252. /package/styles/mixins/{resize.less → _resize.less} +0 -0
  253. /package/styles/mixins/{responsive-visibility.less → _responsive-visibility.less} +0 -0
  254. /package/styles/mixins/{size.less → _size.less} +0 -0
  255. /package/styles/mixins/{tab-focus.less → _tab-focus.less} +0 -0
  256. /package/styles/mixins/{table-row.less → _table-row.less} +0 -0
  257. /package/styles/mixins/{tag.less → _tag.less} +0 -0
  258. /package/styles/mixins/{text-emphasis.less → _text-emphasis.less} +0 -0
  259. /package/styles/mixins/{text-overflow.less → _text-overflow.less} +0 -0
  260. /package/variables/{login-vars.scss → _login-vars.scss} +0 -0
  261. /package/variables/{shadows.less → _shadows.less} +0 -0
  262. /package/variables/{shadows.scss → _shadows.scss} +0 -0
  263. /package/variables/tokens/{c8y-design-tokens-dark.scss → _c8y-design-tokens-dark.scss} +0 -0
  264. /package/variables/tokens/{c8y-design-tokens.scss → _c8y-design-tokens.scss} +0 -0
@@ -1,3 +1,24 @@
1
+
2
+ @import "../mixins/_c8y-scrollbar.less";
3
+
4
+ /**
5
+ * Page Tabs - Horizontal and vertical tab navigation
6
+ *
7
+ * Note: Uses design tokens for spacing (@size-*), colors, and layout vars.
8
+ *
9
+ * Intentionally hardcoded values:
10
+ * - -6px top: Negative offset for mobile positioning
11
+ * - 12px: Off-grid legacy value in calc expression
12
+ * - 30px, 31px: Specific dimensions for tab slider controls
13
+ * - 3px padding: Fine-tuning for icon alignment
14
+ * - Transition durations (0.35s, 0.25s): Animation timing
15
+ * - Z-index values: Stacking order
16
+ * - 1px borders: Standard border widths
17
+ * - 2px box-shadow: Focus indicator width
18
+ * - 10000px, 2000px: Large clip values for overflow management
19
+ * - Percentages and em units: Relative sizing
20
+ */
21
+
1
22
  .page-tabs {
2
23
  position: fixed;
3
24
  right: 0;
@@ -14,7 +35,7 @@
14
35
  transition: top 0.35s ease;
15
36
 
16
37
  .head-open & {
17
- top: calc(@margin-base * 10 + 12px);
38
+ top: calc(@size-base * 10 + calc(@size-base * 1.5));
18
39
  }
19
40
  }
20
41
  }
@@ -31,12 +52,25 @@
31
52
  left: 0;
32
53
  z-index: @zindex-navbar-fixed;
33
54
  clip: rect(0, 10000px, 2000px, 0);
34
- min-height: calc(@margin-base * 6);
55
+ min-height: calc(@size-base * 6);
35
56
  box-shadow: inset 0 -1px 0 0 @component-border-color, @header-shadow;
36
-
57
+ &:has(.component-tabs) {
58
+ box-shadow: inset 0 -1px 0 0 @component-border-color;
59
+ .component-tabs {
60
+ min-width: unset !important;
61
+ padding: 0;
62
+ &.nav-tabs > div, &.nav-tabs li {
63
+ flex: 0;
64
+ align-self: stretch;
65
+ > a {
66
+ height: 100%;
67
+ }
68
+ }
69
+ }
70
+ }
37
71
  &,
38
72
  &:after {
39
- .transition(left @open-menu-time-type);
73
+ transition: left @open-menu-time-type;
40
74
  }
41
75
  }
42
76
 
@@ -50,7 +84,11 @@
50
84
  overflow-x: auto;
51
85
  // box-shadow: inset 0 calc(@nav-tabs-border-width-active * -1) 0 0 @nav-tabs-border-color-default;
52
86
  scroll-behavior: smooth;
53
- .hide-scrollbars();
87
+ overflow: -moz-scrollbars-none; // Firefox
88
+ -ms-overflow-style: none; // IE 10+
89
+ &::-webkit-scrollbar {
90
+ display: none; // Safari and Chrome
91
+ }
54
92
 
55
93
  .nav-tabs {
56
94
  padding-right: 30px;
@@ -70,18 +108,6 @@
70
108
  position: relative;
71
109
  }
72
110
 
73
- c8y-widget-config-section{
74
- .component-tabs{
75
- min-width: unset!important;
76
- > div, > li{
77
- flex-shrink: 1;
78
- .tab-description{
79
- display: none;
80
- }
81
- }
82
- }
83
- }
84
-
85
111
  .tabs-slider {
86
112
  position: absolute;
87
113
  top: 0;
@@ -100,7 +126,7 @@ c8y-widget-config-section{
100
126
  [class*=' dlt-c8y-icon-'] {
101
127
  position: relative;
102
128
  z-index: 3;
103
- font-size: 20px;
129
+ font-size: @size-20;
104
130
  }
105
131
 
106
132
  &:hover,
@@ -150,10 +176,67 @@ c8y-widget-config-section{
150
176
  }
151
177
 
152
178
  .nav-tabs {
153
- .nav-tabs-vertical();
179
+ // Styles from .nav-tabs-vertical class (LESS uses mixin)
180
+ display: block;
181
+ &:not(.component-tabs) {
182
+ padding-top: @size-48;
183
+ }
184
+ width: @nav-tabs-vertical-width;
185
+ border: 0;
186
+ box-shadow: none;
187
+ &.nav-tabs-vertical--wide {
188
+ width: unset;
189
+ }
154
190
  > div,
155
191
  > li {
156
192
  position: relative;
193
+ > a, > button {
194
+ display: flex;
195
+ align-items: center;
196
+ flex-direction: row;
197
+ margin: 0;
198
+ padding: @nav-tabs-vertical-padding;
199
+ height: auto;
200
+ border: 0;
201
+ box-shadow: inset 0 -1px 0 @nav-tabs-border-color-default;
202
+ text-transform: none;
203
+ font-size: inherit;
204
+ transition: all 0.25s ease;
205
+
206
+ [class^='dlt-c8y-icon-'],
207
+ [class*=' dlt-c8y-icon-'],
208
+ .c8y-icon {
209
+ margin: 0 @size-8 0 0;
210
+ width: 1.25em;
211
+ ~ span {
212
+ display: inline-block;
213
+ overflow: hidden;
214
+ max-width: 100%;
215
+ vertical-align: middle;
216
+ text-overflow: ellipsis;
217
+ white-space: nowrap;
218
+ }
219
+ }
220
+ }
221
+ &.active {
222
+ > a, > button {
223
+ &, &:hover {
224
+ border-left: @size-4 solid @nav-tabs-color-active;
225
+ background-color: @nav-tabs-background-active;
226
+ box-shadow: inset 0 -1px 0 @nav-tabs-border-color-default !important;
227
+ border-radius: 0 !important;
228
+ pointer-events: none;
229
+ &::before {
230
+ width: 100%;
231
+ }
232
+ &::after {
233
+ left: 100%;
234
+ height: 100%;
235
+ border-width: calc(@size-16 + @size-4) 0 calc(@size-16 + @size-4) @size-base;
236
+ }
237
+ }
238
+ }
239
+ }
157
240
  a {
158
241
  > [class^='dlt-c8y-icon-'],
159
242
  > [class*=' dlt-c8y-icon-'],
@@ -173,7 +256,7 @@ c8y-widget-config-section{
173
256
  overflow: visible;
174
257
  padding-right: calc(@grid-gutter-width / 2);
175
258
 
176
- .transition(left @open-menu-time-type);
259
+ transition: left @open-menu-time-type;
177
260
 
178
261
  &:before {
179
262
  position: absolute;
@@ -208,14 +291,23 @@ body:not(:has(.app-main-header)) {
208
291
  }
209
292
  }
210
293
  }
211
- &:has(.has-action-bar){
294
+ &:has(.has-action-bar) {
212
295
  .page-tabs-vertical {
213
- top: 48px;
296
+ top: @size-48;
214
297
  }
215
298
  }
216
- &:not(:has(.has-action-bar)){
299
+ &:not(:has(.has-action-bar)) {
217
300
  .page-tabs-vertical {
218
301
  top: 0;
219
302
  }
220
303
  }
221
304
  }
305
+
306
+ body:not(:has(.has-action-bar)) {
307
+ .page-tabs-vertical {
308
+ .nav-tabs {
309
+ padding-top: 0;
310
+ border-top: 1px solid @component-border-color;
311
+ }
312
+ }
313
+ }
@@ -1,4 +1,16 @@
1
- // DEPRECATED: Remove after updating opcua-address-space.component. Still used in 2 places.
1
+
2
+
3
+ /**
4
+ * Split Scroll - DEPRECATED split-column scrolling layout
5
+ *
6
+ * Note: DEPRECATED - Remove after updating opcua-address-space.component. Still used in 2 places.
7
+ * Uses @size-16 and @size-8 for spacing.
8
+ *
9
+ * Intentionally hardcoded values:
10
+ * - Layout heights (80px, 118px, 150px, 165px): Viewport calculations
11
+ * - Percentages (50%, 33.33%, 25%): Fractional row heights
12
+ * - Z-index values: Stacking order
13
+ */
2
14
 
3
15
  .split-scroll {
4
16
  position: relative;
@@ -31,7 +43,7 @@
31
43
  }
32
44
 
33
45
  .scroll-column-footer {
34
- padding: @margin-16 0 0 0;
46
+ padding: @size-16 0 0 0;
35
47
  .btn-add-block {
36
48
  margin-bottom: 0;
37
49
  }
@@ -43,7 +55,7 @@
43
55
  .scroll-column + .scroll-column {
44
56
  position: absolute;
45
57
  top: 0;
46
- bottom: calc(@margin-16 * -1);
58
+ bottom: calc(@size-16 * -1);
47
59
  left: 0;
48
60
  z-index: 10;
49
61
  padding: 0;
@@ -75,7 +87,7 @@
75
87
 
76
88
  .split-scroll {
77
89
  .input-group-search {
78
- margin: -8px 0 !important;
90
+ margin: calc(@size-8 * -1) 0 !important;
79
91
  }
80
92
  .split-row-2 {
81
93
  height: 50%;
@@ -1,3 +1,17 @@
1
+
2
+ /**
3
+ * Split View - Two-column layout component
4
+ *
5
+ * Note: Uses design tokens for spacing (@size-*) and colors.
6
+ *
7
+ * Intentionally hardcoded values:
8
+ * - Layout heights (108px, 168px, 166px, 200px, 82px): Viewport calculations
9
+ * - Grid fractions (4fr, 5fr, 7fr, 8fr): CSS grid fractional units
10
+ * - Transition duration (0.35s): Animation timing
11
+ * - Z-index values: Stacking order
12
+ * - Percentages: Relative sizing
13
+ */
14
+
1
15
  .split-view {
2
16
  &__list,
3
17
  &__detail {
@@ -6,7 +20,7 @@
6
20
  background-color: @component-background-default;
7
21
  }
8
22
  &__list {
9
- .border-right();
23
+ &:extend(.border-right);
10
24
  }
11
25
 
12
26
  @media (max-width: @screen-sm-max) {
@@ -29,7 +43,7 @@
29
43
  height: calc(100vh - 108px);
30
44
  }
31
45
 
32
- &--8-4, &--4-8 {
46
+ &--8-4, &--4-8 {
33
47
  height: calc(100vh - 166px);
34
48
  }
35
49
 
@@ -91,3 +105,21 @@
91
105
  }
92
106
  }
93
107
  }
108
+
109
+ c8y-sv-details,
110
+ c8y-sv-list {
111
+ .inner-scroll {
112
+ >.card-header{
113
+ min-height: @size-56;;
114
+ }
115
+ }
116
+ }
117
+ .card-dashboard c8y-sv-list {
118
+ .inner-scroll {
119
+ >.card-header{
120
+ min-height: 0;
121
+ padding-top: @size-4;
122
+ padding-bottom: @size-4;
123
+ }
124
+ }
125
+ }
@@ -17,7 +17,7 @@
17
17
  @use 'core/buttons/_buttons';
18
18
  @use 'core/feedback/_close';
19
19
  @use 'core/buttons/_button-groups';
20
- @use 'components/specialized/_code';
20
+ @use 'components/status-feedback-and-notifications/_code';
21
21
  @use 'core/feedback/_tag';
22
22
  @use 'core/forms/_forms';
23
23
  @use 'core/forms/_c8y-switch';
@@ -25,7 +25,7 @@
25
25
  @use 'layout/_grid';
26
26
 
27
27
  @use 'core/forms/_input-groups';
28
- @use 'components/specialized/_c8y-cookie-banner';
28
+ @use 'components/application-and-system/_c8y-cookie-banner';
29
29
 
30
30
  @use 'icons/_c8y-glyphs';
31
31
  @use 'icons/_c8y-icons';
@@ -1,5 +1,5 @@
1
1
  @import '../variables/index.less';
2
- @import 'mixins.less';
2
+ @import '_mixins.less';
3
3
  @import 'base/_normalize.less';
4
4
  @import 'base/_print.less';
5
5
 
@@ -14,7 +14,7 @@
14
14
  @import 'core/buttons/_buttons.less';
15
15
  @import 'core/feedback/_close.less';
16
16
  @import 'core/buttons/_button-groups.less';
17
- @import 'components/specialized/_code.less';
17
+ @import 'components/status-feedback-and-notifications/_code.less';
18
18
  @import 'core/feedback/_tag.less';
19
19
  @import 'core/forms/_forms.less';
20
20
  @import 'core/forms/_c8y-switch.less';
@@ -24,12 +24,12 @@
24
24
  // @import 'layout/_grid.less';
25
25
 
26
26
  @import 'core/forms/_input-groups.less';
27
- @import 'components/specialized/_c8y-cookie-banner.less';
27
+ @import 'components/application-and-system/_c8y-cookie-banner.less';
28
28
 
29
29
  @import 'icons/_c8y-glyphs.less';
30
30
  @import 'icons/_c8y-icons.less';
31
31
  @import 'icons/_dlt-c8y-icons.less';
32
32
  // @import 'icons/_dlt-c8y-icons-stroke.less';
33
- @import 'utilities.less';
33
+ @import '_utilities.less';
34
34
 
35
35
  @import 'components/navigation-and-layout/action-bars/_app-switcher.less';
@@ -1,5 +1,6 @@
1
1
  @use "sass:string";
2
2
  @use "../../variables/index" as *;
3
+ // Test change to verify auto-converter works
3
4
  // Button variants
4
5
  // Easily pump out default styles, as well as :hover, :focus, :active,
5
6
  // and disabled options for all buttons
@@ -1,12 +1,12 @@
1
1
  // darkens the @color by adding
2
2
  // black on top with @alpha opacity (0 - 1)
3
- .darken(@color,@alpha) {
3
+ .darken(@color; @alpha) {
4
4
  background: linear-gradient(to top, rgba(0, 0, 0, @alpha), rgba(0, 0, 0, @alpha)) @color;
5
5
  }
6
6
 
7
7
  // Lighten the @color by adding
8
8
  // white on top with @alpha opacity (0 - 1)
9
- .lighten(@color,@alpha) {
9
+ .lighten(@color; @alpha) {
10
10
  background: linear-gradient(to top, rgba(255, 255, 255, @alpha), rgba(255, 255, 255, @alpha))
11
11
  @color;
12
12
  }
@@ -1,11 +1,11 @@
1
- .make-flex-cols(@n: 12, @i: 1) when (@i =< @n) {
1
+ .make-flex-cols(@n: 12; @i: 1) when (@i =< @n) {
2
2
  .col-@{i} {
3
3
  min-width: calc((8.333333333% * @i) - (var(--c8y-margin) * 2));
4
4
  }
5
5
  .make-flex-cols(@n, (@i + 1));
6
6
  }
7
7
 
8
- .make-flex-cols-container(@n: 150, @i: 20) when (@i =< @n) {
8
+ .make-flex-cols-container(@n: 150; @i: 20) when (@i =< @n) {
9
9
  .content-flex-@{i}{
10
10
  --c8y-multiplier: calc((@i * 1rem) - 100%);
11
11
  }
@@ -66,7 +66,7 @@
66
66
  //
67
67
  // Example usage: change the default blue border and shadow to white for better
68
68
  // contrast against a dark gray background.
69
- .form-control-focus(@border: @form-control-border-color-focus, @bg: @form-control-background-focus, @color: @form-control-color-focus) {
69
+ .form-control-focus(@border: @form-control-border-color-focus; @bg: @form-control-background-focus; @color: @form-control-color-focus) {
70
70
  &:focus {
71
71
  border-color: @border;
72
72
  outline: 0;
@@ -0,0 +1,117 @@
1
+
2
+ // Horizontal gradient, from left to right
3
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
4
+ // Color stops are not available in IE9 and below.
5
+ .gradient-horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
6
+ background-image: -webkit-linear-gradient(
7
+ left;
8
+ @start-color @start-percent;
9
+ @end-color @end-percent
10
+ ); // Safari 5.1-6, Chrome 10+
11
+ background-image: -o-linear-gradient(
12
+ left;
13
+ @start-color @start-percent;
14
+ @end-color @end-percent
15
+ ); // Opera 12
16
+ background-image: linear-gradient(
17
+ to right;
18
+ @start-color @start-percent;
19
+ @end-color @end-percent
20
+ ); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
21
+ background-repeat: repeat-x;
22
+ filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr='#{color.ie-hex-str(@start-color)}', endColorstr='#{color.ie-hex-str(@end-color)}', GradientType=1)"; // IE9 and down
23
+ }
24
+
25
+ // Vertical gradient, from top to bottom
26
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
27
+ // Color stops are not available in IE9 and below.
28
+ .gradient-vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
29
+ background-image: -webkit-linear-gradient(
30
+ top;
31
+ @start-color @start-percent;
32
+ @end-color @end-percent
33
+ ); // Safari 5.1-6, Chrome 10+
34
+ background-image: -o-linear-gradient(
35
+ top;
36
+ @start-color @start-percent;
37
+ @end-color @end-percent
38
+ ); // Opera 12
39
+ background-image: linear-gradient(
40
+ to bottom;
41
+ @start-color @start-percent;
42
+ @end-color @end-percent
43
+ ); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
44
+ background-repeat: repeat-x;
45
+ filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr='#{color.ie-hex-str(@start-color)}', endColorstr='#{color.ie-hex-str(@end-color)}', GradientType=0)"; // IE9 and down
46
+ }
47
+
48
+ .gradient-directional(@start-color: #555; @end-color: #333; @deg: 45deg) {
49
+ background-repeat: repeat-x;
50
+ background-image: -webkit-linear-gradient(
51
+ @deg;
52
+ @start-color;
53
+ @end-color
54
+ ); // Safari 5.1-6, Chrome 10+
55
+ background-image: -o-linear-gradient(@deg; @start-color; @end-color); // Opera 12
56
+ background-image: linear-gradient(
57
+ @deg;
58
+ @start-color;
59
+ @end-color
60
+ ); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
61
+ }
62
+ .gradient-horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
63
+ background-image: -webkit-linear-gradient(
64
+ left;
65
+ @start-color;
66
+ @mid-color @color-stop;
67
+ @end-color
68
+ );
69
+ background-image: -o-linear-gradient(left; @start-color; @mid-color @color-stop; @end-color);
70
+ background-image: linear-gradient(to right; @start-color; @mid-color @color-stop; @end-color);
71
+ background-repeat: no-repeat;
72
+ filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr='#{color.ie-hex-str(@start-color)}', endColorstr='#{color.ie-hex-str(@end-color)}', GradientType=1)"; // IE9 and down, gets no color-stop at all for proper fallback
73
+ }
74
+ .gradient-vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
75
+ background-image: -webkit-linear-gradient(@start-color; @mid-color @color-stop; @end-color);
76
+ background-image: -o-linear-gradient(@start-color; @mid-color @color-stop; @end-color);
77
+ background-image: linear-gradient(@start-color; @mid-color @color-stop; @end-color);
78
+ background-repeat: no-repeat;
79
+ filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr='#{color.ie-hex-str(@start-color)}', endColorstr='#{color.ie-hex-str(@end-color)}', GradientType=0)"; // IE9 and down, gets no color-stop at all for proper fallback
80
+ }
81
+ .gradient-radial(@inner-color: #555; @outer-color: #333) {
82
+ background-image: -webkit-radial-gradient(circle; @inner-color; @outer-color);
83
+ background-image: radial-gradient(circle; @inner-color; @outer-color);
84
+ background-repeat: no-repeat;
85
+ }
86
+ .gradient-striped(@color: rgba(255,255,255,0.15); @angle: 45deg) {
87
+ background-image: -webkit-linear-gradient(
88
+ @angle;
89
+ @color 25%,
90
+ transparent 25%,
91
+ transparent 50%;
92
+ @color 50%;
93
+ @color 75%,
94
+ transparent 75%,
95
+ transparent
96
+ );
97
+ background-image: -o-linear-gradient(
98
+ @angle;
99
+ @color 25%,
100
+ transparent 25%,
101
+ transparent 50%;
102
+ @color 50%;
103
+ @color 75%,
104
+ transparent 75%,
105
+ transparent
106
+ );
107
+ background-image: linear-gradient(
108
+ @angle;
109
+ @color 25%,
110
+ transparent 25%,
111
+ transparent 50%;
112
+ @color 50%;
113
+ @color 75%,
114
+ transparent 75%,
115
+ transparent
116
+ );
117
+ }
@@ -7,14 +7,14 @@
7
7
  .col(@index) {
8
8
  // initial
9
9
  @item: ~'.col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}';
10
- .col((@index + 1), @item);
10
+ .col((@index + 1); @item);
11
11
  }
12
- .col(@index, @list) when (@index =< @grid-columns) {
12
+ .col(@index; @list) when (@index =< @grid-columns) {
13
13
  // general; "=<" isn't a typo
14
14
  @item: ~'.col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}';
15
- .col((@index + 1), ~'@{list}, @{item}');
15
+ .col((@index + 1); ~'@{list}, @{item}');
16
16
  }
17
- .col(@index, @list) when (@index > @grid-columns) {
17
+ .col(@index; @list) when (@index > @grid-columns) {
18
18
  // terminal
19
19
  @{list} {
20
20
  position: relative;
@@ -32,14 +32,14 @@
32
32
  .col(@index) {
33
33
  // initial
34
34
  @item: ~'.col-@{class}-@{index}';
35
- .col((@index + 1), @item);
35
+ .col((@index + 1); @item);
36
36
  }
37
- .col(@index, @list) when (@index =< @grid-columns) {
37
+ .col(@index; @list) when (@index =< @grid-columns) {
38
38
  // general
39
39
  @item: ~'.col-@{class}-@{index}';
40
- .col((@index + 1), ~'@{list}, @{item}');
40
+ .col((@index + 1); ~'@{list}, @{item}');
41
41
  }
42
- .col(@index, @list) when (@index > @grid-columns) {
42
+ .col(@index; @list) when (@index > @grid-columns) {
43
43
  // terminal
44
44
  @{list} {
45
45
  float: left;
@@ -48,49 +48,49 @@
48
48
  .col(1); // kickstart it
49
49
  }
50
50
 
51
- .calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {
51
+ .calc-grid-column(@index; @class; @type) when (@type = width) and (@index > 0) {
52
52
  .col-@{class}-@{index} {
53
53
  width: percentage((@index / @grid-columns));
54
54
  }
55
55
  }
56
- .calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {
56
+ .calc-grid-column(@index; @class; @type) when (@type = push) and (@index > 0) {
57
57
  .col-@{class}-push-@{index} {
58
58
  left: percentage((@index / @grid-columns));
59
59
  }
60
60
  }
61
- .calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {
61
+ .calc-grid-column(@index; @class; @type) when (@type = push) and (@index = 0) {
62
62
  .col-@{class}-push-0 {
63
63
  left: auto;
64
64
  }
65
65
  }
66
- .calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {
66
+ .calc-grid-column(@index; @class; @type) when (@type = pull) and (@index > 0) {
67
67
  .col-@{class}-pull-@{index} {
68
68
  right: percentage((@index / @grid-columns));
69
69
  }
70
70
  }
71
- .calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {
71
+ .calc-grid-column(@index; @class; @type) when (@type = pull) and (@index = 0) {
72
72
  .col-@{class}-pull-0 {
73
73
  right: auto;
74
74
  }
75
75
  }
76
- .calc-grid-column(@index, @class, @type) when (@type = offset) {
76
+ .calc-grid-column(@index; @class; @type) when (@type = offset) {
77
77
  .col-@{class}-offset-@{index} {
78
78
  margin-left: percentage((@index / @grid-columns));
79
79
  }
80
80
  }
81
81
 
82
82
  // Basic looping in LESS
83
- .loop-grid-columns(@index, @class, @type) when (@index >= 0) {
84
- .calc-grid-column(@index, @class, @type);
83
+ .loop-grid-columns(@index; @class; @type) when (@index >= 0) {
84
+ .calc-grid-column(@index; @class; @type);
85
85
  // next iteration
86
- .loop-grid-columns((@index - 1), @class, @type);
86
+ .loop-grid-columns((@index - 1); @class; @type);
87
87
  }
88
88
 
89
89
  // Create grid for specific class
90
90
  .make-grid(@class) {
91
91
  .float-grid-columns(@class);
92
- .loop-grid-columns(@grid-columns, @class, width);
93
- .loop-grid-columns(@grid-columns, @class, pull);
94
- .loop-grid-columns(@grid-columns, @class, push);
95
- .loop-grid-columns(@grid-columns, @class, offset);
92
+ .loop-grid-columns(@grid-columns; @class; width);
93
+ .loop-grid-columns(@grid-columns; @class; pull);
94
+ .loop-grid-columns(@grid-columns; @class; push);
95
+ .loop-grid-columns(@grid-columns; @class; offset);
96
96
  }
@@ -0,0 +1,29 @@
1
+
2
+ // Icon font base styles
3
+ // These mixins replace @extend for better performance
4
+
5
+ .c8y-glyph() {
6
+ display: inline-block;
7
+ text-decoration: inherit;
8
+ text-transform: none;
9
+ font-weight: normal;
10
+ font-style: normal;
11
+ font-variant: normal;
12
+ font-family: 'c8y-glyphs' !important;
13
+ line-height: 1;
14
+ text-rendering: optimizeLegibility;
15
+ -moz-osx-font-smoothing: grayscale;
16
+ -webkit-font-smoothing: antialiased;
17
+ }
18
+
19
+ .dlt-c8y-icon() {
20
+ display: inline-block;
21
+ text-transform: none;
22
+ font-weight: normal;
23
+ font-style: normal;
24
+ font-variant: normal;
25
+ font-family: 'dlt-c8y-icons' !important;
26
+ line-height: 1;
27
+ -webkit-font-smoothing: antialiased;
28
+ -moz-osx-font-smoothing: grayscale;
29
+ }
@@ -1,7 +1,11 @@
1
+
1
2
  // Vertically center elements in the navbar.
2
3
  // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
3
4
 
4
5
  .navbar-vertical-align(@element-height) {
5
- margin-top: calc((@navbar-height - @element-height) / 2);
6
- margin-bottom: calc((@navbar-height - @element-height) / 2);
6
+ // Wrap in & {} to opt into new SCSS behavior for mixed declarations
7
+ & {
8
+ margin-top: calc((@navbar-height - @element-height) / 2);
9
+ margin-bottom: calc((@navbar-height - @element-height) / 2);
10
+ }
7
11
  }
@@ -4,6 +4,9 @@
4
4
  // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
5
5
 
6
6
  @mixin navbar-vertical-align($element-height) {
7
- margin-top: calc(($navbar-height - $element-height) / 2);
8
- margin-bottom: calc(($navbar-height - $element-height) / 2);
7
+ // Wrap in & {} to opt into new SCSS behavior for mixed declarations
8
+ & {
9
+ margin-top: calc(($navbar-height - $element-height) / 2);
10
+ margin-bottom: calc(($navbar-height - $element-height) / 2);
11
+ }
9
12
  }