@c8y/style 1024.13.0 → 1024.14.0

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 (37) hide show
  1. package/README.md +30 -259
  2. package/package.json +2 -2
  3. package/variables/dashboard-themes/_branded-dashboard.scss +290 -296
  4. package/helper-scripts/README-variable-imports.md +0 -155
  5. package/helper-scripts/convert-scss-to-less.sh +0 -527
  6. package/helper-scripts/convert-stroke-icons-to-less.js +0 -115
  7. package/helper-scripts/remove-redundant-variable-imports.sh +0 -80
  8. package/helper-scripts/scss-to-less-skip +0 -20
  9. package/helper-scripts/sync-scss-to-less.sh +0 -75
  10. package/markdown-files/MANUAL-SYNC-FILES.md +0 -56
  11. package/styles/_login-app.less +0 -34
  12. package/styles/_mixins.less +0 -47
  13. package/styles/_utilities.less +0 -21
  14. package/styles/animations/_animate.less +0 -653
  15. package/styles/animations/_realtime-animation-list.less +0 -20
  16. package/styles/components/_markdown-content.less +0 -95
  17. package/styles/components/application-and-system/_c8y-cookie-banner.less +0 -36
  18. package/styles/components/data-display-and-visualization/_boxed-label.less +0 -45
  19. package/styles/components/data-display-and-visualization/_c8y-datapoint-pill.less +0 -104
  20. package/styles/components/data-display-and-visualization/_status.less +0 -105
  21. package/styles/components/data-display-and-visualization/lists/_c8y-data-point-list.less +0 -31
  22. package/styles/components/data-display-and-visualization/tables/_responsive-grid-table.less +0 -189
  23. package/styles/components/data-input/_c8y-ai-chat.less +0 -258
  24. package/styles/components/data-input/_static-assets-file-picker.less +0 -22
  25. package/styles/components/navigation-and-layout/_c8y-scrollbar.less +0 -118
  26. package/styles/components/navigation-and-layout/navigation/_breadcrumbs.less +0 -60
  27. package/styles/components/status-feedback-and-notifications/_c8y-message-banner.less +0 -46
  28. package/styles/dashboard/_c8y-dashboard-style.less +0 -565
  29. package/styles/dashboard/_dashboard-widgets.less +0 -46
  30. package/styles/icons/_dlt-c8y-icons-stroke.less +0 -7260
  31. package/styles/icons/_marker-icons.less +0 -32
  32. package/styles/layout/_bottom-drawer.less +0 -70
  33. package/styles/layout/_group-info.less +0 -26
  34. package/styles/mixins/_gradients.less +0 -117
  35. package/styles/mixins/_icon-base.less +0 -29
  36. package/styles/mixins/_vendor-prefixes.less +0 -131
  37. package/variables/_color-defaults.less +0 -110
@@ -1,95 +0,0 @@
1
-
2
- /**
3
- * Markdown Content - Styling for markdown rendered content
4
- *
5
- * Note: Uses rem units for vertical spacing to maintain consistent rhythm based on root font size.
6
- *
7
- * Intentionally hardcoded values:
8
- * - Component-specific dimensions (800px): Max content width for readability
9
- * - Rem values (1rem, 2rem): Vertical rhythm using rem units (not px tokens)
10
- * - Border widths (1px): Standard borders
11
- * - Percentages (100%): Layout
12
- * - Opacity values (0.65): Visual effects for dark theme
13
- * - Font-weight values (500, 600): Typography weights
14
- */
15
-
16
- .markdown-content {
17
- h1,
18
- h2,
19
- h3,
20
- h4,
21
- h5,
22
- p,
23
- ul,
24
- ol {
25
- margin-bottom: 1rem;
26
- max-width: 800px;
27
- }
28
-
29
- h1,
30
- h2,
31
- h3,
32
- h4,
33
- h5 {
34
- margin-bottom: 2rem;
35
- font-weight: 500;
36
- }
37
-
38
- h2 {
39
- margin: 2rem 0;
40
- padding: 2rem 0;
41
- border-top: 1px solid @gray-50;
42
- border-bottom: 1px dotted @gray-50;
43
- }
44
-
45
- &--to-h3 {
46
- h1,
47
- h2 {
48
- margin: 0 0 1rem;
49
- padding: 2rem 0;
50
- border-top: 1px dotted @gray-50;
51
- font-weight: 600;
52
- font-size: var(--c8y-font-size-h3);
53
-
54
- &:first-child {
55
- border-top: 0;
56
- }
57
-
58
- &:not(:first-child) {
59
- margin-top: 2rem;
60
- }
61
- }
62
- }
63
-
64
- img {
65
- max-width: 100%;
66
- height: auto;
67
- }
68
-
69
- .c8y-dark-theme & {
70
- img {
71
- opacity: 0.65;
72
- }
73
- }
74
-
75
- table{
76
- &:extend(.table);
77
- }
78
- }
79
-
80
- // ignore max width when used in the widget
81
- c8y-markdown-widget-view,
82
- c8y-widget-preview{
83
- .markdown-content {
84
- h1,
85
- h2,
86
- h3,
87
- h4,
88
- h5,
89
- p,
90
- ul,
91
- ol {
92
- max-width: unset;
93
- }
94
- }
95
- }
@@ -1,36 +0,0 @@
1
-
2
-
3
- /**
4
- * c8y cookie uanner - Component styles
5
- *
6
- * Note: Uses @size-* tokens for spacing where applicable.
7
- *
8
- * Intentionally hardcoded values:
9
- * - Component-specific dimensions: Fixed sizes for component layout
10
- * - Off-grid spacing: Component-specific positioning
11
- * - Border widths (1px, 2px, 3px): Standard borders
12
- * - Font-sizes: Typography
13
- * - Percentages: Layout
14
- */
15
- .c8y-cookie-banner {
16
- position: fixed;
17
- top: auto;
18
- right: 0;
19
- bottom: 0;
20
- left: 0;
21
- z-index: @zindex-modal - 3;
22
- background-color: rgba(@black, 0.8);
23
- color: white;
24
- }
25
-
26
- .cookie-banner-content {
27
- column-width: 26rem;
28
-
29
- a{
30
- color: inherit;
31
- text-decoration: underline;
32
- &:hover {
33
- color: inherit;
34
- }
35
- }
36
- }
@@ -1,45 +0,0 @@
1
-
2
-
3
- /**
4
- * Boxed Label - Component styles for creating dashed border containers with optional floating labels
5
- *
6
- * Usage:
7
- * - Single location: dashboard-details-advanced-tab/assign-widget-assets/assign-widget-asset-modal.component.html
8
- * - 6 instances in the assign widget assets modal
9
- * - Used for: widget titles, source sections, device displays, empty states, and action containers
10
- *
11
- * Features:
12
- * - Creates a dashed border box with padding
13
- * - Supports [data-label] attribute to show a floating label (like fieldset legend)
14
- * - Label appears as italic text at the top-left of the box
15
- *
16
- * Note: Uses @size-* tokens for spacing where applicable.
17
- *
18
- * Intentionally hardcoded values:
19
- * - Component-specific dimensions: Fixed sizes for component layout
20
- * - Off-grid spacing: Component-specific positioning (-6px top, 8px left for label)
21
- * - Border widths (1px): Standard dashed border
22
- * - Font-sizes: Typography (xs for label)
23
- * - Border-radius (2px): Subtle rounding
24
- */
25
- .boxed-label {
26
- border: dashed 1px transparent;
27
- padding: @size-8 @size-8 @size-4;
28
- border-radius: 2px;
29
- position: relative;
30
- &[data-label] {
31
- border-color: var(--c8y-palette-gray-60);
32
- &:before{
33
- content: attr(data-label);
34
- position: absolute;
35
- top: -6px;
36
- left: 8px;
37
- font-size: var(--c8y-font-size-xs);
38
- background-color: var(--c8y-root-component-background-default);
39
- color: var(--c8y-root-component-color-text-muted);
40
- padding: 0 4px;
41
- font-style: italic;
42
- border-radius: 2px;
43
- }
44
- }
45
- }
@@ -1,104 +0,0 @@
1
-
2
- @import "../../core/buttons/_buttons.less";
3
-
4
-
5
- /**
6
- * c8y datapoint pill - Component styles
7
- *
8
- * Note: Uses @size-* tokens for spacing where applicable.
9
- *
10
- * Intentionally hardcoded values:
11
- * - Component-specific dimensions: Fixed sizes for component layout
12
- * - Off-grid spacing: Component-specific positioning
13
- * - Border widths (1px, 2px, 3px): Standard borders
14
- * - Font-sizes: Typography
15
- * - Percentages: Layout
16
- */
17
- .c8y-datapoint-pill, .c8y-alarm-pill, .c8y-event-pill {
18
- display: flex;
19
- overflow: hidden;
20
- align-items: center;
21
- min-height: @size-24;
22
- max-width: 100%;
23
- border-radius: @size-16;
24
- background-color: @component-background-default;
25
- box-shadow: none;
26
- border: 1px solid @component-color-text-muted;
27
- font-size: @font-size-small;
28
- line-height: 1;
29
- &__btn {
30
- .btn-clean();
31
- align-self: stretch;
32
- padding: @size-4 @size-4 @size-4 @size-base;
33
- border-right: 1px solid @component-color-text-muted;
34
- color: @text-muted;
35
- line-height: 1;
36
- }
37
- &__label {
38
- display: flex;
39
- overflow: hidden;
40
- align-items: center;
41
- padding: @size-4 calc(@size-base + @size-4) @size-4 @size-4;
42
- line-height: 1;
43
- }
44
- }
45
-
46
- .c8y-datapoint-pill{
47
- &__btn {
48
- &, &:not(.btn){
49
- padding: @size-4;
50
- &:first-child{
51
- border-bottom-left-radius: @size-16!important;
52
- border-top-left-radius: @size-16!important;
53
- }
54
- + .c8y-datapoint-pill__btn{
55
- border-right: 0;
56
- padding-right: @size-base;
57
- }
58
- }
59
- }
60
- }
61
-
62
- .c8y-alarm-pill {
63
- border-radius: @size-4;
64
- &__btn {
65
- &, &:not(.btn){
66
- padding: @size-4!important;
67
- + .c8y-alarm-pill__btn{
68
- border-right: 0;
69
- }
70
- }
71
- }
72
- }
73
-
74
- .c8y-event-pill {
75
- border-radius: 2px;
76
- border: 1px dotted @component-color-text-muted;
77
- &__btn {
78
- &, &:not(.btn){
79
- border-right: 1px dotted @component-color-text-muted;
80
- padding: @size-4 !important;
81
- + .c8y-event-pill__btn{
82
- border-right: 0;
83
- }
84
- }
85
- }
86
- }
87
- .c8y-datapoint-pill, .c8y-alarm-pill, .c8y-event-pill{
88
- &.pill--sm{
89
- .c8y-datapoint-pill, .c8y-alarm-pill, .c8y-event-pill {
90
- &__btn {
91
- &, &:not(.btn){
92
- font-size: 11px;
93
- padding: 1px @size-8 1px @size-4!important;
94
- + .c8y-datapoint-pill__btn,
95
- + .c8y-alarm-pill__btn,
96
- + .c8y-event-pill__btn {
97
- border-right: 0;
98
- padding-right: @size-base;
99
- }
100
- }
101
- }
102
- }
103
- }
104
- }
@@ -1,105 +0,0 @@
1
-
2
-
3
- /**
4
- * status - Component styles
5
- *
6
- * Note: Uses @size-* tokens for spacing where applicable.
7
- *
8
- * Intentionally hardcoded values:
9
- * - Component-specific dimensions: Fixed sizes for component layout
10
- * - Off-grid spacing: Component-specific positioning
11
- * - Border widths (1px, 2px, 3px): Standard borders
12
- * - Font-sizes: Typography
13
- * - Percentages: Layout
14
- */
15
- .statusOk {
16
- color: var(--palette-status-success-dark, var(--c8y-palette-status-success-dark));
17
- }
18
-
19
- .statusNok {
20
- color: var(--palette-status-danger, var(--c8y-palette-status-danger));
21
- }
22
-
23
- .statusAlert {
24
- color: var(--palette-status-warning, var(--c8y-palette-status-warning));
25
- }
26
-
27
- .statusUnknown {
28
- color: @gray-40;
29
- }
30
-
31
- .sendStatus,
32
- .pushStatus {
33
- fill: url(#smallGradient);
34
- }
35
-
36
- .status.warning {
37
- color: var(--palette-status-info, var(--c8y-palette-status-info));
38
- }
39
- .color.warning {
40
- color: var(--palette-status-warning, var(--c8y-palette-status-warning));
41
- }
42
- .color.minor {
43
- color: var(--palette-status-warning-high, var(--c8y-palette-status-warning-high));
44
- }
45
- .status.minor {
46
- --c8y-icon-stroke-color: var(--c8y-palette-orange-10);
47
- color: var(--palette-status-warning-high, var(--c8y-palette-status-warning-high));
48
- }
49
-
50
- .status.major {
51
- color: var(--palette-status-warning, var(--c8y-palette-status-warning));
52
- }
53
- .color.major {
54
- color: var(--palette-status-warning, var(--c8y-palette-status-warning));
55
- }
56
-
57
- .status.critical {
58
- color: var(--palette-status-danger, var(--c8y-palette-status-danger));
59
- }
60
-
61
- .color.critical {
62
- color: var(--palette-status-danger, var(--c8y-palette-status-danger));
63
- }
64
-
65
- // for svg
66
- path.statusUnknown {
67
- fill: @gray-50;
68
- &.pushStatus {
69
- fill: @gray-40;
70
- }
71
- }
72
-
73
- path.statusOk {
74
- fill: @status-success;
75
- &.pushStatus {
76
- fill: @status-success-dark;
77
- }
78
- }
79
-
80
- path.statusNok {
81
- fill: @status-danger;
82
- &.pushStatus {
83
- fill: @status-danger-dark;
84
- }
85
- }
86
-
87
- .fill-warning {
88
- fill: @status-warning;
89
- }
90
-
91
- .alarm-icons {
92
- position: relative;
93
- font-size: @size-20;
94
- width: 28px;
95
- .btn-clean.severity {
96
- position: absolute !important;
97
- top: 0;
98
- left: 50%;
99
- z-index: 10;
100
- }
101
- .btn-clean.status {
102
- margin-top: 8px;
103
- font-size: @size-24;
104
- }
105
- }
@@ -1,31 +0,0 @@
1
-
2
- /**
3
- * C8Y Data Point List - Data point selection list component
4
- *
5
- * Note: Uses @size-* tokens for spacing and @component-padding.
6
- *
7
- * Intentionally hardcoded values:
8
- * - None - all values use design tokens
9
- */
10
-
11
- // Removed unused deprecated component class - verified 0 usages: .c8y-data-point-list
12
-
13
- c8y-datapoint-selection-list,
14
- c8y-alarm-event-selection-list {
15
-
16
- .c8y-list__item__actions {
17
- align-self: center;
18
- }
19
-
20
- .c8y-list__item__collapse--container {
21
- padding: @component-padding;
22
- }
23
- }
24
-
25
- // Removed modal selector for .c8y-data-point-list (class is unused)
26
-
27
- // c8y-datapoint-selector-list-item {
28
- // .c8y-list__item__actions{
29
- // padding-top: 10px!important;
30
- // }
31
- // }
@@ -1,189 +0,0 @@
1
- // Base grid + column span utilities
2
- .responsive-grid-table {
3
- display: grid;
4
- grid-template-columns: repeat(12, 1fr);
5
- background: inherit;
6
-
7
- &-wrapper--striped{
8
- .responsive-grid-table:nth-child(even) {
9
- background: @component-background-odd;
10
- }
11
- }
12
-
13
- &__header{
14
- box-shadow: inset 0 -1px 0 var(--c8y-component-border-color, var(--c8y-root-component-border-color));
15
-
16
- > [class^="col-"],
17
- > [class*=" col-"] {
18
- padding: calc(@size-base + @size-10) @component-padding;
19
- color: var(--c8y-component-form-label-color, var(--c8y-form-label-color));
20
- vertical-align: bottom;
21
- text-transform: uppercase;
22
- font-size: var(--c8y-font-size-small);
23
- font-weight: bold;
24
- line-height: calc(var(--c8y-unit-base) * 2.5);
25
- }
26
- .inner-scroll &{
27
- position: sticky;
28
- top: 0;
29
- z-index: 1;
30
- background: var(--c8y-page-sticky-header-background-default);
31
- }
32
- }
33
- &__body{
34
- > [class^="col-"],
35
- > [class*=" col-"] {
36
- display: flex;
37
- align-items: center;
38
- padding-top: calc(@size-base + @size-10);
39
- padding-bottom: calc(@size-base + @size-10);
40
- &.align-right {
41
- justify-content: flex-end;
42
- text-align: right;
43
- }
44
- }
45
- }
46
- &--separator{
47
- box-shadow: inset 0 -1px 0 var(--c8y-component-border-color, var(--c8y-root-component-border-color));
48
- &:last-child {
49
- box-shadow: none;
50
- }
51
- }
52
- // Padding modifiers — -x (horizontal), -y (vertical), shorthand (both)
53
- &--padded-x {
54
- &.responsive-grid-table__header > [class^="col-"],
55
- &.responsive-grid-table__header > [class*=" col-"],
56
- &.responsive-grid-table__body > [class^="col-"],
57
- &.responsive-grid-table__body > [class*=" col-"] {
58
- padding-left: @component-padding;
59
- padding-right: @component-padding;
60
- }
61
- }
62
- &--padded-y {
63
- &.responsive-grid-table__header > [class^="col-"],
64
- &.responsive-grid-table__header > [class*=" col-"],
65
- &.responsive-grid-table__body > [class^="col-"],
66
- &.responsive-grid-table__body > [class*=" col-"] {
67
- padding-top: @component-padding;
68
- padding-bottom: @component-padding;
69
- }
70
- }
71
- &--padded {
72
- &.responsive-grid-table__header > [class^="col-"],
73
- &.responsive-grid-table__header > [class*=" col-"],
74
- &.responsive-grid-table__body > [class^="col-"],
75
- &.responsive-grid-table__body > [class*=" col-"] {
76
- padding-left: @component-padding;
77
- padding-right: @component-padding;
78
- padding-top: @component-padding;
79
- padding-bottom: @component-padding;
80
- }
81
- }
82
-
83
- // Condensed modifiers — -x (horizontal), -y (vertical + font-size), shorthand (both)
84
- &--condensed-x {
85
- &.responsive-grid-table__header > [class^="col-"],
86
- &.responsive-grid-table__header > [class*=" col-"],
87
- &.responsive-grid-table__body > [class^="col-"],
88
- &.responsive-grid-table__body > [class*=" col-"] {
89
- padding-left: var(--c8y-table-cell-padding-condensed);
90
- padding-right: var(--c8y-table-cell-padding-condensed);
91
- }
92
- }
93
- &--condensed-y {
94
- &.responsive-grid-table__header > [class^="col-"],
95
- &.responsive-grid-table__header > [class*=" col-"] {
96
- padding-top: var(--c8y-table-cell-padding-condensed);
97
- padding-bottom: var(--c8y-table-cell-padding-condensed);
98
- font-size: calc(var(--c8y-unit-base) * 1.25);
99
- }
100
- &.responsive-grid-table__body > [class^="col-"],
101
- &.responsive-grid-table__body > [class*=" col-"] {
102
- padding-top: calc(var(--c8y-table-cell-padding-condensed) - 1px);
103
- padding-bottom: calc(var(--c8y-table-cell-padding-condensed) - 1px);
104
- font-size: var(--c8y-font-size-small);
105
- }
106
- }
107
- &--condensed {
108
- &.responsive-grid-table__header > [class^="col-"],
109
- &.responsive-grid-table__header > [class*=" col-"] {
110
- padding-top: var(--c8y-table-cell-padding-condensed);
111
- padding-bottom: var(--c8y-table-cell-padding-condensed);
112
- padding-left: var(--c8y-table-cell-padding-condensed);
113
- padding-right: var(--c8y-table-cell-padding-condensed);
114
- font-size: calc(var(--c8y-unit-base) * 1.25);
115
- }
116
- &.responsive-grid-table__body > [class^="col-"],
117
- &.responsive-grid-table__body > [class*=" col-"] {
118
- padding-top: calc(var(--c8y-table-cell-padding-condensed) - 1px);
119
- padding-bottom: calc(var(--c8y-table-cell-padding-condensed) - 1px);
120
- padding-left: var(--c8y-table-cell-padding-condensed);
121
- padding-right: var(--c8y-table-cell-padding-condensed);
122
- font-size: var(--c8y-font-size-small);
123
- }
124
- }
125
-
126
- .col-actions{
127
- display: flex;
128
- align-items: center;
129
- justify-content: flex-end;
130
- }
131
- }
132
-
133
- // Replaces SCSS: @for $i from 1 through 12
134
- .generate-col-spans(@i) when (@i > 0) {
135
- .col-@{i} {
136
- grid-column: span @i;
137
- }
138
- .generate-col-spans((@i - 1));
139
- }
140
- .generate-col-spans(12);
141
-
142
- // Mixin to create a wrapper + container query pair
143
- // @name -> suffix for class/container name and width
144
- .responsive-grid-table-wrapper(@name) {
145
- @cq-name: ~"responsive-grid-table-wrapper--@{name}";
146
-
147
- .responsive-grid-table-wrapper--@{name} {
148
- container-type: inline-size;
149
- container-name: @cq-name;
150
- width: 100%;
151
-
152
- // When a header is present, inline labels are redundant — hide them
153
- &:has(.responsive-grid-table__header) .text-label-small {
154
- display: none;
155
- }
156
- }
157
-
158
- @container @cq-name (max-width: unit(@name, px)) {
159
- .responsive-grid-table {
160
- grid-template-columns: 1fr; // stack
161
- &__header {
162
- display: none;
163
- }
164
- .col-actions {
165
- justify-content: flex-start;
166
- }
167
- }
168
- // Header is hidden when stacked — show inline labels so values stay identifiable
169
- .text-label-small {
170
- display: block !important;
171
- }
172
- // hover-only element that becomes visible when stacked
173
- .showOnHover {
174
- opacity: 1 !important;
175
- }
176
- // Any class that contains "col-" becomes full-width when stacked
177
- .responsive-grid-table > [class^="col-"],
178
- .responsive-grid-table > [class*=" col-"] {
179
- grid-column: span 1;
180
- }
181
- }
182
- }
183
-
184
- // Replaces SCSS: @for $w from 600 through 200 (step -50)
185
- .generate-wrappers(@w) when (@w >= 200) {
186
- .responsive-grid-table-wrapper(@w);
187
- .generate-wrappers((@w - 50));
188
- }
189
- .generate-wrappers(600);