@latty-ds/web 0.8.1 → 0.10.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 (45) hide show
  1. package/custom-elements.json +103 -33
  2. package/dist/components/accordion/index.js +44 -8
  3. package/dist/components/alert/index.js +72 -8
  4. package/dist/components/avatar/index.js +1 -1
  5. package/dist/components/badge/index.js +1 -1
  6. package/dist/components/breadcrumb/index.js +1 -1
  7. package/dist/components/button/button.d.ts +6 -0
  8. package/dist/components/button/index.js +29 -1
  9. package/dist/components/calendar/index.js +1 -1
  10. package/dist/components/checkbox/index.js +1 -1
  11. package/dist/components/chip/index.js +1 -1
  12. package/dist/components/color-input/index.js +44 -8
  13. package/dist/components/combobox/index.js +44 -8
  14. package/dist/components/date-input/index.js +45 -9
  15. package/dist/components/datepicker/index.js +44 -8
  16. package/dist/components/dialog/dialog.d.ts +11 -0
  17. package/dist/components/dialog/index.js +83 -10
  18. package/dist/components/divider/index.js +1 -1
  19. package/dist/components/dropdown/dropdown.d.ts +2 -0
  20. package/dist/components/dropdown/index.js +4 -3
  21. package/dist/components/icon-button/icon-button.d.ts +6 -0
  22. package/dist/components/icon-button/index.js +28 -0
  23. package/dist/components/list/index.js +1 -1
  24. package/dist/components/pagination/index.js +1 -1
  25. package/dist/components/radio/index.js +1 -1
  26. package/dist/components/radio-group/index.js +44 -8
  27. package/dist/components/select/index.js +54 -10
  28. package/dist/components/sidepanel/index.js +76 -11
  29. package/dist/components/sidepanel/sidepanel.d.ts +2 -0
  30. package/dist/components/slider/index.js +44 -8
  31. package/dist/components/snackbar/index.js +11 -3
  32. package/dist/components/snackbar/snackbar.d.ts +11 -0
  33. package/dist/components/surface/index.js +1 -1
  34. package/dist/components/switch/index.js +1 -1
  35. package/dist/components/tab/index.js +1 -1
  36. package/dist/components/tab-group/index.js +2 -2
  37. package/dist/components/table/index.js +1 -1
  38. package/dist/components/text/index.js +43 -7
  39. package/dist/components/text/text.d.ts +1 -0
  40. package/dist/components/textfield/index.js +44 -8
  41. package/dist/components/tooltip/index.js +43 -7
  42. package/dist/index.cjs +163 -44
  43. package/dist/index.js +163 -44
  44. package/dist/manifest.json +36 -0
  45. package/package.json +3 -3
@@ -36,6 +36,12 @@ export declare class IconButton extends ThemeableElement {
36
36
  * @default 'ghost'
37
37
  */
38
38
  appearance: IconButtonAppearance;
39
+ /**
40
+ * Adds a variant-colored border on top of the current appearance. A no-op on
41
+ * `outlined` (which already has one); adds a border to `filled`/`ghost`.
42
+ * @default false
43
+ */
44
+ bordered: boolean;
39
45
  /**
40
46
  * Size of the button.
41
47
  * @default 'md'
@@ -255,6 +255,30 @@ var iconButtonStyles = css`
255
255
  --_active-bg: var(--lt-bg-info-subtle);
256
256
  }
257
257
 
258
+ /* bordered — adds a border on top of whatever appearance is active; a no-op on
259
+ outlined, which already sets the same border color. */
260
+ :host([bordered][variant='primary']) {
261
+ --_border-color: var(--lt-border-primary-strong);
262
+ }
263
+ :host([bordered][variant='secondary']) {
264
+ --_border-color: var(--lt-border-secondary-strong);
265
+ }
266
+ :host([bordered][variant='neutral']) {
267
+ --_border-color: var(--lt-border-strong);
268
+ }
269
+ :host([bordered][variant='success']) {
270
+ --_border-color: var(--lt-border-success-strong);
271
+ }
272
+ :host([bordered][variant='warning']) {
273
+ --_border-color: var(--lt-border-warning-strong);
274
+ }
275
+ :host([bordered][variant='error']) {
276
+ --_border-color: var(--lt-border-error-strong);
277
+ }
278
+ :host([bordered][variant='info']) {
279
+ --_border-color: var(--lt-border-info-strong);
280
+ }
281
+
258
282
  /* round shape */
259
283
  :host([round]) [part='base'] {
260
284
  border-radius: 50%;
@@ -304,6 +328,7 @@ var IconButton = class extends ThemeableElement {
304
328
  this.label = "";
305
329
  this.variant = "neutral";
306
330
  this.appearance = "ghost";
331
+ this.bordered = false;
307
332
  this.size = "md";
308
333
  this.disabled = false;
309
334
  this.href = "";
@@ -350,6 +375,9 @@ __decorateClass([
350
375
  __decorateClass([
351
376
  property2({ reflect: true })
352
377
  ], IconButton.prototype, "appearance", 2);
378
+ __decorateClass([
379
+ property2({ type: Boolean, reflect: true })
380
+ ], IconButton.prototype, "bordered", 2);
353
381
  __decorateClass([
354
382
  property2({ reflect: true })
355
383
  ], IconButton.prototype, "size", 2);
@@ -43,7 +43,7 @@ import { css } from "lit";
43
43
  var listStyles = css`
44
44
  :host {
45
45
  display: block;
46
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
46
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
47
47
  --list-marker-color: var(--lt-color-neutral-500);
48
48
  }
49
49
 
@@ -42,7 +42,7 @@ import { css } from "lit";
42
42
  var paginationStyles = css`
43
43
  :host {
44
44
  display: inline-flex;
45
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
45
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
46
46
  }
47
47
 
48
48
  nav {
@@ -42,7 +42,7 @@ import { css } from "lit";
42
42
  var radioStyles = css`
43
43
  :host {
44
44
  display: inline-block;
45
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
45
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
46
46
  }
47
47
 
48
48
  .radio-wrapper {
@@ -42,7 +42,7 @@ import { css } from "lit";
42
42
  var radioGroupStyles = css`
43
43
  :host {
44
44
  display: block;
45
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
45
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
46
46
  }
47
47
 
48
48
  .radio-group {
@@ -111,67 +111,103 @@ var textStyles = css2`
111
111
  [part='base'] {
112
112
  margin: 0;
113
113
  color: inherit;
114
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
114
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
115
115
  }
116
116
 
117
117
  /* ── Display ─────────────────────────────────────────────────────────── */
118
118
 
119
119
  :host([variant='display-2xl']) [part='base'] {
120
+ font-family: var(
121
+ --lt-typography-fontFamilyHeading,
122
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
123
+ );
120
124
  font-size: clamp(2.5rem, 6vw, 4.5rem);
121
125
  font-weight: var(--lt-text-weight, 200);
122
126
  line-height: 1.1;
123
- letter-spacing: -0.02em;
127
+ letter-spacing: var(--lt-text-tracking, -0.02em);
124
128
  }
125
129
 
126
130
  :host([variant='display-xl']) [part='base'] {
131
+ font-family: var(
132
+ --lt-typography-fontFamilyHeading,
133
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
134
+ );
127
135
  font-size: clamp(2rem, 5vw, 3.75rem);
128
136
  font-weight: var(--lt-text-weight, 200);
129
137
  line-height: 1.1;
130
- letter-spacing: -0.02em;
138
+ letter-spacing: var(--lt-text-tracking, -0.02em);
131
139
  }
132
140
 
133
141
  :host([variant='display-lg']) [part='base'] {
142
+ font-family: var(
143
+ --lt-typography-fontFamilyHeading,
144
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
145
+ );
134
146
  font-size: clamp(2rem, 4vw, 3rem);
135
147
  font-weight: var(--lt-text-weight, 200);
136
148
  line-height: 1.15;
137
- letter-spacing: -0.01em;
149
+ letter-spacing: var(--lt-text-tracking, -0.01em);
138
150
  }
139
151
 
140
152
  /* ── Headings ─────────────────────────────────────────────────────────── */
141
153
 
142
154
  :host([variant='h1']) [part='base'] {
155
+ font-family: var(
156
+ --lt-typography-fontFamilyHeading,
157
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
158
+ );
143
159
  font-size: clamp(1.75rem, 2.5vw + 0.75rem, 2.5rem);
144
160
  font-weight: var(--lt-text-weight, 600);
145
161
  line-height: 1.2;
146
- letter-spacing: -0.02em;
162
+ letter-spacing: var(--lt-text-tracking, -0.02em);
147
163
  }
148
164
 
149
165
  :host([variant='h2']) [part='base'] {
166
+ font-family: var(
167
+ --lt-typography-fontFamilyHeading,
168
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
169
+ );
150
170
  font-size: clamp(1.5rem, 2vw + 0.5rem, 2rem);
151
171
  font-weight: var(--lt-text-weight, 600);
152
172
  line-height: 1.25;
153
- letter-spacing: -0.01em;
173
+ letter-spacing: var(--lt-text-tracking, -0.01em);
154
174
  }
155
175
 
156
176
  :host([variant='h3']) [part='base'] {
177
+ font-family: var(
178
+ --lt-typography-fontFamilyHeading,
179
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
180
+ );
157
181
  font-size: clamp(1.25rem, 1.5vw + 0.5rem, 1.5rem);
158
182
  font-weight: var(--lt-text-weight, 600);
159
183
  line-height: 1.3;
160
184
  }
161
185
 
162
186
  :host([variant='h4']) [part='base'] {
187
+ font-family: var(
188
+ --lt-typography-fontFamilyHeading,
189
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
190
+ );
163
191
  font-size: 1.25rem;
164
192
  font-weight: var(--lt-text-weight, 600);
165
193
  line-height: 1.35;
166
194
  }
167
195
 
168
196
  :host([variant='h5']) [part='base'] {
197
+ font-family: var(
198
+ --lt-typography-fontFamilyHeading,
199
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
200
+ );
169
201
  font-size: 1.125rem;
170
202
  font-weight: var(--lt-text-weight, 600);
171
203
  line-height: 1.4;
172
204
  }
173
205
 
174
206
  :host([variant='h6']) [part='base'] {
207
+ font-family: var(
208
+ --lt-typography-fontFamilyHeading,
209
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
210
+ );
175
211
  font-size: 1rem;
176
212
  font-weight: var(--lt-text-weight, 600);
177
213
  line-height: 1.4;
@@ -210,7 +246,7 @@ var textStyles = css2`
210
246
  font-size: 0.6875rem;
211
247
  font-weight: var(--lt-text-weight, 600);
212
248
  line-height: 1.2;
213
- letter-spacing: 0.08em;
249
+ letter-spacing: var(--lt-text-tracking, 0.08em);
214
250
  text-transform: uppercase;
215
251
  }
216
252
 
@@ -1432,7 +1432,7 @@ var selectStyles = [
1432
1432
  css2`
1433
1433
  :host {
1434
1434
  display: inline-block;
1435
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
1435
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
1436
1436
  position: relative;
1437
1437
  width: 100%;
1438
1438
  }
@@ -1657,7 +1657,7 @@ import { css as css3 } from "lit";
1657
1657
  var surfaceStyles = css3`
1658
1658
  :host {
1659
1659
  display: block;
1660
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
1660
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
1661
1661
  }
1662
1662
 
1663
1663
  .surface {
@@ -1757,67 +1757,103 @@ var textStyles = css4`
1757
1757
  [part='base'] {
1758
1758
  margin: 0;
1759
1759
  color: inherit;
1760
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
1760
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
1761
1761
  }
1762
1762
 
1763
1763
  /* ── Display ─────────────────────────────────────────────────────────── */
1764
1764
 
1765
1765
  :host([variant='display-2xl']) [part='base'] {
1766
+ font-family: var(
1767
+ --lt-typography-fontFamilyHeading,
1768
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1769
+ );
1766
1770
  font-size: clamp(2.5rem, 6vw, 4.5rem);
1767
1771
  font-weight: var(--lt-text-weight, 200);
1768
1772
  line-height: 1.1;
1769
- letter-spacing: -0.02em;
1773
+ letter-spacing: var(--lt-text-tracking, -0.02em);
1770
1774
  }
1771
1775
 
1772
1776
  :host([variant='display-xl']) [part='base'] {
1777
+ font-family: var(
1778
+ --lt-typography-fontFamilyHeading,
1779
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1780
+ );
1773
1781
  font-size: clamp(2rem, 5vw, 3.75rem);
1774
1782
  font-weight: var(--lt-text-weight, 200);
1775
1783
  line-height: 1.1;
1776
- letter-spacing: -0.02em;
1784
+ letter-spacing: var(--lt-text-tracking, -0.02em);
1777
1785
  }
1778
1786
 
1779
1787
  :host([variant='display-lg']) [part='base'] {
1788
+ font-family: var(
1789
+ --lt-typography-fontFamilyHeading,
1790
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1791
+ );
1780
1792
  font-size: clamp(2rem, 4vw, 3rem);
1781
1793
  font-weight: var(--lt-text-weight, 200);
1782
1794
  line-height: 1.15;
1783
- letter-spacing: -0.01em;
1795
+ letter-spacing: var(--lt-text-tracking, -0.01em);
1784
1796
  }
1785
1797
 
1786
1798
  /* ── Headings ─────────────────────────────────────────────────────────── */
1787
1799
 
1788
1800
  :host([variant='h1']) [part='base'] {
1801
+ font-family: var(
1802
+ --lt-typography-fontFamilyHeading,
1803
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1804
+ );
1789
1805
  font-size: clamp(1.75rem, 2.5vw + 0.75rem, 2.5rem);
1790
1806
  font-weight: var(--lt-text-weight, 600);
1791
1807
  line-height: 1.2;
1792
- letter-spacing: -0.02em;
1808
+ letter-spacing: var(--lt-text-tracking, -0.02em);
1793
1809
  }
1794
1810
 
1795
1811
  :host([variant='h2']) [part='base'] {
1812
+ font-family: var(
1813
+ --lt-typography-fontFamilyHeading,
1814
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1815
+ );
1796
1816
  font-size: clamp(1.5rem, 2vw + 0.5rem, 2rem);
1797
1817
  font-weight: var(--lt-text-weight, 600);
1798
1818
  line-height: 1.25;
1799
- letter-spacing: -0.01em;
1819
+ letter-spacing: var(--lt-text-tracking, -0.01em);
1800
1820
  }
1801
1821
 
1802
1822
  :host([variant='h3']) [part='base'] {
1823
+ font-family: var(
1824
+ --lt-typography-fontFamilyHeading,
1825
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1826
+ );
1803
1827
  font-size: clamp(1.25rem, 1.5vw + 0.5rem, 1.5rem);
1804
1828
  font-weight: var(--lt-text-weight, 600);
1805
1829
  line-height: 1.3;
1806
1830
  }
1807
1831
 
1808
1832
  :host([variant='h4']) [part='base'] {
1833
+ font-family: var(
1834
+ --lt-typography-fontFamilyHeading,
1835
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1836
+ );
1809
1837
  font-size: 1.25rem;
1810
1838
  font-weight: var(--lt-text-weight, 600);
1811
1839
  line-height: 1.35;
1812
1840
  }
1813
1841
 
1814
1842
  :host([variant='h5']) [part='base'] {
1843
+ font-family: var(
1844
+ --lt-typography-fontFamilyHeading,
1845
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1846
+ );
1815
1847
  font-size: 1.125rem;
1816
1848
  font-weight: var(--lt-text-weight, 600);
1817
1849
  line-height: 1.4;
1818
1850
  }
1819
1851
 
1820
1852
  :host([variant='h6']) [part='base'] {
1853
+ font-family: var(
1854
+ --lt-typography-fontFamilyHeading,
1855
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1856
+ );
1821
1857
  font-size: 1rem;
1822
1858
  font-weight: var(--lt-text-weight, 600);
1823
1859
  line-height: 1.4;
@@ -1856,7 +1892,7 @@ var textStyles = css4`
1856
1892
  font-size: 0.6875rem;
1857
1893
  font-weight: var(--lt-text-weight, 600);
1858
1894
  line-height: 1.2;
1859
- letter-spacing: 0.08em;
1895
+ letter-spacing: var(--lt-text-tracking, 0.08em);
1860
1896
  text-transform: uppercase;
1861
1897
  }
1862
1898
 
@@ -2071,7 +2107,15 @@ var Select = class extends ThemeableElement {
2071
2107
  </span>
2072
2108
  <lt-icon class="icon-end" name="caret-down"></lt-icon>
2073
2109
  </div>
2074
- <lt-surface class="dropdown" popover="manual" elevation="2" role="listbox">
2110
+ <lt-surface
2111
+ class="dropdown"
2112
+ popover="manual"
2113
+ elevation="2"
2114
+ appearance="outlined"
2115
+ background="--lt-bg-default"
2116
+ role="listbox"
2117
+ part="listbox"
2118
+ >
2075
2119
  <div class="options-container">
2076
2120
  ${this.options.map(
2077
2121
  (option) => html3`
@@ -75,28 +75,28 @@ var sidepanelStyles = css`
75
75
  inset-block: 0;
76
76
  left: 0;
77
77
  transform: translateX(-100%);
78
- box-shadow: 4px 0 24px rgba(0, 0, 0, 0.12);
78
+ box-shadow: var(--lt-sidepanel-shadow, 4px 0 24px rgba(0, 0, 0, 0.12));
79
79
  }
80
80
 
81
81
  :host([anchor='right']) [part='panel'] {
82
82
  inset-block: 0;
83
83
  right: 0;
84
84
  transform: translateX(100%);
85
- box-shadow: -4px 0 24px rgba(0, 0, 0, 0.12);
85
+ box-shadow: var(--lt-sidepanel-shadow, -4px 0 24px rgba(0, 0, 0, 0.12));
86
86
  }
87
87
 
88
88
  :host([anchor='top']) [part='panel'] {
89
89
  inset-inline: 0;
90
90
  top: 0;
91
91
  transform: translateY(-100%);
92
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.12);
92
+ box-shadow: var(--lt-sidepanel-shadow, 0 4px 24px rgba(0, 0, 0, 0.12));
93
93
  }
94
94
 
95
95
  :host([anchor='bottom']) [part='panel'] {
96
96
  inset-inline: 0;
97
97
  bottom: 0;
98
98
  transform: translateY(100%);
99
- box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.12);
99
+ box-shadow: var(--lt-sidepanel-shadow, 0 -4px 24px rgba(0, 0, 0, 0.12));
100
100
  }
101
101
 
102
102
  /* ── Open state — must come after anchors to win the cascade ────────────── */
@@ -137,6 +137,7 @@ var sidepanelStyles = css`
137
137
  .body {
138
138
  flex: 1;
139
139
  overflow-y: auto;
140
+ padding: var(--lt-spacing-5);
140
141
  }
141
142
 
142
143
  /* ── Reduced motion ─────────────────────────────────────────────────────── */
@@ -386,6 +387,30 @@ var iconButtonStyles = css3`
386
387
  --_active-bg: var(--lt-bg-info-subtle);
387
388
  }
388
389
 
390
+ /* bordered — adds a border on top of whatever appearance is active; a no-op on
391
+ outlined, which already sets the same border color. */
392
+ :host([bordered][variant='primary']) {
393
+ --_border-color: var(--lt-border-primary-strong);
394
+ }
395
+ :host([bordered][variant='secondary']) {
396
+ --_border-color: var(--lt-border-secondary-strong);
397
+ }
398
+ :host([bordered][variant='neutral']) {
399
+ --_border-color: var(--lt-border-strong);
400
+ }
401
+ :host([bordered][variant='success']) {
402
+ --_border-color: var(--lt-border-success-strong);
403
+ }
404
+ :host([bordered][variant='warning']) {
405
+ --_border-color: var(--lt-border-warning-strong);
406
+ }
407
+ :host([bordered][variant='error']) {
408
+ --_border-color: var(--lt-border-error-strong);
409
+ }
410
+ :host([bordered][variant='info']) {
411
+ --_border-color: var(--lt-border-info-strong);
412
+ }
413
+
389
414
  /* round shape */
390
415
  :host([round]) [part='base'] {
391
416
  border-radius: 50%;
@@ -435,6 +460,7 @@ var IconButton = class extends ThemeableElement {
435
460
  this.label = "";
436
461
  this.variant = "neutral";
437
462
  this.appearance = "ghost";
463
+ this.bordered = false;
438
464
  this.size = "md";
439
465
  this.disabled = false;
440
466
  this.href = "";
@@ -481,6 +507,9 @@ __decorateClass([
481
507
  __decorateClass([
482
508
  property2({ reflect: true })
483
509
  ], IconButton.prototype, "appearance", 2);
510
+ __decorateClass([
511
+ property2({ type: Boolean, reflect: true })
512
+ ], IconButton.prototype, "bordered", 2);
484
513
  __decorateClass([
485
514
  property2({ reflect: true })
486
515
  ], IconButton.prototype, "size", 2);
@@ -525,67 +554,103 @@ var textStyles = css4`
525
554
  [part='base'] {
526
555
  margin: 0;
527
556
  color: inherit;
528
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
557
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
529
558
  }
530
559
 
531
560
  /* ── Display ─────────────────────────────────────────────────────────── */
532
561
 
533
562
  :host([variant='display-2xl']) [part='base'] {
563
+ font-family: var(
564
+ --lt-typography-fontFamilyHeading,
565
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
566
+ );
534
567
  font-size: clamp(2.5rem, 6vw, 4.5rem);
535
568
  font-weight: var(--lt-text-weight, 200);
536
569
  line-height: 1.1;
537
- letter-spacing: -0.02em;
570
+ letter-spacing: var(--lt-text-tracking, -0.02em);
538
571
  }
539
572
 
540
573
  :host([variant='display-xl']) [part='base'] {
574
+ font-family: var(
575
+ --lt-typography-fontFamilyHeading,
576
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
577
+ );
541
578
  font-size: clamp(2rem, 5vw, 3.75rem);
542
579
  font-weight: var(--lt-text-weight, 200);
543
580
  line-height: 1.1;
544
- letter-spacing: -0.02em;
581
+ letter-spacing: var(--lt-text-tracking, -0.02em);
545
582
  }
546
583
 
547
584
  :host([variant='display-lg']) [part='base'] {
585
+ font-family: var(
586
+ --lt-typography-fontFamilyHeading,
587
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
588
+ );
548
589
  font-size: clamp(2rem, 4vw, 3rem);
549
590
  font-weight: var(--lt-text-weight, 200);
550
591
  line-height: 1.15;
551
- letter-spacing: -0.01em;
592
+ letter-spacing: var(--lt-text-tracking, -0.01em);
552
593
  }
553
594
 
554
595
  /* ── Headings ─────────────────────────────────────────────────────────── */
555
596
 
556
597
  :host([variant='h1']) [part='base'] {
598
+ font-family: var(
599
+ --lt-typography-fontFamilyHeading,
600
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
601
+ );
557
602
  font-size: clamp(1.75rem, 2.5vw + 0.75rem, 2.5rem);
558
603
  font-weight: var(--lt-text-weight, 600);
559
604
  line-height: 1.2;
560
- letter-spacing: -0.02em;
605
+ letter-spacing: var(--lt-text-tracking, -0.02em);
561
606
  }
562
607
 
563
608
  :host([variant='h2']) [part='base'] {
609
+ font-family: var(
610
+ --lt-typography-fontFamilyHeading,
611
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
612
+ );
564
613
  font-size: clamp(1.5rem, 2vw + 0.5rem, 2rem);
565
614
  font-weight: var(--lt-text-weight, 600);
566
615
  line-height: 1.25;
567
- letter-spacing: -0.01em;
616
+ letter-spacing: var(--lt-text-tracking, -0.01em);
568
617
  }
569
618
 
570
619
  :host([variant='h3']) [part='base'] {
620
+ font-family: var(
621
+ --lt-typography-fontFamilyHeading,
622
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
623
+ );
571
624
  font-size: clamp(1.25rem, 1.5vw + 0.5rem, 1.5rem);
572
625
  font-weight: var(--lt-text-weight, 600);
573
626
  line-height: 1.3;
574
627
  }
575
628
 
576
629
  :host([variant='h4']) [part='base'] {
630
+ font-family: var(
631
+ --lt-typography-fontFamilyHeading,
632
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
633
+ );
577
634
  font-size: 1.25rem;
578
635
  font-weight: var(--lt-text-weight, 600);
579
636
  line-height: 1.35;
580
637
  }
581
638
 
582
639
  :host([variant='h5']) [part='base'] {
640
+ font-family: var(
641
+ --lt-typography-fontFamilyHeading,
642
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
643
+ );
583
644
  font-size: 1.125rem;
584
645
  font-weight: var(--lt-text-weight, 600);
585
646
  line-height: 1.4;
586
647
  }
587
648
 
588
649
  :host([variant='h6']) [part='base'] {
650
+ font-family: var(
651
+ --lt-typography-fontFamilyHeading,
652
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
653
+ );
589
654
  font-size: 1rem;
590
655
  font-weight: var(--lt-text-weight, 600);
591
656
  line-height: 1.4;
@@ -624,7 +689,7 @@ var textStyles = css4`
624
689
  font-size: 0.6875rem;
625
690
  font-weight: var(--lt-text-weight, 600);
626
691
  line-height: 1.2;
627
- letter-spacing: 0.08em;
692
+ letter-spacing: var(--lt-text-tracking, 0.08em);
628
693
  text-transform: uppercase;
629
694
  }
630
695
 
@@ -14,6 +14,8 @@ import '../text/text';
14
14
  * @part header - The header bar (contains label and close button)
15
15
  * @part close-button - The close button inside the header
16
16
  * @part body - The scrollable content area wrapping the default slot
17
+ *
18
+ * @cssprop [--lt-sidepanel-shadow] - Overrides the panel's box-shadow, for all anchor positions.
17
19
  */
18
20
  export declare class SidePanel extends ThemeableElement {
19
21
  static styles: import("lit").CSSResult[];