@teamimpact/veda-ui-blocks 0.1.0-beta.13 → 0.1.0-beta.14
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/README.md +1 -14
- package/dist/default.css +149 -40
- package/dist/default.css.map +1 -1
- package/dist/disasters.css +222 -113
- package/dist/disasters.css.map +1 -1
- package/dist/index.d.ts +149 -131
- package/dist/index.js +764 -408
- package/package.json +12 -13
package/dist/index.js
CHANGED
|
@@ -103,74 +103,9 @@ var DEFAULT_EXPANDED_CONTENT_JSX = /* @__PURE__ */ jsxs("div", { className: "blo
|
|
|
103
103
|
] })
|
|
104
104
|
] });
|
|
105
105
|
|
|
106
|
-
// src/components/Cards/Card/Card.tsx
|
|
107
|
-
import { Icon as Icon2 } from "@trussworks/react-uswds";
|
|
108
|
-
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
109
|
-
function Card({
|
|
110
|
-
tag,
|
|
111
|
-
title,
|
|
112
|
-
description,
|
|
113
|
-
subtitle,
|
|
114
|
-
callToAction,
|
|
115
|
-
callToActionSecondary,
|
|
116
|
-
image,
|
|
117
|
-
imagePosition = "cover",
|
|
118
|
-
colorMode = "light",
|
|
119
|
-
isMastHead = false,
|
|
120
|
-
className,
|
|
121
|
-
children
|
|
122
|
-
}) {
|
|
123
|
-
const rootClassName = make_class_name("blocks-card", [
|
|
124
|
-
imagePosition === "left" ? "blocks-card--image-left" : imagePosition === "right" ? "blocks-card--image-right" : void 0,
|
|
125
|
-
colorMode === "dark" ? "blocks-card--dark" : colorMode === "brand" ? "blocks-card--brand" : void 0,
|
|
126
|
-
isMastHead ? "blocks-card--mast-head" : void 0,
|
|
127
|
-
className
|
|
128
|
-
]);
|
|
129
|
-
const hasContent = tag || title || subtitle || description || callToAction || callToActionSecondary;
|
|
130
|
-
return /* @__PURE__ */ jsxs2("div", { className: rootClassName, children: [
|
|
131
|
-
imagePosition === "cover" && /* @__PURE__ */ jsx2("div", { className: "blocks-card__media", children: image }),
|
|
132
|
-
/* @__PURE__ */ jsxs2("div", { className: "blocks-card__content-container", children: [
|
|
133
|
-
imagePosition !== "cover" && /* @__PURE__ */ jsx2("div", { className: "blocks-card__media", children: image }),
|
|
134
|
-
hasContent && /* @__PURE__ */ jsxs2("div", { className: "blocks-card__content", children: [
|
|
135
|
-
tag && /* @__PURE__ */ jsx2("div", { className: "blocks-card__tag", children: tag }),
|
|
136
|
-
title && (typeof title === "string" ? /* @__PURE__ */ jsx2("h2", { className: "blocks-card__title", children: title }) : title),
|
|
137
|
-
subtitle && /* @__PURE__ */ jsx2("div", { className: "blocks-card__subtitle", children: subtitle }),
|
|
138
|
-
description && /* @__PURE__ */ jsx2("p", { className: "blocks-card__description", children: description }),
|
|
139
|
-
(callToAction || callToActionSecondary) && /* @__PURE__ */ jsxs2("div", { className: "blocks-card__actions", children: [
|
|
140
|
-
callToAction && /* @__PURE__ */ jsxs2(
|
|
141
|
-
"a",
|
|
142
|
-
{
|
|
143
|
-
href: callToAction.href,
|
|
144
|
-
className: "usa-button",
|
|
145
|
-
...get_external_anchor_props(callToAction.isExternal),
|
|
146
|
-
children: [
|
|
147
|
-
callToAction.label,
|
|
148
|
-
callToAction.isExternal && /* @__PURE__ */ jsx2(Icon2.Launch, { "aria-hidden": true, focusable: false, size: 3 })
|
|
149
|
-
]
|
|
150
|
-
}
|
|
151
|
-
),
|
|
152
|
-
callToActionSecondary && /* @__PURE__ */ jsxs2(
|
|
153
|
-
"a",
|
|
154
|
-
{
|
|
155
|
-
href: callToActionSecondary.href,
|
|
156
|
-
className: "usa-button usa-button--outline",
|
|
157
|
-
...get_external_anchor_props(callToActionSecondary.isExternal),
|
|
158
|
-
children: [
|
|
159
|
-
callToActionSecondary.label,
|
|
160
|
-
callToActionSecondary.isExternal && /* @__PURE__ */ jsx2(Icon2.Launch, { "aria-hidden": true, focusable: false, size: 3 })
|
|
161
|
-
]
|
|
162
|
-
}
|
|
163
|
-
)
|
|
164
|
-
] })
|
|
165
|
-
] })
|
|
166
|
-
] }),
|
|
167
|
-
children && /* @__PURE__ */ jsx2("div", { className: "blocks-card__children", children })
|
|
168
|
-
] });
|
|
169
|
-
}
|
|
170
|
-
|
|
171
106
|
// src/components/icons/ArrowIcon.tsx
|
|
172
|
-
import { jsx as
|
|
173
|
-
var ArrowIcon = () => /* @__PURE__ */
|
|
107
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
108
|
+
var ArrowIcon = () => /* @__PURE__ */ jsxs2(
|
|
174
109
|
"svg",
|
|
175
110
|
{
|
|
176
111
|
width: "20",
|
|
@@ -180,8 +115,8 @@ var ArrowIcon = () => /* @__PURE__ */ jsxs3(
|
|
|
180
115
|
preserveAspectRatio: "xMidYMid meet",
|
|
181
116
|
"aria-hidden": "true",
|
|
182
117
|
children: [
|
|
183
|
-
/* @__PURE__ */
|
|
184
|
-
/* @__PURE__ */
|
|
118
|
+
/* @__PURE__ */ jsx2("circle", { cx: "10", cy: "10", r: "10", fill: "currentColor" }),
|
|
119
|
+
/* @__PURE__ */ jsx2("g", { transform: "translate(5.333, 5.333)", children: /* @__PURE__ */ jsx2(
|
|
185
120
|
"path",
|
|
186
121
|
{
|
|
187
122
|
fillRule: "evenodd",
|
|
@@ -194,36 +129,188 @@ var ArrowIcon = () => /* @__PURE__ */ jsxs3(
|
|
|
194
129
|
}
|
|
195
130
|
);
|
|
196
131
|
|
|
132
|
+
// src/components/Link/AsLink.tsx
|
|
133
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
134
|
+
function AsLink({
|
|
135
|
+
as,
|
|
136
|
+
isExternal,
|
|
137
|
+
children,
|
|
138
|
+
...rest
|
|
139
|
+
}) {
|
|
140
|
+
const Component = as ?? "a";
|
|
141
|
+
return /* @__PURE__ */ jsx3(
|
|
142
|
+
Component,
|
|
143
|
+
{
|
|
144
|
+
...rest,
|
|
145
|
+
...typeof as !== "string" || as === "a" ? get_external_anchor_props(isExternal) : {},
|
|
146
|
+
children
|
|
147
|
+
}
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// src/components/Link/Link.tsx
|
|
152
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
153
|
+
function Link({
|
|
154
|
+
variant = "text",
|
|
155
|
+
size = "md",
|
|
156
|
+
isExternal,
|
|
157
|
+
className,
|
|
158
|
+
as,
|
|
159
|
+
children,
|
|
160
|
+
...rest
|
|
161
|
+
}) {
|
|
162
|
+
const rootClassName = make_class_name("blocks-link", [
|
|
163
|
+
`blocks-link--${variant}`,
|
|
164
|
+
variant === "button" || variant === "button-outline" ? "usa-button" : void 0,
|
|
165
|
+
variant === "button-outline" ? "usa-button--outline" : void 0,
|
|
166
|
+
variant === "text" ? "usa-button--unstyled" : void 0,
|
|
167
|
+
`blocks-link--${size}`,
|
|
168
|
+
isExternal ? "blocks-link--external usa-link--external" : void 0,
|
|
169
|
+
className
|
|
170
|
+
]);
|
|
171
|
+
const props = {
|
|
172
|
+
className: rootClassName,
|
|
173
|
+
as,
|
|
174
|
+
isExternal,
|
|
175
|
+
...rest
|
|
176
|
+
};
|
|
177
|
+
return /* @__PURE__ */ jsxs3(AsLink, { ...props, children: [
|
|
178
|
+
children,
|
|
179
|
+
variant === "arrow" && /* @__PURE__ */ jsx4(ArrowIcon, {})
|
|
180
|
+
] });
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// src/components/Cards/Card/Card.tsx
|
|
184
|
+
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
185
|
+
function Card(props) {
|
|
186
|
+
const {
|
|
187
|
+
tag,
|
|
188
|
+
title,
|
|
189
|
+
description,
|
|
190
|
+
subtitle,
|
|
191
|
+
callToAction,
|
|
192
|
+
callToActionSecondary,
|
|
193
|
+
image,
|
|
194
|
+
imagePosition = "cover",
|
|
195
|
+
colorMode = "light",
|
|
196
|
+
isMastHead = false,
|
|
197
|
+
className,
|
|
198
|
+
children
|
|
199
|
+
} = props;
|
|
200
|
+
const {
|
|
201
|
+
label: callToActionLabel,
|
|
202
|
+
variant: callToActionVariant = "button",
|
|
203
|
+
...callToActionProps
|
|
204
|
+
} = callToAction ?? {};
|
|
205
|
+
const {
|
|
206
|
+
label: callToActionSecondaryLabel,
|
|
207
|
+
variant: callToActionSecondaryVariant = "button-outline",
|
|
208
|
+
...callToActionSecondaryProps
|
|
209
|
+
} = callToActionSecondary ?? {};
|
|
210
|
+
const rootClassName = make_class_name("blocks-card", [
|
|
211
|
+
imagePosition === "left" ? "blocks-card--image-left" : imagePosition === "right" ? "blocks-card--image-right" : void 0,
|
|
212
|
+
colorMode === "dark" ? "blocks-card--dark" : colorMode === "brand" ? "blocks-card--brand" : void 0,
|
|
213
|
+
isMastHead ? "blocks-card--mast-head" : void 0,
|
|
214
|
+
className
|
|
215
|
+
]);
|
|
216
|
+
const hasContent = tag || title || subtitle || description || callToAction || callToActionSecondary;
|
|
217
|
+
return /* @__PURE__ */ jsxs4("div", { className: rootClassName, children: [
|
|
218
|
+
imagePosition === "cover" && /* @__PURE__ */ jsx5("div", { className: "blocks-card__media", children: image }),
|
|
219
|
+
/* @__PURE__ */ jsxs4("div", { className: "blocks-card__content-container", children: [
|
|
220
|
+
imagePosition !== "cover" && /* @__PURE__ */ jsx5("div", { className: "blocks-card__media", children: image }),
|
|
221
|
+
hasContent && /* @__PURE__ */ jsxs4("div", { className: "blocks-card__content", children: [
|
|
222
|
+
tag && /* @__PURE__ */ jsx5("div", { className: "blocks-card__tag", children: tag }),
|
|
223
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsx5("h2", { className: "blocks-card__title", children: title }) : title),
|
|
224
|
+
subtitle && /* @__PURE__ */ jsx5("div", { className: "blocks-card__subtitle", children: subtitle }),
|
|
225
|
+
description && /* @__PURE__ */ jsx5("p", { className: "blocks-card__description", children: description }),
|
|
226
|
+
(callToAction || callToActionSecondary) && /* @__PURE__ */ jsxs4("div", { className: "blocks-card__actions", children: [
|
|
227
|
+
callToAction && /* @__PURE__ */ jsx5(
|
|
228
|
+
Link,
|
|
229
|
+
{
|
|
230
|
+
...{
|
|
231
|
+
...callToActionProps,
|
|
232
|
+
variant: callToActionVariant,
|
|
233
|
+
children: callToActionLabel
|
|
234
|
+
// TypeScript cannot verify that spread props for callToAction satisfy Omit<ComponentPropsWithRef<T>, "as">
|
|
235
|
+
// for an unconstrained generic T. Cast through unknown preserves T so callers still get
|
|
236
|
+
// accurate prop checking (e.g. href only valid when as="a").
|
|
237
|
+
// TypeScript cannot verify generics when props are spread and generics must be inferred
|
|
238
|
+
// For accurate prop checking, all props need to be explicitly defined
|
|
239
|
+
// ex. ❌ <Card {...props} callToAction={...callToActionProps} /> vs ✅ <Card {...props} callToAction={{label: "text", href="/", as: "a"}} />
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
),
|
|
243
|
+
callToActionSecondary && /* @__PURE__ */ jsx5(
|
|
244
|
+
Link,
|
|
245
|
+
{
|
|
246
|
+
...{
|
|
247
|
+
...callToActionSecondaryProps,
|
|
248
|
+
variant: callToActionSecondaryVariant,
|
|
249
|
+
children: callToActionSecondaryLabel
|
|
250
|
+
// See typescript warning above
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
)
|
|
254
|
+
] })
|
|
255
|
+
] })
|
|
256
|
+
] }),
|
|
257
|
+
children && /* @__PURE__ */ jsx5("div", { className: "blocks-card__children", children })
|
|
258
|
+
] });
|
|
259
|
+
}
|
|
260
|
+
|
|
197
261
|
// src/components/Cards/CardCTA/CardCTA.tsx
|
|
198
|
-
import {
|
|
262
|
+
import { useState as useState2 } from "react";
|
|
263
|
+
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
199
264
|
function CardCTA({
|
|
200
265
|
title,
|
|
201
|
-
|
|
266
|
+
titleAs = "h2",
|
|
202
267
|
description,
|
|
203
268
|
accentColor,
|
|
204
|
-
titleAs = "h2",
|
|
205
269
|
className,
|
|
206
270
|
style,
|
|
271
|
+
isExternal,
|
|
272
|
+
as,
|
|
207
273
|
...rest
|
|
208
274
|
}) {
|
|
209
|
-
const TitleTag = titleAs;
|
|
210
275
|
const rootClassName = make_class_name("blocks-card-cta", [
|
|
211
276
|
!description ? "blocks-card-cta--without-description" : void 0,
|
|
212
277
|
className
|
|
213
278
|
]);
|
|
214
279
|
const accentColorStyle = accentColor ? { "--blocks-card-cta-custom-accent-color": accentColor } : void 0;
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
280
|
+
const [isHovered, setIsHovered] = useState2(false);
|
|
281
|
+
const props = {
|
|
282
|
+
className: rootClassName,
|
|
283
|
+
style: { ...accentColorStyle, ...style },
|
|
284
|
+
as,
|
|
285
|
+
isExternal,
|
|
286
|
+
...rest
|
|
287
|
+
};
|
|
288
|
+
return /* @__PURE__ */ jsx6(
|
|
289
|
+
AsLink,
|
|
290
|
+
{
|
|
291
|
+
...props,
|
|
292
|
+
onMouseEnter: () => setIsHovered(true),
|
|
293
|
+
onMouseLeave: () => setIsHovered(false),
|
|
294
|
+
children: /* @__PURE__ */ jsxs5("div", { className: "blocks-card-cta__body", children: [
|
|
295
|
+
/* @__PURE__ */ jsx6(
|
|
296
|
+
Link,
|
|
297
|
+
{
|
|
298
|
+
as: titleAs,
|
|
299
|
+
className: `blocks-card-cta__title ${isHovered ? "usa-button--hover" : ""}`,
|
|
300
|
+
isExternal,
|
|
301
|
+
size: "lg",
|
|
302
|
+
variant: "arrow",
|
|
303
|
+
children: title
|
|
304
|
+
}
|
|
305
|
+
),
|
|
306
|
+
description && /* @__PURE__ */ jsx6("p", { className: "blocks-card-cta__description", children: description })
|
|
307
|
+
] })
|
|
308
|
+
}
|
|
309
|
+
);
|
|
222
310
|
}
|
|
223
311
|
|
|
224
312
|
// src/components/Cards/CardDetailed/CardDetailed.tsx
|
|
225
|
-
import {
|
|
226
|
-
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
313
|
+
import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
227
314
|
function CardDetailed({
|
|
228
315
|
intro,
|
|
229
316
|
title,
|
|
@@ -236,44 +323,57 @@ function CardDetailed({
|
|
|
236
323
|
imagePosition = "top",
|
|
237
324
|
className = ""
|
|
238
325
|
}) {
|
|
326
|
+
const {
|
|
327
|
+
label: callToActionLabel,
|
|
328
|
+
variant: callToActionVariant = "button",
|
|
329
|
+
...callToActionProps
|
|
330
|
+
} = callToAction ?? {};
|
|
331
|
+
const {
|
|
332
|
+
label: callToActionSecondaryLabel,
|
|
333
|
+
variant: callToActionSecondaryVariant = "button-outline",
|
|
334
|
+
...callToActionSecondaryProps
|
|
335
|
+
} = callToActionSecondary ?? {};
|
|
239
336
|
const rootClassName = make_class_name("blocks-card-detailed", [
|
|
240
337
|
imagePosition !== "top" ? `blocks-card-detailed--image-${imagePosition}` : "",
|
|
241
338
|
className
|
|
242
339
|
]);
|
|
243
340
|
const hasContent = intro || title || description || tags.length || callToAction || callToActionSecondary;
|
|
244
|
-
return /* @__PURE__ */
|
|
245
|
-
/* @__PURE__ */
|
|
341
|
+
return /* @__PURE__ */ jsxs6("div", { className: rootClassName, children: [
|
|
342
|
+
/* @__PURE__ */ jsxs6("div", { className: "blocks-card-detailed__media", children: [
|
|
246
343
|
image,
|
|
247
|
-
tagPrimary && /* @__PURE__ */
|
|
344
|
+
tagPrimary && /* @__PURE__ */ jsx7("div", { className: "blocks-card-detailed__tag-primary", children: tagPrimary })
|
|
248
345
|
] }),
|
|
249
|
-
hasContent && /* @__PURE__ */
|
|
250
|
-
intro && /* @__PURE__ */
|
|
251
|
-
title && (typeof title === "string" ? /* @__PURE__ */
|
|
252
|
-
isNonEmptyArray(tags) && /* @__PURE__ */
|
|
253
|
-
description && /* @__PURE__ */
|
|
254
|
-
(callToAction || callToActionSecondary) && /* @__PURE__ */
|
|
255
|
-
callToAction && /* @__PURE__ */
|
|
256
|
-
|
|
346
|
+
hasContent && /* @__PURE__ */ jsxs6("div", { className: "blocks-card-detailed__content-container", children: [
|
|
347
|
+
intro && /* @__PURE__ */ jsx7("div", { className: "blocks-card-detailed__intro", title: intro, children: intro }),
|
|
348
|
+
title && (typeof title === "string" ? /* @__PURE__ */ jsx7("h2", { className: "blocks-card-detailed__title", title, children: title }) : title),
|
|
349
|
+
isNonEmptyArray(tags) && /* @__PURE__ */ jsx7("div", { className: "blocks-card-detailed__tags", children: tags }),
|
|
350
|
+
description && /* @__PURE__ */ jsx7("p", { className: "blocks-card-detailed__description", children: description }),
|
|
351
|
+
(callToAction || callToActionSecondary) && /* @__PURE__ */ jsxs6("div", { className: "blocks-card-detailed__actions", children: [
|
|
352
|
+
callToAction && /* @__PURE__ */ jsx7(
|
|
353
|
+
Link,
|
|
257
354
|
{
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
callToAction
|
|
263
|
-
|
|
264
|
-
|
|
355
|
+
...{
|
|
356
|
+
...callToActionProps,
|
|
357
|
+
variant: callToActionVariant,
|
|
358
|
+
children: callToActionLabel
|
|
359
|
+
// TypeScript cannot verify that spread props for callToAction satisfy Omit<ComponentPropsWithRef<T>, "as">
|
|
360
|
+
// for an unconstrained generic T. Cast through unknown preserves T so callers still get
|
|
361
|
+
// accurate prop checking (e.g. href only valid when as="a").
|
|
362
|
+
// TypeScript cannot verify generics when props are spread and generics must be inferred
|
|
363
|
+
// For accurate prop checking, all props need to be explicitly defined
|
|
364
|
+
// ex. ❌ <CardDetailed {...props} callToAction={...callToActionProps} /> vs ✅ <CardDetailed {...props} callToAction={{label: "text", href="/", as: "a"}} />
|
|
365
|
+
}
|
|
265
366
|
}
|
|
266
367
|
),
|
|
267
|
-
callToActionSecondary && /* @__PURE__ */
|
|
268
|
-
|
|
368
|
+
callToActionSecondary && /* @__PURE__ */ jsx7(
|
|
369
|
+
Link,
|
|
269
370
|
{
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
]
|
|
371
|
+
...{
|
|
372
|
+
...callToActionSecondaryProps,
|
|
373
|
+
variant: callToActionSecondaryVariant,
|
|
374
|
+
children: callToActionSecondaryLabel
|
|
375
|
+
// See typescript warning above
|
|
376
|
+
}
|
|
277
377
|
}
|
|
278
378
|
)
|
|
279
379
|
] })
|
|
@@ -282,34 +382,52 @@ function CardDetailed({
|
|
|
282
382
|
}
|
|
283
383
|
|
|
284
384
|
// src/components/Cards/CardMini/CardMini.tsx
|
|
285
|
-
import { jsx as
|
|
286
|
-
function CardMini({
|
|
385
|
+
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
386
|
+
function CardMini({
|
|
387
|
+
image,
|
|
388
|
+
title,
|
|
389
|
+
titleAs = "h2",
|
|
390
|
+
tag,
|
|
391
|
+
className,
|
|
392
|
+
isExternal,
|
|
393
|
+
as,
|
|
394
|
+
...rest
|
|
395
|
+
}) {
|
|
287
396
|
const TitleTag = titleAs;
|
|
288
|
-
const hasTag = Boolean(tag);
|
|
289
397
|
const rootClassName = make_class_name("blocks-card-mini", [
|
|
290
|
-
|
|
398
|
+
isDefined(tag) ? "blocks-card-mini--with-tag" : void 0,
|
|
291
399
|
className
|
|
292
400
|
]);
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
401
|
+
const titleClassName = make_class_name("blocks-card-mini__title", [
|
|
402
|
+
isExternal ? "usa-link--external" : void 0
|
|
403
|
+
]);
|
|
404
|
+
const props = {
|
|
405
|
+
className: rootClassName,
|
|
406
|
+
as,
|
|
407
|
+
isExternal,
|
|
408
|
+
...rest
|
|
409
|
+
};
|
|
410
|
+
return /* @__PURE__ */ jsxs7(AsLink, { ...props, children: [
|
|
411
|
+
/* @__PURE__ */ jsx8("div", { className: "blocks-card-mini__image", children: image }),
|
|
412
|
+
/* @__PURE__ */ jsxs7("div", { className: "blocks-card-mini__body", children: [
|
|
413
|
+
/* @__PURE__ */ jsx8(TitleTag, { className: titleClassName, title, children: title }),
|
|
414
|
+
tag && /* @__PURE__ */ jsx8("div", { className: "blocks-card-mini__tag", children: tag })
|
|
298
415
|
] })
|
|
299
416
|
] });
|
|
300
417
|
}
|
|
301
418
|
|
|
302
419
|
// src/components/Cards/CardSimple/CardSimple.tsx
|
|
303
|
-
import { jsx as
|
|
420
|
+
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
304
421
|
function CardSimple({
|
|
305
|
-
title,
|
|
306
422
|
image,
|
|
307
|
-
|
|
308
|
-
|
|
423
|
+
title,
|
|
424
|
+
titleAs = "h2",
|
|
309
425
|
tag,
|
|
310
426
|
size = "default",
|
|
311
|
-
|
|
312
|
-
|
|
427
|
+
className,
|
|
428
|
+
isExternal,
|
|
429
|
+
as,
|
|
430
|
+
...rest
|
|
313
431
|
}) {
|
|
314
432
|
const TitleTag = titleAs;
|
|
315
433
|
const rootClassName = make_class_name("blocks-card-simple", [
|
|
@@ -319,21 +437,290 @@ function CardSimple({
|
|
|
319
437
|
const titleClassName = make_class_name("blocks-card-simple__title", [
|
|
320
438
|
isExternal ? "usa-link--external" : void 0
|
|
321
439
|
]);
|
|
322
|
-
|
|
323
|
-
|
|
440
|
+
const props = {
|
|
441
|
+
className: rootClassName,
|
|
442
|
+
as,
|
|
443
|
+
isExternal,
|
|
444
|
+
...rest
|
|
445
|
+
};
|
|
446
|
+
return /* @__PURE__ */ jsxs8(AsLink, { ...props, children: [
|
|
447
|
+
/* @__PURE__ */ jsxs8("div", { className: "blocks-card-simple__media", children: [
|
|
324
448
|
image,
|
|
325
|
-
/* @__PURE__ */
|
|
449
|
+
/* @__PURE__ */ jsx9("div", { className: "blocks-card-simple__overlay", "aria-hidden": "true" })
|
|
326
450
|
] }),
|
|
327
|
-
/* @__PURE__ */
|
|
328
|
-
tag && /* @__PURE__ */
|
|
329
|
-
/* @__PURE__ */
|
|
451
|
+
/* @__PURE__ */ jsxs8("div", { className: "blocks-card-simple__body", children: [
|
|
452
|
+
tag && /* @__PURE__ */ jsx9("div", { className: "blocks-card-simple__tag", children: tag }),
|
|
453
|
+
/* @__PURE__ */ jsx9(TitleTag, { className: titleClassName, children: title })
|
|
330
454
|
] })
|
|
331
455
|
] });
|
|
332
456
|
}
|
|
333
457
|
|
|
458
|
+
// src/components/Carousel/Carousel.tsx
|
|
459
|
+
import useEmblaCarousel from "embla-carousel-react";
|
|
460
|
+
import { useCallback, useEffect, useState as useState3 } from "react";
|
|
461
|
+
|
|
462
|
+
// src/components/icons/NavigateBeforeIcon.tsx
|
|
463
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
464
|
+
var NavigateBeforeIcon = () => /* @__PURE__ */ jsx10(
|
|
465
|
+
"svg",
|
|
466
|
+
{
|
|
467
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
468
|
+
width: "24",
|
|
469
|
+
height: "24",
|
|
470
|
+
viewBox: "0 0 24 24",
|
|
471
|
+
"aria-hidden": "true",
|
|
472
|
+
focusable: "false",
|
|
473
|
+
role: "img",
|
|
474
|
+
children: /* @__PURE__ */ jsx10("path", { d: "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z" })
|
|
475
|
+
}
|
|
476
|
+
);
|
|
477
|
+
|
|
478
|
+
// src/components/icons/NavigateNextIcon.tsx
|
|
479
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
480
|
+
var NavigateNextIcon = () => /* @__PURE__ */ jsx11(
|
|
481
|
+
"svg",
|
|
482
|
+
{
|
|
483
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
484
|
+
width: "24",
|
|
485
|
+
height: "24",
|
|
486
|
+
viewBox: "0 0 24 24",
|
|
487
|
+
"aria-hidden": "true",
|
|
488
|
+
focusable: "false",
|
|
489
|
+
role: "img",
|
|
490
|
+
children: /* @__PURE__ */ jsx11("path", { d: "m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z" })
|
|
491
|
+
}
|
|
492
|
+
);
|
|
493
|
+
|
|
494
|
+
// src/foundations/theme-token-bridge.helpers.ts
|
|
495
|
+
var BASE_COLOR_TOKENS = [
|
|
496
|
+
"base-lightest",
|
|
497
|
+
"base-lighter",
|
|
498
|
+
"base-light",
|
|
499
|
+
"base",
|
|
500
|
+
"base-dark",
|
|
501
|
+
"base-darker",
|
|
502
|
+
"base-darkest",
|
|
503
|
+
"ink"
|
|
504
|
+
];
|
|
505
|
+
var PRIMARY_COLOR_TOKENS = [
|
|
506
|
+
"primary-lightest",
|
|
507
|
+
"primary-lighter",
|
|
508
|
+
"primary-light",
|
|
509
|
+
"primary",
|
|
510
|
+
"primary-vivid",
|
|
511
|
+
"primary-dark",
|
|
512
|
+
"primary-darker",
|
|
513
|
+
"primary-darkest"
|
|
514
|
+
];
|
|
515
|
+
var SECONDARY_COLOR_TOKENS = [
|
|
516
|
+
"secondary-lightest",
|
|
517
|
+
"secondary-lighter",
|
|
518
|
+
"secondary-light",
|
|
519
|
+
"secondary",
|
|
520
|
+
"secondary-vivid",
|
|
521
|
+
"secondary-dark",
|
|
522
|
+
"secondary-darker",
|
|
523
|
+
"secondary-darkest"
|
|
524
|
+
];
|
|
525
|
+
var ACCENT_COOL_COLOR_TOKENS = [
|
|
526
|
+
"accent-cool-lightest",
|
|
527
|
+
"accent-cool-lighter",
|
|
528
|
+
"accent-cool-light",
|
|
529
|
+
"accent-cool",
|
|
530
|
+
"accent-cool-dark",
|
|
531
|
+
"accent-cool-darker",
|
|
532
|
+
"accent-cool-darkest"
|
|
533
|
+
];
|
|
534
|
+
var ACCENT_WARM_COLOR_TOKENS = [
|
|
535
|
+
"accent-warm-lightest",
|
|
536
|
+
"accent-warm-lighter",
|
|
537
|
+
"accent-warm-light",
|
|
538
|
+
"accent-warm",
|
|
539
|
+
"accent-warm-dark",
|
|
540
|
+
"accent-warm-darker",
|
|
541
|
+
"accent-warm-darkest"
|
|
542
|
+
];
|
|
543
|
+
var INFO_COLOR_TOKENS = [
|
|
544
|
+
"info-lighter",
|
|
545
|
+
"info-light",
|
|
546
|
+
"info",
|
|
547
|
+
"info-dark",
|
|
548
|
+
"info-darker"
|
|
549
|
+
];
|
|
550
|
+
var WARNING_COLOR_TOKENS = [
|
|
551
|
+
"warning-lighter",
|
|
552
|
+
"warning-light",
|
|
553
|
+
"warning",
|
|
554
|
+
"warning-dark",
|
|
555
|
+
"warning-darker"
|
|
556
|
+
];
|
|
557
|
+
var ERROR_COLOR_TOKENS = [
|
|
558
|
+
"error-lighter",
|
|
559
|
+
"error-light",
|
|
560
|
+
"error",
|
|
561
|
+
"error-dark",
|
|
562
|
+
"error-darker"
|
|
563
|
+
];
|
|
564
|
+
var SUCCESS_COLOR_TOKENS = [
|
|
565
|
+
"success-lighter",
|
|
566
|
+
"success-light",
|
|
567
|
+
"success",
|
|
568
|
+
"success-dark",
|
|
569
|
+
"success-darker"
|
|
570
|
+
];
|
|
571
|
+
var DISABLED_COLOR_TOKENS = [
|
|
572
|
+
"disabled-lighter",
|
|
573
|
+
"disabled-light",
|
|
574
|
+
"disabled",
|
|
575
|
+
"disabled-dark",
|
|
576
|
+
"disabled-darker"
|
|
577
|
+
];
|
|
578
|
+
var EMERGENCY_COLOR_TOKENS = ["emergency", "emergency-dark"];
|
|
579
|
+
var COLOR_TOKENS = [
|
|
580
|
+
...BASE_COLOR_TOKENS,
|
|
581
|
+
...PRIMARY_COLOR_TOKENS,
|
|
582
|
+
...SECONDARY_COLOR_TOKENS,
|
|
583
|
+
...ACCENT_COOL_COLOR_TOKENS,
|
|
584
|
+
...ACCENT_WARM_COLOR_TOKENS,
|
|
585
|
+
...INFO_COLOR_TOKENS,
|
|
586
|
+
...WARNING_COLOR_TOKENS,
|
|
587
|
+
...ERROR_COLOR_TOKENS,
|
|
588
|
+
...SUCCESS_COLOR_TOKENS,
|
|
589
|
+
...EMERGENCY_COLOR_TOKENS,
|
|
590
|
+
...DISABLED_COLOR_TOKENS
|
|
591
|
+
];
|
|
592
|
+
var resolveColorToken = (color) => COLOR_TOKENS.includes(color) ? `var(--color-${color})` : color;
|
|
593
|
+
|
|
594
|
+
// src/components/icons/CloseIcon.tsx
|
|
595
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
596
|
+
var CloseIcon = () => /* @__PURE__ */ jsx12("svg", { height: "24", width: "24", viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", children: /* @__PURE__ */ jsx12("path", { d: "M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) });
|
|
597
|
+
|
|
598
|
+
// src/components/Tag/Tag.tsx
|
|
599
|
+
import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
600
|
+
function Tag({
|
|
601
|
+
variant = "solid",
|
|
602
|
+
size = "default",
|
|
603
|
+
color,
|
|
604
|
+
bgColor,
|
|
605
|
+
borderColor,
|
|
606
|
+
textColor,
|
|
607
|
+
icon,
|
|
608
|
+
onClose,
|
|
609
|
+
children,
|
|
610
|
+
className
|
|
611
|
+
}) {
|
|
612
|
+
const rootClassName = make_class_name("blocks-tag", [
|
|
613
|
+
`blocks-tag--${variant}`,
|
|
614
|
+
size === "big" ? "blocks-tag--big" : void 0,
|
|
615
|
+
icon ? "blocks-tag--icon" : void 0,
|
|
616
|
+
onClose ? "blocks-tag--x-close" : void 0,
|
|
617
|
+
className
|
|
618
|
+
]);
|
|
619
|
+
const customStyle = color || textColor || bgColor || borderColor ? {
|
|
620
|
+
...color ? { "--blocks-tag-custom-color": resolveColorToken(color) } : void 0,
|
|
621
|
+
...textColor ? { "--blocks-tag-custom-text-color": resolveColorToken(textColor) } : void 0,
|
|
622
|
+
...bgColor ? { "--blocks-tag-custom-bg-color": resolveColorToken(bgColor) } : void 0,
|
|
623
|
+
...borderColor ? { "--blocks-tag-custom-border-color": resolveColorToken(borderColor) } : void 0
|
|
624
|
+
} : void 0;
|
|
625
|
+
return /* @__PURE__ */ jsxs9("span", { className: rootClassName, style: customStyle, children: [
|
|
626
|
+
icon && /* @__PURE__ */ jsx13("span", { className: "blocks-tag__icon", children: icon }),
|
|
627
|
+
children,
|
|
628
|
+
onClose && /* @__PURE__ */ jsx13(
|
|
629
|
+
"button",
|
|
630
|
+
{
|
|
631
|
+
type: "button",
|
|
632
|
+
className: "blocks-tag__close-button",
|
|
633
|
+
"aria-label": "Remove tag",
|
|
634
|
+
tabIndex: 0,
|
|
635
|
+
onClick: onClose,
|
|
636
|
+
children: /* @__PURE__ */ jsx13(CloseIcon, {})
|
|
637
|
+
}
|
|
638
|
+
)
|
|
639
|
+
] });
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
// src/components/Carousel/Carousel.tsx
|
|
643
|
+
import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
644
|
+
function Carousel({ items, maxVisibleItems = 2, className }) {
|
|
645
|
+
const [emblaRef, emblaApi] = useEmblaCarousel({
|
|
646
|
+
loop: false,
|
|
647
|
+
slidesToScroll: "auto"
|
|
648
|
+
});
|
|
649
|
+
const [, forceUpdate] = useState3(0);
|
|
650
|
+
useEffect(() => {
|
|
651
|
+
if (!emblaApi) return;
|
|
652
|
+
const onEmblaStateChange = () => forceUpdate((n) => n + 1);
|
|
653
|
+
emblaApi.on("select", onEmblaStateChange).on("reInit", onEmblaStateChange).on("init", onEmblaStateChange);
|
|
654
|
+
}, [emblaApi]);
|
|
655
|
+
const scrollPrev = useCallback(() => emblaApi?.scrollPrev(), [emblaApi]);
|
|
656
|
+
const scrollNext = useCallback(() => emblaApi?.scrollNext(), [emblaApi]);
|
|
657
|
+
const showControls = items.length > maxVisibleItems;
|
|
658
|
+
const effectiveVisibleItems = Math.min(items.length, maxVisibleItems);
|
|
659
|
+
return /* @__PURE__ */ jsxs10("div", { className: make_class_name("blocks-carousel", [className]), children: [
|
|
660
|
+
/* @__PURE__ */ jsx14("div", { className: "blocks-carousel__viewport", ref: emblaRef, children: /* @__PURE__ */ jsx14("div", { className: "blocks-carousel__track", children: items.map(({ tag: { label: tagLabel, ...tagProps } = {}, ...cardProps }, index) => /* @__PURE__ */ jsx14(
|
|
661
|
+
"div",
|
|
662
|
+
{
|
|
663
|
+
className: make_class_name("blocks-carousel__item", [
|
|
664
|
+
`blocks-carousel__item--${effectiveVisibleItems}`
|
|
665
|
+
]),
|
|
666
|
+
children: /* @__PURE__ */ jsx14(
|
|
667
|
+
Card,
|
|
668
|
+
{
|
|
669
|
+
...cardProps,
|
|
670
|
+
...tagLabel && { tag: /* @__PURE__ */ jsx14(Tag, { ...tagProps, children: tagLabel }) }
|
|
671
|
+
}
|
|
672
|
+
)
|
|
673
|
+
},
|
|
674
|
+
index
|
|
675
|
+
)) }) }),
|
|
676
|
+
/* @__PURE__ */ jsxs10(
|
|
677
|
+
"div",
|
|
678
|
+
{
|
|
679
|
+
className: make_class_name("blocks-carousel__controls", [
|
|
680
|
+
!showControls ? "blocks-carousel__controls--hidden" : void 0
|
|
681
|
+
]),
|
|
682
|
+
"aria-hidden": !showControls || void 0,
|
|
683
|
+
children: [
|
|
684
|
+
/* @__PURE__ */ jsx14(
|
|
685
|
+
Link,
|
|
686
|
+
{
|
|
687
|
+
as: "button",
|
|
688
|
+
type: "button",
|
|
689
|
+
variant: "text",
|
|
690
|
+
className: "blocks-carousel__btn blocks-carousel__btn--prev",
|
|
691
|
+
onClick: scrollPrev,
|
|
692
|
+
disabled: !emblaApi?.canScrollPrev(),
|
|
693
|
+
"aria-label": "Previous slide",
|
|
694
|
+
children: /* @__PURE__ */ jsx14(NavigateBeforeIcon, {})
|
|
695
|
+
}
|
|
696
|
+
),
|
|
697
|
+
/* @__PURE__ */ jsxs10("span", { className: "blocks-carousel__counter", "aria-live": "polite", children: [
|
|
698
|
+
(emblaApi?.selectedScrollSnap() ?? 0) + 1,
|
|
699
|
+
" / ",
|
|
700
|
+
emblaApi?.scrollSnapList().length ?? 0
|
|
701
|
+
] }),
|
|
702
|
+
/* @__PURE__ */ jsx14(
|
|
703
|
+
Link,
|
|
704
|
+
{
|
|
705
|
+
as: "button",
|
|
706
|
+
type: "button",
|
|
707
|
+
variant: "text",
|
|
708
|
+
className: "blocks-carousel__btn blocks-carousel__btn--next",
|
|
709
|
+
onClick: scrollNext,
|
|
710
|
+
disabled: !emblaApi?.canScrollNext(),
|
|
711
|
+
"aria-label": "Next slide",
|
|
712
|
+
children: /* @__PURE__ */ jsx14(NavigateNextIcon, {})
|
|
713
|
+
}
|
|
714
|
+
)
|
|
715
|
+
]
|
|
716
|
+
}
|
|
717
|
+
)
|
|
718
|
+
] });
|
|
719
|
+
}
|
|
720
|
+
|
|
334
721
|
// src/components/Footer/Footer.tsx
|
|
335
|
-
import { GridContainer, Icon as
|
|
336
|
-
import { Fragment, jsx as
|
|
722
|
+
import { GridContainer, Icon as Icon2, Link as Link2, Footer as USWDSFooter } from "@trussworks/react-uswds";
|
|
723
|
+
import { Fragment, jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
337
724
|
function Footer({
|
|
338
725
|
portalDetails,
|
|
339
726
|
primaryNavItems,
|
|
@@ -342,21 +729,21 @@ function Footer({
|
|
|
342
729
|
className
|
|
343
730
|
}) {
|
|
344
731
|
const footerClassName = make_class_name("blocks-footer", [className]);
|
|
345
|
-
return /* @__PURE__ */
|
|
732
|
+
return /* @__PURE__ */ jsx15(
|
|
346
733
|
USWDSFooter,
|
|
347
734
|
{
|
|
348
735
|
className: footerClassName,
|
|
349
736
|
size: "slim",
|
|
350
|
-
primary: /* @__PURE__ */
|
|
351
|
-
/* @__PURE__ */
|
|
352
|
-
portalDetails.logo ? /* @__PURE__ */
|
|
353
|
-
/* @__PURE__ */
|
|
354
|
-
/* @__PURE__ */
|
|
355
|
-
portalDetails.tagline ? /* @__PURE__ */
|
|
737
|
+
primary: /* @__PURE__ */ jsx15(GridContainer, { children: /* @__PURE__ */ jsxs11("section", { className: "blocks-footer__primary-section", children: [
|
|
738
|
+
/* @__PURE__ */ jsxs11("div", { className: "blocks-footer__title", children: [
|
|
739
|
+
portalDetails.logo ? /* @__PURE__ */ jsx15("div", { className: "blocks-footer__logo", children: portalDetails.logo }) : null,
|
|
740
|
+
/* @__PURE__ */ jsxs11("div", { className: "blocks-footer__title-text", children: [
|
|
741
|
+
/* @__PURE__ */ jsx15("span", { children: portalDetails.title }),
|
|
742
|
+
portalDetails.tagline ? /* @__PURE__ */ jsx15("p", { children: portalDetails.tagline }) : null
|
|
356
743
|
] })
|
|
357
744
|
] }),
|
|
358
|
-
primaryNavItems.length > 0 ? /* @__PURE__ */
|
|
359
|
-
|
|
745
|
+
primaryNavItems.length > 0 ? /* @__PURE__ */ jsx15("nav", { className: "blocks-footer__primary-nav", "aria-label": "Footer primary navigation", children: /* @__PURE__ */ jsx15("ul", { children: primaryNavItems.map(({ label, href, isExternal }) => /* @__PURE__ */ jsx15("li", { className: "usa-footer__primary-content", children: /* @__PURE__ */ jsx15(
|
|
746
|
+
Link2,
|
|
360
747
|
{
|
|
361
748
|
className: "usa-footer__primary-link",
|
|
362
749
|
href,
|
|
@@ -365,31 +752,31 @@ function Footer({
|
|
|
365
752
|
}
|
|
366
753
|
) }, href)) }) }) : null
|
|
367
754
|
] }) }),
|
|
368
|
-
secondary: /* @__PURE__ */
|
|
369
|
-
secondaryNavItems.length > 0 ? /* @__PURE__ */
|
|
755
|
+
secondary: /* @__PURE__ */ jsxs11(Fragment, { children: [
|
|
756
|
+
secondaryNavItems.length > 0 ? /* @__PURE__ */ jsx15("section", { className: "blocks-footer__secondary-section-upper", children: /* @__PURE__ */ jsx15(
|
|
370
757
|
"nav",
|
|
371
758
|
{
|
|
372
759
|
className: "blocks-footer__secondary-nav",
|
|
373
760
|
"aria-label": "Footer secondary navigation",
|
|
374
|
-
children: /* @__PURE__ */
|
|
761
|
+
children: /* @__PURE__ */ jsx15("ul", { children: secondaryNavItems.map(({ label, href, isExternal }) => /* @__PURE__ */ jsx15("li", { className: "usa-footer__secondary-link", children: /* @__PURE__ */ jsx15(Link2, { href, ...get_external_anchor_props(isExternal), children: label }) }, href)) })
|
|
375
762
|
}
|
|
376
763
|
) }) : null,
|
|
377
|
-
utilityNavItems?.length || portalDetails.updatedDate || portalDetails.contacts?.length ? /* @__PURE__ */
|
|
378
|
-
utilityNavItems?.length ? /* @__PURE__ */
|
|
764
|
+
utilityNavItems?.length || portalDetails.updatedDate || portalDetails.contacts?.length ? /* @__PURE__ */ jsxs11("section", { className: "blocks-footer__secondary-section-lower", children: [
|
|
765
|
+
utilityNavItems?.length ? /* @__PURE__ */ jsx15("nav", { className: "blocks-footer__utility-nav", "aria-label": "Site utilities", children: /* @__PURE__ */ jsx15("ul", { children: utilityNavItems.length ? utilityNavItems.map(({ text, label, href, isExternal }) => /* @__PURE__ */ jsxs11("li", { children: [
|
|
379
766
|
text,
|
|
380
767
|
" ",
|
|
381
|
-
/* @__PURE__ */
|
|
768
|
+
/* @__PURE__ */ jsx15(Link2, { href, ...get_external_anchor_props(isExternal), children: label })
|
|
382
769
|
] }, href)) : null }) }) : null,
|
|
383
|
-
portalDetails.updatedDate || portalDetails.contacts?.length ? /* @__PURE__ */
|
|
384
|
-
portalDetails.updatedDate ? /* @__PURE__ */
|
|
770
|
+
portalDetails.updatedDate || portalDetails.contacts?.length ? /* @__PURE__ */ jsxs11("div", { className: "blocks-footer__secondary-meta", children: [
|
|
771
|
+
portalDetails.updatedDate ? /* @__PURE__ */ jsxs11("p", { children: [
|
|
385
772
|
"Site last updated: ",
|
|
386
773
|
portalDetails.updatedDate
|
|
387
774
|
] }) : null,
|
|
388
|
-
portalDetails.contacts?.length ? /* @__PURE__ */
|
|
389
|
-
/* @__PURE__ */
|
|
390
|
-
/* @__PURE__ */
|
|
391
|
-
/* @__PURE__ */
|
|
392
|
-
/* @__PURE__ */
|
|
775
|
+
portalDetails.contacts?.length ? /* @__PURE__ */ jsx15("nav", { className: "blocks-footer__contacts-nav", "aria-label": "Site contacts", children: /* @__PURE__ */ jsx15("ul", { children: portalDetails.contacts.map(({ label, name, email }) => /* @__PURE__ */ jsxs11("li", { children: [
|
|
776
|
+
/* @__PURE__ */ jsx15("span", { children: label }),
|
|
777
|
+
/* @__PURE__ */ jsxs11(Link2, { href: `mailto:${email}`, ...get_external_anchor_props(), children: [
|
|
778
|
+
/* @__PURE__ */ jsx15(Icon2.Mail, { "aria-hidden": "true", focusable: false }),
|
|
779
|
+
/* @__PURE__ */ jsx15("span", { children: name })
|
|
393
780
|
] })
|
|
394
781
|
] }, `${label}-${email}`)) }) }) : null
|
|
395
782
|
] }) : null
|
|
@@ -401,14 +788,14 @@ function Footer({
|
|
|
401
788
|
|
|
402
789
|
// src/components/Header/Header.tsx
|
|
403
790
|
import { NavMenuButton, PrimaryNav, Title, Header as USWDSHeader } from "@trussworks/react-uswds";
|
|
404
|
-
import { useCallback, useMemo, useRef as useRef2, useState as
|
|
791
|
+
import { useCallback as useCallback2, useMemo, useRef as useRef2, useState as useState4 } from "react";
|
|
405
792
|
|
|
406
793
|
// src/hooks/useClickOutside.ts
|
|
407
|
-
import { useEffect, useRef } from "react";
|
|
794
|
+
import { useEffect as useEffect2, useRef } from "react";
|
|
408
795
|
function useClickOutside(callback, options) {
|
|
409
796
|
const ref = useRef(null);
|
|
410
797
|
const { excludeRefs, bindEscapeKey } = options ?? {};
|
|
411
|
-
|
|
798
|
+
useEffect2(() => {
|
|
412
799
|
const handleClickOutside = (event) => {
|
|
413
800
|
if ([ref, ...excludeRefs ?? []].every(
|
|
414
801
|
(r) => r.current && !r.current.contains(event.target)
|
|
@@ -419,7 +806,7 @@ function useClickOutside(callback, options) {
|
|
|
419
806
|
document.addEventListener("click", handleClickOutside);
|
|
420
807
|
return () => document.removeEventListener("click", handleClickOutside);
|
|
421
808
|
}, [callback, excludeRefs]);
|
|
422
|
-
|
|
809
|
+
useEffect2(() => {
|
|
423
810
|
if (!bindEscapeKey) return;
|
|
424
811
|
const handleEscape = (event) => {
|
|
425
812
|
if (event.key === "Escape") {
|
|
@@ -435,9 +822,9 @@ function useClickOutside(callback, options) {
|
|
|
435
822
|
}
|
|
436
823
|
|
|
437
824
|
// src/hooks/useWindowResize.ts
|
|
438
|
-
import { useEffect as
|
|
825
|
+
import { useEffect as useEffect3 } from "react";
|
|
439
826
|
function useWindowResize(handleResize) {
|
|
440
|
-
|
|
827
|
+
useEffect3(() => {
|
|
441
828
|
window.addEventListener("resize", handleResize);
|
|
442
829
|
return () => {
|
|
443
830
|
window.removeEventListener("resize", handleResize);
|
|
@@ -446,8 +833,8 @@ function useWindowResize(handleResize) {
|
|
|
446
833
|
}
|
|
447
834
|
|
|
448
835
|
// src/components/Header/Header.helpers.tsx
|
|
449
|
-
import { Link as
|
|
450
|
-
import { Fragment as Fragment2, jsx as
|
|
836
|
+
import { Link as Link3, Menu, NavDropDownButton } from "@trussworks/react-uswds";
|
|
837
|
+
import { Fragment as Fragment2, jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
451
838
|
var make_nav_items_initial_state = (navItems) => {
|
|
452
839
|
const initialState = {};
|
|
453
840
|
const initialProps = navItems.map((item) => {
|
|
@@ -479,14 +866,14 @@ var make_menu_link_jsx = ({ label, href, isExternal, isPrimary }, options) => {
|
|
|
479
866
|
if (isCurrent) {
|
|
480
867
|
className.push("usa-current");
|
|
481
868
|
}
|
|
482
|
-
return /* @__PURE__ */
|
|
869
|
+
return /* @__PURE__ */ jsx16(
|
|
483
870
|
"a",
|
|
484
871
|
{
|
|
485
872
|
href,
|
|
486
873
|
className: className.join(" "),
|
|
487
874
|
"aria-current": isCurrent ? "page" : void 0,
|
|
488
875
|
...get_external_anchor_props(isExternal),
|
|
489
|
-
children: /* @__PURE__ */
|
|
876
|
+
children: /* @__PURE__ */ jsx16("span", { children: label })
|
|
490
877
|
},
|
|
491
878
|
href
|
|
492
879
|
);
|
|
@@ -494,8 +881,8 @@ var make_menu_link_jsx = ({ label, href, isExternal, isPrimary }, options) => {
|
|
|
494
881
|
var make_menu_link_with_dropdown_jsx = ({ label, menuId, subItems }, options) => {
|
|
495
882
|
const { navDropDownOpenState, handleToggleDropdown, currentPath } = options;
|
|
496
883
|
const sublinks = subItems.map((item) => make_menu_link_jsx(item, { currentPath }));
|
|
497
|
-
return /* @__PURE__ */
|
|
498
|
-
/* @__PURE__ */
|
|
884
|
+
return /* @__PURE__ */ jsxs12(Fragment2, { children: [
|
|
885
|
+
/* @__PURE__ */ jsx16(
|
|
499
886
|
NavDropDownButton,
|
|
500
887
|
{
|
|
501
888
|
menuId,
|
|
@@ -505,11 +892,11 @@ var make_menu_link_with_dropdown_jsx = ({ label, menuId, subItems }, options) =>
|
|
|
505
892
|
isCurrent: sublinks.some((sublink) => is_current_path(sublink.props.href, currentPath))
|
|
506
893
|
}
|
|
507
894
|
),
|
|
508
|
-
/* @__PURE__ */
|
|
895
|
+
/* @__PURE__ */ jsx16(Menu, { items: sublinks, isOpen: navDropDownOpenState[menuId] ?? false, id: menuId }, "one")
|
|
509
896
|
] });
|
|
510
897
|
};
|
|
511
|
-
var make_custom_nav_item_jsx = (customNavItem) => isNavItem(customNavItem) ? /* @__PURE__ */
|
|
512
|
-
|
|
898
|
+
var make_custom_nav_item_jsx = (customNavItem) => isNavItem(customNavItem) ? /* @__PURE__ */ jsx16(
|
|
899
|
+
Link3,
|
|
513
900
|
{
|
|
514
901
|
className: "blocks-header__custom-nav-item usa-button",
|
|
515
902
|
variant: "unstyled",
|
|
@@ -520,7 +907,7 @@ var make_custom_nav_item_jsx = (customNavItem) => isNavItem(customNavItem) ? /*
|
|
|
520
907
|
) : customNavItem;
|
|
521
908
|
|
|
522
909
|
// src/components/Header/Header.tsx
|
|
523
|
-
import { jsx as
|
|
910
|
+
import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
524
911
|
function Header(props) {
|
|
525
912
|
const {
|
|
526
913
|
portalDetails: { logo, title, url },
|
|
@@ -533,11 +920,11 @@ function Header(props) {
|
|
|
533
920
|
() => make_nav_items_initial_state(navItems),
|
|
534
921
|
[navItems]
|
|
535
922
|
);
|
|
536
|
-
const [navDropDownOpenState, setNavDropDownOpenState] =
|
|
923
|
+
const [navDropDownOpenState, setNavDropDownOpenState] = useState4(
|
|
537
924
|
initialNavDropDownOpenState
|
|
538
925
|
);
|
|
539
|
-
const [isMobileNavExpanded, setIsMobileNavExpanded] =
|
|
540
|
-
const handleToggleDropdown =
|
|
926
|
+
const [isMobileNavExpanded, setIsMobileNavExpanded] = useState4(false);
|
|
927
|
+
const handleToggleDropdown = useCallback2(
|
|
541
928
|
(menuId) => {
|
|
542
929
|
if (isMobileNavExpanded) {
|
|
543
930
|
setNavDropDownOpenState((prev) => ({
|
|
@@ -556,8 +943,8 @@ function Header(props) {
|
|
|
556
943
|
},
|
|
557
944
|
[isMobileNavExpanded]
|
|
558
945
|
);
|
|
559
|
-
const handleToggleMobileNav =
|
|
560
|
-
const handleClickOutside =
|
|
946
|
+
const handleToggleMobileNav = useCallback2(() => setIsMobileNavExpanded((prev) => !prev), []);
|
|
947
|
+
const handleClickOutside = useCallback2(() => {
|
|
561
948
|
if (isMobileNavExpanded) {
|
|
562
949
|
setIsMobileNavExpanded(false);
|
|
563
950
|
} else {
|
|
@@ -588,15 +975,15 @@ function Header(props) {
|
|
|
588
975
|
currentPath
|
|
589
976
|
}) : make_menu_link_jsx(item, { currentPath })
|
|
590
977
|
);
|
|
591
|
-
return /* @__PURE__ */
|
|
592
|
-
/* @__PURE__ */
|
|
593
|
-
/* @__PURE__ */
|
|
594
|
-
/* @__PURE__ */
|
|
595
|
-
title ? /* @__PURE__ */
|
|
978
|
+
return /* @__PURE__ */ jsx17(USWDSHeader, { className: headerClassName, basic: true, showMobileOverlay: isMobileNavExpanded, children: /* @__PURE__ */ jsxs13("div", { className: "usa-nav-container", children: [
|
|
979
|
+
/* @__PURE__ */ jsxs13("div", { className: "usa-navbar", children: [
|
|
980
|
+
/* @__PURE__ */ jsxs13("div", { className: "blocks-header__portal-details", children: [
|
|
981
|
+
/* @__PURE__ */ jsx17("a", { className: "blocks-header__portal-logo", href: url ?? "/", children: logo }),
|
|
982
|
+
title ? /* @__PURE__ */ jsx17(Title, { children: /* @__PURE__ */ jsx17("a", { href: url ?? "/", children: title }) }) : null
|
|
596
983
|
] }),
|
|
597
|
-
/* @__PURE__ */
|
|
984
|
+
/* @__PURE__ */ jsx17(NavMenuButton, { ref: mobileNavToggleRef, onClick: handleToggleMobileNav, label: "Menu" })
|
|
598
985
|
] }),
|
|
599
|
-
/* @__PURE__ */
|
|
986
|
+
/* @__PURE__ */ jsx17(
|
|
600
987
|
PrimaryNav,
|
|
601
988
|
{
|
|
602
989
|
ref: menuRef,
|
|
@@ -609,181 +996,6 @@ function Header(props) {
|
|
|
609
996
|
] }) });
|
|
610
997
|
}
|
|
611
998
|
|
|
612
|
-
// src/components/Link/Link.tsx
|
|
613
|
-
import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
614
|
-
function Link3({
|
|
615
|
-
variant = "text",
|
|
616
|
-
size = "md",
|
|
617
|
-
isExternal,
|
|
618
|
-
className,
|
|
619
|
-
as,
|
|
620
|
-
children,
|
|
621
|
-
...rest
|
|
622
|
-
}) {
|
|
623
|
-
const Component = isExternal ? "a" : as ?? "a";
|
|
624
|
-
const rootClassName = make_class_name("blocks-link", [
|
|
625
|
-
`blocks-link--${variant}`,
|
|
626
|
-
variant === "button" || variant === "button-outline" ? "usa-button" : void 0,
|
|
627
|
-
variant === "button-outline" ? "usa-button--outline" : void 0,
|
|
628
|
-
variant === "text" ? "usa-button--unstyled" : void 0,
|
|
629
|
-
`blocks-link--${size}`,
|
|
630
|
-
isExternal ? "blocks-link--external usa-link--external" : void 0,
|
|
631
|
-
className
|
|
632
|
-
]);
|
|
633
|
-
return /* @__PURE__ */ jsxs11(Component, { className: rootClassName, ...get_external_anchor_props(isExternal), ...rest, children: [
|
|
634
|
-
children,
|
|
635
|
-
variant === "arrow" && /* @__PURE__ */ jsx11(ArrowIcon, {})
|
|
636
|
-
] });
|
|
637
|
-
}
|
|
638
|
-
|
|
639
|
-
// src/foundations/theme-token-bridge.helpers.ts
|
|
640
|
-
var BASE_COLOR_TOKENS = [
|
|
641
|
-
"base-lightest",
|
|
642
|
-
"base-lighter",
|
|
643
|
-
"base-light",
|
|
644
|
-
"base",
|
|
645
|
-
"base-dark",
|
|
646
|
-
"base-darker",
|
|
647
|
-
"base-darkest",
|
|
648
|
-
"ink"
|
|
649
|
-
];
|
|
650
|
-
var PRIMARY_COLOR_TOKENS = [
|
|
651
|
-
"primary-lightest",
|
|
652
|
-
"primary-lighter",
|
|
653
|
-
"primary-light",
|
|
654
|
-
"primary",
|
|
655
|
-
"primary-vivid",
|
|
656
|
-
"primary-dark",
|
|
657
|
-
"primary-darker",
|
|
658
|
-
"primary-darkest"
|
|
659
|
-
];
|
|
660
|
-
var SECONDARY_COLOR_TOKENS = [
|
|
661
|
-
"secondary-lightest",
|
|
662
|
-
"secondary-lighter",
|
|
663
|
-
"secondary-light",
|
|
664
|
-
"secondary",
|
|
665
|
-
"secondary-vivid",
|
|
666
|
-
"secondary-dark",
|
|
667
|
-
"secondary-darker",
|
|
668
|
-
"secondary-darkest"
|
|
669
|
-
];
|
|
670
|
-
var ACCENT_COOL_COLOR_TOKENS = [
|
|
671
|
-
"accent-cool-lightest",
|
|
672
|
-
"accent-cool-lighter",
|
|
673
|
-
"accent-cool-light",
|
|
674
|
-
"accent-cool",
|
|
675
|
-
"accent-cool-dark",
|
|
676
|
-
"accent-cool-darker",
|
|
677
|
-
"accent-cool-darkest"
|
|
678
|
-
];
|
|
679
|
-
var ACCENT_WARM_COLOR_TOKENS = [
|
|
680
|
-
"accent-warm-lightest",
|
|
681
|
-
"accent-warm-lighter",
|
|
682
|
-
"accent-warm-light",
|
|
683
|
-
"accent-warm",
|
|
684
|
-
"accent-warm-dark",
|
|
685
|
-
"accent-warm-darker",
|
|
686
|
-
"accent-warm-darkest"
|
|
687
|
-
];
|
|
688
|
-
var INFO_COLOR_TOKENS = [
|
|
689
|
-
"info-lighter",
|
|
690
|
-
"info-light",
|
|
691
|
-
"info",
|
|
692
|
-
"info-dark",
|
|
693
|
-
"info-darker"
|
|
694
|
-
];
|
|
695
|
-
var WARNING_COLOR_TOKENS = [
|
|
696
|
-
"warning-lighter",
|
|
697
|
-
"warning-light",
|
|
698
|
-
"warning",
|
|
699
|
-
"warning-dark",
|
|
700
|
-
"warning-darker"
|
|
701
|
-
];
|
|
702
|
-
var ERROR_COLOR_TOKENS = [
|
|
703
|
-
"error-lighter",
|
|
704
|
-
"error-light",
|
|
705
|
-
"error",
|
|
706
|
-
"error-dark",
|
|
707
|
-
"error-darker"
|
|
708
|
-
];
|
|
709
|
-
var SUCCESS_COLOR_TOKENS = [
|
|
710
|
-
"success-lighter",
|
|
711
|
-
"success-light",
|
|
712
|
-
"success",
|
|
713
|
-
"success-dark",
|
|
714
|
-
"success-darker"
|
|
715
|
-
];
|
|
716
|
-
var DISABLED_COLOR_TOKENS = [
|
|
717
|
-
"disabled-lighter",
|
|
718
|
-
"disabled-light",
|
|
719
|
-
"disabled",
|
|
720
|
-
"disabled-dark",
|
|
721
|
-
"disabled-darker"
|
|
722
|
-
];
|
|
723
|
-
var EMERGENCY_COLOR_TOKENS = ["emergency", "emergency-dark"];
|
|
724
|
-
var COLOR_TOKENS = [
|
|
725
|
-
...BASE_COLOR_TOKENS,
|
|
726
|
-
...PRIMARY_COLOR_TOKENS,
|
|
727
|
-
...SECONDARY_COLOR_TOKENS,
|
|
728
|
-
...ACCENT_COOL_COLOR_TOKENS,
|
|
729
|
-
...ACCENT_WARM_COLOR_TOKENS,
|
|
730
|
-
...INFO_COLOR_TOKENS,
|
|
731
|
-
...WARNING_COLOR_TOKENS,
|
|
732
|
-
...ERROR_COLOR_TOKENS,
|
|
733
|
-
...SUCCESS_COLOR_TOKENS,
|
|
734
|
-
...EMERGENCY_COLOR_TOKENS,
|
|
735
|
-
...DISABLED_COLOR_TOKENS
|
|
736
|
-
];
|
|
737
|
-
var resolveColorToken = (color) => COLOR_TOKENS.includes(color) ? `var(--color-${color})` : color;
|
|
738
|
-
|
|
739
|
-
// src/components/icons/CloseIcon.tsx
|
|
740
|
-
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
741
|
-
var CloseIcon = () => /* @__PURE__ */ jsx12("svg", { height: "24", width: "24", viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", children: /* @__PURE__ */ jsx12("path", { d: "M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) });
|
|
742
|
-
|
|
743
|
-
// src/components/Tag/Tag.tsx
|
|
744
|
-
import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
745
|
-
function Tag({
|
|
746
|
-
variant = "solid",
|
|
747
|
-
size = "default",
|
|
748
|
-
color,
|
|
749
|
-
bgColor,
|
|
750
|
-
borderColor,
|
|
751
|
-
textColor,
|
|
752
|
-
icon,
|
|
753
|
-
onClose,
|
|
754
|
-
children,
|
|
755
|
-
className
|
|
756
|
-
}) {
|
|
757
|
-
const rootClassName = make_class_name("blocks-tag", [
|
|
758
|
-
`blocks-tag--${variant}`,
|
|
759
|
-
size === "big" ? "blocks-tag--big" : void 0,
|
|
760
|
-
icon ? "blocks-tag--icon" : void 0,
|
|
761
|
-
onClose ? "blocks-tag--x-close" : void 0,
|
|
762
|
-
className
|
|
763
|
-
]);
|
|
764
|
-
const customStyle = color || textColor || bgColor || borderColor ? {
|
|
765
|
-
...color ? { "--blocks-tag-custom-color": resolveColorToken(color) } : void 0,
|
|
766
|
-
...textColor ? { "--blocks-tag-custom-text-color": resolveColorToken(textColor) } : void 0,
|
|
767
|
-
...bgColor ? { "--blocks-tag-custom-bg-color": resolveColorToken(bgColor) } : void 0,
|
|
768
|
-
...borderColor ? { "--blocks-tag-custom-border-color": resolveColorToken(borderColor) } : void 0
|
|
769
|
-
} : void 0;
|
|
770
|
-
return /* @__PURE__ */ jsxs12("span", { className: rootClassName, style: customStyle, children: [
|
|
771
|
-
icon && /* @__PURE__ */ jsx13("span", { className: "blocks-tag__icon", children: icon }),
|
|
772
|
-
children,
|
|
773
|
-
onClose && /* @__PURE__ */ jsx13(
|
|
774
|
-
"button",
|
|
775
|
-
{
|
|
776
|
-
type: "button",
|
|
777
|
-
className: "blocks-tag__close-button",
|
|
778
|
-
"aria-label": "Remove tag",
|
|
779
|
-
tabIndex: 0,
|
|
780
|
-
onClick: onClose,
|
|
781
|
-
children: /* @__PURE__ */ jsx13(CloseIcon, {})
|
|
782
|
-
}
|
|
783
|
-
)
|
|
784
|
-
] });
|
|
785
|
-
}
|
|
786
|
-
|
|
787
999
|
// src/geo/GeoConfigProvider.tsx
|
|
788
1000
|
import { StacApiProvider } from "@developmentseed/stac-react";
|
|
789
1001
|
import { createContext, useContext } from "react";
|
|
@@ -795,7 +1007,7 @@ var DEFAULT_TILE_MATRIX_SET = "WebMercatorQuad";
|
|
|
795
1007
|
var STAC_COLORSTOP_RGBA_ARG_COUNT = 4;
|
|
796
1008
|
|
|
797
1009
|
// src/geo/GeoConfigProvider.tsx
|
|
798
|
-
import { jsx as
|
|
1010
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
799
1011
|
var GeoConfigContext = createContext(null);
|
|
800
1012
|
function useGeoConfig() {
|
|
801
1013
|
const ctx = useContext(GeoConfigContext);
|
|
@@ -807,24 +1019,24 @@ function GeoConfigProvider({
|
|
|
807
1019
|
titilerBaseUrl = TITILER_BASE_URL,
|
|
808
1020
|
children
|
|
809
1021
|
}) {
|
|
810
|
-
return /* @__PURE__ */
|
|
1022
|
+
return /* @__PURE__ */ jsx18(GeoConfigContext.Provider, { value: { titilerBaseUrl }, children: /* @__PURE__ */ jsx18(StacApiProvider, { apiUrl: stacApiUrl, children }) });
|
|
811
1023
|
}
|
|
812
1024
|
|
|
813
1025
|
// src/geo/Legend/Legend.tsx
|
|
814
|
-
import { Icon as
|
|
815
|
-
import { useState as
|
|
816
|
-
import { Fragment as Fragment3, jsx as
|
|
1026
|
+
import { Icon as Icon3 } from "@trussworks/react-uswds";
|
|
1027
|
+
import { useState as useState5 } from "react";
|
|
1028
|
+
import { Fragment as Fragment3, jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
817
1029
|
function Legend({ initialExpanded = false, ...props }) {
|
|
818
1030
|
const { title, description, unit, min, max, colorStops, provider, spatialExtent, timeDensity } = props;
|
|
819
|
-
const [isExpanded, setIsExpanded] =
|
|
1031
|
+
const [isExpanded, setIsExpanded] = useState5(initialExpanded);
|
|
820
1032
|
const subtitle = [provider, spatialExtent, timeDensity].some(isDefined) ? [provider, spatialExtent, timeDensity].filter(isDefined).join(" \xB7 ") : void 0;
|
|
821
|
-
return /* @__PURE__ */
|
|
822
|
-
/* @__PURE__ */
|
|
823
|
-
/* @__PURE__ */
|
|
824
|
-
title && /* @__PURE__ */
|
|
825
|
-
subtitle && /* @__PURE__ */
|
|
1033
|
+
return /* @__PURE__ */ jsxs14("div", { className: "blocks-legend", children: [
|
|
1034
|
+
/* @__PURE__ */ jsxs14("div", { className: "blocks-legend__header", children: [
|
|
1035
|
+
/* @__PURE__ */ jsxs14("div", { className: "blocks-legend__header-text", children: [
|
|
1036
|
+
title && /* @__PURE__ */ jsx19("h3", { className: "blocks-legend__title", title, children: title }),
|
|
1037
|
+
subtitle && /* @__PURE__ */ jsx19("p", { className: "blocks-legend__subtitle", title: subtitle, children: subtitle })
|
|
826
1038
|
] }),
|
|
827
|
-
description && /* @__PURE__ */
|
|
1039
|
+
description && /* @__PURE__ */ jsx19(
|
|
828
1040
|
"button",
|
|
829
1041
|
{
|
|
830
1042
|
type: "button",
|
|
@@ -832,12 +1044,12 @@ function Legend({ initialExpanded = false, ...props }) {
|
|
|
832
1044
|
"aria-expanded": isExpanded,
|
|
833
1045
|
"aria-label": "Toggle layer description",
|
|
834
1046
|
onClick: () => setIsExpanded((v) => !v),
|
|
835
|
-
children: /* @__PURE__ */
|
|
1047
|
+
children: /* @__PURE__ */ jsx19(Icon3.InfoOutline, { "aria-hidden": true, focusable: false, size: 3 })
|
|
836
1048
|
}
|
|
837
1049
|
)
|
|
838
1050
|
] }),
|
|
839
|
-
colorStops && /* @__PURE__ */
|
|
840
|
-
/* @__PURE__ */
|
|
1051
|
+
colorStops && /* @__PURE__ */ jsxs14(Fragment3, { children: [
|
|
1052
|
+
/* @__PURE__ */ jsx19("div", { className: "blocks-legend__gradient-bar", children: /* @__PURE__ */ jsx19(
|
|
841
1053
|
"div",
|
|
842
1054
|
{
|
|
843
1055
|
className: "blocks-legend__gradient",
|
|
@@ -846,18 +1058,18 @@ function Legend({ initialExpanded = false, ...props }) {
|
|
|
846
1058
|
}
|
|
847
1059
|
}
|
|
848
1060
|
) }),
|
|
849
|
-
isDefined(min) && isDefined(max) && /* @__PURE__ */
|
|
850
|
-
/* @__PURE__ */
|
|
851
|
-
/* @__PURE__ */
|
|
852
|
-
/* @__PURE__ */
|
|
1061
|
+
isDefined(min) && isDefined(max) && /* @__PURE__ */ jsxs14("div", { className: "blocks-legend__labels", children: [
|
|
1062
|
+
/* @__PURE__ */ jsx19("span", { className: "blocks-legend__min", children: min }),
|
|
1063
|
+
/* @__PURE__ */ jsx19("span", { className: "blocks-legend__unit", children: unit }),
|
|
1064
|
+
/* @__PURE__ */ jsx19("span", { className: "blocks-legend__max", children: max })
|
|
853
1065
|
] })
|
|
854
1066
|
] }),
|
|
855
|
-
isExpanded && description && /* @__PURE__ */
|
|
1067
|
+
isExpanded && description && /* @__PURE__ */ jsx19("div", { className: "blocks-legend__description", children: /* @__PURE__ */ jsx19("div", { className: "blocks-legend__description-inner", children: description }) })
|
|
856
1068
|
] });
|
|
857
1069
|
}
|
|
858
1070
|
|
|
859
1071
|
// src/geo/StacCompareMap/StacCompareMap.tsx
|
|
860
|
-
import { useEffect as
|
|
1072
|
+
import { useEffect as useEffect5, useId, useRef as useRef3, useState as useState8 } from "react";
|
|
861
1073
|
import {
|
|
862
1074
|
Layer,
|
|
863
1075
|
Map as MapLibreMap,
|
|
@@ -922,10 +1134,38 @@ var formatRenderPropertiesToQuery = (renderProperties) => {
|
|
|
922
1134
|
};
|
|
923
1135
|
|
|
924
1136
|
// src/geo/DateChip/DateChip.tsx
|
|
925
|
-
import { jsx as
|
|
1137
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
926
1138
|
function DateChip({ left, right }) {
|
|
927
1139
|
const label = right === void 0 || left.from === right.from && left.to === right.to ? formatDateRange(left) : `${formatDateRange(left)} vs ${formatDateRange(right)}`;
|
|
928
|
-
return /* @__PURE__ */
|
|
1140
|
+
return /* @__PURE__ */ jsx20("div", { className: "blocks-date-chip", children: label });
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
// src/geo/hooks/useMapScrollGuard.ts
|
|
1144
|
+
import { useEffect as useEffect4, useState as useState6 } from "react";
|
|
1145
|
+
function useMapScrollGuard(enabled, containerRef) {
|
|
1146
|
+
const [isInteractive, setIsInteractive] = useState6(false);
|
|
1147
|
+
useEffect4(() => {
|
|
1148
|
+
if (!enabled || !isInteractive) return;
|
|
1149
|
+
const handleClick = (e) => {
|
|
1150
|
+
if (!containerRef.current?.contains(e.target)) {
|
|
1151
|
+
setIsInteractive(false);
|
|
1152
|
+
}
|
|
1153
|
+
};
|
|
1154
|
+
const handleKeyDown = (e) => {
|
|
1155
|
+
if (e.key === "Escape") setIsInteractive(false);
|
|
1156
|
+
};
|
|
1157
|
+
document.addEventListener("click", handleClick);
|
|
1158
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
1159
|
+
return () => {
|
|
1160
|
+
document.removeEventListener("click", handleClick);
|
|
1161
|
+
document.removeEventListener("keydown", handleKeyDown);
|
|
1162
|
+
};
|
|
1163
|
+
}, [enabled, isInteractive, containerRef]);
|
|
1164
|
+
return {
|
|
1165
|
+
isInteractive,
|
|
1166
|
+
onActivate: () => setIsInteractive(true),
|
|
1167
|
+
onDeactivate: () => setIsInteractive(false)
|
|
1168
|
+
};
|
|
929
1169
|
}
|
|
930
1170
|
|
|
931
1171
|
// src/geo/hooks/useStacRasterLayer.ts
|
|
@@ -1113,6 +1353,106 @@ function useStacRasterLayer(rasterLayerConfig) {
|
|
|
1113
1353
|
};
|
|
1114
1354
|
}
|
|
1115
1355
|
|
|
1356
|
+
// src/geo/MapScrollGuard/LockMapControl.tsx
|
|
1357
|
+
import { useState as useState7 } from "react";
|
|
1358
|
+
import { createPortal } from "react-dom";
|
|
1359
|
+
import { useControl as useControl2 } from "react-map-gl/maplibre";
|
|
1360
|
+
|
|
1361
|
+
// src/components/icons/LockIcon.tsx
|
|
1362
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1363
|
+
var LockIcon = () => /* @__PURE__ */ jsx21(
|
|
1364
|
+
"svg",
|
|
1365
|
+
{
|
|
1366
|
+
width: "24",
|
|
1367
|
+
height: "24",
|
|
1368
|
+
viewBox: "0 0 24 24",
|
|
1369
|
+
fill: "currentColor",
|
|
1370
|
+
"aria-hidden": "true",
|
|
1371
|
+
focusable: "false",
|
|
1372
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1373
|
+
children: /* @__PURE__ */ jsx21("path", { d: "M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z" })
|
|
1374
|
+
}
|
|
1375
|
+
);
|
|
1376
|
+
|
|
1377
|
+
// src/geo/MapScrollGuard/MapScrollGuardExit.tsx
|
|
1378
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
1379
|
+
function MapScrollGuardExit({ onDeactivate }) {
|
|
1380
|
+
return /* @__PURE__ */ jsx22(
|
|
1381
|
+
"button",
|
|
1382
|
+
{
|
|
1383
|
+
className: "blocks-map-scroll-guard-exit",
|
|
1384
|
+
onClick: onDeactivate,
|
|
1385
|
+
type: "button",
|
|
1386
|
+
"aria-label": "Lock map \u2014 stop interacting",
|
|
1387
|
+
children: /* @__PURE__ */ jsx22(LockIcon, {})
|
|
1388
|
+
}
|
|
1389
|
+
);
|
|
1390
|
+
}
|
|
1391
|
+
|
|
1392
|
+
// src/geo/MapScrollGuard/LockMapControl.tsx
|
|
1393
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
1394
|
+
var LockControl = class {
|
|
1395
|
+
container = null;
|
|
1396
|
+
onAdd(_map) {
|
|
1397
|
+
const container = document.createElement("div");
|
|
1398
|
+
container.className = "maplibregl-ctrl maplibregl-ctrl-group blocks-map-scroll-guard-exit-control";
|
|
1399
|
+
this.container = container;
|
|
1400
|
+
return container;
|
|
1401
|
+
}
|
|
1402
|
+
onRemove() {
|
|
1403
|
+
this.container?.remove();
|
|
1404
|
+
this.container = null;
|
|
1405
|
+
}
|
|
1406
|
+
};
|
|
1407
|
+
function LockMapControl({ onDeactivate }) {
|
|
1408
|
+
const [portalTarget, setPortalTarget] = useState7(null);
|
|
1409
|
+
const ctrl = useControl2(
|
|
1410
|
+
() => new LockControl(),
|
|
1411
|
+
() => setPortalTarget(ctrl?.container ?? null),
|
|
1412
|
+
() => setPortalTarget(null),
|
|
1413
|
+
{ position: "top-left" }
|
|
1414
|
+
);
|
|
1415
|
+
if (!portalTarget) return null;
|
|
1416
|
+
return createPortal(/* @__PURE__ */ jsx23(MapScrollGuardExit, { onDeactivate }), portalTarget);
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
// src/components/icons/CursorClickIcon.tsx
|
|
1420
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
1421
|
+
var CursorClickIcon = () => /* @__PURE__ */ jsx24(
|
|
1422
|
+
"svg",
|
|
1423
|
+
{
|
|
1424
|
+
width: "24",
|
|
1425
|
+
height: "24",
|
|
1426
|
+
viewBox: "0 0 24 24",
|
|
1427
|
+
fill: "currentColor",
|
|
1428
|
+
"aria-hidden": "true",
|
|
1429
|
+
focusable: "false",
|
|
1430
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1431
|
+
children: /* @__PURE__ */ jsx24("path", { d: "M11.5803 8.69C11.3787 8.69 11.1854 8.77007 11.0429 8.9126C10.9004 9.05513 10.8203 9.24844 10.8203 9.45V20.9C10.8203 21.32 11.1603 21.66 11.5803 21.66C11.7703 21.66 11.9303 21.6 12.0603 21.5L13.9703 19.95L15.6303 23.57C15.7603 23.84 16.0303 24 16.3203 24C16.4303 24 16.5403 24 16.6503 23.92L19.4103 22.64C19.7903 22.46 19.9703 22 19.7703 21.63L18.1003 18L20.5103 17.55C20.6703 17.5 20.8203 17.43 20.9403 17.29C21.2103 16.97 21.1703 16.5 20.8203 16.21L12.0803 8.86L12.0703 8.87C11.9403 8.76 11.7703 8.69 11.5803 8.69ZM15.8203 10V8H20.8203V10H15.8203ZM14.6503 4.76L17.4803 1.93L18.8903 3.34L16.0603 6.17L14.6503 4.76ZM10.8203 0H12.8203V5H10.8203V0ZM4.75031 14.66L7.58031 11.83L8.99031 13.24L6.16031 16.07L4.75031 14.66ZM4.75031 3.34L6.16031 1.93L8.99031 4.76L7.58031 6.17L4.75031 3.34ZM7.82031 10H2.82031V8H7.82031V10Z" })
|
|
1432
|
+
}
|
|
1433
|
+
);
|
|
1434
|
+
|
|
1435
|
+
// src/geo/MapScrollGuard/MapScrollGuard.tsx
|
|
1436
|
+
import { jsx as jsx25, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1437
|
+
function MapScrollGuard({ onActivate }) {
|
|
1438
|
+
return /* @__PURE__ */ jsx25(
|
|
1439
|
+
"button",
|
|
1440
|
+
{
|
|
1441
|
+
className: "blocks-map-scroll-guard",
|
|
1442
|
+
onClick: (e) => {
|
|
1443
|
+
e.stopPropagation();
|
|
1444
|
+
onActivate();
|
|
1445
|
+
},
|
|
1446
|
+
type: "button",
|
|
1447
|
+
"aria-label": "Click to interact with map",
|
|
1448
|
+
children: /* @__PURE__ */ jsxs15("span", { className: "blocks-map-scroll-guard__pill", children: [
|
|
1449
|
+
/* @__PURE__ */ jsx25(CursorClickIcon, {}),
|
|
1450
|
+
/* @__PURE__ */ jsx25("span", { className: "blocks-map-scroll-guard__label", children: "Click to interact with the map" })
|
|
1451
|
+
] })
|
|
1452
|
+
}
|
|
1453
|
+
);
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1116
1456
|
// src/geo/stac.basemaps.ts
|
|
1117
1457
|
var createRasterBasemapStyle = ({
|
|
1118
1458
|
id,
|
|
@@ -1161,7 +1501,7 @@ var BASEMAP_LABEL_LAYER_IDS = {
|
|
|
1161
1501
|
};
|
|
1162
1502
|
|
|
1163
1503
|
// src/geo/StacCompareMap/StacCompareMap.tsx
|
|
1164
|
-
import { jsx as
|
|
1504
|
+
import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1165
1505
|
var MAP_PANEL_STYLE = {
|
|
1166
1506
|
position: "absolute",
|
|
1167
1507
|
top: 0,
|
|
@@ -1173,7 +1513,8 @@ function StacCompareMap({
|
|
|
1173
1513
|
initialViewState,
|
|
1174
1514
|
leftLayerConfig,
|
|
1175
1515
|
rightLayerConfig,
|
|
1176
|
-
className
|
|
1516
|
+
className,
|
|
1517
|
+
showScrollGuard = false
|
|
1177
1518
|
}) {
|
|
1178
1519
|
const resolvedBeforeLayerId = typeof baseMapStyle === "string" ? BASEMAP_LABEL_LAYER_IDS[baseMapStyle] : void 0;
|
|
1179
1520
|
const instanceId = useId();
|
|
@@ -1181,8 +1522,12 @@ function StacCompareMap({
|
|
|
1181
1522
|
const rightMapRef = useRef3(null);
|
|
1182
1523
|
const compareRef = useRef3(null);
|
|
1183
1524
|
const containerRef = useRef3(null);
|
|
1184
|
-
const [leftMapLoaded, setLeftMapLoaded] =
|
|
1185
|
-
const [rightMapLoaded, setRightMapLoaded] =
|
|
1525
|
+
const [leftMapLoaded, setLeftMapLoaded] = useState8(false);
|
|
1526
|
+
const [rightMapLoaded, setRightMapLoaded] = useState8(false);
|
|
1527
|
+
const { isInteractive, onActivate, onDeactivate } = useMapScrollGuard(
|
|
1528
|
+
showScrollGuard,
|
|
1529
|
+
containerRef
|
|
1530
|
+
);
|
|
1186
1531
|
const containerClassName = make_class_name("blocks-stacmap-compare", [className]);
|
|
1187
1532
|
const left = useStacRasterLayer(leftLayerConfig);
|
|
1188
1533
|
const right = useStacRasterLayer(rightLayerConfig);
|
|
@@ -1191,7 +1536,7 @@ function StacCompareMap({
|
|
|
1191
1536
|
const leftLayerId = `${leftLayerConfig.collectionId}-raster-layer-left-${instanceId}`;
|
|
1192
1537
|
const rightSourceId = `${rightLayerConfig.collectionId}-raster-source-right-${instanceId}`;
|
|
1193
1538
|
const rightLayerId = `${rightLayerConfig.collectionId}-raster-layer-right-${instanceId}`;
|
|
1194
|
-
|
|
1539
|
+
useEffect5(() => {
|
|
1195
1540
|
if (!leftMapLoaded || !rightMapLoaded) return;
|
|
1196
1541
|
if (compareRef.current) return;
|
|
1197
1542
|
const leftMap = leftMapRef.current?.getMap();
|
|
@@ -1210,7 +1555,7 @@ function StacCompareMap({
|
|
|
1210
1555
|
}
|
|
1211
1556
|
});
|
|
1212
1557
|
}, [leftMapLoaded, rightMapLoaded]);
|
|
1213
|
-
|
|
1558
|
+
useEffect5(() => {
|
|
1214
1559
|
return () => {
|
|
1215
1560
|
compareRef.current?.remove();
|
|
1216
1561
|
compareRef.current = null;
|
|
@@ -1221,8 +1566,8 @@ function StacCompareMap({
|
|
|
1221
1566
|
...initialViewState && { initialViewState },
|
|
1222
1567
|
style: MAP_PANEL_STYLE
|
|
1223
1568
|
};
|
|
1224
|
-
return /* @__PURE__ */
|
|
1225
|
-
/* @__PURE__ */
|
|
1569
|
+
return /* @__PURE__ */ jsxs16("div", { ref: containerRef, className: containerClassName, children: [
|
|
1570
|
+
/* @__PURE__ */ jsxs16(
|
|
1226
1571
|
MapLibreMap,
|
|
1227
1572
|
{
|
|
1228
1573
|
ref: leftMapRef,
|
|
@@ -1230,9 +1575,10 @@ function StacCompareMap({
|
|
|
1230
1575
|
attributionControl: false,
|
|
1231
1576
|
onLoad: () => setLeftMapLoaded(true),
|
|
1232
1577
|
children: [
|
|
1233
|
-
/* @__PURE__ */
|
|
1234
|
-
/* @__PURE__ */
|
|
1235
|
-
|
|
1578
|
+
/* @__PURE__ */ jsx26(AttributionMapControl, {}),
|
|
1579
|
+
/* @__PURE__ */ jsx26(NavigationControl, { position: "top-left", showCompass: false }),
|
|
1580
|
+
showScrollGuard && isInteractive && /* @__PURE__ */ jsx26(LockMapControl, { onDeactivate }),
|
|
1581
|
+
left.mapSource.tiles && /* @__PURE__ */ jsx26(Source, { id: leftSourceId, type: "raster", tiles: [left.mapSource.tiles], children: /* @__PURE__ */ jsx26(
|
|
1236
1582
|
Layer,
|
|
1237
1583
|
{
|
|
1238
1584
|
id: leftLayerId,
|
|
@@ -1243,7 +1589,7 @@ function StacCompareMap({
|
|
|
1243
1589
|
]
|
|
1244
1590
|
}
|
|
1245
1591
|
),
|
|
1246
|
-
/* @__PURE__ */
|
|
1592
|
+
/* @__PURE__ */ jsxs16(
|
|
1247
1593
|
MapLibreMap,
|
|
1248
1594
|
{
|
|
1249
1595
|
ref: rightMapRef,
|
|
@@ -1251,8 +1597,8 @@ function StacCompareMap({
|
|
|
1251
1597
|
attributionControl: false,
|
|
1252
1598
|
onLoad: () => setRightMapLoaded(true),
|
|
1253
1599
|
children: [
|
|
1254
|
-
/* @__PURE__ */
|
|
1255
|
-
right.mapSource.tiles && /* @__PURE__ */
|
|
1600
|
+
/* @__PURE__ */ jsx26(AttributionMapControl, {}),
|
|
1601
|
+
right.mapSource.tiles && /* @__PURE__ */ jsx26(Source, { id: rightSourceId, type: "raster", tiles: [right.mapSource.tiles], children: /* @__PURE__ */ jsx26(
|
|
1256
1602
|
Layer,
|
|
1257
1603
|
{
|
|
1258
1604
|
id: rightLayerId,
|
|
@@ -1263,33 +1609,40 @@ function StacCompareMap({
|
|
|
1263
1609
|
]
|
|
1264
1610
|
}
|
|
1265
1611
|
),
|
|
1266
|
-
/* @__PURE__ */
|
|
1267
|
-
!isSameCollection && left.legend && /* @__PURE__ */
|
|
1268
|
-
right.legend && /* @__PURE__ */
|
|
1612
|
+
/* @__PURE__ */ jsx26("div", { className: "blocks-stacmap-compare__date-chip", children: /* @__PURE__ */ jsx26(DateChip, { left: leftLayerConfig.dateRange, right: rightLayerConfig.dateRange }) }),
|
|
1613
|
+
!isSameCollection && left.legend && /* @__PURE__ */ jsx26("div", { className: "blocks-stacmap-compare__legend-left", children: /* @__PURE__ */ jsx26(Legend, { ...left.legend }) }),
|
|
1614
|
+
right.legend && /* @__PURE__ */ jsx26("div", { className: "blocks-stacmap-compare__legend-right", children: /* @__PURE__ */ jsx26(Legend, { ...right.legend }) }),
|
|
1615
|
+
showScrollGuard && !isInteractive && /* @__PURE__ */ jsx26(MapScrollGuard, { onActivate })
|
|
1269
1616
|
] });
|
|
1270
1617
|
}
|
|
1271
1618
|
|
|
1272
1619
|
// src/geo/StacSingleLayerMap/StacSingleLayerMap.tsx
|
|
1273
|
-
import { useId as useId2 } from "react";
|
|
1620
|
+
import { useId as useId2, useRef as useRef4 } from "react";
|
|
1274
1621
|
import {
|
|
1275
1622
|
Layer as Layer2,
|
|
1276
1623
|
Map as MapLibreMap2,
|
|
1277
1624
|
NavigationControl as NavigationControl2,
|
|
1278
1625
|
Source as Source2
|
|
1279
1626
|
} from "react-map-gl/maplibre";
|
|
1280
|
-
import { jsx as
|
|
1627
|
+
import { jsx as jsx27, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1281
1628
|
function StacSingleLayerMap({
|
|
1282
1629
|
baseMapStyle = CARTO_DARK_WITH_LABELS_BASEMAP_STYLE,
|
|
1283
1630
|
initialViewState,
|
|
1284
|
-
layerConfig
|
|
1631
|
+
layerConfig,
|
|
1632
|
+
showScrollGuard = false
|
|
1285
1633
|
}) {
|
|
1286
1634
|
const resolvedBeforeLayerId = typeof baseMapStyle === "string" ? BASEMAP_LABEL_LAYER_IDS[baseMapStyle] : void 0;
|
|
1287
1635
|
const instanceId = useId2();
|
|
1288
1636
|
const sourceId = `${layerConfig.collectionId}-raster-source-${instanceId}`;
|
|
1289
1637
|
const layerId = `${layerConfig.collectionId}-raster-layer-${instanceId}`;
|
|
1290
1638
|
const { mapSource, legend } = useStacRasterLayer(layerConfig);
|
|
1291
|
-
|
|
1292
|
-
|
|
1639
|
+
const containerRef = useRef4(null);
|
|
1640
|
+
const { isInteractive, onActivate, onDeactivate } = useMapScrollGuard(
|
|
1641
|
+
showScrollGuard,
|
|
1642
|
+
containerRef
|
|
1643
|
+
);
|
|
1644
|
+
return /* @__PURE__ */ jsxs17("div", { className: "blocks-stacmap-singlelayer", ref: containerRef, children: [
|
|
1645
|
+
/* @__PURE__ */ jsxs17(
|
|
1293
1646
|
MapLibreMap2,
|
|
1294
1647
|
{
|
|
1295
1648
|
mapStyle: baseMapStyle,
|
|
@@ -1297,9 +1650,10 @@ function StacSingleLayerMap({
|
|
|
1297
1650
|
style: { position: "absolute", inset: 0 },
|
|
1298
1651
|
attributionControl: false,
|
|
1299
1652
|
children: [
|
|
1300
|
-
/* @__PURE__ */
|
|
1301
|
-
/* @__PURE__ */
|
|
1302
|
-
|
|
1653
|
+
/* @__PURE__ */ jsx27(AttributionMapControl, {}),
|
|
1654
|
+
/* @__PURE__ */ jsx27(NavigationControl2, { position: "top-left", showCompass: false }),
|
|
1655
|
+
showScrollGuard && isInteractive && /* @__PURE__ */ jsx27(LockMapControl, { onDeactivate }),
|
|
1656
|
+
mapSource.tiles && /* @__PURE__ */ jsx27(Source2, { id: sourceId, type: "raster", tiles: [mapSource.tiles], children: /* @__PURE__ */ jsx27(
|
|
1303
1657
|
Layer2,
|
|
1304
1658
|
{
|
|
1305
1659
|
id: layerId,
|
|
@@ -1310,8 +1664,9 @@ function StacSingleLayerMap({
|
|
|
1310
1664
|
]
|
|
1311
1665
|
}
|
|
1312
1666
|
),
|
|
1313
|
-
/* @__PURE__ */
|
|
1314
|
-
/* @__PURE__ */
|
|
1667
|
+
/* @__PURE__ */ jsx27("div", { className: "blocks-stacmap-singlelayer__legend", children: legend && /* @__PURE__ */ jsx27(Legend, { ...legend }) }),
|
|
1668
|
+
/* @__PURE__ */ jsx27("div", { className: "blocks-stacmap-singlelayer__date-chip", children: /* @__PURE__ */ jsx27(DateChip, { left: layerConfig.dateRange }) }),
|
|
1669
|
+
showScrollGuard && !isInteractive && /* @__PURE__ */ jsx27(MapScrollGuard, { onActivate })
|
|
1315
1670
|
] });
|
|
1316
1671
|
}
|
|
1317
1672
|
export {
|
|
@@ -1324,11 +1679,12 @@ export {
|
|
|
1324
1679
|
CardDetailed,
|
|
1325
1680
|
CardMini,
|
|
1326
1681
|
CardSimple,
|
|
1682
|
+
Carousel,
|
|
1327
1683
|
Footer,
|
|
1328
1684
|
GeoConfigProvider,
|
|
1329
1685
|
Header,
|
|
1330
1686
|
Legend,
|
|
1331
|
-
|
|
1687
|
+
Link,
|
|
1332
1688
|
NASA_BLUE_MARBLE_BASEMAP_STYLE,
|
|
1333
1689
|
OPEN_FREE_MAP_DARK_BASEMAP_STYLE,
|
|
1334
1690
|
OPEN_FREE_MAP_LABELS_LAYER_ID,
|