@c8y/style 1023.14.76 → 1023.14.92

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,32 @@
1
+ @import "../../../variables/_dlt-c8y-icons-vars.less";
2
+
3
+ /**
4
+ * Input Groups - Form input groups with addons and buttons
5
+ *
6
+ * Note: Uses @form-control-*, @input-group-addon-*, and @size-* tokens.
7
+ *
8
+ * Intentionally hardcoded values:
9
+ * - Border widths (1px): Standard borders
10
+ * - Negative margins (-1px): Fine-tuning for overlapping borders
11
+ * - Component-specific sizes (32px, 39px, 40px, 230px): Fixed component dimensions
12
+ * - Typography sizes (12px, 14px): Font sizes
13
+ * - Off-token spacing (12px): Legacy spacing not in token system
14
+ * - Line-height values (1, 32px, 40px): Specific alignments
15
+ * - Fine-tuning offsets (3ch, 6px): Precise positioning
16
+ * - Z-index values: Layering
17
+ * - Percentages (50%, 100%): Layout calculations
18
+ * - Calc expressions: Complex computed values
19
+ * - Transition durations (0.25s): Animation timing
20
+ * - Opacity values: Visual effects
21
+ * - RGBA values: Semi-transparent colors
22
+ */
23
+
24
+ // Shared mixin for flex container with centered alignment
25
+ .flex-center() {
26
+ display: flex;
27
+ align-items: center;
28
+ }
29
+
1
30
  .input-group {
2
31
  position: relative; // For dropdowns
3
32
  display: flex;
@@ -12,7 +41,7 @@
12
41
  padding-left: 0;
13
42
  }
14
43
 
15
- .form-control + .form-control{
44
+ .form-control + .form-control {
16
45
  margin-left: -1px;
17
46
  }
18
47
  > .form-control,
@@ -33,14 +62,14 @@
33
62
  flex-grow: 0;
34
63
  flex-basis: 39px;
35
64
  }
36
- .form-control.inner-scroll{
65
+ .form-control.inner-scroll {
37
66
  box-shadow: none;
38
67
  border: 1px solid @form-control-border-color-default;
39
68
  padding-top: 0;
40
69
  padding-bottom: 0;
41
70
  align-items: center;
42
71
  background-color: @form-control-background-default;
43
- > .tag{
72
+ > .tag {
44
73
  align-self: unset;
45
74
  flex-shrink: 0;
46
75
  }
@@ -64,8 +93,7 @@
64
93
  }
65
94
 
66
95
  .input-group-addon {
67
- display: flex;
68
- align-items: center;
96
+ .flex-center();
69
97
  padding: @form-control-padding-base-vertical @form-control-padding-base-horizontal;
70
98
  border-radius: @form-control-border-radius;
71
99
  background-color: @form-control-border-color-default;
@@ -89,6 +117,13 @@
89
117
  font-size: @font-size-small;
90
118
  height: @form-control-height-sm;
91
119
  }
120
+ .form-group-lg &,
121
+ .input-group-lg &,
122
+ &.input-lg {
123
+ padding: @form-control-padding-large-vertical @form-control-padding-large-horizontal;
124
+ font-size: @font-size-large;
125
+ height: @form-control-height-lg;
126
+ }
92
127
 
93
128
  label.c8y-checkbox,
94
129
  label.c8y-radio {
@@ -112,11 +147,11 @@
112
147
  &--last, + .input-group-btn {
113
148
  margin-left: -1px;
114
149
  }
115
- .input-group-sm &{
150
+ .input-group-sm & {
116
151
  max-height: @form-control-height-sm;
117
152
  }
118
- > .btn-default{
119
- --c8y-btn-default-background-default: @form-control-background-default;
153
+ > .btn-default {
154
+ --c8y-btn-default-background-default: @{form-control-background-default};
120
155
  }
121
156
  }
122
157
 
@@ -126,7 +161,7 @@
126
161
  &:not(:first-child):not(:last-child) {
127
162
  border-radius: 0;
128
163
  }
129
- .btn{
164
+ .btn:not(.btn-dot) {
130
165
  border-radius: @form-control-border-radius;
131
166
  }
132
167
  }
@@ -140,7 +175,7 @@
140
175
  &,
141
176
  &:first-child,
142
177
  &:last-child {
143
- padding-right: calc(@form-control-height-base + @form-control-padding-base-horizontal)!important;
178
+ padding-right: calc(@form-control-height-base + @form-control-padding-base-horizontal) !important;
144
179
  padding-left: calc(@form-control-padding-base-horizontal * 2);
145
180
  border-radius: calc(@form-control-height-base * 0.5);
146
181
  }
@@ -154,13 +189,13 @@
154
189
  font-size: @font-size-large;
155
190
  }
156
191
  }
157
-
158
- &:has(.input-group-btn > .btn + .btn){
192
+
193
+ &:has(.input-group-btn > .btn + .btn) {
159
194
  .form-control {
160
195
  &,
161
196
  &:first-child,
162
197
  &:last-child {
163
- padding-right: calc(@form-control-height-base + @form-control-padding-base-horizontal * 4)!important;
198
+ padding-right: calc(@form-control-height-base + @form-control-padding-base-horizontal * 4) !important;
164
199
  }
165
200
  }
166
201
  }
@@ -187,7 +222,6 @@
187
222
  box-shadow: inset 0 0 0 2px @component-brand-primary;
188
223
  }
189
224
  }
190
-
191
225
  }
192
226
 
193
227
  &.input-group-sm, .input-group-sm & {
@@ -197,7 +231,7 @@
197
231
 
198
232
  .input-group-btn,
199
233
  .input-group-addon, .form-group {
200
- height: @form-control-height-sm!important;
234
+ height: @form-control-height-sm !important;
201
235
  }
202
236
  }
203
237
 
@@ -206,54 +240,59 @@
206
240
  .input-group-addon {
207
241
  height: @form-control-height-lg;
208
242
  max-height: unset;
209
- .btn{
210
- border-radius: @form-control-height-base!important;
243
+ .btn {
244
+ border-radius: @form-control-height-base !important;
211
245
  min-width: @form-control-height-lg;
212
246
  }
213
247
  }
214
248
  }
215
249
  }
216
250
 
217
- .input-group.input-group--dots{
251
+ .input-group.input-group--dots {
218
252
  display: flex;
219
253
  align-items: center;
220
254
  border-radius: calc(@form-control-height-base * 0.5);
221
255
  height: @form-control-height-base;
222
256
  border: 1px solid @form-control-border-color-default;
223
257
  padding: var(--c8y-form-control-padding-base-vertical);
224
- gap: @margin-8;
258
+ gap: @size-8;
225
259
  font-size: @font-size-small;
226
260
  }
227
261
 
228
- .input-group-search{
229
- .input-group-btn > .btn{
230
- border-top-right-radius: calc(@form-control-height-base * 0.5)!important;
231
- border-bottom-right-radius: calc(@form-control-height-base * 0.5)!important;
262
+ .input-group-search {
263
+ .input-group-btn > .btn {
264
+ border-top-right-radius: calc(@form-control-height-base * 0.5) !important;
265
+ border-bottom-right-radius: calc(@form-control-height-base * 0.5) !important;
232
266
  }
233
267
  &.input-group-lg {
234
- .input-group-btn > .btn{
235
- border-top-right-radius: @form-control-height-base!important;
236
- border-bottom-right-radius: @form-control-height-base!important;
268
+ .input-group-btn > .btn {
269
+ border-top-right-radius: @form-control-height-base !important;
270
+ border-bottom-right-radius: @form-control-height-base !important;
237
271
  }
238
272
  }
239
273
  }
240
274
 
241
-
242
275
  //smaller search input when using the c8y-search-input component
243
- c8y-search-input.input-group-sm{
244
- .input-group-search{
276
+ c8y-search-input.input-group-sm {
277
+ .input-group-search {
245
278
  .form-control,
246
279
  .input-group-addon,
247
280
  .input-group-btn > .btn {
248
- .input-sm();
281
+ // Inline .input-sm styles (was @extend .input-sm)
282
+ &:not(.c8y-radio):not(.c8y-checkbox) {
283
+ padding: @form-control-padding-small-vertical @form-control-padding-small-horizontal;
284
+ height: @form-control-height-sm !important;
285
+ font-size: @font-size-small;
286
+ line-height: @line-height-small;
287
+ }
249
288
  }
250
289
  }
251
290
  // add smaller left and right margins in the search dropdown
252
291
  c8y-li.m-l-32.m-r-32 {
253
- margin-left: 8px!important;
254
- margin-right: 8px!important;
292
+ margin-left: @size-8 !important;
293
+ margin-right: @size-8 !important;
255
294
  }
256
- }
295
+ }
257
296
 
258
297
  .input-group.input-group-password {
259
298
  display: flex !important;
@@ -319,7 +358,7 @@ c8y-search-input.input-group-sm{
319
358
  border-radius: @form-control-border-radius;
320
359
  }
321
360
  }
322
- &.input-group-sm{
361
+ &.input-group-sm {
323
362
  .input-group-btn,
324
363
  .input-group-addon {
325
364
  height: @form-control-height-sm;
@@ -333,7 +372,7 @@ c8y-search-input.input-group-sm{
333
372
  .input-group-btn:first-child > .btn,
334
373
  .input-group-btn:first-child > .btn-group > .btn,
335
374
  .input-group-btn:first-child > .dropdown-toggle,
336
- .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
375
+ .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle):not(.btn-dot),
337
376
  .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
338
377
  border-top-right-radius: 0;
339
378
  border-bottom-right-radius: 0;
@@ -341,7 +380,7 @@ c8y-search-input.input-group-sm{
341
380
 
342
381
  .input-group .form-control:last-child,
343
382
  .input-group-addon:last-child,
344
- .input-group-btn:last-child > .btn,
383
+ .input-group-btn:last-child > .btn:not(.btn-dot),
345
384
  .input-group-btn:last-child > .btn-group > .btn,
346
385
  .input-group-btn:last-child > .dropdown-toggle,
347
386
  .input-group-btn:first-child > .btn:not(:first-child),
@@ -363,10 +402,10 @@ c8y-search-input.input-group-sm{
363
402
  top: 50%;
364
403
  right: 0;
365
404
  display: block;
366
- margin-top: -10px;
405
+ margin-top: calc(-1 * @size-10);
367
406
  width: 1px;
368
- height: 20px;
369
- background-color: fade(@black, 10%);
407
+ height: @size-20;
408
+ background-color: rgba(@black, (10 / 100));
370
409
  content: '';
371
410
  }
372
411
  }
@@ -437,7 +476,7 @@ c8y-search-input.input-group-sm{
437
476
  + span:after {
438
477
  z-index: 5;
439
478
  display: inline-block;
440
- margin-left: -16px;
479
+ margin-left: calc(-1 * @size-16);
441
480
  color: @component-brand-primary;
442
481
  content: @dlt-c8y-icon-pencil;
443
482
  font: normal normal normal 14px/1 @icon-font-family;
@@ -476,19 +515,31 @@ c8y-search-input.input-group-sm{
476
515
  .input-group-lg > .input-group-addon,
477
516
  .input-group-lg > .input-group-btn > .btn,
478
517
  .input-group-search.input-group-lg .input-group > .form-control,
479
- .input-group-search.input-group-lg .input-group-btn > .btn{
480
- .input-lg();
518
+ .input-group-search.input-group-lg .input-group-btn > .btn {
519
+ // Inline .input-lg styles (was @extend .input-lg)
520
+ &:not(.c8y-radio):not(.c8y-checkbox) {
521
+ padding: @form-control-padding-large-vertical @form-control-padding-large-horizontal;
522
+ max-height: unset !important;
523
+ height: @form-control-height-lg !important;
524
+ font-size: @font-size-large;
525
+ }
481
526
  }
482
- .input-group-lg > .form-group{
483
- height: @form-control-height-lg!important;
527
+ .input-group-lg > .form-group {
528
+ height: @form-control-height-lg !important;
484
529
  }
485
- .input-group-sm .form-control,
486
- .input-group-sm .input-group-addon,
487
- .input-group-sm .input-group-btn > .btn {
488
- .input-sm();
530
+ .input-group-sm > .form-control,
531
+ .input-group-sm > .input-group-addon,
532
+ .input-group-sm > .input-group-btn > .btn {
533
+ // Inline .input-sm styles (was @extend .input-sm)
534
+ &:not(.c8y-radio):not(.c8y-checkbox) {
535
+ padding: @form-control-padding-small-vertical @form-control-padding-small-horizontal;
536
+ height: @form-control-height-sm !important;
537
+ font-size: @font-size-small;
538
+ line-height: @line-height-small;
539
+ }
489
540
  }
490
- .input-group-sm > .form-group{
491
- height: @form-control-height-sm!important;
541
+ .input-group-sm > .form-group {
542
+ height: @form-control-height-sm !important;
492
543
  }
493
544
 
494
545
  // Text input groups
@@ -531,12 +582,12 @@ c8y-search-input.input-group-sm{
531
582
  // element above the siblings.
532
583
  > .btn {
533
584
  position: relative;
534
- padding: 5px 12px;
585
+ padding: @size-5 12px;
535
586
  height: 100%;
536
587
 
537
588
  + .btn {
538
589
  margin-left: -1px;
539
- border-left-color: fade(@black, 15%);
590
+ border-left-color: rgba(@black, (15 / 100));
540
591
  }
541
592
 
542
593
  // Bring the "active" button to the front
@@ -563,7 +614,7 @@ c8y-search-input.input-group-sm{
563
614
  > .btn,
564
615
  > .btn-group {
565
616
  margin-right: 0;
566
- border-right-color: fade(@black, 15%);
617
+ border-right-color: rgba(@black, (15 / 100));
567
618
  }
568
619
 
569
620
  > .btn:last-child {
@@ -575,7 +626,7 @@ c8y-search-input.input-group-sm{
575
626
  > .btn:not(:focus),
576
627
  > .btn-group {
577
628
  z-index: 2;
578
- // border-left-color: fade(@black, 15%);
629
+ // border-left-color: rgba(@black, 15/100);
579
630
  }
580
631
  > .btn:focus {
581
632
  margin-left: -1px;
@@ -600,12 +651,12 @@ c8y-search-input.input-group-sm{
600
651
 
601
652
  .form-group,
602
653
  .input-group-btn {
603
- margin-bottom: 4px;
654
+ margin-bottom: @size-4;
604
655
  }
605
656
 
606
657
  // @TODO: JAWI validate
607
658
  > .input-group-btn.delete-row {
608
- margin-top: 24px;
659
+ margin-top: @size-24;
609
660
  }
610
661
 
611
662
  formly-field {
@@ -626,7 +677,7 @@ c8y-search-input.input-group-sm{
626
677
  // modifier classes for formly
627
678
  .formly-group-array-cols {
628
679
  .input-group-array {
629
- gap: @margin-base;
680
+ gap: @size-base;
630
681
 
631
682
  > formly-field {
632
683
  display: contents;
@@ -643,14 +694,14 @@ c8y-search-input.input-group-sm{
643
694
  }
644
695
 
645
696
  formly-field label.c8y-checkbox {
646
- margin: @margin-base 0;
697
+ margin: @size-base 0;
647
698
  }
648
699
 
649
700
  c8y-lwm2m-legend-wrapper formly-field {
650
701
  > c8y-field-checkbox {
651
702
  display: flex;
652
703
  align-items: center;
653
- margin: 0 0 @margin-8 0;
704
+ margin: 0 0 @size-8 0;
654
705
  & label.c8y-switch {
655
706
  display: flex !important;
656
707
  overflow: visible;
@@ -280,7 +280,13 @@ c8y-search-input.input-group-sm {
280
280
  .form-control,
281
281
  .input-group-addon,
282
282
  .input-group-btn > .btn {
283
- // @extend .input-sm; // Removed for performance
283
+ // Inline .input-sm styles (was @extend .input-sm)
284
+ &:not(.c8y-radio):not(.c8y-checkbox) {
285
+ padding: $form-control-padding-small-vertical $form-control-padding-small-horizontal;
286
+ height: $form-control-height-sm !important;
287
+ font-size: $font-size-small;
288
+ line-height: $line-height-small;
289
+ }
284
290
  }
285
291
  }
286
292
  // add smaller left and right margins in the search dropdown
@@ -512,7 +518,13 @@ c8y-search-input.input-group-sm {
512
518
  .input-group-lg > .input-group-btn > .btn,
513
519
  .input-group-search.input-group-lg .input-group > .form-control,
514
520
  .input-group-search.input-group-lg .input-group-btn > .btn {
515
- @extend .input-lg !optional;
521
+ // Inline .input-lg styles (was @extend .input-lg)
522
+ &:not(.c8y-radio):not(.c8y-checkbox) {
523
+ padding: $form-control-padding-large-vertical $form-control-padding-large-horizontal;
524
+ max-height: unset !important;
525
+ height: $form-control-height-lg !important;
526
+ font-size: $font-size-large;
527
+ }
516
528
  }
517
529
  .input-group-lg > .form-group {
518
530
  height: $form-control-height-lg !important;
@@ -520,7 +532,13 @@ c8y-search-input.input-group-sm {
520
532
  .input-group-sm > .form-control,
521
533
  .input-group-sm > .input-group-addon,
522
534
  .input-group-sm > .input-group-btn > .btn {
523
- // @extend .input-sm; // Removed for performance
535
+ // Inline .input-sm styles (was @extend .input-sm)
536
+ &:not(.c8y-radio):not(.c8y-checkbox) {
537
+ padding: $form-control-padding-small-vertical $form-control-padding-small-horizontal;
538
+ height: $form-control-height-sm !important;
539
+ font-size: $font-size-small;
540
+ line-height: $line-height-small;
541
+ }
524
542
  }
525
543
  .input-group-sm > .form-group {
526
544
  height: $form-control-height-sm !important;
@@ -1,3 +1,23 @@
1
+
2
+ @import "../../../variables/_dlt-c8y-icons-vars.less";
3
+
4
+ /**
5
+ * C8Y Dashboard Modal - Dashboard selection modal styles
6
+ *
7
+ * Note: Uses @size-* tokens for spacing where applicable.
8
+ *
9
+ * Intentionally hardcoded values:
10
+ * - Off-token spacing (15px): Grid gutter width, not in token system
11
+ * - Component-specific sizes (28px, 125px): Icon area and preview list height
12
+ * - Border widths (1px): Standard borders
13
+ * - Positioning offset (1px): Fine-tuning
14
+ * - Percentages (100%): Layout values
15
+ * - Transition duration (0.35s): Animation timing
16
+ * - Transform rotation (180deg): Icon rotation
17
+ * - Line-height (28px): Icon alignment
18
+ * - Typography font shorthand: Icon font specification
19
+ */
20
+
1
21
  .modal-body {
2
22
  .row {
3
23
  margin: 0 -15px;
@@ -8,35 +28,11 @@
8
28
  }
9
29
  }
10
30
 
11
- .btn-toggle-panel {
12
- display: block;
13
- padding: 0;
14
- border: 0;
15
- background-color: transparent;
16
- background-image: none;
17
- color: @link-color;
18
- text-align: center;
19
- [class^='dlt-c8y-icon-'],
20
- [class*=' dlt-c8y-icon-'] {
21
- .transition(all 0.35s ease);
22
- }
23
- &.open {
24
- [class^='dlt-c8y-icon-'],
25
- [class*=' dlt-c8y-icon-'] {
26
- .rotate(180deg);
27
- }
28
- }
29
- &:hover {
30
- color: @link-color-hover;
31
- }
32
- &:focus {
33
- outline: none;
34
- }
35
- }
31
+ // Removed unused panel toggle button class - verified 0 usages: .btn-toggle-panel
36
32
 
37
33
  .dashboard-preview-list {
38
34
  overflow-y: auto;
39
- margin-bottom: 10px;
35
+ margin-bottom: @size-10;
40
36
  max-height: 125px;
41
37
  border-top: 1px solid @component-border-color;
42
38
  border-bottom: 1px solid @component-border-color;
@@ -52,8 +48,8 @@
52
48
  position: relative;
53
49
  display: block;
54
50
  margin: 0;
55
- padding: 5px 10px;
56
- min-height: 10px;
51
+ padding: @size-5 @size-10;
52
+ min-height: @size-10;
57
53
  color: inherit;
58
54
  text-transform: none;
59
55
  font-weight: normal;
@@ -76,7 +72,7 @@
76
72
  color: var(--brand-primary, var(--c8y-brand-primary));
77
73
  content: @dlt-c8y-icon-check;
78
74
  text-align: center;
79
- font: normal normal normal 20px/1 @icon-font-family;
75
+ font: normal normal normal @size-20/1 @icon-font-family;
80
76
  font-size: inherit;
81
77
  line-height: 28px;
82
78
 
@@ -1,3 +1,26 @@
1
+ @import "../../../variables/_dlt-c8y-icons-vars.less";
2
+ @import "../../mixins/_shadows-helper.less";
3
+
4
+ /**
5
+ * C8Y Wizard - Modal wizard component for multi-step flows
6
+ *
7
+ * Note: Uses @size-* tokens for spacing and @size-base throughout.
8
+ *
9
+ * Intentionally hardcoded values:
10
+ * - Component-specific dimensions (200px, 254px, 280px, 300px, 420px, 600px): Modal and content area sizes
11
+ * - Typography sizes (18px, 24px, 30px): Font sizes for title, icons
12
+ * - Icon dimensions (26px, 30px, 32px, 34px): Icon and app icon sizes
13
+ * - Button widths (80px, 100px): Minimum button widths
14
+ * - Spinner positioning (-20px, -25px): Centering offset
15
+ * - Border widths (1px): Standard borders
16
+ * - Negative margins (-1px, -2px): Fine-tuning
17
+ * - Transition durations (0.25s, 0.3s): Animation timing
18
+ * - Percentages (50%, 100%): Layout and positioning
19
+ * - RGBA values: Transparency
20
+ * - Calculation expressions: Complex computed values
21
+ * - Transform values: Positioning
22
+ */
23
+
1
24
  .c8y-wizard {
2
25
  display: flex;
3
26
  align-items: center;
@@ -22,7 +45,7 @@
22
45
 
23
46
  // Top navigation on wizard
24
47
  .c8y-wizard-nav {
25
- padding: @margin-8;
48
+ padding: @size-8;
26
49
  color: @gray-50;
27
50
  text-align: center;
28
51
  text-transform: uppercase;
@@ -34,7 +57,7 @@
34
57
 
35
58
  // Title
36
59
  .c8y-wizard-title {
37
- padding: @margin-8 @margin-base @margin-4;
60
+ padding: @size-8 @size-base @size-4;
38
61
  background-color: @gray-90;
39
62
  text-align: center;
40
63
  text-transform: uppercase;
@@ -52,7 +75,7 @@
52
75
  overflow: hidden;
53
76
  min-height: 200px;
54
77
 
55
- .transition(height 0.3s ease);
78
+ transition: height 0.3s ease;
56
79
  .edition-modal {
57
80
  height: calc(~'100vh - 300px');
58
81
  }
@@ -69,7 +92,7 @@
69
92
  }
70
93
  }
71
94
  .drop-zone {
72
- margin: @margin-base auto;
95
+ margin: @size-base auto;
73
96
  padding-bottom: 0;
74
97
  min-height: 254px;
75
98
  max-width: 280px;
@@ -77,7 +100,7 @@
77
100
  }
78
101
 
79
102
  .c8y-wizard-body {
80
- padding: @margin-4 @margin-16;
103
+ padding: @size-4 @size-16;
81
104
  }
82
105
 
83
106
  .c8y-wizard-list-nav {
@@ -87,11 +110,11 @@
87
110
  align-items: center;
88
111
  flex-flow: row nowrap;
89
112
  margin: 0;
90
- padding: @margin-4 @margin-24 @margin-4 @margin-16;
113
+ padding: @size-4 @size-24 @size-4 @size-16;
91
114
 
92
- .shadow-border(-1px, @component-border-color);
115
+ .shadow-border(-1px; @component-border-color);
93
116
  .list-group-icon {
94
- margin-right: @margin-base;
117
+ margin-right: @size-base;
95
118
  max-height: 32px;
96
119
  .app-noicon {
97
120
  margin: 0;
@@ -104,7 +127,7 @@
104
127
  [class^='dlt-c8y-icon-'],
105
128
  [class*=' dlt-c8y-icon-'],
106
129
  .c8y-icon {
107
- margin-right: @margin-8;
130
+ margin-right: @size-8;
108
131
  width: 26px;
109
132
  vertical-align: middle;
110
133
  font-size: 24px;
@@ -116,14 +139,14 @@
116
139
  .app-icon {
117
140
  display: inline-block;
118
141
  margin-top: -2px;
119
- margin-right: @margin-base;
142
+ margin-right: @size-base;
120
143
  height: 26px;
121
144
  font-size: 24px;
122
145
  }
123
146
  &:after {
124
147
  position: absolute;
125
148
  top: 50%;
126
- right: @margin-16;
149
+ right: @size-16;
127
150
  display: inline-block;
128
151
  color: @gray-50;
129
152
  content: @dlt-c8y-icon-angle-right;
@@ -139,7 +162,7 @@
139
162
  }
140
163
 
141
164
  .c8y-wizard-footer {
142
- padding: @margin-24;
165
+ padding: @size-24;
143
166
  box-shadow: inset 0 -1px 0 @component-border-color;
144
167
  text-align: center;
145
168
  .btn:not(.btn-clean) {
@@ -152,14 +175,14 @@
152
175
 
153
176
  .c8y-wizard-form {
154
177
  position: relative;
155
- padding: @margin-base 0;
156
- border-top: 1px solid fade(@black, 3%);
178
+ padding: @size-base 0;
179
+ border-top: 1px solid rgba(@black, (3 / 100));
157
180
  background-color: @gray-100;
158
181
  hr {
159
182
  border-top-color: @gray-80;
160
183
  }
161
184
  .form-group {
162
- padding: 0 @margin-16;
185
+ padding: 0 @size-16;
163
186
  }
164
187
  }
165
188