@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,26 @@
1
+
2
+ @import "../../../../variables/_dlt-c8y-icons-vars.less";
3
+ @import "../../../animations/_component-animations.less";
4
+ @import "../../../core/buttons/_buttons.less";
5
+ @import "../../../mixins/_tab-focus.less";
6
+
7
+ /**
8
+ * C8Y List Group - Modern list component with flexible layouts
9
+ *
10
+ * Note: Uses @size-* tokens for spacing; @size-base for calculations, and @component-padding.
11
+ *
12
+ * Intentionally hardcoded values:
13
+ * - Off-token spacing (6px): Triangle and badge offsets not in token system
14
+ * - Border widths (1px): Standard borders
15
+ * - Negative offsets (-1px, -2px): Fine-tuning
16
+ * - Percentages (100%): Layout
17
+ * - Line-height values: Text alignment
18
+ * - Transition durations: Animation timing
19
+ * - Box-shadow values: Borders and elevation
20
+ * - RGBA values: Transparency
21
+ * - Z-index values: Stacking order
22
+ */
23
+
1
24
  .c8y-list {
2
25
  &__group {
3
26
  margin: 0;
@@ -45,7 +68,7 @@
45
68
  background-color: var(--brand-80, var(--c8y-brand-80));
46
69
  }
47
70
  &.selected{
48
- border-left: 4px solid @component-color-active;
71
+ border-left: @size-4 solid @component-color-active;
49
72
  background-color: @component-background-default;
50
73
  }
51
74
  /* typeahead dropdown list items styling */
@@ -57,16 +80,26 @@
57
80
  bs-dropdown-container &, c8y-typeahead .dropdown &, .c8y-select-v2 .dropdown & {
58
81
  &.active,
59
82
  &.selectable:not(:has(c8y-li-checkbox)):active {
83
+ color: @component-color-active;
84
+
60
85
  .c8y-list__item__body {
61
86
 
62
87
  &:after{
63
- .glyphicon();
88
+ display: inline-block;
89
+ text-transform: none;
90
+ font-weight: normal;
91
+ font-style: normal;
92
+ font-variant: normal;
93
+ font-family: '@{icon-font-family}' !important;
94
+ line-height: 1;
95
+ -webkit-font-smoothing: antialiased;
96
+ -moz-osx-font-smoothing: grayscale;
97
+
64
98
  float: right;
65
99
  content: @dlt-c8y-icon-check;
66
100
  font-size: 18px;
67
101
  }
68
102
  }
69
- color: @component-color-active;
70
103
  }
71
104
 
72
105
  /**
@@ -87,13 +120,28 @@
87
120
  &.selectable.active{
88
121
  .c8y-list__item__body {
89
122
  &:after{
90
- .glyphicon();
123
+ display: inline-block;
124
+ text-transform: none;
125
+ font-weight: normal;
126
+ font-style: normal;
127
+ font-variant: normal;
128
+ font-family: "dlt-c8y-icons" !important;
129
+ line-height: 1;
130
+ -webkit-font-smoothing: antialiased;
131
+ -moz-osx-font-smoothing: grayscale;
132
+
91
133
  float: right;
92
134
  content: @dlt-c8y-icon-check;
93
135
  }
94
136
  }
95
137
  color: @component-color-active;
96
138
  }
139
+ &:not(.selectable){
140
+ transition: border-left 0.15s linear;
141
+ }
142
+ &.active:not(.selectable){
143
+ border-left: @size-4 solid @component-color-active;
144
+ }
97
145
 
98
146
  &.disabled {
99
147
  opacity: @component-disabled-opacity;
@@ -103,8 +151,8 @@
103
151
  > .expanded,
104
152
  &.expanded {
105
153
  background-color: @component-background-expanded;
106
- .separator-bottom();
107
- --c8y-nav-tabs-background-active: @component-background-expanded;
154
+ &:extend(.separator-bottom);
155
+ --c8y-nav-tabs-background-active: @{component-background-expanded};
108
156
 
109
157
  .c8y-list__item__title {
110
158
  font-weight: 500;
@@ -116,7 +164,7 @@
116
164
  }
117
165
 
118
166
  &--empty-actions {
119
- padding-right: 40px;
167
+ padding-right: @size-40;
120
168
 
121
169
  .c8y-list__item__body {
122
170
  padding-right: 0 !important;
@@ -207,8 +255,8 @@ a.c8y-list__item {
207
255
 
208
256
  c8y-load-more.c8y-list__item {
209
257
  .btn {
210
- margin-top: @margin-8;
211
- margin-bottom: @margin-8;
258
+ margin-top: @size-8;
259
+ margin-bottom: @size-8;
212
260
  }
213
261
  }
214
262
 
@@ -268,7 +316,7 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
268
316
  padding-left: 0 !important;
269
317
  }
270
318
  + c8y-li-checkbox {
271
- padding-left: 16px!important;
319
+ padding-left: @size-16!important;
272
320
  }
273
321
  }
274
322
  }
@@ -288,23 +336,23 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
288
336
  .c8y-list__item:hover {
289
337
  c8y-li-drag-handle:not(:empty) {
290
338
  max-width: 100px;
291
- padding-left: @margin-8;
339
+ padding-left: @size-8;
292
340
  }
293
341
 
294
342
  c8y-list-item-drag-handle:not(:empty) {
295
343
  max-width: 100px;
296
- padding-left: @margin-8;
344
+ padding-left: @size-8;
297
345
  }
298
346
  }
299
347
 
300
348
  .c8y-list__item__actions {
301
349
  display: flex;
302
- padding: @margin-base 0;
350
+ padding: @size-base 0;
303
351
 
304
352
  .c8y-dropdown,
305
353
  .collapse-btn {
306
354
  opacity: @component-actions-opacity;
307
- min-width: 40px;
355
+ min-width: @size-40;
308
356
 
309
357
  &:hover {
310
358
  opacity: 1;
@@ -356,21 +404,21 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
356
404
  min-height: 56px;
357
405
  bs-dropdown-container &, c8y-typeahead .dropdown &, .c8y-list__item--dense & {
358
406
  min-height: 36px;
359
- padding-top: @margin-base;
360
- padding-bottom: @margin-base;
407
+ padding-top: @size-base;
408
+ padding-bottom: @size-base;
361
409
  }
362
410
  }
363
411
 
364
412
  .c8y-list__item__body {
365
- padding-top: calc(@margin-base + 10px);
366
- padding-bottom: calc(@margin-base + 10px);
413
+ padding-top: calc(@size-base + @size-10);
414
+ padding-bottom: calc(@size-base + @size-10);
367
415
  /**
368
416
  * @Carlos: Would be nice to not only have the dense class
369
417
  * pm the list but also on the list items if [dense] is set.
370
418
  **/
371
419
  .dropdown-menu &, .c8y-list__item--dense & {
372
- padding-top: @margin-base;
373
- padding-bottom: @margin-base;
420
+ padding-top: @size-base;
421
+ padding-bottom: @size-base;
374
422
  }
375
423
 
376
424
  }
@@ -384,7 +432,7 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
384
432
  .c8y-list__item__radio,
385
433
  .c8y-list__item__colorpicker,
386
434
  .c8y-list__item__actions {
387
- min-height: 40px;
435
+ min-height: @size-40;
388
436
  padding-top: 7px;
389
437
  padding-bottom: 7px;
390
438
  }
@@ -395,8 +443,8 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
395
443
  }
396
444
 
397
445
  .c8y-list__item__body {
398
- padding-top: 10px;
399
- padding-bottom: 10px;
446
+ padding-top: @size-10;
447
+ padding-bottom: @size-10;
400
448
  }
401
449
  }
402
450
 
@@ -417,9 +465,9 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
417
465
  }
418
466
 
419
467
  .c8y-list__item__icon {
420
- font-size: 20px;
468
+ font-size: @size-20;
421
469
  color: @component-icon-color;
422
- min-height: 40px;
470
+ min-height: @size-40;
423
471
  line-height: @line-height-computed;
424
472
 
425
473
  > device-status {
@@ -482,7 +530,7 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
482
530
  .c8y-list__item__collapse--container {
483
531
  padding: @component-padding;
484
532
  @media (min-width: @screen-md-min) {
485
- padding: @component-padding calc(@margin-48 + 6px) 2rem;
533
+ padding: @component-padding calc(@size-48 + 6px) 2rem;
486
534
  }
487
535
  .full-w-collapse &{
488
536
  padding: @component-padding;
@@ -591,9 +639,9 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
591
639
  top: 50%;
592
640
  left: 80px;
593
641
  z-index: 3;
594
- margin: -10px 0 0 -6px;
595
- width: 12px;
596
- height: 12px;
642
+ margin: calc(-1 * @size-10) 0 0 -6px;
643
+ width: calc(@size-base * 1.5);
644
+ height: calc(@size-base * 1.5);
597
645
  border-radius: 50%;
598
646
  background-color: transparent;
599
647
  content: '';
@@ -630,7 +678,7 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
630
678
 
631
679
  .c8y-list--timeline__item__date {
632
680
  margin-left: 1px;
633
- margin-right: 40px;
681
+ margin-right: @size-40;
634
682
  width: 64px;
635
683
  font-size: @font-size-xs;
636
684
  line-height: 1.2;
@@ -656,7 +704,7 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
656
704
  overflow: visible;
657
705
  flex-grow: 1;
658
706
  margin-top: 0;
659
- margin-bottom: 8px;
707
+ margin-bottom: @size-8;
660
708
  border-radius: 0.25rem;
661
709
  box-shadow: inset 0 0 0 1px @component-border-color;
662
710
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1));
@@ -668,11 +716,11 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
668
716
  &:not(:has(>button))::before {
669
717
  position: absolute;
670
718
  top: 50%;
671
- left: -10px;
672
- margin-top: -10px;
719
+ left: calc(-1 * @size-10);
720
+ margin-top: calc(-1 * @size-10);
673
721
  width: 0;
674
722
  height: 0;
675
- border-width: 10px 10px 10px 0;
723
+ border-width: @size-10 @size-10 @size-10 0;
676
724
  border-style: solid;
677
725
  border-color: transparent @component-border-color transparent transparent;
678
726
  content: '';
@@ -682,11 +730,11 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
682
730
  &:not(:has(>button))::after {
683
731
  position: absolute;
684
732
  top: 50%;
685
- left: -8px;
686
- margin-top: -10px;
733
+ left: calc(-1 * @size-8);
734
+ margin-top: calc(-1 * @size-10);
687
735
  width: 0;
688
736
  height: 0;
689
- border-width: 10px 10px 10px 0;
737
+ border-width: @size-10 @size-10 @size-10 0;
690
738
  border-style: solid;
691
739
  border-color: transparent var(--c8y-root-component-background-default) transparent transparent;
692
740
  content: '';
@@ -725,9 +773,9 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
725
773
  .c8y-list__item {
726
774
  box-shadow: inset 0 0 0 1px @component-color-accent;
727
775
  &::before {
728
- left: -10px;
729
- margin-top: -10px;
730
- border-width: 10px 10px 10px 0;
776
+ left: calc(-1 * @size-10);
777
+ margin-top: calc(-1 * @size-10);
778
+ border-width: @size-10 @size-10 @size-10 0;
731
779
  border-color: transparent @component-color-accent transparent transparent;
732
780
  }
733
781
  &::after {
@@ -736,5 +784,3 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
736
784
  }
737
785
  }
738
786
  }
739
-
740
-
@@ -1,3 +1,25 @@
1
+
2
+ @import "../../../mixins/_shadows-helper.less";
3
+ @import "../../../mixins/_vendor-prefixes.less";
4
+
5
+ /**
6
+ * Cards Layout - Flex grid layout for card groups
7
+ *
8
+ * Note: Uses @size-* tokens for spacing; @grid-gutter-width for grid spacing, and component variables.
9
+ *
10
+ * Intentionally hardcoded values:
11
+ * - Component-specific dimensions (54px, 75px, 116px, 136px, 230px): Card heights and widths
12
+ * - Negative grid gutter: -0.5 multiplier for negative margins
13
+ * - Percentages (50%, 100%): Layout and flex values
14
+ * - Border widths (1px, 2px): Standard borders and outlines
15
+ * - Negative offsets (-2px): Fine-tuning
16
+ * - Transition durations (0.1s, 0.2s): Animation timing
17
+ * - Transform values: translate and scale
18
+ * - Box-shadow values: Elevation and shadow effects
19
+ * - RGBA values: Transparency
20
+ * - Z-index values (1, 2): Stacking order
21
+ */
22
+
1
23
  /* flex grid for card groups*/
2
24
 
3
25
  .card-group,
@@ -5,7 +27,7 @@
5
27
  display: flex;
6
28
  flex-flow: row wrap;
7
29
  justify-content: flex-start;
8
- margin-bottom: @margin-16;
30
+ margin-bottom: @size-16;
9
31
  }
10
32
 
11
33
  .card-group {
@@ -75,7 +97,7 @@
75
97
  > .d-contents > .card {
76
98
  display: flex;
77
99
  margin-bottom: 0;
78
- padding: @margin-base 0;
100
+ padding: @size-base 0;
79
101
  box-shadow: inset 0 -1px 0 @component-border-color;
80
102
 
81
103
  > hr {
@@ -86,7 +108,7 @@
86
108
 
87
109
  .card-header {
88
110
  flex: 0 0 auto;
89
- padding: calc(@margin-base + 2px) @component-padding;
111
+ padding: calc(@size-base + 2px) @component-padding;
90
112
  width: 20%;
91
113
  border-bottom: 0;
92
114
  .card-title {
@@ -99,12 +121,12 @@
99
121
  }
100
122
  .statusContainer {
101
123
  margin-left: -2px;
102
- font-size: 20px;
124
+ font-size: @size-20;
103
125
  }
104
126
  }
105
127
 
106
128
  .card-appicon {
107
- margin-right: @margin-base;
129
+ margin-right: @size-base;
108
130
  padding-top: 0;
109
131
  height: 22px;
110
132
  font-size: 22px;
@@ -116,8 +138,8 @@
116
138
  align-items: center;
117
139
  flex-flow: row nowrap;
118
140
  flex-grow: 1;
119
- padding: 10px;
120
- min-height: calc(@margin-base * 6px);
141
+ padding: @size-10;
142
+ min-height: calc(@size-base * 6px);
121
143
  p {
122
144
  margin: 0;
123
145
  padding: 0 5px;
@@ -139,8 +161,8 @@
139
161
  .card-header,
140
162
  .card-footer,
141
163
  .card-actions-group {
142
- padding-top: 4px;
143
- padding-bottom: 4px;
164
+ padding-top: @size-4;
165
+ padding-bottom: @size-4;
144
166
  min-height: @page-sticky-header-height;
145
167
  text-align: left;
146
168
  }
@@ -190,7 +212,7 @@
190
212
  }
191
213
 
192
214
  .card-actions {
193
- top: @margin-8;
215
+ top: @size-8;
194
216
 
195
217
  ~ .card-block {
196
218
  margin-right: 44px;
@@ -201,9 +223,9 @@
201
223
  }
202
224
 
203
225
  + .card-footer {
204
- margin-right: 40px;
226
+ margin-right: @size-40;
205
227
  margin-left: auto;
206
- padding: 10px;
228
+ padding: @size-10;
207
229
 
208
230
  &.separator {
209
231
  border-top: 0;
@@ -224,7 +246,7 @@
224
246
 
225
247
  .smart-rule-list-card {
226
248
  .card-actions {
227
- top: 10px;
249
+ top: @size-10;
228
250
  }
229
251
  }
230
252
  }
@@ -286,7 +308,7 @@
286
308
 
287
309
  > c8y-device-status-display {
288
310
  display: block;
289
- max-height: 20px;
311
+ max-height: @size-20;
290
312
  }
291
313
  }
292
314
  }
@@ -340,7 +362,7 @@
340
362
  }
341
363
  .card-actions + .card-header {
342
364
  .card-title:not(.smart-rule-name) {
343
- margin-right: 24px;
365
+ margin-right: @size-24;
344
366
  }
345
367
  }
346
368
 
@@ -364,7 +386,7 @@
364
386
  &:hover,
365
387
  &:focus {
366
388
  z-index: @zindex-navbar - 1;
367
- box-shadow: 0 20px 15px fade(@black, 10%), 0 -2px 10px 1px fade(@black, 3%);
389
+ box-shadow: 0 20px 15px rgba(@black, (10 / 100)), 0 -2px 10px 1px rgba(@black, (3 / 100));
368
390
  text-decoration: none;
369
391
 
370
392
  .scale(1.05);
@@ -1,9 +1,27 @@
1
- @import '../../../../variables/index.less';
2
- @import '../../../../variables/_dlt-c8y-icons-vars.less';
1
+ @import "../../../../variables/_dlt-c8y-icons-vars.less";
2
+ @import "../../../mixins/_icon-base.less";
3
+ @import "../../../mixins/_list-group.less";
4
+ @import "../../../mixins/_tab-focus.less";
5
+ @import "../../../mixins/_vendor-prefixes.less";
6
+
7
+ /**
8
+ * List Group - Bootstrap list group component (legacy)
9
+ *
10
+ * Note: Uses @size-* tokens for spacing, @size-base for calculations, and @component-padding.
11
+ *
12
+ * Intentionally hardcoded values:
13
+ * - Off-token spacing (6px): Badge offsets not in token system
14
+ * - Border widths (1px): Standard borders
15
+ * - Negative offsets (-1px, -2px): Fine-tuning
16
+ * - Percentages (100%): Layout
17
+ * - Line-height values: Text alignment
18
+ * - Box-shadow values: Borders and inset shadows
19
+ * - Transform values: Translate positioning
20
+ */
3
21
 
4
22
  .list-group {
5
23
  position: relative;
6
- margin-bottom: @margin-16;
24
+ margin-bottom: @size-16;
7
25
  padding-left: 0; // reset padding because ul and ol
8
26
  box-shadow: inset 0 1px 0 @component-border-color;
9
27
 
@@ -18,8 +36,8 @@
18
36
  .list-group-item {
19
37
  position: relative;
20
38
  display: block;
21
- padding: @margin-base @component-padding;
22
- min-height: calc(@margin-base * 5);
39
+ padding: @size-base @component-padding;
40
+ min-height: calc(@size-base * 5);
23
41
  width: 100%;
24
42
  border: 0;
25
43
  box-shadow: inset 0 -1px 0 @component-border-color;
@@ -30,7 +48,7 @@
30
48
  display: flex;
31
49
  align-items: center;
32
50
  > button:last-child {
33
- padding-right: 32px;
51
+ margin-right: -8px;
34
52
  }
35
53
  > * {
36
54
  flex-grow: 1;
@@ -72,7 +90,7 @@
72
90
  box-shadow: none;
73
91
  .list-group-item {
74
92
  margin: 0;
75
- padding: @margin-base @component-padding;
93
+ padding: @size-base @component-padding;
76
94
  border: 0;
77
95
  box-shadow: inset 0 -1px 0 @component-border-color;
78
96
  &:not(.active):not(.expanded) {
@@ -98,7 +116,7 @@
98
116
  button.list-group-item,
99
117
  a.list-group-item {
100
118
  position: relative;
101
- padding-right: calc(@margin-base * 4) !important;
119
+ padding-right: calc(@size-base * 4) !important;
102
120
  //color: inherit;
103
121
  &:hover,
104
122
  &:focus {
@@ -108,7 +126,7 @@
108
126
  &::after {
109
127
  position: absolute;
110
128
  top: 50%;
111
- right: calc(@margin-base + 4px);
129
+ right: calc(@size-base + @size-4);
112
130
  display: inline-block;
113
131
  color: inherit;
114
132
  content: @dlt-c8y-icon-chevron-right;
@@ -191,7 +209,7 @@ button.list-group-item {
191
209
  // Extra classes for creating well-formatted content within `.list-group-item`s.
192
210
  .list-group-item-heading {
193
211
  margin-top: 0;
194
- margin-bottom: @margin-base;
212
+ margin-bottom: @size-base;
195
213
  }
196
214
 
197
215
  .list-group-item-text {
@@ -208,9 +226,9 @@ button.list-group-item {
208
226
  .list-item-icon {
209
227
  display: inline-block;
210
228
  flex: 0 0 auto;
211
- margin-right: @margin-8;
212
- max-height: 20px;
213
- font-size: 20px;
229
+ margin-right: @size-8;
230
+ max-height: @size-20;
231
+ font-size: @size-20;
214
232
  line-height: 1;
215
233
  > i {
216
234
  transform: translateY(-3px);
@@ -220,10 +238,10 @@ button.list-group-item {
220
238
  .list-item-checkbox {
221
239
  align-self: flex-start;
222
240
  flex: 0 0 auto;
223
- margin-right: @margin-8;
241
+ margin-right: @size-8;
224
242
  .c8y-checkbox {
225
- height: 20px;
226
- line-height: 20px;
243
+ height: @size-20;
244
+ line-height: @size-20;
227
245
  }
228
246
 
229
247
  + label {
@@ -248,7 +266,7 @@ button.list-group-item {
248
266
  flex: 0 0 auto;
249
267
  flex-flow: row nowrap;
250
268
  order: 10000; //ensure it is the last item on the right
251
- margin: calc(@margin-base * -1 + 2px) calc(@component-padding * -1) calc(@margin-base * -1 + 2px)
269
+ margin: calc(@size-base * -1 + 2px) calc(@component-padding * -1) calc(@size-base * -1 + 2px)
252
270
  0;
253
271
  text-align: right;
254
272
  .btn + .btn {
@@ -256,18 +274,18 @@ button.list-group-item {
256
274
  }
257
275
  > .has-error {
258
276
  position: absolute;
259
- left: -10px;
260
- height: 40px;
277
+ left: calc(-1 * @size-10);
278
+ height: @size-40;
261
279
  color: var(--palette-status-danger, var(--c8y-palette-status-danger));
262
280
  font-size: 14px;
263
- line-height: 40px;
281
+ line-height: @size-40;
264
282
  }
265
283
  > .btn-link,
266
284
  .settings > .dropdown-toggle {
267
285
  order: 100;
268
286
  padding: 6px;
269
- width: 40px;
270
- height: 40px;
287
+ width: @size-40;
288
+ height: @size-40;
271
289
  color: @component-color-actions;
272
290
  font-size: 14px;
273
291
  opacity: @component-actions-opacity;
@@ -282,7 +300,7 @@ button.list-group-item {
282
300
  }
283
301
  label.c8y-checkbox,
284
302
  label.c8y-radio {
285
- line-height: 40px !important;
303
+ line-height: @size-40 !important;
286
304
  }
287
305
  }
288
306
 
@@ -304,7 +322,7 @@ button.list-group-item {
304
322
  .collapsing {
305
323
  flex: 1 1 100%;
306
324
  order: 11000;
307
- margin: 10px calc(@component-padding * -1) 0;
325
+ margin: @size-10 calc(@component-padding * -1) 0;
308
326
  padding: 0 @component-padding @component-padding;
309
327
  min-width: 100%;
310
328
  width: auto;
@@ -317,7 +335,7 @@ button.list-group-item {
317
335
  flex: 0 0 48px;
318
336
  width: 48px;
319
337
  .c8y-switch {
320
- margin: 1px 0 -10px 0;
338
+ margin: 1px 0 calc(-1 * @size-10) 0;
321
339
  min-height: 23px;
322
340
  input[type='checkbox'] + span {
323
341
  top: 0;
@@ -339,10 +357,10 @@ button.list-group-item {
339
357
  text-align: center;
340
358
  .minicolors {
341
359
  margin: 0 auto;
342
- min-height: 20px;
343
- width: 20px;
360
+ min-height: @size-20;
361
+ width: @size-20;
344
362
  .minicolors-swatch {
345
- width: 20px;
363
+ width: @size-20;
346
364
  border: 0;
347
365
  }
348
366
  .minicolors-swatch-color {
@@ -1,3 +1,14 @@
1
+
2
+ /**
3
+ * Smart Rules Template List - Smart rule template list component
4
+ *
5
+ * Note: Uses @size-* tokens for spacing and @component-border-color.
6
+ *
7
+ * Intentionally hardcoded values:
8
+ * - Border widths (1px): Standard borders
9
+ * - Percentages (53vh): Viewport-relative height
10
+ */
11
+
1
12
  .smart-rule-templates-list {
2
13
  overflow: hidden;
3
14
  margin-bottom: 0;
@@ -11,7 +22,7 @@
11
22
  box-shadow: inset 0 0 0 1px @component-border-color;
12
23
  }
13
24
  .smart-rule-control {
14
- margin-top: 10px;
25
+ margin-top: @size-10;
15
26
  }
16
27
  .card-group {
17
28
  margin-bottom: 0;