@c8y/style 1023.37.0 → 1023.42.1

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 +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 +37 -23
  34. package/styles/components/{specialized → data-display-and-visualization}/_c8y-datapoint-pill.less +29 -13
  35. package/styles/components/{specialized → data-display-and-visualization}/_c8y-pulse.less +33 -6
  36. package/styles/components/data-display-and-visualization/_range-display.less +25 -16
  37. package/styles/components/{specialized → data-display-and-visualization}/_smart-list-icon-label.less +19 -5
  38. package/styles/components/{specialized → data-display-and-visualization}/_status.less +16 -2
  39. package/styles/components/{specialized → data-display-and-visualization}/_statusContainer.less +16 -2
  40. package/styles/components/data-display-and-visualization/_timelines-chart.less +2 -0
  41. package/styles/components/data-display-and-visualization/lists/_c8y-data-point-list.less +10 -0
  42. package/styles/components/data-display-and-visualization/lists/_c8y-empty-state.less +26 -12
  43. package/styles/components/data-display-and-visualization/lists/_c8y-list-group.less +83 -43
  44. package/styles/components/data-display-and-visualization/lists/_cards-layout.less +38 -16
  45. package/styles/components/data-display-and-visualization/lists/_list-group.less +46 -28
  46. package/styles/components/data-display-and-visualization/lists/_smart-rules-template-list.less +12 -1
  47. package/styles/components/data-display-and-visualization/lists/{timeline-list.less → _timeline-list.less} +46 -24
  48. package/styles/components/data-display-and-visualization/tables/_data-grid.less +45 -25
  49. package/styles/components/data-display-and-visualization/tables/_resizable-grid.less +18 -5
  50. package/styles/components/data-display-and-visualization/tables/_tables.less +25 -9
  51. package/styles/components/data-input/_c8y-ai-chat.less +1 -0
  52. package/styles/components/{specialized → data-input}/_c8y-countdown-interval.less +15 -13
  53. package/styles/components/{specialized → data-input}/_c8y-range.less +22 -6
  54. package/styles/components/{specialized → data-input}/_dtm-icon-selector.less +17 -2
  55. package/styles/components/{specialized → data-input}/_dtm-icon-selector.scss +1 -2
  56. package/styles/components/{specialized → data-input}/_measurements-time-control.less +34 -6
  57. package/styles/components/{specialized → data-input}/_measurements-time-control.scss +14 -2
  58. package/styles/components/{specialized → data-input}/_search-header.less +22 -6
  59. package/styles/components/data-input/_static-assets-file-picker.less +22 -0
  60. package/styles/components/data-input/assets/_asset-property-list.less +38 -23
  61. package/styles/components/data-input/assets/_asset-table.less +21 -3
  62. package/styles/components/data-input/assets/_c8y-asset-notes.less +13 -1
  63. package/styles/components/data-input/assets/_c8y-asset-selector-miller.less +27 -8
  64. package/styles/components/data-input/assets/_c8y-asset-selector.less +32 -15
  65. package/styles/components/data-input/assets/_c8y-child-assets-selector.less +90 -9
  66. package/styles/components/{specialized → forms}/_c8y-schema-form.less +44 -17
  67. package/styles/components/{specialized → forms}/_c8y-schema-form.scss +15 -3
  68. package/styles/components/{specialized → navigation-and-layout}/_c8y-role-card.less +21 -5
  69. package/styles/components/{specialized → navigation-and-layout}/_c8y-scrollbar.less +24 -7
  70. package/styles/components/{specialized → navigation-and-layout}/_c8y-smart-rest-tab.less +21 -6
  71. package/styles/components/{specialized → navigation-and-layout}/_c8y-stepper.less +15 -1
  72. package/styles/components/{specialized → navigation-and-layout}/_c8y-user-roles.less +45 -28
  73. package/styles/components/{specialized → navigation-and-layout}/_device-software-tab.less +14 -0
  74. package/styles/components/navigation-and-layout/action-bars/_app-switcher.less +27 -5
  75. package/styles/components/navigation-and-layout/action-bars/_c8y-action-bar.less +49 -21
  76. package/styles/components/navigation-and-layout/cards/_card-dashboard.less +25 -4
  77. package/styles/components/navigation-and-layout/cards/_card-flip.less +41 -14
  78. package/styles/components/navigation-and-layout/cards/_card-grid.less +20 -4
  79. package/styles/components/navigation-and-layout/cards/_card.less +90 -75
  80. package/styles/components/navigation-and-layout/cards/_panels.less +38 -20
  81. package/styles/components/navigation-and-layout/navigation/_breadcrumbs.less +21 -39
  82. package/styles/components/navigation-and-layout/navigation/_c8y-nav-stacked.less +26 -14
  83. package/styles/components/navigation-and-layout/navigation/_main-header.less +41 -13
  84. package/styles/components/navigation-and-layout/navigation/_main-header.scss +1 -1
  85. package/styles/components/navigation-and-layout/navigation/_navbar.less +22 -25
  86. package/styles/components/navigation-and-layout/navigation/_navbar.scss +7 -7
  87. package/styles/components/navigation-and-layout/navigation/_navigator.less +71 -69
  88. package/styles/components/navigation-and-layout/navigation/_navs.less +13 -0
  89. package/styles/components/navigation-and-layout/navigation/_pagination.less +24 -5
  90. package/styles/components/navigation-and-layout/navigation/{steps-navbar.less → _steps-navbar.less} +7 -6
  91. package/styles/components/navigation-and-layout/navigation/_tabs.less +18 -14
  92. package/styles/components/navigation-and-layout/navigation/_tabs.scss +2 -2
  93. package/styles/components/{specialized → status-feedback-and-notifications}/_c8y-message-banner.less +14 -0
  94. package/styles/components/{specialized → status-feedback-and-notifications}/_code.less +18 -2
  95. package/styles/core/buttons/_button-groups.less +29 -79
  96. package/styles/core/buttons/_buttons.less +229 -198
  97. package/styles/core/buttons/_buttons.scss +6 -10
  98. package/styles/core/feedback/_alerts.less +52 -41
  99. package/styles/core/feedback/_badges.less +29 -17
  100. package/styles/core/feedback/_close.less +24 -7
  101. package/styles/core/feedback/_labels.less +21 -8
  102. package/styles/core/feedback/_progress-bars.less +24 -7
  103. package/styles/core/feedback/_tag.less +23 -6
  104. package/styles/core/feedback/_tooltip.less +44 -20
  105. package/styles/core/forms/_c8y-switch.less +39 -19
  106. package/styles/core/forms/_c8y-switch.scss +37 -29
  107. package/styles/core/forms/_file-picker.less +79 -61
  108. package/styles/core/forms/_forms.less +130 -133
  109. package/styles/core/forms/_input-groups.less +110 -59
  110. package/styles/core/forms/_input-groups.scss +21 -3
  111. package/styles/core/overlays/_c8y-dashboard-modal.less +25 -29
  112. package/styles/core/overlays/_c8y-wizard.less +38 -15
  113. package/styles/core/overlays/_dropdowns.less +86 -63
  114. package/styles/core/overlays/_modals.less +58 -40
  115. package/styles/core/overlays/_popovers.less +25 -9
  116. package/styles/dashboard/_availability-pie.less +3 -0
  117. package/styles/dashboard/_c8y-dashboard-style.less +61 -34
  118. package/styles/dashboard/_c8y-gauges.less +20 -4
  119. package/styles/dashboard/_dashboard-widgets.less +17 -4
  120. package/styles/dashboard/_info-gauge.less +20 -5
  121. package/styles/dashboard/_quick-links-widget.less +13 -3
  122. package/styles/{welcome-widget.less → dashboard/_welcome-widget.less} +21 -4
  123. package/styles/dashboard/{welcome.less → _welcome.less} +54 -45
  124. package/styles/icons/_c8y-glyphs.less +12 -1
  125. package/styles/icons/_c8y-glyphs.scss +2 -1
  126. package/styles/icons/_c8y-icons.less +214 -199
  127. package/styles/icons/_dlt-c8y-icons-stroke.less +7238 -1834
  128. package/styles/icons/_dlt-c8y-icons.less +14 -0
  129. package/styles/icons/_marker-icons.less +10 -0
  130. package/styles/index.less +160 -134
  131. package/styles/index.scss +53 -29
  132. package/styles/layout/_bottom-drawer.less +21 -7
  133. package/styles/layout/_c8y-help-drawer.less +30 -9
  134. package/styles/layout/_c8y-right-drawer.less +34 -19
  135. package/styles/layout/_c8y-top-drawer.less +43 -28
  136. package/styles/layout/_grid.less +18 -4
  137. package/styles/layout/_group-info.less +14 -2
  138. package/styles/layout/_layouts.less +48 -30
  139. package/styles/layout/_mcontainer.less +26 -12
  140. package/styles/layout/_page-tabs.less +115 -23
  141. package/styles/layout/_split-scroll.less +16 -4
  142. package/styles/layout/_split-view.less +19 -5
  143. package/styles/login-app-use.scss +2 -2
  144. package/styles/login-app.less +4 -4
  145. package/styles/mixins/_buttons.scss +1 -0
  146. package/styles/mixins/{color-mixins.less → _color-mixins.less} +2 -2
  147. package/styles/mixins/{element-queries.less → _element-queries.less} +2 -2
  148. package/styles/mixins/{forms.less → _forms.less} +1 -1
  149. package/styles/mixins/_gradients.less +117 -0
  150. package/styles/mixins/{grid-framework.less → _grid-framework.less} +21 -21
  151. package/styles/mixins/_icon-base.less +29 -0
  152. package/styles/mixins/{nav-vertical-align.less → _nav-vertical-align.less} +6 -2
  153. package/styles/mixins/_nav-vertical-align.scss +5 -2
  154. package/styles/mixins/{progress-bar.less → _progress-bar.less} +1 -1
  155. package/styles/mixins/{shadows-helper.less → _shadows-helper.less} +3 -5
  156. package/styles/mixins/_shadows-helper.scss +1 -4
  157. package/styles/mixins/{vendor-prefixes.less → _vendor-prefixes.less} +7 -22
  158. package/styles/mixins/_vendor-prefixes.scss +1 -17
  159. package/styles/utilities/_borders.less +21 -11
  160. package/styles/{components/specialized → utilities}/_c8y-utils.less +14 -0
  161. package/styles/{components/specialized → utilities}/_c8y-utils.scss +1 -1
  162. package/styles/utilities/_caret.less +18 -4
  163. package/styles/utilities/_container-queries.less +11 -3
  164. package/styles/utilities/_contextual-colors.less +48 -119
  165. package/styles/utilities/_display.less +26 -41
  166. package/styles/utilities/_elevation.less +17 -7
  167. package/styles/utilities/_flex-containers.less +10 -0
  168. package/styles/utilities/_flex-items.less +11 -0
  169. package/styles/utilities/_icon-utils.less +15 -3
  170. package/styles/utilities/_margins-paddings.less +23 -4
  171. package/styles/utilities/_overflows.less +10 -0
  172. package/styles/utilities/_position.less +11 -0
  173. package/styles/utilities/_quickfloats.less +20 -1
  174. package/styles/utilities/_separators.less +11 -0
  175. package/styles/utilities/_shadows.less +5 -49
  176. package/styles/{utilities.less → utilities/_sizing.less} +13 -21
  177. package/styles/utilities/_text-utils.less +35 -24
  178. package/styles/vendor/ace-editor/_ace-editor.less +1 -0
  179. package/styles/vendor/angular/_loading-bar.less +1 -0
  180. package/styles/vendor/angular/_ui-sortable.less +2 -1
  181. package/styles/vendor/angular/_uib-accordion.less +1 -0
  182. package/styles/{angular-ui-select/select.less → vendor/angular/angular-ui-select/_select.less} +2 -10
  183. package/styles/vendor/cdk/_cdk-drag.less +3 -0
  184. package/styles/vendor/cdk/_cdk-tree.less +6 -3
  185. package/styles/vendor/cdk/_cdk-virtual-scroll-window.less +1 -0
  186. package/styles/vendor/datepicker/_bs-datepicker.less +26 -6
  187. package/styles/vendor/datepicker/_uib-datepicker.less +37 -4
  188. package/styles/vendor/leaflet/_c8y-map-internal.less +44 -54
  189. package/styles/vendor/leaflet/_leaflet.less +4 -1
  190. package/styles/vendor/other/_colorpicker.less +3 -2
  191. package/styles/vendor/selectize/_c8y-selectize.less +33 -10
  192. package/variables/_color-defaults.less +29 -10
  193. package/variables/_color-defaults.scss +29 -10
  194. package/variables/_color-vars.less +37 -89
  195. package/variables/_color-vars.scss +19 -77
  196. package/variables/{login-vars.less → _login-vars.less} +3 -5
  197. package/variables/index.less +3 -3
  198. package/variables/tokens/{c8y-design-tokens-dark.less → _c8y-design-tokens-dark.less} +5 -1
  199. package/variables/tokens/{c8y-design-tokens.less → _c8y-design-tokens.less} +5 -1
  200. package/styles/components/specialized/_boxed-label.less +0 -21
  201. package/styles/components/specialized/_boxed-label.scss +0 -36
  202. package/styles/components/specialized/_c8y-cookie-banner.less +0 -22
  203. package/styles/components/specialized/_static-assets-file-picker.less +0 -8
  204. package/styles/dashboard/welcome-widget.less +0 -50
  205. package/styles/mixins/gradients.less +0 -142
  206. package/styles/mixins.less +0 -45
  207. package/styles/steps-navbar.less +0 -97
  208. package/styles/timeline-list.less +0 -210
  209. package/styles/vendor/angular/angular-ui-select/select.less +0 -161
  210. package/styles/welcome.less +0 -128
  211. /package/styles/components/{specialized → application-and-system}/_c8y-cookie-banner.scss +0 -0
  212. /package/styles/components/{specialized → application-and-system}/_c8y-login.scss +0 -0
  213. /package/styles/components/{specialized → data-display-and-visualization}/_c8y-data-explorer.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,7 +120,16 @@
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
  }
@@ -98,7 +140,7 @@
98
140
  transition: border-left 0.15s linear;
99
141
  }
100
142
  &.active:not(.selectable){
101
- border-left: 4px solid @component-color-active;
143
+ border-left: @size-4 solid @component-color-active;
102
144
  }
103
145
 
104
146
  &.disabled {
@@ -109,8 +151,8 @@
109
151
  > .expanded,
110
152
  &.expanded {
111
153
  background-color: @component-background-expanded;
112
- .separator-bottom();
113
- --c8y-nav-tabs-background-active: @component-background-expanded;
154
+ &:extend(.separator-bottom);
155
+ --c8y-nav-tabs-background-active: @{component-background-expanded};
114
156
 
115
157
  .c8y-list__item__title {
116
158
  font-weight: 500;
@@ -122,7 +164,7 @@
122
164
  }
123
165
 
124
166
  &--empty-actions {
125
- padding-right: 40px;
167
+ padding-right: @size-40;
126
168
 
127
169
  .c8y-list__item__body {
128
170
  padding-right: 0 !important;
@@ -213,8 +255,8 @@ a.c8y-list__item {
213
255
 
214
256
  c8y-load-more.c8y-list__item {
215
257
  .btn {
216
- margin-top: @margin-8;
217
- margin-bottom: @margin-8;
258
+ margin-top: @size-8;
259
+ margin-bottom: @size-8;
218
260
  }
219
261
  }
220
262
 
@@ -274,7 +316,7 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
274
316
  padding-left: 0 !important;
275
317
  }
276
318
  + c8y-li-checkbox {
277
- padding-left: 16px!important;
319
+ padding-left: @size-16!important;
278
320
  }
279
321
  }
280
322
  }
@@ -294,23 +336,23 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
294
336
  .c8y-list__item:hover {
295
337
  c8y-li-drag-handle:not(:empty) {
296
338
  max-width: 100px;
297
- padding-left: @margin-8;
339
+ padding-left: @size-8;
298
340
  }
299
341
 
300
342
  c8y-list-item-drag-handle:not(:empty) {
301
343
  max-width: 100px;
302
- padding-left: @margin-8;
344
+ padding-left: @size-8;
303
345
  }
304
346
  }
305
347
 
306
348
  .c8y-list__item__actions {
307
349
  display: flex;
308
- padding: @margin-base 0;
350
+ padding: @size-base 0;
309
351
 
310
352
  .c8y-dropdown,
311
353
  .collapse-btn {
312
354
  opacity: @component-actions-opacity;
313
- min-width: 40px;
355
+ min-width: @size-40;
314
356
 
315
357
  &:hover {
316
358
  opacity: 1;
@@ -362,21 +404,21 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
362
404
  min-height: 56px;
363
405
  bs-dropdown-container &, c8y-typeahead .dropdown &, .c8y-list__item--dense & {
364
406
  min-height: 36px;
365
- padding-top: @margin-base;
366
- padding-bottom: @margin-base;
407
+ padding-top: @size-base;
408
+ padding-bottom: @size-base;
367
409
  }
368
410
  }
369
411
 
370
412
  .c8y-list__item__body {
371
- padding-top: calc(@margin-base + 10px);
372
- padding-bottom: calc(@margin-base + 10px);
413
+ padding-top: calc(@size-base + @size-10);
414
+ padding-bottom: calc(@size-base + @size-10);
373
415
  /**
374
416
  * @Carlos: Would be nice to not only have the dense class
375
417
  * pm the list but also on the list items if [dense] is set.
376
418
  **/
377
419
  .dropdown-menu &, .c8y-list__item--dense & {
378
- padding-top: @margin-base;
379
- padding-bottom: @margin-base;
420
+ padding-top: @size-base;
421
+ padding-bottom: @size-base;
380
422
  }
381
423
 
382
424
  }
@@ -390,7 +432,7 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
390
432
  .c8y-list__item__radio,
391
433
  .c8y-list__item__colorpicker,
392
434
  .c8y-list__item__actions {
393
- min-height: 40px;
435
+ min-height: @size-40;
394
436
  padding-top: 7px;
395
437
  padding-bottom: 7px;
396
438
  }
@@ -401,8 +443,8 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
401
443
  }
402
444
 
403
445
  .c8y-list__item__body {
404
- padding-top: 10px;
405
- padding-bottom: 10px;
446
+ padding-top: @size-10;
447
+ padding-bottom: @size-10;
406
448
  }
407
449
  }
408
450
 
@@ -423,9 +465,9 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
423
465
  }
424
466
 
425
467
  .c8y-list__item__icon {
426
- font-size: 20px;
468
+ font-size: @size-20;
427
469
  color: @component-icon-color;
428
- min-height: 40px;
470
+ min-height: @size-40;
429
471
  line-height: @line-height-computed;
430
472
 
431
473
  > device-status {
@@ -488,7 +530,7 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
488
530
  .c8y-list__item__collapse--container {
489
531
  padding: @component-padding;
490
532
  @media (min-width: @screen-md-min) {
491
- padding: @component-padding calc(@margin-48 + 6px) 2rem;
533
+ padding: @component-padding calc(@size-48 + 6px) 2rem;
492
534
  }
493
535
  .full-w-collapse &{
494
536
  padding: @component-padding;
@@ -597,9 +639,9 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
597
639
  top: 50%;
598
640
  left: 80px;
599
641
  z-index: 3;
600
- margin: -10px 0 0 -6px;
601
- width: 12px;
602
- 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);
603
645
  border-radius: 50%;
604
646
  background-color: transparent;
605
647
  content: '';
@@ -636,7 +678,7 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
636
678
 
637
679
  .c8y-list--timeline__item__date {
638
680
  margin-left: 1px;
639
- margin-right: 40px;
681
+ margin-right: @size-40;
640
682
  width: 64px;
641
683
  font-size: @font-size-xs;
642
684
  line-height: 1.2;
@@ -662,7 +704,7 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
662
704
  overflow: visible;
663
705
  flex-grow: 1;
664
706
  margin-top: 0;
665
- margin-bottom: 8px;
707
+ margin-bottom: @size-8;
666
708
  border-radius: 0.25rem;
667
709
  box-shadow: inset 0 0 0 1px @component-border-color;
668
710
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1));
@@ -674,11 +716,11 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
674
716
  &:not(:has(>button))::before {
675
717
  position: absolute;
676
718
  top: 50%;
677
- left: -10px;
678
- margin-top: -10px;
719
+ left: calc(-1 * @size-10);
720
+ margin-top: calc(-1 * @size-10);
679
721
  width: 0;
680
722
  height: 0;
681
- border-width: 10px 10px 10px 0;
723
+ border-width: @size-10 @size-10 @size-10 0;
682
724
  border-style: solid;
683
725
  border-color: transparent @component-border-color transparent transparent;
684
726
  content: '';
@@ -688,11 +730,11 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
688
730
  &:not(:has(>button))::after {
689
731
  position: absolute;
690
732
  top: 50%;
691
- left: -8px;
692
- margin-top: -10px;
733
+ left: calc(-1 * @size-8);
734
+ margin-top: calc(-1 * @size-10);
693
735
  width: 0;
694
736
  height: 0;
695
- border-width: 10px 10px 10px 0;
737
+ border-width: @size-10 @size-10 @size-10 0;
696
738
  border-style: solid;
697
739
  border-color: transparent var(--c8y-root-component-background-default) transparent transparent;
698
740
  content: '';
@@ -731,9 +773,9 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
731
773
  .c8y-list__item {
732
774
  box-shadow: inset 0 0 0 1px @component-color-accent;
733
775
  &::before {
734
- left: -10px;
735
- margin-top: -10px;
736
- 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;
737
779
  border-color: transparent @component-color-accent transparent transparent;
738
780
  }
739
781
  &::after {
@@ -742,5 +784,3 @@ c8y-li-drag-handle, c8y-list-item-drag-handle {
742
784
  }
743
785
  }
744
786
  }
745
-
746
-
@@ -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
- margin-right: -8px;
51
+ margin-right: calc(@size-base * -0.5);
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;