@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,3 +1,23 @@
1
+
2
+
3
+ /**
4
+ * C8Y Switch - Toggle switch form control
5
+ *
6
+ * Note: Uses @switch-sm variable and @form-control-* variables. Uses @size-* tokens where applicable.
7
+ *
8
+ * Intentionally hardcoded values:
9
+ * - Fine-tuning offsets (2px, 3px, 6px): Switch handle positioning and spacing
10
+ * - Hardcoded height (32px): Form control height reference in calc
11
+ * - Box-shadow values (2px, 3px): Shadow depth
12
+ * - Outline width (2px): Focus indicator
13
+ * - Transition durations (0.25s): Animation timing
14
+ * - Percentages (33.333%, 100%): Fractional layout
15
+ * - Opacity values: Visual effects
16
+ * - RGBA values: Shadow colors
17
+ */
18
+
19
+ // Note: Mixins with @content not used - expanded inline for LESS compatibility
20
+
1
21
  .c8y-switch {
2
22
  display: flex;
3
23
  position: relative;
@@ -53,7 +73,7 @@
53
73
  background-color: @switch-background-default;
54
74
  box-shadow: none;
55
75
 
56
- .transition(background 0.25s ease);
76
+ transition: background 0.25s ease;
57
77
  }
58
78
 
59
79
  &::after {
@@ -67,8 +87,8 @@
67
87
  background-color: var(--c8y-switch-handle-background, @form-control-background-default);
68
88
  content: '';
69
89
 
70
- .box-shadow(0 2px 3px fade(@black, 20%));
71
- .transition(all 0.25s ease) !important;
90
+ box-shadow: 0 2px 3px rgba(@black, 0.2);
91
+ transition: all 0.25s ease !important;
72
92
  }
73
93
  }
74
94
 
@@ -119,7 +139,7 @@
119
139
  justify-content: stretch;
120
140
  align-items: center;
121
141
  height: @form-control-height-base;
122
- border-radius: 16px;
142
+ border-radius: @size-16;
123
143
  width: 100%;
124
144
  background: @gray-60;
125
145
  position: relative;
@@ -127,7 +147,7 @@
127
147
  [class^='dlt-c8y-icon-'],
128
148
  [class*=' dlt-c8y-icon-'],
129
149
  .c8y-icon {
130
- font-size: 16px;
150
+ font-size: @size-16;
131
151
  }
132
152
 
133
153
  input {
@@ -145,26 +165,26 @@
145
165
  text-align: center;
146
166
  cursor: pointer;
147
167
  position: relative;
148
- z-index: 100;
168
+ z-index: 5;
149
169
  }
150
170
 
151
171
  &__handle {
152
172
  display: block;
153
- height: 24px;
154
- width: calc(33.333% - 8px);
173
+ height: @size-24;
174
+ width: calc(33.333% - @size-8);
155
175
  background-color: var(--c8y-switch-handle-background, @form-control-background-default);
156
- .box-shadow(0 2px 3px fade(@black, 20%));
157
- border-radius: 16px;
176
+ box-shadow: 0 2px 3px rgba(@black, 0.2);
177
+ border-radius: @size-16;
158
178
  position: absolute;
159
179
  transition: left 0.25s ease;
160
- top: 4px;
161
- z-index: 40;
180
+ top: @size-4;
181
+ z-index: 3;
162
182
  transform: translate(-50%, 0);
163
- .c8y-dark-theme &{
183
+ .c8y-dark-theme & {
164
184
  --c8y-switch-handle-background: var(--brand-primary, var(--c8y-brand-primary));
165
185
  }
166
- .c8y-system-theme &{
167
- @media (prefers-color-scheme: dark){
186
+ .c8y-system-theme & {
187
+ @media (prefers-color-scheme: dark) {
168
188
  --c8y-switch-handle-background: var(--brand-primary, var(--c8y-brand-primary));
169
189
  }
170
190
  }
@@ -176,7 +196,7 @@
176
196
  outline: 2px solid @component-color-focus;
177
197
  }
178
198
  }
179
-
199
+
180
200
  &:checked,
181
201
  &:focus {
182
202
  &:nth-child(1) {
@@ -198,13 +218,13 @@
198
218
  }
199
219
  }
200
220
  }
201
- .c8y-dark-theme &{
221
+ .c8y-dark-theme & {
202
222
  input:checked + label {
203
223
  color: @gray-100;
204
224
  }
205
225
  }
206
- .c8y-system-theme &{
207
- @media (prefers-color-scheme: dark){
226
+ .c8y-system-theme & {
227
+ @media (prefers-color-scheme: dark) {
208
228
  input:checked + label {
209
229
  color: @gray-100;
210
230
  }
@@ -1,3 +1,4 @@
1
+
1
2
  @use "../../../variables/index" as *;
2
3
 
3
4
  /**
@@ -16,26 +17,7 @@
16
17
  * - RGBA values: Shadow colors
17
18
  */
18
19
 
19
- // Shared mixin for multistate handle positioning
20
- @mixin multistate-handle-position($nth, $multiplier) {
21
- &:nth-child(#{$nth}) {
22
- ~ .c8y-switch-multistate__handle {
23
- left: calc((100% / 6) * #{$multiplier});
24
- }
25
- }
26
- }
27
-
28
- // Shared mixin for dark theme styles
29
- @mixin dark-theme-styles {
30
- .c8y-dark-theme & {
31
- @content;
32
- }
33
- .c8y-system-theme & {
34
- @media (prefers-color-scheme: dark) {
35
- @content;
36
- }
37
- }
38
- }
20
+ // Note: Mixins with @content not used - expanded inline for LESS compatibility
39
21
 
40
22
  .c8y-switch {
41
23
  display: flex;
@@ -107,7 +89,7 @@
107
89
  content: '';
108
90
 
109
91
  box-shadow: 0 2px 3px rgba($black, 0.2);
110
- transition: all 0.25s ease;
92
+ transition: all 0.25s ease !important;
111
93
  }
112
94
  }
113
95
 
@@ -184,7 +166,7 @@
184
166
  text-align: center;
185
167
  cursor: pointer;
186
168
  position: relative;
187
- z-index: 100;
169
+ z-index: 5;
188
170
  }
189
171
 
190
172
  &__handle {
@@ -197,11 +179,16 @@
197
179
  position: absolute;
198
180
  transition: left 0.25s ease;
199
181
  top: $size-4;
200
- z-index: 40;
182
+ z-index: 3;
201
183
  transform: translate(-50%, 0);
202
- @include dark-theme-styles {
184
+ .c8y-dark-theme & {
203
185
  --c8y-switch-handle-background: var(--brand-primary, var(--c8y-brand-primary));
204
186
  }
187
+ .c8y-system-theme & {
188
+ @media (prefers-color-scheme: dark) {
189
+ --c8y-switch-handle-background: var(--brand-primary, var(--c8y-brand-primary));
190
+ }
191
+ }
205
192
  }
206
193
 
207
194
  input {
@@ -213,14 +200,35 @@
213
200
 
214
201
  &:checked,
215
202
  &:focus {
216
- @include multistate-handle-position(1, 1);
217
- @include multistate-handle-position(3, 3);
218
- @include multistate-handle-position(5, 5);
203
+ &:nth-child(1) {
204
+ ~ .c8y-switch-multistate__handle {
205
+ left: calc(100% / 6);
206
+ }
207
+ }
208
+
209
+ &:nth-child(3) {
210
+ ~ .c8y-switch-multistate__handle {
211
+ left: calc((100% / 6) * 3);
212
+ }
213
+ }
214
+
215
+ &:nth-child(5) {
216
+ ~ .c8y-switch-multistate__handle {
217
+ left: calc((100% / 6) * 5);
218
+ }
219
+ }
219
220
  }
220
221
  }
221
- @include dark-theme-styles {
222
+ .c8y-dark-theme & {
222
223
  input:checked + label {
223
224
  color: $gray-100;
224
225
  }
225
226
  }
226
- }
227
+ .c8y-system-theme & {
228
+ @media (prefers-color-scheme: dark) {
229
+ input:checked + label {
230
+ color: $gray-100;
231
+ }
232
+ }
233
+ }
234
+ }
@@ -1,23 +1,77 @@
1
- c8y-drop-area{
2
- display: block;
1
+ @import "../../mixins/_gradients.less";
2
+ @import "../../mixins/_opacity.less";
3
+
4
+ /**
5
+ * File Picker - File upload component with drag-and-drop
6
+ *
7
+ * Note: Uses @size-* tokens for spacing where applicable.
8
+ *
9
+ * Intentionally hardcoded values:
10
+ * - Component-specific sizes (36px, 28px, 100px, 150px, 300px): Icon and container dimensions
11
+ * - Fine-tuning offsets (3px, 6px): Positioning adjustments
12
+ * - Border widths (2px): Standard dashed borders
13
+ * - Transition duration (0.35s): Animation timing
14
+ * - Transform scale (1.1): Hover effect
15
+ */
16
+
17
+ // Shared mixin for upload status/placeholder styling
18
+ .upload-elements-styling() {
19
+ .upload-status,
20
+ .upload-placeholder {
21
+ padding: 0 @size-16;
22
+ width: 100%;
23
+ }
3
24
  }
4
25
 
5
- .drop-zone {
6
- position: relative;
7
- display: block;
8
- padding-bottom: 100%;
9
- height: 0;
26
+ // Shared mixin for alert positioning
27
+ .alert-positioning() {
10
28
  .alert {
11
29
  position: absolute;
12
30
  bottom: 0;
13
31
  margin: 0;
14
32
  width: 100%;
15
33
  }
16
- .upload-status,
17
- .upload-placeholder {
18
- padding: 0 @margin-16;
19
- width: 100%;
34
+ }
35
+
36
+ // Shared mixin for file placeholder icon styling
37
+ .file-placeholder-icon() {
38
+ [class^='dlt-c8y-icon-'],
39
+ [class*=' dlt-c8y-icon-'] {
40
+ color: @component-brand-primary;
41
+ font-size: 36px;
42
+ transition: all 0.35s ease;
43
+ }
44
+ }
45
+
46
+ // Shared mixin for icon hover/drag-over effect
47
+ .icon-hover-effect() {
48
+ .hint-placeholder {
49
+ [class^='dlt-c8y-icon-'],
50
+ [class*=' dlt-c8y-icon-'] {
51
+ transform: scale(1.1);
52
+ }
53
+ }
54
+ }
55
+
56
+ // Shared mixin for error state styling
57
+ .file-placeholder-error() {
58
+ &.has-errors .file-placeholder {
59
+ border-bottom-style: solid;
60
+ border-bottom-color: @form-control-validation-error;
20
61
  }
62
+ }
63
+
64
+ c8y-drop-area {
65
+ display: block;
66
+ }
67
+
68
+ .drop-zone {
69
+ position: relative;
70
+ display: block;
71
+ padding-bottom: 100%;
72
+ height: 0;
73
+ .alert-positioning();
74
+ .upload-elements-styling();
21
75
  .file-placeholder {
22
76
  position: absolute;
23
77
  display: flex;
@@ -31,31 +85,16 @@ c8y-drop-area{
31
85
  text-align: center;
32
86
  transition: border 0.25s ease;
33
87
  .hint-placeholder {
34
- [class^='dlt-c8y-icon-'],
35
- [class*=' dlt-c8y-icon-'] {
36
- color: @component-brand-primary;
37
- font-size: 36px;
38
-
39
- .transition(all 0.35s ease);
40
- }
88
+ .file-placeholder-icon();
41
89
  }
42
90
 
43
91
  &.drag-over,
44
92
  &:hover {
45
93
  border-color: @component-brand-primary;
46
-
47
- .hint-placeholder {
48
- [class^='dlt-c8y-icon-'],
49
- [class*=' dlt-c8y-icon-'] {
50
- .scale(1.1);
51
- }
52
- }
94
+ .icon-hover-effect();
53
95
  }
54
96
  }
55
- &.has-errors .file-placeholder {
56
- border-bottom-style: solid;
57
- border-bottom-color: @form-control-validation-error;
58
- }
97
+ .file-placeholder-error();
59
98
  &.drop-zone-sm,
60
99
  .drop-area-sm & {
61
100
  padding: 0;
@@ -69,7 +108,7 @@ c8y-drop-area{
69
108
  display: block;
70
109
  .hint-placeholder {
71
110
  position: relative;
72
- padding: 10px 10px 10px 50px;
111
+ padding: @size-10 @size-10 @size-10 50px;
73
112
  text-align: left;
74
113
  [class^='dlt-c8y-icon-'],
75
114
  [class*=' dlt-c8y-icon-'] {
@@ -77,7 +116,7 @@ c8y-drop-area{
77
116
  top: 50%;
78
117
  left: 3px;
79
118
 
80
- .translate(0, -50%);
119
+ transform: translate(0, -50%);
81
120
  }
82
121
  p {
83
122
  margin-bottom: 0;
@@ -97,7 +136,7 @@ c8y-drop-area{
97
136
  .hint-placeholder {
98
137
  [class^='dlt-c8y-icon-'],
99
138
  [class*=' dlt-c8y-icon-'] {
100
- left: 8px;
139
+ left: @size-8;
101
140
  font-size: 28px;
102
141
  }
103
142
  p {
@@ -119,7 +158,7 @@ c8y-drop-area{
119
158
  cursor: @cursor-disabled !important;
120
159
  color: @component-color-default;
121
160
  .opacity(0.65);
122
- .box-shadow(none);
161
+ box-shadow: none;
123
162
  }
124
163
  }
125
164
  }
@@ -131,27 +170,18 @@ c8y-file-picker-form-control {
131
170
  min-height: 150px;
132
171
  height: fit-content;
133
172
  transition: min-height 0.25s ease;
134
- padding: 10px;
173
+ padding: @size-10;
135
174
 
136
175
  &.unsupported-format {
137
176
  background-size: 100px 100px;
138
- #gradient > .striped(rgba(0, 0, 0, 0.10));;
177
+ .gradient-striped(rgba(0, 0, 0, 0.10));
139
178
  }
140
179
 
141
180
  &.dragging {
142
181
  min-height: 300px;
143
182
  }
144
- .alert {
145
- position: absolute;
146
- bottom: 0;
147
- margin: 0;
148
- width: 100%;
149
- }
150
- .upload-status,
151
- .upload-placeholder {
152
- padding: 0 @margin-16;
153
- width: 100%;
154
- }
183
+ .alert-positioning();
184
+ .upload-elements-styling();
155
185
  .file-placeholder {
156
186
  flex: 1;
157
187
  display: flex;
@@ -165,15 +195,12 @@ c8y-file-picker-form-control {
165
195
  transition: border 0.25s ease;
166
196
 
167
197
  .hint-placeholder {
198
+ .file-placeholder-icon();
168
199
  [class^='dlt-c8y-icon-'],
169
200
  [class*=' dlt-c8y-icon-'] {
170
201
  &.warning {
171
202
  color: var(--palette-status-warning, var(--c8y-palette-status-warning));
172
203
  }
173
- color: @component-brand-primary;
174
- font-size: 36px;
175
-
176
- .transition(all 0.35s ease);
177
204
  }
178
205
  }
179
206
 
@@ -183,18 +210,9 @@ c8y-file-picker-form-control {
183
210
  &.drag-over,
184
211
  &:hover {
185
212
  border-color: @component-brand-primary;
186
-
187
- .hint-placeholder {
188
- [class^='dlt-c8y-icon-'],
189
- [class*=' dlt-c8y-icon-'] {
190
- .scale(1.1);
191
- }
192
- }
213
+ .icon-hover-effect();
193
214
  }
194
215
  }
195
- &.has-errors .file-placeholder {
196
- border-bottom-style: solid;
197
- border-bottom-color: @form-control-validation-error;
198
- }
216
+ .file-placeholder-error();
199
217
  }
200
218
  }