@c8y/style 1023.37.0 → 1023.43.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/branding-login.less +1 -1
  2. package/helper-scripts/README-variable-imports.md +155 -0
  3. package/helper-scripts/README.md +104 -0
  4. package/helper-scripts/convert-scss-to-less.sh +512 -0
  5. package/helper-scripts/convert-stroke-icons-to-less.js +115 -0
  6. package/helper-scripts/remove-redundant-variable-imports.sh +80 -0
  7. package/helper-scripts/scss-to-less-skip +20 -0
  8. package/{sync-scss-to-less.sh → helper-scripts/sync-scss-to-less.sh} +2 -2
  9. package/helper-scripts/test-compile.sh +71 -0
  10. package/markdown-files/MANUAL-SYNC-FILES.md +56 -0
  11. package/package.json +2 -2
  12. package/styles/_login-app.less +34 -0
  13. package/styles/_login-app.scss +2 -2
  14. package/styles/_mixins.less +47 -0
  15. package/styles/_utilities.less +21 -0
  16. package/styles/_utilities.scss +1 -0
  17. package/styles/animations/_animate.less +18 -13
  18. package/styles/animations/_component-animations.less +18 -16
  19. package/styles/animations/_realtime-animation-list.less +11 -1
  20. package/styles/animations/_spinner-snake.less +17 -2
  21. package/styles/animations/_spinner.less +24 -6
  22. package/styles/base/_normalize.less +14 -0
  23. package/styles/base/_print.less +25 -12
  24. package/styles/base/_scaffolding.less +24 -28
  25. package/styles/base/_type.less +41 -19
  26. package/styles/components/_markdown-content.less +4 -1
  27. package/styles/components/_smartrules.less +14 -8
  28. package/styles/components/_smartrules.scss +6 -2
  29. package/styles/components/application-and-system/_c8y-cookie-banner.less +36 -0
  30. package/styles/components/{specialized → application-and-system}/_c8y-login.less +20 -6
  31. package/styles/components/data-display-and-visualization/_boxed-label.less +45 -0
  32. package/styles/components/data-display-and-visualization/_boxed-label.scss +46 -0
  33. package/styles/components/{specialized → data-display-and-visualization}/_c8y-data-explorer.less +76 -24
  34. package/styles/components/{specialized → data-display-and-visualization}/_c8y-data-explorer.scss +39 -1
  35. package/styles/components/{specialized → data-display-and-visualization}/_c8y-datapoint-pill.less +29 -13
  36. package/styles/components/{specialized → data-display-and-visualization}/_c8y-pulse.less +33 -6
  37. package/styles/components/data-display-and-visualization/_range-display.less +25 -16
  38. package/styles/components/{specialized → data-display-and-visualization}/_smart-list-icon-label.less +19 -5
  39. package/styles/components/{specialized → data-display-and-visualization}/_status.less +16 -2
  40. package/styles/components/{specialized → data-display-and-visualization}/_statusContainer.less +16 -2
  41. package/styles/components/data-display-and-visualization/_timelines-chart.less +2 -0
  42. package/styles/components/data-display-and-visualization/lists/_c8y-data-point-list.less +10 -0
  43. package/styles/components/data-display-and-visualization/lists/_c8y-empty-state.less +26 -12
  44. package/styles/components/data-display-and-visualization/lists/_c8y-list-group.less +83 -43
  45. package/styles/components/data-display-and-visualization/lists/_cards-layout.less +38 -16
  46. package/styles/components/data-display-and-visualization/lists/_list-group.less +46 -28
  47. package/styles/components/data-display-and-visualization/lists/_smart-rules-template-list.less +12 -1
  48. package/styles/components/data-display-and-visualization/lists/{timeline-list.less → _timeline-list.less} +46 -24
  49. package/styles/components/data-display-and-visualization/tables/_data-grid.less +45 -25
  50. package/styles/components/data-display-and-visualization/tables/_resizable-grid.less +18 -5
  51. package/styles/components/data-display-and-visualization/tables/_tables.less +25 -9
  52. package/styles/components/data-input/_c8y-ai-chat.less +1 -0
  53. package/styles/components/{specialized → data-input}/_c8y-countdown-interval.less +15 -13
  54. package/styles/components/{specialized → data-input}/_c8y-range.less +22 -6
  55. package/styles/components/{specialized → data-input}/_dtm-icon-selector.less +17 -2
  56. package/styles/components/{specialized → data-input}/_dtm-icon-selector.scss +1 -2
  57. package/styles/components/{specialized → data-input}/_measurements-time-control.less +34 -6
  58. package/styles/components/{specialized → data-input}/_measurements-time-control.scss +14 -2
  59. package/styles/components/{specialized → data-input}/_search-header.less +22 -6
  60. package/styles/components/data-input/_static-assets-file-picker.less +22 -0
  61. package/styles/components/data-input/assets/_asset-property-list.less +38 -23
  62. package/styles/components/data-input/assets/_asset-table.less +21 -3
  63. package/styles/components/data-input/assets/_c8y-asset-notes.less +13 -1
  64. package/styles/components/data-input/assets/_c8y-asset-selector-miller.less +27 -8
  65. package/styles/components/data-input/assets/_c8y-asset-selector.less +32 -15
  66. package/styles/components/data-input/assets/_c8y-child-assets-selector.less +90 -9
  67. package/styles/components/{specialized → forms}/_c8y-schema-form.less +44 -17
  68. package/styles/components/{specialized → forms}/_c8y-schema-form.scss +15 -3
  69. package/styles/components/{specialized → navigation-and-layout}/_c8y-role-card.less +21 -5
  70. package/styles/components/{specialized → navigation-and-layout}/_c8y-scrollbar.less +24 -7
  71. package/styles/components/{specialized → navigation-and-layout}/_c8y-smart-rest-tab.less +21 -6
  72. package/styles/components/{specialized → navigation-and-layout}/_c8y-stepper.less +15 -1
  73. package/styles/components/{specialized → navigation-and-layout}/_c8y-user-roles.less +45 -28
  74. package/styles/components/{specialized → navigation-and-layout}/_device-software-tab.less +14 -0
  75. package/styles/components/navigation-and-layout/action-bars/_app-switcher.less +27 -5
  76. package/styles/components/navigation-and-layout/action-bars/_c8y-action-bar.less +49 -21
  77. package/styles/components/navigation-and-layout/cards/_card-dashboard.less +25 -4
  78. package/styles/components/navigation-and-layout/cards/_card-flip.less +41 -14
  79. package/styles/components/navigation-and-layout/cards/_card-grid.less +20 -4
  80. package/styles/components/navigation-and-layout/cards/_card.less +90 -75
  81. package/styles/components/navigation-and-layout/cards/_panels.less +38 -20
  82. package/styles/components/navigation-and-layout/navigation/_breadcrumbs.less +21 -39
  83. package/styles/components/navigation-and-layout/navigation/_c8y-nav-stacked.less +26 -14
  84. package/styles/components/navigation-and-layout/navigation/_main-header.less +41 -13
  85. package/styles/components/navigation-and-layout/navigation/_main-header.scss +1 -1
  86. package/styles/components/navigation-and-layout/navigation/_navbar.less +22 -25
  87. package/styles/components/navigation-and-layout/navigation/_navbar.scss +7 -7
  88. package/styles/components/navigation-and-layout/navigation/_navigator.less +71 -69
  89. package/styles/components/navigation-and-layout/navigation/_navs.less +13 -0
  90. package/styles/components/navigation-and-layout/navigation/_pagination.less +24 -5
  91. package/styles/components/navigation-and-layout/navigation/{steps-navbar.less → _steps-navbar.less} +7 -6
  92. package/styles/components/navigation-and-layout/navigation/_tabs.less +19 -14
  93. package/styles/components/navigation-and-layout/navigation/_tabs.scss +3 -2
  94. package/styles/components/{specialized → status-feedback-and-notifications}/_c8y-message-banner.less +14 -0
  95. package/styles/components/{specialized → status-feedback-and-notifications}/_code.less +18 -2
  96. package/styles/core/buttons/_button-groups.less +29 -79
  97. package/styles/core/buttons/_buttons.less +229 -198
  98. package/styles/core/buttons/_buttons.scss +6 -10
  99. package/styles/core/feedback/_alerts.less +52 -41
  100. package/styles/core/feedback/_badges.less +29 -17
  101. package/styles/core/feedback/_close.less +24 -7
  102. package/styles/core/feedback/_labels.less +21 -8
  103. package/styles/core/feedback/_progress-bars.less +24 -7
  104. package/styles/core/feedback/_tag.less +23 -6
  105. package/styles/core/feedback/_tooltip.less +44 -20
  106. package/styles/core/forms/_c8y-switch.less +39 -19
  107. package/styles/core/forms/_c8y-switch.scss +37 -29
  108. package/styles/core/forms/_file-picker.less +79 -61
  109. package/styles/core/forms/_forms.less +130 -133
  110. package/styles/core/forms/_input-groups.less +110 -59
  111. package/styles/core/forms/_input-groups.scss +21 -3
  112. package/styles/core/overlays/_c8y-dashboard-modal.less +25 -29
  113. package/styles/core/overlays/_c8y-wizard.less +38 -15
  114. package/styles/core/overlays/_dropdowns.less +86 -63
  115. package/styles/core/overlays/_modals.less +58 -40
  116. package/styles/core/overlays/_popovers.less +25 -9
  117. package/styles/dashboard/_availability-pie.less +3 -0
  118. package/styles/dashboard/_c8y-dashboard-style.less +61 -34
  119. package/styles/dashboard/_c8y-gauges.less +20 -4
  120. package/styles/dashboard/_dashboard-widgets.less +17 -4
  121. package/styles/dashboard/_info-gauge.less +20 -5
  122. package/styles/dashboard/_quick-links-widget.less +13 -3
  123. package/styles/{welcome-widget.less → dashboard/_welcome-widget.less} +21 -4
  124. package/styles/dashboard/{welcome.less → _welcome.less} +54 -45
  125. package/styles/icons/_c8y-glyphs.less +12 -1
  126. package/styles/icons/_c8y-glyphs.scss +2 -1
  127. package/styles/icons/_c8y-icons.less +214 -199
  128. package/styles/icons/_dlt-c8y-icons-stroke.less +7238 -1834
  129. package/styles/icons/_dlt-c8y-icons.less +14 -0
  130. package/styles/icons/_marker-icons.less +10 -0
  131. package/styles/index.less +160 -134
  132. package/styles/index.scss +53 -29
  133. package/styles/layout/_bottom-drawer.less +21 -7
  134. package/styles/layout/_c8y-help-drawer.less +30 -9
  135. package/styles/layout/_c8y-right-drawer.less +34 -19
  136. package/styles/layout/_c8y-top-drawer.less +43 -28
  137. package/styles/layout/_grid.less +18 -4
  138. package/styles/layout/_group-info.less +14 -2
  139. package/styles/layout/_layouts.less +48 -30
  140. package/styles/layout/_mcontainer.less +26 -12
  141. package/styles/layout/_page-tabs.less +126 -21
  142. package/styles/layout/_page-tabs.scss +14 -1
  143. package/styles/layout/_split-scroll.less +16 -4
  144. package/styles/layout/_split-view.less +19 -5
  145. package/styles/login-app-use.scss +2 -2
  146. package/styles/login-app.less +4 -4
  147. package/styles/mixins/_buttons.scss +1 -0
  148. package/styles/mixins/{color-mixins.less → _color-mixins.less} +2 -2
  149. package/styles/mixins/{element-queries.less → _element-queries.less} +2 -2
  150. package/styles/mixins/{forms.less → _forms.less} +1 -1
  151. package/styles/mixins/_gradients.less +117 -0
  152. package/styles/mixins/{grid-framework.less → _grid-framework.less} +21 -21
  153. package/styles/mixins/_grid-framework.scss +1 -1
  154. package/styles/mixins/_icon-base.less +29 -0
  155. package/styles/mixins/{nav-vertical-align.less → _nav-vertical-align.less} +6 -2
  156. package/styles/mixins/_nav-vertical-align.scss +5 -2
  157. package/styles/mixins/{progress-bar.less → _progress-bar.less} +1 -1
  158. package/styles/mixins/{shadows-helper.less → _shadows-helper.less} +3 -5
  159. package/styles/mixins/_shadows-helper.scss +1 -4
  160. package/styles/mixins/{vendor-prefixes.less → _vendor-prefixes.less} +7 -22
  161. package/styles/mixins/_vendor-prefixes.scss +1 -17
  162. package/styles/utilities/_borders.less +21 -11
  163. package/styles/{components/specialized → utilities}/_c8y-utils.less +14 -0
  164. package/styles/{components/specialized → utilities}/_c8y-utils.scss +1 -1
  165. package/styles/utilities/_caret.less +18 -4
  166. package/styles/utilities/_container-queries.less +11 -3
  167. package/styles/utilities/_contextual-colors.less +48 -119
  168. package/styles/utilities/_display.less +26 -41
  169. package/styles/utilities/_elevation.less +17 -7
  170. package/styles/utilities/_flex-containers.less +10 -0
  171. package/styles/utilities/_flex-items.less +11 -0
  172. package/styles/utilities/_icon-utils.less +15 -3
  173. package/styles/utilities/_margins-paddings.less +23 -4
  174. package/styles/utilities/_overflows.less +10 -0
  175. package/styles/utilities/_position.less +11 -0
  176. package/styles/utilities/_quickfloats.less +20 -1
  177. package/styles/utilities/_separators.less +11 -0
  178. package/styles/utilities/_shadows.less +5 -49
  179. package/styles/{utilities.less → utilities/_sizing.less} +13 -21
  180. package/styles/utilities/_text-utils.less +35 -24
  181. package/styles/vendor/ace-editor/_ace-editor.less +1 -0
  182. package/styles/vendor/angular/_loading-bar.less +1 -0
  183. package/styles/vendor/angular/_ui-sortable.less +2 -1
  184. package/styles/vendor/angular/_uib-accordion.less +1 -0
  185. package/styles/{angular-ui-select/select.less → vendor/angular/angular-ui-select/_select.less} +2 -10
  186. package/styles/vendor/cdk/_cdk-drag.less +3 -0
  187. package/styles/vendor/cdk/_cdk-tree.less +6 -3
  188. package/styles/vendor/cdk/_cdk-virtual-scroll-window.less +1 -0
  189. package/styles/vendor/datepicker/_bs-datepicker.less +26 -6
  190. package/styles/vendor/datepicker/_uib-datepicker.less +37 -4
  191. package/styles/vendor/leaflet/_c8y-map-internal.less +44 -54
  192. package/styles/vendor/leaflet/_leaflet.less +4 -1
  193. package/styles/vendor/other/_colorpicker.less +3 -2
  194. package/styles/vendor/selectize/_c8y-selectize.less +33 -10
  195. package/variables/_color-defaults.less +29 -10
  196. package/variables/_color-defaults.scss +29 -10
  197. package/variables/_color-vars.less +37 -89
  198. package/variables/_color-vars.scss +19 -77
  199. package/variables/{login-vars.less → _login-vars.less} +3 -5
  200. package/variables/index.less +3 -3
  201. package/variables/tokens/{c8y-design-tokens-dark.less → _c8y-design-tokens-dark.less} +5 -1
  202. package/variables/tokens/{c8y-design-tokens.less → _c8y-design-tokens.less} +5 -1
  203. package/styles/components/specialized/_boxed-label.less +0 -21
  204. package/styles/components/specialized/_boxed-label.scss +0 -36
  205. package/styles/components/specialized/_c8y-cookie-banner.less +0 -22
  206. package/styles/components/specialized/_static-assets-file-picker.less +0 -8
  207. package/styles/dashboard/welcome-widget.less +0 -50
  208. package/styles/mixins/gradients.less +0 -142
  209. package/styles/mixins.less +0 -45
  210. package/styles/steps-navbar.less +0 -97
  211. package/styles/timeline-list.less +0 -210
  212. package/styles/vendor/angular/angular-ui-select/select.less +0 -161
  213. package/styles/welcome.less +0 -128
  214. /package/styles/components/{specialized → application-and-system}/_c8y-cookie-banner.scss +0 -0
  215. /package/styles/components/{specialized → application-and-system}/_c8y-login.scss +0 -0
  216. /package/styles/components/{specialized → data-display-and-visualization}/_c8y-datapoint-pill.scss +0 -0
  217. /package/styles/components/{specialized → data-display-and-visualization}/_c8y-pulse.scss +0 -0
  218. /package/styles/components/{specialized → data-display-and-visualization}/_smart-list-icon-label.scss +0 -0
  219. /package/styles/components/{specialized → data-display-and-visualization}/_status.scss +0 -0
  220. /package/styles/components/{specialized → data-display-and-visualization}/_statusContainer.scss +0 -0
  221. /package/styles/components/{specialized → data-input}/_c8y-countdown-interval.scss +0 -0
  222. /package/styles/components/{specialized → data-input}/_c8y-range.scss +0 -0
  223. /package/styles/components/{specialized → data-input}/_search-header.scss +0 -0
  224. /package/styles/components/{specialized → data-input}/_static-assets-file-picker.scss +0 -0
  225. /package/styles/components/{specialized → navigation-and-layout}/_c8y-role-card.scss +0 -0
  226. /package/styles/components/{specialized → navigation-and-layout}/_c8y-scrollbar.scss +0 -0
  227. /package/styles/components/{specialized → navigation-and-layout}/_c8y-smart-rest-tab.scss +0 -0
  228. /package/styles/components/{specialized → navigation-and-layout}/_c8y-stepper.scss +0 -0
  229. /package/styles/components/{specialized → navigation-and-layout}/_c8y-user-roles.scss +0 -0
  230. /package/styles/components/{specialized → navigation-and-layout}/_device-software-tab.scss +0 -0
  231. /package/styles/components/{specialized → status-feedback-and-notifications}/_c8y-message-banner.scss +0 -0
  232. /package/styles/components/{specialized → status-feedback-and-notifications}/_code.scss +0 -0
  233. /package/styles/mixins/{alert-variant.less → _alert-variant.less} +0 -0
  234. /package/styles/mixins/{animation.less → _animation.less} +0 -0
  235. /package/styles/mixins/{background-variant.less → _background-variant.less} +0 -0
  236. /package/styles/mixins/{border-radius.less → _border-radius.less} +0 -0
  237. /package/styles/mixins/{buttons.less → _buttons.less} +0 -0
  238. /package/styles/mixins/{c8y-scrollbar.less → _c8y-scrollbar.less} +0 -0
  239. /package/styles/mixins/{center-block.less → _center-block.less} +0 -0
  240. /package/styles/mixins/{clearfix.less → _clearfix.less} +0 -0
  241. /package/styles/mixins/{create-grid.less → _create-grid.less} +0 -0
  242. /package/styles/mixins/{grid.less → _grid.less} +0 -0
  243. /package/styles/mixins/{hide-scrollbars.less → _hide-scrollbars.less} +0 -0
  244. /package/styles/mixins/{hide-text.less → _hide-text.less} +0 -0
  245. /package/styles/mixins/{image.less → _image.less} +0 -0
  246. /package/styles/mixins/{labels.less → _labels.less} +0 -0
  247. /package/styles/mixins/{list-group.less → _list-group.less} +0 -0
  248. /package/styles/mixins/{nav-divider.less → _nav-divider.less} +0 -0
  249. /package/styles/mixins/{opacity.less → _opacity.less} +0 -0
  250. /package/styles/mixins/{pagination.less → _pagination.less} +0 -0
  251. /package/styles/mixins/{panels.less → _panels.less} +0 -0
  252. /package/styles/mixins/{reset-filter.less → _reset-filter.less} +0 -0
  253. /package/styles/mixins/{reset-text.less → _reset-text.less} +0 -0
  254. /package/styles/mixins/{resize.less → _resize.less} +0 -0
  255. /package/styles/mixins/{responsive-visibility.less → _responsive-visibility.less} +0 -0
  256. /package/styles/mixins/{size.less → _size.less} +0 -0
  257. /package/styles/mixins/{tab-focus.less → _tab-focus.less} +0 -0
  258. /package/styles/mixins/{table-row.less → _table-row.less} +0 -0
  259. /package/styles/mixins/{tag.less → _tag.less} +0 -0
  260. /package/styles/mixins/{text-emphasis.less → _text-emphasis.less} +0 -0
  261. /package/styles/mixins/{text-overflow.less → _text-overflow.less} +0 -0
  262. /package/variables/{login-vars.scss → _login-vars.scss} +0 -0
  263. /package/variables/{shadows.less → _shadows.less} +0 -0
  264. /package/variables/{shadows.scss → _shadows.scss} +0 -0
  265. /package/variables/tokens/{c8y-design-tokens-dark.scss → _c8y-design-tokens-dark.scss} +0 -0
  266. /package/variables/tokens/{c8y-design-tokens.scss → _c8y-design-tokens.scss} +0 -0
@@ -1,3 +1,17 @@
1
+
2
+ /**
3
+ * C8Y Empty State - Empty state component for lists and containers
4
+ *
5
+ * Note: Uses @size-* tokens for spacing; @size-base for calculations, and @component-padding.
6
+ *
7
+ * Intentionally hardcoded values:
8
+ * - Component-specific dimensions (600px, 280px, 45px): Max widths and flex basis
9
+ * - Typography sizes (30px, 90px): Large icon font sizes
10
+ * - Opacity values (0.6): Visual effects
11
+ * - Percentages (100%): Layout
12
+ * - Rem values (8rem, 4rem): Responsive padding using rem units
13
+ */
14
+
1
15
  .c8y-empty-state {
2
16
  margin: 0 auto;
3
17
  max-width: 600px;
@@ -7,7 +21,7 @@
7
21
  > .c8y-icon,
8
22
  > [class^='dlt-c8y-icon-'],
9
23
  > [class*=' dlt-c8y-icon-'] {
10
- margin-bottom: @margin-base;
24
+ margin-bottom: @size-base;
11
25
  color: @component-color-text-muted;
12
26
  font-size: 90px;
13
27
  opacity: 0.6;
@@ -19,16 +33,16 @@
19
33
  }
20
34
  }
21
35
  .btn-link {
22
- .btn-primary();
36
+ &:extend(.btn-primary);
23
37
  }
24
38
 
25
39
  p, .btn{
26
- margin-bottom: @margin-base;
40
+ margin-bottom: @size-base;
27
41
  }
28
42
 
29
43
  .dashboard.dashboard-theme-branded & {
30
44
  .btn-primary {
31
- .btn-default();
45
+ &:extend(.btn-default);
32
46
  }
33
47
  a {
34
48
  color: @component-color-default;
@@ -44,7 +58,7 @@
44
58
  > [class^='dlt-c8y-icon-'],
45
59
  > [class*=' dlt-c8y-icon-'] {
46
60
  flex: 0 0 auto;
47
- margin-right: 5px;
61
+ margin-right: @size-5;
48
62
  color: @component-color-text-muted;
49
63
  font-size: 30px;
50
64
  }
@@ -59,14 +73,14 @@
59
73
  display: flex;
60
74
  flex-flow: row nowrap;
61
75
  margin: 0;
62
- padding: @margin-base;
76
+ padding: @size-base;
63
77
  max-width: 100%;
64
78
  text-align: left !important;
65
79
  > .c8y-icon,
66
80
  > [class^='dlt-c8y-icon-'],
67
81
  > [class*=' dlt-c8y-icon-'] {
68
82
  flex: 0 0 auto;
69
- margin-right: 4px;
83
+ margin-right: @size-4;
70
84
  margin-bottom: 0;
71
85
  font-size: 30px;
72
86
  }
@@ -82,7 +96,7 @@
82
96
  }
83
97
  }
84
98
  .card-block .c8y-empty-state {
85
- padding: @margin-base 0;
99
+ padding: @size-base 0;
86
100
  }
87
101
  }
88
102
 
@@ -97,19 +111,19 @@ td,
97
111
  display: flex;
98
112
  flex-flow: row nowrap;
99
113
  margin-left: 0;
100
- padding: @margin-base;
114
+ padding: @size-base;
101
115
  text-align: left !important;
102
116
  > .c8y-icon,
103
117
  > [class^='dlt-c8y-icon-'],
104
118
  > [class*=' dlt-c8y-icon-'] {
105
119
  flex: 0 0 45px;
106
- margin-right: 5px;
120
+ margin-right: @size-5;
107
121
  margin-bottom: 0;
108
122
  font-size: 30px;
109
123
  }
110
124
  h3 {
111
125
  align-self: center;
112
- margin-right: 5px;
126
+ margin-right: @size-5;
113
127
  font-weight: bold;
114
128
  font-size: inherit;
115
129
  }
@@ -121,7 +135,7 @@ td,
121
135
  }
122
136
  }
123
137
  .card-block .c8y-empty-state {
124
- padding: @margin-base 0;
138
+ padding: @size-base 0;
125
139
  }
126
140
  }
127
141
 
@@ -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);