@c8y/style 1023.37.0 → 1023.43.2

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 (266) 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 +512 -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 +83 -43
  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 -5
  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 +21 -39
  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 +41 -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 +19 -14
  93. package/styles/components/navigation-and-layout/navigation/_tabs.scss +3 -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 +126 -21
  142. package/styles/layout/_page-tabs.scss +14 -1
  143. package/styles/layout/_split-scroll.less +16 -4
  144. package/styles/layout/_split-view.less +19 -5
  145. package/styles/login-app-use.scss +2 -2
  146. package/styles/login-app.less +4 -4
  147. package/styles/mixins/_buttons.scss +1 -0
  148. package/styles/mixins/{color-mixins.less → _color-mixins.less} +2 -2
  149. package/styles/mixins/{element-queries.less → _element-queries.less} +2 -2
  150. package/styles/mixins/{forms.less → _forms.less} +1 -1
  151. package/styles/mixins/_gradients.less +117 -0
  152. package/styles/mixins/{grid-framework.less → _grid-framework.less} +21 -21
  153. package/styles/mixins/_grid-framework.scss +1 -1
  154. package/styles/mixins/_icon-base.less +29 -0
  155. package/styles/mixins/{nav-vertical-align.less → _nav-vertical-align.less} +6 -2
  156. package/styles/mixins/_nav-vertical-align.scss +5 -2
  157. package/styles/mixins/{progress-bar.less → _progress-bar.less} +1 -1
  158. package/styles/mixins/{shadows-helper.less → _shadows-helper.less} +3 -5
  159. package/styles/mixins/_shadows-helper.scss +1 -4
  160. package/styles/mixins/{vendor-prefixes.less → _vendor-prefixes.less} +7 -22
  161. package/styles/mixins/_vendor-prefixes.scss +1 -17
  162. package/styles/utilities/_borders.less +21 -11
  163. package/styles/{components/specialized → utilities}/_c8y-utils.less +14 -0
  164. package/styles/{components/specialized → utilities}/_c8y-utils.scss +1 -1
  165. package/styles/utilities/_caret.less +18 -4
  166. package/styles/utilities/_container-queries.less +11 -3
  167. package/styles/utilities/_contextual-colors.less +48 -119
  168. package/styles/utilities/_display.less +26 -41
  169. package/styles/utilities/_elevation.less +17 -7
  170. package/styles/utilities/_flex-containers.less +10 -0
  171. package/styles/utilities/_flex-items.less +11 -0
  172. package/styles/utilities/_icon-utils.less +15 -3
  173. package/styles/utilities/_margins-paddings.less +23 -4
  174. package/styles/utilities/_overflows.less +10 -0
  175. package/styles/utilities/_position.less +11 -0
  176. package/styles/utilities/_quickfloats.less +20 -1
  177. package/styles/utilities/_separators.less +11 -0
  178. package/styles/utilities/_shadows.less +5 -49
  179. package/styles/{utilities.less → utilities/_sizing.less} +13 -21
  180. package/styles/utilities/_text-utils.less +35 -24
  181. package/styles/vendor/ace-editor/_ace-editor.less +1 -0
  182. package/styles/vendor/angular/_loading-bar.less +1 -0
  183. package/styles/vendor/angular/_ui-sortable.less +2 -1
  184. package/styles/vendor/angular/_uib-accordion.less +1 -0
  185. package/styles/{angular-ui-select/select.less → vendor/angular/angular-ui-select/_select.less} +2 -10
  186. package/styles/vendor/cdk/_cdk-drag.less +3 -0
  187. package/styles/vendor/cdk/_cdk-tree.less +6 -3
  188. package/styles/vendor/cdk/_cdk-virtual-scroll-window.less +1 -0
  189. package/styles/vendor/datepicker/_bs-datepicker.less +26 -6
  190. package/styles/vendor/datepicker/_uib-datepicker.less +37 -4
  191. package/styles/vendor/leaflet/_c8y-map-internal.less +44 -54
  192. package/styles/vendor/leaflet/_leaflet.less +4 -1
  193. package/styles/vendor/other/_colorpicker.less +3 -2
  194. package/styles/vendor/selectize/_c8y-selectize.less +33 -10
  195. package/variables/_color-defaults.less +29 -10
  196. package/variables/_color-defaults.scss +29 -10
  197. package/variables/_color-vars.less +37 -89
  198. package/variables/_color-vars.scss +19 -77
  199. package/variables/{login-vars.less → _login-vars.less} +3 -5
  200. package/variables/index.less +3 -3
  201. package/variables/tokens/{c8y-design-tokens-dark.less → _c8y-design-tokens-dark.less} +5 -1
  202. package/variables/tokens/{c8y-design-tokens.less → _c8y-design-tokens.less} +5 -1
  203. package/styles/components/specialized/_boxed-label.less +0 -21
  204. package/styles/components/specialized/_boxed-label.scss +0 -36
  205. package/styles/components/specialized/_c8y-cookie-banner.less +0 -22
  206. package/styles/components/specialized/_static-assets-file-picker.less +0 -8
  207. package/styles/dashboard/welcome-widget.less +0 -50
  208. package/styles/mixins/gradients.less +0 -142
  209. package/styles/mixins.less +0 -45
  210. package/styles/steps-navbar.less +0 -97
  211. package/styles/timeline-list.less +0 -210
  212. package/styles/vendor/angular/angular-ui-select/select.less +0 -161
  213. package/styles/welcome.less +0 -128
  214. /package/styles/components/{specialized → application-and-system}/_c8y-cookie-banner.scss +0 -0
  215. /package/styles/components/{specialized → application-and-system}/_c8y-login.scss +0 -0
  216. /package/styles/components/{specialized → data-display-and-visualization}/_c8y-datapoint-pill.scss +0 -0
  217. /package/styles/components/{specialized → data-display-and-visualization}/_c8y-pulse.scss +0 -0
  218. /package/styles/components/{specialized → data-display-and-visualization}/_smart-list-icon-label.scss +0 -0
  219. /package/styles/components/{specialized → data-display-and-visualization}/_status.scss +0 -0
  220. /package/styles/components/{specialized → data-display-and-visualization}/_statusContainer.scss +0 -0
  221. /package/styles/components/{specialized → data-input}/_c8y-countdown-interval.scss +0 -0
  222. /package/styles/components/{specialized → data-input}/_c8y-range.scss +0 -0
  223. /package/styles/components/{specialized → data-input}/_search-header.scss +0 -0
  224. /package/styles/components/{specialized → data-input}/_static-assets-file-picker.scss +0 -0
  225. /package/styles/components/{specialized → navigation-and-layout}/_c8y-role-card.scss +0 -0
  226. /package/styles/components/{specialized → navigation-and-layout}/_c8y-scrollbar.scss +0 -0
  227. /package/styles/components/{specialized → navigation-and-layout}/_c8y-smart-rest-tab.scss +0 -0
  228. /package/styles/components/{specialized → navigation-and-layout}/_c8y-stepper.scss +0 -0
  229. /package/styles/components/{specialized → navigation-and-layout}/_c8y-user-roles.scss +0 -0
  230. /package/styles/components/{specialized → navigation-and-layout}/_device-software-tab.scss +0 -0
  231. /package/styles/components/{specialized → status-feedback-and-notifications}/_c8y-message-banner.scss +0 -0
  232. /package/styles/components/{specialized → status-feedback-and-notifications}/_code.scss +0 -0
  233. /package/styles/mixins/{alert-variant.less → _alert-variant.less} +0 -0
  234. /package/styles/mixins/{animation.less → _animation.less} +0 -0
  235. /package/styles/mixins/{background-variant.less → _background-variant.less} +0 -0
  236. /package/styles/mixins/{border-radius.less → _border-radius.less} +0 -0
  237. /package/styles/mixins/{buttons.less → _buttons.less} +0 -0
  238. /package/styles/mixins/{c8y-scrollbar.less → _c8y-scrollbar.less} +0 -0
  239. /package/styles/mixins/{center-block.less → _center-block.less} +0 -0
  240. /package/styles/mixins/{clearfix.less → _clearfix.less} +0 -0
  241. /package/styles/mixins/{create-grid.less → _create-grid.less} +0 -0
  242. /package/styles/mixins/{grid.less → _grid.less} +0 -0
  243. /package/styles/mixins/{hide-scrollbars.less → _hide-scrollbars.less} +0 -0
  244. /package/styles/mixins/{hide-text.less → _hide-text.less} +0 -0
  245. /package/styles/mixins/{image.less → _image.less} +0 -0
  246. /package/styles/mixins/{labels.less → _labels.less} +0 -0
  247. /package/styles/mixins/{list-group.less → _list-group.less} +0 -0
  248. /package/styles/mixins/{nav-divider.less → _nav-divider.less} +0 -0
  249. /package/styles/mixins/{opacity.less → _opacity.less} +0 -0
  250. /package/styles/mixins/{pagination.less → _pagination.less} +0 -0
  251. /package/styles/mixins/{panels.less → _panels.less} +0 -0
  252. /package/styles/mixins/{reset-filter.less → _reset-filter.less} +0 -0
  253. /package/styles/mixins/{reset-text.less → _reset-text.less} +0 -0
  254. /package/styles/mixins/{resize.less → _resize.less} +0 -0
  255. /package/styles/mixins/{responsive-visibility.less → _responsive-visibility.less} +0 -0
  256. /package/styles/mixins/{size.less → _size.less} +0 -0
  257. /package/styles/mixins/{tab-focus.less → _tab-focus.less} +0 -0
  258. /package/styles/mixins/{table-row.less → _table-row.less} +0 -0
  259. /package/styles/mixins/{tag.less → _tag.less} +0 -0
  260. /package/styles/mixins/{text-emphasis.less → _text-emphasis.less} +0 -0
  261. /package/styles/mixins/{text-overflow.less → _text-overflow.less} +0 -0
  262. /package/variables/{login-vars.scss → _login-vars.scss} +0 -0
  263. /package/variables/{shadows.less → _shadows.less} +0 -0
  264. /package/variables/{shadows.scss → _shadows.scss} +0 -0
  265. /package/variables/tokens/{c8y-design-tokens-dark.scss → _c8y-design-tokens-dark.scss} +0 -0
  266. /package/variables/tokens/{c8y-design-tokens.scss → _c8y-design-tokens.scss} +0 -0
@@ -1,3 +1,20 @@
1
+
2
+ @import "../../../mixins/_tab-focus.less";
3
+ @import "../../../mixins/_vendor-prefixes.less";
4
+
5
+ /**
6
+ * C8Y Nav Stacked - Stacked navigation list component
7
+ *
8
+ * Note: Uses @size-* tokens for spacing; @size-base for calculations, and component color variables.
9
+ *
10
+ * Intentionally hardcoded values:
11
+ * - Border widths (1px): Standard borders
12
+ * - Percentages (100%): Layout
13
+ * - Transition durations (0.25s): Animation timing
14
+ * - Box-shadow values: Borders and focus effects
15
+ * - Z-index values (10): Stacking order
16
+ */
17
+
1
18
  .c8y-nav-stacked {
2
19
  position: relative;
3
20
  z-index: 10;
@@ -13,23 +30,22 @@
13
30
  float: none;
14
31
  align-items: center;
15
32
  flex-flow: row nowrap;
16
- padding: 9px 0 9px 16px;
33
+ padding: @size-8 0 @size-8 @size-16;
17
34
  width: 100%;
18
35
  border: 0;
19
36
  background-color: @component-background-expanded;
20
37
  background-image: none;
21
38
  box-shadow: inset 0 -1px 0 @component-border-color;
22
39
  cursor: pointer;
23
-
24
40
  appearance: none;
25
- .transition(all 0.25s ease);
41
+ transition: all 0.25s ease;
26
42
 
27
43
  &:hover:not(.active) {
28
44
  background-color: @component-background-active;
29
45
  box-shadow: inset 0 0 0 1px @component-color-actions-hover;
30
46
  .ui-sortable-handle {
31
- margin-left: -16px;
32
- width: 30px;
47
+ margin-left: calc(-1 * @size-8);
48
+ margin-right: @size-8;
33
49
  outline: none;
34
50
  }
35
51
  }
@@ -43,30 +59,26 @@
43
59
  }
44
60
 
45
61
  &.active {
46
- border-left: 4px solid @component-brand-primary;
62
+ border-left: @size-4 solid @component-brand-primary;
47
63
  background-color: @component-background-default;
48
- .btn-remove {
49
- display: none;
50
- }
51
64
  }
52
65
  > .c8y-switch {
53
- margin: calc(@margin-base * -1 - 1px) 0 calc(@margin-base * -1);
66
+ margin: calc(@size-base * -1 - 1px) 0 calc(@size-base * -1);
54
67
  }
55
68
  .msgid {
56
69
  display: inline-block;
57
- min-width: 40px;
70
+ min-width: @size-40;
58
71
  }
59
72
  }
60
73
 
61
74
  &.ui-sortable .c8y-stacked-item {
62
- max-height: 40px !important;
63
75
  .ui-sortable-handle {
64
76
  overflow: hidden;
65
77
  margin-left: 0;
78
+ margin-right: 0;
66
79
  width: 0;
67
80
  text-align: center;
68
-
69
- .transition(all 0.25s ease);
81
+ transition: all 0.25s ease;
70
82
  }
71
83
  }
72
84
  }
@@ -1,6 +1,30 @@
1
+
2
+ @import "../../../mixins/_gradients.less";
3
+ @import "../../../mixins/_shadows-helper.less";
4
+ @import "../../../mixins/_tab-focus.less";
5
+ @import "../../../mixins/_vendor-prefixes.less";
6
+
7
+ /**
8
+ * Main Header - Application main header component
9
+ *
10
+ * Note: Uses @size-* tokens for spacing and @headerHeight for calculations.
11
+ *
12
+ * Intentionally hardcoded values:
13
+ * - Off-token spacing (9px, 11px, 15px): Legacy spacing not in token system
14
+ * - Border widths (1px, 2px): Standard borders
15
+ * - Percentages (50%, 100%): Layout
16
+ * - Calc expressions: Complex computed values
17
+ * - Transition durations: Animation timing
18
+ * - Box-shadow values: Elevation
19
+ * - Z-index values: Stacking order
20
+ */
21
+
22
+
1
23
  // mixin to apply horizontal gradient in header
2
- .checkHorizontalGradient(@color1; @color2) when not (@color1='') {
3
- #gradient > .horizontal(@start-color: @color1; @end-color: @color2);
24
+ .checkHorizontalGradient(@color1; @color2) {
25
+ & when not (@color1 = ~'') {
26
+ .gradient-horizontal(@start-color: @color1; @end-color: @color2);
27
+ }
4
28
  }
5
29
 
6
30
  // APP MAIN HEADER
@@ -78,7 +102,7 @@
78
102
  justify-content: center;
79
103
  color: @header-text-color;
80
104
  border: 1px solid @header-text-color;
81
- font-size: 24px;
105
+ font-size: @size-24;
82
106
  }
83
107
 
84
108
 
@@ -86,7 +110,11 @@
86
110
  .dropdown-menu:not(.app-switcher-dropdown-menu):not(.search-mobile-menu) {
87
111
  a,
88
112
  .btn {
89
- .text-truncate();
113
+ display: block;
114
+ overflow: hidden !important;
115
+ max-width: 100% !important;
116
+ text-overflow: ellipsis !important;
117
+ white-space: nowrap !important;
90
118
  }
91
119
  }
92
120
 
@@ -95,7 +123,7 @@
95
123
  [dropdown].open .c8y-dropdown + .dropdown-menu,
96
124
  .btn-group.open .c8y-dropdown + .dropdown-menu {
97
125
  display: block;
98
- .boxShadowHelper(6, right);
126
+ .boxShadowHelper(md, right);
99
127
  }
100
128
 
101
129
  .app-switcher {
@@ -122,13 +150,13 @@ body:not(:has(.has-tabs)):not(:has(.has-action-bar)) {
122
150
  button {
123
151
  margin: 0 auto;
124
152
  width: 48px;
125
- height: 24px;
153
+ height: @size-24;
126
154
  color: @header-text-color;
127
155
  background-color: @headerColor;
128
156
  display: block;
129
157
  transition: margin 0.5s ease 0.35s;
130
158
  border: 0;
131
- border-radius: 0 0 24px 24px;
159
+ border-radius: 0 0 @size-24 @size-24;
132
160
  .boxShadowHelper(1);
133
161
 
134
162
  &:focus {
@@ -168,7 +196,7 @@ body:not(:has(.has-tabs)):not(:has(.has-action-bar)) {
168
196
  flex-flow: row wrap;
169
197
  align-items: center;
170
198
  box-shadow: var(--c8y-main-header-shadow);
171
- padding-right: @margin-24;
199
+ padding-right: @size-24;
172
200
 
173
201
  @media (min-width: @screen-sm-min) {
174
202
  min-height: @header-bar-height;
@@ -191,9 +219,9 @@ body:not(:has(.has-tabs)):not(:has(.has-action-bar)) {
191
219
  .app-noicon,
192
220
  .txt {
193
221
  transition: all @open-menu-time-type;
194
- width: 32px;
195
- margin-left: @margin-base;
196
- margin-right: @margin-base;
222
+ width: @size-32;
223
+ margin-left: @size-base;
224
+ margin-right: @size-base;
197
225
  .scale(1);
198
226
  }
199
227
 
@@ -237,7 +265,7 @@ body:not(:has(.has-tabs)):not(:has(.has-action-bar)) {
237
265
 
238
266
  .navigator-toggle,
239
267
  .drawer-toggle {
240
- font-size: 16px;
268
+ font-size: @size-16;
241
269
  padding-left: 8px;
242
270
  padding-right: 8px;
243
271
 
@@ -316,7 +344,7 @@ body:not(:has(.has-tabs)):not(:has(.has-action-bar)) {
316
344
 
317
345
  .spinner {
318
346
  position: relative;
319
- margin: 0 0 0 @margin-base;
347
+ margin: 0 0 0 @size-base;
320
348
  }
321
349
  }
322
350
 
@@ -125,7 +125,7 @@
125
125
  [dropdown].open .c8y-dropdown + .dropdown-menu,
126
126
  .btn-group.open .c8y-dropdown + .dropdown-menu {
127
127
  display: block;
128
- @include shadows-helper.boxShadowHelper(6, right);
128
+ @include shadows-helper.boxShadowHelper(md, right);
129
129
  }
130
130
 
131
131
  .app-switcher {
@@ -1,17 +1,21 @@
1
+
2
+ @import "../../../mixins/_clearfix.less";
3
+ @import "../../../mixins/_nav-vertical-align.less";
4
+ @import "../../../mixins/_vendor-prefixes.less";
5
+
1
6
  .navbar {
2
7
  position: relative;
3
8
  margin-bottom: 30px;
4
9
  min-height: @navbar-height;
5
10
  background-color: @navbar-background-default;
6
11
  // Prevent floats from breaking the navbar
7
-
8
- &:extend(.clearfix all);
12
+ .clearfix();
9
13
  }
10
14
 
11
15
  // Navbar heading
12
16
  // Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy styling of responsive aspects.
13
17
  .navbar-header {
14
- &:extend(.clearfix all);
18
+ .clearfix();
15
19
  @media (min-width: @grid-float-breakpoint) {
16
20
  float: left;
17
21
  }
@@ -24,8 +28,7 @@
24
28
  padding-left: @component-padding;
25
29
  border-top: 1px solid transparent;
26
30
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
27
-
28
- &:extend(.clearfix all);
31
+ .clearfix();
29
32
  &.in {
30
33
  overflow-y: auto;
31
34
  }
@@ -51,8 +54,8 @@
51
54
  }
52
55
  }
53
56
  @media (min-width: @screen-lg-min) {
54
- padding-right: @margin-8;
55
- padding-left: @margin-8;
57
+ padding-right: @size-8;
58
+ padding-left: @size-8;
56
59
  }
57
60
  }
58
61
 
@@ -140,12 +143,12 @@
140
143
  position: relative;
141
144
  float: right;
142
145
  margin-right: @navbar-padding-horizontal;
143
- padding: 9px 10px;
146
+ padding: 9px @size-10;
144
147
  border: 1px solid transparent;
145
148
  border-color: transparent;
146
149
  border-radius: @component-border-radius-base; // We remove the `outline` here, but later compensate by attaching `:hover`
147
150
  background-color: transparent;
148
- background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
151
+ background-image: none; // Reset unusual Firefox-on-Android default style,see https://github.com/necolas/normalize.css/issues/214
149
152
 
150
153
  .navbar-vertical-align(34px);
151
154
  &:focus {
@@ -159,7 +162,7 @@
159
162
  background-color: @navbar-color-default;
160
163
  }
161
164
  .icon-bar + .icon-bar {
162
- margin-top: 4px;
165
+ margin-top: @size-4;
163
166
  }
164
167
  &:hover,
165
168
  &:focus {
@@ -175,8 +178,8 @@
175
178
  .navbar-nav {
176
179
  margin: calc(@navbar-padding-vertical * 0.5) calc(@navbar-padding-horizontal * -1);
177
180
  > li > a {
178
- padding-top: 10px;
179
- padding-bottom: 10px;
181
+ padding-top: @size-10;
182
+ padding-bottom: @size-10;
180
183
  line-height: @line-height-computed;
181
184
  }
182
185
  @media (max-width: (@screen-sm-min - 1)) {
@@ -242,14 +245,14 @@
242
245
  >.form-group {
243
246
  display: inline-block;
244
247
  margin-bottom: 0;
245
- max-height: 32px !important;
248
+ max-height: @size-32 !important;
246
249
  vertical-align: middle;
247
250
 
248
251
  > label {
249
- margin-right: @margin-8;
252
+ margin-right: @size-8;
250
253
  }
251
254
  + .form-group {
252
- margin-left: @margin-8;
255
+ margin-left: @size-8;
253
256
  }
254
257
  }
255
258
 
@@ -302,13 +305,7 @@
302
305
  position: relative;
303
306
  margin-left: 0;
304
307
  } // Re-override the feedback icon.
305
- // Removed unused logic: .has-feedback
306
- //.has-feedback .form-control-feedback {
307
- // top: 0;
308
- //}
309
- //.has-feedback .form-control-feedback-message {
310
- // top: @form-control-height-base;
311
- //}
308
+ // Removed unused logic: .has-feedback .form-control-feedback
312
309
  }
313
310
  >.form-group {
314
311
  @media (max-width: @screen-sm-min) {
@@ -318,7 +315,7 @@
318
315
  }
319
316
  }
320
317
  } // Vertically center in expanded, horizontal navbar
321
- //.navbar-vertical-align(@form-control-height-base);
318
+ .navbar-vertical-align(@form-control-height-base);
322
319
  // Undo 100% width for pull classes
323
320
  @media (min-width: @screen-sm-min) {
324
321
  margin-right: 0;
@@ -376,10 +373,10 @@
376
373
  // Declared after the navbar components to ensure more specificity on the margins.
377
374
  @media (min-width: @screen-sm-min) {
378
375
  .navbar-left {
379
- .pull-left();
376
+ float: left !important;
380
377
  }
381
378
  .navbar-right {
382
- .pull-right();
379
+ float: right !important;
383
380
  margin-left: auto;
384
381
  flex-shrink: 0;
385
382
  ~ .navbar-right {
@@ -1,7 +1,7 @@
1
1
  @use "../../../../variables/index" as *;
2
2
 
3
3
  @use "../../../mixins/clearfix";
4
- @use "../../../mixins/nav-vertical-align";
4
+ @use "../../../mixins/nav-vertical-align" as *;
5
5
  @use "../../../mixins/vendor-prefixes";
6
6
 
7
7
  .navbar {
@@ -151,7 +151,7 @@
151
151
  background-color: transparent;
152
152
  background-image: none; // Reset unusual Firefox-on-Android default style,see https://github.com/necolas/normalize.css/issues/214
153
153
 
154
- @include nav-vertical-align.navbar-vertical-align(34px);
154
+ @include navbar-vertical-align(34px);
155
155
  &:focus {
156
156
  outline: 0;
157
157
  } // Bars
@@ -316,7 +316,7 @@
316
316
  }
317
317
  }
318
318
  } // Vertically center in expanded, horizontal navbar
319
- //.navbar-vertical-align($form-control-height-base);
319
+ @include navbar-vertical-align($form-control-height-base);
320
320
  // Undo 100% width for pull classes
321
321
  @media (min-width: $screen-sm-min) {
322
322
  margin-right: 0;
@@ -345,19 +345,19 @@
345
345
  // Buttons in navbars
346
346
  // Vertically center a button within a navbar (when *not* in a form).
347
347
  .navbar-btn {
348
- @include nav-vertical-align.navbar-vertical-align(32);
348
+ @include navbar-vertical-align(32);
349
349
  &.btn-sm {
350
- @include nav-vertical-align.navbar-vertical-align(28);
350
+ @include navbar-vertical-align(28);
351
351
  }
352
352
  &.btn-xs {
353
- @include nav-vertical-align.navbar-vertical-align(22);
353
+ @include navbar-vertical-align(22);
354
354
  }
355
355
  }
356
356
 
357
357
  // Text in navbars
358
358
  // Add a class to make any element properly align itself vertically within the navbars.
359
359
  .navbar-text {
360
- @include nav-vertical-align.navbar-vertical-align($line-height-computed);
360
+ @include navbar-vertical-align($line-height-computed);
361
361
  @media (min-width: $screen-sm-min) {
362
362
  float: left;
363
363
  margin-right: $navbar-padding-horizontal;
@@ -1,6 +1,12 @@
1
+
2
+ @import "../../../mixins/_color-mixins.less";
3
+ @import "../../../mixins/_gradients.less";
4
+ @import "../../../mixins/_shadows-helper.less";
5
+ @import "../../../mixins/_vendor-prefixes.less";
6
+
1
7
  // mixin to apply a vertical gradient in navigator
2
- .checkVerticalGradient(@color1; @color2) when not (@color1 ='') {
3
- #gradient > .vertical(@start-color: @color1; @end-color: @color2);
8
+ .checkVerticalGradient(@color1; @color2) when not (@color1 = '') {
9
+ .gradient-vertical(@start-color: @color1; @end-color: @color2);
4
10
  }
5
11
 
6
12
  .navigator {
@@ -20,7 +26,7 @@
20
26
  .checkVerticalGradient(@grad-top; @grad-bottom);
21
27
 
22
28
  @media (min-width: @screen-sm-min) {
23
- left: -(@navigatorWidth + 10);
29
+ left: calc((@navigatorWidth + 10px) * -1);
24
30
  width: @navigatorWidth;
25
31
  }
26
32
 
@@ -40,7 +46,8 @@
40
46
  padding-bottom: 0;
41
47
  }
42
48
 
43
- .tenant-brand when (@appLogo =deprecated) {
49
+ // Note: LESS guard removed - was: when (@appLogo =deprecated)
50
+ .tenant-brand {
44
51
  display: block;
45
52
 
46
53
  background-size: contain;
@@ -48,11 +55,10 @@
48
55
  background-repeat: no-repeat;
49
56
  margin: 0 auto;
50
57
  width: 208px;
51
-
52
- & when not(@extending) {
53
- background-image: @navigator-platform-logo;
54
- padding-bottom: @navigator-platform-logo-height;
55
- }
58
+
59
+ // Note: LESS guard removed - was: & when not(@extending)
60
+ background-image: @navigator-platform-logo;
61
+ padding-bottom: @navigator-platform-logo-height;
56
62
  }
57
63
  .c8y-logo {
58
64
  .tenant-brand{
@@ -68,9 +74,9 @@
68
74
  z-index: 100;
69
75
  display: flex;
70
76
  align-items: center;
71
- gap: @margin-8;
77
+ gap: @size-8;
72
78
  margin: 0;
73
- padding: @navigator-app-name-size @margin-16;
79
+ padding: @navigator-app-name-size @size-16;
74
80
  font-size: @navigator-app-name-size;
75
81
  font-weight: 600;
76
82
  text-overflow: ellipsis;
@@ -94,7 +100,7 @@
94
100
  height: 4px;
95
101
  content: '';
96
102
  background-color: @navColorHeader;
97
- .shadow-scroll();
103
+ box-shadow: 0 2px 3px fade(black, 10%);
98
104
  }
99
105
  .c8y-app-icon{
100
106
  display: contents;
@@ -117,56 +123,48 @@
117
123
  }
118
124
 
119
125
  .app-noicon {
120
- width: calc(@margin-base * 6);
121
- height: calc(@margin-base * 6);
122
- line-height: calc(@margin-base * 6);
126
+ width: calc(@size-base * 6);
127
+ height: calc(@size-base * 6);
128
+ line-height: calc(@size-base * 6);
123
129
  border: 1px solid @palette-high;
124
130
  display: block;
125
131
  margin: 0;
126
132
  }
127
133
 
128
- & when not(@appBranding='') {
129
- // hide app logo
130
- text-indent: -1000px;
131
- overflow: hidden;
132
- height: 0;
133
- min-height: 0;
134
- }
135
-
136
134
  /* Legacy support for @appLogo */
137
- &
138
- when
139
- (not(@appLogo-height =deprecated))
140
- and
141
- (not(@appLogo-height =''))
142
- and
143
- (not(@appLogo =deprecated))
144
- and
145
- (not(@appLogo ='')) {
146
- & when not(@extending) {
147
- background-image: @navigator-platform-logo;
148
- }
149
-
150
- padding-top: @appLogo-height;
151
- padding-bottom: 0;
152
- background-size: contain;
153
- background-position: center 5px;
154
- background-repeat: no-repeat;
155
- line-height: 2.85;
156
-
157
- .c8y-icon,
158
- .app-noicon {
159
- display: none !important;
160
- }
161
-
162
- span {
163
- display: block;
164
- }
165
-
166
- br {
167
- display: none;
168
- }
169
- }
135
+ // Note: The following code was conditionally applied in LESS with guards.
136
+ // In SCSS, we cannot replicate LESS guards, so this legacy code is commented out.
137
+ // If you need to hide the app logo or use legacy @appLogo variables,
138
+ // you should override these styles in your custom branding CSS.
139
+ //
140
+ // Original LESS conditions were:
141
+ // - & when not(@appBranding='')
142
+ // - & when (not(@appLogo-height =deprecated)) and (not(@appLogo-height ='')) and (not(@appLogo =deprecated)) and (not(@appLogo =''))
143
+ //
144
+ // To enable legacy app logo behavior, add this to your custom CSS:
145
+ // .navigator .title {
146
+ // text-indent: -1000px;
147
+ // overflow: hidden;
148
+ // height: 0;
149
+ // min-height: 0;
150
+ // background-image: var(--navigator-platform-logo, var(--c8y-navigator-platform-logo));
151
+ // padding-top: deprecated;
152
+ // padding-bottom: 0;
153
+ // background-size: contain;
154
+ // background-position: center 5px;
155
+ // background-repeat: no-repeat;
156
+ // line-height: 2.85;
157
+ // }
158
+ // .navigator .title .c8y-icon,
159
+ // .navigator .title .app-noicon {
160
+ // display: none !important;
161
+ // }
162
+ // .navigator .title span {
163
+ // display: block;
164
+ // }
165
+ // .navigator .title br {
166
+ // display: none;
167
+ // }
170
168
  }
171
169
 
172
170
  // Navigator content
@@ -235,7 +233,11 @@
235
233
 
236
234
  > span,
237
235
  > div {
238
- .text-truncate();
236
+ display: block;
237
+ overflow: hidden !important;
238
+ max-width: 100% !important;
239
+ text-overflow: ellipsis !important;
240
+ white-space: nowrap !important;
239
241
  background-color: transparent;
240
242
  }
241
243
 
@@ -294,7 +296,7 @@
294
296
  }
295
297
 
296
298
  &.open.active {
297
- .shadow-border(1px; rgba(0, 0, 0, 0.2));
299
+ .shadow-border(1px,rgba(0, 0, 0, 0.2));
298
300
  background: @navigator-background-selected;
299
301
  }
300
302
 
@@ -323,37 +325,37 @@
323
325
  transition: all 0.35s ease;
324
326
 
325
327
  .link {
326
- padding-left: calc(@margin-16 * 1);
328
+ padding-left: calc(@size-16 * 1);
327
329
  }
328
330
 
329
331
  .children {
330
332
  .link {
331
- padding-left: calc(@margin-16 * 1 + @margin-base);
333
+ padding-left: calc(@size-16 * 1 + @size-base);
332
334
  }
333
335
 
334
336
  .children {
335
337
  .link {
336
- padding-left: calc(@margin-16 * 1 + @margin-base * 2);
338
+ padding-left: calc(@size-16 * 1 + @size-base * 2);
337
339
  }
338
340
 
339
341
  .children {
340
342
  .link {
341
- padding-left: calc(@margin-16 * 1 + @margin-base * 3);
343
+ padding-left: calc(@size-16 * 1 + @size-base * 3);
342
344
  }
343
345
 
344
346
  .children {
345
347
  .link {
346
- padding-left: calc(@margin-16 * 1 + @margin-base * 4);
348
+ padding-left: calc(@size-16 * 1 + @size-base * 4);
347
349
  }
348
350
 
349
351
  .children {
350
352
  .link {
351
- padding-left: calc(@margin-16 * 1 + @margin-base * 5);
353
+ padding-left: calc(@size-16 * 1 + @size-base * 5);
352
354
  }
353
355
 
354
356
  .children {
355
357
  .link {
356
- padding-left: calc(@margin-16 * 1 + @margin-base * 6);
358
+ padding-left: calc(@size-16 * 1 + @size-base * 6);
357
359
  }
358
360
  }
359
361
  }
@@ -375,7 +377,7 @@
375
377
  }
376
378
 
377
379
  c8y-device-status-display {
378
- height: @margin-16;
380
+ height: @size-16;
379
381
  }
380
382
 
381
383
  .statusContainer {
@@ -428,17 +430,17 @@
428
430
  margin-top: auto;
429
431
  order: 10;
430
432
  border-top: 1px solid @navigator-separator-color;
431
- padding: 0 @margin-16;
433
+ padding: 0 @size-16;
432
434
  a{
433
435
  color: currentColor;
434
436
  }
435
437
  &:has(.c8y-logo) {
436
- padding: @margin-8 @margin-16;
438
+ padding: @size-8 @size-16;
437
439
  }
438
440
  &:has(.logo-spacer) {
439
441
  display: flex;
440
442
  flex-direction: column;
441
- gap: @margin-8;
443
+ gap: @size-8;
442
444
 
443
445
  }
444
446
  p {
@@ -1,3 +1,16 @@
1
+
2
+ /**
3
+ * Navs - Base navigation component (Bootstrap 3 legacy)
4
+ *
5
+ * Note: Uses @navlink-* variables for colors and padding, component tokens for styling.
6
+ *
7
+ * Intentionally hardcoded values:
8
+ * - Border widths (2px): Standard borders and outlines
9
+ * - Negative offsets (-2px): Fine-tuning
10
+ * - Percentages (100%): Layout
11
+ * - Opacity values: Visual states
12
+ */
13
+
1
14
  .nav {
2
15
  margin-bottom: 0;
3
16
  padding-left: 0; // Override default ul/ol