opus-react 0.2.20 → 0.2.22

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.cjs CHANGED
@@ -456,6 +456,9 @@ __export(src_exports, {
456
456
  Accordion: () => Accordion,
457
457
  AccordionGroup: () => AccordionGroup,
458
458
  Alert: () => Alert,
459
+ Avatar: () => Avatar,
460
+ AvatarGroup: () => AvatarGroup,
461
+ Badge: () => Badge,
459
462
  Button: () => Button,
460
463
  Card: () => Card,
461
464
  Carousel: () => Carousel,
@@ -465,15 +468,21 @@ __export(src_exports, {
465
468
  CheckboxField: () => CheckboxField,
466
469
  ChipInput: () => ChipInput,
467
470
  ChipInputField: () => ChipInputField,
471
+ Clipboard: () => Clipboard,
472
+ ClipboardProvider: () => ClipboardProvider,
468
473
  ColorField: () => ColorField,
469
474
  CommandPalette: () => CommandPalette,
475
+ ContentTimeline: () => ContentTimeline,
470
476
  ContextMenuProvider: () => ContextMenuProvider,
471
477
  ContextMenuTarget: () => ContextMenuTarget,
478
+ CopyButton: () => CopyButton,
472
479
  CountryPickerField: () => CountryPickerField,
473
480
  DEFAULT_TOAST_DURATION_MS: () => DEFAULT_TOAST_DURATION_MS,
474
481
  DataGrid: () => DataGrid,
475
482
  DateField: () => DateField,
483
+ DescriptionList: () => DescriptionList,
476
484
  Dialog: () => Dialog,
485
+ Divider: () => Divider,
477
486
  Drawer: () => Drawer,
478
487
  DrawerDefaultActions: () => DrawerDefaultActions,
479
488
  DropdownMenu: () => DropdownMenu,
@@ -482,12 +491,20 @@ __export(src_exports, {
482
491
  FieldShell: () => FieldShell,
483
492
  FileField: () => FileField,
484
493
  FilterSelectField: () => FilterSelectField,
494
+ FocusTrap: () => FocusTrap,
485
495
  Gauge: () => Gauge,
486
496
  HiddenField: () => HiddenField,
497
+ HotkeyManager: () => HotkeyManager,
498
+ Icon: () => Icon,
487
499
  IconPicker: () => IconPicker,
488
500
  ImageGallery: () => ImageGallery,
489
501
  ImageThumbnail: () => ImageThumbnail,
502
+ IntersectionObserver: () => IntersectionObserver2,
503
+ JsonViewer: () => JsonViewer,
504
+ KeyboardShortcut: () => KeyboardShortcut,
490
505
  Lightbox: () => Lightbox,
506
+ List: () => List,
507
+ MasonryGrid: () => MasonryGrid,
491
508
  MegaMenu: () => MegaMenu,
492
509
  MetricTile: () => MetricTile,
493
510
  Modal: () => Modal,
@@ -503,12 +520,16 @@ __export(src_exports, {
503
520
  PasswordStrengthField: () => PasswordStrengthField,
504
521
  PhoneNumberField: () => PhoneNumberField,
505
522
  Popover: () => Popover,
523
+ Portal: () => Portal,
524
+ PortalHost: () => PortalHost,
506
525
  ProgressBar: () => ProgressBar,
507
526
  ProgressRing: () => ProgressRing,
527
+ PropertyGrid: () => PropertyGrid,
508
528
  Radio: () => Radio,
509
529
  RadioGroup: () => RadioGroup,
510
530
  RangeField: () => RangeField,
511
531
  RatingField: () => RatingField,
532
+ ResizeObserver: () => ResizeObserver2,
512
533
  RichTextField: () => RichTextField,
513
534
  Section: () => Section,
514
535
  SegmentedControlField: () => SegmentedControlField,
@@ -524,13 +545,17 @@ __export(src_exports, {
524
545
  SliderRangeField: () => SliderRangeField,
525
546
  Sparkline: () => Sparkline,
526
547
  Speedometer: () => Speedometer,
548
+ Spinner: () => Spinner,
527
549
  StatCard: () => StatCard,
550
+ Statistic: () => Statistic,
528
551
  StatusIndicator: () => StatusIndicator,
529
552
  SwitchField: () => SwitchField,
530
553
  Table: () => Table,
531
554
  Tabs: () => Tabs,
532
555
  TextAreaField: () => TextAreaField,
533
556
  TextField: () => TextField,
557
+ ThemeProvider: () => OpusThemeProvider,
558
+ ThemeSwitcher: () => ThemeSwitcher,
534
559
  ThemeToggleField: () => ThemeToggleField,
535
560
  Toast: () => Toast,
536
561
  ToastProvider: () => ToastProvider,
@@ -539,7 +564,9 @@ __export(src_exports, {
539
564
  TopNavigationMenu: () => TopNavigationMenu,
540
565
  TransferListField: () => TransferListField,
541
566
  TreeSelectField: () => TreeSelectField,
567
+ TreeView: () => TreeView,
542
568
  TrendBadge: () => TrendBadge,
569
+ VisuallyHidden: () => VisuallyHidden,
543
570
  accentColors: () => accentColors,
544
571
  cartesianSpecializedVariants: () => cartesianSpecializedVariants,
545
572
  countryCodeToFlag: () => countryCodeToFlag,
@@ -554,9 +581,15 @@ __export(src_exports, {
554
581
  fieldInputAriaProps: () => fieldInputAriaProps,
555
582
  phoneCountries: () => countries,
556
583
  useAccentPreference: () => useAccentPreference,
584
+ useClipboard: () => useClipboard,
557
585
  useContextMenu: () => useContextMenu,
558
586
  useFieldShellAria: () => useFieldShellAria,
587
+ useHotkey: () => useHotkey,
588
+ useHotkeyManager: () => useHotkeyManager,
589
+ useIntersectionObserver: () => useIntersectionObserver,
559
590
  useOpusTheme: () => useOpusTheme,
591
+ usePortalHost: () => usePortalHost,
592
+ useResizeObserver: () => useResizeObserver,
560
593
  useToast: () => useToast,
561
594
  useTopNavigation: () => useTopNavigation,
562
595
  worldMapRegionIds: () => worldMapRegionIds
@@ -564,7 +597,7 @@ __export(src_exports, {
564
597
  module.exports = __toCommonJS(src_exports);
565
598
 
566
599
  // ../../components/fields/Button/Button.module.css
567
- var Button_default = {"dark":"opus_lZkc26_dark","secondary":"opus_lZkc26_secondary","primary":"opus_lZkc26_primary","success":"opus_lZkc26_success","button":"opus_lZkc26_button","link":"opus_lZkc26_link","light":"opus_lZkc26_light","info":"opus_lZkc26_info","danger":"opus_lZkc26_danger","warning":"opus_lZkc26_warning"};
600
+ var Button_default = {"secondary":"opus_lZkc26_secondary","success":"opus_lZkc26_success","dark":"opus_lZkc26_dark","link":"opus_lZkc26_link","light":"opus_lZkc26_light","button":"opus_lZkc26_button","info":"opus_lZkc26_info","primary":"opus_lZkc26_primary","danger":"opus_lZkc26_danger","warning":"opus_lZkc26_warning"};
568
601
 
569
602
  // ../../components/fields/Button/Button.tsx
570
603
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -589,7 +622,7 @@ var import_react = require("react");
589
622
  var import_react_dom = require("react-dom");
590
623
 
591
624
  // ../../components/Tooltip/Tooltip.module.css
592
- var Tooltip_default = {"top":"opus_R70RbH_top","left":"opus_R70RbH_left","right":"opus_R70RbH_right","popup":"opus_R70RbH_popup","triggerWrap":"opus_R70RbH_triggerWrap","arrow":"opus_R70RbH_arrow","trigger":"opus_R70RbH_trigger","root":"opus_R70RbH_root","bottom":"opus_R70RbH_bottom"};
625
+ var Tooltip_default = {"trigger":"opus_R70RbH_trigger","popup":"opus_R70RbH_popup","top":"opus_R70RbH_top","bottom":"opus_R70RbH_bottom","root":"opus_R70RbH_root","triggerWrap":"opus_R70RbH_triggerWrap","arrow":"opus_R70RbH_arrow","left":"opus_R70RbH_left","right":"opus_R70RbH_right"};
593
626
 
594
627
  // ../../components/Tooltip/Tooltip.tsx
595
628
  var import_jsx_runtime2 = require("react/jsx-runtime");
@@ -758,7 +791,7 @@ function Tooltip({
758
791
  }
759
792
 
760
793
  // ../../components/fields/FieldShell/FieldShell.module.css
761
- var FieldShell_default = {"compactControl":"opus_zNi12Z_compactControl","labelLeft":"opus_zNi12Z_labelLeft","labelFlagged":"opus_zNi12Z_labelFlagged","stackedLeft":"opus_zNi12Z_stackedLeft","controlFlagged":"opus_zNi12Z_controlFlagged","stacked":"opus_zNi12Z_stacked","control":"opus_zNi12Z_control","labelRight":"opus_zNi12Z_labelRight","visuallyHidden":"opus_zNi12Z_visuallyHidden","stackedRight":"opus_zNi12Z_stackedRight","fitContent":"opus_zNi12Z_fitContent","flaggedCenter":"opus_zNi12Z_flaggedCenter","error":"opus_zNi12Z_error","errorFlagged":"opus_zNi12Z_errorFlagged","flagged":"opus_zNi12Z_flagged","flaggedStart":"opus_zNi12Z_flaggedStart","label":"opus_zNi12Z_label","root":"opus_zNi12Z_root","required":"opus_zNi12Z_required"};
794
+ var FieldShell_default = {"labelRight":"opus_zNi12Z_labelRight","flagged":"opus_zNi12Z_flagged","stackedLeft":"opus_zNi12Z_stackedLeft","stacked":"opus_zNi12Z_stacked","stackedRight":"opus_zNi12Z_stackedRight","root":"opus_zNi12Z_root","compactControl":"opus_zNi12Z_compactControl","labelFlagged":"opus_zNi12Z_labelFlagged","errorFlagged":"opus_zNi12Z_errorFlagged","required":"opus_zNi12Z_required","label":"opus_zNi12Z_label","flaggedStart":"opus_zNi12Z_flaggedStart","labelLeft":"opus_zNi12Z_labelLeft","control":"opus_zNi12Z_control","flaggedCenter":"opus_zNi12Z_flaggedCenter","error":"opus_zNi12Z_error","visuallyHidden":"opus_zNi12Z_visuallyHidden","fitContent":"opus_zNi12Z_fitContent","controlFlagged":"opus_zNi12Z_controlFlagged"};
762
795
 
763
796
  // ../../components/fields/FieldShell/FieldShell.tsx
764
797
  var import_jsx_runtime3 = require("react/jsx-runtime");
@@ -883,7 +916,7 @@ function FieldShell({
883
916
  }
884
917
 
885
918
  // ../../components/fields/CheckboxField/CheckboxField.module.css
886
- var CheckboxField_default = {"error":"opus_g-5tlR_error","shell":"opus_g-5tlR_shell","toggle":"opus_g-5tlR_toggle","visual":"opus_g-5tlR_visual","round":"opus_g-5tlR_round","nativeInput":"opus_g-5tlR_nativeInput","square":"opus_g-5tlR_square"};
919
+ var CheckboxField_default = {"round":"opus_g-5tlR_round","shell":"opus_g-5tlR_shell","square":"opus_g-5tlR_square","nativeInput":"opus_g-5tlR_nativeInput","error":"opus_g-5tlR_error","toggle":"opus_g-5tlR_toggle","visual":"opus_g-5tlR_visual"};
887
920
 
888
921
  // ../../components/fields/CheckboxField/CheckboxField.tsx
889
922
  var import_jsx_runtime4 = require("react/jsx-runtime");
@@ -940,7 +973,7 @@ function CheckboxField({
940
973
  }
941
974
 
942
975
  // ../../components/fields/ColorField/ColorField.module.css
943
- var ColorField_default = {"swatch":"opus_Z7jeX4_swatch","icon":"opus_Z7jeX4_icon","error":"opus_Z7jeX4_error","nativeInput":"opus_Z7jeX4_nativeInput","value":"opus_Z7jeX4_value","picker":"opus_Z7jeX4_picker"};
976
+ var ColorField_default = {"picker":"opus_Z7jeX4_picker","swatch":"opus_Z7jeX4_swatch","nativeInput":"opus_Z7jeX4_nativeInput","value":"opus_Z7jeX4_value","icon":"opus_Z7jeX4_icon","error":"opus_Z7jeX4_error"};
944
977
 
945
978
  // ../../components/fields/ColorField/ColorField.tsx
946
979
  var import_jsx_runtime5 = require("react/jsx-runtime");
@@ -1081,7 +1114,7 @@ function HiddenField({
1081
1114
  }
1082
1115
 
1083
1116
  // ../../components/fields/FileField/FileField.module.css
1084
- var FileField_default = {"drop":"opus_aOsPA7_drop","wrapper":"opus_aOsPA7_wrapper","dragging":"opus_aOsPA7_dragging","iconSvg":"opus_aOsPA7_iconSvg","action":"opus_aOsPA7_action","hint":"opus_aOsPA7_hint","footnote":"opus_aOsPA7_footnote","input":"opus_aOsPA7_input","icon":"opus_aOsPA7_icon","content":"opus_aOsPA7_content","dropError":"opus_aOsPA7_dropError","title":"opus_aOsPA7_title"};
1117
+ var FileField_default = {"icon":"opus_aOsPA7_icon","footnote":"opus_aOsPA7_footnote","content":"opus_aOsPA7_content","dragging":"opus_aOsPA7_dragging","iconSvg":"opus_aOsPA7_iconSvg","action":"opus_aOsPA7_action","input":"opus_aOsPA7_input","dropError":"opus_aOsPA7_dropError","drop":"opus_aOsPA7_drop","wrapper":"opus_aOsPA7_wrapper","title":"opus_aOsPA7_title","hint":"opus_aOsPA7_hint"};
1085
1118
 
1086
1119
  // ../../components/fields/FileField/FileField.tsx
1087
1120
  var import_react3 = require("react");
@@ -1218,7 +1251,7 @@ function FileField({
1218
1251
  var import_react4 = require("react");
1219
1252
 
1220
1253
  // ../../components/fields/NumberField/NumberField.module.css
1221
- var NumberField_default = {"input":"opus_L272Dk_input","stepper":"opus_L272Dk_stepper","button":"opus_L272Dk_button","error":"opus_L272Dk_error"};
1254
+ var NumberField_default = {"stepper":"opus_L272Dk_stepper","button":"opus_L272Dk_button","input":"opus_L272Dk_input","error":"opus_L272Dk_error"};
1222
1255
 
1223
1256
  // ../../components/fields/numericUtils.ts
1224
1257
  function decimalPlacesFromStep(step) {
@@ -1386,7 +1419,7 @@ function NumberField({
1386
1419
  var import_react5 = require("react");
1387
1420
 
1388
1421
  // ../../components/fields/RadioGroup/RadioGroup.module.css
1389
- var RadioGroup_default = {"visual":"opus_O-1nor_visual","round":"opus_O-1nor_round","option":"opus_O-1nor_option","error":"opus_O-1nor_error","choice":"opus_O-1nor_choice","options":"opus_O-1nor_options","nativeInput":"opus_O-1nor_nativeInput","shell":"opus_O-1nor_shell","square":"opus_O-1nor_square"};
1422
+ var RadioGroup_default = {"choice":"opus_O-1nor_choice","square":"opus_O-1nor_square","option":"opus_O-1nor_option","options":"opus_O-1nor_options","nativeInput":"opus_O-1nor_nativeInput","error":"opus_O-1nor_error","round":"opus_O-1nor_round","visual":"opus_O-1nor_visual","shell":"opus_O-1nor_shell"};
1390
1423
 
1391
1424
  // ../../components/fields/RadioGroup/RadioGroup.tsx
1392
1425
  var import_jsx_runtime10 = require("react/jsx-runtime");
@@ -1483,7 +1516,7 @@ function Radio({ children, error, name, shape, value, defaultChecked }) {
1483
1516
  var import_react6 = require("react");
1484
1517
 
1485
1518
  // ../../components/fields/ChipInputField/ChipInputField.module.css
1486
- var ChipInputField_default = {"readOnly":"opus_IOOYwh_readOnly","chip":"opus_IOOYwh_chip","disabled":"opus_IOOYwh_disabled","input":"opus_IOOYwh_input","error":"opus_IOOYwh_error","field":"opus_IOOYwh_field","remove":"opus_IOOYwh_remove","chipLabel":"opus_IOOYwh_chipLabel","shell":"opus_IOOYwh_shell"};
1519
+ var ChipInputField_default = {"remove":"opus_IOOYwh_remove","field":"opus_IOOYwh_field","shell":"opus_IOOYwh_shell","error":"opus_IOOYwh_error","input":"opus_IOOYwh_input","readOnly":"opus_IOOYwh_readOnly","chipLabel":"opus_IOOYwh_chipLabel","disabled":"opus_IOOYwh_disabled","chip":"opus_IOOYwh_chip"};
1487
1520
 
1488
1521
  // ../../components/fields/ChipInputField/ChipInputField.tsx
1489
1522
  var import_jsx_runtime11 = require("react/jsx-runtime");
@@ -1619,7 +1652,7 @@ function ChipInput({
1619
1652
  var ChipInputField = ChipInput;
1620
1653
 
1621
1654
  // ../../components/fields/RangeField/RangeField.module.css
1622
- var RangeField_default = {"topRow":"opus_iRHQuG_topRow","value":"opus_iRHQuG_value","error":"opus_iRHQuG_error","footer":"opus_iRHQuG_footer","fieldLabel":"opus_iRHQuG_fieldLabel","slider":"opus_iRHQuG_slider","wrap":"opus_iRHQuG_wrap"};
1655
+ var RangeField_default = {"value":"opus_iRHQuG_value","slider":"opus_iRHQuG_slider","error":"opus_iRHQuG_error","fieldLabel":"opus_iRHQuG_fieldLabel","topRow":"opus_iRHQuG_topRow","wrap":"opus_iRHQuG_wrap","footer":"opus_iRHQuG_footer"};
1623
1656
 
1624
1657
  // ../../components/fields/RangeField/RangeField.tsx
1625
1658
  var import_jsx_runtime12 = require("react/jsx-runtime");
@@ -1698,7 +1731,7 @@ function RangeField({
1698
1731
  }
1699
1732
 
1700
1733
  // ../../components/fields/SelectField/SelectField.module.css
1701
- var SelectField_default = {"error":"opus_m2ObG0_error","wrap":"opus_m2ObG0_wrap","select":"opus_m2ObG0_select"};
1734
+ var SelectField_default = {"select":"opus_m2ObG0_select","wrap":"opus_m2ObG0_wrap","error":"opus_m2ObG0_error"};
1702
1735
 
1703
1736
  // ../../components/fields/SelectField/SelectField.tsx
1704
1737
  var import_jsx_runtime13 = require("react/jsx-runtime");
@@ -1742,7 +1775,7 @@ function SelectField({
1742
1775
  }
1743
1776
 
1744
1777
  // ../../components/fields/SwitchField/SwitchField.module.css
1745
- var SwitchField_default = {"error":"opus_t9NLEA_error","track":"opus_t9NLEA_track","toggle":"opus_t9NLEA_toggle","shell":"opus_t9NLEA_shell"};
1778
+ var SwitchField_default = {"error":"opus_t9NLEA_error","track":"opus_t9NLEA_track","shell":"opus_t9NLEA_shell","toggle":"opus_t9NLEA_toggle"};
1746
1779
 
1747
1780
  // ../../components/fields/SwitchField/SwitchField.tsx
1748
1781
  var import_jsx_runtime14 = require("react/jsx-runtime");
@@ -1791,7 +1824,7 @@ function SwitchField({
1791
1824
  var import_react7 = require("react");
1792
1825
 
1793
1826
  // ../../components/fields/TextAreaField/TextAreaField.module.css
1794
- var TextAreaField_default = {"inputWrap":"opus_FjhWmh_inputWrap","footer":"opus_FjhWmh_footer","inlineCount":"opus_FjhWmh_inlineCount","field":"opus_FjhWmh_field","withCount":"opus_FjhWmh_withCount","error":"opus_FjhWmh_error","textarea":"opus_FjhWmh_textarea","footerError":"opus_FjhWmh_footerError","externalCount":"opus_FjhWmh_externalCount"};
1827
+ var TextAreaField_default = {"externalCount":"opus_FjhWmh_externalCount","inlineCount":"opus_FjhWmh_inlineCount","field":"opus_FjhWmh_field","withCount":"opus_FjhWmh_withCount","footer":"opus_FjhWmh_footer","inputWrap":"opus_FjhWmh_inputWrap","footerError":"opus_FjhWmh_footerError","textarea":"opus_FjhWmh_textarea","error":"opus_FjhWmh_error"};
1795
1828
 
1796
1829
  // ../../components/fields/TextAreaField/TextAreaField.tsx
1797
1830
  var import_jsx_runtime15 = require("react/jsx-runtime");
@@ -1875,7 +1908,7 @@ var import_react_fontawesome = require("@fortawesome/react-fontawesome");
1875
1908
  var import_free_solid_svg_icons = require("@fortawesome/free-solid-svg-icons");
1876
1909
 
1877
1910
  // ../../components/fields/RichTextField/RichTextField.module.css
1878
- var RichTextField_default = {"toolbarIcon":"opus_6HFqZH_toolbarIcon","modalDimensions":"opus_6HFqZH_modalDimensions","readOnly":"opus_6HFqZH_readOnly","modalLabel":"opus_6HFqZH_modalLabel","toolbarButton":"opus_6HFqZH_toolbarButton","editor":"opus_6HFqZH_editor","modalCancel":"opus_6HFqZH_modalCancel","divider":"opus_6HFqZH_divider","modalConfirm":"opus_6HFqZH_modalConfirm","toolbar":"opus_6HFqZH_toolbar","colorInput":"opus_6HFqZH_colorInput","modalDimensionField":"opus_6HFqZH_modalDimensionField","modal":"opus_6HFqZH_modal","colorSwatch":"opus_6HFqZH_colorSwatch","error":"opus_6HFqZH_error","modalTimes":"opus_6HFqZH_modalTimes","modalField":"opus_6HFqZH_modalField","modalActions":"opus_6HFqZH_modalActions","modalNumber":"opus_6HFqZH_modalNumber","modalInput":"opus_6HFqZH_modalInput","modalTitle":"opus_6HFqZH_modalTitle","blockSelect":"opus_6HFqZH_blockSelect","toolbarButtonActive":"opus_6HFqZH_toolbarButtonActive","modalOverlay":"opus_6HFqZH_modalOverlay","editorShell":"opus_6HFqZH_editorShell","field":"opus_6HFqZH_field"};
1911
+ var RichTextField_default = {"modalActions":"opus_6HFqZH_modalActions","modalCancel":"opus_6HFqZH_modalCancel","modalConfirm":"opus_6HFqZH_modalConfirm","field":"opus_6HFqZH_field","readOnly":"opus_6HFqZH_readOnly","modalOverlay":"opus_6HFqZH_modalOverlay","editor":"opus_6HFqZH_editor","modalDimensionField":"opus_6HFqZH_modalDimensionField","divider":"opus_6HFqZH_divider","modalField":"opus_6HFqZH_modalField","toolbarButton":"opus_6HFqZH_toolbarButton","toolbar":"opus_6HFqZH_toolbar","blockSelect":"opus_6HFqZH_blockSelect","modalTitle":"opus_6HFqZH_modalTitle","modalLabel":"opus_6HFqZH_modalLabel","modalInput":"opus_6HFqZH_modalInput","modalDimensions":"opus_6HFqZH_modalDimensions","modalTimes":"opus_6HFqZH_modalTimes","error":"opus_6HFqZH_error","colorInput":"opus_6HFqZH_colorInput","modal":"opus_6HFqZH_modal","editorShell":"opus_6HFqZH_editorShell","toolbarIcon":"opus_6HFqZH_toolbarIcon","toolbarButtonActive":"opus_6HFqZH_toolbarButtonActive","colorSwatch":"opus_6HFqZH_colorSwatch","modalNumber":"opus_6HFqZH_modalNumber"};
1879
1912
 
1880
1913
  // ../../components/fields/RichTextField/RichTextField.tsx
1881
1914
  var import_jsx_runtime16 = require("react/jsx-runtime");
@@ -2520,10 +2553,10 @@ function RichTextField({
2520
2553
  var import_react9 = require("react");
2521
2554
 
2522
2555
  // ../../components/fields/TextField/TextField.module.css
2523
- var TextField_default = {"error":"opus_SOck2f_error","input":"opus_SOck2f_input"};
2556
+ var TextField_default = {"input":"opus_SOck2f_input","error":"opus_SOck2f_error"};
2524
2557
 
2525
2558
  // ../../components/fields/shared/fieldControl.module.css
2526
- var fieldControl_default = {"search":"opus_1Q5xBh_search","actionButtonPrimary":"opus_1Q5xBh_actionButtonPrimary","triggerError":"opus_1Q5xBh_triggerError","error":"opus_1Q5xBh_error","chevron":"opus_1Q5xBh_chevron","panel":"opus_1Q5xBh_panel","placeholder":"opus_1Q5xBh_placeholder","triggerOpen":"opus_1Q5xBh_triggerOpen","passwordToggle":"opus_1Q5xBh_passwordToggle","option":"opus_1Q5xBh_option","trigger":"opus_1Q5xBh_trigger","groupLabel":"opus_1Q5xBh_groupLabel","input":"opus_1Q5xBh_input","passwordWrap":"opus_1Q5xBh_passwordWrap","actionButton":"opus_1Q5xBh_actionButton","passwordInput":"opus_1Q5xBh_passwordInput","panelFooter":"opus_1Q5xBh_panelFooter","list":"opus_1Q5xBh_list","passwordToggleSlot":"opus_1Q5xBh_passwordToggleSlot"};
2559
+ var fieldControl_default = {"actionButtonPrimary":"opus_1Q5xBh_actionButtonPrimary","actionButton":"opus_1Q5xBh_actionButton","passwordWrap":"opus_1Q5xBh_passwordWrap","passwordToggle":"opus_1Q5xBh_passwordToggle","triggerOpen":"opus_1Q5xBh_triggerOpen","triggerError":"opus_1Q5xBh_triggerError","passwordInput":"opus_1Q5xBh_passwordInput","trigger":"opus_1Q5xBh_trigger","groupLabel":"opus_1Q5xBh_groupLabel","option":"opus_1Q5xBh_option","panelFooter":"opus_1Q5xBh_panelFooter","passwordToggleSlot":"opus_1Q5xBh_passwordToggleSlot","chevron":"opus_1Q5xBh_chevron","search":"opus_1Q5xBh_search","list":"opus_1Q5xBh_list","input":"opus_1Q5xBh_input","panel":"opus_1Q5xBh_panel","error":"opus_1Q5xBh_error","placeholder":"opus_1Q5xBh_placeholder"};
2527
2560
 
2528
2561
  // ../../components/fields/shared/PasswordToggle.tsx
2529
2562
  var import_react_fontawesome2 = require("@fortawesome/react-fontawesome");
@@ -2606,7 +2639,7 @@ var import_react_fontawesome3 = require("@fortawesome/react-fontawesome");
2606
2639
  var import_free_solid_svg_icons3 = require("@fortawesome/free-solid-svg-icons");
2607
2640
 
2608
2641
  // ../../components/fields/ThemeToggleField/ThemeToggleField.module.css
2609
- var ThemeToggleField_default = {"option":"opus_SwerMA_option","indicator":"opus_SwerMA_indicator","toggle":"opus_SwerMA_toggle","active":"opus_SwerMA_active"};
2642
+ var ThemeToggleField_default = {"toggle":"opus_SwerMA_toggle","indicator":"opus_SwerMA_indicator","option":"opus_SwerMA_option","active":"opus_SwerMA_active"};
2610
2643
 
2611
2644
  // ../../components/fields/ThemeToggleField/ThemeToggleField.tsx
2612
2645
  var import_jsx_runtime19 = require("react/jsx-runtime");
@@ -2939,7 +2972,7 @@ function MultiSelectField({
2939
2972
  var import_react12 = require("react");
2940
2973
 
2941
2974
  // ../../components/fields/TransferListField/TransferListField.module.css
2942
- var TransferListField_default = {"column":"opus_NPBFZk_column","list":"opus_NPBFZk_list","item":"opus_NPBFZk_item","controls":"opus_NPBFZk_controls","root":"opus_NPBFZk_root","columnHeader":"opus_NPBFZk_columnHeader","controlButton":"opus_NPBFZk_controlButton","itemActive":"opus_NPBFZk_itemActive"};
2975
+ var TransferListField_default = {"list":"opus_NPBFZk_list","controls":"opus_NPBFZk_controls","root":"opus_NPBFZk_root","column":"opus_NPBFZk_column","columnHeader":"opus_NPBFZk_columnHeader","controlButton":"opus_NPBFZk_controlButton","itemActive":"opus_NPBFZk_itemActive","item":"opus_NPBFZk_item"};
2943
2976
 
2944
2977
  // ../../components/fields/TransferListField/TransferListField.tsx
2945
2978
  var import_jsx_runtime22 = require("react/jsx-runtime");
@@ -3059,7 +3092,7 @@ var import_react_fontawesome4 = require("@fortawesome/react-fontawesome");
3059
3092
  var import_free_solid_svg_icons4 = require("@fortawesome/free-solid-svg-icons");
3060
3093
 
3061
3094
  // ../../components/fields/PasswordStrengthField/PasswordStrengthField.module.css
3062
- var PasswordStrengthField_default = {"root":"opus_S1A372_root","requirementMet":"opus_S1A372_requirementMet","requirementIcon":"opus_S1A372_requirementIcon","meterFill":"opus_S1A372_meterFill","requirements":"opus_S1A372_requirements","meterWrap":"opus_S1A372_meterWrap","meterLabel":"opus_S1A372_meterLabel","requirement":"opus_S1A372_requirement","meterTrack":"opus_S1A372_meterTrack"};
3095
+ var PasswordStrengthField_default = {"meterLabel":"opus_S1A372_meterLabel","meterWrap":"opus_S1A372_meterWrap","meterFill":"opus_S1A372_meterFill","requirementIcon":"opus_S1A372_requirementIcon","root":"opus_S1A372_root","requirements":"opus_S1A372_requirements","requirement":"opus_S1A372_requirement","requirementMet":"opus_S1A372_requirementMet","meterTrack":"opus_S1A372_meterTrack"};
3063
3096
 
3064
3097
  // ../../components/fields/PasswordStrengthField/PasswordStrengthField.tsx
3065
3098
  var import_jsx_runtime23 = require("react/jsx-runtime");
@@ -3167,7 +3200,7 @@ function PasswordStrengthField({
3167
3200
  }
3168
3201
 
3169
3202
  // ../../components/fields/RatingField/RatingField.module.css
3170
- var RatingField_default = {"symbol":"opus_0tdNUz_symbol","numericActive":"opus_0tdNUz_numericActive","numeric":"opus_0tdNUz_numeric","root":"opus_0tdNUz_root","symbolActive":"opus_0tdNUz_symbolActive"};
3203
+ var RatingField_default = {"numeric":"opus_0tdNUz_numeric","symbol":"opus_0tdNUz_symbol","symbolActive":"opus_0tdNUz_symbolActive","root":"opus_0tdNUz_root","numericActive":"opus_0tdNUz_numericActive"};
3171
3204
 
3172
3205
  // ../../components/fields/RatingField/RatingField.tsx
3173
3206
  var import_jsx_runtime24 = require("react/jsx-runtime");
@@ -3242,7 +3275,7 @@ function RatingField({
3242
3275
  }
3243
3276
 
3244
3277
  // ../../components/fields/SegmentedControlField/SegmentedControlField.module.css
3245
- var SegmentedControlField_default = {"root":"opus_ZHwfiN_root","segment":"opus_ZHwfiN_segment","segmentActive":"opus_ZHwfiN_segmentActive"};
3278
+ var SegmentedControlField_default = {"segment":"opus_ZHwfiN_segment","root":"opus_ZHwfiN_root","segmentActive":"opus_ZHwfiN_segmentActive"};
3246
3279
 
3247
3280
  // ../../components/fields/SegmentedControlField/SegmentedControlField.tsx
3248
3281
  var import_jsx_runtime25 = require("react/jsx-runtime");
@@ -3297,7 +3330,7 @@ function SegmentedControlField({
3297
3330
  var import_react14 = require("react");
3298
3331
 
3299
3332
  // ../../components/fields/SliderRangeField/SliderRangeField.module.css
3300
- var SliderRangeField_default = {"value":"opus_k3d0sS_value","track":"opus_k3d0sS_track","slider":"opus_k3d0sS_slider","footer":"opus_k3d0sS_footer","trackWrap":"opus_k3d0sS_trackWrap","root":"opus_k3d0sS_root","header":"opus_k3d0sS_header"};
3333
+ var SliderRangeField_default = {"root":"opus_k3d0sS_root","slider":"opus_k3d0sS_slider","track":"opus_k3d0sS_track","header":"opus_k3d0sS_header","value":"opus_k3d0sS_value","trackWrap":"opus_k3d0sS_trackWrap","footer":"opus_k3d0sS_footer"};
3301
3334
 
3302
3335
  // ../../components/fields/SliderRangeField/SliderRangeField.tsx
3303
3336
  var import_jsx_runtime26 = require("react/jsx-runtime");
@@ -3394,7 +3427,7 @@ function SliderRangeField({
3394
3427
  var import_react15 = require("react");
3395
3428
 
3396
3429
  // ../../components/fields/PhoneNumberField/PhoneNumberField.module.css
3397
- var PhoneNumberField_default = {"countryValue":"opus_WC4gnN_countryValue","root":"opus_WC4gnN_root","option":"opus_WC4gnN_option","panel":"opus_WC4gnN_panel","chevron":"opus_WC4gnN_chevron","optionActive":"opus_WC4gnN_optionActive","dial":"opus_WC4gnN_dial","code":"opus_WC4gnN_code","country":"opus_WC4gnN_country","optionLabel":"opus_WC4gnN_optionLabel","optionDial":"opus_WC4gnN_optionDial","flag":"opus_WC4gnN_flag","empty":"opus_WC4gnN_empty","countryWrap":"opus_WC4gnN_countryWrap"};
3430
+ var PhoneNumberField_default = {"root":"opus_WC4gnN_root","countryValue":"opus_WC4gnN_countryValue","panel":"opus_WC4gnN_panel","code":"opus_WC4gnN_code","optionActive":"opus_WC4gnN_optionActive","flag":"opus_WC4gnN_flag","option":"opus_WC4gnN_option","optionLabel":"opus_WC4gnN_optionLabel","optionDial":"opus_WC4gnN_optionDial","chevron":"opus_WC4gnN_chevron","countryWrap":"opus_WC4gnN_countryWrap","country":"opus_WC4gnN_country","dial":"opus_WC4gnN_dial","empty":"opus_WC4gnN_empty"};
3398
3431
 
3399
3432
  // ../../components/fields/PhoneNumberField/countries.ts
3400
3433
  function countryCodeToFlag(code) {
@@ -3797,7 +3830,7 @@ function PhoneNumberField({
3797
3830
  var import_react16 = require("react");
3798
3831
 
3799
3832
  // ../../components/fields/CountryPickerField/CountryPickerField.module.css
3800
- var CountryPickerField_default = {"option":"opus_O7qqfR_option","optionCode":"opus_O7qqfR_optionCode","flag":"opus_O7qqfR_flag","root":"opus_O7qqfR_root","empty":"opus_O7qqfR_empty","triggerValue":"opus_O7qqfR_triggerValue","optionActive":"opus_O7qqfR_optionActive","optionLabel":"opus_O7qqfR_optionLabel"};
3833
+ var CountryPickerField_default = {"triggerValue":"opus_O7qqfR_triggerValue","root":"opus_O7qqfR_root","flag":"opus_O7qqfR_flag","optionActive":"opus_O7qqfR_optionActive","optionLabel":"opus_O7qqfR_optionLabel","empty":"opus_O7qqfR_empty","optionCode":"opus_O7qqfR_optionCode","option":"opus_O7qqfR_option"};
3801
3834
 
3802
3835
  // ../../components/fields/CountryPickerField/CountryPickerField.tsx
3803
3836
  var import_jsx_runtime28 = require("react/jsx-runtime");
@@ -3953,7 +3986,7 @@ function CountryPickerField({
3953
3986
  var import_react17 = require("react");
3954
3987
 
3955
3988
  // ../../components/fields/TreeSelectField/TreeSelectField.module.css
3956
- var TreeSelectField_default = {"treeOption":"opus_Mq6C00_treeOption","root":"opus_Mq6C00_root","treeOptionActive":"opus_Mq6C00_treeOptionActive"};
3989
+ var TreeSelectField_default = {"treeOptionActive":"opus_Mq6C00_treeOptionActive","treeOption":"opus_Mq6C00_treeOption","root":"opus_Mq6C00_root"};
3957
3990
 
3958
3991
  // ../../components/fields/TreeSelectField/TreeSelectField.tsx
3959
3992
  var import_jsx_runtime29 = require("react/jsx-runtime");
@@ -4082,7 +4115,7 @@ function TreeSelectField({
4082
4115
  var import_react18 = require("react");
4083
4116
 
4084
4117
  // ../../components/fields/CascaderField/CascaderField.module.css
4085
- var CascaderField_default = {"option":"opus_1Fg59A_option","optionActive":"opus_1Fg59A_optionActive","column":"opus_1Fg59A_column","root":"opus_1Fg59A_root","panel":"opus_1Fg59A_panel"};
4118
+ var CascaderField_default = {"option":"opus_1Fg59A_option","root":"opus_1Fg59A_root","panel":"opus_1Fg59A_panel","optionActive":"opus_1Fg59A_optionActive","column":"opus_1Fg59A_column"};
4086
4119
 
4087
4120
  // ../../components/fields/CascaderField/CascaderField.tsx
4088
4121
  var import_jsx_runtime30 = require("react/jsx-runtime");
@@ -4285,7 +4318,7 @@ function OpusThemeProvider({
4285
4318
  }
4286
4319
 
4287
4320
  // ../../components/Alert/Alert.module.css
4288
- var Alert_default = {"content":"opus_eh3eeT_content","iconSvg":"opus_eh3eeT_iconSvg","iconFlagged":"opus_eh3eeT_iconFlagged","iconMark":"opus_eh3eeT_iconMark","title":"opus_eh3eeT_title","dismissIcon":"opus_eh3eeT_dismissIcon","dismiss":"opus_eh3eeT_dismiss","alert":"opus_eh3eeT_alert","icon":"opus_eh3eeT_icon","description":"opus_eh3eeT_description"};
4321
+ var Alert_default = {"icon":"opus_eh3eeT_icon","dismiss":"opus_eh3eeT_dismiss","dismissIcon":"opus_eh3eeT_dismissIcon","content":"opus_eh3eeT_content","iconMark":"opus_eh3eeT_iconMark","title":"opus_eh3eeT_title","description":"opus_eh3eeT_description","alert":"opus_eh3eeT_alert","iconSvg":"opus_eh3eeT_iconSvg","iconFlagged":"opus_eh3eeT_iconFlagged"};
4289
4322
 
4290
4323
  // ../../components/Alert/Alert.tsx
4291
4324
  var import_jsx_runtime33 = require("react/jsx-runtime");
@@ -4434,7 +4467,7 @@ function useOverlayAccessibility(active, containerRef, {
4434
4467
  }
4435
4468
 
4436
4469
  // ../../components/Dialog/Dialog.module.css
4437
- var Dialog_default = {"visuallyHidden":"opus_sz-ZGI_visuallyHidden","dialogIn":"opus_sz-ZGI_dialogIn","backdrop":"opus_sz-ZGI_backdrop","description":"opus_sz-ZGI_description","body":"opus_sz-ZGI_body","dialog":"opus_sz-ZGI_dialog","dialogOut":"opus_sz-ZGI_dialogOut","title":"opus_sz-ZGI_title","backdropIn":"opus_sz-ZGI_backdropIn","actions":"opus_sz-ZGI_actions","icon":"opus_sz-ZGI_icon","backdropOut":"opus_sz-ZGI_backdropOut","iconMark":"opus_sz-ZGI_iconMark","iconSvg":"opus_sz-ZGI_iconSvg","content":"opus_sz-ZGI_content"};
4470
+ var Dialog_default = {"backdrop":"opus_sz-ZGI_backdrop","visuallyHidden":"opus_sz-ZGI_visuallyHidden","backdropIn":"opus_sz-ZGI_backdropIn","dialogOut":"opus_sz-ZGI_dialogOut","dialogIn":"opus_sz-ZGI_dialogIn","body":"opus_sz-ZGI_body","iconMark":"opus_sz-ZGI_iconMark","content":"opus_sz-ZGI_content","dialog":"opus_sz-ZGI_dialog","iconSvg":"opus_sz-ZGI_iconSvg","actions":"opus_sz-ZGI_actions","backdropOut":"opus_sz-ZGI_backdropOut","title":"opus_sz-ZGI_title","description":"opus_sz-ZGI_description","icon":"opus_sz-ZGI_icon"};
4438
4471
 
4439
4472
  // ../../components/Dialog/Dialog.tsx
4440
4473
  var import_jsx_runtime34 = require("react/jsx-runtime");
@@ -4565,7 +4598,7 @@ function Dialog({
4565
4598
  var import_react22 = require("react");
4566
4599
 
4567
4600
  // ../../components/Modal/Modal.module.css
4568
- var Modal_default = {"modalBackdropOut":"opus_LQbzGS_modalBackdropOut","modal":"opus_LQbzGS_modal","footer":"opus_LQbzGS_footer","body":"opus_LQbzGS_body","modalPanelOut":"opus_LQbzGS_modalPanelOut","heading":"opus_LQbzGS_heading","modalPanelIn":"opus_LQbzGS_modalPanelIn","title":"opus_LQbzGS_title","description":"opus_LQbzGS_description","close":"opus_LQbzGS_close","actions":"opus_LQbzGS_actions","header":"opus_LQbzGS_header","modalBackdropIn":"opus_LQbzGS_modalBackdropIn","closeIcon":"opus_LQbzGS_closeIcon","footerContent":"opus_LQbzGS_footerContent","backdrop":"opus_LQbzGS_backdrop"};
4601
+ var Modal_default = {"backdrop":"opus_LQbzGS_backdrop","footer":"opus_LQbzGS_footer","close":"opus_LQbzGS_close","modalBackdropIn":"opus_LQbzGS_modalBackdropIn","header":"opus_LQbzGS_header","modalPanelOut":"opus_LQbzGS_modalPanelOut","actions":"opus_LQbzGS_actions","body":"opus_LQbzGS_body","footerContent":"opus_LQbzGS_footerContent","closeIcon":"opus_LQbzGS_closeIcon","title":"opus_LQbzGS_title","modalPanelIn":"opus_LQbzGS_modalPanelIn","modalBackdropOut":"opus_LQbzGS_modalBackdropOut","modal":"opus_LQbzGS_modal","heading":"opus_LQbzGS_heading","description":"opus_LQbzGS_description"};
4569
4602
 
4570
4603
  // ../../components/Modal/Modal.tsx
4571
4604
  var import_jsx_runtime35 = require("react/jsx-runtime");
@@ -4696,7 +4729,7 @@ function ModalDefaultActions({ onClose }) {
4696
4729
  var import_react23 = require("react");
4697
4730
 
4698
4731
  // ../../components/Drawer/Drawer.module.css
4699
- var Drawer_default = {"drawer":"opus_0CaGbZ_drawer","drawerInRight":"opus_0CaGbZ_drawerInRight","description":"opus_0CaGbZ_description","footerContent":"opus_0CaGbZ_footerContent","title":"opus_0CaGbZ_title","actions":"opus_0CaGbZ_actions","drawerOutRight":"opus_0CaGbZ_drawerOutRight","drawerBackdropIn":"opus_0CaGbZ_drawerBackdropIn","close":"opus_0CaGbZ_close","drawerBackdropOut":"opus_0CaGbZ_drawerBackdropOut","drawerOutTop":"opus_0CaGbZ_drawerOutTop","drawerOutBottom":"opus_0CaGbZ_drawerOutBottom","heading":"opus_0CaGbZ_heading","drawerInLeft":"opus_0CaGbZ_drawerInLeft","drawerInBottom":"opus_0CaGbZ_drawerInBottom","closeIcon":"opus_0CaGbZ_closeIcon","body":"opus_0CaGbZ_body","backdrop":"opus_0CaGbZ_backdrop","drawerInTop":"opus_0CaGbZ_drawerInTop","drawerOutLeft":"opus_0CaGbZ_drawerOutLeft","footer":"opus_0CaGbZ_footer","header":"opus_0CaGbZ_header"};
4732
+ var Drawer_default = {"drawerOutTop":"opus_0CaGbZ_drawerOutTop","footer":"opus_0CaGbZ_footer","drawerOutRight":"opus_0CaGbZ_drawerOutRight","backdrop":"opus_0CaGbZ_backdrop","drawer":"opus_0CaGbZ_drawer","title":"opus_0CaGbZ_title","drawerInRight":"opus_0CaGbZ_drawerInRight","description":"opus_0CaGbZ_description","heading":"opus_0CaGbZ_heading","drawerBackdropIn":"opus_0CaGbZ_drawerBackdropIn","drawerOutBottom":"opus_0CaGbZ_drawerOutBottom","closeIcon":"opus_0CaGbZ_closeIcon","actions":"opus_0CaGbZ_actions","drawerInLeft":"opus_0CaGbZ_drawerInLeft","drawerOutLeft":"opus_0CaGbZ_drawerOutLeft","body":"opus_0CaGbZ_body","header":"opus_0CaGbZ_header","close":"opus_0CaGbZ_close","drawerInBottom":"opus_0CaGbZ_drawerInBottom","footerContent":"opus_0CaGbZ_footerContent","drawerBackdropOut":"opus_0CaGbZ_drawerBackdropOut","drawerInTop":"opus_0CaGbZ_drawerInTop"};
4700
4733
 
4701
4734
  // ../../components/Drawer/Drawer.tsx
4702
4735
  var import_jsx_runtime36 = require("react/jsx-runtime");
@@ -4828,7 +4861,7 @@ function DrawerDefaultActions({ onClose }) {
4828
4861
  var import_react24 = require("react");
4829
4862
 
4830
4863
  // ../../components/Popover/Popover.module.css
4831
- var Popover_default = {"root":"opus_yq4OU0_root","popoverIn":"opus_yq4OU0_popoverIn","panel":"opus_yq4OU0_panel","title":"opus_yq4OU0_title","content":"opus_yq4OU0_content","arrow":"opus_yq4OU0_arrow"};
4864
+ var Popover_default = {"popoverIn":"opus_yq4OU0_popoverIn","panel":"opus_yq4OU0_panel","title":"opus_yq4OU0_title","content":"opus_yq4OU0_content","root":"opus_yq4OU0_root","arrow":"opus_yq4OU0_arrow"};
4832
4865
 
4833
4866
  // ../../components/Popover/Popover.tsx
4834
4867
  var import_jsx_runtime37 = require("react/jsx-runtime");
@@ -4979,7 +5012,7 @@ function resolveMegaMenuPortalStyle(root, inTopNavigation) {
4979
5012
  }
4980
5013
 
4981
5014
  // ../../components/MegaMenu/MegaMenu.module.css
4982
- var MegaMenu_default = {"featuredAction":"opus_Y_ikQV_featuredAction","megaMenuIn":"opus_Y_ikQV_megaMenuIn","items":"opus_Y_ikQV_items","itemIcon":"opus_Y_ikQV_itemIcon","megaMenuOut":"opus_Y_ikQV_megaMenuOut","root":"opus_Y_ikQV_root","trigger":"opus_Y_ikQV_trigger","sections":"opus_Y_ikQV_sections","section":"opus_Y_ikQV_section","featured":"opus_Y_ikQV_featured","panelContent":"opus_Y_ikQV_panelContent","panel":"opus_Y_ikQV_panel","itemCopy":"opus_Y_ikQV_itemCopy","menuBar":"opus_Y_ikQV_menuBar","item":"opus_Y_ikQV_item","eyebrow":"opus_Y_ikQV_eyebrow"};
5015
+ var MegaMenu_default = {"megaMenuOut":"opus_Y_ikQV_megaMenuOut","root":"opus_Y_ikQV_root","panelContent":"opus_Y_ikQV_panelContent","items":"opus_Y_ikQV_items","panel":"opus_Y_ikQV_panel","eyebrow":"opus_Y_ikQV_eyebrow","sections":"opus_Y_ikQV_sections","featuredAction":"opus_Y_ikQV_featuredAction","megaMenuIn":"opus_Y_ikQV_megaMenuIn","featured":"opus_Y_ikQV_featured","section":"opus_Y_ikQV_section","item":"opus_Y_ikQV_item","itemIcon":"opus_Y_ikQV_itemIcon","trigger":"opus_Y_ikQV_trigger","menuBar":"opus_Y_ikQV_menuBar","itemCopy":"opus_Y_ikQV_itemCopy"};
4983
5016
 
4984
5017
  // ../../components/MegaMenu/MegaMenu.tsx
4985
5018
  var import_jsx_runtime38 = require("react/jsx-runtime");
@@ -5422,7 +5455,7 @@ function MegaMenu({
5422
5455
  }
5423
5456
 
5424
5457
  // ../../components/TopNavigation/TopNavigation.module.css
5425
- var TopNavigation_default = {"bar":"opus_OIomR6_bar","menuTrigger":"opus_OIomR6_menuTrigger","nav":"opus_OIomR6_nav","menuSlot":"opus_OIomR6_menuSlot","menuSlotMega":"opus_OIomR6_menuSlotMega"};
5458
+ var TopNavigation_default = {"nav":"opus_OIomR6_nav","menuSlotMega":"opus_OIomR6_menuSlotMega","menuSlot":"opus_OIomR6_menuSlot","menuTrigger":"opus_OIomR6_menuTrigger","bar":"opus_OIomR6_bar"};
5426
5459
 
5427
5460
  // ../../components/TopNavigation/TopNavigation.tsx
5428
5461
  var import_jsx_runtime39 = require("react/jsx-runtime");
@@ -5779,7 +5812,7 @@ function handleMenuKeyDown(event, menu, onEscape) {
5779
5812
  }
5780
5813
 
5781
5814
  // ../../components/DropdownMenu/DropdownMenu.module.css
5782
- var DropdownMenu_default = {"dropdownIn":"opus_UUVDVQ_dropdownIn","dropdownOut":"opus_UUVDVQ_dropdownOut","menu":"opus_UUVDVQ_menu","icon":"opus_UUVDVQ_icon","label":"opus_UUVDVQ_label","root":"opus_UUVDVQ_root","shortcut":"opus_UUVDVQ_shortcut","item":"opus_UUVDVQ_item"};
5815
+ var DropdownMenu_default = {"dropdownOut":"opus_UUVDVQ_dropdownOut","root":"opus_UUVDVQ_root","dropdownIn":"opus_UUVDVQ_dropdownIn","shortcut":"opus_UUVDVQ_shortcut","icon":"opus_UUVDVQ_icon","item":"opus_UUVDVQ_item","menu":"opus_UUVDVQ_menu","label":"opus_UUVDVQ_label"};
5783
5816
 
5784
5817
  // ../../components/DropdownMenu/DropdownMenu.tsx
5785
5818
  var import_jsx_runtime40 = require("react/jsx-runtime");
@@ -6110,7 +6143,7 @@ var import_react29 = require("react");
6110
6143
  var import_react_dom4 = require("react-dom");
6111
6144
 
6112
6145
  // ../../components/ContextMenu/ContextMenu.module.css
6113
- var ContextMenu_default = {"menu":"opus_nMhhae_menu","layer":"opus_nMhhae_layer","target":"opus_nMhhae_target","backdrop":"opus_nMhhae_backdrop","contextMenuBackdropIn":"opus_nMhhae_contextMenuBackdropIn","contextMenuIn":"opus_nMhhae_contextMenuIn"};
6146
+ var ContextMenu_default = {"contextMenuBackdropIn":"opus_nMhhae_contextMenuBackdropIn","menu":"opus_nMhhae_menu","contextMenuIn":"opus_nMhhae_contextMenuIn","layer":"opus_nMhhae_layer","target":"opus_nMhhae_target","backdrop":"opus_nMhhae_backdrop"};
6114
6147
 
6115
6148
  // ../../components/ContextMenu/ContextMenuProvider.tsx
6116
6149
  var import_jsx_runtime41 = require("react/jsx-runtime");
@@ -6415,7 +6448,7 @@ var import_free_solid_svg_icons5 = require("@fortawesome/free-solid-svg-icons");
6415
6448
  var import_react_fontawesome5 = require("@fortawesome/react-fontawesome");
6416
6449
 
6417
6450
  // ../../components/CommandPalette/CommandPalette.module.css
6418
- var CommandPalette_default = {"item":"opus_k1ypuy_item","commandPalettePanelIn":"opus_k1ypuy_commandPalettePanelIn","commandPaletteBackdropIn":"opus_k1ypuy_commandPaletteBackdropIn","searchInput":"opus_k1ypuy_searchInput","itemMain":"opus_k1ypuy_itemMain","empty":"opus_k1ypuy_empty","group":"opus_k1ypuy_group","itemDescription":"opus_k1ypuy_itemDescription","backdrop":"opus_k1ypuy_backdrop","searchWrap":"opus_k1ypuy_searchWrap","visuallyHidden":"opus_k1ypuy_visuallyHidden","searchIcon":"opus_k1ypuy_searchIcon","commandPalettePanelOut":"opus_k1ypuy_commandPalettePanelOut","footer":"opus_k1ypuy_footer","shortcut":"opus_k1ypuy_shortcut","results":"opus_k1ypuy_results","groupLabel":"opus_k1ypuy_groupLabel","panel":"opus_k1ypuy_panel","commandPaletteBackdropOut":"opus_k1ypuy_commandPaletteBackdropOut","searchIconSvg":"opus_k1ypuy_searchIconSvg","itemLabel":"opus_k1ypuy_itemLabel"};
6451
+ var CommandPalette_default = {"searchIcon":"opus_k1ypuy_searchIcon","itemLabel":"opus_k1ypuy_itemLabel","searchInput":"opus_k1ypuy_searchInput","commandPalettePanelIn":"opus_k1ypuy_commandPalettePanelIn","footer":"opus_k1ypuy_footer","shortcut":"opus_k1ypuy_shortcut","commandPalettePanelOut":"opus_k1ypuy_commandPalettePanelOut","empty":"opus_k1ypuy_empty","commandPaletteBackdropOut":"opus_k1ypuy_commandPaletteBackdropOut","visuallyHidden":"opus_k1ypuy_visuallyHidden","itemDescription":"opus_k1ypuy_itemDescription","panel":"opus_k1ypuy_panel","itemMain":"opus_k1ypuy_itemMain","item":"opus_k1ypuy_item","backdrop":"opus_k1ypuy_backdrop","results":"opus_k1ypuy_results","group":"opus_k1ypuy_group","searchIconSvg":"opus_k1ypuy_searchIconSvg","groupLabel":"opus_k1ypuy_groupLabel","commandPaletteBackdropIn":"opus_k1ypuy_commandPaletteBackdropIn","searchWrap":"opus_k1ypuy_searchWrap"};
6419
6452
 
6420
6453
  // ../../components/CommandPalette/CommandPalette.tsx
6421
6454
  var import_jsx_runtime42 = require("react/jsx-runtime");
@@ -6751,7 +6784,7 @@ function AccordionGroup({
6751
6784
  }
6752
6785
 
6753
6786
  // ../../components/Accordion/Accordion.module.css
6754
- var Accordion_default = {"chevron":"opus_WNZQMV_chevron","panelInner":"opus_WNZQMV_panelInner","triggerLabel":"opus_WNZQMV_triggerLabel","trigger":"opus_WNZQMV_trigger","standalone":"opus_WNZQMV_standalone","panel":"opus_WNZQMV_panel","content":"opus_WNZQMV_content","item":"opus_WNZQMV_item"};
6787
+ var Accordion_default = {"content":"opus_WNZQMV_content","panelInner":"opus_WNZQMV_panelInner","standalone":"opus_WNZQMV_standalone","triggerLabel":"opus_WNZQMV_triggerLabel","panel":"opus_WNZQMV_panel","trigger":"opus_WNZQMV_trigger","chevron":"opus_WNZQMV_chevron","item":"opus_WNZQMV_item"};
6755
6788
 
6756
6789
  // ../../components/Accordion/Accordion.tsx
6757
6790
  var import_jsx_runtime44 = require("react/jsx-runtime");
@@ -6838,7 +6871,7 @@ function Accordion({
6838
6871
  var import_react33 = require("react");
6839
6872
 
6840
6873
  // ../../components/ShowMore/ShowMore.module.css
6841
- var ShowMore_default = {"toggle":"opus_dSk-ve_toggle","toggleLabel":"opus_dSk-ve_toggleLabel","showMoreLabelIn":"opus_dSk-ve_showMoreLabelIn","chevron":"opus_dSk-ve_chevron","root":"opus_dSk-ve_root","inner":"opus_dSk-ve_inner","contentShell":"opus_dSk-ve_contentShell"};
6874
+ var ShowMore_default = {"toggleLabel":"opus_dSk-ve_toggleLabel","chevron":"opus_dSk-ve_chevron","root":"opus_dSk-ve_root","toggle":"opus_dSk-ve_toggle","inner":"opus_dSk-ve_inner","contentShell":"opus_dSk-ve_contentShell","showMoreLabelIn":"opus_dSk-ve_showMoreLabelIn"};
6842
6875
 
6843
6876
  // ../../components/ShowMore/ShowMore.tsx
6844
6877
  var import_jsx_runtime45 = require("react/jsx-runtime");
@@ -6942,7 +6975,7 @@ function ShowMore({
6942
6975
  }
6943
6976
 
6944
6977
  // ../../components/Toast/Toast.module.css
6945
- var Toast_default = {"dismiss":"opus_cklQPW_dismiss","title":"opus_cklQPW_title","progressBar":"opus_cklQPW_progressBar","toastProgress":"opus_cklQPW_toastProgress","dismissIcon":"opus_cklQPW_dismissIcon","toast":"opus_cklQPW_toast","description":"opus_cklQPW_description","progressTrack":"opus_cklQPW_progressTrack","body":"opus_cklQPW_body","main":"opus_cklQPW_main","content":"opus_cklQPW_content","iconMark":"opus_cklQPW_iconMark","icon":"opus_cklQPW_icon","iconSvg":"opus_cklQPW_iconSvg"};
6978
+ var Toast_default = {"main":"opus_cklQPW_main","title":"opus_cklQPW_title","progressBar":"opus_cklQPW_progressBar","toastProgress":"opus_cklQPW_toastProgress","description":"opus_cklQPW_description","iconMark":"opus_cklQPW_iconMark","toast":"opus_cklQPW_toast","dismiss":"opus_cklQPW_dismiss","progressTrack":"opus_cklQPW_progressTrack","content":"opus_cklQPW_content","icon":"opus_cklQPW_icon","body":"opus_cklQPW_body","dismissIcon":"opus_cklQPW_dismissIcon","iconSvg":"opus_cklQPW_iconSvg"};
6946
6979
 
6947
6980
  // ../../components/Toast/Toast.tsx
6948
6981
  var import_jsx_runtime46 = require("react/jsx-runtime");
@@ -7014,7 +7047,7 @@ function Toast({
7014
7047
  var import_react34 = require("react");
7015
7048
 
7016
7049
  // ../../components/ToastProvider/ToastProvider.module.css
7017
- var ToastProvider_default = {"viewport":"opus_z3pSp7_viewport","viewportTop":"opus_z3pSp7_viewportTop","item":"opus_z3pSp7_item","itemClip":"opus_z3pSp7_itemClip","viewportRight":"opus_z3pSp7_viewportRight","itemBackdrop":"opus_z3pSp7_itemBackdrop","itemSurface":"opus_z3pSp7_itemSurface","viewportLeft":"opus_z3pSp7_viewportLeft","viewportBottom":"opus_z3pSp7_viewportBottom"};
7050
+ var ToastProvider_default = {"viewportLeft":"opus_z3pSp7_viewportLeft","item":"opus_z3pSp7_item","itemClip":"opus_z3pSp7_itemClip","itemSurface":"opus_z3pSp7_itemSurface","viewport":"opus_z3pSp7_viewport","itemBackdrop":"opus_z3pSp7_itemBackdrop","viewportRight":"opus_z3pSp7_viewportRight","viewportTop":"opus_z3pSp7_viewportTop","viewportBottom":"opus_z3pSp7_viewportBottom"};
7018
7051
 
7019
7052
  // ../../components/ToastProvider/ToastProvider.tsx
7020
7053
  var import_jsx_runtime47 = require("react/jsx-runtime");
@@ -7384,7 +7417,7 @@ function ToastProvider({
7384
7417
  var import_react35 = require("react");
7385
7418
 
7386
7419
  // ../../components/Tabs/Tabs.module.css
7387
- var Tabs_default = {"list":"opus_ADVJmy_list","panel":"opus_ADVJmy_panel","root":"opus_ADVJmy_root","tab":"opus_ADVJmy_tab"};
7420
+ var Tabs_default = {"panel":"opus_ADVJmy_panel","list":"opus_ADVJmy_list","root":"opus_ADVJmy_root","tab":"opus_ADVJmy_tab"};
7388
7421
 
7389
7422
  // ../../components/Tabs/Tabs.tsx
7390
7423
  var import_jsx_runtime48 = require("react/jsx-runtime");
@@ -7498,7 +7531,7 @@ function Tabs({
7498
7531
  }
7499
7532
 
7500
7533
  // ../../components/Card/Card.module.css
7501
- var Card_default = {"media":"opus_qWo1sP_media","footerContent":"opus_qWo1sP_footerContent","title":"opus_qWo1sP_title","actions":"opus_qWo1sP_actions","heading":"opus_qWo1sP_heading","content":"opus_qWo1sP_content","footer":"opus_qWo1sP_footer","card":"opus_qWo1sP_card","eyebrow":"opus_qWo1sP_eyebrow","body":"opus_qWo1sP_body"};
7534
+ var Card_default = {"footerContent":"opus_qWo1sP_footerContent","actions":"opus_qWo1sP_actions","card":"opus_qWo1sP_card","content":"opus_qWo1sP_content","body":"opus_qWo1sP_body","footer":"opus_qWo1sP_footer","media":"opus_qWo1sP_media","title":"opus_qWo1sP_title","eyebrow":"opus_qWo1sP_eyebrow","heading":"opus_qWo1sP_heading"};
7502
7535
 
7503
7536
  // ../../components/Card/Card.tsx
7504
7537
  var import_jsx_runtime49 = require("react/jsx-runtime");
@@ -7529,7 +7562,7 @@ function Card({
7529
7562
  }
7530
7563
 
7531
7564
  // ../../components/dashboardMetricCardLayout/dashboardMetricCardLayout.module.css
7532
- var dashboardMetricCardLayout_default = {"header":"opus_6_sptY_header","label":"opus_6_sptY_label","iconSlot":"opus_6_sptY_iconSlot","iconPlaceholder":"opus_6_sptY_iconPlaceholder","value":"opus_6_sptY_value","shell":"opus_6_sptY_shell","metaPlaceholder":"opus_6_sptY_metaPlaceholder","metaSlot":"opus_6_sptY_metaSlot"};
7565
+ var dashboardMetricCardLayout_default = {"header":"opus_6_sptY_header","iconPlaceholder":"opus_6_sptY_iconPlaceholder","value":"opus_6_sptY_value","metaPlaceholder":"opus_6_sptY_metaPlaceholder","iconSlot":"opus_6_sptY_iconSlot","label":"opus_6_sptY_label","shell":"opus_6_sptY_shell","metaSlot":"opus_6_sptY_metaSlot"};
7533
7566
 
7534
7567
  // ../../components/StatCard/StatCard.module.css
7535
7568
  var StatCard_default = {"change":"opus_KIXsQY_change"};
@@ -7559,7 +7592,7 @@ function StatCard({
7559
7592
  }
7560
7593
 
7561
7594
  // ../../components/Gauge/Gauge.module.css
7562
- var Gauge_default = {"title":"opus_t6IuQe_title","gaugeTrack":"opus_t6IuQe_gaugeTrack","gauge":"opus_t6IuQe_gauge","summary":"opus_t6IuQe_summary","subtitle":"opus_t6IuQe_subtitle","heading":"opus_t6IuQe_heading","change":"opus_t6IuQe_change","gaugeSlot":"opus_t6IuQe_gaugeSlot","footerLabel":"opus_t6IuQe_footerLabel","widget":"opus_t6IuQe_widget","gaugeSvg":"opus_t6IuQe_gaugeSvg","header":"opus_t6IuQe_header","gaugeCenter":"opus_t6IuQe_gaugeCenter","footer":"opus_t6IuQe_footer","footerTrend":"opus_t6IuQe_footerTrend","footerItem":"opus_t6IuQe_footerItem","footerValue":"opus_t6IuQe_footerValue","gaugeValue":"opus_t6IuQe_gaugeValue","body":"opus_t6IuQe_body"};
7595
+ var Gauge_default = {"gaugeValue":"opus_t6IuQe_gaugeValue","gaugeCenter":"opus_t6IuQe_gaugeCenter","gaugeSlot":"opus_t6IuQe_gaugeSlot","footer":"opus_t6IuQe_footer","header":"opus_t6IuQe_header","footerLabel":"opus_t6IuQe_footerLabel","change":"opus_t6IuQe_change","subtitle":"opus_t6IuQe_subtitle","heading":"opus_t6IuQe_heading","widget":"opus_t6IuQe_widget","body":"opus_t6IuQe_body","summary":"opus_t6IuQe_summary","gaugeTrack":"opus_t6IuQe_gaugeTrack","title":"opus_t6IuQe_title","footerTrend":"opus_t6IuQe_footerTrend","gauge":"opus_t6IuQe_gauge","gaugeSvg":"opus_t6IuQe_gaugeSvg","footerValue":"opus_t6IuQe_footerValue","footerItem":"opus_t6IuQe_footerItem"};
7563
7596
 
7564
7597
  // ../../components/Gauge/Gauge.tsx
7565
7598
  var import_jsx_runtime51 = require("react/jsx-runtime");
@@ -7693,7 +7726,7 @@ function Gauge({
7693
7726
  var import_react36 = require("react");
7694
7727
 
7695
7728
  // ../../components/Sparkline/Sparkline.module.css
7696
- var Sparkline_default = {"line":"opus_xXtB87_line","sparkline":"opus_xXtB87_sparkline","label":"opus_xXtB87_label","chart":"opus_xXtB87_chart","area":"opus_xXtB87_area","endPoint":"opus_xXtB87_endPoint","svg":"opus_xXtB87_svg"};
7729
+ var Sparkline_default = {"area":"opus_xXtB87_area","svg":"opus_xXtB87_svg","endPoint":"opus_xXtB87_endPoint","chart":"opus_xXtB87_chart","sparkline":"opus_xXtB87_sparkline","label":"opus_xXtB87_label","line":"opus_xXtB87_line"};
7697
7730
 
7698
7731
  // ../../components/Sparkline/Sparkline.tsx
7699
7732
  var import_jsx_runtime52 = require("react/jsx-runtime");
@@ -7759,7 +7792,7 @@ function Sparkline({
7759
7792
  }
7760
7793
 
7761
7794
  // ../../components/ProgressRing/ProgressRing.module.css
7762
- var ProgressRing_default = {"track":"opus_YxX6Hh_track","ring":"opus_YxX6Hh_ring","svg":"opus_YxX6Hh_svg","value":"opus_YxX6Hh_value","center":"opus_YxX6Hh_center"};
7795
+ var ProgressRing_default = {"ring":"opus_YxX6Hh_ring","svg":"opus_YxX6Hh_svg","center":"opus_YxX6Hh_center","track":"opus_YxX6Hh_track","value":"opus_YxX6Hh_value"};
7763
7796
 
7764
7797
  // ../../components/ProgressRing/ProgressRing.tsx
7765
7798
  var import_jsx_runtime53 = require("react/jsx-runtime");
@@ -7792,7 +7825,7 @@ function ProgressRing({ label, max = 100, value }) {
7792
7825
  }
7793
7826
 
7794
7827
  // ../../components/ProgressBar/ProgressBar.module.css
7795
- var ProgressBar_default = {"header":"opus_q04AvA_header","bar":"opus_q04AvA_bar","label":"opus_q04AvA_label","value":"opus_q04AvA_value","track":"opus_q04AvA_track","fill":"opus_q04AvA_fill"};
7828
+ var ProgressBar_default = {"fill":"opus_q04AvA_fill","header":"opus_q04AvA_header","track":"opus_q04AvA_track","label":"opus_q04AvA_label","value":"opus_q04AvA_value","bar":"opus_q04AvA_bar"};
7796
7829
 
7797
7830
  // ../../components/ProgressBar/ProgressBar.tsx
7798
7831
  var import_jsx_runtime54 = require("react/jsx-runtime");
@@ -7812,7 +7845,7 @@ function ProgressBar({ label, max = 100, value }) {
7812
7845
  }
7813
7846
 
7814
7847
  // ../../components/Speedometer/Speedometer.module.css
7815
- var Speedometer_default = {"svg":"opus__jpB7z_svg","value":"opus__jpB7z_value","needle":"opus__jpB7z_needle","speedometer":"opus__jpB7z_speedometer","track":"opus__jpB7z_track","center":"opus__jpB7z_center","hub":"opus__jpB7z_hub"};
7848
+ var Speedometer_default = {"needle":"opus__jpB7z_needle","hub":"opus__jpB7z_hub","svg":"opus__jpB7z_svg","speedometer":"opus__jpB7z_speedometer","track":"opus__jpB7z_track","value":"opus__jpB7z_value","center":"opus__jpB7z_center"};
7816
7849
 
7817
7850
  // ../../components/Speedometer/Speedometer.tsx
7818
7851
  var import_jsx_runtime55 = require("react/jsx-runtime");
@@ -7845,7 +7878,7 @@ function Speedometer({ label, max = 100, value }) {
7845
7878
  }
7846
7879
 
7847
7880
  // ../../components/MetricTile/MetricTile.module.css
7848
- var MetricTile_default = {"sparklineRail":"opus_-dz9KL_sparklineRail","sparklineReserve":"opus_-dz9KL_sparklineReserve","tile":"opus_-dz9KL_tile"};
7881
+ var MetricTile_default = {"tile":"opus_-dz9KL_tile","sparklineRail":"opus_-dz9KL_sparklineRail","sparklineReserve":"opus_-dz9KL_sparklineReserve"};
7849
7882
 
7850
7883
  // ../../components/MetricTile/MetricTile.tsx
7851
7884
  var import_jsx_runtime56 = require("react/jsx-runtime");
@@ -7888,7 +7921,7 @@ function TrendBadge({ direction, value }) {
7888
7921
  }
7889
7922
 
7890
7923
  // ../../components/Panel/Panel.module.css
7891
- var Panel_default = {"body":"opus_JZHUc__body","footer":"opus_JZHUc__footer","headerActions":"opus_JZHUc__headerActions","heading":"opus_JZHUc__heading","header":"opus_JZHUc__header","description":"opus_JZHUc__description","panel":"opus_JZHUc__panel","title":"opus_JZHUc__title"};
7924
+ var Panel_default = {"panel":"opus_JZHUc__panel","description":"opus_JZHUc__description","title":"opus_JZHUc__title","footer":"opus_JZHUc__footer","headerActions":"opus_JZHUc__headerActions","body":"opus_JZHUc__body","heading":"opus_JZHUc__heading","header":"opus_JZHUc__header"};
7892
7925
 
7893
7926
  // ../../components/Panel/Panel.tsx
7894
7927
  var import_jsx_runtime59 = require("react/jsx-runtime");
@@ -8072,7 +8105,7 @@ function resolveSectionGapVars(gap = "md") {
8072
8105
  }
8073
8106
 
8074
8107
  // ../../components/Section/Section.module.css
8075
- var Section_default = {"column":"opus_FajZiH_column","title":"opus_FajZiH_title","section":"opus_FajZiH_section","body":"opus_FajZiH_body","row":"opus_FajZiH_row","header":"opus_FajZiH_header","description":"opus_FajZiH_description"};
8108
+ var Section_default = {"title":"opus_FajZiH_title","description":"opus_FajZiH_description","section":"opus_FajZiH_section","body":"opus_FajZiH_body","header":"opus_FajZiH_header","column":"opus_FajZiH_column","row":"opus_FajZiH_row"};
8076
8109
 
8077
8110
  // ../../components/Section/Section.tsx
8078
8111
  var import_jsx_runtime60 = require("react/jsx-runtime");
@@ -8153,7 +8186,7 @@ var Section = Object.assign(SectionRoot, {
8153
8186
  });
8154
8187
 
8155
8188
  // ../../components/Table/Table.module.css
8156
- var Table_default = {"caption":"opus_2q7S14_caption","wrap":"opus_2q7S14_wrap","table":"opus_2q7S14_table","empty":"opus_2q7S14_empty","visuallyHidden":"opus_2q7S14_visuallyHidden"};
8189
+ var Table_default = {"visuallyHidden":"opus_2q7S14_visuallyHidden","table":"opus_2q7S14_table","caption":"opus_2q7S14_caption","wrap":"opus_2q7S14_wrap","empty":"opus_2q7S14_empty"};
8157
8190
 
8158
8191
  // ../../components/Table/Table.tsx
8159
8192
  var import_jsx_runtime61 = require("react/jsx-runtime");
@@ -8186,8 +8219,196 @@ var import_react37 = require("react");
8186
8219
  var import_free_solid_svg_icons6 = require("@fortawesome/free-solid-svg-icons");
8187
8220
  var import_react_fontawesome6 = require("@fortawesome/react-fontawesome");
8188
8221
 
8222
+ // ../../components/DataGrid/dataGridLayout.ts
8223
+ function cellText(value) {
8224
+ if (value === null || value === void 0 || typeof value === "boolean") {
8225
+ return "";
8226
+ }
8227
+ if (typeof value === "number" || typeof value === "string") {
8228
+ return String(value);
8229
+ }
8230
+ if (Array.isArray(value)) {
8231
+ return value.map(cellText).join(" ");
8232
+ }
8233
+ return "";
8234
+ }
8235
+ function getRowCellText(row, key) {
8236
+ var _a2;
8237
+ if (key === "team") {
8238
+ return cellText((_a2 = row.values.team) != null ? _a2 : row.label);
8239
+ }
8240
+ return cellText(row.values[key]);
8241
+ }
8242
+ function buildGroupedDisplayRows(rows, groupBy, collapsedGroupIds) {
8243
+ var _a2;
8244
+ const groups = /* @__PURE__ */ new Map();
8245
+ for (const row of rows) {
8246
+ const label = getRowCellText(row, groupBy) || "Ungrouped";
8247
+ const bucket = (_a2 = groups.get(label)) != null ? _a2 : [];
8248
+ bucket.push(row);
8249
+ groups.set(label, bucket);
8250
+ }
8251
+ const display = [];
8252
+ for (const [label, groupRows] of groups) {
8253
+ const id = `group:${label}`;
8254
+ const expanded = !collapsedGroupIds.has(id);
8255
+ display.push({
8256
+ kind: "group",
8257
+ id,
8258
+ label,
8259
+ count: groupRows.length,
8260
+ expanded
8261
+ });
8262
+ if (expanded) {
8263
+ for (const row of groupRows) {
8264
+ display.push({
8265
+ kind: "data",
8266
+ row,
8267
+ depth: 1,
8268
+ expandable: false,
8269
+ expanded: false,
8270
+ hasChildren: false
8271
+ });
8272
+ }
8273
+ }
8274
+ }
8275
+ return display;
8276
+ }
8277
+ function buildTreeDisplayRows(rows, expandedIds, depth = 0) {
8278
+ var _a2;
8279
+ const display = [];
8280
+ for (const row of rows) {
8281
+ const children = (_a2 = row.children) != null ? _a2 : [];
8282
+ const hasChildren = children.length > 0;
8283
+ const expanded = hasChildren && expandedIds.has(row.id);
8284
+ display.push({
8285
+ kind: "data",
8286
+ row,
8287
+ depth,
8288
+ expandable: hasChildren,
8289
+ expanded,
8290
+ hasChildren
8291
+ });
8292
+ if (expanded) {
8293
+ display.push(...buildTreeDisplayRows(children, expandedIds, depth + 1));
8294
+ }
8295
+ }
8296
+ return display;
8297
+ }
8298
+ function buildFlatDisplayRows(rows) {
8299
+ return rows.map((row) => ({
8300
+ kind: "data",
8301
+ row,
8302
+ depth: 0,
8303
+ expandable: false,
8304
+ expanded: false,
8305
+ hasChildren: false
8306
+ }));
8307
+ }
8308
+ function collectTreeIds(rows) {
8309
+ var _a2;
8310
+ const ids = [];
8311
+ for (const row of rows) {
8312
+ if ((_a2 = row.children) == null ? void 0 : _a2.length) {
8313
+ ids.push(row.id);
8314
+ ids.push(...collectTreeIds(row.children));
8315
+ }
8316
+ }
8317
+ return ids;
8318
+ }
8319
+
8320
+ // ../../components/DataGrid/dataGridPivot.ts
8321
+ function toNumber(value) {
8322
+ const cleaned = value.replace(/%/g, "").replace(/^\+/, "").trim();
8323
+ if (!cleaned || Number.isNaN(Number(cleaned))) {
8324
+ return null;
8325
+ }
8326
+ return Number(cleaned);
8327
+ }
8328
+ function aggregate(values, mode) {
8329
+ if (mode === "count") {
8330
+ return values.length;
8331
+ }
8332
+ if (!values.length) {
8333
+ return 0;
8334
+ }
8335
+ const sum = values.reduce((total, value) => total + value, 0);
8336
+ return mode === "avg" ? sum / values.length : sum;
8337
+ }
8338
+ function formatMeasure(value, sample) {
8339
+ if (sample.includes("%")) {
8340
+ return `${Math.round(value)}%`;
8341
+ }
8342
+ if (Number.isInteger(value)) {
8343
+ return value;
8344
+ }
8345
+ return Math.round(value * 10) / 10;
8346
+ }
8347
+ function buildPivotGrid(sourceRows, config2) {
8348
+ var _a2, _b2;
8349
+ const aggregator = (_a2 = config2.aggregator) != null ? _a2 : "sum";
8350
+ const rowDims = config2.rows.length ? config2.rows : ["team"];
8351
+ const colDims = config2.columns.length ? config2.columns : ["group"];
8352
+ const valueKeys = config2.values.length ? config2.values : ["q1"];
8353
+ const columnLabels = /* @__PURE__ */ new Set();
8354
+ const matrix = /* @__PURE__ */ new Map();
8355
+ const rowLabels = /* @__PURE__ */ new Map();
8356
+ const samples = /* @__PURE__ */ new Map();
8357
+ for (const source of sourceRows) {
8358
+ const rowKey = rowDims.map((key) => getRowCellText(source, key) || "\u2014").join(" \xB7 ");
8359
+ const colKey = colDims.map((key) => getRowCellText(source, key) || "\u2014").join(" \xB7 ");
8360
+ rowLabels.set(rowKey, rowKey);
8361
+ if (!matrix.has(rowKey)) {
8362
+ matrix.set(rowKey, /* @__PURE__ */ new Map());
8363
+ }
8364
+ const rowBucket = matrix.get(rowKey);
8365
+ for (const valueKey of valueKeys) {
8366
+ const cellKey = valueKeys.length === 1 ? colKey : `${colKey} \xB7 ${valueKey}`;
8367
+ columnLabels.add(cellKey);
8368
+ const raw = getRowCellText(source, valueKey);
8369
+ const numeric = toNumber(raw);
8370
+ if (!samples.has(valueKey) && raw) {
8371
+ samples.set(valueKey, raw);
8372
+ }
8373
+ const values = (_b2 = rowBucket.get(cellKey)) != null ? _b2 : [];
8374
+ if (aggregator === "count") {
8375
+ values.push(1);
8376
+ } else if (numeric !== null) {
8377
+ values.push(numeric);
8378
+ }
8379
+ rowBucket.set(cellKey, values);
8380
+ }
8381
+ }
8382
+ const sortedColumnLabels = Array.from(columnLabels).sort((a, b) => a.localeCompare(b));
8383
+ const columns = [
8384
+ { key: "team", label: rowDims.join(" \xB7 "), align: "left", sortable: true, filterable: true },
8385
+ ...sortedColumnLabels.map((label) => ({
8386
+ key: label,
8387
+ label,
8388
+ align: "right",
8389
+ sortable: true,
8390
+ filterable: true
8391
+ }))
8392
+ ];
8393
+ const rows = Array.from(matrix.entries()).map(([rowKey, cells], index) => {
8394
+ var _a3, _b3, _c2;
8395
+ const values = { team: rowKey };
8396
+ for (const columnLabel of sortedColumnLabels) {
8397
+ const nums = (_a3 = cells.get(columnLabel)) != null ? _a3 : [];
8398
+ const sampleKey = (_b3 = valueKeys.find((key) => columnLabel.includes(key))) != null ? _b3 : valueKeys[0];
8399
+ const sample = (_c2 = samples.get(sampleKey)) != null ? _c2 : "";
8400
+ values[columnLabel] = formatMeasure(aggregate(nums, aggregator), sample);
8401
+ }
8402
+ return {
8403
+ id: `pivot-${index + 1}`,
8404
+ values
8405
+ };
8406
+ });
8407
+ return { columns, rows };
8408
+ }
8409
+
8189
8410
  // ../../components/DataGrid/DataGrid.module.css
8190
- var DataGrid_default = {"empty":"opus_zN0bNb_empty","caption":"opus_zN0bNb_caption","menuHost":"opus_zN0bNb_menuHost","headerLabel":"opus_zN0bNb_headerLabel","menuSection":"opus_zN0bNb_menuSection","menuAction":"opus_zN0bNb_menuAction","sortIndicatorButton":"opus_zN0bNb_sortIndicatorButton","frame":"opus_zN0bNb_frame","gridBody":"opus_zN0bNb_gridBody","menuFilterIcon":"opus_zN0bNb_menuFilterIcon","menuLabel":"opus_zN0bNb_menuLabel","headerCell":"opus_zN0bNb_headerCell","grid":"opus_zN0bNb_grid","columnResizeHandle":"opus_zN0bNb_columnResizeHandle","sortButton":"opus_zN0bNb_sortButton","visuallyHidden":"opus_zN0bNb_visuallyHidden","filterInput":"opus_zN0bNb_filterInput","menuButton":"opus_zN0bNb_menuButton","menuChevron":"opus_zN0bNb_menuChevron","rowHeader":"opus_zN0bNb_rowHeader","sortIndicator":"opus_zN0bNb_sortIndicator","headerMenu":"opus_zN0bNb_headerMenu","wrap":"opus_zN0bNb_wrap","headerControls":"opus_zN0bNb_headerControls","corner":"opus_zN0bNb_corner","sortButtonLabel":"opus_zN0bNb_sortButtonLabel"};
8411
+ var DataGrid_default = {"detailCell":"opus_zN0bNb_detailCell","filterInput":"opus_zN0bNb_filterInput","sortIndicatorButton":"opus_zN0bNb_sortIndicatorButton","chevron":"opus_zN0bNb_chevron","grid":"opus_zN0bNb_grid","wrap":"opus_zN0bNb_wrap","spacerRow":"opus_zN0bNb_spacerRow","rowHeader":"opus_zN0bNb_rowHeader","menuChevron":"opus_zN0bNb_menuChevron","expandSpacer":"opus_zN0bNb_expandSpacer","headerControls":"opus_zN0bNb_headerControls","groupRow":"opus_zN0bNb_groupRow","sortButtonLabel":"opus_zN0bNb_sortButtonLabel","menuAction":"opus_zN0bNb_menuAction","menuButton":"opus_zN0bNb_menuButton","menuHost":"opus_zN0bNb_menuHost","sortButton":"opus_zN0bNb_sortButton","headerMenu":"opus_zN0bNb_headerMenu","headerCell":"opus_zN0bNb_headerCell","menuFilterIcon":"opus_zN0bNb_menuFilterIcon","empty":"opus_zN0bNb_empty","expandButton":"opus_zN0bNb_expandButton","caption":"opus_zN0bNb_caption","gridBody":"opus_zN0bNb_gridBody","sortIndicator":"opus_zN0bNb_sortIndicator","columnResizeHandle":"opus_zN0bNb_columnResizeHandle","groupCount":"opus_zN0bNb_groupCount","visuallyHidden":"opus_zN0bNb_visuallyHidden","detailRow":"opus_zN0bNb_detailRow","infiniteFooter":"opus_zN0bNb_infiniteFooter","rowHeaderInner":"opus_zN0bNb_rowHeaderInner","corner":"opus_zN0bNb_corner","menuSection":"opus_zN0bNb_menuSection","menuLabel":"opus_zN0bNb_menuLabel","headerLabel":"opus_zN0bNb_headerLabel","frame":"opus_zN0bNb_frame","groupCell":"opus_zN0bNb_groupCell","rowHeaderLabel":"opus_zN0bNb_rowHeaderLabel","groupButton":"opus_zN0bNb_groupButton"};
8191
8412
 
8192
8413
  // ../../components/DataGrid/DataGrid.tsx
8193
8414
  var import_jsx_runtime62 = require("react/jsx-runtime");
@@ -8202,6 +8423,8 @@ var HEADER_CONTROL_GAP = 6;
8202
8423
  var SORT_INDICATOR_WIDTH = 8;
8203
8424
  var SORT_LABEL_GAP = 8;
8204
8425
  var RESIZE_HANDLE_WIDTH = 14;
8426
+ var DEFAULT_VIEWPORT = 360;
8427
+ var OVERSCAN = 6;
8205
8428
  function resolveColumnFeatures(column) {
8206
8429
  return {
8207
8430
  filterable: (column == null ? void 0 : column.filterable) === true,
@@ -8220,21 +8443,8 @@ function getMinColumnWidth(sortable, hasMenu, density) {
8220
8443
  }
8221
8444
  return width;
8222
8445
  }
8223
- function cellText(value) {
8224
- if (value === null || value === void 0 || typeof value === "boolean") {
8225
- return "";
8226
- }
8227
- if (typeof value === "number" || typeof value === "string") {
8228
- return String(value);
8229
- }
8230
- if (Array.isArray(value)) {
8231
- return value.map(cellText).join(" ");
8232
- }
8233
- return "";
8234
- }
8235
8446
  function rowTeamValue(row) {
8236
- var _a2;
8237
- return cellText((_a2 = row.values.team) != null ? _a2 : row.label);
8447
+ return getRowCellText(row, "team");
8238
8448
  }
8239
8449
  function isNumericValue(value) {
8240
8450
  return /^-?\d+(?:\.\d+)?$/.test(value);
@@ -8247,33 +8457,67 @@ function compareValues(a, b) {
8247
8457
  }
8248
8458
  return aTrim.localeCompare(bTrim, void 0, { numeric: true, sensitivity: "base" });
8249
8459
  }
8460
+ function defaultRowHeight(density) {
8461
+ return density === "comfortable" ? 44 : 36;
8462
+ }
8250
8463
  function DataGrid({
8251
8464
  bordered = true,
8252
8465
  caption,
8253
8466
  columns,
8467
+ defaultExpandedIds,
8254
8468
  density = "compact",
8469
+ detailExpandedIds,
8470
+ getDetailContent,
8471
+ groupBy = "group",
8472
+ hasMore = false,
8473
+ layout = "flat",
8474
+ loadingMore = false,
8475
+ onExpandedChange,
8476
+ onLoadMore,
8477
+ pivot,
8255
8478
  rowHeader,
8479
+ rowHeight,
8256
8480
  rows,
8257
8481
  stickyFirstColumn = true,
8258
8482
  stickyHeader = true,
8259
- striped = true
8483
+ striped = true,
8484
+ viewportHeight = DEFAULT_VIEWPORT,
8485
+ virtualized = false
8260
8486
  }) {
8261
- var _a2, _b2, _c2, _d2;
8487
+ var _a2, _b2, _c2, _d2, _e2, _f2;
8262
8488
  const [columnWidths, setColumnWidths] = (0, import_react37.useState)({});
8263
8489
  const [filters, setFilters] = (0, import_react37.useState)({});
8264
8490
  const [openMenu, setOpenMenu] = (0, import_react37.useState)(null);
8265
8491
  const [resizing, setResizing] = (0, import_react37.useState)(null);
8266
8492
  const [sort, setSort] = (0, import_react37.useState)(null);
8493
+ const [collapsedGroupIds, setCollapsedGroupIds] = (0, import_react37.useState)(() => /* @__PURE__ */ new Set());
8494
+ const [treeExpandedIds, setTreeExpandedIds] = (0, import_react37.useState)(
8495
+ () => new Set(defaultExpandedIds != null ? defaultExpandedIds : [])
8496
+ );
8497
+ const [uncontrolledDetailIds, setUncontrolledDetailIds] = (0, import_react37.useState)(() => /* @__PURE__ */ new Set());
8498
+ const [scrollTop, setScrollTop] = (0, import_react37.useState)(0);
8267
8499
  const menuAnchorRef = (0, import_react37.useRef)(null);
8268
8500
  const menuHostRef = (0, import_react37.useRef)(null);
8269
8501
  const menuRef = (0, import_react37.useRef)(null);
8270
8502
  const menuFrameRef = (0, import_react37.useRef)(null);
8271
8503
  const resizeDragRef = (0, import_react37.useRef)(null);
8272
8504
  const wrapRef = (0, import_react37.useRef)(null);
8273
- const hasTeamColumn = columns.some((column) => column.key === "team");
8505
+ const sentinelRef = (0, import_react37.useRef)(null);
8506
+ const resolvedRowHeight = rowHeight != null ? rowHeight : defaultRowHeight(density);
8507
+ const detailIds = detailExpandedIds ? new Set(detailExpandedIds) : uncontrolledDetailIds;
8508
+ const masterDetail = Boolean(getDetailContent) && layout !== "pivot";
8509
+ const pivotResult = (0, import_react37.useMemo)(() => {
8510
+ if (layout !== "pivot") {
8511
+ return null;
8512
+ }
8513
+ return buildPivotGrid(rows, pivot != null ? pivot : { rows: ["group"], columns: ["a11y"], values: ["q1", "q2"] });
8514
+ }, [layout, pivot, rows]);
8515
+ const activeColumns = (_a2 = pivotResult == null ? void 0 : pivotResult.columns) != null ? _a2 : columns;
8516
+ const activeRows = (_b2 = pivotResult == null ? void 0 : pivotResult.rows) != null ? _b2 : rows;
8517
+ const hasTeamColumn = activeColumns.some((column) => column.key === "team");
8274
8518
  const gridColumns = (0, import_react37.useMemo)(
8275
- () => hasTeamColumn ? columns : [{ key: "team", label: "Team", align: "left" }, ...columns],
8276
- [columns, hasTeamColumn]
8519
+ () => hasTeamColumn ? activeColumns : [{ key: "team", label: "Team", align: "left" }, ...activeColumns],
8520
+ [activeColumns, hasTeamColumn]
8277
8521
  );
8278
8522
  const dataColumns = (0, import_react37.useMemo)(
8279
8523
  () => gridColumns.filter((column) => column.key !== "team"),
@@ -8287,34 +8531,92 @@ function DataGrid({
8287
8531
  }
8288
8532
  return features;
8289
8533
  }, [gridColumns, hasTeamColumn, rowHeader]);
8290
- const visibleRows = rows.filter(
8291
- (row) => gridColumns.every((column) => {
8292
- var _a3;
8293
- const features = columnFeatures[column.key];
8294
- if (!(features == null ? void 0 : features.filterable)) {
8295
- return true;
8296
- }
8297
- const filter = (_a3 = filters[column.key]) == null ? void 0 : _a3.trim().toLowerCase();
8298
- if (!filter) {
8299
- return true;
8300
- }
8301
- const value = column.key === "team" ? rowTeamValue(row) : cellText(row.values[column.key]);
8302
- return value.toLowerCase().includes(filter);
8303
- })
8304
- ).sort((a, b) => {
8305
- var _a3;
8306
- if (!sort) {
8307
- return 0;
8534
+ const filterSortRows = (0, import_react37.useCallback)(
8535
+ (source) => {
8536
+ return source.filter(
8537
+ (row) => gridColumns.every((column) => {
8538
+ var _a3;
8539
+ const features = columnFeatures[column.key];
8540
+ if (!(features == null ? void 0 : features.filterable)) {
8541
+ return true;
8542
+ }
8543
+ const filter = (_a3 = filters[column.key]) == null ? void 0 : _a3.trim().toLowerCase();
8544
+ if (!filter) {
8545
+ return true;
8546
+ }
8547
+ const value = column.key === "team" ? rowTeamValue(row) : getRowCellText(row, column.key);
8548
+ return value.toLowerCase().includes(filter);
8549
+ })
8550
+ ).sort((a, b) => {
8551
+ var _a3;
8552
+ if (!sort || !((_a3 = columnFeatures[sort.key]) == null ? void 0 : _a3.sortable)) {
8553
+ return 0;
8554
+ }
8555
+ const aValue = sort.key === "team" ? rowTeamValue(a) : getRowCellText(a, sort.key);
8556
+ const bValue = sort.key === "team" ? rowTeamValue(b) : getRowCellText(b, sort.key);
8557
+ const result = compareValues(aValue, bValue);
8558
+ return sort.direction === "ascending" ? result : -result;
8559
+ });
8560
+ },
8561
+ [columnFeatures, filters, gridColumns, sort]
8562
+ );
8563
+ (0, import_react37.useEffect)(() => {
8564
+ if (layout === "tree" && defaultExpandedIds === void 0 && treeExpandedIds.size === 0) {
8565
+ setTreeExpandedIds(new Set(collectTreeIds(activeRows).slice(0, 4)));
8308
8566
  }
8309
- if (!((_a3 = columnFeatures[sort.key]) == null ? void 0 : _a3.sortable)) {
8310
- return 0;
8567
+ }, [activeRows, defaultExpandedIds, layout, treeExpandedIds.size]);
8568
+ const displayRows = (0, import_react37.useMemo)(() => {
8569
+ if (layout === "tree") {
8570
+ return buildTreeDisplayRows(filterSortRows(activeRows), treeExpandedIds);
8311
8571
  }
8312
- const aValue = sort.key === "team" ? rowTeamValue(a) : cellText(a.values[sort.key]);
8313
- const bValue = sort.key === "team" ? rowTeamValue(b) : cellText(b.values[sort.key]);
8314
- const result = compareValues(aValue, bValue);
8315
- return sort.direction === "ascending" ? result : -result;
8316
- });
8572
+ const flat = filterSortRows(activeRows);
8573
+ if (layout === "grouped") {
8574
+ return buildGroupedDisplayRows(flat, groupBy, collapsedGroupIds);
8575
+ }
8576
+ return buildFlatDisplayRows(flat);
8577
+ }, [activeRows, collapsedGroupIds, filterSortRows, groupBy, layout, treeExpandedIds]);
8317
8578
  const openMenuFeatures = openMenu ? columnFeatures[openMenu.key] : void 0;
8579
+ const setExpandedIds = (0, import_react37.useCallback)(
8580
+ (next) => {
8581
+ setTreeExpandedIds(next);
8582
+ onExpandedChange == null ? void 0 : onExpandedChange(Array.from(next));
8583
+ },
8584
+ [onExpandedChange]
8585
+ );
8586
+ const toggleTreeExpand = (id) => {
8587
+ const next = new Set(treeExpandedIds);
8588
+ if (next.has(id)) {
8589
+ next.delete(id);
8590
+ } else {
8591
+ next.add(id);
8592
+ }
8593
+ setExpandedIds(next);
8594
+ };
8595
+ const toggleGroup = (id) => {
8596
+ setCollapsedGroupIds((current) => {
8597
+ const next = new Set(current);
8598
+ if (next.has(id)) {
8599
+ next.delete(id);
8600
+ } else {
8601
+ next.add(id);
8602
+ }
8603
+ return next;
8604
+ });
8605
+ };
8606
+ const toggleDetail = (id) => {
8607
+ if (detailExpandedIds) {
8608
+ return;
8609
+ }
8610
+ setUncontrolledDetailIds((current) => {
8611
+ const next = new Set(current);
8612
+ if (next.has(id)) {
8613
+ next.delete(id);
8614
+ } else {
8615
+ next.add(id);
8616
+ }
8617
+ return next;
8618
+ });
8619
+ };
8318
8620
  const resetWrapMinHeight = (0, import_react37.useCallback)(() => {
8319
8621
  if (wrapRef.current) {
8320
8622
  wrapRef.current.style.minHeight = "";
@@ -8325,7 +8627,7 @@ function DataGrid({
8325
8627
  resetWrapMinHeight();
8326
8628
  setOpenMenu(null);
8327
8629
  }, [resetWrapMinHeight]);
8328
- const activeMenuFilter = openMenu ? (_a2 = filters[openMenu.key]) != null ? _a2 : "" : "";
8630
+ const activeMenuFilter = openMenu ? (_c2 = filters[openMenu.key]) != null ? _c2 : "" : "";
8329
8631
  const applyMenuPosition = (0, import_react37.useCallback)(() => {
8330
8632
  const anchor = menuAnchorRef.current;
8331
8633
  const menu = menuRef.current;
@@ -8438,6 +8740,26 @@ function DataGrid({
8438
8740
  }
8439
8741
  scheduleMenuPosition();
8440
8742
  }, [columnWidths, openMenu, scheduleMenuPosition]);
8743
+ (0, import_react37.useEffect)(() => {
8744
+ if (!onLoadMore || !hasMore) {
8745
+ return;
8746
+ }
8747
+ const root = wrapRef.current;
8748
+ const target = sentinelRef.current;
8749
+ if (!root || !target) {
8750
+ return;
8751
+ }
8752
+ const observer = new IntersectionObserver(
8753
+ (entries) => {
8754
+ if (entries.some((entry) => entry.isIntersecting) && !loadingMore) {
8755
+ onLoadMore();
8756
+ }
8757
+ },
8758
+ { root, rootMargin: "120px" }
8759
+ );
8760
+ observer.observe(target);
8761
+ return () => observer.disconnect();
8762
+ }, [displayRows.length, hasMore, loadingMore, onLoadMore]);
8441
8763
  const toggleSort = (key) => {
8442
8764
  var _a3;
8443
8765
  if (!((_a3 = columnFeatures[key]) == null ? void 0 : _a3.sortable)) {
@@ -8539,10 +8861,108 @@ function DataGrid({
8539
8861
  }
8540
8862
  beginResize(event, columnKey, width);
8541
8863
  }, [beginResize, columnFeatures]);
8864
+ const colSpan = gridColumns.length;
8865
+ const virtualWindow = (0, import_react37.useMemo)(() => {
8866
+ if (!virtualized) {
8867
+ return {
8868
+ offset: 0,
8869
+ items: displayRows,
8870
+ paddingTop: 0,
8871
+ paddingBottom: 0
8872
+ };
8873
+ }
8874
+ const start = Math.max(0, Math.floor(scrollTop / resolvedRowHeight) - OVERSCAN);
8875
+ const visibleCount = Math.ceil(viewportHeight / resolvedRowHeight) + OVERSCAN * 2;
8876
+ const end = Math.min(displayRows.length, start + visibleCount);
8877
+ const items = displayRows.slice(start, end);
8878
+ return {
8879
+ offset: start,
8880
+ items,
8881
+ paddingTop: start * resolvedRowHeight,
8882
+ paddingBottom: Math.max(0, (displayRows.length - end) * resolvedRowHeight)
8883
+ };
8884
+ }, [displayRows, resolvedRowHeight, scrollTop, viewportHeight, virtualized]);
8885
+ const renderDataRow = (entry) => {
8886
+ var _a3;
8887
+ const { row, depth, expandable, expanded, hasChildren } = entry;
8888
+ const detailOpen = masterDetail && detailIds.has(row.id);
8889
+ const showTreeToggle = layout === "tree" && expandable;
8890
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react37.Fragment, { children: [
8891
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("tr", { "data-row-kind": "data", children: [
8892
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8893
+ "th",
8894
+ {
8895
+ className: DataGrid_default.rowHeader,
8896
+ scope: "row",
8897
+ style: columnWidths.team ? { width: columnWidths.team, minWidth: columnWidths.team } : void 0,
8898
+ children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("span", { className: DataGrid_default.rowHeaderInner, style: { paddingLeft: depth * 14 }, children: [
8899
+ masterDetail ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8900
+ "button",
8901
+ {
8902
+ "aria-expanded": detailOpen,
8903
+ "aria-label": detailOpen ? `Hide details for ${rowTeamValue(row)}` : `Show details for ${rowTeamValue(row)}`,
8904
+ className: DataGrid_default.expandButton,
8905
+ onClick: () => toggleDetail(row.id),
8906
+ type: "button",
8907
+ children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_fontawesome6.FontAwesomeIcon, { className: DataGrid_default.chevron, icon: detailOpen ? import_free_solid_svg_icons6.faChevronDown : import_free_solid_svg_icons6.faChevronRight })
8908
+ }
8909
+ ) : null,
8910
+ showTreeToggle ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8911
+ "button",
8912
+ {
8913
+ "aria-expanded": expanded,
8914
+ "aria-label": expanded ? `Collapse ${rowTeamValue(row)}` : `Expand ${rowTeamValue(row)}`,
8915
+ className: DataGrid_default.expandButton,
8916
+ onClick: () => toggleTreeExpand(row.id),
8917
+ type: "button",
8918
+ children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_fontawesome6.FontAwesomeIcon, { className: DataGrid_default.chevron, icon: expanded ? import_free_solid_svg_icons6.faChevronDown : import_free_solid_svg_icons6.faChevronRight })
8919
+ }
8920
+ ) : layout === "tree" && !hasChildren ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { "aria-hidden": "true", className: DataGrid_default.expandSpacer }) : null,
8921
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: DataGrid_default.rowHeaderLabel, children: (_a3 = row.values.team) != null ? _a3 : row.label })
8922
+ ] })
8923
+ }
8924
+ ),
8925
+ dataColumns.map((column) => {
8926
+ var _a4;
8927
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8928
+ "td",
8929
+ {
8930
+ "data-align": (_a4 = column.align) != null ? _a4 : "left",
8931
+ "data-column-key": column.key,
8932
+ "data-column-resizable": columnFeatures[column.key].resizable,
8933
+ style: columnWidths[column.key] ? { width: columnWidths[column.key], minWidth: columnWidths[column.key] } : void 0,
8934
+ children: row.values[column.key]
8935
+ },
8936
+ column.key
8937
+ );
8938
+ })
8939
+ ] }),
8940
+ detailOpen && getDetailContent ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("tr", { className: DataGrid_default.detailRow, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("td", { className: DataGrid_default.detailCell, colSpan, children: getDetailContent(row) }) }, `${row.id}-detail`) : null
8941
+ ] }, row.id);
8942
+ };
8943
+ const renderDisplayRow = (entry, index) => {
8944
+ if (entry.kind === "group") {
8945
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("tr", { className: DataGrid_default.groupRow, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("td", { className: DataGrid_default.groupCell, colSpan, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
8946
+ "button",
8947
+ {
8948
+ "aria-expanded": entry.expanded,
8949
+ className: DataGrid_default.groupButton,
8950
+ onClick: () => toggleGroup(entry.id),
8951
+ type: "button",
8952
+ children: [
8953
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_fontawesome6.FontAwesomeIcon, { className: DataGrid_default.chevron, icon: entry.expanded ? import_free_solid_svg_icons6.faChevronDown : import_free_solid_svg_icons6.faChevronRight }),
8954
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { children: entry.label }),
8955
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: DataGrid_default.groupCount, children: entry.count })
8956
+ ]
8957
+ }
8958
+ ) }) }, entry.id);
8959
+ }
8960
+ return renderDataRow(entry);
8961
+ };
8542
8962
  return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: DataGrid_default.frame, children: [
8543
8963
  caption ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: DataGrid_default.caption, children: caption }) : null,
8544
8964
  /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: DataGrid_default.gridBody, children: [
8545
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8965
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
8546
8966
  "div",
8547
8967
  {
8548
8968
  ref: wrapRef,
@@ -8556,114 +8976,98 @@ function DataGrid({
8556
8976
  "data-sticky-column": stickyFirstColumn,
8557
8977
  "data-sticky-header": stickyHeader,
8558
8978
  "data-striped": striped,
8559
- children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("table", { className: DataGrid_default.grid, children: [
8560
- caption ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("caption", { className: DataGrid_default.visuallyHidden, children: caption }) : null,
8561
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("colgroup", { children: gridColumns.map((column) => {
8562
- var _a3;
8563
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8564
- "col",
8565
- {
8566
- style: { width: (_a3 = columnWidths[column.key]) != null ? _a3 : column.key === "team" ? 180 : 130 }
8567
- },
8568
- column.key
8569
- );
8570
- }) }),
8571
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("tr", { children: gridColumns.map((column) => {
8572
- var _a3, _b3;
8573
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
8574
- "th",
8575
- {
8576
- "aria-sort": columnFeatures[column.key].sortable ? (sort == null ? void 0 : sort.key) === column.key ? sort.direction : "none" : void 0,
8577
- className: column.key === "team" ? DataGrid_default.corner : void 0,
8578
- "data-column-resizable": columnFeatures[column.key].resizable,
8579
- "data-filter-active": Boolean((_a3 = filters[column.key]) == null ? void 0 : _a3.trim()),
8580
- "data-menu-open": (openMenu == null ? void 0 : openMenu.key) === column.key,
8581
- scope: "col",
8582
- style: columnWidths[column.key] ? { width: columnWidths[column.key], minWidth: columnWidths[column.key] } : void 0,
8583
- children: [
8584
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8585
- HeaderContent,
8586
- {
8587
- filterActive: Boolean((_b3 = filters[column.key]) == null ? void 0 : _b3.trim()),
8588
- filterable: columnFeatures[column.key].filterable,
8589
- label: column.label,
8590
- menuId: column.key,
8591
- sortDirection: (sort == null ? void 0 : sort.key) === column.key ? sort.direction : void 0,
8592
- sortable: columnFeatures[column.key].sortable,
8593
- menuOpen: (openMenu == null ? void 0 : openMenu.key) === column.key,
8594
- onMenuToggle: (button) => {
8595
- if ((openMenu == null ? void 0 : openMenu.key) === column.key) {
8596
- closeHeaderMenu();
8597
- return;
8598
- }
8599
- openHeaderMenu({
8600
- align: column.key === "team" ? "left" : "right",
8601
- button,
8602
- key: column.key,
8603
- label: column.label
8604
- });
8605
- },
8606
- onSort: () => toggleSort(column.key)
8607
- }
8608
- ),
8609
- columnFeatures[column.key].resizable ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8610
- ColumnResizeHandle,
8611
- {
8612
- onResizeStart: (event) => beginResize(event, column.key)
8613
- }
8614
- ) : null
8615
- ]
8616
- },
8617
- column.key
8618
- );
8619
- }) }) }),
8620
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("tbody", { onPointerDown: handleBodyPointerDown, children: [
8621
- visibleRows.map((row) => {
8979
+ onScroll: (event) => {
8980
+ if (virtualized) {
8981
+ setScrollTop(event.currentTarget.scrollTop);
8982
+ }
8983
+ },
8984
+ style: { maxHeight: viewportHeight },
8985
+ children: [
8986
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("table", { className: DataGrid_default.grid, children: [
8987
+ caption ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("caption", { className: DataGrid_default.visuallyHidden, children: caption }) : null,
8988
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("colgroup", { children: gridColumns.map((column) => {
8622
8989
  var _a3;
8623
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("tr", { children: [
8624
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8625
- "th",
8626
- {
8627
- className: DataGrid_default.rowHeader,
8628
- scope: "row",
8629
- style: columnWidths.team ? { width: columnWidths.team, minWidth: columnWidths.team } : void 0,
8630
- children: (_a3 = row.values.team) != null ? _a3 : row.label
8631
- }
8632
- ),
8633
- dataColumns.map((column) => {
8634
- var _a4;
8635
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8636
- "td",
8637
- {
8638
- "data-align": (_a4 = column.align) != null ? _a4 : "left",
8639
- "data-column-key": column.key,
8640
- "data-column-resizable": columnFeatures[column.key].resizable,
8641
- style: columnWidths[column.key] ? { width: columnWidths[column.key], minWidth: columnWidths[column.key] } : void 0,
8642
- children: row.values[column.key]
8643
- },
8644
- column.key
8645
- );
8646
- })
8647
- ] }, row.id);
8648
- }),
8649
- !visibleRows.length ? /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("tr", { children: [
8650
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("th", { className: DataGrid_default.rowHeader, scope: "row", children: "No rows" }),
8651
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("td", { className: DataGrid_default.empty, colSpan: Math.max(dataColumns.length, 1), children: "No matching rows." })
8652
- ] }) : null
8653
- ] })
8654
- ] })
8990
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8991
+ "col",
8992
+ {
8993
+ style: { width: (_a3 = columnWidths[column.key]) != null ? _a3 : column.key === "team" ? 180 : 130 }
8994
+ },
8995
+ column.key
8996
+ );
8997
+ }) }),
8998
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("tr", { children: gridColumns.map((column) => {
8999
+ var _a3, _b3;
9000
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
9001
+ "th",
9002
+ {
9003
+ "aria-sort": columnFeatures[column.key].sortable ? (sort == null ? void 0 : sort.key) === column.key ? sort.direction : "none" : void 0,
9004
+ className: column.key === "team" ? DataGrid_default.corner : void 0,
9005
+ "data-column-resizable": columnFeatures[column.key].resizable,
9006
+ "data-filter-active": Boolean((_a3 = filters[column.key]) == null ? void 0 : _a3.trim()),
9007
+ "data-menu-open": (openMenu == null ? void 0 : openMenu.key) === column.key,
9008
+ scope: "col",
9009
+ style: columnWidths[column.key] ? { width: columnWidths[column.key], minWidth: columnWidths[column.key] } : void 0,
9010
+ children: [
9011
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
9012
+ HeaderContent,
9013
+ {
9014
+ filterActive: Boolean((_b3 = filters[column.key]) == null ? void 0 : _b3.trim()),
9015
+ filterable: columnFeatures[column.key].filterable,
9016
+ label: column.label,
9017
+ menuId: column.key,
9018
+ sortDirection: (sort == null ? void 0 : sort.key) === column.key ? sort.direction : void 0,
9019
+ sortable: columnFeatures[column.key].sortable,
9020
+ menuOpen: (openMenu == null ? void 0 : openMenu.key) === column.key,
9021
+ onMenuToggle: (button) => {
9022
+ if ((openMenu == null ? void 0 : openMenu.key) === column.key) {
9023
+ closeHeaderMenu();
9024
+ return;
9025
+ }
9026
+ openHeaderMenu({
9027
+ align: column.key === "team" ? "left" : "right",
9028
+ button,
9029
+ key: column.key,
9030
+ label: column.label
9031
+ });
9032
+ },
9033
+ onSort: () => toggleSort(column.key)
9034
+ }
9035
+ ),
9036
+ columnFeatures[column.key].resizable ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
9037
+ ColumnResizeHandle,
9038
+ {
9039
+ onResizeStart: (event) => beginResize(event, column.key)
9040
+ }
9041
+ ) : null
9042
+ ]
9043
+ },
9044
+ column.key
9045
+ );
9046
+ }) }) }),
9047
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("tbody", { onPointerDown: handleBodyPointerDown, children: [
9048
+ virtualized && virtualWindow.paddingTop > 0 ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("tr", { "aria-hidden": "true", className: DataGrid_default.spacerRow, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("td", { colSpan, style: { height: virtualWindow.paddingTop, padding: 0 } }) }) : null,
9049
+ virtualWindow.items.map((entry, index) => renderDisplayRow(entry, virtualWindow.offset + index)),
9050
+ virtualized && virtualWindow.paddingBottom > 0 ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("tr", { "aria-hidden": "true", className: DataGrid_default.spacerRow, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("td", { colSpan, style: { height: virtualWindow.paddingBottom, padding: 0 } }) }) : null,
9051
+ !displayRows.length ? /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("tr", { children: [
9052
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("th", { className: DataGrid_default.rowHeader, scope: "row", children: "No rows" }),
9053
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("td", { className: DataGrid_default.empty, colSpan: Math.max(dataColumns.length, 1), children: "No matching rows." })
9054
+ ] }) : null
9055
+ ] })
9056
+ ] }),
9057
+ onLoadMore || hasMore ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: DataGrid_default.infiniteFooter, ref: sentinelRef, children: loadingMore ? "Loading more\u2026" : hasMore ? "Scroll for more" : "End of results" }) : null
9058
+ ]
8655
9059
  }
8656
9060
  ),
8657
9061
  openMenu ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: DataGrid_default.menuHost, ref: menuHostRef, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
8658
9062
  GridHeaderMenu,
8659
9063
  {
8660
9064
  ref: menuRef,
8661
- filter: (_b2 = filters[openMenu.key]) != null ? _b2 : "",
8662
- filterable: (_c2 = openMenuFeatures == null ? void 0 : openMenuFeatures.filterable) != null ? _c2 : false,
9065
+ filter: (_d2 = filters[openMenu.key]) != null ? _d2 : "",
9066
+ filterable: (_e2 = openMenuFeatures == null ? void 0 : openMenuFeatures.filterable) != null ? _e2 : false,
8663
9067
  label: openMenu.label,
8664
9068
  menuId: openMenu.menuId,
8665
9069
  sortDirection: (sort == null ? void 0 : sort.key) === openMenu.key ? sort.direction : void 0,
8666
- sortable: (_d2 = openMenuFeatures == null ? void 0 : openMenuFeatures.sortable) != null ? _d2 : false,
9070
+ sortable: (_f2 = openMenuFeatures == null ? void 0 : openMenuFeatures.sortable) != null ? _f2 : false,
8667
9071
  onFilterChange: (filter) => setFilters((current) => __spreadProps(__spreadValues({}, current), { [openMenu.key]: filter })),
8668
9072
  onMenuClose: closeHeaderMenu,
8669
9073
  onSortDirection: (direction) => setSortDirection(openMenu.key, direction)
@@ -8955,6 +9359,12 @@ var chartDemoData = [
8955
9359
  { label: "May", value: 58, values: [58, 56, 36], x: 74, y: 58 },
8956
9360
  { label: "Jun", value: 88, values: [88, 62, 42], x: 88, y: 92 }
8957
9361
  ];
9362
+ var chartContourData = Array.from({ length: 36 }, (_, index) => {
9363
+ const x = index % 6;
9364
+ const y = Math.floor(index / 6);
9365
+ const value = 35 + Math.round(45 * Math.exp(-((x - 2.4) ** 2 + (y - 2.8) ** 2) / 4));
9366
+ return { label: `${x},${y}`, value, x, y };
9367
+ });
8958
9368
  function branchLeaves(prefix, parent, group, count = 5) {
8959
9369
  return Array.from({ length: count }, (_, index) => ({
8960
9370
  label: `${prefix}${index + 1}`,
@@ -10033,6 +10443,15 @@ var specializedChartVariants = /* @__PURE__ */ new Set([
10033
10443
  "sankey",
10034
10444
  "waterfall",
10035
10445
  "candlestick",
10446
+ "ohlc",
10447
+ "range-area",
10448
+ "range-bar",
10449
+ "error-bar",
10450
+ "parallel-coordinates",
10451
+ "contour",
10452
+ "surface",
10453
+ "bullet",
10454
+ "pareto",
10036
10455
  "box-plot",
10037
10456
  "histogram",
10038
10457
  "violin",
@@ -10059,6 +10478,12 @@ var cartesianSpecializedVariants = [
10059
10478
  "histogram",
10060
10479
  "waterfall",
10061
10480
  "candlestick",
10481
+ "ohlc",
10482
+ "range-area",
10483
+ "range-bar",
10484
+ "error-bar",
10485
+ "bullet",
10486
+ "pareto",
10062
10487
  "box-plot",
10063
10488
  "violin",
10064
10489
  "hexbin",
@@ -10070,15 +10495,30 @@ var cartesianSpecializedVariants = [
10070
10495
  "milestone-timeline"
10071
10496
  ];
10072
10497
  function specializedVariantHasYNumericAxis(variant) {
10073
- return !["timeline", "milestone-timeline", "gantt", "heatmap", "calendar-heatmap", "ridgeline", "hexbin"].includes(
10074
- variant
10075
- );
10498
+ return ![
10499
+ "timeline",
10500
+ "milestone-timeline",
10501
+ "gantt",
10502
+ "heatmap",
10503
+ "calendar-heatmap",
10504
+ "ridgeline",
10505
+ "hexbin",
10506
+ "contour",
10507
+ "surface",
10508
+ "parallel-coordinates"
10509
+ ].includes(variant);
10076
10510
  }
10077
10511
  function specializedVariantHasXCategoryLabels(variant) {
10078
10512
  return [
10079
10513
  "histogram",
10080
10514
  "waterfall",
10081
10515
  "candlestick",
10516
+ "ohlc",
10517
+ "range-area",
10518
+ "range-bar",
10519
+ "error-bar",
10520
+ "bullet",
10521
+ "pareto",
10082
10522
  "box-plot",
10083
10523
  "violin",
10084
10524
  "stream",
@@ -10089,7 +10529,7 @@ function specializedVariantHasXCategoryLabels(variant) {
10089
10529
  ].includes(variant);
10090
10530
  }
10091
10531
  function specializedVariantUsesSlotLabels(variant) {
10092
- return ["waterfall"].includes(variant);
10532
+ return ["waterfall", "range-area", "bullet"].includes(variant);
10093
10533
  }
10094
10534
  function getSeriesPlotBounds(plot) {
10095
10535
  return {
@@ -10357,62 +10797,448 @@ function Candlestick({ data, plot, showValues, styles, yMax, yMin }) {
10357
10797
  })
10358
10798
  ] });
10359
10799
  }
10360
- function BoxPlot({ data, plot, showValues, styles, yMax, yMin }) {
10361
- const barHalfWidth = getBoxPlotBarHalfWidth(plot, data.length);
10362
- const boxWidth = barHalfWidth * 2;
10800
+ function OhlcChart({ data, plot, showValues, styles, yMax, yMin }) {
10801
+ const bodyWidth = candlestickBodyWidth(plot, data.length);
10802
+ const barHalfWidth = bodyWidth / 2;
10803
+ const tick = Math.max(4, bodyWidth * 0.45);
10363
10804
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("g", { children: data.map((item, index) => {
10364
- var _a2, _b2, _c2, _d2, _e2;
10365
- const min = (_a2 = item.min) != null ? _a2 : item.value * 0.6;
10366
- const q1 = (_b2 = item.q1) != null ? _b2 : item.value * 0.78;
10367
- const median = (_c2 = item.median) != null ? _c2 : item.value;
10368
- const q3 = (_d2 = item.q3) != null ? _d2 : item.value * 1.18;
10369
- const maxV = (_e2 = item.max) != null ? _e2 : item.value * 1.35;
10805
+ var _a2, _b2, _c2, _d2;
10806
+ const open = (_a2 = item.open) != null ? _a2 : item.value * 0.9;
10807
+ const close = (_b2 = item.close) != null ? _b2 : item.value;
10808
+ const high = (_c2 = item.high) != null ? _c2 : item.value * 1.08;
10809
+ const low = (_d2 = item.low) != null ? _d2 : item.value * 0.82;
10370
10810
  const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);
10371
- const seriesClass = chartClass(styles, index % paletteClasses.length);
10811
+ const bullish = close >= open;
10812
+ const openY = yForDomain(open, yMin, yMax, plot);
10813
+ const closeY = yForDomain(close, yMin, yMax, plot);
10814
+ const seriesClass = chartClass(styles, bullish ? 1 : 3);
10372
10815
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
10373
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, x1: x, x2: x, y1: yForDomain(min, yMin, yMax, plot), y2: yForDomain(maxV, yMin, yMax, plot) }),
10374
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, x1: x - boxWidth / 2, x2: x + boxWidth / 2, y1: yForDomain(min, yMin, yMax, plot), y2: yForDomain(min, yMin, yMax, plot) }),
10375
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, x1: x - boxWidth / 2, x2: x + boxWidth / 2, y1: yForDomain(maxV, yMin, yMax, plot), y2: yForDomain(maxV, yMin, yMax, plot) }),
10376
10816
  /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
10377
- "rect",
10817
+ "line",
10378
10818
  {
10379
- className: `${styles.area} ${seriesClass}`,
10380
- height: yForDomain(q1, yMin, yMax, plot) - yForDomain(q3, yMin, yMax, plot),
10381
- width: boxWidth,
10382
- x: x - boxWidth / 2,
10383
- y: yForDomain(q3, yMin, yMax, plot)
10819
+ className: `${styles.wick} ${seriesClass}`,
10820
+ x1: x,
10821
+ x2: x,
10822
+ y1: yForDomain(high, yMin, yMax, plot),
10823
+ y2: yForDomain(low, yMin, yMax, plot)
10384
10824
  }
10385
10825
  ),
10386
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, strokeWidth: "2", x1: x - boxWidth / 2, x2: x + boxWidth / 2, y1: yForDomain(median, yMin, yMax, plot), y2: yForDomain(median, yMin, yMax, plot) }),
10387
- showValues ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("text", { className: styles.valueLabel, textAnchor: "middle", x, y: yForDomain(maxV, yMin, yMax, plot) - 6, children: formatValue(median) }) : null
10826
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, x1: x - tick, x2: x, y1: openY, y2: openY }),
10827
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, x1: x, x2: x + tick, y1: closeY, y2: closeY }),
10828
+ showValues ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("text", { className: styles.valueLabel, textAnchor: "middle", x, y: yForDomain(high, yMin, yMax, plot) - 6, children: formatValue(close) }) : null
10388
10829
  ] }, item.label);
10389
10830
  }) });
10390
10831
  }
10391
- function truncateLabel(label, maxChars) {
10392
- if (maxChars < 4) {
10393
- return "";
10394
- }
10395
- if (label.length <= maxChars) {
10396
- return label;
10832
+ function RangeAreaChart({ data, plot, showValues, styles, yMax, yMin }) {
10833
+ if (!data.length) {
10834
+ return null;
10397
10835
  }
10398
- return `${label.slice(0, maxChars - 1)}\u2026`;
10399
- }
10400
- function Treemap({ data, plot, showValues, styles }) {
10401
- const gap = 2;
10402
- const labelHeight = 18;
10403
- const items = data.map((item, index) => ({
10404
- group: item.group,
10405
- index,
10406
- label: item.label,
10407
- value: Math.max(0, item.value)
10408
- }));
10409
- const layout = layoutGroupedTreemap(
10410
- items,
10411
- plot.gridLeft,
10412
- plot.top + labelHeight,
10413
- plot.gridRight - plot.gridLeft,
10414
- plotSpan(plot) - labelHeight
10415
- );
10836
+ const points = data.map((item, index) => {
10837
+ var _a2, _b2, _c2, _d2;
10838
+ const low = (_b2 = (_a2 = item.low) != null ? _a2 : item.min) != null ? _b2 : item.value * 0.75;
10839
+ const high = (_d2 = (_c2 = item.high) != null ? _c2 : item.max) != null ? _d2 : item.value * 1.25;
10840
+ const mid = item.value;
10841
+ const x = xForSeriesCategoryIndex(plot, index, data.length);
10842
+ return {
10843
+ x,
10844
+ lowY: yForDomain(low, yMin, yMax, plot),
10845
+ midY: yForDomain(mid, yMin, yMax, plot),
10846
+ highY: yForDomain(high, yMin, yMax, plot),
10847
+ label: item.label,
10848
+ mid
10849
+ };
10850
+ });
10851
+ const band = [
10852
+ ...points.map((point) => `${point.x},${point.highY}`),
10853
+ ...[...points].reverse().map((point) => `${point.x},${point.lowY}`)
10854
+ ].join(" ");
10855
+ const midLine = points.map((point) => `${point.x},${point.midY}`).join(" ");
10856
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
10857
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("polygon", { className: `${styles.area} ${chartClass(styles, 0)}`, points: band }),
10858
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("polyline", { className: `${styles.line} ${chartClass(styles, 1)}`, fill: "none", points: midLine }),
10859
+ showValues ? points.map((point) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("text", { className: styles.valueLabel, textAnchor: "middle", x: point.x, y: point.highY - 6, children: formatValue(point.mid) }, point.label)) : null
10860
+ ] });
10861
+ }
10862
+ function RangeBarChart({ data, plot, showValues, styles, yMax, yMin }) {
10863
+ const bodyWidth = candlestickBodyWidth(plot, data.length);
10864
+ const barHalfWidth = bodyWidth / 2;
10865
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("g", { children: data.map((item, index) => {
10866
+ var _a2, _b2, _c2, _d2;
10867
+ const low = (_b2 = (_a2 = item.low) != null ? _a2 : item.min) != null ? _b2 : item.value * 0.75;
10868
+ const high = (_d2 = (_c2 = item.high) != null ? _c2 : item.max) != null ? _d2 : item.value * 1.25;
10869
+ const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);
10870
+ const top = yForDomain(high, yMin, yMax, plot);
10871
+ const bottom = yForDomain(low, yMin, yMax, plot);
10872
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
10873
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
10874
+ "rect",
10875
+ {
10876
+ className: `${styles.bar} ${chartClass(styles, index % paletteClasses.length)}`,
10877
+ height: Math.max(4, bottom - top),
10878
+ rx: "3",
10879
+ width: bodyWidth,
10880
+ x: x - bodyWidth / 2,
10881
+ y: top
10882
+ }
10883
+ ),
10884
+ showValues ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("text", { className: styles.valueLabel, textAnchor: "middle", x, y: top - 6, children: formatValue(high) }) : null
10885
+ ] }, item.label);
10886
+ }) });
10887
+ }
10888
+ function ErrorBarChart({ data, plot, showValues, styles, yMax, yMin }) {
10889
+ const bodyWidth = Math.min(18, candlestickBodyWidth(plot, data.length));
10890
+ const barHalfWidth = bodyWidth / 2;
10891
+ const cap = Math.max(4, bodyWidth * 0.55);
10892
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("g", { children: data.map((item, index) => {
10893
+ var _a2, _b2, _c2;
10894
+ const error = (_a2 = item.error) != null ? _a2 : item.value * 0.12;
10895
+ const low = (_b2 = item.low) != null ? _b2 : item.value - error;
10896
+ const high = (_c2 = item.high) != null ? _c2 : item.value + error;
10897
+ const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);
10898
+ const valueY = yForDomain(item.value, yMin, yMax, plot);
10899
+ const highY = yForDomain(high, yMin, yMax, plot);
10900
+ const lowY = yForDomain(low, yMin, yMax, plot);
10901
+ const seriesClass = chartClass(styles, index % paletteClasses.length);
10902
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
10903
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
10904
+ "rect",
10905
+ {
10906
+ className: `${styles.bar} ${seriesClass}`,
10907
+ height: Math.max(4, plot.bottom - valueY),
10908
+ rx: "2",
10909
+ width: bodyWidth,
10910
+ x: x - bodyWidth / 2,
10911
+ y: valueY
10912
+ }
10913
+ ),
10914
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, x1: x, x2: x, y1: highY, y2: lowY }),
10915
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, x1: x - cap, x2: x + cap, y1: highY, y2: highY }),
10916
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, x1: x - cap, x2: x + cap, y1: lowY, y2: lowY }),
10917
+ showValues ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("text", { className: styles.valueLabel, textAnchor: "middle", x, y: highY - 6, children: formatValue(item.value) }) : null
10918
+ ] }, item.label);
10919
+ }) });
10920
+ }
10921
+ function ParallelCoordinates({ data, plot, showValues, styles }) {
10922
+ const dims = Math.max(2, ...data.map((item) => {
10923
+ var _a2, _b2;
10924
+ return (_b2 = (_a2 = item.values) == null ? void 0 : _a2.length) != null ? _b2 : 0;
10925
+ }));
10926
+ if (!data.length || dims < 2) {
10927
+ return null;
10928
+ }
10929
+ const axes = Array.from({ length: dims }, (_, dim) => {
10930
+ const values = data.map((item) => {
10931
+ var _a2, _b2;
10932
+ return (_b2 = (_a2 = item.values) == null ? void 0 : _a2[dim]) != null ? _b2 : item.value;
10933
+ });
10934
+ const min = Math.min(...values);
10935
+ const max = Math.max(...values);
10936
+ return { min, max: max === min ? min + 1 : max };
10937
+ });
10938
+ const xAt = (dim) => dims <= 1 ? (plot.gridLeft + plot.gridRight) / 2 : plot.gridLeft + dim * (plot.gridRight - plot.gridLeft) / (dims - 1);
10939
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
10940
+ axes.map((axis, dim) => {
10941
+ const x = xAt(dim);
10942
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
10943
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: styles.gridLine, x1: x, x2: x, y1: plot.top, y2: plot.bottom }),
10944
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("text", { className: styles.axisLabel, textAnchor: "middle", x, y: plot.bottom + 16, children: [
10945
+ "D",
10946
+ dim + 1
10947
+ ] }),
10948
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("text", { className: styles.axisLabel, textAnchor: "middle", x, y: plot.top - 8, children: formatValue(axis.max) })
10949
+ ] }, `axis-${dim}`);
10950
+ }),
10951
+ data.map((item, index) => {
10952
+ var _a2, _b2;
10953
+ const points = Array.from({ length: dims }, (_, dim) => {
10954
+ var _a3, _b3;
10955
+ const value = (_b3 = (_a3 = item.values) == null ? void 0 : _a3[dim]) != null ? _b3 : item.value;
10956
+ const axis = axes[dim];
10957
+ const y = plot.bottom - (value - axis.min) / (axis.max - axis.min) * (plot.bottom - plot.top);
10958
+ return `${xAt(dim)},${y}`;
10959
+ }).join(" ");
10960
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
10961
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("polyline", { className: `${styles.line} ${chartClass(styles, index % paletteClasses.length)}`, fill: "none", points }),
10962
+ showValues ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
10963
+ "text",
10964
+ {
10965
+ className: styles.valueLabel,
10966
+ textAnchor: "start",
10967
+ x: xAt(dims - 1) + 6,
10968
+ y: plot.bottom - (((_b2 = (_a2 = item.values) == null ? void 0 : _a2[dims - 1]) != null ? _b2 : item.value) - axes[dims - 1].min) / (axes[dims - 1].max - axes[dims - 1].min) * (plot.bottom - plot.top),
10969
+ children: item.label
10970
+ }
10971
+ ) : null
10972
+ ] }, item.label);
10973
+ })
10974
+ ] });
10975
+ }
10976
+ function ContourPlot({ data, plot, showValues, styles }) {
10977
+ const cols = Math.max(4, Math.ceil(Math.sqrt(Math.max(data.length, 1))));
10978
+ const rows = Math.max(3, Math.ceil(data.length / cols));
10979
+ const values = data.length ? data.map((item) => item.value) : Array.from({ length: cols * rows }, (_, index) => 20 + index * 17 % 80);
10980
+ const min = Math.min(...values);
10981
+ const max = Math.max(...values);
10982
+ const cellW = (plot.gridRight - plot.gridLeft) / cols;
10983
+ const cellH = (plot.bottom - plot.top) / rows;
10984
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
10985
+ Array.from({ length: rows * cols }, (_, index) => {
10986
+ const value = values[index % values.length];
10987
+ const col = index % cols;
10988
+ const row = Math.floor(index / cols);
10989
+ const intensity = (value - min) / Math.max(1, max - min);
10990
+ const band = Math.min(5, Math.floor(intensity * 6));
10991
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
10992
+ "rect",
10993
+ {
10994
+ className: `${styles.area} ${chartClass(styles, band)}`,
10995
+ height: Math.max(2, cellH - 1),
10996
+ opacity: 0.35 + intensity * 0.55,
10997
+ rx: "2",
10998
+ width: Math.max(2, cellW - 1),
10999
+ x: plot.gridLeft + col * cellW,
11000
+ y: plot.top + row * cellH
11001
+ },
11002
+ `contour-${index}`
11003
+ );
11004
+ }),
11005
+ Array.from({ length: 4 }, (_, ring) => {
11006
+ const t = (ring + 1) / 5;
11007
+ const cx = plot.gridLeft + (plot.gridRight - plot.gridLeft) * 0.55;
11008
+ const cy = plot.top + (plot.bottom - plot.top) * 0.48;
11009
+ const rx = (plot.gridRight - plot.gridLeft) * (0.16 + t * 0.28);
11010
+ const ry = (plot.bottom - plot.top) * (0.14 + t * 0.24);
11011
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
11012
+ "ellipse",
11013
+ {
11014
+ className: `${styles.line} ${chartClass(styles, ring % paletteClasses.length)}`,
11015
+ cx,
11016
+ cy,
11017
+ fill: "none",
11018
+ rx,
11019
+ ry
11020
+ },
11021
+ `contour-ring-${ring}`
11022
+ );
11023
+ }),
11024
+ showValues ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
11025
+ "text",
11026
+ {
11027
+ className: styles.valueLabel,
11028
+ textAnchor: "middle",
11029
+ x: (plot.gridLeft + plot.gridRight) / 2,
11030
+ y: plot.top + 14,
11031
+ children: [
11032
+ formatValue(max),
11033
+ " peak"
11034
+ ]
11035
+ }
11036
+ ) : null
11037
+ ] });
11038
+ }
11039
+ function SurfacePlot({ data, plot, showValues, styles }) {
11040
+ const cols = 8;
11041
+ const rows = 6;
11042
+ const values = data.length ? data.map((item) => item.value) : Array.from({ length: cols * rows }, (_, index) => 30 + index * 13 % 70);
11043
+ const min = Math.min(...values);
11044
+ const max = Math.max(...values);
11045
+ const cellW = (plot.gridRight - plot.gridLeft) / cols;
11046
+ const cellH = (plot.bottom - plot.top) / rows;
11047
+ const project = (col, row, value) => {
11048
+ const intensity = (value - min) / Math.max(1, max - min);
11049
+ const x = plot.gridLeft + col * cellW + row * cellW * 0.18;
11050
+ const y = plot.top + row * cellH * 0.72 + (1 - intensity) * cellH * 0.55;
11051
+ return { x, y };
11052
+ };
11053
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
11054
+ Array.from(
11055
+ { length: rows - 1 },
11056
+ (_, row) => Array.from({ length: cols - 1 }, (_2, col) => {
11057
+ const i = row * cols + col;
11058
+ const v00 = values[i % values.length];
11059
+ const v10 = values[(i + 1) % values.length];
11060
+ const v01 = values[(i + cols) % values.length];
11061
+ const v11 = values[(i + cols + 1) % values.length];
11062
+ const p00 = project(col, row, v00);
11063
+ const p10 = project(col + 1, row, v10);
11064
+ const p01 = project(col, row + 1, v01);
11065
+ const p11 = project(col + 1, row + 1, v11);
11066
+ const avg = (v00 + v10 + v01 + v11) / 4;
11067
+ const band = Math.min(5, Math.floor((avg - min) / Math.max(1, max - min) * 6));
11068
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
11069
+ "polygon",
11070
+ {
11071
+ className: `${styles.area} ${chartClass(styles, band)}`,
11072
+ opacity: 0.55 + (avg - min) / Math.max(1, max - min) * 0.35,
11073
+ points: `${p00.x},${p00.y} ${p10.x},${p10.y} ${p11.x},${p11.y} ${p01.x},${p01.y}`
11074
+ },
11075
+ `surface-${row}-${col}`
11076
+ );
11077
+ })
11078
+ ),
11079
+ showValues ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
11080
+ "text",
11081
+ {
11082
+ className: styles.valueLabel,
11083
+ textAnchor: "middle",
11084
+ x: (plot.gridLeft + plot.gridRight) / 2,
11085
+ y: plot.top + 14,
11086
+ children: "Surface 2D projection"
11087
+ }
11088
+ ) : null
11089
+ ] });
11090
+ }
11091
+ function BulletChart({ data, plot, showValues, styles, yMax, yMin }) {
11092
+ const laneHeight = Math.min(28, (plot.bottom - plot.top) / Math.max(data.length, 1) * 0.62);
11093
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("g", { children: data.map((item, index) => {
11094
+ var _a2, _b2, _c2, _d2;
11095
+ const slot = (plot.bottom - plot.top) / Math.max(data.length, 1);
11096
+ const y = plot.top + index * slot + (slot - laneHeight) / 2;
11097
+ const max = Math.max((_a2 = item.max) != null ? _a2 : yMax, (_b2 = item.target) != null ? _b2 : item.value, item.value, 1);
11098
+ const scale = (value) => plot.gridLeft + (value - yMin) / Math.max(1, max - yMin) * (plot.gridRight - plot.gridLeft);
11099
+ const actual = scale(item.value);
11100
+ const target = scale((_c2 = item.target) != null ? _c2 : item.value * 0.85);
11101
+ const qualitative = scale((_d2 = item.max) != null ? _d2 : max);
11102
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
11103
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
11104
+ "rect",
11105
+ {
11106
+ className: `${styles.area} ${chartClass(styles, 5)}`,
11107
+ height: laneHeight,
11108
+ rx: "4",
11109
+ width: Math.max(4, qualitative - plot.gridLeft),
11110
+ x: plot.gridLeft,
11111
+ y
11112
+ }
11113
+ ),
11114
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
11115
+ "rect",
11116
+ {
11117
+ className: `${styles.bar} ${chartClass(styles, 0)}`,
11118
+ height: laneHeight * 0.45,
11119
+ rx: "2",
11120
+ width: Math.max(4, actual - plot.gridLeft),
11121
+ x: plot.gridLeft,
11122
+ y: y + laneHeight * 0.275
11123
+ }
11124
+ ),
11125
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
11126
+ "line",
11127
+ {
11128
+ className: `${styles.wick} ${chartClass(styles, 3)}`,
11129
+ strokeWidth: "3",
11130
+ x1: target,
11131
+ x2: target,
11132
+ y1: y,
11133
+ y2: y + laneHeight
11134
+ }
11135
+ ),
11136
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("text", { className: styles.axisLabel, dominantBaseline: "middle", x: plot.gridLeft - 8, y: y + laneHeight / 2, textAnchor: "end", children: item.label }),
11137
+ showValues ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("text", { className: styles.valueLabel, x: actual + 6, y: y + laneHeight / 2 + 4, children: formatValue(item.value) }) : null
11138
+ ] }, item.label);
11139
+ }) });
11140
+ }
11141
+ function ParetoChart({ data, plot, showValues, styles }) {
11142
+ const sorted = [...data].sort((a, b) => b.value - a.value);
11143
+ const total = sorted.reduce((sum, item) => sum + Math.max(0, item.value), 0) || 1;
11144
+ const valueMax = Math.max(1, ...sorted.map((item) => item.value));
11145
+ let running = 0;
11146
+ const bodyWidth = candlestickBodyWidth(plot, sorted.length);
11147
+ const barHalfWidth = bodyWidth / 2;
11148
+ const points = sorted.map((item, index) => {
11149
+ running += Math.max(0, item.value);
11150
+ const cumulative = running / total * 100;
11151
+ const x = xForEdgeBarIndex(plot, index, sorted.length, barHalfWidth);
11152
+ return __spreadProps(__spreadValues({}, item), { cumulative, x });
11153
+ });
11154
+ const linePoints = points.map((item) => `${item.x},${yForDomain(item.cumulative, 0, 100, plot)}`).join(" ");
11155
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
11156
+ points.map((item) => {
11157
+ const top = yForDomain(item.value, 0, valueMax, plot);
11158
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
11159
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
11160
+ "rect",
11161
+ {
11162
+ className: `${styles.bar} ${chartClass(styles, 0)}`,
11163
+ height: Math.max(4, plot.bottom - top),
11164
+ rx: "2",
11165
+ width: bodyWidth,
11166
+ x: item.x - bodyWidth / 2,
11167
+ y: top
11168
+ }
11169
+ ),
11170
+ showValues ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("text", { className: styles.valueLabel, textAnchor: "middle", x: item.x, y: top - 6, children: formatValue(item.value) }) : null,
11171
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
11172
+ "circle",
11173
+ {
11174
+ className: `${styles.point} ${chartClass(styles, 1)}`,
11175
+ cx: item.x,
11176
+ cy: yForDomain(item.cumulative, 0, 100, plot),
11177
+ r: "3.5"
11178
+ }
11179
+ )
11180
+ ] }, item.label);
11181
+ }),
11182
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("polyline", { className: `${styles.line} ${chartClass(styles, 1)}`, fill: "none", points: linePoints }),
11183
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("text", { className: styles.axisLabel, textAnchor: "start", x: plot.gridRight + 6, y: plot.top + 4, children: "%" })
11184
+ ] });
11185
+ }
11186
+ function BoxPlot({ data, plot, showValues, styles, yMax, yMin }) {
11187
+ const barHalfWidth = getBoxPlotBarHalfWidth(plot, data.length);
11188
+ const boxWidth = barHalfWidth * 2;
11189
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("g", { children: data.map((item, index) => {
11190
+ var _a2, _b2, _c2, _d2, _e2;
11191
+ const min = (_a2 = item.min) != null ? _a2 : item.value * 0.6;
11192
+ const q1 = (_b2 = item.q1) != null ? _b2 : item.value * 0.78;
11193
+ const median = (_c2 = item.median) != null ? _c2 : item.value;
11194
+ const q3 = (_d2 = item.q3) != null ? _d2 : item.value * 1.18;
11195
+ const maxV = (_e2 = item.max) != null ? _e2 : item.value * 1.35;
11196
+ const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);
11197
+ const seriesClass = chartClass(styles, index % paletteClasses.length);
11198
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
11199
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, x1: x, x2: x, y1: yForDomain(min, yMin, yMax, plot), y2: yForDomain(maxV, yMin, yMax, plot) }),
11200
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, x1: x - boxWidth / 2, x2: x + boxWidth / 2, y1: yForDomain(min, yMin, yMax, plot), y2: yForDomain(min, yMin, yMax, plot) }),
11201
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, x1: x - boxWidth / 2, x2: x + boxWidth / 2, y1: yForDomain(maxV, yMin, yMax, plot), y2: yForDomain(maxV, yMin, yMax, plot) }),
11202
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
11203
+ "rect",
11204
+ {
11205
+ className: `${styles.area} ${seriesClass}`,
11206
+ height: yForDomain(q1, yMin, yMax, plot) - yForDomain(q3, yMin, yMax, plot),
11207
+ width: boxWidth,
11208
+ x: x - boxWidth / 2,
11209
+ y: yForDomain(q3, yMin, yMax, plot)
11210
+ }
11211
+ ),
11212
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("line", { className: `${styles.wick} ${seriesClass}`, strokeWidth: "2", x1: x - boxWidth / 2, x2: x + boxWidth / 2, y1: yForDomain(median, yMin, yMax, plot), y2: yForDomain(median, yMin, yMax, plot) }),
11213
+ showValues ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("text", { className: styles.valueLabel, textAnchor: "middle", x, y: yForDomain(maxV, yMin, yMax, plot) - 6, children: formatValue(median) }) : null
11214
+ ] }, item.label);
11215
+ }) });
11216
+ }
11217
+ function truncateLabel(label, maxChars) {
11218
+ if (maxChars < 4) {
11219
+ return "";
11220
+ }
11221
+ if (label.length <= maxChars) {
11222
+ return label;
11223
+ }
11224
+ return `${label.slice(0, maxChars - 1)}\u2026`;
11225
+ }
11226
+ function Treemap({ data, plot, showValues, styles }) {
11227
+ const gap = 2;
11228
+ const labelHeight = 18;
11229
+ const items = data.map((item, index) => ({
11230
+ group: item.group,
11231
+ index,
11232
+ label: item.label,
11233
+ value: Math.max(0, item.value)
11234
+ }));
11235
+ const layout = layoutGroupedTreemap(
11236
+ items,
11237
+ plot.gridLeft,
11238
+ plot.top + labelHeight,
11239
+ plot.gridRight - plot.gridLeft,
11240
+ plotSpan(plot) - labelHeight
11241
+ );
10416
11242
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("g", { children: [
10417
11243
  layout.groups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
10418
11244
  "text",
@@ -11086,6 +11912,24 @@ function SpecializedChart(props) {
11086
11912
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Waterfall, __spreadValues({}, props));
11087
11913
  case "candlestick":
11088
11914
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Candlestick, __spreadValues({}, props));
11915
+ case "ohlc":
11916
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(OhlcChart, __spreadValues({}, props));
11917
+ case "range-area":
11918
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(RangeAreaChart, __spreadValues({}, props));
11919
+ case "range-bar":
11920
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(RangeBarChart, __spreadValues({}, props));
11921
+ case "error-bar":
11922
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ErrorBarChart, __spreadValues({}, props));
11923
+ case "parallel-coordinates":
11924
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ParallelCoordinates, __spreadValues({}, props));
11925
+ case "contour":
11926
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ContourPlot, __spreadValues({}, props));
11927
+ case "surface":
11928
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(SurfacePlot, __spreadValues({}, props));
11929
+ case "bullet":
11930
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(BulletChart, __spreadValues({}, props));
11931
+ case "pareto":
11932
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ParetoChart, __spreadValues({}, props));
11089
11933
  case "box-plot":
11090
11934
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(BoxPlot, __spreadValues({}, props));
11091
11935
  case "treemap":
@@ -11130,7 +11974,7 @@ function SpecializedChart(props) {
11130
11974
  }
11131
11975
 
11132
11976
  // ../../components/Chart/Chart.module.css
11133
- var Chart_default = {"radarGrid":"opus_L6guCK_radarGrid","packLabel":"opus_L6guCK_packLabel","sankeyCenterLabel":"opus_L6guCK_sankeyCenterLabel","axisGuide":"opus_L6guCK_axisGuide","seriesF":"opus_L6guCK_seriesF","sankeyLabelBox":"opus_L6guCK_sankeyLabelBox","link":"opus_L6guCK_link","graphLinkColored":"opus_L6guCK_graphLinkColored","slice":"opus_L6guCK_slice","line":"opus_L6guCK_line","legend":"opus_L6guCK_legend","land":"opus_L6guCK_land","radarArea":"opus_L6guCK_radarArea","seriesA":"opus_L6guCK_seriesA","violin":"opus_L6guCK_violin","graphNode":"opus_L6guCK_graphNode","graphNodeRing":"opus_L6guCK_graphNodeRing","graphLabel":"opus_L6guCK_graphLabel","seriesB":"opus_L6guCK_seriesB","bar":"opus_L6guCK_bar","wick":"opus_L6guCK_wick","sankeySideValue":"opus_L6guCK_sankeySideValue","area":"opus_L6guCK_area","seriesD":"opus_L6guCK_seriesD","treemapLabel":"opus_L6guCK_treemapLabel","axisTitle":"opus_L6guCK_axisTitle","svg":"opus_L6guCK_svg","packParent":"opus_L6guCK_packParent","sankeyNode":"opus_L6guCK_sankeyNode","sankeySideLabel":"opus_L6guCK_sankeySideLabel","header":"opus_L6guCK_header","seriesC":"opus_L6guCK_seriesC","mapRegion":"opus_L6guCK_mapRegion","axisLine":"opus_L6guCK_axisLine","legendSwatch":"opus_L6guCK_legendSwatch","sankeySideName":"opus_L6guCK_sankeySideName","meta":"opus_L6guCK_meta","title":"opus_L6guCK_title","valueLabel":"opus_L6guCK_valueLabel","sankeyLink":"opus_L6guCK_sankeyLink","funnelText":"opus_L6guCK_funnelText","ring":"opus_L6guCK_ring","axisTick":"opus_L6guCK_axisTick","seriesE":"opus_L6guCK_seriesE","legendItem":"opus_L6guCK_legendItem","axisLabels":"opus_L6guCK_axisLabels","funnel":"opus_L6guCK_funnel","axes":"opus_L6guCK_axes","mapLand":"opus_L6guCK_mapLand","chart":"opus_L6guCK_chart","funnelGuide":"opus_L6guCK_funnelGuide","mapLabel":"opus_L6guCK_mapLabel","graphLink":"opus_L6guCK_graphLink","grid":"opus_L6guCK_grid","point":"opus_L6guCK_point","treemapGroupLabel":"opus_L6guCK_treemapGroupLabel","ridge":"opus_L6guCK_ridge","mapValue":"opus_L6guCK_mapValue"};
11977
+ var Chart_default = {"mapValue":"opus_L6guCK_mapValue","header":"opus_L6guCK_header","graphLink":"opus_L6guCK_graphLink","graphLinkColored":"opus_L6guCK_graphLinkColored","wick":"opus_L6guCK_wick","legendItem":"opus_L6guCK_legendItem","sankeyCenterLabel":"opus_L6guCK_sankeyCenterLabel","mapRegion":"opus_L6guCK_mapRegion","sankeyLink":"opus_L6guCK_sankeyLink","link":"opus_L6guCK_link","sankeySideName":"opus_L6guCK_sankeySideName","violin":"opus_L6guCK_violin","sankeySideLabel":"opus_L6guCK_sankeySideLabel","treemapGroupLabel":"opus_L6guCK_treemapGroupLabel","mapLabel":"opus_L6guCK_mapLabel","meta":"opus_L6guCK_meta","funnel":"opus_L6guCK_funnel","graphNode":"opus_L6guCK_graphNode","area":"opus_L6guCK_area","axes":"opus_L6guCK_axes","seriesE":"opus_L6guCK_seriesE","funnelGuide":"opus_L6guCK_funnelGuide","land":"opus_L6guCK_land","seriesA":"opus_L6guCK_seriesA","radarArea":"opus_L6guCK_radarArea","ridge":"opus_L6guCK_ridge","sankeyLabelBox":"opus_L6guCK_sankeyLabelBox","bar":"opus_L6guCK_bar","legendSwatch":"opus_L6guCK_legendSwatch","seriesC":"opus_L6guCK_seriesC","point":"opus_L6guCK_point","line":"opus_L6guCK_line","radarGrid":"opus_L6guCK_radarGrid","packLabel":"opus_L6guCK_packLabel","axisLine":"opus_L6guCK_axisLine","chart":"opus_L6guCK_chart","mapLand":"opus_L6guCK_mapLand","sankeyNode":"opus_L6guCK_sankeyNode","ring":"opus_L6guCK_ring","valueLabel":"opus_L6guCK_valueLabel","seriesF":"opus_L6guCK_seriesF","graphNodeRing":"opus_L6guCK_graphNodeRing","graphLabel":"opus_L6guCK_graphLabel","seriesB":"opus_L6guCK_seriesB","title":"opus_L6guCK_title","slice":"opus_L6guCK_slice","svg":"opus_L6guCK_svg","treemapLabel":"opus_L6guCK_treemapLabel","axisTitle":"opus_L6guCK_axisTitle","legend":"opus_L6guCK_legend","sankeySideValue":"opus_L6guCK_sankeySideValue","axisLabels":"opus_L6guCK_axisLabels","grid":"opus_L6guCK_grid","axisTick":"opus_L6guCK_axisTick","axisGuide":"opus_L6guCK_axisGuide","seriesD":"opus_L6guCK_seriesD","packParent":"opus_L6guCK_packParent","funnelText":"opus_L6guCK_funnelText"};
11134
11978
 
11135
11979
  // ../../components/Chart/Chart.tsx
11136
11980
  var import_jsx_runtime64 = require("react/jsx-runtime");
@@ -11355,7 +12199,7 @@ function getWaterfallDomain(data) {
11355
12199
  return { min: min - pad, max: max + pad };
11356
12200
  }
11357
12201
  function getChartYDomain(variant, data, series, fallbackMax) {
11358
- if (variant === "candlestick") {
12202
+ if (variant === "candlestick" || variant === "ohlc") {
11359
12203
  const lows = data.map((item) => {
11360
12204
  var _a2;
11361
12205
  return (_a2 = item.low) != null ? _a2 : item.value * 0.82;
@@ -11369,6 +12213,45 @@ function getChartYDomain(variant, data, series, fallbackMax) {
11369
12213
  const pad = Math.max(0, (max - min) * 0.04);
11370
12214
  return { min: min - pad, max: max + pad };
11371
12215
  }
12216
+ if (variant === "range-area" || variant === "range-bar") {
12217
+ const lows = data.map((item) => {
12218
+ var _a2, _b2;
12219
+ return (_b2 = (_a2 = item.low) != null ? _a2 : item.min) != null ? _b2 : item.value * 0.75;
12220
+ });
12221
+ const highs = data.map((item) => {
12222
+ var _a2, _b2;
12223
+ return (_b2 = (_a2 = item.high) != null ? _a2 : item.max) != null ? _b2 : item.value * 1.25;
12224
+ });
12225
+ const min = Math.min(...lows);
12226
+ const max = Math.max(...highs);
12227
+ const pad = Math.max(0, (max - min) * 0.06);
12228
+ return { min: Math.max(0, min - pad), max: max + pad };
12229
+ }
12230
+ if (variant === "error-bar") {
12231
+ const lows = data.map((item) => {
12232
+ var _a2, _b2;
12233
+ const error = (_a2 = item.error) != null ? _a2 : item.value * 0.12;
12234
+ return ((_b2 = item.low) != null ? _b2 : item.value) - (item.low == null ? error : 0);
12235
+ });
12236
+ const highs = data.map((item) => {
12237
+ var _a2, _b2;
12238
+ const error = (_a2 = item.error) != null ? _a2 : item.value * 0.12;
12239
+ return ((_b2 = item.high) != null ? _b2 : item.value) + (item.high == null ? error : 0);
12240
+ });
12241
+ const min = Math.min(0, ...lows);
12242
+ const max = Math.max(...highs);
12243
+ return { min, max: max * 1.08 };
12244
+ }
12245
+ if (variant === "bullet") {
12246
+ const highs = data.map((item) => {
12247
+ var _a2, _b2;
12248
+ return Math.max(item.value, (_a2 = item.target) != null ? _a2 : item.value, (_b2 = item.max) != null ? _b2 : item.value);
12249
+ });
12250
+ return { min: 0, max: Math.max(1, ...highs) * 1.08 };
12251
+ }
12252
+ if (variant === "pareto") {
12253
+ return { min: 0, max: Math.max(1, ...data.map((item) => item.value)) * 1.08 };
12254
+ }
11372
12255
  if (variant === "box-plot") {
11373
12256
  const lows = data.map((item) => {
11374
12257
  var _a2;
@@ -12213,7 +13096,7 @@ function Chart({
12213
13096
  slotBounds: specializedVariantUsesSlotLabels(variant) ? { left: activePlot.gridLeft, right: activePlot.gridRight } : void 0,
12214
13097
  slotCentered: specializedVariantUsesSlotLabels(variant),
12215
13098
  timeline: variant === "timeline" || variant === "milestone-timeline",
12216
- edgeBarHalfWidth: variant === "candlestick" ? getCandlestickBarHalfWidth(activePlot, data.length) : variant === "histogram" ? getHistogramBarHalfWidth(activePlot, data.length) : variant === "box-plot" ? getBoxPlotBarHalfWidth(activePlot, data.length) : variant === "violin" ? getViolinBarHalfWidth(activePlot, data.length) : void 0
13099
+ edgeBarHalfWidth: variant === "candlestick" || variant === "ohlc" || variant === "range-bar" || variant === "error-bar" || variant === "pareto" ? getCandlestickBarHalfWidth(activePlot, data.length) : variant === "histogram" ? getHistogramBarHalfWidth(activePlot, data.length) : variant === "box-plot" ? getBoxPlotBarHalfWidth(activePlot, data.length) : variant === "violin" ? getViolinBarHalfWidth(activePlot, data.length) : void 0
12217
13100
  }
12218
13101
  ) : null
12219
13102
  ] }),
@@ -12230,7 +13113,7 @@ function Chart({
12230
13113
  }
12231
13114
 
12232
13115
  // ../../components/Skeleton/Skeleton.module.css
12233
- var Skeleton_default = {"avatar":"opus_27r9Md_avatar","stack":"opus_27r9Md_stack","tableRow":"opus_27r9Md_tableRow","skeleton":"opus_27r9Md_skeleton","media":"opus_27r9Md_media","line":"opus_27r9Md_line","skeletonPulse":"opus_27r9Md_skeletonPulse","avatarContent":"opus_27r9Md_avatarContent","tableCell":"opus_27r9Md_tableCell","skeletonShimmer":"opus_27r9Md_skeletonShimmer"};
13116
+ var Skeleton_default = {"skeleton":"opus_27r9Md_skeleton","skeletonPulse":"opus_27r9Md_skeletonPulse","tableCell":"opus_27r9Md_tableCell","media":"opus_27r9Md_media","avatar":"opus_27r9Md_avatar","avatarContent":"opus_27r9Md_avatarContent","stack":"opus_27r9Md_stack","line":"opus_27r9Md_line","tableRow":"opus_27r9Md_tableRow","skeletonShimmer":"opus_27r9Md_skeletonShimmer"};
12234
13117
 
12235
13118
  // ../../components/Skeleton/Skeleton.tsx
12236
13119
  var import_jsx_runtime65 = require("react/jsx-runtime");
@@ -12281,7 +13164,7 @@ var import_free_solid_svg_icons7 = require("@fortawesome/free-solid-svg-icons");
12281
13164
  var import_react_fontawesome7 = require("@fortawesome/react-fontawesome");
12282
13165
 
12283
13166
  // ../../components/Lightbox/Lightbox.module.css
12284
- var Lightbox_default = {"frame":"opus_s7Rpyv_frame","panel":"opus_s7Rpyv_panel","trigger":"opus_s7Rpyv_trigger","overlay":"opus_s7Rpyv_overlay","lightboxFadeOut":"opus_s7Rpyv_lightboxFadeOut","lightboxFadeIn":"opus_s7Rpyv_lightboxFadeIn","lightboxPanelOut":"opus_s7Rpyv_lightboxPanelOut","image":"opus_s7Rpyv_image","lightbox":"opus_s7Rpyv_lightbox","close":"opus_s7Rpyv_close","lightboxPanelIn":"opus_s7Rpyv_lightboxPanelIn","closeIcon":"opus_s7Rpyv_closeIcon","caption":"opus_s7Rpyv_caption"};
13167
+ var Lightbox_default = {"lightboxPanelIn":"opus_s7Rpyv_lightboxPanelIn","trigger":"opus_s7Rpyv_trigger","lightboxFadeOut":"opus_s7Rpyv_lightboxFadeOut","lightbox":"opus_s7Rpyv_lightbox","close":"opus_s7Rpyv_close","image":"opus_s7Rpyv_image","closeIcon":"opus_s7Rpyv_closeIcon","lightboxFadeIn":"opus_s7Rpyv_lightboxFadeIn","caption":"opus_s7Rpyv_caption","lightboxPanelOut":"opus_s7Rpyv_lightboxPanelOut","overlay":"opus_s7Rpyv_overlay","frame":"opus_s7Rpyv_frame","panel":"opus_s7Rpyv_panel"};
12285
13168
 
12286
13169
  // ../../components/Lightbox/Lightbox.tsx
12287
13170
  var import_jsx_runtime66 = require("react/jsx-runtime");
@@ -12396,7 +13279,7 @@ function Lightbox({
12396
13279
  }
12397
13280
 
12398
13281
  // ../../components/Carousel/Carousel.module.css
12399
- var Carousel_default = {"image":"opus_N4occJ_image","carousel":"opus_N4occJ_carousel","pips":"opus_N4occJ_pips","navIcon":"opus_N4occJ_navIcon","caption":"opus_N4occJ_caption","stage":"opus_N4occJ_stage","footer":"opus_N4occJ_footer","pip":"opus_N4occJ_pip","slide":"opus_N4occJ_slide","empty":"opus_N4occJ_empty","visuallyHidden":"opus_N4occJ_visuallyHidden","nav":"opus_N4occJ_nav","track":"opus_N4occJ_track"};
13282
+ var Carousel_default = {"pips":"opus_N4occJ_pips","pip":"opus_N4occJ_pip","navIcon":"opus_N4occJ_navIcon","visuallyHidden":"opus_N4occJ_visuallyHidden","slide":"opus_N4occJ_slide","stage":"opus_N4occJ_stage","empty":"opus_N4occJ_empty","track":"opus_N4occJ_track","image":"opus_N4occJ_image","footer":"opus_N4occJ_footer","carousel":"opus_N4occJ_carousel","nav":"opus_N4occJ_nav","caption":"opus_N4occJ_caption"};
12400
13283
 
12401
13284
  // ../../components/Carousel/Carousel.tsx
12402
13285
  var import_jsx_runtime67 = require("react/jsx-runtime");
@@ -12723,7 +13606,7 @@ var import_react42 = require("react");
12723
13606
  var import_react41 = require("react");
12724
13607
 
12725
13608
  // ../../components/ModelViewer/ModelViewer.module.css
12726
- var ModelViewer_default = {"viewer":"opus_f7gfHI_viewer","model":"opus_f7gfHI_model","canvasHost":"opus_f7gfHI_canvasHost","stage":"opus_f7gfHI_stage","loading":"opus_f7gfHI_loading","caption":"opus_f7gfHI_caption"};
13609
+ var ModelViewer_default = {"stage":"opus_f7gfHI_stage","canvasHost":"opus_f7gfHI_canvasHost","loading":"opus_f7gfHI_loading","viewer":"opus_f7gfHI_viewer","model":"opus_f7gfHI_model","caption":"opus_f7gfHI_caption"};
12727
13610
 
12728
13611
  // ../../components/ModelViewer/FireBarrelModelViewer.tsx
12729
13612
  var import_jsx_runtime70 = require("react/jsx-runtime");
@@ -12941,7 +13824,7 @@ var import_free_solid_svg_icons9 = require("@fortawesome/free-solid-svg-icons");
12941
13824
  var import_react_fontawesome9 = require("@fortawesome/react-fontawesome");
12942
13825
 
12943
13826
  // ../../components/ModelLightbox/ModelLightbox.module.css
12944
- var ModelLightbox_default = {"frame":"opus_YYKGIB_frame","modelLightboxPanelOut":"opus_YYKGIB_modelLightboxPanelOut","close":"opus_YYKGIB_close","modelLightboxFadeOut":"opus_YYKGIB_modelLightboxFadeOut","lightbox":"opus_YYKGIB_lightbox","modelLightboxPanelIn":"opus_YYKGIB_modelLightboxPanelIn","overlay":"opus_YYKGIB_overlay","trigger":"opus_YYKGIB_trigger","closeIcon":"opus_YYKGIB_closeIcon","modelLightboxFadeIn":"opus_YYKGIB_modelLightboxFadeIn"};
13827
+ var ModelLightbox_default = {"close":"opus_YYKGIB_close","trigger":"opus_YYKGIB_trigger","modelLightboxFadeIn":"opus_YYKGIB_modelLightboxFadeIn","frame":"opus_YYKGIB_frame","lightbox":"opus_YYKGIB_lightbox","closeIcon":"opus_YYKGIB_closeIcon","modelLightboxPanelOut":"opus_YYKGIB_modelLightboxPanelOut","modelLightboxPanelIn":"opus_YYKGIB_modelLightboxPanelIn","overlay":"opus_YYKGIB_overlay","modelLightboxFadeOut":"opus_YYKGIB_modelLightboxFadeOut"};
12945
13828
 
12946
13829
  // ../../components/ModelLightbox/ModelLightbox.tsx
12947
13830
  var import_jsx_runtime72 = require("react/jsx-runtime");
@@ -13052,21 +13935,23 @@ var ModelThumbnail_default = {"staticThumbnail":"opus_NkO9Yb_staticThumbnail","c
13052
13935
  var import_jsx_runtime73 = require("react/jsx-runtime");
13053
13936
  function ThumbnailContent({
13054
13937
  asset,
13938
+ fill,
13055
13939
  showCaption,
13056
13940
  size
13057
13941
  }) {
13058
- return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("span", { className: ModelThumbnail_default.content, "data-size": size, children: [
13942
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("span", { className: ModelThumbnail_default.content, "data-fill": fill ? "true" : void 0, "data-size": size, children: [
13059
13943
  /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(ModelViewer, { asset, cameraControls: false, height: "compact", showCaption: false }),
13060
13944
  showCaption ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: ModelThumbnail_default.caption, children: asset.name }) : null
13061
13945
  ] });
13062
13946
  }
13063
13947
  function ModelThumbnail({
13064
13948
  asset,
13949
+ fill = false,
13065
13950
  openInLightbox = true,
13066
13951
  showCaption = true,
13067
13952
  size = "medium"
13068
13953
  }) {
13069
- const content = /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(ThumbnailContent, { asset, showCaption, size });
13954
+ const content = /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(ThumbnailContent, { asset, fill, showCaption, size });
13070
13955
  if (openInLightbox) {
13071
13956
  return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
13072
13957
  ModelLightbox,
@@ -13100,6 +13985,7 @@ function ModelGallery({
13100
13985
  ModelThumbnail,
13101
13986
  {
13102
13987
  asset,
13988
+ fill: true,
13103
13989
  openInLightbox: true,
13104
13990
  showCaption: showCaptions,
13105
13991
  size: thumbnailSize
@@ -13164,7 +14050,7 @@ function CatalogIcon({ iconName }) {
13164
14050
  }
13165
14051
 
13166
14052
  // ../../components/EmptyState/EmptyState.module.css
13167
- var EmptyState_default = {"root":"opus_1KckGY_root","iconWrap":"opus_1KckGY_iconWrap","copy":"opus_1KckGY_copy","title":"opus_1KckGY_title","actions":"opus_1KckGY_actions","description":"opus_1KckGY_description"};
14053
+ var EmptyState_default = {"root":"opus_1KckGY_root","copy":"opus_1KckGY_copy","title":"opus_1KckGY_title","actions":"opus_1KckGY_actions","description":"opus_1KckGY_description","iconWrap":"opus_1KckGY_iconWrap"};
13168
14054
 
13169
14055
  // ../../components/EmptyState/EmptyState.tsx
13170
14056
  var import_jsx_runtime76 = require("react/jsx-runtime");
@@ -13197,64 +14083,1040 @@ function EmptyState({
13197
14083
  );
13198
14084
  }
13199
14085
 
13200
- // ../../components/Sidebar/Sidebar.tsx
13201
- var import_react45 = require("react");
13202
-
13203
- // ../../components/Sidebar/Sidebar.module.css
13204
- var Sidebar_default = {"link":"opus_4Pogux_link","main":"opus_4Pogux_main","groupItems":"opus_4Pogux_groupItems","groupLabel":"opus_4Pogux_groupLabel","footer":"opus_4Pogux_footer","group":"opus_4Pogux_group","headerTitle":"opus_4Pogux_headerTitle","linkActive":"opus_4Pogux_linkActive","body":"opus_4Pogux_body","sidebar":"opus_4Pogux_sidebar","headerInner":"opus_4Pogux_headerInner","groupChevron":"opus_4Pogux_groupChevron","groupHeader":"opus_4Pogux_groupHeader","visuallyHidden":"opus_4Pogux_visuallyHidden","groupChevronOpen":"opus_4Pogux_groupChevronOpen","header":"opus_4Pogux_header","groupToggle":"opus_4Pogux_groupToggle","groupItemsWrap":"opus_4Pogux_groupItemsWrap","layout":"opus_4Pogux_layout","nav":"opus_4Pogux_nav"};
14086
+ // ../../components/Badge/Badge.module.css
14087
+ var Badge_default = {"badge":"opus_1GJHzl_badge","dot":"opus_1GJHzl_dot"};
13205
14088
 
13206
- // ../../components/Sidebar/Sidebar.tsx
14089
+ // ../../components/Badge/Badge.tsx
13207
14090
  var import_jsx_runtime77 = require("react/jsx-runtime");
13208
- var SidebarContext = (0, import_react45.createContext)({
13209
- collapsed: false,
13210
- density: "comfortable"
13211
- });
13212
- function Sidebar({
13213
- children,
13214
- collapsed = false,
13215
- density = "comfortable",
13216
- footer,
13217
- header,
13218
- side = "left"
14091
+ function Badge({
14092
+ dot = false,
14093
+ label,
14094
+ size = "md",
14095
+ tone = "neutral",
14096
+ variant = "soft"
13219
14097
  }) {
13220
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(SidebarContext.Provider, { value: { collapsed, density }, children: /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
13221
- "aside",
13222
- {
13223
- "aria-label": "Sidebar",
13224
- className: Sidebar_default.sidebar,
13225
- "data-collapsed": collapsed ? "true" : "false",
13226
- "data-density": density,
13227
- "data-side": side,
13228
- children: [
13229
- header ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: Sidebar_default.header, children: header }) : null,
13230
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: Sidebar_default.body, children }),
13231
- footer ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: Sidebar_default.footer, children: footer }) : null
13232
- ]
13233
- }
13234
- ) });
13235
- }
13236
- function SidebarHeader({ children, title }) {
13237
- const { collapsed } = (0, import_react45.useContext)(SidebarContext);
13238
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: Sidebar_default.headerInner, children: [
13239
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("h2", { className: collapsed ? Sidebar_default.visuallyHidden : Sidebar_default.headerTitle, children: title }),
13240
- children
14098
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("span", { className: Badge_default.badge, "data-size": size, "data-tone": tone, "data-variant": variant, children: [
14099
+ dot ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { "aria-hidden": "true", className: Badge_default.dot }) : null,
14100
+ label
13241
14101
  ] });
13242
14102
  }
13243
- function SidebarNav({ "aria-label": ariaLabel, children }) {
13244
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("nav", { "aria-label": ariaLabel, className: Sidebar_default.nav, children });
13245
- }
13246
- function SidebarLink({ active = false, children, href, onClick }) {
13247
- const { collapsed } = (0, import_react45.useContext)(SidebarContext);
13248
- const className = [Sidebar_default.link, active ? Sidebar_default.linkActive : ""].filter(Boolean).join(" ");
13249
- const label = typeof children === "string" ? children : null;
13250
- const content = /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(import_jsx_runtime77.Fragment, { children: [
13251
- collapsed && label ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { "aria-hidden": "true", children: label.charAt(0) }) : null,
13252
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: collapsed ? Sidebar_default.visuallyHidden : void 0, children })
13253
- ] });
14103
+
14104
+ // ../../components/Divider/Divider.module.css
14105
+ var Divider_default = {"divider":"opus_ux1i0D_divider","label":"opus_ux1i0D_label","line":"opus_ux1i0D_line","labelled":"opus_ux1i0D_labelled"};
14106
+
14107
+ // ../../components/Divider/Divider.tsx
14108
+ var import_jsx_runtime78 = require("react/jsx-runtime");
14109
+ function Divider({
14110
+ label,
14111
+ orientation = "horizontal",
14112
+ tone = "default"
14113
+ }) {
14114
+ if (orientation === "vertical") {
14115
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
14116
+ "div",
14117
+ {
14118
+ "aria-orientation": "vertical",
14119
+ className: Divider_default.divider,
14120
+ "data-orientation": "vertical",
14121
+ "data-tone": tone,
14122
+ role: "separator"
14123
+ }
14124
+ );
14125
+ }
14126
+ if (label) {
14127
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: Divider_default.labelled, "data-tone": tone, role: "separator", children: [
14128
+ /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { "aria-hidden": "true", className: Divider_default.line }),
14129
+ /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: Divider_default.label, children: label }),
14130
+ /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { "aria-hidden": "true", className: Divider_default.line })
14131
+ ] });
14132
+ }
14133
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
14134
+ "hr",
14135
+ {
14136
+ className: Divider_default.divider,
14137
+ "data-orientation": "horizontal",
14138
+ "data-tone": tone
14139
+ }
14140
+ );
14141
+ }
14142
+
14143
+ // ../../components/Avatar/Avatar.tsx
14144
+ var import_react45 = require("react");
14145
+
14146
+ // ../../components/Avatar/Avatar.module.css
14147
+ var Avatar_default = {"initials":"opus_jsRWxO_initials","image":"opus_jsRWxO_image","avatar":"opus_jsRWxO_avatar"};
14148
+
14149
+ // ../../components/Avatar/Avatar.tsx
14150
+ var import_jsx_runtime79 = (
14151
+ // eslint-disable-next-line @next/next/no-img-element
14152
+ require("react/jsx-runtime")
14153
+ );
14154
+ function initialsFromName(name) {
14155
+ var _a2, _b2;
14156
+ const parts = name.trim().split(/\s+/).filter(Boolean);
14157
+ if (parts.length === 0) {
14158
+ return "?";
14159
+ }
14160
+ if (parts.length === 1) {
14161
+ return parts[0].slice(0, 2).toUpperCase();
14162
+ }
14163
+ return `${(_a2 = parts[0][0]) != null ? _a2 : ""}${(_b2 = parts[1][0]) != null ? _b2 : ""}`.toUpperCase();
14164
+ }
14165
+ function Avatar({
14166
+ name,
14167
+ shape = "circle",
14168
+ size = "md",
14169
+ src
14170
+ }) {
14171
+ const [failed, setFailed] = (0, import_react45.useState)(false);
14172
+ const initials = (0, import_react45.useMemo)(() => initialsFromName(name), [name]);
14173
+ const showImage = Boolean(src) && !failed;
14174
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
14175
+ "span",
14176
+ {
14177
+ "aria-label": name,
14178
+ className: Avatar_default.avatar,
14179
+ "data-shape": shape,
14180
+ "data-size": size,
14181
+ role: "img",
14182
+ title: name,
14183
+ children: showImage ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
14184
+ "img",
14185
+ {
14186
+ alt: "",
14187
+ className: Avatar_default.image,
14188
+ onError: () => setFailed(true),
14189
+ src
14190
+ }
14191
+ ) : /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { "aria-hidden": "true", className: Avatar_default.initials, children: initials })
14192
+ }
14193
+ );
14194
+ }
14195
+
14196
+ // ../../components/AvatarGroup/AvatarGroup.module.css
14197
+ var AvatarGroup_default = {"group":"opus_Vv36ne_group","overflow":"opus_Vv36ne_overflow","item":"opus_Vv36ne_item"};
14198
+
14199
+ // ../../components/AvatarGroup/AvatarGroup.tsx
14200
+ var import_jsx_runtime80 = require("react/jsx-runtime");
14201
+ function AvatarGroup({ items, max = 4, size = "md" }) {
14202
+ const safeMax = Math.max(1, Math.round(max));
14203
+ const visible = items.slice(0, safeMax);
14204
+ const overflow = Math.max(0, items.length - visible.length);
14205
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { "aria-label": `${items.length} people`, className: AvatarGroup_default.group, role: "group", children: [
14206
+ visible.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: AvatarGroup_default.item, style: { zIndex: visible.length - index }, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Avatar, { name: item.name, size, src: item.src }) }, `${item.name}-${index}`)),
14207
+ overflow > 0 ? /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
14208
+ "span",
14209
+ {
14210
+ "aria-label": `${overflow} more`,
14211
+ className: AvatarGroup_default.overflow,
14212
+ "data-size": size,
14213
+ children: [
14214
+ "+",
14215
+ overflow
14216
+ ]
14217
+ }
14218
+ ) : null
14219
+ ] });
14220
+ }
14221
+
14222
+ // ../../components/Statistic/Statistic.module.css
14223
+ var Statistic_default = {"label":"opus_vCN1bv_label","root":"opus_vCN1bv_root","value":"opus_vCN1bv_value","affix":"opus_vCN1bv_affix","trend":"opus_vCN1bv_trend"};
14224
+
14225
+ // ../../components/Statistic/Statistic.tsx
14226
+ var import_jsx_runtime81 = require("react/jsx-runtime");
14227
+ function Statistic({
14228
+ label,
14229
+ prefix,
14230
+ suffix,
14231
+ trend,
14232
+ trendLabel,
14233
+ value
14234
+ }) {
14235
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: Statistic_default.root, children: [
14236
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("p", { className: Statistic_default.label, children: label }),
14237
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("p", { className: Statistic_default.value, children: [
14238
+ prefix ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: Statistic_default.affix, children: prefix }) : null,
14239
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { children: value }),
14240
+ suffix ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: Statistic_default.affix, children: suffix }) : null
14241
+ ] }),
14242
+ trend && trendLabel ? /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("p", { className: Statistic_default.trend, "data-trend": trend, children: [
14243
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { "aria-hidden": "true", children: trend === "up" ? "\u2191" : trend === "down" ? "\u2193" : "\u2192" }),
14244
+ trendLabel
14245
+ ] }) : null
14246
+ ] });
14247
+ }
14248
+
14249
+ // ../../components/List/List.module.css
14250
+ var List_default = {"description":"opus_ys3xlo_description","meta":"opus_ys3xlo_meta","icon":"opus_ys3xlo_icon","item":"opus_ys3xlo_item","list":"opus_ys3xlo_list","title":"opus_ys3xlo_title","head":"opus_ys3xlo_head","body":"opus_ys3xlo_body"};
14251
+
14252
+ // ../../components/List/List.tsx
14253
+ var import_jsx_runtime82 = require("react/jsx-runtime");
14254
+ function List({ density = "comfortable", items, ordered = false }) {
14255
+ const Tag = ordered ? "ol" : "ul";
14256
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Tag, { className: List_default.list, "data-density": density, "data-ordered": ordered ? "true" : "false", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("li", { className: List_default.item, children: [
14257
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { "aria-hidden": "true", className: List_default.icon, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(CatalogIcon, { iconName: item.icon }) }) : null,
14258
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: List_default.body, children: [
14259
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: List_default.head, children: [
14260
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: List_default.title, children: item.title }),
14261
+ item.meta ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: List_default.meta, children: item.meta }) : null
14262
+ ] }),
14263
+ item.description ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("p", { className: List_default.description, children: item.description }) : null
14264
+ ] })
14265
+ ] }, `${item.title}-${index}`)) });
14266
+ }
14267
+
14268
+ // ../../components/DescriptionList/DescriptionList.module.css
14269
+ var DescriptionList_default = {"list":"opus_FY8OsC_list","term":"opus_FY8OsC_term","row":"opus_FY8OsC_row","details":"opus_FY8OsC_details"};
14270
+
14271
+ // ../../components/DescriptionList/DescriptionList.tsx
14272
+ var import_jsx_runtime83 = require("react/jsx-runtime");
14273
+ function DescriptionList({
14274
+ items,
14275
+ layout = "stacked"
14276
+ }) {
14277
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("dl", { className: DescriptionList_default.list, "data-layout": layout, children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: DescriptionList_default.row, children: [
14278
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("dt", { className: DescriptionList_default.term, children: item.term }),
14279
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("dd", { className: DescriptionList_default.details, children: item.details })
14280
+ ] }, `${item.term}-${index}`)) });
14281
+ }
14282
+
14283
+ // ../../components/PropertyGrid/PropertyGrid.tsx
14284
+ var import_react46 = require("react");
14285
+
14286
+ // ../../components/PropertyGrid/PropertyGrid.module.css
14287
+ var PropertyGrid_default = {"row":"opus_Bnfsue_row","valueCell":"opus_Bnfsue_valueCell","copy":"opus_Bnfsue_copy","value":"opus_Bnfsue_value","grid":"opus_Bnfsue_grid","label":"opus_Bnfsue_label"};
14288
+
14289
+ // ../../components/PropertyGrid/PropertyGrid.tsx
14290
+ var import_jsx_runtime84 = require("react/jsx-runtime");
14291
+ function PropertyGrid({ items }) {
14292
+ const [copiedIndex, setCopiedIndex] = (0, import_react46.useState)(null);
14293
+ async function copyValue(value, index) {
14294
+ try {
14295
+ await navigator.clipboard.writeText(value);
14296
+ setCopiedIndex(index);
14297
+ window.setTimeout(() => setCopiedIndex((current) => current === index ? null : current), 1200);
14298
+ } catch (e) {
14299
+ setCopiedIndex(null);
14300
+ }
14301
+ }
14302
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: PropertyGrid_default.grid, role: "table", "aria-label": "Properties", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: PropertyGrid_default.row, role: "row", children: [
14303
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: PropertyGrid_default.label, role: "rowheader", children: item.label }),
14304
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: PropertyGrid_default.valueCell, role: "cell", children: [
14305
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: PropertyGrid_default.value, children: item.value }),
14306
+ item.copyable ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
14307
+ "button",
14308
+ {
14309
+ "aria-label": `Copy ${item.label}`,
14310
+ className: PropertyGrid_default.copy,
14311
+ onClick: () => void copyValue(item.value, index),
14312
+ type: "button",
14313
+ children: copiedIndex === index ? "Copied" : "Copy"
14314
+ }
14315
+ ) : null
14316
+ ] })
14317
+ ] }, `${item.label}-${index}`)) });
14318
+ }
14319
+
14320
+ // ../../components/ContentTimeline/ContentTimeline.module.css
14321
+ var ContentTimeline_default = {"body":"opus_vApy-v_body","list":"opus_vApy-v_list","description":"opus_vApy-v_description","line":"opus_vApy-v_line","time":"opus_vApy-v_time","title":"opus_vApy-v_title","dot":"opus_vApy-v_dot","item":"opus_vApy-v_item","head":"opus_vApy-v_head","rail":"opus_vApy-v_rail"};
14322
+
14323
+ // ../../components/ContentTimeline/ContentTimeline.tsx
14324
+ var import_jsx_runtime85 = require("react/jsx-runtime");
14325
+ function ContentTimeline({ items }) {
14326
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("ol", { className: ContentTimeline_default.list, children: items.map((item, index) => {
14327
+ var _a2;
14328
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
14329
+ "li",
14330
+ {
14331
+ className: ContentTimeline_default.item,
14332
+ "data-status": (_a2 = item.status) != null ? _a2 : "default",
14333
+ children: [
14334
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { "aria-hidden": "true", className: ContentTimeline_default.rail, children: [
14335
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: ContentTimeline_default.dot }),
14336
+ index < items.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: ContentTimeline_default.line }) : null
14337
+ ] }),
14338
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: ContentTimeline_default.body, children: [
14339
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: ContentTimeline_default.head, children: [
14340
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("h3", { className: ContentTimeline_default.title, children: item.title }),
14341
+ item.time ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("time", { className: ContentTimeline_default.time, children: item.time }) : null
14342
+ ] }),
14343
+ item.description ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("p", { className: ContentTimeline_default.description, children: item.description }) : null
14344
+ ] })
14345
+ ]
14346
+ },
14347
+ `${item.title}-${index}`
14348
+ );
14349
+ }) });
14350
+ }
14351
+
14352
+ // ../../components/TreeView/TreeView.tsx
14353
+ var import_react47 = require("react");
14354
+
14355
+ // ../../components/TreeView/TreeView.module.css
14356
+ var TreeView_default = {"tree":"opus_NlkzXy_tree","leafMark":"opus_NlkzXy_leafMark","children":"opus_NlkzXy_children","node":"opus_NlkzXy_node","row":"opus_NlkzXy_row","label":"opus_NlkzXy_label","toggle":"opus_NlkzXy_toggle"};
14357
+
14358
+ // ../../components/TreeView/TreeView.tsx
14359
+ var import_jsx_runtime86 = require("react/jsx-runtime");
14360
+ function collectExpandableIds(nodes) {
14361
+ var _a2;
14362
+ const ids = [];
14363
+ for (const node of nodes) {
14364
+ if ((_a2 = node.children) == null ? void 0 : _a2.length) {
14365
+ ids.push(node.id);
14366
+ ids.push(...collectExpandableIds(node.children));
14367
+ }
14368
+ }
14369
+ return ids;
14370
+ }
14371
+ function TreeNode({
14372
+ depth,
14373
+ expandedIds,
14374
+ node,
14375
+ onToggle
14376
+ }) {
14377
+ var _a2;
14378
+ const hasChildren = Boolean((_a2 = node.children) == null ? void 0 : _a2.length);
14379
+ const expanded = expandedIds.has(node.id);
14380
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("li", { className: TreeView_default.node, children: [
14381
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: TreeView_default.row, style: { paddingLeft: `${depth * 16 + 8}px` }, children: [
14382
+ hasChildren ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
14383
+ "button",
14384
+ {
14385
+ "aria-expanded": expanded,
14386
+ "aria-label": `${expanded ? "Collapse" : "Expand"} ${node.label}`,
14387
+ className: TreeView_default.toggle,
14388
+ onClick: () => onToggle(node.id),
14389
+ type: "button",
14390
+ children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { "aria-hidden": "true", children: expanded ? "\u25BE" : "\u25B8" })
14391
+ }
14392
+ ) : /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { "aria-hidden": "true", className: TreeView_default.leafMark }),
14393
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: TreeView_default.label, children: node.label })
14394
+ ] }),
14395
+ hasChildren && expanded ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("ul", { className: TreeView_default.children, children: node.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
14396
+ TreeNode,
14397
+ {
14398
+ depth: depth + 1,
14399
+ expandedIds,
14400
+ node: child,
14401
+ onToggle
14402
+ },
14403
+ child.id
14404
+ )) }) : null
14405
+ ] });
14406
+ }
14407
+ function TreeView({ defaultExpandedIds, nodes }) {
14408
+ const fallbackIds = (0, import_react47.useMemo)(() => collectExpandableIds(nodes).slice(0, 2), [nodes]);
14409
+ const [expandedIds, setExpandedIds] = (0, import_react47.useState)(
14410
+ () => new Set(defaultExpandedIds != null ? defaultExpandedIds : fallbackIds)
14411
+ );
14412
+ function toggle(id) {
14413
+ setExpandedIds((current) => {
14414
+ const next = new Set(current);
14415
+ if (next.has(id)) {
14416
+ next.delete(id);
14417
+ } else {
14418
+ next.add(id);
14419
+ }
14420
+ return next;
14421
+ });
14422
+ }
14423
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("ul", { "aria-label": "Tree", className: TreeView_default.tree, role: "tree", children: nodes.map((node) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
14424
+ TreeNode,
14425
+ {
14426
+ depth: 0,
14427
+ expandedIds,
14428
+ node,
14429
+ onToggle: toggle
14430
+ },
14431
+ node.id
14432
+ )) });
14433
+ }
14434
+
14435
+ // ../../components/MasonryGrid/MasonryGrid.module.css
14436
+ var MasonryGrid_default = {"card":"opus_Fxxd7-_card","body":"opus_Fxxd7-_body","grid":"opus_Fxxd7-_grid","title":"opus_Fxxd7-_title"};
14437
+
14438
+ // ../../components/MasonryGrid/MasonryGrid.tsx
14439
+ var import_jsx_runtime87 = require("react/jsx-runtime");
14440
+ function MasonryGrid({ columns = 3, gap = 12, items }) {
14441
+ const safeColumns = Math.min(Math.max(Math.round(columns), 2), 4);
14442
+ const safeGap = Math.min(Math.max(Math.round(gap), 8), 28);
14443
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
14444
+ "div",
14445
+ {
14446
+ className: MasonryGrid_default.grid,
14447
+ style: {
14448
+ columnCount: safeColumns,
14449
+ columnGap: `${safeGap}px`
14450
+ },
14451
+ children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
14452
+ "article",
14453
+ {
14454
+ className: MasonryGrid_default.card,
14455
+ style: {
14456
+ marginBottom: `${safeGap}px`,
14457
+ minHeight: item.height ? `${item.height}px` : void 0
14458
+ },
14459
+ children: [
14460
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("h3", { className: MasonryGrid_default.title, children: item.title }),
14461
+ item.body ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("p", { className: MasonryGrid_default.body, children: item.body }) : null
14462
+ ]
14463
+ },
14464
+ `${item.title}-${index}`
14465
+ ))
14466
+ }
14467
+ );
14468
+ }
14469
+
14470
+ // ../../components/JsonViewer/JsonViewer.tsx
14471
+ var import_react48 = require("react");
14472
+
14473
+ // ../../components/JsonViewer/JsonViewer.module.css
14474
+ var JsonViewer_default = {"block":"opus_uLDgXq_block","summary":"opus_uLDgXq_summary","children":"opus_uLDgXq_children","toggleLine":"opus_uLDgXq_toggleLine","line":"opus_uLDgXq_line","boolean":"opus_uLDgXq_boolean","null":"opus_uLDgXq_null","key":"opus_uLDgXq_key","string":"opus_uLDgXq_string","root":"opus_uLDgXq_root","chevron":"opus_uLDgXq_chevron","number":"opus_uLDgXq_number"};
14475
+
14476
+ // ../../components/JsonViewer/JsonViewer.tsx
14477
+ var import_jsx_runtime88 = require("react/jsx-runtime");
14478
+ function isPlainObject(value) {
14479
+ return typeof value === "object" && value !== null && !Array.isArray(value);
14480
+ }
14481
+ function PrimitiveValue({ value }) {
14482
+ if (value === null) {
14483
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: JsonViewer_default.null, children: "null" });
14484
+ }
14485
+ if (typeof value === "string") {
14486
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: JsonViewer_default.string, children: [
14487
+ '"',
14488
+ value,
14489
+ '"'
14490
+ ] });
14491
+ }
14492
+ if (typeof value === "number") {
14493
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: JsonViewer_default.number, children: value });
14494
+ }
14495
+ if (typeof value === "boolean") {
14496
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: JsonViewer_default.boolean, children: String(value) });
14497
+ }
14498
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: JsonViewer_default.string, children: String(value) });
14499
+ }
14500
+ function JsonNode({ collapsedDepth, depth, name, value }) {
14501
+ const isExpandable = Array.isArray(value) || isPlainObject(value);
14502
+ const [open, setOpen] = (0, import_react48.useState)(depth < collapsedDepth);
14503
+ if (!isExpandable) {
14504
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: JsonViewer_default.line, style: { paddingLeft: `${depth * 14}px` }, children: [
14505
+ name !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: JsonViewer_default.key, children: [
14506
+ name,
14507
+ ": "
14508
+ ] }) : null,
14509
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(PrimitiveValue, { value })
14510
+ ] });
14511
+ }
14512
+ const entries = Array.isArray(value) ? value.map((entry, index) => [String(index), entry]) : Object.entries(value);
14513
+ const summary = Array.isArray(value) ? `Array(${value.length})` : `Object(${entries.length})`;
14514
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: JsonViewer_default.block, children: [
14515
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
14516
+ "button",
14517
+ {
14518
+ "aria-expanded": open,
14519
+ className: JsonViewer_default.toggleLine,
14520
+ onClick: () => setOpen((current) => !current),
14521
+ style: { paddingLeft: `${depth * 14}px` },
14522
+ type: "button",
14523
+ children: [
14524
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { "aria-hidden": "true", className: JsonViewer_default.chevron, children: open ? "\u25BE" : "\u25B8" }),
14525
+ name !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: JsonViewer_default.key, children: [
14526
+ name,
14527
+ ": "
14528
+ ] }) : null,
14529
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: JsonViewer_default.summary, children: summary })
14530
+ ]
14531
+ }
14532
+ ),
14533
+ open ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: JsonViewer_default.children, children: entries.map(([childName, childValue]) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
14534
+ JsonNode,
14535
+ {
14536
+ collapsedDepth,
14537
+ depth: depth + 1,
14538
+ name: childName,
14539
+ value: childValue
14540
+ },
14541
+ childName
14542
+ )) }) : null
14543
+ ] });
14544
+ }
14545
+ function JsonViewer({ collapsedDepth = 1, value }) {
14546
+ const parsed = (0, import_react48.useMemo)(() => value, [value]);
14547
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: JsonViewer_default.root, role: "tree", children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(JsonNode, { collapsedDepth: Math.max(0, collapsedDepth), depth: 0, value: parsed }) });
14548
+ }
14549
+
14550
+ // ../../components/Icon/Icon.tsx
14551
+ var import_react_fontawesome11 = require("@fortawesome/react-fontawesome");
14552
+
14553
+ // ../../components/Icon/Icon.module.css
14554
+ var Icon_default = {"icon":"opus_7ASn4M_icon"};
14555
+
14556
+ // ../../components/Icon/Icon.tsx
14557
+ var import_jsx_runtime89 = require("react/jsx-runtime");
14558
+ function Icon({ label, name, size = "md", tone = "default" }) {
14559
+ const option = getFontAwesomeIconOption(name);
14560
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
14561
+ "span",
14562
+ {
14563
+ "aria-hidden": label ? void 0 : true,
14564
+ "aria-label": label,
14565
+ className: Icon_default.icon,
14566
+ "data-size": size,
14567
+ "data-tone": tone,
14568
+ role: label ? "img" : void 0,
14569
+ children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_react_fontawesome11.FontAwesomeIcon, { icon: option.icon })
14570
+ }
14571
+ );
14572
+ }
14573
+
14574
+ // ../../components/Spinner/Spinner.module.css
14575
+ var Spinner_default = {"spinner":"opus_g5cd4Q_spinner","ring":"opus_g5cd4Q_ring","opus-spinner-rotate":"opus_g5cd4Q_opus-spinner-rotate"};
14576
+
14577
+ // ../../components/Spinner/Spinner.tsx
14578
+ var import_jsx_runtime90 = require("react/jsx-runtime");
14579
+ function Spinner({ label = "Loading", size = "md", tone = "accent" }) {
14580
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
14581
+ "span",
14582
+ {
14583
+ "aria-label": label,
14584
+ className: Spinner_default.spinner,
14585
+ "data-size": size,
14586
+ "data-tone": tone,
14587
+ role: "status",
14588
+ children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { "aria-hidden": "true", className: Spinner_default.ring })
14589
+ }
14590
+ );
14591
+ }
14592
+
14593
+ // ../../components/Portal/Portal.tsx
14594
+ var import_react49 = require("react");
14595
+ var import_react_dom5 = require("react-dom");
14596
+ var import_jsx_runtime91 = require("react/jsx-runtime");
14597
+ var PortalHostContext = (0, import_react49.createContext)({ container: null });
14598
+ function usePortalHost() {
14599
+ return (0, import_react49.useContext)(PortalHostContext);
14600
+ }
14601
+ function PortalHost({ children, id = "opus-portal-host" }) {
14602
+ const [container, setContainer] = (0, import_react49.useState)(null);
14603
+ (0, import_react49.useEffect)(() => {
14604
+ let host = document.getElementById(id);
14605
+ let created = false;
14606
+ if (!host) {
14607
+ host = document.createElement("div");
14608
+ host.id = id;
14609
+ document.body.appendChild(host);
14610
+ created = true;
14611
+ }
14612
+ setContainer(host);
14613
+ return () => {
14614
+ if (created && (host == null ? void 0 : host.parentNode)) {
14615
+ host.parentNode.removeChild(host);
14616
+ }
14617
+ };
14618
+ }, [id]);
14619
+ const value = (0, import_react49.useMemo)(() => ({ container }), [container]);
14620
+ return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(PortalHostContext.Provider, { value, children });
14621
+ }
14622
+ function Portal({ children, container, disabled = false }) {
14623
+ var _a2;
14624
+ const host = usePortalHost();
14625
+ const [fallback, setFallback] = (0, import_react49.useState)(null);
14626
+ (0, import_react49.useEffect)(() => {
14627
+ setFallback(document.body);
14628
+ }, []);
14629
+ if (disabled) {
14630
+ return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(import_jsx_runtime91.Fragment, { children });
14631
+ }
14632
+ const target = (_a2 = container != null ? container : host.container) != null ? _a2 : fallback;
14633
+ if (!target) {
14634
+ return null;
14635
+ }
14636
+ return (0, import_react_dom5.createPortal)(children, target);
14637
+ }
14638
+
14639
+ // ../../components/VisuallyHidden/VisuallyHidden.module.css
14640
+ var VisuallyHidden_default = {"hidden":"opus_DIv7wy_hidden"};
14641
+
14642
+ // ../../components/VisuallyHidden/VisuallyHidden.tsx
14643
+ var import_jsx_runtime92 = require("react/jsx-runtime");
14644
+ function VisuallyHidden({ as = "span", children }) {
14645
+ const Tag = as;
14646
+ return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Tag, { className: VisuallyHidden_default.hidden, children });
14647
+ }
14648
+
14649
+ // ../../components/FocusTrap/FocusTrap.tsx
14650
+ var import_react50 = require("react");
14651
+
14652
+ // ../../components/FocusTrap/FocusTrap.module.css
14653
+ var FocusTrap_default = {"trap":"opus_fJckCZ_trap"};
14654
+
14655
+ // ../../components/FocusTrap/FocusTrap.tsx
14656
+ var import_jsx_runtime93 = require("react/jsx-runtime");
14657
+ function FocusTrap({
14658
+ active = true,
14659
+ children,
14660
+ initialFocusRef,
14661
+ restoreFocus = true
14662
+ }) {
14663
+ const containerRef = (0, import_react50.useRef)(null);
14664
+ const previouslyFocusedRef = (0, import_react50.useRef)(null);
14665
+ (0, import_react50.useEffect)(() => {
14666
+ if (!active) {
14667
+ return;
14668
+ }
14669
+ previouslyFocusedRef.current = document.activeElement;
14670
+ const frame = window.requestAnimationFrame(() => {
14671
+ var _a2;
14672
+ const preferred = initialFocusRef == null ? void 0 : initialFocusRef.current;
14673
+ if (preferred) {
14674
+ preferred.focus();
14675
+ return;
14676
+ }
14677
+ const container = containerRef.current;
14678
+ if (!container) {
14679
+ return;
14680
+ }
14681
+ (_a2 = getFocusableElements(container)[0]) == null ? void 0 : _a2.focus();
14682
+ });
14683
+ return () => {
14684
+ var _a2, _b2;
14685
+ window.cancelAnimationFrame(frame);
14686
+ if (restoreFocus) {
14687
+ (_b2 = (_a2 = previouslyFocusedRef.current) == null ? void 0 : _a2.focus) == null ? void 0 : _b2.call(_a2);
14688
+ }
14689
+ };
14690
+ }, [active, initialFocusRef, restoreFocus]);
14691
+ (0, import_react50.useEffect)(() => {
14692
+ if (!active) {
14693
+ return;
14694
+ }
14695
+ const onKeyDown = (event) => {
14696
+ if (event.key !== "Tab") {
14697
+ return;
14698
+ }
14699
+ const container = containerRef.current;
14700
+ if (!container) {
14701
+ return;
14702
+ }
14703
+ const focusable = getFocusableElements(container);
14704
+ if (!focusable.length) {
14705
+ event.preventDefault();
14706
+ return;
14707
+ }
14708
+ const first = focusable[0];
14709
+ const last = focusable[focusable.length - 1];
14710
+ const activeElement = document.activeElement;
14711
+ if (event.shiftKey) {
14712
+ if (activeElement === first || !container.contains(activeElement)) {
14713
+ event.preventDefault();
14714
+ last.focus();
14715
+ }
14716
+ return;
14717
+ }
14718
+ if (activeElement === last || !container.contains(activeElement)) {
14719
+ event.preventDefault();
14720
+ first.focus();
14721
+ }
14722
+ };
14723
+ document.addEventListener("keydown", onKeyDown);
14724
+ return () => document.removeEventListener("keydown", onKeyDown);
14725
+ }, [active]);
14726
+ return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: FocusTrap_default.trap, "data-active": active, ref: containerRef, children });
14727
+ }
14728
+
14729
+ // ../../components/KeyboardShortcut/KeyboardShortcut.module.css
14730
+ var KeyboardShortcut_default = {"plus":"opus_pZh5vX_plus","shortcut":"opus_pZh5vX_shortcut","key":"opus_pZh5vX_key"};
14731
+
14732
+ // ../../components/KeyboardShortcut/KeyboardShortcut.tsx
14733
+ var import_jsx_runtime94 = require("react/jsx-runtime");
14734
+ function KeyboardShortcut({ keys, size = "md" }) {
14735
+ return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("kbd", { "aria-label": keys.join(" + "), className: KeyboardShortcut_default.shortcut, "data-size": size, children: keys.map((key, index) => /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("span", { children: [
14736
+ index > 0 ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { "aria-hidden": "true", className: KeyboardShortcut_default.plus, children: "+" }) : null,
14737
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: KeyboardShortcut_default.key, children: key })
14738
+ ] }, `${key}-${index}`)) });
14739
+ }
14740
+
14741
+ // ../../components/HotkeyManager/HotkeyManager.tsx
14742
+ var import_react51 = require("react");
14743
+ var import_jsx_runtime95 = require("react/jsx-runtime");
14744
+ var HotkeyManagerContext = (0, import_react51.createContext)(null);
14745
+ function matchesCombo(event, combo) {
14746
+ const key = event.key.length === 1 ? event.key.toLowerCase() : event.key;
14747
+ const expected = combo.key.length === 1 ? combo.key.toLowerCase() : combo.key;
14748
+ return key === expected && Boolean(combo.meta) === event.metaKey && Boolean(combo.ctrl) === event.ctrlKey && Boolean(combo.alt) === event.altKey && Boolean(combo.shift) === event.shiftKey;
14749
+ }
14750
+ function shortcutsEqual(a, b) {
14751
+ if (a.length !== b.length) {
14752
+ return false;
14753
+ }
14754
+ return a.every((combo, index) => {
14755
+ const other = b[index];
14756
+ return combo.id === other.id && combo.key === other.key && Boolean(combo.meta) === Boolean(other.meta) && Boolean(combo.ctrl) === Boolean(other.ctrl) && Boolean(combo.alt) === Boolean(other.alt) && Boolean(combo.shift) === Boolean(other.shift) && combo.enabled === other.enabled && combo.description === other.description;
14757
+ });
14758
+ }
14759
+ function HotkeyManager({ children, enabled = true }) {
14760
+ const handlersRef = (0, import_react51.useRef)(/* @__PURE__ */ new Map());
14761
+ const [shortcuts, setShortcuts] = (0, import_react51.useState)([]);
14762
+ const syncShortcuts = (0, import_react51.useCallback)(() => {
14763
+ const next = Array.from(handlersRef.current.values()).map((entry) => entry.combo);
14764
+ setShortcuts((current) => shortcutsEqual(current, next) ? current : next);
14765
+ }, []);
14766
+ const register = (0, import_react51.useCallback)(
14767
+ (combo, handler) => {
14768
+ handlersRef.current.set(combo.id, { combo, handler });
14769
+ syncShortcuts();
14770
+ return () => {
14771
+ handlersRef.current.delete(combo.id);
14772
+ syncShortcuts();
14773
+ };
14774
+ },
14775
+ [syncShortcuts]
14776
+ );
14777
+ (0, import_react51.useEffect)(() => {
14778
+ if (!enabled) {
14779
+ return;
14780
+ }
14781
+ const onKeyDown = (event) => {
14782
+ var _a2;
14783
+ const target = event.target;
14784
+ const tag = (_a2 = target == null ? void 0 : target.tagName) == null ? void 0 : _a2.toLowerCase();
14785
+ if (tag === "input" || tag === "textarea" || (target == null ? void 0 : target.isContentEditable)) {
14786
+ return;
14787
+ }
14788
+ for (const entry of handlersRef.current.values()) {
14789
+ if (entry.combo.enabled === false) {
14790
+ continue;
14791
+ }
14792
+ if (matchesCombo(event, entry.combo)) {
14793
+ event.preventDefault();
14794
+ entry.handler();
14795
+ break;
14796
+ }
14797
+ }
14798
+ };
14799
+ window.addEventListener("keydown", onKeyDown);
14800
+ return () => window.removeEventListener("keydown", onKeyDown);
14801
+ }, [enabled]);
14802
+ const value = (0, import_react51.useMemo)(() => ({ register, shortcuts }), [register, shortcuts]);
14803
+ return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(HotkeyManagerContext.Provider, { value, children });
14804
+ }
14805
+ function useHotkey(combo, handler) {
14806
+ const context = (0, import_react51.useContext)(HotkeyManagerContext);
14807
+ const register = context == null ? void 0 : context.register;
14808
+ const handlerRef = (0, import_react51.useRef)(handler);
14809
+ handlerRef.current = handler;
14810
+ const { alt, ctrl, description, enabled, id, key, meta, shift } = combo;
14811
+ (0, import_react51.useEffect)(() => {
14812
+ if (!register) {
14813
+ return;
14814
+ }
14815
+ return register(
14816
+ { alt, ctrl, description, enabled, id, key, meta, shift },
14817
+ () => {
14818
+ handlerRef.current();
14819
+ }
14820
+ );
14821
+ }, [alt, ctrl, description, enabled, id, key, meta, register, shift]);
14822
+ }
14823
+ function useHotkeyManager() {
14824
+ const context = (0, import_react51.useContext)(HotkeyManagerContext);
14825
+ if (!context) {
14826
+ throw new Error("useHotkeyManager must be used within HotkeyManager");
14827
+ }
14828
+ return context;
14829
+ }
14830
+
14831
+ // ../../components/CopyButton/CopyButton.tsx
14832
+ var import_react52 = require("react");
14833
+
14834
+ // ../../components/CopyButton/CopyButton.module.css
14835
+ var CopyButton_default = {"wrap":"opus_Ij6tWr_wrap"};
14836
+
14837
+ // ../../components/CopyButton/CopyButton.tsx
14838
+ var import_jsx_runtime96 = require("react/jsx-runtime");
14839
+ async function writeClipboard(value) {
14840
+ var _a2;
14841
+ if ((_a2 = navigator.clipboard) == null ? void 0 : _a2.writeText) {
14842
+ await navigator.clipboard.writeText(value);
14843
+ return;
14844
+ }
14845
+ const textarea = document.createElement("textarea");
14846
+ textarea.value = value;
14847
+ textarea.setAttribute("readonly", "");
14848
+ textarea.style.position = "fixed";
14849
+ textarea.style.left = "-9999px";
14850
+ document.body.appendChild(textarea);
14851
+ textarea.select();
14852
+ document.execCommand("copy");
14853
+ document.body.removeChild(textarea);
14854
+ }
14855
+ function CopyButton({
14856
+ children,
14857
+ copiedLabel = "Copied",
14858
+ label = "Copy",
14859
+ resetMs = 1600,
14860
+ value,
14861
+ variant = "secondary",
14862
+ onCopied
14863
+ }) {
14864
+ const [copied, setCopied] = (0, import_react52.useState)(false);
14865
+ (0, import_react52.useEffect)(() => {
14866
+ if (!copied) {
14867
+ return;
14868
+ }
14869
+ const timer = window.setTimeout(() => setCopied(false), resetMs);
14870
+ return () => window.clearTimeout(timer);
14871
+ }, [copied, resetMs]);
14872
+ const handleCopy = (0, import_react52.useCallback)(async () => {
14873
+ try {
14874
+ await writeClipboard(value);
14875
+ setCopied(true);
14876
+ onCopied == null ? void 0 : onCopied();
14877
+ } catch (e) {
14878
+ setCopied(false);
14879
+ }
14880
+ }, [onCopied, value]);
14881
+ return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: CopyButton_default.wrap, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Button, { onClick: handleCopy, type: "button", variant, children: children != null ? children : copied ? copiedLabel : label }) });
14882
+ }
14883
+
14884
+ // ../../components/Clipboard/Clipboard.tsx
14885
+ var import_react53 = require("react");
14886
+ var import_jsx_runtime97 = require("react/jsx-runtime");
14887
+ var ClipboardContext = (0, import_react53.createContext)(null);
14888
+ async function fallbackWrite(value) {
14889
+ const textarea = document.createElement("textarea");
14890
+ textarea.value = value;
14891
+ textarea.setAttribute("readonly", "");
14892
+ textarea.style.position = "fixed";
14893
+ textarea.style.left = "-9999px";
14894
+ document.body.appendChild(textarea);
14895
+ textarea.select();
14896
+ document.execCommand("copy");
14897
+ document.body.removeChild(textarea);
14898
+ }
14899
+ function ClipboardProvider({ children }) {
14900
+ const [lastCopied, setLastCopied] = (0, import_react53.useState)(null);
14901
+ const writeText = (0, import_react53.useCallback)(async (value2) => {
14902
+ var _a2;
14903
+ if ((_a2 = navigator.clipboard) == null ? void 0 : _a2.writeText) {
14904
+ await navigator.clipboard.writeText(value2);
14905
+ } else {
14906
+ await fallbackWrite(value2);
14907
+ }
14908
+ setLastCopied(value2);
14909
+ }, []);
14910
+ const readText = (0, import_react53.useCallback)(async () => {
14911
+ var _a2;
14912
+ if ((_a2 = navigator.clipboard) == null ? void 0 : _a2.readText) {
14913
+ return navigator.clipboard.readText();
14914
+ }
14915
+ return lastCopied != null ? lastCopied : "";
14916
+ }, [lastCopied]);
14917
+ const value = (0, import_react53.useMemo)(
14918
+ () => ({ lastCopied, readText, writeText }),
14919
+ [lastCopied, readText, writeText]
14920
+ );
14921
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(ClipboardContext.Provider, { value, children });
14922
+ }
14923
+ function useClipboard() {
14924
+ const context = (0, import_react53.useContext)(ClipboardContext);
14925
+ if (!context) {
14926
+ throw new Error("useClipboard must be used within ClipboardProvider");
14927
+ }
14928
+ return context;
14929
+ }
14930
+ function Clipboard({ children }) {
14931
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(ClipboardProvider, { children });
14932
+ }
14933
+
14934
+ // ../../components/ThemeSwitcher/ThemeSwitcher.tsx
14935
+ var import_jsx_runtime98 = require("react/jsx-runtime");
14936
+ function ThemeSwitcher({
14937
+ id = "opus-theme-switcher",
14938
+ label = "Theme",
14939
+ value,
14940
+ onChange
14941
+ }) {
14942
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
14943
+ ThemeToggleField,
14944
+ {
14945
+ id,
14946
+ label,
14947
+ mode: "flagged",
14948
+ value,
14949
+ onChange
14950
+ }
14951
+ );
14952
+ }
14953
+
14954
+ // ../../components/ResizeObserver/ResizeObserver.tsx
14955
+ var import_react54 = require("react");
14956
+ var import_jsx_runtime99 = require("react/jsx-runtime");
14957
+ function ResizeObserver2({ children, className, onResize }) {
14958
+ const ref = (0, import_react54.useRef)(null);
14959
+ const [size, setSize] = (0, import_react54.useState)({ width: 0, height: 0 });
14960
+ (0, import_react54.useEffect)(() => {
14961
+ const node = ref.current;
14962
+ if (!node || typeof window.ResizeObserver === "undefined") {
14963
+ return;
14964
+ }
14965
+ const observer = new window.ResizeObserver((entries) => {
14966
+ const entry = entries[0];
14967
+ if (!entry) {
14968
+ return;
14969
+ }
14970
+ const next = {
14971
+ width: Math.round(entry.contentRect.width),
14972
+ height: Math.round(entry.contentRect.height)
14973
+ };
14974
+ setSize(next);
14975
+ onResize == null ? void 0 : onResize(next);
14976
+ });
14977
+ observer.observe(node);
14978
+ return () => observer.disconnect();
14979
+ }, [onResize]);
14980
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className, ref, children: children(size) });
14981
+ }
14982
+ function useResizeObserver(targetRef) {
14983
+ const [size, setSize] = (0, import_react54.useState)({ width: 0, height: 0 });
14984
+ (0, import_react54.useEffect)(() => {
14985
+ const node = targetRef.current;
14986
+ if (!node || typeof window.ResizeObserver === "undefined") {
14987
+ return;
14988
+ }
14989
+ const observer = new window.ResizeObserver((entries) => {
14990
+ const entry = entries[0];
14991
+ if (!entry) {
14992
+ return;
14993
+ }
14994
+ setSize({
14995
+ width: Math.round(entry.contentRect.width),
14996
+ height: Math.round(entry.contentRect.height)
14997
+ });
14998
+ });
14999
+ observer.observe(node);
15000
+ return () => observer.disconnect();
15001
+ }, [targetRef]);
15002
+ return size;
15003
+ }
15004
+
15005
+ // ../../components/IntersectionObserver/IntersectionObserver.tsx
15006
+ var import_react55 = require("react");
15007
+ var import_jsx_runtime100 = require("react/jsx-runtime");
15008
+ function IntersectionObserver2({
15009
+ children,
15010
+ className,
15011
+ rootMargin = "0px",
15012
+ threshold = 0.25,
15013
+ onChange
15014
+ }) {
15015
+ const ref = (0, import_react55.useRef)(null);
15016
+ const [isIntersecting, setIsIntersecting] = (0, import_react55.useState)(false);
15017
+ (0, import_react55.useEffect)(() => {
15018
+ const node = ref.current;
15019
+ if (!node || typeof window.IntersectionObserver === "undefined") {
15020
+ return;
15021
+ }
15022
+ const observer = new window.IntersectionObserver(
15023
+ (entries) => {
15024
+ const entry = entries[0];
15025
+ if (!entry) {
15026
+ return;
15027
+ }
15028
+ setIsIntersecting(entry.isIntersecting);
15029
+ onChange == null ? void 0 : onChange(entry.isIntersecting);
15030
+ },
15031
+ { rootMargin, threshold }
15032
+ );
15033
+ observer.observe(node);
15034
+ return () => observer.disconnect();
15035
+ }, [onChange, rootMargin, threshold]);
15036
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className, ref, children: children(isIntersecting) });
15037
+ }
15038
+ function useIntersectionObserver(targetRef, options = {}) {
15039
+ const { rootMargin = "0px", threshold = 0.25 } = options;
15040
+ const [isIntersecting, setIsIntersecting] = (0, import_react55.useState)(false);
15041
+ (0, import_react55.useEffect)(() => {
15042
+ const node = targetRef.current;
15043
+ if (!node || typeof window.IntersectionObserver === "undefined") {
15044
+ return;
15045
+ }
15046
+ const observer = new window.IntersectionObserver(
15047
+ (entries) => {
15048
+ const entry = entries[0];
15049
+ if (!entry) {
15050
+ return;
15051
+ }
15052
+ setIsIntersecting(entry.isIntersecting);
15053
+ },
15054
+ { rootMargin, threshold }
15055
+ );
15056
+ observer.observe(node);
15057
+ return () => observer.disconnect();
15058
+ }, [rootMargin, targetRef, threshold]);
15059
+ return isIntersecting;
15060
+ }
15061
+
15062
+ // ../../components/Sidebar/Sidebar.tsx
15063
+ var import_react56 = require("react");
15064
+
15065
+ // ../../components/Sidebar/Sidebar.module.css
15066
+ var Sidebar_default = {"groupToggle":"opus_4Pogux_groupToggle","groupItems":"opus_4Pogux_groupItems","sidebar":"opus_4Pogux_sidebar","visuallyHidden":"opus_4Pogux_visuallyHidden","group":"opus_4Pogux_group","main":"opus_4Pogux_main","footer":"opus_4Pogux_footer","headerInner":"opus_4Pogux_headerInner","groupLabel":"opus_4Pogux_groupLabel","link":"opus_4Pogux_link","groupChevronOpen":"opus_4Pogux_groupChevronOpen","layout":"opus_4Pogux_layout","groupItemsWrap":"opus_4Pogux_groupItemsWrap","groupChevron":"opus_4Pogux_groupChevron","body":"opus_4Pogux_body","nav":"opus_4Pogux_nav","headerTitle":"opus_4Pogux_headerTitle","header":"opus_4Pogux_header","groupHeader":"opus_4Pogux_groupHeader","linkActive":"opus_4Pogux_linkActive"};
15067
+
15068
+ // ../../components/Sidebar/Sidebar.tsx
15069
+ var import_jsx_runtime101 = require("react/jsx-runtime");
15070
+ var SidebarContext = (0, import_react56.createContext)({
15071
+ collapsed: false,
15072
+ density: "comfortable"
15073
+ });
15074
+ function Sidebar({
15075
+ children,
15076
+ collapsed = false,
15077
+ density = "comfortable",
15078
+ footer,
15079
+ header,
15080
+ side = "left"
15081
+ }) {
15082
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(SidebarContext.Provider, { value: { collapsed, density }, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
15083
+ "aside",
15084
+ {
15085
+ "aria-label": "Sidebar",
15086
+ className: Sidebar_default.sidebar,
15087
+ "data-collapsed": collapsed ? "true" : "false",
15088
+ "data-density": density,
15089
+ "data-side": side,
15090
+ children: [
15091
+ header ? /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: Sidebar_default.header, children: header }) : null,
15092
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: Sidebar_default.body, children }),
15093
+ footer ? /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: Sidebar_default.footer, children: footer }) : null
15094
+ ]
15095
+ }
15096
+ ) });
15097
+ }
15098
+ function SidebarHeader({ children, title }) {
15099
+ const { collapsed } = (0, import_react56.useContext)(SidebarContext);
15100
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: Sidebar_default.headerInner, children: [
15101
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("h2", { className: collapsed ? Sidebar_default.visuallyHidden : Sidebar_default.headerTitle, children: title }),
15102
+ children
15103
+ ] });
15104
+ }
15105
+ function SidebarNav({ "aria-label": ariaLabel, children }) {
15106
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("nav", { "aria-label": ariaLabel, className: Sidebar_default.nav, children });
15107
+ }
15108
+ function SidebarLink({ active = false, children, href, onClick }) {
15109
+ const { collapsed } = (0, import_react56.useContext)(SidebarContext);
15110
+ const className = [Sidebar_default.link, active ? Sidebar_default.linkActive : ""].filter(Boolean).join(" ");
15111
+ const label = typeof children === "string" ? children : null;
15112
+ const content = /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment, { children: [
15113
+ collapsed && label ? /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { "aria-hidden": "true", children: label.charAt(0) }) : null,
15114
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: collapsed ? Sidebar_default.visuallyHidden : void 0, children })
15115
+ ] });
13254
15116
  if (href) {
13255
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("a", { "aria-current": active ? "page" : void 0, className, href, children: content });
15117
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("a", { "aria-current": active ? "page" : void 0, className, href, children: content });
13256
15118
  }
13257
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
15119
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
13258
15120
  "button",
13259
15121
  {
13260
15122
  "aria-current": active ? "page" : void 0,
@@ -13273,16 +15135,16 @@ function createGroupListId(label, id) {
13273
15135
  return slug ? `sidebar-group-${slug}` : "sidebar-group";
13274
15136
  }
13275
15137
  function SidebarGroup({ children, defaultOpen = true, id, label }) {
13276
- const { collapsed } = (0, import_react45.useContext)(SidebarContext);
15138
+ const { collapsed } = (0, import_react56.useContext)(SidebarContext);
13277
15139
  const listId = createGroupListId(label, id);
13278
- const [open, setOpen] = (0, import_react45.useState)(defaultOpen);
15140
+ const [open, setOpen] = (0, import_react56.useState)(defaultOpen);
13279
15141
  if (collapsed) {
13280
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { "aria-label": label, className: Sidebar_default.group, role: "group", children });
15142
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { "aria-label": label, className: Sidebar_default.group, role: "group", children });
13281
15143
  }
13282
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { "aria-label": label, className: Sidebar_default.group, role: "group", children: [
13283
- /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: Sidebar_default.groupHeader, children: [
13284
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: Sidebar_default.groupLabel, children: label }),
13285
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
15144
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { "aria-label": label, className: Sidebar_default.group, role: "group", children: [
15145
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: Sidebar_default.groupHeader, children: [
15146
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: Sidebar_default.groupLabel, children: label }),
15147
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
13286
15148
  "button",
13287
15149
  {
13288
15150
  "aria-controls": listId,
@@ -13291,29 +15153,29 @@ function SidebarGroup({ children, defaultOpen = true, id, label }) {
13291
15153
  className: Sidebar_default.groupToggle,
13292
15154
  onClick: () => setOpen((current) => !current),
13293
15155
  type: "button",
13294
- children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { "aria-hidden": "true", className: open ? Sidebar_default.groupChevronOpen : Sidebar_default.groupChevron })
15156
+ children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { "aria-hidden": "true", className: open ? Sidebar_default.groupChevronOpen : Sidebar_default.groupChevron })
13295
15157
  }
13296
15158
  )
13297
15159
  ] }),
13298
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: Sidebar_default.groupItemsWrap, "data-open": open ? "true" : "false", children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: Sidebar_default.groupItems, id: listId, inert: !open || void 0, children }) })
15160
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: Sidebar_default.groupItemsWrap, "data-open": open ? "true" : "false", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: Sidebar_default.groupItems, id: listId, inert: !open || void 0, children }) })
13299
15161
  ] });
13300
15162
  }
13301
15163
  function SidebarLayout({ children, collapsed = false, main, side = "left" }) {
13302
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: Sidebar_default.layout, "data-collapsed": collapsed ? "true" : "false", "data-side": side, children: [
15164
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: Sidebar_default.layout, "data-collapsed": collapsed ? "true" : "false", "data-side": side, children: [
13303
15165
  side === "left" ? children : null,
13304
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: Sidebar_default.main, children: main }),
15166
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: Sidebar_default.main, children: main }),
13305
15167
  side === "right" ? children : null
13306
15168
  ] });
13307
15169
  }
13308
15170
 
13309
15171
  // ../../components/AccentColorPicker/AccentColorPicker.tsx
13310
- var import_react46 = require("react");
15172
+ var import_react57 = require("react");
13311
15173
 
13312
15174
  // ../../components/AccentColorPicker/AccentColorPicker.module.css
13313
15175
  var AccentColorPicker_default = {"swatches":"opus_scMnrW_swatches","swatch":"opus_scMnrW_swatch"};
13314
15176
 
13315
15177
  // ../../components/AccentColorPicker/AccentColorPicker.tsx
13316
- var import_jsx_runtime78 = require("react/jsx-runtime");
15178
+ var import_jsx_runtime102 = require("react/jsx-runtime");
13317
15179
  var ACCENT_STORAGE_KEY = "opus-components-accent";
13318
15180
  var DEFAULT_ACCENT_COLOR = "#8f6cff";
13319
15181
  var accentColors = [
@@ -13347,8 +15209,8 @@ function applyDocumentAccent(accent) {
13347
15209
  );
13348
15210
  }
13349
15211
  function useAccentPreference() {
13350
- const [accent, setAccentState] = (0, import_react46.useState)(DEFAULT_ACCENT_COLOR);
13351
- (0, import_react46.useEffect)(() => {
15212
+ const [accent, setAccentState] = (0, import_react57.useState)(DEFAULT_ACCENT_COLOR);
15213
+ (0, import_react57.useEffect)(() => {
13352
15214
  const timeout = window.setTimeout(() => {
13353
15215
  const stored = window.localStorage.getItem(ACCENT_STORAGE_KEY);
13354
15216
  if (isAccentColor(stored)) {
@@ -13360,7 +15222,7 @@ function useAccentPreference() {
13360
15222
  }, 0);
13361
15223
  return () => window.clearTimeout(timeout);
13362
15224
  }, []);
13363
- const setAccent = (0, import_react46.useCallback)((next) => {
15225
+ const setAccent = (0, import_react57.useCallback)((next) => {
13364
15226
  if (!isAccentColor(next)) {
13365
15227
  return;
13366
15228
  }
@@ -13368,7 +15230,7 @@ function useAccentPreference() {
13368
15230
  applyDocumentAccent(next);
13369
15231
  window.localStorage.setItem(ACCENT_STORAGE_KEY, next);
13370
15232
  }, []);
13371
- const accentStyle = (0, import_react46.useMemo)(() => createAccentStyle(accent), [accent]);
15233
+ const accentStyle = (0, import_react57.useMemo)(() => createAccentStyle(accent), [accent]);
13372
15234
  return { accent, accentStyle, setAccent };
13373
15235
  }
13374
15236
  function AccentColorPicker({
@@ -13380,7 +15242,7 @@ function AccentColorPicker({
13380
15242
  onChange,
13381
15243
  value
13382
15244
  }) {
13383
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
15245
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
13384
15246
  FieldShell,
13385
15247
  {
13386
15248
  fitContent: true,
@@ -13391,9 +15253,9 @@ function AccentColorPicker({
13391
15253
  labelPosition,
13392
15254
  labelTag: "div",
13393
15255
  mode,
13394
- children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { "aria-labelledby": `${id}-label`, className: AccentColorPicker_default.swatches, role: "radiogroup", children: accentColors.map((option) => {
15256
+ children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { "aria-labelledby": `${id}-label`, className: AccentColorPicker_default.swatches, role: "radiogroup", children: accentColors.map((option) => {
13395
15257
  const selected = value === option.value;
13396
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
15258
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
13397
15259
  "button",
13398
15260
  {
13399
15261
  "aria-checked": selected,
@@ -13414,14 +15276,14 @@ function AccentColorPicker({
13414
15276
  }
13415
15277
 
13416
15278
  // ../../components/IconPicker/IconPicker.tsx
13417
- var import_react47 = require("react");
13418
- var import_react_fontawesome11 = require("@fortawesome/react-fontawesome");
15279
+ var import_react58 = require("react");
15280
+ var import_react_fontawesome12 = require("@fortawesome/react-fontawesome");
13419
15281
 
13420
15282
  // ../../components/IconPicker/IconPicker.module.css
13421
- var IconPicker_default = {"root":"opus_4E-Oa1_root","menu":"opus_4E-Oa1_menu","triggerIcon":"opus_4E-Oa1_triggerIcon","optionIcon":"opus_4E-Oa1_optionIcon","triggerLabel":"opus_4E-Oa1_triggerLabel","chevron":"opus_4E-Oa1_chevron","grid":"opus_4E-Oa1_grid","option":"opus_4E-Oa1_option","trigger":"opus_4E-Oa1_trigger","search":"opus_4E-Oa1_search","empty":"opus_4E-Oa1_empty"};
15283
+ var IconPicker_default = {"grid":"opus_4E-Oa1_grid","triggerLabel":"opus_4E-Oa1_triggerLabel","root":"opus_4E-Oa1_root","triggerIcon":"opus_4E-Oa1_triggerIcon","chevron":"opus_4E-Oa1_chevron","empty":"opus_4E-Oa1_empty","optionIcon":"opus_4E-Oa1_optionIcon","menu":"opus_4E-Oa1_menu","trigger":"opus_4E-Oa1_trigger","search":"opus_4E-Oa1_search","option":"opus_4E-Oa1_option"};
13422
15284
 
13423
15285
  // ../../components/IconPicker/IconPicker.tsx
13424
- var import_jsx_runtime79 = require("react/jsx-runtime");
15286
+ var import_jsx_runtime103 = require("react/jsx-runtime");
13425
15287
  function IconPicker({
13426
15288
  help,
13427
15289
  id,
@@ -13432,14 +15294,14 @@ function IconPicker({
13432
15294
  searchPlaceholder = "Search icons",
13433
15295
  value
13434
15296
  }) {
13435
- const [open, setOpen] = (0, import_react47.useState)(false);
13436
- const [query, setQuery] = (0, import_react47.useState)("");
13437
- const rootRef = (0, import_react47.useRef)(null);
13438
- const searchRef = (0, import_react47.useRef)(null);
13439
- const listboxId = (0, import_react47.useId)();
15297
+ const [open, setOpen] = (0, import_react58.useState)(false);
15298
+ const [query, setQuery] = (0, import_react58.useState)("");
15299
+ const rootRef = (0, import_react58.useRef)(null);
15300
+ const searchRef = (0, import_react58.useRef)(null);
15301
+ const listboxId = (0, import_react58.useId)();
13440
15302
  const selected = getFontAwesomeIconOption(value);
13441
- const filteredIcons = (0, import_react47.useMemo)(() => filterFontAwesomeIcons(query), [query]);
13442
- (0, import_react47.useEffect)(() => {
15303
+ const filteredIcons = (0, import_react58.useMemo)(() => filterFontAwesomeIcons(query), [query]);
15304
+ (0, import_react58.useEffect)(() => {
13443
15305
  if (!open) {
13444
15306
  return;
13445
15307
  }
@@ -13466,8 +15328,8 @@ function IconPicker({
13466
15328
  document.removeEventListener("keydown", handleKeyDown);
13467
15329
  };
13468
15330
  }, [open]);
13469
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(FieldShell, { help, id, label, labelPosition, mode, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: IconPicker_default.root, ref: rootRef, children: [
13470
- /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
15331
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(FieldShell, { help, id, label, labelPosition, mode, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: IconPicker_default.root, ref: rootRef, children: [
15332
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
13471
15333
  "button",
13472
15334
  {
13473
15335
  "aria-controls": open ? listboxId : void 0,
@@ -13478,14 +15340,14 @@ function IconPicker({
13478
15340
  type: "button",
13479
15341
  onClick: () => setOpen((current) => !current),
13480
15342
  children: [
13481
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { "aria-hidden": "true", className: IconPicker_default.triggerIcon, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_react_fontawesome11.FontAwesomeIcon, { icon: selected.icon }) }),
13482
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: IconPicker_default.triggerLabel, children: selected.label })
15343
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { "aria-hidden": "true", className: IconPicker_default.triggerIcon, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_react_fontawesome12.FontAwesomeIcon, { icon: selected.icon }) }),
15344
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { className: IconPicker_default.triggerLabel, children: selected.label })
13483
15345
  ]
13484
15346
  }
13485
15347
  ),
13486
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { "aria-hidden": "true", className: IconPicker_default.chevron }),
13487
- open ? /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: IconPicker_default.menu, children: [
13488
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
15348
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { "aria-hidden": "true", className: IconPicker_default.chevron }),
15349
+ open ? /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: IconPicker_default.menu, children: [
15350
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
13489
15351
  "input",
13490
15352
  {
13491
15353
  "aria-label": searchPlaceholder,
@@ -13497,7 +15359,7 @@ function IconPicker({
13497
15359
  onChange: (event) => setQuery(event.target.value)
13498
15360
  }
13499
15361
  ),
13500
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { className: IconPicker_default.grid, id: listboxId, role: "listbox", children: filteredIcons.length ? filteredIcons.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
15362
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: IconPicker_default.grid, id: listboxId, role: "listbox", children: filteredIcons.length ? filteredIcons.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
13501
15363
  "button",
13502
15364
  {
13503
15365
  "aria-label": entry.label,
@@ -13512,10 +15374,10 @@ function IconPicker({
13512
15374
  setOpen(false);
13513
15375
  setQuery("");
13514
15376
  },
13515
- children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { "aria-hidden": "true", className: IconPicker_default.optionIcon, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_react_fontawesome11.FontAwesomeIcon, { icon: entry.icon }) })
15377
+ children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { "aria-hidden": "true", className: IconPicker_default.optionIcon, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_react_fontawesome12.FontAwesomeIcon, { icon: entry.icon }) })
13516
15378
  },
13517
15379
  entry.iconName
13518
- )) : /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("p", { className: IconPicker_default.empty, children: "No icons match your search." }) })
15380
+ )) : /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("p", { className: IconPicker_default.empty, children: "No icons match your search." }) })
13519
15381
  ] }) : null
13520
15382
  ] }) });
13521
15383
  }
@@ -13525,6 +15387,9 @@ function IconPicker({
13525
15387
  Accordion,
13526
15388
  AccordionGroup,
13527
15389
  Alert,
15390
+ Avatar,
15391
+ AvatarGroup,
15392
+ Badge,
13528
15393
  Button,
13529
15394
  Card,
13530
15395
  Carousel,
@@ -13534,15 +15399,21 @@ function IconPicker({
13534
15399
  CheckboxField,
13535
15400
  ChipInput,
13536
15401
  ChipInputField,
15402
+ Clipboard,
15403
+ ClipboardProvider,
13537
15404
  ColorField,
13538
15405
  CommandPalette,
15406
+ ContentTimeline,
13539
15407
  ContextMenuProvider,
13540
15408
  ContextMenuTarget,
15409
+ CopyButton,
13541
15410
  CountryPickerField,
13542
15411
  DEFAULT_TOAST_DURATION_MS,
13543
15412
  DataGrid,
13544
15413
  DateField,
15414
+ DescriptionList,
13545
15415
  Dialog,
15416
+ Divider,
13546
15417
  Drawer,
13547
15418
  DrawerDefaultActions,
13548
15419
  DropdownMenu,
@@ -13551,12 +15422,20 @@ function IconPicker({
13551
15422
  FieldShell,
13552
15423
  FileField,
13553
15424
  FilterSelectField,
15425
+ FocusTrap,
13554
15426
  Gauge,
13555
15427
  HiddenField,
15428
+ HotkeyManager,
15429
+ Icon,
13556
15430
  IconPicker,
13557
15431
  ImageGallery,
13558
15432
  ImageThumbnail,
15433
+ IntersectionObserver,
15434
+ JsonViewer,
15435
+ KeyboardShortcut,
13559
15436
  Lightbox,
15437
+ List,
15438
+ MasonryGrid,
13560
15439
  MegaMenu,
13561
15440
  MetricTile,
13562
15441
  Modal,
@@ -13572,12 +15451,16 @@ function IconPicker({
13572
15451
  PasswordStrengthField,
13573
15452
  PhoneNumberField,
13574
15453
  Popover,
15454
+ Portal,
15455
+ PortalHost,
13575
15456
  ProgressBar,
13576
15457
  ProgressRing,
15458
+ PropertyGrid,
13577
15459
  Radio,
13578
15460
  RadioGroup,
13579
15461
  RangeField,
13580
15462
  RatingField,
15463
+ ResizeObserver,
13581
15464
  RichTextField,
13582
15465
  Section,
13583
15466
  SegmentedControlField,
@@ -13593,13 +15476,17 @@ function IconPicker({
13593
15476
  SliderRangeField,
13594
15477
  Sparkline,
13595
15478
  Speedometer,
15479
+ Spinner,
13596
15480
  StatCard,
15481
+ Statistic,
13597
15482
  StatusIndicator,
13598
15483
  SwitchField,
13599
15484
  Table,
13600
15485
  Tabs,
13601
15486
  TextAreaField,
13602
15487
  TextField,
15488
+ ThemeProvider,
15489
+ ThemeSwitcher,
13603
15490
  ThemeToggleField,
13604
15491
  Toast,
13605
15492
  ToastProvider,
@@ -13608,7 +15495,9 @@ function IconPicker({
13608
15495
  TopNavigationMenu,
13609
15496
  TransferListField,
13610
15497
  TreeSelectField,
15498
+ TreeView,
13611
15499
  TrendBadge,
15500
+ VisuallyHidden,
13612
15501
  accentColors,
13613
15502
  cartesianSpecializedVariants,
13614
15503
  countryCodeToFlag,
@@ -13623,9 +15512,15 @@ function IconPicker({
13623
15512
  fieldInputAriaProps,
13624
15513
  phoneCountries,
13625
15514
  useAccentPreference,
15515
+ useClipboard,
13626
15516
  useContextMenu,
13627
15517
  useFieldShellAria,
15518
+ useHotkey,
15519
+ useHotkeyManager,
15520
+ useIntersectionObserver,
13628
15521
  useOpusTheme,
15522
+ usePortalHost,
15523
+ useResizeObserver,
13629
15524
  useToast,
13630
15525
  useTopNavigation,
13631
15526
  worldMapRegionIds