@optimum-intelligence/opti-ui 0.7.2 → 0.7.3

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 (53) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/components/app-shell/AppShell.d.ts +12 -3
  3. package/dist/components/app-shell/AppShell.js +45 -26
  4. package/dist/components/app-shell/AppShell.js.map +1 -1
  5. package/dist/components/data-table/DataTable.d.ts +25 -4
  6. package/dist/components/data-table/DataTable.js +238 -90
  7. package/dist/components/data-table/DataTable.js.map +1 -1
  8. package/dist/components/data-table/DataTableContent.d.ts +6 -1
  9. package/dist/components/data-table/DataTableContent.js +306 -409
  10. package/dist/components/data-table/DataTableContent.js.map +1 -1
  11. package/dist/components/data-table/DataTableFilters.d.ts +6 -1
  12. package/dist/components/data-table/DataTableFilters.js +65 -45
  13. package/dist/components/data-table/DataTableFilters.js.map +1 -1
  14. package/dist/components/data-table/DataTableRow.js +2 -0
  15. package/dist/components/data-table/DataTableRow.js.map +1 -1
  16. package/dist/components/data-table/types.d.ts +14 -1
  17. package/dist/components/data-table/useDataTable.js +2 -0
  18. package/dist/components/data-table/useDataTable.js.map +1 -1
  19. package/dist/components/drawer/Drawer.d.ts +7 -4
  20. package/dist/components/drawer/Drawer.js +2 -1
  21. package/dist/components/drawer/Drawer.js.map +1 -1
  22. package/dist/components/map/Map.d.ts +30 -6
  23. package/dist/components/map/Map.js +387 -271
  24. package/dist/components/map/Map.js.map +1 -1
  25. package/dist/components/stat-card/StatCard.d.ts +2 -2
  26. package/dist/components/stat-card/StatCard.js +1 -1
  27. package/dist/components/stat-card/StatCard.js.map +1 -1
  28. package/dist/components/stepper/Stepper.d.ts +7 -1
  29. package/dist/components/stepper/Stepper.js +46 -27
  30. package/dist/components/stepper/Stepper.js.map +1 -1
  31. package/dist/components/table/Table.d.ts +1 -1
  32. package/dist/components/table/Table.js +3 -1
  33. package/dist/components/table/Table.js.map +1 -1
  34. package/dist/components/tabs/Tabs.d.ts +4 -1
  35. package/dist/components/tabs/Tabs.js +33 -23
  36. package/dist/components/tabs/Tabs.js.map +1 -1
  37. package/dist/components/toggle/Toggle.d.ts +1 -1
  38. package/dist/components/toggle/Toggle.js.map +1 -1
  39. package/dist/components.json +101 -29
  40. package/dist/icons/index.d.ts +8 -0
  41. package/dist/icons/index.js +11 -1
  42. package/dist/icons/index.js.map +1 -1
  43. package/dist/index.js +2 -2
  44. package/dist/llms-full.txt +48 -19
  45. package/dist/llms.txt +7 -7
  46. package/dist/opti-ui.css +380 -29
  47. package/dist/utils/media.d.ts +4 -0
  48. package/dist/utils/media.js +34 -0
  49. package/dist/utils/media.js.map +1 -0
  50. package/dist/utils/scroll-fade.d.ts +9 -0
  51. package/dist/utils/scroll-fade.js +45 -0
  52. package/dist/utils/scroll-fade.js.map +1 -0
  53. package/package.json +1 -1
package/dist/opti-ui.css CHANGED
@@ -1,3 +1,4 @@
1
+ @charset "UTF-8";
1
2
  @layer maplibre, oui.tokens, oui.base, oui.components;
2
3
  @layer oui.tokens {
3
4
  :root {
@@ -67,6 +68,13 @@
67
68
  --oui-z-toast: 120;
68
69
  --oui-z-tooltip: 130;
69
70
  }
71
+ @media (pointer: coarse) {
72
+ :root {
73
+ --oui-control-height-sm: 2.5rem;
74
+ --oui-control-height-md: 2.75rem;
75
+ --oui-control-height-lg: 3rem;
76
+ }
77
+ }
70
78
  :root,
71
79
  .oui-theme,
72
80
  [data-oui-theme] {
@@ -711,6 +719,12 @@
711
719
  box-shadow: none;
712
720
  color: var(--_fg);
713
721
  }
722
+ .oui-navbar[data-collapsed] .oui-toggle-group[data-variant=segmented] {
723
+ align-self: center;
724
+ }
725
+ .oui-navbar[data-collapsed] .oui-toggle-group[data-variant=segmented] > .oui-toggle:not([data-pressed]) {
726
+ display: none;
727
+ }
714
728
  .oui-navbar[data-collapsed] .oui-navbar__toggle svg,
715
729
  .oui-navbar[data-peek] .oui-navbar__toggle svg {
716
730
  transform: rotate(180deg);
@@ -939,6 +953,13 @@
939
953
  outline: 2px solid var(--oui-color-on-inverse);
940
954
  outline-offset: -2px;
941
955
  }
956
+ @media (pointer: coarse) {
957
+ .oui-app-shell__menu-button,
958
+ .oui-app-shell__drawer-close {
959
+ width: 2.75rem;
960
+ height: 2.75rem;
961
+ }
962
+ }
942
963
  .oui-app-shell__drawer-close {
943
964
  position: absolute;
944
965
  top: 1.35rem;
@@ -1018,9 +1039,13 @@
1018
1039
  gap: var(--oui-space-4);
1019
1040
  }
1020
1041
  .oui-grid {
1042
+ --_cols: 3;
1043
+ --_half: 2;
1044
+ --_gap: var(--oui-space-6);
1045
+ --_min: var(--oui-grid-min-item-width, 12rem);
1021
1046
  display: grid;
1022
- grid-template-columns: repeat(var(--_cols, 3), minmax(0, 1fr));
1023
- gap: var(--_gap, var(--oui-space-6));
1047
+ grid-template-columns: repeat(auto-fill, minmax(max(min(var(--_min), 100%), (100% - (var(--_cols) - 1) * var(--_gap)) / var(--_cols), min((100% - (var(--_half) - 1) * var(--_gap)) / var(--_half), (var(--_cols) * var(--_min) + (var(--_cols) - 1) * var(--_gap) - 100%) * 1000)), 1fr));
1048
+ gap: var(--_gap);
1024
1049
  min-width: 0;
1025
1050
  }
1026
1051
  .oui-grid > * {
@@ -1028,21 +1053,35 @@
1028
1053
  }
1029
1054
  .oui-grid[data-columns="1"] {
1030
1055
  --_cols: 1;
1056
+ --_half: 1;
1031
1057
  }
1032
1058
  .oui-grid[data-columns="2"] {
1033
1059
  --_cols: 2;
1060
+ --_half: 1;
1034
1061
  }
1035
1062
  .oui-grid[data-columns="3"] {
1036
1063
  --_cols: 3;
1064
+ --_half: 2;
1037
1065
  }
1038
1066
  .oui-grid[data-columns="4"] {
1039
1067
  --_cols: 4;
1068
+ --_half: 2;
1040
1069
  }
1041
1070
  .oui-grid[data-columns="5"] {
1042
1071
  --_cols: 5;
1072
+ --_half: 3;
1043
1073
  }
1044
1074
  .oui-grid[data-columns="6"] {
1045
1075
  --_cols: 6;
1076
+ --_half: 3;
1077
+ }
1078
+ .oui-grid[data-columns="4"], .oui-grid[data-columns="5"], .oui-grid[data-columns="6"] {
1079
+ --_min: var(--oui-grid-min-item-width, 11rem);
1080
+ }
1081
+ @media (max-width: 640px) {
1082
+ .oui-grid[data-columns="4"], .oui-grid[data-columns="5"], .oui-grid[data-columns="6"] {
1083
+ --_min: var(--oui-grid-min-item-width, 9rem);
1084
+ }
1046
1085
  }
1047
1086
  .oui-grid[data-gap=sm] {
1048
1087
  --_gap: var(--oui-space-4);
@@ -1050,16 +1089,6 @@
1050
1089
  .oui-grid[data-gap=lg] {
1051
1090
  --_gap: var(--oui-space-10);
1052
1091
  }
1053
- @media (max-width: 1200px) {
1054
- .oui-grid[data-columns="4"], .oui-grid[data-columns="5"], .oui-grid[data-columns="6"] {
1055
- --_cols: 2;
1056
- }
1057
- }
1058
- @media (max-width: 900px) {
1059
- .oui-grid:not([data-columns="1"]) {
1060
- --_cols: 1;
1061
- }
1062
- }
1063
1092
  }
1064
1093
  @layer oui.components {
1065
1094
  .oui-avatar {
@@ -1799,12 +1828,14 @@
1799
1828
  }
1800
1829
  .oui-card__header {
1801
1830
  display: flex;
1831
+ flex-wrap: wrap;
1802
1832
  align-items: flex-start;
1803
1833
  justify-content: space-between;
1804
- gap: 0.75rem;
1834
+ gap: 0.5rem 0.75rem;
1805
1835
  min-width: 0;
1806
1836
  }
1807
1837
  .oui-card__header > :not(.oui-card__actions) {
1838
+ flex: 1 1 12rem;
1808
1839
  min-width: 0;
1809
1840
  }
1810
1841
  .oui-card__title {
@@ -1823,7 +1854,7 @@
1823
1854
  }
1824
1855
  .oui-card__actions {
1825
1856
  display: flex;
1826
- flex-shrink: 0;
1857
+ flex-wrap: wrap;
1827
1858
  align-items: center;
1828
1859
  gap: 0.15rem;
1829
1860
  margin: -0.35rem -0.35rem 0 auto;
@@ -2603,6 +2634,35 @@
2603
2634
  flex: 1 1 14rem;
2604
2635
  max-width: 22rem;
2605
2636
  }
2637
+ .oui-data-table__toolbar[data-layout=narrow] {
2638
+ flex-direction: column;
2639
+ align-items: stretch;
2640
+ gap: var(--oui-space-4);
2641
+ }
2642
+ .oui-data-table__toolbar[data-layout=narrow] .oui-data-table__actions {
2643
+ flex-wrap: nowrap;
2644
+ justify-content: space-between;
2645
+ margin-left: 0;
2646
+ }
2647
+ .oui-data-table__toolbar[data-layout=narrow] .oui-data-table__summary {
2648
+ margin-right: auto;
2649
+ }
2650
+ .oui-data-table__toolbar-row {
2651
+ display: flex;
2652
+ align-items: center;
2653
+ gap: var(--oui-space-4);
2654
+ }
2655
+ .oui-data-table__toolbar-row > .oui-input-group {
2656
+ flex: 1;
2657
+ min-width: 0;
2658
+ }
2659
+ .oui-data-table__toolbar-row > :only-child {
2660
+ margin-left: auto;
2661
+ }
2662
+ .oui-data-table__sheet-trigger[data-active] {
2663
+ --_border: var(--oui-color-accent);
2664
+ --_bg: var(--oui-color-accent-subtle);
2665
+ }
2606
2666
  .oui-data-table__filters {
2607
2667
  display: flex;
2608
2668
  flex-wrap: wrap;
@@ -2610,31 +2670,71 @@
2610
2670
  gap: 0.5rem;
2611
2671
  min-width: 0;
2612
2672
  }
2613
- .oui-data-table .oui-data-table__filter {
2673
+ .oui-data-table__filters[data-stacked] {
2674
+ flex-direction: column;
2675
+ align-items: stretch;
2676
+ gap: var(--oui-space-8);
2677
+ }
2678
+ .oui-data-table__filters[data-stacked] > .oui-data-table__filter,
2679
+ .oui-data-table__filters[data-stacked] .oui-data-table__filter-field > .oui-data-table__filter {
2680
+ width: 100%;
2681
+ }
2682
+ .oui-data-table__filters[data-stacked] .oui-select__trigger.oui-data-table__filter {
2683
+ justify-content: flex-start;
2684
+ }
2685
+ .oui-data-table__filters[data-stacked] .oui-select__trigger.oui-data-table__filter .oui-select__icon {
2686
+ margin-left: auto;
2687
+ }
2688
+ .oui-data-table__filter-field {
2689
+ display: grid;
2690
+ gap: var(--oui-space-3);
2691
+ }
2692
+ .oui-data-table__filter-heading {
2693
+ color: var(--oui-color-text-muted);
2694
+ font-size: var(--oui-font-size-2xs);
2695
+ font-weight: var(--oui-font-weight-bold);
2696
+ letter-spacing: 0.08em;
2697
+ text-transform: uppercase;
2698
+ }
2699
+ .oui-data-table__sheet .oui-drawer__footer {
2700
+ flex-wrap: nowrap;
2701
+ }
2702
+ .oui-data-table__sheet-done {
2703
+ flex: 1;
2704
+ }
2705
+ .oui-data-table__sheet-extra {
2706
+ display: flex;
2707
+ flex-wrap: wrap;
2708
+ gap: var(--oui-space-4);
2709
+ margin-top: var(--oui-space-10);
2710
+ padding-top: var(--oui-space-8);
2711
+ border-top: 1px solid var(--oui-color-border-subtle);
2712
+ }
2713
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__filter {
2614
2714
  width: auto;
2615
2715
  min-width: 0;
2616
2716
  font-size: var(--oui-font-size-sm);
2617
2717
  font-weight: var(--oui-font-weight-medium);
2618
2718
  }
2619
- .oui-data-table .oui-data-table__filter.oui-toggle {
2719
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__filter.oui-toggle {
2620
2720
  border-width: var(--oui-control-border-width);
2621
2721
  }
2622
- .oui-data-table .oui-data-table__filter.oui-select__trigger {
2722
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__filter.oui-select__trigger {
2623
2723
  gap: 0.4rem;
2624
2724
  }
2625
- .oui-data-table .oui-data-table__filter .oui-date-picker__trigger {
2725
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__filter .oui-date-picker__trigger {
2626
2726
  font-size: inherit;
2627
2727
  }
2628
- .oui-data-table .oui-data-table__filter .oui-date-picker__trigger[data-placeholder] .oui-date-picker__value {
2728
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__filter .oui-date-picker__trigger[data-placeholder] .oui-date-picker__value {
2629
2729
  color: var(--oui-color-text-muted);
2630
2730
  }
2631
- .oui-data-table .oui-data-table__filter[data-active],
2632
- .oui-data-table .oui-data-table__filter .oui-date-picker__trigger:not([data-placeholder]) {
2731
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__filter[data-active],
2732
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__filter .oui-date-picker__trigger:not([data-placeholder]) {
2633
2733
  border-color: var(--oui-color-accent);
2634
2734
  background: var(--oui-color-accent-subtle);
2635
2735
  color: var(--oui-color-text-strong);
2636
2736
  }
2637
- .oui-data-table .oui-data-table__chips > .oui-toggle:has(> .oui-badge) {
2737
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__chips > .oui-toggle:has(> .oui-badge) {
2638
2738
  height: auto;
2639
2739
  min-width: 0;
2640
2740
  padding: 0;
@@ -2642,18 +2742,18 @@
2642
2742
  border-radius: var(--oui-radius-pill);
2643
2743
  background: transparent;
2644
2744
  }
2645
- .oui-data-table .oui-data-table__chips > .oui-toggle:has(> .oui-badge) > .oui-badge {
2745
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__chips > .oui-toggle:has(> .oui-badge) > .oui-badge {
2646
2746
  transition: border-color var(--oui-duration-fast) var(--oui-ease);
2647
2747
  }
2648
2748
  @media (hover: hover) {
2649
- .oui-data-table .oui-data-table__chips > .oui-toggle:has(> .oui-badge):hover:not([data-disabled], [data-pressed]) {
2749
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__chips > .oui-toggle:has(> .oui-badge):hover:not([data-disabled], [data-pressed]) {
2650
2750
  border-color: transparent;
2651
2751
  }
2652
- .oui-data-table .oui-data-table__chips > .oui-toggle:has(> .oui-badge):hover:not([data-disabled], [data-pressed]) > .oui-badge {
2752
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__chips > .oui-toggle:has(> .oui-badge):hover:not([data-disabled], [data-pressed]) > .oui-badge {
2653
2753
  border-color: var(--_tone-border);
2654
2754
  }
2655
2755
  }
2656
- .oui-data-table .oui-data-table__chips > .oui-toggle:has(> .oui-badge)[data-pressed] > .oui-badge {
2756
+ :is(.oui-data-table, .oui-data-table__sheet) .oui-data-table__chips > .oui-toggle:has(> .oui-badge)[data-pressed] > .oui-badge {
2657
2757
  border-color: var(--_tone);
2658
2758
  box-shadow: inset 0 0 0 0.5px var(--_tone);
2659
2759
  }
@@ -2709,6 +2809,59 @@
2709
2809
  .oui-data-table .oui-table__cell[data-muted] {
2710
2810
  color: var(--oui-color-text-muted);
2711
2811
  }
2812
+ .oui-data-table .oui-table :is(.oui-table__cell, .oui-table__head)[data-nowrap] {
2813
+ overflow-wrap: normal;
2814
+ white-space: nowrap;
2815
+ }
2816
+ .oui-data-table .oui-table[data-sticky-column] {
2817
+ --_check-width: 2.25rem;
2818
+ }
2819
+ .oui-data-table .oui-table[data-sticky-column] .oui-table__row {
2820
+ --_tint: transparent;
2821
+ }
2822
+ .oui-data-table .oui-table[data-sticky-column] .oui-table__row > :first-child,
2823
+ .oui-data-table .oui-table[data-sticky-column] .oui-table__row > .oui-data-table__check + * {
2824
+ position: sticky;
2825
+ left: 0;
2826
+ z-index: 1;
2827
+ background-color: var(--oui-color-surface);
2828
+ background-image: linear-gradient(var(--_tint), var(--_tint));
2829
+ }
2830
+ .oui-data-table .oui-table[data-sticky-column] .oui-table__row > .oui-data-table__check + * {
2831
+ left: var(--_check-width);
2832
+ }
2833
+ .oui-data-table .oui-table[data-sticky-column] .oui-table__header .oui-table__row > :is(:first-child, .oui-data-table__check + *) {
2834
+ z-index: 2;
2835
+ }
2836
+ .oui-data-table .oui-table[data-sticky-column][data-striped] .oui-table__body .oui-table__row:nth-child(even) {
2837
+ --_tint: var(--oui-color-surface-muted);
2838
+ }
2839
+ .oui-data-table .oui-table[data-sticky-column][data-hoverable] .oui-table__body .oui-table__row:hover {
2840
+ --_tint: var(--oui-color-surface-hover);
2841
+ }
2842
+ .oui-data-table .oui-table[data-sticky-column] .oui-table__row[data-tone]:not([data-selected], :hover) {
2843
+ --_tint: var(--_tone-subtle);
2844
+ }
2845
+ .oui-data-table .oui-table[data-sticky-column] .oui-table__row[data-clickable]:hover,
2846
+ .oui-data-table .oui-table[data-sticky-column] .oui-table__row:is([data-selected], [data-editing]) {
2847
+ --_tint: var(--oui-color-accent-subtle);
2848
+ }
2849
+ .oui-data-table .oui-table-wrap:has(> .oui-table[data-sticky-column])[data-fade-start] {
2850
+ mask-image: none;
2851
+ }
2852
+ .oui-data-table .oui-table-wrap:has(> .oui-table[data-sticky-column])[data-fade-start] .oui-table__row > :is(:first-child:not(.oui-data-table__check), .oui-data-table__check + *)::after {
2853
+ content: "";
2854
+ position: absolute;
2855
+ top: 0;
2856
+ right: -0.5rem;
2857
+ bottom: 0;
2858
+ width: 0.5rem;
2859
+ background: linear-gradient(to right, color-mix(in srgb, var(--oui-color-text-strong) 12%, transparent), transparent);
2860
+ pointer-events: none;
2861
+ }
2862
+ .oui-data-table .oui-table-wrap:has(> .oui-table[data-sticky-column])[data-fade-start][data-fade-end] {
2863
+ mask-image: linear-gradient(to left, transparent, #000 var(--_fade));
2864
+ }
2712
2865
  .oui-data-table .oui-table__row[data-tone] {
2713
2866
  --_tone: var(--oui-color-accent);
2714
2867
  --_tone-subtle: var(--oui-color-accent-subtle);
@@ -3081,6 +3234,11 @@
3081
3234
  overflow-wrap: anywhere;
3082
3235
  white-space: pre-wrap;
3083
3236
  }
3237
+ @media (max-width: 640px) {
3238
+ .oui-description-list[data-layout=grid] {
3239
+ column-gap: var(--oui-space-8);
3240
+ }
3241
+ }
3084
3242
  @media (max-width: 440px) {
3085
3243
  .oui-description-list[data-layout=rows] > .oui-description-list__item {
3086
3244
  grid-template-columns: 1fr;
@@ -3354,10 +3512,34 @@
3354
3512
  .oui-drawer[data-side=left][data-starting-style], .oui-drawer[data-side=left][data-ending-style] {
3355
3513
  transform: translateX(-100%);
3356
3514
  }
3515
+ .oui-drawer[data-side=bottom] {
3516
+ top: auto;
3517
+ right: 0;
3518
+ left: 0;
3519
+ width: 100%;
3520
+ height: auto;
3521
+ max-height: 85dvh;
3522
+ border-top-width: 1px;
3523
+ border-radius: var(--oui-radius-card) var(--oui-radius-card) 0 0;
3524
+ }
3525
+ .oui-drawer[data-side=bottom][data-starting-style], .oui-drawer[data-side=bottom][data-ending-style] {
3526
+ transform: translateY(100%);
3527
+ }
3528
+ .oui-drawer[data-side=bottom] .oui-drawer__body {
3529
+ flex: 0 1 auto;
3530
+ }
3531
+ .oui-drawer[data-side=bottom] > .oui-drawer__body:last-child {
3532
+ padding-bottom: calc(var(--oui-drawer-padding, var(--_padding)) + env(safe-area-inset-bottom, 0px));
3533
+ }
3534
+ .oui-drawer[data-side=bottom] > .oui-drawer__footer {
3535
+ padding-bottom: calc(var(--oui-space-6) + env(safe-area-inset-bottom, 0px));
3536
+ }
3357
3537
  @media (max-width: 640px) {
3358
3538
  .oui-drawer {
3359
3539
  --_padding: var(--oui-space-8);
3360
- border-radius: 0 !important;
3540
+ }
3541
+ .oui-drawer:not([data-side=bottom]) {
3542
+ border-radius: 0;
3361
3543
  }
3362
3544
  }
3363
3545
  .oui-drawer__header {
@@ -4156,7 +4338,17 @@
4156
4338
  gap: var(--oui-space-4);
4157
4339
  max-width: calc(100% - 2 * var(--oui-space-6));
4158
4340
  max-height: calc(100% - 2 * var(--oui-space-6));
4159
- overflow: auto;
4341
+ min-height: 0;
4342
+ pointer-events: none;
4343
+ }
4344
+ .oui-map__overlay > * {
4345
+ flex-shrink: 0;
4346
+ max-width: 100%;
4347
+ pointer-events: auto;
4348
+ }
4349
+ .oui-map__overlay > .oui-map-legend {
4350
+ flex-shrink: 1;
4351
+ min-height: 0;
4160
4352
  }
4161
4353
  .oui-map__overlay[data-position^=top] {
4162
4354
  top: var(--oui-space-6);
@@ -4203,6 +4395,33 @@
4203
4395
  color: var(--oui-color-text);
4204
4396
  font-size: var(--oui-font-size-sm);
4205
4397
  }
4398
+ .oui-map-legend[data-size=sm] {
4399
+ --oui-map-legend-max-height: 10rem;
4400
+ gap: 0;
4401
+ min-width: 8rem;
4402
+ padding: var(--oui-space-2);
4403
+ font-size: var(--oui-font-size-xs);
4404
+ }
4405
+ .oui-map-legend[data-size=sm] .oui-map-legend__list {
4406
+ gap: 0;
4407
+ }
4408
+ .oui-map-legend[data-size=sm] .oui-map-legend__entry {
4409
+ gap: var(--oui-space-3);
4410
+ padding: 0.15rem var(--oui-space-2);
4411
+ }
4412
+ .oui-map-legend[data-size=sm] .oui-map-legend__swatch {
4413
+ width: 0.5rem;
4414
+ height: 0.5rem;
4415
+ border-radius: 2px;
4416
+ }
4417
+ .oui-map-legend[data-size=sm] .oui-map-legend__count {
4418
+ font-size: var(--oui-font-size-2xs);
4419
+ }
4420
+ .oui-map-legend[data-size=sm] .oui-map-legend__visibility {
4421
+ width: 1.35rem;
4422
+ height: 1.35rem;
4423
+ font-size: 0.8rem;
4424
+ }
4206
4425
  .oui-map-legend__toggle-all {
4207
4426
  box-sizing: border-box;
4208
4427
  margin: 0;
@@ -4232,9 +4451,15 @@
4232
4451
  display: flex;
4233
4452
  flex-direction: column;
4234
4453
  gap: var(--oui-space-1);
4454
+ min-height: 0;
4455
+ max-height: var(--oui-map-legend-max-height, none);
4235
4456
  margin: 0;
4236
4457
  padding: 0;
4458
+ overflow-y: auto;
4459
+ overscroll-behavior: contain;
4237
4460
  list-style: none;
4461
+ scrollbar-width: thin;
4462
+ scrollbar-color: var(--oui-color-border-hover) transparent;
4238
4463
  }
4239
4464
  .oui-map-legend__item {
4240
4465
  display: flex;
@@ -4330,6 +4555,10 @@
4330
4555
  color: var(--oui-color-text);
4331
4556
  }
4332
4557
  }
4558
+ .oui-map .oui-map__layer-switch {
4559
+ --_border: var(--oui-color-border);
4560
+ box-shadow: var(--oui-shadow-raised);
4561
+ }
4333
4562
  }
4334
4563
  @layer oui.components {
4335
4564
  .oui-menu__positioner {
@@ -5468,6 +5697,23 @@
5468
5697
  display: grid;
5469
5698
  gap: 0.6rem;
5470
5699
  }
5700
+ @media (max-width: 640px) {
5701
+ .oui-stat {
5702
+ gap: 0.35rem;
5703
+ }
5704
+ .oui-stat__label {
5705
+ font-size: var(--oui-font-size-xs);
5706
+ }
5707
+ .oui-stat__icon {
5708
+ display: none;
5709
+ }
5710
+ .oui-stat__value {
5711
+ font-size: var(--oui-stat-value-size, 1.35rem);
5712
+ }
5713
+ .oui-stat__footer {
5714
+ font-size: var(--oui-font-size-xs);
5715
+ }
5716
+ }
5471
5717
  }
5472
5718
  @layer oui.components {
5473
5719
  .oui-stepper {
@@ -5600,15 +5846,76 @@
5600
5846
  font-size: var(--oui-font-size-xs);
5601
5847
  line-height: 1.4;
5602
5848
  }
5849
+ .oui-stepper__count {
5850
+ display: none;
5851
+ }
5603
5852
  @media (max-width: 640px) {
5604
- .oui-stepper[data-orientation=horizontal] .oui-stepper__step:not([data-status=current]) .oui-stepper__text {
5853
+ .oui-stepper[data-orientation=horizontal] {
5854
+ position: relative;
5855
+ gap: 0.25rem;
5856
+ padding-top: calc(1.3em + 0.5rem);
5857
+ }
5858
+ .oui-stepper[data-orientation=horizontal] > .oui-stepper__step {
5859
+ flex: 1;
5860
+ position: static;
5861
+ gap: 0;
5862
+ }
5863
+ .oui-stepper[data-orientation=horizontal] > .oui-stepper__step::after {
5864
+ display: none;
5865
+ }
5866
+ .oui-stepper[data-orientation=horizontal] .oui-stepper__marker {
5867
+ width: 100%;
5868
+ height: 4px;
5869
+ border: 0;
5870
+ border-radius: 2px;
5871
+ background: var(--_line);
5872
+ box-shadow: none;
5873
+ font-size: 0;
5874
+ }
5875
+ .oui-stepper[data-orientation=horizontal] .oui-stepper__marker svg {
5876
+ display: none;
5877
+ }
5878
+ .oui-stepper[data-orientation=horizontal] [data-status=complete] > .oui-stepper__marker,
5879
+ .oui-stepper[data-orientation=horizontal] [data-status=current] > .oui-stepper__marker {
5880
+ background: var(--oui-color-accent);
5881
+ }
5882
+ .oui-stepper[data-orientation=horizontal] [data-status=error] > .oui-stepper__marker {
5883
+ background: var(--oui-color-danger);
5884
+ }
5885
+ .oui-stepper[data-orientation=horizontal] .oui-stepper__text {
5605
5886
  position: absolute;
5887
+ top: 0;
5888
+ right: 0;
5889
+ left: 0;
5890
+ display: flex;
5891
+ align-items: baseline;
5892
+ gap: 0.4rem;
5893
+ min-width: 0;
5894
+ }
5895
+ .oui-stepper[data-orientation=horizontal] .oui-stepper__step:not([data-status=current]) .oui-stepper__text {
5606
5896
  width: 1px;
5607
5897
  height: 1px;
5608
5898
  overflow: hidden;
5609
5899
  clip-path: inset(50%);
5610
5900
  white-space: nowrap;
5611
5901
  }
5902
+ .oui-stepper[data-orientation=horizontal] .oui-stepper__count {
5903
+ display: inline;
5904
+ flex-shrink: 0;
5905
+ color: var(--oui-color-text-muted);
5906
+ font-weight: var(--oui-font-weight-semibold);
5907
+ font-variant-numeric: tabular-nums;
5908
+ }
5909
+ .oui-stepper[data-orientation=horizontal] .oui-stepper__count::after {
5910
+ content: " ·";
5911
+ }
5912
+ .oui-stepper[data-orientation=horizontal] .oui-stepper__label {
5913
+ overflow: hidden;
5914
+ text-overflow: ellipsis;
5915
+ }
5916
+ .oui-stepper[data-orientation=horizontal] .oui-stepper__description {
5917
+ display: none;
5918
+ }
5612
5919
  }
5613
5920
  }
5614
5921
  @layer oui.components {
@@ -5617,6 +5924,16 @@
5617
5924
  min-width: 0;
5618
5925
  overflow-x: auto;
5619
5926
  overscroll-behavior-x: contain;
5927
+ --_fade: 2rem;
5928
+ }
5929
+ .oui-table-wrap[data-fade-start] {
5930
+ mask-image: linear-gradient(to right, transparent, #000 var(--_fade));
5931
+ }
5932
+ .oui-table-wrap[data-fade-end] {
5933
+ mask-image: linear-gradient(to left, transparent, #000 var(--_fade));
5934
+ }
5935
+ .oui-table-wrap[data-fade-start][data-fade-end] {
5936
+ mask-image: linear-gradient(to right, transparent, #000 var(--_fade), #000 calc(100% - var(--_fade)), transparent);
5620
5937
  }
5621
5938
  .oui-table {
5622
5939
  box-sizing: border-box;
@@ -5739,6 +6056,16 @@
5739
6056
  .oui-table__sort:hover svg, .oui-table__sort[data-active] svg {
5740
6057
  opacity: 1;
5741
6058
  }
6059
+ @media (pointer: coarse) {
6060
+ .oui-table__sort {
6061
+ position: relative;
6062
+ }
6063
+ .oui-table__sort::before {
6064
+ content: "";
6065
+ position: absolute;
6066
+ inset: -0.75rem -0.5rem;
6067
+ }
6068
+ }
5742
6069
  }
5743
6070
  @layer oui.components {
5744
6071
  .oui-tabs {
@@ -5761,8 +6088,23 @@
5761
6088
  display: flex;
5762
6089
  align-items: center;
5763
6090
  gap: 0.25rem;
6091
+ max-width: 100%;
5764
6092
  overflow-x: auto;
6093
+ overscroll-behavior-x: contain;
5765
6094
  scrollbar-width: none;
6095
+ --_fade: 1.5rem;
6096
+ }
6097
+ .oui-tabs__list[data-fade-start] {
6098
+ mask-image: linear-gradient(to right, transparent, #000 var(--_fade));
6099
+ }
6100
+ .oui-tabs__list[data-fade-end] {
6101
+ mask-image: linear-gradient(to left, transparent, #000 var(--_fade));
6102
+ }
6103
+ .oui-tabs__list[data-fade-start][data-fade-end] {
6104
+ mask-image: linear-gradient(to right, transparent, #000 var(--_fade), #000 calc(100% - var(--_fade)), transparent);
6105
+ }
6106
+ .oui-tabs__list::-webkit-scrollbar {
6107
+ display: none;
5766
6108
  }
5767
6109
  .oui-tabs__list[data-orientation=vertical] {
5768
6110
  flex-direction: column;
@@ -5817,6 +6159,11 @@
5817
6159
  padding: 0 0.7rem;
5818
6160
  font-size: var(--oui-font-size-sm);
5819
6161
  }
6162
+ @media (pointer: coarse) {
6163
+ [data-size=sm] > .oui-tabs__tab {
6164
+ height: 2.5rem;
6165
+ }
6166
+ }
5820
6167
  .oui-tabs__indicator {
5821
6168
  position: absolute;
5822
6169
  z-index: -1;
@@ -6330,6 +6677,10 @@
6330
6677
  display: inline-flex;
6331
6678
  align-items: center;
6332
6679
  gap: 0.4rem;
6680
+ max-width: 100%;
6681
+ }
6682
+ .oui-toggle-group[data-variant=outline] {
6683
+ flex-wrap: wrap;
6333
6684
  }
6334
6685
  .oui-toggle-group[data-full-width] {
6335
6686
  display: flex;
@@ -0,0 +1,4 @@
1
+ /** The library's one layout breakpoint: phones get their own layout at and below 640px. */
2
+ export declare const NARROW_SCREEN = "(max-width: 640px)";
3
+ /** Whether a media query matches, following changes. `false` during server rendering. */
4
+ export declare function useMediaQuery(query: string): boolean;
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import { c } from "react/compiler-runtime";
3
+ import * as React from "react";
4
+ //#region src/utils/media.ts
5
+ /** The library's one layout breakpoint: phones get their own layout at and below 640px. */
6
+ var NARROW_SCREEN = "(max-width: 640px)";
7
+ /** Whether a media query matches, following changes. `false` during server rendering. */
8
+ function useMediaQuery(query) {
9
+ const $ = c(3);
10
+ let t0;
11
+ let t1;
12
+ if ($[0] !== query) {
13
+ t0 = (notify) => {
14
+ const list = window.matchMedia(query);
15
+ list.addEventListener("change", notify);
16
+ return () => list.removeEventListener("change", notify);
17
+ };
18
+ t1 = () => window.matchMedia(query).matches;
19
+ $[0] = query;
20
+ $[1] = t0;
21
+ $[2] = t1;
22
+ } else {
23
+ t0 = $[1];
24
+ t1 = $[2];
25
+ }
26
+ return React.useSyncExternalStore(t0, t1, _temp);
27
+ }
28
+ function _temp() {
29
+ return false;
30
+ }
31
+ //#endregion
32
+ export { NARROW_SCREEN, useMediaQuery };
33
+
34
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","names":["React","NARROW_SCREEN","useMediaQuery","query","$","_c","t0","t1","notify","list","window","matchMedia","addEventListener","removeEventListener","matches","useSyncExternalStore","_temp","_c"],"sources":["../../src/utils/media.ts"],"sourcesContent":["import * as React from 'react';\n\n/** The library's one layout breakpoint: phones get their own layout at and below 640px. */\nexport const NARROW_SCREEN = '(max-width: 640px)';\n\n/** Whether a media query matches, following changes. `false` during server rendering. */\nexport function useMediaQuery(query: string) {\n return React.useSyncExternalStore(\n (notify) => {\n const list = window.matchMedia(query);\n list.addEventListener('change', notify);\n return () => list.removeEventListener('change', notify);\n },\n () => window.matchMedia(query).matches,\n () => false,\n );\n}\n"],"mappings":";;;;;AAGA,IAAaC,gBAAgB;;AAG7B,SAAOC,cAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAH,EAAA,OAAAD,OAAA;EAEHG,MAAAE,WAAA;GACE,MAAAC,OAAaC,OAAMC,WAAYR,KAAK;GACpCM,KAAIG,iBAAkB,UAAUJ,MAAM;GAAC,aAC1BC,KAAII,oBAAqB,UAAUL,MAAM;EAAC;EAEzDD,WAAMG,OAAMC,WAAYR,KAAK,CAAC,CAAAW;EAAQV,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAA;EAAAD,KAAAF,EAAA;EAAAG,KAAAH,EAAA;CAAA;CAAA,OANjCJ,MAAKe,qBACVT,IAKAC,IACAS,KACF;AAAC;AATI,SAAAA,QAAA;CAAA,OAQG;AAAK"}
@@ -0,0 +1,9 @@
1
+ import type * as React from 'react';
2
+ /**
3
+ * Callback ref for a sideways-scrolling element: sets `data-fade-start` and
4
+ * `data-fade-end` while content is cut off on that side, so CSS can fade the edge.
5
+ * Returns the cleanup that React 19 runs when the element goes away.
6
+ */
7
+ export declare function scrollFade(node: HTMLElement | null): (() => void) | undefined;
8
+ /** Combines refs (objects, or callbacks with or without a cleanup) into one callback ref. */
9
+ export declare function mergeRefs<T>(...refs: (React.Ref<T> | ((node: T | null) => void | (() => void)) | undefined)[]): (node: T | null) => () => void;