@fusion.dev/helix 0.104.1 → 0.106.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 (198) hide show
  1. package/custom-elements.json +13098 -4950
  2. package/dist/accordion/item/accordion-item.d.ts +9 -10
  3. package/dist/accordion/root/accordion-root.d.ts +8 -9
  4. package/dist/announcement/root/announcement-root.d.ts +7 -7
  5. package/dist/app-header/root/app-header-root.d.ts +14 -12
  6. package/dist/area-chart/root/area-chart-root.d.ts +23 -32
  7. package/dist/aura/root/aura-root.d.ts +32 -31
  8. package/dist/avatar/group/avatar-group.d.ts +8 -11
  9. package/dist/avatar/root/avatar-root.d.ts +4 -5
  10. package/dist/badge/root/badge-root.d.ts +7 -8
  11. package/dist/bar-chart/root/bar-chart-root.d.ts +17 -16
  12. package/dist/blockquote/root/blockquote-root.d.ts +4 -5
  13. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +7 -7
  14. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +2 -2
  15. package/dist/button/root/button-root.d.ts +16 -13
  16. package/dist/button-group/root/button-group-root.d.ts +6 -6
  17. package/dist/callout/root/callout-root.d.ts +8 -8
  18. package/dist/canvas/edge/canvas-edge.d.ts +3 -3
  19. package/dist/canvas/node/canvas-node.d.ts +17 -18
  20. package/dist/canvas/root/canvas-root.d.ts +18 -19
  21. package/dist/card/root/card-root.d.ts +14 -14
  22. package/dist/carousel/root/carousel-root.d.ts +11 -14
  23. package/dist/chat/composer/chat-composer.d.ts +10 -11
  24. package/dist/chat/message/chat-message.d.ts +18 -18
  25. package/dist/chat/root/chat-root.d.ts +15 -18
  26. package/dist/checkbox/root/checkbox-root.d.ts +17 -16
  27. package/dist/checkbox-group/root/checkbox-group-root.d.ts +6 -5
  28. package/dist/code/root/code-root.d.ts +9 -9
  29. package/dist/code-block/root/code-block-root.d.ts +14 -15
  30. package/dist/color-input/root/color-input-root.d.ts +13 -18
  31. package/dist/color-picker/root/color-picker-root.d.ts +26 -27
  32. package/dist/combobox/root/combobox-root.css.js +3 -2
  33. package/dist/combobox/root/combobox-root.d.ts +8 -8
  34. package/dist/command/root/command-root.d.ts +5 -6
  35. package/dist/copy-button/root/copy-button-root.d.ts +4 -5
  36. package/dist/data-table/root/data-table-root.d.ts +30 -37
  37. package/dist/date-input/root/date-input-root.d.ts +15 -17
  38. package/dist/date-picker/root/date-picker-root.d.ts +11 -12
  39. package/dist/description-list/item/description-list-item.d.ts +2 -2
  40. package/dist/description-list/root/description-list-root.d.ts +13 -14
  41. package/dist/dialog/root/dialog-root.d.ts +9 -10
  42. package/dist/divider/root/divider-root.d.ts +11 -12
  43. package/dist/donut-chart/root/donut-chart-root.d.ts +12 -15
  44. package/dist/drawer/root/drawer-root.d.ts +14 -13
  45. package/dist/drilldown/item/drilldown-item.d.ts +3 -4
  46. package/dist/drilldown/root/drilldown-root.d.ts +6 -9
  47. package/dist/element-events.generated.js +19 -1
  48. package/dist/empty/root/empty-root.d.ts +3 -4
  49. package/dist/file-input/root/file-input-root.d.ts +8 -12
  50. package/dist/filter-input/chip/filter-chip.d.ts +11 -10
  51. package/dist/filter-input/field/filter-field.d.ts +7 -8
  52. package/dist/filter-input/menu/filter-menu.d.ts +7 -8
  53. package/dist/filter-input/operator/filter-operator.d.ts +5 -5
  54. package/dist/filter-input/root/filter-input-root.d.ts +25 -27
  55. package/dist/flex/root/flex-root.d.ts +9 -14
  56. package/dist/format-date/root/format-date-root.d.ts +5 -8
  57. package/dist/grid/root/grid-root.d.ts +13 -11
  58. package/dist/heatmap/root/heatmap-root.d.ts +34 -31
  59. package/dist/icon/root/icon-root.d.ts +6 -6
  60. package/dist/icon-button/root/icon-button-root.d.ts +9 -10
  61. package/dist/image/root/image-root.d.ts +10 -10
  62. package/dist/input/root/input-root.d.ts +10 -13
  63. package/dist/kbd/root/kbd-root.d.ts +6 -7
  64. package/dist/legend/root/legend-root.d.ts +19 -20
  65. package/dist/lightbox/item/lightbox-item.d.ts +4 -5
  66. package/dist/lightbox/root/lightbox-root.d.ts +13 -16
  67. package/dist/line-chart/root/line-chart-root.d.ts +24 -25
  68. package/dist/list/item/list-item.d.ts +7 -8
  69. package/dist/list/root/list-root.d.ts +7 -9
  70. package/dist/listbox/root/listbox-root.d.ts +8 -9
  71. package/dist/loader/root/loader-root.d.ts +5 -7
  72. package/dist/map/area/map-area.css.d.ts +1 -0
  73. package/dist/map/area/map-area.css.js +24 -0
  74. package/dist/map/area/map-area.d.ts +27 -0
  75. package/dist/map/area/map-area.js +20 -0
  76. package/dist/map/buildings/map-buildings.css.d.ts +1 -0
  77. package/dist/map/buildings/map-buildings.css.js +27 -0
  78. package/dist/map/buildings/map-buildings.d.ts +28 -0
  79. package/dist/map/buildings/map-buildings.js +20 -0
  80. package/dist/map/contours/map-contours.css.d.ts +1 -0
  81. package/dist/map/contours/map-contours.css.js +8 -0
  82. package/dist/map/contours/map-contours.d.ts +25 -0
  83. package/dist/map/contours/map-contours.js +16 -0
  84. package/dist/map/index.d.ts +10 -0
  85. package/dist/map/index.js +10 -0
  86. package/dist/map/landcover/map-landcover.css.d.ts +1 -0
  87. package/dist/map/landcover/map-landcover.css.js +5 -0
  88. package/dist/map/landcover/map-landcover.d.ts +25 -0
  89. package/dist/map/landcover/map-landcover.js +16 -0
  90. package/dist/map/marker/map-marker.css.d.ts +1 -0
  91. package/dist/map/marker/map-marker.css.js +340 -0
  92. package/dist/map/marker/map-marker.d.ts +51 -0
  93. package/dist/map/marker/map-marker.js +29 -0
  94. package/dist/map/points/map-points.css.d.ts +1 -0
  95. package/dist/map/points/map-points.css.js +82 -0
  96. package/dist/map/points/map-points.d.ts +29 -0
  97. package/dist/map/points/map-points.js +20 -0
  98. package/dist/map/position/map-position.css.d.ts +1 -0
  99. package/dist/map/position/map-position.css.js +239 -0
  100. package/dist/map/position/map-position.d.ts +41 -0
  101. package/dist/map/position/map-position.js +26 -0
  102. package/dist/map/raster/map-raster.css.d.ts +1 -0
  103. package/dist/map/raster/map-raster.css.js +4 -0
  104. package/dist/map/raster/map-raster.d.ts +23 -0
  105. package/dist/map/raster/map-raster.js +16 -0
  106. package/dist/map/root/map-root.css.js +252 -1
  107. package/dist/map/root/map-root.d.ts +13 -12
  108. package/dist/map/root/map-root.js +4 -0
  109. package/dist/map/route/map-route.css.d.ts +1 -0
  110. package/dist/map/route/map-route.css.js +25 -0
  111. package/dist/map/route/map-route.d.ts +31 -0
  112. package/dist/map/route/map-route.js +23 -0
  113. package/dist/map/terrain/map-terrain.css.d.ts +1 -0
  114. package/dist/map/terrain/map-terrain.css.js +12 -0
  115. package/dist/map/terrain/map-terrain.d.ts +27 -0
  116. package/dist/map/terrain/map-terrain.js +16 -0
  117. package/dist/megamenu/root/megamenu-root.d.ts +14 -14
  118. package/dist/menu/item/menu-item.d.ts +8 -8
  119. package/dist/menu/root/menu-root.d.ts +9 -9
  120. package/dist/meter/root/meter-root.d.ts +29 -38
  121. package/dist/navigation/root/navigation-root.d.ts +4 -5
  122. package/dist/notifications/group/notification-group.d.ts +9 -13
  123. package/dist/notifications/notification/notification.d.ts +27 -33
  124. package/dist/notifications/root/notifications-root.d.ts +9 -11
  125. package/dist/number-input/root/number-input-root.d.ts +16 -18
  126. package/dist/object-inspector/root/object-inspector-root.d.ts +11 -12
  127. package/dist/option/group/option-group.d.ts +3 -4
  128. package/dist/option/root/option-root.d.ts +7 -8
  129. package/dist/orb/root/orb-root.d.ts +30 -36
  130. package/dist/outline/root/outline-root.d.ts +8 -10
  131. package/dist/pagination/root/pagination-root.d.ts +13 -23
  132. package/dist/pagination/size/pagination-size.d.ts +7 -7
  133. package/dist/pagination/summary/pagination-summary.d.ts +3 -4
  134. package/dist/pin-input/root/pin-input-root.d.ts +8 -11
  135. package/dist/popover/root/popover-root.d.ts +14 -16
  136. package/dist/progress/root/progress-root.d.ts +10 -13
  137. package/dist/qr-code/root/qr-code-root.d.ts +13 -14
  138. package/dist/quote/root/quote-root.d.ts +2 -2
  139. package/dist/radio/group/radio-group.d.ts +6 -6
  140. package/dist/radio/root/radio-root.d.ts +16 -19
  141. package/dist/rating/root/rating-root.d.ts +9 -9
  142. package/dist/sandbox/preview/sandbox-preview.d.ts +18 -19
  143. package/dist/sandbox/root/sandbox-root.d.ts +27 -27
  144. package/dist/sandbox/source/sandbox-source.d.ts +9 -12
  145. package/dist/sandbox/status-bar/sandbox-status-bar.d.ts +9 -11
  146. package/dist/sandbox/terminal/sandbox-terminal.d.ts +13 -15
  147. package/dist/sandbox/toolbar/sandbox-toolbar.d.ts +8 -9
  148. package/dist/scatter-chart/root/scatter-chart-root.d.ts +18 -29
  149. package/dist/scroll-area/root/scroll-area-root.d.ts +13 -13
  150. package/dist/select/root/select-root.d.ts +14 -14
  151. package/dist/shared/mixin-control-surface/mixin-control-surface.d.ts +8 -2
  152. package/dist/shared/viewport/viewport.css.js +7 -2
  153. package/dist/skeleton/root/skeleton-root.d.ts +6 -7
  154. package/dist/skip-link/root/skip-link-root.d.ts +16 -19
  155. package/dist/slider/root/slider-root.d.ts +16 -18
  156. package/dist/sparkline/root/sparkline-root.d.ts +16 -24
  157. package/dist/speed-dial/item/speed-dial-item.d.ts +5 -5
  158. package/dist/speed-dial/root/speed-dial-root.d.ts +3 -4
  159. package/dist/splitter/root/splitter-root.d.ts +23 -32
  160. package/dist/stat/group/stat-group.d.ts +4 -5
  161. package/dist/stat/root/stat-root.d.ts +4 -5
  162. package/dist/steps/root/steps-root.d.ts +12 -13
  163. package/dist/switch/root/switch-root.d.ts +13 -17
  164. package/dist/table/cell/table-cell.css.js +5 -0
  165. package/dist/table/cell/table-cell.d.ts +4 -4
  166. package/dist/table/column/table-column.d.ts +3 -4
  167. package/dist/table/root/table-root.d.ts +5 -6
  168. package/dist/table/row/table-row.d.ts +3 -3
  169. package/dist/tabs/panel/tab-panel.d.ts +2 -3
  170. package/dist/tabs/root/tabs-root.d.ts +12 -11
  171. package/dist/tabs/tab/tab.d.ts +4 -4
  172. package/dist/tag/root/tag-root.d.ts +10 -11
  173. package/dist/text/root/text-root.d.ts +22 -30
  174. package/dist/textarea/root/textarea-root.d.ts +4 -5
  175. package/dist/time-input/root/time-input-root.d.ts +12 -14
  176. package/dist/time-picker/root/time-picker-root.d.ts +8 -10
  177. package/dist/timeline/item/timeline-item.d.ts +2 -2
  178. package/dist/timeline/root/timeline-root.d.ts +3 -3
  179. package/dist/toast/item/toast-item.d.ts +7 -8
  180. package/dist/toast/root/toast-root.d.ts +10 -12
  181. package/dist/toggle/group/toggle-group.d.ts +10 -12
  182. package/dist/toggle/root/toggle-root.d.ts +2 -3
  183. package/dist/toolbar/root/toolbar-root.d.ts +3 -3
  184. package/dist/tooltip/root/tooltip-root.d.ts +10 -10
  185. package/dist/tour/root/tour-root.d.ts +5 -6
  186. package/dist/tour/stop/tour-stop.d.ts +14 -14
  187. package/dist/tree/item/tree-item.d.ts +6 -9
  188. package/dist/tree/root/tree-root.d.ts +7 -8
  189. package/dist/trend/root/trend-root.d.ts +12 -19
  190. package/dist/video/root/video-root.d.ts +15 -21
  191. package/dist/video-playlist/item/video-playlist-item.d.ts +4 -4
  192. package/dist/video-playlist/menu/video-playlist-menu.d.ts +14 -16
  193. package/dist/video-playlist/root/video-playlist-root.d.ts +5 -5
  194. package/dist/virtual-list/root/virtual-list-root.d.ts +6 -8
  195. package/package.json +6 -6
  196. package/types/jsx.d.ts +14221 -11621
  197. package/types/svelte.d.ts +10 -0
  198. package/types/vue.d.ts +2679 -1951
@@ -0,0 +1,239 @@
1
+ import { createSheet } from '@fusion.dev/helix-core';
2
+ export const styles = createSheet(`:host {
3
+
4
+ --_map-position-ink: color-mix(
5
+ in oklab,
6
+ var(--helix-color-foreground) 84%,
7
+ var(--helix-color-surface)
8
+ );
9
+ --_map-position-color: var(--map-position-color, var(--_map-position-ink));
10
+ --_map-position-edge: var(--map-position-edge, var(--helix-color-surface));
11
+ --_map-position-fill: var(--map-position-fill, var(--_map-position-ink));
12
+ --_map-position-size: var(--map-position-size, 1.25rem);
13
+
14
+ --_map-position-heading: 0deg;
15
+ --_map-position-pitch: 0deg;
16
+ --_map-position-radius: 0px;
17
+ --_map-position-x: 0px;
18
+ --_map-position-y: 0px;
19
+ block-size: 0;
20
+ display: block;
21
+ inline-size: 0;
22
+ inset-block-start: var(--_map-position-y);
23
+ left: var(--_map-position-x);
24
+ pointer-events: none;
25
+ position: absolute;
26
+
27
+ z-index: var(--helix-layer-raised);
28
+ }
29
+
30
+ :host(:not([style*="--_map-position-x"])) {
31
+ visibility: hidden;
32
+ }
33
+
34
+ [part="position"] {
35
+ display: block;
36
+ left: 0;
37
+ position: absolute;
38
+ top: 0;
39
+ transform: rotateX(var(--_map-position-pitch));
40
+ }
41
+
42
+ [part="accuracy"] {
43
+ background: color-mix(in oklab, var(--_map-position-color) 12%, transparent);
44
+ block-size: calc(var(--_map-position-radius) * 2);
45
+ border: var(--helix-border-thin) solid
46
+ color-mix(in oklab, var(--_map-position-color) 35%, transparent);
47
+ border-radius: var(--helix-radii-full);
48
+ box-sizing: border-box;
49
+ inline-size: calc(var(--_map-position-radius) * 2);
50
+ left: 0;
51
+ position: absolute;
52
+ top: 0;
53
+ translate: -50% -50%;
54
+ }
55
+
56
+ [part="heading"] {
57
+ background: conic-gradient(
58
+ from -45deg,
59
+ transparent 0deg,
60
+ var(--_map-position-color) 30deg 60deg,
61
+ transparent 90deg
62
+ );
63
+ block-size: calc(var(--_map-position-size) * 5);
64
+ border-radius: var(--helix-radii-full);
65
+ display: none;
66
+ inline-size: calc(var(--_map-position-size) * 5);
67
+ left: 0;
68
+ mask: radial-gradient(closest-side, rgb(0 0 0 / 0.32) 20%, transparent);
69
+ position: absolute;
70
+ rotate: var(--_map-position-heading);
71
+ top: 0;
72
+ translate: -50% -50%;
73
+ }
74
+
75
+ :host([heading]) [part="heading"] {
76
+ display: block;
77
+ }
78
+
79
+ [part="pulse"] {
80
+ animation: map-position-pulse calc(var(--helix-duration-slow) * 7.5)
81
+ var(--helix-easing-decelerate) infinite;
82
+ background: var(--_map-position-color);
83
+ block-size: var(--_map-position-size);
84
+ border-radius: var(--helix-radii-full);
85
+ inline-size: var(--_map-position-size);
86
+ left: 0;
87
+ opacity: 0;
88
+ position: absolute;
89
+ top: 0;
90
+ translate: -50% -50%;
91
+ }
92
+
93
+ @keyframes map-position-pulse {
94
+ from {
95
+ opacity: 0.45;
96
+ scale: 1;
97
+ }
98
+ to {
99
+ opacity: 0;
100
+ scale: 3.2;
101
+ }
102
+ }
103
+
104
+ [part="dot"] {
105
+ background: var(--_map-position-fill);
106
+ block-size: var(--_map-position-size);
107
+ border: var(--helix-border-thick) solid var(--_map-position-edge);
108
+ border-radius: var(--helix-radii-full);
109
+ box-shadow:
110
+ 0 0 0 calc(var(--_map-position-size) * 0.3)
111
+ color-mix(in oklab, var(--_map-position-color) 20%, transparent),
112
+ var(--helix-shadow-sm);
113
+ box-sizing: border-box;
114
+ inline-size: var(--_map-position-size);
115
+ left: 0;
116
+ position: absolute;
117
+ top: 0;
118
+ translate: -50% -50%;
119
+ }
120
+
121
+ [part="arrow"] {
122
+ block-size: calc(var(--_map-position-size) * 1.6);
123
+ display: none;
124
+ filter: drop-shadow(
125
+ 0 var(--helix-border-thin) var(--helix-border-thick)
126
+ color-mix(in oklab, var(--helix-color-foreground) 30%, transparent)
127
+ );
128
+ inline-size: calc(var(--_map-position-size) * 1.6);
129
+ left: 0;
130
+ overflow: visible;
131
+ position: absolute;
132
+ rotate: var(--_map-position-heading);
133
+ top: 0;
134
+ translate: -50% -50%;
135
+ }
136
+
137
+ [part="arrow"] path {
138
+ fill: var(--_map-position-fill);
139
+ paint-order: stroke;
140
+ stroke: none;
141
+ stroke-linejoin: round;
142
+ stroke-width: calc(var(--helix-border-thick) * 1.5);
143
+ }
144
+
145
+ :host([heading]) [part="arrow"] {
146
+ display: block;
147
+ }
148
+
149
+ :host([heading]) [part="dot"] {
150
+ display: none;
151
+ }
152
+
153
+ :host([shape="rounded"]) [part="dot"] {
154
+ border-radius: var(--helix-radii-md);
155
+ }
156
+
157
+ :host([shape="square"]) [part="dot"] {
158
+ border-radius: var(--helix-radii-none);
159
+ }
160
+
161
+ :host([shape="diamond"]) [part="dot"] {
162
+ border-radius: var(--helix-radii-none);
163
+ rotate: 45deg;
164
+ scale: 0.85;
165
+ }
166
+
167
+ :host([shape="ring"]) [part="dot"] {
168
+ background: transparent;
169
+
170
+ border-color: var(--_map-position-fill);
171
+ border-width: calc(var(--_map-position-size) * 0.25);
172
+ }
173
+
174
+ :host([separation="outlined"]) [part="dot"] {
175
+ box-shadow: none;
176
+ }
177
+
178
+ :host([separation="elevated"]) [part="dot"] {
179
+ box-shadow: var(--helix-shadow-md);
180
+ }
181
+
182
+ :host([separation="filled"]) [part="dot"] {
183
+ border-color: transparent;
184
+ }
185
+
186
+ :host([separation="plain"]) [part="dot"] {
187
+ border-color: transparent;
188
+ box-shadow: none;
189
+ }
190
+
191
+ :host([separation="outlined"]) [part="arrow"] path {
192
+ stroke: var(--_map-position-edge);
193
+ }
194
+
195
+ :host([separation="outlined"]) [part="arrow"],
196
+ :host([separation="plain"]) [part="arrow"] {
197
+ filter: none;
198
+ }
199
+
200
+ @media (prefers-reduced-motion: reduce) {
201
+ [part="pulse"] {
202
+ animation: none;
203
+ }
204
+ }
205
+
206
+ [part="status"] {
207
+ block-size: 1px;
208
+ clip-path: inset(50%);
209
+ inline-size: 1px;
210
+ overflow: hidden;
211
+ position: absolute;
212
+ white-space: nowrap;
213
+ }
214
+
215
+ :host([tone]) {
216
+ --_map-position-color: var(--_map-position-tone);
217
+ --_map-position-fill: var(--_map-position-tone);
218
+ }
219
+ :host([tone="accent"]) {
220
+ --_map-position-tone: var(--helix-color-accent);
221
+ }
222
+ :host([tone="danger"]) {
223
+ --_map-position-tone: var(--helix-color-danger);
224
+ }
225
+ :host([tone="info"]) {
226
+ --_map-position-tone: var(--helix-color-info);
227
+ }
228
+ :host([tone="neutral"]) {
229
+ --_map-position-tone: var(--helix-color-foreground-muted);
230
+ }
231
+ :host([tone="primary"]) {
232
+ --_map-position-tone: var(--helix-color-primary);
233
+ }
234
+ :host([tone="success"]) {
235
+ --_map-position-tone: var(--helix-color-success);
236
+ }
237
+ :host([tone="warning"]) {
238
+ --_map-position-tone: var(--helix-color-warning);
239
+ }`);
@@ -0,0 +1,41 @@
1
+ import { HelixHeadlessMapPosition } from '@fusion.dev/helix-headless/map';
2
+ import type { CSSResultGroup } from 'lit';
3
+ /**
4
+ * @summary A moving point on a map, such as a vehicle or a person.
5
+ *
6
+ * @description
7
+ * Draws the position in your theme's foreground color with a surface-colored
8
+ * edge, or in a `tone`. A position with a heading is drawn as an arrow.
9
+ *
10
+ * @since 0.105.0
11
+ * @status experimental
12
+ * @category media
13
+ * @aliases Current location, Live position, Tracker, You are here
14
+ * @documentation https://fusion.dev/helix/components/map
15
+ *
16
+ * @cssproperty --map-position-color - The color of the halo, direction cone, and pulse when no tone is set.
17
+ * @cssproperty --map-position-edge - The edge around the point and the arrow.
18
+ * @cssproperty --map-position-fill - The color of the point and the arrow when no tone is set.
19
+ * @cssproperty --map-position-size - The point's width.
20
+ */
21
+ export declare class HelixMapPosition extends HelixHeadlessMapPosition {
22
+ /**
23
+ * How the point stands out from the map. Leave unset for an edge, a halo,
24
+ * and a small shadow. `outlined` has the edge only, `elevated` a larger
25
+ * shadow, `filled` the halo without an edge, and `plain` none of these.
26
+ */
27
+ separation?: 'elevated' | 'filled' | 'outlined' | 'plain';
28
+ /**
29
+ * The point's shape. A circle unless set. A position with a heading is
30
+ * always an arrow.
31
+ */
32
+ shape?: 'diamond' | 'ring' | 'rounded' | 'square';
33
+ /** The position's color. Uses your theme's foreground color unless set. */
34
+ tone?: 'accent' | 'danger' | 'info' | 'neutral' | 'primary' | 'success' | 'warning';
35
+ static styles: CSSResultGroup;
36
+ }
37
+ declare global {
38
+ interface HTMLElementTagNameMap {
39
+ 'helix-map-position': HelixMapPosition;
40
+ }
41
+ }
@@ -0,0 +1,26 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement } from '@fusion.dev/helix-core';
8
+ import { HelixHeadlessMapPosition } from '@fusion.dev/helix-headless/map';
9
+ import { property } from 'lit/decorators.js';
10
+ import { styles } from './map-position.css.js';
11
+ let HelixMapPosition = class HelixMapPosition extends HelixHeadlessMapPosition {
12
+ static { this.styles = styles; }
13
+ };
14
+ __decorate([
15
+ property({ reflect: true })
16
+ ], HelixMapPosition.prototype, "separation", void 0);
17
+ __decorate([
18
+ property({ reflect: true })
19
+ ], HelixMapPosition.prototype, "shape", void 0);
20
+ __decorate([
21
+ property({ reflect: true })
22
+ ], HelixMapPosition.prototype, "tone", void 0);
23
+ HelixMapPosition = __decorate([
24
+ customElement('helix-map-position')
25
+ ], HelixMapPosition);
26
+ export { HelixMapPosition };
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,4 @@
1
+ import { createSheet } from '@fusion.dev/helix-core';
2
+ export const styles = createSheet(`:host {
3
+ display: none;
4
+ }`);
@@ -0,0 +1,23 @@
1
+ import { HelixHeadlessMapRaster } from '@fusion.dev/helix-headless/map';
2
+ import type { CSSResultGroup } from 'lit';
3
+ /**
4
+ * @summary Map tiles laid over a map, such as weather radar.
5
+ *
6
+ * @description
7
+ * The tiles keep their own colors, such as a radar provider's scale, and draw
8
+ * at `opacity` so the map shows through.
9
+ *
10
+ * @since 0.105.0
11
+ * @status experimental
12
+ * @category media
13
+ * @aliases Weather radar, Tile overlay, Raster layer
14
+ * @documentation https://fusion.dev/helix/components/map
15
+ */
16
+ export declare class HelixMapRaster extends HelixHeadlessMapRaster {
17
+ static styles: CSSResultGroup;
18
+ }
19
+ declare global {
20
+ interface HTMLElementTagNameMap {
21
+ 'helix-map-raster': HelixMapRaster;
22
+ }
23
+ }
@@ -0,0 +1,16 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement } from '@fusion.dev/helix-core';
8
+ import { HelixHeadlessMapRaster } from '@fusion.dev/helix-headless/map';
9
+ import { styles } from './map-raster.css.js';
10
+ let HelixMapRaster = class HelixMapRaster extends HelixHeadlessMapRaster {
11
+ static { this.styles = styles; }
12
+ };
13
+ HelixMapRaster = __decorate([
14
+ customElement('helix-map-raster')
15
+ ], HelixMapRaster);
16
+ export { HelixMapRaster };
@@ -16,12 +16,24 @@ position: relative;
16
16
  }
17
17
 
18
18
  [part="viewport"] {
19
+ isolation: isolate;
19
20
  min-block-size: 0;
20
21
  overflow: hidden;
21
22
  position: relative;
22
23
  }
23
24
 
24
- [part="viewport"] ::slotted(*) {
25
+ [part="layers"] {
26
+ block-size: 1px;
27
+ clip-path: inset(50%);
28
+ inline-size: 1px;
29
+ margin: var(--helix-space-none);
30
+ overflow: hidden;
31
+ padding: var(--helix-space-none);
32
+ position: absolute;
33
+ white-space: nowrap;
34
+ }
35
+
36
+ [part="viewport"] ::slotted(:not(helix-map-marker, helix-map-points, helix-map-position)) {
25
37
  block-size: 100%;
26
38
  inline-size: 100%;
27
39
  }
@@ -42,8 +54,247 @@ font-size: var(--helix-text-xs);
42
54
  padding: var(--helix-space-2xs) var(--helix-space-xs);
43
55
  }
44
56
 
57
+ :host([material="glass"]) [part="controls"] button {
58
+ backdrop-filter: var(--helix-material-backdrop);
59
+ background-color: var(--viewport-control-background-color, var(--helix-material-translucent));
60
+ }
61
+
62
+ :host([material="frosted"]) [part="controls"] button {
63
+ backdrop-filter: blur(var(--helix-material-blur-lg));
64
+ background-color: var(
65
+ --viewport-control-background-color,
66
+ var(--helix-material-translucent-strong)
67
+ );
68
+ }
69
+
70
+ :host([material="transparent"]) [part="controls"] button {
71
+ backdrop-filter: none;
72
+ background-color: var(--viewport-control-background-color, transparent);
73
+ }
74
+
75
+ :host([material]) [part="controls"] button:hover {
76
+ background-color: color-mix(
77
+ in oklab,
78
+ var(--helix-color-foreground) 10%,
79
+ var(--helix-color-surface-overlay)
80
+ );
81
+ }
82
+
45
83
  @media print {
46
84
  [part="controls"] {
47
85
  display: none;
48
86
  }
87
+ }
88
+
89
+ [part="controls"] {
90
+ align-items: center;
91
+ display: flex;
92
+ flex-direction: column;
93
+
94
+ grid-column: 1 / -1;
95
+ grid-row: 2 / 3;
96
+ }
97
+
98
+ [part="controls"] [part="zoom-in"] {
99
+ border-end-end-radius: 0;
100
+ border-end-start-radius: 0;
101
+ }
102
+ [part="controls"] [part="zoom-out"] {
103
+ border-block-start: 0;
104
+ border-start-end-radius: 0;
105
+ border-start-start-radius: 0;
106
+ margin-block-start: calc(-1 * var(--helix-space-2xs));
107
+ }
108
+
109
+ [part="tilt"] {
110
+ font-size: var(--helix-text-xs);
111
+ font-weight: var(--helix-weight-semibold);
112
+ }
113
+
114
+ [part="tilt"][aria-pressed="true"] {
115
+ background-color: var(--helix-color-primary-surface);
116
+ border-color: var(--helix-color-primary-surface);
117
+ color: var(--helix-color-foreground-on-accent);
118
+ }
119
+
120
+ [part="tilt"][aria-pressed="true"]:hover {
121
+ background-color: var(--helix-color-primary-surface-hover);
122
+ }
123
+
124
+ [part="compass"] {
125
+ border-radius: var(--helix-radii-sm);
126
+ display: grid;
127
+ grid-template-areas:
128
+ "rotl up rotr"
129
+ "start north end"
130
+ ". down .";
131
+ place-items: center;
132
+ }
133
+
134
+ [part="rotate-left"] {
135
+ grid-area: rotl;
136
+ }
137
+ [part="rotate-right"] {
138
+ grid-area: rotr;
139
+ }
140
+ [part="face-north"] {
141
+ grid-area: north;
142
+ }
143
+
144
+ [part="compass"] > :not([part="face-north"]) {
145
+ background-color: transparent;
146
+ block-size: calc(var(--helix-size-control-sm) * 0.75);
147
+ border-color: transparent;
148
+ box-shadow: none;
149
+ font-size: var(--helix-text-xs);
150
+ inline-size: calc(var(--helix-size-control-sm) * 0.75);
151
+ }
152
+
153
+ [part="compass"]:has(> :not([part="face-north"])) {
154
+ background-color: var(--viewport-control-background-color, var(--helix-color-surface-overlay));
155
+ box-shadow:
156
+ var(--helix-shadow-floating),
157
+ 0 0 0 var(--helix-border-floating) var(--helix-color-border);
158
+ }
159
+
160
+ [part="needle"] {
161
+ block-size: var(--helix-size-icon-md);
162
+ inline-size: var(--helix-size-icon-md);
163
+ transform: rotate(var(--map-needle-turn, 0deg));
164
+ }
165
+ [part="needle"] [data-end="north"] {
166
+ fill: var(--helix-color-danger);
167
+ }
168
+ [part="needle"] [data-end="south"] {
169
+ fill: var(--helix-color-foreground-muted);
170
+ }
171
+
172
+ [part="layers-menu"] {
173
+ background-color: var(--viewport-control-background-color, var(--helix-color-surface-overlay));
174
+ border: var(--helix-border-floating) solid var(--helix-color-border);
175
+ border-radius: var(--helix-radii-sm);
176
+ box-shadow: var(--helix-shadow-floating);
177
+ color: var(--helix-color-foreground);
178
+ display: grid;
179
+ gap: var(--helix-space-sm);
180
+ inline-size: min(calc(var(--helix-size-control-lg) * 6), 70vw);
181
+ inset-block-start: 0;
182
+ inset-inline-end: calc(100% + var(--helix-space-2xs));
183
+ padding: var(--helix-space-sm);
184
+ position: absolute;
185
+ }
186
+
187
+ [part="layers-menu"][hidden] {
188
+ display: none;
189
+ }
190
+
191
+ :host([controls-placement^="bottom"]) [part="layers-menu"] {
192
+ inset-block: auto 0;
193
+ }
194
+
195
+ :host([controls-placement$="start"]) [part="layers-menu"] {
196
+ inset-inline: calc(100% + var(--helix-space-2xs)) auto;
197
+ }
198
+
199
+ [part="map-types"] {
200
+ display: grid;
201
+ gap: var(--helix-space-xs);
202
+ grid-template-columns: repeat(3, 1fr);
203
+ }
204
+
205
+ [part="map-type"] {
206
+ color: var(--helix-color-foreground-muted);
207
+ cursor: pointer;
208
+ display: grid;
209
+ font-family: var(--helix-font-sans);
210
+ font-size: var(--helix-text-xs);
211
+ gap: var(--helix-space-2xs);
212
+ justify-items: center;
213
+ position: relative;
214
+ }
215
+
216
+ [part="map-type"] input {
217
+ block-size: 1px;
218
+ inline-size: 1px;
219
+ margin: 0;
220
+ opacity: 0;
221
+ pointer-events: none;
222
+ position: absolute;
223
+ }
224
+
225
+ [part="map-type-preview"] {
226
+ aspect-ratio: 4 / 3;
227
+ background-color: var(--helix-color-surface-sunken);
228
+ border: var(--helix-border-thick) solid transparent;
229
+ border-radius: var(--helix-radii-sm);
230
+ box-sizing: border-box;
231
+ display: block;
232
+ inline-size: 100%;
233
+ object-fit: cover;
234
+ }
235
+
236
+ [part="map-type"]:hover,
237
+ [part="map-type"]:has(input:checked) {
238
+ color: var(--helix-color-foreground);
239
+ }
240
+
241
+ [part="map-type"]:has(input:checked) [part="map-type-preview"] {
242
+ border-color: var(--helix-color-primary-surface);
243
+ }
244
+
245
+ [part="map-type"]:has(input:focus-visible) [part="map-type-preview"] {
246
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
247
+ outline-offset: var(--helix-size-focus-offset);
248
+ }
249
+
250
+ [part="layer-choices"] {
251
+ display: grid;
252
+ gap: var(--helix-space-xs);
253
+ grid-template-columns: repeat(3, 1fr);
254
+ }
255
+
256
+ [part="layers-menu"] [part="layer-choice"] {
257
+ align-content: start;
258
+ background-color: transparent;
259
+ block-size: auto;
260
+ border: 0;
261
+ box-shadow: none;
262
+ color: var(--helix-color-foreground-muted);
263
+ display: grid;
264
+ font-size: var(--helix-text-xs);
265
+ gap: var(--helix-space-2xs);
266
+ inline-size: auto;
267
+ justify-items: center;
268
+ padding: 0;
269
+ text-align: center;
270
+ }
271
+
272
+ [part="layers-menu"] [part="layer-choice"]:hover,
273
+ [part="layers-menu"] [part="layer-choice"][aria-pressed="true"] {
274
+ background-color: transparent;
275
+ color: var(--helix-color-foreground);
276
+ }
277
+
278
+ [part="layers-menu"] [part="layer-choice"]:focus-visible {
279
+ outline: none;
280
+ }
281
+
282
+ [part="layer-icon"] {
283
+ aspect-ratio: 4 / 3;
284
+ background-color: var(--helix-color-surface-sunken);
285
+ border: var(--helix-border-thick) solid transparent;
286
+ border-radius: var(--helix-radii-sm);
287
+ box-sizing: border-box;
288
+ display: block;
289
+ inline-size: 100%;
290
+ padding: var(--helix-space-sm);
291
+ }
292
+
293
+ [part="layer-choice"][aria-pressed="true"] [part="layer-icon"] {
294
+ border-color: var(--helix-color-primary-surface);
295
+ }
296
+
297
+ [part="layer-choice"]:focus-visible [part="layer-icon"] {
298
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
299
+ outline-offset: var(--helix-size-focus-offset);
49
300
  }`);
@@ -1,16 +1,11 @@
1
1
  import { HelixHeadlessMap } from '@fusion.dev/helix-headless/map';
2
2
  import type { CSSResultGroup } from 'lit';
3
3
  /**
4
- * @summary A frame around somebody else's map.
4
+ * @summary A frame around a map drawn by another library.
5
5
  *
6
6
  * @description
7
- * Presentation only: a bordered well with the controls over it, at the corner
8
- * every map puts them. What the frame is for, and why the controls are buttons
9
- * rather than arrow keys, is the base class.
10
- *
11
- * **The controls do not fade with the chrome.** A reader who has gone still has
12
- * not stopped needing the only controls this frame offers, so the idle state
13
- * takes the header and footer a consumer slotted and leaves the buttons alone.
7
+ * The styled frame: a bordered box with the pan and zoom buttons in its top
8
+ * corner. The buttons stay visible when the header and footer fade.
14
9
  *
15
10
  * @since 0.100.0
16
11
  * @status experimental
@@ -18,12 +13,18 @@ import type { CSSResultGroup } from 'lit';
18
13
  * @aliases Map frame, Map container, Geo
19
14
  * @documentation https://fusion.dev/helix/components/map
20
15
  *
21
- * @cssproperty --map-background-color - The well behind the map, seen while tiles are on their way.
22
- * @cssproperty --map-block-size - How tall the frame is. A length, since the map fills it.
23
- * @cssproperty --map-border-color - Color of the frame's edge.
24
- * @cssproperty --viewport-control-background-color - The ground under the pan and zoom buttons, one name with `Canvas`.
16
+ * @cssproperty --map-background-color - The color behind the map while tiles load.
17
+ * @cssproperty --map-block-size - The frame's height, as a length.
18
+ * @cssproperty --map-border-color - The frame's border color.
19
+ * @cssproperty --viewport-control-background-color - The background of the pan and zoom buttons. Canvas uses the same property.
25
20
  */
26
21
  export declare class HelixMap extends HelixHeadlessMap {
22
+ /**
23
+ * The background of the pan and zoom buttons. Leave unset for solid. `glass`
24
+ * shows the map through a blur, `frosted` blurs more, and `transparent` has
25
+ * no background. Your theme sets how see-through each one is.
26
+ */
27
+ material?: 'frosted' | 'glass' | 'transparent';
27
28
  static styles: CSSResultGroup;
28
29
  }
29
30
  declare global {
@@ -6,11 +6,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessMap } from '@fusion.dev/helix-headless/map';
9
+ import { property } from 'lit/decorators.js';
9
10
  import { styles as viewportStyles } from '../../shared/viewport/viewport.css.js';
10
11
  import { styles } from './map-root.css.js';
11
12
  let HelixMap = class HelixMap extends HelixHeadlessMap {
12
13
  static { this.styles = [viewportStyles, styles]; }
13
14
  };
15
+ __decorate([
16
+ property({ reflect: true })
17
+ ], HelixMap.prototype, "material", void 0);
14
18
  HelixMap = __decorate([
15
19
  customElement('helix-map')
16
20
  ], HelixMap);
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;