@netlify/spark-ui 1.18.0 → 1.20.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.
@@ -17,8 +17,8 @@ const { id, class: className, ...rest } = Astro.props;
17
17
  .n-tabbed-content {
18
18
  --_border-size: 1px;
19
19
  --_border-style: solid;
20
- --_border-color-inactive: var(--color-bg-3);
21
- --_border-color-active: var(--color-icon);
20
+ --_border-color-inactive: var(--ntl-color-bg-3);
21
+ --_border-color-active: var(--ntl-color-icon);
22
22
  display: block;
23
23
  isolation: isolate;
24
24
  }
@@ -37,17 +37,17 @@ const { id, class: className, ...rest } = Astro.props;
37
37
  display: flex;
38
38
  align-items: center;
39
39
  justify-content: center;
40
- gap: var(--space-xs);
40
+ gap: var(--ntl-space-xs);
41
41
  text-wrap: nowrap;
42
42
  outline-offset: -1px;
43
- padding: var(--space-xs) var(--space-s);
44
- font-family: var(--font-family-display);
45
- font-size: var(--font-size-text-lg);
46
- font-weight: var(--font-weight-semibold);
47
- line-height: var(--line-height-heading);
43
+ padding: var(--ntl-space-xs) var(--ntl-space-s);
44
+ font-family: var(--ntl-font-family-display);
45
+ font-size: var(--ntl-font-size-text-lg);
46
+ font-weight: var(--ntl-font-weight-semibold);
47
+ line-height: var(--ntl-line-height-heading);
48
48
  text-align: center;
49
- color: var(--body-text-color);
50
- background: var(--tabbed-content-bg-color);
49
+ color: var(--ntl-body-text-color);
50
+ background: var(--ntl-tabbed-content-bg-color);
51
51
  border: var(--_border-size) var(--_border-style) var(--_border-color-inactive);
52
52
  border-radius: 0;
53
53
  border-block-end: unset;
@@ -59,12 +59,12 @@ const { id, class: className, ...rest } = Astro.props;
59
59
  }
60
60
 
61
61
  &[aria-selected='true'] {
62
- --_radius: var(--radius-s);
63
- color: var(--tabbed-content-tab-text-color-active);
62
+ --_radius: var(--ntl-radius-s);
63
+ color: var(--ntl-tabbed-content-tab-text-color-active);
64
64
  border-top-left-radius: var(--_radius);
65
65
  border-top-right-radius: var(--_radius);
66
66
  border-color: var(--_border-color-active);
67
- background: var(--tabbed-content-bg-color-active);
67
+ background: var(--ntl-tabbed-content-bg-color-active);
68
68
  z-index: 1;
69
69
  }
70
70
  }
@@ -37,7 +37,7 @@ const {
37
37
 
38
38
  <TabPanel id={id} class:list={['n-tabbed-content-panel', className]} isHidden={isHidden} {...rest}>
39
39
  <div class:list={['n-tabbed-content-wrapper', codeBlock && 'n-tabbed-content-wrapper-split']}>
40
- <div class="n-tabbed-content-body n-flow">
40
+ <div class="n-tabbed-content-body ntl-flow">
41
41
  {heading && <h3 class="h4">{heading}</h3>}
42
42
  {text && <p set:html={text} />}
43
43
  {
@@ -101,7 +101,7 @@ const {
101
101
  display: grid;
102
102
  gap: var(--_border-size);
103
103
  height: 100%;
104
- background-color: var(--color-icon); /** Shows through grid gaps to create inner borders */
104
+ background-color: var(--ntl-color-icon); /** Shows through grid gaps to create inner borders */
105
105
 
106
106
  @container (width > 55rem) {
107
107
  grid-template-columns: 1fr 1fr;
@@ -109,26 +109,26 @@ const {
109
109
  }
110
110
 
111
111
  .n-tabbed-content-body {
112
- padding: var(--space-xl);
113
- background-color: var(--card-bg-color);
112
+ padding: var(--ntl-space-xl);
113
+ background-color: var(--ntl-card-bg-color);
114
114
  }
115
115
 
116
116
  .n-tabbed-content-code {
117
117
  display: grid;
118
118
  grid-template-rows: auto 1fr;
119
119
  gap: var(--_border-size);
120
- background-color: var(--tabbed-content-code-bg-color);
120
+ background-color: var(--ntl-tabbed-content-code-bg-color);
121
121
  }
122
122
 
123
123
  .n-tabbed-content-code-heading {
124
124
  display: flex;
125
- gap: var(--space-xs);
125
+ gap: var(--ntl-space-xs);
126
126
  align-items: center;
127
- padding: var(--space-xs);
128
- font-family: var(--font-family-mono);
129
- font-size: var(--font-size-text-md);
127
+ padding: var(--ntl-space-xs);
128
+ font-family: var(--ntl-font-family-mono);
129
+ font-size: var(--ntl-font-size-text-md);
130
130
  text-transform: uppercase;
131
- background-color: var(--tabbed-content-code-bg-color);
131
+ background-color: var(--ntl-tabbed-content-code-bg-color);
132
132
  border-block-end: var(--_border-size) var(--_border-style) var(--_border-color-active);
133
133
  }
134
134
 
@@ -139,15 +139,15 @@ const {
139
139
  }
140
140
 
141
141
  .n-tabbed-content-code-block {
142
- --n-code-block-border: none;
143
- --n-code-block-radius: 0;
144
- --n-code-bg-color: var(--tabbed-content-code-bg-color);
142
+ --ntl-code-block-border: none;
143
+ --ntl-code-block-radius: 0;
144
+ --ntl-code-bg-color: var(--ntl-tabbed-content-code-bg-color);
145
145
  flex-grow: 1;
146
146
  }
147
147
 
148
148
  .n-tabbed-content-ctas {
149
149
  display: grid;
150
- gap: var(--space-s);
150
+ gap: var(--ntl-space-s);
151
151
  }
152
152
 
153
153
  @media (min-width: 30rem) {
@@ -18,7 +18,7 @@ const { items } = Astro.props as Props;
18
18
  ---
19
19
 
20
20
  <Tabs class="n-testimonial-slider">
21
- <TabList class="n-testimonial-logos n-cluster">
21
+ <TabList class="n-testimonial-logos ntl-cluster">
22
22
  {
23
23
  items?.map(({ company, logoSrc }, index) => (
24
24
  <Tab
@@ -35,7 +35,7 @@ const { items } = Astro.props as Props;
35
35
  {
36
36
  items?.map((testimonial, index) => (
37
37
  <TabPanel>
38
- <div class="n-testimonial-quote-body n-flow">
38
+ <div class="n-testimonial-quote-body ntl-flow">
39
39
  <Blockquote
40
40
  variant="testimonial"
41
41
  aria-hidden={index !== 0}
@@ -64,15 +64,15 @@ const { items } = Astro.props as Props;
64
64
  @import url('../styles/animations.css');
65
65
 
66
66
  .n-testimonial-slider {
67
- --_spacing: var(--space-xl);
67
+ --_spacing: var(--ntl-space-xl);
68
68
  }
69
69
 
70
70
  .n-testimonial-quote-body {
71
- --n-flow-space: var(--_spacing);
71
+ --ntl-flow-space: var(--_spacing);
72
72
  }
73
73
 
74
74
  .n-testimonial-logos {
75
- --n-cluster-column-gap: var(--space-l);
75
+ --ntl-cluster-column-gap: var(--ntl-space-l);
76
76
  }
77
77
 
78
78
  [role='tablist'] {
@@ -96,15 +96,15 @@ const { items } = Astro.props as Props;
96
96
  .n-logo-btn :global(svg) {
97
97
  width: 6.25rem;
98
98
  height: auto;
99
- fill: var(--testimonial-logo-inactive-color);
99
+ fill: var(--ntl-testimonial-logo-inactive-color);
100
100
  transition: fill 300ms ease-out;
101
101
  }
102
102
 
103
103
  .n-logo-btn:hover :global(svg) {
104
- fill: var(--testimonial-logo-hover-color);
104
+ fill: var(--ntl-testimonial-logo-hover-color);
105
105
  }
106
106
 
107
107
  .n-logo-btn[aria-selected='true'] :global(svg) {
108
- fill: var(--blockquote-accent-color);
108
+ fill: var(--ntl-blockquote-accent-color);
109
109
  }
110
110
  </style>
@@ -54,7 +54,7 @@ const customStyles =
54
54
 
55
55
  <style>
56
56
  .n-ticker {
57
- --_gap: var(--n-ticker-gap, var(--space-s));
57
+ --_gap: var(--n-ticker-gap, var(--ntl-space-s));
58
58
  display: flex;
59
59
  flex-direction: var(--n-ticker-direction, row);
60
60
  overflow: hidden;
@@ -15,7 +15,7 @@ const { as, pauseOnHover, reverse, id, class: className, ...rest } = Astro.props
15
15
  <Ticker
16
16
  as={as}
17
17
  id={id}
18
- gap="var(--space-2xl)"
18
+ gap="var(--ntl-space-2xl)"
19
19
  pauseOnHover={pauseOnHover}
20
20
  reverse={reverse}
21
21
  speed={50}
@@ -29,17 +29,17 @@ const { as: Element = 'div', id, iconSrc, text, class: className, ...rest } = As
29
29
  .n-trust-bar-ticker-item {
30
30
  display: flex;
31
31
  align-items: center;
32
- gap: var(--space-xs);
32
+ gap: var(--ntl-space-xs);
33
33
  }
34
34
 
35
35
  .n-trust-bar-ticker-item-icon {
36
36
  flex-shrink: 0;
37
37
  aspect-ratio: 1;
38
- padding: var(--space-3xs);
38
+ padding: var(--ntl-space-3xs);
39
39
  inline-size: 2.5rem;
40
40
  border-radius: 50%;
41
- border: 1px solid var(--color-stroke);
42
- background: var(--code-bg-color);
41
+ border: 1px solid var(--ntl-color-stroke);
42
+ background: var(--ntl-code-bg-color);
43
43
  }
44
44
 
45
45
  .n-trust-bar-ticker-item-content :global(:where(img, picture, svg)) {
@@ -47,6 +47,6 @@ const { as: Element = 'div', id, iconSrc, text, class: className, ...rest } = As
47
47
  height: auto;
48
48
  max-height: 4rem;
49
49
  object-fit: contain;
50
- filter: var(--filter-invert);
50
+ filter: var(--ntl-filter-invert);
51
51
  }
52
52
  </style>
@@ -1,6 +1,6 @@
1
1
  import Icon from '@components/preact/Icon';
2
2
  import Popover from '@components/preact/Popover/Popover';
3
- import Analytics from '@analtyics/analytics';
3
+ import Analytics from '@analytics/analytics';
4
4
 
5
5
  interface ActionBarProps {
6
6
  answer: string;
@@ -1,5 +1,6 @@
1
1
  @import 'reset.css';
2
2
  @import 'tokens.css';
3
+ @import 'tokens.compat.css';
3
4
  @import 'utils.css';
4
5
  @import 'fonts.css';
5
6
  @import 'layout.css';
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Layout Backwards Compatibility
3
+ *
4
+ * Maps old `.n-` prefixed layout utility class names to the new `.ntl-` prefixed equivalents.
5
+ * Also aliases old `--n-` CSS custom properties to their `--ntl-` counterparts.
6
+ *
7
+ * Import this file alongside layout.css if your project still uses the old class names:
8
+ *
9
+ * @import '@netlify/spark-ui/styles/layout.css';
10
+ * @import '@netlify/spark-ui/styles/layout.compat.css';
11
+ *
12
+ * Remove this import once all references have been migrated to the `ntl-` prefix.
13
+ */
14
+
15
+ /* Class aliases */
16
+
17
+ .n-cluster {
18
+ --_gap-default: var(--space-m);
19
+ display: flex;
20
+ flex-wrap: wrap;
21
+ align-items: var(--ntl-cluster-align, var(--n-cluster-align, center));
22
+ justify-content: var(--ntl-cluster-justify, var(--n-cluster-justify, flex-start));
23
+ column-gap: var(--ntl-cluster-column-gap, var(--n-cluster-column-gap, var(--ntl-cluster-gap, var(--n-cluster-gap, var(--_gap-default)))));
24
+ row-gap: var(--ntl-cluster-row-gap, var(--n-cluster-row-gap, var(--ntl-cluster-gap, var(--n-cluster-gap, var(--_gap-default)))));
25
+ }
26
+
27
+ .n-flow {
28
+ display: flex;
29
+ flex-direction: column;
30
+ justify-content: var(--ntl-flow-justify, var(--n-flow-justify, flex-start));
31
+ align-items: var(--ntl-flow-align, var(--n-flow-align, flex-start));
32
+
33
+ > * + * {
34
+ margin-block-start: var(--ntl-flow-space, var(--n-flow-space, var(--space-m)));
35
+ }
36
+ }
37
+
38
+ .n-grid {
39
+ display: grid;
40
+ grid-template-columns: repeat(
41
+ var(--ntl-grid-repeat-count, var(--n-grid-repeat-count, auto-fill)),
42
+ minmax(min(100%, var(--ntl-grid-column-min-size, var(--n-grid-column-min-size))), 1fr)
43
+ );
44
+ gap: var(--ntl-grid-gap, var(--n-grid-gap, var(--space-m)));
45
+ grid-auto-rows: var(--ntl-grid-auto-rows, var(--n-grid-auto-rows, auto));
46
+ }
47
+
48
+ .n-flex-grid {
49
+ display: flex;
50
+ flex-wrap: wrap;
51
+ gap: var(--ntl-grid-gap, var(--n-grid-gap, var(--space-m)));
52
+
53
+ > * {
54
+ flex: 1 1 var(--ntl-grid-column-min-size, var(--n-grid-column-min-size));
55
+ }
56
+ }
57
+
58
+ .n-stack {
59
+ display: grid;
60
+ grid-template-areas: 'stack';
61
+
62
+ > * {
63
+ grid-area: stack;
64
+ }
65
+ }
66
+
67
+ .n-sidebar-left,
68
+ .n-sidebar-right {
69
+ display: flex;
70
+ flex-wrap: wrap;
71
+ flex-direction: var(--ntl-sidebar-direction, var(--n-sidebar-direction, initial));
72
+ align-items: var(--ntl-sidebar-align, var(--n-sidebar-align, initial));
73
+ justify-content: var(--ntl-sidebar-justify, var(--n-sidebar-justify, initial));
74
+ gap: var(--ntl-sidebar-row-gap, var(--n-sidebar-row-gap, var(--ntl-sidebar-gap, var(--n-sidebar-gap, var(--space-m)))))
75
+ var(--ntl-sidebar-column-gap, var(--n-sidebar-column-gap, var(--ntl-sidebar-gap, var(--n-sidebar-gap, var(--space-m)))));
76
+ }
77
+
78
+ .n-sidebar-left > :first-child,
79
+ .n-sidebar-right > :last-child {
80
+ flex-basis: var(--ntl-sidebar-size, var(--n-sidebar-size, initial));
81
+ flex-grow: 1;
82
+ }
83
+
84
+ .n-sidebar-left > :last-child,
85
+ .n-sidebar-right > :first-child {
86
+ flex-basis: 0;
87
+ flex-grow: 999;
88
+ min-inline-size: var(--ntl-sidebar-min, var(--n-sidebar-min, 60%));
89
+ }
90
+
91
+ .n-breakout {
92
+ --_full: minmax(var(--page-gutter), 1fr);
93
+ --_content: min(
94
+ var(--ntl-breakout-max, var(--n-breakout-max, var(--page-content-max-width))),
95
+ 100% - var(--page-gutter) * 2
96
+ );
97
+ --_popout: minmax(0, 2rem);
98
+ --_feature: minmax(0, 5rem);
99
+
100
+ display: grid;
101
+ place-content: start;
102
+ grid-template-columns:
103
+ [full-start] var(--_full)
104
+ [feature-start] var(--_feature)
105
+ [popout-start] var(--_popout)
106
+ [content-start] var(--_content) [content-end]
107
+ var(--_popout) [popout-end]
108
+ var(--_feature) [feature-end]
109
+ var(--_full) [full-end];
110
+ }
111
+
112
+ .n-breakout > * {
113
+ grid-column: var(--ntl-breakout-area, var(--n-breakout-area, content));
114
+ }
@@ -1,45 +1,45 @@
1
- .n-cluster {
1
+ .ntl-cluster {
2
2
  --_gap-default: var(--space-m);
3
3
  display: flex;
4
4
  flex-wrap: wrap;
5
- align-items: var(--n-cluster-align, center);
6
- justify-content: var(--n-cluster-justify, flex-start);
7
- column-gap: var(--n-cluster-column-gap, var(--n-cluster-gap, var(--_gap-default)));
8
- row-gap: var(--n-cluster-row-gap, var(--n-cluster-gap, var(--_gap-default)));
5
+ align-items: var(--ntl-cluster-align, center);
6
+ justify-content: var(--ntl-cluster-justify, flex-start);
7
+ column-gap: var(--ntl-cluster-column-gap, var(--ntl-cluster-gap, var(--_gap-default)));
8
+ row-gap: var(--ntl-cluster-row-gap, var(--ntl-cluster-gap, var(--_gap-default)));
9
9
  }
10
10
 
11
- .n-flow {
11
+ .ntl-flow {
12
12
  display: flex;
13
13
  flex-direction: column;
14
- justify-content: var(--n-flow-justify, flex-start);
15
- align-items: var(--n-flow-align, flex-start);
14
+ justify-content: var(--ntl-flow-justify, flex-start);
15
+ align-items: var(--ntl-flow-align, flex-start);
16
16
 
17
17
  > * + * {
18
- margin-block-start: var(--n-flow-space, var(--space-m));
18
+ margin-block-start: var(--ntl-flow-space, var(--space-m));
19
19
  }
20
20
  }
21
21
 
22
- .n-grid {
22
+ .ntl-grid {
23
23
  display: grid;
24
24
  grid-template-columns: repeat(
25
- var(--n-grid-repeat-count, auto-fill),
26
- minmax(min(100%, var(--n-grid-column-min-size)), 1fr)
25
+ var(--ntl-grid-repeat-count, auto-fill),
26
+ minmax(min(100%, var(--ntl-grid-column-min-size)), 1fr)
27
27
  );
28
- gap: var(--n-grid-gap, var(--space-m));
29
- grid-auto-rows: var(--n-grid-auto-rows, auto);
28
+ gap: var(--ntl-grid-gap, var(--space-m));
29
+ grid-auto-rows: var(--ntl-grid-auto-rows, auto);
30
30
  }
31
31
 
32
- .n-flex-grid {
32
+ .ntl-flex-grid {
33
33
  display: flex;
34
34
  flex-wrap: wrap;
35
- gap: var(--n-grid-gap, var(--space-m));
35
+ gap: var(--ntl-grid-gap, var(--space-m));
36
36
 
37
37
  > * {
38
- flex: 1 1 var(--n-grid-column-min-size);
38
+ flex: 1 1 var(--ntl-grid-column-min-size);
39
39
  }
40
40
  }
41
41
 
42
- .n-stack {
42
+ .ntl-stack {
43
43
  display: grid;
44
44
  grid-template-areas: 'stack';
45
45
 
@@ -48,34 +48,34 @@
48
48
  }
49
49
  }
50
50
 
51
- .n-sidebar-left,
52
- .n-sidebar-right {
51
+ .ntl-sidebar-left,
52
+ .ntl-sidebar-right {
53
53
  display: flex;
54
54
  flex-wrap: wrap;
55
- flex-direction: var(--n-sidebar-direction, initial);
56
- align-items: var(--n-sidebar-align, initial);
57
- justify-content: var(--n-sidebar-justify, initial);
58
- gap: var(--n-sidebar-row-gap, var(--n-sidebar-gap, var(--space-m)))
59
- var(--n-sidebar-column-gap, var(--n-sidebar-gap, var(--space-m)));
55
+ flex-direction: var(--ntl-sidebar-direction, initial);
56
+ align-items: var(--ntl-sidebar-align, initial);
57
+ justify-content: var(--ntl-sidebar-justify, initial);
58
+ gap: var(--ntl-sidebar-row-gap, var(--ntl-sidebar-gap, var(--space-m)))
59
+ var(--ntl-sidebar-column-gap, var(--ntl-sidebar-gap, var(--space-m)));
60
60
  }
61
61
 
62
- .n-sidebar-left > :first-child,
63
- .n-sidebar-right > :last-child {
64
- flex-basis: var(--n-sidebar-size, initial);
62
+ .ntl-sidebar-left > :first-child,
63
+ .ntl-sidebar-right > :last-child {
64
+ flex-basis: var(--ntl-sidebar-size, initial);
65
65
  flex-grow: 1;
66
66
  }
67
67
 
68
- .n-sidebar-left > :last-child,
69
- .n-sidebar-right > :first-child {
68
+ .ntl-sidebar-left > :last-child,
69
+ .ntl-sidebar-right > :first-child {
70
70
  flex-basis: 0;
71
71
  flex-grow: 999;
72
- min-inline-size: var(--n-sidebar-min, 60%);
72
+ min-inline-size: var(--ntl-sidebar-min, 60%);
73
73
  }
74
74
 
75
- .n-breakout {
75
+ .ntl-breakout {
76
76
  --_full: minmax(var(--page-gutter), 1fr);
77
77
  --_content: min(
78
- var(--n-breakout-max, var(--page-content-max-width)),
78
+ var(--ntl-breakout-max, var(--page-content-max-width)),
79
79
  100% - var(--page-gutter) * 2
80
80
  );
81
81
  --_popout: minmax(0, 2rem);
@@ -93,6 +93,6 @@
93
93
  var(--_full) [full-end];
94
94
  }
95
95
 
96
- .n-breakout > * {
97
- grid-column: var(--n-breakout-area, content);
96
+ .ntl-breakout > * {
97
+ grid-column: var(--ntl-breakout-area, content);
98
98
  }