elseware-ui 3.0.13 → 3.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import React26, { createContext, forwardRef, useRef, useState, useImperativeHandle, useEffect, useMemo, useContext, useCallback, Children, useId, createElement, isValidElement } from 'react';
2
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
3
  import { twMerge } from 'tailwind-merge';
4
4
  import { AiOutlineLoading } from 'react-icons/ai/index.js';
5
5
  import { useField, ErrorMessage, Field, useFormikContext, FieldArray, Formik, Form as Form$1 } from 'formik';
@@ -15,7 +15,7 @@ import { FaCircleChevronDown } from 'react-icons/fa6/index.js';
15
15
  import ReactWorldFlags from 'react-world-flags';
16
16
  import emojiFlags from 'emoji-flags';
17
17
  import { ComposableMap, Geographies, Geography, Marker } from 'react-simple-maps';
18
- import { BiCheckCircle, BiXCircle, BiChevronDown, BiChevronUp, BiSolidLike, BiLike, BiSolidDislike, BiDislike, BiDotsVerticalRounded, BiReply, BiEdit, BiTrash, BiFlag } from 'react-icons/bi/index.js';
18
+ import { BiChevronDown, BiChevronUp, BiSolidLike, BiLike, BiSolidDislike, BiDislike, BiDotsVerticalRounded, BiReply, BiEdit, BiTrash, BiFlag } from 'react-icons/bi/index.js';
19
19
  import CodeMirror from '@uiw/react-codemirror';
20
20
  import { markdown } from '@codemirror/lang-markdown';
21
21
  import { oneDark } from '@codemirror/theme-one-dark';
@@ -6308,6 +6308,7 @@ function useButton(props) {
6308
6308
  const {
6309
6309
  // Consumed by the shared model
6310
6310
  icon,
6311
+ iconPosition = "leading",
6311
6312
  text: text10,
6312
6313
  children: children3,
6313
6314
  loading = false,
@@ -6335,7 +6336,19 @@ function useButton(props) {
6335
6336
  onMouseMove: _onMouseMove,
6336
6337
  ...rootRest
6337
6338
  } = props;
6338
- const { shape: resolvedShape, size: resolvedSize, variant: resolvedVariant, appearance: resolvedAppearance } = useResolvedButtonConfig({ compact, mode, variant, appearance, shape, size });
6339
+ const {
6340
+ shape: resolvedShape,
6341
+ size: resolvedSize,
6342
+ variant: resolvedVariant,
6343
+ appearance: resolvedAppearance
6344
+ } = useResolvedButtonConfig({
6345
+ compact,
6346
+ mode,
6347
+ variant,
6348
+ appearance,
6349
+ shape,
6350
+ size
6351
+ });
6339
6352
  const tokens = buttonSizeTokens[resolvedSize];
6340
6353
  const variantClassName = resolveButtonVariantStyles({
6341
6354
  appearance: resolvedAppearance,
@@ -6355,6 +6368,7 @@ function useButton(props) {
6355
6368
  loading,
6356
6369
  iconSize: tokens.icon,
6357
6370
  icon: resolvedIcon,
6371
+ iconPosition,
6358
6372
  label,
6359
6373
  hasTextLabel: typeof label === "string" || typeof label === "number",
6360
6374
  variantClassName,
@@ -6366,101 +6380,112 @@ function useButton(props) {
6366
6380
  };
6367
6381
  }
6368
6382
  var WEB_ROOT = "relative overflow-hidden group inline-flex items-center justify-center gap-2 transition-all duration-300";
6369
- var Button = forwardRef(function Button2(props, ref) {
6370
- const {
6371
- type: type2 = "button",
6372
- glow = true,
6373
- className,
6374
- contentClassName,
6375
- labelClassName,
6376
- accessibilityLabel,
6377
- accessibilityRole,
6378
- testID,
6379
- onClick,
6380
- onMouseMove
6381
- } = props;
6382
- const model = useButton(props);
6383
- const localRef = useRef(null);
6384
- const setRef = (node2) => {
6385
- localRef.current = node2;
6386
- if (typeof ref === "function") ref(node2);
6387
- else if (ref) ref.current = node2;
6388
- };
6389
- const handleMouseMove = (e) => {
6390
- const btn = localRef.current;
6391
- if (btn && glow) {
6392
- const rect = btn.getBoundingClientRect();
6393
- btn.style.setProperty("--glow-x", `${e.clientX - rect.left}px`);
6394
- btn.style.setProperty("--glow-y", `${e.clientY - rect.top}px`);
6395
- }
6396
- onMouseMove?.(e);
6397
- };
6398
- const handleClick = (e) => {
6399
- onClick?.(e);
6400
- if (!e.defaultPrevented) model.onPress?.();
6401
- };
6402
- return /* @__PURE__ */ jsxs(
6403
- "button",
6404
- {
6405
- ...model.rootRest,
6406
- ref: setRef,
6407
- type: type2,
6408
- disabled: model.isBusy,
6409
- onClick: handleClick,
6410
- onMouseMove: handleMouseMove,
6411
- "aria-disabled": model.isBusy,
6412
- "aria-label": accessibilityLabel,
6413
- "aria-pressed": model.selected,
6414
- "data-testid": testID,
6415
- role: accessibilityRole,
6416
- className: cn(
6417
- WEB_ROOT,
6418
- model.variantClassName,
6419
- model.shapeClassName,
6420
- model.tokens.padding,
6421
- model.tokens.text,
6422
- model.block && "w-full",
6423
- model.isTextMode && buttonTextModeClassName,
6424
- model.isBusy ? "brightness-75 grayscale cursor-not-allowed" : "hover:cursor-pointer",
6425
- className
6426
- ),
6427
- children: [
6428
- glow && /* @__PURE__ */ jsx(
6429
- "span",
6430
- {
6431
- className: "pointer-events-none absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-300",
6432
- style: {
6433
- background: "radial-gradient(200px circle at var(--glow-x) var(--glow-y), rgba(255,255,255,0.18), transparent 50%)"
6434
- }
6435
- }
6383
+ var Button = forwardRef(
6384
+ function Button2(props, ref) {
6385
+ const {
6386
+ type: type2 = "button",
6387
+ glow = true,
6388
+ className,
6389
+ contentClassName,
6390
+ labelClassName,
6391
+ accessibilityLabel,
6392
+ accessibilityRole,
6393
+ testID,
6394
+ onClick,
6395
+ onMouseMove
6396
+ } = props;
6397
+ const model = useButton(props);
6398
+ const localRef = useRef(null);
6399
+ const setRef = (node2) => {
6400
+ localRef.current = node2;
6401
+ if (typeof ref === "function") ref(node2);
6402
+ else if (ref) ref.current = node2;
6403
+ };
6404
+ const handleMouseMove = (e) => {
6405
+ const btn = localRef.current;
6406
+ if (btn && glow) {
6407
+ const rect = btn.getBoundingClientRect();
6408
+ btn.style.setProperty("--glow-x", `${e.clientX - rect.left}px`);
6409
+ btn.style.setProperty("--glow-y", `${e.clientY - rect.top}px`);
6410
+ }
6411
+ onMouseMove?.(e);
6412
+ };
6413
+ const handleClick = (e) => {
6414
+ onClick?.(e);
6415
+ if (!e.defaultPrevented) model.onPress?.();
6416
+ };
6417
+ const iconGroup = /* @__PURE__ */ jsxs(Fragment, { children: [
6418
+ model.loading && /* @__PURE__ */ jsx(AiOutlineLoading, { className: "animate-spin z-10" }),
6419
+ model.icon && /* @__PURE__ */ jsx(
6420
+ "span",
6421
+ {
6422
+ className: cn(
6423
+ "z-10 inline-flex shrink-0 items-center justify-center leading-none",
6424
+ contentClassName
6425
+ ),
6426
+ style: {
6427
+ height: model.iconSize,
6428
+ width: model.iconSize,
6429
+ lineHeight: 0
6430
+ },
6431
+ children: model.icon
6432
+ }
6433
+ )
6434
+ ] });
6435
+ const labelNode = model.label != null && model.label !== "" ? /* @__PURE__ */ jsx(
6436
+ "span",
6437
+ {
6438
+ className: cn(
6439
+ "z-10 inline-flex items-center justify-center leading-none",
6440
+ labelClassName
6436
6441
  ),
6437
- model.loading && /* @__PURE__ */ jsx(AiOutlineLoading, { className: "animate-spin z-10" }),
6438
- model.icon && /* @__PURE__ */ jsx(
6439
- "span",
6440
- {
6441
- className: cn(
6442
- "z-10 inline-flex shrink-0 items-center justify-center leading-none",
6443
- contentClassName
6444
- ),
6445
- style: { height: model.iconSize, width: model.iconSize, lineHeight: 0 },
6446
- children: model.icon
6447
- }
6442
+ style: { minHeight: model.iconSize },
6443
+ children: model.label
6444
+ }
6445
+ ) : null;
6446
+ const trailing = model.iconPosition === "trailing";
6447
+ return /* @__PURE__ */ jsxs(
6448
+ "button",
6449
+ {
6450
+ ...model.rootRest,
6451
+ ref: setRef,
6452
+ type: type2,
6453
+ disabled: model.isBusy,
6454
+ onClick: handleClick,
6455
+ onMouseMove: handleMouseMove,
6456
+ "aria-disabled": model.isBusy,
6457
+ "aria-label": accessibilityLabel,
6458
+ "aria-pressed": model.selected,
6459
+ "data-testid": testID,
6460
+ role: accessibilityRole,
6461
+ className: cn(
6462
+ WEB_ROOT,
6463
+ model.variantClassName,
6464
+ model.shapeClassName,
6465
+ model.tokens.padding,
6466
+ model.tokens.text,
6467
+ model.block && "w-full",
6468
+ model.isTextMode && buttonTextModeClassName,
6469
+ model.isBusy ? "brightness-75 grayscale cursor-not-allowed" : "hover:cursor-pointer",
6470
+ className
6448
6471
  ),
6449
- model.label != null && model.label !== "" && /* @__PURE__ */ jsx(
6450
- "span",
6451
- {
6452
- className: cn(
6453
- "z-10 inline-flex items-center justify-center leading-none",
6454
- labelClassName
6455
- ),
6456
- style: { minHeight: model.iconSize },
6457
- children: model.label
6458
- }
6459
- )
6460
- ]
6461
- }
6462
- );
6463
- });
6472
+ children: [
6473
+ glow && /* @__PURE__ */ jsx(
6474
+ "span",
6475
+ {
6476
+ className: "pointer-events-none absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-300",
6477
+ style: {
6478
+ background: "radial-gradient(200px circle at var(--glow-x) var(--glow-y), rgba(255,255,255,0.18), transparent 50%)"
6479
+ }
6480
+ }
6481
+ ),
6482
+ trailing ? labelNode : iconGroup,
6483
+ trailing ? iconGroup : labelNode
6484
+ ]
6485
+ }
6486
+ );
6487
+ }
6488
+ );
6464
6489
  var Button_web_default = Button;
6465
6490
 
6466
6491
  // src/data/styles/shared.styles.tsx
@@ -31488,7 +31513,7 @@ var GlowWrapper = ({
31488
31513
  /* @__PURE__ */ jsx(
31489
31514
  "span",
31490
31515
  {
31491
- className: "\r\n pointer-events-none absolute inset-0 opacity-0 \r\n group-hover:opacity-100 transition-opacity duration-300\r\n ",
31516
+ className: "\n pointer-events-none absolute inset-0 opacity-0 \n group-hover:opacity-100 transition-opacity duration-300\n ",
31492
31517
  style: { background: "var(--glow-bg)" }
31493
31518
  }
31494
31519
  ),
@@ -33179,6 +33204,10 @@ var TopNav = ({
33179
33204
  }
33180
33205
  );
33181
33206
  };
33207
+ var RECOMMENDATION_OPTIONS = [
33208
+ { label: "Yes", value: "yes" },
33209
+ { label: "No", value: "no" }
33210
+ ];
33182
33211
  function ReviewForm({
33183
33212
  initialValues,
33184
33213
  placeholder = "Write your review...",
@@ -33186,163 +33215,85 @@ function ReviewForm({
33186
33215
  cancelLabel = "Cancel",
33187
33216
  loading = false,
33188
33217
  disabled = false,
33189
- autoFocus = false,
33190
33218
  config,
33191
33219
  onSubmit,
33192
33220
  onCancel
33193
33221
  }) {
33194
- const [content3, setContent] = useState(initialValues?.content ?? "");
33195
- const [rating, setRating] = useState(initialValues?.rating ?? 0);
33196
- const [isRecommended, setIsRecommended] = useState(
33197
- initialValues?.isRecommended ?? true
33198
- );
33199
- const [error, setError] = useState("");
33200
- const contentLength = content3.trim().length;
33201
- const ratingItems = useMemo(() => {
33202
- return Array.from(
33203
- {
33204
- length: config.maxRating
33205
- },
33206
- (_2, index3) => index3 + 1
33207
- );
33208
- }, [config.maxRating]);
33209
- useEffect(() => {
33210
- setContent(initialValues?.content ?? "");
33211
- setRating(initialValues?.rating ?? 0);
33212
- setIsRecommended(initialValues?.isRecommended ?? true);
33213
- setError("");
33214
- }, [
33215
- initialValues?.content,
33216
- initialValues?.rating,
33217
- initialValues?.isRecommended
33218
- ]);
33219
- function validate() {
33220
- const trimmedContent = content3.trim();
33221
- if (trimmedContent.length < config.minContentLength) {
33222
- return `Review must be at least ${config.minContentLength} characters.`;
33223
- }
33224
- if (trimmedContent.length > config.maxContentLength) {
33225
- return `Review cannot be more than ${config.maxContentLength} characters.`;
33226
- }
33227
- if (rating < config.minRating) {
33228
- return "Please select a rating.";
33229
- }
33230
- return "";
33231
- }
33232
- async function handleSubmit() {
33233
- const nextError = validate();
33234
- if (nextError) {
33235
- setError(nextError);
33236
- return;
33237
- }
33238
- const values = {
33239
- content: content3.trim(),
33240
- rating,
33241
- isRecommended: config.allowRecommendation ? isRecommended : void 0
33222
+ const formInitialValues = {
33223
+ content: initialValues?.content ?? "",
33224
+ rating: initialValues?.rating ?? 0,
33225
+ isRecommended: initialValues?.isRecommended ?? true ? "yes" : "no"
33226
+ };
33227
+ async function handleSubmit(values) {
33228
+ const normalized = {
33229
+ content: values.content.trim(),
33230
+ rating: Number(values.rating),
33231
+ isRecommended: config.allowRecommendation ? values.isRecommended === "yes" : void 0
33242
33232
  };
33243
- await onSubmit(values);
33233
+ await onSubmit(normalized);
33244
33234
  }
33245
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
33246
- /* @__PURE__ */ jsx(
33247
- "textarea",
33248
- {
33249
- value: content3,
33250
- disabled: disabled || loading,
33251
- autoFocus,
33252
- placeholder,
33253
- maxLength: config.maxContentLength,
33254
- onChange: (event) => {
33255
- setContent(event.target.value);
33256
- setError("");
33257
- },
33258
- className: "min-h-[120px] w-full resize-none rounded-xl border border-gray-300 bg-white px-4 py-3 text-sm text-gray-900 outline-none transition-colors placeholder:text-gray-400 focus:border-blue-500 disabled:cursor-not-allowed disabled:opacity-60 dark:border-neutral-700 dark:bg-neutral-900 dark:text-gray-100 dark:placeholder:text-gray-500"
33259
- }
33260
- ),
33261
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3 text-xs text-gray-500 dark:text-gray-400", children: [
33262
- /* @__PURE__ */ jsxs("span", { children: [
33263
- contentLength,
33264
- "/",
33265
- config.maxContentLength
33266
- ] }),
33267
- error && /* @__PURE__ */ jsx("span", { className: "text-red-500", children: error })
33268
- ] }),
33269
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
33270
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Rating" }),
33271
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: ratingItems.map((item) => {
33272
- const active = item <= rating;
33273
- return /* @__PURE__ */ jsx(
33274
- "button",
33275
- {
33276
- type: "button",
33277
- disabled: disabled || loading,
33278
- onClick: () => {
33279
- setRating(item);
33280
- setError("");
33281
- },
33282
- className: `
33283
- text-2xl leading-none transition-transform disabled:cursor-not-allowed disabled:opacity-60
33284
- ${active ? "text-yellow-400" : "text-gray-300 dark:text-neutral-700"}
33285
- hover:scale-110
33286
- `,
33287
- "aria-label": `Rate ${item} out of ${config.maxRating}`,
33288
- children: "\u2605"
33289
- },
33290
- item
33291
- );
33292
- }) })
33293
- ] }),
33294
- config.allowRecommendation && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
33295
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Do you recommend this?" }),
33296
- /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-3", children: [
33297
- /* @__PURE__ */ jsxs("label", { className: "inline-flex cursor-pointer items-center gap-2 text-sm text-gray-700 dark:text-gray-300", children: [
33235
+ return /* @__PURE__ */ jsx(
33236
+ Form,
33237
+ {
33238
+ enableReinitialize: true,
33239
+ initialValues: formInitialValues,
33240
+ onSubmit: handleSubmit,
33241
+ children: (formik) => {
33242
+ const content3 = String(formik.values.content ?? "").trim();
33243
+ const rating = Number(formik.values.rating ?? 0);
33244
+ const isValid = content3.length >= config.minContentLength && rating >= config.minRating;
33245
+ const busy = loading || formik.isSubmitting;
33246
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
33298
33247
  /* @__PURE__ */ jsx(
33299
- "input",
33248
+ TextArea,
33300
33249
  {
33301
- type: "radio",
33302
- checked: isRecommended,
33303
- disabled: disabled || loading,
33304
- onChange: () => setIsRecommended(true)
33250
+ name: "content",
33251
+ label: placeholder,
33252
+ placeholder,
33253
+ rows: 4,
33254
+ limit: config.maxContentLength,
33255
+ disabled: disabled || busy
33305
33256
  }
33306
33257
  ),
33307
- "Yes"
33308
- ] }),
33309
- /* @__PURE__ */ jsxs("label", { className: "inline-flex cursor-pointer items-center gap-2 text-sm text-gray-700 dark:text-gray-300", children: [
33310
- /* @__PURE__ */ jsx(
33311
- "input",
33258
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
33259
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Rating" }),
33260
+ /* @__PURE__ */ jsx(StarRatingInput_default, { name: "rating", starAmount: config.maxRating })
33261
+ ] }),
33262
+ config.allowRecommendation && /* @__PURE__ */ jsx(
33263
+ Radio_default,
33312
33264
  {
33313
- type: "radio",
33314
- checked: !isRecommended,
33315
- disabled: disabled || loading,
33316
- onChange: () => setIsRecommended(false)
33265
+ name: "isRecommended",
33266
+ placeholder: "Do you recommend this?",
33267
+ options: RECOMMENDATION_OPTIONS
33317
33268
  }
33318
33269
  ),
33319
- "No"
33320
- ] })
33321
- ] })
33322
- ] }),
33323
- /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
33324
- onCancel && /* @__PURE__ */ jsx(
33325
- Button_web_default,
33326
- {
33327
- text: cancelLabel,
33328
- variant: "secondary",
33329
- appearance: "ghost",
33330
- disabled: loading,
33331
- onClick: onCancel
33332
- }
33333
- ),
33334
- /* @__PURE__ */ jsx(
33335
- Button_web_default,
33336
- {
33337
- text: submitLabel,
33338
- variant: "primary",
33339
- loading,
33340
- disabled: disabled || !content3.trim() || rating < config.minRating,
33341
- onClick: handleSubmit
33342
- }
33343
- )
33344
- ] })
33345
- ] });
33270
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
33271
+ onCancel && /* @__PURE__ */ jsx(
33272
+ Button_web_default,
33273
+ {
33274
+ type: "button",
33275
+ text: cancelLabel,
33276
+ variant: "secondary",
33277
+ appearance: "ghost",
33278
+ disabled: busy,
33279
+ onClick: onCancel
33280
+ }
33281
+ ),
33282
+ /* @__PURE__ */ jsx(
33283
+ Button_web_default,
33284
+ {
33285
+ type: "submit",
33286
+ text: submitLabel,
33287
+ variant: "primary",
33288
+ loading: busy,
33289
+ disabled: disabled || !isValid
33290
+ }
33291
+ )
33292
+ ] })
33293
+ ] });
33294
+ }
33295
+ }
33296
+ );
33346
33297
  }
33347
33298
  var ReviewForm_default = ReviewForm;
33348
33299
  function ReviewComposer({
@@ -33356,12 +33307,12 @@ function ReviewComposer({
33356
33307
  onSubmit
33357
33308
  }) {
33358
33309
  if (!currentUser) {
33359
- return /* @__PURE__ */ jsx("div", { className: "rounded-xl border border-gray-200 bg-white p-4 dark:border-neutral-800 dark:bg-neutral-900", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [
33360
- /* @__PURE__ */ jsx("p", { className: "text-sm text-gray-600 dark:text-gray-400", children: "Please login to post your review." }),
33310
+ return /* @__PURE__ */ jsx(Card_default, { styles: "p-4", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [
33311
+ /* @__PURE__ */ jsx(Typography.Caption, { children: "Please login to post your review." }),
33361
33312
  onLoginClick && /* @__PURE__ */ jsx(Button_web_default, { text: "Login", variant: "primary", onClick: onLoginClick })
33362
33313
  ] }) });
33363
33314
  }
33364
- return /* @__PURE__ */ jsx("div", { className: "rounded-xl border border-gray-200 bg-white p-4 dark:border-neutral-800 dark:bg-neutral-900", children: /* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
33315
+ return /* @__PURE__ */ jsx(Card_default, { styles: "p-4", children: /* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
33365
33316
  /* @__PURE__ */ jsx(Avatar, { src: currentUser.avatar, size: "md" }),
33366
33317
  /* @__PURE__ */ jsx("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsx(
33367
33318
  ReviewForm_default,
@@ -33591,48 +33542,23 @@ function ReviewHeader({ review, config }) {
33591
33542
  }
33592
33543
  var ReviewHeader_default = ReviewHeader;
33593
33544
  function ReviewContent({ review }) {
33594
- return /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap break-words text-sm leading-6 text-gray-700 dark:text-gray-300", children: review.content });
33545
+ return /* @__PURE__ */ jsx(Typography.Paragraph, { className: "whitespace-pre-wrap break-words", children: review.content });
33595
33546
  }
33596
33547
  var ReviewContent_default = ReviewContent;
33597
33548
  function ReviewRating({ rating, maxRating }) {
33598
- const items = Array.from(
33599
- {
33600
- length: maxRating
33601
- },
33602
- (_2, index3) => index3 + 1
33603
- );
33604
- return /* @__PURE__ */ jsx(
33605
- "div",
33606
- {
33607
- className: "inline-flex items-center gap-0.5",
33608
- "aria-label": `${rating} out of ${maxRating}`,
33609
- children: items.map((item) => /* @__PURE__ */ jsx(
33610
- "span",
33611
- {
33612
- className: item <= rating ? "text-sm text-yellow-400" : "text-sm text-gray-300 dark:text-neutral-700",
33613
- children: "\u2605"
33614
- },
33615
- item
33616
- ))
33617
- }
33618
- );
33549
+ return /* @__PURE__ */ jsx(StarRating, { rating, max: maxRating, size: "sm" });
33619
33550
  }
33620
33551
  var ReviewRating_default = ReviewRating;
33621
33552
  function ReviewRecommendation({ isRecommended }) {
33622
33553
  if (typeof isRecommended !== "boolean") {
33623
33554
  return null;
33624
33555
  }
33625
- return /* @__PURE__ */ jsxs(
33626
- "span",
33556
+ return /* @__PURE__ */ jsx(
33557
+ Chip,
33627
33558
  {
33628
- className: `
33629
- inline-flex items-center gap-1 rounded-full px-2.5 py-1 text-xs font-medium
33630
- ${isRecommended ? "bg-green-500/10 text-green-500" : "bg-red-500/10 text-red-500"}
33631
- `,
33632
- children: [
33633
- isRecommended ? /* @__PURE__ */ jsx(BiCheckCircle, { size: 16 }) : /* @__PURE__ */ jsx(BiXCircle, { size: 16 }),
33634
- isRecommended ? "Recommended" : "Not Recommended"
33635
- ]
33559
+ label: isRecommended ? "Recommended" : "Not Recommended",
33560
+ variant: isRecommended ? "success" : "danger",
33561
+ appearance: "lite"
33636
33562
  }
33637
33563
  );
33638
33564
  }
@@ -33770,56 +33696,32 @@ function MyReviewPanel({
33770
33696
  ] });
33771
33697
  }
33772
33698
  var MyReviewPanel_default = MyReviewPanel;
33773
- function ReviewMenuItem({
33774
- icon,
33775
- name: name2,
33776
- badge,
33777
- to,
33778
- navigate,
33779
- className,
33780
- onClick,
33781
- style: style2
33782
- }) {
33783
- return /* @__PURE__ */ jsx(
33784
- MenuItem,
33785
- {
33786
- icon,
33787
- name: name2,
33788
- badge,
33789
- to,
33790
- navigate,
33791
- onClick,
33792
- style: style2,
33793
- className
33794
- }
33795
- );
33796
- }
33699
+ var MENU_ITEM_CLASS = "flex w-full items-center gap-2 px-4 py-3 text-sm hover:bg-gray-100 dark:hover:bg-neutral-800";
33797
33700
  function ReviewMenu({
33798
33701
  open,
33799
33702
  setOpen,
33800
33703
  canEdit,
33801
33704
  canDelete,
33802
33705
  canReport,
33803
- canReply,
33804
33706
  onEdit,
33805
33707
  onDelete,
33806
- onReport,
33807
- onReply
33708
+ onReport
33808
33709
  }) {
33809
33710
  const ref = useRef(null);
33810
33711
  useClickOutside(ref, () => setOpen(false));
33712
+ const withClose = (action) => () => {
33713
+ setOpen(false);
33714
+ action?.();
33715
+ };
33811
33716
  const items = [];
33812
33717
  if (canEdit) {
33813
33718
  items.push({
33814
33719
  type: "item",
33815
33720
  icon: /* @__PURE__ */ jsx(BiEdit, {}),
33816
33721
  name: "Edit Review",
33817
- component: ReviewMenuItem,
33818
- onClick: () => {
33819
- setOpen(false);
33820
- onEdit?.();
33821
- },
33822
- className: "flex w-full items-center gap-2 px-4 py-3 text-sm hover:bg-gray-100 dark:hover:bg-neutral-800"
33722
+ component: MenuItem,
33723
+ onClick: withClose(onEdit),
33724
+ className: MENU_ITEM_CLASS
33823
33725
  });
33824
33726
  }
33825
33727
  if (canDelete) {
@@ -33827,12 +33729,9 @@ function ReviewMenu({
33827
33729
  type: "item",
33828
33730
  icon: /* @__PURE__ */ jsx(BiTrash, {}),
33829
33731
  name: "Delete Review",
33830
- component: ReviewMenuItem,
33831
- onClick: () => {
33832
- setOpen(false);
33833
- onDelete?.();
33834
- },
33835
- className: "flex w-full items-center gap-2 px-4 py-3 text-sm text-red-500 hover:bg-gray-100 dark:hover:bg-neutral-800"
33732
+ component: MenuItem,
33733
+ onClick: withClose(onDelete),
33734
+ className: `${MENU_ITEM_CLASS} text-red-500`
33836
33735
  });
33837
33736
  }
33838
33737
  if (canReport) {
@@ -33840,25 +33739,9 @@ function ReviewMenu({
33840
33739
  type: "item",
33841
33740
  icon: /* @__PURE__ */ jsx(BiFlag, {}),
33842
33741
  name: "Report Review",
33843
- component: ReviewMenuItem,
33844
- onClick: () => {
33845
- setOpen(false);
33846
- onReport?.();
33847
- },
33848
- className: "flex w-full items-center gap-2 px-4 py-3 text-sm hover:bg-gray-100 dark:hover:bg-neutral-800"
33849
- });
33850
- }
33851
- if (canReply) {
33852
- items.push({
33853
- type: "item",
33854
- icon: /* @__PURE__ */ jsx(BiReply, {}),
33855
- name: "Reply as Owner",
33856
- component: ReviewMenuItem,
33857
- onClick: () => {
33858
- setOpen(false);
33859
- onReply?.();
33860
- },
33861
- className: "flex w-full items-center gap-2 px-4 py-3 text-sm hover:bg-gray-100 dark:hover:bg-neutral-800"
33742
+ component: MenuItem,
33743
+ onClick: withClose(onReport),
33744
+ className: MENU_ITEM_CLASS
33862
33745
  });
33863
33746
  }
33864
33747
  if (!items.length) {
@@ -33879,20 +33762,20 @@ function ReviewMenu({
33879
33762
  ] });
33880
33763
  }
33881
33764
  var ReviewMenu_default = ReviewMenu;
33882
- function ReviewActions({ canReply, onReply }) {
33765
+ function ReviewActions({ canReply, config, onReply }) {
33883
33766
  if (!canReply) {
33884
33767
  return null;
33885
33768
  }
33886
- return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-4 text-sm text-gray-500 dark:text-gray-400", children: /* @__PURE__ */ jsxs(
33887
- "button",
33769
+ return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
33770
+ Button_web_default,
33888
33771
  {
33889
33772
  type: "button",
33890
- onClick: onReply,
33891
- className: "inline-flex items-center gap-1 font-medium transition-colors hover:text-gray-900 dark:hover:text-gray-100",
33892
- children: [
33893
- /* @__PURE__ */ jsx(BiReply, { size: 18 }),
33894
- "Reply as Owner"
33895
- ]
33773
+ text: `Reply as ${config.ownerReplyLabel}`,
33774
+ variant: "secondary",
33775
+ appearance: "ghost",
33776
+ size: "sm",
33777
+ icon: /* @__PURE__ */ jsx(BiReply, {}),
33778
+ onClick: onReply
33896
33779
  }
33897
33780
  ) });
33898
33781
  }
@@ -33920,33 +33803,10 @@ function ReviewReplyHeader({ reply, config }) {
33920
33803
  }
33921
33804
  var ReviewReplyHeader_default = ReviewReplyHeader;
33922
33805
  function ReviewReplyContent({ reply }) {
33923
- return /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap break-words text-sm leading-6 text-gray-700 dark:text-gray-300", children: reply.content });
33806
+ return /* @__PURE__ */ jsx(Typography.Paragraph, { className: "whitespace-pre-wrap break-words", children: reply.content });
33924
33807
  }
33925
33808
  var ReviewReplyContent_default = ReviewReplyContent;
33926
- function ReviewReplyMenuItem({
33927
- icon,
33928
- name: name2,
33929
- badge,
33930
- to,
33931
- navigate,
33932
- className,
33933
- onClick,
33934
- style: style2
33935
- }) {
33936
- return /* @__PURE__ */ jsx(
33937
- MenuItem,
33938
- {
33939
- icon,
33940
- name: name2,
33941
- badge,
33942
- to,
33943
- navigate,
33944
- onClick,
33945
- style: style2,
33946
- className
33947
- }
33948
- );
33949
- }
33809
+ var MENU_ITEM_CLASS2 = "flex w-full items-center gap-2 px-4 py-3 text-sm hover:bg-gray-100 dark:hover:bg-neutral-800";
33950
33810
  function ReviewReplyMenu({
33951
33811
  open,
33952
33812
  setOpen,
@@ -33959,18 +33819,19 @@ function ReviewReplyMenu({
33959
33819
  }) {
33960
33820
  const ref = useRef(null);
33961
33821
  useClickOutside(ref, () => setOpen(false));
33822
+ const withClose = (action) => () => {
33823
+ setOpen(false);
33824
+ action?.();
33825
+ };
33962
33826
  const items = [];
33963
33827
  if (canEdit) {
33964
33828
  items.push({
33965
33829
  type: "item",
33966
33830
  icon: /* @__PURE__ */ jsx(BiEdit, {}),
33967
33831
  name: "Edit Reply",
33968
- component: ReviewReplyMenuItem,
33969
- onClick: () => {
33970
- setOpen(false);
33971
- onEdit?.();
33972
- },
33973
- className: "flex w-full items-center gap-2 px-4 py-3 text-sm hover:bg-gray-100 dark:hover:bg-neutral-800"
33832
+ component: MenuItem,
33833
+ onClick: withClose(onEdit),
33834
+ className: MENU_ITEM_CLASS2
33974
33835
  });
33975
33836
  }
33976
33837
  if (canDelete) {
@@ -33978,12 +33839,9 @@ function ReviewReplyMenu({
33978
33839
  type: "item",
33979
33840
  icon: /* @__PURE__ */ jsx(BiTrash, {}),
33980
33841
  name: "Delete Reply",
33981
- component: ReviewReplyMenuItem,
33982
- onClick: () => {
33983
- setOpen(false);
33984
- onDelete?.();
33985
- },
33986
- className: "flex w-full items-center gap-2 px-4 py-3 text-sm text-red-500 hover:bg-gray-100 dark:hover:bg-neutral-800"
33842
+ component: MenuItem,
33843
+ onClick: withClose(onDelete),
33844
+ className: `${MENU_ITEM_CLASS2} text-red-500`
33987
33845
  });
33988
33846
  }
33989
33847
  if (canReport) {
@@ -33991,12 +33849,9 @@ function ReviewReplyMenu({
33991
33849
  type: "item",
33992
33850
  icon: /* @__PURE__ */ jsx(BiFlag, {}),
33993
33851
  name: "Report Reply",
33994
- component: ReviewReplyMenuItem,
33995
- onClick: () => {
33996
- setOpen(false);
33997
- onReport?.();
33998
- },
33999
- className: "flex w-full items-center gap-2 px-4 py-3 text-sm hover:bg-gray-100 dark:hover:bg-neutral-800"
33852
+ component: MenuItem,
33853
+ onClick: withClose(onReport),
33854
+ className: MENU_ITEM_CLASS2
34000
33855
  });
34001
33856
  }
34002
33857
  if (!items.length) {
@@ -34128,11 +33983,9 @@ function ReviewItem({
34128
33983
  canEdit,
34129
33984
  canDelete,
34130
33985
  canReport,
34131
- canReply,
34132
33986
  onEdit: () => onEditReview?.(review),
34133
33987
  onDelete: () => onDeleteReview?.(review),
34134
- onReport: () => onReportReview?.(review),
34135
- onReply: () => onReplyToReview?.(review)
33988
+ onReport: () => onReportReview?.(review)
34136
33989
  }
34137
33990
  )
34138
33991
  ] }),
@@ -34151,6 +34004,7 @@ function ReviewItem({
34151
34004
  ActionsComponent,
34152
34005
  {
34153
34006
  review,
34007
+ config,
34154
34008
  canReply,
34155
34009
  onReply: () => onReplyToReview?.(review)
34156
34010
  }
@@ -34174,9 +34028,9 @@ function ReviewEmptyState({
34174
34028
  title = "No reviews yet",
34175
34029
  text: text10 = "There are no reviews to show."
34176
34030
  }) {
34177
- return /* @__PURE__ */ jsxs("div", { className: "rounded-xl border border-dashed border-gray-300 bg-white p-8 text-center dark:border-neutral-800 dark:bg-neutral-900", children: [
34178
- /* @__PURE__ */ jsx("div", { className: "text-sm font-semibold text-gray-900 dark:text-gray-100", children: title }),
34179
- text10 && /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: text10 })
34031
+ return /* @__PURE__ */ jsxs(Info, { className: "flex flex-col items-center gap-1 text-center", children: [
34032
+ /* @__PURE__ */ jsx(Typography.Label, { bold: true, children: title }),
34033
+ text10 && /* @__PURE__ */ jsx(Typography.Caption, { children: text10 })
34180
34034
  ] });
34181
34035
  }
34182
34036
  var ReviewEmptyState_default = ReviewEmptyState;
@@ -35529,11 +35383,11 @@ function addChildren(props, children3) {
35529
35383
  }
35530
35384
  }
35531
35385
  }
35532
- function productionCreate(_2, jsx256, jsxs129) {
35386
+ function productionCreate(_2, jsx256, jsxs127) {
35533
35387
  return create3;
35534
35388
  function create3(_3, type2, props, key) {
35535
35389
  const isStaticChildren = Array.isArray(props.children);
35536
- const fn = isStaticChildren ? jsxs129 : jsx256;
35390
+ const fn = isStaticChildren ? jsxs127 : jsx256;
35537
35391
  return key ? fn(type2, props, key) : fn(type2, props);
35538
35392
  }
35539
35393
  }
@@ -59198,6 +59052,6 @@ function ScrollToTop({
59198
59052
  }
59199
59053
  var ScrollToTop_default = ScrollToTop;
59200
59054
 
59201
- export { Accordion_default as Accordion, AnalyticsContext, AnalyticsProvider, AreaPlot, AsyncComponentWrapper_default as AsyncComponentWrapper, Avatar, Backdrop_default as Backdrop, Badge, BarPlot, BaseChartDataSource, Block_default as Block, BlockGroup_default as BlockGroup, BoxNav_default as BoxNav, BoxNavItem_default as BoxNavItem, Brand, Breadcrumb, BreadcrumbItem_default as BreadcrumbItem, Button_web_default as Button, CHART_COLOR_PALETTE, CHART_DARK_THEME, CHART_DATA_MODES, CHART_DEFAULT_ACTIVE_DOT_RADIUS, CHART_DEFAULT_ANIMATION_DURATION, CHART_DEFAULT_BAR_RADIUS, CHART_DEFAULT_HEIGHT, CHART_DEFAULT_HORIZONTAL_BAR_RADIUS, CHART_DEFAULT_MARGIN, CHART_DEFAULT_MAX_REALTIME_POINTS, CHART_DEFAULT_POLLING_INTERVAL, CHART_DEFAULT_STROKE_WIDTH, CHART_EMPTY_MESSAGE, CHART_ERROR_MESSAGE, CHART_LIGHT_THEME, CHART_LOADING_MESSAGE, CHART_STATUSES, CHART_STATUS_COLORS, CHART_VALUE_FORMATS, Caption, Card_default as Card, CardContent_default as CardContent, CardFooter_default as CardFooter, CardHeader_default as CardHeader, Chapter, Chart, ChartContainer, ChartContext, ChartEmptyState, ChartErrorState, ChartHeader, ChartLegend, ChartLoadingState, ChartPanel, ChartPlotFrame, ChartProvider, ChartToolbar, ChartTooltip, Checkbox, Chip, CloudinaryImage2 as CloudinaryImage, CloudinaryProvider, CloudinaryVideo, Code, CodeMirrorMarkdownEditor_default as CodeMirrorMarkdownEditor, CommentThread_default as CommentThread, ConfigBootstrap_default as ConfigBootstrap, Configurator, ConfiguratorError, Content, ContentArea_default as ContentArea, CookieBanner, CookiePreferencesModal, DEFAULT_ANALYTICS_CONFIG, DEFAULT_COOKIE_CATEGORIES, DEFAULT_REVIEW_THREAD_CONFIG, DataView2 as DataView, DataViewContent, DataViewFilterGroup, DataViewFooter, DataViewHeader, DataViewPageSize, DataViewPagination, DataViewProvider, DataViewSearch, DataViewSidebar, DataViewSort, DataViewTable_default as DataViewTable, DateSelector, DefaultLayout_default as DefaultLayout, Display, DocumentationPanel_default as DocumentationPanel, Drawer, DrawerToggler_default as DrawerToggler, EUIDevLayout_default as EUIDevLayout, EUIProvider, EUI_ANALYTICS_ANONYMOUS_ID_STORAGE_KEY, EUI_ANALYTICS_CONSENT_STORAGE_KEY, EUI_ANALYTICS_QUEUE_STORAGE_KEY, EnvErrorScreen_default as EnvErrorScreen, Flag, Flex, FlexCol_default as FlexCol, FlexRow_default as FlexRow, Footer, FooterNav_default as FooterNav, FooterNavGroup_default as FooterNavGroup, FooterNavItem, FooterNavItemContext, FooterNavItemTitle, Form, FormResponse, GaugePlot, GenericLayout_default as GenericLayout, GlowWrapper_default as GlowWrapper, Graph, GraphEdge, GraphNode, GraphRenderer, Grid_default as Grid, Header, HeaderNav_default as HeaderNav, HeaderNavGroup_default as HeaderNavGroup, HeaderNavItem, HeaderNavItemContext, HeaderNavItemTitle, HomeLayout_default as HomeLayout, Image2 as Image, ImageInput_web_default as ImageInput, ImageView, InfiniteScrollTrigger_default as InfiniteScrollTrigger, Info, Input, InputFile, InputLabel, InputList, InputListGroup, InputResponse, Label, Layout, Lead, LinePlot, Link, List, ListItem, ListItemElement, ListRoot, MDXMarkdownEditor_default as MDXMarkdownEditor, MDXMarkdownField_default as MDXMarkdownField, MarkdownBlockquote_default as MarkdownBlockquote, MarkdownBreak_default as MarkdownBreak, MarkdownCodeBlock_default as MarkdownCodeBlock, MarkdownContext, MarkdownDetails, MarkdownDocsLayout_default as MarkdownDocsLayout, MarkdownEditor_default as MarkdownEditor, MarkdownEmphasis_default as MarkdownEmphasis, MarkdownField_default as MarkdownField, MarkdownFigcaption, MarkdownFigure, MarkdownHeading_default as MarkdownHeadingComponent, MarkdownImage_default as MarkdownImage, MarkdownInlineCode_default as MarkdownInlineCode, MarkdownLayout_default as MarkdownLayout, MarkdownLink_default as MarkdownLink, MarkdownListItem_default as MarkdownListItem, MarkdownOrderedList, MarkdownParagraph_default as MarkdownParagraph, MarkdownPreviewPane_default as MarkdownPreviewPane, MarkdownProvider_default as MarkdownProvider, MarkdownRenderer_default as MarkdownRenderer, MarkdownSourceEditor_default as MarkdownSourceEditor, MarkdownSplitEditor_default as MarkdownSplitEditor, MarkdownStrikethrough_default as MarkdownStrikethrough, MarkdownStrong_default as MarkdownStrong, MarkdownSummary, MarkdownTOC_default as MarkdownTOC, MarkdownTOCItem_default as MarkdownTOCItem, MarkdownTable_default as MarkdownTable, MarkdownTableBody, MarkdownTableCell, MarkdownTableHead, MarkdownTableHeaderCell, MarkdownTableRow, MarkdownTaskCheckbox_default as MarkdownTaskCheckbox, MarkdownThematicBreak_default as MarkdownThematicBreak, MarkdownToolbar_default as MarkdownToolbar, MarkdownUnorderedList, MarkdownViewer_default as MarkdownViewer, Menu, MenuGroup, MenuItem, MenuItemTitle, Modal_default as Modal, MotionSurface_default as MotionSurface, MultiImageInput_web_default as MultiImageInput, NumericRating, Overline, Paragraph, PiePlot, PollingChartDataSource, PreviewSwitch, PriceTag, ProgressBar, ProgressBarRating, Quote, Radio_default as Radio, RealtimeChartDataSource, ReviewThread_default as ReviewThread, RouteTab_default as RouteTab, RouteTabs_default as RouteTabs, ScatterPlot, ScrollToTop_default as ScrollToTop, Section, Select, ShapeSwitch, ShowMore_default as ShowMore, Sidebar_default as Sidebar, SidebarLayout_default as SidebarLayout, SidemenuLayout_default as SidemenuLayout, Skeleton, Slider_default as Slider, Spinner, StarRating, StarRatingDistribution_default as StarRatingDistribution, StarRatingInput_default as StarRatingInput, StatPlot, StaticChartDataSource, Switch_default as Switch, TNContext, TNDropdown, TNDropdownGroup, TNDropdownItem, TNDropdownTitle, TNGroup, TNItem, Table, TableBody, TableCell, TableElement, TableFrame, TableHead, TableHeaderCell, TableRow, Tag, Tags, TextArea, ThemeContext, ThemeProvider, ThemeSelect, ThemeSwitch, TitleBanner, Toast, Tooltip6 as Tooltip, TopNav, Transition, TransitionAccordion_default as TransitionAccordion, TransitionBase_default as TransitionBase, TransitionDropdown_default as TransitionDropdown, TransitionFade_default as TransitionFade, TransitionFadeIn_default as TransitionFadeIn, TransitionScale_default as TransitionScale, TransitionSlide_default as TransitionSlide, Typography, UnderConstructionBanner, ValueBadge, WorldMap, WorldMapCountryTable, YoutubeVideo, YoutubeVideo as YoutubeVideoPlayer, addReplyToCache, addReviewReply, appendReview, applyReactionState, assertAbsoluteURL, buildURL, canDeleteReview, canDeleteReviewReply, canEditReview, canEditReviewReply, canReplyToReview, canReportReview, canReportReviewReply, clearAnalyticsQueueStorage, clearAnonymousIdStorage, clearConsentStorage, cn, createAnalyticsEvent, createAnalyticsId, createConfigurator, createDefaultConsent, createForceLayout, createGridLayout, createHeadingSlug, createTreeLayout, createURLResolver, decrementReplyCount, defaultFormatValue, defaultTiers, ensureAnonymousIdStorage, enumValues, euiToast, extractHeadings, extractTextColorClasses, findReview, formatChartLabel, formatChartValue, formatCommentDate, formatConfigError, formatReviewDate, generateHeadingNumbers, getAllowedOrigins, getBrowserHref, getBrowserOrigin, getBrowserRedirectURL, getConsentStatusFromCategories, getCurrencySymbol, getCurrentFullUrl, getCurrentPath, getCurrentReferrer, getCurrentTitle, getDeviceInfo, getDoNotTrackEnabled, getLayout, getNowISOString, getOptimisticDislikeState, getOptimisticLikeState, getSafeRedirect, getViewport, hasReviewReply, incrementReplyCount, isBrowser, isMatch, isRenderFn, limitRealtimePoints, normalize, normalizeChartData, normalizeChartDataPoint, normalizeMarkdown, normalizeReview, normalizeReviewAuthor, normalizeReviewReply, parseJson, parseJsonRecord, parseUrlMap, prependReview, readAnalyticsQueueStorage, readAnonymousIdStorage, readConsentStorage, registerLayout, removeComment, removeCommentTreeFromCache, removeReview, removeReviewReply, replaceRealtimePoints, replaceReview, replaceReviewReply, resolveAppearanceStyles, resolveChartColor, resolveChartColors, resolveWithGlobal, safeReadStorage, safeRemoveStorage, safeWriteStorage, sanitizeHeading, sendToast, slugify, toConfiguratorError, updateComment, updateReplyCacheComment, updateReview, updateReviewReply, upsertReview, useActiveHeading, useAnalytics, useChartContext, useChartData, useChartPolling, useChartRealtime, useChartSeries, useChartTheme, useClickOutside, useCloudinaryConfig, useCookieConsent, useCurrentTheme_default as useCurrentTheme, useDrawer_default as useDrawer, useEUIConfig, useEUIDevPreviewPlatform, useIsMobile_default as useIsMobile, useMarkdown, useMarkdownHeadings, useModal_default as useModal, usePageTracking, useResolvedChartState, useReviewThreadState, useSessionTracking, useTNSlot, useTNTheme, useTheme_default as useTheme, writeAnalyticsQueueStorage, writeConsentStorage };
59055
+ export { Accordion_default as Accordion, AnalyticsContext, AnalyticsProvider, AreaPlot, AsyncComponentWrapper_default as AsyncComponentWrapper, Avatar, Backdrop_default as Backdrop, Badge, BarPlot, BaseChartDataSource, Block_default as Block, BlockGroup_default as BlockGroup, BoxNav_default as BoxNav, BoxNavItem_default as BoxNavItem, Brand, Breadcrumb, BreadcrumbItem_default as BreadcrumbItem, Button_web_default as Button, CHART_COLOR_PALETTE, CHART_DARK_THEME, CHART_DATA_MODES, CHART_DEFAULT_ACTIVE_DOT_RADIUS, CHART_DEFAULT_ANIMATION_DURATION, CHART_DEFAULT_BAR_RADIUS, CHART_DEFAULT_HEIGHT, CHART_DEFAULT_HORIZONTAL_BAR_RADIUS, CHART_DEFAULT_MARGIN, CHART_DEFAULT_MAX_REALTIME_POINTS, CHART_DEFAULT_POLLING_INTERVAL, CHART_DEFAULT_STROKE_WIDTH, CHART_EMPTY_MESSAGE, CHART_ERROR_MESSAGE, CHART_LIGHT_THEME, CHART_LOADING_MESSAGE, CHART_STATUSES, CHART_STATUS_COLORS, CHART_VALUE_FORMATS, Caption, Card_default as Card, CardContent_default as CardContent, CardFooter_default as CardFooter, CardHeader_default as CardHeader, Chapter, Chart, ChartContainer, ChartContext, ChartEmptyState, ChartErrorState, ChartHeader, ChartLegend, ChartLoadingState, ChartPanel, ChartPlotFrame, ChartProvider, ChartToolbar, ChartTooltip, Checkbox, Chip, CloudinaryImage2 as CloudinaryImage, CloudinaryProvider, CloudinaryVideo, Code, CodeMirrorMarkdownEditor_default as CodeMirrorMarkdownEditor, CommentThread_default as CommentThread, ConfigBootstrap_default as ConfigBootstrap, Configurator, ConfiguratorError, Content, ContentArea_default as ContentArea, CookieBanner, CookiePreferencesModal, DEFAULT_ANALYTICS_CONFIG, DEFAULT_COOKIE_CATEGORIES, DEFAULT_REVIEW_THREAD_CONFIG, DataView2 as DataView, DataViewContent, DataViewFilterGroup, DataViewFooter, DataViewHeader, DataViewPageSize, DataViewPagination, DataViewProvider, DataViewSearch, DataViewSidebar, DataViewSort, DataViewTable_default as DataViewTable, DateSelector, DefaultLayout_default as DefaultLayout, Display, DocumentationPanel_default as DocumentationPanel, Drawer, DrawerToggler_default as DrawerToggler, EUIDevLayout_default as EUIDevLayout, EUIProvider, EUI_ANALYTICS_ANONYMOUS_ID_STORAGE_KEY, EUI_ANALYTICS_CONSENT_STORAGE_KEY, EUI_ANALYTICS_QUEUE_STORAGE_KEY, EnvErrorScreen_default as EnvErrorScreen, Flag, Flex, FlexCol_default as FlexCol, FlexRow_default as FlexRow, Footer, FooterNav_default as FooterNav, FooterNavGroup_default as FooterNavGroup, FooterNavItem, FooterNavItemContext, FooterNavItemTitle, Form, FormResponse, GaugePlot, GenericLayout_default as GenericLayout, GlowWrapper_default as GlowWrapper, Graph, GraphEdge, GraphNode, GraphRenderer, Grid_default as Grid, Header, HeaderNav_default as HeaderNav, HeaderNavGroup_default as HeaderNavGroup, HeaderNavItem, HeaderNavItemContext, HeaderNavItemTitle, HomeLayout_default as HomeLayout, Image2 as Image, ImageInput_web_default as ImageInput, ImageView, InfiniteScrollTrigger_default as InfiniteScrollTrigger, Info, Input, InputFile, InputLabel, InputList, InputListGroup, InputResponse, Label, Layout, Lead, LinePlot, Link, List, ListItem, ListItemElement, ListRoot, MDXMarkdownEditor_default as MDXMarkdownEditor, MDXMarkdownField_default as MDXMarkdownField, MarkdownBlockquote_default as MarkdownBlockquote, MarkdownBreak_default as MarkdownBreak, MarkdownCodeBlock_default as MarkdownCodeBlock, MarkdownContext, MarkdownDetails, MarkdownDocsLayout_default as MarkdownDocsLayout, MarkdownEditor_default as MarkdownEditor, MarkdownEmphasis_default as MarkdownEmphasis, MarkdownField_default as MarkdownField, MarkdownFigcaption, MarkdownFigure, MarkdownHeading_default as MarkdownHeadingComponent, MarkdownImage_default as MarkdownImage, MarkdownInlineCode_default as MarkdownInlineCode, MarkdownLayout_default as MarkdownLayout, MarkdownLink_default as MarkdownLink, MarkdownListItem_default as MarkdownListItem, MarkdownOrderedList, MarkdownParagraph_default as MarkdownParagraph, MarkdownPreviewPane_default as MarkdownPreviewPane, MarkdownProvider_default as MarkdownProvider, MarkdownRenderer_default as MarkdownRenderer, MarkdownSourceEditor_default as MarkdownSourceEditor, MarkdownSplitEditor_default as MarkdownSplitEditor, MarkdownStrikethrough_default as MarkdownStrikethrough, MarkdownStrong_default as MarkdownStrong, MarkdownSummary, MarkdownTOC_default as MarkdownTOC, MarkdownTOCItem_default as MarkdownTOCItem, MarkdownTable_default as MarkdownTable, MarkdownTableBody, MarkdownTableCell, MarkdownTableHead, MarkdownTableHeaderCell, MarkdownTableRow, MarkdownTaskCheckbox_default as MarkdownTaskCheckbox, MarkdownThematicBreak_default as MarkdownThematicBreak, MarkdownToolbar_default as MarkdownToolbar, MarkdownUnorderedList, MarkdownViewer_default as MarkdownViewer, Menu, MenuGroup, MenuItem, MenuItemTitle, Modal_default as Modal, MotionSurface_default as MotionSurface, MultiImageInput_web_default as MultiImageInput, NumericRating, Overline, Paragraph, PiePlot, PollingChartDataSource, PreviewSwitch, PriceTag, ProgressBar, ProgressBarRating, Quote, Radio_default as Radio, RealtimeChartDataSource, ReviewComposer_default as ReviewComposer, ReviewForm_default as ReviewForm, ReviewThread_default as ReviewThread, RouteTab_default as RouteTab, RouteTabs_default as RouteTabs, ScatterPlot, ScrollToTop_default as ScrollToTop, Section, Select, ShapeSwitch, ShowMore_default as ShowMore, Sidebar_default as Sidebar, SidebarLayout_default as SidebarLayout, SidemenuLayout_default as SidemenuLayout, Skeleton, Slider_default as Slider, Spinner, StarRating, StarRatingDistribution_default as StarRatingDistribution, StarRatingInput_default as StarRatingInput, StatPlot, StaticChartDataSource, Switch_default as Switch, TNContext, TNDropdown, TNDropdownGroup, TNDropdownItem, TNDropdownTitle, TNGroup, TNItem, Table, TableBody, TableCell, TableElement, TableFrame, TableHead, TableHeaderCell, TableRow, Tag, Tags, TextArea, ThemeContext, ThemeProvider, ThemeSelect, ThemeSwitch, TitleBanner, Toast, Tooltip6 as Tooltip, TopNav, Transition, TransitionAccordion_default as TransitionAccordion, TransitionBase_default as TransitionBase, TransitionDropdown_default as TransitionDropdown, TransitionFade_default as TransitionFade, TransitionFadeIn_default as TransitionFadeIn, TransitionScale_default as TransitionScale, TransitionSlide_default as TransitionSlide, Typography, UnderConstructionBanner, ValueBadge, WorldMap, WorldMapCountryTable, YoutubeVideo, YoutubeVideo as YoutubeVideoPlayer, addReplyToCache, addReviewReply, appendReview, applyReactionState, assertAbsoluteURL, buildURL, canDeleteReview, canDeleteReviewReply, canEditReview, canEditReviewReply, canReplyToReview, canReportReview, canReportReviewReply, clearAnalyticsQueueStorage, clearAnonymousIdStorage, clearConsentStorage, cn, createAnalyticsEvent, createAnalyticsId, createConfigurator, createDefaultConsent, createForceLayout, createGridLayout, createHeadingSlug, createTreeLayout, createURLResolver, decrementReplyCount, defaultFormatValue, defaultTiers, ensureAnonymousIdStorage, enumValues, euiToast, extractHeadings, extractTextColorClasses, findReview, formatChartLabel, formatChartValue, formatCommentDate, formatConfigError, formatReviewDate, generateHeadingNumbers, getAllowedOrigins, getBrowserHref, getBrowserOrigin, getBrowserRedirectURL, getConsentStatusFromCategories, getCurrencySymbol, getCurrentFullUrl, getCurrentPath, getCurrentReferrer, getCurrentTitle, getDeviceInfo, getDoNotTrackEnabled, getLayout, getNowISOString, getOptimisticDislikeState, getOptimisticLikeState, getSafeRedirect, getViewport, hasReviewReply, incrementReplyCount, isBrowser, isMatch, isRenderFn, limitRealtimePoints, normalize, normalizeChartData, normalizeChartDataPoint, normalizeMarkdown, normalizeReview, normalizeReviewAuthor, normalizeReviewReply, parseJson, parseJsonRecord, parseUrlMap, prependReview, readAnalyticsQueueStorage, readAnonymousIdStorage, readConsentStorage, registerLayout, removeComment, removeCommentTreeFromCache, removeReview, removeReviewReply, replaceRealtimePoints, replaceReview, replaceReviewReply, resolveAppearanceStyles, resolveChartColor, resolveChartColors, resolveWithGlobal, safeReadStorage, safeRemoveStorage, safeWriteStorage, sanitizeHeading, sendToast, slugify, toConfiguratorError, updateComment, updateReplyCacheComment, updateReview, updateReviewReply, upsertReview, useActiveHeading, useAnalytics, useChartContext, useChartData, useChartPolling, useChartRealtime, useChartSeries, useChartTheme, useClickOutside, useCloudinaryConfig, useCookieConsent, useCurrentTheme_default as useCurrentTheme, useDrawer_default as useDrawer, useEUIConfig, useEUIDevPreviewPlatform, useIsMobile_default as useIsMobile, useMarkdown, useMarkdownHeadings, useModal_default as useModal, usePageTracking, useResolvedChartState, useReviewThreadState, useSessionTracking, useTNSlot, useTNTheme, useTheme_default as useTheme, writeAnalyticsQueueStorage, writeConsentStorage };
59202
59056
  //# sourceMappingURL=index.mjs.map
59203
59057
  //# sourceMappingURL=index.mjs.map