@c8y/style 1023.37.0 → 1023.42.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/branding-login.less +1 -1
- package/helper-scripts/README-variable-imports.md +155 -0
- package/helper-scripts/README.md +104 -0
- package/helper-scripts/convert-scss-to-less.sh +512 -0
- package/helper-scripts/convert-stroke-icons-to-less.js +115 -0
- package/helper-scripts/remove-redundant-variable-imports.sh +80 -0
- package/helper-scripts/scss-to-less-skip +20 -0
- package/{sync-scss-to-less.sh → helper-scripts/sync-scss-to-less.sh} +2 -2
- package/helper-scripts/test-compile.sh +71 -0
- package/markdown-files/MANUAL-SYNC-FILES.md +56 -0
- package/package.json +2 -2
- package/styles/_login-app.less +34 -0
- package/styles/_login-app.scss +2 -2
- package/styles/_mixins.less +47 -0
- package/styles/_utilities.less +21 -0
- package/styles/_utilities.scss +1 -0
- package/styles/animations/_animate.less +18 -13
- package/styles/animations/_component-animations.less +18 -16
- package/styles/animations/_realtime-animation-list.less +11 -1
- package/styles/animations/_spinner-snake.less +17 -2
- package/styles/animations/_spinner.less +24 -6
- package/styles/base/_normalize.less +14 -0
- package/styles/base/_print.less +25 -12
- package/styles/base/_scaffolding.less +24 -28
- package/styles/base/_type.less +41 -19
- package/styles/components/_markdown-content.less +4 -1
- package/styles/components/_smartrules.less +14 -8
- package/styles/components/_smartrules.scss +6 -2
- package/styles/components/application-and-system/_c8y-cookie-banner.less +36 -0
- package/styles/components/{specialized → application-and-system}/_c8y-login.less +20 -6
- package/styles/components/data-display-and-visualization/_boxed-label.less +45 -0
- package/styles/components/data-display-and-visualization/_boxed-label.scss +46 -0
- package/styles/components/{specialized → data-display-and-visualization}/_c8y-data-explorer.less +37 -23
- package/styles/components/{specialized → data-display-and-visualization}/_c8y-datapoint-pill.less +29 -13
- package/styles/components/{specialized → data-display-and-visualization}/_c8y-pulse.less +33 -6
- package/styles/components/data-display-and-visualization/_range-display.less +25 -16
- package/styles/components/{specialized → data-display-and-visualization}/_smart-list-icon-label.less +19 -5
- package/styles/components/{specialized → data-display-and-visualization}/_status.less +16 -2
- package/styles/components/{specialized → data-display-and-visualization}/_statusContainer.less +16 -2
- package/styles/components/data-display-and-visualization/_timelines-chart.less +2 -0
- package/styles/components/data-display-and-visualization/lists/_c8y-data-point-list.less +10 -0
- package/styles/components/data-display-and-visualization/lists/_c8y-empty-state.less +26 -12
- package/styles/components/data-display-and-visualization/lists/_c8y-list-group.less +83 -43
- package/styles/components/data-display-and-visualization/lists/_cards-layout.less +38 -16
- package/styles/components/data-display-and-visualization/lists/_list-group.less +46 -28
- package/styles/components/data-display-and-visualization/lists/_smart-rules-template-list.less +12 -1
- package/styles/components/data-display-and-visualization/lists/{timeline-list.less → _timeline-list.less} +46 -24
- package/styles/components/data-display-and-visualization/tables/_data-grid.less +45 -25
- package/styles/components/data-display-and-visualization/tables/_resizable-grid.less +18 -5
- package/styles/components/data-display-and-visualization/tables/_tables.less +25 -9
- package/styles/components/data-input/_c8y-ai-chat.less +1 -0
- package/styles/components/{specialized → data-input}/_c8y-countdown-interval.less +15 -13
- package/styles/components/{specialized → data-input}/_c8y-range.less +22 -6
- package/styles/components/{specialized → data-input}/_dtm-icon-selector.less +17 -2
- package/styles/components/{specialized → data-input}/_dtm-icon-selector.scss +1 -2
- package/styles/components/{specialized → data-input}/_measurements-time-control.less +34 -6
- package/styles/components/{specialized → data-input}/_measurements-time-control.scss +14 -2
- package/styles/components/{specialized → data-input}/_search-header.less +22 -6
- package/styles/components/data-input/_static-assets-file-picker.less +22 -0
- package/styles/components/data-input/assets/_asset-property-list.less +38 -23
- package/styles/components/data-input/assets/_asset-table.less +21 -3
- package/styles/components/data-input/assets/_c8y-asset-notes.less +13 -1
- package/styles/components/data-input/assets/_c8y-asset-selector-miller.less +27 -8
- package/styles/components/data-input/assets/_c8y-asset-selector.less +32 -15
- package/styles/components/data-input/assets/_c8y-child-assets-selector.less +90 -9
- package/styles/components/{specialized → forms}/_c8y-schema-form.less +44 -17
- package/styles/components/{specialized → forms}/_c8y-schema-form.scss +15 -3
- package/styles/components/{specialized → navigation-and-layout}/_c8y-role-card.less +21 -5
- package/styles/components/{specialized → navigation-and-layout}/_c8y-scrollbar.less +24 -7
- package/styles/components/{specialized → navigation-and-layout}/_c8y-smart-rest-tab.less +21 -6
- package/styles/components/{specialized → navigation-and-layout}/_c8y-stepper.less +15 -1
- package/styles/components/{specialized → navigation-and-layout}/_c8y-user-roles.less +45 -28
- package/styles/components/{specialized → navigation-and-layout}/_device-software-tab.less +14 -0
- package/styles/components/navigation-and-layout/action-bars/_app-switcher.less +27 -5
- package/styles/components/navigation-and-layout/action-bars/_c8y-action-bar.less +49 -21
- package/styles/components/navigation-and-layout/cards/_card-dashboard.less +25 -4
- package/styles/components/navigation-and-layout/cards/_card-flip.less +41 -14
- package/styles/components/navigation-and-layout/cards/_card-grid.less +20 -4
- package/styles/components/navigation-and-layout/cards/_card.less +90 -75
- package/styles/components/navigation-and-layout/cards/_panels.less +38 -20
- package/styles/components/navigation-and-layout/navigation/_breadcrumbs.less +21 -39
- package/styles/components/navigation-and-layout/navigation/_c8y-nav-stacked.less +26 -14
- package/styles/components/navigation-and-layout/navigation/_main-header.less +41 -13
- package/styles/components/navigation-and-layout/navigation/_main-header.scss +1 -1
- package/styles/components/navigation-and-layout/navigation/_navbar.less +22 -25
- package/styles/components/navigation-and-layout/navigation/_navbar.scss +7 -7
- package/styles/components/navigation-and-layout/navigation/_navigator.less +71 -69
- package/styles/components/navigation-and-layout/navigation/_navs.less +13 -0
- package/styles/components/navigation-and-layout/navigation/_pagination.less +24 -5
- package/styles/components/navigation-and-layout/navigation/{steps-navbar.less → _steps-navbar.less} +7 -6
- package/styles/components/navigation-and-layout/navigation/_tabs.less +18 -14
- package/styles/components/navigation-and-layout/navigation/_tabs.scss +2 -2
- package/styles/components/{specialized → status-feedback-and-notifications}/_c8y-message-banner.less +14 -0
- package/styles/components/{specialized → status-feedback-and-notifications}/_code.less +18 -2
- package/styles/core/buttons/_button-groups.less +29 -79
- package/styles/core/buttons/_buttons.less +229 -198
- package/styles/core/buttons/_buttons.scss +6 -10
- package/styles/core/feedback/_alerts.less +52 -41
- package/styles/core/feedback/_badges.less +29 -17
- package/styles/core/feedback/_close.less +24 -7
- package/styles/core/feedback/_labels.less +21 -8
- package/styles/core/feedback/_progress-bars.less +24 -7
- package/styles/core/feedback/_tag.less +23 -6
- package/styles/core/feedback/_tooltip.less +44 -20
- package/styles/core/forms/_c8y-switch.less +39 -19
- package/styles/core/forms/_c8y-switch.scss +37 -29
- package/styles/core/forms/_file-picker.less +79 -61
- package/styles/core/forms/_forms.less +130 -133
- package/styles/core/forms/_input-groups.less +110 -59
- package/styles/core/forms/_input-groups.scss +21 -3
- package/styles/core/overlays/_c8y-dashboard-modal.less +25 -29
- package/styles/core/overlays/_c8y-wizard.less +38 -15
- package/styles/core/overlays/_dropdowns.less +86 -63
- package/styles/core/overlays/_modals.less +58 -40
- package/styles/core/overlays/_popovers.less +25 -9
- package/styles/dashboard/_availability-pie.less +3 -0
- package/styles/dashboard/_c8y-dashboard-style.less +61 -34
- package/styles/dashboard/_c8y-gauges.less +20 -4
- package/styles/dashboard/_dashboard-widgets.less +17 -4
- package/styles/dashboard/_info-gauge.less +20 -5
- package/styles/dashboard/_quick-links-widget.less +13 -3
- package/styles/{welcome-widget.less → dashboard/_welcome-widget.less} +21 -4
- package/styles/dashboard/{welcome.less → _welcome.less} +54 -45
- package/styles/icons/_c8y-glyphs.less +12 -1
- package/styles/icons/_c8y-glyphs.scss +2 -1
- package/styles/icons/_c8y-icons.less +214 -199
- package/styles/icons/_dlt-c8y-icons-stroke.less +7238 -1834
- package/styles/icons/_dlt-c8y-icons.less +14 -0
- package/styles/icons/_marker-icons.less +10 -0
- package/styles/index.less +160 -134
- package/styles/index.scss +53 -29
- package/styles/layout/_bottom-drawer.less +21 -7
- package/styles/layout/_c8y-help-drawer.less +30 -9
- package/styles/layout/_c8y-right-drawer.less +34 -19
- package/styles/layout/_c8y-top-drawer.less +43 -28
- package/styles/layout/_grid.less +18 -4
- package/styles/layout/_group-info.less +14 -2
- package/styles/layout/_layouts.less +48 -30
- package/styles/layout/_mcontainer.less +26 -12
- package/styles/layout/_page-tabs.less +115 -23
- package/styles/layout/_split-scroll.less +16 -4
- package/styles/layout/_split-view.less +19 -5
- package/styles/login-app-use.scss +2 -2
- package/styles/login-app.less +4 -4
- package/styles/mixins/_buttons.scss +1 -0
- package/styles/mixins/{color-mixins.less → _color-mixins.less} +2 -2
- package/styles/mixins/{element-queries.less → _element-queries.less} +2 -2
- package/styles/mixins/{forms.less → _forms.less} +1 -1
- package/styles/mixins/_gradients.less +117 -0
- package/styles/mixins/{grid-framework.less → _grid-framework.less} +21 -21
- package/styles/mixins/_icon-base.less +29 -0
- package/styles/mixins/{nav-vertical-align.less → _nav-vertical-align.less} +6 -2
- package/styles/mixins/_nav-vertical-align.scss +5 -2
- package/styles/mixins/{progress-bar.less → _progress-bar.less} +1 -1
- package/styles/mixins/{shadows-helper.less → _shadows-helper.less} +3 -5
- package/styles/mixins/_shadows-helper.scss +1 -4
- package/styles/mixins/{vendor-prefixes.less → _vendor-prefixes.less} +7 -22
- package/styles/mixins/_vendor-prefixes.scss +1 -17
- package/styles/utilities/_borders.less +21 -11
- package/styles/{components/specialized → utilities}/_c8y-utils.less +14 -0
- package/styles/{components/specialized → utilities}/_c8y-utils.scss +1 -1
- package/styles/utilities/_caret.less +18 -4
- package/styles/utilities/_container-queries.less +11 -3
- package/styles/utilities/_contextual-colors.less +48 -119
- package/styles/utilities/_display.less +26 -41
- package/styles/utilities/_elevation.less +17 -7
- package/styles/utilities/_flex-containers.less +10 -0
- package/styles/utilities/_flex-items.less +11 -0
- package/styles/utilities/_icon-utils.less +15 -3
- package/styles/utilities/_margins-paddings.less +23 -4
- package/styles/utilities/_overflows.less +10 -0
- package/styles/utilities/_position.less +11 -0
- package/styles/utilities/_quickfloats.less +20 -1
- package/styles/utilities/_separators.less +11 -0
- package/styles/utilities/_shadows.less +5 -49
- package/styles/{utilities.less → utilities/_sizing.less} +13 -21
- package/styles/utilities/_text-utils.less +35 -24
- package/styles/vendor/ace-editor/_ace-editor.less +1 -0
- package/styles/vendor/angular/_loading-bar.less +1 -0
- package/styles/vendor/angular/_ui-sortable.less +2 -1
- package/styles/vendor/angular/_uib-accordion.less +1 -0
- package/styles/{angular-ui-select/select.less → vendor/angular/angular-ui-select/_select.less} +2 -10
- package/styles/vendor/cdk/_cdk-drag.less +3 -0
- package/styles/vendor/cdk/_cdk-tree.less +6 -3
- package/styles/vendor/cdk/_cdk-virtual-scroll-window.less +1 -0
- package/styles/vendor/datepicker/_bs-datepicker.less +26 -6
- package/styles/vendor/datepicker/_uib-datepicker.less +37 -4
- package/styles/vendor/leaflet/_c8y-map-internal.less +44 -54
- package/styles/vendor/leaflet/_leaflet.less +4 -1
- package/styles/vendor/other/_colorpicker.less +3 -2
- package/styles/vendor/selectize/_c8y-selectize.less +33 -10
- package/variables/_color-defaults.less +29 -10
- package/variables/_color-defaults.scss +29 -10
- package/variables/_color-vars.less +37 -89
- package/variables/_color-vars.scss +19 -77
- package/variables/{login-vars.less → _login-vars.less} +3 -5
- package/variables/index.less +3 -3
- package/variables/tokens/{c8y-design-tokens-dark.less → _c8y-design-tokens-dark.less} +5 -1
- package/variables/tokens/{c8y-design-tokens.less → _c8y-design-tokens.less} +5 -1
- package/styles/components/specialized/_boxed-label.less +0 -21
- package/styles/components/specialized/_boxed-label.scss +0 -36
- package/styles/components/specialized/_c8y-cookie-banner.less +0 -22
- package/styles/components/specialized/_static-assets-file-picker.less +0 -8
- package/styles/dashboard/welcome-widget.less +0 -50
- package/styles/mixins/gradients.less +0 -142
- package/styles/mixins.less +0 -45
- package/styles/steps-navbar.less +0 -97
- package/styles/timeline-list.less +0 -210
- package/styles/vendor/angular/angular-ui-select/select.less +0 -161
- package/styles/welcome.less +0 -128
- /package/styles/components/{specialized → application-and-system}/_c8y-cookie-banner.scss +0 -0
- /package/styles/components/{specialized → application-and-system}/_c8y-login.scss +0 -0
- /package/styles/components/{specialized → data-display-and-visualization}/_c8y-data-explorer.scss +0 -0
- /package/styles/components/{specialized → data-display-and-visualization}/_c8y-datapoint-pill.scss +0 -0
- /package/styles/components/{specialized → data-display-and-visualization}/_c8y-pulse.scss +0 -0
- /package/styles/components/{specialized → data-display-and-visualization}/_smart-list-icon-label.scss +0 -0
- /package/styles/components/{specialized → data-display-and-visualization}/_status.scss +0 -0
- /package/styles/components/{specialized → data-display-and-visualization}/_statusContainer.scss +0 -0
- /package/styles/components/{specialized → data-input}/_c8y-countdown-interval.scss +0 -0
- /package/styles/components/{specialized → data-input}/_c8y-range.scss +0 -0
- /package/styles/components/{specialized → data-input}/_search-header.scss +0 -0
- /package/styles/components/{specialized → data-input}/_static-assets-file-picker.scss +0 -0
- /package/styles/components/{specialized → navigation-and-layout}/_c8y-role-card.scss +0 -0
- /package/styles/components/{specialized → navigation-and-layout}/_c8y-scrollbar.scss +0 -0
- /package/styles/components/{specialized → navigation-and-layout}/_c8y-smart-rest-tab.scss +0 -0
- /package/styles/components/{specialized → navigation-and-layout}/_c8y-stepper.scss +0 -0
- /package/styles/components/{specialized → navigation-and-layout}/_c8y-user-roles.scss +0 -0
- /package/styles/components/{specialized → navigation-and-layout}/_device-software-tab.scss +0 -0
- /package/styles/components/{specialized → status-feedback-and-notifications}/_c8y-message-banner.scss +0 -0
- /package/styles/components/{specialized → status-feedback-and-notifications}/_code.scss +0 -0
- /package/styles/mixins/{alert-variant.less → _alert-variant.less} +0 -0
- /package/styles/mixins/{animation.less → _animation.less} +0 -0
- /package/styles/mixins/{background-variant.less → _background-variant.less} +0 -0
- /package/styles/mixins/{border-radius.less → _border-radius.less} +0 -0
- /package/styles/mixins/{buttons.less → _buttons.less} +0 -0
- /package/styles/mixins/{c8y-scrollbar.less → _c8y-scrollbar.less} +0 -0
- /package/styles/mixins/{center-block.less → _center-block.less} +0 -0
- /package/styles/mixins/{clearfix.less → _clearfix.less} +0 -0
- /package/styles/mixins/{create-grid.less → _create-grid.less} +0 -0
- /package/styles/mixins/{grid.less → _grid.less} +0 -0
- /package/styles/mixins/{hide-scrollbars.less → _hide-scrollbars.less} +0 -0
- /package/styles/mixins/{hide-text.less → _hide-text.less} +0 -0
- /package/styles/mixins/{image.less → _image.less} +0 -0
- /package/styles/mixins/{labels.less → _labels.less} +0 -0
- /package/styles/mixins/{list-group.less → _list-group.less} +0 -0
- /package/styles/mixins/{nav-divider.less → _nav-divider.less} +0 -0
- /package/styles/mixins/{opacity.less → _opacity.less} +0 -0
- /package/styles/mixins/{pagination.less → _pagination.less} +0 -0
- /package/styles/mixins/{panels.less → _panels.less} +0 -0
- /package/styles/mixins/{reset-filter.less → _reset-filter.less} +0 -0
- /package/styles/mixins/{reset-text.less → _reset-text.less} +0 -0
- /package/styles/mixins/{resize.less → _resize.less} +0 -0
- /package/styles/mixins/{responsive-visibility.less → _responsive-visibility.less} +0 -0
- /package/styles/mixins/{size.less → _size.less} +0 -0
- /package/styles/mixins/{tab-focus.less → _tab-focus.less} +0 -0
- /package/styles/mixins/{table-row.less → _table-row.less} +0 -0
- /package/styles/mixins/{tag.less → _tag.less} +0 -0
- /package/styles/mixins/{text-emphasis.less → _text-emphasis.less} +0 -0
- /package/styles/mixins/{text-overflow.less → _text-overflow.less} +0 -0
- /package/variables/{login-vars.scss → _login-vars.scss} +0 -0
- /package/variables/{shadows.less → _shadows.less} +0 -0
- /package/variables/{shadows.scss → _shadows.scss} +0 -0
- /package/variables/tokens/{c8y-design-tokens-dark.scss → _c8y-design-tokens-dark.scss} +0 -0
- /package/variables/tokens/{c8y-design-tokens.scss → _c8y-design-tokens.scss} +0 -0
package/branding-login.less
CHANGED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Variable Import Optimization for LESS
|
|
2
|
+
|
|
3
|
+
## Background
|
|
4
|
+
|
|
5
|
+
LESS and SCSS handle imports differently:
|
|
6
|
+
|
|
7
|
+
- **SCSS `@use`**: Module system with **local scope** - each file must explicitly import what it needs
|
|
8
|
+
- **LESS `@import`**: **Global scope** - variables imported at entry points are available to all subsequent imports
|
|
9
|
+
|
|
10
|
+
## The Issue
|
|
11
|
+
|
|
12
|
+
When migrating from LESS to SCSS (and back), we kept variable imports in every component file:
|
|
13
|
+
|
|
14
|
+
```less
|
|
15
|
+
// Every component file had this:
|
|
16
|
+
@import "../../../variables/index.less";
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
This was:
|
|
20
|
+
- ✅ **Necessary in SCSS** (module system requires explicit imports)
|
|
21
|
+
- ❌ **Redundant in LESS** (variables already available from entry points)
|
|
22
|
+
|
|
23
|
+
## Entry Points Import Variables
|
|
24
|
+
|
|
25
|
+
All entry points already import variables at the top:
|
|
26
|
+
|
|
27
|
+
```less
|
|
28
|
+
// main.less → branding.less
|
|
29
|
+
@import 'variables/index.less';
|
|
30
|
+
|
|
31
|
+
// login.less → branding-login.less
|
|
32
|
+
@import 'variables/_login-vars.less';
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Since LESS has global scope, **all subsequent imports** automatically have access to these variables.
|
|
36
|
+
|
|
37
|
+
## Changes Made
|
|
38
|
+
|
|
39
|
+
### 1. Updated Conversion Script
|
|
40
|
+
|
|
41
|
+
Modified `convert-scss-to-less.sh` to automatically remove variable imports from converted LESS files:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# New section 0e - Remove redundant variable imports
|
|
45
|
+
content=$(echo "$content" | sed -E '/@import[[:space:]]+.*variables\/index\.less/d')
|
|
46
|
+
content=$(echo "$content" | sed -E '/@import[[:space:]]+.*variables\/_login-vars\.less/d')
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Why**: Prevents the pre-commit hook from re-adding variable imports every time you commit SCSS changes.
|
|
50
|
+
|
|
51
|
+
### 2. Created Cleanup Script
|
|
52
|
+
|
|
53
|
+
Created `remove-redundant-variable-imports.sh` to clean up existing LESS files:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
./helper-scripts/remove-redundant-variable-imports.sh
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
This script:
|
|
60
|
+
- Finds all LESS files with variable imports (except entry points)
|
|
61
|
+
- Shows a preview of files to be modified
|
|
62
|
+
- Asks for confirmation before making changes
|
|
63
|
+
- Removes redundant `@import` statements
|
|
64
|
+
|
|
65
|
+
### 3. Files That SHOULD Keep Variable Imports
|
|
66
|
+
|
|
67
|
+
Only entry point files should import variables:
|
|
68
|
+
|
|
69
|
+
- ✅ `branding.less`
|
|
70
|
+
- ✅ `branding-login.less`
|
|
71
|
+
- ✅ `styles/login-app.less`
|
|
72
|
+
|
|
73
|
+
All other files (components, mixins, utilities) get variables from the entry point.
|
|
74
|
+
|
|
75
|
+
## Benefits
|
|
76
|
+
|
|
77
|
+
1. **Reduced file size**: ~150 files × 1 line = 150 lines removed
|
|
78
|
+
2. **Clearer architecture**: Shows that LESS uses global scope
|
|
79
|
+
3. **No accidental overrides**: Can't accidentally redefine variables in component files
|
|
80
|
+
4. **Faster compilation**: Fewer imports to process
|
|
81
|
+
5. **Easier maintenance**: One source of truth for variables
|
|
82
|
+
|
|
83
|
+
## Migration Path
|
|
84
|
+
|
|
85
|
+
To remove redundant imports from existing LESS files:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
cd packages/style
|
|
89
|
+
./helper-scripts/remove-redundant-variable-imports.sh
|
|
90
|
+
npm test # Verify compilation still works
|
|
91
|
+
git diff # Review changes
|
|
92
|
+
git add .
|
|
93
|
+
git commit -m "Remove redundant variable imports from LESS files"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Future Commits
|
|
97
|
+
|
|
98
|
+
The pre-commit hook now automatically:
|
|
99
|
+
1. Converts SCSS → LESS when you commit SCSS changes
|
|
100
|
+
2. **Removes variable imports** from the LESS output
|
|
101
|
+
3. Stages the updated LESS files
|
|
102
|
+
4. Verifies both SCSS and LESS compile successfully
|
|
103
|
+
|
|
104
|
+
You don't need to do anything special - it's all automatic!
|
|
105
|
+
|
|
106
|
+
## Technical Details
|
|
107
|
+
|
|
108
|
+
### LESS Import Chain
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
main.less
|
|
112
|
+
→ branding.less
|
|
113
|
+
→ variables/index.less ✅ (variables defined here)
|
|
114
|
+
→ export.less
|
|
115
|
+
→ styles/index.less
|
|
116
|
+
→ _mixins.less (has access to variables)
|
|
117
|
+
→ base/* (has access to variables)
|
|
118
|
+
→ components/* (has access to variables)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### SCSS Module Chain
|
|
122
|
+
|
|
123
|
+
```scss
|
|
124
|
+
main.scss
|
|
125
|
+
→ branding.scss
|
|
126
|
+
→ styles/index.scss
|
|
127
|
+
// Each file with @use has local scope:
|
|
128
|
+
→ core/buttons/_buttons.scss
|
|
129
|
+
@use "../../../variables/index" as *; ✅ (needed)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Why Not Remove from Mixins?
|
|
133
|
+
|
|
134
|
+
You might notice files like `_shadows-helper.less` import variables. These imports are technically redundant BUT:
|
|
135
|
+
|
|
136
|
+
- **All mixins are imported via `_mixins.less`** which is imported AFTER variables in the entry point
|
|
137
|
+
- **Variables are already available** when mixins are loaded
|
|
138
|
+
- **Could be removed** but kept for documentation/safety in case import order changes
|
|
139
|
+
|
|
140
|
+
## FAQs
|
|
141
|
+
|
|
142
|
+
**Q: Won't my LESS files break without variable imports?**
|
|
143
|
+
A: No! LESS has global scope. Once variables are imported at the entry point, they're available everywhere.
|
|
144
|
+
|
|
145
|
+
**Q: What about SCSS files?**
|
|
146
|
+
A: SCSS files MUST keep their `@use` statements. The module system requires explicit imports.
|
|
147
|
+
|
|
148
|
+
**Q: Will the conversion script re-add them?**
|
|
149
|
+
A: No! The updated script automatically removes them during conversion.
|
|
150
|
+
|
|
151
|
+
**Q: What if I use a component file standalone?**
|
|
152
|
+
A: Component files should never be compiled standalone - they must go through an entry point (main.less or login.less).
|
|
153
|
+
|
|
154
|
+
**Q: Does this affect compilation?**
|
|
155
|
+
A: No impact! Both SCSS and LESS compile successfully. The output is identical (1.00% difference).
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Helper Scripts
|
|
2
|
+
|
|
3
|
+
Build and maintenance scripts for the @c8y/style package.
|
|
4
|
+
|
|
5
|
+
## Scripts
|
|
6
|
+
|
|
7
|
+
### `convert-scss-to-less.sh`
|
|
8
|
+
Semi-automated SCSS to LESS converter with syntax transformation.
|
|
9
|
+
|
|
10
|
+
**Usage:**
|
|
11
|
+
```bash
|
|
12
|
+
# Convert all modified SCSS files
|
|
13
|
+
./helper-scripts/convert-scss-to-less.sh --all
|
|
14
|
+
|
|
15
|
+
# Convert specific file (interactive)
|
|
16
|
+
./helper-scripts/convert-scss-to-less.sh styles/path/to/file.scss
|
|
17
|
+
|
|
18
|
+
# Auto-convert without prompts (used by pre-commit hook)
|
|
19
|
+
./helper-scripts/convert-scss-to-less.sh --yes --all
|
|
20
|
+
|
|
21
|
+
# Dry run (preview changes only)
|
|
22
|
+
./helper-scripts/convert-scss-to-less.sh --dry-run styles/path/to/file.scss
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Features:**
|
|
26
|
+
- Converts SCSS syntax to LESS (@use → @import, $var → @var, @mixin → .mixin)
|
|
27
|
+
- Transforms mixin parameter separators (commas → semicolons)
|
|
28
|
+
- Converts @extend to :extend() syntax
|
|
29
|
+
- Warns about complex patterns (@if/@else, @content)
|
|
30
|
+
- Respects skip list (`scss-to-less-skip`)
|
|
31
|
+
- Calls specialized converter for stroke icons
|
|
32
|
+
- Verifies compilation after conversion
|
|
33
|
+
|
|
34
|
+
### `convert-stroke-icons-to-less.js`
|
|
35
|
+
Specialized Node.js converter for stroke icon files.
|
|
36
|
+
|
|
37
|
+
**Usage:**
|
|
38
|
+
```bash
|
|
39
|
+
node ./helper-scripts/convert-stroke-icons-to-less.js
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Purpose:**
|
|
43
|
+
- Handles complex stroke icon file conversion
|
|
44
|
+
- Called automatically by `convert-scss-to-less.sh` when processing icon files
|
|
45
|
+
|
|
46
|
+
### `sync-scss-to-less.sh`
|
|
47
|
+
Checks if LESS files are in sync with modified SCSS files.
|
|
48
|
+
|
|
49
|
+
**Usage:**
|
|
50
|
+
```bash
|
|
51
|
+
./helper-scripts/sync-scss-to-less.sh
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Purpose:**
|
|
55
|
+
- Detects when SCSS files have been modified
|
|
56
|
+
- Warns if corresponding LESS files haven't been updated
|
|
57
|
+
- Suggests conversion commands
|
|
58
|
+
|
|
59
|
+
### `test-compile.sh`
|
|
60
|
+
Quick compilation test for both LESS and SCSS.
|
|
61
|
+
|
|
62
|
+
**Usage:**
|
|
63
|
+
```bash
|
|
64
|
+
# Run directly
|
|
65
|
+
./helper-scripts/test-compile.sh
|
|
66
|
+
|
|
67
|
+
# Or via npm
|
|
68
|
+
npm test
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Checks:**
|
|
72
|
+
- LESS compilation succeeds
|
|
73
|
+
- SCSS compilation succeeds
|
|
74
|
+
- Output file sizes match (within 5%)
|
|
75
|
+
- Displays deprecation warnings
|
|
76
|
+
|
|
77
|
+
## Configuration Files
|
|
78
|
+
|
|
79
|
+
### `scss-to-less-skip`
|
|
80
|
+
|
|
81
|
+
Lists files that should NOT be automatically converted.
|
|
82
|
+
|
|
83
|
+
Files in this list require manual synchronization due to complex syntax patterns that the converter cannot reliably handle.
|
|
84
|
+
|
|
85
|
+
See `../markdown-files/MANUAL-SYNC-FILES.md` for details on manually maintained files.
|
|
86
|
+
|
|
87
|
+
## Git Hook Integration
|
|
88
|
+
|
|
89
|
+
The `convert-scss-to-less.sh` script is automatically run by the pre-commit hook (`.husky/pre-commit`) when SCSS files are modified on `develop` or `feat/*` branches.
|
|
90
|
+
|
|
91
|
+
## Directory Structure
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
packages/style/
|
|
95
|
+
├── helper-scripts/ # All build/maintenance scripts
|
|
96
|
+
│ ├── README.md # This file
|
|
97
|
+
│ ├── scss-to-less-skip # Config: files to skip during conversion
|
|
98
|
+
│ ├── convert-scss-to-less.sh # Main SCSS→LESS converter
|
|
99
|
+
│ ├── convert-stroke-icons-to-less.js # Specialized icon converter
|
|
100
|
+
│ ├── sync-scss-to-less.sh # Sync checker
|
|
101
|
+
│ └── test-compile.sh # Compilation test
|
|
102
|
+
└── markdown-files/ # Documentation
|
|
103
|
+
└── MANUAL-SYNC-FILES.md # Manual sync documentation
|
|
104
|
+
```
|