@optimum-intelligence/opti-ui 0.6.1 → 0.7.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.
package/dist/opti-ui.css CHANGED
@@ -1,4 +1,4 @@
1
- @layer oui.tokens, oui.base, oui.components;
1
+ @layer maplibre, oui.tokens, oui.base, oui.components;
2
2
  @layer oui.tokens {
3
3
  :root {
4
4
  --oui-font-body: 'Poppins', system-ui, -apple-system, 'Segoe UI', sans-serif;
@@ -35,11 +35,8 @@
35
35
  --oui-color-purple-text: #573591;
36
36
  --oui-color-pink: #c2479b;
37
37
  --oui-color-pink-text: #8c2f6f;
38
- --oui-color-chart-1: #63537d;
39
- --oui-color-chart-2: #271645;
40
- --oui-color-chart-3: #21856d;
41
- --oui-color-chart-4: #db6b2f;
42
- --oui-color-chart-5: #9d8fc0;
38
+ --oui-map-route-weight: 4;
39
+ --oui-map-dim-opacity: 0.35;
43
40
  --oui-radius-xs: 4px;
44
41
  --oui-radius-sm: 8px;
45
42
  --oui-radius-control: 10px;
@@ -122,6 +119,15 @@
122
119
  --oui-color-purple-border: color-mix(in srgb, var(--oui-color-purple) 26%, transparent);
123
120
  --oui-color-pink-subtle: color-mix(in srgb, var(--oui-color-pink) 10%, transparent);
124
121
  --oui-color-pink-border: color-mix(in srgb, var(--oui-color-pink) 26%, transparent);
122
+ --oui-color-chart-1: var(--oui-color-blue);
123
+ --oui-color-chart-2: var(--oui-color-warning);
124
+ --oui-color-chart-3: var(--oui-color-green);
125
+ --oui-color-chart-4: var(--oui-color-pink);
126
+ --oui-color-chart-5: var(--oui-color-cyan);
127
+ --oui-color-chart-6: var(--oui-color-purple);
128
+ --oui-color-chart-7: var(--oui-color-yellow);
129
+ --oui-color-chart-8: var(--oui-color-accent);
130
+ --oui-map-casing-color: var(--oui-color-surface);
125
131
  --oui-color-inverse: var(--oui-color-brand);
126
132
  --oui-color-on-inverse: #ffffff;
127
133
  --oui-color-on-inverse-muted: rgba(255, 255, 255, 0.72);
@@ -2334,7 +2340,7 @@
2334
2340
  font-weight: var(--oui-font-weight-medium);
2335
2341
  line-height: 1.3;
2336
2342
  outline: none;
2337
- cursor: default;
2343
+ cursor: pointer;
2338
2344
  user-select: none;
2339
2345
  transition: background-color var(--oui-duration-fast) var(--oui-ease), color var(--oui-duration-fast) var(--oui-ease);
2340
2346
  }
@@ -2476,7 +2482,7 @@
2476
2482
  font-weight: var(--oui-font-weight-medium);
2477
2483
  line-height: 1.3;
2478
2484
  outline: none;
2479
- cursor: default;
2485
+ cursor: pointer;
2480
2486
  user-select: none;
2481
2487
  transition: background-color var(--oui-duration-fast) var(--oui-ease), color var(--oui-duration-fast) var(--oui-ease);
2482
2488
  }
@@ -2986,7 +2992,7 @@
2986
2992
  font-weight: var(--oui-font-weight-medium);
2987
2993
  line-height: 1.3;
2988
2994
  outline: none;
2989
- cursor: default;
2995
+ cursor: pointer;
2990
2996
  user-select: none;
2991
2997
  transition: background-color var(--oui-duration-fast) var(--oui-ease), color var(--oui-duration-fast) var(--oui-ease);
2992
2998
  }
@@ -3896,6 +3902,421 @@
3896
3902
  vertical-align: -0.06em;
3897
3903
  }
3898
3904
  }
3905
+ @layer oui.components {
3906
+ .oui-map {
3907
+ box-sizing: border-box;
3908
+ margin: 0;
3909
+ font-family: var(--oui-font-body);
3910
+ -webkit-font-smoothing: antialiased;
3911
+ -moz-osx-font-smoothing: grayscale;
3912
+ position: relative;
3913
+ height: var(--oui-map-height, 24rem);
3914
+ min-height: 0;
3915
+ overflow: hidden;
3916
+ border-radius: var(--oui-map-radius, var(--oui-radius-card));
3917
+ background: var(--oui-color-surface-muted);
3918
+ color: var(--oui-color-text);
3919
+ isolation: isolate;
3920
+ }
3921
+ .oui-map .maplibregl-map {
3922
+ font: inherit;
3923
+ }
3924
+ .oui-map[data-expanded] {
3925
+ position: fixed;
3926
+ inset: 0;
3927
+ z-index: var(--oui-z-dialog);
3928
+ height: auto;
3929
+ border-radius: 0;
3930
+ }
3931
+ .oui-map .maplibregl-ctrl-group {
3932
+ overflow: hidden;
3933
+ border: 1px solid var(--oui-color-border);
3934
+ border-radius: var(--oui-radius-control);
3935
+ background: var(--oui-color-surface);
3936
+ box-shadow: var(--oui-shadow-raised);
3937
+ }
3938
+ .oui-map .maplibregl-ctrl-group button {
3939
+ width: var(--oui-control-height-sm);
3940
+ height: var(--oui-control-height-sm);
3941
+ color: var(--oui-color-text);
3942
+ }
3943
+ .oui-map .maplibregl-ctrl-group button:focus-visible {
3944
+ outline: var(--oui-focus-outline);
3945
+ outline-offset: -2px;
3946
+ }
3947
+ .oui-map .maplibregl-ctrl-group button + button {
3948
+ border-top: 1px solid var(--oui-color-border-subtle);
3949
+ }
3950
+ @media (hover: hover) {
3951
+ .oui-map .maplibregl-ctrl-group button:hover:not(:disabled) {
3952
+ background: var(--oui-color-surface-hover);
3953
+ }
3954
+ }
3955
+ .oui-map .maplibregl-ctrl-group .maplibregl-ctrl-icon {
3956
+ background: currentColor;
3957
+ mask: var(--_icon) center/1.4rem no-repeat;
3958
+ }
3959
+ .oui-map .maplibregl-ctrl-group .maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon {
3960
+ --_icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E");
3961
+ }
3962
+ .oui-map .maplibregl-ctrl-group .oui-map__expand .maplibregl-ctrl-icon {
3963
+ --_icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7'/%3E%3C/svg%3E");
3964
+ mask-size: 1.1rem;
3965
+ }
3966
+ .oui-map .maplibregl-ctrl-group .oui-map__expand[aria-pressed=true] .maplibregl-ctrl-icon {
3967
+ --_icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 14h6v6M20 10h-6V4M14 10l7-7M3 21l7-7'/%3E%3C/svg%3E");
3968
+ }
3969
+ .oui-map .maplibregl-ctrl-group .maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon {
3970
+ --_icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E");
3971
+ }
3972
+ .oui-map .maplibregl-ctrl-attrib {
3973
+ border-radius: var(--oui-radius-sm);
3974
+ background: color-mix(in srgb, var(--oui-color-surface) 85%, transparent);
3975
+ color: var(--oui-color-text-muted);
3976
+ font-size: var(--oui-font-size-2xs);
3977
+ }
3978
+ .oui-map .maplibregl-ctrl-attrib a {
3979
+ color: inherit;
3980
+ }
3981
+ .oui-map .maplibregl-ctrl-attrib.maplibregl-compact-show {
3982
+ padding-block: 2px;
3983
+ }
3984
+ .oui-map .maplibregl-ctrl-attrib-button {
3985
+ border-radius: var(--oui-radius-sm);
3986
+ background-color: var(--oui-color-surface);
3987
+ }
3988
+ .oui-map__popup {
3989
+ --_bg: var(--oui-color-surface);
3990
+ --_border: var(--oui-color-border);
3991
+ }
3992
+ .oui-map__popup .maplibregl-popup-content {
3993
+ box-sizing: border-box;
3994
+ margin: 0;
3995
+ font-family: var(--oui-font-body);
3996
+ -webkit-font-smoothing: antialiased;
3997
+ -moz-osx-font-smoothing: grayscale;
3998
+ border: 1px solid var(--oui-color-border);
3999
+ border-radius: var(--oui-popup-radius, var(--oui-radius-md));
4000
+ background: var(--oui-color-surface);
4001
+ background-clip: padding-box;
4002
+ box-shadow: var(--oui-shadow-overlay);
4003
+ color: var(--oui-color-text);
4004
+ font-size: var(--oui-font-size-md);
4005
+ outline: none;
4006
+ scrollbar-width: thin;
4007
+ scrollbar-color: var(--oui-color-border-hover) transparent;
4008
+ transform-origin: var(--transform-origin);
4009
+ transition: opacity var(--oui-duration-fast) var(--oui-ease), transform var(--oui-duration-fast) var(--oui-ease-out);
4010
+ }
4011
+ @media (prefers-reduced-motion: reduce) {
4012
+ .oui-map__popup .maplibregl-popup-content {
4013
+ transition-duration: 0.01ms !important;
4014
+ animation-duration: 0.01ms !important;
4015
+ animation-iteration-count: 1 !important;
4016
+ }
4017
+ }
4018
+ .oui-map__popup .maplibregl-popup-content[data-starting-style], .oui-map__popup .maplibregl-popup-content[data-ending-style] {
4019
+ opacity: 0;
4020
+ transform: scale(0.97);
4021
+ }
4022
+ .oui-map__popup .maplibregl-popup-content[data-ending-style] {
4023
+ transform: none;
4024
+ }
4025
+ .oui-map__popup .maplibregl-popup-content[data-instant] {
4026
+ transition: none;
4027
+ }
4028
+ .oui-map__popup .maplibregl-popup-content {
4029
+ padding: var(--oui-space-6);
4030
+ border-color: var(--_border);
4031
+ background: var(--_bg);
4032
+ font-size: var(--oui-font-size-sm);
4033
+ line-height: 1.45;
4034
+ }
4035
+ .oui-map__popup .maplibregl-popup-close-button {
4036
+ top: var(--oui-space-3);
4037
+ right: var(--oui-space-3);
4038
+ width: 1.5rem;
4039
+ height: 1.5rem;
4040
+ border-radius: var(--oui-radius-xs);
4041
+ color: var(--oui-color-text-muted);
4042
+ font-size: 1.1rem;
4043
+ line-height: 1;
4044
+ }
4045
+ .oui-map__popup .maplibregl-popup-close-button:focus-visible {
4046
+ outline: var(--oui-focus-outline);
4047
+ outline-offset: var(--oui-focus-outline-offset);
4048
+ }
4049
+ @media (hover: hover) {
4050
+ .oui-map__popup .maplibregl-popup-close-button:hover {
4051
+ background: var(--oui-color-surface-hover);
4052
+ color: var(--oui-color-text);
4053
+ }
4054
+ }
4055
+ .oui-map__popup:has(.maplibregl-popup-close-button) .maplibregl-popup-content {
4056
+ padding-right: var(--oui-space-12);
4057
+ }
4058
+ .oui-map__popup.maplibregl-popup-anchor-top .maplibregl-popup-tip, .oui-map__popup.maplibregl-popup-anchor-top-left .maplibregl-popup-tip, .oui-map__popup.maplibregl-popup-anchor-top-right .maplibregl-popup-tip {
4059
+ border-bottom-color: var(--_bg);
4060
+ }
4061
+ .oui-map__popup.maplibregl-popup-anchor-bottom .maplibregl-popup-tip, .oui-map__popup.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip, .oui-map__popup.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip {
4062
+ border-top-color: var(--_bg);
4063
+ }
4064
+ .oui-map__popup.maplibregl-popup-anchor-left .maplibregl-popup-tip {
4065
+ border-right-color: var(--_bg);
4066
+ }
4067
+ .oui-map__popup.maplibregl-popup-anchor-right .maplibregl-popup-tip {
4068
+ border-left-color: var(--_bg);
4069
+ }
4070
+ .oui-map__tooltip {
4071
+ --_bg: var(--oui-tooltip-bg, var(--oui-color-primary));
4072
+ --_border: transparent;
4073
+ pointer-events: none;
4074
+ }
4075
+ .oui-map__tooltip .maplibregl-popup-content {
4076
+ padding: 0.45rem 0.7rem;
4077
+ border-radius: var(--oui-radius-sm);
4078
+ box-shadow: var(--oui-shadow-raised);
4079
+ color: var(--oui-tooltip-fg, var(--oui-color-on-primary));
4080
+ font-size: var(--oui-font-size-xs);
4081
+ font-weight: var(--oui-font-weight-medium);
4082
+ }
4083
+ .oui-map__marker[data-dimmed] {
4084
+ opacity: var(--oui-map-dim-opacity);
4085
+ }
4086
+ .oui-map__marker {
4087
+ --_pin-color: var(--oui-color-accent);
4088
+ --_pin-size: 1.625rem;
4089
+ box-sizing: border-box;
4090
+ margin: 0;
4091
+ font-family: var(--oui-font-body);
4092
+ -webkit-font-smoothing: antialiased;
4093
+ -moz-osx-font-smoothing: grayscale;
4094
+ display: grid;
4095
+ place-items: center;
4096
+ box-sizing: border-box;
4097
+ width: var(--_pin-size);
4098
+ height: var(--_pin-size);
4099
+ border: 2px solid var(--oui-map-casing-color);
4100
+ border-radius: 50%;
4101
+ background: var(--_pin-color);
4102
+ box-shadow: var(--oui-shadow-raised);
4103
+ color: var(--oui-color-on-tone);
4104
+ font-size: var(--oui-font-size-xs);
4105
+ font-weight: var(--oui-font-weight-bold);
4106
+ font-variant-numeric: tabular-nums;
4107
+ line-height: 1;
4108
+ transition: transform var(--oui-duration-fast) var(--oui-ease);
4109
+ }
4110
+ .oui-map__marker[data-kind=depot] {
4111
+ --_pin-color: var(--oui-color-primary);
4112
+ --_pin-size: 2rem;
4113
+ border-radius: var(--oui-radius-sm);
4114
+ color: var(--oui-color-on-primary);
4115
+ font-size: 1rem;
4116
+ }
4117
+ .oui-map__marker[data-kind=vehicle] {
4118
+ --_pin-size: 1.25rem;
4119
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--_pin-color) 30%, transparent), var(--oui-shadow-raised);
4120
+ }
4121
+ .oui-map__marker[data-kind=point] {
4122
+ --_pin-size: 0.75rem;
4123
+ }
4124
+ .oui-map__marker[data-interactive] {
4125
+ cursor: pointer;
4126
+ }
4127
+ .oui-map__marker[data-selected] {
4128
+ transform: scale(1.2);
4129
+ outline: 2px solid var(--_pin-color);
4130
+ outline-offset: 2px;
4131
+ }
4132
+ @media (hover: hover) {
4133
+ .oui-map__marker[data-interactive]:hover {
4134
+ transform: scale(1.12);
4135
+ }
4136
+ }
4137
+ .oui-map__overlay {
4138
+ position: absolute;
4139
+ z-index: 3;
4140
+ display: flex;
4141
+ flex-direction: column;
4142
+ gap: var(--oui-space-4);
4143
+ max-width: calc(100% - 2 * var(--oui-space-6));
4144
+ max-height: calc(100% - 2 * var(--oui-space-6));
4145
+ overflow: auto;
4146
+ }
4147
+ .oui-map__overlay[data-position^=top] {
4148
+ top: var(--oui-space-6);
4149
+ }
4150
+ .oui-map__overlay[data-position^=bottom] {
4151
+ bottom: var(--oui-space-6);
4152
+ }
4153
+ .oui-map__overlay[data-position$=left] {
4154
+ left: var(--oui-space-6);
4155
+ align-items: flex-start;
4156
+ }
4157
+ .oui-map__overlay[data-position$=right] {
4158
+ right: var(--oui-space-6);
4159
+ align-items: flex-end;
4160
+ }
4161
+ .oui-map__empty {
4162
+ position: absolute;
4163
+ inset: 50% auto auto 50%;
4164
+ z-index: 3;
4165
+ translate: -50% -50%;
4166
+ padding: var(--oui-space-4) var(--oui-space-8);
4167
+ border-radius: var(--oui-radius-pill);
4168
+ background: var(--oui-color-surface);
4169
+ box-shadow: var(--oui-shadow-raised);
4170
+ color: var(--oui-color-text-muted);
4171
+ font-size: var(--oui-font-size-sm);
4172
+ pointer-events: none;
4173
+ }
4174
+ .oui-map-legend {
4175
+ box-sizing: border-box;
4176
+ margin: 0;
4177
+ font-family: var(--oui-font-body);
4178
+ -webkit-font-smoothing: antialiased;
4179
+ -moz-osx-font-smoothing: grayscale;
4180
+ display: flex;
4181
+ flex-direction: column;
4182
+ gap: var(--oui-space-2);
4183
+ min-width: 11rem;
4184
+ padding: var(--oui-space-4);
4185
+ border: 1px solid var(--oui-color-border);
4186
+ border-radius: var(--oui-radius-md);
4187
+ background: var(--oui-color-surface);
4188
+ box-shadow: var(--oui-shadow-raised);
4189
+ color: var(--oui-color-text);
4190
+ font-size: var(--oui-font-size-sm);
4191
+ }
4192
+ .oui-map-legend__toggle-all {
4193
+ box-sizing: border-box;
4194
+ margin: 0;
4195
+ font-family: var(--oui-font-body);
4196
+ -webkit-font-smoothing: antialiased;
4197
+ -moz-osx-font-smoothing: grayscale;
4198
+ align-self: flex-end;
4199
+ padding: var(--oui-space-1) var(--oui-space-3);
4200
+ border: 0;
4201
+ border-radius: var(--oui-radius-xs);
4202
+ background: none;
4203
+ color: var(--oui-color-accent-text);
4204
+ font-size: var(--oui-font-size-xs);
4205
+ font-weight: var(--oui-font-weight-semibold);
4206
+ cursor: pointer;
4207
+ }
4208
+ .oui-map-legend__toggle-all:focus-visible {
4209
+ outline: var(--oui-focus-outline);
4210
+ outline-offset: var(--oui-focus-outline-offset);
4211
+ }
4212
+ @media (hover: hover) {
4213
+ .oui-map-legend__toggle-all:hover {
4214
+ background: var(--oui-color-accent-subtle);
4215
+ }
4216
+ }
4217
+ .oui-map-legend__list {
4218
+ display: flex;
4219
+ flex-direction: column;
4220
+ gap: var(--oui-space-1);
4221
+ margin: 0;
4222
+ padding: 0;
4223
+ list-style: none;
4224
+ }
4225
+ .oui-map-legend__item {
4226
+ display: flex;
4227
+ align-items: center;
4228
+ gap: var(--oui-space-1);
4229
+ border-radius: var(--oui-radius-sm);
4230
+ }
4231
+ .oui-map-legend__item[data-selected] {
4232
+ background: var(--oui-color-accent-subtle);
4233
+ }
4234
+ .oui-map-legend__item[data-hidden] .oui-map-legend__entry {
4235
+ opacity: 0.5;
4236
+ }
4237
+ .oui-map-legend__entry {
4238
+ box-sizing: border-box;
4239
+ margin: 0;
4240
+ font-family: var(--oui-font-body);
4241
+ -webkit-font-smoothing: antialiased;
4242
+ -moz-osx-font-smoothing: grayscale;
4243
+ display: flex;
4244
+ flex: 1;
4245
+ align-items: center;
4246
+ gap: var(--oui-space-4);
4247
+ min-width: 0;
4248
+ padding: var(--oui-space-2) var(--oui-space-3);
4249
+ border: 0;
4250
+ border-radius: inherit;
4251
+ background: none;
4252
+ color: inherit;
4253
+ font-size: inherit;
4254
+ text-align: start;
4255
+ }
4256
+ .oui-map-legend__entry:is(button) {
4257
+ cursor: pointer;
4258
+ }
4259
+ .oui-map-legend__entry:is(button):focus-visible {
4260
+ outline: var(--oui-focus-outline);
4261
+ outline-offset: -2px;
4262
+ }
4263
+ @media (hover: hover) {
4264
+ .oui-map-legend__entry:is(button):hover {
4265
+ background: var(--oui-color-surface-hover);
4266
+ }
4267
+ }
4268
+ [data-selected] > .oui-map-legend__entry:is(button) {
4269
+ font-weight: var(--oui-font-weight-semibold);
4270
+ }
4271
+ .oui-map-legend__swatch {
4272
+ flex-shrink: 0;
4273
+ width: 0.75rem;
4274
+ height: 0.75rem;
4275
+ border-radius: 3px;
4276
+ background: var(--_swatch);
4277
+ }
4278
+ .oui-map-legend__label {
4279
+ flex: 1;
4280
+ min-width: 0;
4281
+ overflow: hidden;
4282
+ text-overflow: ellipsis;
4283
+ white-space: nowrap;
4284
+ }
4285
+ .oui-map-legend__count {
4286
+ color: var(--oui-color-text-muted);
4287
+ font-size: var(--oui-font-size-xs);
4288
+ font-variant-numeric: tabular-nums;
4289
+ }
4290
+ .oui-map-legend__visibility {
4291
+ box-sizing: border-box;
4292
+ margin: 0;
4293
+ font-family: var(--oui-font-body);
4294
+ -webkit-font-smoothing: antialiased;
4295
+ -moz-osx-font-smoothing: grayscale;
4296
+ display: grid;
4297
+ flex-shrink: 0;
4298
+ place-items: center;
4299
+ width: 1.75rem;
4300
+ height: 1.75rem;
4301
+ padding: 0;
4302
+ border: 0;
4303
+ border-radius: var(--oui-radius-xs);
4304
+ background: none;
4305
+ color: var(--oui-color-text-muted);
4306
+ font-size: 0.95rem;
4307
+ cursor: pointer;
4308
+ }
4309
+ .oui-map-legend__visibility:focus-visible {
4310
+ outline: var(--oui-focus-outline);
4311
+ outline-offset: -2px;
4312
+ }
4313
+ @media (hover: hover) {
4314
+ .oui-map-legend__visibility:hover {
4315
+ background: var(--oui-color-surface-hover);
4316
+ color: var(--oui-color-text);
4317
+ }
4318
+ }
4319
+ }
3899
4320
  @layer oui.components {
3900
4321
  .oui-menu__positioner {
3901
4322
  z-index: var(--oui-z-dropdown);
@@ -3956,7 +4377,7 @@
3956
4377
  font-weight: var(--oui-font-weight-medium);
3957
4378
  line-height: 1.3;
3958
4379
  outline: none;
3959
- cursor: default;
4380
+ cursor: pointer;
3960
4381
  user-select: none;
3961
4382
  transition: background-color var(--oui-duration-fast) var(--oui-ease), color var(--oui-duration-fast) var(--oui-ease);
3962
4383
  }
@@ -4683,7 +5104,7 @@
4683
5104
  font-weight: var(--oui-font-weight-medium);
4684
5105
  line-height: 1.3;
4685
5106
  outline: none;
4686
- cursor: default;
5107
+ cursor: pointer;
4687
5108
  user-select: none;
4688
5109
  transition: background-color var(--oui-duration-fast) var(--oui-ease), color var(--oui-duration-fast) var(--oui-ease);
4689
5110
  }
@@ -5553,7 +5974,7 @@
5553
5974
  color: var(--_tone-text);
5554
5975
  font-size: var(--oui-font-size-sm);
5555
5976
  font-weight: var(--oui-font-weight-semibold);
5556
- line-height: 1;
5977
+ line-height: 1.3;
5557
5978
  white-space: nowrap;
5558
5979
  vertical-align: middle;
5559
5980
  }
@@ -1,2 +1,3 @@
1
1
  export { ThemeProvider, themeToStyle, createTheme } from './ThemeProvider';
2
2
  export type { Theme, ThemeTokenName, ColorMode, ThemeProviderProps } from './ThemeProvider';
3
+ export { seriesColor } from './series';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Colour for the `index`-th data series: `var(--oui-color-chart-N)`, cycling through the eight chart
3
+ * tokens. Use it for chart series, legend swatches and map routes so the same index gets the same hue
4
+ * everywhere, in light and dark mode.
5
+ *
6
+ * @example
7
+ * <span style={{ background: seriesColor(2) }} />
8
+ */
9
+ export declare function seriesColor(index: number): string;
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ //#region src/theme/series.ts
3
+ /**
4
+ * Colour for the `index`-th data series: `var(--oui-color-chart-N)`, cycling through the eight chart
5
+ * tokens. Use it for chart series, legend swatches and map routes so the same index gets the same hue
6
+ * everywhere, in light and dark mode.
7
+ *
8
+ * @example
9
+ * <span style={{ background: seriesColor(2) }} />
10
+ */
11
+ function seriesColor(index) {
12
+ return `var(--oui-color-chart-${(Math.trunc(index) % 8 + 8) % 8 + 1})`;
13
+ }
14
+ //#endregion
15
+ export { seriesColor };
16
+
17
+ //# sourceMappingURL=series.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"series.js","names":["seriesColor","index","Math","trunc"],"sources":["../../src/theme/series.ts"],"sourcesContent":["/**\n * Colour for the `index`-th data series: `var(--oui-color-chart-N)`, cycling through the eight chart\n * tokens. Use it for chart series, legend swatches and map routes so the same index gets the same hue\n * everywhere, in light and dark mode.\n *\n * @example\n * <span style={{ background: seriesColor(2) }} />\n */\nexport function seriesColor(index: number): string {\n return `var(--oui-color-chart-${(((Math.trunc(index) % 8) + 8) % 8) + 1})`;\n}\n"],"mappings":";;;;;;;;;;AAQA,SAAgBA,YAAYC,OAAuB;CACjD,OAAO,0BAA4BC,KAAKC,MAAMF,KAAK,IAAI,IAAK,KAAK,IAAK,EAAC;AACzE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optimum-intelligence/opti-ui",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
4
4
  "description": "Optimum's customizable React component library, built on Base UI.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Optimum Intelligence",
@@ -31,7 +31,12 @@
31
31
  "types": "./dist/index.d.ts",
32
32
  "import": "./dist/index.js"
33
33
  },
34
+ "./map": {
35
+ "types": "./dist/map/index.d.ts",
36
+ "import": "./dist/map/index.js"
37
+ },
34
38
  "./styles.css": "./dist/opti-ui.css",
39
+ "./map.css": "./dist/map.css",
35
40
  "./fonts.css": "./dist/fonts.css",
36
41
  "./components.json": "./dist/components.json",
37
42
  "./llms.txt": "./dist/llms.txt",
@@ -54,7 +59,9 @@
54
59
  "react-dom": "^19.0.0"
55
60
  },
56
61
  "dependencies": {
57
- "@base-ui/react": "~1.8.0"
62
+ "@base-ui/react": "~1.8.0",
63
+ "@vis.gl/react-maplibre": "^8.1.3",
64
+ "maplibre-gl": "^6.16.0"
58
65
  },
59
66
  "devDependencies": {
60
67
  "@babel/core": "^7.29.7",