@microsoft/atlas-css 4.3.1 → 5.0.0-test.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 (107) hide show
  1. package/dist/class-names.json +1 -1
  2. package/dist/index.css +1 -1
  3. package/dist/index.css.map +1 -1
  4. package/dist/tokens.json +1 -1
  5. package/dist/tokens.ts +28 -28
  6. package/package.json +2 -2
  7. package/src/atomics/aspect-ratio.scss +3 -0
  8. package/src/atomics/background.scss +3 -0
  9. package/src/atomics/border.scss +3 -0
  10. package/src/atomics/colors.scss +3 -0
  11. package/src/atomics/display.scss +3 -0
  12. package/src/atomics/flex.scss +2 -0
  13. package/src/atomics/gap.scss +3 -0
  14. package/src/atomics/height.scss +3 -0
  15. package/src/atomics/image.scss +3 -0
  16. package/src/atomics/index.scss +19 -19
  17. package/src/atomics/line-clamp.scss +3 -0
  18. package/src/atomics/list.scss +3 -0
  19. package/src/atomics/overflow.scss +3 -0
  20. package/src/atomics/position.scss +3 -0
  21. package/src/atomics/shadow.scss +3 -0
  22. package/src/atomics/spacing-auto.scss +3 -0
  23. package/src/atomics/spacing.scss +3 -0
  24. package/src/atomics/typography.scss +3 -0
  25. package/src/atomics/visually-hidden.scss +3 -0
  26. package/src/atomics/width.scss +2 -0
  27. package/src/components/accordion.scss +3 -0
  28. package/src/components/badge.scss +3 -0
  29. package/src/components/banner.scss +3 -0
  30. package/src/components/breadcrumbs.scss +3 -0
  31. package/src/components/button-reset.scss +3 -0
  32. package/src/components/button.scss +2 -0
  33. package/src/components/buttons.scss +7 -4
  34. package/src/components/card.scss +3 -0
  35. package/src/components/code-block.scss +4 -0
  36. package/src/components/form/checkbox.scss +3 -0
  37. package/src/components/form/form.scss +4 -0
  38. package/src/components/form/help.scss +3 -0
  39. package/src/components/form/index.scss +8 -8
  40. package/src/components/form/input.scss +3 -0
  41. package/src/components/form/label.scss +3 -0
  42. package/src/components/form/radio.scss +3 -0
  43. package/src/components/form/select.scss +3 -0
  44. package/src/components/form/textarea.scss +3 -0
  45. package/src/components/gradient-card.scss +3 -0
  46. package/src/components/gradient.scss +3 -0
  47. package/src/components/hero.scss +3 -0
  48. package/src/components/icon.scss +3 -0
  49. package/src/components/image.scss +3 -0
  50. package/src/components/index.scss +35 -34
  51. package/src/components/layout.scss +43 -139
  52. package/src/components/link-button.scss +3 -0
  53. package/src/components/markdown.scss +4 -1
  54. package/src/components/media.scss +3 -0
  55. package/src/components/message.scss +3 -0
  56. package/src/components/notification.scss +3 -0
  57. package/src/components/pagination.scss +3 -0
  58. package/src/components/persona.scss +3 -0
  59. package/src/components/popover.scss +3 -0
  60. package/src/components/progress-bar.scss +3 -0
  61. package/src/components/reading-width.scss +10 -0
  62. package/src/components/scroll.scss +3 -0
  63. package/src/components/segmented-control.scss +3 -0
  64. package/src/components/site-header.scss +7 -3
  65. package/src/components/steps.scss +3 -0
  66. package/src/components/stretched-link.scss +3 -0
  67. package/src/components/table.scss +5 -2
  68. package/src/components/tag.scss +3 -0
  69. package/src/components/timeline.scss +2 -0
  70. package/src/components/toggle.scss +3 -0
  71. package/src/core/animations.scss +3 -0
  72. package/src/core/bare-elements.scss +3 -0
  73. package/src/core/focus.scss +3 -0
  74. package/src/core/font-stack.scss +3 -0
  75. package/src/core/index.scss +7 -7
  76. package/src/core/minireset.scss +3 -0
  77. package/src/core/normalize.scss +3 -0
  78. package/src/core/themes.scss +2 -0
  79. package/src/index.scss +5 -5
  80. package/src/mixins/center.scss +2 -0
  81. package/src/mixins/chevron.scss +3 -0
  82. package/src/mixins/code-block.scss +2 -0
  83. package/src/mixins/colors.scss +2 -0
  84. package/src/mixins/control.scss +2 -0
  85. package/src/mixins/dismiss.scss +3 -0
  86. package/src/mixins/focus.scss +2 -0
  87. package/src/mixins/font-size.scss +1 -0
  88. package/src/mixins/force-colors.scss +2 -0
  89. package/src/mixins/gradient.scss +2 -0
  90. package/src/mixins/index.scss +18 -18
  91. package/src/mixins/layout-gap.scss +3 -0
  92. package/src/mixins/line-clamp.scss +2 -0
  93. package/src/mixins/loader.scss +2 -0
  94. package/src/mixins/media-queries.scss +2 -0
  95. package/src/mixins/overlay.scss +2 -0
  96. package/src/mixins/transparency.scss +2 -0
  97. package/src/mixins/unselectable.scss +2 -0
  98. package/src/mixins/visually-hidden.scss +2 -0
  99. package/src/tokens/breakpoints.scss +1 -1
  100. package/src/tokens/colors.scss +2 -0
  101. package/src/tokens/direction.scss +0 -14
  102. package/src/tokens/index.scss +18 -18
  103. package/src/tokens/layout.scss +5 -1
  104. package/src/tokens/shadow.scss +2 -0
  105. package/src/tokens/themes.scss +4 -1
  106. package/src/tokens/typography.scss +5 -1
  107. package/tokens/index.js +30 -4
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  $persona-font-size-sm: $font-size-9 !default;
2
5
  $persona-font-size-md: $font-size-8 !default;
3
6
  $persona-font-size-lg: $font-size-7 !default;
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  /* stylelint-disable max-nesting-depth, selector-max-specificity */
2
5
 
3
6
  $popover-background-color: $body-background !default;
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  $progress-bar-background-color: $secondary-background-glow-high-contrast !default;
2
5
  $progress-bar-value-background-color: $primary !default;
3
6
  $progress-bar-value-background-color-warning: $warning !default;
@@ -0,0 +1,10 @@
1
+ @use '../tokens/index.scss' as *;
2
+
3
+ .reading-width {
4
+ max-width: $optimal-reading-width;
5
+ }
6
+
7
+ .reading-width-padded {
8
+ width: $reading-width-padded;
9
+ padding: $reading-width-padding;
10
+ }
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  .scroll-horizontal {
2
5
  overflow-x: auto;
3
6
  overflow-y: hidden;
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  $sc-padding-sm: 0.5em 1em !default;
2
5
  $sc-padding: 0.75em 1.25em !default;
3
6
  $sc-padding-lg: 1em 1.5em !default;
@@ -1,3 +1,7 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+ @use './button.scss' as *;
4
+
1
5
  $site-header-height: 3.375em !default;
2
6
  $site-header-inline-gap: $spacer-3 !default;
3
7
  $site-header-border: 1px solid $border !default;
@@ -68,9 +72,9 @@ $site-header-panel-featured-section-border: 1px solid $table-border-dark !defaul
68
72
  gap: $site-header-inline-gap;
69
73
  padding-inline: $layout-gap;
70
74
 
71
- @include widescreen {
72
- padding-inline: $layout-widescreen-gap;
73
- }
75
+ // @include widescreen {
76
+ // padding-inline: $layout-widescreen-gap;
77
+ // }
74
78
 
75
79
  .site-header-button {
76
80
  @include control;
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  $step-font-size: $font-size-7 !default;
2
5
  $steps-gap: 0.4375em !default;
3
6
  $steps-size: 0.5em !default;
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  .stretched-link {
2
5
  &::before {
3
6
  position: absolute;
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  $table-cell-vertical-padding: $spacer-5 !default;
2
5
  $table-cell-horizontal-padding: $spacer-6 !default;
3
6
  $table-cell-padding-compact: $spacer-3 !default;
@@ -28,7 +31,7 @@ $table-caption-spacing: $letter-spacing-medium !default;
28
31
  font-size: $table-caption-size;
29
32
  font-weight: $weight-semibold;
30
33
  letter-spacing: $table-caption-spacing;
31
- text-align: $user-right;
34
+ text-align: end;
32
35
  text-transform: uppercase;
33
36
  }
34
37
 
@@ -43,7 +46,7 @@ $table-caption-spacing: $letter-spacing-medium !default;
43
46
  }
44
47
 
45
48
  th:not([align]) {
46
- text-align: $user-left;
49
+ text-align: start;
47
50
  }
48
51
 
49
52
  &.table-stacked-mobile {
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  /* stylelint-disable selector-max-specificity, no-descending-specificity */
2
5
 
3
6
  $tag-padding-block: 0.375em !default;
@@ -1,4 +1,6 @@
1
1
  @use 'sass:math';
2
+ @use '../tokens/index.scss' as *;
3
+ @use '../mixins/index.scss' as *;
2
4
  $timeline-content-font-size: $font-size-8 !default;
3
5
  $timeline-timestamp-font-size: $font-size-9 !default;
4
6
  $timeline-timestamp-font-weight: $weight-semilight !default;
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  $toggle-transition: $input-transition-duration cubic-bezier(0.01, 1.23, 0.58, 0.96) !default;
2
5
  $toggle-circle-size: 0.85em !default;
3
6
  $toggle-circle-top: 0.15em !default;
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  // stylelint-disable-next-line keyframes-name-pattern
2
5
  @keyframes spinAround {
3
6
  // make it stop
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  // https://bugs.chromium.org/p/chromium/issues/detail?id=589475&q=details%20box-sizing&can=2
2
5
 
3
6
  details,
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  @if ($focus-visible-use-polyfill) {
2
5
  .js-focus-visible .has-default-focus *:focus:not(.focus-visible),
3
6
  .js-focus-visible .default-focus *:focus:not(.focus-visible) {
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  html {
2
5
  font-size: $document-font-size;
3
6
  }
@@ -1,7 +1,7 @@
1
- @import './normalize.scss';
2
- @import './minireset.scss';
3
- @import './themes.scss';
4
- @import './font-stack.scss';
5
- @import './animations.scss';
6
- @import './focus.scss';
7
- @import './bare-elements.scss';
1
+ @forward './normalize.scss';
2
+ @forward './minireset.scss';
3
+ @forward './themes.scss';
4
+ @forward './font-stack.scss';
5
+ @forward './animations.scss';
6
+ @forward './focus.scss';
7
+ @forward './bare-elements.scss';
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  /* stylelint-disable */
2
5
  /*! minireset.css v0.0.7 | MIT License | github.com/jgthms/minireset.css */
3
6
  html,
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use '../mixins/index.scss' as *;
3
+
1
4
  /* stylelint-disable */
2
5
  /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
3
6
 
@@ -1,4 +1,6 @@
1
1
  @use 'sass:map';
2
+ @use '../tokens/index.scss' as *;
3
+ @use '../mixins/index.scss' as *;
2
4
 
3
5
  $root-theme: 'light' !default;
4
6
  $print-theme: 'light' !default;
package/src/index.scss CHANGED
@@ -1,5 +1,5 @@
1
- @import './tokens/index.scss';
2
- @import './mixins/index.scss';
3
- @import './core/index.scss';
4
- @import './components/index.scss';
5
- @import './atomics/index.scss';
1
+ @forward './tokens/index.scss';
2
+ @forward './mixins/index.scss';
3
+ @forward './core/index.scss';
4
+ @forward './components/index.scss';
5
+ @forward './atomics/index.scss';
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  @mixin center($width, $height: 0) {
2
4
  position: absolute;
3
5
 
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use './control.scss' as *;
3
+
1
4
  $chevron-color: $text !default;
2
5
  $chevron-arrow-size: 0.525em !default;
3
6
  $chevron-arrow-border-width: 1px !default;
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  $code-block-pre-font-size: $font-size-8 !default;
2
4
  $code-block-pre-spacing: 1em !default;
3
5
  $code-block-pre-line-height: 1.3571 !default;
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  @mixin fill-current-color {
2
4
  fill: currentColor !important;
3
5
 
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  $control-radius: $border-radius !default;
2
4
 
3
5
  $control-font-size: $font-size-7 !default;
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use './transparency.scss' as *;
3
+
1
4
  %dismiss {
2
5
  @include transparent-effects;
3
6
 
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  // stylelint-disable declaration-block-no-redundant-longhand-properties
2
4
  @mixin focus() {
3
5
  outline-color: inherit;
@@ -1,4 +1,5 @@
1
1
  @use 'sass:math';
2
+ @use '../tokens/index.scss' as *;
2
3
 
3
4
  /* stylelint-disable */
4
5
 
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  @mixin forced-colors() {
2
4
  @media (forced-colors: active) {
3
5
  @content;
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  @mixin gradient-text($startColor, $endColor) {
2
4
  /* stylelint-disable */
3
5
  -webkit-background-clip: text;
@@ -1,18 +1,18 @@
1
- @import './media-queries.scss';
2
- @import './code-block.scss';
3
- @import './colors.scss';
4
- @import './control.scss';
5
- @import './center.scss';
6
- @import './chevron.scss';
7
- @import './focus.scss';
8
- @import './gradient.scss';
9
- @import './loader.scss';
10
- @import './line-clamp.scss';
11
- @import './layout-gap.scss';
12
- @import './font-size.scss';
13
- @import './force-colors.scss';
14
- @import './overlay.scss';
15
- @import './transparency.scss';
16
- @import './dismiss.scss';
17
- @import './unselectable.scss';
18
- @import './visually-hidden.scss';
1
+ @forward './media-queries.scss';
2
+ @forward './code-block.scss';
3
+ @forward './colors.scss';
4
+ @forward './control.scss';
5
+ @forward './center.scss';
6
+ @forward './chevron.scss';
7
+ @forward './focus.scss';
8
+ @forward './gradient.scss';
9
+ @forward './loader.scss';
10
+ @forward './line-clamp.scss';
11
+ @forward './layout-gap.scss';
12
+ @forward './font-size.scss';
13
+ @forward './force-colors.scss';
14
+ @forward './overlay.scss';
15
+ @forward './transparency.scss';
16
+ @forward './dismiss.scss';
17
+ @forward './unselectable.scss';
18
+ @forward './visually-hidden.scss';
@@ -1,3 +1,6 @@
1
+ @use '../tokens/index.scss' as *;
2
+ @use './media-queries.scss' as *;
3
+
1
4
  %layout-gap {
2
5
  padding-inline: $layout-gap;
3
6
 
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  %line-clamp {
2
4
  /*stylelint-disable*/
3
5
  display: -webkit-box;
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  %loader {
2
4
  display: block;
3
5
  position: relative;
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  // Orientation
2
4
 
3
5
  @mixin orientation-portrait {
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  %overlay {
2
4
  position: absolute;
3
5
  inset: 0;
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  %transparent-effects {
2
4
  outline-color: inherit;
3
5
  background-color: transparent;
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  %unselectable {
2
4
  /* stylelint-disable */
3
5
  -webkit-touch-callout: none;
@@ -1,3 +1,5 @@
1
+ @use '../tokens/index.scss' as *;
2
+
1
3
  @mixin visually-hidden() {
2
4
  position: absolute;
3
5
  width: 1px;
@@ -7,5 +7,5 @@ $container-gap: 64px !default;
7
7
  // Breakpoints
8
8
  $breakpoint-tablet: 768px !default;
9
9
  $breakpoint-desktop: 1088px !default;
10
- $breakpoint-widescreen: 1800px !default;
10
+ $breakpoint-widescreen: 2800px !default;
11
11
  //@end-sass-export-section
@@ -1,3 +1,5 @@
1
+ @use './palette.scss' as *;
2
+
1
3
  /**
2
4
  * @sass-export-section="colors"
3
5
  */
@@ -2,20 +2,6 @@
2
2
  * @sass-export-section="direction"
3
3
  */
4
4
  // Direction
5
- $user-text-direction: ltr !default;
6
-
7
- $user-left: if($user-text-direction == rtl, right, left);
8
- $user-right: if($user-text-direction == rtl, left, right);
9
-
10
- $user-translate-x-direction: if($user-text-direction == rtl, -1, 1);
11
-
12
- $directions: (
13
- 'top': 'top',
14
- 'right': $user-right,
15
- 'bottom': 'bottom',
16
- 'left': $user-left
17
- );
18
-
19
5
  $logical-directions: (
20
6
  'top': 'block-start',
21
7
  'right': 'inline-end',
@@ -1,18 +1,18 @@
1
- @import './palette.scss';
2
- @import './animation.scss';
3
- @import './border.scss';
4
- @import './breakpoints.scss';
5
- @import './display.scss';
6
- @import './containers.scss';
7
- @import './colors.scss';
8
- @import './direction.scss';
9
- @import './focus.scss';
10
- @import './font-stack.scss';
11
- @import './layout.scss';
12
- @import './position.scss';
13
- @import './schemes.scss';
14
- @import './shadow.scss';
15
- @import './spacing.scss';
16
- @import './themes.scss';
17
- @import './typography.scss';
18
- @import './z-index.scss';
1
+ @forward './palette.scss';
2
+ @forward './animation.scss';
3
+ @forward './border.scss';
4
+ @forward './breakpoints.scss';
5
+ @forward './display.scss';
6
+ @forward './containers.scss';
7
+ @forward './colors.scss';
8
+ @forward './direction.scss';
9
+ @forward './focus.scss';
10
+ @forward './font-stack.scss';
11
+ @forward './layout.scss';
12
+ @forward './position.scss';
13
+ @forward './schemes.scss';
14
+ @forward './shadow.scss';
15
+ @forward './spacing.scss';
16
+ @forward './themes.scss';
17
+ @forward './typography.scss';
18
+ @forward './z-index.scss';
@@ -1,3 +1,5 @@
1
+ @use './breakpoints.scss' as *;
2
+
1
3
  /**
2
4
  * @sass-export-section="layout"
3
5
  */
@@ -20,5 +22,7 @@ $layout-flyout-width-name: '--layout-flyout-width' !default;
20
22
  $layout-flyout-width-desktop-custom-property-name: '--layout-flyout-width-desktop' !default;
21
23
  $layout-flyout-width-widescreen-custom-property-name: '--layout-flyout-width-widescreen' !default;
22
24
  $layout-menu-collapsed-width-name: '--layout-menu-collapsed-width' !default;
23
- $layout-menu-collapsed-width-widescreen-spacer-width-name: '--layout-menu-collapsed-width-widescreen' !default;
25
+ $layout-menu-collapsed-spacer-desktop-width-name: '--layout-menu-collapsed-spacer-desktop-width' !default;
26
+ $layout-menu-max-width-name: '--layout-menu-max-width' !default;
27
+ $layout-aside-max-width-name: '--layout-aside-max-width' !default;
24
28
  //@end-sass-export-section
@@ -1,3 +1,5 @@
1
+ @use './colors.scss' as *;
2
+
1
3
  /**
2
4
  * @sass-export-section="shadow"
3
5
  */
@@ -1,3 +1,6 @@
1
+ @use './palette.scss' as *;
2
+ @use './colors.scss' as *;
3
+
1
4
  /**
2
5
  * @sass-export-section="themes"
3
6
  */
@@ -15,7 +18,7 @@ $themes: (
15
18
  'overlay-invert': $palette-white,
16
19
  'body-background': $palette-white,
17
20
  'body-background-accent': $palette-yellow-sand,
18
- 'body-background-medium': $palette-grey-20-deprecated,
21
+ 'body-background-medium': $palette-grey-10-deprecated,
19
22
  'alternate-background': $palette-grey-120-deprecated,
20
23
  'alternate-background-medium': $palette-grey-110-deprecated,
21
24
  'card-background': $palette-white,
@@ -28,6 +28,10 @@ $letter-spacing-medium: 0.125rem;
28
28
  $letter-spacing-wide: 0.225rem;
29
29
 
30
30
  // Line height
31
- $line-height-normal: 1.3;
31
+ $line-height-normal: 1.4;
32
32
 
33
+ // Reading width
34
+ $optimal-reading-width: 688px;
35
+ $reading-width-padding: 24px;
36
+ $reading-width-padded: $optimal-reading-width + ($reading-width-padding * 2);
33
37
  //@end-sass-export-section
package/tokens/index.js CHANGED
@@ -1,5 +1,6 @@
1
- const { readFile, writeFile, mkdir } = require('fs/promises');
1
+ const { readFile, writeFile, mkdir, rm } = require('fs/promises');
2
2
  const path = require('path');
3
+ const os = require('os');
3
4
  const { quicktype, InputData, jsonInputForTargetLanguage } = require('quicktype-core');
4
5
  const { exporter } = require('sass-export');
5
6
 
@@ -12,14 +13,34 @@ async function createTokens() {
12
13
  const filePaths = await getInputFilesFromIndex(filePathStem, indexPath);
13
14
  checkFileComments(filePaths);
14
15
 
16
+ // sass-export concatenates files via stdin and cannot resolve @use paths.
17
+ // Create temp copies with @use lines stripped for sass-export processing.
18
+ const tempDir = path.join(os.tmpdir(), 'atlas-tokens-' + Date.now());
19
+ await mkdir(tempDir, { recursive: true });
20
+ const tempFilePaths = await Promise.all(
21
+ filePaths.map(async fp => {
22
+ const content = await readFile(fp, 'utf8');
23
+ const stripped = content
24
+ .split('\n')
25
+ .filter(line => !line.trim().startsWith('@use '))
26
+ .join('\n');
27
+ const tempPath = path.join(tempDir, path.basename(fp));
28
+ await writeFile(tempPath, stripped);
29
+ return tempPath;
30
+ })
31
+ );
32
+
15
33
  /** @type {import('./types').SassExportOptions} */
16
34
  const options = {
17
- inputFiles: filePaths
35
+ inputFiles: tempFilePaths
18
36
  };
19
37
 
20
38
  const exportedTokens = exporter(options).getStructured();
21
39
  const collection = getSortedOrder(collectTokens(exportedTokens));
22
40
 
41
+ // Clean up temp files
42
+ await rm(tempDir, { recursive: true, force: true });
43
+
23
44
  const outfolder = './dist';
24
45
  const outfileStem = path.join(outfolder, 'tokens');
25
46
 
@@ -47,8 +68,13 @@ async function getInputFilesFromIndex(filePathStem, indexPath) {
47
68
  try {
48
69
  const indexFile = (await readFile(indexPath)).toString();
49
70
  const lines = indexFile.split('\n').reduce((arr, line) => {
50
- if (line.includes('@import')) {
51
- const filePath = line.replace('@import', '').replaceAll(`'`, '').replace(';', '').trim();
71
+ if (line.includes('@import') || line.includes('@forward')) {
72
+ const filePath = line
73
+ .replace('@import', '')
74
+ .replace('@forward', '')
75
+ .replaceAll(`'`, '')
76
+ .replace(';', '')
77
+ .trim();
52
78
  arr.push(path.join(filePathStem, filePath));
53
79
  }
54
80
  return arr;