@c8y/style 1023.30.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 (265) 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/img/pie-chart-widget-pr.png +0 -0
  11. package/markdown-files/MANUAL-SYNC-FILES.md +56 -0
  12. package/package.json +2 -2
  13. package/styles/_login-app.less +34 -0
  14. package/styles/_login-app.scss +2 -2
  15. package/styles/_mixins.less +47 -0
  16. package/styles/_utilities.less +21 -0
  17. package/styles/_utilities.scss +1 -0
  18. package/styles/animations/_animate.less +18 -13
  19. package/styles/animations/_component-animations.less +18 -16
  20. package/styles/animations/_realtime-animation-list.less +11 -1
  21. package/styles/animations/_spinner-snake.less +17 -2
  22. package/styles/animations/_spinner.less +24 -6
  23. package/styles/base/_normalize.less +14 -0
  24. package/styles/base/_print.less +25 -12
  25. package/styles/base/_scaffolding.less +24 -28
  26. package/styles/base/_type.less +41 -19
  27. package/styles/components/_markdown-content.less +4 -1
  28. package/styles/components/_smartrules.less +14 -8
  29. package/styles/components/_smartrules.scss +6 -2
  30. package/styles/components/application-and-system/_c8y-cookie-banner.less +36 -0
  31. package/styles/components/{specialized → application-and-system}/_c8y-login.less +20 -6
  32. package/styles/components/data-display-and-visualization/_boxed-label.less +45 -0
  33. package/styles/components/data-display-and-visualization/_boxed-label.scss +46 -0
  34. package/styles/components/{specialized → data-display-and-visualization}/_c8y-data-explorer.less +37 -23
  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 +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 +19 -5
  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-data-explorer.scss +0 -0
  215. /package/styles/components/{specialized → data-display-and-visualization}/_c8y-datapoint-pill.scss +0 -0
  216. /package/styles/components/{specialized → data-display-and-visualization}/_c8y-pulse.scss +0 -0
  217. /package/styles/components/{specialized → data-display-and-visualization}/_smart-list-icon-label.scss +0 -0
  218. /package/styles/components/{specialized → data-display-and-visualization}/_status.scss +0 -0
  219. /package/styles/components/{specialized → data-display-and-visualization}/_statusContainer.scss +0 -0
  220. /package/styles/components/{specialized → data-input}/_c8y-countdown-interval.scss +0 -0
  221. /package/styles/components/{specialized → data-input}/_c8y-range.scss +0 -0
  222. /package/styles/components/{specialized → data-input}/_search-header.scss +0 -0
  223. /package/styles/components/{specialized → data-input}/_static-assets-file-picker.scss +0 -0
  224. /package/styles/components/{specialized → navigation-and-layout}/_c8y-role-card.scss +0 -0
  225. /package/styles/components/{specialized → navigation-and-layout}/_c8y-scrollbar.scss +0 -0
  226. /package/styles/components/{specialized → navigation-and-layout}/_c8y-smart-rest-tab.scss +0 -0
  227. /package/styles/components/{specialized → navigation-and-layout}/_c8y-stepper.scss +0 -0
  228. /package/styles/components/{specialized → navigation-and-layout}/_c8y-user-roles.scss +0 -0
  229. /package/styles/components/{specialized → navigation-and-layout}/_device-software-tab.scss +0 -0
  230. /package/styles/components/{specialized → status-feedback-and-notifications}/_c8y-message-banner.scss +0 -0
  231. /package/styles/components/{specialized → status-feedback-and-notifications}/_code.scss +0 -0
  232. /package/styles/mixins/{alert-variant.less → _alert-variant.less} +0 -0
  233. /package/styles/mixins/{animation.less → _animation.less} +0 -0
  234. /package/styles/mixins/{background-variant.less → _background-variant.less} +0 -0
  235. /package/styles/mixins/{border-radius.less → _border-radius.less} +0 -0
  236. /package/styles/mixins/{buttons.less → _buttons.less} +0 -0
  237. /package/styles/mixins/{c8y-scrollbar.less → _c8y-scrollbar.less} +0 -0
  238. /package/styles/mixins/{center-block.less → _center-block.less} +0 -0
  239. /package/styles/mixins/{clearfix.less → _clearfix.less} +0 -0
  240. /package/styles/mixins/{create-grid.less → _create-grid.less} +0 -0
  241. /package/styles/mixins/{grid.less → _grid.less} +0 -0
  242. /package/styles/mixins/{hide-scrollbars.less → _hide-scrollbars.less} +0 -0
  243. /package/styles/mixins/{hide-text.less → _hide-text.less} +0 -0
  244. /package/styles/mixins/{image.less → _image.less} +0 -0
  245. /package/styles/mixins/{labels.less → _labels.less} +0 -0
  246. /package/styles/mixins/{list-group.less → _list-group.less} +0 -0
  247. /package/styles/mixins/{nav-divider.less → _nav-divider.less} +0 -0
  248. /package/styles/mixins/{opacity.less → _opacity.less} +0 -0
  249. /package/styles/mixins/{pagination.less → _pagination.less} +0 -0
  250. /package/styles/mixins/{panels.less → _panels.less} +0 -0
  251. /package/styles/mixins/{reset-filter.less → _reset-filter.less} +0 -0
  252. /package/styles/mixins/{reset-text.less → _reset-text.less} +0 -0
  253. /package/styles/mixins/{resize.less → _resize.less} +0 -0
  254. /package/styles/mixins/{responsive-visibility.less → _responsive-visibility.less} +0 -0
  255. /package/styles/mixins/{size.less → _size.less} +0 -0
  256. /package/styles/mixins/{tab-focus.less → _tab-focus.less} +0 -0
  257. /package/styles/mixins/{table-row.less → _table-row.less} +0 -0
  258. /package/styles/mixins/{tag.less → _tag.less} +0 -0
  259. /package/styles/mixins/{text-emphasis.less → _text-emphasis.less} +0 -0
  260. /package/styles/mixins/{text-overflow.less → _text-overflow.less} +0 -0
  261. /package/variables/{login-vars.scss → _login-vars.scss} +0 -0
  262. /package/variables/{shadows.less → _shadows.less} +0 -0
  263. /package/variables/{shadows.scss → _shadows.scss} +0 -0
  264. /package/variables/tokens/{c8y-design-tokens-dark.scss → _c8y-design-tokens-dark.scss} +0 -0
  265. /package/variables/tokens/{c8y-design-tokens.scss → _c8y-design-tokens.scss} +0 -0
@@ -1,14 +1,45 @@
1
+
2
+ @import "../../../mixins/_c8y-scrollbar.less";
3
+ @import "../../../mixins/_tab-focus.less";
4
+ @import "../../../mixins/_vendor-prefixes.less";
5
+
6
+ /**
7
+ * Card - Base card component with all variants
8
+ *
9
+ * Note: Uses @size-* tokens extensively; @font-size-* tokens, and component variables.
10
+ *
11
+ * Intentionally hardcoded values:
12
+ * - Component-specific dimensions (56px, 60px, 66px, 80px, 90px, 100px, 140px): Card sizes and minimums
13
+ * - Typography sizes (18px, 20px, 22px, 36px): Icon and heading font sizes
14
+ * - Border widths (1px, 2px): Standard borders and outlines
15
+ * - Negative offsets (-1px, -2px): Fine-tuning
16
+ * - Percentages (100%): Layout
17
+ * - Z-index values: Stacking order
18
+ * - Opacity values: Visual states
19
+ * - Transition durations: Animation timing
20
+ * - Box-shadow values: Elevation effects
21
+ * - RGBA values: Transparency
22
+ */
23
+
24
+ // Shared mixin for card status color variants
25
+ .card-status-variant(@bg-color; @text-color; @muted-color) {
26
+ background-color: @bg-color;
27
+ color: @text-color;
28
+ --c8y-component-color-text-muted: @{muted-color};
29
+ --c8y-component-border-color: rgba(black, 0.1);
30
+ }
31
+
1
32
  .card {
2
33
  position: relative;
3
34
  display: block;
4
- margin-bottom: @margin-16;
35
+ margin-bottom: @size-16;
5
36
  padding: 0;
6
37
  border-radius: @component-border-radius-base;
7
38
  background: @component-background-default;
8
39
  box-shadow: var(--c8y-elevation-sm);
9
40
 
10
41
  @media (min-width: @screen-sm-min) {
11
- margin-bottom: @margin-24;
42
+ margin-bottom: @size-24;
12
43
  }
13
44
 
14
45
  &.pointer {
@@ -67,40 +98,33 @@
67
98
 
68
99
  // state colors
69
100
  &.danger {
70
- background-color: var(--palette-status-danger-light, var(--c8y-palette-status-danger-light));
71
- color: var(--palette-status-danger-dark, var(--c8y-palette-status-danger-dark));
72
- --c8y-component-color-text-muted: var(--palette-status-danger, var(--c8y-palette-status-danger));
73
- --c8y-component-border-color: rgba(black, 0.1);
101
+ .card-status-variant(var(--palette-status-danger-light, var(--c8y-palette-status-danger-light)),
102
+ var(--palette-status-danger-dark, var(--c8y-palette-status-danger-dark)),
103
+ var(--palette-status-danger, var(--c8y-palette-status-danger)));
74
104
  }
75
105
 
76
106
  &.warning {
77
- background-color: var(--palette-status-warning-light, var(--c8y-palette-status-warning-light));
78
- color: var(--palette-status-warning-dark, var(--c8y-palette-status-warning-dark));
79
- --c8y-component-color-text-muted: var(--palette-status-warning, var(--c8y-palette-status-warning));
80
- --c8y-component-border-color: rgba(black, 0.1);
107
+ .card-status-variant(var(--palette-status-warning-light, var(--c8y-palette-status-warning-light)),
108
+ var(--palette-status-warning-dark, var(--c8y-palette-status-warning-dark)),
109
+ var(--palette-status-warning, var(--c8y-palette-status-warning)));
81
110
  }
82
111
 
83
112
  &.success {
84
- background-color: var(--palette-status-success-light, var(--c8y-palette-status-success-light));
85
- color: var(--palette-status-success-dark, var(--c8y-palette-status-success-dark));
86
- --c8y-component-color-text-muted: var(--palette-status-success, var(--c8y-palette-status-success));
87
- --c8y-component-border-color: rgba(black, 0.1);
113
+ .card-status-variant(var(--palette-status-success-light, var(--c8y-palette-status-success-light)),
114
+ var(--palette-status-success-dark, var(--c8y-palette-status-success-dark)),
115
+ var(--palette-status-success, var(--c8y-palette-status-success)));
88
116
  }
89
117
 
90
118
  &.info {
91
- background-color: var(--palette-status-info-light, var(--c8y-palette-status-info-light));
92
- color: var(--palette-status-info-dark, var(--c8y-palette-status-info-dark));
93
-
94
- --c8y-component-color-text-muted: var(--palette-status-info, var(--c8y-palette-status-info));
95
- --c8y-component-border-color: rgba(black, 0.1);
119
+ .card-status-variant(var(--palette-status-info-light, var(--c8y-palette-status-info-light)),
120
+ var(--palette-status-info-dark, var(--c8y-palette-status-info-dark)),
121
+ var(--palette-status-info, var(--c8y-palette-status-info)));
96
122
  }
97
123
 
98
124
  &.brand {
99
- background-color: var(--brand-primary, var(--c8y-brand-primary));
100
- color: @palette-high;
101
-
102
- --c8y-component-color-text-muted: @palette-high;
103
- --c8y-component-border-color: rgba(black, 0.1);
125
+ .card-status-variant(var(--brand-primary, var(--c8y-brand-primary));
126
+ @palette-high;
127
+ @palette-high);
104
128
  }
105
129
 
106
130
  &.not-active {
@@ -114,7 +138,7 @@
114
138
  // tabs inside card
115
139
  .card-has-tabs {
116
140
  .nav.nav-tabs {
117
- padding: 0 @margin-16 0;
141
+ padding: 0 @size-16 0;
118
142
 
119
143
  .nav-item {
120
144
  padding-top: 7px;
@@ -199,13 +223,13 @@
199
223
  .card-icon,
200
224
  .card-title {
201
225
  order: 0;
202
- padding-right: @margin-base;
226
+ padding-right: @size-base;
203
227
  }
204
228
 
205
229
  .card-icon {
206
230
  margin-top: -6px;
207
231
  min-width: 30px;
208
- max-height: 20px;
232
+ max-height: @size-20;
209
233
  font-size: 22px;
210
234
  line-height: @line-height-computed;
211
235
  }
@@ -214,7 +238,7 @@
214
238
  .card-title .statusContainer {
215
239
  .interact-list & {
216
240
  margin-top: 0;
217
- max-height: 20px;
241
+ max-height: @size-20;
218
242
  font-size: 20px;
219
243
  }
220
244
  }
@@ -230,11 +254,11 @@
230
254
  overflow: hidden;
231
255
  margin: 0;
232
256
  padding: 0;
233
- min-height: 20px;
257
+ min-height: @size-20;
234
258
  height: auto;
235
259
  text-overflow: ellipsis;
236
260
  font-weight: 500;
237
- font-size: 18px;
261
+ font-size: @font-size-h4;
238
262
  line-height: @headings-line-height;
239
263
  }
240
264
 
@@ -244,14 +268,14 @@
244
268
  }
245
269
 
246
270
  .card-appicon {
247
- padding: 24px 8px 0;
271
+ padding: @size-24 @size-8 0;
248
272
  height: 66px;
249
- font-size: 36px;
273
+ font-size: @font-size-h1;
250
274
  line-height: 1;
251
275
  }
252
276
 
253
277
  .card-subtitle {
254
- margin: 4px 0 0;
278
+ margin: @size-4 0 0;
255
279
  width: 100%;
256
280
  color: @component-color-text-muted;
257
281
  font-size: 110%;
@@ -272,14 +296,14 @@
272
296
  padding: 0 @component-padding;
273
297
 
274
298
  &:first-child {
275
- padding-top: @margin-16;
299
+ padding-top: @size-16;
276
300
  }
277
301
  }
278
302
 
279
303
  // fix cropping svgs
280
304
  svg {
281
- padding-top: 4px;
282
- padding-bottom: 4px;
305
+ padding-top: @size-4;
306
+ padding-bottom: @size-4;
283
307
  }
284
308
  }
285
309
 
@@ -289,9 +313,9 @@
289
313
  display: flex;
290
314
  align-items: center;
291
315
  justify-content: flex-start;
292
- padding: 0 4px 0 @margin-8;
316
+ padding: 0 @size-4 0 @size-8;
293
317
  width: 100%;
294
- height: 4px;
318
+ height: @size-4;
295
319
 
296
320
  .card-header-title {
297
321
  display: none;
@@ -299,7 +323,7 @@
299
323
 
300
324
  .header-actions {
301
325
  margin-top: -6px;
302
- margin-right: -20px;
326
+ margin-right: calc(-1 * @size-20);
303
327
 
304
328
  .optionsBtn:not(.open) {
305
329
  border-radius: 50%;
@@ -326,7 +350,7 @@
326
350
  }
327
351
 
328
352
  hr {
329
- margin: @margin-base calc(@component-padding * -1);
353
+ margin: @size-base calc(@component-padding * -1);
330
354
  }
331
355
 
332
356
  .flex-row.row {
@@ -358,12 +382,12 @@
358
382
 
359
383
  .card-actions {
360
384
  position: absolute;
361
- top: calc(@margin-base * 0.5);
385
+ top: calc(@size-base * 0.5);
362
386
  right: 0;
363
387
 
364
388
  &.collapsible {
365
389
  display: flex;
366
- width: calc(@margin-base * 10);
390
+ width: calc(@size-base * 10);
367
391
  }
368
392
 
369
393
  > .dropdown {
@@ -378,9 +402,9 @@
378
402
  display: flex;
379
403
  align-items: center;
380
404
  justify-content: center;
381
- padding: @margin-8 11.25px;
382
- min-width: calc(@margin-base * 5);
383
- min-height: calc(@margin-base * 5);
405
+ padding: @size-8 11.25px;
406
+ min-width: calc(@size-base * 5);
407
+ min-height: calc(@size-base * 5);
384
408
 
385
409
  > [class^='dlt-c8y-icon-'],
386
410
  > [class*=' dlt-c8y-icon-'] {
@@ -401,15 +425,7 @@
401
425
  }
402
426
  }
403
427
 
404
- .btn-collapse.active {
405
- background-color: transparent;
406
- opacity: 1;
407
-
408
- [class^='dlt-c8y-icon-'],
409
- [class*=' dlt-c8y-icon-'] {
410
- .rotate(180deg);
411
- }
412
- }
428
+ // Removed unused button selector - verified 0 usages: .btn-collapse
413
429
 
414
430
  .dropdown-toggle,
415
431
  .btn-link {
@@ -435,7 +451,7 @@
435
451
  }
436
452
 
437
453
  .card-actions-group {
438
- padding: calc(@margin-base + 2px) @component-padding;
454
+ padding: calc(@size-base + 2px) @component-padding;
439
455
  text-align: center;
440
456
 
441
457
  &.separator {
@@ -452,7 +468,7 @@
452
468
  color: @component-color-actions;
453
469
  text-transform: uppercase;
454
470
  font-weight: bold;
455
- font-size: 10px;
471
+ font-size: @font-size-xs;
456
472
  line-height: 1.5;
457
473
 
458
474
  .box-shadow(none);
@@ -465,7 +481,7 @@
465
481
  }
466
482
  }
467
483
 
468
- .btn-xs {
484
+ .btn-xs {
469
485
  margin-top: 3px;
470
486
  margin-bottom: 3px;
471
487
  }
@@ -477,19 +493,18 @@
477
493
  align-items: center;
478
494
  justify-content: flex-start;
479
495
  padding: 0 0 0 @component-padding;
480
- height: @margin-48;
496
+ height: @size-48;
481
497
 
482
498
  &:after {
483
499
  position: absolute;
484
- top: calc(@margin-48 - 4px);
500
+ top: calc(@size-48 - @size-4);
485
501
  left: 0;
486
502
  z-index: 10;
487
503
  display: block;
488
504
  width: 100%;
489
- height: 4px;
505
+ height: @size-4;
490
506
  content: '';
491
-
492
- .shadow-scroll();
507
+ &:extend(.shadow-scroll);
493
508
  }
494
509
 
495
510
  // Removed unused scroll utility - verified 0 usages: .no-scroll
@@ -553,7 +568,7 @@
553
568
  align-items: center;
554
569
  align-self: stretch;
555
570
  padding: 0;
556
- min-height: calc(@margin-base * 6);
571
+ min-height: calc(@size-base * 6);
557
572
  font-size: @font-size-small;
558
573
 
559
574
  > span {
@@ -567,11 +582,11 @@
567
582
  align-self: stretch;
568
583
  justify-content: center;
569
584
  margin-left: calc(@component-padding * -1);
570
- width: calc(@margin-base * 6);
585
+ width: calc(@size-base * 6);
571
586
  text-align: center;
572
587
 
573
588
  + .card-title {
574
- padding: 0 calc(@margin-base * 2) 0 0;
589
+ padding: 0 calc(@size-base * 2) 0 0;
575
590
  }
576
591
  }
577
592
 
@@ -580,7 +595,7 @@
580
595
  margin-left: auto;
581
596
 
582
597
  .btn-link {
583
- min-width: calc(@margin-base * 5);
598
+ min-width: calc(@size-base * 5);
584
599
  color: @component-color-actions;
585
600
 
586
601
  &:hover {
@@ -601,10 +616,10 @@
601
616
  }
602
617
 
603
618
  .optionsBtn {
604
- margin-right: @margin-4;
619
+ margin-right: @size-4;
605
620
  }
606
621
  .btn-icon {
607
- min-width: calc(@margin-base * 5);
622
+ min-width: calc(@size-base * 5);
608
623
  color: @component-color-actions;
609
624
  text-align: center;
610
625
  .optionsBtn &{
@@ -634,7 +649,7 @@
634
649
  right: 0;
635
650
  left: 0;
636
651
  z-index: 10;
637
- height: 4px;
652
+ height: @size-4;
638
653
  background-color: @component-background-default;
639
654
  content: '';
640
655
  }
@@ -642,7 +657,7 @@
642
657
  }
643
658
 
644
659
  .card-navbar {
645
- padding: 4px @component-padding;
660
+ padding: @size-4 @component-padding;
646
661
  }
647
662
 
648
663
  .card-select {
@@ -697,8 +712,8 @@ c8y-device-request-card {
697
712
  height: 60px;
698
713
  overflow: hidden;
699
714
  position: absolute;
700
- top: -4px;
701
- left: -4px;
715
+ top: calc(-1 * @size-4);
716
+ left: calc(-1 * @size-4);
702
717
 
703
718
  &::before,
704
719
  &::after {
@@ -726,16 +741,16 @@ c8y-device-request-card {
726
741
  position: absolute;
727
742
  display: block;
728
743
  width: 90px;
729
- padding: 2px 16px;
744
+ padding: 2px @size-16;
730
745
  background: @gray-40;
731
746
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
732
747
  color: @palette-high;
733
748
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
734
749
  text-align: center;
735
- right: -10px;
750
+ right: calc(-1 * @size-10);
736
751
  top: 17px;
737
752
  transform: rotate(-45deg);
738
- font-size: @margin-base;
753
+ font-size: @size-base;
739
754
  white-space: nowrap;
740
755
  text-overflow: ellipsis;
741
756
  overflow: hidden;
@@ -1,5 +1,28 @@
1
+
2
+ @import "../../../mixins/_border-radius.less";
3
+ @import "../../../mixins/_clearfix.less";
4
+ @import "../../../mixins/_panels.less";
5
+ @import "../../../mixins/_vendor-prefixes.less";
6
+
7
+ /**
8
+ * Panels - Panel component (Bootstrap 3 legacy component)
9
+ *
10
+ * Note: Uses @size-* tokens for spacing; @font-size-* tokens for typography, and panel component variables.
11
+ *
12
+ * Intentionally hardcoded values:
13
+ * - Off-token spacing (15px): Legacy padding not in token system
14
+ * - Border widths (1px, 2px): Standard borders and outlines
15
+ * - Negative offsets (-1px, -2px): Fine-tuning
16
+ * - Percentages (100%): Layout
17
+ * - Line-height values (1, 1.1): Unitless ratios
18
+ * - Opacity values: Visual states
19
+ * - Transition durations (0.2s, 0.35s): Animation timing
20
+ * - Box-shadow values: Elevation effects
21
+ * - RGBA values: Transparency
22
+ */
23
+
1
24
  .panel {
2
- margin-bottom: calc(@margin-base * 2);
25
+ margin-bottom: @size-16;
3
26
  border: @panel-border-width solid transparent;
4
27
  border-radius: @panel-border-radius;
5
28
 
@@ -8,7 +31,7 @@
8
31
 
9
32
  // Panel contents
10
33
  .panel-body {
11
- &:extend(.clearfix all);
34
+ .clearfix();
12
35
  }
13
36
 
14
37
  // Optional heading
@@ -17,9 +40,8 @@
17
40
  padding: 0;
18
41
  width: 100%;
19
42
  border-bottom: 1px solid @panel-border-color;
20
- font-size: 12px;
43
+ font-size: @font-size-small;
21
44
  font-family: @font-family-headings-css-var;
22
-
23
45
  .border-top-radius((@panel-border-radius - 1px));
24
46
  .btn[btn-checkbox] {
25
47
  margin: 0;
@@ -49,7 +71,6 @@
49
71
  padding: @panel-footer-padding;
50
72
  border-top: 1px solid @panel-inner-border;
51
73
  background-color: @panel-footer-bg;
52
-
53
74
  .border-bottom-radius((@panel-border-radius - 1px));
54
75
  }
55
76
 
@@ -67,14 +88,12 @@
67
88
  &:first-child {
68
89
  .list-group-item:first-child {
69
90
  border-top: 0;
70
-
71
91
  .border-top-radius((@panel-border-radius - 1px));
72
92
  }
73
93
  } // Add border bottom radius for last one
74
94
  &:last-child {
75
95
  .list-group-item:last-child {
76
96
  border-bottom: 0;
77
-
78
97
  .border-bottom-radius((@panel-border-radius - 1px));
79
98
  }
80
99
  }
@@ -233,10 +252,10 @@
233
252
  .panel-heading,
234
253
  .panel-body,
235
254
  .panel-filters {
236
- padding: 10px 15px;
255
+ padding: @size-10 15px;
237
256
  }
238
257
  .panel-heading > .btn-link {
239
- margin-top: -10px !important;
258
+ margin-top: calc(-1 * @size-10) !important;
240
259
  }
241
260
  }
242
261
 
@@ -248,12 +267,12 @@
248
267
  box-shadow: none;
249
268
  }
250
269
  .panel-heading {
251
- margin-bottom: 24px;
252
- padding-bottom: 8px;
270
+ margin-bottom: @size-24;
271
+ padding-bottom: @size-8;
253
272
  [class^='dlt-c8y-icon-'],
254
273
  [class*=' dlt-c8y-icon-'] {
255
274
  color: var(--brand-primary, var(--c8y-brand-primary));
256
- font-size: 16px;
275
+ font-size: @size-16;
257
276
  }
258
277
  }
259
278
  }
@@ -302,8 +321,8 @@
302
321
  left: calc(@panel-heading-height / 2);
303
322
  margin-top: -5px;
304
323
  margin-left: -2px;
305
- width: 4px;
306
- height: 10px;
324
+ width: @size-4;
325
+ height: @size-10;
307
326
  content: '';
308
327
  }
309
328
  > span,
@@ -311,7 +330,7 @@
311
330
  display: inline-block;
312
331
  overflow: hidden;
313
332
  margin-right: auto;
314
- padding-top: 4px;
333
+ padding-top: @size-4;
315
334
  padding-right: 45px;
316
335
  padding-left: 0;
317
336
  vertical-align: middle;
@@ -404,7 +423,6 @@
404
423
 
405
424
  .panel.panel-icon {
406
425
  background-color: @component-background-default;
407
-
408
426
  .box-shadow(0 1px 1px rgba(0, 0, 0, 0.1));
409
427
  > .panel-heading {
410
428
  display: flex;
@@ -419,11 +437,11 @@
419
437
  align-self: stretch;
420
438
  order: 1;
421
439
  margin-right: auto;
422
- padding-top: 4px;
440
+ padding-top: @size-4;
423
441
  text-transform: uppercase;
424
442
  [class^='dlt-c8y-icon-'],
425
443
  [class*=' dlt-c8y-icon-'] {
426
- margin-right: 10px !important;
444
+ margin-right: @size-10 !important;
427
445
  }
428
446
  }
429
447
  &.critical {
@@ -469,7 +487,7 @@
469
487
  display: flex;
470
488
  align-items: center;
471
489
  justify-content: center;
472
- margin-top: -4px;
490
+ margin-top: calc(-1 * @size-4);
473
491
  margin-right: auto;
474
492
  width: @panel-heading-height;
475
493
  height: @panel-heading-height;
@@ -489,7 +507,7 @@
489
507
  .panel-body.text-muted {
490
508
  padding: 0 @panel-body-padding;
491
509
  > .text-muted {
492
- padding: 10px 0;
510
+ padding: @size-10 0;
493
511
  }
494
512
  }
495
513
  }
@@ -1,46 +1,30 @@
1
+
2
+ @import "../../../mixins/_shadows-helper.less";
3
+
4
+ /**
5
+ * Breadcrumbs - Navigation breadcrumb trail component
6
+ *
7
+ * Note: Uses @size-* tokens where applicable and @breadcrumb-* variables for colors.
8
+ *
9
+ * Intentionally hardcoded values:
10
+ * - Percentages (100%): Layout
11
+ * - Opacity values: Visual effects
12
+ */
13
+
1
14
  .breadcrumbs-container {
2
15
  display: block;
3
16
  overflow: visible;
4
17
  color: @breadcrumb-text-color;
5
18
  font-size: @breadcrumbs-font-size;
19
+
6
20
  .breadcrumbs.text-muted {
7
21
  color: inherit;
8
22
  }
9
23
  .text-muted {
10
24
  opacity: 1 !important;
11
25
  }
12
- &.multiple {
13
- position: relative;
14
- padding-left: 14px;
15
- .breadcrumbs {
16
- width: 100%;
17
- }
18
-
19
- &.open {
20
- margin-left: -5px;
21
- padding-left: 19px;
22
- background-color: @breadcrumb-background-default;
23
-
24
- .boxShadowHelper(md, left);
25
- }
26
- }
27
-
28
- li {
29
- display: inline-block;
30
- > a {
31
- color: @breadcrumb-text-color-hover;
32
- }
33
-
34
- > span {
35
- display: inline-block;
36
- min-width: 14px;
37
- text-align: center;
38
- }
39
- }
40
- ul {
41
- margin: 0;
42
- }
43
26
  }
27
+
44
28
  .breadcrumbs {
45
29
  overflow: hidden;
46
30
  margin: 0 !important;
@@ -50,20 +34,18 @@
50
34
  display: flex;
51
35
  align-items: center;
52
36
  > li {
53
- .text-truncate();
54
- display: inline-flex!important;
37
+ overflow: hidden;
38
+ max-width: 100%;
39
+ text-overflow: ellipsis ;
40
+ white-space: nowrap;
41
+ display: inline-flex;
55
42
  align-items: center;
56
43
 
57
- &:last-child {
58
- > a {
59
- color: @breadcrumb-text-color-hover;
60
- }
61
- }
62
44
  > a, > span {
63
45
  text-overflow: ellipsis;
64
46
  overflow: hidden;
65
47
  display: inline-block;
66
- min-width: 14px;
48
+ min-width: @font-size-base;
67
49
  vertical-align: top;
68
50
  text-align: center;
69
51
  }