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.js CHANGED
@@ -427,7 +427,7 @@ var init_setupFireBarrelScene = __esm({
427
427
  });
428
428
 
429
429
  // ../../components/fields/Button/Button.module.css
430
- 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"};
430
+ 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"};
431
431
 
432
432
  // ../../components/fields/Button/Button.tsx
433
433
  import { jsx } from "react/jsx-runtime";
@@ -459,7 +459,7 @@ import {
459
459
  import { createPortal } from "react-dom";
460
460
 
461
461
  // ../../components/Tooltip/Tooltip.module.css
462
- 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"};
462
+ 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"};
463
463
 
464
464
  // ../../components/Tooltip/Tooltip.tsx
465
465
  import { jsx as jsx2, jsxs } from "react/jsx-runtime";
@@ -628,7 +628,7 @@ function Tooltip({
628
628
  }
629
629
 
630
630
  // ../../components/fields/FieldShell/FieldShell.module.css
631
- 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"};
631
+ 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"};
632
632
 
633
633
  // ../../components/fields/FieldShell/FieldShell.tsx
634
634
  import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
@@ -753,7 +753,7 @@ function FieldShell({
753
753
  }
754
754
 
755
755
  // ../../components/fields/CheckboxField/CheckboxField.module.css
756
- 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"};
756
+ 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"};
757
757
 
758
758
  // ../../components/fields/CheckboxField/CheckboxField.tsx
759
759
  import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
@@ -810,7 +810,7 @@ function CheckboxField({
810
810
  }
811
811
 
812
812
  // ../../components/fields/ColorField/ColorField.module.css
813
- 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"};
813
+ 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"};
814
814
 
815
815
  // ../../components/fields/ColorField/ColorField.tsx
816
816
  import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
@@ -951,7 +951,7 @@ function HiddenField({
951
951
  }
952
952
 
953
953
  // ../../components/fields/FileField/FileField.module.css
954
- 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"};
954
+ 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"};
955
955
 
956
956
  // ../../components/fields/FileField/FileField.tsx
957
957
  import {
@@ -1091,7 +1091,7 @@ function FileField({
1091
1091
  import { useEffect as useEffect2, useState as useState3 } from "react";
1092
1092
 
1093
1093
  // ../../components/fields/NumberField/NumberField.module.css
1094
- var NumberField_default = {"input":"opus_L272Dk_input","stepper":"opus_L272Dk_stepper","button":"opus_L272Dk_button","error":"opus_L272Dk_error"};
1094
+ var NumberField_default = {"stepper":"opus_L272Dk_stepper","button":"opus_L272Dk_button","input":"opus_L272Dk_input","error":"opus_L272Dk_error"};
1095
1095
 
1096
1096
  // ../../components/fields/numericUtils.ts
1097
1097
  function decimalPlacesFromStep(step) {
@@ -1259,7 +1259,7 @@ function NumberField({
1259
1259
  import { createContext as createContext2, useContext as useContext2, useId as useId2 } from "react";
1260
1260
 
1261
1261
  // ../../components/fields/RadioGroup/RadioGroup.module.css
1262
- 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"};
1262
+ 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"};
1263
1263
 
1264
1264
  // ../../components/fields/RadioGroup/RadioGroup.tsx
1265
1265
  import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
@@ -1356,7 +1356,7 @@ function Radio({ children, error, name, shape, value, defaultChecked }) {
1356
1356
  import { useId as useId3, useRef as useRef3, useState as useState4 } from "react";
1357
1357
 
1358
1358
  // ../../components/fields/ChipInputField/ChipInputField.module.css
1359
- 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"};
1359
+ 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"};
1360
1360
 
1361
1361
  // ../../components/fields/ChipInputField/ChipInputField.tsx
1362
1362
  import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
@@ -1492,7 +1492,7 @@ function ChipInput({
1492
1492
  var ChipInputField = ChipInput;
1493
1493
 
1494
1494
  // ../../components/fields/RangeField/RangeField.module.css
1495
- 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"};
1495
+ 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"};
1496
1496
 
1497
1497
  // ../../components/fields/RangeField/RangeField.tsx
1498
1498
  import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
@@ -1571,7 +1571,7 @@ function RangeField({
1571
1571
  }
1572
1572
 
1573
1573
  // ../../components/fields/SelectField/SelectField.module.css
1574
- var SelectField_default = {"error":"opus_m2ObG0_error","wrap":"opus_m2ObG0_wrap","select":"opus_m2ObG0_select"};
1574
+ var SelectField_default = {"select":"opus_m2ObG0_select","wrap":"opus_m2ObG0_wrap","error":"opus_m2ObG0_error"};
1575
1575
 
1576
1576
  // ../../components/fields/SelectField/SelectField.tsx
1577
1577
  import { jsx as jsx13 } from "react/jsx-runtime";
@@ -1615,7 +1615,7 @@ function SelectField({
1615
1615
  }
1616
1616
 
1617
1617
  // ../../components/fields/SwitchField/SwitchField.module.css
1618
- var SwitchField_default = {"error":"opus_t9NLEA_error","track":"opus_t9NLEA_track","toggle":"opus_t9NLEA_toggle","shell":"opus_t9NLEA_shell"};
1618
+ var SwitchField_default = {"error":"opus_t9NLEA_error","track":"opus_t9NLEA_track","shell":"opus_t9NLEA_shell","toggle":"opus_t9NLEA_toggle"};
1619
1619
 
1620
1620
  // ../../components/fields/SwitchField/SwitchField.tsx
1621
1621
  import { jsx as jsx14 } from "react/jsx-runtime";
@@ -1664,7 +1664,7 @@ function SwitchField({
1664
1664
  import { useId as useId4 } from "react";
1665
1665
 
1666
1666
  // ../../components/fields/TextAreaField/TextAreaField.module.css
1667
- 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"};
1667
+ 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"};
1668
1668
 
1669
1669
  // ../../components/fields/TextAreaField/TextAreaField.tsx
1670
1670
  import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
@@ -1774,7 +1774,7 @@ import {
1774
1774
  } from "@fortawesome/free-solid-svg-icons";
1775
1775
 
1776
1776
  // ../../components/fields/RichTextField/RichTextField.module.css
1777
- 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"};
1777
+ 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"};
1778
1778
 
1779
1779
  // ../../components/fields/RichTextField/RichTextField.tsx
1780
1780
  import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
@@ -2419,10 +2419,10 @@ function RichTextField({
2419
2419
  import { useState as useState6 } from "react";
2420
2420
 
2421
2421
  // ../../components/fields/TextField/TextField.module.css
2422
- var TextField_default = {"error":"opus_SOck2f_error","input":"opus_SOck2f_input"};
2422
+ var TextField_default = {"input":"opus_SOck2f_input","error":"opus_SOck2f_error"};
2423
2423
 
2424
2424
  // ../../components/fields/shared/fieldControl.module.css
2425
- 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"};
2425
+ 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"};
2426
2426
 
2427
2427
  // ../../components/fields/shared/PasswordToggle.tsx
2428
2428
  import { FontAwesomeIcon as FontAwesomeIcon2 } from "@fortawesome/react-fontawesome";
@@ -2505,7 +2505,7 @@ import { FontAwesomeIcon as FontAwesomeIcon3 } from "@fortawesome/react-fontawes
2505
2505
  import { faMoon, faSun } from "@fortawesome/free-solid-svg-icons";
2506
2506
 
2507
2507
  // ../../components/fields/ThemeToggleField/ThemeToggleField.module.css
2508
- var ThemeToggleField_default = {"option":"opus_SwerMA_option","indicator":"opus_SwerMA_indicator","toggle":"opus_SwerMA_toggle","active":"opus_SwerMA_active"};
2508
+ var ThemeToggleField_default = {"toggle":"opus_SwerMA_toggle","indicator":"opus_SwerMA_indicator","option":"opus_SwerMA_option","active":"opus_SwerMA_active"};
2509
2509
 
2510
2510
  // ../../components/fields/ThemeToggleField/ThemeToggleField.tsx
2511
2511
  import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
@@ -2838,7 +2838,7 @@ function MultiSelectField({
2838
2838
  import { useState as useState9 } from "react";
2839
2839
 
2840
2840
  // ../../components/fields/TransferListField/TransferListField.module.css
2841
- 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"};
2841
+ 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"};
2842
2842
 
2843
2843
  // ../../components/fields/TransferListField/TransferListField.tsx
2844
2844
  import { jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
@@ -2958,7 +2958,7 @@ import { FontAwesomeIcon as FontAwesomeIcon4 } from "@fortawesome/react-fontawes
2958
2958
  import { faCheck, faXmark } from "@fortawesome/free-solid-svg-icons";
2959
2959
 
2960
2960
  // ../../components/fields/PasswordStrengthField/PasswordStrengthField.module.css
2961
- 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"};
2961
+ 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"};
2962
2962
 
2963
2963
  // ../../components/fields/PasswordStrengthField/PasswordStrengthField.tsx
2964
2964
  import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
@@ -3066,7 +3066,7 @@ function PasswordStrengthField({
3066
3066
  }
3067
3067
 
3068
3068
  // ../../components/fields/RatingField/RatingField.module.css
3069
- var RatingField_default = {"symbol":"opus_0tdNUz_symbol","numericActive":"opus_0tdNUz_numericActive","numeric":"opus_0tdNUz_numeric","root":"opus_0tdNUz_root","symbolActive":"opus_0tdNUz_symbolActive"};
3069
+ var RatingField_default = {"numeric":"opus_0tdNUz_numeric","symbol":"opus_0tdNUz_symbol","symbolActive":"opus_0tdNUz_symbolActive","root":"opus_0tdNUz_root","numericActive":"opus_0tdNUz_numericActive"};
3070
3070
 
3071
3071
  // ../../components/fields/RatingField/RatingField.tsx
3072
3072
  import { jsx as jsx24 } from "react/jsx-runtime";
@@ -3141,7 +3141,7 @@ function RatingField({
3141
3141
  }
3142
3142
 
3143
3143
  // ../../components/fields/SegmentedControlField/SegmentedControlField.module.css
3144
- var SegmentedControlField_default = {"root":"opus_ZHwfiN_root","segment":"opus_ZHwfiN_segment","segmentActive":"opus_ZHwfiN_segmentActive"};
3144
+ var SegmentedControlField_default = {"segment":"opus_ZHwfiN_segment","root":"opus_ZHwfiN_root","segmentActive":"opus_ZHwfiN_segmentActive"};
3145
3145
 
3146
3146
  // ../../components/fields/SegmentedControlField/SegmentedControlField.tsx
3147
3147
  import { jsx as jsx25 } from "react/jsx-runtime";
@@ -3196,7 +3196,7 @@ function SegmentedControlField({
3196
3196
  import { useMemo as useMemo5 } from "react";
3197
3197
 
3198
3198
  // ../../components/fields/SliderRangeField/SliderRangeField.module.css
3199
- 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"};
3199
+ 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"};
3200
3200
 
3201
3201
  // ../../components/fields/SliderRangeField/SliderRangeField.tsx
3202
3202
  import { jsx as jsx26, jsxs as jsxs19 } from "react/jsx-runtime";
@@ -3293,7 +3293,7 @@ function SliderRangeField({
3293
3293
  import { useEffect as useEffect6, useMemo as useMemo6, useRef as useRef7, useState as useState11 } from "react";
3294
3294
 
3295
3295
  // ../../components/fields/PhoneNumberField/PhoneNumberField.module.css
3296
- 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"};
3296
+ 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"};
3297
3297
 
3298
3298
  // ../../components/fields/PhoneNumberField/countries.ts
3299
3299
  function countryCodeToFlag(code) {
@@ -3696,7 +3696,7 @@ function PhoneNumberField({
3696
3696
  import { useEffect as useEffect7, useMemo as useMemo7, useRef as useRef8, useState as useState12 } from "react";
3697
3697
 
3698
3698
  // ../../components/fields/CountryPickerField/CountryPickerField.module.css
3699
- 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"};
3699
+ 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"};
3700
3700
 
3701
3701
  // ../../components/fields/CountryPickerField/CountryPickerField.tsx
3702
3702
  import { jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
@@ -3852,7 +3852,7 @@ function CountryPickerField({
3852
3852
  import { useEffect as useEffect8, useMemo as useMemo8, useRef as useRef9, useState as useState13 } from "react";
3853
3853
 
3854
3854
  // ../../components/fields/TreeSelectField/TreeSelectField.module.css
3855
- var TreeSelectField_default = {"treeOption":"opus_Mq6C00_treeOption","root":"opus_Mq6C00_root","treeOptionActive":"opus_Mq6C00_treeOptionActive"};
3855
+ var TreeSelectField_default = {"treeOptionActive":"opus_Mq6C00_treeOptionActive","treeOption":"opus_Mq6C00_treeOption","root":"opus_Mq6C00_root"};
3856
3856
 
3857
3857
  // ../../components/fields/TreeSelectField/TreeSelectField.tsx
3858
3858
  import { Fragment as Fragment3, jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
@@ -3981,7 +3981,7 @@ function TreeSelectField({
3981
3981
  import { useEffect as useEffect9, useMemo as useMemo9, useRef as useRef10, useState as useState14 } from "react";
3982
3982
 
3983
3983
  // ../../components/fields/CascaderField/CascaderField.module.css
3984
- var CascaderField_default = {"option":"opus_1Fg59A_option","optionActive":"opus_1Fg59A_optionActive","column":"opus_1Fg59A_column","root":"opus_1Fg59A_root","panel":"opus_1Fg59A_panel"};
3984
+ var CascaderField_default = {"option":"opus_1Fg59A_option","root":"opus_1Fg59A_root","panel":"opus_1Fg59A_panel","optionActive":"opus_1Fg59A_optionActive","column":"opus_1Fg59A_column"};
3985
3985
 
3986
3986
  // ../../components/fields/CascaderField/CascaderField.tsx
3987
3987
  import { jsx as jsx30, jsxs as jsxs23 } from "react/jsx-runtime";
@@ -4184,7 +4184,7 @@ function OpusThemeProvider({
4184
4184
  }
4185
4185
 
4186
4186
  // ../../components/Alert/Alert.module.css
4187
- 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"};
4187
+ 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"};
4188
4188
 
4189
4189
  // ../../components/Alert/Alert.tsx
4190
4190
  import { jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
@@ -4333,7 +4333,7 @@ function useOverlayAccessibility(active, containerRef, {
4333
4333
  }
4334
4334
 
4335
4335
  // ../../components/Dialog/Dialog.module.css
4336
- 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"};
4336
+ 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"};
4337
4337
 
4338
4338
  // ../../components/Dialog/Dialog.tsx
4339
4339
  import { jsx as jsx34, jsxs as jsxs25 } from "react/jsx-runtime";
@@ -4464,7 +4464,7 @@ function Dialog({
4464
4464
  import { useEffect as useEffect13, useId as useId6, useRef as useRef13, useState as useState16 } from "react";
4465
4465
 
4466
4466
  // ../../components/Modal/Modal.module.css
4467
- 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"};
4467
+ 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"};
4468
4468
 
4469
4469
  // ../../components/Modal/Modal.tsx
4470
4470
  import { Fragment as Fragment4, jsx as jsx35, jsxs as jsxs26 } from "react/jsx-runtime";
@@ -4595,7 +4595,7 @@ function ModalDefaultActions({ onClose }) {
4595
4595
  import { useEffect as useEffect14, useId as useId7, useRef as useRef14, useState as useState17 } from "react";
4596
4596
 
4597
4597
  // ../../components/Drawer/Drawer.module.css
4598
- 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"};
4598
+ 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"};
4599
4599
 
4600
4600
  // ../../components/Drawer/Drawer.tsx
4601
4601
  import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
@@ -4735,7 +4735,7 @@ import {
4735
4735
  } from "react";
4736
4736
 
4737
4737
  // ../../components/Popover/Popover.module.css
4738
- 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"};
4738
+ 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"};
4739
4739
 
4740
4740
  // ../../components/Popover/Popover.tsx
4741
4741
  import { jsx as jsx37, jsxs as jsxs28 } from "react/jsx-runtime";
@@ -4902,7 +4902,7 @@ function resolveMegaMenuPortalStyle(root, inTopNavigation) {
4902
4902
  }
4903
4903
 
4904
4904
  // ../../components/MegaMenu/MegaMenu.module.css
4905
- 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"};
4905
+ 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"};
4906
4906
 
4907
4907
  // ../../components/MegaMenu/MegaMenu.tsx
4908
4908
  import { jsx as jsx38, jsxs as jsxs29 } from "react/jsx-runtime";
@@ -5345,7 +5345,7 @@ function MegaMenu({
5345
5345
  }
5346
5346
 
5347
5347
  // ../../components/TopNavigation/TopNavigation.module.css
5348
- var TopNavigation_default = {"bar":"opus_OIomR6_bar","menuTrigger":"opus_OIomR6_menuTrigger","nav":"opus_OIomR6_nav","menuSlot":"opus_OIomR6_menuSlot","menuSlotMega":"opus_OIomR6_menuSlotMega"};
5348
+ var TopNavigation_default = {"nav":"opus_OIomR6_nav","menuSlotMega":"opus_OIomR6_menuSlotMega","menuSlot":"opus_OIomR6_menuSlot","menuTrigger":"opus_OIomR6_menuTrigger","bar":"opus_OIomR6_bar"};
5349
5349
 
5350
5350
  // ../../components/TopNavigation/TopNavigation.tsx
5351
5351
  import { Fragment as Fragment6, jsx as jsx39 } from "react/jsx-runtime";
@@ -5702,7 +5702,7 @@ function handleMenuKeyDown(event, menu, onEscape) {
5702
5702
  }
5703
5703
 
5704
5704
  // ../../components/DropdownMenu/DropdownMenu.module.css
5705
- 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"};
5705
+ 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"};
5706
5706
 
5707
5707
  // ../../components/DropdownMenu/DropdownMenu.tsx
5708
5708
  import { jsx as jsx40, jsxs as jsxs30 } from "react/jsx-runtime";
@@ -6042,7 +6042,7 @@ import {
6042
6042
  import { createPortal as createPortal4 } from "react-dom";
6043
6043
 
6044
6044
  // ../../components/ContextMenu/ContextMenu.module.css
6045
- 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"};
6045
+ 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"};
6046
6046
 
6047
6047
  // ../../components/ContextMenu/ContextMenuProvider.tsx
6048
6048
  import { jsx as jsx41, jsxs as jsxs31 } from "react/jsx-runtime";
@@ -6353,7 +6353,7 @@ import { faMagnifyingGlass } from "@fortawesome/free-solid-svg-icons";
6353
6353
  import { FontAwesomeIcon as FontAwesomeIcon5 } from "@fortawesome/react-fontawesome";
6354
6354
 
6355
6355
  // ../../components/CommandPalette/CommandPalette.module.css
6356
- 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"};
6356
+ 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"};
6357
6357
 
6358
6358
  // ../../components/CommandPalette/CommandPalette.tsx
6359
6359
  import { jsx as jsx42, jsxs as jsxs32 } from "react/jsx-runtime";
@@ -6693,7 +6693,7 @@ function AccordionGroup({
6693
6693
  }
6694
6694
 
6695
6695
  // ../../components/Accordion/Accordion.module.css
6696
- 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"};
6696
+ 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"};
6697
6697
 
6698
6698
  // ../../components/Accordion/Accordion.tsx
6699
6699
  import { jsx as jsx44, jsxs as jsxs33 } from "react/jsx-runtime";
@@ -6786,7 +6786,7 @@ import {
6786
6786
  } from "react";
6787
6787
 
6788
6788
  // ../../components/ShowMore/ShowMore.module.css
6789
- 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"};
6789
+ 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"};
6790
6790
 
6791
6791
  // ../../components/ShowMore/ShowMore.tsx
6792
6792
  import { jsx as jsx45, jsxs as jsxs34 } from "react/jsx-runtime";
@@ -6890,7 +6890,7 @@ function ShowMore({
6890
6890
  }
6891
6891
 
6892
6892
  // ../../components/Toast/Toast.module.css
6893
- 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"};
6893
+ 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"};
6894
6894
 
6895
6895
  // ../../components/Toast/Toast.tsx
6896
6896
  import { jsx as jsx46, jsxs as jsxs35 } from "react/jsx-runtime";
@@ -6970,7 +6970,7 @@ import {
6970
6970
  } from "react";
6971
6971
 
6972
6972
  // ../../components/ToastProvider/ToastProvider.module.css
6973
- 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"};
6973
+ 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"};
6974
6974
 
6975
6975
  // ../../components/ToastProvider/ToastProvider.tsx
6976
6976
  import { jsx as jsx47, jsxs as jsxs36 } from "react/jsx-runtime";
@@ -7340,7 +7340,7 @@ function ToastProvider({
7340
7340
  import { useId as useId15, useState as useState28 } from "react";
7341
7341
 
7342
7342
  // ../../components/Tabs/Tabs.module.css
7343
- var Tabs_default = {"list":"opus_ADVJmy_list","panel":"opus_ADVJmy_panel","root":"opus_ADVJmy_root","tab":"opus_ADVJmy_tab"};
7343
+ var Tabs_default = {"panel":"opus_ADVJmy_panel","list":"opus_ADVJmy_list","root":"opus_ADVJmy_root","tab":"opus_ADVJmy_tab"};
7344
7344
 
7345
7345
  // ../../components/Tabs/Tabs.tsx
7346
7346
  import { jsx as jsx48, jsxs as jsxs37 } from "react/jsx-runtime";
@@ -7454,7 +7454,7 @@ function Tabs({
7454
7454
  }
7455
7455
 
7456
7456
  // ../../components/Card/Card.module.css
7457
- 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"};
7457
+ 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"};
7458
7458
 
7459
7459
  // ../../components/Card/Card.tsx
7460
7460
  import { jsx as jsx49, jsxs as jsxs38 } from "react/jsx-runtime";
@@ -7485,7 +7485,7 @@ function Card({
7485
7485
  }
7486
7486
 
7487
7487
  // ../../components/dashboardMetricCardLayout/dashboardMetricCardLayout.module.css
7488
- 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"};
7488
+ 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"};
7489
7489
 
7490
7490
  // ../../components/StatCard/StatCard.module.css
7491
7491
  var StatCard_default = {"change":"opus_KIXsQY_change"};
@@ -7515,7 +7515,7 @@ function StatCard({
7515
7515
  }
7516
7516
 
7517
7517
  // ../../components/Gauge/Gauge.module.css
7518
- 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"};
7518
+ 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"};
7519
7519
 
7520
7520
  // ../../components/Gauge/Gauge.tsx
7521
7521
  import { jsx as jsx51, jsxs as jsxs40 } from "react/jsx-runtime";
@@ -7649,7 +7649,7 @@ function Gauge({
7649
7649
  import { useId as useId16 } from "react";
7650
7650
 
7651
7651
  // ../../components/Sparkline/Sparkline.module.css
7652
- 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"};
7652
+ 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"};
7653
7653
 
7654
7654
  // ../../components/Sparkline/Sparkline.tsx
7655
7655
  import { jsx as jsx52, jsxs as jsxs41 } from "react/jsx-runtime";
@@ -7715,7 +7715,7 @@ function Sparkline({
7715
7715
  }
7716
7716
 
7717
7717
  // ../../components/ProgressRing/ProgressRing.module.css
7718
- var ProgressRing_default = {"track":"opus_YxX6Hh_track","ring":"opus_YxX6Hh_ring","svg":"opus_YxX6Hh_svg","value":"opus_YxX6Hh_value","center":"opus_YxX6Hh_center"};
7718
+ var ProgressRing_default = {"ring":"opus_YxX6Hh_ring","svg":"opus_YxX6Hh_svg","center":"opus_YxX6Hh_center","track":"opus_YxX6Hh_track","value":"opus_YxX6Hh_value"};
7719
7719
 
7720
7720
  // ../../components/ProgressRing/ProgressRing.tsx
7721
7721
  import { jsx as jsx53, jsxs as jsxs42 } from "react/jsx-runtime";
@@ -7748,7 +7748,7 @@ function ProgressRing({ label, max = 100, value }) {
7748
7748
  }
7749
7749
 
7750
7750
  // ../../components/ProgressBar/ProgressBar.module.css
7751
- 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"};
7751
+ 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"};
7752
7752
 
7753
7753
  // ../../components/ProgressBar/ProgressBar.tsx
7754
7754
  import { jsx as jsx54, jsxs as jsxs43 } from "react/jsx-runtime";
@@ -7768,7 +7768,7 @@ function ProgressBar({ label, max = 100, value }) {
7768
7768
  }
7769
7769
 
7770
7770
  // ../../components/Speedometer/Speedometer.module.css
7771
- 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"};
7771
+ 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"};
7772
7772
 
7773
7773
  // ../../components/Speedometer/Speedometer.tsx
7774
7774
  import { jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
@@ -7801,7 +7801,7 @@ function Speedometer({ label, max = 100, value }) {
7801
7801
  }
7802
7802
 
7803
7803
  // ../../components/MetricTile/MetricTile.module.css
7804
- var MetricTile_default = {"sparklineRail":"opus_-dz9KL_sparklineRail","sparklineReserve":"opus_-dz9KL_sparklineReserve","tile":"opus_-dz9KL_tile"};
7804
+ var MetricTile_default = {"tile":"opus_-dz9KL_tile","sparklineRail":"opus_-dz9KL_sparklineRail","sparklineReserve":"opus_-dz9KL_sparklineReserve"};
7805
7805
 
7806
7806
  // ../../components/MetricTile/MetricTile.tsx
7807
7807
  import { jsx as jsx56, jsxs as jsxs45 } from "react/jsx-runtime";
@@ -7844,7 +7844,7 @@ function TrendBadge({ direction, value }) {
7844
7844
  }
7845
7845
 
7846
7846
  // ../../components/Panel/Panel.module.css
7847
- 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"};
7847
+ 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"};
7848
7848
 
7849
7849
  // ../../components/Panel/Panel.tsx
7850
7850
  import { jsx as jsx58, jsxs as jsxs48 } from "react/jsx-runtime";
@@ -8028,7 +8028,7 @@ function resolveSectionGapVars(gap = "md") {
8028
8028
  }
8029
8029
 
8030
8030
  // ../../components/Section/Section.module.css
8031
- 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"};
8031
+ 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"};
8032
8032
 
8033
8033
  // ../../components/Section/Section.tsx
8034
8034
  import { jsx as jsx59, jsxs as jsxs49 } from "react/jsx-runtime";
@@ -8109,7 +8109,7 @@ var Section = Object.assign(SectionRoot, {
8109
8109
  });
8110
8110
 
8111
8111
  // ../../components/Table/Table.module.css
8112
- var Table_default = {"caption":"opus_2q7S14_caption","wrap":"opus_2q7S14_wrap","table":"opus_2q7S14_table","empty":"opus_2q7S14_empty","visuallyHidden":"opus_2q7S14_visuallyHidden"};
8112
+ var Table_default = {"visuallyHidden":"opus_2q7S14_visuallyHidden","table":"opus_2q7S14_table","caption":"opus_2q7S14_caption","wrap":"opus_2q7S14_wrap","empty":"opus_2q7S14_empty"};
8113
8113
 
8114
8114
  // ../../components/Table/Table.tsx
8115
8115
  import { jsx as jsx60, jsxs as jsxs50 } from "react/jsx-runtime";
@@ -8138,12 +8138,209 @@ function Table({
8138
8138
  }
8139
8139
 
8140
8140
  // ../../components/DataGrid/DataGrid.tsx
8141
- import { forwardRef, useCallback as useCallback12, useLayoutEffect as useLayoutEffect8, useMemo as useMemo14, useRef as useRef23, useState as useState29 } from "react";
8142
- import { faFilter } from "@fortawesome/free-solid-svg-icons";
8141
+ import {
8142
+ Fragment as Fragment7,
8143
+ forwardRef,
8144
+ useCallback as useCallback12,
8145
+ useEffect as useEffect22,
8146
+ useLayoutEffect as useLayoutEffect8,
8147
+ useMemo as useMemo14,
8148
+ useRef as useRef23,
8149
+ useState as useState29
8150
+ } from "react";
8151
+ import { faChevronDown, faChevronRight, faFilter } from "@fortawesome/free-solid-svg-icons";
8143
8152
  import { FontAwesomeIcon as FontAwesomeIcon6 } from "@fortawesome/react-fontawesome";
8144
8153
 
8154
+ // ../../components/DataGrid/dataGridLayout.ts
8155
+ function cellText(value) {
8156
+ if (value === null || value === void 0 || typeof value === "boolean") {
8157
+ return "";
8158
+ }
8159
+ if (typeof value === "number" || typeof value === "string") {
8160
+ return String(value);
8161
+ }
8162
+ if (Array.isArray(value)) {
8163
+ return value.map(cellText).join(" ");
8164
+ }
8165
+ return "";
8166
+ }
8167
+ function getRowCellText(row, key) {
8168
+ var _a2;
8169
+ if (key === "team") {
8170
+ return cellText((_a2 = row.values.team) != null ? _a2 : row.label);
8171
+ }
8172
+ return cellText(row.values[key]);
8173
+ }
8174
+ function buildGroupedDisplayRows(rows, groupBy, collapsedGroupIds) {
8175
+ var _a2;
8176
+ const groups = /* @__PURE__ */ new Map();
8177
+ for (const row of rows) {
8178
+ const label = getRowCellText(row, groupBy) || "Ungrouped";
8179
+ const bucket = (_a2 = groups.get(label)) != null ? _a2 : [];
8180
+ bucket.push(row);
8181
+ groups.set(label, bucket);
8182
+ }
8183
+ const display = [];
8184
+ for (const [label, groupRows] of groups) {
8185
+ const id = `group:${label}`;
8186
+ const expanded = !collapsedGroupIds.has(id);
8187
+ display.push({
8188
+ kind: "group",
8189
+ id,
8190
+ label,
8191
+ count: groupRows.length,
8192
+ expanded
8193
+ });
8194
+ if (expanded) {
8195
+ for (const row of groupRows) {
8196
+ display.push({
8197
+ kind: "data",
8198
+ row,
8199
+ depth: 1,
8200
+ expandable: false,
8201
+ expanded: false,
8202
+ hasChildren: false
8203
+ });
8204
+ }
8205
+ }
8206
+ }
8207
+ return display;
8208
+ }
8209
+ function buildTreeDisplayRows(rows, expandedIds, depth = 0) {
8210
+ var _a2;
8211
+ const display = [];
8212
+ for (const row of rows) {
8213
+ const children = (_a2 = row.children) != null ? _a2 : [];
8214
+ const hasChildren = children.length > 0;
8215
+ const expanded = hasChildren && expandedIds.has(row.id);
8216
+ display.push({
8217
+ kind: "data",
8218
+ row,
8219
+ depth,
8220
+ expandable: hasChildren,
8221
+ expanded,
8222
+ hasChildren
8223
+ });
8224
+ if (expanded) {
8225
+ display.push(...buildTreeDisplayRows(children, expandedIds, depth + 1));
8226
+ }
8227
+ }
8228
+ return display;
8229
+ }
8230
+ function buildFlatDisplayRows(rows) {
8231
+ return rows.map((row) => ({
8232
+ kind: "data",
8233
+ row,
8234
+ depth: 0,
8235
+ expandable: false,
8236
+ expanded: false,
8237
+ hasChildren: false
8238
+ }));
8239
+ }
8240
+ function collectTreeIds(rows) {
8241
+ var _a2;
8242
+ const ids = [];
8243
+ for (const row of rows) {
8244
+ if ((_a2 = row.children) == null ? void 0 : _a2.length) {
8245
+ ids.push(row.id);
8246
+ ids.push(...collectTreeIds(row.children));
8247
+ }
8248
+ }
8249
+ return ids;
8250
+ }
8251
+
8252
+ // ../../components/DataGrid/dataGridPivot.ts
8253
+ function toNumber(value) {
8254
+ const cleaned = value.replace(/%/g, "").replace(/^\+/, "").trim();
8255
+ if (!cleaned || Number.isNaN(Number(cleaned))) {
8256
+ return null;
8257
+ }
8258
+ return Number(cleaned);
8259
+ }
8260
+ function aggregate(values, mode) {
8261
+ if (mode === "count") {
8262
+ return values.length;
8263
+ }
8264
+ if (!values.length) {
8265
+ return 0;
8266
+ }
8267
+ const sum = values.reduce((total, value) => total + value, 0);
8268
+ return mode === "avg" ? sum / values.length : sum;
8269
+ }
8270
+ function formatMeasure(value, sample) {
8271
+ if (sample.includes("%")) {
8272
+ return `${Math.round(value)}%`;
8273
+ }
8274
+ if (Number.isInteger(value)) {
8275
+ return value;
8276
+ }
8277
+ return Math.round(value * 10) / 10;
8278
+ }
8279
+ function buildPivotGrid(sourceRows, config2) {
8280
+ var _a2, _b2;
8281
+ const aggregator = (_a2 = config2.aggregator) != null ? _a2 : "sum";
8282
+ const rowDims = config2.rows.length ? config2.rows : ["team"];
8283
+ const colDims = config2.columns.length ? config2.columns : ["group"];
8284
+ const valueKeys = config2.values.length ? config2.values : ["q1"];
8285
+ const columnLabels = /* @__PURE__ */ new Set();
8286
+ const matrix = /* @__PURE__ */ new Map();
8287
+ const rowLabels = /* @__PURE__ */ new Map();
8288
+ const samples = /* @__PURE__ */ new Map();
8289
+ for (const source of sourceRows) {
8290
+ const rowKey = rowDims.map((key) => getRowCellText(source, key) || "\u2014").join(" \xB7 ");
8291
+ const colKey = colDims.map((key) => getRowCellText(source, key) || "\u2014").join(" \xB7 ");
8292
+ rowLabels.set(rowKey, rowKey);
8293
+ if (!matrix.has(rowKey)) {
8294
+ matrix.set(rowKey, /* @__PURE__ */ new Map());
8295
+ }
8296
+ const rowBucket = matrix.get(rowKey);
8297
+ for (const valueKey of valueKeys) {
8298
+ const cellKey = valueKeys.length === 1 ? colKey : `${colKey} \xB7 ${valueKey}`;
8299
+ columnLabels.add(cellKey);
8300
+ const raw = getRowCellText(source, valueKey);
8301
+ const numeric = toNumber(raw);
8302
+ if (!samples.has(valueKey) && raw) {
8303
+ samples.set(valueKey, raw);
8304
+ }
8305
+ const values = (_b2 = rowBucket.get(cellKey)) != null ? _b2 : [];
8306
+ if (aggregator === "count") {
8307
+ values.push(1);
8308
+ } else if (numeric !== null) {
8309
+ values.push(numeric);
8310
+ }
8311
+ rowBucket.set(cellKey, values);
8312
+ }
8313
+ }
8314
+ const sortedColumnLabels = Array.from(columnLabels).sort((a, b) => a.localeCompare(b));
8315
+ const columns = [
8316
+ { key: "team", label: rowDims.join(" \xB7 "), align: "left", sortable: true, filterable: true },
8317
+ ...sortedColumnLabels.map((label) => ({
8318
+ key: label,
8319
+ label,
8320
+ align: "right",
8321
+ sortable: true,
8322
+ filterable: true
8323
+ }))
8324
+ ];
8325
+ const rows = Array.from(matrix.entries()).map(([rowKey, cells], index) => {
8326
+ var _a3, _b3, _c2;
8327
+ const values = { team: rowKey };
8328
+ for (const columnLabel of sortedColumnLabels) {
8329
+ const nums = (_a3 = cells.get(columnLabel)) != null ? _a3 : [];
8330
+ const sampleKey = (_b3 = valueKeys.find((key) => columnLabel.includes(key))) != null ? _b3 : valueKeys[0];
8331
+ const sample = (_c2 = samples.get(sampleKey)) != null ? _c2 : "";
8332
+ values[columnLabel] = formatMeasure(aggregate(nums, aggregator), sample);
8333
+ }
8334
+ return {
8335
+ id: `pivot-${index + 1}`,
8336
+ values
8337
+ };
8338
+ });
8339
+ return { columns, rows };
8340
+ }
8341
+
8145
8342
  // ../../components/DataGrid/DataGrid.module.css
8146
- 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"};
8343
+ 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"};
8147
8344
 
8148
8345
  // ../../components/DataGrid/DataGrid.tsx
8149
8346
  import { jsx as jsx61, jsxs as jsxs51 } from "react/jsx-runtime";
@@ -8158,6 +8355,8 @@ var HEADER_CONTROL_GAP = 6;
8158
8355
  var SORT_INDICATOR_WIDTH = 8;
8159
8356
  var SORT_LABEL_GAP = 8;
8160
8357
  var RESIZE_HANDLE_WIDTH = 14;
8358
+ var DEFAULT_VIEWPORT = 360;
8359
+ var OVERSCAN = 6;
8161
8360
  function resolveColumnFeatures(column) {
8162
8361
  return {
8163
8362
  filterable: (column == null ? void 0 : column.filterable) === true,
@@ -8176,21 +8375,8 @@ function getMinColumnWidth(sortable, hasMenu, density) {
8176
8375
  }
8177
8376
  return width;
8178
8377
  }
8179
- function cellText(value) {
8180
- if (value === null || value === void 0 || typeof value === "boolean") {
8181
- return "";
8182
- }
8183
- if (typeof value === "number" || typeof value === "string") {
8184
- return String(value);
8185
- }
8186
- if (Array.isArray(value)) {
8187
- return value.map(cellText).join(" ");
8188
- }
8189
- return "";
8190
- }
8191
8378
  function rowTeamValue(row) {
8192
- var _a2;
8193
- return cellText((_a2 = row.values.team) != null ? _a2 : row.label);
8379
+ return getRowCellText(row, "team");
8194
8380
  }
8195
8381
  function isNumericValue(value) {
8196
8382
  return /^-?\d+(?:\.\d+)?$/.test(value);
@@ -8203,33 +8389,67 @@ function compareValues(a, b) {
8203
8389
  }
8204
8390
  return aTrim.localeCompare(bTrim, void 0, { numeric: true, sensitivity: "base" });
8205
8391
  }
8392
+ function defaultRowHeight(density) {
8393
+ return density === "comfortable" ? 44 : 36;
8394
+ }
8206
8395
  function DataGrid({
8207
8396
  bordered = true,
8208
8397
  caption,
8209
8398
  columns,
8399
+ defaultExpandedIds,
8210
8400
  density = "compact",
8401
+ detailExpandedIds,
8402
+ getDetailContent,
8403
+ groupBy = "group",
8404
+ hasMore = false,
8405
+ layout = "flat",
8406
+ loadingMore = false,
8407
+ onExpandedChange,
8408
+ onLoadMore,
8409
+ pivot,
8211
8410
  rowHeader,
8411
+ rowHeight,
8212
8412
  rows,
8213
8413
  stickyFirstColumn = true,
8214
8414
  stickyHeader = true,
8215
- striped = true
8415
+ striped = true,
8416
+ viewportHeight = DEFAULT_VIEWPORT,
8417
+ virtualized = false
8216
8418
  }) {
8217
- var _a2, _b2, _c2, _d2;
8419
+ var _a2, _b2, _c2, _d2, _e2, _f2;
8218
8420
  const [columnWidths, setColumnWidths] = useState29({});
8219
8421
  const [filters, setFilters] = useState29({});
8220
8422
  const [openMenu, setOpenMenu] = useState29(null);
8221
8423
  const [resizing, setResizing] = useState29(null);
8222
8424
  const [sort, setSort] = useState29(null);
8425
+ const [collapsedGroupIds, setCollapsedGroupIds] = useState29(() => /* @__PURE__ */ new Set());
8426
+ const [treeExpandedIds, setTreeExpandedIds] = useState29(
8427
+ () => new Set(defaultExpandedIds != null ? defaultExpandedIds : [])
8428
+ );
8429
+ const [uncontrolledDetailIds, setUncontrolledDetailIds] = useState29(() => /* @__PURE__ */ new Set());
8430
+ const [scrollTop, setScrollTop] = useState29(0);
8223
8431
  const menuAnchorRef = useRef23(null);
8224
8432
  const menuHostRef = useRef23(null);
8225
8433
  const menuRef = useRef23(null);
8226
8434
  const menuFrameRef = useRef23(null);
8227
8435
  const resizeDragRef = useRef23(null);
8228
8436
  const wrapRef = useRef23(null);
8229
- const hasTeamColumn = columns.some((column) => column.key === "team");
8437
+ const sentinelRef = useRef23(null);
8438
+ const resolvedRowHeight = rowHeight != null ? rowHeight : defaultRowHeight(density);
8439
+ const detailIds = detailExpandedIds ? new Set(detailExpandedIds) : uncontrolledDetailIds;
8440
+ const masterDetail = Boolean(getDetailContent) && layout !== "pivot";
8441
+ const pivotResult = useMemo14(() => {
8442
+ if (layout !== "pivot") {
8443
+ return null;
8444
+ }
8445
+ return buildPivotGrid(rows, pivot != null ? pivot : { rows: ["group"], columns: ["a11y"], values: ["q1", "q2"] });
8446
+ }, [layout, pivot, rows]);
8447
+ const activeColumns = (_a2 = pivotResult == null ? void 0 : pivotResult.columns) != null ? _a2 : columns;
8448
+ const activeRows = (_b2 = pivotResult == null ? void 0 : pivotResult.rows) != null ? _b2 : rows;
8449
+ const hasTeamColumn = activeColumns.some((column) => column.key === "team");
8230
8450
  const gridColumns = useMemo14(
8231
- () => hasTeamColumn ? columns : [{ key: "team", label: "Team", align: "left" }, ...columns],
8232
- [columns, hasTeamColumn]
8451
+ () => hasTeamColumn ? activeColumns : [{ key: "team", label: "Team", align: "left" }, ...activeColumns],
8452
+ [activeColumns, hasTeamColumn]
8233
8453
  );
8234
8454
  const dataColumns = useMemo14(
8235
8455
  () => gridColumns.filter((column) => column.key !== "team"),
@@ -8243,34 +8463,92 @@ function DataGrid({
8243
8463
  }
8244
8464
  return features;
8245
8465
  }, [gridColumns, hasTeamColumn, rowHeader]);
8246
- const visibleRows = rows.filter(
8247
- (row) => gridColumns.every((column) => {
8248
- var _a3;
8249
- const features = columnFeatures[column.key];
8250
- if (!(features == null ? void 0 : features.filterable)) {
8251
- return true;
8252
- }
8253
- const filter = (_a3 = filters[column.key]) == null ? void 0 : _a3.trim().toLowerCase();
8254
- if (!filter) {
8255
- return true;
8256
- }
8257
- const value = column.key === "team" ? rowTeamValue(row) : cellText(row.values[column.key]);
8258
- return value.toLowerCase().includes(filter);
8259
- })
8260
- ).sort((a, b) => {
8261
- var _a3;
8262
- if (!sort) {
8263
- return 0;
8466
+ const filterSortRows = useCallback12(
8467
+ (source) => {
8468
+ return source.filter(
8469
+ (row) => gridColumns.every((column) => {
8470
+ var _a3;
8471
+ const features = columnFeatures[column.key];
8472
+ if (!(features == null ? void 0 : features.filterable)) {
8473
+ return true;
8474
+ }
8475
+ const filter = (_a3 = filters[column.key]) == null ? void 0 : _a3.trim().toLowerCase();
8476
+ if (!filter) {
8477
+ return true;
8478
+ }
8479
+ const value = column.key === "team" ? rowTeamValue(row) : getRowCellText(row, column.key);
8480
+ return value.toLowerCase().includes(filter);
8481
+ })
8482
+ ).sort((a, b) => {
8483
+ var _a3;
8484
+ if (!sort || !((_a3 = columnFeatures[sort.key]) == null ? void 0 : _a3.sortable)) {
8485
+ return 0;
8486
+ }
8487
+ const aValue = sort.key === "team" ? rowTeamValue(a) : getRowCellText(a, sort.key);
8488
+ const bValue = sort.key === "team" ? rowTeamValue(b) : getRowCellText(b, sort.key);
8489
+ const result = compareValues(aValue, bValue);
8490
+ return sort.direction === "ascending" ? result : -result;
8491
+ });
8492
+ },
8493
+ [columnFeatures, filters, gridColumns, sort]
8494
+ );
8495
+ useEffect22(() => {
8496
+ if (layout === "tree" && defaultExpandedIds === void 0 && treeExpandedIds.size === 0) {
8497
+ setTreeExpandedIds(new Set(collectTreeIds(activeRows).slice(0, 4)));
8264
8498
  }
8265
- if (!((_a3 = columnFeatures[sort.key]) == null ? void 0 : _a3.sortable)) {
8266
- return 0;
8499
+ }, [activeRows, defaultExpandedIds, layout, treeExpandedIds.size]);
8500
+ const displayRows = useMemo14(() => {
8501
+ if (layout === "tree") {
8502
+ return buildTreeDisplayRows(filterSortRows(activeRows), treeExpandedIds);
8267
8503
  }
8268
- const aValue = sort.key === "team" ? rowTeamValue(a) : cellText(a.values[sort.key]);
8269
- const bValue = sort.key === "team" ? rowTeamValue(b) : cellText(b.values[sort.key]);
8270
- const result = compareValues(aValue, bValue);
8271
- return sort.direction === "ascending" ? result : -result;
8272
- });
8504
+ const flat = filterSortRows(activeRows);
8505
+ if (layout === "grouped") {
8506
+ return buildGroupedDisplayRows(flat, groupBy, collapsedGroupIds);
8507
+ }
8508
+ return buildFlatDisplayRows(flat);
8509
+ }, [activeRows, collapsedGroupIds, filterSortRows, groupBy, layout, treeExpandedIds]);
8273
8510
  const openMenuFeatures = openMenu ? columnFeatures[openMenu.key] : void 0;
8511
+ const setExpandedIds = useCallback12(
8512
+ (next) => {
8513
+ setTreeExpandedIds(next);
8514
+ onExpandedChange == null ? void 0 : onExpandedChange(Array.from(next));
8515
+ },
8516
+ [onExpandedChange]
8517
+ );
8518
+ const toggleTreeExpand = (id) => {
8519
+ const next = new Set(treeExpandedIds);
8520
+ if (next.has(id)) {
8521
+ next.delete(id);
8522
+ } else {
8523
+ next.add(id);
8524
+ }
8525
+ setExpandedIds(next);
8526
+ };
8527
+ const toggleGroup = (id) => {
8528
+ setCollapsedGroupIds((current) => {
8529
+ const next = new Set(current);
8530
+ if (next.has(id)) {
8531
+ next.delete(id);
8532
+ } else {
8533
+ next.add(id);
8534
+ }
8535
+ return next;
8536
+ });
8537
+ };
8538
+ const toggleDetail = (id) => {
8539
+ if (detailExpandedIds) {
8540
+ return;
8541
+ }
8542
+ setUncontrolledDetailIds((current) => {
8543
+ const next = new Set(current);
8544
+ if (next.has(id)) {
8545
+ next.delete(id);
8546
+ } else {
8547
+ next.add(id);
8548
+ }
8549
+ return next;
8550
+ });
8551
+ };
8274
8552
  const resetWrapMinHeight = useCallback12(() => {
8275
8553
  if (wrapRef.current) {
8276
8554
  wrapRef.current.style.minHeight = "";
@@ -8281,7 +8559,7 @@ function DataGrid({
8281
8559
  resetWrapMinHeight();
8282
8560
  setOpenMenu(null);
8283
8561
  }, [resetWrapMinHeight]);
8284
- const activeMenuFilter = openMenu ? (_a2 = filters[openMenu.key]) != null ? _a2 : "" : "";
8562
+ const activeMenuFilter = openMenu ? (_c2 = filters[openMenu.key]) != null ? _c2 : "" : "";
8285
8563
  const applyMenuPosition = useCallback12(() => {
8286
8564
  const anchor = menuAnchorRef.current;
8287
8565
  const menu = menuRef.current;
@@ -8394,6 +8672,26 @@ function DataGrid({
8394
8672
  }
8395
8673
  scheduleMenuPosition();
8396
8674
  }, [columnWidths, openMenu, scheduleMenuPosition]);
8675
+ useEffect22(() => {
8676
+ if (!onLoadMore || !hasMore) {
8677
+ return;
8678
+ }
8679
+ const root = wrapRef.current;
8680
+ const target = sentinelRef.current;
8681
+ if (!root || !target) {
8682
+ return;
8683
+ }
8684
+ const observer = new IntersectionObserver(
8685
+ (entries) => {
8686
+ if (entries.some((entry) => entry.isIntersecting) && !loadingMore) {
8687
+ onLoadMore();
8688
+ }
8689
+ },
8690
+ { root, rootMargin: "120px" }
8691
+ );
8692
+ observer.observe(target);
8693
+ return () => observer.disconnect();
8694
+ }, [displayRows.length, hasMore, loadingMore, onLoadMore]);
8397
8695
  const toggleSort = (key) => {
8398
8696
  var _a3;
8399
8697
  if (!((_a3 = columnFeatures[key]) == null ? void 0 : _a3.sortable)) {
@@ -8495,10 +8793,108 @@ function DataGrid({
8495
8793
  }
8496
8794
  beginResize(event, columnKey, width);
8497
8795
  }, [beginResize, columnFeatures]);
8796
+ const colSpan = gridColumns.length;
8797
+ const virtualWindow = useMemo14(() => {
8798
+ if (!virtualized) {
8799
+ return {
8800
+ offset: 0,
8801
+ items: displayRows,
8802
+ paddingTop: 0,
8803
+ paddingBottom: 0
8804
+ };
8805
+ }
8806
+ const start = Math.max(0, Math.floor(scrollTop / resolvedRowHeight) - OVERSCAN);
8807
+ const visibleCount = Math.ceil(viewportHeight / resolvedRowHeight) + OVERSCAN * 2;
8808
+ const end = Math.min(displayRows.length, start + visibleCount);
8809
+ const items = displayRows.slice(start, end);
8810
+ return {
8811
+ offset: start,
8812
+ items,
8813
+ paddingTop: start * resolvedRowHeight,
8814
+ paddingBottom: Math.max(0, (displayRows.length - end) * resolvedRowHeight)
8815
+ };
8816
+ }, [displayRows, resolvedRowHeight, scrollTop, viewportHeight, virtualized]);
8817
+ const renderDataRow = (entry) => {
8818
+ var _a3;
8819
+ const { row, depth, expandable, expanded, hasChildren } = entry;
8820
+ const detailOpen = masterDetail && detailIds.has(row.id);
8821
+ const showTreeToggle = layout === "tree" && expandable;
8822
+ return /* @__PURE__ */ jsxs51(Fragment7, { children: [
8823
+ /* @__PURE__ */ jsxs51("tr", { "data-row-kind": "data", children: [
8824
+ /* @__PURE__ */ jsx61(
8825
+ "th",
8826
+ {
8827
+ className: DataGrid_default.rowHeader,
8828
+ scope: "row",
8829
+ style: columnWidths.team ? { width: columnWidths.team, minWidth: columnWidths.team } : void 0,
8830
+ children: /* @__PURE__ */ jsxs51("span", { className: DataGrid_default.rowHeaderInner, style: { paddingLeft: depth * 14 }, children: [
8831
+ masterDetail ? /* @__PURE__ */ jsx61(
8832
+ "button",
8833
+ {
8834
+ "aria-expanded": detailOpen,
8835
+ "aria-label": detailOpen ? `Hide details for ${rowTeamValue(row)}` : `Show details for ${rowTeamValue(row)}`,
8836
+ className: DataGrid_default.expandButton,
8837
+ onClick: () => toggleDetail(row.id),
8838
+ type: "button",
8839
+ children: /* @__PURE__ */ jsx61(FontAwesomeIcon6, { className: DataGrid_default.chevron, icon: detailOpen ? faChevronDown : faChevronRight })
8840
+ }
8841
+ ) : null,
8842
+ showTreeToggle ? /* @__PURE__ */ jsx61(
8843
+ "button",
8844
+ {
8845
+ "aria-expanded": expanded,
8846
+ "aria-label": expanded ? `Collapse ${rowTeamValue(row)}` : `Expand ${rowTeamValue(row)}`,
8847
+ className: DataGrid_default.expandButton,
8848
+ onClick: () => toggleTreeExpand(row.id),
8849
+ type: "button",
8850
+ children: /* @__PURE__ */ jsx61(FontAwesomeIcon6, { className: DataGrid_default.chevron, icon: expanded ? faChevronDown : faChevronRight })
8851
+ }
8852
+ ) : layout === "tree" && !hasChildren ? /* @__PURE__ */ jsx61("span", { "aria-hidden": "true", className: DataGrid_default.expandSpacer }) : null,
8853
+ /* @__PURE__ */ jsx61("span", { className: DataGrid_default.rowHeaderLabel, children: (_a3 = row.values.team) != null ? _a3 : row.label })
8854
+ ] })
8855
+ }
8856
+ ),
8857
+ dataColumns.map((column) => {
8858
+ var _a4;
8859
+ return /* @__PURE__ */ jsx61(
8860
+ "td",
8861
+ {
8862
+ "data-align": (_a4 = column.align) != null ? _a4 : "left",
8863
+ "data-column-key": column.key,
8864
+ "data-column-resizable": columnFeatures[column.key].resizable,
8865
+ style: columnWidths[column.key] ? { width: columnWidths[column.key], minWidth: columnWidths[column.key] } : void 0,
8866
+ children: row.values[column.key]
8867
+ },
8868
+ column.key
8869
+ );
8870
+ })
8871
+ ] }),
8872
+ detailOpen && getDetailContent ? /* @__PURE__ */ jsx61("tr", { className: DataGrid_default.detailRow, children: /* @__PURE__ */ jsx61("td", { className: DataGrid_default.detailCell, colSpan, children: getDetailContent(row) }) }, `${row.id}-detail`) : null
8873
+ ] }, row.id);
8874
+ };
8875
+ const renderDisplayRow = (entry, index) => {
8876
+ if (entry.kind === "group") {
8877
+ return /* @__PURE__ */ jsx61("tr", { className: DataGrid_default.groupRow, children: /* @__PURE__ */ jsx61("td", { className: DataGrid_default.groupCell, colSpan, children: /* @__PURE__ */ jsxs51(
8878
+ "button",
8879
+ {
8880
+ "aria-expanded": entry.expanded,
8881
+ className: DataGrid_default.groupButton,
8882
+ onClick: () => toggleGroup(entry.id),
8883
+ type: "button",
8884
+ children: [
8885
+ /* @__PURE__ */ jsx61(FontAwesomeIcon6, { className: DataGrid_default.chevron, icon: entry.expanded ? faChevronDown : faChevronRight }),
8886
+ /* @__PURE__ */ jsx61("span", { children: entry.label }),
8887
+ /* @__PURE__ */ jsx61("span", { className: DataGrid_default.groupCount, children: entry.count })
8888
+ ]
8889
+ }
8890
+ ) }) }, entry.id);
8891
+ }
8892
+ return renderDataRow(entry);
8893
+ };
8498
8894
  return /* @__PURE__ */ jsxs51("div", { className: DataGrid_default.frame, children: [
8499
8895
  caption ? /* @__PURE__ */ jsx61("div", { className: DataGrid_default.caption, children: caption }) : null,
8500
8896
  /* @__PURE__ */ jsxs51("div", { className: DataGrid_default.gridBody, children: [
8501
- /* @__PURE__ */ jsx61(
8897
+ /* @__PURE__ */ jsxs51(
8502
8898
  "div",
8503
8899
  {
8504
8900
  ref: wrapRef,
@@ -8512,114 +8908,98 @@ function DataGrid({
8512
8908
  "data-sticky-column": stickyFirstColumn,
8513
8909
  "data-sticky-header": stickyHeader,
8514
8910
  "data-striped": striped,
8515
- children: /* @__PURE__ */ jsxs51("table", { className: DataGrid_default.grid, children: [
8516
- caption ? /* @__PURE__ */ jsx61("caption", { className: DataGrid_default.visuallyHidden, children: caption }) : null,
8517
- /* @__PURE__ */ jsx61("colgroup", { children: gridColumns.map((column) => {
8518
- var _a3;
8519
- return /* @__PURE__ */ jsx61(
8520
- "col",
8521
- {
8522
- style: { width: (_a3 = columnWidths[column.key]) != null ? _a3 : column.key === "team" ? 180 : 130 }
8523
- },
8524
- column.key
8525
- );
8526
- }) }),
8527
- /* @__PURE__ */ jsx61("thead", { children: /* @__PURE__ */ jsx61("tr", { children: gridColumns.map((column) => {
8528
- var _a3, _b3;
8529
- return /* @__PURE__ */ jsxs51(
8530
- "th",
8531
- {
8532
- "aria-sort": columnFeatures[column.key].sortable ? (sort == null ? void 0 : sort.key) === column.key ? sort.direction : "none" : void 0,
8533
- className: column.key === "team" ? DataGrid_default.corner : void 0,
8534
- "data-column-resizable": columnFeatures[column.key].resizable,
8535
- "data-filter-active": Boolean((_a3 = filters[column.key]) == null ? void 0 : _a3.trim()),
8536
- "data-menu-open": (openMenu == null ? void 0 : openMenu.key) === column.key,
8537
- scope: "col",
8538
- style: columnWidths[column.key] ? { width: columnWidths[column.key], minWidth: columnWidths[column.key] } : void 0,
8539
- children: [
8540
- /* @__PURE__ */ jsx61(
8541
- HeaderContent,
8542
- {
8543
- filterActive: Boolean((_b3 = filters[column.key]) == null ? void 0 : _b3.trim()),
8544
- filterable: columnFeatures[column.key].filterable,
8545
- label: column.label,
8546
- menuId: column.key,
8547
- sortDirection: (sort == null ? void 0 : sort.key) === column.key ? sort.direction : void 0,
8548
- sortable: columnFeatures[column.key].sortable,
8549
- menuOpen: (openMenu == null ? void 0 : openMenu.key) === column.key,
8550
- onMenuToggle: (button) => {
8551
- if ((openMenu == null ? void 0 : openMenu.key) === column.key) {
8552
- closeHeaderMenu();
8553
- return;
8554
- }
8555
- openHeaderMenu({
8556
- align: column.key === "team" ? "left" : "right",
8557
- button,
8558
- key: column.key,
8559
- label: column.label
8560
- });
8561
- },
8562
- onSort: () => toggleSort(column.key)
8563
- }
8564
- ),
8565
- columnFeatures[column.key].resizable ? /* @__PURE__ */ jsx61(
8566
- ColumnResizeHandle,
8567
- {
8568
- onResizeStart: (event) => beginResize(event, column.key)
8569
- }
8570
- ) : null
8571
- ]
8572
- },
8573
- column.key
8574
- );
8575
- }) }) }),
8576
- /* @__PURE__ */ jsxs51("tbody", { onPointerDown: handleBodyPointerDown, children: [
8577
- visibleRows.map((row) => {
8911
+ onScroll: (event) => {
8912
+ if (virtualized) {
8913
+ setScrollTop(event.currentTarget.scrollTop);
8914
+ }
8915
+ },
8916
+ style: { maxHeight: viewportHeight },
8917
+ children: [
8918
+ /* @__PURE__ */ jsxs51("table", { className: DataGrid_default.grid, children: [
8919
+ caption ? /* @__PURE__ */ jsx61("caption", { className: DataGrid_default.visuallyHidden, children: caption }) : null,
8920
+ /* @__PURE__ */ jsx61("colgroup", { children: gridColumns.map((column) => {
8578
8921
  var _a3;
8579
- return /* @__PURE__ */ jsxs51("tr", { children: [
8580
- /* @__PURE__ */ jsx61(
8581
- "th",
8582
- {
8583
- className: DataGrid_default.rowHeader,
8584
- scope: "row",
8585
- style: columnWidths.team ? { width: columnWidths.team, minWidth: columnWidths.team } : void 0,
8586
- children: (_a3 = row.values.team) != null ? _a3 : row.label
8587
- }
8588
- ),
8589
- dataColumns.map((column) => {
8590
- var _a4;
8591
- return /* @__PURE__ */ jsx61(
8592
- "td",
8593
- {
8594
- "data-align": (_a4 = column.align) != null ? _a4 : "left",
8595
- "data-column-key": column.key,
8596
- "data-column-resizable": columnFeatures[column.key].resizable,
8597
- style: columnWidths[column.key] ? { width: columnWidths[column.key], minWidth: columnWidths[column.key] } : void 0,
8598
- children: row.values[column.key]
8599
- },
8600
- column.key
8601
- );
8602
- })
8603
- ] }, row.id);
8604
- }),
8605
- !visibleRows.length ? /* @__PURE__ */ jsxs51("tr", { children: [
8606
- /* @__PURE__ */ jsx61("th", { className: DataGrid_default.rowHeader, scope: "row", children: "No rows" }),
8607
- /* @__PURE__ */ jsx61("td", { className: DataGrid_default.empty, colSpan: Math.max(dataColumns.length, 1), children: "No matching rows." })
8608
- ] }) : null
8609
- ] })
8610
- ] })
8922
+ return /* @__PURE__ */ jsx61(
8923
+ "col",
8924
+ {
8925
+ style: { width: (_a3 = columnWidths[column.key]) != null ? _a3 : column.key === "team" ? 180 : 130 }
8926
+ },
8927
+ column.key
8928
+ );
8929
+ }) }),
8930
+ /* @__PURE__ */ jsx61("thead", { children: /* @__PURE__ */ jsx61("tr", { children: gridColumns.map((column) => {
8931
+ var _a3, _b3;
8932
+ return /* @__PURE__ */ jsxs51(
8933
+ "th",
8934
+ {
8935
+ "aria-sort": columnFeatures[column.key].sortable ? (sort == null ? void 0 : sort.key) === column.key ? sort.direction : "none" : void 0,
8936
+ className: column.key === "team" ? DataGrid_default.corner : void 0,
8937
+ "data-column-resizable": columnFeatures[column.key].resizable,
8938
+ "data-filter-active": Boolean((_a3 = filters[column.key]) == null ? void 0 : _a3.trim()),
8939
+ "data-menu-open": (openMenu == null ? void 0 : openMenu.key) === column.key,
8940
+ scope: "col",
8941
+ style: columnWidths[column.key] ? { width: columnWidths[column.key], minWidth: columnWidths[column.key] } : void 0,
8942
+ children: [
8943
+ /* @__PURE__ */ jsx61(
8944
+ HeaderContent,
8945
+ {
8946
+ filterActive: Boolean((_b3 = filters[column.key]) == null ? void 0 : _b3.trim()),
8947
+ filterable: columnFeatures[column.key].filterable,
8948
+ label: column.label,
8949
+ menuId: column.key,
8950
+ sortDirection: (sort == null ? void 0 : sort.key) === column.key ? sort.direction : void 0,
8951
+ sortable: columnFeatures[column.key].sortable,
8952
+ menuOpen: (openMenu == null ? void 0 : openMenu.key) === column.key,
8953
+ onMenuToggle: (button) => {
8954
+ if ((openMenu == null ? void 0 : openMenu.key) === column.key) {
8955
+ closeHeaderMenu();
8956
+ return;
8957
+ }
8958
+ openHeaderMenu({
8959
+ align: column.key === "team" ? "left" : "right",
8960
+ button,
8961
+ key: column.key,
8962
+ label: column.label
8963
+ });
8964
+ },
8965
+ onSort: () => toggleSort(column.key)
8966
+ }
8967
+ ),
8968
+ columnFeatures[column.key].resizable ? /* @__PURE__ */ jsx61(
8969
+ ColumnResizeHandle,
8970
+ {
8971
+ onResizeStart: (event) => beginResize(event, column.key)
8972
+ }
8973
+ ) : null
8974
+ ]
8975
+ },
8976
+ column.key
8977
+ );
8978
+ }) }) }),
8979
+ /* @__PURE__ */ jsxs51("tbody", { onPointerDown: handleBodyPointerDown, children: [
8980
+ virtualized && virtualWindow.paddingTop > 0 ? /* @__PURE__ */ jsx61("tr", { "aria-hidden": "true", className: DataGrid_default.spacerRow, children: /* @__PURE__ */ jsx61("td", { colSpan, style: { height: virtualWindow.paddingTop, padding: 0 } }) }) : null,
8981
+ virtualWindow.items.map((entry, index) => renderDisplayRow(entry, virtualWindow.offset + index)),
8982
+ virtualized && virtualWindow.paddingBottom > 0 ? /* @__PURE__ */ jsx61("tr", { "aria-hidden": "true", className: DataGrid_default.spacerRow, children: /* @__PURE__ */ jsx61("td", { colSpan, style: { height: virtualWindow.paddingBottom, padding: 0 } }) }) : null,
8983
+ !displayRows.length ? /* @__PURE__ */ jsxs51("tr", { children: [
8984
+ /* @__PURE__ */ jsx61("th", { className: DataGrid_default.rowHeader, scope: "row", children: "No rows" }),
8985
+ /* @__PURE__ */ jsx61("td", { className: DataGrid_default.empty, colSpan: Math.max(dataColumns.length, 1), children: "No matching rows." })
8986
+ ] }) : null
8987
+ ] })
8988
+ ] }),
8989
+ onLoadMore || hasMore ? /* @__PURE__ */ jsx61("div", { className: DataGrid_default.infiniteFooter, ref: sentinelRef, children: loadingMore ? "Loading more\u2026" : hasMore ? "Scroll for more" : "End of results" }) : null
8990
+ ]
8611
8991
  }
8612
8992
  ),
8613
8993
  openMenu ? /* @__PURE__ */ jsx61("div", { className: DataGrid_default.menuHost, ref: menuHostRef, children: /* @__PURE__ */ jsx61(
8614
8994
  GridHeaderMenu,
8615
8995
  {
8616
8996
  ref: menuRef,
8617
- filter: (_b2 = filters[openMenu.key]) != null ? _b2 : "",
8618
- filterable: (_c2 = openMenuFeatures == null ? void 0 : openMenuFeatures.filterable) != null ? _c2 : false,
8997
+ filter: (_d2 = filters[openMenu.key]) != null ? _d2 : "",
8998
+ filterable: (_e2 = openMenuFeatures == null ? void 0 : openMenuFeatures.filterable) != null ? _e2 : false,
8619
8999
  label: openMenu.label,
8620
9000
  menuId: openMenu.menuId,
8621
9001
  sortDirection: (sort == null ? void 0 : sort.key) === openMenu.key ? sort.direction : void 0,
8622
- sortable: (_d2 = openMenuFeatures == null ? void 0 : openMenuFeatures.sortable) != null ? _d2 : false,
9002
+ sortable: (_f2 = openMenuFeatures == null ? void 0 : openMenuFeatures.sortable) != null ? _f2 : false,
8623
9003
  onFilterChange: (filter) => setFilters((current) => __spreadProps(__spreadValues({}, current), { [openMenu.key]: filter })),
8624
9004
  onMenuClose: closeHeaderMenu,
8625
9005
  onSortDirection: (direction) => setSortDirection(openMenu.key, direction)
@@ -8771,7 +9151,7 @@ var GridHeaderMenu = forwardRef(function GridHeaderMenu2({
8771
9151
  });
8772
9152
 
8773
9153
  // ../../components/Chart/Chart.tsx
8774
- import { useEffect as useEffect22, useId as useId17, useRef as useRef24, useState as useState30 } from "react";
9154
+ import { useEffect as useEffect23, useId as useId17, useRef as useRef24, useState as useState30 } from "react";
8775
9155
 
8776
9156
  // ../../components/Chart/sankeyLayout.ts
8777
9157
  var demoSankeyNodes = [
@@ -8911,6 +9291,12 @@ var chartDemoData = [
8911
9291
  { label: "May", value: 58, values: [58, 56, 36], x: 74, y: 58 },
8912
9292
  { label: "Jun", value: 88, values: [88, 62, 42], x: 88, y: 92 }
8913
9293
  ];
9294
+ var chartContourData = Array.from({ length: 36 }, (_, index) => {
9295
+ const x = index % 6;
9296
+ const y = Math.floor(index / 6);
9297
+ const value = 35 + Math.round(45 * Math.exp(-((x - 2.4) ** 2 + (y - 2.8) ** 2) / 4));
9298
+ return { label: `${x},${y}`, value, x, y };
9299
+ });
8914
9300
  function branchLeaves(prefix, parent, group, count = 5) {
8915
9301
  return Array.from({ length: count }, (_, index) => ({
8916
9302
  label: `${prefix}${index + 1}`,
@@ -9989,6 +10375,15 @@ var specializedChartVariants = /* @__PURE__ */ new Set([
9989
10375
  "sankey",
9990
10376
  "waterfall",
9991
10377
  "candlestick",
10378
+ "ohlc",
10379
+ "range-area",
10380
+ "range-bar",
10381
+ "error-bar",
10382
+ "parallel-coordinates",
10383
+ "contour",
10384
+ "surface",
10385
+ "bullet",
10386
+ "pareto",
9992
10387
  "box-plot",
9993
10388
  "histogram",
9994
10389
  "violin",
@@ -10015,6 +10410,12 @@ var cartesianSpecializedVariants = [
10015
10410
  "histogram",
10016
10411
  "waterfall",
10017
10412
  "candlestick",
10413
+ "ohlc",
10414
+ "range-area",
10415
+ "range-bar",
10416
+ "error-bar",
10417
+ "bullet",
10418
+ "pareto",
10018
10419
  "box-plot",
10019
10420
  "violin",
10020
10421
  "hexbin",
@@ -10026,15 +10427,30 @@ var cartesianSpecializedVariants = [
10026
10427
  "milestone-timeline"
10027
10428
  ];
10028
10429
  function specializedVariantHasYNumericAxis(variant) {
10029
- return !["timeline", "milestone-timeline", "gantt", "heatmap", "calendar-heatmap", "ridgeline", "hexbin"].includes(
10030
- variant
10031
- );
10430
+ return ![
10431
+ "timeline",
10432
+ "milestone-timeline",
10433
+ "gantt",
10434
+ "heatmap",
10435
+ "calendar-heatmap",
10436
+ "ridgeline",
10437
+ "hexbin",
10438
+ "contour",
10439
+ "surface",
10440
+ "parallel-coordinates"
10441
+ ].includes(variant);
10032
10442
  }
10033
10443
  function specializedVariantHasXCategoryLabels(variant) {
10034
10444
  return [
10035
10445
  "histogram",
10036
10446
  "waterfall",
10037
10447
  "candlestick",
10448
+ "ohlc",
10449
+ "range-area",
10450
+ "range-bar",
10451
+ "error-bar",
10452
+ "bullet",
10453
+ "pareto",
10038
10454
  "box-plot",
10039
10455
  "violin",
10040
10456
  "stream",
@@ -10045,7 +10461,7 @@ function specializedVariantHasXCategoryLabels(variant) {
10045
10461
  ].includes(variant);
10046
10462
  }
10047
10463
  function specializedVariantUsesSlotLabels(variant) {
10048
- return ["waterfall"].includes(variant);
10464
+ return ["waterfall", "range-area", "bullet"].includes(variant);
10049
10465
  }
10050
10466
  function getSeriesPlotBounds(plot) {
10051
10467
  return {
@@ -10313,57 +10729,443 @@ function Candlestick({ data, plot, showValues, styles, yMax, yMin }) {
10313
10729
  })
10314
10730
  ] });
10315
10731
  }
10316
- function BoxPlot({ data, plot, showValues, styles, yMax, yMin }) {
10317
- const barHalfWidth = getBoxPlotBarHalfWidth(plot, data.length);
10318
- const boxWidth = barHalfWidth * 2;
10732
+ function OhlcChart({ data, plot, showValues, styles, yMax, yMin }) {
10733
+ const bodyWidth = candlestickBodyWidth(plot, data.length);
10734
+ const barHalfWidth = bodyWidth / 2;
10735
+ const tick = Math.max(4, bodyWidth * 0.45);
10319
10736
  return /* @__PURE__ */ jsx62("g", { children: data.map((item, index) => {
10320
- var _a2, _b2, _c2, _d2, _e2;
10321
- const min = (_a2 = item.min) != null ? _a2 : item.value * 0.6;
10322
- const q1 = (_b2 = item.q1) != null ? _b2 : item.value * 0.78;
10323
- const median = (_c2 = item.median) != null ? _c2 : item.value;
10324
- const q3 = (_d2 = item.q3) != null ? _d2 : item.value * 1.18;
10325
- const maxV = (_e2 = item.max) != null ? _e2 : item.value * 1.35;
10737
+ var _a2, _b2, _c2, _d2;
10738
+ const open = (_a2 = item.open) != null ? _a2 : item.value * 0.9;
10739
+ const close = (_b2 = item.close) != null ? _b2 : item.value;
10740
+ const high = (_c2 = item.high) != null ? _c2 : item.value * 1.08;
10741
+ const low = (_d2 = item.low) != null ? _d2 : item.value * 0.82;
10326
10742
  const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);
10327
- const seriesClass = chartClass(styles, index % paletteClasses.length);
10743
+ const bullish = close >= open;
10744
+ const openY = yForDomain(open, yMin, yMax, plot);
10745
+ const closeY = yForDomain(close, yMin, yMax, plot);
10746
+ const seriesClass = chartClass(styles, bullish ? 1 : 3);
10328
10747
  return /* @__PURE__ */ jsxs52("g", { children: [
10329
- /* @__PURE__ */ jsx62("line", { className: `${styles.wick} ${seriesClass}`, x1: x, x2: x, y1: yForDomain(min, yMin, yMax, plot), y2: yForDomain(maxV, yMin, yMax, plot) }),
10330
- /* @__PURE__ */ jsx62("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) }),
10331
- /* @__PURE__ */ jsx62("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) }),
10332
10748
  /* @__PURE__ */ jsx62(
10333
- "rect",
10749
+ "line",
10334
10750
  {
10335
- className: `${styles.area} ${seriesClass}`,
10336
- height: yForDomain(q1, yMin, yMax, plot) - yForDomain(q3, yMin, yMax, plot),
10337
- width: boxWidth,
10338
- x: x - boxWidth / 2,
10339
- y: yForDomain(q3, yMin, yMax, plot)
10751
+ className: `${styles.wick} ${seriesClass}`,
10752
+ x1: x,
10753
+ x2: x,
10754
+ y1: yForDomain(high, yMin, yMax, plot),
10755
+ y2: yForDomain(low, yMin, yMax, plot)
10340
10756
  }
10341
10757
  ),
10342
- /* @__PURE__ */ jsx62("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) }),
10343
- showValues ? /* @__PURE__ */ jsx62("text", { className: styles.valueLabel, textAnchor: "middle", x, y: yForDomain(maxV, yMin, yMax, plot) - 6, children: formatValue(median) }) : null
10758
+ /* @__PURE__ */ jsx62("line", { className: `${styles.wick} ${seriesClass}`, x1: x - tick, x2: x, y1: openY, y2: openY }),
10759
+ /* @__PURE__ */ jsx62("line", { className: `${styles.wick} ${seriesClass}`, x1: x, x2: x + tick, y1: closeY, y2: closeY }),
10760
+ showValues ? /* @__PURE__ */ jsx62("text", { className: styles.valueLabel, textAnchor: "middle", x, y: yForDomain(high, yMin, yMax, plot) - 6, children: formatValue(close) }) : null
10344
10761
  ] }, item.label);
10345
10762
  }) });
10346
10763
  }
10347
- function truncateLabel(label, maxChars) {
10348
- if (maxChars < 4) {
10349
- return "";
10350
- }
10351
- if (label.length <= maxChars) {
10352
- return label;
10764
+ function RangeAreaChart({ data, plot, showValues, styles, yMax, yMin }) {
10765
+ if (!data.length) {
10766
+ return null;
10353
10767
  }
10354
- return `${label.slice(0, maxChars - 1)}\u2026`;
10768
+ const points = data.map((item, index) => {
10769
+ var _a2, _b2, _c2, _d2;
10770
+ const low = (_b2 = (_a2 = item.low) != null ? _a2 : item.min) != null ? _b2 : item.value * 0.75;
10771
+ const high = (_d2 = (_c2 = item.high) != null ? _c2 : item.max) != null ? _d2 : item.value * 1.25;
10772
+ const mid = item.value;
10773
+ const x = xForSeriesCategoryIndex(plot, index, data.length);
10774
+ return {
10775
+ x,
10776
+ lowY: yForDomain(low, yMin, yMax, plot),
10777
+ midY: yForDomain(mid, yMin, yMax, plot),
10778
+ highY: yForDomain(high, yMin, yMax, plot),
10779
+ label: item.label,
10780
+ mid
10781
+ };
10782
+ });
10783
+ const band = [
10784
+ ...points.map((point) => `${point.x},${point.highY}`),
10785
+ ...[...points].reverse().map((point) => `${point.x},${point.lowY}`)
10786
+ ].join(" ");
10787
+ const midLine = points.map((point) => `${point.x},${point.midY}`).join(" ");
10788
+ return /* @__PURE__ */ jsxs52("g", { children: [
10789
+ /* @__PURE__ */ jsx62("polygon", { className: `${styles.area} ${chartClass(styles, 0)}`, points: band }),
10790
+ /* @__PURE__ */ jsx62("polyline", { className: `${styles.line} ${chartClass(styles, 1)}`, fill: "none", points: midLine }),
10791
+ showValues ? points.map((point) => /* @__PURE__ */ jsx62("text", { className: styles.valueLabel, textAnchor: "middle", x: point.x, y: point.highY - 6, children: formatValue(point.mid) }, point.label)) : null
10792
+ ] });
10355
10793
  }
10356
- function Treemap({ data, plot, showValues, styles }) {
10357
- const gap = 2;
10358
- const labelHeight = 18;
10359
- const items = data.map((item, index) => ({
10360
- group: item.group,
10361
- index,
10362
- label: item.label,
10363
- value: Math.max(0, item.value)
10364
- }));
10365
- const layout = layoutGroupedTreemap(
10366
- items,
10794
+ function RangeBarChart({ data, plot, showValues, styles, yMax, yMin }) {
10795
+ const bodyWidth = candlestickBodyWidth(plot, data.length);
10796
+ const barHalfWidth = bodyWidth / 2;
10797
+ return /* @__PURE__ */ jsx62("g", { children: data.map((item, index) => {
10798
+ var _a2, _b2, _c2, _d2;
10799
+ const low = (_b2 = (_a2 = item.low) != null ? _a2 : item.min) != null ? _b2 : item.value * 0.75;
10800
+ const high = (_d2 = (_c2 = item.high) != null ? _c2 : item.max) != null ? _d2 : item.value * 1.25;
10801
+ const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);
10802
+ const top = yForDomain(high, yMin, yMax, plot);
10803
+ const bottom = yForDomain(low, yMin, yMax, plot);
10804
+ return /* @__PURE__ */ jsxs52("g", { children: [
10805
+ /* @__PURE__ */ jsx62(
10806
+ "rect",
10807
+ {
10808
+ className: `${styles.bar} ${chartClass(styles, index % paletteClasses.length)}`,
10809
+ height: Math.max(4, bottom - top),
10810
+ rx: "3",
10811
+ width: bodyWidth,
10812
+ x: x - bodyWidth / 2,
10813
+ y: top
10814
+ }
10815
+ ),
10816
+ showValues ? /* @__PURE__ */ jsx62("text", { className: styles.valueLabel, textAnchor: "middle", x, y: top - 6, children: formatValue(high) }) : null
10817
+ ] }, item.label);
10818
+ }) });
10819
+ }
10820
+ function ErrorBarChart({ data, plot, showValues, styles, yMax, yMin }) {
10821
+ const bodyWidth = Math.min(18, candlestickBodyWidth(plot, data.length));
10822
+ const barHalfWidth = bodyWidth / 2;
10823
+ const cap = Math.max(4, bodyWidth * 0.55);
10824
+ return /* @__PURE__ */ jsx62("g", { children: data.map((item, index) => {
10825
+ var _a2, _b2, _c2;
10826
+ const error = (_a2 = item.error) != null ? _a2 : item.value * 0.12;
10827
+ const low = (_b2 = item.low) != null ? _b2 : item.value - error;
10828
+ const high = (_c2 = item.high) != null ? _c2 : item.value + error;
10829
+ const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);
10830
+ const valueY = yForDomain(item.value, yMin, yMax, plot);
10831
+ const highY = yForDomain(high, yMin, yMax, plot);
10832
+ const lowY = yForDomain(low, yMin, yMax, plot);
10833
+ const seriesClass = chartClass(styles, index % paletteClasses.length);
10834
+ return /* @__PURE__ */ jsxs52("g", { children: [
10835
+ /* @__PURE__ */ jsx62(
10836
+ "rect",
10837
+ {
10838
+ className: `${styles.bar} ${seriesClass}`,
10839
+ height: Math.max(4, plot.bottom - valueY),
10840
+ rx: "2",
10841
+ width: bodyWidth,
10842
+ x: x - bodyWidth / 2,
10843
+ y: valueY
10844
+ }
10845
+ ),
10846
+ /* @__PURE__ */ jsx62("line", { className: `${styles.wick} ${seriesClass}`, x1: x, x2: x, y1: highY, y2: lowY }),
10847
+ /* @__PURE__ */ jsx62("line", { className: `${styles.wick} ${seriesClass}`, x1: x - cap, x2: x + cap, y1: highY, y2: highY }),
10848
+ /* @__PURE__ */ jsx62("line", { className: `${styles.wick} ${seriesClass}`, x1: x - cap, x2: x + cap, y1: lowY, y2: lowY }),
10849
+ showValues ? /* @__PURE__ */ jsx62("text", { className: styles.valueLabel, textAnchor: "middle", x, y: highY - 6, children: formatValue(item.value) }) : null
10850
+ ] }, item.label);
10851
+ }) });
10852
+ }
10853
+ function ParallelCoordinates({ data, plot, showValues, styles }) {
10854
+ const dims = Math.max(2, ...data.map((item) => {
10855
+ var _a2, _b2;
10856
+ return (_b2 = (_a2 = item.values) == null ? void 0 : _a2.length) != null ? _b2 : 0;
10857
+ }));
10858
+ if (!data.length || dims < 2) {
10859
+ return null;
10860
+ }
10861
+ const axes = Array.from({ length: dims }, (_, dim) => {
10862
+ const values = data.map((item) => {
10863
+ var _a2, _b2;
10864
+ return (_b2 = (_a2 = item.values) == null ? void 0 : _a2[dim]) != null ? _b2 : item.value;
10865
+ });
10866
+ const min = Math.min(...values);
10867
+ const max = Math.max(...values);
10868
+ return { min, max: max === min ? min + 1 : max };
10869
+ });
10870
+ const xAt = (dim) => dims <= 1 ? (plot.gridLeft + plot.gridRight) / 2 : plot.gridLeft + dim * (plot.gridRight - plot.gridLeft) / (dims - 1);
10871
+ return /* @__PURE__ */ jsxs52("g", { children: [
10872
+ axes.map((axis, dim) => {
10873
+ const x = xAt(dim);
10874
+ return /* @__PURE__ */ jsxs52("g", { children: [
10875
+ /* @__PURE__ */ jsx62("line", { className: styles.gridLine, x1: x, x2: x, y1: plot.top, y2: plot.bottom }),
10876
+ /* @__PURE__ */ jsxs52("text", { className: styles.axisLabel, textAnchor: "middle", x, y: plot.bottom + 16, children: [
10877
+ "D",
10878
+ dim + 1
10879
+ ] }),
10880
+ /* @__PURE__ */ jsx62("text", { className: styles.axisLabel, textAnchor: "middle", x, y: plot.top - 8, children: formatValue(axis.max) })
10881
+ ] }, `axis-${dim}`);
10882
+ }),
10883
+ data.map((item, index) => {
10884
+ var _a2, _b2;
10885
+ const points = Array.from({ length: dims }, (_, dim) => {
10886
+ var _a3, _b3;
10887
+ const value = (_b3 = (_a3 = item.values) == null ? void 0 : _a3[dim]) != null ? _b3 : item.value;
10888
+ const axis = axes[dim];
10889
+ const y = plot.bottom - (value - axis.min) / (axis.max - axis.min) * (plot.bottom - plot.top);
10890
+ return `${xAt(dim)},${y}`;
10891
+ }).join(" ");
10892
+ return /* @__PURE__ */ jsxs52("g", { children: [
10893
+ /* @__PURE__ */ jsx62("polyline", { className: `${styles.line} ${chartClass(styles, index % paletteClasses.length)}`, fill: "none", points }),
10894
+ showValues ? /* @__PURE__ */ jsx62(
10895
+ "text",
10896
+ {
10897
+ className: styles.valueLabel,
10898
+ textAnchor: "start",
10899
+ x: xAt(dims - 1) + 6,
10900
+ 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),
10901
+ children: item.label
10902
+ }
10903
+ ) : null
10904
+ ] }, item.label);
10905
+ })
10906
+ ] });
10907
+ }
10908
+ function ContourPlot({ data, plot, showValues, styles }) {
10909
+ const cols = Math.max(4, Math.ceil(Math.sqrt(Math.max(data.length, 1))));
10910
+ const rows = Math.max(3, Math.ceil(data.length / cols));
10911
+ const values = data.length ? data.map((item) => item.value) : Array.from({ length: cols * rows }, (_, index) => 20 + index * 17 % 80);
10912
+ const min = Math.min(...values);
10913
+ const max = Math.max(...values);
10914
+ const cellW = (plot.gridRight - plot.gridLeft) / cols;
10915
+ const cellH = (plot.bottom - plot.top) / rows;
10916
+ return /* @__PURE__ */ jsxs52("g", { children: [
10917
+ Array.from({ length: rows * cols }, (_, index) => {
10918
+ const value = values[index % values.length];
10919
+ const col = index % cols;
10920
+ const row = Math.floor(index / cols);
10921
+ const intensity = (value - min) / Math.max(1, max - min);
10922
+ const band = Math.min(5, Math.floor(intensity * 6));
10923
+ return /* @__PURE__ */ jsx62(
10924
+ "rect",
10925
+ {
10926
+ className: `${styles.area} ${chartClass(styles, band)}`,
10927
+ height: Math.max(2, cellH - 1),
10928
+ opacity: 0.35 + intensity * 0.55,
10929
+ rx: "2",
10930
+ width: Math.max(2, cellW - 1),
10931
+ x: plot.gridLeft + col * cellW,
10932
+ y: plot.top + row * cellH
10933
+ },
10934
+ `contour-${index}`
10935
+ );
10936
+ }),
10937
+ Array.from({ length: 4 }, (_, ring) => {
10938
+ const t = (ring + 1) / 5;
10939
+ const cx = plot.gridLeft + (plot.gridRight - plot.gridLeft) * 0.55;
10940
+ const cy = plot.top + (plot.bottom - plot.top) * 0.48;
10941
+ const rx = (plot.gridRight - plot.gridLeft) * (0.16 + t * 0.28);
10942
+ const ry = (plot.bottom - plot.top) * (0.14 + t * 0.24);
10943
+ return /* @__PURE__ */ jsx62(
10944
+ "ellipse",
10945
+ {
10946
+ className: `${styles.line} ${chartClass(styles, ring % paletteClasses.length)}`,
10947
+ cx,
10948
+ cy,
10949
+ fill: "none",
10950
+ rx,
10951
+ ry
10952
+ },
10953
+ `contour-ring-${ring}`
10954
+ );
10955
+ }),
10956
+ showValues ? /* @__PURE__ */ jsxs52(
10957
+ "text",
10958
+ {
10959
+ className: styles.valueLabel,
10960
+ textAnchor: "middle",
10961
+ x: (plot.gridLeft + plot.gridRight) / 2,
10962
+ y: plot.top + 14,
10963
+ children: [
10964
+ formatValue(max),
10965
+ " peak"
10966
+ ]
10967
+ }
10968
+ ) : null
10969
+ ] });
10970
+ }
10971
+ function SurfacePlot({ data, plot, showValues, styles }) {
10972
+ const cols = 8;
10973
+ const rows = 6;
10974
+ const values = data.length ? data.map((item) => item.value) : Array.from({ length: cols * rows }, (_, index) => 30 + index * 13 % 70);
10975
+ const min = Math.min(...values);
10976
+ const max = Math.max(...values);
10977
+ const cellW = (plot.gridRight - plot.gridLeft) / cols;
10978
+ const cellH = (plot.bottom - plot.top) / rows;
10979
+ const project = (col, row, value) => {
10980
+ const intensity = (value - min) / Math.max(1, max - min);
10981
+ const x = plot.gridLeft + col * cellW + row * cellW * 0.18;
10982
+ const y = plot.top + row * cellH * 0.72 + (1 - intensity) * cellH * 0.55;
10983
+ return { x, y };
10984
+ };
10985
+ return /* @__PURE__ */ jsxs52("g", { children: [
10986
+ Array.from(
10987
+ { length: rows - 1 },
10988
+ (_, row) => Array.from({ length: cols - 1 }, (_2, col) => {
10989
+ const i = row * cols + col;
10990
+ const v00 = values[i % values.length];
10991
+ const v10 = values[(i + 1) % values.length];
10992
+ const v01 = values[(i + cols) % values.length];
10993
+ const v11 = values[(i + cols + 1) % values.length];
10994
+ const p00 = project(col, row, v00);
10995
+ const p10 = project(col + 1, row, v10);
10996
+ const p01 = project(col, row + 1, v01);
10997
+ const p11 = project(col + 1, row + 1, v11);
10998
+ const avg = (v00 + v10 + v01 + v11) / 4;
10999
+ const band = Math.min(5, Math.floor((avg - min) / Math.max(1, max - min) * 6));
11000
+ return /* @__PURE__ */ jsx62(
11001
+ "polygon",
11002
+ {
11003
+ className: `${styles.area} ${chartClass(styles, band)}`,
11004
+ opacity: 0.55 + (avg - min) / Math.max(1, max - min) * 0.35,
11005
+ points: `${p00.x},${p00.y} ${p10.x},${p10.y} ${p11.x},${p11.y} ${p01.x},${p01.y}`
11006
+ },
11007
+ `surface-${row}-${col}`
11008
+ );
11009
+ })
11010
+ ),
11011
+ showValues ? /* @__PURE__ */ jsx62(
11012
+ "text",
11013
+ {
11014
+ className: styles.valueLabel,
11015
+ textAnchor: "middle",
11016
+ x: (plot.gridLeft + plot.gridRight) / 2,
11017
+ y: plot.top + 14,
11018
+ children: "Surface 2D projection"
11019
+ }
11020
+ ) : null
11021
+ ] });
11022
+ }
11023
+ function BulletChart({ data, plot, showValues, styles, yMax, yMin }) {
11024
+ const laneHeight = Math.min(28, (plot.bottom - plot.top) / Math.max(data.length, 1) * 0.62);
11025
+ return /* @__PURE__ */ jsx62("g", { children: data.map((item, index) => {
11026
+ var _a2, _b2, _c2, _d2;
11027
+ const slot = (plot.bottom - plot.top) / Math.max(data.length, 1);
11028
+ const y = plot.top + index * slot + (slot - laneHeight) / 2;
11029
+ const max = Math.max((_a2 = item.max) != null ? _a2 : yMax, (_b2 = item.target) != null ? _b2 : item.value, item.value, 1);
11030
+ const scale = (value) => plot.gridLeft + (value - yMin) / Math.max(1, max - yMin) * (plot.gridRight - plot.gridLeft);
11031
+ const actual = scale(item.value);
11032
+ const target = scale((_c2 = item.target) != null ? _c2 : item.value * 0.85);
11033
+ const qualitative = scale((_d2 = item.max) != null ? _d2 : max);
11034
+ return /* @__PURE__ */ jsxs52("g", { children: [
11035
+ /* @__PURE__ */ jsx62(
11036
+ "rect",
11037
+ {
11038
+ className: `${styles.area} ${chartClass(styles, 5)}`,
11039
+ height: laneHeight,
11040
+ rx: "4",
11041
+ width: Math.max(4, qualitative - plot.gridLeft),
11042
+ x: plot.gridLeft,
11043
+ y
11044
+ }
11045
+ ),
11046
+ /* @__PURE__ */ jsx62(
11047
+ "rect",
11048
+ {
11049
+ className: `${styles.bar} ${chartClass(styles, 0)}`,
11050
+ height: laneHeight * 0.45,
11051
+ rx: "2",
11052
+ width: Math.max(4, actual - plot.gridLeft),
11053
+ x: plot.gridLeft,
11054
+ y: y + laneHeight * 0.275
11055
+ }
11056
+ ),
11057
+ /* @__PURE__ */ jsx62(
11058
+ "line",
11059
+ {
11060
+ className: `${styles.wick} ${chartClass(styles, 3)}`,
11061
+ strokeWidth: "3",
11062
+ x1: target,
11063
+ x2: target,
11064
+ y1: y,
11065
+ y2: y + laneHeight
11066
+ }
11067
+ ),
11068
+ /* @__PURE__ */ jsx62("text", { className: styles.axisLabel, dominantBaseline: "middle", x: plot.gridLeft - 8, y: y + laneHeight / 2, textAnchor: "end", children: item.label }),
11069
+ showValues ? /* @__PURE__ */ jsx62("text", { className: styles.valueLabel, x: actual + 6, y: y + laneHeight / 2 + 4, children: formatValue(item.value) }) : null
11070
+ ] }, item.label);
11071
+ }) });
11072
+ }
11073
+ function ParetoChart({ data, plot, showValues, styles }) {
11074
+ const sorted = [...data].sort((a, b) => b.value - a.value);
11075
+ const total = sorted.reduce((sum, item) => sum + Math.max(0, item.value), 0) || 1;
11076
+ const valueMax = Math.max(1, ...sorted.map((item) => item.value));
11077
+ let running = 0;
11078
+ const bodyWidth = candlestickBodyWidth(plot, sorted.length);
11079
+ const barHalfWidth = bodyWidth / 2;
11080
+ const points = sorted.map((item, index) => {
11081
+ running += Math.max(0, item.value);
11082
+ const cumulative = running / total * 100;
11083
+ const x = xForEdgeBarIndex(plot, index, sorted.length, barHalfWidth);
11084
+ return __spreadProps(__spreadValues({}, item), { cumulative, x });
11085
+ });
11086
+ const linePoints = points.map((item) => `${item.x},${yForDomain(item.cumulative, 0, 100, plot)}`).join(" ");
11087
+ return /* @__PURE__ */ jsxs52("g", { children: [
11088
+ points.map((item) => {
11089
+ const top = yForDomain(item.value, 0, valueMax, plot);
11090
+ return /* @__PURE__ */ jsxs52("g", { children: [
11091
+ /* @__PURE__ */ jsx62(
11092
+ "rect",
11093
+ {
11094
+ className: `${styles.bar} ${chartClass(styles, 0)}`,
11095
+ height: Math.max(4, plot.bottom - top),
11096
+ rx: "2",
11097
+ width: bodyWidth,
11098
+ x: item.x - bodyWidth / 2,
11099
+ y: top
11100
+ }
11101
+ ),
11102
+ showValues ? /* @__PURE__ */ jsx62("text", { className: styles.valueLabel, textAnchor: "middle", x: item.x, y: top - 6, children: formatValue(item.value) }) : null,
11103
+ /* @__PURE__ */ jsx62(
11104
+ "circle",
11105
+ {
11106
+ className: `${styles.point} ${chartClass(styles, 1)}`,
11107
+ cx: item.x,
11108
+ cy: yForDomain(item.cumulative, 0, 100, plot),
11109
+ r: "3.5"
11110
+ }
11111
+ )
11112
+ ] }, item.label);
11113
+ }),
11114
+ /* @__PURE__ */ jsx62("polyline", { className: `${styles.line} ${chartClass(styles, 1)}`, fill: "none", points: linePoints }),
11115
+ /* @__PURE__ */ jsx62("text", { className: styles.axisLabel, textAnchor: "start", x: plot.gridRight + 6, y: plot.top + 4, children: "%" })
11116
+ ] });
11117
+ }
11118
+ function BoxPlot({ data, plot, showValues, styles, yMax, yMin }) {
11119
+ const barHalfWidth = getBoxPlotBarHalfWidth(plot, data.length);
11120
+ const boxWidth = barHalfWidth * 2;
11121
+ return /* @__PURE__ */ jsx62("g", { children: data.map((item, index) => {
11122
+ var _a2, _b2, _c2, _d2, _e2;
11123
+ const min = (_a2 = item.min) != null ? _a2 : item.value * 0.6;
11124
+ const q1 = (_b2 = item.q1) != null ? _b2 : item.value * 0.78;
11125
+ const median = (_c2 = item.median) != null ? _c2 : item.value;
11126
+ const q3 = (_d2 = item.q3) != null ? _d2 : item.value * 1.18;
11127
+ const maxV = (_e2 = item.max) != null ? _e2 : item.value * 1.35;
11128
+ const x = xForEdgeBarIndex(plot, index, data.length, barHalfWidth);
11129
+ const seriesClass = chartClass(styles, index % paletteClasses.length);
11130
+ return /* @__PURE__ */ jsxs52("g", { children: [
11131
+ /* @__PURE__ */ jsx62("line", { className: `${styles.wick} ${seriesClass}`, x1: x, x2: x, y1: yForDomain(min, yMin, yMax, plot), y2: yForDomain(maxV, yMin, yMax, plot) }),
11132
+ /* @__PURE__ */ jsx62("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) }),
11133
+ /* @__PURE__ */ jsx62("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) }),
11134
+ /* @__PURE__ */ jsx62(
11135
+ "rect",
11136
+ {
11137
+ className: `${styles.area} ${seriesClass}`,
11138
+ height: yForDomain(q1, yMin, yMax, plot) - yForDomain(q3, yMin, yMax, plot),
11139
+ width: boxWidth,
11140
+ x: x - boxWidth / 2,
11141
+ y: yForDomain(q3, yMin, yMax, plot)
11142
+ }
11143
+ ),
11144
+ /* @__PURE__ */ jsx62("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) }),
11145
+ showValues ? /* @__PURE__ */ jsx62("text", { className: styles.valueLabel, textAnchor: "middle", x, y: yForDomain(maxV, yMin, yMax, plot) - 6, children: formatValue(median) }) : null
11146
+ ] }, item.label);
11147
+ }) });
11148
+ }
11149
+ function truncateLabel(label, maxChars) {
11150
+ if (maxChars < 4) {
11151
+ return "";
11152
+ }
11153
+ if (label.length <= maxChars) {
11154
+ return label;
11155
+ }
11156
+ return `${label.slice(0, maxChars - 1)}\u2026`;
11157
+ }
11158
+ function Treemap({ data, plot, showValues, styles }) {
11159
+ const gap = 2;
11160
+ const labelHeight = 18;
11161
+ const items = data.map((item, index) => ({
11162
+ group: item.group,
11163
+ index,
11164
+ label: item.label,
11165
+ value: Math.max(0, item.value)
11166
+ }));
11167
+ const layout = layoutGroupedTreemap(
11168
+ items,
10367
11169
  plot.gridLeft,
10368
11170
  plot.top + labelHeight,
10369
11171
  plot.gridRight - plot.gridLeft,
@@ -11042,6 +11844,24 @@ function SpecializedChart(props) {
11042
11844
  return /* @__PURE__ */ jsx62(Waterfall, __spreadValues({}, props));
11043
11845
  case "candlestick":
11044
11846
  return /* @__PURE__ */ jsx62(Candlestick, __spreadValues({}, props));
11847
+ case "ohlc":
11848
+ return /* @__PURE__ */ jsx62(OhlcChart, __spreadValues({}, props));
11849
+ case "range-area":
11850
+ return /* @__PURE__ */ jsx62(RangeAreaChart, __spreadValues({}, props));
11851
+ case "range-bar":
11852
+ return /* @__PURE__ */ jsx62(RangeBarChart, __spreadValues({}, props));
11853
+ case "error-bar":
11854
+ return /* @__PURE__ */ jsx62(ErrorBarChart, __spreadValues({}, props));
11855
+ case "parallel-coordinates":
11856
+ return /* @__PURE__ */ jsx62(ParallelCoordinates, __spreadValues({}, props));
11857
+ case "contour":
11858
+ return /* @__PURE__ */ jsx62(ContourPlot, __spreadValues({}, props));
11859
+ case "surface":
11860
+ return /* @__PURE__ */ jsx62(SurfacePlot, __spreadValues({}, props));
11861
+ case "bullet":
11862
+ return /* @__PURE__ */ jsx62(BulletChart, __spreadValues({}, props));
11863
+ case "pareto":
11864
+ return /* @__PURE__ */ jsx62(ParetoChart, __spreadValues({}, props));
11045
11865
  case "box-plot":
11046
11866
  return /* @__PURE__ */ jsx62(BoxPlot, __spreadValues({}, props));
11047
11867
  case "treemap":
@@ -11086,10 +11906,10 @@ function SpecializedChart(props) {
11086
11906
  }
11087
11907
 
11088
11908
  // ../../components/Chart/Chart.module.css
11089
- 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"};
11909
+ 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"};
11090
11910
 
11091
11911
  // ../../components/Chart/Chart.tsx
11092
- import { Fragment as Fragment7, jsx as jsx63, jsxs as jsxs53 } from "react/jsx-runtime";
11912
+ import { Fragment as Fragment8, jsx as jsx63, jsxs as jsxs53 } from "react/jsx-runtime";
11093
11913
  var cartesianVariants = [
11094
11914
  "bar-vertical",
11095
11915
  "bar-horizontal",
@@ -11311,7 +12131,7 @@ function getWaterfallDomain(data) {
11311
12131
  return { min: min - pad, max: max + pad };
11312
12132
  }
11313
12133
  function getChartYDomain(variant, data, series, fallbackMax) {
11314
- if (variant === "candlestick") {
12134
+ if (variant === "candlestick" || variant === "ohlc") {
11315
12135
  const lows = data.map((item) => {
11316
12136
  var _a2;
11317
12137
  return (_a2 = item.low) != null ? _a2 : item.value * 0.82;
@@ -11325,6 +12145,45 @@ function getChartYDomain(variant, data, series, fallbackMax) {
11325
12145
  const pad = Math.max(0, (max - min) * 0.04);
11326
12146
  return { min: min - pad, max: max + pad };
11327
12147
  }
12148
+ if (variant === "range-area" || variant === "range-bar") {
12149
+ const lows = data.map((item) => {
12150
+ var _a2, _b2;
12151
+ return (_b2 = (_a2 = item.low) != null ? _a2 : item.min) != null ? _b2 : item.value * 0.75;
12152
+ });
12153
+ const highs = data.map((item) => {
12154
+ var _a2, _b2;
12155
+ return (_b2 = (_a2 = item.high) != null ? _a2 : item.max) != null ? _b2 : item.value * 1.25;
12156
+ });
12157
+ const min = Math.min(...lows);
12158
+ const max = Math.max(...highs);
12159
+ const pad = Math.max(0, (max - min) * 0.06);
12160
+ return { min: Math.max(0, min - pad), max: max + pad };
12161
+ }
12162
+ if (variant === "error-bar") {
12163
+ const lows = data.map((item) => {
12164
+ var _a2, _b2;
12165
+ const error = (_a2 = item.error) != null ? _a2 : item.value * 0.12;
12166
+ return ((_b2 = item.low) != null ? _b2 : item.value) - (item.low == null ? error : 0);
12167
+ });
12168
+ const highs = data.map((item) => {
12169
+ var _a2, _b2;
12170
+ const error = (_a2 = item.error) != null ? _a2 : item.value * 0.12;
12171
+ return ((_b2 = item.high) != null ? _b2 : item.value) + (item.high == null ? error : 0);
12172
+ });
12173
+ const min = Math.min(0, ...lows);
12174
+ const max = Math.max(...highs);
12175
+ return { min, max: max * 1.08 };
12176
+ }
12177
+ if (variant === "bullet") {
12178
+ const highs = data.map((item) => {
12179
+ var _a2, _b2;
12180
+ return Math.max(item.value, (_a2 = item.target) != null ? _a2 : item.value, (_b2 = item.max) != null ? _b2 : item.value);
12181
+ });
12182
+ return { min: 0, max: Math.max(1, ...highs) * 1.08 };
12183
+ }
12184
+ if (variant === "pareto") {
12185
+ return { min: 0, max: Math.max(1, ...data.map((item) => item.value)) * 1.08 };
12186
+ }
11328
12187
  if (variant === "box-plot") {
11329
12188
  const lows = data.map((item) => {
11330
12189
  var _a2;
@@ -12004,7 +12863,7 @@ function Chart({
12004
12863
  })
12005
12864
  ) : variant === "stacked-area" ? stackedSeriesMax(series) : useDomainAxis ? yDomain.max : max;
12006
12865
  const axisMin = useDomainAxis ? yDomain.min : 0;
12007
- useEffect22(() => {
12866
+ useEffect23(() => {
12008
12867
  const svg = svgRef.current;
12009
12868
  if (!svg) {
12010
12869
  return;
@@ -12134,7 +12993,7 @@ function Chart({
12134
12993
  variant === "gantt" ? /* @__PURE__ */ jsx63(GanttRowLabels, { data, plot: activePlot, styles: Chart_default }) : null,
12135
12994
  variant === "heatmap" && showAxis ? /* @__PURE__ */ jsx63(HeatmapAxisLabels, { plot: activePlot, styles: Chart_default }) : null,
12136
12995
  variant === "calendar-heatmap" && showAxis ? /* @__PURE__ */ jsx63(CalendarHeatmapAxisLabels, { plot: activePlot, styles: Chart_default }) : null,
12137
- isSpecializedChartVariant(variant) ? /* @__PURE__ */ jsxs53(Fragment7, { children: [
12996
+ isSpecializedChartVariant(variant) ? /* @__PURE__ */ jsxs53(Fragment8, { children: [
12138
12997
  /* @__PURE__ */ jsx63("defs", { children: /* @__PURE__ */ jsx63("clipPath", { id: plotClipId, children: /* @__PURE__ */ jsx63(
12139
12998
  "rect",
12140
12999
  {
@@ -12169,7 +13028,7 @@ function Chart({
12169
13028
  slotBounds: specializedVariantUsesSlotLabels(variant) ? { left: activePlot.gridLeft, right: activePlot.gridRight } : void 0,
12170
13029
  slotCentered: specializedVariantUsesSlotLabels(variant),
12171
13030
  timeline: variant === "timeline" || variant === "milestone-timeline",
12172
- 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
13031
+ 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
12173
13032
  }
12174
13033
  ) : null
12175
13034
  ] }),
@@ -12186,7 +13045,7 @@ function Chart({
12186
13045
  }
12187
13046
 
12188
13047
  // ../../components/Skeleton/Skeleton.module.css
12189
- 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"};
13048
+ 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"};
12190
13049
 
12191
13050
  // ../../components/Skeleton/Skeleton.tsx
12192
13051
  import { jsx as jsx64, jsxs as jsxs54 } from "react/jsx-runtime";
@@ -12227,17 +13086,17 @@ function Skeleton({
12227
13086
  }
12228
13087
 
12229
13088
  // ../../components/Carousel/Carousel.tsx
12230
- import { useCallback as useCallback14, useEffect as useEffect24, useMemo as useMemo15, useRef as useRef26, useState as useState32 } from "react";
12231
- import { faChevronLeft, faChevronRight } from "@fortawesome/free-solid-svg-icons";
13089
+ import { useCallback as useCallback14, useEffect as useEffect25, useMemo as useMemo15, useRef as useRef26, useState as useState32 } from "react";
13090
+ import { faChevronLeft, faChevronRight as faChevronRight2 } from "@fortawesome/free-solid-svg-icons";
12232
13091
  import { FontAwesomeIcon as FontAwesomeIcon8 } from "@fortawesome/react-fontawesome";
12233
13092
 
12234
13093
  // ../../components/Lightbox/Lightbox.tsx
12235
- import { useCallback as useCallback13, useEffect as useEffect23, useRef as useRef25, useState as useState31 } from "react";
13094
+ import { useCallback as useCallback13, useEffect as useEffect24, useRef as useRef25, useState as useState31 } from "react";
12236
13095
  import { faXmark as faXmark2 } from "@fortawesome/free-solid-svg-icons";
12237
13096
  import { FontAwesomeIcon as FontAwesomeIcon7 } from "@fortawesome/react-fontawesome";
12238
13097
 
12239
13098
  // ../../components/Lightbox/Lightbox.module.css
12240
- 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"};
13099
+ 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"};
12241
13100
 
12242
13101
  // ../../components/Lightbox/Lightbox.tsx
12243
13102
  import { jsx as jsx65, jsxs as jsxs55 } from "react/jsx-runtime";
@@ -12270,7 +13129,7 @@ function Lightbox({
12270
13129
  initialFocusRef: closeRef,
12271
13130
  restoreFocus: true
12272
13131
  });
12273
- useEffect23(() => {
13132
+ useEffect24(() => {
12274
13133
  if (!isOpen || !dismissOnEscape) {
12275
13134
  return;
12276
13135
  }
@@ -12282,7 +13141,7 @@ function Lightbox({
12282
13141
  window.addEventListener("keydown", handleKeyDown);
12283
13142
  return () => window.removeEventListener("keydown", handleKeyDown);
12284
13143
  }, [dismissOnEscape, isOpen, setOpen]);
12285
- useEffect23(() => {
13144
+ useEffect24(() => {
12286
13145
  if (isOpen) {
12287
13146
  const timeout2 = window.setTimeout(() => setIsRendered(true), 0);
12288
13147
  return () => window.clearTimeout(timeout2);
@@ -12352,10 +13211,10 @@ function Lightbox({
12352
13211
  }
12353
13212
 
12354
13213
  // ../../components/Carousel/Carousel.module.css
12355
- 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"};
13214
+ 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"};
12356
13215
 
12357
13216
  // ../../components/Carousel/Carousel.tsx
12358
- import { Fragment as Fragment8, jsx as jsx66, jsxs as jsxs56 } from "react/jsx-runtime";
13217
+ import { Fragment as Fragment9, jsx as jsx66, jsxs as jsxs56 } from "react/jsx-runtime";
12359
13218
  function safeIndex(index, total) {
12360
13219
  if (total <= 0) {
12361
13220
  return 0;
@@ -12409,7 +13268,7 @@ function Carousel({
12409
13268
  const [transitionEnabled, setTransitionEnabled] = useState32(true);
12410
13269
  const [isAnimating, setIsAnimating] = useState32(false);
12411
13270
  const isJumpingRef = useRef26(false);
12412
- useEffect24(() => {
13271
+ useEffect25(() => {
12413
13272
  if (images.length === 0) {
12414
13273
  return;
12415
13274
  }
@@ -12554,7 +13413,7 @@ function Carousel({
12554
13413
  })
12555
13414
  }
12556
13415
  ),
12557
- hasMultiple ? /* @__PURE__ */ jsxs56(Fragment8, { children: [
13416
+ hasMultiple ? /* @__PURE__ */ jsxs56(Fragment9, { children: [
12558
13417
  /* @__PURE__ */ jsx66(
12559
13418
  "button",
12560
13419
  {
@@ -12576,7 +13435,7 @@ function Carousel({
12576
13435
  disabled: isAnimating || !loopEnabled && trackIndex === trackImages.length - 1,
12577
13436
  type: "button",
12578
13437
  onClick: handleNext,
12579
- children: /* @__PURE__ */ jsx66(FontAwesomeIcon8, { "aria-hidden": "true", className: Carousel_default.navIcon, icon: faChevronRight })
13438
+ children: /* @__PURE__ */ jsx66(FontAwesomeIcon8, { "aria-hidden": "true", className: Carousel_default.navIcon, icon: faChevronRight2 })
12580
13439
  }
12581
13440
  ),
12582
13441
  showPips ? /* @__PURE__ */ jsx66("div", { "aria-label": "Choose slide", className: Carousel_default.pips, children: images.map((image, index) => {
@@ -12673,13 +13532,13 @@ function ImageGallery({
12673
13532
  }
12674
13533
 
12675
13534
  // ../../components/ModelViewer/ModelViewer.tsx
12676
- import { createElement, useCallback as useCallback15, useEffect as useEffect26, useRef as useRef28, useState as useState34 } from "react";
13535
+ import { createElement, useCallback as useCallback15, useEffect as useEffect27, useRef as useRef28, useState as useState34 } from "react";
12677
13536
 
12678
13537
  // ../../components/ModelViewer/FireBarrelModelViewer.tsx
12679
- import { useEffect as useEffect25, useRef as useRef27, useState as useState33 } from "react";
13538
+ import { useEffect as useEffect26, useRef as useRef27, useState as useState33 } from "react";
12680
13539
 
12681
13540
  // ../../components/ModelViewer/ModelViewer.module.css
12682
- 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"};
13541
+ 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"};
12683
13542
 
12684
13543
  // ../../components/ModelViewer/FireBarrelModelViewer.tsx
12685
13544
  import { jsx as jsx69, jsxs as jsxs58 } from "react/jsx-runtime";
@@ -12693,7 +13552,7 @@ function FireBarrelModelViewer({
12693
13552
  const canvasHostRef = useRef27(null);
12694
13553
  const [failed, setFailed] = useState33(false);
12695
13554
  const [loading, setLoading] = useState33(true);
12696
- useEffect25(() => {
13555
+ useEffect26(() => {
12697
13556
  const canvasHost = canvasHostRef.current;
12698
13557
  if (!canvasHost) {
12699
13558
  return;
@@ -12837,7 +13696,7 @@ function StandardModelViewer({
12837
13696
  const setViewerRef = useCallback15((node) => {
12838
13697
  viewerRef.current = node;
12839
13698
  }, []);
12840
- useEffect26(() => {
13699
+ useEffect27(() => {
12841
13700
  let mounted = true;
12842
13701
  loadModelViewer().then(() => {
12843
13702
  if (mounted) {
@@ -12852,7 +13711,7 @@ function StandardModelViewer({
12852
13711
  mounted = false;
12853
13712
  };
12854
13713
  }, []);
12855
- useEffect26(() => {
13714
+ useEffect27(() => {
12856
13715
  if (!ready || failed || !asset.autoplay) {
12857
13716
  return;
12858
13717
  }
@@ -12892,12 +13751,12 @@ function StandardModelViewer({
12892
13751
  }
12893
13752
 
12894
13753
  // ../../components/ModelLightbox/ModelLightbox.tsx
12895
- import { useCallback as useCallback16, useEffect as useEffect27, useRef as useRef29, useState as useState35 } from "react";
13754
+ import { useCallback as useCallback16, useEffect as useEffect28, useRef as useRef29, useState as useState35 } from "react";
12896
13755
  import { faXmark as faXmark3 } from "@fortawesome/free-solid-svg-icons";
12897
13756
  import { FontAwesomeIcon as FontAwesomeIcon9 } from "@fortawesome/react-fontawesome";
12898
13757
 
12899
13758
  // ../../components/ModelLightbox/ModelLightbox.module.css
12900
- 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"};
13759
+ 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"};
12901
13760
 
12902
13761
  // ../../components/ModelLightbox/ModelLightbox.tsx
12903
13762
  import { jsx as jsx71, jsxs as jsxs60 } from "react/jsx-runtime";
@@ -12927,7 +13786,7 @@ function ModelLightbox({
12927
13786
  initialFocusRef: closeRef,
12928
13787
  restoreFocus: true
12929
13788
  });
12930
- useEffect27(() => {
13789
+ useEffect28(() => {
12931
13790
  if (!isOpen || !dismissOnEscape) {
12932
13791
  return;
12933
13792
  }
@@ -12939,7 +13798,7 @@ function ModelLightbox({
12939
13798
  window.addEventListener("keydown", handleKeyDown);
12940
13799
  return () => window.removeEventListener("keydown", handleKeyDown);
12941
13800
  }, [dismissOnEscape, isOpen, setOpen]);
12942
- useEffect27(() => {
13801
+ useEffect28(() => {
12943
13802
  if (isOpen) {
12944
13803
  const timeout2 = window.setTimeout(() => setIsRendered(true), 0);
12945
13804
  return () => window.clearTimeout(timeout2);
@@ -13008,21 +13867,23 @@ var ModelThumbnail_default = {"staticThumbnail":"opus_NkO9Yb_staticThumbnail","c
13008
13867
  import { jsx as jsx72, jsxs as jsxs61 } from "react/jsx-runtime";
13009
13868
  function ThumbnailContent({
13010
13869
  asset,
13870
+ fill,
13011
13871
  showCaption,
13012
13872
  size
13013
13873
  }) {
13014
- return /* @__PURE__ */ jsxs61("span", { className: ModelThumbnail_default.content, "data-size": size, children: [
13874
+ return /* @__PURE__ */ jsxs61("span", { className: ModelThumbnail_default.content, "data-fill": fill ? "true" : void 0, "data-size": size, children: [
13015
13875
  /* @__PURE__ */ jsx72(ModelViewer, { asset, cameraControls: false, height: "compact", showCaption: false }),
13016
13876
  showCaption ? /* @__PURE__ */ jsx72("span", { className: ModelThumbnail_default.caption, children: asset.name }) : null
13017
13877
  ] });
13018
13878
  }
13019
13879
  function ModelThumbnail({
13020
13880
  asset,
13881
+ fill = false,
13021
13882
  openInLightbox = true,
13022
13883
  showCaption = true,
13023
13884
  size = "medium"
13024
13885
  }) {
13025
- const content = /* @__PURE__ */ jsx72(ThumbnailContent, { asset, showCaption, size });
13886
+ const content = /* @__PURE__ */ jsx72(ThumbnailContent, { asset, fill, showCaption, size });
13026
13887
  if (openInLightbox) {
13027
13888
  return /* @__PURE__ */ jsx72(
13028
13889
  ModelLightbox,
@@ -13056,6 +13917,7 @@ function ModelGallery({
13056
13917
  ModelThumbnail,
13057
13918
  {
13058
13919
  asset,
13920
+ fill: true,
13059
13921
  openInLightbox: true,
13060
13922
  showCaption: showCaptions,
13061
13923
  size: thumbnailSize
@@ -13120,7 +13982,7 @@ function CatalogIcon({ iconName }) {
13120
13982
  }
13121
13983
 
13122
13984
  // ../../components/EmptyState/EmptyState.module.css
13123
- 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"};
13985
+ 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"};
13124
13986
 
13125
13987
  // ../../components/EmptyState/EmptyState.tsx
13126
13988
  import { jsx as jsx75, jsxs as jsxs62 } from "react/jsx-runtime";
@@ -13153,68 +14015,1052 @@ function EmptyState({
13153
14015
  );
13154
14016
  }
13155
14017
 
13156
- // ../../components/Sidebar/Sidebar.tsx
13157
- import {
13158
- createContext as createContext8,
13159
- useContext as useContext9,
13160
- useState as useState36
13161
- } from "react";
14018
+ // ../../components/Badge/Badge.module.css
14019
+ var Badge_default = {"badge":"opus_1GJHzl_badge","dot":"opus_1GJHzl_dot"};
13162
14020
 
13163
- // ../../components/Sidebar/Sidebar.module.css
13164
- 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"};
14021
+ // ../../components/Badge/Badge.tsx
14022
+ import { jsx as jsx76, jsxs as jsxs63 } from "react/jsx-runtime";
14023
+ function Badge({
14024
+ dot = false,
14025
+ label,
14026
+ size = "md",
14027
+ tone = "neutral",
14028
+ variant = "soft"
14029
+ }) {
14030
+ return /* @__PURE__ */ jsxs63("span", { className: Badge_default.badge, "data-size": size, "data-tone": tone, "data-variant": variant, children: [
14031
+ dot ? /* @__PURE__ */ jsx76("span", { "aria-hidden": "true", className: Badge_default.dot }) : null,
14032
+ label
14033
+ ] });
14034
+ }
13165
14035
 
13166
- // ../../components/Sidebar/Sidebar.tsx
13167
- import { Fragment as Fragment9, jsx as jsx76, jsxs as jsxs63 } from "react/jsx-runtime";
13168
- var SidebarContext = createContext8({
13169
- collapsed: false,
13170
- density: "comfortable"
13171
- });
13172
- function Sidebar({
13173
- children,
13174
- collapsed = false,
13175
- density = "comfortable",
13176
- footer,
13177
- header,
13178
- side = "left"
14036
+ // ../../components/Divider/Divider.module.css
14037
+ var Divider_default = {"divider":"opus_ux1i0D_divider","label":"opus_ux1i0D_label","line":"opus_ux1i0D_line","labelled":"opus_ux1i0D_labelled"};
14038
+
14039
+ // ../../components/Divider/Divider.tsx
14040
+ import { jsx as jsx77, jsxs as jsxs64 } from "react/jsx-runtime";
14041
+ function Divider({
14042
+ label,
14043
+ orientation = "horizontal",
14044
+ tone = "default"
13179
14045
  }) {
13180
- return /* @__PURE__ */ jsx76(SidebarContext.Provider, { value: { collapsed, density }, children: /* @__PURE__ */ jsxs63(
13181
- "aside",
13182
- {
13183
- "aria-label": "Sidebar",
14046
+ if (orientation === "vertical") {
14047
+ return /* @__PURE__ */ jsx77(
14048
+ "div",
14049
+ {
14050
+ "aria-orientation": "vertical",
14051
+ className: Divider_default.divider,
14052
+ "data-orientation": "vertical",
14053
+ "data-tone": tone,
14054
+ role: "separator"
14055
+ }
14056
+ );
14057
+ }
14058
+ if (label) {
14059
+ return /* @__PURE__ */ jsxs64("div", { className: Divider_default.labelled, "data-tone": tone, role: "separator", children: [
14060
+ /* @__PURE__ */ jsx77("span", { "aria-hidden": "true", className: Divider_default.line }),
14061
+ /* @__PURE__ */ jsx77("span", { className: Divider_default.label, children: label }),
14062
+ /* @__PURE__ */ jsx77("span", { "aria-hidden": "true", className: Divider_default.line })
14063
+ ] });
14064
+ }
14065
+ return /* @__PURE__ */ jsx77(
14066
+ "hr",
14067
+ {
14068
+ className: Divider_default.divider,
14069
+ "data-orientation": "horizontal",
14070
+ "data-tone": tone
14071
+ }
14072
+ );
14073
+ }
14074
+
14075
+ // ../../components/Avatar/Avatar.tsx
14076
+ import { useMemo as useMemo16, useState as useState36 } from "react";
14077
+
14078
+ // ../../components/Avatar/Avatar.module.css
14079
+ var Avatar_default = {"initials":"opus_jsRWxO_initials","image":"opus_jsRWxO_image","avatar":"opus_jsRWxO_avatar"};
14080
+
14081
+ // ../../components/Avatar/Avatar.tsx
14082
+ import { jsx as jsx78 } from "react/jsx-runtime";
14083
+ function initialsFromName(name) {
14084
+ var _a2, _b2;
14085
+ const parts = name.trim().split(/\s+/).filter(Boolean);
14086
+ if (parts.length === 0) {
14087
+ return "?";
14088
+ }
14089
+ if (parts.length === 1) {
14090
+ return parts[0].slice(0, 2).toUpperCase();
14091
+ }
14092
+ return `${(_a2 = parts[0][0]) != null ? _a2 : ""}${(_b2 = parts[1][0]) != null ? _b2 : ""}`.toUpperCase();
14093
+ }
14094
+ function Avatar({
14095
+ name,
14096
+ shape = "circle",
14097
+ size = "md",
14098
+ src
14099
+ }) {
14100
+ const [failed, setFailed] = useState36(false);
14101
+ const initials = useMemo16(() => initialsFromName(name), [name]);
14102
+ const showImage = Boolean(src) && !failed;
14103
+ return /* @__PURE__ */ jsx78(
14104
+ "span",
14105
+ {
14106
+ "aria-label": name,
14107
+ className: Avatar_default.avatar,
14108
+ "data-shape": shape,
14109
+ "data-size": size,
14110
+ role: "img",
14111
+ title: name,
14112
+ children: showImage ? (
14113
+ // eslint-disable-next-line @next/next/no-img-element
14114
+ /* @__PURE__ */ jsx78(
14115
+ "img",
14116
+ {
14117
+ alt: "",
14118
+ className: Avatar_default.image,
14119
+ onError: () => setFailed(true),
14120
+ src
14121
+ }
14122
+ )
14123
+ ) : /* @__PURE__ */ jsx78("span", { "aria-hidden": "true", className: Avatar_default.initials, children: initials })
14124
+ }
14125
+ );
14126
+ }
14127
+
14128
+ // ../../components/AvatarGroup/AvatarGroup.module.css
14129
+ var AvatarGroup_default = {"group":"opus_Vv36ne_group","overflow":"opus_Vv36ne_overflow","item":"opus_Vv36ne_item"};
14130
+
14131
+ // ../../components/AvatarGroup/AvatarGroup.tsx
14132
+ import { jsx as jsx79, jsxs as jsxs65 } from "react/jsx-runtime";
14133
+ function AvatarGroup({ items, max = 4, size = "md" }) {
14134
+ const safeMax = Math.max(1, Math.round(max));
14135
+ const visible = items.slice(0, safeMax);
14136
+ const overflow = Math.max(0, items.length - visible.length);
14137
+ return /* @__PURE__ */ jsxs65("div", { "aria-label": `${items.length} people`, className: AvatarGroup_default.group, role: "group", children: [
14138
+ visible.map((item, index) => /* @__PURE__ */ jsx79("span", { className: AvatarGroup_default.item, style: { zIndex: visible.length - index }, children: /* @__PURE__ */ jsx79(Avatar, { name: item.name, size, src: item.src }) }, `${item.name}-${index}`)),
14139
+ overflow > 0 ? /* @__PURE__ */ jsxs65(
14140
+ "span",
14141
+ {
14142
+ "aria-label": `${overflow} more`,
14143
+ className: AvatarGroup_default.overflow,
14144
+ "data-size": size,
14145
+ children: [
14146
+ "+",
14147
+ overflow
14148
+ ]
14149
+ }
14150
+ ) : null
14151
+ ] });
14152
+ }
14153
+
14154
+ // ../../components/Statistic/Statistic.module.css
14155
+ var Statistic_default = {"label":"opus_vCN1bv_label","root":"opus_vCN1bv_root","value":"opus_vCN1bv_value","affix":"opus_vCN1bv_affix","trend":"opus_vCN1bv_trend"};
14156
+
14157
+ // ../../components/Statistic/Statistic.tsx
14158
+ import { jsx as jsx80, jsxs as jsxs66 } from "react/jsx-runtime";
14159
+ function Statistic({
14160
+ label,
14161
+ prefix,
14162
+ suffix,
14163
+ trend,
14164
+ trendLabel,
14165
+ value
14166
+ }) {
14167
+ return /* @__PURE__ */ jsxs66("div", { className: Statistic_default.root, children: [
14168
+ /* @__PURE__ */ jsx80("p", { className: Statistic_default.label, children: label }),
14169
+ /* @__PURE__ */ jsxs66("p", { className: Statistic_default.value, children: [
14170
+ prefix ? /* @__PURE__ */ jsx80("span", { className: Statistic_default.affix, children: prefix }) : null,
14171
+ /* @__PURE__ */ jsx80("span", { children: value }),
14172
+ suffix ? /* @__PURE__ */ jsx80("span", { className: Statistic_default.affix, children: suffix }) : null
14173
+ ] }),
14174
+ trend && trendLabel ? /* @__PURE__ */ jsxs66("p", { className: Statistic_default.trend, "data-trend": trend, children: [
14175
+ /* @__PURE__ */ jsx80("span", { "aria-hidden": "true", children: trend === "up" ? "\u2191" : trend === "down" ? "\u2193" : "\u2192" }),
14176
+ trendLabel
14177
+ ] }) : null
14178
+ ] });
14179
+ }
14180
+
14181
+ // ../../components/List/List.module.css
14182
+ 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"};
14183
+
14184
+ // ../../components/List/List.tsx
14185
+ import { jsx as jsx81, jsxs as jsxs67 } from "react/jsx-runtime";
14186
+ function List({ density = "comfortable", items, ordered = false }) {
14187
+ const Tag = ordered ? "ol" : "ul";
14188
+ return /* @__PURE__ */ jsx81(Tag, { className: List_default.list, "data-density": density, "data-ordered": ordered ? "true" : "false", children: items.map((item, index) => /* @__PURE__ */ jsxs67("li", { className: List_default.item, children: [
14189
+ item.icon ? /* @__PURE__ */ jsx81("span", { "aria-hidden": "true", className: List_default.icon, children: /* @__PURE__ */ jsx81(CatalogIcon, { iconName: item.icon }) }) : null,
14190
+ /* @__PURE__ */ jsxs67("div", { className: List_default.body, children: [
14191
+ /* @__PURE__ */ jsxs67("div", { className: List_default.head, children: [
14192
+ /* @__PURE__ */ jsx81("span", { className: List_default.title, children: item.title }),
14193
+ item.meta ? /* @__PURE__ */ jsx81("span", { className: List_default.meta, children: item.meta }) : null
14194
+ ] }),
14195
+ item.description ? /* @__PURE__ */ jsx81("p", { className: List_default.description, children: item.description }) : null
14196
+ ] })
14197
+ ] }, `${item.title}-${index}`)) });
14198
+ }
14199
+
14200
+ // ../../components/DescriptionList/DescriptionList.module.css
14201
+ var DescriptionList_default = {"list":"opus_FY8OsC_list","term":"opus_FY8OsC_term","row":"opus_FY8OsC_row","details":"opus_FY8OsC_details"};
14202
+
14203
+ // ../../components/DescriptionList/DescriptionList.tsx
14204
+ import { jsx as jsx82, jsxs as jsxs68 } from "react/jsx-runtime";
14205
+ function DescriptionList({
14206
+ items,
14207
+ layout = "stacked"
14208
+ }) {
14209
+ return /* @__PURE__ */ jsx82("dl", { className: DescriptionList_default.list, "data-layout": layout, children: items.map((item, index) => /* @__PURE__ */ jsxs68("div", { className: DescriptionList_default.row, children: [
14210
+ /* @__PURE__ */ jsx82("dt", { className: DescriptionList_default.term, children: item.term }),
14211
+ /* @__PURE__ */ jsx82("dd", { className: DescriptionList_default.details, children: item.details })
14212
+ ] }, `${item.term}-${index}`)) });
14213
+ }
14214
+
14215
+ // ../../components/PropertyGrid/PropertyGrid.tsx
14216
+ import { useState as useState37 } from "react";
14217
+
14218
+ // ../../components/PropertyGrid/PropertyGrid.module.css
14219
+ 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"};
14220
+
14221
+ // ../../components/PropertyGrid/PropertyGrid.tsx
14222
+ import { jsx as jsx83, jsxs as jsxs69 } from "react/jsx-runtime";
14223
+ function PropertyGrid({ items }) {
14224
+ const [copiedIndex, setCopiedIndex] = useState37(null);
14225
+ async function copyValue(value, index) {
14226
+ try {
14227
+ await navigator.clipboard.writeText(value);
14228
+ setCopiedIndex(index);
14229
+ window.setTimeout(() => setCopiedIndex((current) => current === index ? null : current), 1200);
14230
+ } catch (e) {
14231
+ setCopiedIndex(null);
14232
+ }
14233
+ }
14234
+ return /* @__PURE__ */ jsx83("div", { className: PropertyGrid_default.grid, role: "table", "aria-label": "Properties", children: items.map((item, index) => /* @__PURE__ */ jsxs69("div", { className: PropertyGrid_default.row, role: "row", children: [
14235
+ /* @__PURE__ */ jsx83("div", { className: PropertyGrid_default.label, role: "rowheader", children: item.label }),
14236
+ /* @__PURE__ */ jsxs69("div", { className: PropertyGrid_default.valueCell, role: "cell", children: [
14237
+ /* @__PURE__ */ jsx83("span", { className: PropertyGrid_default.value, children: item.value }),
14238
+ item.copyable ? /* @__PURE__ */ jsx83(
14239
+ "button",
14240
+ {
14241
+ "aria-label": `Copy ${item.label}`,
14242
+ className: PropertyGrid_default.copy,
14243
+ onClick: () => void copyValue(item.value, index),
14244
+ type: "button",
14245
+ children: copiedIndex === index ? "Copied" : "Copy"
14246
+ }
14247
+ ) : null
14248
+ ] })
14249
+ ] }, `${item.label}-${index}`)) });
14250
+ }
14251
+
14252
+ // ../../components/ContentTimeline/ContentTimeline.module.css
14253
+ 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"};
14254
+
14255
+ // ../../components/ContentTimeline/ContentTimeline.tsx
14256
+ import { jsx as jsx84, jsxs as jsxs70 } from "react/jsx-runtime";
14257
+ function ContentTimeline({ items }) {
14258
+ return /* @__PURE__ */ jsx84("ol", { className: ContentTimeline_default.list, children: items.map((item, index) => {
14259
+ var _a2;
14260
+ return /* @__PURE__ */ jsxs70(
14261
+ "li",
14262
+ {
14263
+ className: ContentTimeline_default.item,
14264
+ "data-status": (_a2 = item.status) != null ? _a2 : "default",
14265
+ children: [
14266
+ /* @__PURE__ */ jsxs70("div", { "aria-hidden": "true", className: ContentTimeline_default.rail, children: [
14267
+ /* @__PURE__ */ jsx84("span", { className: ContentTimeline_default.dot }),
14268
+ index < items.length - 1 ? /* @__PURE__ */ jsx84("span", { className: ContentTimeline_default.line }) : null
14269
+ ] }),
14270
+ /* @__PURE__ */ jsxs70("div", { className: ContentTimeline_default.body, children: [
14271
+ /* @__PURE__ */ jsxs70("div", { className: ContentTimeline_default.head, children: [
14272
+ /* @__PURE__ */ jsx84("h3", { className: ContentTimeline_default.title, children: item.title }),
14273
+ item.time ? /* @__PURE__ */ jsx84("time", { className: ContentTimeline_default.time, children: item.time }) : null
14274
+ ] }),
14275
+ item.description ? /* @__PURE__ */ jsx84("p", { className: ContentTimeline_default.description, children: item.description }) : null
14276
+ ] })
14277
+ ]
14278
+ },
14279
+ `${item.title}-${index}`
14280
+ );
14281
+ }) });
14282
+ }
14283
+
14284
+ // ../../components/TreeView/TreeView.tsx
14285
+ import { useMemo as useMemo17, useState as useState38 } from "react";
14286
+
14287
+ // ../../components/TreeView/TreeView.module.css
14288
+ 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"};
14289
+
14290
+ // ../../components/TreeView/TreeView.tsx
14291
+ import { jsx as jsx85, jsxs as jsxs71 } from "react/jsx-runtime";
14292
+ function collectExpandableIds(nodes) {
14293
+ var _a2;
14294
+ const ids = [];
14295
+ for (const node of nodes) {
14296
+ if ((_a2 = node.children) == null ? void 0 : _a2.length) {
14297
+ ids.push(node.id);
14298
+ ids.push(...collectExpandableIds(node.children));
14299
+ }
14300
+ }
14301
+ return ids;
14302
+ }
14303
+ function TreeNode({
14304
+ depth,
14305
+ expandedIds,
14306
+ node,
14307
+ onToggle
14308
+ }) {
14309
+ var _a2;
14310
+ const hasChildren = Boolean((_a2 = node.children) == null ? void 0 : _a2.length);
14311
+ const expanded = expandedIds.has(node.id);
14312
+ return /* @__PURE__ */ jsxs71("li", { className: TreeView_default.node, children: [
14313
+ /* @__PURE__ */ jsxs71("div", { className: TreeView_default.row, style: { paddingLeft: `${depth * 16 + 8}px` }, children: [
14314
+ hasChildren ? /* @__PURE__ */ jsx85(
14315
+ "button",
14316
+ {
14317
+ "aria-expanded": expanded,
14318
+ "aria-label": `${expanded ? "Collapse" : "Expand"} ${node.label}`,
14319
+ className: TreeView_default.toggle,
14320
+ onClick: () => onToggle(node.id),
14321
+ type: "button",
14322
+ children: /* @__PURE__ */ jsx85("span", { "aria-hidden": "true", children: expanded ? "\u25BE" : "\u25B8" })
14323
+ }
14324
+ ) : /* @__PURE__ */ jsx85("span", { "aria-hidden": "true", className: TreeView_default.leafMark }),
14325
+ /* @__PURE__ */ jsx85("span", { className: TreeView_default.label, children: node.label })
14326
+ ] }),
14327
+ hasChildren && expanded ? /* @__PURE__ */ jsx85("ul", { className: TreeView_default.children, children: node.children.map((child) => /* @__PURE__ */ jsx85(
14328
+ TreeNode,
14329
+ {
14330
+ depth: depth + 1,
14331
+ expandedIds,
14332
+ node: child,
14333
+ onToggle
14334
+ },
14335
+ child.id
14336
+ )) }) : null
14337
+ ] });
14338
+ }
14339
+ function TreeView({ defaultExpandedIds, nodes }) {
14340
+ const fallbackIds = useMemo17(() => collectExpandableIds(nodes).slice(0, 2), [nodes]);
14341
+ const [expandedIds, setExpandedIds] = useState38(
14342
+ () => new Set(defaultExpandedIds != null ? defaultExpandedIds : fallbackIds)
14343
+ );
14344
+ function toggle(id) {
14345
+ setExpandedIds((current) => {
14346
+ const next = new Set(current);
14347
+ if (next.has(id)) {
14348
+ next.delete(id);
14349
+ } else {
14350
+ next.add(id);
14351
+ }
14352
+ return next;
14353
+ });
14354
+ }
14355
+ return /* @__PURE__ */ jsx85("ul", { "aria-label": "Tree", className: TreeView_default.tree, role: "tree", children: nodes.map((node) => /* @__PURE__ */ jsx85(
14356
+ TreeNode,
14357
+ {
14358
+ depth: 0,
14359
+ expandedIds,
14360
+ node,
14361
+ onToggle: toggle
14362
+ },
14363
+ node.id
14364
+ )) });
14365
+ }
14366
+
14367
+ // ../../components/MasonryGrid/MasonryGrid.module.css
14368
+ var MasonryGrid_default = {"card":"opus_Fxxd7-_card","body":"opus_Fxxd7-_body","grid":"opus_Fxxd7-_grid","title":"opus_Fxxd7-_title"};
14369
+
14370
+ // ../../components/MasonryGrid/MasonryGrid.tsx
14371
+ import { jsx as jsx86, jsxs as jsxs72 } from "react/jsx-runtime";
14372
+ function MasonryGrid({ columns = 3, gap = 12, items }) {
14373
+ const safeColumns = Math.min(Math.max(Math.round(columns), 2), 4);
14374
+ const safeGap = Math.min(Math.max(Math.round(gap), 8), 28);
14375
+ return /* @__PURE__ */ jsx86(
14376
+ "div",
14377
+ {
14378
+ className: MasonryGrid_default.grid,
14379
+ style: {
14380
+ columnCount: safeColumns,
14381
+ columnGap: `${safeGap}px`
14382
+ },
14383
+ children: items.map((item, index) => /* @__PURE__ */ jsxs72(
14384
+ "article",
14385
+ {
14386
+ className: MasonryGrid_default.card,
14387
+ style: {
14388
+ marginBottom: `${safeGap}px`,
14389
+ minHeight: item.height ? `${item.height}px` : void 0
14390
+ },
14391
+ children: [
14392
+ /* @__PURE__ */ jsx86("h3", { className: MasonryGrid_default.title, children: item.title }),
14393
+ item.body ? /* @__PURE__ */ jsx86("p", { className: MasonryGrid_default.body, children: item.body }) : null
14394
+ ]
14395
+ },
14396
+ `${item.title}-${index}`
14397
+ ))
14398
+ }
14399
+ );
14400
+ }
14401
+
14402
+ // ../../components/JsonViewer/JsonViewer.tsx
14403
+ import { useMemo as useMemo18, useState as useState39 } from "react";
14404
+
14405
+ // ../../components/JsonViewer/JsonViewer.module.css
14406
+ 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"};
14407
+
14408
+ // ../../components/JsonViewer/JsonViewer.tsx
14409
+ import { jsx as jsx87, jsxs as jsxs73 } from "react/jsx-runtime";
14410
+ function isPlainObject(value) {
14411
+ return typeof value === "object" && value !== null && !Array.isArray(value);
14412
+ }
14413
+ function PrimitiveValue({ value }) {
14414
+ if (value === null) {
14415
+ return /* @__PURE__ */ jsx87("span", { className: JsonViewer_default.null, children: "null" });
14416
+ }
14417
+ if (typeof value === "string") {
14418
+ return /* @__PURE__ */ jsxs73("span", { className: JsonViewer_default.string, children: [
14419
+ '"',
14420
+ value,
14421
+ '"'
14422
+ ] });
14423
+ }
14424
+ if (typeof value === "number") {
14425
+ return /* @__PURE__ */ jsx87("span", { className: JsonViewer_default.number, children: value });
14426
+ }
14427
+ if (typeof value === "boolean") {
14428
+ return /* @__PURE__ */ jsx87("span", { className: JsonViewer_default.boolean, children: String(value) });
14429
+ }
14430
+ return /* @__PURE__ */ jsx87("span", { className: JsonViewer_default.string, children: String(value) });
14431
+ }
14432
+ function JsonNode({ collapsedDepth, depth, name, value }) {
14433
+ const isExpandable = Array.isArray(value) || isPlainObject(value);
14434
+ const [open, setOpen] = useState39(depth < collapsedDepth);
14435
+ if (!isExpandable) {
14436
+ return /* @__PURE__ */ jsxs73("div", { className: JsonViewer_default.line, style: { paddingLeft: `${depth * 14}px` }, children: [
14437
+ name !== void 0 ? /* @__PURE__ */ jsxs73("span", { className: JsonViewer_default.key, children: [
14438
+ name,
14439
+ ": "
14440
+ ] }) : null,
14441
+ /* @__PURE__ */ jsx87(PrimitiveValue, { value })
14442
+ ] });
14443
+ }
14444
+ const entries = Array.isArray(value) ? value.map((entry, index) => [String(index), entry]) : Object.entries(value);
14445
+ const summary = Array.isArray(value) ? `Array(${value.length})` : `Object(${entries.length})`;
14446
+ return /* @__PURE__ */ jsxs73("div", { className: JsonViewer_default.block, children: [
14447
+ /* @__PURE__ */ jsxs73(
14448
+ "button",
14449
+ {
14450
+ "aria-expanded": open,
14451
+ className: JsonViewer_default.toggleLine,
14452
+ onClick: () => setOpen((current) => !current),
14453
+ style: { paddingLeft: `${depth * 14}px` },
14454
+ type: "button",
14455
+ children: [
14456
+ /* @__PURE__ */ jsx87("span", { "aria-hidden": "true", className: JsonViewer_default.chevron, children: open ? "\u25BE" : "\u25B8" }),
14457
+ name !== void 0 ? /* @__PURE__ */ jsxs73("span", { className: JsonViewer_default.key, children: [
14458
+ name,
14459
+ ": "
14460
+ ] }) : null,
14461
+ /* @__PURE__ */ jsx87("span", { className: JsonViewer_default.summary, children: summary })
14462
+ ]
14463
+ }
14464
+ ),
14465
+ open ? /* @__PURE__ */ jsx87("div", { className: JsonViewer_default.children, children: entries.map(([childName, childValue]) => /* @__PURE__ */ jsx87(
14466
+ JsonNode,
14467
+ {
14468
+ collapsedDepth,
14469
+ depth: depth + 1,
14470
+ name: childName,
14471
+ value: childValue
14472
+ },
14473
+ childName
14474
+ )) }) : null
14475
+ ] });
14476
+ }
14477
+ function JsonViewer({ collapsedDepth = 1, value }) {
14478
+ const parsed = useMemo18(() => value, [value]);
14479
+ return /* @__PURE__ */ jsx87("div", { className: JsonViewer_default.root, role: "tree", children: /* @__PURE__ */ jsx87(JsonNode, { collapsedDepth: Math.max(0, collapsedDepth), depth: 0, value: parsed }) });
14480
+ }
14481
+
14482
+ // ../../components/Icon/Icon.tsx
14483
+ import { FontAwesomeIcon as FontAwesomeIcon11 } from "@fortawesome/react-fontawesome";
14484
+
14485
+ // ../../components/Icon/Icon.module.css
14486
+ var Icon_default = {"icon":"opus_7ASn4M_icon"};
14487
+
14488
+ // ../../components/Icon/Icon.tsx
14489
+ import { jsx as jsx88 } from "react/jsx-runtime";
14490
+ function Icon({ label, name, size = "md", tone = "default" }) {
14491
+ const option = getFontAwesomeIconOption(name);
14492
+ return /* @__PURE__ */ jsx88(
14493
+ "span",
14494
+ {
14495
+ "aria-hidden": label ? void 0 : true,
14496
+ "aria-label": label,
14497
+ className: Icon_default.icon,
14498
+ "data-size": size,
14499
+ "data-tone": tone,
14500
+ role: label ? "img" : void 0,
14501
+ children: /* @__PURE__ */ jsx88(FontAwesomeIcon11, { icon: option.icon })
14502
+ }
14503
+ );
14504
+ }
14505
+
14506
+ // ../../components/Spinner/Spinner.module.css
14507
+ var Spinner_default = {"spinner":"opus_g5cd4Q_spinner","ring":"opus_g5cd4Q_ring","opus-spinner-rotate":"opus_g5cd4Q_opus-spinner-rotate"};
14508
+
14509
+ // ../../components/Spinner/Spinner.tsx
14510
+ import { jsx as jsx89 } from "react/jsx-runtime";
14511
+ function Spinner({ label = "Loading", size = "md", tone = "accent" }) {
14512
+ return /* @__PURE__ */ jsx89(
14513
+ "span",
14514
+ {
14515
+ "aria-label": label,
14516
+ className: Spinner_default.spinner,
14517
+ "data-size": size,
14518
+ "data-tone": tone,
14519
+ role: "status",
14520
+ children: /* @__PURE__ */ jsx89("span", { "aria-hidden": "true", className: Spinner_default.ring })
14521
+ }
14522
+ );
14523
+ }
14524
+
14525
+ // ../../components/Portal/Portal.tsx
14526
+ import { createContext as createContext8, useContext as useContext9, useEffect as useEffect29, useMemo as useMemo19, useState as useState40 } from "react";
14527
+ import { createPortal as createPortal5 } from "react-dom";
14528
+ import { Fragment as Fragment10, jsx as jsx90 } from "react/jsx-runtime";
14529
+ var PortalHostContext = createContext8({ container: null });
14530
+ function usePortalHost() {
14531
+ return useContext9(PortalHostContext);
14532
+ }
14533
+ function PortalHost({ children, id = "opus-portal-host" }) {
14534
+ const [container, setContainer] = useState40(null);
14535
+ useEffect29(() => {
14536
+ let host = document.getElementById(id);
14537
+ let created = false;
14538
+ if (!host) {
14539
+ host = document.createElement("div");
14540
+ host.id = id;
14541
+ document.body.appendChild(host);
14542
+ created = true;
14543
+ }
14544
+ setContainer(host);
14545
+ return () => {
14546
+ if (created && (host == null ? void 0 : host.parentNode)) {
14547
+ host.parentNode.removeChild(host);
14548
+ }
14549
+ };
14550
+ }, [id]);
14551
+ const value = useMemo19(() => ({ container }), [container]);
14552
+ return /* @__PURE__ */ jsx90(PortalHostContext.Provider, { value, children });
14553
+ }
14554
+ function Portal({ children, container, disabled = false }) {
14555
+ var _a2;
14556
+ const host = usePortalHost();
14557
+ const [fallback, setFallback] = useState40(null);
14558
+ useEffect29(() => {
14559
+ setFallback(document.body);
14560
+ }, []);
14561
+ if (disabled) {
14562
+ return /* @__PURE__ */ jsx90(Fragment10, { children });
14563
+ }
14564
+ const target = (_a2 = container != null ? container : host.container) != null ? _a2 : fallback;
14565
+ if (!target) {
14566
+ return null;
14567
+ }
14568
+ return createPortal5(children, target);
14569
+ }
14570
+
14571
+ // ../../components/VisuallyHidden/VisuallyHidden.module.css
14572
+ var VisuallyHidden_default = {"hidden":"opus_DIv7wy_hidden"};
14573
+
14574
+ // ../../components/VisuallyHidden/VisuallyHidden.tsx
14575
+ import { jsx as jsx91 } from "react/jsx-runtime";
14576
+ function VisuallyHidden({ as = "span", children }) {
14577
+ const Tag = as;
14578
+ return /* @__PURE__ */ jsx91(Tag, { className: VisuallyHidden_default.hidden, children });
14579
+ }
14580
+
14581
+ // ../../components/FocusTrap/FocusTrap.tsx
14582
+ import { useEffect as useEffect30, useRef as useRef30 } from "react";
14583
+
14584
+ // ../../components/FocusTrap/FocusTrap.module.css
14585
+ var FocusTrap_default = {"trap":"opus_fJckCZ_trap"};
14586
+
14587
+ // ../../components/FocusTrap/FocusTrap.tsx
14588
+ import { jsx as jsx92 } from "react/jsx-runtime";
14589
+ function FocusTrap({
14590
+ active = true,
14591
+ children,
14592
+ initialFocusRef,
14593
+ restoreFocus = true
14594
+ }) {
14595
+ const containerRef = useRef30(null);
14596
+ const previouslyFocusedRef = useRef30(null);
14597
+ useEffect30(() => {
14598
+ if (!active) {
14599
+ return;
14600
+ }
14601
+ previouslyFocusedRef.current = document.activeElement;
14602
+ const frame = window.requestAnimationFrame(() => {
14603
+ var _a2;
14604
+ const preferred = initialFocusRef == null ? void 0 : initialFocusRef.current;
14605
+ if (preferred) {
14606
+ preferred.focus();
14607
+ return;
14608
+ }
14609
+ const container = containerRef.current;
14610
+ if (!container) {
14611
+ return;
14612
+ }
14613
+ (_a2 = getFocusableElements(container)[0]) == null ? void 0 : _a2.focus();
14614
+ });
14615
+ return () => {
14616
+ var _a2, _b2;
14617
+ window.cancelAnimationFrame(frame);
14618
+ if (restoreFocus) {
14619
+ (_b2 = (_a2 = previouslyFocusedRef.current) == null ? void 0 : _a2.focus) == null ? void 0 : _b2.call(_a2);
14620
+ }
14621
+ };
14622
+ }, [active, initialFocusRef, restoreFocus]);
14623
+ useEffect30(() => {
14624
+ if (!active) {
14625
+ return;
14626
+ }
14627
+ const onKeyDown = (event) => {
14628
+ if (event.key !== "Tab") {
14629
+ return;
14630
+ }
14631
+ const container = containerRef.current;
14632
+ if (!container) {
14633
+ return;
14634
+ }
14635
+ const focusable = getFocusableElements(container);
14636
+ if (!focusable.length) {
14637
+ event.preventDefault();
14638
+ return;
14639
+ }
14640
+ const first = focusable[0];
14641
+ const last = focusable[focusable.length - 1];
14642
+ const activeElement = document.activeElement;
14643
+ if (event.shiftKey) {
14644
+ if (activeElement === first || !container.contains(activeElement)) {
14645
+ event.preventDefault();
14646
+ last.focus();
14647
+ }
14648
+ return;
14649
+ }
14650
+ if (activeElement === last || !container.contains(activeElement)) {
14651
+ event.preventDefault();
14652
+ first.focus();
14653
+ }
14654
+ };
14655
+ document.addEventListener("keydown", onKeyDown);
14656
+ return () => document.removeEventListener("keydown", onKeyDown);
14657
+ }, [active]);
14658
+ return /* @__PURE__ */ jsx92("div", { className: FocusTrap_default.trap, "data-active": active, ref: containerRef, children });
14659
+ }
14660
+
14661
+ // ../../components/KeyboardShortcut/KeyboardShortcut.module.css
14662
+ var KeyboardShortcut_default = {"plus":"opus_pZh5vX_plus","shortcut":"opus_pZh5vX_shortcut","key":"opus_pZh5vX_key"};
14663
+
14664
+ // ../../components/KeyboardShortcut/KeyboardShortcut.tsx
14665
+ import { jsx as jsx93, jsxs as jsxs74 } from "react/jsx-runtime";
14666
+ function KeyboardShortcut({ keys, size = "md" }) {
14667
+ return /* @__PURE__ */ jsx93("kbd", { "aria-label": keys.join(" + "), className: KeyboardShortcut_default.shortcut, "data-size": size, children: keys.map((key, index) => /* @__PURE__ */ jsxs74("span", { children: [
14668
+ index > 0 ? /* @__PURE__ */ jsx93("span", { "aria-hidden": "true", className: KeyboardShortcut_default.plus, children: "+" }) : null,
14669
+ /* @__PURE__ */ jsx93("span", { className: KeyboardShortcut_default.key, children: key })
14670
+ ] }, `${key}-${index}`)) });
14671
+ }
14672
+
14673
+ // ../../components/HotkeyManager/HotkeyManager.tsx
14674
+ import {
14675
+ createContext as createContext9,
14676
+ useCallback as useCallback17,
14677
+ useContext as useContext10,
14678
+ useEffect as useEffect31,
14679
+ useMemo as useMemo20,
14680
+ useRef as useRef31,
14681
+ useState as useState41
14682
+ } from "react";
14683
+ import { jsx as jsx94 } from "react/jsx-runtime";
14684
+ var HotkeyManagerContext = createContext9(null);
14685
+ function matchesCombo(event, combo) {
14686
+ const key = event.key.length === 1 ? event.key.toLowerCase() : event.key;
14687
+ const expected = combo.key.length === 1 ? combo.key.toLowerCase() : combo.key;
14688
+ return key === expected && Boolean(combo.meta) === event.metaKey && Boolean(combo.ctrl) === event.ctrlKey && Boolean(combo.alt) === event.altKey && Boolean(combo.shift) === event.shiftKey;
14689
+ }
14690
+ function shortcutsEqual(a, b) {
14691
+ if (a.length !== b.length) {
14692
+ return false;
14693
+ }
14694
+ return a.every((combo, index) => {
14695
+ const other = b[index];
14696
+ 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;
14697
+ });
14698
+ }
14699
+ function HotkeyManager({ children, enabled = true }) {
14700
+ const handlersRef = useRef31(/* @__PURE__ */ new Map());
14701
+ const [shortcuts, setShortcuts] = useState41([]);
14702
+ const syncShortcuts = useCallback17(() => {
14703
+ const next = Array.from(handlersRef.current.values()).map((entry) => entry.combo);
14704
+ setShortcuts((current) => shortcutsEqual(current, next) ? current : next);
14705
+ }, []);
14706
+ const register = useCallback17(
14707
+ (combo, handler) => {
14708
+ handlersRef.current.set(combo.id, { combo, handler });
14709
+ syncShortcuts();
14710
+ return () => {
14711
+ handlersRef.current.delete(combo.id);
14712
+ syncShortcuts();
14713
+ };
14714
+ },
14715
+ [syncShortcuts]
14716
+ );
14717
+ useEffect31(() => {
14718
+ if (!enabled) {
14719
+ return;
14720
+ }
14721
+ const onKeyDown = (event) => {
14722
+ var _a2;
14723
+ const target = event.target;
14724
+ const tag = (_a2 = target == null ? void 0 : target.tagName) == null ? void 0 : _a2.toLowerCase();
14725
+ if (tag === "input" || tag === "textarea" || (target == null ? void 0 : target.isContentEditable)) {
14726
+ return;
14727
+ }
14728
+ for (const entry of handlersRef.current.values()) {
14729
+ if (entry.combo.enabled === false) {
14730
+ continue;
14731
+ }
14732
+ if (matchesCombo(event, entry.combo)) {
14733
+ event.preventDefault();
14734
+ entry.handler();
14735
+ break;
14736
+ }
14737
+ }
14738
+ };
14739
+ window.addEventListener("keydown", onKeyDown);
14740
+ return () => window.removeEventListener("keydown", onKeyDown);
14741
+ }, [enabled]);
14742
+ const value = useMemo20(() => ({ register, shortcuts }), [register, shortcuts]);
14743
+ return /* @__PURE__ */ jsx94(HotkeyManagerContext.Provider, { value, children });
14744
+ }
14745
+ function useHotkey(combo, handler) {
14746
+ const context = useContext10(HotkeyManagerContext);
14747
+ const register = context == null ? void 0 : context.register;
14748
+ const handlerRef = useRef31(handler);
14749
+ handlerRef.current = handler;
14750
+ const { alt, ctrl, description, enabled, id, key, meta, shift } = combo;
14751
+ useEffect31(() => {
14752
+ if (!register) {
14753
+ return;
14754
+ }
14755
+ return register(
14756
+ { alt, ctrl, description, enabled, id, key, meta, shift },
14757
+ () => {
14758
+ handlerRef.current();
14759
+ }
14760
+ );
14761
+ }, [alt, ctrl, description, enabled, id, key, meta, register, shift]);
14762
+ }
14763
+ function useHotkeyManager() {
14764
+ const context = useContext10(HotkeyManagerContext);
14765
+ if (!context) {
14766
+ throw new Error("useHotkeyManager must be used within HotkeyManager");
14767
+ }
14768
+ return context;
14769
+ }
14770
+
14771
+ // ../../components/CopyButton/CopyButton.tsx
14772
+ import { useCallback as useCallback18, useEffect as useEffect32, useState as useState42 } from "react";
14773
+
14774
+ // ../../components/CopyButton/CopyButton.module.css
14775
+ var CopyButton_default = {"wrap":"opus_Ij6tWr_wrap"};
14776
+
14777
+ // ../../components/CopyButton/CopyButton.tsx
14778
+ import { jsx as jsx95 } from "react/jsx-runtime";
14779
+ async function writeClipboard(value) {
14780
+ var _a2;
14781
+ if ((_a2 = navigator.clipboard) == null ? void 0 : _a2.writeText) {
14782
+ await navigator.clipboard.writeText(value);
14783
+ return;
14784
+ }
14785
+ const textarea = document.createElement("textarea");
14786
+ textarea.value = value;
14787
+ textarea.setAttribute("readonly", "");
14788
+ textarea.style.position = "fixed";
14789
+ textarea.style.left = "-9999px";
14790
+ document.body.appendChild(textarea);
14791
+ textarea.select();
14792
+ document.execCommand("copy");
14793
+ document.body.removeChild(textarea);
14794
+ }
14795
+ function CopyButton({
14796
+ children,
14797
+ copiedLabel = "Copied",
14798
+ label = "Copy",
14799
+ resetMs = 1600,
14800
+ value,
14801
+ variant = "secondary",
14802
+ onCopied
14803
+ }) {
14804
+ const [copied, setCopied] = useState42(false);
14805
+ useEffect32(() => {
14806
+ if (!copied) {
14807
+ return;
14808
+ }
14809
+ const timer = window.setTimeout(() => setCopied(false), resetMs);
14810
+ return () => window.clearTimeout(timer);
14811
+ }, [copied, resetMs]);
14812
+ const handleCopy = useCallback18(async () => {
14813
+ try {
14814
+ await writeClipboard(value);
14815
+ setCopied(true);
14816
+ onCopied == null ? void 0 : onCopied();
14817
+ } catch (e) {
14818
+ setCopied(false);
14819
+ }
14820
+ }, [onCopied, value]);
14821
+ return /* @__PURE__ */ jsx95("span", { className: CopyButton_default.wrap, children: /* @__PURE__ */ jsx95(Button, { onClick: handleCopy, type: "button", variant, children: children != null ? children : copied ? copiedLabel : label }) });
14822
+ }
14823
+
14824
+ // ../../components/Clipboard/Clipboard.tsx
14825
+ import { createContext as createContext10, useCallback as useCallback19, useContext as useContext11, useMemo as useMemo21, useState as useState43 } from "react";
14826
+ import { jsx as jsx96 } from "react/jsx-runtime";
14827
+ var ClipboardContext = createContext10(null);
14828
+ async function fallbackWrite(value) {
14829
+ const textarea = document.createElement("textarea");
14830
+ textarea.value = value;
14831
+ textarea.setAttribute("readonly", "");
14832
+ textarea.style.position = "fixed";
14833
+ textarea.style.left = "-9999px";
14834
+ document.body.appendChild(textarea);
14835
+ textarea.select();
14836
+ document.execCommand("copy");
14837
+ document.body.removeChild(textarea);
14838
+ }
14839
+ function ClipboardProvider({ children }) {
14840
+ const [lastCopied, setLastCopied] = useState43(null);
14841
+ const writeText = useCallback19(async (value2) => {
14842
+ var _a2;
14843
+ if ((_a2 = navigator.clipboard) == null ? void 0 : _a2.writeText) {
14844
+ await navigator.clipboard.writeText(value2);
14845
+ } else {
14846
+ await fallbackWrite(value2);
14847
+ }
14848
+ setLastCopied(value2);
14849
+ }, []);
14850
+ const readText = useCallback19(async () => {
14851
+ var _a2;
14852
+ if ((_a2 = navigator.clipboard) == null ? void 0 : _a2.readText) {
14853
+ return navigator.clipboard.readText();
14854
+ }
14855
+ return lastCopied != null ? lastCopied : "";
14856
+ }, [lastCopied]);
14857
+ const value = useMemo21(
14858
+ () => ({ lastCopied, readText, writeText }),
14859
+ [lastCopied, readText, writeText]
14860
+ );
14861
+ return /* @__PURE__ */ jsx96(ClipboardContext.Provider, { value, children });
14862
+ }
14863
+ function useClipboard() {
14864
+ const context = useContext11(ClipboardContext);
14865
+ if (!context) {
14866
+ throw new Error("useClipboard must be used within ClipboardProvider");
14867
+ }
14868
+ return context;
14869
+ }
14870
+ function Clipboard({ children }) {
14871
+ return /* @__PURE__ */ jsx96(ClipboardProvider, { children });
14872
+ }
14873
+
14874
+ // ../../components/ThemeSwitcher/ThemeSwitcher.tsx
14875
+ import { jsx as jsx97 } from "react/jsx-runtime";
14876
+ function ThemeSwitcher({
14877
+ id = "opus-theme-switcher",
14878
+ label = "Theme",
14879
+ value,
14880
+ onChange
14881
+ }) {
14882
+ return /* @__PURE__ */ jsx97(
14883
+ ThemeToggleField,
14884
+ {
14885
+ id,
14886
+ label,
14887
+ mode: "flagged",
14888
+ value,
14889
+ onChange
14890
+ }
14891
+ );
14892
+ }
14893
+
14894
+ // ../../components/ResizeObserver/ResizeObserver.tsx
14895
+ import { useEffect as useEffect33, useRef as useRef32, useState as useState44 } from "react";
14896
+ import { jsx as jsx98 } from "react/jsx-runtime";
14897
+ function ResizeObserver2({ children, className, onResize }) {
14898
+ const ref = useRef32(null);
14899
+ const [size, setSize] = useState44({ width: 0, height: 0 });
14900
+ useEffect33(() => {
14901
+ const node = ref.current;
14902
+ if (!node || typeof window.ResizeObserver === "undefined") {
14903
+ return;
14904
+ }
14905
+ const observer = new window.ResizeObserver((entries) => {
14906
+ const entry = entries[0];
14907
+ if (!entry) {
14908
+ return;
14909
+ }
14910
+ const next = {
14911
+ width: Math.round(entry.contentRect.width),
14912
+ height: Math.round(entry.contentRect.height)
14913
+ };
14914
+ setSize(next);
14915
+ onResize == null ? void 0 : onResize(next);
14916
+ });
14917
+ observer.observe(node);
14918
+ return () => observer.disconnect();
14919
+ }, [onResize]);
14920
+ return /* @__PURE__ */ jsx98("div", { className, ref, children: children(size) });
14921
+ }
14922
+ function useResizeObserver(targetRef) {
14923
+ const [size, setSize] = useState44({ width: 0, height: 0 });
14924
+ useEffect33(() => {
14925
+ const node = targetRef.current;
14926
+ if (!node || typeof window.ResizeObserver === "undefined") {
14927
+ return;
14928
+ }
14929
+ const observer = new window.ResizeObserver((entries) => {
14930
+ const entry = entries[0];
14931
+ if (!entry) {
14932
+ return;
14933
+ }
14934
+ setSize({
14935
+ width: Math.round(entry.contentRect.width),
14936
+ height: Math.round(entry.contentRect.height)
14937
+ });
14938
+ });
14939
+ observer.observe(node);
14940
+ return () => observer.disconnect();
14941
+ }, [targetRef]);
14942
+ return size;
14943
+ }
14944
+
14945
+ // ../../components/IntersectionObserver/IntersectionObserver.tsx
14946
+ import { useEffect as useEffect34, useRef as useRef33, useState as useState45 } from "react";
14947
+ import { jsx as jsx99 } from "react/jsx-runtime";
14948
+ function IntersectionObserver2({
14949
+ children,
14950
+ className,
14951
+ rootMargin = "0px",
14952
+ threshold = 0.25,
14953
+ onChange
14954
+ }) {
14955
+ const ref = useRef33(null);
14956
+ const [isIntersecting, setIsIntersecting] = useState45(false);
14957
+ useEffect34(() => {
14958
+ const node = ref.current;
14959
+ if (!node || typeof window.IntersectionObserver === "undefined") {
14960
+ return;
14961
+ }
14962
+ const observer = new window.IntersectionObserver(
14963
+ (entries) => {
14964
+ const entry = entries[0];
14965
+ if (!entry) {
14966
+ return;
14967
+ }
14968
+ setIsIntersecting(entry.isIntersecting);
14969
+ onChange == null ? void 0 : onChange(entry.isIntersecting);
14970
+ },
14971
+ { rootMargin, threshold }
14972
+ );
14973
+ observer.observe(node);
14974
+ return () => observer.disconnect();
14975
+ }, [onChange, rootMargin, threshold]);
14976
+ return /* @__PURE__ */ jsx99("div", { className, ref, children: children(isIntersecting) });
14977
+ }
14978
+ function useIntersectionObserver(targetRef, options = {}) {
14979
+ const { rootMargin = "0px", threshold = 0.25 } = options;
14980
+ const [isIntersecting, setIsIntersecting] = useState45(false);
14981
+ useEffect34(() => {
14982
+ const node = targetRef.current;
14983
+ if (!node || typeof window.IntersectionObserver === "undefined") {
14984
+ return;
14985
+ }
14986
+ const observer = new window.IntersectionObserver(
14987
+ (entries) => {
14988
+ const entry = entries[0];
14989
+ if (!entry) {
14990
+ return;
14991
+ }
14992
+ setIsIntersecting(entry.isIntersecting);
14993
+ },
14994
+ { rootMargin, threshold }
14995
+ );
14996
+ observer.observe(node);
14997
+ return () => observer.disconnect();
14998
+ }, [rootMargin, targetRef, threshold]);
14999
+ return isIntersecting;
15000
+ }
15001
+
15002
+ // ../../components/Sidebar/Sidebar.tsx
15003
+ import {
15004
+ createContext as createContext11,
15005
+ useContext as useContext12,
15006
+ useState as useState46
15007
+ } from "react";
15008
+
15009
+ // ../../components/Sidebar/Sidebar.module.css
15010
+ 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"};
15011
+
15012
+ // ../../components/Sidebar/Sidebar.tsx
15013
+ import { Fragment as Fragment11, jsx as jsx100, jsxs as jsxs75 } from "react/jsx-runtime";
15014
+ var SidebarContext = createContext11({
15015
+ collapsed: false,
15016
+ density: "comfortable"
15017
+ });
15018
+ function Sidebar({
15019
+ children,
15020
+ collapsed = false,
15021
+ density = "comfortable",
15022
+ footer,
15023
+ header,
15024
+ side = "left"
15025
+ }) {
15026
+ return /* @__PURE__ */ jsx100(SidebarContext.Provider, { value: { collapsed, density }, children: /* @__PURE__ */ jsxs75(
15027
+ "aside",
15028
+ {
15029
+ "aria-label": "Sidebar",
13184
15030
  className: Sidebar_default.sidebar,
13185
15031
  "data-collapsed": collapsed ? "true" : "false",
13186
15032
  "data-density": density,
13187
15033
  "data-side": side,
13188
15034
  children: [
13189
- header ? /* @__PURE__ */ jsx76("div", { className: Sidebar_default.header, children: header }) : null,
13190
- /* @__PURE__ */ jsx76("div", { className: Sidebar_default.body, children }),
13191
- footer ? /* @__PURE__ */ jsx76("div", { className: Sidebar_default.footer, children: footer }) : null
15035
+ header ? /* @__PURE__ */ jsx100("div", { className: Sidebar_default.header, children: header }) : null,
15036
+ /* @__PURE__ */ jsx100("div", { className: Sidebar_default.body, children }),
15037
+ footer ? /* @__PURE__ */ jsx100("div", { className: Sidebar_default.footer, children: footer }) : null
13192
15038
  ]
13193
15039
  }
13194
15040
  ) });
13195
15041
  }
13196
15042
  function SidebarHeader({ children, title }) {
13197
- const { collapsed } = useContext9(SidebarContext);
13198
- return /* @__PURE__ */ jsxs63("div", { className: Sidebar_default.headerInner, children: [
13199
- /* @__PURE__ */ jsx76("h2", { className: collapsed ? Sidebar_default.visuallyHidden : Sidebar_default.headerTitle, children: title }),
15043
+ const { collapsed } = useContext12(SidebarContext);
15044
+ return /* @__PURE__ */ jsxs75("div", { className: Sidebar_default.headerInner, children: [
15045
+ /* @__PURE__ */ jsx100("h2", { className: collapsed ? Sidebar_default.visuallyHidden : Sidebar_default.headerTitle, children: title }),
13200
15046
  children
13201
15047
  ] });
13202
15048
  }
13203
15049
  function SidebarNav({ "aria-label": ariaLabel, children }) {
13204
- return /* @__PURE__ */ jsx76("nav", { "aria-label": ariaLabel, className: Sidebar_default.nav, children });
15050
+ return /* @__PURE__ */ jsx100("nav", { "aria-label": ariaLabel, className: Sidebar_default.nav, children });
13205
15051
  }
13206
15052
  function SidebarLink({ active = false, children, href, onClick }) {
13207
- const { collapsed } = useContext9(SidebarContext);
15053
+ const { collapsed } = useContext12(SidebarContext);
13208
15054
  const className = [Sidebar_default.link, active ? Sidebar_default.linkActive : ""].filter(Boolean).join(" ");
13209
15055
  const label = typeof children === "string" ? children : null;
13210
- const content = /* @__PURE__ */ jsxs63(Fragment9, { children: [
13211
- collapsed && label ? /* @__PURE__ */ jsx76("span", { "aria-hidden": "true", children: label.charAt(0) }) : null,
13212
- /* @__PURE__ */ jsx76("span", { className: collapsed ? Sidebar_default.visuallyHidden : void 0, children })
15056
+ const content = /* @__PURE__ */ jsxs75(Fragment11, { children: [
15057
+ collapsed && label ? /* @__PURE__ */ jsx100("span", { "aria-hidden": "true", children: label.charAt(0) }) : null,
15058
+ /* @__PURE__ */ jsx100("span", { className: collapsed ? Sidebar_default.visuallyHidden : void 0, children })
13213
15059
  ] });
13214
15060
  if (href) {
13215
- return /* @__PURE__ */ jsx76("a", { "aria-current": active ? "page" : void 0, className, href, children: content });
15061
+ return /* @__PURE__ */ jsx100("a", { "aria-current": active ? "page" : void 0, className, href, children: content });
13216
15062
  }
13217
- return /* @__PURE__ */ jsx76(
15063
+ return /* @__PURE__ */ jsx100(
13218
15064
  "button",
13219
15065
  {
13220
15066
  "aria-current": active ? "page" : void 0,
@@ -13233,16 +15079,16 @@ function createGroupListId(label, id) {
13233
15079
  return slug ? `sidebar-group-${slug}` : "sidebar-group";
13234
15080
  }
13235
15081
  function SidebarGroup({ children, defaultOpen = true, id, label }) {
13236
- const { collapsed } = useContext9(SidebarContext);
15082
+ const { collapsed } = useContext12(SidebarContext);
13237
15083
  const listId = createGroupListId(label, id);
13238
- const [open, setOpen] = useState36(defaultOpen);
15084
+ const [open, setOpen] = useState46(defaultOpen);
13239
15085
  if (collapsed) {
13240
- return /* @__PURE__ */ jsx76("div", { "aria-label": label, className: Sidebar_default.group, role: "group", children });
15086
+ return /* @__PURE__ */ jsx100("div", { "aria-label": label, className: Sidebar_default.group, role: "group", children });
13241
15087
  }
13242
- return /* @__PURE__ */ jsxs63("div", { "aria-label": label, className: Sidebar_default.group, role: "group", children: [
13243
- /* @__PURE__ */ jsxs63("div", { className: Sidebar_default.groupHeader, children: [
13244
- /* @__PURE__ */ jsx76("span", { className: Sidebar_default.groupLabel, children: label }),
13245
- /* @__PURE__ */ jsx76(
15088
+ return /* @__PURE__ */ jsxs75("div", { "aria-label": label, className: Sidebar_default.group, role: "group", children: [
15089
+ /* @__PURE__ */ jsxs75("div", { className: Sidebar_default.groupHeader, children: [
15090
+ /* @__PURE__ */ jsx100("span", { className: Sidebar_default.groupLabel, children: label }),
15091
+ /* @__PURE__ */ jsx100(
13246
15092
  "button",
13247
15093
  {
13248
15094
  "aria-controls": listId,
@@ -13251,29 +15097,29 @@ function SidebarGroup({ children, defaultOpen = true, id, label }) {
13251
15097
  className: Sidebar_default.groupToggle,
13252
15098
  onClick: () => setOpen((current) => !current),
13253
15099
  type: "button",
13254
- children: /* @__PURE__ */ jsx76("span", { "aria-hidden": "true", className: open ? Sidebar_default.groupChevronOpen : Sidebar_default.groupChevron })
15100
+ children: /* @__PURE__ */ jsx100("span", { "aria-hidden": "true", className: open ? Sidebar_default.groupChevronOpen : Sidebar_default.groupChevron })
13255
15101
  }
13256
15102
  )
13257
15103
  ] }),
13258
- /* @__PURE__ */ jsx76("div", { className: Sidebar_default.groupItemsWrap, "data-open": open ? "true" : "false", children: /* @__PURE__ */ jsx76("div", { className: Sidebar_default.groupItems, id: listId, inert: !open || void 0, children }) })
15104
+ /* @__PURE__ */ jsx100("div", { className: Sidebar_default.groupItemsWrap, "data-open": open ? "true" : "false", children: /* @__PURE__ */ jsx100("div", { className: Sidebar_default.groupItems, id: listId, inert: !open || void 0, children }) })
13259
15105
  ] });
13260
15106
  }
13261
15107
  function SidebarLayout({ children, collapsed = false, main, side = "left" }) {
13262
- return /* @__PURE__ */ jsxs63("div", { className: Sidebar_default.layout, "data-collapsed": collapsed ? "true" : "false", "data-side": side, children: [
15108
+ return /* @__PURE__ */ jsxs75("div", { className: Sidebar_default.layout, "data-collapsed": collapsed ? "true" : "false", "data-side": side, children: [
13263
15109
  side === "left" ? children : null,
13264
- /* @__PURE__ */ jsx76("div", { className: Sidebar_default.main, children: main }),
15110
+ /* @__PURE__ */ jsx100("div", { className: Sidebar_default.main, children: main }),
13265
15111
  side === "right" ? children : null
13266
15112
  ] });
13267
15113
  }
13268
15114
 
13269
15115
  // ../../components/AccentColorPicker/AccentColorPicker.tsx
13270
- import { useCallback as useCallback17, useEffect as useEffect28, useMemo as useMemo16, useState as useState37 } from "react";
15116
+ import { useCallback as useCallback20, useEffect as useEffect35, useMemo as useMemo22, useState as useState47 } from "react";
13271
15117
 
13272
15118
  // ../../components/AccentColorPicker/AccentColorPicker.module.css
13273
15119
  var AccentColorPicker_default = {"swatches":"opus_scMnrW_swatches","swatch":"opus_scMnrW_swatch"};
13274
15120
 
13275
15121
  // ../../components/AccentColorPicker/AccentColorPicker.tsx
13276
- import { jsx as jsx77 } from "react/jsx-runtime";
15122
+ import { jsx as jsx101 } from "react/jsx-runtime";
13277
15123
  var ACCENT_STORAGE_KEY = "opus-components-accent";
13278
15124
  var DEFAULT_ACCENT_COLOR = "#8f6cff";
13279
15125
  var accentColors = [
@@ -13307,8 +15153,8 @@ function applyDocumentAccent(accent) {
13307
15153
  );
13308
15154
  }
13309
15155
  function useAccentPreference() {
13310
- const [accent, setAccentState] = useState37(DEFAULT_ACCENT_COLOR);
13311
- useEffect28(() => {
15156
+ const [accent, setAccentState] = useState47(DEFAULT_ACCENT_COLOR);
15157
+ useEffect35(() => {
13312
15158
  const timeout = window.setTimeout(() => {
13313
15159
  const stored = window.localStorage.getItem(ACCENT_STORAGE_KEY);
13314
15160
  if (isAccentColor(stored)) {
@@ -13320,7 +15166,7 @@ function useAccentPreference() {
13320
15166
  }, 0);
13321
15167
  return () => window.clearTimeout(timeout);
13322
15168
  }, []);
13323
- const setAccent = useCallback17((next) => {
15169
+ const setAccent = useCallback20((next) => {
13324
15170
  if (!isAccentColor(next)) {
13325
15171
  return;
13326
15172
  }
@@ -13328,7 +15174,7 @@ function useAccentPreference() {
13328
15174
  applyDocumentAccent(next);
13329
15175
  window.localStorage.setItem(ACCENT_STORAGE_KEY, next);
13330
15176
  }, []);
13331
- const accentStyle = useMemo16(() => createAccentStyle(accent), [accent]);
15177
+ const accentStyle = useMemo22(() => createAccentStyle(accent), [accent]);
13332
15178
  return { accent, accentStyle, setAccent };
13333
15179
  }
13334
15180
  function AccentColorPicker({
@@ -13340,7 +15186,7 @@ function AccentColorPicker({
13340
15186
  onChange,
13341
15187
  value
13342
15188
  }) {
13343
- return /* @__PURE__ */ jsx77(
15189
+ return /* @__PURE__ */ jsx101(
13344
15190
  FieldShell,
13345
15191
  {
13346
15192
  fitContent: true,
@@ -13351,9 +15197,9 @@ function AccentColorPicker({
13351
15197
  labelPosition,
13352
15198
  labelTag: "div",
13353
15199
  mode,
13354
- children: /* @__PURE__ */ jsx77("div", { "aria-labelledby": `${id}-label`, className: AccentColorPicker_default.swatches, role: "radiogroup", children: accentColors.map((option) => {
15200
+ children: /* @__PURE__ */ jsx101("div", { "aria-labelledby": `${id}-label`, className: AccentColorPicker_default.swatches, role: "radiogroup", children: accentColors.map((option) => {
13355
15201
  const selected = value === option.value;
13356
- return /* @__PURE__ */ jsx77(
15202
+ return /* @__PURE__ */ jsx101(
13357
15203
  "button",
13358
15204
  {
13359
15205
  "aria-checked": selected,
@@ -13374,14 +15220,14 @@ function AccentColorPicker({
13374
15220
  }
13375
15221
 
13376
15222
  // ../../components/IconPicker/IconPicker.tsx
13377
- import { useEffect as useEffect29, useId as useId19, useMemo as useMemo17, useRef as useRef30, useState as useState38 } from "react";
13378
- import { FontAwesomeIcon as FontAwesomeIcon11 } from "@fortawesome/react-fontawesome";
15223
+ import { useEffect as useEffect36, useId as useId19, useMemo as useMemo23, useRef as useRef34, useState as useState48 } from "react";
15224
+ import { FontAwesomeIcon as FontAwesomeIcon12 } from "@fortawesome/react-fontawesome";
13379
15225
 
13380
15226
  // ../../components/IconPicker/IconPicker.module.css
13381
- 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"};
15227
+ 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"};
13382
15228
 
13383
15229
  // ../../components/IconPicker/IconPicker.tsx
13384
- import { jsx as jsx78, jsxs as jsxs64 } from "react/jsx-runtime";
15230
+ import { jsx as jsx102, jsxs as jsxs76 } from "react/jsx-runtime";
13385
15231
  function IconPicker({
13386
15232
  help,
13387
15233
  id,
@@ -13392,14 +15238,14 @@ function IconPicker({
13392
15238
  searchPlaceholder = "Search icons",
13393
15239
  value
13394
15240
  }) {
13395
- const [open, setOpen] = useState38(false);
13396
- const [query, setQuery] = useState38("");
13397
- const rootRef = useRef30(null);
13398
- const searchRef = useRef30(null);
15241
+ const [open, setOpen] = useState48(false);
15242
+ const [query, setQuery] = useState48("");
15243
+ const rootRef = useRef34(null);
15244
+ const searchRef = useRef34(null);
13399
15245
  const listboxId = useId19();
13400
15246
  const selected = getFontAwesomeIconOption(value);
13401
- const filteredIcons = useMemo17(() => filterFontAwesomeIcons(query), [query]);
13402
- useEffect29(() => {
15247
+ const filteredIcons = useMemo23(() => filterFontAwesomeIcons(query), [query]);
15248
+ useEffect36(() => {
13403
15249
  if (!open) {
13404
15250
  return;
13405
15251
  }
@@ -13426,8 +15272,8 @@ function IconPicker({
13426
15272
  document.removeEventListener("keydown", handleKeyDown);
13427
15273
  };
13428
15274
  }, [open]);
13429
- return /* @__PURE__ */ jsx78(FieldShell, { help, id, label, labelPosition, mode, children: /* @__PURE__ */ jsxs64("div", { className: IconPicker_default.root, ref: rootRef, children: [
13430
- /* @__PURE__ */ jsxs64(
15275
+ return /* @__PURE__ */ jsx102(FieldShell, { help, id, label, labelPosition, mode, children: /* @__PURE__ */ jsxs76("div", { className: IconPicker_default.root, ref: rootRef, children: [
15276
+ /* @__PURE__ */ jsxs76(
13431
15277
  "button",
13432
15278
  {
13433
15279
  "aria-controls": open ? listboxId : void 0,
@@ -13438,14 +15284,14 @@ function IconPicker({
13438
15284
  type: "button",
13439
15285
  onClick: () => setOpen((current) => !current),
13440
15286
  children: [
13441
- /* @__PURE__ */ jsx78("span", { "aria-hidden": "true", className: IconPicker_default.triggerIcon, children: /* @__PURE__ */ jsx78(FontAwesomeIcon11, { icon: selected.icon }) }),
13442
- /* @__PURE__ */ jsx78("span", { className: IconPicker_default.triggerLabel, children: selected.label })
15287
+ /* @__PURE__ */ jsx102("span", { "aria-hidden": "true", className: IconPicker_default.triggerIcon, children: /* @__PURE__ */ jsx102(FontAwesomeIcon12, { icon: selected.icon }) }),
15288
+ /* @__PURE__ */ jsx102("span", { className: IconPicker_default.triggerLabel, children: selected.label })
13443
15289
  ]
13444
15290
  }
13445
15291
  ),
13446
- /* @__PURE__ */ jsx78("span", { "aria-hidden": "true", className: IconPicker_default.chevron }),
13447
- open ? /* @__PURE__ */ jsxs64("div", { className: IconPicker_default.menu, children: [
13448
- /* @__PURE__ */ jsx78(
15292
+ /* @__PURE__ */ jsx102("span", { "aria-hidden": "true", className: IconPicker_default.chevron }),
15293
+ open ? /* @__PURE__ */ jsxs76("div", { className: IconPicker_default.menu, children: [
15294
+ /* @__PURE__ */ jsx102(
13449
15295
  "input",
13450
15296
  {
13451
15297
  "aria-label": searchPlaceholder,
@@ -13457,7 +15303,7 @@ function IconPicker({
13457
15303
  onChange: (event) => setQuery(event.target.value)
13458
15304
  }
13459
15305
  ),
13460
- /* @__PURE__ */ jsx78("div", { className: IconPicker_default.grid, id: listboxId, role: "listbox", children: filteredIcons.length ? filteredIcons.map((entry) => /* @__PURE__ */ jsx78(
15306
+ /* @__PURE__ */ jsx102("div", { className: IconPicker_default.grid, id: listboxId, role: "listbox", children: filteredIcons.length ? filteredIcons.map((entry) => /* @__PURE__ */ jsx102(
13461
15307
  "button",
13462
15308
  {
13463
15309
  "aria-label": entry.label,
@@ -13472,10 +15318,10 @@ function IconPicker({
13472
15318
  setOpen(false);
13473
15319
  setQuery("");
13474
15320
  },
13475
- children: /* @__PURE__ */ jsx78("span", { "aria-hidden": "true", className: IconPicker_default.optionIcon, children: /* @__PURE__ */ jsx78(FontAwesomeIcon11, { icon: entry.icon }) })
15321
+ children: /* @__PURE__ */ jsx102("span", { "aria-hidden": "true", className: IconPicker_default.optionIcon, children: /* @__PURE__ */ jsx102(FontAwesomeIcon12, { icon: entry.icon }) })
13476
15322
  },
13477
15323
  entry.iconName
13478
- )) : /* @__PURE__ */ jsx78("p", { className: IconPicker_default.empty, children: "No icons match your search." }) })
15324
+ )) : /* @__PURE__ */ jsx102("p", { className: IconPicker_default.empty, children: "No icons match your search." }) })
13479
15325
  ] }) : null
13480
15326
  ] }) });
13481
15327
  }
@@ -13484,6 +15330,9 @@ export {
13484
15330
  Accordion,
13485
15331
  AccordionGroup,
13486
15332
  Alert,
15333
+ Avatar,
15334
+ AvatarGroup,
15335
+ Badge,
13487
15336
  Button,
13488
15337
  Card,
13489
15338
  Carousel,
@@ -13493,15 +15342,21 @@ export {
13493
15342
  CheckboxField,
13494
15343
  ChipInput,
13495
15344
  ChipInputField,
15345
+ Clipboard,
15346
+ ClipboardProvider,
13496
15347
  ColorField,
13497
15348
  CommandPalette,
15349
+ ContentTimeline,
13498
15350
  ContextMenuProvider,
13499
15351
  ContextMenuTarget,
15352
+ CopyButton,
13500
15353
  CountryPickerField,
13501
15354
  DEFAULT_TOAST_DURATION_MS,
13502
15355
  DataGrid,
13503
15356
  DateField,
15357
+ DescriptionList,
13504
15358
  Dialog,
15359
+ Divider,
13505
15360
  Drawer,
13506
15361
  DrawerDefaultActions,
13507
15362
  DropdownMenu,
@@ -13510,12 +15365,20 @@ export {
13510
15365
  FieldShell,
13511
15366
  FileField,
13512
15367
  FilterSelectField,
15368
+ FocusTrap,
13513
15369
  Gauge,
13514
15370
  HiddenField,
15371
+ HotkeyManager,
15372
+ Icon,
13515
15373
  IconPicker,
13516
15374
  ImageGallery,
13517
15375
  ImageThumbnail,
15376
+ IntersectionObserver2 as IntersectionObserver,
15377
+ JsonViewer,
15378
+ KeyboardShortcut,
13518
15379
  Lightbox,
15380
+ List,
15381
+ MasonryGrid,
13519
15382
  MegaMenu,
13520
15383
  MetricTile,
13521
15384
  Modal,
@@ -13531,12 +15394,16 @@ export {
13531
15394
  PasswordStrengthField,
13532
15395
  PhoneNumberField,
13533
15396
  Popover,
15397
+ Portal,
15398
+ PortalHost,
13534
15399
  ProgressBar,
13535
15400
  ProgressRing,
15401
+ PropertyGrid,
13536
15402
  Radio,
13537
15403
  RadioGroup,
13538
15404
  RangeField,
13539
15405
  RatingField,
15406
+ ResizeObserver2 as ResizeObserver,
13540
15407
  RichTextField,
13541
15408
  Section,
13542
15409
  SegmentedControlField,
@@ -13552,13 +15419,17 @@ export {
13552
15419
  SliderRangeField,
13553
15420
  Sparkline,
13554
15421
  Speedometer,
15422
+ Spinner,
13555
15423
  StatCard,
15424
+ Statistic,
13556
15425
  StatusIndicator,
13557
15426
  SwitchField,
13558
15427
  Table,
13559
15428
  Tabs,
13560
15429
  TextAreaField,
13561
15430
  TextField,
15431
+ OpusThemeProvider as ThemeProvider,
15432
+ ThemeSwitcher,
13562
15433
  ThemeToggleField,
13563
15434
  Toast,
13564
15435
  ToastProvider,
@@ -13567,7 +15438,9 @@ export {
13567
15438
  TopNavigationMenu,
13568
15439
  TransferListField,
13569
15440
  TreeSelectField,
15441
+ TreeView,
13570
15442
  TrendBadge,
15443
+ VisuallyHidden,
13571
15444
  accentColors,
13572
15445
  cartesianSpecializedVariants,
13573
15446
  countryCodeToFlag,
@@ -13582,9 +15455,15 @@ export {
13582
15455
  fieldInputAriaProps,
13583
15456
  countries as phoneCountries,
13584
15457
  useAccentPreference,
15458
+ useClipboard,
13585
15459
  useContextMenu,
13586
15460
  useFieldShellAria,
15461
+ useHotkey,
15462
+ useHotkeyManager,
15463
+ useIntersectionObserver,
13587
15464
  useOpusTheme,
15465
+ usePortalHost,
15466
+ useResizeObserver,
13588
15467
  useToast,
13589
15468
  useTopNavigation,
13590
15469
  worldMapRegionIds