@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
package/dist/index.cjs CHANGED
@@ -1331,7 +1331,7 @@ __decorateClass([
1331
1331
  var accordionStyles = i`
1332
1332
  :host {
1333
1333
  display: block;
1334
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
1334
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
1335
1335
  width: 100%;
1336
1336
  }
1337
1337
 
@@ -1508,67 +1508,103 @@ var textStyles = i`
1508
1508
  [part='base'] {
1509
1509
  margin: 0;
1510
1510
  color: inherit;
1511
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
1511
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
1512
1512
  }
1513
1513
 
1514
1514
  /* ── Display ─────────────────────────────────────────────────────────── */
1515
1515
 
1516
1516
  :host([variant='display-2xl']) [part='base'] {
1517
+ font-family: var(
1518
+ --lt-typography-fontFamilyHeading,
1519
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1520
+ );
1517
1521
  font-size: clamp(2.5rem, 6vw, 4.5rem);
1518
1522
  font-weight: var(--lt-text-weight, 200);
1519
1523
  line-height: 1.1;
1520
- letter-spacing: -0.02em;
1524
+ letter-spacing: var(--lt-text-tracking, -0.02em);
1521
1525
  }
1522
1526
 
1523
1527
  :host([variant='display-xl']) [part='base'] {
1528
+ font-family: var(
1529
+ --lt-typography-fontFamilyHeading,
1530
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1531
+ );
1524
1532
  font-size: clamp(2rem, 5vw, 3.75rem);
1525
1533
  font-weight: var(--lt-text-weight, 200);
1526
1534
  line-height: 1.1;
1527
- letter-spacing: -0.02em;
1535
+ letter-spacing: var(--lt-text-tracking, -0.02em);
1528
1536
  }
1529
1537
 
1530
1538
  :host([variant='display-lg']) [part='base'] {
1539
+ font-family: var(
1540
+ --lt-typography-fontFamilyHeading,
1541
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1542
+ );
1531
1543
  font-size: clamp(2rem, 4vw, 3rem);
1532
1544
  font-weight: var(--lt-text-weight, 200);
1533
1545
  line-height: 1.15;
1534
- letter-spacing: -0.01em;
1546
+ letter-spacing: var(--lt-text-tracking, -0.01em);
1535
1547
  }
1536
1548
 
1537
1549
  /* ── Headings ─────────────────────────────────────────────────────────── */
1538
1550
 
1539
1551
  :host([variant='h1']) [part='base'] {
1552
+ font-family: var(
1553
+ --lt-typography-fontFamilyHeading,
1554
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1555
+ );
1540
1556
  font-size: clamp(1.75rem, 2.5vw + 0.75rem, 2.5rem);
1541
1557
  font-weight: var(--lt-text-weight, 600);
1542
1558
  line-height: 1.2;
1543
- letter-spacing: -0.02em;
1559
+ letter-spacing: var(--lt-text-tracking, -0.02em);
1544
1560
  }
1545
1561
 
1546
1562
  :host([variant='h2']) [part='base'] {
1563
+ font-family: var(
1564
+ --lt-typography-fontFamilyHeading,
1565
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1566
+ );
1547
1567
  font-size: clamp(1.5rem, 2vw + 0.5rem, 2rem);
1548
1568
  font-weight: var(--lt-text-weight, 600);
1549
1569
  line-height: 1.25;
1550
- letter-spacing: -0.01em;
1570
+ letter-spacing: var(--lt-text-tracking, -0.01em);
1551
1571
  }
1552
1572
 
1553
1573
  :host([variant='h3']) [part='base'] {
1574
+ font-family: var(
1575
+ --lt-typography-fontFamilyHeading,
1576
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1577
+ );
1554
1578
  font-size: clamp(1.25rem, 1.5vw + 0.5rem, 1.5rem);
1555
1579
  font-weight: var(--lt-text-weight, 600);
1556
1580
  line-height: 1.3;
1557
1581
  }
1558
1582
 
1559
1583
  :host([variant='h4']) [part='base'] {
1584
+ font-family: var(
1585
+ --lt-typography-fontFamilyHeading,
1586
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1587
+ );
1560
1588
  font-size: 1.25rem;
1561
1589
  font-weight: var(--lt-text-weight, 600);
1562
1590
  line-height: 1.35;
1563
1591
  }
1564
1592
 
1565
1593
  :host([variant='h5']) [part='base'] {
1594
+ font-family: var(
1595
+ --lt-typography-fontFamilyHeading,
1596
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1597
+ );
1566
1598
  font-size: 1.125rem;
1567
1599
  font-weight: var(--lt-text-weight, 600);
1568
1600
  line-height: 1.4;
1569
1601
  }
1570
1602
 
1571
1603
  :host([variant='h6']) [part='base'] {
1604
+ font-family: var(
1605
+ --lt-typography-fontFamilyHeading,
1606
+ var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif)
1607
+ );
1572
1608
  font-size: 1rem;
1573
1609
  font-weight: var(--lt-text-weight, 600);
1574
1610
  line-height: 1.4;
@@ -1607,7 +1643,7 @@ var textStyles = i`
1607
1643
  font-size: 0.6875rem;
1608
1644
  font-weight: var(--lt-text-weight, 600);
1609
1645
  line-height: 1.2;
1610
- letter-spacing: 0.08em;
1646
+ letter-spacing: var(--lt-text-tracking, 0.08em);
1611
1647
  text-transform: uppercase;
1612
1648
  }
1613
1649
 
@@ -1781,7 +1817,7 @@ var o8 = (o10) => o10 ?? A;
1781
1817
  var buttonStyles = i`
1782
1818
  :host {
1783
1819
  display: inline-block;
1784
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
1820
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
1785
1821
 
1786
1822
  /* Internal state props — set per variant/appearance below */
1787
1823
  --_color: var(--lt-text-on-primary);
@@ -2015,6 +2051,30 @@ var buttonStyles = i`
2015
2051
  opacity: 0.8;
2016
2052
  }
2017
2053
 
2054
+ /* bordered — adds a border on top of whatever appearance is active; a no-op on
2055
+ outlined, which already sets the same border color. */
2056
+ :host([bordered][variant='primary']) {
2057
+ --_border-color: var(--lt-border-primary-strong);
2058
+ }
2059
+ :host([bordered][variant='secondary']) {
2060
+ --_border-color: var(--lt-border-secondary-strong);
2061
+ }
2062
+ :host([bordered][variant='neutral']) {
2063
+ --_border-color: var(--lt-border-strong);
2064
+ }
2065
+ :host([bordered][variant='success']) {
2066
+ --_border-color: var(--lt-border-success-strong);
2067
+ }
2068
+ :host([bordered][variant='warning']) {
2069
+ --_border-color: var(--lt-border-warning-strong);
2070
+ }
2071
+ :host([bordered][variant='error']) {
2072
+ --_border-color: var(--lt-border-error-strong);
2073
+ }
2074
+ :host([bordered][variant='info']) {
2075
+ --_border-color: var(--lt-border-info-strong);
2076
+ }
2077
+
2018
2078
  /* loading */
2019
2079
  .spinner {
2020
2080
  animation: spin 700ms linear infinite;
@@ -2175,6 +2235,7 @@ var Button = class extends ThemeableElement {
2175
2235
  this._ariaForwarding = new AriaForwardingController(this, () => this.shadowRoot?.querySelector('[part="base"]'));
2176
2236
  this.variant = "primary";
2177
2237
  this.appearance = "filled";
2238
+ this.bordered = false;
2178
2239
  this.size = "md";
2179
2240
  this.disabled = false;
2180
2241
  this.loading = false;
@@ -2237,6 +2298,9 @@ __decorateClass([
2237
2298
  __decorateClass([
2238
2299
  n4({ reflect: true })
2239
2300
  ], Button.prototype, "appearance", 2);
2301
+ __decorateClass([
2302
+ n4({ type: Boolean, reflect: true })
2303
+ ], Button.prototype, "bordered", 2);
2240
2304
  __decorateClass([
2241
2305
  n4({ reflect: true })
2242
2306
  ], Button.prototype, "size", 2);
@@ -2327,7 +2391,7 @@ var o9 = e5(class extends i4 {
2327
2391
  var chipStyles = i`
2328
2392
  :host {
2329
2393
  display: inline-flex;
2330
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
2394
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
2331
2395
  vertical-align: middle;
2332
2396
  }
2333
2397
 
@@ -2581,7 +2645,7 @@ Chip = __decorateClass([
2581
2645
  var checkboxStyles = i`
2582
2646
  :host {
2583
2647
  display: inline-block;
2584
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
2648
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
2585
2649
  }
2586
2650
 
2587
2651
  .checkbox-wrapper {
@@ -2872,7 +2936,7 @@ Checkbox = __decorateClass([
2872
2936
  // src/components/dialog/dialog.styles.ts
2873
2937
  var dialogStyles = i`
2874
2938
  :host {
2875
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
2939
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
2876
2940
  }
2877
2941
 
2878
2942
  /* Backdrop */
@@ -3224,6 +3288,30 @@ var iconButtonStyles = i`
3224
3288
  --_active-bg: var(--lt-bg-info-subtle);
3225
3289
  }
3226
3290
 
3291
+ /* bordered — adds a border on top of whatever appearance is active; a no-op on
3292
+ outlined, which already sets the same border color. */
3293
+ :host([bordered][variant='primary']) {
3294
+ --_border-color: var(--lt-border-primary-strong);
3295
+ }
3296
+ :host([bordered][variant='secondary']) {
3297
+ --_border-color: var(--lt-border-secondary-strong);
3298
+ }
3299
+ :host([bordered][variant='neutral']) {
3300
+ --_border-color: var(--lt-border-strong);
3301
+ }
3302
+ :host([bordered][variant='success']) {
3303
+ --_border-color: var(--lt-border-success-strong);
3304
+ }
3305
+ :host([bordered][variant='warning']) {
3306
+ --_border-color: var(--lt-border-warning-strong);
3307
+ }
3308
+ :host([bordered][variant='error']) {
3309
+ --_border-color: var(--lt-border-error-strong);
3310
+ }
3311
+ :host([bordered][variant='info']) {
3312
+ --_border-color: var(--lt-border-info-strong);
3313
+ }
3314
+
3227
3315
  /* round shape */
3228
3316
  :host([round]) [part='base'] {
3229
3317
  border-radius: 50%;
@@ -3240,6 +3328,7 @@ var IconButton = class extends ThemeableElement {
3240
3328
  this.label = "";
3241
3329
  this.variant = "neutral";
3242
3330
  this.appearance = "ghost";
3331
+ this.bordered = false;
3243
3332
  this.size = "md";
3244
3333
  this.disabled = false;
3245
3334
  this.href = "";
@@ -3286,6 +3375,9 @@ __decorateClass([
3286
3375
  __decorateClass([
3287
3376
  n4({ reflect: true })
3288
3377
  ], IconButton.prototype, "appearance", 2);
3378
+ __decorateClass([
3379
+ n4({ type: Boolean, reflect: true })
3380
+ ], IconButton.prototype, "bordered", 2);
3289
3381
  __decorateClass([
3290
3382
  n4({ reflect: true })
3291
3383
  ], IconButton.prototype, "size", 2);
@@ -3312,7 +3404,7 @@ IconButton = __decorateClass([
3312
3404
  var surfaceStyles = i`
3313
3405
  :host {
3314
3406
  display: block;
3315
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
3407
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
3316
3408
  }
3317
3409
 
3318
3410
  .surface {
@@ -3402,6 +3494,8 @@ var Dialog = class extends ThemeableElement {
3402
3494
  this.closeOnEscape = true;
3403
3495
  this.uppercase = false;
3404
3496
  this.backdropBlur = false;
3497
+ this.elevation = "4";
3498
+ this.appearance = "filled";
3405
3499
  this.handleKeydown = (event) => {
3406
3500
  if (this.open && this.closeOnEscape && event.key === "Escape") {
3407
3501
  event.preventDefault();
@@ -3479,7 +3573,8 @@ var Dialog = class extends ThemeableElement {
3479
3573
  return T`
3480
3574
  <div class="backdrop" ?inert=${!this.open} @click=${this.handleBackdropClick} part="backdrop">
3481
3575
  <lt-surface
3482
- elevation="4"
3576
+ elevation=${this.elevation}
3577
+ appearance=${this.appearance}
3483
3578
  role="dialog"
3484
3579
  aria-modal="true"
3485
3580
  aria-labelledby="dialog-title"
@@ -3546,6 +3641,12 @@ __decorateClass([
3546
3641
  __decorateClass([
3547
3642
  n4({ type: Boolean, reflect: true, attribute: "backdrop-blur" })
3548
3643
  ], Dialog.prototype, "backdropBlur", 2);
3644
+ __decorateClass([
3645
+ n4({ reflect: true })
3646
+ ], Dialog.prototype, "elevation", 2);
3647
+ __decorateClass([
3648
+ n4({ reflect: true })
3649
+ ], Dialog.prototype, "appearance", 2);
3549
3650
  __decorateClass([
3550
3651
  e4("lt-surface")
3551
3652
  ], Dialog.prototype, "dialogElement", 2);
@@ -3557,7 +3658,7 @@ Dialog = __decorateClass([
3557
3658
  var listStyles = i`
3558
3659
  :host {
3559
3660
  display: block;
3560
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
3661
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
3561
3662
  --list-marker-color: var(--lt-color-neutral-500);
3562
3663
  }
3563
3664
 
@@ -3848,7 +3949,7 @@ List = __decorateClass([
3848
3949
  var radioStyles = i`
3849
3950
  :host {
3850
3951
  display: inline-block;
3851
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
3952
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
3852
3953
  }
3853
3954
 
3854
3955
  .radio-wrapper {
@@ -4121,7 +4222,7 @@ Radio = __decorateClass([
4121
4222
  var radioGroupStyles = i`
4122
4223
  :host {
4123
4224
  display: block;
4124
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
4225
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
4125
4226
  }
4126
4227
 
4127
4228
  .radio-group {
@@ -5678,7 +5779,7 @@ var selectStyles = [
5678
5779
  i`
5679
5780
  :host {
5680
5781
  display: inline-block;
5681
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
5782
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
5682
5783
  position: relative;
5683
5784
  width: 100%;
5684
5785
  }
@@ -6038,7 +6139,15 @@ var Select = class extends ThemeableElement {
6038
6139
  </span>
6039
6140
  <lt-icon class="icon-end" name="caret-down"></lt-icon>
6040
6141
  </div>
6041
- <lt-surface class="dropdown" popover="manual" elevation="2" role="listbox">
6142
+ <lt-surface
6143
+ class="dropdown"
6144
+ popover="manual"
6145
+ elevation="2"
6146
+ appearance="outlined"
6147
+ background="--lt-bg-default"
6148
+ role="listbox"
6149
+ part="listbox"
6150
+ >
6042
6151
  <div class="options-container">
6043
6152
  ${this.options.map(
6044
6153
  (option) => T`
@@ -6110,7 +6219,7 @@ Select = __decorateClass([
6110
6219
  var switchStyles = i`
6111
6220
  :host {
6112
6221
  display: inline-block;
6113
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
6222
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
6114
6223
  }
6115
6224
 
6116
6225
  .switch-wrapper {
@@ -6382,7 +6491,7 @@ Switch = __decorateClass([
6382
6491
  var tabStyles = i`
6383
6492
  :host {
6384
6493
  display: inline-block;
6385
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
6494
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
6386
6495
  }
6387
6496
 
6388
6497
  .tab {
@@ -6586,7 +6695,7 @@ TabPanel = __decorateClass([
6586
6695
  var tabGroupStyles = i`
6587
6696
  :host {
6588
6697
  display: block;
6589
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
6698
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
6590
6699
  }
6591
6700
 
6592
6701
  .tab-group {
@@ -6881,7 +6990,7 @@ var c5 = e5(class extends i4 {
6881
6990
  var tableStyles = i`
6882
6991
  :host {
6883
6992
  display: block;
6884
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
6993
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
6885
6994
  overflow: hidden;
6886
6995
  width: 100%;
6887
6996
  }
@@ -7418,7 +7527,7 @@ Table = __decorateClass([
7418
7527
  var textfieldStyles = i`
7419
7528
  :host {
7420
7529
  display: inline-block;
7421
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
7530
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
7422
7531
  width: 100%;
7423
7532
  }
7424
7533
 
@@ -7967,7 +8076,7 @@ var avatarStyles = i`
7967
8076
  }
7968
8077
 
7969
8078
  .initials {
7970
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
8079
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
7971
8080
  font-weight: 600;
7972
8081
  letter-spacing: 0.02em;
7973
8082
  line-height: 1;
@@ -8125,7 +8234,7 @@ Avatar = __decorateClass([
8125
8234
  var badgeStyles = i`
8126
8235
  :host {
8127
8236
  display: inline-flex;
8128
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
8237
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
8129
8238
  vertical-align: middle;
8130
8239
  }
8131
8240
 
@@ -8552,7 +8661,7 @@ var snackbarStyles = i`
8552
8661
  align-items: center;
8553
8662
  color: var(--lt-text-inverse);
8554
8663
  display: flex;
8555
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
8664
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
8556
8665
  font-size: 0.875rem;
8557
8666
  gap: var(--lt-spacing-2);
8558
8667
  line-height: 1.4;
@@ -8638,6 +8747,8 @@ var Snackbar = class extends ThemeableElement {
8638
8747
  this.closable = true;
8639
8748
  this.actionLabel = "";
8640
8749
  this.icon = "";
8750
+ this.elevation = "5";
8751
+ this.appearance = "filled";
8641
8752
  }
8642
8753
  /** Shows the snackbar and starts the auto-dismiss timer. */
8643
8754
  show() {
@@ -8690,7 +8801,7 @@ var Snackbar = class extends ThemeableElement {
8690
8801
  render() {
8691
8802
  const iconName = this._resolvedIcon;
8692
8803
  return T`
8693
- <lt-surface elevation="5" background=${Snackbar._bgMap[this.variant]}>
8804
+ <lt-surface elevation=${this.elevation} appearance=${this.appearance} background=${Snackbar._bgMap[this.variant]}>
8694
8805
  <div class="inner" role="status" aria-live="polite" part="base">
8695
8806
  ${iconName ? T`<lt-icon class="variant-icon" name=${iconName} part="icon"></lt-icon>` : ""}
8696
8807
  <span class="message" part="message">
@@ -8737,6 +8848,12 @@ __decorateClass([
8737
8848
  __decorateClass([
8738
8849
  n4({ reflect: true })
8739
8850
  ], Snackbar.prototype, "icon", 2);
8851
+ __decorateClass([
8852
+ n4({ reflect: true })
8853
+ ], Snackbar.prototype, "elevation", 2);
8854
+ __decorateClass([
8855
+ n4({ reflect: true })
8856
+ ], Snackbar.prototype, "appearance", 2);
8740
8857
  Snackbar = __decorateClass([
8741
8858
  t3("lt-snackbar")
8742
8859
  ], Snackbar);
@@ -8745,7 +8862,7 @@ Snackbar = __decorateClass([
8745
8862
  var alertStyles = i`
8746
8863
  :host {
8747
8864
  display: block;
8748
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
8865
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
8749
8866
  opacity: 1;
8750
8867
  transform: translateY(0);
8751
8868
  transition:
@@ -8963,7 +9080,7 @@ Alert = __decorateClass([
8963
9080
  var sliderStyles = i`
8964
9081
  :host {
8965
9082
  display: block;
8966
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
9083
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
8967
9084
  width: 100%;
8968
9085
  }
8969
9086
 
@@ -9229,7 +9346,7 @@ var dropdownStyles = [
9229
9346
  i`
9230
9347
  :host {
9231
9348
  display: inline-block;
9232
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
9349
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
9233
9350
  }
9234
9351
 
9235
9352
  .trigger-wrap {
@@ -9244,6 +9361,7 @@ var dropdownStyles = [
9244
9361
 
9245
9362
  lt-surface.menu::part(surface) {
9246
9363
  overflow: hidden;
9364
+ padding-block: var(--lt-dropdown-menu-padding, var(--lt-spacing-2));
9247
9365
  }
9248
9366
  `
9249
9367
  ];
@@ -9262,7 +9380,7 @@ var dropdownItemStyles = i`
9262
9380
  color: var(--lt-text-default);
9263
9381
  cursor: pointer;
9264
9382
  display: flex;
9265
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
9383
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
9266
9384
  font-size: 0.875rem;
9267
9385
  gap: var(--lt-spacing-2);
9268
9386
  padding: var(--lt-spacing-2) var(--lt-spacing-4);
@@ -9938,7 +10056,7 @@ var breadcrumbItemStyles = i`
9938
10056
  :host {
9939
10057
  align-items: center;
9940
10058
  display: inline-flex;
9941
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
10059
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
9942
10060
  font-size: 0.875rem;
9943
10061
  }
9944
10062
 
@@ -10093,7 +10211,7 @@ var dividerStyles = i`
10093
10211
 
10094
10212
  [part='label'] {
10095
10213
  color: var(--lt-text-subtle);
10096
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
10214
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
10097
10215
  font-size: 0.75rem;
10098
10216
  font-weight: 600;
10099
10217
  padding-inline: var(--lt-spacing-3);
@@ -10396,28 +10514,28 @@ var sidepanelStyles = i`
10396
10514
  inset-block: 0;
10397
10515
  left: 0;
10398
10516
  transform: translateX(-100%);
10399
- box-shadow: 4px 0 24px rgba(0, 0, 0, 0.12);
10517
+ box-shadow: var(--lt-sidepanel-shadow, 4px 0 24px rgba(0, 0, 0, 0.12));
10400
10518
  }
10401
10519
 
10402
10520
  :host([anchor='right']) [part='panel'] {
10403
10521
  inset-block: 0;
10404
10522
  right: 0;
10405
10523
  transform: translateX(100%);
10406
- box-shadow: -4px 0 24px rgba(0, 0, 0, 0.12);
10524
+ box-shadow: var(--lt-sidepanel-shadow, -4px 0 24px rgba(0, 0, 0, 0.12));
10407
10525
  }
10408
10526
 
10409
10527
  :host([anchor='top']) [part='panel'] {
10410
10528
  inset-inline: 0;
10411
10529
  top: 0;
10412
10530
  transform: translateY(-100%);
10413
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.12);
10531
+ box-shadow: var(--lt-sidepanel-shadow, 0 4px 24px rgba(0, 0, 0, 0.12));
10414
10532
  }
10415
10533
 
10416
10534
  :host([anchor='bottom']) [part='panel'] {
10417
10535
  inset-inline: 0;
10418
10536
  bottom: 0;
10419
10537
  transform: translateY(100%);
10420
- box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.12);
10538
+ box-shadow: var(--lt-sidepanel-shadow, 0 -4px 24px rgba(0, 0, 0, 0.12));
10421
10539
  }
10422
10540
 
10423
10541
  /* ── Open state — must come after anchors to win the cascade ────────────── */
@@ -10458,6 +10576,7 @@ var sidepanelStyles = i`
10458
10576
  .body {
10459
10577
  flex: 1;
10460
10578
  overflow-y: auto;
10579
+ padding: var(--lt-spacing-5);
10461
10580
  }
10462
10581
 
10463
10582
  /* ── Reduced motion ─────────────────────────────────────────────────────── */
@@ -10698,7 +10817,7 @@ Image = __decorateClass([
10698
10817
  var paginationStyles = i`
10699
10818
  :host {
10700
10819
  display: inline-flex;
10701
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
10820
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
10702
10821
  }
10703
10822
 
10704
10823
  nav {
@@ -10863,7 +10982,7 @@ Pagination = __decorateClass([
10863
10982
  var datepickerStyles = i`
10864
10983
  :host {
10865
10984
  display: block;
10866
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
10985
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
10867
10986
  }
10868
10987
 
10869
10988
  .wrapper {
@@ -11088,7 +11207,7 @@ var import_icons16 = require("@latty-ds/icons");
11088
11207
  var calendarStyles = i`
11089
11208
  :host {
11090
11209
  display: inline-block;
11091
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
11210
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
11092
11211
  }
11093
11212
 
11094
11213
  .calendar {
@@ -12002,7 +12121,7 @@ var dateInputStyles = [
12002
12121
  i`
12003
12122
  :host {
12004
12123
  display: block;
12005
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
12124
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
12006
12125
  }
12007
12126
 
12008
12127
  .wrapper {
@@ -12352,7 +12471,7 @@ var comboboxStyles = [
12352
12471
  i`
12353
12472
  :host {
12354
12473
  display: block;
12355
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
12474
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
12356
12475
  position: relative;
12357
12476
  }
12358
12477
 
@@ -12741,7 +12860,7 @@ Combobox = __decorateClass([
12741
12860
  var colorInputStyles = i`
12742
12861
  :host {
12743
12862
  display: inline-block;
12744
- font-family: var(--lt-typography-fontFamily, 'Hanken Grotesk', sans-serif);
12863
+ font-family: var(--lt-typography-fontFamilyPrimary, 'Hanken Grotesk', sans-serif);
12745
12864
  width: 100%;
12746
12865
  }
12747
12866