ixia-ui-react 1.7.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -1
- package/dist/accordion/index.d.ts +41 -0
- package/dist/accordion/index.js +142 -0
- package/dist/accordion/index.js.map +1 -0
- package/dist/alert/index.d.ts +22 -0
- package/dist/alert/index.js +1 -0
- package/dist/alert-Dcu9R8CY.js +73 -0
- package/dist/alert-Dcu9R8CY.js.map +1 -0
- package/dist/alert-dialog/index.d.ts +39 -0
- package/dist/alert-dialog/index.js +134 -0
- package/dist/alert-dialog/index.js.map +1 -0
- package/dist/autocomplete/index.d.ts +2 -0
- package/dist/autocomplete/index.js +1 -0
- package/dist/autocomplete-BfpWVO1l.js +169 -0
- package/dist/autocomplete-BfpWVO1l.js.map +1 -0
- package/dist/avatar/index.d.ts +2 -0
- package/dist/avatar/index.js +1 -0
- package/dist/avatar-Bp4gZh21.js +93 -0
- package/dist/avatar-Bp4gZh21.js.map +1 -0
- package/dist/badge/index.d.ts +2 -0
- package/dist/badge/index.js +1 -0
- package/dist/badge-Cl-9WTW-.js +160 -0
- package/dist/badge-Cl-9WTW-.js.map +1 -0
- package/dist/bento-box/index.d.ts +30 -0
- package/dist/bento-box/index.js +103 -0
- package/dist/bento-box/index.js.map +1 -0
- package/dist/breadcrumb/index.d.ts +18 -0
- package/dist/breadcrumb/index.js +58 -0
- package/dist/breadcrumb/index.js.map +1 -0
- package/dist/button/index.d.ts +3 -0
- package/dist/button/index.js +1 -0
- package/dist/button-BpUC-R1J.js +307 -0
- package/dist/button-BpUC-R1J.js.map +1 -0
- package/dist/button-group/index.d.ts +2 -0
- package/dist/button-group/index.js +1 -0
- package/dist/button-group-7azbqlcO.js +269 -0
- package/dist/button-group-7azbqlcO.js.map +1 -0
- package/dist/button.types-BFKrBCGd.d.ts +10 -0
- package/dist/calendar/index.d.ts +63 -0
- package/dist/calendar/index.js +292 -0
- package/dist/calendar/index.js.map +1 -0
- package/dist/chart/index.d.ts +87 -0
- package/dist/chart/index.js +262 -0
- package/dist/chart/index.js.map +1 -0
- package/dist/checkbox/index.d.ts +2 -0
- package/dist/checkbox/index.js +1 -0
- package/dist/checkbox-BuUZ1Lly.js +54 -0
- package/dist/checkbox-BuUZ1Lly.js.map +1 -0
- package/dist/checkbox-group/index.d.ts +6 -0
- package/dist/checkbox-group/index.js +17 -0
- package/dist/checkbox-group/index.js.map +1 -0
- package/dist/cn-BDi0DfT5.js +29 -0
- package/dist/cn-BDi0DfT5.js.map +1 -0
- package/dist/code-block/index.d.ts +50 -0
- package/dist/code-block/index.js +208 -0
- package/dist/code-block/index.js.map +1 -0
- package/dist/collapsible/index.d.ts +2 -0
- package/dist/collapsible/index.js +1 -0
- package/dist/collapsible-BVqrh0Q0.js +44 -0
- package/dist/collapsible-BVqrh0Q0.js.map +1 -0
- package/dist/color-channel-slider/index.d.ts +2 -0
- package/dist/color-channel-slider/index.js +1 -0
- package/dist/color-channel-slider-h8mUPJ35.js +70 -0
- package/dist/color-channel-slider-h8mUPJ35.js.map +1 -0
- package/dist/color-picker/index.d.ts +137 -0
- package/dist/color-picker/index.js +621 -0
- package/dist/color-picker/index.js.map +1 -0
- package/dist/combobox/index.d.ts +64 -0
- package/dist/combobox/index.js +289 -0
- package/dist/combobox/index.js.map +1 -0
- package/dist/context-menu/index.d.ts +49 -0
- package/dist/context-menu/index.js +166 -0
- package/dist/context-menu/index.js.map +1 -0
- package/dist/dialog/index.d.ts +36 -0
- package/dist/dialog/index.js +119 -0
- package/dist/dialog/index.js.map +1 -0
- package/dist/drawer/index.d.ts +31 -0
- package/dist/drawer/index.js +95 -0
- package/dist/drawer/index.js.map +1 -0
- package/dist/dropzone/index.d.ts +70 -0
- package/dist/dropzone/index.js +479 -0
- package/dist/dropzone/index.js.map +1 -0
- package/dist/field/index.d.ts +2 -0
- package/dist/field/index.js +1 -0
- package/dist/field-DTL7eA5y.js +254 -0
- package/dist/field-DTL7eA5y.js.map +1 -0
- package/dist/form/index.d.ts +220 -0
- package/dist/form/index.js +3 -0
- package/dist/form-BxMg796f.js +192 -0
- package/dist/form-BxMg796f.js.map +1 -0
- package/dist/has-single-element-child-DLGI0Dh2.js +12 -0
- package/dist/has-single-element-child-DLGI0Dh2.js.map +1 -0
- package/dist/hooks/index.d.ts +26 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks-DUm-q_ig.js +68 -0
- package/dist/hooks-DUm-q_ig.js.map +1 -0
- package/dist/icon/index.d.ts +2 -0
- package/dist/icon/index.js +1 -0
- package/dist/icon-D3JWfCa2.js +85 -0
- package/dist/icon-D3JWfCa2.js.map +1 -0
- package/dist/icon-container/index.d.ts +10 -0
- package/dist/icon-container/index.js +64 -0
- package/dist/icon-container/index.js.map +1 -0
- package/dist/index-0ZQzIKoE.d.ts +11 -0
- package/dist/index-B3MK1QYh.d.ts +11 -0
- package/dist/index-BJVMIPq4.d.ts +54 -0
- package/dist/index-BsV-u_jc.d.ts +4 -0
- package/dist/index-BygR7cUT.d.ts +22 -0
- package/dist/index-BzTOLSgZ.d.ts +9 -0
- package/dist/index-C15xiG9O.d.ts +14 -0
- package/dist/index-C2zco6-C.d.ts +15 -0
- package/dist/index-CIDOd4Z8.d.ts +56 -0
- package/dist/index-CQti9gFb.d.ts +49 -0
- package/dist/index-CiE-Rqit.d.ts +70 -0
- package/dist/index-D1kkOg9k.d.ts +14 -0
- package/dist/index-DLfdAked.d.ts +34 -0
- package/dist/index-DMaW_XF1.d.ts +24 -0
- package/dist/index-Db_QGr6S.d.ts +5 -0
- package/dist/index-DdFxZ3Xr.d.ts +22 -0
- package/dist/index-DfNHJF0t.d.ts +33 -0
- package/dist/index-DyQYoAUf.d.ts +29 -0
- package/dist/index-N2CBSUDu.d.ts +14 -0
- package/dist/index-PuhTRMce.d.ts +11 -0
- package/dist/index-Wb_tILYa.d.ts +24 -0
- package/dist/index-bVyqfhJS.d.ts +4 -0
- package/dist/index-x4f8gnaI.d.ts +15 -0
- package/dist/input/index.d.ts +3 -0
- package/dist/input/index.js +1 -0
- package/dist/input-Laj6dwtK.js +179 -0
- package/dist/input-Laj6dwtK.js.map +1 -0
- package/dist/input-group/index.d.ts +2 -0
- package/dist/input-group/index.js +1 -0
- package/dist/input-group-CgdazGrY.js +111 -0
- package/dist/input-group-CgdazGrY.js.map +1 -0
- package/dist/input-otp/index.d.ts +13 -0
- package/dist/input-otp/index.js +44 -0
- package/dist/input-otp/index.js.map +1 -0
- package/dist/input.types-816rEVWU.d.ts +20 -0
- package/dist/input.types-D0gyoaQv.js +48 -0
- package/dist/input.types-D0gyoaQv.js.map +1 -0
- package/dist/kbd/index.d.ts +9 -0
- package/dist/kbd/index.js +25 -0
- package/dist/kbd/index.js.map +1 -0
- package/dist/label/index.d.ts +8 -0
- package/dist/label/index.js +1 -0
- package/dist/label-BgpayDvN.js +27 -0
- package/dist/label-BgpayDvN.js.map +1 -0
- package/dist/layer-tree/index.d.ts +728 -0
- package/dist/layer-tree/index.js +685 -0
- package/dist/layer-tree/index.js.map +1 -0
- package/dist/map/google/index.d.ts +143 -0
- package/dist/map/google/index.js +445 -0
- package/dist/map/google/index.js.map +1 -0
- package/dist/map/index.d.ts +94 -0
- package/dist/map/index.js +208 -0
- package/dist/map/index.js.map +1 -0
- package/dist/map.context-Dw1D7E8m.js +11 -0
- package/dist/map.context-Dw1D7E8m.js.map +1 -0
- package/dist/menu/index.d.ts +2 -0
- package/dist/menu/index.js +1 -0
- package/dist/menu-sf13cnGp.js +173 -0
- package/dist/menu-sf13cnGp.js.map +1 -0
- package/dist/menu-tone-DWBEHoX2.js +22 -0
- package/dist/menu-tone-DWBEHoX2.js.map +1 -0
- package/dist/meter/index.d.ts +2 -0
- package/dist/meter/index.js +1 -0
- package/dist/meter-HD5taq57.js +116 -0
- package/dist/meter-HD5taq57.js.map +1 -0
- package/dist/nav-bar/index.d.ts +25 -0
- package/dist/nav-bar/index.js +133 -0
- package/dist/nav-bar/index.js.map +1 -0
- package/dist/navigation-menu/index.d.ts +43 -0
- package/dist/navigation-menu/index.js +176 -0
- package/dist/navigation-menu/index.js.map +1 -0
- package/dist/number-field/index.d.ts +14 -0
- package/dist/number-field/index.js +116 -0
- package/dist/number-field/index.js.map +1 -0
- package/dist/popover/index.d.ts +2 -0
- package/dist/popover/index.js +1 -0
- package/dist/popover-B1s4xXrX.js +114 -0
- package/dist/popover-B1s4xXrX.js.map +1 -0
- package/dist/preview-card/index.d.ts +13 -0
- package/dist/preview-card/index.js +35 -0
- package/dist/preview-card/index.js.map +1 -0
- package/dist/profile/index.d.ts +21 -0
- package/dist/profile/index.js +52 -0
- package/dist/profile/index.js.map +1 -0
- package/dist/progress/index.d.ts +23 -0
- package/dist/progress/index.js +97 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/radar-ping/index.d.ts +11 -0
- package/dist/radar-ping/index.js +49 -0
- package/dist/radar-ping/index.js.map +1 -0
- package/dist/radio-group/index.d.ts +2 -0
- package/dist/radio-group/index.js +1 -0
- package/dist/radio-group-Dj43u35Z.js +47 -0
- package/dist/radio-group-Dj43u35Z.js.map +1 -0
- package/dist/resizeable/index.d.ts +11 -0
- package/dist/resizeable/index.js +31 -0
- package/dist/resizeable/index.js.map +1 -0
- package/dist/scroll-area/index.d.ts +11 -0
- package/dist/scroll-area/index.js +51 -0
- package/dist/scroll-area/index.js.map +1 -0
- package/dist/select/index.d.ts +2 -0
- package/dist/select/index.js +1 -0
- package/dist/select-DncJXYim.js +159 -0
- package/dist/select-DncJXYim.js.map +1 -0
- package/dist/separator/index.d.ts +2 -0
- package/dist/separator/index.js +1 -0
- package/dist/separator-DgIQp1cB.js +97 -0
- package/dist/separator-DgIQp1cB.js.map +1 -0
- package/dist/sidebar/index.d.ts +80 -0
- package/dist/sidebar/index.js +334 -0
- package/dist/sidebar/index.js.map +1 -0
- package/dist/site-header/index.d.ts +22 -0
- package/dist/site-header/index.js +55 -0
- package/dist/site-header/index.js.map +1 -0
- package/dist/skeleton/index.d.ts +4 -0
- package/dist/skeleton/index.js +1 -0
- package/dist/skeleton-DSG3FWby.js +13 -0
- package/dist/skeleton-DSG3FWby.js.map +1 -0
- package/dist/slider/index.d.ts +2 -0
- package/dist/slider/index.js +1 -0
- package/dist/slider-D_XlV4OW.js +114 -0
- package/dist/slider-D_XlV4OW.js.map +1 -0
- package/dist/slider-group/index.d.ts +46 -0
- package/dist/slider-group/index.js +198 -0
- package/dist/slider-group/index.js.map +1 -0
- package/dist/styles.css +6 -17
- package/dist/switch/index.d.ts +2 -0
- package/dist/switch/index.js +1 -0
- package/dist/switch-DXHixGHe.js +23 -0
- package/dist/switch-DXHixGHe.js.map +1 -0
- package/dist/table/index.d.ts +920 -0
- package/dist/table/index.js +1544 -0
- package/dist/table/index.js.map +1 -0
- package/dist/tabs/index.d.ts +2 -0
- package/dist/tabs/index.js +1 -0
- package/dist/tabs-DTC7coap.js +270 -0
- package/dist/tabs-DTC7coap.js.map +1 -0
- package/dist/text-area/index.d.ts +2 -0
- package/dist/text-area/index.js +1 -0
- package/dist/text-area-H6HjKnv_.js +50 -0
- package/dist/text-area-H6HjKnv_.js.map +1 -0
- package/dist/themes/hogarth.css +0 -4
- package/dist/themes/mabel.css +0 -4
- package/dist/themes/maculata.css +0 -4
- package/dist/themes/monadelpha.css +0 -4
- package/dist/themes/venus.css +0 -4
- package/dist/themes/viridiflora.css +0 -4
- package/dist/toast/index.d.ts +65 -0
- package/dist/toast/index.js +216 -0
- package/dist/toast/index.js.map +1 -0
- package/dist/toggle/index.d.ts +2 -0
- package/dist/toggle/index.js +1 -0
- package/dist/toggle-ZT9thVmz.js +73 -0
- package/dist/toggle-ZT9thVmz.js.map +1 -0
- package/dist/toggle-group/index.d.ts +10 -0
- package/dist/toggle-group/index.js +63 -0
- package/dist/toggle-group/index.js.map +1 -0
- package/dist/toggle-group-context-CBNZEf1I.js +6 -0
- package/dist/toggle-group-context-CBNZEf1I.js.map +1 -0
- package/dist/tooltip/index.d.ts +18 -0
- package/dist/tooltip/index.js +1 -0
- package/dist/tooltip-B6z3tDbW.js +41 -0
- package/dist/tooltip-B6z3tDbW.js.map +1 -0
- package/dist/trim-text-children-CQRFg2fL.js +33 -0
- package/dist/trim-text-children-CQRFg2fL.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils-BI2x7nW5.js +5 -0
- package/dist/utils-BI2x7nW5.js.map +1 -0
- package/package.json +100 -31
- package/dist/index.d.ts +0 -7993
- package/dist/index.js +0 -17219
- package/dist/index.js.map +0 -1
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Accordion","BaseAccordion","BaseAccordion","BaseAccordion","BaseAccordion","AccordionRoot","Alert","AlertRoot","AlertDialog","BaseAlertDialog","Fragment","BaseButton","BaseAlertDialog","BaseAlertDialog","BaseAlertDialog","BaseAlertDialog","BaseAlertDialog","BaseAlertDialog","BaseAlertDialog","AlertDialogRoot","Autocomplete","BaseAutocomplete","BaseAutocomplete","DEFAULT_SIDE_OFFSET","BaseAutocomplete","BaseAutocomplete","formatFileSize","BaseAutocomplete","DEFAULT_SIDE_OFFSET","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","BaseAutocomplete","AutocompleteRoot","Avatar","BaseAvatar","BaseAvatar","BaseAvatar","AvatarRoot","BentoBox","BentoBoxRoot","Breadcrumb","BreadcrumbRoot","Calendar","Select","BaseSelect","BaseSelect","BaseSelect","BaseSelect","BaseSelect","BaseSelect","BaseSelect","BaseSelect","BaseSelect","SelectRoot","CalendarRoot","Tooltip","BaseCheckbox","Checkbox","BaseCheckbox","CheckboxRoot","BaseCheckboxGroup","CodeBlock","Tabs","SwitchTabs","SwitchTabs","SwitchTabs","SwitchTabs","SwitchTabs","TabsRoot","CodeBlockRoot","Collapsible","BaseCollapsible","BaseCollapsible","BaseCollapsible","CollapsibleRoot","BaseSlider","ColorPicker","InputGroup","DEFAULT_COLOR","getStringValue","getColorValue","getColorInputProps","BaseInput","BaseSeparator","InputGroupRoot","Popover","BasePopover","BasePopover","BasePopover","BasePopover","BasePopover","BasePopover","PopoverRoot","FIRST_VALUE_INDEX","getSliderValue","ColorPickerRoot","Combobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","BaseCombobox","ComboboxRoot","ContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","BaseContextMenu","ContextMenuRoot","Dialog","BaseDialog","BaseDialog","BaseDialog","BaseDialog","BaseDialog","BaseDialog","BaseDialog","DialogRoot","Drawer","BaseDrawer","BaseDrawer","BaseDrawer","BaseDrawer","BaseDrawer","BaseDrawer","BaseDrawer","BaseDrawer","DrawerRoot","EMPTY","defaultMaxFilesErrorLabel","defaultMaxFileSizeErrorLabel","Dropzone","EMPTY_FILE_COUNT","EMPTY_FILE_COUNT","Meter","BaseMeter","BaseMeter","BaseMeter","BaseMeter","BaseMeter","MeterRoot","DropzoneRoot","Field","NO_ERRORS","formatFileSize","BaseInput","NO_ERRORS","NO_ERRORS","NO_ERRORS","NO_ERRORS","BaseRadio","RadioGroup","BaseRadioGroup","RadioGroupRoot","Tooltip","BaseTooltip","BaseTooltip","BaseTooltip","TooltipRoot","BaseSlider","MIN_DEFAULT","MAX_DEFAULT","STEP_DEFAULT","Slider","BaseSlider","SliderRoot","BaseSwitch","BaseToggle","FieldRoot","Form","FormRoot","InputOTP","InputOTPRoot","Kbd","KbdRoot","shallow","shallow","useIsomorphicLayoutEffect","features","useTableContext","useTableContext","useTableContext","useTableContext","useCellContext","useTableContext","useTableContext","useCellContext","useTableContext","useCellContext","useTableContext","Menu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","BaseMenu","MenuRoot","getColumnHeaderLabel","useTableContext","useCellContext","useCellContext","useTableContext","useCellContext","useTableContext","Map","GoogleMap","Fragment","Map","Fragment","GoogleMapRoot","Map","MapRoot","NavBar","NavBarRoot","NavigationMenu","BaseNavigationMenu","BaseNavigationMenu","BaseNavigationMenu","BaseNavigationMenu","BaseNavigationMenu","BaseNavigationMenu","BaseNavigationMenu","NavigationMenuRoot","BaseNumberField","PreviewCard","BasePreviewCard","BasePreviewCard","BasePreviewCard","PreviewCardRoot","Profile","ProfileRoot","Progress","ProgressRoot","BaseResizableSeparator","BaseResizablePanel","BaseResizableGroup","BaseScrollArea","Sidebar","BaseScrollArea","SidebarRoot","SiteHeader","SiteHeaderRoot","MIN_DEFAULT","MAX_DEFAULT","STEP_DEFAULT","SliderGroup","SliderGroupRoot","ZERO","FIRST_RANGE_INDEX","useCellContext","useCellContext","useTableContext","useCellContext","useCellContext","useTableContext","useTableContext","useTableContext","useCellContext","useTableContext","Tabs","useCellContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useCellContext","useTableContext","useCellContext","useTableContext","useCellContext","PAGE_NUMBER_OFFSET","useTableContext","useCellContext","useTableContext","useCellContext","useCellContext","useTableContext","useTableContext","useTableContext","useTableContext","useTableContext","useCellContext","useCellContext","useTableContext","useTableContext","BaseToast","BaseToast","BaseToast","BaseToast","BaseToast","BaseToast","BaseToggleGroup"],"sources":["../src/utils/cn.ts","../src/components/accordion/accordion.types.ts","../src/components/accordion/accordion.tsx","../src/utils/date-time.ts","../src/components/icon/default-icons.ts","../src/components/icon/icon-context.ts","../src/components/icon/icon.tsx","../src/components/icon/icon-provider.tsx","../src/components/accordion/accordion-expand-icon.tsx","../src/components/accordion/accordion-header.tsx","../src/components/accordion/accordion-header-content.tsx","../src/components/accordion/accordion-icon.tsx","../src/components/accordion/accordion-item.tsx","../src/components/accordion/accordion-panel.tsx","../src/components/accordion/accordion-subtitle.tsx","../src/components/accordion/accordion-title.tsx","../src/components/accordion/index.ts","../src/components/alert/alert.types.ts","../src/components/alert/alert.tsx","../src/components/alert/alert-action.tsx","../src/components/alert/alert-description.tsx","../src/components/alert/alert-icon.tsx","../src/components/alert/alert-title.tsx","../src/components/alert/index.ts","../src/components/alert-dialog/alert-dialog.tsx","../src/utils/has-single-element-child.ts","../src/components/button/button.types.ts","../src/components/button/button.tsx","../src/components/alert-dialog/alert-dialog-close.tsx","../src/components/alert-dialog/alert-dialog-confirm.tsx","../src/components/alert-dialog/alert-dialog-description.tsx","../src/components/alert-dialog/alert-dialog-footer.tsx","../src/components/alert-dialog/alert-dialog-header.tsx","../src/components/alert-dialog/alert-dialog-icon.tsx","../src/components/alert-dialog/alert-dialog.types.ts","../src/components/alert-dialog/alert-dialog-popup.tsx","../src/components/alert-dialog/alert-dialog-title.tsx","../src/components/alert-dialog/alert-dialog-trigger.tsx","../src/components/alert-dialog/index.ts","../src/components/autocomplete/autocomplete.tsx","../src/components/autocomplete/autocomplete-collection.tsx","../src/components/autocomplete/autocomplete-content.tsx","../src/components/autocomplete/autocomplete-empty.tsx","../src/components/input/input.types.tsx","../src/components/autocomplete/autocomplete-input-group.tsx","../src/components/autocomplete/autocomplete-input-group-input.tsx","../src/components/autocomplete/autocomplete-grid-content.tsx","../src/components/autocomplete/autocomplete-grid-item.tsx","../src/components/autocomplete/autocomplete-group.tsx","../src/components/autocomplete/autocomplete-group-label.tsx","../src/components/autocomplete/autocomplete-input-group-addon.tsx","../src/components/autocomplete/autocomplete-item.tsx","../src/components/autocomplete/autocomplete-row.tsx","../src/components/autocomplete/autocomplete-status.tsx","../src/components/autocomplete/autocomplete-trigger.tsx","../src/components/autocomplete/index.ts","../src/components/avatar/avatar.types.ts","../src/components/avatar/avatar.tsx","../src/components/avatar/avatar-badge.tsx","../src/components/avatar/avatar-fallback.tsx","../src/components/skeleton/skeleton.tsx","../src/components/avatar/avatar-image.tsx","../src/components/avatar/index.ts","../src/components/badge/badge.types.ts","../src/components/badge/badge.tsx","../src/components/bento-box/bento-box.types.ts","../src/components/bento-box/bento-box.tsx","../src/components/bento-box/bento-box-action.tsx","../src/components/bento-box/bento-box-content.tsx","../src/components/bento-box/bento-box-description.tsx","../src/components/bento-box/bento-box-footer.tsx","../src/components/bento-box/bento-box-header.tsx","../src/components/bento-box/bento-box-title.tsx","../src/components/bento-box/index.ts","../src/components/breadcrumb/breadcrumb.tsx","../src/components/breadcrumb/breadcrumb-ellipsis.tsx","../src/components/breadcrumb/breadcrumb-item.tsx","../src/components/breadcrumb/breadcrumb-link.tsx","../src/components/breadcrumb/breadcrumb-separator.tsx","../src/components/breadcrumb/index.ts","../src/components/button-group/button-group.types.ts","../src/components/button-group/button-group.tsx","../src/components/calendar/calendar.reducer.ts","../src/components/calendar/calendar.tsx","../src/components/calendar/calendar-day-button.tsx","../src/components/select/select.tsx","../src/components/select/select-description.tsx","../src/components/select/select-group.tsx","../src/components/select/select-group-label.tsx","../src/components/select/select-icon.tsx","../src/components/select/select-item.tsx","../src/components/select/select-list.tsx","../src/components/select/select-popup.tsx","../src/components/select/select-title.tsx","../src/components/select/select.types.ts","../src/components/select/select-trigger.tsx","../src/components/select/select-value.tsx","../src/components/select/index.ts","../src/components/calendar/calendar-dropdown.tsx","../src/components/calendar/calendar-footer.tsx","../src/components/calendar/calendar-header.tsx","../src/components/calendar/calendar-next-month-button.tsx","../src/components/calendar/calendar.types.ts","../src/components/calendar/calendar-panel.tsx","../src/components/calendar/calendar-chevron.tsx","../src/components/calendar/calendar-previous-month-button.tsx","../src/components/calendar/calendar-picker.tsx","../src/components/calendar/calendar-summary.tsx","../src/components/calendar/index.ts","../src/components/chart/chart.types.ts","../src/components/chart/chart-container.tsx","../src/components/chart/chart-tooltip.tsx","../src/components/chart/chart-tooltip-content.tsx","../src/components/chart/chart-tooltip-label.tsx","../src/components/chart/chart-tooltip-payload.tsx","../src/components/chart/chart-legend.tsx","../src/components/chart/chart.utils.ts","../src/components/chart/chart-legend-icon.tsx","../src/components/chart/chart-legend-indicator.tsx","../src/components/chart/chart-legend-label.tsx","../src/components/chart/chart-legend-content.tsx","../src/components/chart/chart-linear-gradient.tsx","../src/components/chart/chart-tooltip-indicator.tsx","../src/components/chart/chart-tooltip-name.tsx","../src/components/chart/chart-tooltip-icon.tsx","../src/components/chart/chart-tooltip-value.tsx","../src/components/label/label.types.ts","../src/components/label/label.tsx","../src/components/checkbox/checkbox-indicator.tsx","../src/components/checkbox/checkbox.types.ts","../src/components/checkbox/checkbox.tsx","../src/components/checkbox/index.ts","../src/components/checkbox-group/checkbox-group.tsx","../src/components/code-block/code-block.tsx","../src/components/code-block/code-block-actions.tsx","../src/components/code-block/code-block-copy.tsx","../src/components/code-block/code-block-download.tsx","../src/components/code-block/code-block-header.tsx","../src/components/code-block/code-block-name.tsx","../src/components/code-block/code-block-select.tsx","../src/components/tabs/tabs.types.ts","../src/components/tabs/tabs.tsx","../src/components/tabs/tabs-indicator.tsx","../src/components/tabs/tabs-list.tsx","../src/components/tabs/tabs-panel.tsx","../src/components/tabs/tabs-tab.tsx","../src/components/tabs/index.ts","../src/components/code-block/code-block-tabs.tsx","../src/components/code-block/code-block-window.tsx","../src/components/code-block/index.ts","../src/components/collapsible/collapsible.tsx","../src/components/collapsible/collapsible-panel.tsx","../src/components/collapsible/collapsible-trigger.tsx","../src/components/collapsible/index.ts","../src/components/color-channel-slider/color-channel-slider.types.ts","../src/components/color-channel-slider/color-channel-slider.tsx","../src/components/color-picker/color-picker.types.ts","../src/components/color-picker/color-picker.tsx","../src/components/color-picker/color-picker-area.tsx","../src/components/color-picker/color-picker-group.tsx","../src/components/color-channel-slider/color-channel-slider.utils.ts","../src/components/color-picker/color-picker-hue-slider.tsx","../src/components/input-group/input-group.tsx","../src/components/input-group/input-group.types.ts","../src/components/input-group/input-group-addon.tsx","../src/components/input-group/input-group-input.tsx","../src/components/separator/separator.types.ts","../src/components/separator/separator.tsx","../src/components/input-group/input-group-separator.tsx","../src/components/input-group/index.ts","../src/components/popover/popover.tsx","../src/components/popover/popover-button.tsx","../src/components/popover/popover-content.tsx","../src/components/popover/popover-description.tsx","../src/components/popover/popover-header.tsx","../src/components/popover/popover.types.ts","../src/components/popover/popover-panel.tsx","../src/components/popover/popover-title.tsx","../src/components/popover/popover-trigger.tsx","../src/components/popover/index.ts","../src/components/color-picker/color-picker-input.tsx","../src/components/color-picker/color-picker-label.tsx","../src/components/color-picker/color-picker-lightness-slider.tsx","../src/components/color-picker/color-picker-palette-add.tsx","../src/components/color-picker/color-picker-palette-limit.tsx","../src/components/color-picker/color-picker-palette-swatch.tsx","../src/components/color-picker/color-picker-palette-list.tsx","../src/components/color-picker/color-picker-row.tsx","../src/components/color-picker/color-picker-transparency-slider.tsx","../src/components/color-picker/color-picker-value-type.tsx","../src/components/color-picker/index.ts","../src/components/combobox/combobox.tsx","../src/components/combobox/combobox-chip.tsx","../src/components/combobox/combobox-chips.tsx","../src/components/combobox/combobox-collection.tsx","../src/components/combobox/combobox-empty.tsx","../src/components/combobox/combobox-group.tsx","../src/components/combobox/combobox-group-label.tsx","../src/components/combobox/combobox-input.tsx","../src/components/combobox/combobox-item.tsx","../src/components/combobox/combobox-list.tsx","../src/components/combobox/combobox-popup.tsx","../src/components/combobox/combobox-status.tsx","../src/components/combobox/combobox-trigger.tsx","../src/components/combobox/combobox-value.tsx","../src/components/combobox/combobox.types.ts","../src/components/combobox/combobox-virtualized-list.tsx","../src/components/combobox/index.ts","../src/components/context-menu/context-menu.tsx","../src/components/context-menu/context-menu-checkbox-item.tsx","../src/components/context-menu/context-menu-group.tsx","../src/components/context-menu/context-menu-group-label.tsx","../src/components/context-menu/context-menu.types.ts","../src/components/context-menu/context-menu-item.tsx","../src/components/context-menu/context-menu-popup.tsx","../src/components/context-menu/context-menu-radio-group.tsx","../src/components/context-menu/context-menu-radio-item.tsx","../src/components/context-menu/context-menu-separator.tsx","../src/components/context-menu/context-menu-shortcut.tsx","../src/components/context-menu/context-menu-submenu.tsx","../src/components/context-menu/context-menu-submenu-trigger.tsx","../src/components/context-menu/context-menu-trigger.tsx","../src/components/context-menu/index.ts","../src/components/dialog/dialog.tsx","../src/components/dialog/dialog-close.tsx","../src/components/dialog/dialog-content.tsx","../src/components/dialog/dialog-description.tsx","../src/components/dialog/dialog-footer.tsx","../src/components/dialog/dialog-header.tsx","../src/components/dialog/dialog-icon.tsx","../src/components/dialog/dialog-popup.tsx","../src/components/dialog/dialog-title.tsx","../src/components/dialog/dialog-trigger.tsx","../src/components/dialog/dialog.types.ts","../src/components/dialog/index.ts","../src/components/drawer/drawer.tsx","../src/components/drawer/drawer-close.tsx","../src/components/drawer/drawer-content.tsx","../src/components/drawer/drawer-description.tsx","../src/components/drawer/drawer-header.tsx","../src/components/drawer/drawer-popup.tsx","../src/components/drawer/drawer-provider.tsx","../src/components/drawer/drawer-title.tsx","../src/components/drawer/drawer-trigger.tsx","../src/components/drawer/index.ts","../src/components/dropzone/dropzone.utils.ts","../src/components/dropzone/dropzone.tsx","../src/components/dropzone/dropzone-actions.tsx","../src/components/dropzone/dropzone-clear.tsx","../src/components/dropzone/dropzone-confirm.tsx","../src/components/dropzone/dropzone-container.tsx","../src/components/dropzone/dropzone-error.tsx","../src/components/dropzone/dropzone-file-limit.tsx","../src/components/dropzone/dropzone-file-size-limit.tsx","../src/components/dropzone/dropzone-files.tsx","../src/components/dropzone/dropzone-files-header.tsx","../src/components/meter/meter.types.ts","../src/components/meter/meter.tsx","../src/components/meter/meter-footer.tsx","../src/components/meter/meter-header.tsx","../src/components/meter/meter-indicator.tsx","../src/components/meter/meter-label.tsx","../src/components/meter/meter-subtitle.tsx","../src/components/meter/meter-track.tsx","../src/components/meter/meter-value.tsx","../src/components/meter/index.ts","../src/components/dropzone/dropzone-files-list.tsx","../src/components/dropzone/dropzone-files-title.tsx","../src/components/dropzone/dropzone-formats.tsx","../src/components/dropzone/dropzone-heading.tsx","../src/components/dropzone/dropzone-icon.tsx","../src/components/dropzone/dropzone-info.tsx","../src/components/dropzone/dropzone-subtitle.tsx","../src/components/dropzone/dropzone-trigger.tsx","../src/components/dropzone/index.ts","../src/components/field/field.tsx","../src/components/form/form-contexts.ts","../src/components/field/field-checkbox.tsx","../src/components/field/field-description.tsx","../src/components/field/field-errors.tsx","../src/components/input/input.tsx","../src/components/field/field-input.tsx","../src/components/field/field-input-group.tsx","../src/components/field/field-input-group-input.tsx","../src/components/field/field.types.ts","../src/components/field/field-label.tsx","../src/components/radio-group/radio-group.types.ts","../src/components/radio-group/radio.tsx","../src/components/radio-group/radio-group.tsx","../src/components/radio-group/index.ts","../src/components/field/field-radio.tsx","../src/components/field/field-radio-group.tsx","../src/components/field/field-row.tsx","../src/components/field/field-select.tsx","../src/components/field/field-set.tsx","../src/components/tooltip/tooltip.tsx","../src/components/tooltip/tooltip-context.tsx","../src/components/tooltip/tooltip-trigger.tsx","../src/components/tooltip/index.ts","../src/components/slider/slider-thumb.tsx","../src/components/slider/slider.types.ts","../src/components/slider/slider.tsx","../src/components/slider/index.ts","../src/components/field/field-slider.tsx","../src/components/switch/switch.tsx","../src/components/field/field-switch.tsx","../src/components/text-area/text-area.types.ts","../src/components/text-area/text-area.tsx","../src/components/field/field-text-area.tsx","../src/components/toggle-group/toggle-group-context.ts","../src/components/toggle/toggle.types.ts","../src/components/toggle/toggle.tsx","../src/components/field/field-toggle.tsx","../src/components/field/index.ts","../src/components/form/form.tsx","../src/components/form/form-errors.tsx","../src/components/form/form-footer.tsx","../src/components/form/form-reset.tsx","../src/components/form/form-set.tsx","../src/components/form/form-set-content.tsx","../src/components/form/form.types.ts","../src/components/form/form-set-heading.tsx","../src/components/form/form-submit.tsx","../src/components/form/form-context.tsx","../src/components/form/index.ts","../src/components/icon-container/icon-container.types.ts","../src/components/icon-container/icon-container.tsx","../src/components/input-otp/input-otp.tsx","../src/components/input-otp/input-otp-separator.tsx","../src/components/input-otp/input-otp-slot.tsx","../src/components/input-otp/index.ts","../src/components/kbd/kbd.tsx","../src/components/kbd/kbd-group.tsx","../src/components/kbd/index.ts","../node_modules/.pnpm/@tanstack+react-table@9.3.1_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/@tanstack/react-table/dist/FlexRender.js","../node_modules/.pnpm/@tanstack+react-table@9.3.1_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/@tanstack/react-table/dist/Subscribe.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/reactivity/coreReactivityFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/reactivity/renderPhaseReactivity.js","../node_modules/.pnpm/@tanstack+react-table@9.3.1_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/@tanstack/react-table/dist/reactivity.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/cells/coreCellsFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/cells/coreCellsFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/columns/constructColumn.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/featureStubs.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/columns/coreColumnsFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/columns/coreColumnsFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/constructHeader.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/buildHeaderGroups.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/coreHeadersFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/headers/coreHeadersFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/rows/constructRow.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/row-models/createCoreRowModel.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/row-models/coreRowModelsFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/row-models/coreRowModelsFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/cells/constructCell.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/rows/coreRowsFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/rows/coreRowsFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/table/coreTablesFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/table/coreTablesFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/coreFeatures.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/helpers/columnHelper.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/helpers/metaHelper.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/helpers/tableFeatures.js","../node_modules/.pnpm/@tanstack+store@0.11.2/node_modules/@tanstack/store/dist/shallow.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/core/table/constructTable.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-faceting/columnFacetingFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-faceting/columnFacetingFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-filtering/columnFilteringFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-filtering/columnFilteringFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-sizing/columnSizingFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-sizing/columnSizingFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-visibility/columnVisibilityFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-visibility/columnVisibilityFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-filtering/filterFns.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/global-filtering/globalFilteringFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/global-filtering/globalFilteringFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-expanding/rowExpandingFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-expanding/createExpandedRowModel.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-expanding/rowExpandingFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-pagination/rowPaginationFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-pagination/rowPaginationFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-selection/rowSelectionFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-selection/rowSelectionFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/sortFns.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/rowSortingFeature.utils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/rowSortingFeature.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-filtering/filterRowsUtils.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-faceting/createFacetedRowModel.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-faceting/createFacetedUniqueValues.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/column-filtering/createFilteredRowModel.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-pagination/createPaginatedRowModel.js","../node_modules/.pnpm/@tanstack+table-core@9.3.1/node_modules/@tanstack/table-core/dist/features/row-sorting/createSortedRowModel.js","../node_modules/.pnpm/@tanstack+react-table@9.3.1_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/@tanstack/react-table/dist/useTable.js","../node_modules/.pnpm/@tanstack+react-table@9.3.1_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/@tanstack/react-table/dist/createTableHook.js","../node_modules/.pnpm/@tanstack+react-table@9.3.1_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/@tanstack/react-table/dist/createTableHookContexts.js","../src/components/layer-tree/layer-tree-utils.ts","../src/components/layer-tree/layer-tree-context.tsx","../src/components/layer-tree/layer-tree.types.ts","../src/components/layer-tree/layer-tree.tsx","../src/components/layer-tree/layer-tree-row.tsx","../src/components/layer-tree/layer-tree-body.tsx","../src/components/layer-tree/layer-tree-expand-all.tsx","../src/components/layer-tree/layer-tree-footer.tsx","../src/components/layer-tree/layer-tree-icon-cell.tsx","../src/components/layer-tree/layer-tree-locked-all.tsx","../src/components/layer-tree/layer-tree-locked-cell.tsx","../src/components/layer-tree/layer-tree-node-icon.tsx","../src/components/layer-tree/layer-tree-search.tsx","../src/components/menu/menu.tsx","../src/components/menu/menu-checkbox-item.tsx","../src/components/menu/menu-group.tsx","../src/components/menu/menu-group-label.tsx","../src/components/menu/menu.types.ts","../src/components/menu/menu-item.tsx","../src/components/menu/menu-popup.tsx","../src/components/menu/menu-radio-group.tsx","../src/components/menu/menu-radio-item.tsx","../src/components/menu/menu-separator.tsx","../src/components/menu/menu-shortcut.tsx","../src/components/menu/menu-submenu.tsx","../src/components/menu/menu-submenu-trigger.tsx","../src/components/menu/menu-trigger.tsx","../src/components/menu/index.ts","../src/components/layer-tree/layer-tree-sort.tsx","../src/components/layer-tree/layer-tree-text-cell.tsx","../src/components/layer-tree/layer-tree-trigger-cell.tsx","../src/components/layer-tree/layer-tree-visibility-all.tsx","../src/components/layer-tree/layer-tree-visibility-cell.tsx","../src/components/layer-tree/layer-tree-table.tsx","../src/components/map/map.context.ts","../src/components/map/map.tsx","../src/components/map/google-maps/google-map.utils.ts","../src/components/map/map-control-group.tsx","../src/components/map/map-layer-group.context.ts","../src/components/map/map-layer-group.tsx","../src/components/map/map-layer-group-label.tsx","../src/components/map/map-layer-group-layer-list.tsx","../src/components/map/map-layer-group-list.tsx","../src/components/map/map-layer-item.context.ts","../src/components/map/map-layer-icon.tsx","../src/components/map/map-layer-item.tsx","../src/components/map/map-layer-list.tsx","../src/components/map/map-layer-name.tsx","../src/components/map/map-layer-visibility-toggle.tsx","../src/components/map/google-maps/google-map.tsx","../src/components/map/google-maps/google-map-cluster.tsx","../src/components/map/google-maps/google-map-cluster-layer.tsx","../src/components/map/google-maps/google-map-deckgl-overlay.tsx","../src/components/map/google-maps/google-map-frame.tsx","../src/components/map/google-maps/google-map-geolocate-control.tsx","../src/components/map/google-maps/google-map-marker.tsx","../src/components/map/google-maps/google-map-marker-layer.tsx","../src/components/map/google-maps/google-map-search-control.context.ts","../src/components/map/google-maps/google-map-search-control.tsx","../src/components/map/google-maps/google-map-search-control-empty.tsx","../src/components/map/google-maps/google-map-search-control-input.tsx","../src/components/map/google-maps/google-map-search-control-input-group.tsx","../src/components/map/google-maps/google-map-search-control-submit.tsx","../src/components/map/google-maps/google-map-search-control-suggestion.tsx","../src/components/map/google-maps/google-map-tilt-control.tsx","../src/components/map/google-maps/google-map-zoom-control.tsx","../src/components/map/google-maps/google-maps-search-control-content.tsx","../src/components/map/google-maps/google-maps-search-control-results.tsx","../src/components/map/google-maps/google-maps-search-control-status.tsx","../src/components/map/google-maps/index.ts","../src/components/map/index.ts","../src/components/nav-bar/nav-bar.types.ts","../src/components/nav-bar/nav-bar.tsx","../src/components/nav-bar/nav-bar-item.tsx","../src/components/nav-bar/nav-bar-item-icon.tsx","../src/components/nav-bar/nav-bar-item-label.tsx","../src/components/nav-bar/index.ts","../src/components/navigation-menu/navigation-menu.tsx","../src/components/navigation-menu/navigation-menu-content.tsx","../src/components/navigation-menu/navigation-menu-icon.tsx","../src/components/navigation-menu/navigation-menu-item.tsx","../src/components/navigation-menu/navigation-menu.types.ts","../src/components/navigation-menu/navigation-menu-link.tsx","../src/components/navigation-menu/navigation-menu-list.tsx","../src/components/navigation-menu/navigation-menu-popup.tsx","../src/components/navigation-menu/navigation-menu-trigger.tsx","../src/components/navigation-menu/index.ts","../src/components/number-field/number-field.types.ts","../src/components/number-field/number-field.tsx","../src/components/preview-card/preview-card.tsx","../src/components/preview-card/preview-card-popup.tsx","../src/components/preview-card/preview-card-trigger.tsx","../src/components/preview-card/index.ts","../src/components/profile/profile.tsx","../src/components/profile/profile-action.tsx","../src/components/profile/profile-content.tsx","../src/components/profile/profile-name.tsx","../src/components/profile/profile-subname.tsx","../src/components/profile/index.ts","../src/components/progress/progress.tsx","../src/components/progress/progress-bar.tsx","../src/components/progress/progress-description.tsx","../src/components/progress/progress-title.tsx","../src/components/progress/progress-indicator.tsx","../src/components/progress/progress-label.tsx","../src/components/progress/index.ts","../src/components/radar-ping/radar-ping.types.ts","../src/components/radar-ping/radar-ping.tsx","../src/components/resizeable/resizeable-handle.tsx","../src/components/resizeable/resizeable-panel.tsx","../src/components/resizeable/resizeable-panel-group.tsx","../src/components/scroll-area/scroll-area.types.ts","../src/components/scroll-area/scroll-area.tsx","../src/hooks/use-media-query.ts","../src/hooks/use-google-map-viewport.ts","../src/hooks/use-supercluster.ts","../src/hooks/theme/theme.constants.ts","../src/hooks/theme/use-theme.tsx","../src/components/sidebar/sidebar-provider.tsx","../src/components/sidebar/sidebar.tsx","../src/components/sidebar/sidebar-content.tsx","../src/components/sidebar/sidebar-footer.tsx","../src/components/sidebar/sidebar-group.tsx","../src/components/sidebar/sidebar-group-content.tsx","../src/components/sidebar/sidebar-group-label.tsx","../src/components/sidebar/sidebar-header.tsx","../src/components/sidebar/sidebar-inset.tsx","../src/components/sidebar/sidebar-menu.tsx","../src/components/sidebar/sidebar-menu-badge.tsx","../src/components/sidebar/sidebar-menu-button.tsx","../src/components/sidebar/sidebar-menu-collapsible.tsx","../src/components/sidebar/sidebar-menu-collapsible-panel.tsx","../src/components/sidebar/sidebar-menu-collapsible-trigger.tsx","../src/components/sidebar/sidebar-menu-item.tsx","../src/components/sidebar/sidebar-toggle.tsx","../src/components/sidebar/sidebar.utils.ts","../src/components/sidebar/index.ts","../src/components/site-header/site-header.tsx","../src/components/site-header/site-header.types.ts","../src/components/site-header/site-header-group.tsx","../src/components/site-header/site-header-separator.tsx","../src/components/site-header/site-header-title.tsx","../src/components/site-header/index.ts","../src/components/slider-group/slider-description.tsx","../src/components/slider-group/slider-group-context.ts","../src/components/slider-group/slider-group.tsx","../src/components/slider-group/slider-group-slider.tsx","../src/components/slider-group/slider-icon.tsx","../src/components/slider-group/slider-input.tsx","../src/components/slider-group/slider-label.tsx","../src/components/slider-group/slider-value.tsx","../src/components/slider-group/index.ts","../src/components/table/table.types.ts","../src/components/table/table.utils.ts","../src/components/table/table-feature-context.ts","../src/components/table/table-avatar-cell.tsx","../src/components/table/table-badge-cell.tsx","../src/components/table/table-body.tsx","../src/components/table/table-boolean-cell.tsx","../src/components/table/table-bottom-bar.tsx","../src/components/table/table-checkbox-cell.tsx","../src/components/table/table-checkbox-header.tsx","../src/components/table/table-column-toggle.tsx","../src/components/table/table-container.tsx","../src/components/table/table-currency-cell.tsx","../src/components/table/table-dataset-tab.tsx","../src/components/table/table-date-time-cell.tsx","../src/components/table/table-empty.tsx","../src/components/table/table-empty-content.tsx","../src/components/table/table-empty-description.tsx","../src/components/table/table-empty-footer.tsx","../src/components/table/table-empty-header.tsx","../src/components/table/table-empty-title.tsx","../src/components/table/table-date-filter-form.tsx","../src/components/table/table-date-filter-chip.tsx","../src/components/table/table-number-filter-form.tsx","../src/components/table/table-number-filter-chip.tsx","../src/components/table/table-select-filter-form.tsx","../src/components/table/table-select-filter-chip.tsx","../src/components/table/table-string-filter-form.tsx","../src/components/table/table-string-filter-chip.tsx","../src/components/table/table-filter-list.tsx","../src/components/table/table-filter-menu.tsx","../src/components/table/table-first-page.tsx","../src/components/table/table-footer.tsx","../src/components/table/table-header.tsx","../src/components/table/table-image-cell.tsx","../src/components/table/table-last-page.tsx","../src/components/table/table-layout.tsx","../src/components/table/table-link-cell.tsx","../src/components/table/table-next-page.tsx","../src/components/table/table-number-cell.tsx","../src/components/table/table-pagination.tsx","../src/components/table/table-paging.tsx","../src/components/table/table-percent-cell.tsx","../src/components/table/table-previous-page.tsx","../src/components/table/table-progress-cell.tsx","../src/components/table/table-relative-time-cell.tsx","../src/components/table/table-results.tsx","../src/components/table/table-search.tsx","../src/components/table/table-sort-menu.tsx","../src/components/table/table-sort-chip.tsx","../src/components/table/table-sort-list.tsx","../src/components/table/table-tags-cell.tsx","../src/components/table/table-text-cell.tsx","../src/components/table/table-toolbar.tsx","../src/components/table/table-top-bar.tsx","../src/components/table/table-view-mode-toggle.tsx","../src/components/table/table-viewport.tsx","../src/components/table/table-context.tsx","../src/components/toast/anchored-toast-item.tsx","../src/components/toast/toast-manager.ts","../src/components/toast/anchored-toasts.tsx","../src/components/toast/stack-toast-item.tsx","../src/components/toast/stack-toasts.tsx","../src/components/toast/toast-managers.ts","../src/components/toast/toast-provider.tsx","../src/components/toast/toast.tsx","../src/components/toggle-group/toggle-group.types.ts","../src/components/toggle-group/toggle-group.tsx"],"sourcesContent":["import { clsx } from 'clsx'\nimport type { ClassValue } from 'clsx'\nimport { extendTailwindMerge } from 'tailwind-merge'\n\n// Theme spacing tokens from styles/input.css; without them twMerge cannot dedupe e.g. gap-md vs gap-0.\nconst twMerge = extendTailwindMerge({\n extend: {\n theme: {\n spacing: [\n '3xs',\n '2xs',\n 'xs',\n 'sm',\n 'md',\n 'lg',\n 'xl',\n '2xl',\n '3xl',\n '3xs-2xs',\n '2xs-xs',\n 'xs-sm',\n 'sm-md',\n 'md-lg',\n 'lg-xl',\n 'xl-2xl',\n '2xl-3xl',\n 'sm-lg',\n ],\n },\n },\n})\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import type { Accordion as BaseAccordion } from '@base-ui/react/accordion'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type React from 'react'\n\ntype AccordionProps = React.ComponentProps<typeof BaseAccordion.Root> &\n VariantProps<typeof accordionVariants> & {\n withSeparator?: boolean\n }\n\ntype AccordionPanelProps = React.ComponentProps<typeof BaseAccordion.Panel>\n\nconst accordionVariants = cva('flex flex-col justify-center', {\n defaultVariants: {\n variant: 'surface',\n },\n variants: {\n variant: {\n ghost: 'bg-transparent',\n surface: 'overflow-hidden rounded-xl bg-surface shadow-2xs',\n },\n },\n }),\n accordionItemVariants = cva(\n 'group transition-all data-disabled:pointer-events-none data-disabled:opacity-50',\n {\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n size: {\n large:\n '[&_[data-slot=accordion-content]]:gap-x-sm [&_[data-slot=accordion-down-icon]]:size-md [&_[data-slot=accordion-subtitle]]:style-text-prose-0 [&_[data-slot=accordion-title]]:style-text-strong-1 [&_[data-slot=accordion-trigger]]:h-3xl [&_[data-slot=accordion-trigger]]:gap-md [&_[data-slot=accordion-trigger]]:pr-sm [&_[data-slot=accordion-trigger]]:pl-lg [&_[data-slot=accordion-icon]]:[&>svg]:size-lg',\n medium:\n '[&_[data-slot=accordion-content]]:gap-x-xs [&_[data-slot=accordion-down-icon]]:size-sm [&_[data-slot=accordion-subtitle]]:style-text-prose--1 [&_[data-slot=accordion-title]]:style-text-strong-0 [&_[data-slot=accordion-trigger]]:h-2xl [&_[data-slot=accordion-trigger]]:gap-sm [&_[data-slot=accordion-trigger]]:pr-sm [&_[data-slot=accordion-trigger]]:pl-md [&_[data-slot=accordion-icon]]:[&>svg]:size-md',\n small:\n '[&_[data-slot=accordion-content]]:gap-x-2xs [&_[data-slot=accordion-down-icon]]:size-xs [&_[data-slot=accordion-subtitle]]:style-text-prose--2 [&_[data-slot=accordion-title]]:style-text-strong--1 [&_[data-slot=accordion-trigger]]:h-xl [&_[data-slot=accordion-trigger]]:gap-xs [&_[data-slot=accordion-trigger]]:px-sm [&_[data-slot=accordion-icon]]:[&>svg]:size-sm',\n },\n tone: {\n accent:\n '[&_[data-slot=accordion-icon]]:text-accent-default [&_[data-slot=accordion-subtitle]]:text-accent-muted [&_[data-slot=accordion-title]]:text-accent-default [&:not([data-open])]:hover:bg-accent-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-accent-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-accent-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-accent-on-container',\n brand:\n '[&_[data-slot=accordion-icon]]:text-brand-default [&_[data-slot=accordion-subtitle]]:text-brand-muted [&_[data-slot=accordion-title]]:text-brand-default [&:not([data-open])]:hover:bg-brand-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-brand-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-brand-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-brand-on-container',\n error:\n '[&_[data-slot=accordion-icon]]:text-error-default [&_[data-slot=accordion-subtitle]]:text-error-muted [&_[data-slot=accordion-title]]:text-error-default [&:not([data-open])]:hover:bg-error-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-error-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-error-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-error-on-container',\n info: '[&_[data-slot=accordion-icon]]:text-info-default [&_[data-slot=accordion-subtitle]]:text-info-muted [&_[data-slot=accordion-title]]:text-info-default [&:not([data-open])]:hover:bg-info-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-info-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-info-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-info-on-container',\n neutral:\n '[&_[data-slot=accordion-icon]]:text-neutral-default [&_[data-slot=accordion-subtitle]]:text-neutral-muted [&_[data-slot=accordion-title]]:text-neutral-default [&:not([data-open])]:hover:bg-neutral-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-neutral-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-neutral-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-neutral-on-container',\n success:\n '[&_[data-slot=accordion-icon]]:text-success-default [&_[data-slot=accordion-subtitle]]:text-success-muted [&_[data-slot=accordion-title]]:text-success-default [&:not([data-open])]:hover:bg-success-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-success-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-success-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-success-on-container',\n warning:\n '[&_[data-slot=accordion-icon]]:text-warning-default [&_[data-slot=accordion-subtitle]]:text-warning-muted [&_[data-slot=accordion-title]]:text-warning-default [&:not([data-open])]:hover:bg-warning-container [&:not([data-open])]:hover:[&_[data-slot=accordion-icon]]:text-warning-on-container [&:not([data-open])]:hover:[&_[data-slot=accordion-subtitle]]:text-warning-on-container-muted [&:not([data-open])]:hover:[&_[data-slot=accordion-title]]:text-warning-on-container',\n },\n },\n },\n )\n\ntype AccordionItemProps = React.ComponentProps<typeof BaseAccordion.Item> &\n VariantProps<typeof accordionItemVariants>\ntype AccordionHeaderProps = React.ComponentProps<typeof BaseAccordion.Header>\ntype AccordionTitleProps = React.ComponentProps<'div'>\ntype AccordionSubtitleProps = React.ComponentProps<'div'>\ntype AccordionIconProps = React.ComponentProps<'div'>\ntype AccordionExpandIconProps = React.ComponentProps<'div'>\ntype AccordionHeaderContentProps = React.ComponentProps<'div'>\n\nexport type {\n AccordionProps,\n AccordionItemProps,\n AccordionHeaderProps,\n AccordionTitleProps,\n AccordionSubtitleProps,\n AccordionIconProps,\n AccordionPanelProps,\n AccordionExpandIconProps,\n AccordionHeaderContentProps,\n}\nexport { accordionVariants, accordionItemVariants }\n","import { Accordion as BaseAccordion } from '@base-ui/react/accordion'\n\nimport { cn } from '@/utils/cn'\n\nimport { accordionVariants } from './accordion.types'\nimport type { AccordionProps } from './accordion.types'\n\nexport function Accordion({\n withSeparator = true,\n variant,\n className,\n ref,\n ...props\n}: AccordionProps) {\n return (\n <BaseAccordion.Root\n className={cn(\n accordionVariants({ className, variant }),\n withSeparator && 'divide-y divide-border',\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","export const formatDate = (\n date: Date,\n locale?: Intl.LocalesArgument,\n options?: Intl.DateTimeFormatOptions,\n): string => new Intl.DateTimeFormat(locale, options).format(date)\n","import {\n ArrowsDownUpIcon,\n CaretDownIcon,\n CaretLeftIcon,\n CaretLineLeftIcon,\n CaretLineRightIcon,\n CaretRightIcon,\n CaretUpDownIcon,\n CaretUpIcon,\n CheckCircleIcon,\n CheckIcon,\n CircleNotchIcon,\n CopyIcon,\n DotsThreeIcon,\n DownloadIcon,\n EyeClosedIcon,\n EyeIcon,\n FileArrowUpIcon,\n FolderIcon,\n FolderOpenIcon,\n FolderSimpleIcon,\n FunnelIcon,\n FunnelSimpleIcon,\n InfoIcon,\n LockSimpleIcon,\n LockSimpleOpenIcon,\n MagnifyingGlassIcon,\n MinusIcon,\n PercentIcon,\n PlusIcon,\n SortAscendingIcon,\n SortDescendingIcon,\n StackIcon,\n ThreeDIcon,\n TrashIcon,\n UploadIcon,\n WarningCircleIcon,\n WarningIcon,\n XCircleIcon,\n XIcon,\n} from '@phosphor-icons/react'\n\nimport type { DefaultIconRegistry } from './icon.types'\n\nexport const defaultIcons: DefaultIconRegistry = {\n '3d': ThreeDIcon,\n add: PlusIcon,\n chevronDown: CaretDownIcon,\n chevronLeft: CaretLeftIcon,\n chevronRight: CaretRightIcon,\n chevronUp: CaretUpIcon,\n chevronsUpDown: CaretUpDownIcon,\n close: XIcon,\n columnFilter: FunnelSimpleIcon,\n copy: CopyIcon,\n delete: TrashIcon,\n download: DownloadIcon,\n ellipsis: DotsThreeIcon,\n error: WarningCircleIcon,\n fieldError: XCircleIcon,\n fileUpload: FileArrowUpIcon,\n filter: FunnelIcon,\n firstPage: CaretLineLeftIcon,\n folder: FolderIcon,\n folderExpandAll: FolderSimpleIcon,\n folderOpen: FolderOpenIcon,\n hidden: EyeClosedIcon,\n info: InfoIcon,\n lastPage: CaretLineRightIcon,\n layers: StackIcon,\n locked: LockSimpleIcon,\n minus: MinusIcon,\n percent: PercentIcon,\n search: MagnifyingGlassIcon,\n selected: CheckIcon,\n sort: ArrowsDownUpIcon,\n sortAscending: SortAscendingIcon,\n sortDescending: SortDescendingIcon,\n spinner: CircleNotchIcon,\n success: CheckCircleIcon,\n unlocked: LockSimpleOpenIcon,\n upload: UploadIcon,\n visible: EyeIcon,\n warning: WarningIcon,\n}\n","import React from 'react'\n\nimport type { IconContextValue } from './icon.types'\n\nexport const IconContext = React.createContext<IconContextValue>({ icons: {} })\n","import React from 'react'\n\nimport { defaultIcons } from './default-icons'\nimport { IconContext } from './icon-context'\nimport type { IconRenderProps } from './icon.types'\n\nexport function Icon({ name, weight, ...props }: IconRenderProps) {\n const context = React.useContext(IconContext),\n Custom = context.icons[name],\n Default = defaultIcons[name]\n\n if (Custom) {\n return <Custom aria-hidden=\"true\" {...props} />\n }\n\n return <Default aria-hidden=\"true\" weight={weight ?? context.weight} {...props} />\n}\n","import React from 'react'\n\nimport { IconContext } from './icon-context'\nimport type { IconProviderProps } from './icon.types'\n\n/**\n * Replaces the default Phosphor icons and sets their weight for every library component below it.\n * Providers can be nested; inner providers override only the icon names and weight they set.\n */\nexport function IconProvider({ icons, weight, children }: IconProviderProps) {\n const parent = React.useContext(IconContext),\n value = React.useMemo(\n () => ({ icons: { ...parent.icons, ...icons }, weight: weight ?? parent.weight }),\n [parent, icons, weight],\n )\n\n return <IconContext value={value}>{children}</IconContext>\n}\n","import { cn } from '@/utils'\n\nimport { Icon } from '../icon'\nimport type { AccordionExpandIconProps } from './accordion.types'\n\nexport function AccordionExpandIcon({\n className,\n children,\n ref,\n ...props\n}: AccordionExpandIconProps) {\n return (\n <div\n className={cn(\n 'ml-auto shrink-0 text-on-surface-variant transition-transform duration-200 ease-out group-data-panel-open:rotate-180',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children ?? <Icon name=\"chevronDown\" />}\n </div>\n )\n}\n","import { Accordion as BaseAccordion } from '@base-ui/react/accordion'\n\nimport { cn } from '@/utils/cn.ts'\n\nimport type { AccordionHeaderProps } from './accordion.types'\n\nexport function AccordionHeader({ className, children, ref, ...props }: AccordionHeaderProps) {\n return (\n <BaseAccordion.Header className={cn('', className)} ref={ref} {...props}>\n <BaseAccordion.Trigger\n className={cn(\n 'group flex min-h-2xl w-full items-center justify-between gap-sm py-sm pr-sm pl-md hover:cursor-pointer',\n )}\n >\n {children}\n </BaseAccordion.Trigger>\n </BaseAccordion.Header>\n )\n}\n","import { cn } from '@/utils'\n\nimport type { AccordionHeaderContentProps } from './accordion.types'\n\nexport function AccordionHeaderContent({\n className,\n children,\n ref,\n ...props\n}: AccordionHeaderContentProps) {\n return (\n <div\n className={cn(\n 'grid auto-rows-min items-center gap-x-sm has-data-[slot=accordion-icon]:grid-cols-[auto_1fr] has-data-[slot=accordion-subtitle]:grid-rows-[auto_auto] has-data-[slot=accordion-subtitle]:**:data-[slot=accordion-icon]:row-span-2',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AccordionIconProps } from './accordion.types'\n\nexport function AccordionIcon({ className, ref, ...props }: AccordionIconProps) {\n return (\n <div\n data-slot=\"accordion-icon\"\n className={cn(\n 'col-start-1 row-start-1 self-center transition-colors [&>svg]:size-md',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Accordion as BaseAccordion } from '@base-ui/react/accordion'\n\nimport { cn } from '@/utils/cn'\n\nimport { accordionItemVariants } from './accordion.types'\nimport type { AccordionItemProps } from './accordion.types'\n\nexport function AccordionItem({ size, tone, className, ref, ...props }: AccordionItemProps) {\n return (\n <BaseAccordion.Item\n className={cn(accordionItemVariants({ className, size, tone }))}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Accordion as BaseAccordion } from '@base-ui/react/accordion'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AccordionPanelProps } from './accordion.types'\n\nexport function AccordionPanel({ className, children, ref, ...props }: AccordionPanelProps) {\n return (\n <BaseAccordion.Panel\n className={cn(\n 'h-(--accordion-panel-height) overflow-hidden transition-all duration-300 ease-out data-ending-style:h-[0px] data-starting-style:h-[0px]',\n className,\n )}\n data-panel\n ref={ref}\n {...props}\n >\n <div className=\"px-md pb-sm\">{children}</div>\n </BaseAccordion.Panel>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AccordionSubtitleProps } from './accordion.types'\n\nexport function AccordionSubtitle({ className, ref, ...props }: AccordionSubtitleProps) {\n return (\n <div\n data-slot=\"accordion-subtitle\"\n className={cn('text-left style-text-prose--1 transition-colors', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AccordionTitleProps } from './accordion.types'\n\nexport function AccordionTitle({ className, ref, ...props }: AccordionTitleProps) {\n return (\n <div\n data-slot=\"accordion-title\"\n className={cn(\n 'text-left font-heading text-base font-bold transition-colors [&:has(~_[data-slot=accordion-subtitle])]:leading-[1.2] [&:not(:has(~_[data-slot=accordion-subtitle]))]:leading-none',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Accordion as AccordionRoot } from './accordion'\nimport { AccordionExpandIcon } from './accordion-expand-icon'\nimport { AccordionHeader } from './accordion-header'\nimport { AccordionHeaderContent } from './accordion-header-content'\nimport { AccordionIcon } from './accordion-icon'\nimport { AccordionItem } from './accordion-item'\nimport { AccordionPanel } from './accordion-panel'\nimport { AccordionSubtitle } from './accordion-subtitle'\nimport { AccordionTitle } from './accordion-title'\n\nconst Accordion = Object.assign(AccordionRoot, {\n ExpandIcon: AccordionExpandIcon,\n Header: AccordionHeader,\n HeaderContent: AccordionHeaderContent,\n Icon: AccordionIcon,\n Item: AccordionItem,\n Panel: AccordionPanel,\n Subtitle: AccordionSubtitle,\n Title: AccordionTitle,\n})\n\nexport type {\n AccordionHeaderProps,\n AccordionItemProps,\n AccordionProps,\n AccordionPanelProps,\n AccordionSubtitleProps,\n AccordionTitleProps,\n AccordionIconProps,\n AccordionHeaderContentProps,\n} from './accordion.types'\nexport { AccordionHeader } from './accordion-header'\nexport { AccordionItem } from './accordion-item'\nexport { AccordionPanel } from './accordion-panel'\nexport { AccordionSubtitle } from './accordion-subtitle'\nexport { AccordionTitle } from './accordion-title'\nexport { AccordionIcon } from './accordion-icon'\nexport { AccordionExpandIcon } from './accordion-expand-icon'\nexport { AccordionHeaderContent } from './accordion-header-content'\n\nexport { Accordion }\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nconst alertVariants = cva(\n 'group grid auto-rows-min items-center justify-start gap-x-xs rounded-xl border py-sm pr-sm pl-md transition-all has-data-[slot=alert-action]:grid-cols-[1fr_auto] has-data-[slot=alert-description]:grid-rows-[auto_auto] has-data-[slot=alert-icon]:grid-cols-[auto_1fr] has-data-[slot=alert-icon]:has-data-[slot=alert-action]:grid-cols-[auto_1fr_auto] has-data-[slot=alert-description]:**:data-[slot=alert-icon]:row-span-2',\n {\n defaultVariants: {\n tone: 'brand',\n },\n variants: {\n tone: {\n accent:\n 'border-accent-border bg-accent-container [&_[data-slot=alert-description]]:text-accent-on-container-muted [&_[data-slot=alert-icon]]:text-accent-on-container [&_[data-slot=alert-title]]:text-accent-on-container',\n brand:\n 'border-brand-border bg-brand-container [&_[data-slot=alert-description]]:text-brand-on-container-muted [&_[data-slot=alert-icon]]:text-brand-on-container [&_[data-slot=alert-title]]:text-brand-on-container',\n error:\n 'border-error-border bg-error-container [&_[data-slot=alert-description]]:text-error-on-container-muted [&_[data-slot=alert-icon]]:text-error-on-container [&_[data-slot=alert-title]]:text-error-on-container',\n info: 'border-info-border bg-info-container [&_[data-slot=alert-description]]:text-info-on-container-muted [&_[data-slot=alert-icon]]:text-info-on-container [&_[data-slot=alert-title]]:text-info-on-container',\n neutral:\n 'border-neutral-border bg-neutral-container [&_[data-slot=alert-description]]:text-neutral-on-container-muted [&_[data-slot=alert-icon]]:text-neutral-on-container [&_[data-slot=alert-title]]:text-neutral-on-container',\n success:\n 'border-success-border bg-success-container [&_[data-slot=alert-description]]:text-success-on-container-muted [&_[data-slot=alert-icon]]:text-success-on-container [&_[data-slot=alert-title]]:text-success-on-container',\n warning:\n 'border-warning-border bg-warning-container [&_[data-slot=alert-description]]:text-warning-on-container-muted [&_[data-slot=alert-icon]]:text-warning-on-container [&_[data-slot=alert-title]]:text-warning-on-container',\n },\n },\n },\n)\n\ntype AlertProps = React.ComponentProps<'div'> & VariantProps<typeof alertVariants>\ntype AlertTitleProps = React.ComponentProps<'div'>\ntype AlertDescriptionProps = React.ComponentProps<'div'>\ntype AlertActionProps = React.ComponentProps<'div'>\ntype AlertIconProps = React.ComponentProps<'div'>\n\nexport {\n alertVariants,\n type AlertProps,\n type AlertTitleProps,\n type AlertDescriptionProps,\n type AlertActionProps,\n type AlertIconProps,\n}\n","import { cn } from '@/utils/cn'\n\nimport { alertVariants } from './alert.types'\nimport type { AlertProps } from './alert.types'\n\nexport function Alert({ tone, className, ref, ...props }: AlertProps) {\n return <div className={cn(alertVariants({ className, tone }))} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertActionProps } from './alert.types'\n\nexport function AlertAction({ className, ref, ...props }: AlertActionProps) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn('col-[-2/-1] row-span-2 row-start-1 ml-md self-start', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertDescriptionProps } from './alert.types'\n\nexport function AlertDescription({ className, ref, ...props }: AlertDescriptionProps) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn('style-text-prose--1', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertIconProps } from './alert.types'\n\nexport function AlertIcon({ className, ref, ...props }: AlertIconProps) {\n return (\n <div\n data-slot=\"alert-icon\"\n className={cn(\n 'col-start-1 row-start-1 self-start transition-colors [&>svg]:size-md',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertTitleProps } from './alert.types'\n\nexport function AlertTitle({ className, ref, ...props }: AlertTitleProps) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n 'flex items-center gap-2xs font-heading text-base font-bold [&:has(~_[data-slot=alert-description])]:leading-[1.2] [&:not(:has(~_[data-slot=alert-description]))]:leading-none',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Alert as AlertRoot } from './alert'\nimport { AlertAction } from './alert-action'\nimport { AlertDescription } from './alert-description'\nimport { AlertIcon } from './alert-icon'\nimport { AlertTitle } from './alert-title'\n\nconst Alert = Object.assign(AlertRoot, {\n Action: AlertAction,\n Description: AlertDescription,\n Icon: AlertIcon,\n Title: AlertTitle,\n})\n\nexport type {\n AlertActionProps,\n AlertDescriptionProps,\n AlertIconProps,\n AlertProps,\n AlertTitleProps,\n} from './alert.types'\nexport { AlertDescription } from './alert-description'\nexport { AlertTitle } from './alert-title'\nexport { AlertAction } from './alert-action'\nexport { AlertIcon } from './alert-icon'\n\nexport { Alert }\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport type { AlertDialogProps } from './alert-dialog.types'\n\nexport function AlertDialog({ ...props }: AlertDialogProps) {\n return <BaseAlertDialog.Root {...props} />\n}\n","// oxlint-disable no-magic-numbers\nimport { Children, Fragment, isValidElement } from 'react'\nimport type { ReactNode } from 'react'\n\nexport function hasSingleElementChild(children: ReactNode): boolean {\n const items = Children.toArray(children),\n [child] = items\n\n if (items.length !== 1) {\n return false\n }\n\n if (!isValidElement<{ children?: ReactNode }>(child)) {\n return false\n }\n if (child.type === Fragment) {\n return hasSingleElementChild(child.props.children)\n }\n\n return true\n}\n","import type { Button as BaseButton } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const buttonVariants = cva(\n 'inline-flex cursor-pointer items-center justify-center rounded-full whitespace-nowrap transition-all select-none disabled:pointer-events-none disabled:opacity-50',\n {\n compoundVariants: [\n {\n className: 'bg-brand-default text-brand-on-default hover:bg-brand-muted',\n tone: 'brand',\n variant: 'fill',\n },\n {\n className: 'bg-accent-default text-accent-on-default hover:bg-accent-muted',\n tone: 'accent',\n variant: 'fill',\n },\n {\n className: 'bg-neutral-default text-neutral-on-default hover:bg-neutral-muted',\n tone: 'neutral',\n variant: 'fill',\n },\n {\n className: 'bg-error-default text-error-on-default hover:bg-error-muted',\n tone: 'error',\n variant: 'fill',\n },\n {\n className: 'bg-info-default text-info-on-default hover:bg-info-muted',\n tone: 'info',\n variant: 'fill',\n },\n {\n className: 'bg-success-default text-success-on-default hover:bg-success-muted',\n tone: 'success',\n variant: 'fill',\n },\n {\n className: 'bg-warning-default text-warning-on-default hover:bg-warning-muted',\n tone: 'warning',\n variant: 'fill',\n },\n {\n className: 'bg-brand-subtle text-brand-on-container hover:bg-brand-container-high',\n tone: 'brand',\n variant: 'secondary',\n },\n {\n className: 'bg-accent-subtle text-accent-on-container hover:bg-accent-container-high',\n tone: 'accent',\n variant: 'secondary',\n },\n {\n className: 'bg-neutral-subtle text-neutral-on-container hover:bg-neutral-container-high',\n tone: 'neutral',\n variant: 'secondary',\n },\n {\n className: 'bg-error-subtle text-error-on-container hover:bg-error-container-high',\n tone: 'error',\n variant: 'secondary',\n },\n {\n className: 'bg-info-subtle text-info-on-container hover:bg-info-container-high',\n tone: 'info',\n variant: 'secondary',\n },\n {\n className: 'bg-success-subtle text-success-on-container hover:bg-success-container-high',\n tone: 'success',\n variant: 'secondary',\n },\n {\n className: 'bg-warning-subtle text-warning-on-container hover:bg-warning-container-high',\n tone: 'warning',\n variant: 'secondary',\n },\n {\n className:\n 'border-brand-border text-brand-default hover:bg-brand-subtle hover:text-brand-on-container',\n tone: 'brand',\n variant: 'outline',\n },\n {\n className:\n 'border-accent-border text-accent-default hover:bg-accent-subtle hover:text-accent-on-container',\n tone: 'accent',\n variant: 'outline',\n },\n {\n className:\n 'border-neutral-border text-neutral-default hover:bg-neutral-subtle hover:text-neutral-on-container',\n tone: 'neutral',\n variant: 'outline',\n },\n {\n className:\n 'border-error-border text-error-default hover:bg-error-subtle hover:text-error-on-container',\n tone: 'error',\n variant: 'outline',\n },\n {\n className:\n 'border-info-border text-info-default hover:bg-info-subtle hover:text-info-on-container',\n tone: 'info',\n variant: 'outline',\n },\n {\n className:\n 'border-success-border text-success-default hover:bg-success-subtle hover:text-success-on-container',\n tone: 'success',\n variant: 'outline',\n },\n {\n className:\n 'border-warning-border text-warning-default hover:bg-warning-subtle hover:text-warning-on-container',\n tone: 'warning',\n variant: 'outline',\n },\n {\n className: 'text-brand-default hover:bg-brand-subtle hover:text-brand-on-container',\n tone: 'brand',\n variant: 'ghost',\n },\n {\n className: 'text-accent-default hover:bg-accent-subtle hover:text-accent-on-container',\n tone: 'accent',\n variant: 'ghost',\n },\n {\n className: 'text-neutral-default hover:bg-neutral-subtle hover:text-neutral-on-container',\n tone: 'neutral',\n variant: 'ghost',\n },\n {\n className: 'text-error-default hover:bg-error-subtle hover:text-error-on-container',\n tone: 'error',\n variant: 'ghost',\n },\n {\n className: 'text-info-default hover:bg-info-subtle hover:text-info-on-container',\n tone: 'info',\n variant: 'ghost',\n },\n {\n className: 'text-success-default hover:bg-success-subtle hover:text-success-on-container',\n tone: 'success',\n variant: 'ghost',\n },\n {\n className: 'text-warning-default hover:bg-warning-subtle hover:text-warning-on-container',\n tone: 'warning',\n variant: 'ghost',\n },\n {\n className:\n 'border-brand-border bg-brand-container text-brand-on-container hover:border-brand-border-strong hover:bg-brand-container-high',\n tone: 'brand',\n variant: 'soft',\n },\n {\n className:\n 'border-accent-border bg-accent-container text-accent-on-container hover:border-accent-border-strong hover:bg-accent-container-high',\n tone: 'accent',\n variant: 'soft',\n },\n {\n className:\n 'border-neutral-border bg-neutral-container text-neutral-on-container hover:border-neutral-border-strong hover:bg-neutral-container-high',\n tone: 'neutral',\n variant: 'soft',\n },\n {\n className:\n 'border-error-border bg-error-container text-error-on-container hover:border-error-border-strong hover:bg-error-container-high',\n tone: 'error',\n variant: 'soft',\n },\n {\n className:\n 'border-info-border bg-info-container text-info-on-container hover:border-info-border-strong hover:bg-info-container-high',\n tone: 'info',\n variant: 'soft',\n },\n {\n className:\n 'border-success-border bg-success-container text-success-on-container hover:border-success-border-strong hover:bg-success-container-high',\n tone: 'success',\n variant: 'soft',\n },\n {\n className:\n 'border-warning-border bg-warning-container text-warning-on-container hover:border-warning-border-strong hover:bg-warning-container-high',\n tone: 'warning',\n variant: 'soft',\n },\n {\n className:\n 'bg-brand-container text-brand-on-container not-active:hover:bg-brand-container-high',\n tone: 'brand',\n variant: 'elevated',\n },\n {\n className:\n 'bg-accent-container text-accent-on-container not-active:hover:bg-accent-container-high',\n tone: 'accent',\n variant: 'elevated',\n },\n {\n className: 'bg-surface-2 text-on-surface not-active:hover:bg-surface-3',\n tone: 'neutral',\n variant: 'elevated',\n },\n {\n className:\n 'bg-error-container text-error-on-container not-active:hover:bg-error-container-high',\n tone: 'error',\n variant: 'elevated',\n },\n {\n className:\n 'bg-info-container text-info-on-container not-active:hover:bg-info-container-high',\n tone: 'info',\n variant: 'elevated',\n },\n {\n className:\n 'bg-success-container text-success-on-container not-active:hover:bg-success-container-high',\n tone: 'success',\n variant: 'elevated',\n },\n {\n className:\n 'bg-warning-container text-warning-on-container not-active:hover:bg-warning-container-high',\n tone: 'warning',\n variant: 'elevated',\n },\n {\n className:\n 'text-brand-default hover:decoration-brand-default [&>svg]:text-brand-default/50 hover:[&>svg]:text-brand-default',\n tone: 'brand',\n variant: 'link',\n },\n {\n className:\n 'text-accent-default hover:decoration-accent-default [&>svg]:text-accent-default/50 hover:[&>svg]:text-accent-default',\n tone: 'accent',\n variant: 'link',\n },\n {\n className:\n 'text-neutral-default hover:decoration-neutral-default [&>svg]:text-neutral-default/50 hover:[&>svg]:text-neutral-default',\n tone: 'neutral',\n variant: 'link',\n },\n {\n className:\n 'text-error-default hover:decoration-error-default [&>svg]:text-error-default/50 hover:[&>svg]:text-error-default',\n tone: 'error',\n variant: 'link',\n },\n {\n className:\n 'text-info-default hover:decoration-info-default [&>svg]:text-info-default/50 hover:[&>svg]:text-info-default',\n tone: 'info',\n variant: 'link',\n },\n {\n className:\n 'text-success-default hover:decoration-success-default [&>svg]:text-success-default/50 hover:[&>svg]:text-success-default',\n tone: 'success',\n variant: 'link',\n },\n {\n className:\n 'text-warning-default hover:decoration-warning-default [&>svg]:text-warning-default/50 hover:[&>svg]:text-warning-default',\n tone: 'warning',\n variant: 'link',\n },\n ],\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n variant: 'fill',\n },\n variants: {\n size: {\n extraSmall:\n 'h-md gap-3xs px-2xs font-body text-xs leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-md [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-xs',\n large:\n 'h-2xl min-w-2xl gap-xs px-md font-body text-lg leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-2xl [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-lg',\n medium:\n 'h-xl min-w-xl gap-2xs px-sm font-body text-base leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-xl [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-md',\n small:\n 'h-lg min-w-lg gap-3xs px-xs font-body text-sm leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-lg [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-sm',\n },\n tone: {\n accent: '',\n brand: '',\n error: '',\n info: '',\n neutral: '',\n success: '',\n warning: '',\n },\n variant: {\n elevated: 'shadow-xs not-active:hover:shadow-md',\n fill: 'active:scale-95',\n ghost: 'active:scale-95',\n link: 'size-fit! p-0! underline decoration-transparent underline-offset-2 [&>svg]:transition-colors',\n outline: 'border active:scale-95',\n secondary: 'active:scale-95',\n soft: 'border active:scale-95',\n },\n },\n },\n)\n\nexport type ButtonProps = React.ComponentProps<typeof BaseButton> &\n VariantProps<typeof buttonVariants>\n","import { Button as BaseButton } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\nimport { hasSingleElementChild } from '@/utils/has-single-element-child'\n\nimport { buttonVariants } from './button.types'\nimport type { ButtonProps } from './button.types'\n\nexport function Button({ tone, variant, size, className, children, ...props }: ButtonProps) {\n let iconOnly: '' | undefined = undefined\n\n if (hasSingleElementChild(children)) {\n iconOnly = ''\n }\n\n return (\n <BaseButton\n data-icon-only={iconOnly}\n data-size={size}\n className={cn(buttonVariants({ className, size, tone, variant }))}\n {...props}\n >\n {children}\n </BaseButton>\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { AlertDialogCloseProps } from './alert-dialog.types'\n\nexport function AlertDialogClose({\n className,\n tone = 'neutral',\n variant = 'outline',\n size,\n ...props\n}: AlertDialogCloseProps) {\n return (\n <BaseAlertDialog.Close\n data-slot=\"alert-dialog-close\"\n className={cn(className)}\n render={<Button tone={tone} variant={variant} size={size} />}\n {...props}\n />\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { AlertDialogConfirmProps } from './alert-dialog.types'\n\nexport function AlertDialogConfirm({ className, ref, ...props }: AlertDialogConfirmProps) {\n return (\n <BaseAlertDialog.Close\n data-confirm\n data-slot=\"alert-dialog-confirm\"\n className={cn('', className)}\n ref={ref}\n {...props}\n render={<Button />}\n />\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AlertDialogDescriptionProps } from './alert-dialog.types'\n\nexport function AlertDialogDescription({ className, ref, ...props }: AlertDialogDescriptionProps) {\n return (\n <BaseAlertDialog.Description\n data-slot=\"alert-dialog-description\"\n className={cn('mb-[0px] style-text-prose-0', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertDialogFooterProps } from './alert-dialog.types'\n\nexport function AlertDialogFooter({ className, ref, ...props }: AlertDialogFooterProps) {\n return (\n <div className={cn('flex items-start justify-end gap-2xs', className)} ref={ref} {...props} />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertDialogHeaderProps } from './alert-dialog.types'\n\nexport function AlertDialogHeader({ className, ref, ...props }: AlertDialogHeaderProps) {\n return (\n <div\n className={cn(\n 'grid auto-rows-min items-center gap-x-sm has-data-[slot=alert-dialog-description]:grid-rows-[auto_auto] has-data-[slot=alert-dialog-icon]:grid-cols-[auto_1fr] has-data-[slot=alert-dialog-description]:**:data-[slot=alert-dialog-icon]:row-span-2',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AlertDialogIconProps } from './alert-dialog.types'\n\nexport function AlertDialogIcon({ className, ref, ...props }: AlertDialogIconProps) {\n return (\n <div\n data-slot=\"alert-dialog-icon\"\n className={cn('row-span-2 self-start [&>svg]:size-xl [&>svg]:shrink-0', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { ButtonProps } from '../button/button.types'\n\nconst alertDialogVariants = cva(\n 'fixed top-1/2 left-1/2 z-999 max-w-[lg(100vw-3rem)] min-w-1/3 -translate-1/2 space-y-md overflow-hidden rounded-3xl bg-surface-3 p-md transition-all duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0',\n {\n defaultVariants: {\n tone: 'brand',\n },\n variants: {\n tone: {\n accent:\n '[&_[data-slot=alert-dialog-confirm]]:bg-accent-default [&_[data-slot=alert-dialog-confirm]]:text-accent-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-accent-muted [&_svg]:text-accent-default',\n brand:\n '[&_[data-slot=alert-dialog-confirm]]:bg-brand-default [&_[data-slot=alert-dialog-confirm]]:text-brand-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-brand-muted [&_svg]:text-brand-default',\n error:\n '[&_[data-slot=alert-dialog-confirm]]:bg-error-default [&_[data-slot=alert-dialog-confirm]]:text-error-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-error-muted [&_svg]:text-error-default',\n info: '[&_[data-slot=alert-dialog-confirm]]:bg-info-default [&_[data-slot=alert-dialog-confirm]]:text-info-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-info-muted [&_svg]:text-info-default',\n neutral:\n '[&_[data-slot=alert-dialog-confirm]]:bg-neutral-default [&_[data-slot=alert-dialog-confirm]]:text-neutral-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-neutral-muted [&_svg]:text-neutral-default',\n success:\n '[&_[data-slot=alert-dialog-confirm]]:bg-success-default [&_[data-slot=alert-dialog-confirm]]:text-success-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-success-muted [&_svg]:text-success-default',\n warning:\n '[&_[data-slot=alert-dialog-confirm]]:bg-warning-default [&_[data-slot=alert-dialog-confirm]]:text-warning-on-default [&_[data-slot=alert-dialog-confirm]]:hover:bg-warning-muted [&_svg]:text-warning-default',\n },\n },\n },\n ),\n alertDialogHandle = BaseAlertDialog.createHandle<React.ComponentType>()\n\ntype AlertDialogProps = React.ComponentProps<typeof BaseAlertDialog.Root>\ntype AlertDialogTriggerProps = React.ComponentProps<typeof BaseAlertDialog.Trigger>\ntype AlertDialogPopupProps = React.ComponentProps<typeof BaseAlertDialog.Popup> &\n VariantProps<typeof alertDialogVariants>\ntype AlertDialogHeaderProps = React.ComponentProps<'div'>\ntype AlertDialogTitleProps = React.ComponentProps<typeof BaseAlertDialog.Title>\ntype AlertDialogDescriptionProps = React.ComponentProps<typeof BaseAlertDialog.Description>\ntype AlertDialogCloseProps = React.ComponentProps<typeof BaseAlertDialog.Close> &\n Pick<ButtonProps, 'tone' | 'variant' | 'size'>\ntype AlertDialogFooterProps = React.ComponentProps<'div'>\ntype AlertDialogConfirmProps = React.ComponentProps<typeof BaseAlertDialog.Close> &\n Pick<ButtonProps, 'tone' | 'variant' | 'size'>\ntype AlertDialogIconProps = React.ComponentProps<'div'>\n\nexport type {\n AlertDialogProps,\n AlertDialogTriggerProps,\n AlertDialogPopupProps,\n AlertDialogHeaderProps,\n AlertDialogTitleProps,\n AlertDialogDescriptionProps,\n AlertDialogCloseProps,\n AlertDialogFooterProps,\n AlertDialogConfirmProps,\n AlertDialogIconProps,\n}\nexport { alertDialogHandle, alertDialogVariants }\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { alertDialogVariants } from './alert-dialog.types'\nimport type { AlertDialogPopupProps } from './alert-dialog.types'\n\nconst style: React.CSSProperties = {\n WebkitBackdropFilter: 'blur(16px)',\n backdropFilter: 'blur(16px)',\n backgroundColor: 'rgb(0 0 0 / 10%)',\n}\n\nexport function AlertDialogPopup({ tone, className, ref, ...props }: AlertDialogPopupProps) {\n return (\n <BaseAlertDialog.Portal>\n <BaseAlertDialog.Backdrop\n data-slot=\"alert-dialog-backdrop\"\n className=\"fixed inset-[0px] z-998 min-h-dvh transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-[-webkit-touch-callout:none]:absolute\"\n style={style}\n />\n <BaseAlertDialog.Popup\n className={cn(alertDialogVariants({ tone }), className)}\n ref={ref}\n {...props}\n />\n </BaseAlertDialog.Portal>\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AlertDialogTitleProps } from './alert-dialog.types'\n\nexport function AlertDialogTitle({ className, ref, ...props }: AlertDialogTitleProps) {\n return (\n <BaseAlertDialog.Title\n data-slot=\"alert-dialog-title\"\n className={cn('style-text-strong-1', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { AlertDialog as BaseAlertDialog } from '@base-ui/react'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AlertDialogTriggerProps } from './alert-dialog.types'\n\nexport function AlertDialogTrigger({\n className,\n children,\n ref,\n ...props\n}: AlertDialogTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return (\n <BaseAlertDialog.Trigger className={cn('', className)} ref={ref} {...props} render={render} />\n )\n}\n","import { AlertDialog as AlertDialogRoot } from './alert-dialog'\nimport { AlertDialogClose } from './alert-dialog-close'\nimport { AlertDialogConfirm } from './alert-dialog-confirm'\nimport { AlertDialogDescription } from './alert-dialog-description'\nimport { AlertDialogFooter } from './alert-dialog-footer'\nimport { AlertDialogHeader } from './alert-dialog-header'\nimport { AlertDialogIcon } from './alert-dialog-icon'\nimport { AlertDialogPopup } from './alert-dialog-popup'\nimport { AlertDialogTitle } from './alert-dialog-title'\nimport { AlertDialogTrigger } from './alert-dialog-trigger'\n\nconst AlertDialog = Object.assign(AlertDialogRoot, {\n Close: AlertDialogClose,\n Confirm: AlertDialogConfirm,\n Description: AlertDialogDescription,\n Footer: AlertDialogFooter,\n Header: AlertDialogHeader,\n Icon: AlertDialogIcon,\n Popup: AlertDialogPopup,\n Title: AlertDialogTitle,\n Trigger: AlertDialogTrigger,\n})\n\nexport type {\n AlertDialogCloseProps,\n AlertDialogConfirmProps,\n AlertDialogDescriptionProps,\n AlertDialogFooterProps,\n AlertDialogHeaderProps,\n AlertDialogPopupProps,\n AlertDialogProps,\n AlertDialogTitleProps,\n AlertDialogTriggerProps,\n AlertDialogIconProps,\n} from './alert-dialog.types'\nexport { AlertDialogClose } from './alert-dialog-close'\nexport { AlertDialogConfirm } from './alert-dialog-confirm'\nexport { AlertDialogDescription } from './alert-dialog-description'\nexport { AlertDialogFooter } from './alert-dialog-footer'\nexport { AlertDialogHeader } from './alert-dialog-header'\nexport { AlertDialogPopup } from './alert-dialog-popup'\nexport { AlertDialogTitle } from './alert-dialog-title'\nexport { AlertDialogTrigger } from './alert-dialog-trigger'\nexport { AlertDialogIcon } from './alert-dialog-icon'\n\nexport { AlertDialog }\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport type { AutocompleteProps } from './autocomplete.types'\n\nexport function Autocomplete({ ...props }: AutocompleteProps) {\n return <BaseAutocomplete.Root {...props} />\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport type { AutocompleteCollectionProps } from './autocomplete.types'\n\nexport function AutocompleteCollection({ ...props }: AutocompleteCollectionProps) {\n return <BaseAutocomplete.Collection {...props} />\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteContentProps } from './autocomplete.types'\n\nconst DEFAULT_SIDE_OFFSET = 12\n\nexport function AutocompleteContent({\n className,\n children,\n sideOffset = DEFAULT_SIDE_OFFSET,\n ref,\n ...props\n}: AutocompleteContentProps) {\n return (\n <BaseAutocomplete.Portal>\n <BaseAutocomplete.Positioner\n className={cn('', className)}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n >\n <BaseAutocomplete.Popup className=\"max-h-[22.5rem] w-[calc(var(--anchor-width)+var(--spacing-md))] max-w-[calc(var(--available-width))] overflow-hidden rounded-xl bg-surface-2 shadow-md\">\n <BaseAutocomplete.List className=\"max-h-[min(22.5rem,var(--available-height))] scroll-pt-[2.25rem] scroll-pb-[0.5rem] overflow-y-auto overscroll-contain data-empty:p-[0px]\">\n {children}\n </BaseAutocomplete.List>\n </BaseAutocomplete.Popup>\n </BaseAutocomplete.Positioner>\n </BaseAutocomplete.Portal>\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils'\n\nimport type { AutocompleteEmptyProps } from './autocomplete.types'\n\nexport function AutocompleteEmpty({ className, ref, ...props }: AutocompleteEmptyProps) {\n return (\n <BaseAutocomplete.Empty\n className={cn(\n 'flex items-center gap-2xs px-sm py-xs style-text-prose--1 text-on-surface-variant empty:p-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { Input as BaseInput } from '@base-ui/react/input'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\n\nconst BYTES_PER_KILOBYTE = 1000,\n INITIAL_UNIT_INDEX = 0,\n INTEGER_PRECISION = 0,\n FRACTIONAL_PRECISION = 1,\n UNIT_INDEX_INCREMENT = 1,\n getPrecision = (size: number): number => {\n if (Number.isInteger(size)) {\n return INTEGER_PRECISION\n }\n return FRACTIONAL_PRECISION\n },\n formatFileSize = (bytes: number): string => {\n if (bytes < BYTES_PER_KILOBYTE) {\n return `${bytes} B`\n }\n\n const units = ['KB', 'MB', 'GB', 'TB']\n let size = bytes / BYTES_PER_KILOBYTE,\n unitIndex = INITIAL_UNIT_INDEX\n\n while (size >= BYTES_PER_KILOBYTE && unitIndex < units.length - UNIT_INDEX_INCREMENT) {\n size /= BYTES_PER_KILOBYTE\n unitIndex += UNIT_INDEX_INCREMENT\n }\n\n return `${size.toFixed(getPrecision(size))} ${units[unitIndex]}`\n },\n inputVariants = cva(\n 'group flex w-full items-center text-ellipsis caret-brand-border-strong outline outline-transparent transition-all placeholder:opacity-60 focus-within:outline-brand-border-strong not-focus-within:hover:outline-border-strong disabled:cursor-not-allowed aria-invalid:bg-error-container aria-invalid:text-error-on-container aria-invalid:caret-error-border-strong aria-invalid:outline-error-border aria-invalid:focus-within:outline-error-border-strong aria-invalid:not-focus-within:hover:outline-error-border data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50',\n {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n },\n variants: {\n size: {\n large: 'h-2xl gap-xs rounded-2xl px-md style-text-prose-1',\n medium: 'h-xl gap-2xs rounded-xl px-sm style-text-prose-0',\n small: 'h-lg gap-3xs rounded-lg pr-3xs pl-xs style-text-prose--1',\n },\n variant: {\n ghost: 'bg-transparent',\n outline: 'bg-transparent outline outline-border',\n primary: 'bg-surface shadow-2xs',\n secondary: 'bg-neutral-container',\n },\n },\n },\n )\n\ntype InputProps = VariantProps<typeof inputVariants> &\n Omit<ComponentProps<typeof BaseInput>, 'size'> & {\n fileUploadButtonLabel?: string\n fileUploadButtonIcon?: React.ReactNode\n maxFiles?: number\n maxFileSize?: number\n clearFilesLabel?: string\n filesSelectedLabel?: (count: number) => string\n maxFilesErrorLabel?: (maxFiles: number) => string\n maxFileSizeErrorLabel?: (fileName: string, maxFileSize: string) => string\n compact?: boolean\n }\n\nexport { formatFileSize, inputVariants, type InputProps }\n","import { cn } from '@/utils/cn'\n\nimport { inputVariants } from '../input/input.types'\nimport type { AutocompleteInputGroupProps } from './autocomplete.types'\n\nexport function AutocompleteInputGroup({\n variant,\n className,\n ref,\n ...props\n}: AutocompleteInputGroupProps) {\n return <div className={cn(inputVariants({ variant }), className)} ref={ref} {...props} />\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteInputGroupInputProps } from './autocomplete.types'\n\nexport function AutocompleteInputGroupInput({\n placeholder,\n className,\n ref,\n ...props\n}: AutocompleteInputGroupInputProps) {\n return (\n <BaseAutocomplete.Input\n placeholder={placeholder}\n className={cn('grow text-ellipsis outline-none placeholder:opacity-85', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport { AutocompleteInputGroup } from './autocomplete-input-group'\nimport { AutocompleteInputGroupInput } from './autocomplete-input-group-input'\nimport type { AutocompleteGridContentProps } from './autocomplete.types'\n\nconst DEFAULT_SIDE_OFFSET = 4\n\nexport function AutocompleteGridContent({\n placeholder = 'Search…',\n emptyText,\n className,\n children,\n sideOffset = DEFAULT_SIDE_OFFSET,\n ref,\n ...props\n}: AutocompleteGridContentProps) {\n return (\n <BaseAutocomplete.Portal>\n <BaseAutocomplete.Positioner\n className={cn('', className)}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n >\n <BaseAutocomplete.Popup className=\"max-h-[20.5rem] max-w-(--available-width) origin-(--transform-origin) overflow-hidden rounded-lg bg-surface-2 shadow-lg transition-[transform,scale,opacity] [--input-container-height:3rem] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0\">\n <div className=\"m-3xs flex h-(--input-container-height) items-center justify-center text-center\">\n <AutocompleteInputGroup>\n <AutocompleteInputGroupInput placeholder={placeholder} />\n </AutocompleteInputGroup>\n </div>\n <BaseAutocomplete.Empty className=\"p-sm style-text-prose--1 empty:m-[0px] empty:p-[0px]\">\n {emptyText}\n </BaseAutocomplete.Empty>\n <BaseAutocomplete.List className=\"max-h-[calc(19.5rem-var(--input-container-height))] scroll-pt-xl scroll-pb-[0.35rem] overflow-auto overscroll-contain\">\n {children}\n </BaseAutocomplete.List>\n </BaseAutocomplete.Popup>\n </BaseAutocomplete.Positioner>\n </BaseAutocomplete.Portal>\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteGridItemProps } from './autocomplete.types'\n\nexport function AutocompleteGridItem({\n className,\n children,\n ref,\n ...props\n}: AutocompleteGridItemProps) {\n return (\n <BaseAutocomplete.Item\n className={cn(\n 'group flex h-lg min-w-(--anchor-width) cursor-default items-center rounded-md style-text-prose--1 select-none hover:cursor-pointer hover:bg-accent-default hover:text-surface data-highlighted:relative data-highlighted:z-0 data-highlighted:bg-accent-default data-highlighted:text-surface before:data-highlighted:absolute before:data-highlighted:inset-[0px] before:data-highlighted:z-[-1] before:data-highlighted:rounded-md',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"text-lg leading-none\">{children}</span>\n </BaseAutocomplete.Item>\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteGroupProps } from './autocomplete.types'\n\nexport function AutocompleteGroup({ className, ref, ...props }: AutocompleteGroupProps) {\n return (\n <BaseAutocomplete.Group className={cn('block space-y-3xs', className)} ref={ref} {...props} />\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteGroupProps } from './autocomplete.types'\n\nexport function AutocompleteGroupLabel({ className, ref, ...props }: AutocompleteGroupProps) {\n return (\n <BaseAutocomplete.GroupLabel\n className={cn(\n 'sticky top-[0px] z-1 my-[0px] mr-[0px] ml-[3px] bg-surface-2 px-sm pt-sm pb-3xs style-text-strong--2 text-on-surface-variant',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { AutocompleteInputGroupAddonProps } from './autocomplete.types'\n\nexport function AutocompleteInputGroupAddon({\n className,\n ref,\n ...props\n}: AutocompleteInputGroupAddonProps) {\n return (\n <div\n className={cn(\n 'inline-flex items-center gap-xs style-text-default-0 text-on-surface-variant',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteItemProps } from './autocomplete.types'\n\nexport function AutocompleteItem({ className, ref, ...props }: AutocompleteItemProps) {\n return (\n <BaseAutocomplete.Item\n className={cn(\n 'mx-xs flex cursor-default items-center rounded-lg px-2xs py-3xs style-text-prose-0 select-none first:mt-xs last:mb-xs hover:cursor-pointer hover:bg-neutral-container-high hover:text-neutral-on-container data-highlighted:relative data-highlighted:z-0 data-highlighted:bg-neutral-container-high data-highlighted:text-neutral-on-container before:data-highlighted:absolute before:data-highlighted:inset-x-sm before:data-highlighted:inset-y-[0px] before:data-highlighted:z-[-1] before:data-highlighted:rounded-sm',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteRowProps } from './autocomplete.types'\n\nexport function AutocompleteRow({ className, ref, ...props }: AutocompleteRowProps) {\n return <BaseAutocomplete.Row className={cn('grid grid-cols-5', className)} ref={ref} {...props} />\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteStatusProps } from './autocomplete.types'\n\nexport function AutocompleteStatus({ className, ref, ...props }: AutocompleteStatusProps) {\n return (\n <BaseAutocomplete.Status\n className={cn(\n 'flex items-center gap-2xs p-xs style-text-prose--1 text-on-surface-variant empty:hidden',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AutocompleteTriggerProps } from './autocomplete.types'\n\nexport function AutocompleteTrigger({ className, ref, ...props }: AutocompleteTriggerProps) {\n return <BaseAutocomplete.Trigger className={cn('', className)} ref={ref} {...props} />\n}\n","import { Autocomplete as AutocompleteRoot } from './autocomplete'\nimport { AutocompleteCollection } from './autocomplete-collection'\nimport { AutocompleteContent } from './autocomplete-content'\nimport { AutocompleteEmpty } from './autocomplete-empty'\nimport { AutocompleteGridContent } from './autocomplete-grid-content'\nimport { AutocompleteGridItem } from './autocomplete-grid-item'\nimport { AutocompleteGroup } from './autocomplete-group'\nimport { AutocompleteGroupLabel } from './autocomplete-group-label'\nimport { AutocompleteInputGroup } from './autocomplete-input-group'\nimport { AutocompleteInputGroupAddon } from './autocomplete-input-group-addon'\nimport { AutocompleteInputGroupInput } from './autocomplete-input-group-input'\nimport { AutocompleteItem } from './autocomplete-item'\nimport { AutocompleteRow } from './autocomplete-row'\nimport { AutocompleteStatus } from './autocomplete-status'\nimport { AutocompleteTrigger } from './autocomplete-trigger'\n\nconst Autocomplete = Object.assign(AutocompleteRoot, {\n Collection: AutocompleteCollection,\n Content: AutocompleteContent,\n Empty: AutocompleteEmpty,\n GridContent: AutocompleteGridContent,\n GridItem: AutocompleteGridItem,\n Group: AutocompleteGroup,\n GroupLabel: AutocompleteGroupLabel,\n InputGroup: AutocompleteInputGroup,\n InputGroupAddon: AutocompleteInputGroupAddon,\n InputGroupInput: AutocompleteInputGroupInput,\n Item: AutocompleteItem,\n Row: AutocompleteRow,\n Status: AutocompleteStatus,\n Trigger: AutocompleteTrigger,\n})\n\nexport type {\n AutocompleteCollectionProps,\n AutocompleteContentProps,\n AutocompleteEmptyProps,\n AutocompleteGridContentProps,\n AutocompleteGridItemProps,\n AutocompleteGroupLabelProps,\n AutocompleteGroupProps,\n AutocompleteInputGroupAddonProps,\n AutocompleteInputGroupInputProps,\n AutocompleteInputGroupProps,\n AutocompleteItemProps,\n AutocompleteProps,\n AutocompleteRowProps,\n AutocompleteStatusProps,\n AutocompleteTriggerProps,\n} from './autocomplete.types'\nexport { AutocompleteCollection } from './autocomplete-collection'\nexport { AutocompleteContent } from './autocomplete-content'\nexport { AutocompleteEmpty } from './autocomplete-empty'\nexport { AutocompleteGridContent } from './autocomplete-grid-content'\nexport { AutocompleteGridItem } from './autocomplete-grid-item'\nexport { AutocompleteGroup } from './autocomplete-group'\nexport { AutocompleteGroupLabel } from './autocomplete-group-label'\nexport { AutocompleteInputGroup } from './autocomplete-input-group'\nexport { AutocompleteInputGroupAddon } from './autocomplete-input-group-addon'\nexport { AutocompleteInputGroupInput } from './autocomplete-input-group-input'\nexport { AutocompleteItem } from './autocomplete-item'\nexport { AutocompleteRow } from './autocomplete-row'\nexport { AutocompleteStatus } from './autocomplete-status'\nexport { AutocompleteTrigger } from './autocomplete-trigger'\n\nexport { Autocomplete }\n","import type { Avatar as BaseAvatar } from '@base-ui/react/avatar'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\n\nconst avatarVariants = cva(\n 'group/avatar relative inline-flex shrink-0 items-center justify-center rounded-full',\n {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'size-3xl style-text-default-1',\n medium: 'size-2xl style-text-default-0',\n small: 'size-xl style-text-default--1',\n },\n },\n },\n ),\n avatarBadgeVariants = cva(\n 'absolute right-0 bottom-0 inline-flex items-center justify-center rounded-full outline-3 outline-surface-background group-data-[size=large]/avatar:size-md group-data-[size=medium]/avatar:size-sm group-data-[size=small]/avatar:size-xs group-data-[size=large]/avatar:[&_svg]:size-sm group-data-[size=medium]/avatar:[&_svg]:size-xs group-data-[size=small]/avatar:[&_svg]:size-2xs',\n {\n defaultVariants: {\n position: 'bottomRight',\n tone: 'success',\n },\n variants: {\n position: {\n bottomLeft: 'bottom-px left-px',\n bottomRight: 'right-px bottom-px',\n topLeft: 'top-px left-px',\n topRight: 'top-px right-px',\n },\n tone: {\n accent: 'bg-accent-default [&>svg]:text-accent-on-default',\n brand: 'bg-brand-default [&>svg]:text-brand-on-default',\n error: 'bg-error-default [&>svg]:text-error-on-default',\n info: 'bg-info-default [&>svg]:text-info-on-default',\n neutral: 'bg-neutral-default [&>svg]:text-neutral-on-default',\n success: 'bg-success-default [&>svg]:text-success-on-default',\n warning: 'bg-warning-default [&>svg]:text-warning-on-default',\n },\n },\n },\n )\n\ntype AvatarProps = ComponentProps<typeof BaseAvatar.Root> & VariantProps<typeof avatarVariants>\ntype AvatarImageProps = ComponentProps<typeof BaseAvatar.Image>\ntype AvatarFallbackProps = ComponentProps<typeof BaseAvatar.Fallback>\ntype AvatarBadgeProps = ComponentProps<'div'> & VariantProps<typeof avatarBadgeVariants>\n\nexport type { AvatarProps, AvatarImageProps, AvatarFallbackProps, AvatarBadgeProps }\nexport { avatarVariants, avatarBadgeVariants }\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar'\n\nimport { cn } from '@/utils/cn'\n\nimport { avatarVariants } from './avatar.types'\nimport type { AvatarProps } from './avatar.types'\n\nexport function Avatar({ size = 'medium', className, ref, ...props }: AvatarProps) {\n return (\n <BaseAvatar.Root\n className={cn(avatarVariants({ className, size }))}\n data-size={size}\n data-slot=\"avatar\"\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { avatarBadgeVariants } from './avatar.types'\nimport type { AvatarBadgeProps } from './avatar.types'\n\nexport function AvatarBadge({ tone, position, className, ref, ...props }: AvatarBadgeProps) {\n return (\n <div\n data-slot=\"avatar-badge\"\n className={cn(avatarBadgeVariants({ className, position, tone }))}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AvatarFallbackProps } from './avatar.types'\n\nexport function AvatarFallback({ className, ref, ...props }: AvatarFallbackProps) {\n return (\n <BaseAvatar.Fallback\n className={cn(\n 'flex size-full items-center justify-center rounded-full bg-surface-3 align-middle shadow-2xs select-none',\n className,\n )}\n data-slot=\"avatar-fallback\"\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SkeletonProps } from './skeleton.types'\n\nexport function Skeleton({ className, ref, ...props }: SkeletonProps) {\n return (\n <div\n className={cn('animate-pulse rounded-lg bg-surface-2 shadow-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar'\nimport type { ImageLoadingStatus } from '@base-ui/react/avatar'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Skeleton } from '../skeleton'\nimport type { AvatarImageProps } from './avatar.types'\n\nexport function AvatarImage({ className, ref, ...props }: AvatarImageProps) {\n const [status, setStatus] = React.useState<ImageLoadingStatus>('loading')\n\n return (\n <>\n {status === 'loading' && <Skeleton className=\"absolute inset-0 size-full rounded-full\" />}\n <BaseAvatar.Image\n onLoadingStatusChange={setStatus}\n className={cn('size-full rounded-full object-cover', className)}\n data-slot=\"avatar-image\"\n ref={ref}\n {...props}\n />\n </>\n )\n}\n","import { Avatar as AvatarRoot } from './avatar'\nimport { AvatarBadge } from './avatar-badge'\nimport { AvatarFallback } from './avatar-fallback'\nimport { AvatarImage } from './avatar-image'\n\nconst Avatar = Object.assign(AvatarRoot, {\n Badge: AvatarBadge,\n Fallback: AvatarFallback,\n Image: AvatarImage,\n})\n\nexport type {\n AvatarBadgeProps,\n AvatarFallbackProps,\n AvatarImageProps,\n AvatarProps,\n} from './avatar.types'\nexport { AvatarFallback } from './avatar-fallback'\nexport { AvatarImage } from './avatar-image'\nexport { AvatarBadge } from './avatar-badge'\n\nexport { Avatar }\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\n\nexport const badgeVariants = cva(\n 'inline-flex h-md items-center justify-center gap-3xs rounded-full font-body text-xs leading-none font-medium whitespace-nowrap transition-all select-none [&>svg]:shrink-0',\n {\n compoundVariants: [\n {\n className: 'bg-brand-default text-brand-on-default',\n tone: 'brand',\n variant: 'fill',\n },\n {\n className: 'bg-accent-default text-accent-on-default',\n tone: 'accent',\n variant: 'fill',\n },\n {\n className: 'bg-neutral-default text-neutral-on-default',\n tone: 'neutral',\n variant: 'fill',\n },\n {\n className: 'bg-error-default text-error-on-default',\n tone: 'error',\n variant: 'fill',\n },\n {\n className: 'bg-info-default text-info-on-default',\n tone: 'info',\n variant: 'fill',\n },\n {\n className: 'bg-success-default text-success-on-default',\n tone: 'success',\n variant: 'fill',\n },\n {\n className: 'bg-warning-default text-warning-on-default',\n tone: 'warning',\n variant: 'fill',\n },\n {\n className: 'border-brand-default text-brand-default',\n tone: 'brand',\n variant: 'outline',\n },\n {\n className: 'border-accent-default text-accent-default',\n tone: 'accent',\n variant: 'outline',\n },\n {\n className: 'border-neutral-default text-neutral-default',\n tone: 'neutral',\n variant: 'outline',\n },\n {\n className: 'border-error-default text-error-default',\n tone: 'error',\n variant: 'outline',\n },\n {\n className: 'border-info-default text-info-default',\n tone: 'info',\n variant: 'outline',\n },\n {\n className: 'border-success-default text-success-default',\n tone: 'success',\n variant: 'outline',\n },\n {\n className: 'border-warning-default text-warning-default',\n tone: 'warning',\n variant: 'outline',\n },\n {\n className: 'border-brand-border bg-brand-container text-brand-on-container',\n tone: 'brand',\n variant: 'soft',\n },\n {\n className: 'border-accent-border bg-accent-container text-accent-on-container',\n tone: 'accent',\n variant: 'soft',\n },\n {\n className: 'border-neutral-border bg-neutral-container text-neutral-on-container',\n tone: 'neutral',\n variant: 'soft',\n },\n {\n className: 'border-error-border bg-error-container text-error-on-container',\n tone: 'error',\n variant: 'soft',\n },\n {\n className: 'border-info-border bg-info-container text-info-on-container',\n tone: 'info',\n variant: 'soft',\n },\n {\n className: 'border-success-border bg-success-container text-success-on-container',\n tone: 'success',\n variant: 'soft',\n },\n {\n className: 'border-warning-border bg-warning-container text-warning-on-container',\n tone: 'warning',\n variant: 'soft',\n },\n ],\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n variant: 'fill',\n },\n variants: {\n size: {\n large:\n 'h-lg px-xs [&:where([data-icon-only]:has(>svg:only-child))]:size-lg [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-[1em] [&[data-icon-only]>svg:only-child]:size-sm',\n medium:\n 'h-md px-xs [&:where([data-icon-only]:has(>svg:only-child))]:size-md [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-[1em] [&[data-icon-only]>svg:only-child]:size-xs',\n small:\n 'h-sm px-xs [&:where([data-icon-only]:has(>svg:only-child))]:size-sm [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-[1em] [&[data-icon-only]>svg:only-child]:size-2xs',\n },\n tone: {\n accent: '',\n brand: '',\n error: '',\n info: '',\n neutral: '',\n success: '',\n warning: '',\n },\n variant: {\n fill: 'shadow-2xs',\n outline: 'border',\n soft: 'border',\n },\n },\n },\n)\n\nexport type BadgeProps = ComponentProps<'div'> & VariantProps<typeof badgeVariants>\n","import { cn } from '@/utils/cn'\nimport { hasSingleElementChild } from '@/utils/has-single-element-child'\n\nimport { badgeVariants } from './badge.types'\nimport type { BadgeProps } from './badge.types'\n\nexport function Badge({ className, size, tone, variant, ref, children, ...props }: BadgeProps) {\n let iconOnly: '' | undefined = undefined\n\n if (hasSingleElementChild(children)) {\n iconOnly = ''\n }\n\n return (\n <div\n data-icon-only={iconOnly}\n className={cn(badgeVariants({ className, size, tone, variant }))}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nconst bentoBoxVariants = cva(\n 'group/box flex size-full min-h-0 flex-col overflow-hidden border border-border bg-surface',\n {\n defaultVariants: {\n elevation: 'medium',\n fill: false,\n size: 'medium',\n },\n variants: {\n elevation: {\n high: 'shadow-sm',\n low: 'shadow-2xs',\n medium: 'shadow-xs',\n none: '',\n veryHigh: 'shadow-md',\n },\n fill: {\n false: '',\n true: 'p-0!',\n },\n size: {\n large: 'gap-md rounded-3xl p-lg',\n medium: 'gap-sm rounded-2xl p-md',\n small: 'gap-xs rounded-xl p-sm',\n },\n },\n },\n)\n\ntype BentoBoxProps = React.ComponentProps<'div'> & VariantProps<typeof bentoBoxVariants>\ntype BentoBoxHeaderProps = React.ComponentProps<'div'>\ntype BentoBoxTitleProps = React.ComponentProps<'span'>\ntype BentoBoxContentProps = React.ComponentProps<'div'>\ntype BentoBoxDescriptionProps = React.ComponentProps<'span'>\ntype BentoBoxActionProps = React.ComponentProps<'div'>\ntype BentoBoxFooterProps = React.ComponentProps<'div'>\n\nexport type {\n BentoBoxProps,\n BentoBoxHeaderProps,\n BentoBoxTitleProps,\n BentoBoxContentProps,\n BentoBoxDescriptionProps,\n BentoBoxActionProps,\n BentoBoxFooterProps,\n}\nexport { bentoBoxVariants }\n","import { cn } from '@/utils/cn'\n\nimport { bentoBoxVariants } from './bento-box.types'\nimport type { BentoBoxProps } from './bento-box.types'\n\nexport function BentoBox({ elevation, fill, size, className, ref, ...props }: BentoBoxProps) {\n return (\n <div\n data-size={size}\n className={cn(bentoBoxVariants({ className, elevation, fill, size }))}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxActionProps } from './bento-box.types'\n\nexport function BentoBoxAction({ className, ref, ...props }: BentoBoxActionProps) {\n return (\n <div\n className={cn(\n 'col-start-2 row-span-2 row-start-1 self-start justify-self-end pl-lg',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxContentProps } from './bento-box.types'\n\nexport function BentoBoxContent({ className, ref, ...props }: BentoBoxContentProps) {\n return (\n <div className={cn('flex min-h-0 flex-1 flex-col gap-3xs', className)} ref={ref} {...props} />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxDescriptionProps } from './bento-box.types'\n\nexport function BentoBoxDescription({ className, ref, ...props }: BentoBoxDescriptionProps) {\n return (\n <span\n className={cn(\n 'text-on-surface-variant group-data-[size=large]/box:style-text-prose-0 group-data-[size=medium]/box:style-text-prose--1 group-data-[size=small]/box:style-text-prose--2',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxFooterProps } from './bento-box.types'\n\nexport function BentoBoxFooter({ className, ref, ...props }: BentoBoxFooterProps) {\n return (\n <div\n className={cn(\n 'mt-auto flex flex-wrap items-center justify-start gap-sm not-first:group-data-[size=large]/box:gap-lg not-first:group-data-[size=medium]/box:gap-md group-data-[size=small]/box:gap-sm',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxHeaderProps } from './bento-box.types'\n\nexport function BentoBoxHeader({ className, ref, ...props }: BentoBoxHeaderProps) {\n return (\n <div\n className={cn(\n 'group/box-header grid auto-rows-min items-start space-y-2xs group-data-[size=large]/box:gap-0 group-data-[size=medium]/box:gap-0 group-data-[size=small]/box:gap-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BentoBoxTitleProps } from './bento-box.types'\n\nexport function BentoBoxTitle({ className, ref, ...props }: BentoBoxTitleProps) {\n return (\n <span\n className={cn(\n 'group-data-[size=large]/box:style-text-strong-1 not-first:group-data-[size=large]/box:pt-xs group-data-[size=medium]/box:style-text-strong-0 not-first:group-data-[size=medium]/box:pt-2xs group-data-[size=small]/box:style-text-strong--1 not-first:group-data-[size=small]/box:pt-3xs',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { BentoBox as BentoBoxRoot } from './bento-box'\nimport { BentoBoxAction } from './bento-box-action'\nimport { BentoBoxContent } from './bento-box-content'\nimport { BentoBoxDescription } from './bento-box-description'\nimport { BentoBoxFooter } from './bento-box-footer'\nimport { BentoBoxHeader } from './bento-box-header'\nimport { BentoBoxTitle } from './bento-box-title'\n\nconst BentoBox = Object.assign(BentoBoxRoot, {\n Action: BentoBoxAction,\n Content: BentoBoxContent,\n Description: BentoBoxDescription,\n Footer: BentoBoxFooter,\n Header: BentoBoxHeader,\n Title: BentoBoxTitle,\n})\n\nexport type {\n BentoBoxActionProps,\n BentoBoxContentProps,\n BentoBoxDescriptionProps,\n BentoBoxFooterProps,\n BentoBoxHeaderProps,\n BentoBoxProps,\n BentoBoxTitleProps,\n} from './bento-box.types'\n\nexport { BentoBoxAction } from './bento-box-action'\nexport { BentoBoxContent } from './bento-box-content'\nexport { BentoBoxDescription } from './bento-box-description'\nexport { BentoBoxFooter } from './bento-box-footer'\nexport { BentoBoxHeader } from './bento-box-header'\nexport { BentoBoxTitle } from './bento-box-title'\n\nexport { BentoBox }\n","import { cn } from '@/utils/cn'\n\nimport type { BreadcrumbProps } from './breadcrumb.types'\n\nexport function Breadcrumb({ className, ref, ...props }: BreadcrumbProps) {\n return <nav className={cn('flex items-center gap-2xs', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { BreadcrumbEllipsisProps } from './breadcrumb.types'\n\nexport function BreadcrumbEllipsis({\n className,\n children,\n ref,\n ...props\n}: BreadcrumbEllipsisProps) {\n return (\n <div\n className={cn(\n 'flex size-md items-center justify-center rounded-full text-on-surface-variant transition-all hover:cursor-pointer hover:bg-neutral-container hover:text-neutral-on-container active:scale-[0.98] active:bg-neutral-container disabled:opacity-50 [&>svg]:size-sm',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children ?? <Icon name=\"ellipsis\" />}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BreadcrumbItemProps } from './breadcrumb.types'\n\nexport function BreadcrumbItem({ className, ref, ...props }: BreadcrumbItemProps) {\n return (\n <div\n className={cn(\n 'inline-flex h-lg items-center justify-center gap-2xs rounded-full px-2xs style-text-default--1 text-accent-default [&>svg]:size-sm',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { BreadcrumbLinkProps } from './breadcrumb.types'\n\nexport function BreadcrumbLink({ className, ref, ...props }: BreadcrumbLinkProps) {\n return (\n <div\n className={cn(\n 'inline-flex h-lg items-center justify-center gap-3xs rounded-full px-2xs font-body text-sm leading-none font-medium text-on-surface-variant transition-all hover:cursor-pointer hover:bg-neutral-container active:scale-[0.98] active:bg-neutral-container disabled:opacity-50 [&>svg]:size-sm',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { BreadcrumbSeparatorProps } from './breadcrumb.types'\n\nexport function BreadcrumbSeparator({\n className,\n children,\n ref,\n ...props\n}: BreadcrumbSeparatorProps) {\n return (\n <div className={cn('text-on-surface-variant [&>svg]:size-xs', className)} ref={ref} {...props}>\n {children ?? <Icon name=\"chevronRight\" />}\n </div>\n )\n}\n","import { Breadcrumb as BreadcrumbRoot } from './breadcrumb'\nimport { BreadcrumbEllipsis } from './breadcrumb-ellipsis'\nimport { BreadcrumbItem } from './breadcrumb-item'\nimport { BreadcrumbLink } from './breadcrumb-link'\nimport { BreadcrumbSeparator } from './breadcrumb-separator'\n\nconst Breadcrumb = Object.assign(BreadcrumbRoot, {\n Ellipsis: BreadcrumbEllipsis,\n Item: BreadcrumbItem,\n Link: BreadcrumbLink,\n Separator: BreadcrumbSeparator,\n})\n\nexport type {\n BreadcrumbEllipsisProps,\n BreadcrumbItemProps,\n BreadcrumbLinkProps,\n BreadcrumbProps,\n BreadcrumbSeparatorProps,\n} from './breadcrumb.types'\nexport { BreadcrumbEllipsis } from './breadcrumb-ellipsis'\nexport { BreadcrumbItem } from './breadcrumb-item'\nexport { BreadcrumbLink } from './breadcrumb-link'\nexport { BreadcrumbSeparator } from './breadcrumb-separator'\n\nexport { Breadcrumb }\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const buttonGroupVariants = cva(\n 'inline-flex cursor-pointer items-center justify-center overflow-hidden rounded-full whitespace-nowrap transition-all select-none *:rounded-none *:bg-transparent disabled:pointer-events-none disabled:opacity-50 [&>button]:text-inherit',\n {\n compoundVariants: [\n {\n className: 'bg-brand-default text-brand-on-default [&>button:hover]:bg-brand-muted',\n tone: 'brand',\n variant: 'fill',\n },\n {\n className: 'bg-accent-default text-accent-on-default [&>button:hover]:bg-accent-muted',\n tone: 'accent',\n variant: 'fill',\n },\n {\n className: 'bg-neutral-default text-neutral-on-default [&>button:hover]:bg-neutral-muted',\n tone: 'neutral',\n variant: 'fill',\n },\n {\n className: 'bg-error-default text-error-on-default [&>button:hover]:bg-error-muted',\n tone: 'error',\n variant: 'fill',\n },\n {\n className: 'bg-info-default text-info-on-default [&>button:hover]:bg-info-muted',\n tone: 'info',\n variant: 'fill',\n },\n {\n className: 'bg-success-default text-success-on-default [&>button:hover]:bg-success-muted',\n tone: 'success',\n variant: 'fill',\n },\n {\n className: 'bg-warning-default text-warning-on-default [&>button:hover]:bg-warning-muted',\n tone: 'warning',\n variant: 'fill',\n },\n {\n className:\n 'bg-brand-subtle text-brand-on-container [&>button:hover]:bg-brand-container-high',\n tone: 'brand',\n variant: 'secondary',\n },\n {\n className:\n 'bg-accent-subtle text-accent-on-container [&>button:hover]:bg-accent-container-high',\n tone: 'accent',\n variant: 'secondary',\n },\n {\n className:\n 'bg-neutral-subtle text-neutral-on-container [&>button:hover]:bg-neutral-container-high',\n tone: 'neutral',\n variant: 'secondary',\n },\n {\n className:\n 'bg-error-subtle text-error-on-container [&>button:hover]:bg-error-container-high',\n tone: 'error',\n variant: 'secondary',\n },\n {\n className: 'bg-info-subtle text-info-on-container [&>button:hover]:bg-info-container-high',\n tone: 'info',\n variant: 'secondary',\n },\n {\n className:\n 'bg-success-subtle text-success-on-container [&>button:hover]:bg-success-container-high',\n tone: 'success',\n variant: 'secondary',\n },\n {\n className:\n 'bg-warning-subtle text-warning-on-container [&>button:hover]:bg-warning-container-high',\n tone: 'warning',\n variant: 'secondary',\n },\n {\n className:\n 'border-brand-border text-brand-default [&>button:hover]:bg-brand-subtle [&>button:hover]:text-brand-on-container',\n tone: 'brand',\n variant: 'outline',\n },\n {\n className:\n 'border-accent-border text-accent-default [&>button:hover]:bg-accent-subtle [&>button:hover]:text-accent-on-container',\n tone: 'accent',\n variant: 'outline',\n },\n {\n className:\n 'border-neutral-border text-neutral-default [&>button:hover]:bg-neutral-subtle [&>button:hover]:text-neutral-on-container',\n tone: 'neutral',\n variant: 'outline',\n },\n {\n className:\n 'border-error-border text-error-default [&>button:hover]:bg-error-subtle [&>button:hover]:text-error-on-container',\n tone: 'error',\n variant: 'outline',\n },\n {\n className:\n 'border-info-border text-info-default [&>button:hover]:bg-info-subtle [&>button:hover]:text-info-on-container',\n tone: 'info',\n variant: 'outline',\n },\n {\n className:\n 'border-success-border text-success-default [&>button:hover]:bg-success-subtle [&>button:hover]:text-success-on-container',\n tone: 'success',\n variant: 'outline',\n },\n {\n className:\n 'border-warning-border text-warning-default [&>button:hover]:bg-warning-subtle [&>button:hover]:text-warning-on-container',\n tone: 'warning',\n variant: 'outline',\n },\n {\n className:\n 'text-brand-default [&>button:hover]:bg-brand-subtle [&>button:hover]:text-brand-on-container',\n tone: 'brand',\n variant: 'ghost',\n },\n {\n className:\n 'text-accent-default [&>button:hover]:bg-accent-subtle [&>button:hover]:text-accent-on-container',\n tone: 'accent',\n variant: 'ghost',\n },\n {\n className:\n 'text-neutral-default [&>button:hover]:bg-neutral-subtle [&>button:hover]:text-neutral-on-container',\n tone: 'neutral',\n variant: 'ghost',\n },\n {\n className:\n 'text-error-default [&>button:hover]:bg-error-subtle [&>button:hover]:text-error-on-container',\n tone: 'error',\n variant: 'ghost',\n },\n {\n className:\n 'text-info-default [&>button:hover]:bg-info-subtle [&>button:hover]:text-info-on-container',\n tone: 'info',\n variant: 'ghost',\n },\n {\n className:\n 'text-success-default [&>button:hover]:bg-success-subtle [&>button:hover]:text-success-on-container',\n tone: 'success',\n variant: 'ghost',\n },\n {\n className:\n 'text-warning-default [&>button:hover]:bg-warning-subtle [&>button:hover]:text-warning-on-container',\n tone: 'warning',\n variant: 'ghost',\n },\n {\n className:\n 'border-brand-border bg-brand-container text-brand-on-container [&>button:hover]:bg-brand-container-high',\n tone: 'brand',\n variant: 'soft',\n },\n {\n className:\n 'border-accent-border bg-accent-container text-accent-on-container [&>button:hover]:bg-accent-container-high',\n tone: 'accent',\n variant: 'soft',\n },\n {\n className:\n 'border-neutral-border bg-neutral-container text-neutral-on-container [&>button:hover]:bg-neutral-container-high',\n tone: 'neutral',\n variant: 'soft',\n },\n {\n className:\n 'border-error-border bg-error-container text-error-on-container [&>button:hover]:bg-error-container-high',\n tone: 'error',\n variant: 'soft',\n },\n {\n className:\n 'border-info-border bg-info-container text-info-on-container [&>button:hover]:bg-info-container-high',\n tone: 'info',\n variant: 'soft',\n },\n {\n className:\n 'border-success-border bg-success-container text-success-on-container [&>button:hover]:bg-success-container-high',\n tone: 'success',\n variant: 'soft',\n },\n {\n className:\n 'border-warning-border bg-warning-container text-warning-on-container [&>button:hover]:bg-warning-container-high',\n tone: 'warning',\n variant: 'soft',\n },\n {\n className:\n 'bg-brand-container text-brand-on-container [&>button]:not-active:hover:bg-brand-container-high [&>button]:active:bg-brand-container',\n tone: 'brand',\n variant: 'elevated',\n },\n {\n className:\n 'bg-accent-container text-accent-on-container [&>button]:not-active:hover:bg-accent-container-high [&>button]:active:bg-accent-container',\n tone: 'accent',\n variant: 'elevated',\n },\n {\n className:\n 'bg-surface-2 text-on-surface [&>button]:not-active:hover:bg-surface-3 [&>button]:not-active:hover:text-neutral-on-container [&>button]:active:bg-surface',\n tone: 'neutral',\n variant: 'elevated',\n },\n {\n className:\n 'bg-error-container text-error-on-container [&>button]:not-active:hover:bg-error-container-high [&>button]:active:bg-error-container',\n tone: 'error',\n variant: 'elevated',\n },\n {\n className:\n 'bg-info-container text-info-on-container [&>button]:not-active:hover:bg-info-container-high [&>button]:active:bg-info-container',\n tone: 'info',\n variant: 'elevated',\n },\n {\n className:\n 'bg-success-container text-success-on-container [&>button]:not-active:hover:bg-success-container-high [&>button]:active:bg-success-container',\n tone: 'success',\n variant: 'elevated',\n },\n {\n className:\n 'bg-warning-container text-warning-on-container [&>button]:not-active:hover:bg-warning-container-high [&>button]:active:bg-warning-container',\n tone: 'warning',\n variant: 'elevated',\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n size: 'medium',\n tone: 'brand',\n variant: 'fill',\n },\n variants: {\n orientation: {\n horizontal:\n '[&>*+*]:relative [&>*+*]:before:absolute [&>*+*]:before:top-1/2 [&>*+*]:before:left-0 [&>*+*]:before:h-1/2 [&>*+*]:before:w-px [&>*+*]:before:-translate-y-1/2 [&>*+*]:before:content-[\"\"]',\n vertical:\n 'flex-col [&>*+*]:relative [&>*+*]:before:absolute [&>*+*]:before:top-0 [&>*+*]:before:left-1/2 [&>*+*]:before:h-px [&>*+*]:before:w-1/2 [&>*+*]:before:-translate-x-1/2 [&>*+*]:before:content-[\"\"]',\n },\n size: {\n extraSmall:\n '*:font-body *:text-xs *:leading-none *:font-medium [&>button]:h-md [&>button]:min-w-0 [&>button]:gap-3xs [&>button]:px-2xs [&>button>svg]:size-xs [&>button[data-icon-only]:has(>svg:only-child)]:size-md [&>button[data-icon-only]:has(>svg:only-child)]:p-0',\n large:\n '*:font-body *:text-lg *:leading-none *:font-medium [&>button]:h-2xl [&>button]:min-w-2xl [&>button]:gap-xs [&>button]:px-md [&>button>svg]:size-lg [&>button[data-icon-only]:has(>svg:only-child)]:size-2xl [&>button[data-icon-only]:has(>svg:only-child)]:p-0',\n medium:\n '*:font-body *:text-base *:leading-none *:font-medium [&>button]:h-xl [&>button]:min-w-xl [&>button]:gap-2xs [&>button]:px-sm [&>button>svg]:size-md [&>button[data-icon-only]:has(>svg:only-child)]:size-xl [&>button[data-icon-only]:has(>svg:only-child)]:p-0',\n small:\n '*:font-body *:text-sm *:leading-none *:font-medium [&>button]:h-lg [&>button]:min-w-lg [&>button]:gap-3xs [&>button]:px-xs [&>button>svg]:size-sm [&>button[data-icon-only]:has(>svg:only-child)]:size-lg [&>button[data-icon-only]:has(>svg:only-child)]:p-0',\n },\n tone: {\n accent: '[&>*+*]:before:bg-accent-border',\n brand: '[&>*+*]:before:bg-brand-border',\n error: '[&>*+*]:before:bg-error-border',\n info: '[&>*+*]:before:bg-info-border',\n neutral: '[&>*+*]:before:bg-neutral-border',\n success: '[&>*+*]:before:bg-success-border',\n warning: '',\n },\n variant: {\n elevated: 'shadow-xs *:active:scale-100!',\n fill: '',\n ghost: '',\n outline: 'border',\n secondary: '',\n soft: 'border',\n },\n },\n },\n)\n\nexport type ButtonGroupProps = React.ComponentProps<'div'> &\n VariantProps<typeof buttonGroupVariants>\n","import { cn } from '@/utils/cn'\n\nimport { buttonGroupVariants } from './button-group.types'\nimport type { ButtonGroupProps } from './button-group.types'\n\nexport function ButtonGroup({\n size,\n variant,\n tone,\n orientation,\n className,\n ref,\n ...props\n}: ButtonGroupProps) {\n return (\n <div\n className={cn(buttonGroupVariants({ orientation, size, tone, variant }), className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { CalendarState, CalendarAction } from './calendar.types'\n\nexport const calendarReducer = (state: CalendarState, action: CalendarAction): CalendarState => {\n switch (action.type) {\n case 'SET_SELECTED_DATES': {\n return {\n ...state,\n selectedDates: action.payload,\n }\n }\n default: {\n return state\n }\n }\n}\n","import React from 'react'\n\nimport { calendarReducer } from './calendar.reducer'\nimport type { CalendarProps, CalendarContextValue } from './calendar.types'\n\nconst CalendarContext = React.createContext<CalendarContextValue | undefined>(undefined),\n useCalendar = () => {\n const context = React.useContext(CalendarContext)\n\n if (!context) {\n throw new Error('useCalendar must be used within a Calendar')\n }\n\n return context\n }\n\nfunction Calendar({ defaultState, children }: CalendarProps) {\n const [state, dispatch] = React.useReducer(\n calendarReducer,\n defaultState ?? { selectedDates: undefined },\n )\n\n return <CalendarContext.Provider value={{ dispatch, state }}>{children}</CalendarContext.Provider>\n}\n\nexport { Calendar, useCalendar }\n","import { DayButton } from '@daypicker/react'\n\nimport { cn } from '@/utils'\n\nimport { buttonVariants } from '../button/button.types'\nimport type { CalendarDayButtonProps } from './calendar.types'\n\nexport function CalendarDayButton({ className, modifiers, ...props }: CalendarDayButtonProps) {\n return (\n <DayButton\n {...props}\n modifiers={modifiers}\n className={cn(\n buttonVariants({ size: 'medium', tone: 'neutral', variant: 'ghost' }),\n 'text-inherit hover:bg-brand-container hover:text-brand-on-container',\n modifiers.selected && 'hover:bg-brand-default hover:text-brand-on-default',\n className,\n )}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport type { SelectProps } from './select.types'\n\nexport function Select<Value, Multiple extends boolean | undefined = false>(\n props: SelectProps<Value, Multiple>,\n) {\n return <BaseSelect.Root {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SelectDescriptionProps } from './select.types'\n\nexport function SelectDescription({ className, ref, ...props }: SelectDescriptionProps) {\n return (\n <span\n className={cn(\n 'style-text-prose--1 text-on-surface-variant transition-colors group-data-highlighted/item:text-neutral-on-container group-data-selected/item:text-neutral-on-default',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectGroupProps } from './select.types'\n\nexport function SelectGroup({ className, ref, ...props }: SelectGroupProps) {\n return (\n <BaseSelect.Group\n className={cn(\n 'block space-y-3xs border-border-strong not-last:border-b not-last:pb-xs',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectGroupLabelProps } from './select.types'\n\nexport function SelectGroupLabel({ className, ref, ...props }: SelectGroupLabelProps) {\n return (\n <BaseSelect.GroupLabel\n className={cn(\n 'sticky top-[0px] z-1 cursor-default bg-surface-2 px-2xs py-3xs style-text-default--2 text-on-surface-variant select-none',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectIconProps } from './select.types'\n\nexport function SelectIcon({ className, ref, ...props }: SelectIconProps) {\n return (\n <BaseSelect.Icon\n data-slot=\"select-icon\"\n className={cn('flex text-on-surface-muted', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { SelectItemProps } from './select.types'\n\nexport function SelectItem({ className, children, ref, ...props }: SelectItemProps) {\n return (\n <BaseSelect.Item\n className={cn(\n 'group/item grid min-h-lg cursor-default grid-cols-[1fr_0.75rem] items-center gap-xs rounded-lg px-2xs py-3xs transition-colors outline-none select-none group-data-[side=none]:pr-xs hover:cursor-pointer data-highlighted:relative data-highlighted:z-0 data-highlighted:bg-neutral-container-high data-highlighted:text-neutral-on-container data-highlighted:before:absolute data-highlighted:before:inset-x-3xs data-highlighted:before:inset-y-[0px] data-highlighted:before:z-[-1] data-highlighted:before:rounded-sm data-selected:bg-neutral-default data-selected:text-neutral-on-default [&_svg]:size-md',\n className,\n )}\n ref={ref}\n {...props}\n >\n <BaseSelect.ItemText className=\"flex flex-col\">{children}</BaseSelect.ItemText>\n <BaseSelect.ItemIndicator className=\"place-self-end self-center [&>svg]:size-sm\">\n <Icon name=\"selected\" />\n </BaseSelect.ItemIndicator>\n </BaseSelect.Item>\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectListProps } from './select.types'\n\nexport function SelectList({ className, ref, ...props }: SelectListProps) {\n return (\n <BaseSelect.List\n className={cn(\n 'relative max-h-(--available-height) scroll-py-md space-y-3xs overflow-y-auto',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { SelectPopupProps } from './select.types'\n\nexport function SelectPopup({ className, children, ref, ...props }: SelectPopupProps) {\n return (\n <BaseSelect.Portal>\n <BaseSelect.Positioner\n className={cn('z-9999 outline-none select-none', className)}\n ref={ref}\n {...props}\n >\n <BaseSelect.Popup className=\"group min-w-(--anchor-width) origin-(--transform-origin) rounded-xl bg-surface-2 bg-clip-padding p-2xs shadow-md transition-[transform,scale,opacity] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0 data-[side=none]:data-ending-style:scale-90 data-[side=none]:data-ending-style:opacity-0 data-[side=none]:data-starting-style:scale-90 data-[side=none]:data-starting-style:opacity-0\">\n <BaseSelect.ScrollUpArrow className=\"top-0 right-0 z-[1px] flex h-md w-full cursor-default items-center justify-center rounded-xl bg-surface-2 before:absolute before:left-0 before:size-full before:content-[''] data-[side=none]:before:-top-full\">\n <Icon name=\"chevronUp\" className=\"size-sm\" />\n </BaseSelect.ScrollUpArrow>\n {children}\n <BaseSelect.ScrollDownArrow className=\"right-0 bottom-0 z-[1px] flex h-md w-full cursor-default items-center justify-center rounded-xl bg-surface-2 before:absolute before:left-0 before:size-full before:content-[''] data-[side=none]:before:-bottom-full\">\n <Icon name=\"chevronDown\" className=\"size-sm\" />\n </BaseSelect.ScrollDownArrow>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SelectTitleProps } from './select.types'\n\nexport function SelectTitle({ className, ref, ...props }: SelectTitleProps) {\n return (\n <span\n className={cn(\n 'flex h-lg items-center gap-2xs font-body text-base leading-none font-medium text-on-surface transition-colors group-data-highlighted/item:text-neutral-on-container group-data-selected/item:text-neutral-on-default',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { Select as BaseSelect } from '@base-ui/react/select'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\n\nconst selectVariants = cva(\n 'flex items-center justify-between outline outline-transparent transition-all duration-100 hover:cursor-pointer aria-invalid:bg-error-container aria-invalid:text-error-on-container aria-invalid:outline-error-border data-disabled:cursor-not-allowed [&_[data-value]]:min-w-0 [&_[data-value]]:flex-1 [&:has([data-value]>svg:only-child)]:aspect-square [&:has([data-value]>svg:only-child)]:justify-center [&:has([data-value]>svg:only-child)]:p-0 [&:has([data-value]>svg:only-child)_[data-value]]:flex-none',\n {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n },\n variants: {\n size: {\n large:\n 'h-2xl gap-xl rounded-2xl px-md font-body text-lg leading-none font-medium [&_[data-slot=select-icon]_svg]:size-md [&_[data-value]]:gap-xs [&_svg]:size-lg',\n medium:\n 'h-xl gap-lg rounded-xl px-sm font-body text-base leading-none font-medium [&_[data-slot=select-icon]_svg]:size-sm [&_[data-value]]:gap-2xs [&_svg]:size-md',\n small:\n 'h-lg gap-md rounded-lg px-xs font-body text-sm leading-none font-medium [&_[data-slot=select-icon]_svg]:size-xs [&_[data-value]]:gap-3xs [&_svg]:size-sm',\n },\n variant: {\n ghost: 'bg-transparent hover:bg-neutral-container',\n primary: 'bg-surface shadow-2xs hover:outline-border-strong',\n secondary: 'bg-neutral-container hover:outline-border-strong',\n },\n },\n },\n)\n\ntype SelectChangeEventDetails =\n NonNullable<React.ComponentProps<typeof BaseSelect.Root>['onValueChange']> extends (\n value: never,\n details: infer Details,\n ) => void\n ? Details\n : never\n\ntype SelectValue<Value, Multiple extends boolean | undefined> = Multiple extends true\n ? Value[]\n : Value\n\ninterface SelectProps<Value, Multiple extends boolean | undefined = false> extends Omit<\n BaseSelect.Root.Props<Value, Multiple>,\n | 'defaultValue'\n | 'isItemEqualToValue'\n | 'items'\n | 'itemToStringLabel'\n | 'itemToStringValue'\n | 'onValueChange'\n | 'value'\n> {\n defaultValue?: SelectValue<Value, Multiple> | null\n isItemEqualToValue?: (itemValue: Value, value: Value) => boolean\n items?: Record<string, ReactNode> | readonly { label: ReactNode; value: Value }[]\n itemToStringLabel?: (itemValue: Value) => string\n itemToStringValue?: (itemValue: Value) => string\n onValueChange?: (\n value: SelectValue<Value, Multiple> | (Multiple extends true ? never : null),\n eventDetails: SelectChangeEventDetails,\n ) => void\n value?: SelectValue<Value, Multiple> | null\n}\ntype SelectTriggerProps = React.ComponentProps<typeof BaseSelect.Trigger> &\n VariantProps<typeof selectVariants>\ntype SelectValueProps = React.ComponentProps<typeof BaseSelect.Value>\ntype SelectIconProps = React.ComponentProps<typeof BaseSelect.Icon>\ntype SelectPopupProps = React.ComponentProps<typeof BaseSelect.Positioner>\ntype SelectItemProps = React.ComponentProps<typeof BaseSelect.Item>\ntype SelectListProps = React.ComponentProps<typeof BaseSelect.List>\ntype SelectGroupProps = React.ComponentProps<typeof BaseSelect.Group>\ntype SelectGroupLabelProps = React.ComponentProps<typeof BaseSelect.GroupLabel>\ntype SelectDescriptionProps = React.ComponentProps<'span'>\ntype SelectTitleProps = React.ComponentProps<'span'>\ninterface SelectFilter {\n id: number\n label: string\n value: string\n}\n\nexport type {\n SelectProps,\n SelectTriggerProps,\n SelectValueProps,\n SelectIconProps,\n SelectPopupProps,\n SelectItemProps,\n SelectListProps,\n SelectGroupProps,\n SelectGroupLabelProps,\n SelectDescriptionProps,\n SelectTitleProps,\n SelectFilter,\n}\nexport { selectVariants }\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport { selectVariants } from './select.types'\nimport type { SelectTriggerProps } from './select.types'\n\nexport function SelectTrigger({ variant, size, className, ref, ...props }: SelectTriggerProps) {\n return (\n <BaseSelect.Trigger\n className={cn(selectVariants({ className, size, variant }))}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as BaseSelect } from '@base-ui/react/select'\n\nimport { cn } from '@/utils/cn'\n\nimport type { SelectValueProps } from './select.types'\n\nexport function SelectValue({ className, ref, ...props }: SelectValueProps) {\n return (\n <BaseSelect.Value\n data-value\n className={cn(\n 'flex h-lg min-w-0 flex-1 items-center gap-2xs overflow-hidden text-left text-ellipsis whitespace-nowrap data-placeholder:opacity-70',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Select as SelectRoot } from './select'\nimport { SelectDescription } from './select-description'\nimport { SelectGroup } from './select-group'\nimport { SelectGroupLabel } from './select-group-label'\nimport { SelectIcon } from './select-icon'\nimport { SelectItem } from './select-item'\nimport { SelectList } from './select-list'\nimport { SelectPopup } from './select-popup'\nimport { SelectTitle } from './select-title'\nimport { SelectTrigger } from './select-trigger'\nimport { SelectValue } from './select-value'\n\nconst Select = Object.assign(SelectRoot, {\n Description: SelectDescription,\n Group: SelectGroup,\n GroupLabel: SelectGroupLabel,\n Icon: SelectIcon,\n Item: SelectItem,\n List: SelectList,\n Popup: SelectPopup,\n Title: SelectTitle,\n Trigger: SelectTrigger,\n Value: SelectValue,\n})\n\nexport type {\n SelectIconProps,\n SelectItemProps,\n SelectListProps,\n SelectPopupProps,\n SelectProps,\n SelectTriggerProps,\n SelectValueProps,\n SelectGroupProps,\n SelectGroupLabelProps,\n SelectDescriptionProps,\n SelectTitleProps,\n} from './select.types'\nexport { SelectItem } from './select-item'\nexport { SelectList } from './select-list'\nexport { SelectIcon } from './select-icon'\nexport { SelectPopup } from './select-popup'\nexport { SelectTrigger } from './select-trigger'\nexport { SelectValue } from './select-value'\nexport { SelectGroup } from './select-group'\nexport { SelectGroupLabel } from './select-group-label'\nexport { SelectDescription } from './select-description'\nexport { SelectTitle } from './select-title'\n\nexport { Select }\n","import type { ChangeEvent } from 'react'\n\nimport { cn } from '@/utils'\n\nimport { Icon } from '../icon'\nimport {\n Select,\n SelectIcon,\n SelectItem,\n SelectList,\n SelectPopup,\n SelectTitle,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport type { CalendarDropdownProps } from './calendar.types'\n\nfunction createSelectTarget(value: string): HTMLSelectElement {\n const element = document.createElement('select'),\n option = Object.assign(document.createElement('option'), { value })\n\n element.append(option)\n element.value = value\n\n return element\n}\n\nexport function CalendarDropdown({\n children,\n className,\n disabled,\n value,\n options,\n onChange,\n 'aria-label': ariaLabel,\n}: CalendarDropdownProps) {\n const handleValueChange = (newValue: string | null) => {\n if (onChange) {\n const element = createSelectTarget(newValue ?? ''),\n syntheticEvent = {\n bubbles: false,\n cancelable: false,\n currentTarget: element,\n defaultPrevented: false,\n eventPhase: Event.NONE,\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n isTrusted: false,\n nativeEvent: new Event('change'),\n persist: () => undefined,\n preventDefault: () => undefined,\n stopPropagation: () => undefined,\n target: element,\n timeStamp: performance.now(),\n type: 'change',\n } satisfies ChangeEvent<HTMLSelectElement>\n\n onChange(syntheticEvent)\n }\n }\n\n return (\n <Select<string> disabled={disabled} value={value?.toString()} onValueChange={handleValueChange}>\n <SelectTrigger variant=\"ghost\" aria-label={ariaLabel} className={cn('', className)}>\n <SelectValue>{options?.find((option) => option.value === value)?.label}</SelectValue>\n {children ?? (\n <SelectIcon>\n <Icon name=\"chevronsUpDown\" />\n </SelectIcon>\n )}\n </SelectTrigger>\n <SelectPopup>\n <SelectList>\n {options?.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value.toString()}\n disabled={option.disabled}\n >\n <SelectTitle>{option.label}</SelectTitle>\n </SelectItem>\n ))}\n </SelectList>\n </SelectPopup>\n </Select>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { CalendarFooterProps } from './calendar.types'\n\nexport function CalendarFooter({ className, children, ref, ...props }: CalendarFooterProps) {\n return (\n <div\n data-slot=\"calendar-footer\"\n className={cn('mt-xs flex flex-col gap-3xs border-t border-border pt-xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { CalendarHeaderProps } from './calendar.types'\n\nexport function CalendarHeader({ className, children, ref, ...props }: CalendarHeaderProps) {\n return (\n <div className={cn('', className)} ref={ref} {...props}>\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport type { CalendarNextMonthButtonProps } from './calendar.types'\n\nexport function CalendarNextMonthButton({\n className,\n children,\n ...props\n}: CalendarNextMonthButtonProps) {\n return (\n <Button variant=\"ghost\" tone=\"neutral\" size=\"small\" className={cn('', className)} {...props}>\n {children ?? <Icon name=\"chevronRight\" />}\n </Button>\n )\n}\n","import type { DateRange, DayButton, Mode, PropsBase } from '@daypicker/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type React from 'react'\n\nconst calendarPanelVariants = cva('w-fit', {\n compoundVariants: [\n {\n className: 'rounded-2xl p-sm',\n variant: ['elevated', 'outline'],\n },\n ],\n defaultVariants: {\n variant: 'elevated',\n },\n variants: {\n variant: {\n elevated: 'bg-surface shadow-2xs',\n ghost: 'bg-transparent',\n outline: 'border border-border',\n },\n },\n})\n\ntype CalendarSelected = Date | Date[] | DateRange\n\ninterface CalendarState {\n selectedDates: CalendarSelected | undefined\n}\n\ninterface CalendarAction {\n type: 'SET_SELECTED_DATES'\n payload: CalendarSelected | undefined\n}\n\ntype CalendarProps = React.ComponentProps<'div'> & {\n defaultState?: CalendarState\n}\ninterface CalendarContextValue {\n state: CalendarState\n dispatch: React.Dispatch<CalendarAction>\n}\n\ntype CalendarPickerProps = PropsBase & {\n selected?: CalendarSelected\n onSelect?: (date: CalendarSelected | undefined) => void\n mode?: Mode\n}\ntype CalendarPanelProps = React.ComponentProps<'div'> & VariantProps<typeof calendarPanelVariants>\ntype CalendarHeaderProps = React.ComponentProps<'div'>\ntype CalendarSummaryProps = React.ComponentProps<'div'>\ntype CalendarFooterProps = React.ComponentProps<'div'>\ntype CalendarComponents = NonNullable<PropsBase['components']>\ntype CalendarChevronProps = React.ComponentProps<NonNullable<CalendarComponents['Chevron']>>\ntype CalendarNextMonthButtonProps = React.ComponentProps<\n NonNullable<CalendarComponents['NextMonthButton']>\n>\ntype CalendarPreviousMonthButtonProps = React.ComponentProps<\n NonNullable<CalendarComponents['PreviousMonthButton']>\n>\ntype CalendarDropdownProps = React.ComponentProps<NonNullable<CalendarComponents['Dropdown']>> & {\n children?: React.ReactNode\n}\ntype CalendarDayButtonProps = React.ComponentProps<typeof DayButton>\n\nexport type {\n CalendarSelected,\n CalendarState,\n CalendarAction,\n CalendarProps,\n CalendarContextValue,\n CalendarPickerProps,\n CalendarPanelProps,\n CalendarHeaderProps,\n CalendarSummaryProps,\n CalendarFooterProps,\n CalendarNextMonthButtonProps,\n CalendarChevronProps,\n CalendarPreviousMonthButtonProps,\n CalendarDropdownProps,\n CalendarDayButtonProps,\n CalendarComponents,\n}\nexport { calendarPanelVariants }\n","import { cn } from '@/utils/cn'\n\nimport { calendarPanelVariants } from './calendar.types'\nimport type { CalendarPanelProps } from './calendar.types'\n\nexport function CalendarPanel({ variant, className, children, ref, ...props }: CalendarPanelProps) {\n return (\n <div className={cn(calendarPanelVariants({ variant }), className)} ref={ref} {...props}>\n {children}\n </div>\n )\n}\n","import { Icon } from '../icon'\nimport type { IconName } from '../icon'\nimport type { CalendarChevronProps } from './calendar.types'\n\nconst chevronIcons: Record<NonNullable<CalendarChevronProps['orientation']>, IconName> = {\n down: 'chevronDown',\n left: 'chevronLeft',\n right: 'chevronRight',\n up: 'chevronUp',\n}\n\n// DayPicker renders this inside its navigation and caption controls in place of its own blue chevron.\nexport function CalendarChevron({ orientation = 'left' }: CalendarChevronProps) {\n return <Icon name={chevronIcons[orientation]} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport type { CalendarPreviousMonthButtonProps } from './calendar.types'\n\nexport function CalendarPreviousMonthButton({\n className,\n children,\n ...props\n}: CalendarPreviousMonthButtonProps) {\n return (\n <Button {...props} variant=\"ghost\" tone=\"neutral\" size=\"small\" className={cn('', className)}>\n {children ?? <Icon name=\"chevronLeft\" />}\n </Button>\n )\n}\n","import { DayPicker, getDefaultClassNames, isDateRange, labelDayButton } from '@daypicker/react'\nimport type { OnSelectHandler, PropsBase } from '@daypicker/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { useCalendar } from './calendar'\nimport { CalendarChevron } from './calendar-chevron'\nimport { CalendarDayButton } from './calendar-day-button'\nimport { CalendarDropdown } from './calendar-dropdown'\nimport { CalendarNextMonthButton } from './calendar-next-month-button'\nimport { CalendarPreviousMonthButton } from './calendar-previous-month-button'\nimport type { CalendarComponents, CalendarPickerProps, CalendarSelected } from './calendar.types'\n\nfunction getMultipleSelected(selectedDates: CalendarSelected | undefined): Date[] | undefined {\n if (Array.isArray(selectedDates)) {\n return selectedDates\n }\n return undefined\n}\n\nfunction getRangeSelected(selectedDates: CalendarSelected | undefined) {\n if (isDateRange(selectedDates)) {\n return selectedDates\n }\n return undefined\n}\n\nfunction getSingleSelected(selectedDates: CalendarSelected | undefined): Date | undefined {\n if (selectedDates instanceof Date) {\n return selectedDates\n }\n return undefined\n}\n\n// WCAG 2.5.3: the accessible name must contain the visible text, which is the day number.\nfunction labelDayButtonWithVisibleText(...args: Parameters<typeof labelDayButton>) {\n const [date, modifiers, options, dateLib] = args,\n visibleDay = dateLib?.format(date, 'd') ?? String(date.getDate())\n return `${visibleDay}, ${labelDayButton(date, modifiers, options, dateLib)}`\n}\n\nconst defaultClassNames = getDefaultClassNames(),\n defaultComponents: CalendarComponents = {\n Chevron: CalendarChevron,\n DayButton: CalendarDayButton,\n Dropdown: CalendarDropdown,\n NextMonthButton: CalendarNextMonthButton,\n PreviousMonthButton: CalendarPreviousMonthButton,\n },\n calendarClassNames: PropsBase['classNames'] = {\n caption_label: 'style-text-strong-0',\n day: cn(\n 'size-xl! rounded-full style-text-default-0 transition-colors hover:bg-brand-container hover:text-brand-on-container data-selected:text-brand-on-default data-selected:hover:bg-brand-default',\n defaultClassNames.day,\n ),\n day_button: cn('size-xl! rounded-full', defaultClassNames.day_button),\n disabled: cn('pointer-events-none text-on-surface', defaultClassNames.disabled),\n month_caption: 'flex items-center justify-center h-lg',\n month_grid: cn('mt-xs border-separate! border-spacing-3xs', defaultClassNames.month_grid),\n nav: cn('h-lg! w-full justify-between!', defaultClassNames.nav),\n outside: cn('border-none text-on-surface-muted', defaultClassNames.outside),\n range_end: cn('rounded-l-none bg-brand-default text-brand-on-default'),\n range_middle: cn(\n 'rounded-none! border-y border-brand-border bg-brand-container! text-brand-on-container! transition-none',\n ),\n range_start: cn(\n 'rounded-r-none bg-brand-default text-brand-on-default',\n '[&.rounded-l-none]:rounded-xl',\n ),\n selected: cn('bg-brand-default text-brand-on-default'),\n today: cn('text-brand-default! data-selected:text-brand-on-default!', defaultClassNames.today),\n week: cn('', defaultClassNames.week),\n weekdays: cn('style-text-default-0 text-on-surface-muted', defaultClassNames.weekdays),\n }\n\nexport function CalendarPicker({\n className,\n components,\n mode = 'single',\n selected,\n onSelect,\n ...props\n}: CalendarPickerProps) {\n const { state, dispatch } = useCalendar(),\n selectedValue = selected ?? state.selectedDates,\n handleSelect: OnSelectHandler<CalendarSelected | undefined> = (next) => {\n dispatch({ payload: next, type: 'SET_SELECTED_DATES' })\n onSelect?.(next)\n },\n baseProps: PropsBase = {\n className,\n classNames: calendarClassNames,\n components: { ...defaultComponents, ...components },\n labels: { labelDayButton: labelDayButtonWithVisibleText },\n ...props,\n }\n\n switch (mode) {\n case 'multiple': {\n return (\n <DayPicker\n {...baseProps}\n mode=\"multiple\"\n selected={getMultipleSelected(selectedValue)}\n onSelect={handleSelect}\n />\n )\n }\n case 'range': {\n return (\n <DayPicker\n {...baseProps}\n mode=\"range\"\n selected={getRangeSelected(selectedValue)}\n onSelect={handleSelect}\n />\n )\n }\n default: {\n return (\n <DayPicker\n {...baseProps}\n mode=\"single\"\n selected={getSingleSelected(selectedValue)}\n onSelect={handleSelect}\n />\n )\n }\n }\n}\n","import { isDateRange } from '@daypicker/react'\nimport { useState } from 'react'\n\nimport { cn } from '@/utils/cn'\nimport { formatDate } from '@/utils/date-time'\n\nimport { useCalendar } from './calendar'\nimport type { CalendarSummaryProps } from './calendar.types'\n\nconst dateFormatOptions: Intl.DateTimeFormatOptions = {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n },\n formatCalendarDate = (date: Date) => formatDate(date, 'en-US', dateFormatOptions)\n\nexport function CalendarSummary({ className, children, ref, ...props }: CalendarSummaryProps) {\n const { state } = useCalendar(),\n [today, setToday] = useState(() => new Date())\n void setToday\n let formattedDate: string | undefined = undefined\n\n if (state.selectedDates instanceof Date) {\n formattedDate = formatCalendarDate(state.selectedDates)\n }\n\n if (isDateRange(state.selectedDates)) {\n const { from: startDate, to: endDate } = state.selectedDates\n if (startDate && endDate) {\n formattedDate = `${formatCalendarDate(startDate)} - ${formatCalendarDate(endDate)}`\n }\n }\n\n return (\n <div className={cn('flex flex-col', className)} ref={ref} {...props}>\n <span className=\"style-text-strong-1\">{formatCalendarDate(today)}</span>\n <span className=\"style-text-strong-0\">{formattedDate}</span>\n {children}\n </div>\n )\n}\n","import { Calendar as CalendarRoot } from './calendar'\nimport { CalendarDayButton } from './calendar-day-button'\nimport { CalendarDropdown } from './calendar-dropdown'\nimport { CalendarFooter } from './calendar-footer'\nimport { CalendarHeader } from './calendar-header'\nimport { CalendarNextMonthButton } from './calendar-next-month-button'\nimport { CalendarPanel } from './calendar-panel'\nimport { CalendarPicker } from './calendar-picker'\nimport { CalendarPreviousMonthButton } from './calendar-previous-month-button'\nimport { CalendarSummary } from './calendar-summary'\n\nconst Calendar = Object.assign(CalendarRoot, {\n DayButton: CalendarDayButton,\n Dropdown: CalendarDropdown,\n Footer: CalendarFooter,\n Header: CalendarHeader,\n NextMonthButton: CalendarNextMonthButton,\n Panel: CalendarPanel,\n Picker: CalendarPicker,\n PreviousMonthButton: CalendarPreviousMonthButton,\n Summary: CalendarSummary,\n})\n\nexport type {\n CalendarAction,\n CalendarContextValue,\n CalendarProps,\n CalendarFooterProps,\n CalendarHeaderProps,\n CalendarPanelProps,\n CalendarPickerProps,\n CalendarSummaryProps,\n CalendarDayButtonProps,\n CalendarChevronProps,\n CalendarNextMonthButtonProps,\n CalendarPreviousMonthButtonProps,\n CalendarDropdownProps,\n CalendarComponents,\n} from './calendar.types'\n\nexport { CalendarPicker } from './calendar-picker'\nexport { CalendarFooter } from './calendar-footer'\nexport { CalendarHeader } from './calendar-header'\nexport { CalendarPanel } from './calendar-panel'\nexport { CalendarSummary } from './calendar-summary'\nexport { CalendarDayButton } from './calendar-day-button'\nexport { CalendarChevron } from './calendar-chevron'\nexport { CalendarNextMonthButton } from './calendar-next-month-button'\nexport { CalendarPreviousMonthButton } from './calendar-previous-month-button'\nexport { CalendarDropdown } from './calendar-dropdown'\nexport { Calendar }\n","import React from 'react'\nimport type {\n TooltipProps as RechartsTooltipProps,\n TooltipContentProps as RechartsTooltipContentProps,\n LegendProps as RechartsLegendProps,\n DefaultLegendContentProps as RechartsDefaultLegendContentProps,\n} from 'recharts'\n\nconst THEMES = { dark: '.dark', light: '' } as const,\n ChartContainerContext = React.createContext<ChartContainerContextProps | undefined>(undefined),\n ChartLegendPayloadContext = React.createContext<\n | {\n label?: string\n color?: string\n icon?: React.ComponentType\n }\n | undefined\n >(undefined)\n\ntype ChartConfig = Record<\n string,\n {\n label?: string\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n>\n\ninterface ChartContainerContextProps {\n config: ChartConfig\n}\n\ntype ChartContainerProps = React.ComponentProps<'div'> & {\n config: ChartConfig\n initialDimension?: { width: number; height: number }\n}\n\ntype ChartTooltipProps = RechartsTooltipProps\ntype ChartTooltipContentProps = React.ComponentProps<'div'> & Partial<RechartsTooltipContentProps>\ntype ChartLegendProps = RechartsLegendProps\ntype ChartLegendContentProps = React.ComponentProps<'div'> & RechartsDefaultLegendContentProps\ntype ChartTooltipLabelProps = React.ComponentProps<'p'>\ntype ChartTooltipNameProps = React.ComponentProps<'p'>\ntype ChartTooltipPayloadProps = React.ComponentProps<'div'>\ntype ChartLegendPayloadProps = React.ComponentProps<'div'>\ntype ChartTooltipIndicatorProps = React.ComponentProps<'div'> & {\n shape?: 'circle' | 'square' | 'diamond' | 'triangle' | 'wye' | 'line'\n}\ntype ChartLinearGradientProps = React.ComponentProps<'defs'> & {\n gradients: {\n id: string\n stopColor: string\n }[]\n}\ntype ChartTooltipIconProps = React.ComponentProps<'div'>\ntype ChartLegendIconProps = React.ComponentProps<'div'>\ntype ChartLegendLabelProps = React.ComponentProps<'p'>\ntype ChartLegendIndicatorProps = React.ComponentProps<'div'> & {\n shape?: 'circle' | 'square' | 'diamond' | 'triangle' | 'wye' | 'line'\n}\ntype ChartTooltipValueProps = React.ComponentProps<'p'>\n\nexport type {\n ChartConfig,\n ChartContainerContextProps,\n ChartContainerProps,\n ChartTooltipProps,\n ChartTooltipContentProps,\n ChartLegendProps,\n ChartLegendContentProps,\n ChartTooltipLabelProps,\n ChartTooltipNameProps,\n ChartTooltipPayloadProps,\n ChartLegendPayloadProps,\n ChartTooltipIndicatorProps,\n ChartLinearGradientProps,\n ChartTooltipIconProps,\n ChartLegendIconProps,\n ChartLegendLabelProps,\n ChartLegendIndicatorProps,\n ChartTooltipValueProps,\n}\nexport { ChartContainerContext, ChartLegendPayloadContext }\n","import React from 'react'\nimport { ResponsiveContainer } from 'recharts'\n\nimport { cn } from '@/utils/cn'\n\nimport { ChartContainerContext } from './chart.types'\nimport type { ChartContainerProps } from './chart.types'\n\nexport function ChartContainer({\n id,\n config,\n className,\n children,\n initialDimension,\n ref,\n ...props\n}: ChartContainerProps) {\n const uniqueId = React.useId(),\n chartId = `chart-${id ?? uniqueId.replace(/:/g, '')}`\n\n return (\n <ChartContainerContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center style-text-default--1 [&_.recharts-cartesian-axis-tick_text]:fill-on-surface-muted [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-neutral-container-high [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-neutral-container-high [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n ref={ref}\n {...props}\n >\n <ResponsiveContainer initialDimension={initialDimension}>{children}</ResponsiveContainer>\n </div>\n </ChartContainerContext.Provider>\n )\n}\n","import { Tooltip } from 'recharts'\n\nimport type { ChartTooltipProps } from './chart.types'\n\nexport function ChartTooltip({ content, ...props }: ChartTooltipProps) {\n return <Tooltip content={content} {...props} />\n}\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ChartTooltipContentProps } from './chart.types'\n\nconst ChartTooltipContentContext = React.createContext<ChartTooltipContentProps | undefined>(\n undefined,\n)\n\nfunction ChartTooltipContent({ className, children, ref, ...props }: ChartTooltipContentProps) {\n return (\n <ChartTooltipContentContext.Provider value={props}>\n <div\n className={cn(\n 'min-w-[125px] space-y-2xs rounded-lg bg-surface-2 px-xs py-2xs shadow-md',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </ChartTooltipContentContext.Provider>\n )\n}\n\nfunction useChartTooltipContent() {\n const context = React.useContext(ChartTooltipContentContext)\n\n if (!context) {\n throw new Error('useChartTooltipContent must be used within a ChartTooltipContentProvider')\n }\n\n return context\n}\n\nexport { ChartTooltipContent, useChartTooltipContent }\n","import { cn } from '@/utils/cn'\n\nimport { useChartTooltipContent } from './chart-tooltip-content'\nimport type { ChartTooltipLabelProps } from './chart.types'\n\nexport function ChartTooltipLabel({ className, children, ref, ...props }: ChartTooltipLabelProps) {\n const { label } = useChartTooltipContent()\n\n return (\n <p className={cn('style-text-default-0', className)} ref={ref} {...props}>\n {children}\n {label}\n </p>\n )\n}\n","import React from 'react'\nimport type { TooltipPayloadEntry } from 'recharts'\n\nimport { cn } from '@/utils/cn'\n\nimport { useChartTooltipContent } from './chart-tooltip-content'\nimport type { ChartTooltipPayloadProps } from './chart.types'\n\nconst ChartTooltipPayloadContext = React.createContext<TooltipPayloadEntry | undefined>(undefined)\n\nfunction ChartTooltipPayload({ className, children, ref, ...props }: ChartTooltipPayloadProps) {\n const { payload } = useChartTooltipContent()\n\n return (\n <div className={cn('flex flex-col gap-3xs', className)} ref={ref} {...props}>\n {payload?.map((entry) => (\n <ChartTooltipPayloadContext.Provider\n key={String(entry.dataKey ?? entry.name)}\n value={entry}\n >\n <div className=\"flex items-center justify-between gap-2xs\">{children}</div>\n </ChartTooltipPayloadContext.Provider>\n ))}\n </div>\n )\n}\n\nfunction useChartTooltipPayload() {\n const context = React.useContext(ChartTooltipPayloadContext)\n\n if (!context) {\n throw new Error('useChartTooltipPayload must be used within a ChartTooltipPayloadProvider')\n }\n\n return context\n}\n\nexport { ChartTooltipPayload, useChartTooltipPayload }\n","import { Legend } from 'recharts'\n\nimport type { ChartLegendProps } from './chart.types'\n\nexport function ChartLegend({ children, ...props }: ChartLegendProps) {\n return <Legend {...props}>{children}</Legend>\n}\n","import React from 'react'\n\nimport { ChartLegendPayloadContext, ChartContainerContext } from './chart.types'\nimport type { ChartConfig } from './chart.types'\n\nconst getPayloadConfigFromPayload = (config: ChartConfig, payload: unknown, key: string) => {\n if (typeof payload !== 'object' || payload === null) {\n return undefined\n }\n\n if (key in config) {\n return config[key]\n }\n\n if ('name' in payload && typeof payload.name === 'string' && payload.name in config) {\n return config[payload.name]\n }\n\n return undefined\n },\n useChart = () => {\n const context = React.useContext(ChartContainerContext)\n\n if (!context) {\n throw new Error('useChart must be used within a ChartContainerProvider')\n }\n\n return context\n },\n useChartLegendPayload = () => {\n const context = React.useContext(ChartLegendPayloadContext)\n\n if (!context) {\n throw new Error('useChartLegendPayload must be used within a ChartLegendPayloadProvider')\n }\n\n return context\n }\n\nexport { getPayloadConfigFromPayload, useChart, useChartLegendPayload }\n","import { cn } from '@/utils/cn'\n\nimport type { ChartLegendIconProps } from './chart.types'\nimport { useChartLegendPayload } from './chart.utils'\n\nexport function ChartLegendIcon({ className, children, ref, ...props }: ChartLegendIconProps) {\n const { icon: Icon, color } = useChartLegendPayload()\n\n return (\n <div\n style={{\n color,\n }}\n className={cn('shrink-0 [&>svg]:size-xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n {Icon && <Icon />}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ChartLegendIndicatorProps } from './chart.types'\nimport { useChartLegendPayload } from './chart.utils'\n\nexport function ChartLegendIndicator({\n shape = 'circle',\n className,\n children,\n ref,\n ...props\n}: ChartLegendIndicatorProps) {\n const { color } = useChartLegendPayload()\n\n return (\n <div\n style={{\n backgroundColor: color,\n ...(shape === 'circle' && { borderRadius: '50%' }),\n ...(shape === 'diamond' && { transform: 'rotate(45deg)' }),\n ...(shape === 'triangle' && { clipPath: 'polygon(50% 0%, 0% 100%, 100% 100%)' }),\n ...(shape === 'wye' && {\n clipPath:\n 'polygon(50% 0%, 61.8% 35.4%, 98.5% 35.4%, 69.1% 57.1%, 80.9% 92.5%, 50% 70.7%, 19.1% 92.5%, 30.9% 57.1%, 1.5% 35.4%, 38.2% 35.4%)',\n }),\n ...(shape === 'line' && { borderRadius: '1.5px', maxHeight: '100%', width: '3px' }),\n }}\n className={cn('size-xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ChartLegendLabelProps } from './chart.types'\nimport { useChartLegendPayload } from './chart.utils'\n\nexport function ChartLegendLabel({ className, children, ref, ...props }: ChartLegendLabelProps) {\n const { label } = useChartLegendPayload()\n\n return (\n <p className={cn('style-text-default--1 capitalize', className)} ref={ref} {...props}>\n {children}\n {label}\n </p>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { ChartLegendIcon } from './chart-legend-icon'\nimport { ChartLegendIndicator } from './chart-legend-indicator'\nimport { ChartLegendLabel } from './chart-legend-label'\nimport { ChartLegendPayloadContext } from './chart.types'\nimport type { ChartLegendContentProps } from './chart.types'\nimport { getPayloadConfigFromPayload, useChart } from './chart.utils'\n\nexport function ChartLegendContent({\n payload,\n verticalAlign = 'bottom',\n className,\n children,\n ref,\n ...props\n}: ChartLegendContentProps) {\n const { config } = useChart()\n\n return (\n <div\n className={cn(\n 'flex items-center justify-center gap-lg',\n verticalAlign === 'top' && 'mb-md',\n verticalAlign === 'bottom' && 'mt-md',\n className,\n )}\n ref={ref}\n {...props}\n >\n {payload?.map((entry) => {\n let payloadKey = 'value'\n\n if (typeof entry.dataKey === 'string') {\n payloadKey = entry.dataKey\n }\n\n const payloadConfig = getPayloadConfigFromPayload(config, entry, payloadKey)\n\n return (\n <ChartLegendPayloadContext.Provider\n key={String(entry.dataKey ?? entry.value)}\n value={{\n color: payloadConfig?.color,\n icon: payloadConfig?.icon,\n label: payloadConfig?.label,\n }}\n >\n <div className=\"flex items-center gap-2xs\">\n {payloadConfig?.icon && <ChartLegendIcon />}\n {!payloadConfig?.icon && <ChartLegendIndicator />}\n <ChartLegendLabel />\n {children}\n </div>\n </ChartLegendPayloadContext.Provider>\n )\n })}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ChartLinearGradientProps } from './chart.types'\n\nexport function ChartLinearGradient({\n gradients,\n className,\n children,\n ref,\n ...props\n}: ChartLinearGradientProps) {\n return (\n <defs className={cn('', className)} ref={ref} {...props}>\n {gradients.map((gradient) => (\n <linearGradient key={gradient.id} id={gradient.id} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor={gradient.stopColor} stopOpacity={0.8} />\n <stop offset=\"95%\" stopColor={gradient.stopColor} stopOpacity={0.1} />\n </linearGradient>\n ))}\n {children}\n </defs>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useChartTooltipPayload } from './chart-tooltip-payload'\nimport type { ChartTooltipIndicatorProps } from './chart.types'\n\nexport function ChartTooltipIndicator({\n shape = 'circle',\n className,\n children,\n ref,\n ...props\n}: ChartTooltipIndicatorProps) {\n const { color } = useChartTooltipPayload()\n\n return (\n <div\n style={{\n backgroundColor: color,\n ...(shape === 'circle' && { borderRadius: '50%' }),\n ...(shape === 'diamond' && { transform: 'rotate(45deg)' }),\n ...(shape === 'triangle' && { clipPath: 'polygon(50% 0%, 0% 100%, 100% 100%)' }),\n ...(shape === 'wye' && {\n clipPath:\n 'polygon(50% 0%, 61.8% 35.4%, 98.5% 35.4%, 69.1% 57.1%, 80.9% 92.5%, 50% 70.7%, 19.1% 92.5%, 30.9% 57.1%, 1.5% 35.4%, 38.2% 35.4%)',\n }),\n ...(shape === 'line' && { borderRadius: '1.5px', maxHeight: '100%', width: '3px' }),\n }}\n className={cn('size-xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useChartTooltipPayload } from './chart-tooltip-payload'\nimport type { ChartTooltipNameProps } from './chart.types'\n\nexport function ChartTooltipName({ className, children, ref, ...props }: ChartTooltipNameProps) {\n const { name } = useChartTooltipPayload()\n\n return (\n <p\n className={cn(\n 'grow text-left style-text-default--1 text-on-surface-variant capitalize',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n {name}\n </p>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useChartTooltipPayload } from './chart-tooltip-payload'\nimport type { ChartTooltipIconProps } from './chart.types'\nimport { getPayloadConfigFromPayload, useChart } from './chart.utils'\n\nfunction resolveConfigKey(dataKey: unknown): string {\n if (typeof dataKey === 'string') {\n return dataKey\n }\n\n return 'value'\n}\n\nexport function ChartTooltipIcon({ className, children, ref, ...props }: ChartTooltipIconProps) {\n const { config } = useChart(),\n payload = useChartTooltipPayload(),\n payloadConfig = getPayloadConfigFromPayload(config, payload, resolveConfigKey(payload.dataKey)),\n Icon = payloadConfig?.icon\n\n return (\n <div\n style={{\n color: payload.color,\n }}\n className={cn('shrink-0 [&>svg]:size-xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n {Icon && <Icon />}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useChartTooltipPayload } from './chart-tooltip-payload'\nimport type { ChartTooltipValueProps } from './chart.types'\n\nexport function ChartTooltipValue({ className, children, ref, ...props }: ChartTooltipValueProps) {\n const { value } = useChartTooltipPayload()\n\n return (\n <p className={cn('mx-auto style-text-default--1', className)} ref={ref} {...props}>\n {children}\n {value}\n </p>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport type LabelProps = React.ComponentProps<'label'> & VariantProps<typeof labelVariants>\n\nexport const labelVariants = cva('flex items-center gap-2xs select-none hover:cursor-pointer', {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'style-text-default-1',\n medium: 'style-text-default-0',\n small: 'style-text-default--1',\n },\n },\n})\n","import { labelVariants } from './label.types'\nimport type { LabelProps } from './label.types'\n\nexport function Label({ className, ref, size, ...props }: LabelProps) {\n return (\n <label\n className={labelVariants({ className, size })}\n data-slot=\"label\"\n htmlFor={props.htmlFor}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { CheckboxIndicatorProps } from './checkbox.types'\n\nexport function CheckboxIndicator({ className, ...props }: CheckboxIndicatorProps) {\n return (\n <BaseCheckbox.Indicator\n className={cn('flex', className)}\n {...props}\n render={(innerProps, state) => {\n if (state.indeterminate) {\n return <Icon name=\"minus\" {...innerProps} className=\"text-accent-default\" />\n }\n return <Icon name=\"selected\" {...innerProps} />\n }}\n />\n )\n}\n","import type { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\n\nconst checkboxVariants = cva(\n 'group flex size-md items-center justify-center rounded-md shadow-2xs outline-2 outline-transparent transition-colors not-indeterminate:text-accent-on-default indeterminate:text-accent-default hover:cursor-pointer hover:outline-accent-border disabled:cursor-not-allowed disabled:hover:cursor-not-allowed data-checked:bg-accent-default [&_svg]:size-sm',\n {\n defaultVariants: {\n variant: 'elevated',\n },\n variants: {\n variant: {\n elevated: 'bg-surface shadow-2xs',\n inSurface: 'bg-surface-low shadow-none inset-shadow-2xs data-checked:inset-shadow-none',\n outline:\n 'bg-inherit shadow-none outline [&:not([data-checked])]:not-hover:outline-border-strong',\n },\n },\n },\n)\n\ntype CheckboxRootProps = ComponentProps<typeof BaseCheckbox.Root> &\n VariantProps<typeof checkboxVariants>\n\ntype CheckboxIndicatorProps = ComponentProps<typeof BaseCheckbox.Indicator>\n\nexport { checkboxVariants, type CheckboxRootProps, type CheckboxIndicatorProps }\n","import { Checkbox as BaseCheckbox } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Label } from '../label'\nimport { CheckboxIndicator } from './checkbox-indicator'\nimport { checkboxVariants } from './checkbox.types'\nimport type { CheckboxRootProps } from './checkbox.types'\n\nexport function Checkbox({ variant, children, className, ref, ...props }: CheckboxRootProps) {\n return (\n <Label className=\"flex items-center gap-xs has-disabled:opacity-50\">\n <BaseCheckbox.Root\n className={cn(checkboxVariants({ className, variant }))}\n ref={ref}\n {...props}\n >\n <CheckboxIndicator />\n </BaseCheckbox.Root>\n {children}\n </Label>\n )\n}\n","import { Checkbox as CheckboxRoot } from './checkbox'\nimport { CheckboxIndicator } from './checkbox-indicator'\n\nconst Checkbox = Object.assign(CheckboxRoot, {\n Indicator: CheckboxIndicator,\n})\n\nexport type { CheckboxIndicatorProps, CheckboxRootProps } from './checkbox.types'\nexport { CheckboxIndicator } from './checkbox-indicator'\n\nexport { Checkbox }\n","import { CheckboxGroup as BaseCheckboxGroup } from '@base-ui/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { CheckboxGroupProps } from './checkbox-group.types'\n\nexport function CheckboxGroup({ className, ref, ...props }: CheckboxGroupProps) {\n const id = React.useId()\n return (\n <BaseCheckboxGroup\n aria-labelledby={id}\n className={cn('flex flex-col items-start gap-2xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { CodeBlockProps, CodeBlockProviderState, CodeBlockValue } from './code-block.types'\n\nconst CodeBlockContext = React.createContext<CodeBlockProviderState | undefined>(undefined)\n\nfunction CodeBlock({ items, defaultValue, className, ref, ...props }: CodeBlockProps) {\n const [currentValue, setCurrentValue] = React.useState<CodeBlockValue>(defaultValue)\n\n return (\n <CodeBlockContext.Provider value={{ currentValue, items, setCurrentValue }}>\n <div\n className={cn('flex flex-col rounded-xl border border-border bg-surface', className)}\n ref={ref}\n {...props}\n />\n </CodeBlockContext.Provider>\n )\n}\n\nfunction useCodeBlock() {\n const context = React.useContext(CodeBlockContext)\n\n if (!context) {\n throw new Error('useCodeBlock must be used within a CodeBlock')\n }\n\n return context\n}\n\nexport { CodeBlock, useCodeBlock }\n","import { cn } from '@/utils/cn'\n\nimport type { CodeBlockActionsProps } from './code-block.types'\n\nexport function CodeBlockActions({ className, ref, ...props }: CodeBlockActionsProps) {\n return (\n <div\n className={cn('absolute top-2xs right-2xs flex items-center gap-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockCopyProps } from './code-block.types'\n\nconst COPY_TIMEOUT = 2000,\n COPY_STATUS_ICON = {\n false: <Icon name=\"copy\" className=\"animate-in zoom-in\" />,\n true: <Icon name=\"selected\" className=\"animate-in zoom-in\" />,\n }\n\nexport function CodeBlockCopy({\n className,\n children,\n disabled,\n ref,\n ...props\n}: CodeBlockCopyProps) {\n const { currentValue } = useCodeBlock(),\n { code } = currentValue,\n [copied, setCopied] = React.useState(false),\n handleClick = async () => {\n try {\n if (code === undefined) {\n throw new Error('No source code available to copy')\n }\n await navigator.clipboard.writeText(code)\n setCopied(true)\n setTimeout(() => setCopied(false), COPY_TIMEOUT)\n } catch (error) {\n console.error('Failed to copy text:', error)\n }\n }\n\n return (\n <Button\n aria-label=\"Copy code\"\n className={cn('', className)}\n onClick={handleClick}\n ref={ref}\n size=\"medium\"\n tone=\"neutral\"\n variant=\"ghost\"\n {...props}\n disabled={disabled || code === undefined}\n >\n {children}\n {COPY_STATUS_ICON[`${copied}`]}\n </Button>\n )\n}\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockDownloadProps } from './code-block.types'\n\nconst DOWNLOAD_TIMEOUT = 2000,\n DOWNLOAD_STATUS_ICON = {\n false: <Icon name=\"download\" className=\"animate-in zoom-in\" />,\n true: <Icon name=\"selected\" className=\"animate-in zoom-in\" />,\n }\n\nexport function CodeBlockDownload({\n className,\n children,\n disabled,\n ref,\n ...props\n}: CodeBlockDownloadProps) {\n const { currentValue } = useCodeBlock(),\n { code } = currentValue,\n [downloaded, setDownloaded] = React.useState(false),\n handleClick = async () => {\n try {\n if (code === undefined) {\n throw new Error('No source code available to download')\n }\n const blob = new Blob([code], { type: 'text/plain;charset=utf-8' }),\n url = URL.createObjectURL(blob),\n link = document.createElement('a')\n link.href = url\n link.download = currentValue.name\n link.click()\n URL.revokeObjectURL(url)\n\n setDownloaded(true)\n setTimeout(() => setDownloaded(false), DOWNLOAD_TIMEOUT)\n } catch (error) {\n console.error('Failed to download file:', error)\n }\n }\n\n return (\n <Button\n aria-label=\"Download file\"\n onClick={handleClick}\n size=\"medium\"\n variant=\"ghost\"\n tone=\"neutral\"\n className={cn('', className)}\n ref={ref}\n {...props}\n disabled={disabled || code === undefined}\n >\n {children}\n {DOWNLOAD_STATUS_ICON[`${downloaded}`]}\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\ntype CodeBlockHeaderProps = React.ComponentProps<'div'>\n\nexport function CodeBlockHeader({ className, ref, ...props }: CodeBlockHeaderProps) {\n return (\n <div\n className={cn(\n 'flex min-h-2xl items-center justify-between border-b border-border p-2xs',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockNameProps } from './code-block.types'\n\nexport function CodeBlockName({ className, children, ref, ...props }: CodeBlockNameProps) {\n const { currentValue } = useCodeBlock()\n\n return (\n <div\n className={cn(\n 'flex items-center justify-center gap-2xs px-xs font-heading text-base leading-none font-bold text-on-surface-variant [&>svg]:size-md',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n {currentValue?.icon}\n {currentValue.name}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport {\n Select,\n SelectIcon,\n SelectItem,\n SelectList,\n SelectPopup,\n SelectTitle,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockSelectProps } from './code-block.types'\n\nexport function CodeBlockSelect({ className, children, ref, ...props }: CodeBlockSelectProps) {\n const { currentValue, setCurrentValue, items } = useCodeBlock(),\n handleChange = (value: unknown) => {\n const selectedValue = items.find(({ id }) => id === value)\n if (selectedValue) {\n setCurrentValue(selectedValue)\n }\n }\n\n return (\n <Select value={currentValue.id} onValueChange={handleChange}>\n <SelectTrigger\n aria-label=\"Select snippet\"\n className={cn('', className)}\n ref={ref}\n {...props}\n variant=\"ghost\"\n >\n <SelectValue>\n {(value: keyof typeof items) => items.find((item) => item.id === value)?.label}\n </SelectValue>\n <SelectIcon>\n <Icon name=\"chevronsUpDown\" />\n </SelectIcon>\n </SelectTrigger>\n <SelectPopup>\n <SelectList>\n {children}\n {items.map(({ label, id }) => (\n <SelectItem key={id} value={id}>\n <SelectTitle>{label}</SelectTitle>\n </SelectItem>\n ))}\n </SelectList>\n </SelectPopup>\n </Select>\n )\n}\n","import type { Tabs as BaseTabs } from '@base-ui/react/tabs'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\nimport type React from 'react'\n\ntype TabsPanelProps = ComponentProps<typeof BaseTabs.Panel>\ntype TabsTabProps = ComponentProps<typeof BaseTabs.Tab>\ntype TabsIndicatorProps = ComponentProps<typeof BaseTabs.Indicator>\ntype TabsListProps = ComponentProps<typeof BaseTabs.List>\n\nconst tabsVariants = cva('', {\n compoundVariants: [\n {\n class:\n '[&_[role=presentation]]:bg-brand-default [&_[role=tab]]:data-active:text-brand-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-brand-default',\n tone: 'brand',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-accent-default [&_[role=tab]]:data-active:text-accent-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-accent-default',\n tone: 'accent',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-neutral-default [&_[role=tab]]:data-active:text-neutral-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-neutral-default',\n tone: 'neutral',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-error-default [&_[role=tab]]:data-active:text-error-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-error-default',\n tone: 'error',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-info-default [&_[role=tab]]:data-active:text-info-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-info-default',\n tone: 'info',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-success-default [&_[role=tab]]:data-active:text-success-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-success-default',\n tone: 'success',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:bg-warning-default [&_[role=tab]]:data-active:text-warning-on-default [&_[role=tab]]:hover:[&:not([data-active])]:text-warning-default',\n tone: 'warning',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:border-brand-border [&_[role=presentation]]:bg-brand-container [&_[role=tab]]:data-active:text-brand-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-brand-default',\n tone: 'brand',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-accent-border [&_[role=presentation]]:bg-accent-container [&_[role=tab]]:data-active:text-accent-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-accent-default',\n tone: 'accent',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-neutral-border [&_[role=presentation]]:bg-neutral-container [&_[role=tab]]:data-active:text-neutral-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-neutral-default',\n tone: 'neutral',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-error-border [&_[role=presentation]]:bg-error-container [&_[role=tab]]:data-active:text-error-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-error-default',\n tone: 'error',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-info-border [&_[role=presentation]]:bg-info-container [&_[role=tab]]:data-active:text-info-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-info-default',\n tone: 'info',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-success-border [&_[role=presentation]]:bg-success-container [&_[role=tab]]:data-active:text-success-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-success-default',\n tone: 'success',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:border-warning-border [&_[role=presentation]]:bg-warning-container [&_[role=tab]]:data-active:text-warning-on-container [&_[role=tab]]:hover:[&:not([data-active])]:text-warning-default',\n tone: 'warning',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:bg-brand-default [&_[role=tab]]:data-active:text-brand-default [&_[role=tab]]:hover:[&:not([data-active])]:text-brand-default',\n tone: 'brand',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-accent-default [&_[role=tab]]:data-active:text-accent-default [&_[role=tab]]:hover:[&:not([data-active])]:text-accent-default',\n tone: 'accent',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-neutral-default [&_[role=tab]]:data-active:text-neutral-default [&_[role=tab]]:hover:[&:not([data-active])]:text-neutral-default',\n tone: 'neutral',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-error-default [&_[role=tab]]:data-active:text-error-default [&_[role=tab]]:hover:[&:not([data-active])]:text-error-default',\n tone: 'error',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-info-default [&_[role=tab]]:data-active:text-info-default [&_[role=tab]]:hover:[&:not([data-active])]:text-info-default',\n tone: 'info',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-success-default [&_[role=tab]]:data-active:text-success-default [&_[role=tab]]:hover:[&:not([data-active])]:text-success-default',\n tone: 'success',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:bg-warning-default [&_[role=tab]]:data-active:text-warning-default [&_[role=tab]]:hover:[&:not([data-active])]:text-warning-default',\n tone: 'warning',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-full [&_[role=tab]]:rounded-full [&_[role=tablist]]:rounded-full',\n size: 'small',\n variant: 'default',\n },\n {\n class:\n '[&_[role=tab]]:h-lg [&_[role=tab]]:px-sm [&_[role=tab]]:style-text-default--1 [&_[role=tablist]]:gap-2xs [&_[role=tablist]]:p-3xs',\n size: 'small',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-full [&_[role=tab]]:h-xl [&_[role=tab]]:rounded-full [&_[role=tab]]:px-md [&_[role=tab]]:style-text-default-0 [&_[role=tablist]]:gap-xs [&_[role=tablist]]:rounded-full [&_[role=tablist]]:p-2xs',\n size: 'medium',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-full [&_[role=tab]]:h-2xl [&_[role=tab]]:rounded-full [&_[role=tab]]:px-lg [&_[role=tab]]:style-text-default-1 [&_[role=tablist]]:gap-sm [&_[role=tablist]]:rounded-full [&_[role=tablist]]:p-xs',\n size: 'large',\n variant: 'default',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-full [&_[role=tab]]:h-lg [&_[role=tab]]:px-sm [&_[role=tab]]:style-text-default--1 [&_[role=tablist]]:gap-2xs [&_[role=tablist]]:rounded-full [&_[role=tablist]]:p-3xs',\n size: 'small',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-full [&_[role=tab]]:h-xl [&_[role=tab]]:px-md [&_[role=tab]]:style-text-default-0 [&_[role=tablist]]:gap-xs [&_[role=tablist]]:rounded-full [&_[role=tablist]]:p-2xs',\n size: 'medium',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=presentation]]:rounded-full [&_[role=tab]]:h-2xl [&_[role=tab]]:px-lg [&_[role=tab]]:style-text-default-1 [&_[role=tablist]]:gap-sm [&_[role=tablist]]:rounded-full [&_[role=tablist]]:p-xs',\n size: 'large',\n variant: 'ghost',\n },\n {\n class:\n '[&_[role=tab]]:px-lg [&_[role=tab]]:pb-sm [&_[role=tab]]:style-text-default--1 [&_[role=tablist]]:h-lg [&_[role=tablist]]:gap-md [&_[role=tablist]]:border-b-[1px] **:[[role=presentation]]:bottom-[-3px] **:[[role=presentation]]:h-[2px]',\n size: 'small',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=tab]]:px-xl [&_[role=tab]]:pb-xs [&_[role=tab]]:style-text-default-0 [&_[role=tablist]]:h-xl [&_[role=tablist]]:gap-lg [&_[role=tablist]]:border-b-[1px] **:[[role=presentation]]:bottom-[-2px] **:[[role=presentation]]:h-px',\n size: 'medium',\n variant: 'underline',\n },\n {\n class:\n '[&_[role=tab]]:px-2xl [&_[role=tab]]:pb-2xs [&_[role=tab]]:style-text-default-1 [&_[role=tablist]]:h-2xl [&_[role=tablist]]:gap-xl [&_[role=tablist]]:border-b-[1px] **:[[role=presentation]]:bottom-[-2px] **:[[role=presentation]]:h-px',\n size: 'large',\n variant: 'underline',\n },\n {\n class: '[&_[role=tablist]]:w-fit',\n fill: false,\n variant: ['default', 'ghost'],\n },\n {\n class: '[&_[role=tablist]]:w-full',\n fill: false,\n variant: 'underline',\n },\n ],\n defaultVariants: {\n fill: false,\n size: 'medium',\n tone: 'brand',\n variant: 'default',\n },\n variants: {\n fill: {\n false: '',\n true: '[&_[role=tab]]:grow [&_[role=tablist]]:w-full',\n },\n size: {\n large: '',\n medium: '',\n small: '',\n },\n tone: {\n accent: '',\n brand: '',\n error: '',\n info: '',\n neutral: '',\n success: '',\n warning: '',\n },\n variant: {\n default: 'space-y-xs [&_[role=presentation]]:top-1/2 [&_[role=tablist]]:bg-surface-low',\n ghost: 'space-y-2xs [&_[role=presentation]]:top-1/2 [&_[role=presentation]]:border',\n underline: 'space-y-xs [&_[role=tablist]]:border-border',\n },\n },\n})\n\ntype TabsProps = React.ComponentProps<typeof BaseTabs.Root> & VariantProps<typeof tabsVariants>\ntype TabsTabValue = TabsTabProps['value']\n\nexport type {\n TabsProps,\n TabsTabValue,\n TabsPanelProps,\n TabsTabProps,\n TabsIndicatorProps,\n TabsListProps,\n}\nexport { tabsVariants }\n","import { Tabs as SwitchTabs } from '@base-ui/react/tabs'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TabsProps } from '.'\nimport { tabsVariants } from './tabs.types'\n\nexport function Tabs({ variant, size, tone, fill, className, ref, ...props }: TabsProps) {\n return (\n <SwitchTabs.Root\n className={cn(tabsVariants({ fill, size, tone, variant }), className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Tabs as SwitchTabs } from '@base-ui/react/tabs'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TabsIndicatorProps } from './tabs.types'\n\nexport function TabsIndicator({ className, ...props }: TabsIndicatorProps) {\n return (\n <SwitchTabs.Indicator\n className={cn(\n 'absolute left-[0px] z-[-1] h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) -translate-y-1/2 transition-all duration-300',\n className,\n )}\n {...props}\n />\n )\n}\n","import { Tabs as SwitchTabs } from '@base-ui/react/tabs'\n\nimport { cn } from '@/utils/cn'\n\nimport { TabsIndicator } from './tabs-indicator'\nimport type { TabsListProps } from './tabs.types'\n\nexport function TabsList({ children, className, ...props }: TabsListProps) {\n return (\n <SwitchTabs.List className={cn('relative z-0 flex', className)} {...props}>\n {children}\n <TabsIndicator />\n </SwitchTabs.List>\n )\n}\n","import { Tabs as SwitchTabs } from '@base-ui/react/tabs'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TabsPanelProps } from './tabs.types'\n\nexport function TabsPanel({ className, ...props }: TabsPanelProps) {\n return (\n <SwitchTabs.Panel\n className={cn('relative flex grow items-center justify-start overflow-auto p-3xs', className)}\n {...props}\n />\n )\n}\n","import { Tabs as SwitchTabs } from '@base-ui/react/tabs'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TabsTabProps } from './tabs.types'\n\nexport function TabsTab({ className, ...props }: TabsTabProps) {\n return (\n <SwitchTabs.Tab\n className={cn(\n 'inline-flex items-center justify-center gap-xs text-center break-keep whitespace-nowrap text-on-surface transition-colors duration-300 outline-none select-none hover:cursor-pointer focus-visible:relative focus-visible:before:absolute focus-visible:before:outline',\n className,\n )}\n {...props}\n />\n )\n}\n","import { Tabs as TabsRoot } from './tabs'\nimport { TabsIndicator } from './tabs-indicator'\nimport { TabsList } from './tabs-list'\nimport { TabsPanel } from './tabs-panel'\nimport { TabsTab } from './tabs-tab'\n\nconst Tabs = Object.assign(TabsRoot, {\n Indicator: TabsIndicator,\n List: TabsList,\n Panel: TabsPanel,\n Tab: TabsTab,\n})\n\nexport type {\n TabsIndicatorProps,\n TabsListProps,\n TabsPanelProps,\n TabsProps,\n TabsTabProps,\n TabsTabValue,\n} from './tabs.types'\nexport { TabsIndicator } from './tabs-indicator'\nexport { TabsList } from './tabs-list'\nexport { TabsPanel } from './tabs-panel'\nexport { TabsTab } from './tabs-tab'\n\nexport { Tabs }\n","import { cn } from '@/utils/cn'\n\nimport { Tabs, TabsIndicator, TabsList, TabsTab } from '../tabs'\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockTabsProps } from './code-block.types'\n\nexport function CodeBlockTabs({ className, children, ref, ...props }: CodeBlockTabsProps) {\n const { currentValue, items, setCurrentValue } = useCodeBlock(),\n handleOnValueChange = (value: string) => {\n const selectedValue = items.find((item) => item.id === value)\n if (selectedValue) {\n setCurrentValue(selectedValue)\n }\n }\n\n return (\n <Tabs\n value={currentValue.id}\n onValueChange={handleOnValueChange}\n className={cn('', className)}\n variant=\"ghost\"\n ref={ref}\n {...props}\n >\n <TabsList>\n {items.map(({ id, label }) => (\n <TabsTab key={id} value={id}>\n {label}\n </TabsTab>\n ))}\n <TabsIndicator />\n </TabsList>\n {children}\n </Tabs>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCodeBlock } from './code-block'\nimport type { CodeBlockWindowProps } from './code-block.types'\n\nexport function CodeBlockWindow({ className, children, ref, ...props }: CodeBlockWindowProps) {\n const { currentValue } = useCodeBlock()\n let { content } = currentValue\n\n if (content === undefined && currentValue.code !== undefined) {\n content = (\n <pre>\n <code>{currentValue.code}</code>\n </pre>\n )\n }\n\n return (\n <div\n className={cn('relative overflow-auto rounded-lg px-md py-sm', className)}\n ref={ref}\n {...props}\n >\n {children}\n {content}\n </div>\n )\n}\n","import { CodeBlock as CodeBlockRoot } from './code-block'\nimport { CodeBlockActions } from './code-block-actions'\nimport { CodeBlockCopy } from './code-block-copy'\nimport { CodeBlockDownload } from './code-block-download'\nimport { CodeBlockHeader } from './code-block-header'\nimport { CodeBlockName } from './code-block-name'\nimport { CodeBlockSelect } from './code-block-select'\nimport { CodeBlockTabs } from './code-block-tabs'\nimport { CodeBlockWindow } from './code-block-window'\n\nconst CodeBlock = Object.assign(CodeBlockRoot, {\n Actions: CodeBlockActions,\n Copy: CodeBlockCopy,\n Download: CodeBlockDownload,\n Header: CodeBlockHeader,\n Name: CodeBlockName,\n Select: CodeBlockSelect,\n Tabs: CodeBlockTabs,\n Window: CodeBlockWindow,\n})\n\nexport type {\n CodeBlockProps,\n CodeBlockActionsProps,\n CodeBlockCopyProps,\n CodeBlockDownloadProps,\n CodeBlockHeaderGroupProps,\n CodeBlockNameProps,\n CodeBlockProviderState,\n CodeBlockSelectProps,\n CodeBlockTabsProps,\n CodeBlockWindowProps,\n CodeBlockValue,\n} from './code-block.types'\nexport { CodeBlockActions } from './code-block-actions'\nexport { CodeBlockCopy } from './code-block-copy'\nexport { CodeBlockDownload } from './code-block-download'\nexport { CodeBlockHeader } from './code-block-header'\nexport { CodeBlockName } from './code-block-name'\nexport { CodeBlockSelect } from './code-block-select'\nexport { CodeBlockTabs } from './code-block-tabs'\nexport { CodeBlockWindow } from './code-block-window'\n\nexport { CodeBlock }\n","import { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible'\n\nimport { cn } from '@/utils/cn'\n\nimport type { CollapsibleProps } from './collapsible.types'\n\nexport function Collapsible({ className, ref, ...props }: CollapsibleProps) {\n return (\n <BaseCollapsible.Root\n className={cn('flex min-h-xl w-full flex-col justify-center gap-xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible'\n\nimport { cn } from '@/utils/cn'\n\nimport type { CollapsiblePanelProps } from './collapsible.types'\n\nexport function CollapsiblePanel({ className, ref, ...props }: CollapsiblePanelProps) {\n return (\n <BaseCollapsible.Panel\n className={cn(\n 'mb-3xs ml-md flex h-(--collapsible-panel-height) flex-col justify-end gap-3xs overflow-hidden border-l border-border-strong pl-sm transition-all duration-150 ease-out data-ending-style:h-0 data-starting-style:h-0 [&[hidden]:not([hidden=\"until-found\"])]:hidden',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport type { CollapsibleTriggerProps } from './collapsible.types'\n\nexport function CollapsibleTrigger({\n className,\n children,\n ref,\n ...props\n}: CollapsibleTriggerProps) {\n return (\n <BaseCollapsible.Trigger\n render={(renderProps) => (\n <Button\n {...renderProps}\n tone=\"neutral\"\n variant=\"elevated\"\n className={cn('group/trigger', className)}\n ref={ref}\n {...props}\n >\n {children}\n <Icon\n name=\"chevronRight\"\n className=\"ml-auto transition-all ease-out group-data-panel-open/trigger:rotate-90\"\n />\n </Button>\n )}\n />\n )\n}\n","import { Collapsible as CollapsibleRoot } from './collapsible'\nimport { CollapsiblePanel } from './collapsible-panel'\nimport { CollapsibleTrigger } from './collapsible-trigger'\n\nconst Collapsible = Object.assign(CollapsibleRoot, {\n Panel: CollapsiblePanel,\n Trigger: CollapsibleTrigger,\n})\n\nexport type {\n CollapsibleProps,\n CollapsibleTriggerProps,\n CollapsiblePanelProps,\n} from './collapsible.types'\nexport { CollapsiblePanel } from './collapsible-panel'\nexport { CollapsibleTrigger } from './collapsible-trigger'\n\nexport { Collapsible }\n","import type { Slider as BaseSlider } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport type ColorChannelSliderProps = React.ComponentProps<typeof BaseSlider.Root> &\n VariantProps<typeof colorChannelSliderVariants> & {\n trackStyle: string[]\n }\n\nexport const colorChannelSliderVariants = cva('flex flex-col gap-xs', {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large:\n \"[&_[data-slot='slider-thumb']]:size-lg [&_[data-slot='slider-thumb']]:border-4 [&_[data-slot='slider-thumb'][data-dragging]]:size-lg [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-md [&_[data-slot='slider-track'][data-orientation='vertical']]:w-xs\",\n medium:\n \"[&_[data-slot='slider-thumb']]:size-md [&_[data-slot='slider-thumb']]:border-4 [&_[data-slot='slider-thumb'][data-dragging]]:size-md [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-sm [&_[data-slot='slider-track'][data-orientation='vertical']]:w-2xs\",\n small:\n \"[&_[data-slot='slider-thumb']]:size-sm [&_[data-slot='slider-thumb']]:border-4 [&_[data-slot='slider-thumb'][data-dragging]]:size-sm [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-xs [&_[data-slot='slider-track'][data-orientation='vertical']]:w-3xs\",\n },\n },\n})\n","import { Slider as BaseSlider } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { colorChannelSliderVariants } from './color-channel-slider.types'\nimport type { ColorChannelSliderProps } from './color-channel-slider.types'\n\nconst PRIMARY_THUMB_INDEX = 0\n\nexport function ColorChannelSlider({\n size,\n trackStyle,\n className,\n children,\n 'aria-label': ariaLabel = 'Color value',\n ref,\n ...props\n}: ColorChannelSliderProps) {\n const hasTransparency = trackStyle.some(\n (color: string) => color.includes('rgba') || color.includes('hsla') || color.includes('/'),\n ),\n baseGradient = `linear-gradient(to right, ${trackStyle.join(', ')})`,\n checkerboard =\n 'linear-gradient(45deg, #d4d4d8 25%, transparent 25%, transparent 75%, #d4d4d8 75%, #d4d4d8)'\n let backgroundImage = baseGradient,\n backgroundPosition = 'auto',\n backgroundSize = 'auto'\n if (hasTransparency) {\n backgroundImage = [baseGradient, checkerboard, checkerboard].join(', ')\n backgroundPosition = '0 0, 0 0, 5px 5px'\n backgroundSize = '100% 100%, 10px 10px, 10px 10px'\n }\n\n return (\n <BaseSlider.Root\n className={cn(colorChannelSliderVariants({ size }), className)}\n data-slot=\"slider-root\"\n thumbAlignment=\"edge\"\n ref={ref}\n {...props}\n >\n <BaseSlider.Control className=\"shrink-0 hover:cursor-pointer data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full\">\n <BaseSlider.Track\n data-slot=\"slider-track\"\n className={cn('relative size-full rounded-full')}\n style={{\n backgroundColor: '#ffffff',\n backgroundImage,\n backgroundPosition,\n backgroundSize,\n }}\n >\n {children}\n <BaseSlider.Indicator data-slot=\"slider-indicator\" className=\"rounded-full\" />\n <BaseSlider.Thumb\n data-slot=\"slider-thumb\"\n aria-label={ariaLabel}\n className={cn(\n 'absolute aspect-square rounded-full border-white shadow-xs transition-[width,height,opacity] data-dragging:cursor-grabbing hover:[&:not([data-dragging])]:cursor-pointer',\n )}\n render={(thumbProps, state) => (\n <div\n {...thumbProps}\n style={{\n ...thumbProps.style,\n backgroundColor: trackStyle[state.values[PRIMARY_THUMB_INDEX]],\n }}\n />\n )}\n />\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n )\n}\n","import chroma from 'chroma-js'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { ColorChannelSlider } from '../color-channel-slider'\nimport type { InputGroup } from '../input-group'\nimport type { SelectTrigger } from '../select'\n\ninterface ColorPickerContextType {\n color: chroma.Color\n setColor: (color: chroma.Color) => void\n hue: number\n saturation: number\n value: number\n alpha: number\n setHue: (hue: number) => void\n setSaturation: (saturation: number) => void\n setValue: (value: number) => void\n setSaturationValue: (saturation: number, value: number) => void\n setAlpha: (alpha: number) => void\n setLightness: (lightness: number) => void\n valueType: ValueType\n setValueType: (valueType: ValueType) => void\n palette: chroma.Color[]\n setPalette: (palette: chroma.Color[]) => void\n addPaletteColor: (color: chroma.Color) => void\n paletteLimit?: number\n}\n\ninterface ColorPickerState {\n hue: number\n saturation: number\n value: number\n alpha: number\n valueType: ValueType\n palette: chroma.Color[]\n}\n\ntype ColorPickerAction =\n | { type: 'set_color'; color: chroma.Color }\n | { type: 'set_hue'; hue: number }\n | { type: 'set_saturation'; saturation: number }\n | { type: 'set_value'; value: number }\n | { type: 'set_saturation_value'; saturation: number; value: number }\n | { type: 'set_alpha'; alpha: number }\n | { type: 'set_lightness'; lightness: number }\n | { type: 'set_value_type'; valueType: ValueType }\n | { type: 'set_palette'; palette: chroma.Color[] }\n | { type: 'add_palette_color'; color: chroma.Color }\n\ntype ColorPickerProps = React.ComponentProps<'div'> &\n VariantProps<typeof colorPickerVariants> & {\n value?: string\n onValueChange?: (color: string) => void\n defaultColor?: string\n palette?: string[]\n defaultPalette?: string[]\n onPaletteChange?: (palette: string[]) => void\n paletteLimit?: number\n defaultValueType?: ValueTypeValue\n }\n\nconst colorPickerVariants = cva('flex flex-col space-y-sm', {\n defaultVariants: {\n variant: 'elevated',\n },\n variants: {\n variant: {\n elevated: 'rounded-xl bg-surface p-md shadow-2xs',\n ghost: '',\n outline: 'rounded-xl border border-border p-md',\n },\n },\n }),\n colorPickerSwatchVariants = cva(\n 'overflow-hidden border border-border hover:cursor-pointer focus:outline-2 focus:outline-offset-2',\n {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'size-lg rounded-lg',\n medium: 'size-md rounded-md',\n small: 'size-sm rounded-sm',\n },\n },\n },\n ),\n RGB_CHANNEL_COUNT = 3,\n DECIMAL_RADIX = 10,\n VALUE_TYPES: ValueType[] = [\n {\n getValue: (color: chroma.Color) => color.rgb(),\n label: 'RGB',\n parseValue: (value: string) => {\n const rgbChannels = value\n .split(',')\n .map((channelText) => parseInt(channelText.trim(), DECIMAL_RADIX))\n if (\n rgbChannels.length === RGB_CHANNEL_COUNT &&\n rgbChannels.every((channel) => !Number.isNaN(channel))\n ) {\n const [red, green, blue] = rgbChannels\n return chroma.rgb(red, green, blue)\n }\n return undefined\n },\n value: 'rgb',\n },\n {\n getValue: (color: chroma.Color) => color.css(),\n label: 'CSS',\n parseValue: (value: string) => {\n try {\n return chroma(value)\n } catch {\n return undefined\n }\n },\n value: 'css',\n },\n {\n getValue: (color: chroma.Color) => color.hex('rgb'),\n label: 'HEX',\n parseValue: (value: string) => {\n try {\n return chroma(value)\n } catch {\n return undefined\n }\n },\n value: 'hex',\n },\n {\n getValue: (color: chroma.Color) => color.hsl(),\n label: 'HSL',\n parseValue: (value: string) => {\n try {\n return chroma(value)\n } catch {\n return undefined\n }\n },\n value: 'hsl',\n },\n {\n getValue: (color: chroma.Color) => color.hsv(),\n label: 'HSV',\n parseValue: (value: string) => {\n try {\n return chroma(value)\n } catch {\n return undefined\n }\n },\n value: 'hsv',\n },\n ]\ninterface ValueType {\n label: string\n value: string\n getValue: (color: chroma.Color) => string | number[]\n parseValue: (value: string) => chroma.Color | undefined\n}\n\ntype ValueTypeValue = 'rgb' | 'css' | 'hex' | 'hsl' | 'hsv'\n\ntype ColorPickerInputProps = React.ComponentProps<typeof InputGroup> & {\n showPopover?: boolean\n showTransparencyField?: boolean\n}\ntype ColorPickerAreaProps = React.ComponentProps<'div'>\ntype ColorPickerHueSliderProps = Partial<React.ComponentProps<typeof ColorChannelSlider>>\ntype ColorPickerLightnessSliderProps = Partial<React.ComponentProps<typeof ColorChannelSlider>>\ntype ColorPickerTransparencySliderProps = Partial<React.ComponentProps<typeof ColorChannelSlider>>\ntype ColorPickerValueTypeProps = React.ComponentProps<typeof SelectTrigger>\ntype ColorPickerRowProps = React.ComponentProps<'div'>\ntype ColorPickerGroupProps = React.ComponentProps<'div'>\ntype ColorPickerLabelProps = React.ComponentProps<'span'>\ntype ColorPickerPaletteListChild = (props: { color: string; index: number }) => React.ReactNode\n\ntype ColorPickerPaletteListProps = React.ComponentProps<'div'>\ntype ColorPickerPaletteSwatchProps = Omit<React.ComponentProps<'button'>, 'color'> &\n VariantProps<typeof colorPickerSwatchVariants> & {\n color: string\n }\ntype ColorPickerPaletteAddProps = React.ComponentProps<'button'>\ntype ColorPickerPaletteLimitProps = React.ComponentProps<'span'>\n\nexport type {\n ColorPickerContextType,\n ColorPickerState,\n ColorPickerAction,\n ColorPickerProps,\n ValueType,\n ValueTypeValue,\n ColorPickerInputProps,\n ColorPickerAreaProps,\n ColorPickerHueSliderProps,\n ColorPickerLightnessSliderProps,\n ColorPickerTransparencySliderProps,\n ColorPickerValueTypeProps,\n ColorPickerRowProps,\n ColorPickerGroupProps,\n ColorPickerLabelProps,\n ColorPickerPaletteListChild,\n ColorPickerPaletteListProps,\n ColorPickerPaletteSwatchProps,\n ColorPickerPaletteAddProps,\n ColorPickerPaletteLimitProps,\n}\nexport { colorPickerVariants, colorPickerSwatchVariants, VALUE_TYPES }\n","import chroma from 'chroma-js'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { colorPickerVariants, VALUE_TYPES } from './color-picker.types'\nimport type {\n ColorPickerAction,\n ColorPickerContextType,\n ColorPickerProps,\n ColorPickerState,\n} from './color-picker.types'\n\nconst MIN_COLOR_CHANNEL = 0,\n FIRST_VALUE_TYPE_INDEX = 0,\n ColorPickerContext = React.createContext<ColorPickerContextType | undefined>(undefined),\n normalizeToColor = (value: string | chroma.Color, fallback: chroma.Color): chroma.Color => {\n try {\n if (typeof value === 'string') {\n return chroma(value.trim())\n }\n\n return chroma(value)\n } catch {\n return fallback\n }\n },\n getValidChannel = (channel: number | undefined, fallback: number): number => {\n if (channel === undefined || Number.isNaN(channel)) {\n return fallback\n }\n return channel\n },\n updateColorState = (\n { saturation: previousSaturation, ...state }: ColorPickerState,\n color: chroma.Color,\n ): ColorPickerState => {\n const [nextHue, nextSaturation, nextValue] = color.hsv()\n let saturation = previousSaturation\n if (nextValue !== MIN_COLOR_CHANNEL) {\n saturation = getValidChannel(nextSaturation, previousSaturation)\n }\n\n return {\n ...state,\n alpha: color.alpha(),\n hue: getValidChannel(nextHue, state.hue),\n saturation,\n value: nextValue,\n }\n },\n updateSimpleState = (state: ColorPickerState, action: ColorPickerAction): ColorPickerState => {\n switch (action.type) {\n case 'set_hue': {\n return { ...state, hue: action.hue }\n }\n case 'set_saturation': {\n return { ...state, saturation: action.saturation }\n }\n case 'set_value': {\n return { ...state, value: action.value }\n }\n case 'set_saturation_value': {\n return { ...state, saturation: action.saturation, value: action.value }\n }\n case 'set_alpha': {\n return { ...state, alpha: action.alpha }\n }\n case 'set_lightness': {\n return { ...state, value: action.lightness }\n }\n case 'set_value_type': {\n return { ...state, valueType: action.valueType }\n }\n default: {\n return state\n }\n }\n },\n colorPickerReducer = (state: ColorPickerState, action: ColorPickerAction): ColorPickerState => {\n switch (action.type) {\n case 'set_color': {\n return updateColorState(state, action.color)\n }\n case 'set_palette': {\n return { ...state, palette: action.palette }\n }\n case 'add_palette_color': {\n return { ...state, palette: [...state.palette, action.color] }\n }\n default: {\n return updateSimpleState(state, action)\n }\n }\n }\n\nfunction ColorPicker({\n variant,\n value: controlledValue,\n defaultColor,\n palette: controlledPalette,\n defaultPalette,\n onPaletteChange,\n paletteLimit,\n defaultValueType,\n onValueChange,\n className,\n ref,\n ...props\n}: ColorPickerProps) {\n const [state, dispatch] = React.useReducer(\n colorPickerReducer,\n { controlledPalette, controlledValue, defaultColor, defaultPalette, defaultValueType },\n ({\n controlledValue: initialControlledValue,\n controlledPalette: initialControlledPalette,\n defaultColor: initialDefaultColor,\n defaultPalette: initialDefaultPalette,\n defaultValueType: initialDefaultValueType,\n }): ColorPickerState => {\n const initialColor = normalizeToColor(\n initialControlledValue ?? initialDefaultColor ?? '#ffffff',\n chroma('#ffffff'),\n ),\n [initialHue, initialSaturation, initialValue] = initialColor.hsv()\n\n return {\n alpha: initialColor.alpha(),\n hue: getValidChannel(initialHue, MIN_COLOR_CHANNEL),\n palette: (initialControlledPalette ?? initialDefaultPalette ?? []).map((colorOption) =>\n chroma(colorOption),\n ),\n saturation: getValidChannel(initialSaturation, MIN_COLOR_CHANNEL),\n value: initialValue,\n valueType:\n VALUE_TYPES.find((typeOption) => typeOption.value === initialDefaultValueType) ??\n VALUE_TYPES[FIRST_VALUE_TYPE_INDEX],\n }\n },\n ),\n {\n hue: internalHue,\n saturation: internalSaturation,\n value: internalValue,\n alpha: internalAlpha,\n valueType,\n palette,\n } = state,\n color = chroma.hsv(internalHue, internalSaturation, internalValue).alpha(internalAlpha),\n hue = internalHue,\n saturation = internalSaturation,\n value = internalValue,\n alpha = internalAlpha,\n lastSyncedColorRef = React.useRef<string | undefined>(undefined),\n lastSyncedPaletteRef = React.useRef<string | undefined>(undefined),\n setColor = (nextColor: chroma.Color) => {\n dispatch({ color: nextColor, type: 'set_color' })\n onValueChange?.(nextColor.hex())\n },\n setHue = (nextHue: number) => {\n dispatch({ hue: nextHue, type: 'set_hue' })\n onValueChange?.(chroma.hsv(nextHue, saturation, value).alpha(alpha).hex())\n },\n setSaturation = (nextSaturation: number) => {\n dispatch({ saturation: nextSaturation, type: 'set_saturation' })\n onValueChange?.(chroma.hsv(hue, nextSaturation, value).alpha(alpha).hex())\n },\n setValue = (nextValue: number) => {\n dispatch({ type: 'set_value', value: nextValue })\n onValueChange?.(chroma.hsv(hue, saturation, nextValue).alpha(alpha).hex())\n },\n setSaturationValue = (nextSaturation: number, nextValue: number) => {\n dispatch({ saturation: nextSaturation, type: 'set_saturation_value', value: nextValue })\n onValueChange?.(chroma.hsv(hue, nextSaturation, nextValue).alpha(alpha).hex())\n },\n setAlpha = (nextAlpha: number) => setColor(color.alpha(nextAlpha)),\n setLightness = (nextLightness: number) => setColor(color.set('hsl.l', nextLightness)),\n setValueType = (nextValueType: ColorPickerState['valueType']) =>\n dispatch({ type: 'set_value_type', valueType: nextValueType }),\n setPalette = (nextPalette: chroma.Color[]) => {\n lastSyncedPaletteRef.current = nextPalette\n .map((paletteColor) => paletteColor.hex('rgba'))\n .join('|')\n dispatch({ palette: nextPalette, type: 'set_palette' })\n onPaletteChange?.(nextPalette.map((paletteColor) => paletteColor.hex()))\n },\n addPaletteColor = (nextColor: chroma.Color) => {\n if (paletteLimit && palette.length >= paletteLimit) {\n return\n }\n\n const nextPalette = [...palette, nextColor]\n lastSyncedPaletteRef.current = nextPalette\n .map((paletteColor) => paletteColor.hex('rgba'))\n .join('|')\n dispatch({ color: nextColor, type: 'add_palette_color' })\n onPaletteChange?.(nextPalette.map((paletteColor) => paletteColor.hex()))\n }\n\n React.useEffect(() => {\n if (controlledValue === undefined) {\n return\n }\n\n const nextColor = normalizeToColor(controlledValue, color),\n nextKey = nextColor.hex('rgba')\n\n if (nextKey === lastSyncedColorRef.current) {\n return\n }\n\n lastSyncedColorRef.current = nextKey\n\n if (nextKey !== color.hex('rgba')) {\n dispatch({ color: nextColor, type: 'set_color' })\n }\n }, [controlledValue, color])\n\n React.useEffect(() => {\n if (controlledPalette === undefined) {\n return\n }\n\n const parsedPalette = controlledPalette.map((colorOption) => chroma(colorOption)),\n nextKey = parsedPalette.map((paletteColor) => paletteColor.hex('rgba')).join('|')\n\n if (nextKey === lastSyncedPaletteRef.current) {\n return\n }\n\n lastSyncedPaletteRef.current = nextKey\n dispatch({ palette: parsedPalette, type: 'set_palette' })\n }, [controlledPalette])\n\n return (\n <ColorPickerContext.Provider\n value={{\n addPaletteColor,\n alpha,\n color,\n hue,\n palette,\n paletteLimit,\n saturation,\n setAlpha,\n setColor,\n setHue,\n setLightness,\n setPalette,\n setSaturation,\n setSaturationValue,\n setValue,\n setValueType,\n value,\n valueType,\n }}\n >\n <div className={cn(colorPickerVariants({ variant }), className)} ref={ref} {...props} />\n </ColorPickerContext.Provider>\n )\n}\n\nfunction useColorPicker() {\n const context = React.useContext(ColorPickerContext)\n\n if (!context) {\n throw new Error('useColorPicker must be used within a ColorPicker')\n }\n\n return context\n}\n\nexport { ColorPicker, useColorPicker }\n","import chroma from 'chroma-js'\n\nimport { cn } from '@/utils/cn'\n\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerAreaProps } from './color-picker.types'\n\nconst PERCENTAGE_SCALE = 100,\n MIN_NORMALIZED_VALUE = 0,\n MAX_NORMALIZED_VALUE = 1\n\nexport function ColorPickerArea({ className, ref, ...props }: ColorPickerAreaProps) {\n const { color, hue, saturation, value, setSaturationValue } = useColorPicker(),\n hueColor = chroma.hsv(hue, MAX_NORMALIZED_VALUE, MAX_NORMALIZED_VALUE).hex(),\n updateColor = (event: React.PointerEvent<HTMLDivElement>) => {\n const bounds = event.currentTarget.getBoundingClientRect(),\n nextSaturation = Math.min(\n Math.max((event.clientX - bounds.left) / bounds.width, MIN_NORMALIZED_VALUE),\n MAX_NORMALIZED_VALUE,\n ),\n nextValue = Math.min(\n Math.max(\n MAX_NORMALIZED_VALUE - (event.clientY - bounds.top) / bounds.height,\n MIN_NORMALIZED_VALUE,\n ),\n MAX_NORMALIZED_VALUE,\n )\n\n setSaturationValue(nextSaturation, nextValue)\n },\n handlePointerDown = (event: React.PointerEvent<HTMLDivElement>) => {\n event.currentTarget.setPointerCapture(event.pointerId)\n updateColor(event)\n }\n\n return (\n <div\n {...props}\n ref={ref}\n className={cn(\n 'relative aspect-square grow touch-none rounded-lg active:cursor-grabbing',\n className,\n )}\n style={{\n background: `\n linear-gradient(to top, black, transparent),\n linear-gradient(to right, white, ${hueColor})\n `,\n ...props.style,\n }}\n onPointerDown={handlePointerDown}\n onPointerMove={(event) => {\n if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n updateColor(event)\n }\n }}\n >\n <div\n className=\"pointer-events-none absolute size-md -translate-x-1/2 -translate-y-1/2 rounded-full border-3 border-white\"\n style={{\n backgroundColor: color.hex(),\n left: `${saturation * PERCENTAGE_SCALE}%`,\n top: `${(MAX_NORMALIZED_VALUE - value) * PERCENTAGE_SCALE}%`,\n }}\n />\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ColorPickerGroupProps } from './color-picker.types'\n\nexport function ColorPickerGroup({ className, ref, ...props }: ColorPickerGroupProps) {\n return <div className={cn('flex flex-col gap-sm', className)} ref={ref} {...props} />\n}\n","import chroma from 'chroma-js'\n\nconst HSL_SATURATION = 1,\n HSL_LIGHTNESS = 0.5,\n HUE_TRACK_LENGTH = 361,\n SATURATION_TRACK_LENGTH = 101,\n LIGHTNESS_TRACK_LENGTH = 101,\n TRANSPARENCY_TRACK_LENGTH = 101,\n TRACK_DIVISIONS = 100,\n getHueTrack = () =>\n Array.from({ length: HUE_TRACK_LENGTH }, (_value, hue) =>\n chroma.hsl(hue, HSL_SATURATION, HSL_LIGHTNESS).hex(),\n ),\n getTransparencyTrack = (baseColor: string) =>\n Array.from({ length: TRANSPARENCY_TRACK_LENGTH }, (_value, index) =>\n chroma(baseColor)\n .alpha(index / TRACK_DIVISIONS)\n .css(),\n ),\n getSaturationTrack = (baseColor: string) =>\n Array.from({ length: SATURATION_TRACK_LENGTH }, (_value, index) =>\n chroma(baseColor)\n .set('hsl.s', index / TRACK_DIVISIONS)\n .css(),\n ),\n getLightnessTrack = (baseColor: string) =>\n Array.from({ length: LIGHTNESS_TRACK_LENGTH }, (_value, index) =>\n chroma(baseColor)\n .set('hsl.l', index / TRACK_DIVISIONS)\n .css(),\n )\n\nexport { getHueTrack, getTransparencyTrack, getSaturationTrack, getLightnessTrack }\n","import { cn } from '@/utils/cn'\n\nimport { ColorChannelSlider } from '../color-channel-slider'\nimport { getHueTrack } from '../color-channel-slider/color-channel-slider.utils'\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerHueSliderProps } from './color-picker.types'\n\nconst HUE_VALUE_INDEX = 0\n\nexport function ColorPickerHueSlider({ className, ref, ...props }: ColorPickerHueSliderProps) {\n const { hue, setHue } = useColorPicker(),\n handleChange = (value: number | readonly number[]) => {\n if (typeof value === 'number') {\n setHue(value)\n return\n }\n\n setHue(value[HUE_VALUE_INDEX])\n }\n\n return (\n <ColorChannelSlider\n aria-label=\"Hue\"\n {...props}\n min={0}\n max={360}\n value={hue}\n onValueChange={handleChange}\n trackStyle={getHueTrack()}\n className={cn('', className)}\n ref={ref}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { inputVariants } from '../input/input.types'\nimport type { InputGroupProps } from './input-group.types'\n\nexport function InputGroup({ variant, size, className, ref, ...props }: InputGroupProps) {\n return <div className={cn(inputVariants({ size, variant }), className)} ref={ref} {...props} />\n}\n","import type { Input as BaseInput } from '@base-ui/react/input'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { inputVariants } from '../input/input.types'\nimport type { Separator } from '../separator'\n\nconst inputGroupAddonVariants = cva(\n 'inline-flex items-center gap-2xs text-on-surface-variant not-first:pl-2xs group-aria-invalid:text-error-on-container',\n {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'style-text-default-1 [&>svg]:size-md',\n medium: 'style-text-default-0 [&>svg]:size-sm',\n small: 'style-text-default--1 [&>svg]:size-xs',\n },\n },\n },\n)\n\ntype InputGroupAddonProps = React.ComponentProps<'div'> &\n VariantProps<typeof inputGroupAddonVariants>\ntype InputGroupInputProps = Omit<React.ComponentProps<typeof BaseInput>, 'size'> &\n VariantProps<typeof inputVariants>\ntype InputGroupProps = React.ComponentProps<'div'> & VariantProps<typeof inputVariants>\ntype InputGroupSeparatorProps = React.ComponentProps<typeof Separator>\n\nexport type {\n InputGroupAddonProps,\n InputGroupInputProps,\n InputGroupProps,\n InputGroupSeparatorProps,\n}\nexport { inputGroupAddonVariants }\n","import { cn } from '@/utils/cn'\n\nimport { inputGroupAddonVariants } from './input-group.types'\nimport type { InputGroupAddonProps } from './input-group.types'\n\nexport function InputGroupAddon({ size, className, ref, ...props }: InputGroupAddonProps) {\n return <div className={cn(inputGroupAddonVariants({ size }), className)} ref={ref} {...props} />\n}\n","import { Input as BaseInput } from '@base-ui/react/input'\nimport { useRef, useState } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { InputGroupInputProps } from './input-group.types'\n\nconst DEFAULT_COLOR = '#000000'\n\nfunction getStringValue(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value\n }\n return undefined\n}\n\nfunction getColorValue(\n isControlled: boolean,\n controlledValue: unknown,\n uncontrolledValue: string,\n): string {\n if (isControlled) {\n return getStringValue(controlledValue) || DEFAULT_COLOR\n }\n return uncontrolledValue || DEFAULT_COLOR\n}\n\nfunction getColorInputProps(isControlled: boolean, colorValue: string) {\n if (isControlled) {\n return { value: colorValue }\n }\n return { defaultValue: colorValue }\n}\n\nexport function InputGroupInput({\n size = 'medium',\n className,\n ref,\n ...props\n}: InputGroupInputProps) {\n const inputRef = useRef<HTMLInputElement>(null),\n [uncontrolledColorValue, setUncontrolledColorValue] = useState<string>(\n getStringValue(props.defaultValue) || getStringValue(props.value) || DEFAULT_COLOR,\n )\n\n if (props.type === 'color') {\n const isControlled = props.value !== undefined,\n colorValue = getColorValue(isControlled, props.value, uncontrolledColorValue),\n { onChange, defaultValue: _defaultValue, value: _value, ...colorProps } = props,\n handleColorChange: NonNullable<typeof onChange> = (event) => {\n if (!isControlled) {\n setUncontrolledColorValue(event.currentTarget.value)\n }\n\n onChange?.(event)\n },\n handleColorRef = (node: HTMLInputElement | null) => {\n inputRef.current = node\n\n if (typeof ref === 'function') {\n ref(node)\n return\n }\n\n if (ref && typeof ref === 'object') {\n Object.assign(ref, { current: node })\n }\n }\n\n return (\n <button\n aria-label={`${colorValue}, open color picker`}\n className={cn(\n 'relative flex size-full items-center justify-start hover:cursor-pointer',\n className,\n )}\n disabled={props.disabled}\n onClick={() => inputRef.current?.click()}\n type=\"button\"\n >\n <div\n className={cn(\n 'absolute top-1/2 left-0 aspect-square h-7/12 -translate-y-1/2',\n size === 'small' && 'rounded-md',\n size === 'medium' && 'rounded-lg',\n size === 'large' && 'rounded-xl',\n )}\n style={{\n backgroundColor: colorValue,\n }}\n />\n <BaseInput\n className=\"peer pointer-events-none invisible absolute top-lg\"\n {...getColorInputProps(isControlled, colorValue)}\n onChange={handleColorChange}\n ref={handleColorRef}\n type=\"color\"\n {...colorProps}\n />\n <p\n className={cn(\n 'text-left',\n size === 'small' && 'pr-xs pl-lg style-text-default--1',\n size === 'medium' && 'pl-[calc(var(--ixia-spacing-lg)+6px)] style-text-default-0',\n size === 'large' && 'pl-2xl style-text-default-1',\n )}\n >\n {colorValue}\n </p>\n </button>\n )\n }\n\n return (\n <BaseInput\n className={cn(\n 'w-full grow text-ellipsis outline-none placeholder:opacity-60 disabled:cursor-not-allowed',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { Separator as BaseSeparator } from '@base-ui/react/separator'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const separatorVariants = cva('relative shrink-0 rounded-full', {\n compoundVariants: [\n {\n className: 'h-[8px]',\n orientation: 'horizontal',\n weight: 'thick',\n },\n {\n className: 'h-[4px]',\n orientation: 'horizontal',\n weight: 'medium',\n },\n {\n className: 'h-[2px]',\n orientation: 'horizontal',\n weight: 'thin',\n },\n {\n className: 'h-px',\n orientation: 'horizontal',\n weight: 'thinnest',\n },\n {\n className: 'w-[8px]',\n orientation: 'vertical',\n weight: 'thick',\n },\n {\n className: 'w-[4px]',\n orientation: 'vertical',\n weight: 'medium',\n },\n {\n className: 'w-[2px]',\n orientation: 'vertical',\n weight: 'thin',\n },\n {\n className: 'w-px',\n orientation: 'vertical',\n weight: 'thinnest',\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n style: 'rounded',\n variant: 'default',\n weight: 'thinnest',\n },\n variants: {\n orientation: {\n horizontal: 'w-full',\n vertical: 'h-full',\n },\n style: {\n rounded: 'rounded-full',\n square: 'rounded-none',\n },\n variant: {\n default: 'bg-neutral-border',\n strong: 'bg-neutral-border-strong',\n },\n weight: {\n medium: '[&_[data-label]]:style-text-prose--1',\n thick: '[&_[data-label]]:style-text-prose-0',\n thin: '[&_[data-label]]:style-text-prose--2',\n thinnest: '[&_[data-label]]:style-text-prose--2',\n },\n },\n})\n\nexport type SeparatorProps = Omit<React.ComponentProps<typeof BaseSeparator>, 'style'> &\n VariantProps<typeof separatorVariants> & {\n labelClassName?: string\n }\n","import { Separator as BaseSeparator } from '@base-ui/react/separator'\n\nimport { cn } from '@/utils/cn'\n\nimport { separatorVariants } from './separator.types'\nimport type { SeparatorProps } from './separator.types'\n\nexport function Separator({\n orientation,\n weight,\n style,\n variant,\n children,\n className,\n labelClassName,\n ref,\n ...props\n}: SeparatorProps) {\n return (\n <BaseSeparator\n className={cn(\n 'relative',\n separatorVariants({ orientation, style, variant, weight }),\n className,\n )}\n orientation={orientation}\n ref={ref}\n {...props}\n >\n <span\n data-label\n className={cn(\n 'absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-surface-background px-2xs whitespace-nowrap text-on-surface-variant',\n labelClassName,\n )}\n >\n {children}\n </span>\n </BaseSeparator>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Separator } from '../separator'\nimport type { InputGroupSeparatorProps } from './input-group.types'\n\nexport function InputGroupSeparator({ className, ref, ...props }: InputGroupSeparatorProps) {\n return <Separator className={cn('h-2/4', className)} ref={ref} {...props} />\n}\n","import { InputGroup as InputGroupRoot } from './input-group'\nimport { InputGroupAddon } from './input-group-addon'\nimport { InputGroupInput } from './input-group-input'\nimport { InputGroupSeparator } from './input-group-separator'\n\nconst InputGroup = Object.assign(InputGroupRoot, {\n Addon: InputGroupAddon,\n Input: InputGroupInput,\n Separator: InputGroupSeparator,\n})\n\nexport type {\n InputGroupAddonProps,\n InputGroupInputProps,\n InputGroupProps,\n InputGroupSeparatorProps,\n} from './input-group.types'\nexport { InputGroupAddon } from './input-group-addon'\nexport { InputGroupInput } from './input-group-input'\nexport { InputGroupSeparator } from './input-group-separator'\n\nexport { InputGroup }\n","import { Popover as BasePopover } from '@base-ui/react/popover'\n\nimport type { PopoverProps } from './popover.types'\n\nexport function Popover({ ...props }: PopoverProps) {\n return <BasePopover.Root {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { PopoverButtonProps } from './popover.types'\n\nexport function PopoverButton({\n variant,\n tone,\n className,\n children,\n ref,\n ...props\n}: PopoverButtonProps) {\n if (variant === 'ghost' && tone === 'neutral') {\n return (\n <Button\n variant={variant}\n tone={tone}\n className={cn('hover:bg-neutral-container-high!', className)}\n ref={ref}\n {...props}\n >\n {children}\n </Button>\n )\n }\n\n return (\n <Button variant={variant} tone={tone} className={cn('', className)} ref={ref} {...props}>\n {children}\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { PopoverContentProps } from './popover.types'\n\nexport function PopoverContent({ className, ref, ...props }: PopoverContentProps) {\n return <div className={cn('space-y-3xs', className)} ref={ref} {...props} />\n}\n","import { Popover as BasePopover } from '@base-ui/react/popover'\n\nimport { cn } from '@/utils/cn'\n\nimport type { PopoverDescriptionProps } from './popover.types'\n\nexport function PopoverDescription({ className, ref, ...props }: PopoverDescriptionProps) {\n return (\n <BasePopover.Description\n className={cn('style-text-prose--1', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { PopoverHeaderProps } from './popover.types'\n\nexport function PopoverHeader({ className, ref, ...props }: PopoverHeaderProps) {\n return <div className={cn('flex flex-col pb-xs', className)} ref={ref} {...props} />\n}\n","import { Popover as BasePopover } from '@base-ui/react/popover'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { Button } from '..'\n\nconst popoverPanelVariants = cva(\n 'relative z-99 h-(--popup-height,auto) w-(--popup-width,auto) origin-(--transform-origin) overflow-hidden rounded-2xl text-on-surface transition-[width,height,opacity,scale] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-ending-style:scale-90 data-ending-style:opacity-0 data-instant:transition-none data-starting-style:scale-90 data-starting-style:opacity-0',\n {\n defaultVariants: {\n elevation: 'medium',\n },\n variants: {\n elevation: {\n high: 'bg-surface-3 shadow-lg',\n low: 'bg-surface shadow-sm',\n medium: 'bg-surface-2 shadow-md',\n },\n },\n },\n ),\n popoverHandle = BasePopover.createHandle<React.ComponentType>()\n\ntype PopoverProps = React.ComponentProps<typeof BasePopover.Root>\ntype PopoverTriggerProps = React.ComponentProps<typeof BasePopover.Trigger>\ntype PopoverPanelProps = React.ComponentProps<typeof BasePopover.Positioner> &\n VariantProps<typeof popoverPanelVariants>\ntype PopoverTitleProps = React.ComponentProps<typeof BasePopover.Title>\ntype PopoverDescriptionProps = React.ComponentProps<typeof BasePopover.Description>\ntype PopoverHeaderProps = React.ComponentProps<'div'>\ntype PopoverContentProps = React.ComponentProps<'div'>\ntype PopoverButtonProps = React.ComponentProps<typeof Button>\n\nexport type {\n PopoverProps,\n PopoverTriggerProps,\n PopoverPanelProps,\n PopoverTitleProps,\n PopoverDescriptionProps,\n PopoverHeaderProps,\n PopoverContentProps,\n PopoverButtonProps,\n}\nexport { popoverHandle, popoverPanelVariants }\n","import { Popover as BasePopover } from '@base-ui/react/popover'\n\nimport { cn } from '../../utils/cn'\nimport { popoverPanelVariants } from './popover.types'\nimport type { PopoverPanelProps } from './popover.types'\n\nexport function PopoverPanel({ elevation, className, ref, children, ...props }: PopoverPanelProps) {\n return (\n <BasePopover.Portal>\n <BasePopover.Positioner\n className={cn(\n 'h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom,transform] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none',\n )}\n ref={ref}\n sideOffset={8}\n {...props}\n >\n <BasePopover.Popup className={popoverPanelVariants({ className, elevation })}>\n <BasePopover.Arrow className=\"flex transition-[left] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:top-[-8px] data-[side=left]:right-[-13px] data-[side=left]:rotate-90 data-[side=right]:left-[-13px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-8px] data-[side=top]:rotate-180\" />\n <BasePopover.Viewport\n className={cn(\n \"relative h-(--popup-height,auto) w-(--popup-width,auto) max-w-full overflow-clip p-[1rem] transition-[width,height] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] **:data-current:w-[calc(var(--popup-width)-2rem)] **:data-current:translate-x-0 **:data-current:opacity-100 **:data-current:transition-[translate,opacity] **:data-current:duration-[350ms,175ms] **:data-current:ease-[cubic-bezier(0.22,1,0.36,1)] **:data-previous:w-[calc(var(--popup-width)-2rem)] **:data-previous:translate-x-0 **:data-previous:opacity-100 **:data-previous:transition-[translate,opacity] **:data-previous:duration-[350ms,175ms] **:data-previous:ease-[cubic-bezier(0.22,1,0.36,1)] **:data-[activation-direction~='left']:data-previous:data-ending-style:translate-x-1/2 **:data-[activation-direction~='left']:data-previous:data-ending-style:opacity-0 **:data-[activation-direction~='left']:data-current:data-starting-style:-translate-x-1/2 **:data-[activation-direction~='left']:data-current:data-starting-style:opacity-0 **:data-[activation-direction~='right']:data-previous:data-ending-style:-translate-x-1/2 **:data-[activation-direction~='right']:data-previous:data-ending-style:opacity-0 **:data-[activation-direction~='right']:data-current:data-starting-style:translate-x-1/2 **:data-[activation-direction~='right']:data-current:data-starting-style:opacity-0\",\n className,\n )}\n >\n {children}\n </BasePopover.Viewport>\n </BasePopover.Popup>\n </BasePopover.Positioner>\n </BasePopover.Portal>\n )\n}\n","import { Popover as BasePopover } from '@base-ui/react/popover'\n\nimport { cn } from '@/utils/cn'\n\nimport type { PopoverTitleProps } from './popover.types'\n\nexport function PopoverTitle({ className, ref, ...props }: PopoverTitleProps) {\n return (\n <BasePopover.Title\n className={cn('flex items-center gap-2xs style-text-strong-0 [&>svg]:size-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Popover as BasePopover } from '@base-ui/react/popover'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { PopoverTriggerProps } from './popover.types'\n\nexport function PopoverTrigger({ className, children, ref, ...props }: PopoverTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return (\n <BasePopover.Trigger className={cn('px-xs', className)} ref={ref} render={render} {...props} />\n )\n}\n","import { Popover as PopoverRoot } from './popover'\nimport { PopoverButton } from './popover-button'\nimport { PopoverContent } from './popover-content'\nimport { PopoverDescription } from './popover-description'\nimport { PopoverHeader } from './popover-header'\nimport { PopoverPanel } from './popover-panel'\nimport { PopoverTitle } from './popover-title'\nimport { PopoverTrigger } from './popover-trigger'\n\nconst Popover = Object.assign(PopoverRoot, {\n Button: PopoverButton,\n Content: PopoverContent,\n Description: PopoverDescription,\n Header: PopoverHeader,\n Panel: PopoverPanel,\n Title: PopoverTitle,\n Trigger: PopoverTrigger,\n})\n\nexport type {\n PopoverButtonProps,\n PopoverContentProps,\n PopoverDescriptionProps,\n PopoverHeaderProps,\n PopoverPanelProps,\n PopoverProps,\n PopoverTitleProps,\n PopoverTriggerProps,\n} from './popover.types'\nexport { PopoverButton } from './popover-button'\nexport { PopoverDescription } from './popover-description'\nexport { PopoverPanel } from './popover-panel'\nexport { PopoverTitle } from './popover-title'\nexport { PopoverTrigger } from './popover-trigger'\nexport { PopoverHeader } from './popover-header'\nexport { PopoverContent } from './popover-content'\nexport { popoverHandle } from './popover.types'\n\nexport { Popover }\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport { InputGroup, InputGroupAddon, InputGroupInput } from '../input-group'\nimport { Popover, PopoverTrigger, PopoverContent, PopoverPanel } from '../popover'\nimport { Separator } from '../separator'\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerInputProps } from './color-picker.types'\n\nconst TRANSPARENCY_MULTIPLIER = 100\n\nexport function ColorPickerInput({\n showPopover = false,\n showTransparencyField = true,\n className,\n children,\n ref,\n ...props\n}: ColorPickerInputProps) {\n const { color, setColor, valueType } = useColorPicker(),\n [inputValue, setInputValue] = React.useState<string>(String(valueType.getValue(color))),\n [transparency, setTransparency] = React.useState<string>(\n Math.round(color.alpha() * TRANSPARENCY_MULTIPLIER).toString(),\n ),\n [prevColor, setPrevColor] = React.useState(color),\n [prevValueType, setPrevValueType] = React.useState(valueType),\n handleValueChange = (value: string) => {\n setInputValue(value)\n },\n handleTransparencyChange = (value: string) => {\n setTransparency(value)\n },\n handleValueBlur = () => {\n const newColor = valueType.parseValue(inputValue)\n if (newColor) {\n setColor(newColor)\n }\n },\n handleTransparencyBlur = () => {\n const alpha = parseFloat(transparency)\n if (!Number.isNaN(alpha)) {\n setColor(color.alpha(alpha / TRANSPARENCY_MULTIPLIER))\n }\n },\n handleValueKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n handleValueBlur()\n }\n },\n handleTransparencyKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n handleTransparencyBlur()\n }\n }\n\n if (color !== prevColor || valueType !== prevValueType) {\n setPrevColor(color)\n setPrevValueType(valueType)\n setInputValue(String(valueType.getValue(color)))\n setTransparency(Math.round(color.alpha() * TRANSPARENCY_MULTIPLIER).toString())\n }\n\n return (\n <InputGroup variant=\"secondary\" className={cn('', className)} ref={ref} {...props}>\n {showPopover && (\n <Popover>\n <PopoverTrigger aria-label=\"Open color picker\" nativeButton={false}>\n <InputGroupAddon\n style={{\n backgroundColor: color.hex(),\n }}\n className=\"aspect-square h-1/2 rounded-lg hover:cursor-pointer\"\n />\n </PopoverTrigger>\n <PopoverPanel>\n <PopoverContent className=\"flex w-[300px] flex-col gap-sm\">{children}</PopoverContent>\n </PopoverPanel>\n </Popover>\n )}\n {!showPopover && (\n <InputGroupAddon\n style={{\n backgroundColor: color.hex(),\n }}\n className=\"aspect-square size-md rounded-md\"\n />\n )}\n <InputGroupInput\n aria-label=\"Color value\"\n onBlur={handleValueBlur}\n onKeyDown={handleValueKeyDown}\n onValueChange={handleValueChange}\n value={inputValue}\n className=\"uppercase\"\n />\n {showTransparencyField && (\n <>\n <Separator orientation=\"vertical\" className=\"h-md\" />\n <InputGroupAddon>\n <Icon name=\"percent\" />\n </InputGroupAddon>\n <InputGroupInput\n aria-label=\"Transparency percentage\"\n type=\"number\"\n min={0}\n max={100}\n value={transparency}\n onValueChange={handleTransparencyChange}\n onBlur={handleTransparencyBlur}\n onKeyDown={handleTransparencyKeyDown}\n className=\"w-xl\"\n />\n </>\n )}\n </InputGroup>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ColorPickerLabelProps } from './color-picker.types'\n\nexport function ColorPickerLabel({ className, ref, ...props }: ColorPickerLabelProps) {\n return <span className={cn('style-text-default-0', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { ColorChannelSlider } from '../color-channel-slider'\nimport { getLightnessTrack } from '../color-channel-slider/color-channel-slider.utils'\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerLightnessSliderProps } from './color-picker.types'\n\nconst MIN_LIGHTNESS = 0,\n MAX_LIGHTNESS = 100,\n LIGHTNESS_SCALE = 100,\n FIRST_VALUE_INDEX = 0\n\nfunction getSliderValue(value: number | readonly number[]): number {\n if (typeof value === 'number') {\n return value\n }\n return value[FIRST_VALUE_INDEX]\n}\n\nexport function ColorPickerLightnessSlider({\n className,\n ref,\n ...props\n}: ColorPickerLightnessSliderProps) {\n const { color, setColor } = useColorPicker(),\n hslLightness = color.get('hsl.l'),\n lightness = hslLightness || MIN_LIGHTNESS,\n handleChange = (value: number | readonly number[]) => {\n setColor(color.set('hsl.l', getSliderValue(value) / LIGHTNESS_SCALE))\n }\n\n return (\n <ColorChannelSlider\n aria-label=\"Lightness\"\n {...props}\n min={MIN_LIGHTNESS}\n max={MAX_LIGHTNESS}\n value={lightness * LIGHTNESS_SCALE}\n onValueChange={handleChange}\n trackStyle={getLightnessTrack(color.hex())}\n className={cn('', className)}\n ref={ref}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerPaletteAddProps } from './color-picker.types'\n\nexport function ColorPickerPaletteAdd({\n className,\n children,\n ref,\n ...props\n}: ColorPickerPaletteAddProps) {\n const { color, addPaletteColor } = useColorPicker(),\n handleClick = () => {\n addPaletteColor(color)\n }\n\n return (\n <button\n type=\"button\"\n aria-label=\"Add current color to palette\"\n onClick={handleClick}\n className={cn(\n 'flex size-md items-center justify-center rounded-lg border border-border-strong text-border-strong hover:cursor-pointer [&>svg]:size-xs',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children ?? <Icon name=\"add\" />}\n </button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerPaletteLimitProps } from './color-picker.types'\n\nexport function ColorPickerPaletteLimit({\n className,\n children,\n ref,\n ...props\n}: ColorPickerPaletteLimitProps) {\n const { palette, paletteLimit } = useColorPicker(),\n isAtLimit = paletteLimit && palette.length >= paletteLimit\n\n return (\n Boolean(paletteLimit) && (\n <span\n className={cn(\n 'style-text-prose--2 text-on-surface-variant',\n isAtLimit && 'text-error-default',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n {palette.length} / {paletteLimit}\n </span>\n )\n )\n}\n","import chroma from 'chroma-js'\n\nimport { cn } from '@/utils/cn'\n\nimport { useColorPicker } from './color-picker'\nimport { colorPickerSwatchVariants } from './color-picker.types'\nimport type { ColorPickerPaletteSwatchProps } from './color-picker.types'\n\nexport function ColorPickerPaletteSwatch({\n size,\n color,\n className,\n children,\n ref,\n ...props\n}: ColorPickerPaletteSwatchProps) {\n const { setColor } = useColorPicker(),\n handleClick = () => {\n setColor(chroma(color))\n }\n\n return (\n <button\n type=\"button\"\n aria-label={`Select color ${color}`}\n onClick={handleClick}\n className={cn(colorPickerSwatchVariants({ size }), className)}\n ref={ref}\n style={{\n color,\n }}\n {...props}\n >\n {children}\n <div className=\"size-full\" style={{ backgroundColor: color }} />\n </button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useColorPicker } from './color-picker'\nimport { ColorPickerPaletteSwatch } from './color-picker-palette-swatch'\nimport type { ColorPickerPaletteListProps } from './color-picker.types'\n\nconst DEFAULT_OCCURRENCE = 0,\n OCCURRENCE_INCREMENT = 1\n\nexport function ColorPickerPaletteList({\n className,\n children,\n ref,\n ...props\n}: ColorPickerPaletteListProps) {\n const { palette } = useColorPicker(),\n occurrences = new Map<string, number>()\n\n return (\n <div\n className={cn('flex flex-wrap items-center justify-start gap-2xs', className)}\n ref={ref}\n {...props}\n >\n {palette.map((color) => {\n const value = color.hex('rgba'),\n occurrence = occurrences.get(value) ?? DEFAULT_OCCURRENCE\n occurrences.set(value, occurrence + OCCURRENCE_INCREMENT)\n\n return (\n <ColorPickerPaletteSwatch\n key={`${value}-${occurrence}`}\n color={color.css()}\n size=\"medium\"\n />\n )\n })}\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ColorPickerRowProps } from './color-picker.types'\n\nexport function ColorPickerRow({ className, ref, ...props }: ColorPickerRowProps) {\n return (\n <div\n className={cn('flex items-center justify-between gap-xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { ColorChannelSlider } from '../color-channel-slider'\nimport { getTransparencyTrack } from '../color-channel-slider/color-channel-slider.utils'\nimport { useColorPicker } from './color-picker'\nimport type { ColorPickerTransparencySliderProps } from './color-picker.types'\n\nconst FIRST_VALUE_INDEX = 0,\n ALPHA_PERCENTAGE_SCALE = 100\n\nfunction getSliderValue(value: number | readonly number[]): number {\n if (typeof value === 'number') {\n return value\n }\n return value[FIRST_VALUE_INDEX]\n}\n\nexport function ColorPickerTransparencySlider({\n className,\n ref,\n ...props\n}: ColorPickerTransparencySliderProps) {\n const { color, setColor } = useColorPicker(),\n alpha = color.alpha(),\n handleChange = (value: number | readonly number[]) => {\n const nextAlpha = getSliderValue(value)\n setColor(color.alpha(nextAlpha / ALPHA_PERCENTAGE_SCALE))\n }\n\n return (\n <ColorChannelSlider\n aria-label=\"Transparency\"\n {...props}\n min={0}\n max={ALPHA_PERCENTAGE_SCALE}\n value={alpha * ALPHA_PERCENTAGE_SCALE}\n onValueChange={handleChange}\n trackStyle={getTransparencyTrack(color.hex())}\n className={cn('', className)}\n ref={ref}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport {\n Select,\n SelectIcon,\n SelectItem,\n SelectList,\n SelectPopup,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport { useColorPicker } from './color-picker'\nimport { VALUE_TYPES } from './color-picker.types'\nimport type { ColorPickerValueTypeProps } from './color-picker.types'\n\nconst [defaultValueType] = VALUE_TYPES\n\nexport function ColorPickerValueType({\n className,\n children,\n ref,\n ...props\n}: ColorPickerValueTypeProps) {\n const { valueType, setValueType } = useColorPicker(),\n handleChange = (value: unknown) => {\n setValueType(VALUE_TYPES.find((type) => type.value === value) ?? defaultValueType)\n }\n\n return (\n <Select value={valueType.value} onValueChange={handleChange}>\n <SelectTrigger\n aria-label=\"Color value format\"\n variant=\"secondary\"\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n <SelectValue>\n {(value: string) => VALUE_TYPES.find((type) => type.value === value)?.label ?? value}\n </SelectValue>\n <SelectIcon>\n <Icon name=\"chevronsUpDown\" />\n </SelectIcon>\n </SelectTrigger>\n <SelectPopup sideOffset={8}>\n <SelectList>\n {VALUE_TYPES.map(({ label, value }) => (\n <SelectItem key={label} value={value}>\n {label}\n </SelectItem>\n ))}\n </SelectList>\n </SelectPopup>\n </Select>\n )\n}\n","import { ColorPicker as ColorPickerRoot } from './color-picker'\nimport { ColorPickerArea } from './color-picker-area'\nimport { ColorPickerGroup } from './color-picker-group'\nimport { ColorPickerHueSlider } from './color-picker-hue-slider'\nimport { ColorPickerInput } from './color-picker-input'\nimport { ColorPickerLabel } from './color-picker-label'\nimport { ColorPickerLightnessSlider } from './color-picker-lightness-slider'\nimport { ColorPickerPaletteAdd } from './color-picker-palette-add'\nimport { ColorPickerPaletteLimit } from './color-picker-palette-limit'\nimport { ColorPickerPaletteList } from './color-picker-palette-list'\nimport { ColorPickerPaletteSwatch } from './color-picker-palette-swatch'\nimport { ColorPickerRow } from './color-picker-row'\nimport { ColorPickerTransparencySlider } from './color-picker-transparency-slider'\nimport { ColorPickerValueType } from './color-picker-value-type'\n\nconst ColorPicker = Object.assign(ColorPickerRoot, {\n Area: ColorPickerArea,\n Group: ColorPickerGroup,\n HueSlider: ColorPickerHueSlider,\n Input: ColorPickerInput,\n Label: ColorPickerLabel,\n LightnessSlider: ColorPickerLightnessSlider,\n PaletteAdd: ColorPickerPaletteAdd,\n PaletteLimit: ColorPickerPaletteLimit,\n PaletteList: ColorPickerPaletteList,\n PaletteSwatch: ColorPickerPaletteSwatch,\n Row: ColorPickerRow,\n TransparencySlider: ColorPickerTransparencySlider,\n ValueType: ColorPickerValueType,\n})\n\nexport { ColorPickerArea } from './color-picker-area'\nexport { ColorPickerGroup } from './color-picker-group'\nexport { ColorPickerHueSlider } from './color-picker-hue-slider'\nexport { ColorPickerInput } from './color-picker-input'\nexport { ColorPickerLabel } from './color-picker-label'\nexport { ColorPickerPaletteLimit } from './color-picker-palette-limit'\nexport { ColorPickerPaletteList } from './color-picker-palette-list'\nexport { ColorPickerPaletteSwatch } from './color-picker-palette-swatch'\nexport { ColorPickerRow } from './color-picker-row'\nexport { ColorPickerTransparencySlider } from './color-picker-transparency-slider'\nexport { ColorPickerValueType } from './color-picker-value-type'\nexport { ColorPickerLightnessSlider } from './color-picker-lightness-slider'\n\nexport type {\n ColorPickerProps,\n ColorPickerPaletteAddProps,\n ColorPickerState,\n ColorPickerAction,\n ColorPickerAreaProps,\n ColorPickerContextType,\n ColorPickerGroupProps,\n ColorPickerHueSliderProps,\n ColorPickerInputProps,\n ColorPickerLabelProps,\n ColorPickerPaletteLimitProps,\n ColorPickerPaletteListProps,\n ColorPickerPaletteSwatchProps,\n ColorPickerRowProps,\n ColorPickerTransparencySliderProps,\n ColorPickerValueTypeProps,\n ColorPickerLightnessSliderProps,\n} from './color-picker.types'\n\nexport { ColorPicker }\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport type { ComboboxProps } from './combobox.types'\n\nexport function Combobox({ ...props }: ComboboxProps) {\n return <BaseCombobox.Root {...props} />\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport type { ComboboxChipProps } from './combobox.types'\n\nexport function ComboboxChip({ className, children, ref, ...props }: ComboboxChipProps) {\n return (\n <BaseCombobox.Chip\n className={cn(\n 'inline-flex h-lg items-center justify-center gap-xs rounded-lg bg-neutral-container pr-3xs pl-xs style-text-default-0 text-neutral-on-container',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n <BaseCombobox.ChipRemove\n aria-label=\"Remove\"\n render={(innerProps) => (\n <Button\n aria-label=\"Remove\"\n onClick={() => innerProps.onClick}\n variant=\"ghost\"\n tone=\"error\"\n size=\"extraSmall\"\n >\n <Icon name=\"close\" className=\"size-sm\" />\n </Button>\n )}\n />\n </BaseCombobox.Chip>\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxChipsProps } from './combobox.types'\n\nexport function ComboboxChips({ className, ref, ...props }: ComboboxChipsProps) {\n return (\n <BaseCombobox.Chips\n data-chips\n className={cn('group flex flex-wrap items-center gap-2xs empty:hidden', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport type { ComboboxCollectionProps } from './combobox.types'\n\nexport function ComboboxCollection({ ...props }: ComboboxCollectionProps) {\n return <BaseCombobox.Collection {...props} />\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\nimport type { ComboboxEmptyProps } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nexport function ComboboxEmpty({ className, ref, ...props }: ComboboxEmptyProps) {\n return (\n <BaseCombobox.Empty\n className={cn(\n 'max-h-[min(23rem,var(--available-height))] scroll-py-[0.5rem] overflow-y-auto overscroll-contain p-xs empty:m-[0px] empty:p-[0px]',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxGroupProps } from './combobox.types'\n\nexport function ComboboxGroup({ className, ref, ...props }: ComboboxGroupProps) {\n return <BaseCombobox.Group className={cn('block pb-3xs', className)} ref={ref} {...props} />\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxGroupLabelProps } from './combobox.types'\n\nexport function ComboboxGroupLabel({ className, ref, ...props }: ComboboxGroupLabelProps) {\n return (\n <BaseCombobox.GroupLabel\n className={cn(\n 'sticky top-[0px] z-1 my-[0px] mr-[0px] -ml-2xs bg-surface-2 px-sm pt-2xs pb-3xs style-text-strong--2 text-on-surface-variant',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { InputGroup, InputGroupAddon } from '../input-group'\nimport { Separator } from '../separator'\nimport type { ComboboxInputProps } from './combobox.types'\n\nfunction getChipsMinHeightClass(size: ComboboxInputProps['size']): string {\n if (size === 'small') {\n return '[&:has([data-chips]:not(:empty))]:min-h-lg'\n }\n if (size === 'large') {\n return '[&:has([data-chips]:not(:empty))]:min-h-2xl'\n }\n return '[&:has([data-chips]:not(:empty))]:min-h-xl'\n}\n\nfunction getTriggerVariant(isOpen: boolean): 'fill' | 'ghost' {\n if (isOpen) {\n return 'fill'\n }\n return 'ghost'\n}\n\nexport function ComboboxInput({\n inline = false,\n variant,\n size = 'medium',\n className,\n children,\n ref,\n ...props\n}: ComboboxInputProps) {\n const id = React.useId(),\n chipsMinHeightClass = getChipsMinHeightClass(size)\n\n if (inline) {\n return (\n <div className=\"h-(--input-container-height) py-2xs pr-2xs\">\n <BaseCombobox.Input\n className={cn(\n 'h-xl w-full rounded-lg bg-surface-low px-sm outline-border transition-all not-active:outline-1 focus-within:outline-2 hover:outline-2 focus:caret-brand-default focus:outline-brand-border data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50',\n 'placeholder:opacity-60',\n 'disabled:cursor-not-allowed',\n 'text-ellipsis',\n className,\n )}\n id={id}\n ref={ref}\n {...props}\n />\n </div>\n )\n }\n\n return (\n <InputGroup\n variant={variant}\n size={size}\n className={cn(\n 'flex-col items-start justify-center [&:has([data-chips]:empty)>[role=separator]]:hidden [&:has([data-chips]:h-fit)]:flex [&:has([data-chips]:h-fit)]:flex-wrap [&:has([data-chips]:h-fit)]:py-xs [&:has([data-chips]:not(:empty))]:h-auto [&:has([data-chips]:not(:empty))]:rounded-xl [&:not(:has([data-chips]))>[role=separator]]:hidden',\n chipsMinHeightClass,\n className,\n )}\n >\n {children}\n <Separator weight=\"thinnest\" />\n <BaseCombobox.InputGroup className=\"relative flex w-full items-center justify-between [&>input]:pr-[2rem] has-[.combobox-clear]:[&>input]:pr-[calc(0.5rem+1.5rem*2)]\">\n <BaseCombobox.Input\n className={cn(\n 'w-full text-ellipsis outline-none placeholder:opacity-60 disabled:cursor-not-allowed',\n className,\n )}\n id={id}\n ref={ref}\n {...props}\n />\n <InputGroupAddon>\n <BaseCombobox.Clear\n aria-label=\"Clear selection\"\n keepMounted\n render={({ onClick }) => (\n <Button\n aria-label=\"Clear selection\"\n onClick={onClick}\n size=\"extraSmall\"\n variant=\"ghost\"\n tone=\"error\"\n >\n <Icon name=\"close\" />\n </Button>\n )}\n />\n <BaseCombobox.Trigger\n aria-label=\"Open popup\"\n render={({ onClick }, state) => (\n <Button\n aria-label=\"Open popup\"\n onClick={onClick}\n size=\"extraSmall\"\n variant={getTriggerVariant(state.open)}\n tone=\"brand\"\n >\n <Icon name=\"chevronDown\" />\n </Button>\n )}\n />\n </InputGroupAddon>\n </BaseCombobox.InputGroup>\n </InputGroup>\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { ComboboxItemProps } from './combobox.types'\n\nexport function ComboboxItem({ className, children, ref, ...props }: ComboboxItemProps) {\n return (\n <BaseCombobox.Item\n className={cn(\n 'mr-2xs grid cursor-default grid-cols-[1fr_0.75rem] items-center gap-xs rounded-md px-2xs py-3xs style-text-default-0 transition-colors duration-100 select-none group-data-[side=none]:pr-xs group-data-[side=none]:leading-lg first-of-type:mt-2xs last-of-type:mb-2xs hover:cursor-pointer data-highlighted:relative data-highlighted:z-0 data-highlighted:bg-neutral-container-high data-highlighted:text-neutral-on-container data-highlighted:before:absolute data-highlighted:before:inset-x-3xs data-highlighted:before:inset-y-[0px] data-highlighted:before:z-[-1] data-highlighted:before:rounded-sm data-selected:bg-neutral-default data-selected:text-neutral-on-default pointer-coarse:py-xs',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"col-start-1\">{children}</span>\n <BaseCombobox.ItemIndicator className=\"col-start-2 place-self-end self-center\">\n <Icon name=\"selected\" className=\"size-sm\" />\n </BaseCombobox.ItemIndicator>\n </BaseCombobox.Item>\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxListProps } from './combobox.types'\n\nexport function ComboboxList({ className, ref, ...props }: ComboboxListProps) {\n return (\n <BaseCombobox.List\n className={cn(\n 'max-h-[min(calc(23rem-var(--input-container-height,0rem)),calc(var(--available-height)-var(--input-container-height,0rem)))] scroll-py-[0.5rem] space-y-3xs overflow-y-auto overscroll-contain data-empty:p-[0px]',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxPopupProps } from './combobox.types'\n\nexport function ComboboxPopup({ className, children, ref, ...props }: ComboboxPopupProps) {\n return (\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner className={cn('', className)} ref={ref} sideOffset={20} {...props}>\n <BaseCombobox.Popup className=\"max-h-[23rem] w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) rounded-xl bg-surface-2 pl-2xs shadow-md transition-[transform,scale,opacity] duration-100 [--input-container-height:4rem] data-ending-style:scale-95 data-ending-style:opacity-0 data-starting-style:scale-95 data-starting-style:opacity-0\">\n {children}\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ComboboxStatusProps } from './combobox.types'\n\nexport function ComboboxStatus({ className, ref, ...props }: ComboboxStatusProps) {\n return (\n <BaseCombobox.Status\n className={cn(\n 'flex items-center gap-2xs p-xs style-text-prose--1 text-on-surface-variant empty:hidden',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { ComboboxTriggerProps } from './combobox.types'\n\nfunction getPlaceholderLabel(placeholder: ComboboxTriggerProps['placeholder']): string | undefined {\n if (typeof placeholder === 'string') {\n return placeholder\n }\n return undefined\n}\n\nexport function ComboboxTrigger({\n placeholder,\n className,\n children,\n ref,\n ...props\n}: ComboboxTriggerProps) {\n return (\n <BaseCombobox.Trigger\n aria-label={getPlaceholderLabel(placeholder)}\n className={cn(\n 'inline-flex h-xl items-center justify-between gap-xl rounded-xl bg-surface pr-sm pl-md style-text-default-0 outline-2 outline-transparent transition-all hover:cursor-pointer hover:outline-border data-popup-open:outline-brand-border',\n className,\n )}\n ref={ref}\n {...props}\n >\n <BaseCombobox.Value placeholder={<span className=\"opacity-70\">{placeholder}</span>} />\n <BaseCombobox.Icon>\n <Icon name=\"chevronsUpDown\" />\n </BaseCombobox.Icon>\n {children}\n </BaseCombobox.Trigger>\n )\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\n\nimport type { ComboboxValueProps } from './combobox.types'\n\nexport function ComboboxValue({ ...props }: ComboboxValueProps) {\n return <BaseCombobox.Value {...props} />\n}\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox'\nimport type { Virtualizer } from '@tanstack/react-virtual'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { inputVariants } from '../input/input.types'\n\ntype ComboboxEmptyProps = React.ComponentProps<typeof BaseCombobox.Empty>\ntype ComboboxInputProps = Omit<React.ComponentProps<typeof BaseCombobox.Input>, 'size'> &\n VariantProps<typeof inputVariants> & {\n inline?: boolean\n }\ntype ComboboxItemProps = React.ComponentProps<typeof BaseCombobox.Item>\ntype ComboboxListProps = React.ComponentProps<typeof BaseCombobox.List>\ntype ComboboxPopupProps = React.ComponentProps<typeof BaseCombobox.Positioner>\ntype ComboboxProps = React.ComponentProps<typeof BaseCombobox.Root>\ntype ComboboxChipsProps = React.ComponentProps<typeof BaseCombobox.Chips>\ntype ComboboxChipProps = React.ComponentProps<typeof BaseCombobox.Chip>\ntype ComboboxValueProps = React.ComponentProps<typeof BaseCombobox.Value>\ntype ComboboxTriggerProps = React.ComponentProps<typeof BaseCombobox.Trigger> & {\n placeholder?: string\n}\ntype ComboboxGroupProps = React.ComponentProps<typeof BaseCombobox.Group>\ntype ComboboxGroupLabelProps = React.ComponentProps<typeof BaseCombobox.GroupLabel>\ntype ComboboxCollectionProps = React.ComponentProps<typeof BaseCombobox.Collection>\ntype ComboboxStatusProps = React.ComponentProps<typeof BaseCombobox.Status>\ntype ComboboxVirtualizedListProps<TItem> = Omit<React.ComponentProps<'div'>, 'children'> & {\n open: boolean\n virtualizerRef?: React.RefObject<Virtualizer<HTMLDivElement, HTMLDivElement> | null>\n estimateSize?: number\n overscan?: number\n children?: React.ReactNode | ((item: TItem) => React.ReactNode)\n}\nconst { useFilter } = BaseCombobox,\n { useFilteredItems } = BaseCombobox\n\nexport type {\n ComboboxEmptyProps,\n ComboboxInputProps,\n ComboboxItemProps,\n ComboboxListProps,\n ComboboxPopupProps,\n ComboboxProps,\n ComboboxChipsProps,\n ComboboxChipProps,\n ComboboxValueProps,\n ComboboxTriggerProps,\n ComboboxGroupProps,\n ComboboxGroupLabelProps,\n ComboboxCollectionProps,\n ComboboxStatusProps,\n ComboboxVirtualizedListProps,\n}\nexport { useFilter, useFilteredItems }\n","import { useVirtualizer } from '@tanstack/react-virtual'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { ComboboxItem } from './combobox-item'\nimport { useFilteredItems } from './combobox.types'\nimport type { ComboboxVirtualizedListProps } from './combobox.types'\n\nconst DEFAULT_ESTIMATE_SIZE = 32,\n DEFAULT_OVERSCAN = 20,\n PADDING = 8,\n FIRST_POSITION = 1\ntype TotalSizeStyle = React.CSSProperties & { '--total-size': string }\n\nfunction renderItem<TItem>(\n children: React.ReactNode | ((item: TItem) => React.ReactNode),\n item: TItem,\n) {\n if (typeof children === 'function') {\n return children(item)\n }\n return children\n}\n\nexport function ComboboxVirtualizedList<TItem>({\n open,\n virtualizerRef,\n estimateSize = DEFAULT_ESTIMATE_SIZE,\n overscan = DEFAULT_OVERSCAN,\n className,\n children,\n ...props\n}: ComboboxVirtualizedListProps<TItem>) {\n const filteredItems = useFilteredItems<TItem>(),\n // oxlint-disable-next-line unicorn(no-null)\n scrollElementRef = React.useRef<HTMLDivElement | null>(null),\n // oxlint-disable-next-line react/incompatible-library\n virtualizer = useVirtualizer<HTMLDivElement, HTMLDivElement>({\n count: filteredItems.length,\n directDomUpdates: true,\n enabled: open,\n estimateSize: () => estimateSize,\n getScrollElement: () => scrollElementRef.current,\n overscan,\n paddingEnd: PADDING,\n paddingStart: PADDING,\n scrollPaddingEnd: PADDING,\n scrollPaddingStart: PADDING,\n }),\n handleScrollElementRef = React.useCallback(\n (element: HTMLDivElement | null) => {\n scrollElementRef.current = element\n if (element) {\n virtualizer.measure()\n }\n },\n [virtualizer],\n ),\n totalSize = virtualizer.getTotalSize(),\n totalSizeStyle: TotalSizeStyle = { '--total-size': `${totalSize}px` }\n\n React.useEffect(() => {\n if (virtualizerRef) {\n virtualizerRef.current = virtualizer\n }\n }, [virtualizer, virtualizerRef])\n\n return (\n <div\n role=\"presentation\"\n ref={handleScrollElementRef}\n style={totalSizeStyle}\n className={cn(\n 'h-[min(22.5rem,var(--total-size))] max-h-(--available-height) scroll-py-3xs overflow-auto overscroll-contain',\n className,\n )}\n {...props}\n >\n <div role=\"presentation\" className=\"relative w-full\" style={{ height: totalSize }}>\n {virtualizer.getVirtualItems().map((virtualItem) => {\n const item = filteredItems[virtualItem.index]\n if (!item) {\n return undefined\n }\n\n return (\n <ComboboxItem\n key={virtualItem.key}\n index={virtualItem.index}\n data-index={virtualItem.index}\n ref={virtualizer.measureElement}\n value={item}\n aria-setsize={filteredItems.length}\n aria-posinset={virtualItem.index + FIRST_POSITION}\n className=\"first-of-type:mt-0!\"\n style={{\n left: 0,\n position: 'absolute',\n top: 0,\n transform: `translateY(${virtualItem.start}px)`,\n width: '100%',\n }}\n >\n {renderItem(children, item)}\n </ComboboxItem>\n )\n })}\n </div>\n </div>\n )\n}\n","import { Combobox as ComboboxRoot } from './combobox'\nimport { ComboboxChip } from './combobox-chip'\nimport { ComboboxChips } from './combobox-chips'\nimport { ComboboxCollection } from './combobox-collection'\nimport { ComboboxEmpty } from './combobox-empty'\nimport { ComboboxGroup } from './combobox-group'\nimport { ComboboxGroupLabel } from './combobox-group-label'\nimport { ComboboxInput } from './combobox-input'\nimport { ComboboxItem } from './combobox-item'\nimport { ComboboxList } from './combobox-list'\nimport { ComboboxPopup } from './combobox-popup'\nimport { ComboboxStatus } from './combobox-status'\nimport { ComboboxTrigger } from './combobox-trigger'\nimport { ComboboxValue } from './combobox-value'\nimport { ComboboxVirtualizedList } from './combobox-virtualized-list'\n\nconst Combobox = Object.assign(ComboboxRoot, {\n Chip: ComboboxChip,\n Chips: ComboboxChips,\n Collection: ComboboxCollection,\n Empty: ComboboxEmpty,\n Group: ComboboxGroup,\n GroupLabel: ComboboxGroupLabel,\n Input: ComboboxInput,\n Item: ComboboxItem,\n List: ComboboxList,\n Popup: ComboboxPopup,\n Status: ComboboxStatus,\n Trigger: ComboboxTrigger,\n Value: ComboboxValue,\n VirtualizedList: ComboboxVirtualizedList,\n})\n\nexport type {\n ComboboxChipProps,\n ComboboxChipsProps,\n ComboboxCollectionProps,\n ComboboxEmptyProps,\n ComboboxGroupLabelProps,\n ComboboxGroupProps,\n ComboboxInputProps,\n ComboboxItemProps,\n ComboboxListProps,\n ComboboxPopupProps,\n ComboboxProps,\n ComboboxStatusProps,\n ComboboxTriggerProps,\n ComboboxValueProps,\n ComboboxVirtualizedListProps,\n} from './combobox.types'\nexport { ComboboxChip } from './combobox-chip'\nexport { ComboboxChips } from './combobox-chips'\nexport { ComboboxCollection } from './combobox-collection'\nexport { ComboboxEmpty } from './combobox-empty'\nexport { ComboboxGroup } from './combobox-group'\nexport { ComboboxGroupLabel } from './combobox-group-label'\nexport { ComboboxInput } from './combobox-input'\nexport { ComboboxItem } from './combobox-item'\nexport { ComboboxList } from './combobox-list'\nexport { ComboboxPopup } from './combobox-popup'\nexport { ComboboxStatus } from './combobox-status'\nexport { ComboboxTrigger } from './combobox-trigger'\nexport { ComboboxValue } from './combobox-value'\nexport { ComboboxVirtualizedList } from './combobox-virtualized-list'\nexport { useFilter, useFilteredItems } from './combobox.types'\n\nexport { Combobox }\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport type { ContextMenuProps } from './context-menu.types'\n\nexport function ContextMenu({ ...props }: ContextMenuProps) {\n return <BaseContextMenu.Root {...props} />\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { ContextMenuCheckboxItemProps } from './context-menu.types'\n\nexport function ContextMenuCheckboxItem({\n className,\n children,\n ref,\n ...props\n}: ContextMenuCheckboxItemProps) {\n return (\n <BaseContextMenu.CheckboxItem\n className={cn(\n 'relative z-0 grid cursor-default grid-cols-[1fr_2rem] items-center px-xs py-3xs style-text-default-0 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:content-[\"\"] hover:cursor-pointer data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"col-start-1\">{children}</span>\n <BaseContextMenu.CheckboxItemIndicator className=\"col-start-2 flex items-center justify-center place-self-end self-center\">\n <Icon name=\"selected\" className=\"size-sm\" />\n </BaseContextMenu.CheckboxItemIndicator>\n </BaseContextMenu.CheckboxItem>\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuGroupProps } from './context-menu.types'\n\nexport function ContextMenuGroup({ className, ref, ...props }: ContextMenuGroupProps) {\n return <BaseContextMenu.Group className={cn('', className)} ref={ref} {...props} />\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuGroupLabelProps } from './context-menu.types'\n\nexport function ContextMenuGroupLabel({ className, ref, ...props }: ContextMenuGroupLabelProps) {\n return (\n <BaseContextMenu.GroupLabel\n className={cn(\n 'cursor-default px-2xs py-3xs style-text-default--2 text-on-surface-variant select-none',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\ntype ContextMenuProps = React.ComponentProps<typeof BaseContextMenu.Root>\ntype ContextMenuTriggerProps = React.ComponentProps<typeof BaseContextMenu.Trigger>\ntype ContextMenuPopupProps = React.ComponentProps<typeof BaseContextMenu.Popup>\ntype ContextMenuSeparatorProps = React.ComponentProps<typeof BaseContextMenu.Separator>\ntype ContextMenuSubmenuProps = React.ComponentProps<typeof BaseContextMenu.SubmenuRoot>\ntype ContextMenuShortcutProps = React.ComponentProps<'div'>\ntype ContextMenuGroupProps = React.ComponentProps<typeof BaseContextMenu.Group>\ntype ContextMenuGroupLabelProps = React.ComponentProps<typeof BaseContextMenu.GroupLabel>\ntype ContextMenuCheckboxItemProps = React.ComponentProps<typeof BaseContextMenu.CheckboxItem> &\n VariantProps<typeof contextMenuItemVariants>\ntype ContextMenuRadioItemProps = React.ComponentProps<typeof BaseContextMenu.RadioItem> &\n VariantProps<typeof contextMenuItemVariants>\ntype ContextMenuRadioGroupProps = React.ComponentProps<typeof BaseContextMenu.RadioGroup>\n\nconst contextMenuItemVariants = cva(\n 'relative z-0 flex cursor-default items-center px-xs py-3xs style-text-default-0 transition-colors duration-100 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:transition-colors before:duration-100 before:content-[\"\"] hover:cursor-pointer',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent:\n 'text-accent-default data-highlighted:text-accent-on-container data-highlighted:before:bg-accent-container',\n brand:\n 'text-brand-default data-highlighted:text-brand-on-container data-highlighted:before:bg-brand-container',\n error:\n 'text-error-default data-highlighted:text-error-on-container data-highlighted:before:bg-error-container',\n info: 'text-info-default data-highlighted:text-info-on-container data-highlighted:before:bg-info-container',\n neutral:\n 'text-on-surface data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n success:\n 'text-success-default data-highlighted:text-success-on-container data-highlighted:before:bg-success-container',\n warning:\n 'text-warning-default data-highlighted:text-warning-on-container data-highlighted:before:bg-warning-container',\n },\n },\n },\n ),\n contextMenuSubmenuTriggerVariants = cva(\n 'relative z-0 flex cursor-default items-center px-xs py-3xs style-text-default-0 transition-colors duration-100 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:transition-colors before:duration-100 before:content-[\"\"] hover:cursor-pointer',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent:\n 'text-accent-default data-highlighted:text-accent-on-container data-highlighted:before:bg-accent-container data-popup-open:text-accent-on-container data-popup-open:before:bg-accent-container data-highlighted:data-popup-open:before:bg-accent-container',\n brand:\n 'text-brand-default data-highlighted:text-brand-on-container data-highlighted:before:bg-brand-container data-popup-open:text-brand-on-container data-popup-open:before:bg-brand-container data-highlighted:data-popup-open:before:bg-brand-container',\n error:\n 'text-error-default data-highlighted:text-error-on-container data-highlighted:before:bg-error-container data-popup-open:text-error-on-container data-popup-open:before:bg-error-container data-highlighted:data-popup-open:before:bg-error-container',\n info: 'text-info-default data-highlighted:text-info-on-container data-highlighted:before:bg-info-container data-popup-open:text-info-on-container data-popup-open:before:bg-info-container data-highlighted:data-popup-open:before:bg-info-container',\n neutral:\n 'text-on-surface data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high data-popup-open:text-neutral-on-container data-popup-open:before:bg-neutral-container-high data-highlighted:data-popup-open:before:bg-neutral-container-high',\n success:\n 'text-success-default data-highlighted:text-success-on-container data-highlighted:before:bg-success-container data-popup-open:text-success-on-container data-popup-open:before:bg-success-container data-highlighted:data-popup-open:before:bg-success-container',\n warning:\n 'text-warning-default data-highlighted:text-warning-on-container data-highlighted:before:bg-warning-container data-popup-open:text-warning-on-container data-popup-open:before:bg-warning-container data-highlighted:data-popup-open:before:bg-warning-container',\n },\n },\n },\n )\n\ntype ContextMenuItemProps = React.ComponentProps<typeof BaseContextMenu.Item> &\n VariantProps<typeof contextMenuItemVariants>\n\ntype ContextMenuSubmenuTriggerProps = React.ComponentProps<typeof BaseContextMenu.SubmenuTrigger> &\n VariantProps<typeof contextMenuSubmenuTriggerVariants>\n\nexport type {\n ContextMenuProps,\n ContextMenuTriggerProps,\n ContextMenuPopupProps,\n ContextMenuSeparatorProps,\n ContextMenuSubmenuProps,\n ContextMenuShortcutProps,\n ContextMenuGroupProps,\n ContextMenuGroupLabelProps,\n ContextMenuCheckboxItemProps,\n ContextMenuRadioItemProps,\n ContextMenuRadioGroupProps,\n ContextMenuItemProps,\n ContextMenuSubmenuTriggerProps,\n}\nexport { contextMenuItemVariants, contextMenuSubmenuTriggerVariants }\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport { contextMenuItemVariants } from './context-menu.types'\nimport type { ContextMenuItemProps } from './context-menu.types'\n\nexport function ContextMenuItem({\n className,\n tone,\n children,\n ref,\n ...props\n}: ContextMenuItemProps) {\n return (\n <BaseContextMenu.Item\n className={cn(contextMenuItemVariants({ tone }), className)}\n nativeButton\n ref={ref}\n render={(renderProps) => (\n <button\n type=\"button\"\n {...renderProps}\n className={cn('w-full gap-2xs [&>svg]:size-sm', renderProps.className)}\n >\n {children}\n </button>\n )}\n {...props}\n />\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuPopupProps } from './context-menu.types'\n\nexport function ContextMenuPopup({ className, ref, ...props }: ContextMenuPopupProps) {\n return (\n <BaseContextMenu.Portal>\n <BaseContextMenu.Positioner className=\"z-99\">\n <BaseContextMenu.Popup\n className={cn(\n 'flex w-[calc(100%+var(--spacing-xl))] origin-(--transform-origin) translate-x-[-calc(var(--spacing-xl)/2)] flex-col gap-3xs rounded-xl bg-surface-2 p-3xs py-2xs shadow-md transition-[transform,scale,opacity] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n </BaseContextMenu.Positioner>\n </BaseContextMenu.Portal>\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuRadioGroupProps } from './context-menu.types'\n\nexport function ContextMenuRadioGroup({ className, ref, ...props }: ContextMenuRadioGroupProps) {\n return <BaseContextMenu.RadioGroup className={cn('', className)} ref={ref} {...props} />\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { ContextMenuRadioItemProps } from './context-menu.types'\n\nexport function ContextMenuRadioItem({\n className,\n children,\n ref,\n ...props\n}: ContextMenuRadioItemProps) {\n return (\n <BaseContextMenu.RadioItem\n className={cn(\n 'relative z-0 grid cursor-default grid-cols-[1fr_2rem] items-center px-xs py-3xs style-text-default-0 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:content-[\"\"] hover:cursor-pointer data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"col-start-1 min-w-3xl\">{children}</span>\n <BaseContextMenu.RadioItemIndicator className=\"col-start-2 flex items-center justify-center place-self-end self-center\">\n <Icon name=\"selected\" className=\"size-sm\" />\n </BaseContextMenu.RadioItemIndicator>\n </BaseContextMenu.RadioItem>\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuSeparatorProps } from './context-menu.types'\n\nexport function ContextMenuSeparator({ className, ref, ...props }: ContextMenuSeparatorProps) {\n return (\n <BaseContextMenu.Separator\n className={cn('mx-2xs my-3xs h-px bg-border-strong', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ContextMenuShortcutProps } from './context-menu.types'\n\nexport function ContextMenuShortcut({ className, ref, ...props }: ContextMenuShortcutProps) {\n return (\n <div\n className={cn('ml-auto inline-flex items-center gap-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport type { ContextMenuSubmenuProps } from './context-menu.types'\n\nexport function ContextMenuSubmenu({ ...props }: ContextMenuSubmenuProps) {\n return <BaseContextMenu.SubmenuRoot {...props} />\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport { contextMenuSubmenuTriggerVariants } from './context-menu.types'\nimport type { ContextMenuSubmenuTriggerProps } from './context-menu.types'\n\nexport function ContextMenuSubmenuTrigger({\n className,\n children,\n ref,\n tone,\n ...props\n}: ContextMenuSubmenuTriggerProps) {\n return (\n <BaseContextMenu.SubmenuTrigger\n className={cn(contextMenuSubmenuTriggerVariants({ tone }), className)}\n ref={ref}\n {...props}\n >\n <span className=\"flex min-w-3xl items-center gap-2xs pr-2xl\">{children}</span>\n <Icon name=\"chevronRight\" className=\"ml-auto size-xs shrink-0 self-center\" />\n </BaseContextMenu.SubmenuTrigger>\n )\n}\n","import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ContextMenuTriggerProps } from './context-menu.types'\n\nexport function ContextMenuTrigger({ className, ref, ...props }: ContextMenuTriggerProps) {\n return (\n <BaseContextMenu.Trigger\n className={cn('flex min-w-0 flex-1', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { ContextMenu as ContextMenuRoot } from './context-menu'\nimport { ContextMenuCheckboxItem } from './context-menu-checkbox-item'\nimport { ContextMenuGroup } from './context-menu-group'\nimport { ContextMenuGroupLabel } from './context-menu-group-label'\nimport { ContextMenuItem } from './context-menu-item'\nimport { ContextMenuPopup } from './context-menu-popup'\nimport { ContextMenuRadioGroup } from './context-menu-radio-group'\nimport { ContextMenuRadioItem } from './context-menu-radio-item'\nimport { ContextMenuSeparator } from './context-menu-separator'\nimport { ContextMenuShortcut } from './context-menu-shortcut'\nimport { ContextMenuSubmenu } from './context-menu-submenu'\nimport { ContextMenuSubmenuTrigger } from './context-menu-submenu-trigger'\nimport { ContextMenuTrigger } from './context-menu-trigger'\n\nconst ContextMenu = Object.assign(ContextMenuRoot, {\n CheckboxItem: ContextMenuCheckboxItem,\n Group: ContextMenuGroup,\n GroupLabel: ContextMenuGroupLabel,\n Item: ContextMenuItem,\n Popup: ContextMenuPopup,\n RadioGroup: ContextMenuRadioGroup,\n RadioItem: ContextMenuRadioItem,\n Separator: ContextMenuSeparator,\n Shortcut: ContextMenuShortcut,\n Submenu: ContextMenuSubmenu,\n SubmenuTrigger: ContextMenuSubmenuTrigger,\n Trigger: ContextMenuTrigger,\n})\n\nexport type {\n ContextMenuCheckboxItemProps,\n ContextMenuGroupLabelProps,\n ContextMenuGroupProps,\n ContextMenuRadioGroupProps,\n ContextMenuRadioItemProps,\n ContextMenuShortcutProps,\n ContextMenuItemProps,\n ContextMenuPopupProps,\n ContextMenuProps,\n ContextMenuSeparatorProps,\n ContextMenuSubmenuProps,\n ContextMenuSubmenuTriggerProps,\n ContextMenuTriggerProps,\n} from './context-menu.types'\nexport { ContextMenuCheckboxItem } from './context-menu-checkbox-item'\nexport { ContextMenuGroup } from './context-menu-group'\nexport { ContextMenuGroupLabel } from './context-menu-group-label'\nexport { ContextMenuRadioGroup } from './context-menu-radio-group'\nexport { ContextMenuRadioItem } from './context-menu-radio-item'\nexport { ContextMenuShortcut } from './context-menu-shortcut'\nexport { ContextMenuItem } from './context-menu-item'\nexport { ContextMenuPopup } from './context-menu-popup'\nexport { ContextMenuSeparator } from './context-menu-separator'\nexport { ContextMenuSubmenu } from './context-menu-submenu'\nexport { ContextMenuSubmenuTrigger } from './context-menu-submenu-trigger'\nexport { ContextMenuTrigger } from './context-menu-trigger'\n\nexport { ContextMenu }\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\n\nimport type { DialogProps } from './dialog.types'\n\nexport function Dialog({ ...props }: DialogProps) {\n return <BaseDialog.Root {...props} />\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport type { DialogCloseProps } from './dialog.types'\n\nexport function DialogClose({ className, children, ref, ...props }: DialogCloseProps) {\n return (\n <BaseDialog.Close\n className={cn('absolute top-xs right-xs', className)}\n ref={ref}\n {...props}\n render={\n <Button aria-label=\"Close\" variant=\"ghost\" size=\"extraSmall\" tone=\"error\">\n {children ?? <Icon name=\"close\" />}\n </Button>\n }\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DialogContentProps } from './dialog.types'\n\nexport function DialogContent({ className, ref, ...props }: DialogContentProps) {\n return <div className={cn('flex h-full flex-col gap-sm', className)} ref={ref} {...props} />\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DialogDescriptionProps } from './dialog.types'\n\nexport function DialogDescription({ className, ref, ...props }: DialogDescriptionProps) {\n return (\n <BaseDialog.Description\n data-slot=\"dialog-description\"\n className={cn('style-text-prose-0 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DialogFooterProps } from './dialog.types'\n\nexport function DialogFooter({ className, ref, ...props }: DialogFooterProps) {\n return (\n <div\n className={cn('flex w-full items-center justify-end gap-2xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DialogHeaderProps } from './dialog.types'\n\nexport function DialogHeader({ className, ref, ...props }: DialogHeaderProps) {\n return (\n <div\n className={cn(\n 'grid auto-rows-min items-center gap-x-sm has-data-[slot=dialog-description]:grid-rows-[auto_auto] has-data-[slot=dialog-icon]:grid-cols-[auto_1fr] has-data-[slot=dialog-description]:**:data-[slot=dialog-icon]:row-span-2',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DialogIconProps } from './dialog.types'\n\nexport function DialogIcon({ className, ref, ...props }: DialogIconProps) {\n return (\n <div\n data-slot=\"dialog-icon\"\n className={cn('row-span-2 self-start [&>svg]:size-xl [&>svg]:shrink-0', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DialogPopupProps } from './dialog.types'\n\nexport function DialogPopup({ className, children, ref, ...props }: DialogPopupProps) {\n return (\n <BaseDialog.Portal>\n <BaseDialog.Backdrop\n className=\"fixed inset-[0px] z-998 min-h-dvh transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-[-webkit-touch-callout:none]:absolute\"\n style={{ WebkitBackdropFilter: 'blur(16px)', backdropFilter: 'blur(16px)' }}\n />\n <BaseDialog.Popup\n className={cn(\n 'fixed top-1/2 left-1/2 z-999 flex max-w-[calc(100vw-3rem)] min-w-1/6 -translate-1/2 flex-col gap-sm overflow-hidden rounded-3xl bg-surface-2 px-lg py-md shadow-lg transition-all duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n )\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DialogTitleProps } from './dialog.types'\n\nexport function DialogTitle({ className, ref, ...props }: DialogTitleProps) {\n return (\n <BaseDialog.Title\n data-slot=\"dialog-title\"\n className={cn('style-text-strong-1', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DialogTriggerProps } from './dialog.types'\n\nexport function DialogTrigger({ className, children, ref, ...props }: DialogTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return <BaseDialog.Trigger className={cn('', className)} ref={ref} {...props} render={render} />\n}\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog'\nimport type { ComponentProps } from 'react'\n\ntype DialogProps = ComponentProps<typeof BaseDialog.Root>\n\ntype DialogTriggerProps = ComponentProps<typeof BaseDialog.Trigger>\n\ntype DialogPopupProps = ComponentProps<typeof BaseDialog.Popup>\n\ntype DialogTitleProps = ComponentProps<typeof BaseDialog.Title>\n\ntype DialogDescriptionProps = ComponentProps<typeof BaseDialog.Description>\n\ntype DialogCloseProps = ComponentProps<typeof BaseDialog.Close>\ntype DialogContentProps = React.ComponentProps<'div'>\ntype DialogHeaderProps = React.ComponentProps<'div'>\ntype DialogFooterProps = React.ComponentProps<'div'>\ntype DialogIconProps = React.ComponentProps<'div'>\nconst DialogHelper = BaseDialog\n\nexport type {\n DialogProps,\n DialogTriggerProps,\n DialogPopupProps,\n DialogTitleProps,\n DialogDescriptionProps,\n DialogCloseProps,\n DialogContentProps,\n DialogHeaderProps,\n DialogFooterProps,\n DialogIconProps,\n}\nexport { DialogHelper }\n","import { Dialog as DialogRoot } from './dialog'\nimport { DialogClose } from './dialog-close'\nimport { DialogContent } from './dialog-content'\nimport { DialogDescription } from './dialog-description'\nimport { DialogFooter } from './dialog-footer'\nimport { DialogHeader } from './dialog-header'\nimport { DialogIcon } from './dialog-icon'\nimport { DialogPopup } from './dialog-popup'\nimport { DialogTitle } from './dialog-title'\nimport { DialogTrigger } from './dialog-trigger'\n\nconst Dialog = Object.assign(DialogRoot, {\n Close: DialogClose,\n Content: DialogContent,\n Description: DialogDescription,\n Footer: DialogFooter,\n Header: DialogHeader,\n Icon: DialogIcon,\n Popup: DialogPopup,\n Title: DialogTitle,\n Trigger: DialogTrigger,\n})\n\nexport type {\n DialogCloseProps,\n DialogDescriptionProps,\n DialogFooterProps,\n DialogHeaderProps,\n DialogIconProps,\n DialogPopupProps,\n DialogProps,\n DialogTitleProps,\n DialogTriggerProps,\n} from './dialog.types'\nexport { DialogClose } from './dialog-close'\nexport { DialogContent } from './dialog-content'\nexport { DialogDescription } from './dialog-description'\nexport { DialogFooter } from './dialog-footer'\nexport { DialogHeader } from './dialog-header'\nexport { DialogIcon } from './dialog-icon'\nexport { DialogPopup } from './dialog-popup'\nexport { DialogTitle } from './dialog-title'\nexport { DialogTrigger } from './dialog-trigger'\nexport { DialogHelper } from './dialog.types'\n\nexport { Dialog }\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport type { DrawerProps } from './drawer.types'\n\nexport function Drawer({ ...props }: DrawerProps) {\n return <BaseDrawer.Root {...props} />\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerCloseProps } from './drawer.types'\n\nexport function DrawerClose({ className, ref, ...props }: DrawerCloseProps) {\n return <BaseDrawer.Close className={cn('shrink-0', className)} ref={ref} {...props} />\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerContentProps } from './drawer.types'\n\nexport function DrawerContent({ className, ref, ...props }: DrawerContentProps) {\n return (\n <BaseDrawer.Content\n className={cn('mx-auto w-full max-w-[32rem] space-y-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerDescriptionProps } from './drawer.types'\n\nexport function DrawerDescription({ className, ref, ...props }: DrawerDescriptionProps) {\n return (\n <BaseDrawer.Description\n className={cn('style-text-prose-0 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DrawerHeaderProps } from './drawer.types'\n\nexport function DrawerHeader({ className, ref, ...props }: DrawerHeaderProps) {\n return (\n <div className={cn('flex items-start justify-between pb-sm', className)} ref={ref} {...props} />\n )\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerPopupProps } from './drawer.types'\n\nconst backdropClassName =\n 'fixed inset-0 min-h-dvh bg-scrim opacity-[calc(var(--backdrop-opacity)*(1-var(--drawer-swipe-progress)))] transition-opacity duration-450 ease-[cubic-bezier(0.32,0.72,0,1)] [--backdrop-opacity:0.2] [--bleed:3rem] data-ending-style:opacity-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength)*0.4s)] data-starting-style:opacity-0 data-swiping:duration-0 supports-[-webkit-touch-callout:none]:absolute dark:[--backdrop-opacity:0.7]',\n viewportClassName = cn(\n 'fixed inset-0 flex',\n // Down (bottom sheet) - default\n 'items-end justify-center',\n // Up (top sheet)\n 'has-[[data-swipe-direction=up]]:items-start has-[[data-swipe-direction=up]]:justify-center',\n // Right (right drawer)\n 'has-[[data-swipe-direction=right]]:items-center has-[[data-swipe-direction=right]]:justify-end',\n // Left (left drawer)\n 'has-[[data-swipe-direction=left]]:items-center has-[[data-swipe-direction=left]]:justify-start',\n ),\n popupClassName = cn(\n // Base styles (shared by all directions)\n 'touch-auto overflow-y-auto overscroll-contain bg-surface-background p-md outline outline-border-strong transition-transform duration-450 ease-[cubic-bezier(0.32,0.72,0,1)] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*0.4s)] data-swiping:select-none',\n\n // Down (bottom sheet) - default, shadow goes up\n 'mb-[-3rem] max-h-[calc(80vh+3rem)] w-full transform-[translateY(var(--drawer-swipe-movement-y))] rounded-t-2xl pb-[calc(1.5rem+env(safe-area-inset-bottom,0)+3rem)] shadow-[0_-8px_24px_var(--color-shadow)] data-ending-style:transform-[translateY(calc(100%-3rem+2px))] data-starting-style:transform-[translateY(calc(100%-3rem+2px))]',\n\n // Up (top sheet) - shadow goes down\n 'data-[swipe-direction=up]:mt-[-3rem] data-[swipe-direction=up]:mb-0 data-[swipe-direction=up]:rounded-t-none data-[swipe-direction=up]:rounded-b-2xl data-[swipe-direction=up]:pt-[calc(1.5rem+env(safe-area-inset-top,0)+3rem)] data-[swipe-direction=up]:pb-md data-[swipe-direction=up]:shadow-[0_8px_24px_var(--color-shadow)] data-[swipe-direction=up]:data-ending-style:transform-[translateY(calc(-100%+3rem-2px))] data-[swipe-direction=up]:data-starting-style:transform-[translateY(calc(-100%+3rem-2px))]',\n\n // Right (right drawer) - shadow goes left\n 'data-[swipe-direction=right]:mr-[-3rem] data-[swipe-direction=right]:mb-0 data-[swipe-direction=right]:h-full data-[swipe-direction=right]:max-h-dvh data-[swipe-direction=right]:w-[23rem] data-[swipe-direction=right]:max-w-[calc(100vw-3rem)] data-[swipe-direction=right]:transform-[translateX(var(--drawer-swipe-movement-x))] data-[swipe-direction=right]:rounded-none data-[swipe-direction=right]:rounded-l-2xl data-[swipe-direction=right]:pr-[4.5rem] data-[swipe-direction=right]:pb-md data-[swipe-direction=right]:shadow-[-8px_0_24px_var(--color-shadow)] data-[swipe-direction=right]:data-ending-style:transform-[translateX(calc(100%-3rem+2px))] data-[swipe-direction=right]:data-starting-style:transform-[translateX(calc(100%-3rem+2px))]',\n\n // Left (left drawer) - shadow goes right\n 'data-[swipe-direction=left]:mb-0 data-[swipe-direction=left]:ml-[-3rem] data-[swipe-direction=left]:h-full data-[swipe-direction=left]:max-h-dvh data-[swipe-direction=left]:w-[23rem] data-[swipe-direction=left]:max-w-[calc(100vw-3rem)] data-[swipe-direction=left]:transform-[translateX(var(--drawer-swipe-movement-x))] data-[swipe-direction=left]:rounded-none data-[swipe-direction=left]:rounded-r-2xl data-[swipe-direction=left]:pb-md data-[swipe-direction=left]:pl-[4.5rem] data-[swipe-direction=left]:shadow-[8px_0_24px_var(--color-shadow)] data-[swipe-direction=left]:data-ending-style:transform-[translateX(calc(-100%+3rem-2px))] data-[swipe-direction=left]:data-starting-style:transform-[translateX(calc(-100%+3rem-2px))]',\n )\n\nexport function DrawerPopup({ className, children, ref, ...props }: DrawerPopupProps) {\n return (\n <BaseDrawer.Portal>\n <BaseDrawer.Backdrop className={backdropClassName} />\n <BaseDrawer.Viewport className={viewportClassName}>\n <BaseDrawer.Popup className={cn(popupClassName, className)} ref={ref} {...props}>\n {children}\n </BaseDrawer.Popup>\n </BaseDrawer.Viewport>\n </BaseDrawer.Portal>\n )\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport type { DrawerProviderProps } from './drawer.types'\n\nexport function DrawerProvider({ children, ...props }: DrawerProviderProps) {\n return (\n <BaseDrawer.Provider {...props}>\n <BaseDrawer.IndentBackground />\n <BaseDrawer.Indent>{children}</BaseDrawer.Indent>\n </BaseDrawer.Provider>\n )\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerTitleProps } from './drawer.types'\n\nexport function DrawerTitle({ className, ref, ...props }: DrawerTitleProps) {\n return <BaseDrawer.Title className={cn('style-text-strong-1', className)} ref={ref} {...props} />\n}\n","import { Drawer as BaseDrawer } from '@base-ui/react'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DrawerTriggerProps } from './drawer.types'\n\nexport function DrawerTrigger({ className, children, ref, ...props }: DrawerTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return <BaseDrawer.Trigger className={cn('', className)} ref={ref} {...props} render={render} />\n}\n","import { Drawer as DrawerRoot } from './drawer'\nimport { DrawerClose } from './drawer-close'\nimport { DrawerContent } from './drawer-content'\nimport { DrawerDescription } from './drawer-description'\nimport { DrawerHeader } from './drawer-header'\nimport { DrawerPopup } from './drawer-popup'\nimport { DrawerProvider } from './drawer-provider'\nimport { DrawerTitle } from './drawer-title'\nimport { DrawerTrigger } from './drawer-trigger'\n\nconst Drawer = Object.assign(DrawerRoot, {\n Close: DrawerClose,\n Content: DrawerContent,\n Description: DrawerDescription,\n Header: DrawerHeader,\n Popup: DrawerPopup,\n Provider: DrawerProvider,\n Title: DrawerTitle,\n Trigger: DrawerTrigger,\n})\n\nexport type {\n DrawerProps,\n DrawerCloseProps,\n DrawerContentProps,\n DrawerDescriptionProps,\n DrawerProviderProps,\n DrawerTriggerProps,\n DrawerPopupProps,\n DrawerTitleProps,\n DrawerHeaderProps,\n} from './drawer.types'\nexport { DrawerClose } from './drawer-close'\nexport { DrawerContent } from './drawer-content'\nexport { DrawerDescription } from './drawer-description'\nexport { DrawerProvider } from './drawer-provider'\nexport { DrawerTrigger } from './drawer-trigger'\nexport { DrawerPopup } from './drawer-popup'\nexport { DrawerTitle } from './drawer-title'\nexport { DrawerHeader } from './drawer-header'\n\nexport { Drawer }\n","import React from 'react'\n\nimport type { DropzoneContextProps } from './dropzone.types'\n\nconst BYTES_PER_UNIT = 1000,\n FIRST_UNIT_INDEX = 0,\n UNIT_STEP = 1,\n LAST_UNIT_OFFSET = 1,\n NO_DECIMALS = 0,\n SINGLE_DECIMAL = 1,\n EMPTY_LENGTH = 0,\n PATTERN_START = 0,\n WILDCARD_SUFFIX_LENGTH = 1,\n formatFileSize = (bytes: number): string => {\n if (bytes < BYTES_PER_UNIT) {\n return `${bytes} B`\n }\n\n const units = ['KB', 'MB', 'GB', 'TB']\n let size = bytes / BYTES_PER_UNIT,\n unitIndex = FIRST_UNIT_INDEX,\n decimals = NO_DECIMALS\n\n while (size >= BYTES_PER_UNIT && unitIndex < units.length - LAST_UNIT_OFFSET) {\n size /= BYTES_PER_UNIT\n unitIndex += UNIT_STEP\n }\n\n if (!Number.isInteger(size)) {\n decimals = SINGLE_DECIMAL\n }\n\n return `${size.toFixed(decimals)}${units[unitIndex]}`\n },\n getFileKey = (file: File): string => `${file.name}-${file.size}-${file.lastModified}`,\n isFileTypeAccepted = (file: File, acceptedFileTypes: string[]): boolean => {\n if (acceptedFileTypes.length === EMPTY_LENGTH) {\n return true\n }\n\n const fileName = file.name.toLowerCase(),\n fileType = file.type.toLowerCase()\n\n return acceptedFileTypes.some((accepted) => {\n const pattern = accepted.toLowerCase()\n\n if (pattern.startsWith('.')) {\n return fileName.endsWith(pattern)\n }\n\n if (pattern.endsWith('/*')) {\n return fileType.startsWith(pattern.slice(PATTERN_START, -WILDCARD_SUFFIX_LENGTH))\n }\n\n return fileType === pattern\n })\n },\n DropzoneContext = React.createContext<DropzoneContextProps | undefined>(undefined),\n useDropzone = () => {\n const context = React.useContext(DropzoneContext)\n\n if (!context) {\n throw new Error('useDropzone must be used within a DropzoneProvider')\n }\n\n return context\n }\n\nexport { DropzoneContext, formatFileSize, getFileKey, isFileTypeAccepted, useDropzone }\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DropzoneProps } from './dropzone.types'\nimport { DropzoneContext, formatFileSize, getFileKey, isFileTypeAccepted } from './dropzone.utils'\n\nconst SINGLE_FILE = 1,\n FIRST_INDEX = 0,\n EMPTY = 0,\n MIN_PROGRESS = 0,\n MAX_PROGRESS = 100,\n defaultMaxFilesErrorLabel = (max: number) => {\n let suffix = 's'\n if (max === SINGLE_FILE) {\n suffix = ''\n }\n return `You can select up to ${max} file${suffix}.`\n },\n defaultMaxFileSizeErrorLabel = (fileName: string, max: string) =>\n `\"${fileName}\" exceeds the maximum size of ${max}.`,\n defaultFileTypeErrorLabel = (fileName: string) => `\"${fileName}\" is not an accepted file type.`,\n resolveAcceptedTypes = (accept: string | undefined) => {\n if (typeof accept !== 'string') {\n return []\n }\n return accept\n .split(',')\n .map((value) => value.trim())\n .filter(Boolean)\n },\n toFileArray = (fileList: FileList | null) => {\n if (!fileList) {\n return []\n }\n return [...fileList]\n },\n formatOptionalSize = (size: number | undefined) => {\n if (size === undefined) {\n return undefined\n }\n return formatFileSize(size)\n }\n\nexport function Dropzone({\n maxFiles,\n maxFileSize,\n maxFilesErrorLabel = defaultMaxFilesErrorLabel,\n maxFileSizeErrorLabel = defaultMaxFileSizeErrorLabel,\n fileTypeErrorLabel = defaultFileTypeErrorLabel,\n onUpload,\n ref,\n className,\n children,\n onChange,\n onConfirm,\n ...props\n}: DropzoneProps) {\n const inputRef = React.useRef<HTMLInputElement | null>(null),\n filesRef = React.useRef<File[]>([]),\n [isHovering, setIsHovering] = React.useState(false),\n [files, setFiles] = React.useState<File[]>([]),\n [fileError, setFileError] = React.useState<string | undefined>(undefined),\n [fileProgress, setFileProgress] = React.useState<Record<string, number>>({}),\n acceptedFileTypes = resolveAcceptedTypes(props.accept),\n formattedMaxFileSize = formatOptionalSize(maxFileSize),\n syncInputFiles = React.useCallback((nextFiles: File[]) => {\n if (!inputRef.current) {\n return\n }\n\n const dataTransfer = new DataTransfer()\n nextFiles.forEach((file) => dataTransfer.items.add(file))\n inputRef.current.files = dataTransfer.files\n }, []),\n getNextFiles = (incomingFiles: File[]) => {\n if (!props.multiple) {\n return incomingFiles.slice(FIRST_INDEX, SINGLE_FILE)\n }\n\n const mergedFiles = [...filesRef.current, ...incomingFiles],\n dedupedFiles = mergedFiles.filter(\n (file, index, source) =>\n source.findIndex(\n (item) =>\n item.name === file.name &&\n item.size === file.size &&\n item.lastModified === file.lastModified,\n ) === index,\n )\n\n return dedupedFiles\n },\n startUploads = (newFiles: File[]) => {\n newFiles.forEach((file) => {\n const key = getFileKey(file)\n\n if (!onUpload) {\n setFileProgress((previous) => ({ ...previous, [key]: MAX_PROGRESS }))\n return\n }\n\n setFileProgress((previous) => ({ ...previous, [key]: MIN_PROGRESS }))\n void onUpload(file, (percent) => {\n setFileProgress((previous) => ({\n ...previous,\n [key]: Math.max(MIN_PROGRESS, Math.min(MAX_PROGRESS, percent)),\n }))\n })\n })\n },\n commitFiles = (previousFiles: File[], acceptedFiles: File[]) => {\n const previousKeys = new Set(previousFiles.map(getFileKey)),\n addedFiles = acceptedFiles.filter((file) => !previousKeys.has(getFileKey(file)))\n filesRef.current = acceptedFiles\n setFiles(acceptedFiles)\n syncInputFiles(acceptedFiles)\n startUploads(addedFiles)\n },\n partitionBySize = (candidateFiles: File[]) => {\n if (maxFileSize === undefined) {\n return { acceptedFiles: candidateFiles, oversizedFiles: [] as File[] }\n }\n\n return {\n acceptedFiles: candidateFiles.filter((file) => file.size <= maxFileSize),\n oversizedFiles: candidateFiles.filter((file) => file.size > maxFileSize),\n }\n },\n processFiles = (candidateFiles: File[]) => {\n const invalidTypeFiles = candidateFiles.filter(\n (file) => !isFileTypeAccepted(file, acceptedFileTypes),\n ),\n { oversizedFiles, acceptedFiles } = partitionBySize(candidateFiles)\n\n if (invalidTypeFiles.length > EMPTY) {\n return {\n acceptedFiles: undefined,\n error: fileTypeErrorLabel(invalidTypeFiles[FIRST_INDEX].name),\n }\n }\n\n if (maxFiles !== undefined && acceptedFiles.length > maxFiles) {\n return {\n acceptedFiles: undefined,\n error: maxFilesErrorLabel(maxFiles),\n }\n }\n\n if (oversizedFiles.length > EMPTY && maxFileSize !== undefined) {\n return {\n acceptedFiles,\n error: maxFileSizeErrorLabel(\n oversizedFiles[FIRST_INDEX].name,\n formatFileSize(maxFileSize),\n ),\n }\n }\n\n return { acceptedFiles, error: undefined }\n },\n applyAcceptedFiles = (candidateFiles: File[]) => {\n const previousFiles = filesRef.current,\n nextFiles = getNextFiles(candidateFiles),\n { acceptedFiles, error } = processFiles(nextFiles)\n\n if (acceptedFiles) {\n commitFiles(previousFiles, acceptedFiles)\n }\n\n return { acceptedFiles, error, previousFiles }\n },\n removeFile = (fileToRemove: File) => {\n const removedKey = getFileKey(fileToRemove)\n\n setFiles((previousFiles) => {\n const nextFiles = previousFiles.filter((file) => file !== fileToRemove)\n filesRef.current = nextFiles\n syncInputFiles(nextFiles)\n return nextFiles\n })\n setFileProgress((previous) => {\n const next = { ...previous }\n delete next[removedKey]\n return next\n })\n setFileError(undefined)\n },\n handleFiles = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { acceptedFiles, error, previousFiles } = applyAcceptedFiles(\n toFileArray(event.target.files),\n )\n\n setFileError(error)\n if (!acceptedFiles) {\n syncInputFiles(previousFiles)\n return\n }\n\n onChange?.(event)\n },\n handleDragOver = (event: React.DragEvent<HTMLElement>) => {\n event.preventDefault()\n setIsHovering(true)\n },\n handleDragLeave = () => {\n setIsHovering(false)\n },\n handleDrop = (event: React.DragEvent<HTMLElement>) => {\n event.preventDefault()\n const { acceptedFiles, error } = applyAcceptedFiles([...event.dataTransfer.files])\n\n setFileError(error)\n if (!acceptedFiles) {\n setIsHovering(false)\n return\n }\n\n inputRef.current?.dispatchEvent(new Event('change', { bubbles: true }))\n setIsHovering(false)\n }\n\n React.useEffect(() => {\n filesRef.current = files\n }, [files])\n\n return (\n <DropzoneContext.Provider\n value={{\n acceptedFileTypes,\n fileError,\n fileProgress,\n files,\n handleDragLeave,\n handleDragOver,\n handleDrop,\n handleFiles,\n inputRef,\n isHovering,\n maxFileSize: formattedMaxFileSize,\n maxFiles,\n onConfirm,\n onUpload,\n props,\n removeFile,\n setFiles,\n }}\n >\n <div className={cn('space-y-md', className)} ref={ref}>\n {children}\n </div>\n </DropzoneContext.Provider>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneActionsProps } from './dropzone.types'\n\nexport function DropzoneActions({ className, ref, ...props }: DropzoneActionsProps) {\n return <div className={cn('flex items-center gap-xs', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { DropzoneClearProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nconst EMPTY_FILE_COUNT = 0\n\nexport function DropzoneClear({ className, ref, ...props }: DropzoneClearProps) {\n const { files, setFiles } = useDropzone()\n\n return (\n <Button\n disabled={files.length === EMPTY_FILE_COUNT}\n onClick={() => setFiles([])}\n tone=\"error\"\n variant=\"outline\"\n className={cn('w-full', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { DropzoneConfirmProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nconst EMPTY_FILE_COUNT = 0\n\nexport function DropzoneConfirm({ className, ref, ...props }: DropzoneConfirmProps) {\n const { files, onConfirm } = useDropzone(),\n handleClick = () => {\n if (onConfirm) {\n onConfirm(files)\n }\n }\n return (\n <Button\n disabled={files.length === EMPTY_FILE_COUNT}\n onClick={handleClick}\n className={cn('w-full', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { useId } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { DropzoneContainerProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneContainer({\n className,\n children,\n ...containerProps\n}: DropzoneContainerProps) {\n const {\n fileError,\n handleDragLeave,\n handleDragOver,\n handleDrop,\n handleFiles,\n inputRef,\n isHovering,\n props,\n } = useDropzone(),\n inputId = useId(),\n isDisabled = props.disabled ?? false\n\n return (\n <>\n {/* Drag-and-drop has no keyboard equivalent; the label/input and Dropzone.Trigger provide the accessible path. */}\n {/* oxlint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}\n <label\n htmlFor={inputId}\n aria-disabled={isDisabled}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n className={cn(\n 'flex size-full items-center justify-center rounded-xl border-2 border-brand-border bg-surface py-2xl transition-all outline-none',\n !isDisabled && 'cursor-pointer',\n isHovering && 'ring-8 ring-brand-border-strong/20',\n fileError && 'border-error-border',\n isDisabled && 'cursor-not-allowed opacity-50',\n className,\n )}\n {...containerProps}\n >\n <div className=\"flex flex-col items-center justify-center gap-lg\">{children}</div>\n </label>\n <input\n {...props}\n id={inputId}\n hidden\n onChange={handleFiles}\n onClick={(event) => {\n event.currentTarget.value = ''\n }}\n ref={inputRef}\n type=\"file\"\n />\n </>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { DropzoneErrorProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneError({ className, children, ref, ...props }: DropzoneErrorProps) {\n const { fileError } = useDropzone()\n\n if (!fileError && !children) {\n return undefined\n }\n\n return (\n <p\n className={cn('flex items-center gap-2xs style-text-strong--1 text-error-default', className)}\n ref={ref}\n role=\"alert\"\n {...props}\n >\n <Icon name=\"error\" />\n {children ?? fileError}\n </p>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFileLimitProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneFileLimit({ className, children, ref, ...props }: DropzoneFileLimitProps) {\n const { files, maxFiles } = useDropzone()\n\n if (maxFiles === undefined) {\n return undefined\n }\n\n return (\n <span\n className={cn('style-text-default--1 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n >\n {files.length}/{maxFiles}\n {children}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFileSizeLimitProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneFileSizeLimit({\n className,\n children,\n ref,\n ...props\n}: DropzoneFileSizeLimitProps) {\n const { maxFileSize } = useDropzone()\n\n return (\n <span className={cn('', className)} ref={ref} {...props}>\n {children}\n {maxFileSize}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFilesProps } from './dropzone.types'\n\nexport function DropzoneFiles({ className, ref, ...props }: DropzoneFilesProps) {\n return <div className={cn('flex flex-col gap-xs', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFilesHeaderProps } from './dropzone.types'\n\nexport function DropzoneFilesHeader({ className, ref, ...props }: DropzoneFilesHeaderProps) {\n return (\n <div\n className={cn('flex items-center justify-between gap-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { Meter as BaseMeter } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\ntype MeterProps = React.ComponentProps<typeof BaseMeter.Root> & VariantProps<typeof meterVariants>\ntype MeterLabelProps = React.ComponentProps<typeof BaseMeter.Label>\ntype MeterValueProps = React.ComponentProps<typeof BaseMeter.Value>\ntype MeterTrackProps = React.ComponentProps<typeof BaseMeter.Track>\ntype MeterIndicatorProps = React.ComponentProps<typeof BaseMeter.Indicator>\ntype MeterHeaderProps = React.ComponentProps<'div'>\ntype MeterFooterProps = React.ComponentProps<'div'>\ntype MeterSubtitleProps = React.ComponentProps<'span'>\n\nconst meterVariants = cva('', {\n defaultVariants: {\n orientation: 'vertical',\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n orientation: {\n horizontal:\n 'flex items-center justify-between gap-xs [&_[data-track]]:w-full [&_button]:shrink-0',\n vertical: 'flex flex-col space-y-3xs',\n },\n size: {\n large: '[&_[data-track]]:h-xs',\n medium: '[&_[data-track]]:h-2xs',\n small: '[&_[data-track]]:h-3xs',\n },\n tone: {\n accent: '[&_[data-indicator]]:bg-accent-default',\n brand: '[&_[data-indicator]]:bg-brand-default',\n error: '[&_[data-indicator]]:bg-error-default',\n info: '[&_[data-indicator]]:bg-info-default',\n neutral: '[&_[data-indicator]]:bg-neutral-default',\n success: '[&_[data-indicator]]:bg-success-default',\n warning: '[&_[data-indicator]]:bg-warning-default',\n },\n },\n})\n\nexport { meterVariants }\nexport type {\n MeterProps,\n MeterLabelProps,\n MeterValueProps,\n MeterTrackProps,\n MeterIndicatorProps,\n MeterHeaderProps,\n MeterFooterProps,\n MeterSubtitleProps,\n}\n","import { Meter as BaseMeter } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { meterVariants } from './meter.types'\nimport type { MeterProps } from './meter.types'\n\nexport function Meter({ orientation, size, tone, className, ref, ...props }: MeterProps) {\n return (\n <BaseMeter.Root\n className={cn(meterVariants({ className, orientation, size, tone }))}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { MeterFooterProps } from './meter.types'\n\nexport function MeterFooter({ className, ref, ...props }: MeterFooterProps) {\n return <div className={cn('flex items-center justify-between', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { MeterHeaderProps } from './meter.types'\n\nexport function MeterHeader({ className, ref, ...props }: MeterHeaderProps) {\n return <div className={cn('flex items-center justify-between', className)} ref={ref} {...props} />\n}\n","import { Meter as BaseMeter } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MeterIndicatorProps } from './meter.types'\n\nexport function MeterIndicator({ className, ref, ...props }: MeterIndicatorProps) {\n return (\n <BaseMeter.Indicator\n data-indicator\n className={cn('rounded-full', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Meter as BaseMeter } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MeterLabelProps } from './meter.types'\n\nexport function MeterLabel({ className, ref, ...props }: MeterLabelProps) {\n return (\n <BaseMeter.Label\n className={cn(\n 'flex items-center gap-2xs style-text-strong--1 text-on-surface [&>svg]:size-xs',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { MeterSubtitleProps } from './meter.types'\n\nexport function MeterSubtitle({ className, ref, ...props }: MeterSubtitleProps) {\n return (\n <span\n className={cn(\n 'text-left style-text-prose--2 whitespace-nowrap text-on-surface-variant',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Meter as BaseMeter } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MeterTrackProps } from './meter.types'\n\nexport function MeterTrack({ className, ref, ...props }: MeterTrackProps) {\n return (\n <BaseMeter.Track\n className={cn('w-full self-center rounded-full bg-neutral-container', className)}\n data-track\n ref={ref}\n {...props}\n />\n )\n}\n","import { Meter as BaseMeter } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MeterValueProps } from './meter.types'\n\nexport function MeterValue({ className, ref, ...props }: MeterValueProps) {\n return (\n <BaseMeter.Value\n className={cn('ml-auto text-right style-text-prose--2 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Meter as MeterRoot } from './meter'\nimport { MeterFooter } from './meter-footer'\nimport { MeterHeader } from './meter-header'\nimport { MeterIndicator } from './meter-indicator'\nimport { MeterLabel } from './meter-label'\nimport { MeterSubtitle } from './meter-subtitle'\nimport { MeterTrack } from './meter-track'\nimport { MeterValue } from './meter-value'\n\nconst Meter = Object.assign(MeterRoot, {\n Footer: MeterFooter,\n Header: MeterHeader,\n Indicator: MeterIndicator,\n Label: MeterLabel,\n Subtitle: MeterSubtitle,\n Track: MeterTrack,\n Value: MeterValue,\n})\n\nexport type {\n MeterHeaderProps,\n MeterIndicatorProps,\n MeterLabelProps,\n MeterProps,\n MeterTrackProps,\n MeterValueProps,\n MeterFooterProps,\n MeterSubtitleProps,\n} from './meter.types'\nexport { MeterHeader } from './meter-header'\nexport { MeterIndicator } from './meter-indicator'\nexport { MeterLabel } from './meter-label'\nexport { MeterTrack } from './meter-track'\nexport { MeterValue } from './meter-value'\nexport { MeterFooter } from './meter-footer'\nexport { MeterSubtitle } from './meter-subtitle'\nexport { Meter }\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { Meter, MeterFooter, MeterIndicator, MeterTrack, MeterValue } from '../meter'\nimport type { DropzoneFilesListProps } from './dropzone.types'\nimport { formatFileSize, getFileKey, useDropzone } from './dropzone.utils'\n\nconst NO_PROGRESS = 0,\n COMPLETE_PROGRESS = 100\n\nexport function DropzoneFilesList({ className, children, ref, ...props }: DropzoneFilesListProps) {\n const { files, fileProgress, removeFile, onUpload } = useDropzone()\n\n return (\n <ul className={cn('flex flex-col gap-xs', className)} ref={ref} {...props}>\n {files.map((file) => {\n const fileKey = getFileKey(file),\n progress = fileProgress[fileKey] ?? NO_PROGRESS,\n isUploading = progress >= NO_PROGRESS && progress < COMPLETE_PROGRESS,\n isUploaded = progress >= COMPLETE_PROGRESS\n\n let meterTone: 'success' | 'brand' = 'brand'\n if (isUploaded) {\n meterTone = 'success'\n }\n\n return (\n <li\n key={fileKey}\n className={cn(\n 'flex items-center justify-between gap-lg rounded-xl border bg-surface px-md py-sm',\n isUploading && 'border-border',\n isUploaded && 'border-border',\n )}\n >\n {isUploading && (\n <div className=\"flex items-center justify-center rounded-full bg-brand-container p-xs\">\n <Icon name=\"fileUpload\" className=\"size-md text-brand-on-container\" />\n </div>\n )}\n {isUploaded && (\n <div className=\"flex items-center justify-center rounded-full bg-success-container p-xs\">\n <Icon name=\"selected\" className=\"size-md text-success-on-container\" />\n </div>\n )}\n <div className=\"flex w-full flex-col justify-between gap-3xs\">\n <span className=\"style-text-default-0\">{file.name}</span>\n {onUpload && (\n <Meter orientation=\"vertical\" tone={meterTone} value={progress}>\n <MeterTrack>\n <MeterIndicator />\n </MeterTrack>\n <MeterFooter>\n <span className=\"style-text-prose--1 text-on-surface-variant\">\n {formatFileSize(file.size)}\n </span>\n <MeterValue />\n </MeterFooter>\n </Meter>\n )}\n {!onUpload && (\n <span className=\"style-text-prose--1 text-on-surface-variant\">\n {formatFileSize(file.size)}\n </span>\n )}\n </div>\n <Button variant=\"ghost\" tone=\"error\" onClick={() => removeFile(file)}>\n <Icon name=\"delete\" />\n </Button>\n </li>\n )\n })}\n {children}\n </ul>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFilesTitleProps } from './dropzone.types'\n\nexport function DropzoneFilesTitle({ className, ref, ...props }: DropzoneFilesTitleProps) {\n return <span className={cn('style-text-default-0', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneFormatsProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneFormats({ className, children, ref, ...props }: DropzoneFormatsProps) {\n const { acceptedFileTypes } = useDropzone()\n\n return (\n <span className={cn('', className)} ref={ref} {...props}>\n {acceptedFileTypes.join(', ')}\n {children}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneHeadingProps } from './dropzone.types'\n\nexport function DropzoneHeading({ className, ref, ...props }: DropzoneHeadingProps) {\n return <span className={cn('style-text-default-0', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneIconProps } from './dropzone.types'\n\nexport function DropzoneIcon({ className, ref, ...props }: DropzoneIconProps) {\n return (\n <div\n className={cn(\n 'rounded-full bg-brand-container p-sm [&>svg]:size-lg [&>svg]:text-brand-on-container',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneInfoProps } from './dropzone.types'\n\nexport function DropzoneInfo({ className, ref, ...props }: DropzoneInfoProps) {\n return (\n <div\n className={cn('flex flex-col items-center justify-center gap-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { DropzoneSubtitleProps } from './dropzone.types'\n\nexport function DropzoneSubtitle({ className, ref, ...props }: DropzoneSubtitleProps) {\n return <span className={cn('text-on-surface-variant', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport type { DropzoneTriggerProps } from './dropzone.types'\nimport { useDropzone } from './dropzone.utils'\n\nexport function DropzoneTrigger({ className, ref, ...props }: DropzoneTriggerProps) {\n const { inputRef } = useDropzone(),\n handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation()\n inputRef.current?.click()\n }\n\n return (\n <Button\n variant=\"link\"\n onClick={handleClick}\n className={cn('', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Dropzone as DropzoneRoot } from './dropzone'\nimport { DropzoneActions } from './dropzone-actions'\nimport { DropzoneClear } from './dropzone-clear'\nimport { DropzoneConfirm } from './dropzone-confirm'\nimport { DropzoneContainer } from './dropzone-container'\nimport { DropzoneError } from './dropzone-error'\nimport { DropzoneFileLimit } from './dropzone-file-limit'\nimport { DropzoneFileSizeLimit } from './dropzone-file-size-limit'\nimport { DropzoneFiles } from './dropzone-files'\nimport { DropzoneFilesHeader } from './dropzone-files-header'\nimport { DropzoneFilesList } from './dropzone-files-list'\nimport { DropzoneFilesTitle } from './dropzone-files-title'\nimport { DropzoneFormats } from './dropzone-formats'\nimport { DropzoneHeading } from './dropzone-heading'\nimport { DropzoneIcon } from './dropzone-icon'\nimport { DropzoneInfo } from './dropzone-info'\nimport { DropzoneSubtitle } from './dropzone-subtitle'\nimport { DropzoneTrigger } from './dropzone-trigger'\n\nconst Dropzone = Object.assign(DropzoneRoot, {\n Actions: DropzoneActions,\n Clear: DropzoneClear,\n Confirm: DropzoneConfirm,\n Container: DropzoneContainer,\n Error: DropzoneError,\n FileLimit: DropzoneFileLimit,\n FileSizeLimit: DropzoneFileSizeLimit,\n Files: DropzoneFiles,\n FilesHeader: DropzoneFilesHeader,\n FilesList: DropzoneFilesList,\n FilesTitle: DropzoneFilesTitle,\n Formats: DropzoneFormats,\n Heading: DropzoneHeading,\n Icon: DropzoneIcon,\n Info: DropzoneInfo,\n Subtitle: DropzoneSubtitle,\n Trigger: DropzoneTrigger,\n})\n\nexport type {\n DropzoneProps,\n DropzoneContainerProps,\n DropzoneErrorProps,\n DropzoneActionsProps,\n DropzoneClearProps,\n DropzoneConfirmProps,\n DropzoneFilesListProps,\n DropzoneFileLimitProps,\n DropzoneFilesHeaderProps,\n DropzoneFilesProps,\n DropzoneFilesTitleProps,\n DropzoneFileSizeLimitProps,\n DropzoneFormatsProps,\n DropzoneHeadingProps,\n DropzoneIconProps,\n DropzoneSubtitleProps,\n DropzoneTriggerProps,\n DropzoneInfoProps,\n} from './dropzone.types'\nexport { DropzoneContainer } from './dropzone-container'\nexport { DropzoneError } from './dropzone-error'\nexport { DropzoneFilesList as DropzoneFileList } from './dropzone-files-list'\nexport { DropzoneFileSizeLimit } from './dropzone-file-size-limit'\nexport { DropzoneFormats } from './dropzone-formats'\nexport { DropzoneHeading } from './dropzone-heading'\nexport { DropzoneIcon } from './dropzone-icon'\nexport { DropzoneSubtitle } from './dropzone-subtitle'\nexport { DropzoneTrigger } from './dropzone-trigger'\nexport { DropzoneInfo } from './dropzone-info'\nexport { DropzoneFiles } from './dropzone-files'\nexport { DropzoneFilesHeader } from './dropzone-files-header'\nexport { DropzoneFilesTitle } from './dropzone-files-title'\nexport { DropzoneActions } from './dropzone-actions'\nexport { DropzoneConfirm } from './dropzone-confirm'\nexport { DropzoneClear } from './dropzone-clear'\n\nexport { Dropzone }\n","import { cn } from '@/utils/cn'\n\nimport type { FieldProps } from './field.types'\n\nexport function Field({ className, children, ref, ...props }: FieldProps) {\n return (\n <div className={cn('flex flex-col gap-2xs', className)} ref={ref} {...props}>\n {children}\n </div>\n )\n}\n","import { createFormHookContexts } from '@tanstack/react-form'\n\nexport const { fieldContext, useFieldContext, formContext, useFormContext } =\n createFormHookContexts()\n","import { Checkbox } from '../checkbox'\nimport { useFieldContext } from '../form/form-contexts'\nimport type { FieldCheckboxProps } from './field.types'\n\nexport function FieldCheckbox({ children, ...props }: FieldCheckboxProps) {\n const field = useFieldContext<boolean>()\n\n return (\n <Checkbox\n checked={field.state.value}\n id={field.name}\n name={field.name}\n onCheckedChange={(checked) => field.handleChange(checked)}\n {...props}\n >\n {children}\n </Checkbox>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FieldDescriptionProps } from './field.types'\n\nexport function FieldDescription({ className, ref, ...props }: FieldDescriptionProps) {\n return (\n <p\n className={cn('style-text-prose--1 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport type { FieldErrorProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldErrors({ className, children, ref, ...props }: FieldErrorProps) {\n const field = useFieldContext()\n\n if (field.state.meta.errors.length === NO_ERRORS) {\n return undefined\n }\n\n return (\n <ul className={cn('space-y-3xs', className)} ref={ref} {...props}>\n {field.state.meta.errors.map((error) => (\n <li\n className=\"flex items-center gap-2xs style-text-strong--1 text-error-default\"\n key={error.message}\n >\n {error.message}\n </li>\n ))}\n {children}\n </ul>\n )\n}\n","import { Input as BaseInput } from '@base-ui/react/input'\nimport { useRef, useState } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { formatFileSize, inputVariants } from './input.types'\nimport type { InputProps } from './input.types'\n\nconst DEFAULT_COLOR = '#000000',\n EMPTY_FILE_COUNT = 0,\n SINGLE_FILE_COUNT = 1,\n defaultFileUploadButtonIcon = <Icon name=\"upload\" />,\n defaultFilesSelectedLabel = (count: number) => `${count} files selected`,\n defaultMaxFilesErrorLabel = (maxFiles: number) => {\n if (maxFiles === SINGLE_FILE_COUNT) {\n return `You can select up to ${maxFiles} file.`\n }\n return `You can select up to ${maxFiles} files.`\n },\n defaultMaxFileSizeErrorLabel = (fileName: string, maxFileSize: string) =>\n `\"${fileName}\" exceeds the maximum size of ${maxFileSize}.`\n\nfunction getStringValue(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value\n }\n return undefined\n}\n\nfunction getColorValue(\n isControlled: boolean,\n controlledValue: unknown,\n uncontrolledValue: string,\n): string {\n if (isControlled) {\n return getStringValue(controlledValue) || DEFAULT_COLOR\n }\n return uncontrolledValue || DEFAULT_COLOR\n}\n\nfunction getColorInputProps(isControlled: boolean, colorValue: string) {\n if (isControlled) {\n return { value: colorValue }\n }\n return { defaultValue: colorValue }\n}\n\nfunction getFileValidationError(\n files: File[],\n options: {\n maxFiles: number | undefined\n maxFileSize: number | undefined\n maxFilesErrorLabel: NonNullable<InputProps['maxFilesErrorLabel']>\n maxFileSizeErrorLabel: NonNullable<InputProps['maxFileSizeErrorLabel']>\n },\n): string | undefined {\n const { maxFiles, maxFileSize, maxFilesErrorLabel, maxFileSizeErrorLabel } = options,\n oversizedFile = files.find((file) => maxFileSize !== undefined && file.size > maxFileSize)\n if (maxFiles !== undefined && files.length > maxFiles) {\n return maxFilesErrorLabel(maxFiles)\n }\n\n if (oversizedFile && maxFileSize !== undefined) {\n return maxFileSizeErrorLabel(oversizedFile.name, formatFileSize(maxFileSize))\n }\n return undefined\n}\n\nfunction getFileStatus(options: {\n fileError: string | undefined\n selectedFiles: File[]\n placeholder: InputProps['placeholder']\n filesSelectedLabel: (count: number) => string\n}) {\n const { fileError, selectedFiles, placeholder, filesSelectedLabel } = options\n if (fileError) {\n return <span className=\"style-text-prose-0 text-error-default\">{fileError}</span>\n }\n if (selectedFiles.length === EMPTY_FILE_COUNT) {\n return <span className=\"style-text-prose-0 text-on-surface-variant\">{placeholder}</span>\n }\n if (selectedFiles.length === SINGLE_FILE_COUNT) {\n return selectedFiles.at(EMPTY_FILE_COUNT)?.name\n }\n return filesSelectedLabel(selectedFiles.length)\n}\n\nexport function Input({\n fileUploadButtonIcon = defaultFileUploadButtonIcon,\n fileUploadButtonLabel,\n maxFiles,\n maxFileSize,\n clearFilesLabel = 'Remove files',\n filesSelectedLabel = defaultFilesSelectedLabel,\n maxFilesErrorLabel = defaultMaxFilesErrorLabel,\n maxFileSizeErrorLabel = defaultMaxFileSizeErrorLabel,\n compact,\n variant,\n size,\n className,\n ref,\n ...props\n}: InputProps) {\n const inputRef = useRef<HTMLInputElement>(null),\n [uncontrolledColorValue, setUncontrolledColorValue] = useState<string>(\n getStringValue(props.defaultValue) || getStringValue(props.value) || DEFAULT_COLOR,\n ),\n [selectedFiles, setSelectedFiles] = useState<File[]>([]),\n [fileError, setFileError] = useState<string | undefined>(undefined)\n\n if (props.type === 'color') {\n const isControlled = props.value !== undefined,\n colorValue = getColorValue(isControlled, props.value, uncontrolledColorValue),\n { onChange, defaultValue: _defaultValue, value: _value, ...colorProps } = props,\n handleColorChange: NonNullable<typeof onChange> = (event) => {\n if (!isControlled) {\n setUncontrolledColorValue(event.currentTarget.value)\n }\n\n onChange?.(event)\n },\n handleColorRef = (node: HTMLInputElement | null) => {\n inputRef.current = node\n\n if (typeof ref === 'function') {\n ref(node)\n return\n }\n\n if (ref && typeof ref === 'object') {\n Object.assign(ref, { current: node })\n }\n }\n\n if (compact) {\n return (\n <button\n aria-label=\"Open color picker\"\n className={cn(\n 'relative outline-2 outline-transparent transition-colors focus-within:outline-border hover:cursor-pointer',\n size === 'small' && 'size-lg -outline-offset-2',\n size === 'medium' && 'size-xl -outline-offset-4',\n size === 'large' && 'size-2xl -outline-offset-6',\n className,\n )}\n disabled={props.disabled}\n onClick={() => inputRef.current?.click()}\n type=\"button\"\n >\n <div\n className={cn(\n 'size-full',\n size === 'small' && 'rounded-md',\n size === 'medium' && 'rounded-lg',\n size === 'large' && 'rounded-xl',\n )}\n style={{\n backgroundColor: colorValue,\n }}\n />\n <BaseInput\n className=\"peer pointer-events-none invisible absolute\"\n {...getColorInputProps(isControlled, colorValue)}\n onChange={handleColorChange}\n ref={handleColorRef}\n type=\"color\"\n {...colorProps}\n />\n </button>\n )\n }\n\n return (\n <button\n aria-label={`${colorValue}, open color picker`}\n className={cn(\n 'relative flex hover:cursor-pointer',\n inputVariants({ size, variant }),\n className,\n )}\n disabled={props.disabled}\n onClick={() => inputRef.current?.click()}\n type=\"button\"\n >\n <div\n className={cn(\n 'absolute top-1/2 left-xs aspect-square h-7/12 -translate-y-1/2',\n size === 'small' && 'rounded-md',\n size === 'medium' && 'rounded-lg',\n size === 'large' && 'rounded-xl',\n )}\n style={{\n backgroundColor: colorValue,\n }}\n />\n <BaseInput\n className=\"peer pointer-events-none invisible absolute top-lg\"\n {...getColorInputProps(isControlled, colorValue)}\n onChange={handleColorChange}\n ref={handleColorRef}\n type=\"color\"\n {...colorProps}\n />\n <p\n className={cn(\n 'text-left',\n size === 'small' && 'pr-2xs pl-lg style-text-default--1',\n size === 'medium' && 'pl-lg style-text-default-0',\n size === 'large' && 'pl-xl style-text-default-1',\n )}\n >\n {colorValue}\n </p>\n </button>\n )\n }\n\n if (props.type === 'file') {\n const { onChange, ...fileProps } = props,\n clearFiles = () => {\n if (inputRef.current) {\n inputRef.current.value = ''\n }\n\n setSelectedFiles([])\n setFileError(undefined)\n },\n handleFileChange: NonNullable<typeof onChange> = (event) => {\n const input = event.currentTarget,\n files = [...(input.files ?? [])],\n validationError = getFileValidationError(files, {\n maxFileSize,\n maxFileSizeErrorLabel,\n maxFiles,\n maxFilesErrorLabel,\n })\n if (validationError) {\n setSelectedFiles([])\n setFileError(validationError)\n input.value = ''\n return\n }\n\n setFileError(undefined)\n setSelectedFiles(files)\n onChange?.(event)\n }\n\n return (\n <div className=\"flex items-center justify-between gap-lg\">\n <div className=\"flex items-center gap-xs\">\n <Button variant=\"soft\" tone=\"neutral\" onClick={() => inputRef.current?.click()}>\n {fileUploadButtonIcon}\n {fileUploadButtonLabel}\n </Button>\n <BaseInput ref={inputRef} {...fileProps} hidden onChange={handleFileChange} />\n <p className=\"style-text-default-0\">\n {getFileStatus({\n fileError,\n filesSelectedLabel,\n placeholder: props.placeholder,\n selectedFiles,\n })}\n </p>\n </div>\n <Button\n aria-label={clearFilesLabel}\n size=\"medium\"\n variant=\"ghost\"\n tone=\"error\"\n onClick={clearFiles}\n >\n <Icon name=\"close\" />\n </Button>\n </div>\n )\n }\n\n return (\n <BaseInput className={cn(inputVariants({ size, variant }), className)} ref={ref} {...props} />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { Input } from '../input'\nimport type { FieldInputProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldInput({ className, ref, ...props }: FieldInputProps) {\n const field = useFieldContext<string>(),\n isInvalid =\n field.state.meta.isTouched &&\n field.state.meta.errors.length > NO_ERRORS &&\n !field.state.meta.isValid\n\n return (\n <Input\n aria-invalid={isInvalid}\n className={cn('', className)}\n id={field.name}\n name={field.name}\n onChange={(event) => field.handleChange(event.target.value)}\n ref={ref}\n value={field.state.value}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { InputGroup } from '../input-group'\nimport type { FieldInputGroupProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldInputGroup({ className, ref, ...props }: FieldInputGroupProps) {\n const field = useFieldContext<string>(),\n isInvalid =\n field.state.meta.isTouched &&\n field.state.meta.errors.length > NO_ERRORS &&\n !field.state.meta.isValid\n\n return (\n <InputGroup\n aria-invalid={isInvalid}\n className={cn('', className)}\n id={field.name}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { InputGroupInput } from '../input-group'\nimport type { FieldInputGroupInputProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldInputGroupInput({ className, ref, ...props }: FieldInputGroupInputProps) {\n const field = useFieldContext<string>(),\n isInvalid =\n field.state.meta.isTouched &&\n field.state.meta.errors.length > NO_ERRORS &&\n !field.state.meta.isValid\n\n return (\n <InputGroupInput\n aria-invalid={isInvalid}\n className={cn('', className)}\n id={field.name}\n name={field.name}\n onChange={(event) => field.handleChange(event.target.value)}\n ref={ref}\n value={field.state.value}\n {...props}\n />\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { Checkbox } from '../checkbox'\nimport type { Input } from '../input'\nimport type { InputGroup, InputGroupInput } from '../input-group'\nimport type { Radio, RadioGroup } from '../radio-group'\nimport type { Select } from '../select'\nimport type { Slider } from '../slider'\nimport type { Switch } from '../switch'\nimport type { TextArea } from '../text-area'\nimport type { Toggle } from '../toggle'\n\ntype FieldDescriptionProps = React.ComponentProps<'p'>\ntype FieldErrorProps = React.ComponentProps<'ul'>\ntype FieldInputGroupProps = React.ComponentProps<typeof InputGroup>\ntype FieldInputGroupInputProps = React.ComponentProps<typeof InputGroupInput>\ntype FieldInputProps = React.ComponentProps<typeof Input>\ntype FieldLabelProps = React.ComponentProps<'div'> &\n VariantProps<typeof fieldLabelVariants> & {\n showRequired?: boolean\n }\ntype FieldSelectProps = React.ComponentProps<typeof Select>\ntype FieldSliderProps = React.ComponentProps<typeof Slider>\ntype FieldTextAreaProps = React.ComponentProps<typeof TextArea>\ntype FieldCheckboxProps = React.ComponentProps<typeof Checkbox>\ntype FieldRadioProps = React.ComponentProps<typeof Radio>\ntype FieldRadioGroupProps = React.ComponentProps<typeof RadioGroup>\ntype FieldSwitchProps = React.ComponentProps<typeof Switch>\ntype FieldToggleProps = React.ComponentProps<typeof Toggle>\ntype FieldProps = React.ComponentProps<'div'>\ntype FieldSetProps = React.ComponentProps<'div'>\ntype FieldRowProps = React.ComponentProps<'div'>\n\nexport const fieldLabelVariants = cva('whitespace-nowrap', {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n },\n variants: {\n size: {\n large: 'style-text-default-1',\n medium: 'style-text-default-0',\n small: 'style-text-default--1',\n },\n variant: {\n primary: 'text-on-surface',\n secondary: 'text-on-surface-variant',\n },\n },\n})\n\nexport type {\n FieldDescriptionProps,\n FieldErrorProps,\n FieldInputGroupProps,\n FieldInputGroupInputProps,\n FieldInputProps,\n FieldLabelProps,\n FieldSelectProps,\n FieldSliderProps,\n FieldTextAreaProps,\n FieldCheckboxProps,\n FieldRadioProps,\n FieldRadioGroupProps,\n FieldSwitchProps,\n FieldToggleProps,\n FieldProps,\n FieldSetProps,\n FieldRowProps,\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { fieldLabelVariants } from './field.types'\nimport type { FieldLabelProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldLabel({\n size,\n variant,\n showRequired = false,\n className,\n children,\n ref,\n ...props\n}: FieldLabelProps) {\n const field = useFieldContext(),\n fieldName = field.name\n .replace(/(?<letter>[A-Z])/g, ' $<letter>')\n .replace(/^./, (str) => str.toUpperCase()),\n isInvalid = field.state.meta.errors.length > NO_ERRORS\n\n return (\n <div\n className={cn(\n fieldLabelVariants({ size, variant }),\n className,\n isInvalid && 'text-error-default',\n )}\n ref={ref}\n {...props}\n >\n {children || fieldName}\n {showRequired && <span className=\"ml-3xs text-error-default\">*</span>}\n </div>\n )\n}\n","import type { Radio as BaseRadio, RadioGroup as BaseRadioGroup } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nconst radioVariants = cva(\n 'group flex size-sm shrink-0 items-center justify-center rounded-full outline outline-transparent transition-all hover:outline-border-strong data-checked:bg-brand-default data-checked:outline-brand-border-strong data-disabled:opacity-50',\n {\n defaultVariants: {\n variant: 'elevated',\n },\n variants: {\n variant: {\n elevated: 'bg-surface shadow-2xs',\n inSurface: 'bg-surface-low inset-shadow-2xs',\n },\n },\n },\n)\n\ntype RadioProps = React.ComponentProps<typeof BaseRadio.Root> & VariantProps<typeof radioVariants>\ntype RadioGroupProps = React.ComponentProps<typeof BaseRadioGroup>\n\nexport type { RadioProps, RadioGroupProps }\nexport { radioVariants }\n","import { Radio as BaseRadio } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Label } from '../label'\nimport { radioVariants } from './radio-group.types'\nimport type { RadioProps } from './radio-group.types'\n\nexport function Radio({ variant, className, children, ref, ...props }: RadioProps) {\n return (\n <Label htmlFor={props.id}>\n <BaseRadio.Root className={cn(radioVariants({ className, variant }))} ref={ref} {...props}>\n <BaseRadio.Indicator\n data-indicator\n className=\"size-2xs origin-center scale-0 rounded-full bg-surface shadow-2xs transition-transform duration-200 ease-out data-checked:scale-100\"\n />\n </BaseRadio.Root>\n {children}\n </Label>\n )\n}\n","import { RadioGroup as BaseRadioGroup } from '@base-ui/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { RadioGroupProps } from './radio-group.types'\n\nexport function RadioGroup({ className, ref, ...props }: RadioGroupProps) {\n const id = React.useId()\n\n return (\n <BaseRadioGroup\n aria-labelledby={id}\n className={cn('flex flex-col items-start gap-2xs data-disabled:opacity-50', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Radio } from './radio'\nimport { RadioGroup as RadioGroupRoot } from './radio-group'\n\nconst RadioGroup = Object.assign(RadioGroupRoot, {\n Radio,\n})\n\nexport type { RadioGroupProps, RadioProps } from './radio-group.types'\nexport { Radio } from './radio'\n\nexport { RadioGroup }\n","import { useFieldContext } from '../form/form-contexts'\nimport { Radio } from '../radio-group'\nimport type { FieldRadioProps } from './field.types'\n\nexport function FieldRadio({ ...props }: FieldRadioProps) {\n const field = useFieldContext<string>()\n\n return (\n <Radio\n {...props}\n onChange={(event) => {\n if (event.target instanceof HTMLInputElement) {\n field.handleChange(event.target.value)\n }\n }}\n value={field.state.value}\n />\n )\n}\n","import { useFieldContext } from '../form/form-contexts'\nimport { RadioGroup } from '../radio-group'\nimport type { FieldRadioGroupProps } from './field.types'\n\nexport function FieldRadioGroup({ ...props }: FieldRadioGroupProps) {\n const field = useFieldContext<string>()\n\n return (\n <RadioGroup\n name={field.name}\n onValueChange={(value) => field.handleChange(String(value))}\n value={field.state.value}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FieldRowProps } from './field.types'\n\nexport function FieldRow({ className, ref, ...props }: FieldRowProps) {\n return (\n <div\n className={cn('flex items-center justify-between gap-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { useFieldContext } from '../form/form-contexts'\nimport { Select } from '../select'\nimport type { FieldSelectProps } from './field.types'\n\nexport function FieldSelect({ children, ...props }: FieldSelectProps) {\n const field = useFieldContext()\n\n return (\n <Select value={field.state.value} onValueChange={(value) => field.setValue(value)} {...props}>\n {children}\n </Select>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FieldSetProps } from './field.types'\n\nexport function FieldSet({ className, ref, ...props }: FieldSetProps) {\n return <div className={cn('flex w-full flex-col gap-2xs', className)} ref={ref} {...props} />\n}\n","import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip'\n\nimport type { TooltipProps } from './tooltip.types'\n\nexport function Tooltip({ ...props }: TooltipProps) {\n return (\n <BaseTooltip.Provider>\n <BaseTooltip.Root {...props} />\n </BaseTooltip.Provider>\n )\n}\n","import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TooltipContentProps } from './tooltip.types'\n\nconst DEFAULT_ALIGN_OFFSET = 0,\n DEFAULT_SIDE_OFFSET = 5\n\nexport function TooltipContent({\n side = 'top',\n alignOffset = DEFAULT_ALIGN_OFFSET,\n sideOffset = DEFAULT_SIDE_OFFSET,\n className,\n children,\n ...props\n}: TooltipContentProps) {\n return (\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner\n className=\"z-50\"\n side={side}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n >\n <BaseTooltip.Popup\n className={cn(\n 'w-fit origin-(--transform-origin) animate-in rounded-md bg-surface-2 px-xs py-3xs text-sm text-balance shadow-md fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n className,\n )}\n {...props}\n >\n {children}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n )\n}\n","import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport type { TooltipTriggerProps } from './tooltip.types'\n\nexport function TooltipTrigger({ children, ...props }: TooltipTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return <BaseTooltip.Trigger render={render} {...props} />\n}\n","import { Tooltip as TooltipRoot } from './tooltip'\nimport { TooltipContent } from './tooltip-context'\nimport { TooltipTrigger } from './tooltip-trigger'\n\nconst Tooltip = Object.assign(TooltipRoot, {\n Content: TooltipContent,\n Trigger: TooltipTrigger,\n})\n\nexport type { TooltipContentProps, TooltipProps, TooltipTriggerProps } from './tooltip.types'\nexport { TooltipContent } from './tooltip-context'\nexport { TooltipTrigger } from './tooltip-trigger'\n\nexport { Tooltip }\n","import { Slider as BaseSlider } from '@base-ui/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../tooltip'\nimport type { SliderThumbProps } from './slider.types'\n\nexport function SliderThumb({ className, ref, hide, ...props }: SliderThumbProps) {\n const [isHovering, setIsHovering] = React.useState(false),\n [isDragging, setIsDragging] = React.useState(false),\n thumbRef = React.useRef<HTMLDivElement>(null),\n setRefs = React.useCallback(\n (node: HTMLDivElement | null) => {\n thumbRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ;(ref as { current: HTMLDivElement | null }).current = node\n }\n },\n [ref],\n )\n React.useEffect(() => {\n if (!thumbRef.current) {\n return undefined\n }\n const node = thumbRef.current,\n update = () => setIsDragging(node.hasAttribute('data-dragging')),\n observer = new MutationObserver(update)\n update()\n observer.observe(node, { attributeFilter: ['data-dragging'], attributes: true })\n return () => observer.disconnect()\n }, [])\n\n return (\n <Tooltip open={isHovering || isDragging} disabled={hide}>\n <TooltipTrigger delay={0}>\n <BaseSlider.Thumb\n data-slot=\"slider-thumb\"\n className={cn(\n 'absolute aspect-square rounded-full bg-surface transition-[width,height,opacity] outline-none data-dragging:cursor-grabbing data-dragging:shadow-sm hover:[&:not([data-dragging])]:cursor-pointer',\n className,\n )}\n onPointerEnter={() => setIsHovering(true)}\n onPointerLeave={() => setIsHovering(false)}\n ref={setRefs}\n {...props}\n />\n </TooltipTrigger>\n <TooltipContent sideOffset={10}>\n <BaseSlider.Value />\n </TooltipContent>\n </Tooltip>\n )\n}\n","import type { Slider as BaseSlider } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\n\nconst sliderVariants = cva('flex h-lg w-full items-center', {\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n size: {\n large:\n \"[&_[data-slot='slider-thumb']]:size-md [&_[data-slot='slider-thumb']]:border-3 [&_[data-slot='slider-thumb'][data-dragging]]:size-lg [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-xs [&_[data-slot='slider-track'][data-orientation='vertical']]:w-xs\",\n medium:\n \"[&_[data-slot='slider-thumb']]:size-sm [&_[data-slot='slider-thumb']]:border-2 [&_[data-slot='slider-thumb'][data-dragging]]:size-md [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-2xs [&_[data-slot='slider-track'][data-orientation='vertical']]:w-2xs\",\n small:\n \"[&_[data-slot='slider-thumb']]:size-xs [&_[data-slot='slider-thumb']]:border [&_[data-slot='slider-thumb'][data-dragging]]:size-sm [&_[data-slot='slider-track'][data-orientation='horizontal']]:h-3xs [&_[data-slot='slider-track'][data-orientation='vertical']]:w-3xs\",\n },\n tone: {\n accent:\n \"[&_[data-slot='slider-thumb']]:border-accent-default [&_[data-slot=slider-indicator]]:bg-accent-default [&_[data-slot=slider-track]]:bg-accent-container-high\",\n brand:\n \"[&_[data-slot='slider-thumb']]:border-brand-default [&_[data-slot=slider-indicator]]:bg-brand-default [&_[data-slot=slider-track]]:bg-brand-container-high\",\n error:\n \"[&_[data-slot='slider-thumb']]:border-error-default [&_[data-slot=slider-indicator]]:bg-error-default [&_[data-slot=slider-track]]:bg-error-container-high\",\n info: \"[&_[data-slot='slider-thumb']]:border-info-default [&_[data-slot=slider-indicator]]:bg-info-default [&_[data-slot=slider-track]]:bg-info-container-high\",\n neutral:\n \"[&_[data-slot='slider-thumb']]:border-neutral-default [&_[data-slot=slider-indicator]]:bg-neutral-default [&_[data-slot=slider-track]]:bg-neutral-container-high\",\n success:\n \"[&_[data-slot='slider-thumb']]:border-success-default [&_[data-slot=slider-indicator]]:bg-success-default [&_[data-slot=slider-track]]:bg-success-container-high\",\n warning:\n \"[&_[data-slot='slider-thumb']]:border-warning-default [&_[data-slot=slider-indicator]]:bg-warning-default [&_[data-slot=slider-track]]:bg-warning-container-high\",\n },\n },\n})\n\ntype SliderProps = ComponentProps<typeof BaseSlider.Root> &\n VariantProps<typeof sliderVariants> & {\n showIndicator?: boolean\n showThumbOnHover?: boolean\n showTooltip?: boolean\n }\ntype SliderThumbProps = ComponentProps<typeof BaseSlider.Thumb> & {\n hide?: boolean\n}\n\nexport type { SliderProps, SliderThumbProps }\nexport { sliderVariants }\n","import { Slider as BaseSlider } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { SliderThumb } from './slider-thumb'\nimport { sliderVariants } from './slider.types'\nimport type { SliderProps } from './slider.types'\n\nconst MIN_DEFAULT = 0,\n MAX_DEFAULT = 100,\n STEP_DEFAULT = 1\n\nfunction resolveThumbValues(\n value: SliderProps['value'],\n defaultValue: SliderProps['defaultValue'],\n min: number,\n): number[] {\n if (typeof value === 'number') {\n return [value]\n }\n if (Array.isArray(value)) {\n return [...value]\n }\n if (typeof defaultValue === 'number') {\n return [defaultValue]\n }\n if (Array.isArray(defaultValue)) {\n return [...defaultValue]\n }\n return [min]\n}\n\nexport function Slider({\n size,\n tone,\n defaultValue,\n min = MIN_DEFAULT,\n max = MAX_DEFAULT,\n step = STEP_DEFAULT,\n showIndicator = true,\n showTooltip = true,\n showThumbOnHover = true,\n value,\n onValueChange,\n className,\n 'aria-label': ariaLabel = 'Slider',\n ref,\n ...props\n}: SliderProps) {\n const thumbValues = resolveThumbValues(value, defaultValue, min)\n\n return (\n <BaseSlider.Root\n className={cn(sliderVariants({ size, tone }), className)}\n defaultValue={defaultValue}\n data-slot=\"slider-root\"\n max={max}\n min={min}\n onValueChange={onValueChange}\n ref={ref}\n step={step}\n value={value}\n {...props}\n >\n <BaseSlider.Control className=\"shrink-0 hover:cursor-pointer data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full\">\n <BaseSlider.Track\n data-slot=\"slider-track\"\n className={cn(\n 'relative size-full rounded-full',\n !showThumbOnHover &&\n \"**:data-[slot='slider-thumb']:opacity-0 hover:**:data-[slot='slider-thumb']:opacity-100 active:**:data-[slot='slider-thumb']:opacity-100 data-dragging:**:data-[slot='slider-thumb']:opacity-100\",\n )}\n >\n <BaseSlider.Indicator\n data-slot=\"slider-indicator\"\n className={cn('rounded-full', !showIndicator && 'opacity-0')}\n />\n {[...thumbValues.keys()].map((index) => (\n <SliderThumb aria-label={ariaLabel} index={index} key={index} hide={!showTooltip} />\n ))}\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n )\n}\n","import { Slider as SliderRoot } from './slider'\nimport { SliderThumb } from './slider-thumb'\n\nconst Slider = Object.assign(SliderRoot, {\n Thumb: SliderThumb,\n})\n\nexport type { SliderProps, SliderThumbProps } from './slider.types'\nexport { SliderThumb } from './slider-thumb'\n\nexport { Slider }\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { Slider } from '../slider'\nimport type { FieldSliderProps } from './field.types'\n\nexport function FieldSlider({ className, ref, ...props }: FieldSliderProps) {\n const field = useFieldContext<number | readonly number[]>()\n\n return (\n <Slider\n className={cn('', className)}\n onValueChange={(value) => field.setValue(value)}\n ref={ref}\n value={field.state.value}\n {...props}\n />\n )\n}\n","import { Switch as BaseSwitch } from '@base-ui/react/switch'\n\nimport { cn } from '@/utils/cn'\n\nimport { Label } from '../label'\nimport type { SwitchProps } from './switch.types'\n\nexport function Switch({ children, className, ref, ...props }: SwitchProps) {\n return (\n <Label className=\"flex items-center gap-xs\">\n <BaseSwitch.Root\n className={cn(\n 'group relative flex h-lg w-2xl items-center rounded-full bg-surface-low bg-size-[6.5rem_100%] outline-2 outline-transparent transition-colors ease-[cubic-bezier(0.26,0.75,0.38,0.45)] before:absolute before:rounded-full hover:cursor-pointer hover:not-disabled:outline-accent-border-strong disabled:pointer-events-none disabled:opacity-50 data-checked:bg-accent-default data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n >\n <BaseSwitch.Thumb className=\"size-md translate-x-[calc(0%+3px)] rounded-full shadow-2xs transition-transform duration-500 ease-[cubic-bezier(0.68,-0.55,0.27,1.55)] data-checked:translate-x-[calc(100%--7px)] data-checked:bg-accent-on-default data-unchecked:bg-white\" />\n </BaseSwitch.Root>\n {children != undefined && (\n <span data-slot=\"switch-label\" className=\"leading-none\">\n {children}\n </span>\n )}\n </Label>\n )\n}\n","import { useFieldContext } from '../form/form-contexts'\nimport { Switch } from '../switch'\nimport type { FieldSwitchProps } from './field.types'\n\nexport function FieldSwitch({ children, ...props }: FieldSwitchProps) {\n const field = useFieldContext<boolean>()\n\n return (\n <Switch\n checked={field.state.value}\n id={field.name}\n name={field.name}\n onCheckedChange={(checked) => field.handleChange(checked)}\n {...props}\n >\n {children}\n </Switch>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const textAreaVariants = cva(\n 'relative flex resize flex-col overflow-hidden rounded-xl outline outline-transparent transition-[outline] hover:not-focus-within:outline-border-strong data-[disabled=true]:cursor-not-allowed',\n {\n defaultVariants: {\n variant: 'primary',\n },\n variants: {\n variant: {\n ghost: 'bg-transparent',\n outline: 'border border-border',\n primary: 'bg-surface shadow-2xs',\n secondary: 'bg-neutral-container',\n },\n },\n },\n)\n\nexport type TextAreaProps = React.ComponentProps<'textarea'> & VariantProps<typeof textAreaVariants>\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { textAreaVariants } from './text-area.types'\nimport type { TextAreaProps } from './text-area.types'\n\nfunction getValue(\n isControlled: boolean,\n value: TextAreaProps['value'],\n internalValue: string,\n): string {\n if (!isControlled) {\n return internalValue\n }\n if (value === undefined || value === null) {\n return ''\n }\n return String(value)\n}\n\nexport function TextArea({ variant, className, ref, ...props }: TextAreaProps) {\n const isControlled = props.value !== undefined,\n [internalValue, setInternalValue] = React.useState(String(props.defaultValue ?? '')),\n value = getValue(isControlled, props.value, internalValue),\n { maxLength } = props,\n hasMaxLength = typeof maxLength === 'number',\n isMaxLengthExceeded = hasMaxLength && value.length >= maxLength,\n handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value)\n }\n\n props.onChange?.(event)\n }\n\n return (\n <div\n className={cn(\n textAreaVariants({ className, variant }),\n isMaxLengthExceeded && 'outline-error-border-strong',\n !isMaxLengthExceeded && 'focus-within:outline-brand-border-strong',\n )}\n data-disabled={props.disabled || undefined}\n >\n <textarea\n className=\"grow resize-none px-sm py-xs style-text-prose-0 outline-none focus-within:caret-brand-border-strong disabled:cursor-not-allowed disabled:opacity-50\"\n ref={ref}\n {...props}\n onChange={handleChange}\n value={value}\n />\n {hasMaxLength && (\n <span\n className={cn(\n 'w-full px-xs py-2xs text-right style-text-default--1 text-on-surface-variant',\n isMaxLengthExceeded && 'text-error-default',\n )}\n >\n {value.length} / {maxLength}\n </span>\n )}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useFieldContext } from '../form/form-contexts'\nimport { TextArea } from '../text-area'\nimport type { FieldTextAreaProps } from './field.types'\n\nconst NO_ERRORS = 0\n\nexport function FieldTextArea({ className, ref, ...props }: FieldTextAreaProps) {\n const field = useFieldContext<string>(),\n isInvalid =\n field.state.meta.isTouched &&\n field.state.meta.errors.length > NO_ERRORS &&\n !field.state.meta.isValid\n\n return (\n <TextArea\n aria-invalid={isInvalid}\n className={cn('', className)}\n id={field.name}\n name={field.name}\n onChange={(event) => field.handleChange(event.target.value)}\n ref={ref}\n value={field.state.value}\n {...props}\n />\n )\n}\n","import { createContext, useContext } from 'react'\n\ninterface ToggleGroupContextType {\n size?: 'small' | 'medium' | 'large'\n}\n\nconst ToggleGroupContext = createContext<ToggleGroupContextType | undefined>(undefined),\n useToggleGroupContext = () => {\n const context = useContext(ToggleGroupContext)\n return context\n }\n\nexport { ToggleGroupContext, useToggleGroupContext }\nexport type { ToggleGroupContextType }\n","import type { Toggle, ToggleState } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const toggleVariants = cva(\n 'flex items-center justify-center rounded-full text-on-surface-variant transition-all hover:cursor-pointer disabled:opacity-70',\n {\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n size: {\n large:\n 'h-2xl gap-xs px-sm font-body text-base leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-2xl [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-lg',\n medium:\n 'h-xl gap-2xs px-xs font-body text-sm leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-xl [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-md',\n small:\n 'h-lg gap-3xs px-2xs font-body text-xs leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-lg [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-sm',\n },\n tone: {\n accent:\n 'hover:not-disabled:bg-accent-container hover:not-disabled:text-accent-on-container data-pressed:text-accent-default',\n brand:\n 'hover:not-disabled:bg-brand-container hover:not-disabled:text-brand-on-container data-pressed:text-brand-default',\n error:\n 'hover:not-disabled:bg-error-container hover:not-disabled:text-error-on-container data-pressed:text-error-default',\n info: 'hover:not-disabled:bg-info-container hover:not-disabled:text-info-on-container data-pressed:text-info-default',\n neutral:\n 'hover:not-disabled:bg-neutral-container-high hover:not-disabled:text-neutral-on-container data-pressed:text-neutral-default',\n success:\n 'hover:not-disabled:bg-success-container hover:not-disabled:text-success-on-container data-pressed:text-success-default',\n warning:\n 'hover:not-disabled:bg-warning-container hover:not-disabled:text-warning-on-container data-pressed:text-warning-default',\n },\n },\n },\n)\n\nexport type ToggleProps = Omit<React.ComponentProps<typeof Toggle>, 'children'> &\n VariantProps<typeof toggleVariants> & {\n children?: React.ReactNode | ((state: ToggleState) => React.ReactNode)\n }\n","import type { ToggleState } from '@base-ui/react'\nimport { Toggle as BaseToggle } from '@base-ui/react/toggle'\nimport { useContext } from 'react'\nimport type { ReactNode } from 'react'\n\nimport { cn } from '@/utils/cn'\nimport { hasSingleElementChild } from '@/utils/has-single-element-child'\n\nimport { ToggleGroupContext } from '../toggle-group/toggle-group-context'\nimport { toggleVariants } from './toggle.types'\nimport type { ToggleProps } from './toggle.types'\n\nfunction getContent(children: ToggleProps['children'], state: ToggleState): ReactNode {\n if (typeof children === 'function') {\n return children(state)\n }\n return children\n}\n\nexport function Toggle({ size, tone, className, children, ref, ...props }: ToggleProps) {\n const toggleGroupContext = useContext(ToggleGroupContext),\n effectiveSize = size ?? toggleGroupContext?.size ?? 'medium'\n\n return (\n <BaseToggle\n ref={ref}\n {...props}\n render={(innerProps, state) => {\n const content = getContent(children, state)\n let iconOnly: '' | undefined = undefined\n\n if (hasSingleElementChild(content)) {\n iconOnly = ''\n }\n\n return (\n <button\n {...innerProps}\n data-icon-only={iconOnly}\n className={cn(toggleVariants({ className, size: effectiveSize, tone }))}\n type=\"button\"\n >\n {content}\n </button>\n )\n }}\n />\n )\n}\n","import { useFieldContext } from '../form/form-contexts'\nimport { Toggle } from '../toggle'\nimport type { FieldToggleProps } from './field.types'\n\nexport function FieldToggle({ ...props }: FieldToggleProps) {\n const field = useFieldContext<boolean>()\n\n return (\n <Toggle\n id={field.name}\n name={field.name}\n onChange={(_e) => field.handleChange(!field.state.value)}\n pressed={field.state.value}\n {...props}\n />\n )\n}\n","import { Field as FieldRoot } from './field'\nimport { FieldCheckbox } from './field-checkbox'\nimport { FieldDescription } from './field-description'\nimport { FieldErrors } from './field-errors'\nimport { FieldInput } from './field-input'\nimport { FieldInputGroup } from './field-input-group'\nimport { FieldInputGroupInput } from './field-input-group-input'\nimport { FieldLabel } from './field-label'\nimport { FieldRadio } from './field-radio'\nimport { FieldRadioGroup } from './field-radio-group'\nimport { FieldRow } from './field-row'\nimport { FieldSelect } from './field-select'\nimport { FieldSet } from './field-set'\nimport { FieldSlider } from './field-slider'\nimport { FieldSwitch } from './field-switch'\nimport { FieldTextArea } from './field-text-area'\nimport { FieldToggle } from './field-toggle'\n\nconst Field = Object.assign(FieldRoot, {\n Checkbox: FieldCheckbox,\n Description: FieldDescription,\n Errors: FieldErrors,\n Input: FieldInput,\n InputGroup: FieldInputGroup,\n InputGroupInput: FieldInputGroupInput,\n Label: FieldLabel,\n Radio: FieldRadio,\n RadioGroup: FieldRadioGroup,\n Row: FieldRow,\n Select: FieldSelect,\n Set: FieldSet,\n Slider: FieldSlider,\n Switch: FieldSwitch,\n TextArea: FieldTextArea,\n Toggle: FieldToggle,\n})\n\nexport type {\n FieldDescriptionProps,\n FieldErrorProps,\n FieldInputProps,\n FieldLabelProps,\n FieldProps,\n FieldSelectProps,\n FieldSliderProps,\n FieldTextAreaProps,\n FieldCheckboxProps,\n FieldRadioProps,\n FieldRadioGroupProps,\n FieldSwitchProps,\n FieldToggleProps,\n FieldInputGroupInputProps,\n FieldInputGroupProps,\n FieldSetProps,\n FieldRowProps,\n} from './field.types'\nexport { FieldDescription } from './field-description'\nexport { FieldErrors } from './field-errors'\nexport { FieldInput } from './field-input'\nexport { FieldLabel } from './field-label'\nexport { FieldSlider } from './field-slider'\nexport { FieldSelect } from './field-select'\nexport { FieldTextArea } from './field-text-area'\nexport { FieldCheckbox } from './field-checkbox'\nexport { FieldRadio } from './field-radio'\nexport { FieldRadioGroup } from './field-radio-group'\nexport { FieldSwitch } from './field-switch'\nexport { FieldToggle } from './field-toggle'\nexport { FieldInputGroup } from './field-input-group'\nexport { FieldInputGroupInput } from './field-input-group-input'\nexport { FieldSet } from './field-set'\nexport { FieldRow } from './field-row'\n\nexport { Field }\n","import { cn } from '@/utils/cn'\n\ntype FormProps = React.ComponentProps<'form'>\n\nexport function Form({ className, ref, ...props }: FormProps) {\n return <form className={cn('flex flex-col gap-sm', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { Alert, AlertDescription, AlertIcon, AlertTitle } from '../alert'\nimport { Icon } from '../icon'\nimport { useFormContext } from './form-contexts'\nimport type { FormErrorsProps } from './form.types'\n\nconst collectObjectMessages = (value: object, acc: Set<string>) => {\n const { message } = value as { message?: unknown }\n if (typeof message === 'string') {\n acc.add(message)\n return\n }\n Object.values(value).forEach((nestedValue) => collectMessages(nestedValue, acc))\n },\n collectStringMessage = (value: string, acc: Set<string>) => {\n if (value.trim()) {\n acc.add(value)\n }\n },\n collectMessages = (value: unknown, acc: Set<string>) => {\n if (value == undefined) {\n return\n }\n if (typeof value === 'string') {\n collectStringMessage(value, acc)\n return\n }\n if (Array.isArray(value)) {\n value.forEach((inputValue) => collectMessages(inputValue, acc))\n return\n }\n if (typeof value === 'object') {\n collectObjectMessages(value, acc)\n }\n }\n\nexport function FormErrors({ className, children, ref, ...props }: FormErrorsProps) {\n const form = useFormContext()\n\n return (\n <form.Subscribe selector={(state) => [state.errors, state.fieldMeta]}>\n {([errors, fieldMeta]) => {\n const messages = new Set<string>()\n collectMessages(errors, messages)\n Object.values(fieldMeta as Record<string, { errors?: unknown }>).forEach((meta) =>\n collectMessages(meta.errors, messages),\n )\n\n if (!messages.size) {\n return undefined\n }\n\n return (\n <Alert className={cn('', className)} ref={ref} tone=\"error\" {...props}>\n <AlertIcon>\n <Icon name=\"fieldError\" />\n </AlertIcon>\n <AlertTitle>{children}</AlertTitle>\n <AlertDescription>\n <ul className=\"list-inside list-disc has-[>:only-child]:list-none\">\n {[...messages].map((message) => (\n <li key={message}>{message}</li>\n ))}\n </ul>\n </AlertDescription>\n </Alert>\n )\n }}\n </form.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FormFooterProps } from './form.types'\n\nexport function FormFooter({\n orientation = 'horizontal',\n className,\n ref,\n ...props\n}: FormFooterProps) {\n return (\n <div\n className={cn(\n 'flex gap-2xs',\n className,\n orientation === 'horizontal' && 'flex-row',\n orientation === 'vertical' && 'flex-col',\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useFormContext } from './form-contexts'\nimport type { FormResetProps } from './form.types'\n\nexport function FormReset({ className, ref, ...props }: FormResetProps) {\n const form = useFormContext(),\n handleClick = () => {\n form.reset()\n }\n\n return (\n <form.Subscribe selector={(state) => state}>\n {(state) => (\n <Button\n className={cn('w-full', className)}\n disabled={!state.values}\n onClick={handleClick}\n ref={ref}\n variant=\"outline\"\n tone=\"neutral\"\n type=\"reset\"\n {...props}\n />\n )}\n </form.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FormSetProps } from './form.types'\n\nexport function FormSet({ className, ref, ...props }: FormSetProps) {\n return <div className={cn('flex flex-col gap-xs', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { FormSetContentProps } from './form.types'\n\nexport function FormSetContent({ className, ref, ...props }: FormSetContentProps) {\n return <div className={cn('flex flex-col gap-md', className)} ref={ref} {...props} />\n}\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { Button } from '../button'\n\ntype FormProps = React.ComponentProps<'form'>\ntype FormSubmitProps = React.ComponentProps<typeof Button>\ntype FormResetProps = React.ComponentProps<typeof Button>\ntype FormErrorsProps = React.ComponentProps<'div'> & {\n headerLabel?: string\n}\ntype FormSetProps = React.ComponentProps<'div'>\ntype FormSetHeadingProps = React.ComponentProps<'span'> &\n VariantProps<typeof formSetHeadingVariants>\ntype FormSetContentProps = React.ComponentProps<'div'>\ntype FormFooterProps = React.ComponentProps<'div'> & {\n orientation?: 'horizontal' | 'vertical'\n}\n\nconst formSetHeadingVariants = cva('', {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'style-text-strong-2',\n medium: 'style-text-strong-1',\n small: 'style-text-strong-0',\n },\n },\n})\n\nexport type {\n FormProps,\n FormSubmitProps,\n FormResetProps,\n FormErrorsProps,\n FormSetProps,\n FormSetHeadingProps,\n FormSetContentProps,\n FormFooterProps,\n}\nexport { formSetHeadingVariants }\n","import { cn } from '@/utils/cn'\n\nimport { formSetHeadingVariants } from './form.types'\nimport type { FormSetHeadingProps } from './form.types'\n\nexport function FormSetHeading({ size, className, ref, ...props }: FormSetHeadingProps) {\n return <span className={cn(formSetHeadingVariants({ className, size }))} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useFormContext } from './form-contexts'\nimport type { FormSubmitProps } from './form.types'\n\nexport function FormSubmit({ className, children, ref, ...props }: FormSubmitProps) {\n const form = useFormContext()\n\n return (\n <form.Subscribe selector={(state) => state}>\n {(state) => (\n <Button\n className={cn('w-full', className)}\n disabled={state.isSubmitting || !state.canSubmit}\n ref={ref}\n type=\"submit\"\n {...props}\n >\n {state.isSubmitting && <Icon name=\"spinner\" className=\"animate-spin\" />}\n {!state.isSubmitting && children}\n </Button>\n )}\n </form.Subscribe>\n )\n}\n","import { createFormHook } from '@tanstack/react-form'\n\nimport {\n FieldCheckbox,\n FieldDescription,\n FieldErrors,\n FieldInput,\n FieldInputGroup,\n FieldInputGroupInput,\n FieldLabel,\n FieldRadio,\n FieldRadioGroup,\n FieldSelect,\n FieldSet,\n FieldSlider,\n FieldSwitch,\n FieldTextArea,\n FieldToggle,\n} from '../field'\nimport { FieldRow } from '../field/field-row'\nimport { fieldContext, formContext } from './form-contexts'\nimport { FormErrors } from './form-errors'\nimport { FormFooter } from './form-footer'\nimport { FormReset } from './form-reset'\nimport { FormSet } from './form-set'\nimport { FormSetContent } from './form-set-content'\nimport { FormSetHeading } from './form-set-heading'\nimport { FormSubmit } from './form-submit'\n\nexport { fieldContext, formContext, useFieldContext, useFormContext } from './form-contexts'\n\nexport const { useAppForm, withFieldGroup, withForm, useTypedAppFormContext } = createFormHook({\n fieldComponents: {\n Checkbox: FieldCheckbox,\n Description: FieldDescription,\n Errors: FieldErrors,\n Input: FieldInput,\n InputGroup: FieldInputGroup,\n InputGroupInput: FieldInputGroupInput,\n Label: FieldLabel,\n Radio: FieldRadio,\n RadioGroup: FieldRadioGroup,\n Row: FieldRow,\n Select: FieldSelect,\n Set: FieldSet,\n Slider: FieldSlider,\n Switch: FieldSwitch,\n TextArea: FieldTextArea,\n Toggle: FieldToggle,\n },\n fieldContext,\n formComponents: {\n Errors: FormErrors,\n Footer: FormFooter,\n Reset: FormReset,\n Set: FormSet,\n SetContent: FormSetContent,\n SetHeading: FormSetHeading,\n Submit: FormSubmit,\n },\n formContext,\n})\n","import { Form as FormRoot } from './form'\nimport { FormErrors } from './form-errors'\nimport { FormFooter } from './form-footer'\nimport { FormReset } from './form-reset'\nimport { FormSet } from './form-set'\nimport { FormSetContent } from './form-set-content'\nimport { FormSetHeading } from './form-set-heading'\nimport { FormSubmit } from './form-submit'\n\nconst Form = Object.assign(FormRoot, {\n Errors: FormErrors,\n Footer: FormFooter,\n Reset: FormReset,\n Set: FormSet,\n SetContent: FormSetContent,\n SetHeading: FormSetHeading,\n Submit: FormSubmit,\n})\n\nexport type { FormErrorsProps, FormProps, FormResetProps, FormSubmitProps } from './form.types'\nexport {\n fieldContext,\n formContext,\n useAppForm,\n useFieldContext,\n useFormContext,\n useTypedAppFormContext,\n withFieldGroup,\n withForm,\n} from './form-context'\nexport { FormErrors } from './form-errors'\nexport { FormReset } from './form-reset'\nexport { FormSubmit } from './form-submit'\nexport { FormFooter } from './form-footer'\nexport { FormSet } from './form-set'\nexport { FormSetContent } from './form-set-content'\nexport { FormSetHeading } from './form-set-heading'\n\nexport { Form }\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nconst iconContainerVariants = cva('flex shrink-0 items-center justify-center', {\n compoundVariants: [\n {\n className: 'rounded-xl',\n shape: 'square',\n size: 'small',\n },\n {\n className: 'rounded-2xl',\n shape: 'square',\n size: 'medium',\n },\n {\n className: 'rounded-3xl',\n shape: 'square',\n size: 'large',\n },\n ],\n defaultVariants: {\n shape: 'rounded',\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n shape: {\n rounded: 'rounded-full',\n square: '',\n },\n size: {\n large: 'size-3xl [&>svg]:size-xl',\n medium: 'size-2xl [&>svg]:size-lg',\n small: 'size-xl [&>svg]:size-md',\n },\n tone: {\n accent: 'bg-accent-container-high text-accent-on-container',\n brand: 'bg-brand-container-high text-brand-on-container',\n error: 'bg-error-container-high text-error-on-container',\n info: 'bg-info-container-high text-info-on-container',\n neutral: 'bg-neutral-container-high text-neutral-on-container',\n success: 'bg-success-container-high text-success-on-container',\n warning: 'bg-warning-container-high text-warning-on-container',\n },\n },\n})\n\ntype IconContainerProps = React.ComponentProps<'div'> & VariantProps<typeof iconContainerVariants>\n\nexport { iconContainerVariants }\nexport type { IconContainerProps }\n","import { cn } from '@/utils/cn'\n\nimport { iconContainerVariants } from './icon-container.types'\nimport type { IconContainerProps } from './icon-container.types'\n\nexport function IconContainer({\n shape,\n size,\n tone,\n className,\n children,\n ref,\n ...props\n}: IconContainerProps) {\n return (\n <div\n className={cn(iconContainerVariants({ shape, size, tone }), className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { OTPField } from '@base-ui/react'\nimport { useId } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { InputOTPProps } from './input-otp.types'\n\nexport function InputOTP({ children, className, id, ref, ...props }: InputOTPProps) {\n const generatedId = useId(),\n fieldId = id ?? generatedId\n return (\n <>\n <label htmlFor={fieldId} className=\"sr-only\">\n One-time password\n </label>\n <OTPField.Root\n id={fieldId}\n className={cn('group flex items-center gap-2xs has-disabled:opacity-30', className)}\n ref={ref}\n {...props}\n >\n {children}\n </OTPField.Root>\n </>\n )\n}\n","import { OTPField } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { InputOtpSeparatorProps } from './input-otp.types'\n\nexport function InputOtpSeparator({ className, children, ref, ...props }: InputOtpSeparatorProps) {\n return (\n <OTPField.Separator\n className={cn('flex items-center justify-center text-on-surface-variant', className)}\n ref={ref}\n {...props}\n >\n {children ?? <Icon name=\"minus\" />}\n </OTPField.Separator>\n )\n}\n","import { OTPField } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { InputOTPSlotProps } from './input-otp.types'\n\nexport function InputOTPSlot({ className, ...props }: InputOTPSlotProps) {\n return (\n <OTPField.Input\n className={cn(\n 'relative h-lg w-md rounded-md bg-surface text-center style-text-default-0 shadow-2xs outline outline-transparent transition-colors hover:outline-border-strong focus:outline-brand-border-strong',\n className,\n )}\n {...props}\n />\n )\n}\n","import { InputOTP as InputOTPRoot } from './input-otp'\nimport { InputOtpSeparator } from './input-otp-separator'\nimport { InputOTPSlot } from './input-otp-slot'\n\nconst InputOTP = Object.assign(InputOTPRoot, {\n Separator: InputOtpSeparator,\n Slot: InputOTPSlot,\n})\n\nexport type { InputOTPProps, InputOTPSlotProps, InputOtpSeparatorProps } from './input-otp.types'\nexport { InputOTPSlot } from './input-otp-slot'\nexport { InputOtpSeparator } from './input-otp-separator'\n\nexport { InputOTP }\n","import { cn } from '@/utils/cn'\n\nimport type { KbdProps } from './kbd.types'\n\nexport function Kbd({ className, ref, ...props }: KbdProps) {\n return (\n <div\n className={cn(\n 'inline-flex h-md items-center justify-center rounded-full bg-neutral-container-high px-2xs align-middle style-text-default--2 whitespace-nowrap text-neutral-on-container select-none has-[svg]:size-md has-[svg]:p-0 [&>svg]:size-sm',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { KbdGroupProps } from './kbd.types'\n\nexport function KbdGroup({ className, ref, ...props }: KbdGroupProps) {\n return (\n <div\n className={cn('flex items-center justify-center gap-2xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Kbd as KbdRoot } from './kbd'\nimport { KbdGroup } from './kbd-group'\n\nconst Kbd = Object.assign(KbdRoot, {\n Group: KbdGroup,\n})\n\nexport type { KbdGroupProps, KbdProps } from './kbd.types'\nexport { KbdGroup } from './kbd-group'\nexport { Kbd }\n","import React from \"react\";\n\n//#region src/FlexRender.tsx\nfunction isReactComponent(component) {\n\treturn isClassComponent(component) || typeof component === \"function\" || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n\treturn typeof component === \"function\" && (() => {\n\t\tconst proto = Object.getPrototypeOf(component);\n\t\treturn proto.prototype && proto.prototype.isReactComponent;\n\t})();\n}\nfunction isExoticComponent(component) {\n\treturn typeof component === \"object\" && typeof component.$$typeof === \"symbol\" && [\"react.memo\", \"react.forward_ref\"].includes(component.$$typeof.description);\n}\n/**\n* If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n* @example flexRender(cell.column.columnDef.cell, cell.getContext())\n*/\nfunction flexRender(Comp, props) {\n\tif (Comp === null || Comp === void 0) return null;\n\treturn isReactComponent(Comp) ? /* @__PURE__ */ React.createElement(Comp, props) : Comp;\n}\n/**\n* Simplified component wrapper of `flexRender`. Use this utility component to render headers, cells, or footers with custom markup.\n* Only one prop (`cell`, `header`, or `footer`) may be passed.\n* @example\n* ```tsx\n* <FlexRender cell={cell} />\n* <FlexRender header={header} />\n* <FlexRender footer={footer} />\n* ```\n*\n* This replaces calling `flexRender` directly like this:\n* ```tsx\n* flexRender(cell.column.columnDef.cell, cell.getContext())\n* flexRender(header.column.columnDef.header, header.getContext())\n* flexRender(footer.column.columnDef.footer, footer.getContext())\n* ```\n*/\nfunction FlexRender(props) {\n\tif (\"cell\" in props && props.cell) {\n\t\tconst cell = props.cell;\n\t\tconst def = cell.column.columnDef;\n\t\tconst groupingCell = cell;\n\t\tconst groupingDef = def;\n\t\tif (groupingCell.getIsAggregated?.()) return flexRender(groupingDef.aggregatedCell ?? def.cell, cell.getContext());\n\t\tif (groupingCell.getIsPlaceholder?.()) return null;\n\t\treturn flexRender(def.cell, cell.getContext());\n\t}\n\tif (\"header\" in props && props.header) return flexRender(props.header.column.columnDef.header, props.header.getContext());\n\tif (\"footer\" in props && props.footer) return flexRender(props.footer.column.columnDef.footer, props.footer.getContext());\n\treturn null;\n}\n\n//#endregion\nexport { FlexRender, flexRender };","'use client';\n\nimport { shallow, useSelector } from \"@tanstack/react-store\";\n\n//#region src/Subscribe.ts\nfunction Subscribe(props) {\n\tconst selected = useSelector(props.source, props.selector, { compare: shallow });\n\treturn typeof props.children === \"function\" ? props.children(selected) : props.children;\n}\n\n//#endregion\nexport { Subscribe };","//#region src/core/reactivity/coreReactivityFeature.utils.ts\n/**\n* Bridges atom instances to the `Store`/`ReadonlyStore` API by exposing\n* a `state` getter backed by `atom.get()`, and wiring `setState` for\n* writable atoms.\n*\n* @example\n* ```ts\n* const store = atomToStore(atom)\n* ```\n*/\nfunction atomToStore(atom) {\n\tconst store = atom;\n\tObject.defineProperty(atom, \"state\", { get() {\n\t\treturn atom.get();\n\t} });\n\tif (\"set\" in atom) store.setState = atom.set.bind(atom);\n\treturn store;\n}\n\n//#endregion\nexport { atomToStore };","//#region src/core/reactivity/renderPhaseReactivity.ts\n/**\n* Creates reactivity bindings for render-phase adapters (React, Preact, Lit):\n* frameworks with plain, non-reactive options that are re-synchronized during\n* component render, where store notifications must not fire until the host\n* commits.\n*\n* Readonly atoms are exposed as live facades. `get()` re-evaluates the\n* resolver against the options of the render in progress — a normal computed\n* cannot know that plain `options.state` changed — and caches the result\n* through the configured comparator so external-store consumers (e.g. React's\n* `useSyncExternalStore`) see referentially stable snapshots. `subscribe()`\n* goes through a hidden computed that tracks the resolver's real atom\n* dependencies plus a commit version, so subscribers are invalidated by\n* actual reactive writes and by the adapter's post-commit publication.\n*\n* @example\n* ```ts\n* import { batch, createAtom } from '@tanstack/react-store'\n*\n* export const reactReactivity = () =>\n* renderPhaseReactivity({ createAtom, batch })\n* ```\n*/\nfunction renderPhaseReactivity(primitives) {\n\tconst { createAtom, batch } = primitives;\n\tconst commitAtom = createAtom(0);\n\treturn {\n\t\tcreateOptionsStore: false,\n\t\twrapExternalAtoms: false,\n\t\taddSubscription: () => {\n\t\t\tthrow new Error(\"Feature not supported in current reactivity implementation\");\n\t\t},\n\t\tunmount: () => {\n\t\t\tthrow new Error(\"Feature not supported in current reactivity implementation\");\n\t\t},\n\t\tschedule: primitives.schedule ?? ((fn) => queueMicrotask(fn)),\n\t\tbatch,\n\t\tuntrack: (fn) => fn(),\n\t\tcreateReadonlyAtom: (fn, atomOptions) => {\n\t\t\tconst compare = atomOptions?.compare ?? Object.is;\n\t\t\tlet hasSnapshot = false;\n\t\t\tlet snapshot;\n\t\t\tconst getSnapshot = () => {\n\t\t\t\tconst nextSnapshot = fn();\n\t\t\t\tif (!hasSnapshot || !compare(snapshot, nextSnapshot)) {\n\t\t\t\t\tsnapshot = nextSnapshot;\n\t\t\t\t\thasSnapshot = true;\n\t\t\t\t}\n\t\t\t\treturn snapshot;\n\t\t\t};\n\t\t\tconst reactiveAtom = createAtom(() => {\n\t\t\t\tcommitAtom.get();\n\t\t\t\treturn getSnapshot();\n\t\t\t}, { compare });\n\t\t\treturn {\n\t\t\t\tget: getSnapshot,\n\t\t\t\tsubscribe: reactiveAtom.subscribe.bind(reactiveAtom)\n\t\t\t};\n\t\t},\n\t\tcreateWritableAtom: (value, atomOptions) => {\n\t\t\treturn createAtom(value, { compare: atomOptions?.compare });\n\t\t},\n\t\tcommit: () => {\n\t\t\tcommitAtom.set((version) => version + 1);\n\t\t}\n\t};\n}\n/**\n* Creates a render-phase source with an explicit commit baseline.\n*\n* Render-phase adapters publish controlled state after the host framework\n* commits so isolated subscribers update, but the component that owns the\n* table already rendered that exact snapshot — forwarding the notification to\n* its root subscription would produce a redundant render. Unlike a last-read\n* filter, speculative reads do not change notification behavior: only\n* `markCommitted()` advances the baseline.\n*/\nfunction createRenderPhaseSource(source, compare = Object.is) {\n\tlet hasCommittedSnapshot = false;\n\tlet committedSnapshot;\n\treturn {\n\t\tget: source.get,\n\t\tmarkCommitted: (snapshot) => {\n\t\t\tcommittedSnapshot = snapshot;\n\t\t\thasCommittedSnapshot = true;\n\t\t},\n\t\tsubscribe: (listener) => source.subscribe((value) => {\n\t\t\tif (!hasCommittedSnapshot || !compare(committedSnapshot, value)) listener(value);\n\t\t})\n\t};\n}\n\n//#endregion\nexport { createRenderPhaseSource, renderPhaseReactivity };","import { batch, createAtom } from \"@tanstack/react-store\";\nimport { renderPhaseReactivity } from \"@tanstack/table-core/reactivity\";\n\n//#region src/reactivity.ts\n/**\n* Creates the table-core reactivity bindings used by the React adapter.\n*\n* React stores table state in TanStack Store atoms and leaves options as plain\n* resolved data because `useTable` synchronizes options during render. The\n* render-phase preset supplies the live readonly-atom facades and the `commit`\n* hook; the store primitives are passed in from `@tanstack/react-store` so all\n* atoms share one store instance with user-provided external atoms.\n*/\nfunction reactReactivity() {\n\treturn renderPhaseReactivity({\n\t\tcreateAtom,\n\t\tbatch\n\t});\n}\n\n//#endregion\nexport { reactReactivity };","//#region src/utils.ts\n/**\n* Applies a TanStack updater to a value.\n*\n* If the updater is a function it is called with the previous value; otherwise the updater value is returned directly.\n*/\nfunction functionalUpdate(updater, input) {\n\treturn typeof updater === \"function\" ? updater(input) : updater;\n}\n/**\n* Clones table state values while preserving non-plain objects.\n*\n* Plain objects and arrays are copied recursively so state updates can avoid mutating existing references.\n*/\nfunction cloneState(value) {\n\tif (Array.isArray(value)) return value.map(cloneState);\n\tif (value && typeof value === \"object\") {\n\t\tconst proto = Object.getPrototypeOf(value);\n\t\tif (proto !== Object.prototype && proto !== null) return value;\n\t\tconst copy = proto === null ? makeObjectMap() : {};\n\t\tconst keys = Object.keys(value);\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key = keys[i];\n\t\t\tObject.defineProperty(copy, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: cloneState(value[key]),\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t\treturn copy;\n\t}\n\treturn value;\n}\n/**\n* Copies prototype-instance own properties without carrying over lazy memo\n* closures or the per-row cell cache, both of which are bound to the source\n* instance (cached cells reference the source row).\n*/\nfunction copyInstancePropertiesWithoutMemos(target, source) {\n\tconst keys = Object.keys(source);\n\tconst targetRecord = target;\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key = keys[i];\n\t\tif (!key.startsWith(\"_memo_\") && key !== \"_cellsCache\") targetRecord[key] = source[key];\n\t}\n\treturn target;\n}\n/**\n* Creates an object intended only for string-keyed dictionary lookups.\n*\n* The null prototype keeps user-controlled ids such as `__proto__` and\n* `hasOwnProperty` as plain data keys.\n*/\nfunction makeObjectMap() {\n\treturn Object.create(null);\n}\n/**\n* Checks whether an object owns a key, including null-prototype dictionaries.\n*/\nfunction hasOwn(obj, key) {\n\treturn Object.prototype.hasOwnProperty.call(obj, key);\n}\n/**\n* Creates a table state updater for a single state slice.\n*\n* The updater writes through the table base atom for the slice and supports both value and functional updater forms.\n*/\nfunction makeStateUpdater(key, instance) {\n\treturn (updater) => {\n\t\t(instance.options.atoms?.[key] ?? instance.baseAtoms[key]).set((old) => functionalUpdate(updater, old));\n\t};\n}\n/**\n* Checks whether a value is an array or a plain (or null-prototype) object.\n* Class instances, dates, and other exotic values compare by reference only,\n* mirroring the `cloneState` plain-object policy.\n*/\nfunction isPlainContainer(value) {\n\tif (typeof value !== \"object\" || value === null) return false;\n\tif (Array.isArray(value)) return true;\n\tconst proto = Object.getPrototypeOf(value);\n\treturn proto === Object.prototype || proto === null;\n}\n/**\n* Returns every enumerable own key, including symbols and non-index array\n* properties. Keeping key presence explicit distinguishes sparse array holes\n* from entries whose value is `undefined`.\n*/\nfunction getEnumerableOwnKeys(value) {\n\treturn Reflect.ownKeys(value).filter((key) => Object.prototype.propertyIsEnumerable.call(value, key));\n}\nconst MAX_STATE_COMPARE_DEPTH = 3;\n/**\n* Structurally compares two state slice values as deeply as stock feature\n* state can nest and no deeper.\n*\n* Three container levels cover flat maps and arrays, arrays of state objects,\n* array-valued filter values, and `columnResizing.columnSizingStart` tuples.\n* Deeper containers and non-plain values compare by reference. A `false`\n* result is always safe: the state update simply proceeds.\n*/\nfunction stateSlicesEqual(a, b) {\n\treturn stateSlicesEqualAtDepth(a, b, MAX_STATE_COMPARE_DEPTH);\n}\nfunction stateSlicesEqualAtDepth(a, b, depth) {\n\tif (Object.is(a, b)) return true;\n\tif (depth <= 0 || !isPlainContainer(a) || !isPlainContainer(b)) return false;\n\tif (Array.isArray(a) || Array.isArray(b)) {\n\t\tif (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;\n\t}\n\tconst keysA = getEnumerableOwnKeys(a);\n\tconst keysB = getEnumerableOwnKeys(b);\n\tif (keysA.length !== keysB.length) return false;\n\tconst recordA = a;\n\tconst recordB = b;\n\tfor (let i = 0; i < keysA.length; i++) {\n\t\tconst key = keysA[i];\n\t\tif (!Object.prototype.propertyIsEnumerable.call(b, key)) return false;\n\t\tif (!stateSlicesEqualAtDepth(recordA[key], recordB[key], depth - 1)) return false;\n\t}\n\treturn true;\n}\n/**\n* Routes a state slice update through the slice's `on<State>Change` handler,\n* preserving the owner's current reference for structural no-ops.\n*\n* Equality is evaluated inside the updater received by the state owner, never\n* against the table's potentially stale controlled snapshot. This keeps\n* same-tick updates composable in queued host containers such as React state,\n* evaluates the original updater only when the owner applies it, and lets atom\n* owners suppress notifications by returning their existing reference.\n*\n* A user-provided change handler is still invoked for a no-op because only that\n* handler's state container can know its latest queued value. The guarded\n* updater returns that container's previous reference, preventing a state write\n* or render in state containers with identity bailout semantics.\n*\n* Hot-path slices that skip guarding entirely (selection maps that scale with\n* row count, pointer-frequency resize state) call their change handler\n* directly instead of routing through this util. Custom feature slices with a\n* cheaper or semantic-aware comparison can pass `isEqual` to override the\n* structural default.\n*/\nfunction setStateSlice(instance, key, updater, isEqual = stateSlicesEqual) {\n\tconst onChangeKey = `on${key.charAt(0).toUpperCase()}${key.slice(1)}Change`;\n\tconst onChange = instance.options[onChangeKey];\n\tif (!onChange) return;\n\tonChange((current) => {\n\t\tconst next = functionalUpdate(updater, current);\n\t\treturn isEqual(current, next) ? current : next;\n\t});\n}\n/**\n* Returns whether a value is a function.\n*/\nfunction isFunction(d) {\n\treturn d instanceof Function;\n}\n/**\n* Flattens a tree of nodes by recursively reading child nodes.\n*\n* The original nodes are preserved in depth-first order.\n*/\nfunction flattenBy(arr, getChildren) {\n\tconst flat = [];\n\tconst recurse = (subArr) => {\n\t\tsubArr.forEach((item) => {\n\t\t\tflat.push(item);\n\t\t\tconst children = getChildren(item);\n\t\t\tif (children.length) recurse(children);\n\t\t});\n\t};\n\trecurse(arr);\n\treturn flat;\n}\n/**\n* Creates a dependency-tracked memoized function for table internals.\n*\n* The memo recomputes only when its dependency tuple changes and can emit debug timing information.\n*/\nconst memo = ({ fn, memoDeps, onAfterCompare, onAfterUpdate, onBeforeCompare, onBeforeUpdate }) => {\n\tlet deps = [];\n\tlet result;\n\tconst memoizedFn = (depArgs) => {\n\t\tonBeforeCompare?.();\n\t\tconst newDeps = memoDeps?.(depArgs);\n\t\tlet depsChanged = !newDeps || newDeps.length !== deps?.length;\n\t\tif (!depsChanged && newDeps) {\n\t\t\tfor (let i = 0; i < newDeps.length; i++) if (newDeps[i] !== deps[i]) {\n\t\t\t\tdepsChanged = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tonAfterCompare?.(depsChanged);\n\t\tif (!depsChanged) return result;\n\t\tdeps = newDeps;\n\t\tonBeforeUpdate?.();\n\t\tresult = fn(...newDeps ?? []);\n\t\tonAfterUpdate?.(result);\n\t\treturn result;\n\t};\n\treturn memoizedFn;\n};\n/**\n* Wraps a callback so that its first invocation is skipped.\n*\n* Row-model `onAfterUpdate` hooks schedule auto-resets when their inputs\n* change. The initial computation of a row model is not a change, so state\n* resets must not fire for it — otherwise merely reading a row model on mount\n* would wipe initial or controlled state.\n*/\nfunction skipFirstRun(fn) {\n\tlet hasRun = false;\n\treturn () => {\n\t\tif (!hasRun) {\n\t\t\thasRun = true;\n\t\t\treturn;\n\t\t}\n\t\tfn();\n\t};\n}\nconst pad = (str, num) => {\n\tstr = String(str);\n\twhile (str.length < num) str = \" \" + str;\n\treturn str;\n};\n/**\n* Creates a table-aware memoized function.\n*\n* This wraps `memo` with table debug options and feature metadata so row models and derived APIs can share consistent diagnostics.\n*/\nfunction tableMemo({ feature, fnName, objectId, onAfterUpdate, table, ...memoOptions }) {\n\tlet startCalcTime;\n\tlet endCalcTime;\n\tlet runCount = 0;\n\tlet debug;\n\tif (process.env.NODE_ENV === \"development\") {\n\t\tconst { debugAll } = table.options;\n\t\tconst { parentName } = getFunctionNameInfo(fnName, \".\");\n\t\tconst debugByParent = table.options[`debug${(parentName != \"table\" ? parentName + \"s\" : parentName).replace(parentName, parentName.charAt(0).toUpperCase() + parentName.slice(1))}`];\n\t\tconst debugByFeature = feature ? table.options[`debug${feature.charAt(0).toUpperCase() + feature.slice(1)}`] : false;\n\t\tdebug = debugAll || debugByParent || debugByFeature;\n\t}\n\tfunction logTime(time, depsChanged) {\n\t\tconst runType = runCount === 0 ? \"(1st run)\" : depsChanged ? \"(rerun #\" + runCount + \")\" : \"(cache)\";\n\t\trunCount++;\n\t\tconsole.groupCollapsed(`%c⏱ ${pad(`${time.toFixed(1)} ms`, 12)} %c${runType}%c ${fnName}%c ${objectId ? `(${fnName.split(\".\")[0]}Id: ${objectId})` : \"\"}`, `font-size: .6rem; font-weight: bold; ${depsChanged ? `color: hsl(\n ${Math.max(0, Math.min(120 - Math.log10(time) * 60, 120))}deg 100% 31%);` : \"\"} `, `color: ${runCount < 2 ? \"#FF00FF\" : \"#FF1493\"}`, \"color: #666\", \"color: #87CEEB\");\n\t\tconsole.info({\n\t\t\tfeature,\n\t\t\tstate: table.store.state,\n\t\t\tdeps: memoOptions.memoDeps?.toString()\n\t\t});\n\t\tconsole.trace();\n\t\tconsole.groupEnd();\n\t}\n\tconst onAfterUpdateHandler = onAfterUpdate ? () => {\n\t\tconst { schedule, untrack } = table._reactivity;\n\t\tschedule(() => untrack(() => onAfterUpdate()));\n\t} : void 0;\n\tconst debugOptions = process.env.NODE_ENV === \"development\" ? {\n\t\tonBeforeCompare: () => {},\n\t\tonAfterCompare: (depsChanged) => {},\n\t\tonBeforeUpdate: () => {\n\t\t\tif (debug) startCalcTime = performance.now();\n\t\t},\n\t\tonAfterUpdate: () => {\n\t\t\tif (debug) {\n\t\t\t\tendCalcTime = performance.now();\n\t\t\t\tlogTime(Math.round((endCalcTime - startCalcTime) * 100) / 100, true);\n\t\t\t}\n\t\t\tonAfterUpdateHandler?.();\n\t\t}\n\t} : { onAfterUpdate: onAfterUpdateHandler };\n\treturn memo({\n\t\t...memoOptions,\n\t\t...debugOptions\n\t});\n}\n/**\n* Assumes that a function name is in the format of `parentName_fnKey` and returns the `fnKey` and `fnName` in the format of `parentName.fnKey`.\n*\n* Splits on the first separator only, so an internal API name such as\n* `table__expandRows` has the `fnKey` `_expandRows`.\n*/\nfunction getFunctionNameInfo(staticFnName, splitBy = \"_\") {\n\tconst [parentName, fnKey] = staticFnName.replace(splitBy, \" \").split(\" \");\n\treturn {\n\t\tfnKey,\n\t\tfnName: `${parentName}.${fnKey}`,\n\t\tparentName\n\t};\n}\n/**\n* Assigns Table API methods directly to the table instance.\n* Unlike row/cell/column/header, the table is a singleton so methods are assigned directly.\n*/\nfunction assignTableAPIs(feature, table, apis) {\n\tfor (const [staticFnName, { fn, memoDeps }] of Object.entries(apis)) {\n\t\tconst { fnKey, fnName } = getFunctionNameInfo(staticFnName);\n\t\ttable[fnKey] = memoDeps ? tableMemo({\n\t\t\tmemoDeps,\n\t\t\tfn,\n\t\t\tfnName,\n\t\t\ttable,\n\t\t\tfeature\n\t\t}) : fn;\n\t}\n}\n/**\n* Assigns API methods to a prototype object for memory-efficient method sharing.\n* All instances created with this prototype will share the same method references.\n*\n* For memoized methods, the memo state is lazily created and stored on each instance.\n* This provides the best of both worlds: shared method code + per-instance caching.\n*/\nfunction assignPrototypeAPIs(feature, prototype, table, apis) {\n\tfor (const [staticFnName, { fn, memoDeps }] of Object.entries(apis)) {\n\t\tconst { fnKey, fnName } = getFunctionNameInfo(staticFnName);\n\t\tif (memoDeps) {\n\t\t\tconst memoKey = `_memo_${fnKey}`;\n\t\t\tprototype[fnKey] = function(...args) {\n\t\t\t\tif (!this[memoKey]) {\n\t\t\t\t\tconst self = this;\n\t\t\t\t\tthis[memoKey] = tableMemo({\n\t\t\t\t\t\tmemoDeps: (depArgs) => memoDeps(self, depArgs),\n\t\t\t\t\t\tfn: (...deps) => fn(self, ...deps),\n\t\t\t\t\t\tfnName,\n\t\t\t\t\t\tobjectId: self.id,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\tfeature\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this[memoKey](...args);\n\t\t\t};\n\t\t} else prototype[fnKey] = function(...args) {\n\t\t\treturn fn(this, ...args);\n\t\t};\n\t}\n}\n/**\n* Looks to run the memoized function with the builder pattern on the object if it exists, otherwise fall back to the static method passed in.\n*/\nfunction callMemoOrStaticFn(obj, fnKey, staticFn, ...args) {\n\treturn obj[fnKey]?.(...args) ?? staticFn(obj, ...args);\n}\n\n//#endregion\nexport { assignPrototypeAPIs, assignTableAPIs, callMemoOrStaticFn, cloneState, copyInstancePropertiesWithoutMemos, flattenBy, functionalUpdate, getFunctionNameInfo, hasOwn, isFunction, makeObjectMap, makeStateUpdater, memo, setStateSlice, skipFirstRun, stateSlicesEqual, tableMemo };","//#region src/core/cells/coreCellsFeature.utils.ts\n/**\n* Reads this cell's accessor value from its owning row and column.\n*\n* This is the standalone implementation behind `cell.getValue()`, useful when\n* importing static APIs instead of calling methods from the cell prototype.\n*\n* @example\n* ```ts\n* const value = cell_getValue(cell)\n* ```\n*/\nfunction cell_getValue(cell) {\n\treturn cell.row.getValue(cell.column.id);\n}\n/**\n* Reads the value that should be rendered for this cell.\n*\n* Nullish accessor values are replaced with `table.options.renderFallbackValue`,\n* matching the behavior of `cell.renderValue()`.\n*\n* @example\n* ```ts\n* const rendered = cell_renderValue(cell)\n* ```\n*/\nfunction cell_renderValue(cell) {\n\treturn cell.getValue() ?? cell.table.options.renderFallbackValue;\n}\n/**\n* Builds the render context passed to a column's `cell` template.\n*\n* The returned object includes stable references to the table, row, column, and\n* cell, plus bound `getValue` and `renderValue` helpers for render functions.\n*\n* @example\n* ```ts\n* const context = cell_getContext(cell)\n* ```\n*/\nfunction cell_getContext(cell) {\n\treturn {\n\t\ttable: cell.table,\n\t\tcolumn: cell.column,\n\t\trow: cell.row,\n\t\tcell,\n\t\tgetValue: () => cell.getValue(),\n\t\trenderValue: () => cell.renderValue()\n\t};\n}\n\n//#endregion\nexport { cell_getContext, cell_getValue, cell_renderValue };","import { assignPrototypeAPIs } from \"../../utils.js\";\nimport { cell_getContext, cell_getValue, cell_renderValue } from \"./coreCellsFeature.utils.js\";\n\n//#region src/core/cells/coreCellsFeature.ts\n/**\n* Core feature that adds cell value, render, and context APIs.\n*/\nconst coreCellsFeature = { assignCellPrototype: (prototype, table) => {\n\tassignPrototypeAPIs(\"coreCellsFeature\", prototype, table, {\n\t\tcell_getValue: { fn: (cell) => cell_getValue(cell) },\n\t\tcell_renderValue: { fn: (cell) => cell_renderValue(cell) },\n\t\tcell_getContext: {\n\t\t\tfn: (cell) => cell_getContext(cell),\n\t\t\tmemoDeps: (cell) => [cell]\n\t\t}\n\t});\n} };\n\n//#endregion\nexport { coreCellsFeature };","//#region src/core/columns/constructColumn.ts\n/**\n* Creates or retrieves the column prototype for a table.\n* The prototype is cached on the table and shared by all column instances.\n*/\nfunction getColumnPrototype(table) {\n\tif (!table._columnPrototype) {\n\t\ttable._columnPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignColumnPrototype?.(table._columnPrototype, table);\n\t}\n\treturn table._columnPrototype;\n}\n/**\n* Constructs a column instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructColumn(table, columnDef, depth, parent) {\n\tconst resolvedColumnDef = {\n\t\t...table.getDefaultColumnDef(),\n\t\t...columnDef\n\t};\n\tconst accessorKey = resolvedColumnDef.accessorKey;\n\tconst accessorKeyString = accessorKey === void 0 ? void 0 : String(accessorKey);\n\tconst id = resolvedColumnDef.id ?? accessorKeyString?.replaceAll(\".\", \"_\") ?? (typeof resolvedColumnDef.header === \"string\" ? resolvedColumnDef.header : void 0);\n\tlet accessorFn;\n\tif (resolvedColumnDef.accessorFn) accessorFn = resolvedColumnDef.accessorFn;\n\telse if (accessorKey !== void 0) {\n\t\tif (typeof accessorKey === \"string\" && accessorKey.includes(\".\")) {\n\t\t\tconst keys = accessorKey.split(\".\");\n\t\t\taccessorFn = (originalRow) => {\n\t\t\t\tlet result = originalRow;\n\t\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\t\tconst key = keys[i];\n\t\t\t\t\tresult = result?.[key];\n\t\t\t\t\tif (process.env.NODE_ENV === \"development\" && result === void 0) console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t};\n\t\t} else accessorFn = (originalRow) => originalRow[resolvedColumnDef.accessorKey];\n\t}\n\tif (!id) {\n\t\tif (process.env.NODE_ENV === \"development\") throw new Error(resolvedColumnDef.accessorFn ? `coreColumnsFeature require an id when using an accessorFn` : `coreColumnsFeature require an id when using a non-string header`);\n\t\tthrow new Error();\n\t}\n\tconst columnPrototype = getColumnPrototype(table);\n\tconst column = Object.create(columnPrototype);\n\tcolumn.accessorFn = accessorFn;\n\tcolumn.columnDef = resolvedColumnDef;\n\tcolumn.columns = [];\n\tcolumn.depth = depth;\n\tcolumn.id = `${String(id)}`;\n\tcolumn.parent = parent;\n\tconst initFns = table._columnInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](column);\n\treturn column;\n}\n\n//#endregion\nexport { constructColumn };","//#region src/core/featureStubs.ts\n/**\n* Stubs for optional features, used by the core and by any feature or row\n* model that reads another feature.\n*\n* Importing a feature's code from shared code would bundle that feature into\n* every table that uses the shared code, registered or not. A stub instead\n* calls a member the feature declares on its table, column, or row type and\n* assigns when it is registered, and otherwise behaves as if the feature were\n* absent. Members that only other features use are `_`-prefixed and marked\n* `@internal`, such as `table._expandRows`.\n*\n* How code in this package reaches other code:\n*\n* - Its own feature: call the static function, or `callMemoOrStaticFn` to use\n* the feature's memoized API.\n* - The core: import it. Every table bundles the core.\n* - Another feature's state: read `table.atoms.<slice>?.get()`.\n* - Another feature's APIs: call a stub from this file, adding one if needed.\n* - A feature it requires, such as column resizing requiring column sizing:\n* import it.\n*\n* Features assign functions, internal ones included, with `assignTableAPIs` or\n* `assignPrototypeAPIs`, and keep the `init*InstanceData` hooks for mutable\n* per-instance state. The `import/no-restricted-paths` lint rule rejects value\n* imports between feature folders outside an explicit list.\n*\n* Internal: not exported from any package entry point.\n*/\n/** Whether a column is visible; every column is without the feature. */\nfunction getIsColumnVisible(column) {\n\treturn column.getIsVisible?.() ?? true;\n}\n/** Visible leaf columns; all leaf columns without the feature. */\nfunction getVisibleLeafColumns(table) {\n\treturn table.getVisibleLeafColumns?.() ?? table.getAllLeafColumns();\n}\n/**\n* A row's visible cells; all cells, in leaf column order, without the\n* feature.\n*/\nfunction getVisibleCells(row) {\n\treturn row.getVisibleCells?.() ?? row.getAllCells();\n}\n/** A row's visible cells by column id; all cells without the feature. */\nfunction getVisibleCellsByColumnId(row) {\n\treturn row.getVisibleCellsByColumnId?.() ?? row.getAllCellsByColumnId();\n}\n/**\n* Orders leaf columns for display. The column ordering feature applies\n* `columnOrder` and moves grouped columns. Without it, the grouping feature\n* still moves grouped columns, and without either the order is unchanged.\n*/\nfunction orderLeafColumns(table, columns) {\n\tconst orderedTable = table;\n\tconst leafColumns = columns;\n\treturn orderedTable.getOrderColumnsFn?.()(leafColumns) ?? orderedTable._orderGroupedColumns?.(leafColumns) ?? columns;\n}\n/**\n* Orders items that each belong to a leaf column, such as visible leaf columns\n* or a row's visible cells, with start-pinned items first and end-pinned items\n* last. Without the feature, nothing is pinned and the order is unchanged.\n*/\nfunction orderByColumnPinning(table, items, getColumnId, getItemsByColumnId) {\n\treturn table._orderByColumnPinning?.(items, getColumnId, getItemsByColumnId) ?? items;\n}\n/**\n* Visible leaf columns in a pinning region. Without the feature, nothing is\n* pinned: the start and end regions are empty, and the center region and the\n* full list (`position` omitted) hold every visible leaf column.\n*/\nfunction getPinnedVisibleLeafColumns(table, position) {\n\treturn table.getPinnedVisibleLeafColumns?.(position) ?? (position && position !== \"center\" ? [] : getVisibleLeafColumns(table));\n}\n/** The resolved global filter function, if the feature is registered. */\nfunction getGlobalFilterFn(table) {\n\treturn table.getGlobalFilterFn?.();\n}\n/** Whether a column takes part in global filtering; none do without the feature. */\nfunction getCanGlobalFilter(column) {\n\treturn column.getCanGlobalFilter?.() ?? false;\n}\n/**\n* Lists expanded sub-rows inline below their parents. Without the feature no\n* row is expanded, so the row model is returned as is.\n*/\nfunction expandRowModel(table, rowModel) {\n\treturn table._expandRows?.(rowModel) ?? rowModel;\n}\n/**\n* Whether every parent of a row is expanded. Without the feature no row is\n* expanded, so only a top-level row qualifies.\n*/\nfunction getIsAllParentsExpanded(row) {\n\treturn row.getIsAllParentsExpanded?.() ?? !row.parentId;\n}\n/** Resets expanded state if row expanding is registered. */\nfunction autoResetExpanded(table) {\n\ttable.autoResetExpanded?.();\n}\n/** Resets the page index if row pagination is registered. */\nfunction autoResetPageIndex(table) {\n\ttable.autoResetPageIndex?.();\n}\n/** Resets sorting if row sorting is registered. */\nfunction autoResetSorting(table) {\n\ttable.autoResetSorting?.();\n}\n/** Resets cell selection if cell selection is registered. */\nfunction autoResetCellSelection(table) {\n\ttable.autoResetCellSelection?.();\n}\n/**\n* The aggregation executor `rowAggregationFeature` assigns to the table, or\n* `undefined` when the feature is not registered.\n*/\nfunction getAggregateColumnValue(table) {\n\treturn table._aggregateColumnValue;\n}\n\n//#endregion\nexport { autoResetCellSelection, autoResetExpanded, autoResetPageIndex, autoResetSorting, expandRowModel, getAggregateColumnValue, getCanGlobalFilter, getGlobalFilterFn, getIsAllParentsExpanded, getIsColumnVisible, getPinnedVisibleLeafColumns, getVisibleCells, getVisibleCellsByColumnId, getVisibleLeafColumns, orderByColumnPinning, orderLeafColumns };","import { makeObjectMap } from \"../../utils.js\";\nimport { orderLeafColumns } from \"../featureStubs.js\";\nimport { constructColumn } from \"./constructColumn.js\";\n\n//#region src/core/columns/coreColumnsFeature.utils.ts\n/**\n* Flattens this column and every descendant column into a single array.\n*\n* Group columns appear before their child columns, which matches the normalized\n* column hierarchy produced during table construction.\n*\n* @example\n* ```ts\n* const flatColumns = column_getFlatColumns(column)\n* ```\n*/\nfunction column_getFlatColumns(column) {\n\treturn [column, ...column.columns.flatMap((col) => col.getFlatColumns())];\n}\n/**\n* Collects the terminal leaf columns below this column.\n*\n* Group columns return their ordered descendants. Non-group columns return an\n* array containing only the column itself.\n*\n* @example\n* ```ts\n* const leafColumns = column_getLeafColumns(column)\n* ```\n*/\nfunction column_getLeafColumns(column) {\n\tif (column.columns.length) {\n\t\tconst leafColumns = column.columns.flatMap((col) => col.getLeafColumns());\n\t\treturn orderLeafColumns(column.table, leafColumns);\n\t}\n\treturn [column];\n}\n/**\n* Merges built-in, feature, and user default column definitions.\n*\n* Built-in defaults provide a header and fallback cell renderer, feature\n* defaults can add feature-specific column options, and\n* `options.defaultColumn` wins last.\n*\n* @example\n* ```ts\n* const defaultColumn = table_getDefaultColumnDef(table)\n* ```\n*/\nfunction table_getDefaultColumnDef(table) {\n\treturn {\n\t\theader: (props) => {\n\t\t\tconst resolvedColumnDef = props.header.column.columnDef;\n\t\t\tif (resolvedColumnDef.accessorKey) return resolvedColumnDef.accessorKey;\n\t\t\tif (resolvedColumnDef.accessorFn) return resolvedColumnDef.id;\n\t\t\treturn null;\n\t\t},\n\t\tcell: (props) => props.renderValue()?.toString?.() ?? null,\n\t\t...Object.values(table._features).reduce((obj, feature) => {\n\t\t\treturn Object.assign(obj, feature.getDefaultColumnDef?.());\n\t\t}, {}),\n\t\t...table.options.defaultColumn\n\t};\n}\nfunction constructColumns(table, columnDefs, parent, depth = 0) {\n\tconst columns = new Array(columnDefs.length);\n\tfor (let i = 0; i < columnDefs.length; i++) {\n\t\tif (!(i in columnDefs)) continue;\n\t\tconst columnDef = columnDefs[i];\n\t\tconst column = constructColumn(table, columnDef, depth, parent);\n\t\tconst groupingColumnDef = columnDef;\n\t\tcolumn.columns = groupingColumnDef.columns ? constructColumns(table, groupingColumnDef.columns, column, depth + 1) : [];\n\t\tcolumns[i] = column;\n\t}\n\treturn columns;\n}\n/**\n* Normalizes `options.columns` into the table's nested column tree.\n*\n* Each column definition is constructed with its parent and depth, and group\n* column children are recursively constructed.\n*\n* @example\n* ```ts\n* const columns = table_getAllColumns(table)\n* ```\n*/\nfunction table_getAllColumns(table) {\n\treturn constructColumns(table, table.options.columns);\n}\n/**\n* Flattens every table column, including group columns and leaf columns.\n*\n* Use this when parent/group columns must be included in addition to data leaf\n* columns.\n*\n* @example\n* ```ts\n* const flatColumns = table_getAllFlatColumns(table)\n* ```\n*/\nfunction table_getAllFlatColumns(table) {\n\treturn table.getAllColumns().flatMap((column) => column.getFlatColumns());\n}\n/**\n* Builds an id lookup for every flat column in the table.\n*\n* Group columns and leaf columns are included. Later columns with the same id\n* replace earlier entries.\n*\n* @example\n* ```ts\n* const columnsById = table_getAllFlatColumnsById(table)\n* ```\n*/\nfunction table_getAllFlatColumnsById(table) {\n\tconst result = makeObjectMap();\n\tconst flatColumns = table.getAllFlatColumns();\n\tfor (let i = 0; i < flatColumns.length; i++) {\n\t\tconst column = flatColumns[i];\n\t\tresult[column.id] = column;\n\t}\n\treturn result;\n}\n/**\n* Collects all terminal leaf columns in their current table order.\n*\n* Column ordering features can reorder the collected leaves before the result\n* is returned.\n*\n* @example\n* ```ts\n* const leafColumns = table_getAllLeafColumns(table)\n* ```\n*/\nfunction table_getAllLeafColumns(table) {\n\tconst leafColumns = table.getAllColumns().flatMap((c) => c.getLeafColumns());\n\treturn orderLeafColumns(table, leafColumns);\n}\n/**\n* Builds an id lookup for terminal leaf columns only.\n*\n* Parent/group columns are excluded, making this lookup appropriate for row\n* cells and feature state keyed by data columns.\n*\n* @example\n* ```ts\n* const leavesById = table_getAllLeafColumnsById(table)\n* ```\n*/\nfunction table_getAllLeafColumnsById(table) {\n\tconst result = makeObjectMap();\n\tconst leafColumns = table.getAllLeafColumns();\n\tfor (let i = 0; i < leafColumns.length; i++) {\n\t\tconst column = leafColumns[i];\n\t\tresult[column.id] = column;\n\t}\n\treturn result;\n}\n/**\n* Looks up a column by id from the flat column map.\n*\n* The lookup can return group columns or leaf columns. In development, a\n* missing id logs a warning to help catch stale column references.\n*\n* @example\n* ```ts\n* const column = table_getColumn(table, 'firstName')\n* ```\n*/\nfunction table_getColumn(table, columnId) {\n\tconst column = table.getAllFlatColumnsById()[columnId];\n\tif (process.env.NODE_ENV === \"development\" && !column) console.warn(`[Table] Column with id '${columnId}' does not exist.`);\n\treturn column;\n}\n\n//#endregion\nexport { column_getFlatColumns, column_getLeafColumns, table_getAllColumns, table_getAllFlatColumns, table_getAllFlatColumnsById, table_getAllLeafColumns, table_getAllLeafColumnsById, table_getColumn, table_getDefaultColumnDef };","import { assignPrototypeAPIs, assignTableAPIs } from \"../../utils.js\";\nimport { column_getFlatColumns, column_getLeafColumns, table_getAllColumns, table_getAllFlatColumns, table_getAllFlatColumnsById, table_getAllLeafColumns, table_getAllLeafColumnsById, table_getColumn, table_getDefaultColumnDef } from \"./coreColumnsFeature.utils.js\";\n\n//#region src/core/columns/coreColumnsFeature.ts\n/**\n* Core feature that builds the column tree and exposes table/column APIs.\n*/\nconst coreColumnsFeature = {\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"coreColumnsFeature\", prototype, table, {\n\t\t\tcolumn_getFlatColumns: {\n\t\t\t\tfn: (column) => column_getFlatColumns(column),\n\t\t\t\tmemoDeps: (column) => [column.table.options.columns]\n\t\t\t},\n\t\t\tcolumn_getLeafColumns: {\n\t\t\t\tfn: (column) => column_getLeafColumns(column),\n\t\t\t\tmemoDeps: (column) => [\n\t\t\t\t\tcolumn.table.atoms.columnOrder?.get(),\n\t\t\t\t\tcolumn.table.atoms.grouping?.get(),\n\t\t\t\t\tcolumn.table.options.columns,\n\t\t\t\t\tcolumn.table.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"coreColumnsFeature\", table, {\n\t\t\ttable_getDefaultColumnDef: {\n\t\t\t\tfn: () => table_getDefaultColumnDef(table),\n\t\t\t\tmemoDeps: () => [table.options.defaultColumn]\n\t\t\t},\n\t\t\ttable_getAllColumns: {\n\t\t\t\tfn: () => table_getAllColumns(table),\n\t\t\t\tmemoDeps: () => [table.options.columns]\n\t\t\t},\n\t\t\ttable_getAllFlatColumns: {\n\t\t\t\tfn: () => table_getAllFlatColumns(table),\n\t\t\t\tmemoDeps: () => [table.options.columns]\n\t\t\t},\n\t\t\ttable_getAllFlatColumnsById: {\n\t\t\t\tfn: () => table_getAllFlatColumnsById(table),\n\t\t\t\tmemoDeps: () => [table.options.columns]\n\t\t\t},\n\t\t\ttable_getAllLeafColumns: {\n\t\t\t\tfn: () => table_getAllLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getAllLeafColumnsById: {\n\t\t\t\tfn: () => table_getAllLeafColumnsById(table),\n\t\t\t\tmemoDeps: () => [table.getAllLeafColumns()]\n\t\t\t},\n\t\t\ttable_getColumn: { fn: (columnId) => table_getColumn(table, columnId) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { coreColumnsFeature };","//#region src/core/headers/constructHeader.ts\n/**\n* Creates or retrieves the header prototype for a table.\n* The prototype is cached on the table and shared by all header instances.\n*/\nfunction getHeaderPrototype(table) {\n\tif (!table._headerPrototype) {\n\t\ttable._headerPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignHeaderPrototype?.(table._headerPrototype, table);\n\t}\n\treturn table._headerPrototype;\n}\n/**\n* Constructs a header instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructHeader(table, column, options) {\n\tconst headerPrototype = getHeaderPrototype(table);\n\tconst header = Object.create(headerPrototype);\n\theader.colSpan = 0;\n\theader.column = column;\n\theader.depth = options.depth;\n\theader.headerGroup = null;\n\theader.id = options.id ?? column.id;\n\theader.index = options.index;\n\theader.isPlaceholder = !!options.isPlaceholder;\n\theader.placeholderId = options.placeholderId;\n\theader.rowSpan = 0;\n\theader.subHeaders = [];\n\tconst initFns = table._headerInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](header);\n\treturn header;\n}\n\n//#endregion\nexport { constructHeader };","import { getIsColumnVisible } from \"../featureStubs.js\";\nimport { constructHeader } from \"./constructHeader.js\";\n\n//#region src/core/headers/buildHeaderGroups.ts\nfunction getMaxHeaderDepth(columns, depth = 1) {\n\tlet maxDepth = depth;\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst column = columns[i];\n\t\tif (getIsColumnVisible(column) && column.columns.length) maxDepth = Math.max(maxDepth, getMaxHeaderDepth(column.columns, depth + 1));\n\t}\n\treturn maxDepth;\n}\nfunction formatHeaderGroupId(headerFamily, depth) {\n\treturn headerFamily ? `${headerFamily}_${depth}` : String(depth);\n}\nfunction formatHeaderId(headerFamily, depth, columnId, childHeaderId) {\n\tlet id = headerFamily ?? \"\";\n\tif (depth) id = id ? `${id}_${depth}` : String(depth);\n\tif (columnId) id = id ? `${id}_${columnId}` : columnId;\n\tif (childHeaderId) id = id ? `${id}_${childHeaderId}` : childHeaderId;\n\treturn id;\n}\nfunction countPendingHeadersForColumn(headers, column) {\n\tlet count = 0;\n\tfor (let i = 0; i < headers.length; i++) if (headers[i].column === column) count++;\n\treturn count;\n}\nfunction constructHeaderGroup(headersToGroup, depth, table, headerFamily, headerGroups, headerGroupInitFns) {\n\tconst headerGroup = {\n\t\tdepth,\n\t\tid: formatHeaderGroupId(headerFamily, depth),\n\t\theaders: []\n\t};\n\tconst pendingParentHeaders = [];\n\tfor (let i = 0; i < headersToGroup.length; i++) {\n\t\tif (!(i in headersToGroup)) continue;\n\t\tconst headerToGroup = headersToGroup[i];\n\t\tconst latestPendingParentHeader = pendingParentHeaders[pendingParentHeaders.length - 1];\n\t\tconst isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n\t\tlet column;\n\t\tlet isPlaceholder = false;\n\t\tif (isLeafHeader && headerToGroup.column.parent) column = headerToGroup.column.parent;\n\t\telse {\n\t\t\tcolumn = headerToGroup.column;\n\t\t\tisPlaceholder = true;\n\t\t}\n\t\tif (latestPendingParentHeader && latestPendingParentHeader.column === column) latestPendingParentHeader.subHeaders.push(headerToGroup);\n\t\telse {\n\t\t\tconst header = constructHeader(table, column, {\n\t\t\t\tid: formatHeaderId(headerFamily, depth, column.id, headerToGroup.id),\n\t\t\t\tisPlaceholder,\n\t\t\t\tplaceholderId: isPlaceholder ? String(countPendingHeadersForColumn(pendingParentHeaders, column)) : void 0,\n\t\t\t\tdepth,\n\t\t\t\tindex: pendingParentHeaders.length\n\t\t\t});\n\t\t\theader.subHeaders.push(headerToGroup);\n\t\t\tpendingParentHeaders.push(header);\n\t\t}\n\t\theaderGroup.headers.push(headerToGroup);\n\t\theaderToGroup.headerGroup = headerGroup;\n\t}\n\tfor (let i = 0; i < headerGroupInitFns.length; i++) headerGroupInitFns[i](headerGroup);\n\theaderGroups.push(headerGroup);\n\tif (depth > 0) constructHeaderGroup(pendingParentHeaders, depth - 1, table, headerFamily, headerGroups, headerGroupInitFns);\n}\nfunction updateHeaderSpans(headers) {\n\tfor (let i = 0; i < headers.length; i++) {\n\t\tconst header = headers[i];\n\t\tif (!getIsColumnVisible(header.column)) continue;\n\t\tlet colSpan = 0;\n\t\tif (header.subHeaders.length) {\n\t\t\tupdateHeaderSpans(header.subHeaders);\n\t\t\tfor (let j = 0; j < header.subHeaders.length; j++) {\n\t\t\t\tconst child = header.subHeaders[j];\n\t\t\t\tif (!getIsColumnVisible(child.column)) continue;\n\t\t\t\tcolSpan += child.colSpan;\n\t\t\t}\n\t\t} else colSpan = 1;\n\t\theader.colSpan = colSpan;\n\t\tif (header.isPlaceholder && header.subHeaders.length === 1 && header.subHeaders[0].column === header.column) {\n\t\t\tlet rowSpan = 1;\n\t\t\tlet chainChild = header.subHeaders[0];\n\t\t\twhile (chainChild) {\n\t\t\t\tchainChild.rowSpan = 0;\n\t\t\t\trowSpan++;\n\t\t\t\tchainChild = chainChild.subHeaders.length === 1 && chainChild.subHeaders[0].column === header.column ? chainChild.subHeaders[0] : void 0;\n\t\t\t}\n\t\t\theader.rowSpan = rowSpan;\n\t\t} else header.rowSpan = 1;\n\t}\n}\n/**\n* Builds the nested header group structure for a table.\n*\n* The result accounts for visible leaf columns, pinned column groups, and placeholder headers needed to render multi-level headers.\n*/\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n\tconst maxDepth = getMaxHeaderDepth(allColumns);\n\tconst headerGroups = [];\n\tconst headerGroupInitFns = table._headerGroupInstanceInitFns;\n\tconst bottomHeaders = new Array(columnsToGroup.length);\n\tfor (let i = 0; i < columnsToGroup.length; i++) {\n\t\tif (!(i in columnsToGroup)) continue;\n\t\tbottomHeaders[i] = constructHeader(table, columnsToGroup[i], {\n\t\t\tdepth: maxDepth,\n\t\t\tindex: i\n\t\t});\n\t}\n\tconstructHeaderGroup(bottomHeaders, maxDepth - 1, table, headerFamily, headerGroups, headerGroupInitFns);\n\theaderGroups.reverse();\n\tupdateHeaderSpans(headerGroups[0]?.headers ?? []);\n\treturn headerGroups;\n}\n\n//#endregion\nexport { buildHeaderGroups };","import { getVisibleLeafColumns, orderByColumnPinning } from \"../featureStubs.js\";\nimport { buildHeaderGroups } from \"./buildHeaderGroups.js\";\n\n//#region src/core/headers/coreHeadersFeature.utils.ts\nfunction collectLeafHeaders(header, leafHeaders) {\n\tfor (let i = 0; i < header.subHeaders.length; i++) collectLeafHeaders(header.subHeaders[i], leafHeaders);\n\tleafHeaders.push(header);\n}\n/**\n* Walks a header tree and collects all descendant leaf headers.\n*\n* The header itself is included after its descendants, matching the recursive\n* shape used by nested header groups.\n*\n* @example\n* ```ts\n* const leafHeaders = header_getLeafHeaders(header)\n* ```\n*/\nfunction header_getLeafHeaders(header) {\n\tconst leafHeaders = [];\n\tcollectLeafHeaders(header, leafHeaders);\n\treturn leafHeaders;\n}\n/**\n* Builds the render context passed to a column's `header` or `footer` template.\n*\n* The context contains the header, its column, and the owning table instance.\n*\n* @example\n* ```ts\n* const context = header_getContext(header)\n* ```\n*/\nfunction header_getContext(header) {\n\treturn {\n\t\tcolumn: header.column,\n\t\theader,\n\t\ttable: header.column.table\n\t};\n}\n/**\n* Builds visible header groups for the current column tree.\n*\n* Column visibility and pinning are applied before groups are built. When no\n* columns are pinned, the fast path skips pin partitioning.\n*\n* @example\n* ```ts\n* const headerGroups = table_getHeaderGroups(table)\n* ```\n*/\nfunction table_getHeaderGroups(table) {\n\treturn buildHeaderGroups(table.getAllColumns(), orderByColumnPinning(table, getVisibleLeafColumns(table), (column) => column.id), table);\n}\n/**\n* Builds footer groups by reversing the current header groups.\n*\n* Footer rendering uses the same header objects and grouping structure, but\n* renders them from leaf level back toward the root.\n*\n* @example\n* ```ts\n* const footerGroups = table_getFooterGroups(table)\n* ```\n*/\nfunction table_getFooterGroups(table) {\n\treturn [...table.getHeaderGroups()].reverse();\n}\n/**\n* Flattens every header from every header group into one array.\n*\n* The result includes parent headers and placeholder headers, in header-group\n* order from top to bottom.\n*\n* @example\n* ```ts\n* const flatHeaders = table_getFlatHeaders(table)\n* ```\n*/\nfunction table_getFlatHeaders(table) {\n\tconst headerGroups = table.getHeaderGroups();\n\tconst result = [];\n\tfor (let i = 0; i < headerGroups.length; i++) {\n\t\tconst headers = headerGroups[i].headers;\n\t\tfor (let j = 0; j < headers.length; j++) result.push(headers[j]);\n\t}\n\treturn result;\n}\n/**\n* Collects only the leaf headers from the current header tree.\n*\n* Parent/group headers are skipped, making the result suitable for rendering\n* one header per visible leaf column.\n*\n* @example\n* ```ts\n* const leafHeaders = table_getLeafHeaders(table)\n* ```\n*/\nfunction table_getLeafHeaders(table) {\n\tconst topHeaders = table.getHeaderGroups()[0]?.headers ?? [];\n\tconst result = [];\n\tfor (let i = 0; i < topHeaders.length; i++) {\n\t\tconst leafHeaders = topHeaders[i].getLeafHeaders();\n\t\tfor (let j = 0; j < leafHeaders.length; j++) result.push(leafHeaders[j]);\n\t}\n\treturn result;\n}\n\n//#endregion\nexport { header_getContext, header_getLeafHeaders, table_getFlatHeaders, table_getFooterGroups, table_getHeaderGroups, table_getLeafHeaders };","import { assignPrototypeAPIs, assignTableAPIs } from \"../../utils.js\";\nimport { header_getContext, header_getLeafHeaders, table_getFlatHeaders, table_getFooterGroups, table_getHeaderGroups, table_getLeafHeaders } from \"./coreHeadersFeature.utils.js\";\n\n//#region src/core/headers/coreHeadersFeature.ts\n/**\n* Core feature that builds header groups and exposes header context APIs.\n*/\nconst coreHeadersFeature = {\n\tassignHeaderPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"coreHeadersFeature\", prototype, table, {\n\t\t\theader_getLeafHeaders: {\n\t\t\t\tfn: (header) => header_getLeafHeaders(header),\n\t\t\t\tmemoDeps: (header) => [header.column.table.options.columns]\n\t\t\t},\n\t\t\theader_getContext: {\n\t\t\t\tfn: (header) => header_getContext(header),\n\t\t\t\tmemoDeps: (header) => [header.column.table.options.columns]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"coreHeadersFeature\", table, {\n\t\t\ttable_getHeaderGroups: {\n\t\t\t\tfn: () => table_getHeaderGroups(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getFooterGroups: {\n\t\t\t\tfn: () => table_getFooterGroups(table),\n\t\t\t\tmemoDeps: () => [table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getFlatHeaders: {\n\t\t\t\tfn: () => table_getFlatHeaders(table),\n\t\t\t\tmemoDeps: () => [table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getLeafHeaders: {\n\t\t\t\tfn: () => table_getLeafHeaders(table),\n\t\t\t\tmemoDeps: () => [table.getHeaderGroups()]\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { coreHeadersFeature };","import { makeObjectMap } from \"../../utils.js\";\n\n//#region src/core/rows/constructRow.ts\n/**\n* Creates or retrieves the row prototype for a table.\n* The prototype is cached on the table and shared by all row instances.\n*/\nfunction getRowPrototype(table) {\n\tif (!table._rowPrototype) {\n\t\ttable._rowPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignRowPrototype?.(table._rowPrototype, table);\n\t}\n\treturn table._rowPrototype;\n}\n/**\n* Constructs a row instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nconst constructRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n\tconst rowPrototype = getRowPrototype(table);\n\tconst row = Object.create(rowPrototype);\n\trow._displayIndexCache = -1;\n\trow._uniqueValuesCache = makeObjectMap();\n\trow._valuesCache = makeObjectMap();\n\trow.depth = depth;\n\trow.id = id;\n\trow.index = rowIndex;\n\trow.original = original;\n\trow.parentId = parentId;\n\trow.subRows = subRows ?? [];\n\tconst initFns = table._rowInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](row);\n\treturn row;\n};\n\n//#endregion\nexport { constructRow };","import { makeObjectMap, skipFirstRun, tableMemo } from \"../../utils.js\";\nimport { autoResetCellSelection, autoResetExpanded, autoResetPageIndex, autoResetSorting } from \"../featureStubs.js\";\nimport { constructRow } from \"../rows/constructRow.js\";\n\n//#region src/core/row-models/createCoreRowModel.ts\n/**\n* Creates a memoized core row model factory.\n*\n* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n*/\nfunction createCoreRowModel() {\n\treturn (table) => {\n\t\treturn tableMemo({\n\t\t\tfeature: \"coreRowModelsFeature\",\n\t\t\ttable,\n\t\t\tfnName: \"table.getCoreRowModel\",\n\t\t\tmemoDeps: () => [table.options.data],\n\t\t\tfn: () => _createCoreRowModel(table, table.options.data),\n\t\t\tonAfterUpdate: skipFirstRun(() => {\n\t\t\t\tautoResetExpanded(table);\n\t\t\t\tautoResetPageIndex(table);\n\t\t\t\tautoResetSorting(table);\n\t\t\t\tautoResetCellSelection(table);\n\t\t\t})\n\t\t});\n\t};\n}\nfunction accessRows(table, rowModel, originalRows, depth = 0, parentRow) {\n\tconst rows = [];\n\tfor (let i = 0; i < originalRows.length; i++) {\n\t\tconst originalRow = originalRows[i];\n\t\tconst row = constructRow(table, table.getRowId(originalRow, i, parentRow), originalRow, i, depth, void 0, parentRow?.id);\n\t\trowModel.flatRows.push(row);\n\t\trowModel.rowsById[row.id] = row;\n\t\trows.push(row);\n\t\tif (table.options.getSubRows) {\n\t\t\trow.originalSubRows = table.options.getSubRows(originalRow, i);\n\t\t\tif (row.originalSubRows?.length) row.subRows = accessRows(table, rowModel, row.originalSubRows, depth + 1, row);\n\t\t}\n\t}\n\treturn rows;\n}\nfunction _createCoreRowModel(table, data) {\n\tconst rowModel = {\n\t\trows: [],\n\t\tflatRows: [],\n\t\trowsById: makeObjectMap()\n\t};\n\trowModel.rows = accessRows(table, rowModel, data);\n\treturn rowModel;\n}\n\n//#endregion\nexport { createCoreRowModel };","import { createCoreRowModel } from \"./createCoreRowModel.js\";\n\n//#region src/core/row-models/coreRowModelsFeature.utils.ts\n/**\n* Resolves the table's unmodified core row model.\n*\n* The factory is created once per table, either from the `coreRowModel` slot on the `features` option\n* or the built-in `createCoreRowModel()`, then reused for later calls.\n*\n* @example\n* ```ts\n* const coreRows = table_getCoreRowModel(table)\n* ```\n*/\nfunction table_getCoreRowModel(table) {\n\tif (!table._rowModels.coreRowModel) table._rowModels.coreRowModel = table.options.features.coreRowModel?.(table) ?? createCoreRowModel()(table);\n\treturn table._rowModels.coreRowModel();\n}\n/**\n* Reads the row model immediately before column/global filtering.\n*\n* Filtering is the first derived row-model stage, so this currently aliases\n* `table.getCoreRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeFiltering = table_getPreFilteredRowModel(table)\n* ```\n*/\nfunction table_getPreFilteredRowModel(table) {\n\treturn table.getCoreRowModel();\n}\n/**\n* Resolves the row model after column and global filtering.\n*\n* When `manualFiltering` is enabled, or no filtered row-model factory was\n* registered, this returns the pre-filtered row model because filtering is\n* expected to happen outside the table.\n*\n* @example\n* ```ts\n* const filteredRows = table_getFilteredRowModel(table)\n* ```\n*/\nfunction table_getFilteredRowModel(table) {\n\tif (!table._rowModels.filteredRowModel) table._rowModels.filteredRowModel = table.options.features.filteredRowModel?.(table);\n\tif (table.options.manualFiltering || !table._rowModels.filteredRowModel) return table.getPreFilteredRowModel();\n\treturn table._rowModels.filteredRowModel();\n}\n/**\n* Reads the row model immediately before grouping.\n*\n* Grouping runs after filtering, so this aliases `table.getFilteredRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeGrouping = table_getPreGroupedRowModel(table)\n* ```\n*/\nfunction table_getPreGroupedRowModel(table) {\n\treturn table.getFilteredRowModel();\n}\n/**\n* Resolves the row model after grouping has produced grouped rows.\n*\n* When `manualGrouping` is enabled, or no grouped row-model factory was\n* registered, this returns the pre-grouped row model unchanged.\n*\n* @example\n* ```ts\n* const groupedRows = table_getGroupedRowModel(table)\n* ```\n*/\nfunction table_getGroupedRowModel(table) {\n\tif (!table._rowModels.groupedRowModel) table._rowModels.groupedRowModel = table.options.features.groupedRowModel?.(table);\n\tif (table.options.manualGrouping || !table._rowModels.groupedRowModel) return table.getPreGroupedRowModel();\n\treturn table._rowModels.groupedRowModel();\n}\n/**\n* Reads the row model immediately before sorting.\n*\n* Sorting runs after grouping, so this aliases `table.getGroupedRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeSorting = table_getPreSortedRowModel(table)\n* ```\n*/\nfunction table_getPreSortedRowModel(table) {\n\treturn table.getGroupedRowModel();\n}\n/**\n* Resolves the row model after sorting has been applied.\n*\n* When `manualSorting` is enabled, or no sorted row-model factory was\n* registered, this returns the pre-sorted row model because sorted data is\n* expected to be supplied by the caller.\n*\n* @example\n* ```ts\n* const sortedRows = table_getSortedRowModel(table)\n* ```\n*/\nfunction table_getSortedRowModel(table) {\n\tif (!table._rowModels.sortedRowModel) table._rowModels.sortedRowModel = table.options.features.sortedRowModel?.(table);\n\tif (table.options.manualSorting || !table._rowModels.sortedRowModel) return table.getPreSortedRowModel();\n\treturn table._rowModels.sortedRowModel();\n}\n/**\n* Reads the row model immediately before row expansion.\n*\n* Expansion runs after sorting, so this aliases `table.getSortedRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforeExpansion = table_getPreExpandedRowModel(table)\n* ```\n*/\nfunction table_getPreExpandedRowModel(table) {\n\treturn table.getSortedRowModel();\n}\n/**\n* Resolves the row model after expanded rows have been flattened into view.\n*\n* When `manualExpanding` is enabled, or no expanded row-model factory was\n* registered, this returns the pre-expanded row model unchanged.\n*\n* @example\n* ```ts\n* const expandedRows = table_getExpandedRowModel(table)\n* ```\n*/\nfunction table_getExpandedRowModel(table) {\n\tif (!table._rowModels.expandedRowModel) table._rowModels.expandedRowModel = table.options.features.expandedRowModel?.(table);\n\tif (table.options.manualExpanding || !table._rowModels.expandedRowModel) return table.getPreExpandedRowModel();\n\treturn table._rowModels.expandedRowModel();\n}\n/**\n* Reads the row model immediately before pagination.\n*\n* Pagination is the final built-in row-model stage, so this aliases\n* `table.getExpandedRowModel()`.\n*\n* @example\n* ```ts\n* const rowsBeforePagination = table_getPrePaginatedRowModel(table)\n* ```\n*/\nfunction table_getPrePaginatedRowModel(table) {\n\treturn table.getExpandedRowModel();\n}\n/**\n* Resolves the row model after pagination has sliced rows for the current page.\n*\n* When `manualPagination` is enabled, or no paginated row-model factory was\n* registered, this returns the pre-paginated row model because pagination is\n* expected to happen before data reaches the table.\n*\n* @example\n* ```ts\n* const pageRows = table_getPaginatedRowModel(table)\n* ```\n*/\nfunction table_getPaginatedRowModel(table) {\n\tif (!table._rowModels.paginatedRowModel) table._rowModels.paginatedRowModel = table.options.features.paginatedRowModel?.(table);\n\tif (table.options.manualPagination || !table._rowModels.paginatedRowModel) return table.getPrePaginatedRowModel();\n\treturn table._rowModels.paginatedRowModel();\n}\n/**\n* Resolves the final row model consumed by renderers.\n*\n* This is the end of the built-in row-model pipeline: core -> filtering ->\n* grouping -> sorting -> expanding -> pagination.\n*\n* @example\n* ```ts\n* const visibleRows = table_getRowModel(table)\n* ```\n*/\nfunction table_getRowModel(table) {\n\treturn table.getPaginatedRowModel();\n}\n\n//#endregion\nexport { table_getCoreRowModel, table_getExpandedRowModel, table_getFilteredRowModel, table_getGroupedRowModel, table_getPaginatedRowModel, table_getPreExpandedRowModel, table_getPreFilteredRowModel, table_getPreGroupedRowModel, table_getPrePaginatedRowModel, table_getPreSortedRowModel, table_getRowModel, table_getSortedRowModel };","import { assignTableAPIs } from \"../../utils.js\";\nimport { table_getCoreRowModel, table_getExpandedRowModel, table_getFilteredRowModel, table_getGroupedRowModel, table_getPaginatedRowModel, table_getPreExpandedRowModel, table_getPreFilteredRowModel, table_getPreGroupedRowModel, table_getPrePaginatedRowModel, table_getPreSortedRowModel, table_getRowModel, table_getSortedRowModel } from \"./coreRowModelsFeature.utils.js\";\n\n//#region src/core/row-models/coreRowModelsFeature.ts\n/**\n* Core feature that wires table row-model accessors and row-model caches.\n*/\nconst coreRowModelsFeature = { constructTableAPIs: (table) => {\n\tassignTableAPIs(\"coreRowModelsFeature\", table, {\n\t\ttable_getCoreRowModel: { fn: () => table_getCoreRowModel(table) },\n\t\ttable_getPreFilteredRowModel: { fn: () => table_getPreFilteredRowModel(table) },\n\t\ttable_getFilteredRowModel: { fn: () => table_getFilteredRowModel(table) },\n\t\ttable_getPreGroupedRowModel: { fn: () => table_getPreGroupedRowModel(table) },\n\t\ttable_getGroupedRowModel: { fn: () => table_getGroupedRowModel(table) },\n\t\ttable_getPreSortedRowModel: { fn: () => table_getPreSortedRowModel(table) },\n\t\ttable_getSortedRowModel: { fn: () => table_getSortedRowModel(table) },\n\t\ttable_getPreExpandedRowModel: { fn: () => table_getPreExpandedRowModel(table) },\n\t\ttable_getExpandedRowModel: { fn: () => table_getExpandedRowModel(table) },\n\t\ttable_getPrePaginatedRowModel: { fn: () => table_getPrePaginatedRowModel(table) },\n\t\ttable_getPaginatedRowModel: { fn: () => table_getPaginatedRowModel(table) },\n\t\ttable_getRowModel: { fn: () => table_getRowModel(table) }\n\t});\n} };\n\n//#endregion\nexport { coreRowModelsFeature };","//#region src/core/cells/constructCell.ts\n/**\n* Creates or retrieves the cell prototype for a table.\n* The prototype is cached on the table and shared by all cell instances.\n*/\nfunction getCellPrototype(table) {\n\tif (!table._cellPrototype) {\n\t\ttable._cellPrototype = { table };\n\t\tconst features = Object.values(table._features);\n\t\tfor (let i = 0; i < features.length; i++) features[i].assignCellPrototype?.(table._cellPrototype, table);\n\t}\n\treturn table._cellPrototype;\n}\n/**\n* Constructs a cell instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructCell(column, row, table) {\n\tconst cellPrototype = getCellPrototype(table);\n\tconst cell = Object.create(cellPrototype);\n\tcell.column = column;\n\tcell.id = `${row.id}_${column.id}`;\n\tcell.row = row;\n\tconst initFns = table._cellInstanceInitFns;\n\tfor (let i = 0; i < initFns.length; i++) initFns[i](cell);\n\treturn cell;\n}\n\n//#endregion\nexport { constructCell };","import { flattenBy, hasOwn, makeObjectMap } from \"../../utils.js\";\nimport { expandRowModel } from \"../featureStubs.js\";\nimport { constructCell } from \"../cells/constructCell.js\";\n\n//#region src/core/rows/coreRowsFeature.utils.ts\n/**\n* Returns this row's zero-based position in the current pre-pagination row\n* model. Rows outside that model return `-1`.\n*/\nfunction row_getDisplayIndex(row) {\n\tconst rows = row.table.getRowsInDisplayOrder();\n\tconst displayIndex = row._displayIndexCache;\n\treturn rows[displayIndex] === row ? displayIndex : -1;\n}\n/**\n* Returns the rows in the current display order after assigning their\n* zero-based display indexes.\n*\n* When expanded rows bypass pagination, expanded descendants are inserted into\n* the returned order even though they are absent from the pre-pagination row\n* model.\n*/\nfunction table_getRowsInDisplayOrder(table) {\n\tconst rowModel = table.getPrePaginatedRowModel();\n\tconst rows = table.options.paginateExpandedRows === false ? expandRowModel(table, rowModel).rows : rowModel.rows;\n\tfor (let i = 0; i < rows.length; i++) rows[i]._displayIndexCache = i;\n\treturn rows;\n}\n/**\n* Reads and caches this row's value for a column.\n*\n* The value is produced by the column accessor. Missing columns or display\n* columns without an accessor return `undefined`.\n*\n* @example\n* ```ts\n* const firstName = row_getValue(row, 'firstName')\n* ```\n*/\nfunction row_getValue(row, columnId) {\n\tif (hasOwn(row._valuesCache, columnId)) return row._valuesCache[columnId];\n\tconst column = row.table.getColumn(columnId);\n\tif (!column?.accessorFn) return;\n\trow._valuesCache[columnId] = column.accessorFn(row.original, row.index);\n\treturn row._valuesCache[columnId];\n}\n/**\n* Reads and caches the values used by faceting/grouping for a column.\n*\n* If the column defines `getUniqueValues`, that result is used. Otherwise the\n* row's accessor value is wrapped in a single-item array.\n*\n* @example\n* ```ts\n* const values = row_getUniqueValues(row, 'tags')\n* ```\n*/\nfunction row_getUniqueValues(row, columnId) {\n\tif (hasOwn(row._uniqueValuesCache, columnId)) return row._uniqueValuesCache[columnId];\n\tconst column = row.table.getColumn(columnId);\n\tif (!column?.accessorFn) return;\n\tif (!column.columnDef.getUniqueValues) {\n\t\trow._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n\t\treturn row._uniqueValuesCache[columnId];\n\t}\n\trow._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, row.index);\n\treturn row._uniqueValuesCache[columnId];\n}\n/**\n* Returns a renderable row value for a column.\n*\n* If the accessor value is nullish, the table's `renderFallbackValue` is used\n* instead.\n*\n* @example\n* ```ts\n* const value = row_renderValue(row, 'firstName')\n* ```\n*/\nfunction row_renderValue(row, columnId) {\n\treturn row.getValue(columnId) ?? row.table.options.renderFallbackValue;\n}\n/**\n* Flattens this row's descendant tree into leaf rows.\n*\n* The row itself is not included; only nested `subRows` are walked.\n*\n* @example\n* ```ts\n* const descendants = row_getLeafRows(row)\n* ```\n*/\nfunction row_getLeafRows(row) {\n\treturn flattenBy(row.subRows, (d) => d.subRows);\n}\n/**\n* Returns the deepest structural row depth in the core row model.\n* Root rows are depth `0`, their direct sub-rows are depth `1`, and so on.\n*/\nfunction table_getMaxSubRowDepth(table) {\n\tconst rows = table.getCoreRowModel().flatRows;\n\tlet maxDepth = 0;\n\tfor (let i = 0; i < rows.length; i++) maxDepth = Math.max(maxDepth, rows[i].depth);\n\treturn maxDepth;\n}\n/**\n* Looks up this row's direct parent, if it has one.\n*\n* Parent lookup prefers the core row model for structural parents, then falls\n* back to the pre-pagination row model for generated parent rows.\n*\n* @example\n* ```ts\n* const parent = row_getParentRow(row)\n* ```\n*/\nfunction row_getParentRow(row) {\n\tif (!row.parentId) return;\n\treturn row.table.getCoreRowModel().rowsById[row.parentId] ?? row.table.getRow(row.parentId, true);\n}\n/**\n* Collects this row's ancestor chain from root to direct parent.\n*\n* The current row is not included. Rows without a parent return an empty array.\n*\n* @example\n* ```ts\n* const ancestors = row_getParentRows(row)\n* ```\n*/\nfunction row_getParentRows(row) {\n\tconst parentRows = [];\n\tlet currentRow = row;\n\twhile (true) {\n\t\tconst parentRow = currentRow.getParentRow();\n\t\tif (!parentRow) break;\n\t\tparentRows.push(parentRow);\n\t\tcurrentRow = parentRow;\n\t}\n\treturn parentRows.reverse();\n}\n/**\n* Constructs one cell for each leaf column in this row.\n*\n* The result follows `table.getAllLeafColumns()` order and includes hidden\n* columns; visibility-specific APIs filter this list later.\n*\n* @example\n* ```ts\n* const cells = row_getAllCells(row)\n* ```\n*/\nfunction row_getAllCells(row) {\n\tconst columns = row.table.getAllLeafColumns();\n\tlet cache = row._cellsCache;\n\tif (!cache) cache = row._cellsCache = /* @__PURE__ */ new WeakMap();\n\tconst cells = new Array(columns.length);\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst column = columns[i];\n\t\tlet cell = cache.get(column);\n\t\tif (!cell) {\n\t\t\tcell = constructCell(column, row, row.table);\n\t\t\tcache.set(column, cell);\n\t\t}\n\t\tcells[i] = cell;\n\t}\n\treturn cells;\n}\n/**\n* Builds a lookup map of this row's cells keyed by column id.\n*\n* This is the static implementation behind `row.getAllCellsByColumnId()`.\n*\n* @example\n* ```ts\n* const cellsById = row_getAllCellsByColumnId(row)\n* ```\n*/\nfunction row_getAllCellsByColumnId(row) {\n\tconst result = makeObjectMap();\n\tconst cells = row.getAllCells();\n\tfor (let i = 0; i < cells.length; i++) {\n\t\tconst cell = cells[i];\n\t\tresult[cell.column.id] = cell;\n\t}\n\treturn result;\n}\n/**\n* Resolves the stable id for a row.\n*\n* `options.getRowId` wins when provided. Otherwise root rows use their index\n* and child rows append their index to the parent id, such as `0.2`.\n*\n* @example\n* ```ts\n* const id = table_getRowId(originalRow, table, index, parentRow)\n* ```\n*/\nfunction table_getRowId(originalRow, table, index, parent) {\n\treturn table.options.getRowId?.(originalRow, index, parent) ?? (parent ? `${parent.id}.${index}` : String(index));\n}\n/**\n* Looks up a row by id from the current or full row model.\n*\n* By default this searches `table.getRowModel()`. Passing `searchAll` searches\n* the pre-pagination model first, then falls back to the core model.\n*\n* @example\n* ```ts\n* const row = table_getRow(table, rowId, true)\n* ```\n*/\nfunction table_getRow(table, rowId, searchAll) {\n\tlet row = (searchAll ? table.getPrePaginatedRowModel() : table.getRowModel()).rowsById[rowId];\n\tif (!row) {\n\t\trow = table.getCoreRowModel().rowsById[rowId];\n\t\tif (!row) {\n\t\t\tif (process.env.NODE_ENV === \"development\") throw new Error(`getRow could not find row with ID: ${rowId}`);\n\t\t\tthrow new Error();\n\t\t}\n\t}\n\treturn row;\n}\n\n//#endregion\nexport { row_getAllCells, row_getAllCellsByColumnId, row_getDisplayIndex, row_getLeafRows, row_getParentRow, row_getParentRows, row_getUniqueValues, row_getValue, row_renderValue, table_getMaxSubRowDepth, table_getRow, table_getRowId, table_getRowsInDisplayOrder };","import { assignPrototypeAPIs, assignTableAPIs } from \"../../utils.js\";\nimport { row_getAllCells, row_getAllCellsByColumnId, row_getDisplayIndex, row_getLeafRows, row_getParentRow, row_getParentRows, row_getUniqueValues, row_getValue, row_renderValue, table_getMaxSubRowDepth, table_getRow, table_getRowId, table_getRowsInDisplayOrder } from \"./coreRowsFeature.utils.js\";\n\n//#region src/core/rows/coreRowsFeature.ts\n/**\n* Core feature that creates row APIs for values, cells, and tree traversal.\n*/\nconst coreRowsFeature = {\n\tassignRowPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"coreRowsFeature\", prototype, table, {\n\t\t\trow_getDisplayIndex: { fn: (row) => row_getDisplayIndex(row) },\n\t\t\trow_getAllCellsByColumnId: {\n\t\t\t\tfn: (row) => row_getAllCellsByColumnId(row),\n\t\t\t\tmemoDeps: (row) => [row.getAllCells()]\n\t\t\t},\n\t\t\trow_getAllCells: {\n\t\t\t\tfn: (row) => row_getAllCells(row),\n\t\t\t\tmemoDeps: (row) => [row.table.getAllLeafColumns()]\n\t\t\t},\n\t\t\trow_getLeafRows: {\n\t\t\t\tfn: (row) => row_getLeafRows(row),\n\t\t\t\tmemoDeps: (row) => [row.subRows]\n\t\t\t},\n\t\t\trow_getParentRow: { fn: (row) => row_getParentRow(row) },\n\t\t\trow_getParentRows: { fn: (row) => row_getParentRows(row) },\n\t\t\trow_getUniqueValues: { fn: (row, columnId) => row_getUniqueValues(row, columnId) },\n\t\t\trow_getValue: { fn: (row, columnId) => row_getValue(row, columnId) },\n\t\t\trow_renderValue: { fn: (row, columnId) => row_renderValue(row, columnId) }\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"coreRowsFeature\", table, {\n\t\t\ttable_getRowsInDisplayOrder: {\n\t\t\t\tfn: () => table_getRowsInDisplayOrder(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.getPrePaginatedRowModel().rows,\n\t\t\t\t\ttable.options.paginateExpandedRows,\n\t\t\t\t\ttable.options.paginateExpandedRows === false ? table.atoms.expanded?.get() : void 0\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getRowId: { fn: (originalRow, index, parent) => table_getRowId(originalRow, table, index, parent) },\n\t\t\ttable_getRow: { fn: (id, searchAll) => table_getRow(table, id, searchAll) },\n\t\t\ttable_getMaxSubRowDepth: {\n\t\t\t\tfn: () => table_getMaxSubRowDepth(table),\n\t\t\t\tmemoDeps: () => [table.getCoreRowModel()]\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { coreRowsFeature };","import { cloneState, functionalUpdate } from \"../../utils.js\";\n\n//#region src/core/table/coreTablesFeature.utils.ts\n/**\n* Synchronizes externally controlled state slices into the table's base atoms.\n*\n* This keeps `options.state` values mirrored in the atom graph so derived\n* atoms, stores, and table APIs read a consistent snapshot.\n*\n* Adapters that update options during their host's render phase pass the\n* state snapshot captured by the committed render as `capturedState` — the\n* shared options object may already hold values from a newer render that\n* never commits. Pass `null` to publish nothing (a captured \"no controlled\n* state\"); omitting the argument reads the current `table.options.state`\n* instead. An optional `compare` suppresses semantically unchanged slice\n* writes; the default remains reference equality.\n*\n* @example\n* ```ts\n* table_syncExternalStateToBaseAtoms(table)\n* table_syncExternalStateToBaseAtoms(table, capturedState ?? null, shallow)\n* ```\n*/\nfunction table_syncExternalStateToBaseAtoms(table, capturedState, compare = (currentState, externalState) => currentState === externalState) {\n\tconst state = capturedState === void 0 ? table.options.state : capturedState;\n\ttable._reactivity.batch(() => {\n\t\tif (state) for (const key in state) {\n\t\t\tconst baseAtom = table.baseAtoms[key];\n\t\t\tif (!baseAtom) continue;\n\t\t\tconst rawExternalState = state[key];\n\t\t\tconst externalState = rawExternalState === void 0 ? table.initialState[key] : rawExternalState;\n\t\t\tif (!compare(table._reactivity.untrack(() => baseAtom.get()), externalState)) baseAtom.set(() => externalState);\n\t\t}\n\t});\n}\n/**\n* Publishes captured controlled state after a host framework commits.\n*\n* Render-phase adapters stage options without synchronizing base atoms, then\n* pass the state captured by the committed render here. The commit signal also\n* invalidates ownership changes when no base atom was written.\n*/\nfunction table_publishExternalState(table, state, compare = (currentState, externalState) => currentState === externalState) {\n\ttable._reactivity.batch(() => {\n\t\ttable_syncExternalStateToBaseAtoms(table, state, compare);\n\t\ttable._reactivity.commit?.();\n\t});\n}\n/**\n* Resets all internal table base atoms to `table.initialState`, then clears\n* transient instance data through registered feature reset hooks.\n*\n* This resets internally owned state slices in a single reactivity batch. Use\n* feature-specific reset APIs when a slice may be externally owned.\n*\n* @example\n* ```ts\n* table_reset(table)\n* ```\n*/\nfunction table_reset(table) {\n\tconst snap = cloneState(table.initialState);\n\ttable._reactivity.batch(() => {\n\t\tconst keys = Object.keys(snap);\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key = keys[i];\n\t\t\ttable.baseAtoms[key].set(snap[key]);\n\t\t}\n\t});\n\tconst features = Object.values(table._features);\n\tfor (let i = 0; i < features.length; i++) features[i].resetTableInstanceData?.(table);\n}\n/**\n* Merges new table options with the current resolved options.\n*\n* If `options.mergeOptions` is provided, it owns the merge behavior; otherwise\n* options are shallow-merged. Static options that should never change after\n* initialization are restored on a fresh object so framework merge helpers may\n* return readonly getter/proxy objects.\n*\n* @example\n* ```ts\n* const options = table_mergeOptions(table, nextOptions)\n* ```\n*/\nfunction table_mergeOptions(table, newOptions) {\n\tconst { features, atoms, initialState } = table.options;\n\tif (!table.options.mergeOptions) return {\n\t\t...table.options,\n\t\t...newOptions,\n\t\tfeatures,\n\t\tatoms,\n\t\tinitialState\n\t};\n\tconst mergedOptions = table.options.mergeOptions(table.options, newOptions);\n\tconst descriptors = { ...Object.getOwnPropertyDescriptors(mergedOptions) };\n\treturn Object.defineProperties(Object.create(Object.getPrototypeOf(mergedOptions)), {\n\t\t...descriptors,\n\t\tfeatures: {\n\t\t\tvalue: features,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t},\n\t\tatoms: {\n\t\t\tvalue: atoms,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t},\n\t\tinitialState: {\n\t\t\tvalue: initialState,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t}\n\t});\n}\n/**\n* Updates the table options object.\n*\n* The updater receives the current resolved options and the merged result is\n* immediately assigned to the table instance.\n*\n* @example\n* ```ts\n* table_setOptions(table, (old) => old)\n* table_setOptions(table, (old) => old, { syncExternalState: false })\n* ```\n*/\nfunction table_setOptions(table, updater, options) {\n\tconst mergedOptions = table_mergeOptions(table, functionalUpdate(updater, table.options));\n\tif (table.optionsStore) table.optionsStore.set(() => mergedOptions);\n\telse table.options = mergedOptions;\n\tif (options?.syncExternalState !== false) table_publishExternalState(table, mergedOptions.state ?? null);\n}\n\n//#endregion\nexport { table_mergeOptions, table_publishExternalState, table_reset, table_setOptions, table_syncExternalStateToBaseAtoms };","import { assignTableAPIs } from \"../../utils.js\";\nimport { table_reset, table_setOptions } from \"./coreTablesFeature.utils.js\";\n\n//#region src/core/table/coreTablesFeature.ts\n/**\n* Core feature that adds base table instance APIs such as reset and setOptions.\n*/\nconst coreTablesFeature = { constructTableAPIs: (table) => {\n\tassignTableAPIs(\"coreTablesFeature\", table, {\n\t\ttable_reset: { fn: () => table_reset(table) },\n\t\ttable_setOptions: { fn: (updater) => table_setOptions(table, updater) }\n\t});\n} };\n\n//#endregion\nexport { coreTablesFeature };","import { coreCellsFeature } from \"./cells/coreCellsFeature.js\";\nimport { coreColumnsFeature } from \"./columns/coreColumnsFeature.js\";\nimport { coreHeadersFeature } from \"./headers/coreHeadersFeature.js\";\nimport { coreRowModelsFeature } from \"./row-models/coreRowModelsFeature.js\";\nimport { coreRowsFeature } from \"./rows/coreRowsFeature.js\";\nimport { coreTablesFeature } from \"./table/coreTablesFeature.js\";\n\n//#region src/core/coreFeatures.ts\n/**\n* The built-in core feature set required by every table.\n*\n* These features provide table, column, row, header, cell, and core row-model behavior before optional feature plugins are added.\n*/\nconst coreFeatures = {\n\tcoreCellsFeature,\n\tcoreColumnsFeature,\n\tcoreHeadersFeature,\n\tcoreRowModelsFeature,\n\tcoreRowsFeature,\n\tcoreTablesFeature\n};\n\n//#endregion\nexport { coreFeatures };","//#region src/helpers/columnHelper.ts\n/**\n* Creates helper functions for authoring column definitions with stronger value\n* inference.\n*\n* `accessor` infers `TValue` from an accessor key or accessor function,\n* `display` creates non-data columns, `group` creates parent columns, and\n* `columns` preserves tuple-level value types for arrays. At runtime these\n* helpers only return column definition objects.\n*\n* @example\n* ```tsx\n* const helper = createColumnHelper<typeof features, Person>() // features is the result of `tableFeatures({})` helper\n* const columns = [\n* helper.display({ id: 'actions', header: 'Actions' }),\n* helper.accessor('firstName', {}),\n* helper.accessor((row) => row.lastName, { id: 'lastName' }),\n* ]\n* ```\n*/\nfunction createColumnHelper() {\n\treturn {\n\t\taccessor: (accessor, column) => {\n\t\t\treturn typeof accessor === \"function\" ? {\n\t\t\t\t...column,\n\t\t\t\taccessorFn: accessor\n\t\t\t} : {\n\t\t\t\t...column,\n\t\t\t\taccessorKey: accessor\n\t\t\t};\n\t\t},\n\t\tcolumns: (columns) => columns,\n\t\tdisplay: (column) => column,\n\t\tgroup: (column) => column\n\t};\n}\n\n//#endregion\nexport { createColumnHelper };","//#region src/helpers/metaHelper.ts\n/**\n* A helper for declaring the `tableMeta`/`columnMeta` type-only slots in the\n* `features` option without a type assertion.\n*\n* Equivalent to `{} as TMeta`, but reads as type-only at the call site and\n* avoids `@typescript-eslint/no-unnecessary-type-assertion` false positives\n* when the meta type has only optional properties (where an auto-fix removing\n* the assertion would silently degrade the inferred meta type to `{}`).\n*\n* The returned value is a phantom — it is ignored and stripped from the\n* table's registered features at runtime; only its type is used.\n* @example\n* ```\n* import { metaHelper, tableFeatures, rowSortingFeature } from '@tanstack/react-table'\n* const features = tableFeatures({\n* rowSortingFeature,\n* tableMeta: metaHelper<MyTableMeta>(),\n* columnMeta: metaHelper<MyColumnMeta>(),\n* });\n* ```\n*/\nfunction metaHelper() {\n\treturn {};\n}\n\n//#endregion\nexport { metaHelper };","//#region src/helpers/tableFeatures.ts\n/**\n* A helper function to help define the features that are to be imported and applied to a table instance.\n* Use this utility to make it easier to have the correct type inference for the features that are being imported.\n* **Note:** It is recommended to use this utility statically outside of a component.\n*\n* Alongside feature modules, this object carries everything else that is\n* statically stitched into the table:\n*\n* - Row model factories (`sortedRowModel`, `filteredRowModel`, etc.)\n* - Row model function registries (`sortFns`, `filterFns`, `aggregationFns`),\n* whose keys become the valid string values for `sortFn`, `filterFn`,\n* `globalFilterFn`, and `aggregationFn` with full inference\n* - Type-only `tableMeta`/`columnMeta` slots for declaring per-table meta types\n* instead of using global declaration merging. The values are phantom\n* (ignored and stripped at runtime); only their types are used.\n* @example\n* ```\n* import {\n* columnFilteringFeature,\n* createFilteredRowModel,\n* createSortedRowModel,\n* filterFn_includesString,\n* rowSortingFeature,\n* sortFn_alphanumeric,\n* sortFn_text,\n* tableFeatures,\n* } from '@tanstack/react-table'\n* const features = tableFeatures({\n* columnFilteringFeature,\n* rowSortingFeature,\n* filteredRowModel: createFilteredRowModel(),\n* sortedRowModel: createSortedRowModel(),\n* filterFns: { includesString: filterFn_includesString, myCustomFilterFn },\n* sortFns: { alphanumeric: sortFn_alphanumeric, text: sortFn_text },\n* tableMeta: {} as { updateData: (rowIndex: number, columnId: string, value: unknown) => void },\n* columnMeta: {} as { align?: 'left' | 'right' },\n* });\n* const table = useTable({ features, columns, data });\n* ```\n*/\nfunction tableFeatures(features) {\n\treturn features;\n}\n\n//#endregion\nexport { tableFeatures };","//#region src/shallow.ts\nfunction shallow(objA, objB) {\n\tif (Object.is(objA, objB)) return true;\n\tif (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) return false;\n\tif (objA instanceof Map && objB instanceof Map) {\n\t\tif (objA.size !== objB.size) return false;\n\t\tfor (const [k, v] of objA) if (!objB.has(k) || !Object.is(v, objB.get(k))) return false;\n\t\treturn true;\n\t}\n\tif (objA instanceof Set && objB instanceof Set) {\n\t\tif (objA.size !== objB.size) return false;\n\t\tfor (const v of objA) if (!objB.has(v)) return false;\n\t\treturn true;\n\t}\n\tif (objA instanceof Date && objB instanceof Date) {\n\t\tif (objA.getTime() !== objB.getTime()) return false;\n\t\treturn true;\n\t}\n\tconst keysA = getOwnKeys(objA);\n\tif (keysA.length !== getOwnKeys(objB).length) return false;\n\tfor (let i = 0; i < keysA.length; i++) if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) return false;\n\treturn true;\n}\nfunction getOwnKeys(obj) {\n\treturn Object.keys(obj).concat(Object.getOwnPropertySymbols(obj));\n}\n\n//#endregion\nexport { shallow };\n//# sourceMappingURL=shallow.js.map","import { cloneState, hasOwn } from \"../../utils.js\";\nimport { table_syncExternalStateToBaseAtoms } from \"./coreTablesFeature.utils.js\";\nimport { coreFeatures } from \"../coreFeatures.js\";\nimport { atomToStore } from \"../reactivity/coreReactivityFeature.utils.js\";\nimport { shallow } from \"@tanstack/store\";\n\n//#region src/core/table/constructTable.ts\n/**\n* Builds the initial table state from registered features and user initial state.\n*\n* Each feature contributes its default state before user-provided `initialState` values are merged in.\n*/\nfunction getInitialTableState(features, initialState = {}) {\n\tObject.values(features).forEach((feature) => {\n\t\tinitialState = feature.getInitialState?.(initialState) ?? initialState;\n\t});\n\treturn cloneState(initialState);\n}\n/**\n* Constructs a table instance from normalized table internals.\n*\n* This wires core properties, feature prototype APIs, and instance data used by table rendering and row-model operations.\n*/\nfunction constructTable(tableOptions) {\n\tconst _reactivity = tableOptions.features.coreReactivityFeature;\n\tconst { aggregationFns, columnMeta: _columnMeta, coreRowModel, expandedRowModel, facetedMinMaxValues, facetedRowModel, facetedUniqueValues, filterFns, filterMeta: _filterMeta, filteredRowModel, groupedRowModel, paginatedRowModel, sortFns, sortedRowModel, tableMeta: _tableMeta, ...features } = tableOptions.features;\n\tconst table = {\n\t\t_cellInstanceInitFns: [],\n\t\t_columnInstanceInitFns: [],\n\t\t_features: {\n\t\t\t...coreFeatures,\n\t\t\t...features\n\t\t},\n\t\t_headerGroupInstanceInitFns: [],\n\t\t_headerInstanceInitFns: [],\n\t\t_reactivity,\n\t\t_rowInstanceInitFns: [],\n\t\t_rowModelFns: {\n\t\t\taggregationFns,\n\t\t\tfilterFns,\n\t\t\tsortFns\n\t\t},\n\t\t_rowModels: {},\n\t\tatoms: {},\n\t\tbaseAtoms: {}\n\t};\n\tconst featuresList = Object.values(table._features);\n\tconst mergedOptions = {\n\t\t...featuresList.reduce((obj, feature) => {\n\t\t\treturn Object.assign(obj, feature.getDefaultTableOptions?.(table));\n\t\t}, {}),\n\t\t...tableOptions\n\t};\n\tif (_reactivity.wrapExternalAtoms && mergedOptions.atoms) for (const [atomKey, _atom] of Object.entries(mergedOptions.atoms)) {\n\t\tconst atom = _atom;\n\t\tconst wrappedAtom = _reactivity.createWritableAtom(atom.get(), { debugName: `externalAtom/${atomKey}` });\n\t\tmergedOptions.atoms[atomKey] = wrappedAtom;\n\t\tlet syncExternal = false;\n\t\tconst syncAtomToWrappedSub = atom.subscribe((value) => {\n\t\t\tif (syncExternal) return;\n\t\t\twrappedAtom.set(value);\n\t\t});\n\t\tconst syncWrappedToAtomSub = wrappedAtom.subscribe((value) => {\n\t\t\tsyncExternal = true;\n\t\t\tatom.set(value);\n\t\t\tsyncExternal = false;\n\t\t});\n\t\t_reactivity.addSubscription(syncAtomToWrappedSub);\n\t\t_reactivity.addSubscription(syncWrappedToAtomSub);\n\t}\n\tif (_reactivity.createOptionsStore) {\n\t\ttable.optionsStore = _reactivity.createWritableAtom(mergedOptions, { debugName: \"table/optionsStore\" });\n\t\tObject.defineProperty(table, \"options\", {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tget() {\n\t\t\t\treturn table.optionsStore.get();\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\ttable.optionsStore.set(() => value);\n\t\t\t}\n\t\t});\n\t} else table.options = mergedOptions;\n\ttable.initialState = getInitialTableState(table._features, table.options.initialState);\n\tconst stateKeys = Object.keys(table.initialState);\n\tfor (let i = 0; i < stateKeys.length; i++) {\n\t\tconst key = stateKeys[i];\n\t\ttable.baseAtoms[key] = _reactivity.createWritableAtom(table.initialState[key], { debugName: `table/baseAtoms/${key}` });\n\t\ttable.atoms[key] = _reactivity.createReadonlyAtom(() => {\n\t\t\tconst options = table.options;\n\t\t\tconst externalAtom = options.atoms?.[key];\n\t\t\tconst reactiveState = externalAtom ? externalAtom.get() : table.baseAtoms[key].get();\n\t\t\tif (externalAtom) return reactiveState;\n\t\t\tconst controlledState = options.state;\n\t\t\tif (controlledState && hasOwn(controlledState, key)) {\n\t\t\t\tconst controlledValue = controlledState[key];\n\t\t\t\treturn controlledValue === void 0 ? table.initialState[key] : controlledValue;\n\t\t\t}\n\t\t\treturn reactiveState;\n\t\t}, { debugName: `table/atoms/${key}` });\n\t}\n\ttable_syncExternalStateToBaseAtoms(table);\n\ttable.store = atomToStore(_reactivity.createReadonlyAtom(() => {\n\t\tconst snapshot = {};\n\t\tfor (let i = 0; i < stateKeys.length; i++) {\n\t\t\tconst key = stateKeys[i];\n\t\t\tsnapshot[key] = table.atoms[key].get();\n\t\t}\n\t\treturn snapshot;\n\t}, {\n\t\tcompare: shallow,\n\t\tdebugName: \"table/store\"\n\t}));\n\tfor (let i = 0; i < featuresList.length; i++) {\n\t\tconst feature = featuresList[i];\n\t\tfeature.initTableInstanceData?.(table);\n\t\tif (feature.initCellInstanceData) table._cellInstanceInitFns.push(feature.initCellInstanceData.bind(feature));\n\t\tif (feature.initColumnInstanceData) table._columnInstanceInitFns.push(feature.initColumnInstanceData.bind(feature));\n\t\tif (feature.initHeaderGroupInstanceData) table._headerGroupInstanceInitFns.push(feature.initHeaderGroupInstanceData.bind(feature));\n\t\tif (feature.initHeaderInstanceData) table._headerInstanceInitFns.push(feature.initHeaderInstanceData.bind(feature));\n\t\tif (feature.initRowInstanceData) table._rowInstanceInitFns.push(feature.initRowInstanceData.bind(feature));\n\t\tfeature.constructTableAPIs?.(table);\n\t}\n\tif (process.env.NODE_ENV === \"development\" && (tableOptions.debugAll || tableOptions.debugTable)) {\n\t\tconst features = Object.keys(table._features);\n\t\tconst rowModels = Object.entries({\n\t\t\tcoreRowModel,\n\t\t\tfilteredRowModel,\n\t\t\tgroupedRowModel,\n\t\t\tsortedRowModel,\n\t\t\texpandedRowModel,\n\t\t\tpaginatedRowModel,\n\t\t\tfacetedRowModel,\n\t\t\tfacetedMinMaxValues,\n\t\t\tfacetedUniqueValues\n\t\t}).filter(([, factory]) => factory).map(([key]) => key);\n\t\tconst states = Object.keys(table.initialState);\n\t\tconsole.log(`Constructing Table Instance\n\n Features: ${features.join(\"\\n \")}\n\n Row Models: ${rowModels.length ? rowModels.join(\"\\n \") : \"(none)\"}\n\n States: ${states.join(\"\\n \")}\\n`, { table });\n\t}\n\treturn table;\n}\n\n//#endregion\nexport { constructTable, getInitialTableState };","import { makeObjectMap } from \"../../utils.js\";\n\n//#region src/features/column-faceting/columnFacetingFeature.utils.ts\n/**\n* Computes min and max numeric facet values for one column.\n*\n* The configured `facetedMinMaxValues` row-model factory owns the calculation.\n* If no factory is registered, the result is `undefined`.\n*\n* @example\n* ```ts\n* const range = column_getFacetedMinMaxValues(column, table)\n* ```\n*/\nfunction column_getFacetedMinMaxValues(column, table) {\n\tconst facetedMinMaxValues = table._rowModels.facetedMinMaxValues ??= makeObjectMap();\n\tlet facetedMinMaxValuesFn = facetedMinMaxValues[column.id];\n\tif (!facetedMinMaxValuesFn) facetedMinMaxValuesFn = facetedMinMaxValues[column.id] = table.options.features.facetedMinMaxValues?.(table, column.id) ?? (() => void 0);\n\treturn facetedMinMaxValuesFn();\n}\n/**\n* Computes the row model used to derive one column's facet values.\n*\n* The faceted row model normally applies every other active filter while\n* excluding this column's own filter. If no factory is registered, the\n* pre-filtered row model is returned.\n*\n* @example\n* ```ts\n* const rows = column_getFacetedRowModel(column, table)\n* ```\n*/\nfunction column_getFacetedRowModel(column, table) {\n\tconst columnId = column?.id ?? \"\";\n\tconst facetedRowModels = table._rowModels.facetedRowModels ??= makeObjectMap();\n\tlet facetedRowModelFn = facetedRowModels[columnId];\n\tif (!facetedRowModelFn) facetedRowModelFn = facetedRowModels[columnId] = table.options.features.facetedRowModel?.(table, columnId) ?? (() => table.getPreFilteredRowModel());\n\treturn facetedRowModelFn();\n}\n/**\n* Computes unique facet values and their occurrence counts for one column.\n*\n* The configured `facetedUniqueValues` row-model factory owns the calculation.\n* If no factory is registered, an empty `Map` is returned.\n*\n* @example\n* ```ts\n* const values = column_getFacetedUniqueValues(column, table)\n* ```\n*/\nfunction column_getFacetedUniqueValues(column, table) {\n\tconst facetedUniqueValues = table._rowModels.facetedUniqueValues ??= makeObjectMap();\n\tlet facetedUniqueValuesFn = facetedUniqueValues[column.id];\n\tif (!facetedUniqueValuesFn) facetedUniqueValuesFn = facetedUniqueValues[column.id] = table.options.features.facetedUniqueValues?.(table, column.id) ?? createStableEmptyMapFn();\n\treturn facetedUniqueValuesFn();\n}\nfunction createStableEmptyMapFn() {\n\tconst emptyMap = /* @__PURE__ */ new Map();\n\treturn () => emptyMap;\n}\n/**\n* Computes min and max numeric facet values for the global filter context.\n*\n* The global context is requested with the internal `__global__` column id. If\n* no factory is registered, the result is `undefined`.\n*\n* @example\n* ```ts\n* const range = table_getGlobalFacetedMinMaxValues(table)\n* ```\n*/\nfunction table_getGlobalFacetedMinMaxValues(table) {\n\tif (!table._rowModels.globalFacetedMinMaxValues) table._rowModels.globalFacetedMinMaxValues = table.options.features.facetedMinMaxValues?.(table, \"__global__\") ?? (() => void 0);\n\tconst facetedMinMaxValuesFn = table._rowModels.globalFacetedMinMaxValues;\n\treturn facetedMinMaxValuesFn();\n}\n/**\n* Computes the row model used to derive global facet values.\n*\n* The global context is requested with the internal `__global__` column id. If\n* no faceted row-model factory is registered, the pre-filtered row model is\n* returned.\n*\n* @example\n* ```ts\n* const rows = table_getGlobalFacetedRowModel(table)\n* ```\n*/\nfunction table_getGlobalFacetedRowModel(table) {\n\tif (!table._rowModels.globalFacetedRowModel) table._rowModels.globalFacetedRowModel = table.options.features.facetedRowModel?.(table, \"__global__\") ?? (() => table.getPreFilteredRowModel());\n\tconst facetedRowModelFn = table._rowModels.globalFacetedRowModel;\n\treturn facetedRowModelFn();\n}\n/**\n* Computes unique values and occurrence counts for the global filter context.\n*\n* The global context is requested with the internal `__global__` column id. If\n* no factory is registered, an empty `Map` is returned.\n*\n* @example\n* ```ts\n* const values = table_getGlobalFacetedUniqueValues(table)\n* ```\n*/\nfunction table_getGlobalFacetedUniqueValues(table) {\n\tif (!table._rowModels.globalFacetedUniqueValues) table._rowModels.globalFacetedUniqueValues = table.options.features.facetedUniqueValues?.(table, \"__global__\") ?? createStableEmptyMapFn();\n\tconst facetedUniqueValuesFn = table._rowModels.globalFacetedUniqueValues;\n\treturn facetedUniqueValuesFn();\n}\n\n//#endregion\nexport { column_getFacetedMinMaxValues, column_getFacetedRowModel, column_getFacetedUniqueValues, table_getGlobalFacetedMinMaxValues, table_getGlobalFacetedRowModel, table_getGlobalFacetedUniqueValues };","import { assignPrototypeAPIs, assignTableAPIs } from \"../../utils.js\";\nimport { column_getFacetedMinMaxValues, column_getFacetedRowModel, column_getFacetedUniqueValues, table_getGlobalFacetedMinMaxValues, table_getGlobalFacetedRowModel, table_getGlobalFacetedUniqueValues } from \"./columnFacetingFeature.utils.js\";\n\n//#region src/features/column-faceting/columnFacetingFeature.ts\n/**\n* Feature that derives faceted row models, unique values, and min/max values for filters.\n*\n* These APIs are deliberately not memoized at this layer: the stock\n* `createFaceted*` factories memoize internally (like every other stock row\n* model), and an extra memo layer here would freeze custom factories whose\n* data changes independently of the faceted row model. Custom factories own\n* their memoization.\n*/\nconst columnFacetingFeature = {\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnFacetingFeature\", prototype, table, {\n\t\t\tcolumn_getFacetedRowModel: { fn: (column) => column_getFacetedRowModel(column, column.table) },\n\t\t\tcolumn_getFacetedMinMaxValues: { fn: (column) => column_getFacetedMinMaxValues(column, column.table) },\n\t\t\tcolumn_getFacetedUniqueValues: { fn: (column) => column_getFacetedUniqueValues(column, column.table) }\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"columnFacetingFeature\", table, {\n\t\t\ttable_getGlobalFacetedRowModel: { fn: () => table_getGlobalFacetedRowModel(table) },\n\t\t\ttable_getGlobalFacetedMinMaxValues: { fn: () => table_getGlobalFacetedMinMaxValues(table) },\n\t\t\ttable_getGlobalFacetedUniqueValues: { fn: () => table_getGlobalFacetedUniqueValues(table) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { columnFacetingFeature };","import { cloneState, functionalUpdate, isFunction, setStateSlice } from \"../../utils.js\";\n\n//#region src/features/column-filtering/columnFilteringFeature.utils.ts\n/**\n* Creates the default column filter state.\n*\n* The feature default is an empty array, meaning no column filters are active.\n* Reset APIs use this value when `defaultState` is `true`.\n*\n* @example\n* ```ts\n* const filters = getDefaultColumnFiltersState()\n* ```\n*/\nfunction getDefaultColumnFiltersState() {\n\treturn [];\n}\n/**\n* Chooses a built-in filter function from the column's first core row value.\n*\n* Strings use `includesString`, numbers use `inNumberRange`, booleans and\n* objects use `equals`, dates use `inDateRange`, arrays use `arrIncludes`,\n* and unknown values fall back to `weakEquals`.\n*\n* The chosen filter function is looked up in the table's `filterFns`\n* registry. When it is not registered there, this returns `undefined` and\n* warns in development instead of substituting a different filter function.\n*\n* @example\n* ```ts\n* const filterFn = column_getAutoFilterFn(column)\n* ```\n*/\nfunction column_getAutoFilterFn(column) {\n\tconst filterFns = column.table._rowModelFns.filterFns;\n\tconst rows = column.table.getCoreRowModel().flatRows;\n\tlet value;\n\tfor (let i = 0; i < rows.length; i++) {\n\t\tconst rowValue = rows[i].getValue(column.id);\n\t\tif (rowValue !== null && rowValue !== void 0) {\n\t\t\tvalue = rowValue;\n\t\t\tbreak;\n\t\t}\n\t}\n\tlet filterFnName;\n\tif (typeof value === \"string\") filterFnName = \"includesString\";\n\telse if (typeof value === \"number\") filterFnName = \"inNumberRange\";\n\telse if (typeof value === \"boolean\") filterFnName = \"equals\";\n\telse if (Array.isArray(value)) filterFnName = \"arrIncludes\";\n\telse if (Object.prototype.toString.call(value) === \"[object Date]\") filterFnName = \"inDateRange\";\n\telse if (value !== null && typeof value === \"object\") filterFnName = \"equals\";\n\telse filterFnName = \"weakEquals\";\n\tconst filterFn = filterFns?.[filterFnName];\n\tif (process.env.NODE_ENV === \"development\" && !filterFn) console.warn(`filterFn '${filterFnName}' (auto) for column '${column.id}' is not registered`);\n\treturn filterFn;\n}\n/**\n* Resolves the filter function configured for a column.\n*\n* Function-valued `columnDef.filterFn` is returned directly, `'auto'` delegates\n* to `column_getAutoFilterFn`, and string values are looked up in the table's\n* filter function registry.\n*\n* @example\n* ```ts\n* const filterFn = column_getFilterFn(column)\n* ```\n*/\nfunction column_getFilterFn(column) {\n\tlet filterFn = null;\n\tconst filterFns = column.table._rowModelFns.filterFns;\n\tfilterFn = isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === \"auto\" ? column_getAutoFilterFn(column) : filterFns?.[column.columnDef.filterFn];\n\tif (process.env.NODE_ENV === \"development\" && !filterFn && column.columnDef.filterFn !== \"auto\") console.warn(`filterFn '${String(column.columnDef.filterFn)}' for column '${column.id}' is not registered`);\n\treturn filterFn ?? void 0;\n}\n/**\n* Checks whether column filtering is enabled for this accessor column.\n*\n* The column must have an accessor and filtering must be enabled by the column\n* definition, `enableColumnFilters`, and the table-wide `enableFilters` option.\n*\n* @example\n* ```ts\n* const canFilter = column_getCanFilter(column)\n* ```\n*/\nfunction column_getCanFilter(column) {\n\treturn (column.columnDef.enableColumnFilter ?? true) && (column.table.options.enableColumnFilters ?? true) && (column.table.options.enableFilters ?? true) && !!column.accessorFn;\n}\n/**\n* Checks whether this column currently has an entry in `state.columnFilters`.\n*\n* This only reflects filter state presence; it does not indicate whether the\n* filter removes any rows.\n*\n* @example\n* ```ts\n* const isFiltered = column_getIsFiltered(column)\n* ```\n*/\nfunction column_getIsFiltered(column) {\n\treturn column_getFilterIndex(column) > -1;\n}\n/**\n* Reads this column's current filter value from `state.columnFilters`.\n*\n* Missing filter entries return `undefined`.\n*\n* @example\n* ```ts\n* const value = column_getFilterValue(column)\n* ```\n*/\nfunction column_getFilterValue(column) {\n\treturn column.table.atoms.columnFilters?.get()?.find((d) => d.id === column.id)?.value;\n}\n/**\n* Finds this column's position in the ordered `state.columnFilters` array.\n*\n* The result is `-1` when the column has no active filter.\n*\n* @example\n* ```ts\n* const index = column_getFilterIndex(column)\n* ```\n*/\nfunction column_getFilterIndex(column) {\n\treturn column.table.atoms.columnFilters?.get()?.findIndex((d) => d.id === column.id) ?? -1;\n}\n/**\n* Adds, updates, or removes this column's filter value.\n*\n* The incoming value may be an updater. After resolution, `autoRemove` rules\n* decide whether the filter should be removed instead of stored.\n*\n* @example\n* ```ts\n* column_setFilterValue(column, (old) => String(old ?? '').trim())\n* ```\n*/\nfunction column_setFilterValue(column, value) {\n\ttable_setColumnFilters(column.table, (old) => {\n\t\tconst filterFn = column_getFilterFn(column);\n\t\tconst previousFilter = old.find((d) => d.id === column.id);\n\t\tconst newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : void 0);\n\t\tif (shouldAutoRemoveFilter(filterFn, newFilter, column)) return old.filter((d) => d.id !== column.id);\n\t\tconst newFilterObj = {\n\t\t\tid: column.id,\n\t\t\tvalue: newFilter\n\t\t};\n\t\tif (previousFilter) return old.map((d) => {\n\t\t\tif (d.id === column.id) return newFilterObj;\n\t\t\treturn d;\n\t\t});\n\t\tif (old.length) return [...old, newFilterObj];\n\t\treturn [newFilterObj];\n\t});\n}\n/**\n* Routes a column filter updater through the table's filter change handler.\n*\n* The resolved filters are cleaned before they are emitted: filters for known\n* columns are removed when their filter function says the value should be\n* auto-removed.\n*\n* @example\n* ```ts\n* table_setColumnFilters(table, (old) => old.filter((filter) => filter.id !== 'age'))\n* ```\n*/\nfunction table_setColumnFilters(table, updater) {\n\tconst leafColumnsById = table.getAllLeafColumnsById();\n\tconst updateFn = (old) => {\n\t\treturn functionalUpdate(updater, old).filter((filter) => {\n\t\t\tconst column = leafColumnsById[filter.id];\n\t\t\tif (column) {\n\t\t\t\tif (shouldAutoRemoveFilter(column_getFilterFn(column), filter.value, column)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t};\n\tsetStateSlice(table, \"columnFilters\", updateFn);\n}\n/**\n* Resets `columnFilters` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.columnFilters` when it\n* exists. Passing `true` ignores initial state and resets to `[]`.\n*\n* @example\n* ```ts\n* table_resetColumnFilters(table)\n* table_resetColumnFilters(table, true)\n* ```\n*/\nfunction table_resetColumnFilters(table, defaultState) {\n\ttable_setColumnFilters(table, defaultState ? [] : cloneState(table.initialState.columnFilters ?? []));\n}\n/**\n* Returns whether a filter value should be removed from filter state.\n*\n* `undefined` always removes: it is the universal \"clear this filter\"\n* sentinel used by `setFilterValue(undefined)` and functional updaters. For\n* any other value, a filter function's `autoRemove` hook is authoritative\n* when provided, so custom filter functions can keep values (such as empty\n* strings) that the default heuristic would drop. Without an `autoRemove`\n* hook, empty strings are removed.\n*\n* @example\n* ```ts\n* const removeFilter = shouldAutoRemoveFilter(filterFn, value, column)\n* ```\n*/\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n\tif (typeof value === \"undefined\") return true;\n\tif (filterFn?.autoRemove) return !!filterFn.autoRemove(value, column);\n\treturn typeof value === \"string\" && !value;\n}\n\n//#endregion\nexport { column_getAutoFilterFn, column_getCanFilter, column_getFilterFn, column_getFilterIndex, column_getFilterValue, column_getIsFiltered, column_setFilterValue, getDefaultColumnFiltersState, shouldAutoRemoveFilter, table_resetColumnFilters, table_setColumnFilters };","import { assignPrototypeAPIs, assignTableAPIs, makeObjectMap, makeStateUpdater } from \"../../utils.js\";\nimport { column_getAutoFilterFn, column_getCanFilter, column_getFilterFn, column_getFilterIndex, column_getFilterValue, column_getIsFiltered, column_setFilterValue, getDefaultColumnFiltersState, table_resetColumnFilters, table_setColumnFilters } from \"./columnFilteringFeature.utils.js\";\n\n//#region src/features/column-filtering/columnFilteringFeature.ts\n/**\n* Feature that adds per-column filtering state, options, and column/table filter APIs.\n*/\nconst columnFilteringFeature = {\n\tgetInitialState: (initialState) => {\n\t\treturn {\n\t\t\tcolumnFilters: getDefaultColumnFiltersState(),\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultColumnDef: () => {\n\t\treturn { filterFn: \"auto\" };\n\t},\n\tgetDefaultTableOptions: (table) => {\n\t\treturn {\n\t\t\tonColumnFiltersChange: makeStateUpdater(\"columnFilters\", table),\n\t\t\tfilterFromLeafRows: false,\n\t\t\tmaxLeafRowFilterDepth: 100\n\t\t};\n\t},\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnFilteringFeature\", prototype, table, {\n\t\t\tcolumn_getAutoFilterFn: { fn: (column) => column_getAutoFilterFn(column) },\n\t\t\tcolumn_getFilterFn: { fn: (column) => column_getFilterFn(column) },\n\t\t\tcolumn_getCanFilter: { fn: (column) => column_getCanFilter(column) },\n\t\t\tcolumn_getIsFiltered: { fn: (column) => column_getIsFiltered(column) },\n\t\t\tcolumn_getFilterValue: { fn: (column) => column_getFilterValue(column) },\n\t\t\tcolumn_getFilterIndex: { fn: (column) => column_getFilterIndex(column) },\n\t\t\tcolumn_setFilterValue: { fn: (column, value) => column_setFilterValue(column, value) }\n\t\t});\n\t},\n\tinitRowInstanceData: (row) => {\n\t\trow.columnFilters = makeObjectMap();\n\t\trow.columnFiltersMeta = makeObjectMap();\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"columnFilteringFeature\", table, {\n\t\t\ttable_setColumnFilters: { fn: (updater) => table_setColumnFilters(table, updater) },\n\t\t\ttable_resetColumnFilters: { fn: (defaultState) => table_resetColumnFilters(table, defaultState) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { columnFilteringFeature };","import { callMemoOrStaticFn, cloneState, hasOwn, makeObjectMap } from \"../../utils.js\";\nimport { getPinnedVisibleLeafColumns } from \"../../core/featureStubs.js\";\n\n//#region src/features/column-sizing/columnSizingFeature.utils.ts\n/**\n* Creates the default committed column sizing state.\n*\n* The feature default is an empty map, so columns fall back to their column def\n* size or the built-in sizing defaults.\n*\n* @example\n* ```ts\n* const sizing = getDefaultColumnSizingState()\n* ```\n*/\nfunction getDefaultColumnSizingState() {\n\treturn makeObjectMap();\n}\n/**\n* Creates the built-in sizing defaults for column definitions.\n*\n* Columns default to `size: 150`, `minSize: 20`, and\n* `maxSize: Number.MAX_SAFE_INTEGER` unless overridden by column definitions or\n* table defaults.\n*\n* @example\n* ```ts\n* const defaults = getDefaultColumnSizingColumnDef()\n* ```\n*/\nfunction getDefaultColumnSizingColumnDef() {\n\treturn {\n\t\tsize: 150,\n\t\tminSize: 20,\n\t\tmaxSize: Number.MAX_SAFE_INTEGER\n\t};\n}\n/**\n* Resolves a column's current pixel size.\n*\n* Committed `state.columnSizing[column.id]` wins over `columnDef.size`, then the\n* built-in default size. The result is clamped between min and max size.\n*\n* @example\n* ```ts\n* const width = column_getSize(column)\n* ```\n*/\nfunction column_getSize(column) {\n\tconst defaultSizes = getDefaultColumnSizingColumnDef();\n\tconst columnSizing = column.table.atoms.columnSizing?.get();\n\tconst columnSize = columnSizing && hasOwn(columnSizing, column.id) ? columnSizing[column.id] : void 0;\n\treturn Math.min(Math.max(column.columnDef.minSize ?? defaultSizes.minSize, columnSize ?? column.columnDef.size ?? defaultSizes.size), column.columnDef.maxSize ?? defaultSizes.maxSize);\n}\nfunction buildColumnOffsets(columns) {\n\tconst starts = makeObjectMap();\n\tconst afters = makeObjectMap();\n\tconst sizes = new Array(columns.length);\n\tlet start = 0;\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst column = columns[i];\n\t\tconst size = callMemoOrStaticFn(column, \"getSize\", column_getSize);\n\t\tsizes[i] = size;\n\t\tstarts[column.id] = start;\n\t\tstart += size;\n\t}\n\tlet after = 0;\n\tfor (let i = columns.length - 1; i >= 0; i--) {\n\t\tafters[columns[i].id] = after;\n\t\tafter += sizes[i];\n\t}\n\treturn {\n\t\tstarts,\n\t\tafters\n\t};\n}\n/**\n* Builds start and after offset maps for every visible leaf column, computed\n* once per pinning region plus the full visible list.\n*\n* A single table-level memo of this result backs all `column.getStart()` and\n* `column.getAfter()` calls with O(1) lookups.\n*\n* @example\n* ```ts\n* const offsets = table_getColumnOffsets(table)\n* const startOffset = offsets.start.starts[column.id]\n* ```\n*/\nfunction table_getColumnOffsets(table) {\n\treturn {\n\t\tall: buildColumnOffsets(getPinnedVisibleLeafColumns(table)),\n\t\tcenter: buildColumnOffsets(getPinnedVisibleLeafColumns(table, \"center\")),\n\t\tstart: buildColumnOffsets(getPinnedVisibleLeafColumns(table, \"start\")),\n\t\tend: buildColumnOffsets(getPinnedVisibleLeafColumns(table, \"end\"))\n\t};\n}\nfunction toOffsetsKey(position) {\n\treturn position === \"start\" ? \"start\" : position === \"end\" ? \"end\" : position === \"center\" ? \"center\" : \"all\";\n}\n/**\n* Computes the offset from the start edge of a pinning region to this column.\n*\n* The value is the sum of all previous visible leaf column sizes in the\n* requested `'start'`, `'center'`, or `'end'` region.\n*\n* `start` and `end` are logical positions. In LTR languages/layouts, `start`\n* usually corresponds to left and `end` to right. In RTL languages/layouts,\n* `start` usually corresponds to right and `end` to left.\n*\n* @example\n* ```ts\n* const startOffset = column_getStart(column, 'start')\n* ```\n*/\nfunction column_getStart(column, position) {\n\treturn callMemoOrStaticFn(column.table, \"getColumnOffsets\", table_getColumnOffsets)[toOffsetsKey(position)].starts[column.id] ?? 0;\n}\n/**\n* Computes the offset from the end edge of a pinning region after this column.\n*\n* The value is the sum of all following visible leaf column sizes in the\n* requested region.\n*\n* @example\n* ```ts\n* const endOffset = column_getAfter(column, 'end')\n* ```\n*/\nfunction column_getAfter(column, position) {\n\treturn callMemoOrStaticFn(column.table, \"getColumnOffsets\", table_getColumnOffsets)[toOffsetsKey(position)].afters[column.id] ?? 0;\n}\n/**\n* Removes this column's committed size override.\n*\n* After reset, the column resolves size from `columnDef.size` or built-in\n* defaults again.\n*\n* @example\n* ```ts\n* column_resetSize(column)\n* ```\n*/\nfunction column_resetSize(column) {\n\ttable_setColumnSizing(column.table, (old) => {\n\t\tconst rest = makeObjectMap();\n\t\tconst columnIds = Object.keys(old);\n\t\tfor (let i = 0; i < columnIds.length; i++) {\n\t\t\tconst columnId = columnIds[i];\n\t\t\tif (columnId !== column.id) rest[columnId] = old[columnId];\n\t\t}\n\t\treturn rest;\n\t});\n}\nfunction sumHeaderSize(header) {\n\tif (!header.subHeaders.length) return column_getSize(header.column);\n\tlet sum = 0;\n\tfor (let i = 0; i < header.subHeaders.length; i++) sum += sumHeaderSize(header.subHeaders[i]);\n\treturn sum;\n}\n/**\n* Computes a header's rendered size from its leaf headers.\n*\n* Group headers sum the sizes of all descendant leaf columns. Leaf headers use\n* their column's current size.\n*\n* @example\n* ```ts\n* const width = header_getSize(header)\n* ```\n*/\nfunction header_getSize(header) {\n\treturn sumHeaderSize(header);\n}\n/**\n* Computes a header's offset from the start of its header group.\n*\n* The offset is the previous sibling header's start plus size, or `0` for the\n* first header in the group.\n*\n* @example\n* ```ts\n* const offset = header_getStart(header)\n* ```\n*/\nfunction header_getStart(header) {\n\tif (header.index > 0) {\n\t\tconst prevSiblingHeader = header.headerGroup?.headers[header.index - 1];\n\t\tif (prevSiblingHeader) return callMemoOrStaticFn(prevSiblingHeader, \"getStart\", header_getStart) + callMemoOrStaticFn(prevSiblingHeader, \"getSize\", header_getSize);\n\t}\n\treturn 0;\n}\n/**\n* Routes a committed column sizing updater through the table's sizing handler.\n*\n* The updater may be a next size map or a function of the previous map,\n* matching the instance `table.setColumnSizing` behavior.\n*\n* @example\n* ```ts\n* table_setColumnSizing(table, (old) => ({ ...old, age: 96 }))\n* ```\n*/\nfunction table_setColumnSizing(table, updater) {\n\ttable.options.onColumnSizingChange?.(updater);\n}\n/**\n* Resets `columnSizing` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.columnSizing` when it\n* exists. Passing `true` ignores initial state and resets to `{}`.\n*\n* @example\n* ```ts\n* table_resetColumnSizing(table)\n* table_resetColumnSizing(table, true)\n* ```\n*/\nfunction table_resetColumnSizing(table, defaultState) {\n\ttable_setColumnSizing(table, defaultState ? makeObjectMap() : Object.assign(makeObjectMap(), cloneState(table.initialState.columnSizing ?? {})));\n}\nfunction sumColumnSizes(columns) {\n\tlet sum = 0;\n\tfor (let i = 0; i < columns.length; i++) sum += callMemoOrStaticFn(columns[i], \"getSize\", column_getSize);\n\treturn sum;\n}\n/**\n* Sums the rendered size of the full table header row.\n*\n* This includes start, center, and end columns in the main header group.\n*\n* @example\n* ```ts\n* const width = table_getTotalSize(table)\n* ```\n*/\nfunction table_getTotalSize(table) {\n\treturn table.getHeaderGroups()[0]?.headers.reduce((sum, header) => {\n\t\treturn sum + header_getSize(header);\n\t}, 0) ?? 0;\n}\n/**\n* Sums the sizes of the visible leaf columns pinned to the logical start\n* region.\n*\n* An empty start pinning region returns `0`.\n*\n* @example\n* ```ts\n* const width = table_getStartTotalSize(table)\n* ```\n*/\nfunction table_getStartTotalSize(table) {\n\treturn sumColumnSizes(getPinnedVisibleLeafColumns(table, \"start\"));\n}\n/**\n* Sums the sizes of the visible leaf columns that are not pinned.\n*\n* An empty center region returns `0`.\n*\n* @example\n* ```ts\n* const width = table_getCenterTotalSize(table)\n* ```\n*/\nfunction table_getCenterTotalSize(table) {\n\treturn sumColumnSizes(getPinnedVisibleLeafColumns(table, \"center\"));\n}\n/**\n* Sums the sizes of the visible leaf columns pinned to the logical end region.\n*\n* An empty end pinning region returns `0`.\n*\n* @example\n* ```ts\n* const width = table_getEndTotalSize(table)\n* ```\n*/\nfunction table_getEndTotalSize(table) {\n\treturn sumColumnSizes(getPinnedVisibleLeafColumns(table, \"end\"));\n}\n\n//#endregion\nexport { column_getAfter, column_getSize, column_getStart, column_resetSize, getDefaultColumnSizingColumnDef, getDefaultColumnSizingState, header_getSize, header_getStart, table_getCenterTotalSize, table_getColumnOffsets, table_getEndTotalSize, table_getStartTotalSize, table_getTotalSize, table_resetColumnSizing, table_setColumnSizing };","import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from \"../../utils.js\";\nimport { column_getAfter, column_getSize, column_getStart, column_resetSize, getDefaultColumnSizingColumnDef, getDefaultColumnSizingState, header_getSize, header_getStart, table_getCenterTotalSize, table_getColumnOffsets, table_getEndTotalSize, table_getStartTotalSize, table_getTotalSize, table_resetColumnSizing, table_setColumnSizing } from \"./columnSizingFeature.utils.js\";\n\n//#region src/features/column-sizing/columnSizingFeature.ts\n/**\n* Feature that adds column sizing state, defaults, and size measurement APIs.\n*/\nconst columnSizingFeature = {\n\tgetInitialState: (initialState) => {\n\t\treturn {\n\t\t\tcolumnSizing: getDefaultColumnSizingState(),\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultColumnDef: () => {\n\t\treturn getDefaultColumnSizingColumnDef();\n\t},\n\tgetDefaultTableOptions: (table) => {\n\t\treturn { onColumnSizingChange: makeStateUpdater(\"columnSizing\", table) };\n\t},\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnSizingFeature\", prototype, table, {\n\t\t\tcolumn_getSize: {\n\t\t\t\tfn: (column) => column_getSize(column),\n\t\t\t\tmemoDeps: (column) => [table.options.columns, table.atoms.columnSizing?.get()?.[column.id]]\n\t\t\t},\n\t\t\tcolumn_getStart: { fn: (column, position) => column_getStart(column, position) },\n\t\t\tcolumn_getAfter: { fn: (column, position) => column_getAfter(column, position) },\n\t\t\tcolumn_resetSize: { fn: (column) => column_resetSize(column) }\n\t\t});\n\t},\n\tassignHeaderPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnSizingFeature\", prototype, table, {\n\t\t\theader_getSize: {\n\t\t\t\tfn: (header) => header_getSize(header),\n\t\t\t\tmemoDeps: (header) => [table.options.columns, header.column.columns.length > 0 ? table.atoms.columnSizing?.get() : table.atoms.columnSizing?.get()?.[header.column.id]]\n\t\t\t},\n\t\t\theader_getStart: {\n\t\t\t\tfn: (header) => header_getStart(header),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnSizing?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"columnSizingFeature\", table, {\n\t\t\ttable_getColumnOffsets: {\n\t\t\t\tfn: () => table_getColumnOffsets(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnSizing?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_setColumnSizing: { fn: (updater) => table_setColumnSizing(table, updater) },\n\t\t\ttable_resetColumnSizing: { fn: (defaultState) => table_resetColumnSizing(table, defaultState) },\n\t\t\ttable_getTotalSize: {\n\t\t\t\tfn: () => table_getTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getStartTotalSize: {\n\t\t\t\tfn: () => table_getStartTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getCenterTotalSize: {\n\t\t\t\tfn: () => table_getCenterTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t},\n\t\t\ttable_getEndTotalSize: {\n\t\t\t\tfn: () => table_getEndTotalSize(table),\n\t\t\t\tmemoDeps: () => [table.atoms.columnSizing?.get(), table.getHeaderGroups()]\n\t\t\t}\n\t\t});\n\t}\n};\n\n//#endregion\nexport { columnSizingFeature };","import { callMemoOrStaticFn, cloneState, hasOwn, makeObjectMap, setStateSlice } from \"../../utils.js\";\nimport { orderByColumnPinning } from \"../../core/featureStubs.js\";\n\n//#region src/features/column-visibility/columnVisibilityFeature.utils.ts\n/**\n* Creates the default column visibility state.\n*\n* The feature default is an empty object, where missing column ids are treated\n* as visible. Reset APIs use this value when `defaultState` is `true`.\n*\n* @example\n* ```ts\n* const visibility = getDefaultColumnVisibilityState()\n* ```\n*/\nfunction getDefaultColumnVisibilityState() {\n\treturn makeObjectMap();\n}\n/**\n* Updates this column's visibility when hiding is allowed.\n*\n* Passing `visible` stores that value. Omitting it flips the column's current\n* visibility state. Group columns update their hideable leaf columns because\n* visibility state is keyed by leaf column ids. Columns that cannot hide stay\n* unchanged.\n*\n* @example\n* ```ts\n* column_toggleVisibility(column)\n* ```\n*/\nfunction column_toggleVisibility(column, visible) {\n\tif (column_getCanHide(column)) table_setColumnVisibility(column.table, (old) => {\n\t\tconst next = Object.assign(makeObjectMap(), old);\n\t\tconst nextVisible = visible ?? !callMemoOrStaticFn(column, \"getIsVisible\", column_getIsVisible);\n\t\tconst leafColumns = column.getLeafColumns();\n\t\tfor (let i = 0; i < leafColumns.length; i++) {\n\t\t\tconst leafColumn = leafColumns[i];\n\t\t\tif (column_getCanHide(leafColumn)) next[leafColumn.id] = nextVisible;\n\t\t}\n\t\treturn next;\n\t});\n}\n/**\n* Checks whether this column is visible.\n*\n* Leaf columns read `state.columnVisibility[column.id]`, where missing entries\n* default to visible. Parent columns are visible when at least one child column\n* is visible.\n*\n* @example\n* ```ts\n* const visible = column_getIsVisible(column)\n* ```\n*/\nfunction column_getIsVisible(column) {\n\tconst columnVisibility = column.table.atoms.columnVisibility?.get();\n\tif (!columnVisibility) return true;\n\tconst childColumns = column.columns;\n\tif (childColumns.length) return childColumns.some((childColumn) => callMemoOrStaticFn(childColumn, \"getIsVisible\", column_getIsVisible));\n\treturn (hasOwn(columnVisibility, column.id) ? columnVisibility[column.id] : void 0) ?? true;\n}\n/**\n* Checks whether this column is allowed to be hidden.\n*\n* Both `columnDef.enableHiding` and table `enableHiding` default to `true`.\n*\n* @example\n* ```ts\n* const canHide = column_getCanHide(column)\n* ```\n*/\nfunction column_getCanHide(column) {\n\treturn (column.columnDef.enableHiding ?? true) && (column.table.options.enableHiding ?? true);\n}\n/**\n* Creates a checkbox-style handler that writes this column's visibility.\n*\n* The handler reads `event.target.checked`, so it is intended for visibility\n* controls whose checked state means \"visible\".\n*\n* @example\n* ```ts\n* const onChange = column_getToggleVisibilityHandler(column)\n* ```\n*/\nfunction column_getToggleVisibilityHandler(column) {\n\treturn (e) => {\n\t\tcolumn_toggleVisibility(column, e.target.checked);\n\t};\n}\n/**\n* Collects the cells from this row whose columns are visible.\n*\n* When column pinning is active, the result is ordered as start-pinned cells,\n* center cells, then end-pinned cells.\n*\n* @example\n* ```ts\n* const visibleCells = row_getVisibleCells(row)\n* ```\n*/\nfunction row_getVisibleCells(row) {\n\tconst allCells = row.getAllCells();\n\tconst visibleCells = [];\n\tfor (let i = 0; i < allCells.length; i++) {\n\t\tconst cell = allCells[i];\n\t\tif (callMemoOrStaticFn(cell.column, \"getIsVisible\", column_getIsVisible)) visibleCells.push(cell);\n\t}\n\treturn orderByColumnPinning(row.table, visibleCells, (cell) => cell.column.id, () => callMemoOrStaticFn(row, \"getVisibleCellsByColumnId\", row_getVisibleCellsByColumnId));\n}\n/**\n* Builds a lookup map of this row's visible cells keyed by column id.\n*\n* Hidden columns are omitted from the map.\n*\n* @example\n* ```ts\n* const visibleCellsById = row_getVisibleCellsByColumnId(row)\n* ```\n*/\nfunction row_getVisibleCellsByColumnId(row) {\n\tconst result = makeObjectMap();\n\tconst allCells = row.getAllCells();\n\tfor (let i = 0; i < allCells.length; i++) {\n\t\tconst cell = allCells[i];\n\t\tif (callMemoOrStaticFn(cell.column, \"getIsVisible\", column_getIsVisible)) result[cell.column.id] = cell;\n\t}\n\treturn result;\n}\n/**\n* Filters the flat column list down to visible columns.\n*\n* Parent/group columns are included when `column_getIsVisible` considers them\n* visible.\n*\n* @example\n* ```ts\n* const columns = table_getVisibleFlatColumns(table)\n* ```\n*/\nfunction table_getVisibleFlatColumns(table) {\n\treturn table.getAllFlatColumns().filter((column) => callMemoOrStaticFn(column, \"getIsVisible\", column_getIsVisible));\n}\n/**\n* Filters leaf columns down to those currently visible.\n*\n* This is the column list most row rendering code uses before pinning-specific\n* partitioning.\n*\n* @example\n* ```ts\n* const columns = table_getVisibleLeafColumns(table)\n* ```\n*/\nfunction table_getVisibleLeafColumns(table) {\n\treturn table.getAllLeafColumns().filter((column) => callMemoOrStaticFn(column, \"getIsVisible\", column_getIsVisible));\n}\n/**\n* Routes a column visibility updater through the table's visibility change handler.\n*\n* The updater may be a next visibility map or a function of the previous map,\n* matching the instance `table.setColumnVisibility` behavior.\n*\n* @example\n* ```ts\n* table_setColumnVisibility(table, (old) => ({ ...old, age: false }))\n* ```\n*/\nfunction table_setColumnVisibility(table, updater) {\n\tsetStateSlice(table, \"columnVisibility\", updater);\n}\n/**\n* Resets `columnVisibility` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.columnVisibility` when\n* it exists. Passing `true` ignores initial state and resets to `{}`.\n*\n* @example\n* ```ts\n* table_resetColumnVisibility(table)\n* table_resetColumnVisibility(table, true)\n* ```\n*/\nfunction table_resetColumnVisibility(table, defaultState) {\n\ttable_setColumnVisibility(table, defaultState ? makeObjectMap() : Object.assign(makeObjectMap(), cloneState(table.initialState.columnVisibility ?? {})));\n}\n/**\n* Shows or hides every hideable leaf column.\n*\n* Columns that cannot hide stay visible when toggling all columns off.\n*\n* @example\n* ```ts\n* table_toggleAllColumnsVisible(table)\n* ```\n*/\nfunction table_toggleAllColumnsVisible(table, value) {\n\tvalue = value ?? !table_getIsAllColumnsVisible(table);\n\tconst visibility = makeObjectMap();\n\tconst leafColumns = table.getAllLeafColumns();\n\tfor (let i = 0; i < leafColumns.length; i++) {\n\t\tconst column = leafColumns[i];\n\t\tvisibility[column.id] = !value ? !column_getCanHide(column) : value;\n\t}\n\ttable_setColumnVisibility(table, visibility);\n}\n/**\n* Checks whether every leaf column is currently visible.\n*\n* Non-hideable columns are naturally visible because missing visibility entries\n* default to `true`.\n*\n* @example\n* ```ts\n* const allVisible = table_getIsAllColumnsVisible(table)\n* ```\n*/\nfunction table_getIsAllColumnsVisible(table) {\n\treturn !table.getAllLeafColumns().some((column) => !callMemoOrStaticFn(column, \"getIsVisible\", column_getIsVisible));\n}\n/**\n* Checks whether at least one leaf column is currently visible.\n*\n* This is useful for tri-state \"show all columns\" controls.\n*\n* @example\n* ```ts\n* const someVisible = table_getIsSomeColumnsVisible(table)\n* ```\n*/\nfunction table_getIsSomeColumnsVisible(table) {\n\treturn table.getAllLeafColumns().some((column) => callMemoOrStaticFn(column, \"getIsVisible\", column_getIsVisible));\n}\n/**\n* Creates a checkbox-style handler that shows or hides all columns.\n*\n* The handler reads `event.target.checked`, so it is intended for controls whose\n* checked state means \"all columns visible\".\n*\n* @example\n* ```ts\n* const onChange = table_getToggleAllColumnsVisibilityHandler(table)\n* ```\n*/\nfunction table_getToggleAllColumnsVisibilityHandler(table) {\n\treturn (e) => {\n\t\ttable_toggleAllColumnsVisible(table, e.target.checked);\n\t};\n}\n\n//#endregion\nexport { column_getCanHide, column_getIsVisible, column_getToggleVisibilityHandler, column_toggleVisibility, getDefaultColumnVisibilityState, row_getVisibleCells, row_getVisibleCellsByColumnId, table_getIsAllColumnsVisible, table_getIsSomeColumnsVisible, table_getToggleAllColumnsVisibilityHandler, table_getVisibleFlatColumns, table_getVisibleLeafColumns, table_resetColumnVisibility, table_setColumnVisibility, table_toggleAllColumnsVisible };","import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from \"../../utils.js\";\nimport { column_getCanHide, column_getIsVisible, column_getToggleVisibilityHandler, column_toggleVisibility, getDefaultColumnVisibilityState, row_getVisibleCells, row_getVisibleCellsByColumnId, table_getIsAllColumnsVisible, table_getIsSomeColumnsVisible, table_getToggleAllColumnsVisibilityHandler, table_getVisibleFlatColumns, table_getVisibleLeafColumns, table_resetColumnVisibility, table_setColumnVisibility, table_toggleAllColumnsVisible } from \"./columnVisibilityFeature.utils.js\";\n\n//#region src/features/column-visibility/columnVisibilityFeature.ts\n/**\n* Feature that adds column visibility state and APIs for hiding and showing columns.\n*/\nconst columnVisibilityFeature = {\n\tgetInitialState: (initialState) => {\n\t\treturn {\n\t\t\tcolumnVisibility: getDefaultColumnVisibilityState(),\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultTableOptions: (table) => {\n\t\treturn { onColumnVisibilityChange: makeStateUpdater(\"columnVisibility\", table) };\n\t},\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnVisibilityFeature\", prototype, table, {\n\t\t\tcolumn_getIsVisible: {\n\t\t\t\tfn: (column) => column_getIsVisible(column),\n\t\t\t\tmemoDeps: (column) => [\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\tcolumn.columns\n\t\t\t\t]\n\t\t\t},\n\t\t\tcolumn_getCanHide: { fn: (column) => column_getCanHide(column) },\n\t\t\tcolumn_getToggleVisibilityHandler: { fn: (column) => column_getToggleVisibilityHandler(column) },\n\t\t\tcolumn_toggleVisibility: { fn: (column, visible) => column_toggleVisibility(column, visible) }\n\t\t});\n\t},\n\tassignRowPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"columnVisibilityFeature\", prototype, table, {\n\t\t\trow_getVisibleCells: {\n\t\t\t\tfn: (row) => row_getVisibleCells(row),\n\t\t\t\tmemoDeps: (row) => [\n\t\t\t\t\trow.getAllCells(),\n\t\t\t\t\ttable.atoms.columnPinning?.get(),\n\t\t\t\t\ttable.atoms.columnVisibility?.get()\n\t\t\t\t]\n\t\t\t},\n\t\t\trow_getVisibleCellsByColumnId: {\n\t\t\t\tfn: (row) => row_getVisibleCellsByColumnId(row),\n\t\t\t\tmemoDeps: (row) => [row.getAllCells(), table.atoms.columnVisibility?.get()]\n\t\t\t}\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"columnVisibilityFeature\", table, {\n\t\t\ttable_getVisibleFlatColumns: {\n\t\t\t\tfn: () => table_getVisibleFlatColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getVisibleLeafColumns: {\n\t\t\t\tfn: () => table_getVisibleLeafColumns(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.atoms.columnVisibility?.get(),\n\t\t\t\t\ttable.atoms.columnOrder?.get(),\n\t\t\t\t\ttable.atoms.grouping?.get(),\n\t\t\t\t\ttable.options.columns,\n\t\t\t\t\ttable.options.groupedColumnMode\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_setColumnVisibility: { fn: (updater) => table_setColumnVisibility(table, updater) },\n\t\t\ttable_resetColumnVisibility: { fn: (defaultState) => table_resetColumnVisibility(table, defaultState) },\n\t\t\ttable_toggleAllColumnsVisible: { fn: (value) => table_toggleAllColumnsVisible(table, value) },\n\t\t\ttable_getIsAllColumnsVisible: { fn: () => table_getIsAllColumnsVisible(table) },\n\t\t\ttable_getIsSomeColumnsVisible: { fn: () => table_getIsSomeColumnsVisible(table) },\n\t\t\ttable_getToggleAllColumnsVisibilityHandler: { fn: () => table_getToggleAllColumnsVisibilityHandler(table) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { columnVisibilityFeature };","//#region src/features/column-filtering/filterFns.ts\n/**\n* Builds a `FilterFn` from a value-level comparator plus optional resolvers.\n*\n* The `filter` comparator receives the row's data value (already passed\n* through `resolveDataValue` when one is defined) and the filter value\n* (already passed through `resolveFilterValue` by the table). Keeping\n* normalization in the resolvers means a variant of an existing filter\n* function only has to swap the resolvers, not re-implement the comparison.\n*\n* The definition is attached to the returned function, so a variant can be\n* created by spreading a built-in filter function and overriding what differs:\n*\n* ```ts\n* const normalize = (value: unknown) =>\n* String(value ?? '')\n* .toLowerCase()\n* .normalize('NFD')\n* .replace(/\\p{Diacritic}/gu, '')\n*\n* const includesStringIgnoreDiacritics = constructFilterFn({\n* ...filterFn_includesString,\n* resolveFilterValue: normalize,\n* resolveDataValue: normalize,\n* })\n* ```\n*\n* Note: the table applies `resolveFilterValue` once per filter before any rows\n* are tested. When calling a filter function directly (outside of a table),\n* apply it yourself: `fn(row, columnId, fn.resolveFilterValue?.(value) ?? value)`.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction constructFilterFn(def) {\n\tconst filterFn = Object.assign((row, columnId, filterValue, addMeta) => {\n\t\tconst rawValue = row.getValue(columnId);\n\t\tconst dataValue = filterFn.resolveDataValue ? filterFn.resolveDataValue(rawValue) : rawValue;\n\t\treturn filterFn.filter(dataValue, filterValue, row, columnId, addMeta);\n\t}, def);\n\treturn filterFn;\n}\n/**\n* Keeps rows whose column value is strictly equal to the filter value.\n*\n* Uses JavaScript `===` comparison and auto-removes empty filter values.\n*/\nconst filterFn_equals = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => dataValue === filterValue,\n\tautoRemove: (val) => testFalsy(val)\n});\n/**\n* Keeps rows whose column value is loosely equal to the filter value.\n*\n* Uses JavaScript `==` comparison and auto-removes empty filter values. This is\n* useful for matching string input against numeric row values.\n*/\nconst filterFn_weakEquals = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => dataValue == filterValue,\n\tautoRemove: (val) => testFalsy(val)\n});\n/**\n* Keeps rows whose stringified column value includes the filter text.\n*\n* Matching is case-sensitive and empty filter values are auto-removed.\n*/\nconst filterFn_includesStringSensitive = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => Boolean(dataValue?.includes(filterValue)),\n\tautoRemove: (val) => testFalsy(val),\n\tresolveFilterValue: (val) => String(val),\n\tresolveDataValue: (val) => val == null ? void 0 : String(val)\n});\n/**\n* Keeps rows whose stringified column value includes the filter text.\n*\n* Both values are lowercased before comparison, and empty filter values are\n* auto-removed.\n*/\nconst filterFn_includesString = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => Boolean(dataValue?.includes(filterValue)),\n\tautoRemove: (val) => testFalsy(val),\n\tresolveFilterValue: (val) => String(val).toLowerCase(),\n\tresolveDataValue: (val) => val == null ? void 0 : String(val).toLowerCase()\n});\n/**\n* Keeps rows whose stringified column value equals the filter text.\n*\n* Both values are lowercased before comparison, and empty filter values are\n* auto-removed.\n*/\nconst filterFn_equalsString = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => dataValue === filterValue,\n\tautoRemove: (val) => testFalsy(val),\n\tresolveFilterValue: (val) => String(val).toLowerCase(),\n\tresolveDataValue: (val) => val == null ? void 0 : String(val).toLowerCase()\n});\n/**\n* Keeps rows whose stringified column value exactly equals the filter text.\n*\n* Matching is case-sensitive and empty filter values are auto-removed.\n*/\nconst filterFn_equalsStringSensitive = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => dataValue === filterValue,\n\tautoRemove: (val) => testFalsy(val),\n\tresolveFilterValue: (val) => String(val),\n\tresolveDataValue: (val) => val == null ? void 0 : String(val)\n});\n/**\n* Keeps rows whose stringified column value starts with the filter text.\n*\n* Both values are lowercased before comparison, and empty filter values are\n* auto-removed.\n*/\nconst filterFn_startsWith = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => Boolean(dataValue?.startsWith(filterValue)),\n\tautoRemove: (val) => testFalsy(val),\n\tresolveFilterValue: (val) => String(val).toLowerCase(),\n\tresolveDataValue: (val) => val == null ? void 0 : String(val).toLowerCase()\n});\n/**\n* Keeps rows whose stringified column value ends with the filter text.\n*\n* Both values are lowercased before comparison, and empty filter values are\n* auto-removed.\n*/\nconst filterFn_endsWith = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => Boolean(dataValue?.endsWith(filterValue)),\n\tautoRemove: (val) => testFalsy(val),\n\tresolveFilterValue: (val) => String(val).toLowerCase(),\n\tresolveDataValue: (val) => val == null ? void 0 : String(val).toLowerCase()\n});\n/**\n* Keeps rows whose column value is empty.\n*\n* A value is empty when it is nullish or stringifies to whitespace only. The\n* filter value acts as an on/off flag: `false` and blank values are\n* auto-removed.\n*/\nconst filterFn_empty = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue) => testValueEmpty(dataValue),\n\tautoRemove: (val) => testFalsy(val) || val === false\n});\n/**\n* Keeps rows whose column value is not empty.\n*\n* A value is empty when it is nullish or stringifies to whitespace only. The\n* filter value acts as an on/off flag: `false` and blank values are\n* auto-removed.\n*/\nconst filterFn_notEmpty = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue) => !testValueEmpty(dataValue),\n\tautoRemove: (val) => testFalsy(val) || val === false\n});\n/**\n* Keeps rows whose value is greater than the filter value.\n*\n* Numeric values are compared numerically when both sides can be coerced to\n* numbers; otherwise normalized strings are compared.\n*/\nconst filterFn_greaterThan = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => compareGreaterThan(dataValue, filterValue),\n\tautoRemove: (val) => testFalsy(val)\n});\n/**\n* Keeps rows whose value is greater than or equal to the filter value.\n*\n* Delegates to the built-in greater-than and strict-equality comparisons.\n*/\nconst filterFn_greaterThanOrEqualTo = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => compareGreaterThanOrEqualTo(dataValue, filterValue),\n\tautoRemove: (val) => testFalsy(val)\n});\n/**\n* Keeps rows whose value is less than the filter value.\n*\n* This is implemented as the inverse of greater-than-or-equal comparison.\n*/\nconst filterFn_lessThan = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => !compareGreaterThanOrEqualTo(dataValue, filterValue),\n\tautoRemove: (val) => testFalsy(val)\n});\n/**\n* Keeps rows whose value is less than or equal to the filter value.\n*\n* This is implemented as the inverse of greater-than comparison.\n*/\nconst filterFn_lessThanOrEqualTo = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => !compareGreaterThan(dataValue, filterValue),\n\tautoRemove: (val) => testFalsy(val)\n});\n/**\n* Keeps rows whose value falls between an exclusive min/max pair.\n*\n* Blank range endpoints are treated as open-ended.\n*/\nconst filterFn_between = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValues) => compareBetween(dataValue, filterValues, false),\n\tautoRemove: (val) => testFalsy(val) || Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])\n});\n/**\n* Keeps rows whose value falls between an inclusive min/max pair.\n*\n* Blank range endpoints are treated as open-ended.\n*/\nconst filterFn_betweenInclusive = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValues) => compareBetween(dataValue, filterValues, true),\n\tautoRemove: (val) => testFalsy(val) || Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])\n});\n/**\n* Keeps rows whose numeric value is inside an inclusive `[min, max]` range.\n*\n* Filter values are normalized so blank endpoints become open-ended and\n* reversed endpoints are swapped. Only real numbers can fall inside the\n* range: non-numeric row values (`null`, `undefined`, strings, booleans)\n* never match.\n*/\nconst filterFn_inNumberRange = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => {\n\t\tif (typeof dataValue !== \"number\" || Number.isNaN(dataValue)) return false;\n\t\tconst [min, max] = filterValue;\n\t\treturn dataValue >= min && dataValue <= max;\n\t},\n\tresolveFilterValue: (val) => {\n\t\tconst [unsafeMin, unsafeMax] = val;\n\t\tconst parsedMin = typeof unsafeMin !== \"number\" ? parseFloat(unsafeMin) : unsafeMin;\n\t\tconst parsedMax = typeof unsafeMax !== \"number\" ? parseFloat(unsafeMax) : unsafeMax;\n\t\tlet min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n\t\tlet max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n\t\tif (min > max) {\n\t\t\tconst temp = min;\n\t\t\tmin = max;\n\t\t\tmax = temp;\n\t\t}\n\t\treturn [min, max];\n\t},\n\tautoRemove: (val) => testFalsy(val) || Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])\n});\n/**\n* Keeps rows whose date value is inside an inclusive `[min, max]` date range.\n*\n* Row values and range endpoints may be `Date` objects, timestamps, or\n* parseable date strings. Blank or invalid endpoints become open-ended and\n* reversed endpoints are swapped. Rows without a valid date never match.\n*/\nconst filterFn_inDateRange = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => {\n\t\tconst [min, max] = filterValue;\n\t\treturn dataValue >= min && dataValue <= max;\n\t},\n\tresolveFilterValue: (val) => {\n\t\tconst [unsafeMin, unsafeMax] = val;\n\t\tconst parsedMin = toDateTimestamp(unsafeMin);\n\t\tconst parsedMax = toDateTimestamp(unsafeMax);\n\t\tlet min = Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n\t\tlet max = Number.isNaN(parsedMax) ? Infinity : parsedMax;\n\t\tif (min > max) {\n\t\t\tconst temp = min;\n\t\t\tmin = max;\n\t\t\tmax = temp;\n\t\t}\n\t\treturn [min, max];\n\t},\n\tresolveDataValue: (val) => toDateTimestamp(val),\n\tautoRemove: (val) => testFalsy(val) || Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])\n});\n/**\n* Keeps rows whose scalar column value equals at least one filter value.\n*/\nconst filterFn_arrHas = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => {\n\t\tfor (let i = 0; i < filterValue.length; i++) if (dataValue === filterValue[i]) return true;\n\t\treturn false;\n\t},\n\tautoRemove: (val) => testFalsy(val) || !val?.length\n});\n/**\n* Keeps rows whose array or string column value includes at least one filter value.\n*/\nconst filterFn_arrIncludes = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => {\n\t\tif (typeof dataValue !== \"string\" && !Array.isArray(dataValue)) return false;\n\t\tfor (let i = 0; i < filterValue.length; i++) if (dataValue.includes(filterValue[i])) return true;\n\t\treturn false;\n\t},\n\tautoRemove: (val) => testFalsy(val) || !val?.length\n});\n/**\n* Keeps rows whose array column value includes every filter value.\n*/\nconst filterFn_arrIncludesAll = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => {\n\t\tif (!Array.isArray(dataValue)) return false;\n\t\tfor (let i = 0; i < filterValue.length; i++) if (!dataValue.includes(filterValue[i])) return false;\n\t\treturn true;\n\t},\n\tautoRemove: (val) => testFalsy(val) || !val?.length\n});\n/**\n* Keeps rows whose array column value includes at least one filter value.\n*/\nconst filterFn_arrIncludesSome = /* @__PURE__ */ constructFilterFn({\n\tfilter: (dataValue, filterValue) => {\n\t\tif (!Array.isArray(dataValue)) return false;\n\t\tfor (let i = 0; i < filterValue.length; i++) if (dataValue.includes(filterValue[i])) return true;\n\t\treturn false;\n\t},\n\tautoRemove: (val) => testFalsy(val) || !val?.length\n});\n/**\n* The built-in filter function registry.\n*\n* Registering this full object opts out of tree-shaking: every built-in\n* filter function ends up in your bundle. Prefer importing the `filterFn_*`\n* functions you actually use and registering just those in the `filterFns`\n* slot, or passing them directly to the `filterFn` column option.\n*\n* @deprecated Import individual `filterFn_*` functions instead for a smaller\n* bundle. This export still works and is not going away in v9, but built-in\n* name resolution (including `filterFn: 'auto'`) only finds functions you\n* register yourself.\n*/\nconst filterFns = {\n\tarrIncludes: filterFn_arrIncludes,\n\tarrIncludesAll: filterFn_arrIncludesAll,\n\tarrHas: filterFn_arrHas,\n\tarrIncludesSome: filterFn_arrIncludesSome,\n\tbetween: filterFn_between,\n\tbetweenInclusive: filterFn_betweenInclusive,\n\tempty: filterFn_empty,\n\tendsWith: filterFn_endsWith,\n\tequals: filterFn_equals,\n\tequalsString: filterFn_equalsString,\n\tequalsStringSensitive: filterFn_equalsStringSensitive,\n\tinDateRange: filterFn_inDateRange,\n\tinNumberRange: filterFn_inNumberRange,\n\tincludesString: filterFn_includesString,\n\tincludesStringSensitive: filterFn_includesStringSensitive,\n\tnotEmpty: filterFn_notEmpty,\n\tstartsWith: filterFn_startsWith,\n\tweakEquals: filterFn_weakEquals\n};\nfunction testFalsy(val) {\n\treturn val === void 0 || val === null || val === \"\";\n}\nfunction testValueEmpty(dataValue) {\n\treturn dataValue == null || String(dataValue).trim() === \"\";\n}\nfunction toDateTimestamp(value) {\n\tif (value instanceof Date) return value.getTime();\n\tif (typeof value === \"number\") return value;\n\tif (value == null || value === \"\") return NaN;\n\treturn new Date(value).getTime();\n}\nfunction compareGreaterThan(dataValue, filterValue) {\n\tconst numericDataValue = dataValue == null ? 0 : +dataValue;\n\tconst numericFilterValue = Number(filterValue);\n\tif (!isNaN(numericFilterValue) && !isNaN(numericDataValue)) return numericDataValue > numericFilterValue;\n\treturn String(dataValue ?? \"\").toLowerCase().trim() > String(filterValue).toLowerCase().trim();\n}\nfunction compareGreaterThanOrEqualTo(dataValue, filterValue) {\n\treturn dataValue === filterValue || compareGreaterThan(dataValue, filterValue);\n}\nfunction compareBetween(dataValue, filterValues, inclusive) {\n\tconst min = filterValues[0];\n\tconst hasMin = min !== \"\" && min !== void 0;\n\tif (hasMin) {\n\t\tif (!(inclusive ? compareGreaterThanOrEqualTo(dataValue, min) : compareGreaterThan(dataValue, min))) return false;\n\t}\n\tconst max = filterValues[1];\n\tif (max === \"\" || max === void 0) return true;\n\tif (hasMin) {\n\t\tconst numericMin = Number(min);\n\t\tconst numericMax = Number(max);\n\t\tif (!isNaN(numericMin) && !isNaN(numericMax) && numericMin > numericMax) return true;\n\t}\n\treturn inclusive ? !compareGreaterThan(dataValue, max) : !compareGreaterThanOrEqualTo(dataValue, max);\n}\n\n//#endregion\nexport { constructFilterFn, filterFn_arrHas, filterFn_arrIncludes, filterFn_arrIncludesAll, filterFn_arrIncludesSome, filterFn_between, filterFn_betweenInclusive, filterFn_empty, filterFn_endsWith, filterFn_equals, filterFn_equalsString, filterFn_equalsStringSensitive, filterFn_greaterThan, filterFn_greaterThanOrEqualTo, filterFn_inDateRange, filterFn_inNumberRange, filterFn_includesString, filterFn_includesStringSensitive, filterFn_lessThan, filterFn_lessThanOrEqualTo, filterFn_notEmpty, filterFn_startsWith, filterFn_weakEquals, filterFns };","import { cloneState, isFunction } from \"../../utils.js\";\nimport { filterFn_includesString } from \"../column-filtering/filterFns.js\";\n\n//#region src/features/global-filtering/globalFilteringFeature.utils.ts\n/**\n* Checks whether this accessor column participates in global filtering.\n*\n* The column must have an accessor and pass column-level, table-level, and\n* optional `getColumnCanGlobalFilter` checks.\n*\n* @example\n* ```ts\n* const canGlobalFilter = column_getCanGlobalFilter(column)\n* ```\n*/\nfunction column_getCanGlobalFilter(column) {\n\treturn (column.columnDef.enableGlobalFilter ?? true) && (column.table.options.enableGlobalFilter ?? true) && (column.table.options.enableFilters ?? true) && (column.table.options.getColumnCanGlobalFilter?.(column) ?? true) && !!column.accessorFn;\n}\n/**\n* Provides the built-in automatic global filter function.\n*\n* Global filtering defaults to `includesString`, which gives search-box style\n* matching across globally filterable columns.\n*\n* @example\n* ```ts\n* const filterFn = table_getGlobalAutoFilterFn()\n* ```\n*/\nfunction table_getGlobalAutoFilterFn() {\n\treturn filterFn_includesString;\n}\n/**\n* Resolves the filter function used for global filtering.\n*\n* Function-valued `options.globalFilterFn` is returned directly, `'auto'`\n* delegates to `table_getGlobalAutoFilterFn`, and string values are looked up in\n* the table's filter function registry.\n*\n* @example\n* ```ts\n* const filterFn = table_getGlobalFilterFn(table)\n* ```\n*/\nfunction table_getGlobalFilterFn(table) {\n\tconst { globalFilterFn } = table.options;\n\tconst filterFns = table._rowModelFns.filterFns;\n\tconst filterFn = isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === \"auto\" ? table_getGlobalAutoFilterFn() : filterFns?.[globalFilterFn];\n\tif (process.env.NODE_ENV === \"development\" && !filterFn && globalFilterFn != null) console.warn(`globalFilterFn '${String(globalFilterFn)}' is not registered`);\n\treturn filterFn;\n}\n/**\n* Routes a global filter updater through the table's global filter handler.\n*\n* The updater may be a next value or a function of the previous value, matching\n* the instance `table.setGlobalFilter` behavior.\n*\n* @example\n* ```ts\n* table_setGlobalFilter(table, 'search text')\n* ```\n*/\nfunction table_setGlobalFilter(table, updater) {\n\ttable.options.onGlobalFilterChange?.(updater);\n}\n/**\n* Resets `globalFilter` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.globalFilter`. Passing\n* `true` ignores initial state and resets to `undefined`.\n*\n* @example\n* ```ts\n* table_resetGlobalFilter(table)\n* table_resetGlobalFilter(table, true)\n* ```\n*/\nfunction table_resetGlobalFilter(table, defaultState) {\n\ttable_setGlobalFilter(table, defaultState ? void 0 : cloneState(table.initialState.globalFilter));\n}\n\n//#endregion\nexport { column_getCanGlobalFilter, table_getGlobalAutoFilterFn, table_getGlobalFilterFn, table_resetGlobalFilter, table_setGlobalFilter };","import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from \"../../utils.js\";\nimport { column_getCanGlobalFilter, table_getGlobalAutoFilterFn, table_getGlobalFilterFn, table_resetGlobalFilter, table_setGlobalFilter } from \"./globalFilteringFeature.utils.js\";\n\n//#region src/features/global-filtering/globalFilteringFeature.ts\n/**\n* Feature that adds global filtering state, defaults, and global filter APIs.\n*/\nconst globalFilteringFeature = {\n\tgetInitialState: (initialState) => {\n\t\treturn {\n\t\t\tglobalFilter: void 0,\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultTableOptions: (table) => {\n\t\treturn {\n\t\t\tonGlobalFilterChange: makeStateUpdater(\"globalFilter\", table),\n\t\t\tglobalFilterFn: \"auto\",\n\t\t\tgetColumnCanGlobalFilter: (column) => {\n\t\t\t\tif (\"enableGlobalFilter\" in column.columnDef && column.columnDef.enableGlobalFilter === true) return true;\n\t\t\t\tconst value = table.getCoreRowModel().flatRows.find((row) => row.getAllCellsByColumnId()[column.id]?.getValue() != null)?.getAllCellsByColumnId()[column.id]?.getValue();\n\t\t\t\treturn typeof value === \"string\" || typeof value === \"number\";\n\t\t\t}\n\t\t};\n\t},\n\tassignColumnPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"globalFilteringFeature\", prototype, table, { column_getCanGlobalFilter: { fn: (column) => column_getCanGlobalFilter(column) } });\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"globalFilteringFeature\", table, {\n\t\t\ttable_getGlobalAutoFilterFn: { fn: () => table_getGlobalAutoFilterFn() },\n\t\t\ttable_getGlobalFilterFn: { fn: () => table_getGlobalFilterFn(table) },\n\t\t\ttable_setGlobalFilter: { fn: (updater) => table_setGlobalFilter(table, updater) },\n\t\t\ttable_resetGlobalFilter: { fn: (defaultState) => table_resetGlobalFilter(table, defaultState) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { globalFilteringFeature };","import { cloneState, hasOwn, makeObjectMap, setStateSlice } from \"../../utils.js\";\n\n//#region src/features/row-expanding/rowExpandingFeature.utils.ts\n/**\n* Creates the default expanded state.\n*\n* The feature default is an empty map, meaning no rows are expanded. Reset APIs\n* use this value when `defaultState` is `true`.\n*\n* @example\n* ```ts\n* const expanded = getDefaultExpandedState()\n* ```\n*/\nfunction getDefaultExpandedState() {\n\treturn makeObjectMap();\n}\n/**\n* Schedules an expanded-state reset after row-structure changes.\n*\n* The reset runs when `autoResetAll`, `autoResetExpanded`, or the default\n* client-side expanding behavior allows it. Manual expanding opts out unless\n* the reset options explicitly opt back in.\n*\n* @example\n* ```ts\n* table_autoResetExpanded(table)\n* ```\n*/\nfunction table_autoResetExpanded(table) {\n\tif (!table.atoms.expanded) return;\n\tif (table.options.autoResetAll ?? table.options.autoResetExpanded ?? !table.options.manualExpanding) table._reactivity.schedule(() => table_resetExpanded(table));\n}\n/**\n* Routes an expanded-state updater through the table's expanded change handler.\n*\n* The updater may be `true`, a row-id map, or a function of the previous\n* expanded state, matching the instance `table.setExpanded` behavior.\n*\n* @example\n* ```ts\n* table_setExpanded(table, (old) => ({ ...old, [rowId]: true }))\n* ```\n*/\nfunction table_setExpanded(table, updater) {\n\ttable.options.onExpandedChange?.(updater);\n}\n/**\n* Expands or collapses every row.\n*\n* Passing `true` stores the special expanded-all state. Passing `false` stores\n* an empty map. Omitting the value toggles based on whether all rows are\n* currently expanded.\n*\n* The call is a no-op (no `onExpandedChange`) when no row can expand or when\n* the requested state matches the current state exactly.\n*\n* @example\n* ```ts\n* table_toggleAllRowsExpanded(table)\n* ```\n*/\nfunction table_toggleAllRowsExpanded(table, expanded) {\n\tconst currentExpanded = table.atoms.expanded?.get() ?? {};\n\tif (expanded ?? !table_getIsAllRowsExpanded(table)) {\n\t\tif (currentExpanded === true) return;\n\t\tif (!table_getCanSomeRowsExpand(table)) return;\n\t\ttable_setExpanded(table, true);\n\t} else {\n\t\tif (currentExpanded !== true && !Object.keys(currentExpanded).length) return;\n\t\ttable_setExpanded(table, makeObjectMap());\n\t}\n}\n/**\n* Resets `expanded` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.expanded` when it\n* exists. Passing `true` ignores initial state and resets to `{}`.\n*\n* @example\n* ```ts\n* table_resetExpanded(table)\n* table_resetExpanded(table, true)\n* ```\n*/\nfunction table_resetExpanded(table, defaultState) {\n\tconst initialExpanded = table.initialState.expanded;\n\tsetStateSlice(table, \"expanded\", defaultState ? makeObjectMap() : initialExpanded === true ? true : Object.assign(makeObjectMap(), cloneState(initialExpanded ?? {})));\n}\n/**\n* Checks whether at least one pre-paginated row can expand.\n*\n* Pagination is intentionally ignored so controls can reflect expandable rows\n* that may not be on the current page.\n*\n* @example\n* ```ts\n* const canExpand = table_getCanSomeRowsExpand(table)\n* ```\n*/\nfunction table_getCanSomeRowsExpand(table) {\n\treturn table.getPrePaginatedRowModel().flatRows.some((row) => row_getCanExpand(row));\n}\n/**\n* Creates an event handler that toggles all rows expanded.\n*\n* @example\n* ```ts\n* const onClick = table_getToggleAllRowsExpandedHandler(table)\n* ```\n*/\nfunction table_getToggleAllRowsExpandedHandler(table) {\n\treturn (_e) => {\n\t\ttable_toggleAllRowsExpanded(table);\n\t};\n}\n/**\n* Checks whether any row is expanded.\n*\n* The special expanded-all value `true` counts as some rows expanded.\n*\n* @example\n* ```ts\n* const someExpanded = table_getIsSomeRowsExpanded(table)\n* ```\n*/\nfunction table_getIsSomeRowsExpanded(table) {\n\tconst expanded = table.atoms.expanded?.get() ?? {};\n\treturn expanded === true || Object.values(expanded).some(Boolean);\n}\n/**\n* Checks whether every expandable row in the current row model is expanded.\n*\n* The special expanded-all value `true` returns true immediately. Empty\n* expanded state returns false. Rows that cannot expand are ignored, so a\n* materialized expanded-all map (which only contains expandable row ids)\n* still counts as all rows expanded.\n*\n* @example\n* ```ts\n* const allExpanded = table_getIsAllRowsExpanded(table)\n* ```\n*/\nfunction table_getIsAllRowsExpanded(table) {\n\tconst expanded = table.atoms.expanded?.get() ?? {};\n\tif (expanded === true) return true;\n\tif (!Object.keys(expanded).length) return false;\n\tconst expandableRows = table.getRowModel().flatRows.filter((row) => row_getCanExpand(row));\n\tif (!expandableRows.length) return false;\n\tif (expandableRows.some((row) => !row_getIsExpanded(row))) return false;\n\treturn true;\n}\n/**\n* Computes the deepest expanded row id depth.\n*\n* Row ids are split on `.`; expanded-all state scans the current row model's\n* expandable rows, while explicit expanded state scans its expanded id keys.\n*\n* @example\n* ```ts\n* const depth = table_getExpandedDepth(table)\n* ```\n*/\nfunction table_getExpandedDepth(table) {\n\tlet maxDepth = 0;\n\tconst expanded = table.atoms.expanded?.get();\n\t(expanded === true ? Object.values(table.getRowModel().rowsById).filter((row) => row_getCanExpand(row)).map((row) => row.id) : Object.keys(expanded ?? {})).forEach((id) => {\n\t\tconst splitId = id.split(\".\");\n\t\tmaxDepth = Math.max(maxDepth, splitId.length);\n\t});\n\treturn maxDepth;\n}\n/**\n* Expands or collapses this row.\n*\n* Omitting `expanded` toggles the row. If the current state is expanded-all,\n* the function first materializes that state into a row-id map (containing\n* only expandable row ids) before applying the row-specific change.\n*\n* The call is a no-op (no `onExpandedChange`) when the requested state matches\n* the current state, or when expanding a row that cannot expand. Collapsing is\n* always allowed so stale expanded ids can be cleaned up.\n*\n* @example\n* ```ts\n* row_toggleExpanded(row)\n* ```\n*/\nfunction row_toggleExpanded(row, expanded) {\n\tconst currentExpanded = row.table.atoms.expanded?.get() ?? {};\n\tconst currentExists = currentExpanded === true || isExpandedRowId(currentExpanded, row.id);\n\tconst targetExpanded = expanded ?? !currentExists;\n\tif (targetExpanded === currentExists) return;\n\tif (targetExpanded && !row_getCanExpand(row)) return;\n\ttable_setExpanded(row.table, (old) => {\n\t\tconst exists = old === true ? true : isExpandedRowId(old, row.id);\n\t\tlet oldExpanded = makeObjectMap();\n\t\tif (old === true) Object.values(row.table.getRowModel().rowsById).forEach((rowModelRow) => {\n\t\t\tif (row_getCanExpand(rowModelRow)) oldExpanded[rowModelRow.id] = true;\n\t\t});\n\t\telse oldExpanded = Object.assign(makeObjectMap(), old);\n\t\tif (!exists && targetExpanded) {\n\t\t\toldExpanded[row.id] = true;\n\t\t\treturn oldExpanded;\n\t\t}\n\t\tif (exists && !targetExpanded) {\n\t\t\tconst rest = makeObjectMap();\n\t\t\tconst rowIds = Object.keys(oldExpanded);\n\t\t\tfor (let i = 0; i < rowIds.length; i++) {\n\t\t\t\tconst rowId = rowIds[i];\n\t\t\t\tif (rowId !== row.id && oldExpanded[rowId]) rest[rowId] = true;\n\t\t\t}\n\t\t\treturn rest;\n\t\t}\n\t\treturn old;\n\t});\n}\n/**\n* Checks whether this row is expanded.\n*\n* `options.getIsRowExpanded` can override state-derived behavior. Otherwise\n* the row is expanded when expanded state is `true` or contains this row id.\n*\n* @example\n* ```ts\n* const expanded = row_getIsExpanded(row)\n* ```\n*/\nfunction row_getIsExpanded(row) {\n\tconst expanded = row.table.atoms.expanded?.get() ?? {};\n\treturn !!(row.table.options.getIsRowExpanded?.(row) ?? (expanded === true || isExpandedRowId(expanded, row.id)));\n}\nfunction isExpandedRowId(expanded, rowId) {\n\treturn !!(expanded && expanded !== true && hasOwn(expanded, rowId) && expanded[rowId]);\n}\n/**\n* Checks whether this row can be expanded.\n*\n* `options.getRowCanExpand` wins when provided. Otherwise rows can expand when\n* expanding is enabled and the row has subRows.\n*\n* @example\n* ```ts\n* const canExpand = row_getCanExpand(row)\n* ```\n*/\nfunction row_getCanExpand(row) {\n\treturn row.table.options.getRowCanExpand?.(row) ?? ((row.table.options.enableExpanding ?? true) && !!row.subRows.length);\n}\n/**\n* Checks whether every ancestor of this row is expanded.\n*\n* The current row is not considered; only its parent chain is walked.\n*\n* @example\n* ```ts\n* const parentsExpanded = row_getIsAllParentsExpanded(row)\n* ```\n*/\nfunction row_getIsAllParentsExpanded(row) {\n\tlet isFullyExpanded = true;\n\tlet currentRow = row;\n\twhile (isFullyExpanded && currentRow.parentId) {\n\t\tcurrentRow = row.table.getRow(currentRow.parentId, true);\n\t\tisFullyExpanded = row_getIsExpanded(currentRow);\n\t}\n\treturn isFullyExpanded;\n}\n/**\n* Creates a row control handler that toggles this row's expanded state.\n*\n* The handler is a no-op when the row cannot expand.\n*\n* @example\n* ```ts\n* const onClick = row_getToggleExpandedHandler(row)\n* ```\n*/\nfunction row_getToggleExpandedHandler(row) {\n\tconst canExpand = row_getCanExpand(row);\n\treturn () => {\n\t\tif (!canExpand) return;\n\t\trow_toggleExpanded(row);\n\t};\n}\n\n//#endregion\nexport { getDefaultExpandedState, row_getCanExpand, row_getIsAllParentsExpanded, row_getIsExpanded, row_getToggleExpandedHandler, row_toggleExpanded, table_autoResetExpanded, table_getCanSomeRowsExpand, table_getExpandedDepth, table_getIsAllRowsExpanded, table_getIsSomeRowsExpanded, table_getToggleAllRowsExpandedHandler, table_resetExpanded, table_setExpanded, table_toggleAllRowsExpanded };","import { tableMemo } from \"../../utils.js\";\nimport { row_getIsExpanded } from \"./rowExpandingFeature.utils.js\";\n\n//#region src/features/row-expanding/createExpandedRowModel.ts\n/**\n* Creates a memoized expanded row model factory.\n*\n* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n*/\nfunction createExpandedRowModel() {\n\treturn (_table) => {\n\t\tconst table = _table;\n\t\treturn tableMemo({\n\t\t\tfeature: \"rowExpandingFeature\",\n\t\t\ttable,\n\t\t\tfnName: \"table.getExpandedRowModel\",\n\t\t\tmemoDeps: () => [\n\t\t\t\ttable.atoms.expanded?.get(),\n\t\t\t\ttable.getPreExpandedRowModel(),\n\t\t\t\ttable.options.paginateExpandedRows,\n\t\t\t\ttable.options.manualPagination\n\t\t\t],\n\t\t\tfn: () => _createExpandedRowModel(table)\n\t\t});\n\t};\n}\nfunction _createExpandedRowModel(table) {\n\tconst rowModel = table.getPreExpandedRowModel();\n\tconst expanded = table.atoms.expanded?.get();\n\tif (!rowModel.rows.length || expanded !== true && !Object.keys(expanded ?? {}).length) return rowModel;\n\tif (!table.options.paginateExpandedRows && !table.options.manualPagination) return rowModel;\n\treturn expandRows(rowModel);\n}\n/**\n* Expands a row model according to the current expanded row state.\n*\n* Expanded sub-rows are inserted into the flattened row order while preserving the original row hierarchy.\n*/\nfunction expandRows(rowModel) {\n\tconst expandedRows = [];\n\tconst handleRow = (row) => {\n\t\texpandedRows.push(row);\n\t\tif (row.subRows.length && row_getIsExpanded(row)) row.subRows.forEach(handleRow);\n\t};\n\trowModel.rows.forEach(handleRow);\n\treturn {\n\t\trows: expandedRows,\n\t\tflatRows: rowModel.flatRows,\n\t\trowsById: rowModel.rowsById\n\t};\n}\n\n//#endregion\nexport { createExpandedRowModel, expandRows };","import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from \"../../utils.js\";\nimport { getDefaultExpandedState, row_getCanExpand, row_getIsAllParentsExpanded, row_getIsExpanded, row_getToggleExpandedHandler, row_toggleExpanded, table_autoResetExpanded, table_getCanSomeRowsExpand, table_getExpandedDepth, table_getIsAllRowsExpanded, table_getIsSomeRowsExpanded, table_getToggleAllRowsExpandedHandler, table_resetExpanded, table_setExpanded, table_toggleAllRowsExpanded } from \"./rowExpandingFeature.utils.js\";\nimport { expandRows } from \"./createExpandedRowModel.js\";\n\n//#region src/features/row-expanding/rowExpandingFeature.ts\n/**\n* Feature that adds row expansion state and APIs for expandable row trees.\n*/\nconst rowExpandingFeature = {\n\tgetInitialState: (initialState) => {\n\t\treturn {\n\t\t\texpanded: getDefaultExpandedState(),\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultTableOptions: (table) => {\n\t\treturn {\n\t\t\tonExpandedChange: makeStateUpdater(\"expanded\", table),\n\t\t\tpaginateExpandedRows: true\n\t\t};\n\t},\n\tassignRowPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"rowExpandingFeature\", prototype, table, {\n\t\t\trow_toggleExpanded: { fn: (row, expanded) => row_toggleExpanded(row, expanded) },\n\t\t\trow_getIsExpanded: { fn: (row) => row_getIsExpanded(row) },\n\t\t\trow_getCanExpand: { fn: (row) => row_getCanExpand(row) },\n\t\t\trow_getIsAllParentsExpanded: { fn: (row) => row_getIsAllParentsExpanded(row) },\n\t\t\trow_getToggleExpandedHandler: { fn: (row) => row_getToggleExpandedHandler(row) }\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"rowExpandingFeature\", table, {\n\t\t\ttable_autoResetExpanded: { fn: () => table_autoResetExpanded(table) },\n\t\t\ttable_setExpanded: { fn: (updater) => table_setExpanded(table, updater) },\n\t\t\ttable_toggleAllRowsExpanded: { fn: (expanded) => table_toggleAllRowsExpanded(table, expanded) },\n\t\t\ttable_resetExpanded: { fn: (defaultState) => table_resetExpanded(table, defaultState) },\n\t\t\ttable_getCanSomeRowsExpand: { fn: () => table_getCanSomeRowsExpand(table) },\n\t\t\ttable_getToggleAllRowsExpandedHandler: { fn: () => table_getToggleAllRowsExpandedHandler(table) },\n\t\t\ttable_getIsSomeRowsExpanded: { fn: () => table_getIsSomeRowsExpanded(table) },\n\t\t\ttable_getIsAllRowsExpanded: { fn: () => table_getIsAllRowsExpanded(table) },\n\t\t\ttable_getExpandedDepth: { fn: () => table_getExpandedDepth(table) },\n\t\t\ttable__expandRows: { fn: expandRows }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { rowExpandingFeature };","import { cloneState, functionalUpdate, setStateSlice } from \"../../utils.js\";\n\n//#region src/features/row-pagination/rowPaginationFeature.utils.ts\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\n/**\n* Creates the default pagination state used by the pagination feature.\n*\n* The feature default starts at the first page with a page size of 10. Reset\n* APIs use this value when `defaultState` is `true`.\n*\n* @example\n* ```ts\n* const pagination = getDefaultPaginationState()\n* ```\n*/\nfunction getDefaultPaginationState() {\n\treturn {\n\t\tpageIndex: defaultPageIndex,\n\t\tpageSize: defaultPageSize\n\t};\n}\n/**\n* Resets the page index when a page-altering change should return to page 0.\n*\n* The reset runs when `autoResetAll`, `autoResetPageIndex`, or the default\n* client-side pagination behavior allows it. Manual pagination opts out unless\n* the reset options explicitly opt back in.\n*\n* @example\n* ```ts\n* table_autoResetPageIndex(table)\n* ```\n*/\nfunction table_autoResetPageIndex(table) {\n\tif (table.options.autoResetAll ?? table.options.autoResetPageIndex ?? !table.options.manualPagination) {\n\t\tif ((table.atoms.pagination?.get()?.pageIndex ?? defaultPageIndex) === defaultPageIndex) return;\n\t\ttable_resetPageIndex(table, true);\n\t}\n}\n/**\n* Routes a pagination updater through the table's pagination change handler.\n*\n* The updater may be a next state object or a function of the previous\n* `PaginationState`; controlled state and external atoms observe the same\n* updater path as the instance API.\n*\n* @example\n* ```ts\n* table_setPagination(table, (old) => old)\n* ```\n*/\nfunction table_setPagination(table, updater) {\n\tsetStateSlice(table, \"pagination\", updater);\n}\n/**\n* Resets `pagination` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.pagination` when it\n* exists. Passing `true` ignores initial state and resets to\n* `{ pageIndex: 0, pageSize: 10 }`.\n*\n* @example\n* ```ts\n* table_resetPagination(table)\n* table_resetPagination(table, true)\n* ```\n*/\nfunction table_resetPagination(table, defaultState) {\n\ttable_setPagination(table, defaultState ? getDefaultPaginationState() : cloneState(table.initialState.pagination ?? getDefaultPaginationState()));\n}\n/**\n* Updates `pagination.pageIndex` and clamps it to the known page range.\n*\n* Unknown page counts (`undefined` or `-1`) allow any non-negative page index.\n* Known page counts clamp the index between `0` and `pageCount - 1`.\n*\n* @example\n* ```ts\n* table_setPageIndex(table, (old) => old)\n* ```\n*/\nfunction table_setPageIndex(table, updater) {\n\ttable_setPagination(table, (old) => {\n\t\tlet pageIndex = functionalUpdate(updater, old.pageIndex);\n\t\tconst maxPageIndex = typeof table.options.pageCount === \"undefined\" || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n\t\tpageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n\t\treturn {\n\t\t\t...old,\n\t\t\tpageIndex\n\t\t};\n\t});\n}\n/**\n* Resets only `pagination.pageIndex`.\n*\n* With no argument, the reset uses `table.initialState.pagination?.pageIndex`\n* or `0`. Passing `true` always resets the page index to `0`.\n*\n* @example\n* ```ts\n* table_resetPageIndex(table)\n* table_resetPageIndex(table, true)\n* ```\n*/\nfunction table_resetPageIndex(table, defaultState) {\n\ttable_setPageIndex(table, defaultState ? defaultPageIndex : table.initialState.pagination?.pageIndex ?? defaultPageIndex);\n}\n/**\n* Resets only `pagination.pageSize`.\n*\n* With no argument, the reset uses `table.initialState.pagination?.pageSize`\n* or `10`. Passing `true` always resets the page size to `10`.\n*\n* @example\n* ```ts\n* table_resetPageSize(table)\n* table_resetPageSize(table, true)\n* ```\n*/\nfunction table_resetPageSize(table, defaultState) {\n\ttable_setPageSize(table, defaultState ? defaultPageSize : table.initialState.pagination?.pageSize ?? defaultPageSize);\n}\n/**\n* Updates `pagination.pageSize` while preserving the current top row.\n*\n* The new size is clamped to at least `1`, and `pageIndex` is recalculated so\n* the row that was previously at the top of the page remains in view.\n*\n* @example\n* ```ts\n* table_setPageSize(table, (old) => old)\n* ```\n*/\nfunction table_setPageSize(table, updater) {\n\ttable_setPagination(table, (old) => {\n\t\tconst pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n\t\tconst topRowIndex = old.pageSize === Infinity ? 0 : old.pageSize * old.pageIndex;\n\t\tconst pageIndex = pageSize === Infinity ? 0 : Math.floor(topRowIndex / pageSize);\n\t\treturn {\n\t\t\t...old,\n\t\t\tpageIndex,\n\t\t\tpageSize\n\t\t};\n\t});\n}\n/**\n* Builds the zero-based page indexes available for the current page count.\n*\n* Unknown or empty page counts return an empty array; otherwise the result is\n* `[0, 1, ...pageCount - 1]`.\n*\n* @example\n* ```ts\n* const pageIndexes = table_getPageOptions(table)\n* ```\n*/\nfunction table_getPageOptions(table) {\n\tconst pageCount = table_getPageCount(table);\n\tlet pageOptions = [];\n\tif (pageCount && pageCount > 0) pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n\treturn pageOptions;\n}\n/**\n* Checks whether the current page index can move backward.\n*\n* The first page is page index `0`, so only positive page indexes can navigate\n* to a previous page.\n*\n* @example\n* ```ts\n* const canGoBack = table_getCanPreviousPage(table)\n* ```\n*/\nfunction table_getCanPreviousPage(table) {\n\treturn (table.atoms.pagination?.get()?.pageIndex ?? 0) > 0;\n}\n/**\n* Checks whether the current page index can move forward.\n*\n* A `pageCount` of `-1` means the caller does not know the total page count, so\n* this returns `true`. A page count of `0` returns `false`.\n*\n* @example\n* ```ts\n* const canGoForward = table_getCanNextPage(table)\n* ```\n*/\nfunction table_getCanNextPage(table) {\n\tconst pageIndex = table.atoms.pagination?.get()?.pageIndex ?? defaultPageIndex;\n\tconst pageCount = table_getPageCount(table);\n\tif (pageCount === -1) return true;\n\tif (pageCount === 0) return false;\n\treturn pageIndex < pageCount - 1;\n}\n/**\n* Checks whether a known, finite last page exists after the current page.\n*\n* Unknown (`-1`), empty, and non-finite page counts do not have a navigable\n* last page.\n*\n* @example\n* ```ts\n* const canGoToLastPage = table_getCanLastPage(table)\n* ```\n*/\nfunction table_getCanLastPage(table) {\n\tconst pageIndex = table.atoms.pagination?.get()?.pageIndex ?? defaultPageIndex;\n\tconst pageCount = table_getPageCount(table);\n\treturn Number.isFinite(pageCount) && pageCount > 0 && pageIndex < pageCount - 1;\n}\n/**\n* Moves the table to the previous page.\n*\n* This delegates to `table_setPageIndex` so pagination state ownership and\n* updater semantics remain consistent.\n*\n* @example\n* ```ts\n* table_previousPage(table)\n* ```\n*/\nfunction table_previousPage(table) {\n\treturn table_setPageIndex(table, (old) => old - 1);\n}\n/**\n* Moves the table to the next page.\n*\n* This delegates to `table_setPageIndex` so pagination state ownership and\n* updater semantics remain consistent.\n*\n* @example\n* ```ts\n* table_nextPage(table)\n* ```\n*/\nfunction table_nextPage(table) {\n\treturn table_setPageIndex(table, (old) => {\n\t\treturn old + 1;\n\t});\n}\n/**\n* Moves the table to the first page.\n*\n* This is a convenience wrapper around `table_setPageIndex(table, 0)`.\n*\n* @example\n* ```ts\n* table_firstPage(table)\n* ```\n*/\nfunction table_firstPage(table) {\n\treturn table_setPageIndex(table, 0);\n}\n/**\n* Moves the table to the last known page.\n*\n* Unknown, empty, and non-finite page counts do not have a navigable last\n* page, so this does nothing for those states.\n*\n* @example\n* ```ts\n* table_lastPage(table)\n* ```\n*/\nfunction table_lastPage(table) {\n\tconst pageCount = table_getPageCount(table);\n\tif (!Number.isFinite(pageCount) || pageCount <= 0) return;\n\treturn table_setPageIndex(table, pageCount - 1);\n}\n/**\n* Resolves the number of pages for the current pagination state.\n*\n* `options.pageCount` wins for manual pagination. Otherwise the value is\n* calculated from `table_getRowCount(table)` and the current `pageSize`.\n*\n* @example\n* ```ts\n* const pages = table_getPageCount(table)\n* ```\n*/\nfunction table_getPageCount(table) {\n\tconst configuredPageCount = table.options.pageCount;\n\tif (configuredPageCount != null) return configuredPageCount;\n\tconst rowCount = table_getRowCount(table);\n\tconst pageSize = table.atoms.pagination?.get()?.pageSize ?? defaultPageSize;\n\tif (pageSize === Infinity && Number.isFinite(rowCount) && rowCount > 0) return 1;\n\treturn Math.ceil(rowCount / pageSize);\n}\n/**\n* Resolves the total row count used for pagination math.\n*\n* `options.rowCount` wins for manual pagination. Otherwise the count comes\n* from the pre-paginated row model so filtering, grouping, sorting, and\n* expansion are reflected before the page slice is applied.\n*\n* @example\n* ```ts\n* const rows = table_getRowCount(table)\n* ```\n*/\nfunction table_getRowCount(table) {\n\treturn table.options.rowCount ?? table.getPrePaginatedRowModel().rows.length;\n}\n\n//#endregion\nexport { getDefaultPaginationState, table_autoResetPageIndex, table_firstPage, table_getCanLastPage, table_getCanNextPage, table_getCanPreviousPage, table_getPageCount, table_getPageOptions, table_getRowCount, table_lastPage, table_nextPage, table_previousPage, table_resetPageIndex, table_resetPageSize, table_resetPagination, table_setPageIndex, table_setPageSize, table_setPagination };","import { assignTableAPIs, makeStateUpdater } from \"../../utils.js\";\nimport { getDefaultPaginationState, table_autoResetPageIndex, table_firstPage, table_getCanLastPage, table_getCanNextPage, table_getCanPreviousPage, table_getPageCount, table_getPageOptions, table_getRowCount, table_lastPage, table_nextPage, table_previousPage, table_resetPageIndex, table_resetPageSize, table_resetPagination, table_setPageIndex, table_setPageSize, table_setPagination } from \"./rowPaginationFeature.utils.js\";\n\n//#region src/features/row-pagination/rowPaginationFeature.ts\n/**\n* Feature that adds pagination state and table APIs for page navigation.\n*/\nconst rowPaginationFeature = {\n\tgetInitialState: (initialState) => {\n\t\treturn {\n\t\t\t...initialState,\n\t\t\tpagination: {\n\t\t\t\t...getDefaultPaginationState(),\n\t\t\t\t...initialState.pagination\n\t\t\t}\n\t\t};\n\t},\n\tgetDefaultTableOptions: (table) => {\n\t\treturn { onPaginationChange: makeStateUpdater(\"pagination\", table) };\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"rowPaginationFeature\", table, {\n\t\t\ttable_autoResetPageIndex: { fn: () => table_autoResetPageIndex(table) },\n\t\t\ttable_setPagination: { fn: (updater) => table_setPagination(table, updater) },\n\t\t\ttable_resetPagination: { fn: (defaultState) => table_resetPagination(table, defaultState) },\n\t\t\ttable_setPageIndex: { fn: (updater) => table_setPageIndex(table, updater) },\n\t\t\ttable_resetPageIndex: { fn: (defaultState) => table_resetPageIndex(table, defaultState) },\n\t\t\ttable_setPageSize: { fn: (updater) => table_setPageSize(table, updater) },\n\t\t\ttable_getPageCount: { fn: () => table_getPageCount(table) },\n\t\t\ttable_resetPageSize: { fn: (defaultState) => table_resetPageSize(table, defaultState) },\n\t\t\ttable_getPageOptions: { fn: () => table_getPageOptions(table) },\n\t\t\ttable_getCanPreviousPage: { fn: () => table_getCanPreviousPage(table) },\n\t\t\ttable_getCanNextPage: { fn: () => table_getCanNextPage(table) },\n\t\t\ttable_getCanLastPage: { fn: () => table_getCanLastPage(table) },\n\t\t\ttable_previousPage: { fn: () => table_previousPage(table) },\n\t\t\ttable_nextPage: { fn: () => table_nextPage(table) },\n\t\t\ttable_firstPage: { fn: () => table_firstPage(table) },\n\t\t\ttable_lastPage: { fn: () => table_lastPage(table) },\n\t\t\ttable_getRowCount: { fn: () => table_getRowCount(table) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { rowPaginationFeature };","import { callMemoOrStaticFn, cloneState, copyInstancePropertiesWithoutMemos, hasOwn, makeObjectMap } from \"../../utils.js\";\n\n//#region src/features/row-selection/rowSelectionFeature.utils.ts\n/**\n* Creates the default row selection state.\n*\n* The feature default is an empty map, meaning no rows are selected. Reset APIs\n* use this value when `defaultState` is `true`.\n*\n* @example\n* ```ts\n* const selection = getDefaultRowSelectionState()\n* ```\n*/\nfunction getDefaultRowSelectionState() {\n\treturn makeObjectMap();\n}\n/**\n* Routes a row selection updater through the table's selection change handler.\n*\n* The updater may be a next selection map or a function of the previous map,\n* matching the instance `table.setRowSelection` behavior.\n*\n* @example\n* ```ts\n* table_setRowSelection(table, (old) => ({ ...old, [rowId]: true }))\n* ```\n*/\nfunction table_setRowSelection(table, updater) {\n\ttable.options.onRowSelectionChange?.(updater);\n}\n/**\n* Resets `rowSelection` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.rowSelection` when it\n* exists. Passing `true` ignores initial state and resets to `{}`.\n*\n* @example\n* ```ts\n* table_resetRowSelection(table)\n* table_resetRowSelection(table, true)\n* ```\n*/\nfunction table_resetRowSelection(table, defaultState) {\n\ttable._lastSelectedRowId = null;\n\ttable_setRowSelection(table, defaultState ? makeObjectMap() : Object.assign(makeObjectMap(), cloneState(table.initialState.rowSelection ?? {})));\n}\n/**\n* Selects or deselects every selectable row before grouping.\n*\n* Omitting `value` toggles based on `table_getIsAllRowsSelected(table)`.\n* Selecting skips sub-rows whose ancestors block descent via\n* `enableSubRowSelection`. Deselecting removes matching selectable ids from the\n* existing selection map; rows that cannot be selected keep their selection\n* unless `opts.deselectAll` is `true`.\n*\n* @example\n* ```ts\n* table_toggleAllRowsSelected(table)\n* ```\n*/\nfunction table_toggleAllRowsSelected(table, value, opts) {\n\ttable._lastSelectedRowId = null;\n\ttable_setRowSelection(table, (old) => {\n\t\tvalue = typeof value !== \"undefined\" ? value : !callMemoOrStaticFn(table, \"getIsAllRowsSelected\", table_getIsAllRowsSelected);\n\t\tif (opts?.deselectAll && !value) return makeObjectMap();\n\t\tconst rowSelection = Object.assign(makeObjectMap(), old);\n\t\tconst preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\t\tif (value) {\n\t\t\tconst subtreeCache = /* @__PURE__ */ new Map();\n\t\t\tpreGroupedFlatRows.forEach((row) => {\n\t\t\t\tif (isRowSelectableInSelectAll(row, subtreeCache)) rowSelection[row.id] = true;\n\t\t\t});\n\t\t} else preGroupedFlatRows.forEach((row) => {\n\t\t\tif (row_getCanSelect(row)) delete rowSelection[row.id];\n\t\t});\n\t\treturn rowSelection;\n\t});\n}\n/**\n* Selects or deselects every selectable row on the current page.\n*\n* Omitting `value` toggles based on `table_getIsAllPageRowsSelected(table)`.\n* Child rows are included when sub-row selection allows it.\n*\n* @example\n* ```ts\n* table_toggleAllPageRowsSelected(table)\n* ```\n*/\nfunction table_toggleAllPageRowsSelected(table, value, opts) {\n\ttable._lastSelectedRowId = null;\n\ttable_setRowSelection(table, (old) => {\n\t\tconst resolvedValue = typeof value !== \"undefined\" ? value : !callMemoOrStaticFn(table, \"getIsAllPageRowsSelected\", table_getIsAllPageRowsSelected);\n\t\tif (opts?.deselectAll && !resolvedValue) return makeObjectMap();\n\t\tconst rowSelection = Object.assign(makeObjectMap(), old);\n\t\ttable.getRowModel().rows.forEach((row) => {\n\t\t\tmutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table, true);\n\t\t});\n\t\treturn rowSelection;\n\t});\n}\n/**\n* Reads the row model before row selection is projected into selected rows.\n*\n* Selection does not alter the base row pipeline, so this returns the core row\n* model.\n*\n* @example\n* ```ts\n* const rowsBeforeSelection = table_getPreSelectedRowModel(table)\n* ```\n*/\nfunction table_getPreSelectedRowModel(table) {\n\treturn table.getCoreRowModel();\n}\n/**\n* Builds a row model containing selected rows from the core row model.\n*\n* If no row ids are selected, an empty row model is returned without walking\n* the rows.\n*\n* @example\n* ```ts\n* const selectedRows = table_getSelectedRowModel(table)\n* ```\n*/\nfunction table_getSelectedRowModel(table) {\n\tconst rowModel = table.getCoreRowModel();\n\tif (!callMemoOrStaticFn(table, \"getIsSomeRowsSelected\", table_getIsSomeRowsSelected)) return {\n\t\trows: [],\n\t\tflatRows: [],\n\t\trowsById: makeObjectMap()\n\t};\n\treturn selectRowsFn(rowModel, table);\n}\n/**\n* Builds a row model containing selected rows from the filtered row model.\n*\n* If no row ids are selected, an empty row model is returned without walking\n* the rows.\n*\n* @example\n* ```ts\n* const selectedRows = table_getFilteredSelectedRowModel(table)\n* ```\n*/\nfunction table_getFilteredSelectedRowModel(table) {\n\tconst rowModel = table.getFilteredRowModel();\n\tif (!callMemoOrStaticFn(table, \"getIsSomeRowsSelected\", table_getIsSomeRowsSelected)) return {\n\t\trows: [],\n\t\tflatRows: [],\n\t\trowsById: makeObjectMap()\n\t};\n\treturn selectRowsFn(rowModel, table);\n}\n/**\n* Builds a row model containing selected rows from the grouped row model.\n*\n* If no row ids are selected, an empty row model is returned without walking\n* the rows.\n*\n* @example\n* ```ts\n* const selectedRows = table_getGroupedSelectedRowModel(table)\n* ```\n*/\nfunction table_getGroupedSelectedRowModel(table) {\n\tconst rowModel = table.getSortedRowModel();\n\tif (!callMemoOrStaticFn(table, \"getIsSomeRowsSelected\", table_getIsSomeRowsSelected)) return {\n\t\trows: [],\n\t\tflatRows: [],\n\t\trowsById: makeObjectMap()\n\t};\n\treturn selectRowsFn(rowModel, table);\n}\n/**\n* Returns the ids of all selected rows.\n*\n* @example\n* ```ts\n* const selectedRowIds = table_getSelectedRowIds(table)\n* ```\n*/\nfunction table_getSelectedRowIds(table) {\n\treturn Object.keys(table.atoms.rowSelection?.get() ?? {});\n}\n/**\n* Checks whether every selectable filtered row is selected.\n*\n* The result is false when there are no filtered rows or when selection state is\n* empty. Sub-rows whose ancestors block descent via `enableSubRowSelection` are\n* ignored, matching the rows that `table_toggleAllRowsSelected` selects.\n*\n* @example\n* ```ts\n* const allSelected = table_getIsAllRowsSelected(table)\n* ```\n*/\nfunction table_getIsAllRowsSelected(table) {\n\tconst preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n\tconst rowSelection = table.atoms.rowSelection?.get() ?? {};\n\tlet isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n\tif (isAllRowsSelected) {\n\t\tconst subtreeCache = /* @__PURE__ */ new Map();\n\t\tif (preGroupedFlatRows.some((row) => !isRowSelected(row, rowSelection) && isRowSelectableInSelectAll(row, subtreeCache))) isAllRowsSelected = false;\n\t}\n\treturn isAllRowsSelected;\n}\n/**\n* Checks whether every selectable row on the current page is selected.\n*\n* Non-selectable rows are ignored for this calculation, as are sub-rows whose\n* ancestors block descent via `enableSubRowSelection`.\n*\n* @example\n* ```ts\n* const allPageRowsSelected = table_getIsAllPageRowsSelected(table)\n* ```\n*/\nfunction table_getIsAllPageRowsSelected(table) {\n\tconst paginationFlatRows = table.getPaginatedRowModel().flatRows;\n\tconst rowSelection = table.atoms.rowSelection?.get() ?? {};\n\tconst subtreeCache = /* @__PURE__ */ new Map();\n\tlet sawSelectableRow = false;\n\tfor (let i = 0; i < paginationFlatRows.length; i++) {\n\t\tconst row = paginationFlatRows[i];\n\t\tif (!isRowSelected(row, rowSelection)) {\n\t\t\tif (isRowSelectableInSelectAll(row, subtreeCache)) return false;\n\t\t} else if (!sawSelectableRow && isRowSelectableInSelectAll(row, subtreeCache)) sawSelectableRow = true;\n\t}\n\treturn sawSelectableRow;\n}\n/**\n* Checks whether at least one row id is selected.\n*\n* The result stays true when every row is selected.\n*\n* @example\n* ```ts\n* const someRowsSelected = table_getIsSomeRowsSelected(table)\n* ```\n*/\nfunction table_getIsSomeRowsSelected(table) {\n\treturn callMemoOrStaticFn(table, \"getSelectedRowIds\", table_getSelectedRowIds).length > 0;\n}\n/**\n* Checks whether at least one selectable row on the current page is selected.\n*\n* @example\n* ```ts\n* const somePageRowsSelected = table_getIsSomePageRowsSelected(table)\n* ```\n*/\nfunction table_getIsSomePageRowsSelected(table) {\n\treturn table.getPaginatedRowModel().flatRows.filter((row) => row_getCanSelect(row)).some((row) => row_getIsSelected(row) || callMemoOrStaticFn(row, \"getIsSomeSelected\", row_getIsSomeSelected));\n}\n/**\n* Creates a checkbox-style handler that selects or deselects all rows.\n*\n* The handler reads `event.target.checked`, so it is intended for controls whose\n* checked state means \"all rows selected\".\n*\n* @example\n* ```ts\n* const onChange = table_getToggleAllRowsSelectedHandler(table)\n* ```\n*/\nfunction table_getToggleAllRowsSelectedHandler(table) {\n\treturn (e) => {\n\t\ttable_toggleAllRowsSelected(table, e.target.checked);\n\t};\n}\n/**\n* Creates a checkbox-style handler that selects or deselects current page rows.\n*\n* The handler reads `event.target.checked`, so it is intended for controls whose\n* checked state means \"all page rows selected\".\n*\n* @example\n* ```ts\n* const onChange = table_getToggleAllPageRowsSelectedHandler(table)\n* ```\n*/\nfunction table_getToggleAllPageRowsSelectedHandler(table) {\n\treturn (e) => {\n\t\ttable_toggleAllPageRowsSelected(table, e.target.checked);\n\t};\n}\n/**\n* Selects or deselects this row.\n*\n* Omitting `value` toggles the row. Child rows are selected recursively unless\n* `opts.selectChildren` is `false`, sub-row selection is disabled, or the row\n* only supports single selection. Pass `deselectParents: true` to also remove\n* ancestor row ids from the selection when this row is deselected.\n*\n* @example\n* ```ts\n* row_toggleSelected(row)\n* row_toggleSelected(row, true)\n* row_toggleSelected(row, false)\n* row_toggleSelected(row, true, { selectChildren: false })\n* row_toggleSelected(row, false, { deselectParents: true })\n* ```\n*/\nfunction row_toggleSelected(row, value, opts) {\n\tconst isSelected = row_getIsSelected(row);\n\ttable_setRowSelection(row.table, (old) => {\n\t\tvalue = typeof value !== \"undefined\" ? value : !isSelected;\n\t\tconst rowSelection = Object.assign(makeObjectMap(), old);\n\t\tmutateRowIsSelected(rowSelection, row.id, value, (opts?.selectChildren ?? true) && row_getCanMultiSelect(row), row.table);\n\t\tif (!value && opts?.deselectParents) pruneAncestorRowIds(rowSelection, row);\n\t\treturn rowSelection;\n\t});\n}\n/**\n* Checks whether this row id is selected in `state.rowSelection`.\n*\n* Missing row ids are treated as not selected.\n*\n* @example\n* ```ts\n* const selected = row_getIsSelected(row)\n* ```\n*/\nfunction row_getIsSelected(row) {\n\treturn isRowSelected(row, row.table.atoms.rowSelection?.get() ?? {});\n}\n/**\n* Checks whether some, but not all, selectable descendants are selected.\n*\n* This supports indeterminate selection UI for parent rows.\n*\n* @example\n* ```ts\n* const partial = row_getIsSomeSelected(row)\n* ```\n*/\nfunction row_getIsSomeSelected(row) {\n\treturn isSubRowSelected(row) === \"some\";\n}\n/**\n* Checks whether all selectable descendants are selected.\n*\n* Rows without selectable descendants return false.\n*\n* @example\n* ```ts\n* const allChildrenSelected = row_getIsAllSubRowsSelected(row)\n* ```\n*/\nfunction row_getIsAllSubRowsSelected(row) {\n\treturn isSubRowSelected(row) === \"all\";\n}\n/**\n* Checks whether this row can be selected.\n*\n* `options.enableRowSelection` may be a boolean or a row predicate; it defaults\n* to `true`.\n*\n* @example\n* ```ts\n* const canSelect = row_getCanSelect(row)\n* ```\n*/\nfunction row_getCanSelect(row) {\n\tconst options = row.table.options;\n\tif (typeof options.enableRowSelection === \"function\") return options.enableRowSelection(row);\n\treturn options.enableRowSelection ?? true;\n}\n/**\n* Checks whether selecting this row should also select its subRows.\n*\n* `options.enableSubRowSelection` may be a boolean or a row predicate; it\n* defaults to `true`.\n*\n* @example\n* ```ts\n* const canSelectChildren = row_getCanSelectSubRows(row)\n* ```\n*/\nfunction row_getCanSelectSubRows(row) {\n\tconst options = row.table.options;\n\tif (typeof options.enableSubRowSelection === \"function\") return options.enableSubRowSelection(row);\n\treturn options.enableSubRowSelection ?? true;\n}\n/**\n* Checks whether this row can be selected alongside other rows.\n*\n* `options.enableMultiRowSelection` may be a boolean or a row predicate; it\n* defaults to `true`.\n*\n* @example\n* ```ts\n* const canMultiSelect = row_getCanMultiSelect(row)\n* ```\n*/\nfunction row_getCanMultiSelect(row) {\n\tconst options = row.table.options;\n\tif (typeof options.enableMultiRowSelection === \"function\") return options.enableMultiRowSelection(row);\n\treturn options.enableMultiRowSelection ?? true;\n}\n/**\n* Creates a checkbox-style handler that selects or deselects this row.\n*\n* The handler is a no-op when the row cannot be selected and reads\n* `event.target.checked`. Shift events select or deselect the inclusive range\n* from the most recent selectable row handled by this table. Pass\n* `selectChildren: false` to limit changes to rows explicitly present in the\n* display-order interval, and `deselectParents: true` to remove ancestor row\n* ids from the selection when rows are deselected.\n*\n* @example\n* ```ts\n* const onChange = row_getToggleSelectedHandler(row)\n* ```\n*/\nfunction row_getToggleSelectedHandler(row, opts) {\n\tconst canSelect = row_getCanSelect(row);\n\treturn (e) => {\n\t\tif (!canSelect) return;\n\t\tconst event = e;\n\t\tconst table = row.table;\n\t\tconst checked = event.target.checked;\n\t\tconst anchorId = table._lastSelectedRowId;\n\t\tif (!(table.options.enableRowRangeSelection !== false && anchorId !== null && row_getCanMultiSelect(row) && (table.options.isRowRangeSelectionEvent?.(e) ?? false)) || !selectRowRange(row, anchorId, checked, opts)) row_toggleSelected(row, checked, opts);\n\t\ttable._lastSelectedRowId = row.id;\n\t};\n}\n/**\n* Resolves and mutates an inclusive interval in the table's latest logical\n* display order.\n*\n* The anchor is resolved without throwing from the pre-pagination row model,\n* then the core row model. Both endpoint display indexes must still identify\n* those rows in the current order and both endpoints must support\n* multi-selection. Eligible interval rows are applied through one row\n* selection updater; non-selectable and non-multi-selectable rows are skipped.\n* Returns `false` when the interaction should fall back to an ordinary toggle.\n*/\nfunction selectRowRange(row, anchorId, value, opts) {\n\tconst includeChildren = opts?.selectChildren ?? true;\n\tconst table = row.table;\n\tconst rows = table.getRowsInDisplayOrder();\n\tconst anchorRow = table.getPrePaginatedRowModel().rowsById[anchorId] ?? table.getCoreRowModel().rowsById[anchorId];\n\tif (!anchorRow) return false;\n\tconst anchorIndex = anchorRow.getDisplayIndex();\n\tconst rowIndex = row.getDisplayIndex();\n\tconst anchorAtIndex = rows[anchorIndex];\n\tconst rowAtIndex = rows[rowIndex];\n\tif (anchorIndex < 0 || rowIndex < 0 || anchorIndex >= rows.length || rowIndex >= rows.length || anchorAtIndex?.id !== anchorRow.id || rowAtIndex?.id !== row.id || !row_getCanMultiSelect(anchorRow) || !row_getCanMultiSelect(row)) return false;\n\tconst start = Math.min(anchorIndex, rowIndex);\n\tconst end = Math.max(anchorIndex, rowIndex);\n\ttable_setRowSelection(table, (old) => {\n\t\tconst rowSelection = Object.assign(makeObjectMap(), old);\n\t\tfor (let index = start; index <= end; index++) {\n\t\t\tconst rangeRow = rows[index];\n\t\t\tif (!row_getCanSelect(rangeRow) || !row_getCanMultiSelect(rangeRow)) continue;\n\t\t\tmutateRowIsSelected(rowSelection, rangeRow.id, value, includeChildren, table);\n\t\t\tif (!value && opts?.deselectParents) pruneAncestorRowIds(rowSelection, rangeRow);\n\t\t}\n\t\treturn rowSelection;\n\t});\n\treturn true;\n}\nfunction mutateRowIsSelected(rowSelection, rowId, value, includeChildren, table, respectCanSelectOnDeselect) {\n\tconst row = table.getRow(rowId, true);\n\tif (value) {\n\t\tif (!row_getCanMultiSelect(row)) Object.keys(rowSelection).forEach((key) => delete rowSelection[key]);\n\t\tif (row_getCanSelect(row)) rowSelection[rowId] = true;\n\t} else if (!respectCanSelectOnDeselect || row_getCanSelect(row)) delete rowSelection[rowId];\n\tif (includeChildren && row.subRows.length && row_getCanSelectSubRows(row)) row.subRows.forEach((r) => mutateRowIsSelected(rowSelection, r.id, value, includeChildren, table, respectCanSelectOnDeselect));\n}\n/**\n* Returns whether a select-all cascade can reach this row: the row itself is\n* selectable and no ancestor blocks descent via `enableSubRowSelection`.\n*\n* `subtreeCache` memoizes the per-ancestor verdict for one select-all pass, so\n* ancestor chains shared by sibling rows are only walked (and the\n* `enableSubRowSelection` predicate only invoked) once per unique ancestor.\n*/\nfunction isRowSelectableInSelectAll(row, subtreeCache) {\n\tif (!row_getCanSelect(row)) return false;\n\tconst table = row.table;\n\tif (table.options.enableSubRowSelection === true) return true;\n\tconst parentId = row.parentId;\n\tif (parentId === void 0) return true;\n\tconst cached = subtreeCache.get(parentId);\n\tif (cached !== void 0) return cached;\n\tconst rowsById = table.getCoreRowModel().rowsById;\n\tconst visited = [];\n\tlet selectable = true;\n\tlet currentId = parentId;\n\twhile (currentId !== void 0) {\n\t\tconst known = subtreeCache.get(currentId);\n\t\tif (known !== void 0) {\n\t\t\tselectable = known;\n\t\t\tbreak;\n\t\t}\n\t\tvisited.push(currentId);\n\t\tconst parent = rowsById[currentId] ?? table.getRow(currentId, true);\n\t\tif (!row_getCanSelectSubRows(parent)) {\n\t\t\tselectable = false;\n\t\t\tbreak;\n\t\t}\n\t\tcurrentId = parent.parentId;\n\t}\n\tvisited.forEach((id) => subtreeCache.set(id, selectable));\n\treturn selectable;\n}\nfunction pruneAncestorRowIds(rowSelection, row) {\n\tconst rowsById = row.table.getCoreRowModel().rowsById;\n\tlet parentId = row.parentId;\n\twhile (parentId !== void 0) {\n\t\tdelete rowSelection[parentId];\n\t\tparentId = (rowsById[parentId] ?? row.table.getRow(parentId, true)).parentId;\n\t}\n}\nfunction selectRowsRecursively(rows, rowSelection, selectedFlatRows, selectedRowsById) {\n\tconst result = [];\n\tfor (let i = 0; i < rows.length; i++) {\n\t\tconst row = rows[i];\n\t\tconst isSelected = isRowSelected(row, rowSelection);\n\t\tif (isSelected) {\n\t\t\tselectedFlatRows.push(row);\n\t\t\tselectedRowsById[row.id] = row;\n\t\t}\n\t\tif (row.subRows.length) {\n\t\t\tconst newSubRows = selectRowsRecursively(row.subRows, rowSelection, selectedFlatRows, selectedRowsById);\n\t\t\tif (isSelected) {\n\t\t\t\tconst cloned = Object.create(Object.getPrototypeOf(row));\n\t\t\t\tcopyInstancePropertiesWithoutMemos(cloned, row);\n\t\t\t\tcloned.subRows = newSubRows;\n\t\t\t\tresult.push(cloned);\n\t\t\t}\n\t\t} else if (isSelected) result.push(row);\n\t}\n\treturn result;\n}\n/**\n* Builds a row model containing rows selected by the current row selection state.\n*\n* The result is derived from the supplied row model, so selected ids absent from\n* that model are not materialized as rows.\n*\n* @example\n* ```ts\n* const selectedRows = selectRowsFn(rowModel)\n* ```\n*/\nfunction selectRowsFn(rowModel, table) {\n\tconst newSelectedFlatRows = [];\n\tconst newSelectedRowsById = makeObjectMap();\n\tconst rowSelection = table.atoms.rowSelection?.get() ?? {};\n\treturn {\n\t\trows: selectRowsRecursively(rowModel.rows, rowSelection, newSelectedFlatRows, newSelectedRowsById),\n\t\tflatRows: newSelectedFlatRows,\n\t\trowsById: newSelectedRowsById\n\t};\n}\n/**\n* Returns whether a row id is selected in the current row selection state.\n*\n* @example\n* ```ts\n* const selected = isRowSelected(row)\n* ```\n*/\nfunction isRowSelected(row, rowSelection) {\n\treturn !!(hasOwn(rowSelection, row.id) && rowSelection[row.id]);\n}\n/**\n* Returns whether all, some, or none of a row's selectable descendants are selected.\n*\n* The result is used to drive indeterminate row selection UI.\n*\n* @example\n* ```ts\n* const selectedState = isSubRowSelected(row)\n* ```\n*/\nfunction isSubRowSelected(row) {\n\tif (!row.subRows.length) return false;\n\tconst rowSelection = row.table.atoms.rowSelection?.get() ?? {};\n\tlet someSelected = false;\n\tlet allChildrenSelected = true;\n\tlet someSelectable = false;\n\tfor (let i = 0; i < row.subRows.length; i++) {\n\t\tconst subRow = row.subRows[i];\n\t\tif (someSelected && !allChildrenSelected) break;\n\t\tif (row_getCanSelect(subRow)) {\n\t\t\tsomeSelectable = true;\n\t\t\tif (isRowSelected(subRow, rowSelection)) someSelected = true;\n\t\t\telse allChildrenSelected = false;\n\t\t}\n\t\tif (subRow.subRows.length) {\n\t\t\tconst subRowChildrenSelected = isSubRowSelected(subRow);\n\t\t\tif (subRowChildrenSelected === \"all\") {\n\t\t\t\tsomeSelected = true;\n\t\t\t\tsomeSelectable = true;\n\t\t\t} else if (subRowChildrenSelected === \"some\") {\n\t\t\t\tsomeSelected = true;\n\t\t\t\tallChildrenSelected = false;\n\t\t\t\tsomeSelectable = true;\n\t\t\t} else allChildrenSelected = false;\n\t\t}\n\t}\n\tif (!someSelectable) return false;\n\treturn allChildrenSelected ? \"all\" : someSelected ? \"some\" : false;\n}\n\n//#endregion\nexport { getDefaultRowSelectionState, isRowSelected, isSubRowSelected, row_getCanMultiSelect, row_getCanSelect, row_getCanSelectSubRows, row_getIsAllSubRowsSelected, row_getIsSelected, row_getIsSomeSelected, row_getToggleSelectedHandler, row_toggleSelected, selectRowsFn, table_getFilteredSelectedRowModel, table_getGroupedSelectedRowModel, table_getIsAllPageRowsSelected, table_getIsAllRowsSelected, table_getIsSomePageRowsSelected, table_getIsSomeRowsSelected, table_getPreSelectedRowModel, table_getSelectedRowIds, table_getSelectedRowModel, table_getToggleAllPageRowsSelectedHandler, table_getToggleAllRowsSelectedHandler, table_resetRowSelection, table_setRowSelection, table_toggleAllPageRowsSelected, table_toggleAllRowsSelected };","import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from \"../../utils.js\";\nimport { getDefaultRowSelectionState, row_getCanMultiSelect, row_getCanSelect, row_getCanSelectSubRows, row_getIsAllSubRowsSelected, row_getIsSelected, row_getIsSomeSelected, row_getToggleSelectedHandler, row_toggleSelected, table_getFilteredSelectedRowModel, table_getGroupedSelectedRowModel, table_getIsAllPageRowsSelected, table_getIsAllRowsSelected, table_getIsSomePageRowsSelected, table_getIsSomeRowsSelected, table_getPreSelectedRowModel, table_getSelectedRowIds, table_getSelectedRowModel, table_getToggleAllPageRowsSelectedHandler, table_getToggleAllRowsSelectedHandler, table_resetRowSelection, table_setRowSelection, table_toggleAllPageRowsSelected, table_toggleAllRowsSelected } from \"./rowSelectionFeature.utils.js\";\n\n//#region src/features/row-selection/rowSelectionFeature.ts\n/**\n* Feature that adds row selection state and APIs for row and page selection.\n*/\nconst rowSelectionFeature = {\n\tinitTableInstanceData: (table) => {\n\t\ttable._lastSelectedRowId = null;\n\t},\n\tresetTableInstanceData: (table) => {\n\t\ttable._lastSelectedRowId = null;\n\t},\n\tgetInitialState: (initialState) => {\n\t\treturn {\n\t\t\trowSelection: getDefaultRowSelectionState(),\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultTableOptions: (table) => {\n\t\treturn {\n\t\t\tonRowSelectionChange: makeStateUpdater(\"rowSelection\", table),\n\t\t\tenableRowSelection: true,\n\t\t\tenableMultiRowSelection: true,\n\t\t\tenableRowRangeSelection: true,\n\t\t\tenableSubRowSelection: true,\n\t\t\tisRowRangeSelectionEvent: (event) => {\n\t\t\t\tconst rangeEvent = event;\n\t\t\t\treturn Boolean(rangeEvent.shiftKey || rangeEvent.nativeEvent?.shiftKey);\n\t\t\t}\n\t\t};\n\t},\n\tassignRowPrototype: (prototype, table) => {\n\t\tassignPrototypeAPIs(\"rowSelectionFeature\", prototype, table, {\n\t\t\trow_toggleSelected: { fn: (row, value, opts) => row_toggleSelected(row, value, opts) },\n\t\t\trow_getIsSelected: { fn: (row) => row_getIsSelected(row) },\n\t\t\trow_getIsSomeSelected: {\n\t\t\t\tfn: (row) => row_getIsSomeSelected(row),\n\t\t\t\tmemoDeps: (row) => [\n\t\t\t\t\trow.subRows,\n\t\t\t\t\trow.table.atoms.rowSelection?.get(),\n\t\t\t\t\trow.table.options.enableRowSelection\n\t\t\t\t]\n\t\t\t},\n\t\t\trow_getIsAllSubRowsSelected: {\n\t\t\t\tfn: (row) => row_getIsAllSubRowsSelected(row),\n\t\t\t\tmemoDeps: (row) => [\n\t\t\t\t\trow.subRows,\n\t\t\t\t\trow.table.atoms.rowSelection?.get(),\n\t\t\t\t\trow.table.options.enableRowSelection\n\t\t\t\t]\n\t\t\t},\n\t\t\trow_getCanSelect: { fn: (row) => row_getCanSelect(row) },\n\t\t\trow_getCanSelectSubRows: { fn: (row) => row_getCanSelectSubRows(row) },\n\t\t\trow_getCanMultiSelect: { fn: (row) => row_getCanMultiSelect(row) },\n\t\t\trow_getToggleSelectedHandler: { fn: (row, opts) => row_getToggleSelectedHandler(row, opts) }\n\t\t});\n\t},\n\tconstructTableAPIs: (table) => {\n\t\tassignTableAPIs(\"rowSelectionFeature\", table, {\n\t\t\ttable_setRowSelection: { fn: (updater) => table_setRowSelection(table, updater) },\n\t\t\ttable_resetRowSelection: { fn: (defaultState) => table_resetRowSelection(table, defaultState) },\n\t\t\ttable_toggleAllRowsSelected: { fn: (value, opts) => table_toggleAllRowsSelected(table, value, opts) },\n\t\t\ttable_toggleAllPageRowsSelected: { fn: (value, opts) => table_toggleAllPageRowsSelected(table, value, opts) },\n\t\t\ttable_getPreSelectedRowModel: { fn: () => table_getPreSelectedRowModel(table) },\n\t\t\ttable_getSelectedRowModel: {\n\t\t\t\tfn: () => table_getSelectedRowModel(table),\n\t\t\t\tmemoDeps: () => [table.atoms.rowSelection?.get(), table.getCoreRowModel()]\n\t\t\t},\n\t\t\ttable_getFilteredSelectedRowModel: {\n\t\t\t\tfn: () => table_getFilteredSelectedRowModel(table),\n\t\t\t\tmemoDeps: () => [table.atoms.rowSelection?.get(), table.getFilteredRowModel()]\n\t\t\t},\n\t\t\ttable_getGroupedSelectedRowModel: {\n\t\t\t\tfn: () => table_getGroupedSelectedRowModel(table),\n\t\t\t\tmemoDeps: () => [table.atoms.rowSelection?.get(), table.getSortedRowModel()]\n\t\t\t},\n\t\t\ttable_getSelectedRowIds: {\n\t\t\t\tfn: () => table_getSelectedRowIds(table),\n\t\t\t\tmemoDeps: () => [table.atoms.rowSelection?.get()]\n\t\t\t},\n\t\t\ttable_getIsAllRowsSelected: {\n\t\t\t\tfn: () => table_getIsAllRowsSelected(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.atoms.rowSelection?.get(),\n\t\t\t\t\ttable.getFilteredRowModel(),\n\t\t\t\t\ttable.options.enableRowSelection,\n\t\t\t\t\ttable.options.enableSubRowSelection\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getIsAllPageRowsSelected: {\n\t\t\t\tfn: () => table_getIsAllPageRowsSelected(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.atoms.rowSelection?.get(),\n\t\t\t\t\ttable.getPaginatedRowModel(),\n\t\t\t\t\ttable.options.enableRowSelection,\n\t\t\t\t\ttable.options.enableSubRowSelection\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getIsSomeRowsSelected: {\n\t\t\t\tfn: () => table_getIsSomeRowsSelected(table),\n\t\t\t\tmemoDeps: () => [table.atoms.rowSelection?.get()]\n\t\t\t},\n\t\t\ttable_getIsSomePageRowsSelected: {\n\t\t\t\tfn: () => table_getIsSomePageRowsSelected(table),\n\t\t\t\tmemoDeps: () => [\n\t\t\t\t\ttable.atoms.rowSelection?.get(),\n\t\t\t\t\ttable.getPaginatedRowModel(),\n\t\t\t\t\ttable.options.enableRowSelection\n\t\t\t\t]\n\t\t\t},\n\t\t\ttable_getToggleAllRowsSelectedHandler: { fn: () => table_getToggleAllRowsSelectedHandler(table) },\n\t\t\ttable_getToggleAllPageRowsSelectedHandler: { fn: () => table_getToggleAllPageRowsSelectedHandler(table) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { rowSelectionFeature };","//#region src/features/row-sorting/sortFns.ts\n/**\n* Regular expression used to split mixed text and numeric chunks.\n*\n* The alphanumeric sort functions use these chunks for natural sorting of\n* strings like `item2` before `item10`.\n*/\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\n/**\n* Builds a `SortFn` from a value-level comparator plus an optional\n* `resolveDataValue` normalizer.\n*\n* The `sort` comparator receives both rows' data values, each already passed\n* through `resolveDataValue` when one is defined. Keeping normalization in the\n* resolver means a variant of an existing sorting function only has to swap\n* the resolver, not re-implement the comparison.\n*\n* The definition is attached to the returned function, so a variant can be\n* created by spreading a built-in sorting function and overriding what\n* differs:\n*\n* ```ts\n* const stripDiacritics = (value: string) =>\n* value.normalize('NFD').replace(/\\p{Diacritic}/gu, '')\n*\n* const alphanumericIgnoreDiacritics = constructSortFn({\n* ...sortFn_alphanumeric,\n* resolveDataValue: (value) =>\n* stripDiacritics(sortFn_alphanumeric.resolveDataValue!(value)),\n* })\n* ```\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction constructSortFn(def) {\n\tconst sortFn = Object.assign((rowA, rowB, columnId) => {\n\t\tlet dataValueA = rowA.getValue(columnId);\n\t\tlet dataValueB = rowB.getValue(columnId);\n\t\tconst resolveDataValue = sortFn.resolveDataValue;\n\t\tif (resolveDataValue) {\n\t\t\tdataValueA = resolveDataValue(dataValueA);\n\t\t\tdataValueB = resolveDataValue(dataValueB);\n\t\t}\n\t\treturn sortFn.sort(dataValueA, dataValueB, rowA, rowB, columnId);\n\t}, def);\n\treturn sortFn;\n}\n/**\n* Sorts rows with the built-in alphanumeric strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_alphanumeric = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),\n\tsort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in alphanumeric case sensitive strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_alphanumericCaseSensitive = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue),\n\tsort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in text strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_text = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),\n\tsort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in text case sensitive strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_textCaseSensitive = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toString(dataValue),\n\tsort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB)\n});\n/**\n* Sorts rows with the built-in datetime strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_datetime = /* @__PURE__ */ constructSortFn({\n\tresolveDataValue: (dataValue) => toDateSortValue(dataValue),\n\tsort: (dataValueA, dataValueB) => dataValueA > dataValueB ? 1 : dataValueA < dataValueB ? -1 : 0\n});\n/**\n* Sorts rows with the built-in basic strategy.\n*\n* This comparator returns ascending-order results; descending order is applied by the sorting row model.\n*/\nconst sortFn_basic = /* @__PURE__ */ constructSortFn({ sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB) });\nfunction compareBasic(a, b) {\n\treturn a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toDateSortValue(value) {\n\treturn value instanceof Date ? value.getTime() : value;\n}\nfunction toString(a) {\n\tif (typeof a === \"number\") {\n\t\tif (isNaN(a) || a === Infinity || a === -Infinity) return \"\";\n\t\treturn String(a);\n\t}\n\tif (typeof a === \"string\") return a;\n\treturn \"\";\n}\nfunction compareAlphanumeric(aStr, bStr) {\n\tlet ai = 0;\n\tlet bi = 0;\n\tconst aLen = aStr.length;\n\tconst bLen = bStr.length;\n\twhile (ai < aLen && bi < bLen) {\n\t\tconst aIsNumeric = isDigit(aStr.charCodeAt(ai));\n\t\tconst bIsNumeric = isDigit(bStr.charCodeAt(bi));\n\t\tconst aEnd = findChunkEnd(aStr, ai, aIsNumeric);\n\t\tconst bEnd = findChunkEnd(bStr, bi, bIsNumeric);\n\t\tif (!aIsNumeric && !bIsNumeric) {\n\t\t\tconst stringComparison = compareStringChunks(aStr, ai, aEnd, bStr, bi, bEnd);\n\t\t\tif (stringComparison) return stringComparison;\n\t\t\tai = aEnd;\n\t\t\tbi = bEnd;\n\t\t\tcontinue;\n\t\t}\n\t\tif (aIsNumeric !== bIsNumeric) return aIsNumeric ? 1 : -1;\n\t\tconst numericComparison = compareNumericChunks(aStr, ai, aEnd, bStr, bi, bEnd);\n\t\tif (numericComparison) return numericComparison;\n\t\tai = aEnd;\n\t\tbi = bEnd;\n\t}\n\treturn countRemainingChunks(aStr, ai) - countRemainingChunks(bStr, bi);\n}\nfunction isDigit(charCode) {\n\treturn charCode >= 48 && charCode <= 57;\n}\nfunction findChunkEnd(str, start, isNumeric) {\n\tlet end = start + 1;\n\twhile (end < str.length && isDigit(str.charCodeAt(end)) === isNumeric) end++;\n\treturn end;\n}\nfunction compareStringChunks(aStr, aStart, aEnd, bStr, bStart, bEnd) {\n\tconst aLength = aEnd - aStart;\n\tconst bLength = bEnd - bStart;\n\tconst minLength = aLength < bLength ? aLength : bLength;\n\tfor (let i = 0; i < minLength; i++) {\n\t\tconst aCode = aStr.charCodeAt(aStart + i);\n\t\tconst bCode = bStr.charCodeAt(bStart + i);\n\t\tif (aCode > bCode) return 1;\n\t\tif (bCode > aCode) return -1;\n\t}\n\tif (aLength > bLength) return 1;\n\tif (bLength > aLength) return -1;\n\treturn 0;\n}\nfunction compareNumericChunks(aStr, aStart, aEnd, bStr, bStart, bEnd) {\n\tlet aSignificantStart = aStart;\n\twhile (aSignificantStart < aEnd && aStr.charCodeAt(aSignificantStart) === 48) aSignificantStart++;\n\tlet bSignificantStart = bStart;\n\twhile (bSignificantStart < bEnd && bStr.charCodeAt(bSignificantStart) === 48) bSignificantStart++;\n\tconst aSignificantLength = aEnd - aSignificantStart;\n\tconst bSignificantLength = bEnd - bSignificantStart;\n\tif (aSignificantLength === 0 && bSignificantLength === 0) return 0;\n\tif (aSignificantLength <= 15 && bSignificantLength <= 15) {\n\t\tconst an = parseSmallInt(aStr, aSignificantStart, aEnd);\n\t\tconst bn = parseSmallInt(bStr, bSignificantStart, bEnd);\n\t\tif (an > bn) return 1;\n\t\tif (bn > an) return -1;\n\t\treturn 0;\n\t}\n\tconst an = parseInt(aStr.slice(aStart, aEnd), 10);\n\tconst bn = parseInt(bStr.slice(bStart, bEnd), 10);\n\tif (an > bn) return 1;\n\tif (bn > an) return -1;\n\treturn 0;\n}\nfunction parseSmallInt(str, start, end) {\n\tlet result = 0;\n\tfor (let i = start; i < end; i++) result = result * 10 + str.charCodeAt(i) - 48;\n\treturn result;\n}\nfunction countRemainingChunks(str, start) {\n\tlet count = 0;\n\tlet index = start;\n\twhile (index < str.length) {\n\t\tcount++;\n\t\tindex = findChunkEnd(str, index, isDigit(str.charCodeAt(index)));\n\t}\n\treturn count;\n}\n/**\n* The built-in sorting function registry.\n*\n* Registering this full object opts out of tree-shaking: every built-in\n* sorting function ends up in your bundle. Prefer importing the `sortFn_*`\n* functions you actually use and registering just those in the `sortFns`\n* slot, or passing them directly to the `sortFn` column option.\n*\n* @deprecated Import individual `sortFn_*` functions instead for a smaller\n* bundle. This export still works and is not going away in v9, but built-in\n* name resolution (including `sortFn: 'auto'`) only finds functions you\n* register yourself.\n*/\nconst sortFns = {\n\talphanumeric: sortFn_alphanumeric,\n\talphanumericCaseSensitive: sortFn_alphanumericCaseSensitive,\n\tbasic: sortFn_basic,\n\tdatetime: sortFn_datetime,\n\ttext: sortFn_text,\n\ttextCaseSensitive: sortFn_textCaseSensitive\n};\n\n//#endregion\nexport { constructSortFn, reSplitAlphaNumeric, sortFn_alphanumeric, sortFn_alphanumericCaseSensitive, sortFn_basic, sortFn_datetime, sortFn_text, sortFn_textCaseSensitive, sortFns };","import { cloneState, isFunction, setStateSlice } from \"../../utils.js\";\nimport { reSplitAlphaNumeric, sortFn_basic } from \"./sortFns.js\";\n\n//#region src/features/row-sorting/rowSortingFeature.utils.ts\n/**\n* Creates the default sorting state.\n*\n* The feature default is an empty array, meaning no columns are sorted. Reset\n* APIs use this value when `defaultState` is `true`.\n*\n* @example\n* ```ts\n* const sorting = getDefaultSortingState()\n* ```\n*/\nfunction getDefaultSortingState() {\n\treturn [];\n}\n/**\n* Routes a sorting updater through the table's sorting change handler.\n*\n* The updater may be a next `SortingState` array or a function of the previous\n* sorting state, matching the instance `table.setSorting` behavior. State\n* owners receive an equality-guarded updater so structurally equal sorting\n* values preserve the owner's existing reference.\n*\n* @example\n* ```ts\n* table_setSorting(table, (old) => [...old, { id: 'age', desc: true }])\n* ```\n*/\nfunction table_setSorting(table, updater) {\n\tsetStateSlice(table, \"sorting\", updater);\n}\n/**\n* Resets `sorting` to the configured initial state or feature default.\n*\n* With no argument, the reset clones `table.initialState.sorting` when it\n* exists. Passing `true` ignores initial state and resets to `[]`.\n*\n* @example\n* ```ts\n* table_resetSorting(table)\n* table_resetSorting(table, true)\n* ```\n*/\nfunction table_resetSorting(table, defaultState) {\n\ttable_setSorting(table, defaultState ? [] : cloneState(table.initialState.sorting ?? []));\n}\n/**\n* Resets sorting after the table data changes when explicitly enabled.\n*\n* Unlike other auto-reset behaviors, sorting is preserved by default. An\n* explicit `autoResetAll` value takes precedence over `autoResetSorting`.\n*\n* @example\n* ```ts\n* table_autoResetSorting(table)\n* ```\n*/\nfunction table_autoResetSorting(table) {\n\tif (!table.atoms.sorting) return;\n\tif (table.options.autoResetAll ?? table.options.autoResetSorting ?? false) table_resetSorting(table);\n}\n/**\n* Chooses a built-in sorting function from sampled filtered row values.\n*\n* Date-like values use `datetime`, mixed text/numeric strings use\n* `alphanumeric`, plain strings use `text`, and unknown values fall back to\n* `basic`.\n*\n* @example\n* ```ts\n* const sortFn = column_getAutoSortFn(column)\n* ```\n*/\nfunction column_getAutoSortFn(column) {\n\tconst sortFns = column.table._rowModelFns.sortFns;\n\tconst firstRows = column.table.getFilteredRowModel().flatRows.slice(0, 10);\n\tlet sortFnName;\n\tlet isString = false;\n\tfor (let i = 0; i < firstRows.length; i++) {\n\t\tconst value = firstRows[i].getValue(column.id);\n\t\tif (Object.prototype.toString.call(value) === \"[object Date]\") {\n\t\t\tsortFnName = \"datetime\";\n\t\t\tbreak;\n\t\t}\n\t\tif (typeof value === \"string\") {\n\t\t\tisString = true;\n\t\t\tif (value.split(reSplitAlphaNumeric).length > 1) {\n\t\t\t\tsortFnName = \"alphanumeric\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!sortFnName && isString) sortFnName = \"text\";\n\tif (sortFnName) {\n\t\tlet sortFn = sortFns?.[sortFnName];\n\t\tif (!sortFn) {\n\t\t\tif (process.env.NODE_ENV === \"development\") console.warn(`sortFn '${sortFnName}' (auto) for column '${column.id}' is not registered`);\n\t\t\tif (sortFnName === \"alphanumeric\") sortFn = sortFns?.text;\n\t\t}\n\t\tif (sortFn) return sortFn;\n\t}\n\treturn sortFn_basic;\n}\n/**\n* Chooses the default first sort direction from sampled filtered row values.\n*\n* The first non-nullish value among the sampled rows decides: string columns\n* start ascending so alphabetical order is natural; other value types (or\n* columns with no non-nullish sample) start descending. Sampling past leading\n* nullish values keeps the toggle cycle stable when sorting or a data swap\n* moves an empty value into the first row.\n*\n* @example\n* ```ts\n* const direction = column_getAutoSortDir(column)\n* ```\n*/\nfunction column_getAutoSortDir(column) {\n\tconst firstRows = column.table.getFilteredRowModel().flatRows.slice(0, 10);\n\tfor (let i = 0; i < firstRows.length; i++) {\n\t\tconst value = firstRows[i].getValue(column.id);\n\t\tif (value == null) continue;\n\t\treturn typeof value === \"string\" ? \"asc\" : \"desc\";\n\t}\n\treturn \"desc\";\n}\n/**\n* Resolves the sorting function configured for a column.\n*\n* Function-valued `columnDef.sortFn` is returned directly, `'auto'` delegates\n* to `column_getAutoSortFn`, and string values are looked up in the table's\n* sorting function registry before falling back to `basic`.\n*\n* @example\n* ```ts\n* const sortFn = column_getSortFn(column)\n* ```\n*/\nfunction column_getSortFn(column) {\n\tconst sortFns = column.table._rowModelFns.sortFns;\n\tif (isFunction(column.columnDef.sortFn)) return column.columnDef.sortFn;\n\tif (column.columnDef.sortFn === \"auto\") return column_getAutoSortFn(column);\n\tconst sortFn = sortFns?.[column.columnDef.sortFn];\n\tif (process.env.NODE_ENV === \"development\" && !sortFn) console.warn(`sortFn '${String(column.columnDef.sortFn)}' for column '${column.id}' is not registered`);\n\treturn sortFn ?? sortFn_basic;\n}\n/**\n* Applies the next sorting state for this column.\n*\n* The toggle can add, replace, flip, or remove this column's sort entry. Multi\n* sorting respects `enableMultiSort`, `enableMultiRemove`,\n* `maxMultiSortColCount`, and the `multi` argument.\n*\n* @example\n* ```ts\n* column_toggleSorting(column, undefined, true)\n* ```\n*/\nfunction column_toggleSorting(column, desc, multi) {\n\tconst nextSortingOrder = column_getNextSortingOrder(column, multi && column_getCanMultiSort(column));\n\tconst hasManualValue = typeof desc !== \"undefined\";\n\ttable_setSorting(column.table, (old) => {\n\t\tconst existingIndex = old.findIndex((d) => d.id === column.id);\n\t\tconst existingSorting = existingIndex === -1 ? void 0 : old[existingIndex];\n\t\tlet newSorting = [];\n\t\tlet sortAction;\n\t\tconst nextDesc = hasManualValue ? desc : nextSortingOrder === \"desc\";\n\t\tconst isMultiMode = !!(old.length && column_getCanMultiSort(column) && multi);\n\t\tif (isMultiMode) {\n\t\t\tif (existingSorting) sortAction = \"toggle\";\n\t\t\telse sortAction = \"add\";\n\t\t} else if (existingSorting) sortAction = \"toggle\";\n\t\telse sortAction = \"replace\";\n\t\tif (sortAction === \"toggle\") {\n\t\t\tif (!hasManualValue) {\n\t\t\t\tif (!nextSortingOrder) sortAction = \"remove\";\n\t\t\t}\n\t\t}\n\t\tif (sortAction === \"add\") {\n\t\t\tnewSorting = [...old, {\n\t\t\t\tid: column.id,\n\t\t\t\tdesc: nextDesc\n\t\t\t}];\n\t\t\tnewSorting.splice(0, newSorting.length - (column.table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER));\n\t\t} else if (sortAction === \"toggle\") newSorting = isMultiMode ? old.map((d) => {\n\t\t\tif (d.id === column.id) return {\n\t\t\t\t...d,\n\t\t\t\tdesc: nextDesc\n\t\t\t};\n\t\t\treturn d;\n\t\t}) : [{\n\t\t\tid: column.id,\n\t\t\tdesc: nextDesc\n\t\t}];\n\t\telse if (sortAction === \"remove\") newSorting = isMultiMode ? old.filter((d) => d.id !== column.id) : [];\n\t\telse newSorting = [{\n\t\t\tid: column.id,\n\t\t\tdesc: nextDesc\n\t\t}];\n\t\treturn newSorting;\n\t});\n}\n/**\n* Resolves the first direction used when this column begins sorting.\n*\n* Column-level `sortDescFirst` wins, then table-level `sortDescFirst`, then the\n* auto direction inferred from sampled values.\n*\n* @example\n* ```ts\n* const firstDirection = column_getFirstSortDir(column)\n* ```\n*/\nfunction column_getFirstSortDir(column) {\n\treturn column.columnDef.sortDescFirst ?? column.table.options.sortDescFirst ?? column_getAutoSortDir(column) === \"desc\" ? \"desc\" : \"asc\";\n}\n/**\n* Resolves the next sort order for this column's toggle cycle.\n*\n* The cycle starts with the first sort direction, flips between `asc` and\n* `desc`, and can return `false` when sorting removal is enabled.\n*\n* @example\n* ```ts\n* const nextOrder = column_getNextSortingOrder(column)\n* ```\n*/\nfunction column_getNextSortingOrder(column, multi) {\n\tconst firstSortDirection = column_getFirstSortDir(column);\n\tconst isSorted = column_getIsSorted(column);\n\tif (!isSorted) return firstSortDirection;\n\tif (isSorted !== firstSortDirection && (column.table.options.enableSortingRemoval ?? true) && (multi ? column.table.options.enableMultiRemove ?? true : true)) return false;\n\treturn isSorted === \"desc\" ? \"asc\" : \"desc\";\n}\n/**\n* Checks whether this accessor column can participate in sorting.\n*\n* The column must have an accessor and sorting must be enabled by both the\n* column definition and table options.\n*\n* @example\n* ```ts\n* const canSort = column_getCanSort(column)\n* ```\n*/\nfunction column_getCanSort(column) {\n\treturn (column.columnDef.enableSorting ?? true) && (column.table.options.enableSorting ?? true) && !!column.accessorFn;\n}\n/**\n* Checks whether this column can be added to a multi-sort state.\n*\n* Column-level `enableMultiSort` wins over table-level `enableMultiSort`; if\n* neither is set, accessor columns can multi-sort by default.\n*\n* @example\n* ```ts\n* const canMultiSort = column_getCanMultiSort(column)\n* ```\n*/\nfunction column_getCanMultiSort(column) {\n\treturn column.columnDef.enableMultiSort ?? column.table.options.enableMultiSort ?? !!column.accessorFn;\n}\n/**\n* Reads this column's current sort direction.\n*\n* The result is `false` when the column is not sorted, otherwise `'asc'` or\n* `'desc'` based on the column's entry in `state.sorting`.\n*\n* @example\n* ```ts\n* const direction = column_getIsSorted(column)\n* ```\n*/\nfunction column_getIsSorted(column) {\n\tconst columnSort = column.table.atoms.sorting?.get()?.find((d) => d.id === column.id);\n\treturn !columnSort ? false : columnSort.desc ? \"desc\" : \"asc\";\n}\n/**\n* Finds this column's position in the ordered `state.sorting` array.\n*\n* The result is `-1` when the column is not sorted.\n*\n* @example\n* ```ts\n* const index = column_getSortIndex(column)\n* ```\n*/\nfunction column_getSortIndex(column) {\n\treturn column.table.atoms.sorting?.get()?.findIndex((d) => d.id === column.id) ?? -1;\n}\n/**\n* Removes this column from the sorting state.\n*\n* Other sorted columns are preserved, including their relative order.\n*\n* @example\n* ```ts\n* column_clearSorting(column)\n* ```\n*/\nfunction column_clearSorting(column) {\n\ttable_setSorting(column.table, (old) => old.length ? old.filter((d) => d.id !== column.id) : []);\n}\n/**\n* Creates a header event handler that toggles this column's sorting.\n*\n* The handler ignores events when the column cannot sort, and asks\n* `options.isMultiSortEvent` whether the event should add to a multi-sort.\n*\n* @example\n* ```ts\n* const onClick = column_getToggleSortingHandler(column)\n* ```\n*/\nfunction column_getToggleSortingHandler(column) {\n\tconst canSort = column_getCanSort(column);\n\treturn (e) => {\n\t\tif (!canSort) return;\n\t\tcolumn_toggleSorting(column, void 0, column_getCanMultiSort(column) ? column.table.options.isMultiSortEvent?.(e) : false);\n\t};\n}\n\n//#endregion\nexport { column_clearSorting, column_getAutoSortDir, column_getAutoSortFn, column_getCanMultiSort, column_getCanSort, column_getFirstSortDir, column_getIsSorted, column_getNextSortingOrder, column_getSortFn, column_getSortIndex, column_getToggleSortingHandler, column_toggleSorting, getDefaultSortingState, table_autoResetSorting, table_resetSorting, table_setSorting };","import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from \"../../utils.js\";\nimport { column_clearSorting, column_getAutoSortDir, column_getAutoSortFn, column_getCanMultiSort, column_getCanSort, column_getFirstSortDir, column_getIsSorted, column_getNextSortingOrder, column_getSortFn, column_getSortIndex, column_getToggleSortingHandler, column_toggleSorting, getDefaultSortingState, table_autoResetSorting, table_resetSorting, table_setSorting } from \"./rowSortingFeature.utils.js\";\n\n//#region src/features/row-sorting/rowSortingFeature.ts\n/**\n* Feature that adds row sorting state, defaults, and column/table sorting APIs.\n*/\nconst rowSortingFeature = {\n\tgetInitialState(initialState) {\n\t\treturn {\n\t\t\tsorting: getDefaultSortingState(),\n\t\t\t...initialState\n\t\t};\n\t},\n\tgetDefaultColumnDef() {\n\t\treturn {\n\t\t\tsortFn: \"auto\",\n\t\t\tsortUndefined: 1\n\t\t};\n\t},\n\tgetDefaultTableOptions(table) {\n\t\treturn {\n\t\t\tautoResetSorting: false,\n\t\t\tonSortingChange: makeStateUpdater(\"sorting\", table),\n\t\t\tisMultiSortEvent: (e) => {\n\t\t\t\treturn e.shiftKey;\n\t\t\t}\n\t\t};\n\t},\n\tassignColumnPrototype(prototype, table) {\n\t\tassignPrototypeAPIs(\"rowSortingFeature\", prototype, table, {\n\t\t\tcolumn_getAutoSortFn: { fn: (column) => column_getAutoSortFn(column) },\n\t\t\tcolumn_getAutoSortDir: { fn: (column) => column_getAutoSortDir(column) },\n\t\t\tcolumn_getSortFn: { fn: (column) => column_getSortFn(column) },\n\t\t\tcolumn_toggleSorting: { fn: (column, desc, multi) => column_toggleSorting(column, desc, multi) },\n\t\t\tcolumn_getFirstSortDir: { fn: (column) => column_getFirstSortDir(column) },\n\t\t\tcolumn_getNextSortingOrder: { fn: (column, multi) => column_getNextSortingOrder(column, multi) },\n\t\t\tcolumn_getCanSort: { fn: (column) => column_getCanSort(column) },\n\t\t\tcolumn_getCanMultiSort: { fn: (column) => column_getCanMultiSort(column) },\n\t\t\tcolumn_getIsSorted: { fn: (column) => column_getIsSorted(column) },\n\t\t\tcolumn_getSortIndex: { fn: (column) => column_getSortIndex(column) },\n\t\t\tcolumn_clearSorting: { fn: (column) => column_clearSorting(column) },\n\t\t\tcolumn_getToggleSortingHandler: { fn: (column) => column_getToggleSortingHandler(column) }\n\t\t});\n\t},\n\tconstructTableAPIs(table) {\n\t\tassignTableAPIs(\"rowSortingFeature\", table, {\n\t\t\ttable_autoResetSorting: { fn: () => table_autoResetSorting(table) },\n\t\t\ttable_setSorting: { fn: (updater) => table_setSorting(table, updater) },\n\t\t\ttable_resetSorting: { fn: (defaultState) => table_resetSorting(table, defaultState) }\n\t\t});\n\t}\n};\n\n//#endregion\nexport { rowSortingFeature };","import { makeObjectMap } from \"../../utils.js\";\nimport { constructRow } from \"../../core/rows/constructRow.js\";\n\n//#region src/features/column-filtering/filterRowsUtils.ts\n/**\n* Filters a row model with the supplied row predicate.\n*\n* The helper supports both filtering from leaf rows upward and filtering parents before descendants, depending on table options.\n*/\nfunction filterRows(rows, filterRowImpl, table) {\n\tif (table.options.filterFromLeafRows) return filterRowModelFromLeafs(rows, filterRowImpl, table);\n\treturn filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n\tconst newFilteredFlatRows = [];\n\tconst newFilteredRowsById = makeObjectMap();\n\tconst maxDepth = table.options.maxLeafRowFilterDepth ?? 100;\n\tconst recurseFilterRows = (rowsToFilter, depth = 0) => {\n\t\tconst filteredRows = [];\n\t\tfor (const row of rowsToFilter) {\n\t\t\tconst newRow = constructRow(table, row.id, row.original, row.index, row.depth, void 0, row.parentId);\n\t\t\tnewRow.columnFilters = row.columnFilters;\n\t\t\tnewRow.columnFiltersMeta = row.columnFiltersMeta;\n\t\t\tif (row.subRows.length && depth < maxDepth) {\n\t\t\t\tnewRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n\t\t\t\tif (newRow.subRows.length || filterRow(newRow)) filteredRows.push(newRow);\n\t\t\t} else if (filterRow(newRow)) {\n\t\t\t\tnewRow.subRows = row.subRows;\n\t\t\t\tfilteredRows.push(newRow);\n\t\t\t}\n\t\t}\n\t\treturn filteredRows;\n\t};\n\tconst rows = recurseFilterRows(rowsToFilter);\n\taddSubRowsToFlatArrays(rows, newFilteredFlatRows, newFilteredRowsById);\n\treturn {\n\t\trows,\n\t\tflatRows: newFilteredFlatRows,\n\t\trowsById: newFilteredRowsById\n\t};\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n\tconst newFilteredFlatRows = [];\n\tconst newFilteredRowsById = makeObjectMap();\n\tconst maxDepth = table.options.maxLeafRowFilterDepth ?? 100;\n\tconst recurseFilterRows = (rowsToFilter, depth = 0) => {\n\t\tconst filteredRows = [];\n\t\tfor (const row of rowsToFilter) if (filterRow(row)) {\n\t\t\tif (row.subRows.length && depth < maxDepth) {\n\t\t\t\tconst newRow = constructRow(table, row.id, row.original, row.index, row.depth, void 0, row.parentId);\n\t\t\t\tconst filterData = row;\n\t\t\t\tnewRow.columnFilters = filterData.columnFilters;\n\t\t\t\tnewRow.columnFiltersMeta = filterData.columnFiltersMeta;\n\t\t\t\tfilteredRows.push(newRow);\n\t\t\t\tnewFilteredFlatRows.push(newRow);\n\t\t\t\tnewFilteredRowsById[newRow.id] = newRow;\n\t\t\t\tnewRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n\t\t\t} else {\n\t\t\t\tfilteredRows.push(row);\n\t\t\t\tnewFilteredFlatRows.push(row);\n\t\t\t\tnewFilteredRowsById[row.id] = row;\n\t\t\t\tif (row.subRows.length && depth >= maxDepth) addSubRowsToFlatArrays(row.subRows, newFilteredFlatRows, newFilteredRowsById);\n\t\t\t}\n\t\t}\n\t\treturn filteredRows;\n\t};\n\treturn {\n\t\trows: recurseFilterRows(rowsToFilter),\n\t\tflatRows: newFilteredFlatRows,\n\t\trowsById: newFilteredRowsById\n\t};\n}\nfunction addSubRowsToFlatArrays(subRows, flatRows, rowsById) {\n\tfor (const subRow of subRows) {\n\t\tflatRows.push(subRow);\n\t\trowsById[subRow.id] = subRow;\n\t\tif (subRow.subRows.length) addSubRowsToFlatArrays(subRow.subRows, flatRows, rowsById);\n\t}\n}\n\n//#endregion\nexport { filterRows };","import { tableMemo } from \"../../utils.js\";\nimport { filterRows } from \"../column-filtering/filterRowsUtils.js\";\n\n//#region src/features/column-faceting/createFacetedRowModel.ts\n/**\n* Creates a memoized faceted row model factory.\n*\n* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n*/\nfunction createFacetedRowModel() {\n\treturn (_table, columnId) => {\n\t\tconst table = _table;\n\t\treturn tableMemo({\n\t\t\tfeature: \"columnFacetingFeature\",\n\t\t\ttable,\n\t\t\tfnName: \"createFacetedRowModel\",\n\t\t\tmemoDeps: () => [\n\t\t\t\ttable.getPreFilteredRowModel(),\n\t\t\t\ttable.atoms.columnFilters?.get(),\n\t\t\t\ttable.atoms.globalFilter?.get(),\n\t\t\t\ttable.getFilteredRowModel()\n\t\t\t],\n\t\t\tfn: (preRowModel, columnFilters, globalFilter) => _createFacetedRowModel(table, columnId, preRowModel, columnFilters, globalFilter)\n\t\t});\n\t};\n}\nfunction _createFacetedRowModel(table, columnId, preRowModel, columnFilters, globalFilter) {\n\tconst hasGlobalFilter = globalFilter !== void 0 && globalFilter !== null && globalFilter !== \"\";\n\tif (!preRowModel.rows.length || !columnFilters?.length && !hasGlobalFilter) return preRowModel;\n\tconst filterableIds = [];\n\tif (columnFilters) for (let i = 0; i < columnFilters.length; i++) {\n\t\tconst id = columnFilters[i].id;\n\t\tif (id !== columnId) filterableIds.push(id);\n\t}\n\tif (hasGlobalFilter && columnId !== \"__global__\") filterableIds.push(\"__global__\");\n\tif (!filterableIds.length) return preRowModel;\n\tconst filterRowsImpl = (row) => {\n\t\tfor (let i = 0; i < filterableIds.length; i++) if (row.columnFilters?.[filterableIds[i]] === false) return false;\n\t\treturn true;\n\t};\n\treturn filterRows(preRowModel.rows, filterRowsImpl, table);\n}\n\n//#endregion\nexport { createFacetedRowModel };","import { callMemoOrStaticFn, tableMemo } from \"../../utils.js\";\nimport { getCanGlobalFilter } from \"../../core/featureStubs.js\";\nimport { column_getFacetedRowModel, table_getGlobalFacetedRowModel } from \"./columnFacetingFeature.utils.js\";\n\n//#region src/features/column-faceting/createFacetedUniqueValues.ts\n/**\n* Creates a memoized faceted unique values helper for faceted filtering.\n*\n* The returned function derives facet data from the table row model and relevant filter state so filter UIs can display available values.\n*/\nfunction createFacetedUniqueValues() {\n\treturn (_table, columnId) => {\n\t\tconst table = _table;\n\t\treturn tableMemo({\n\t\t\tfeature: \"columnFacetingFeature\",\n\t\t\ttable,\n\t\t\tfnName: \"table.getFacetedUniqueValues\",\n\t\t\tmemoDeps: () => {\n\t\t\t\tif (columnId === \"__global__\") return [callMemoOrStaticFn(table, \"getGlobalFacetedRowModel\", table_getGlobalFacetedRowModel).flatRows];\n\t\t\t\tconst column = table.getColumn(columnId);\n\t\t\t\tif (!column) return [table.getPreFilteredRowModel().flatRows];\n\t\t\t\treturn [callMemoOrStaticFn(column, \"getFacetedRowModel\", column_getFacetedRowModel, table).flatRows];\n\t\t\t},\n\t\t\tfn: (flatRows) => _createFacetedUniqueValues(table, columnId, flatRows)\n\t\t});\n\t};\n}\nfunction _createFacetedUniqueValues(table, columnId, flatRows) {\n\tconst columnIds = columnId === \"__global__\" ? table.getAllLeafColumns().filter((column) => getCanGlobalFilter(column)).map((column) => column.id) : [columnId];\n\tconst facetedUniqueValues = /* @__PURE__ */ new Map();\n\tfor (let i = 0; i < flatRows.length; i++) for (let c = 0; c < columnIds.length; c++) {\n\t\tconst values = flatRows[i].getUniqueValues(columnIds[c]);\n\t\tif (!values) continue;\n\t\tfor (let j = 0; j < values.length; j++) {\n\t\t\tconst value = values[j];\n\t\t\tconst previousValue = facetedUniqueValues.get(value);\n\t\t\tfacetedUniqueValues.set(value, previousValue === void 0 ? 1 : previousValue + 1);\n\t\t}\n\t}\n\treturn facetedUniqueValues;\n}\n\n//#endregion\nexport { createFacetedUniqueValues };","import { makeObjectMap, skipFirstRun, tableMemo } from \"../../utils.js\";\nimport { autoResetPageIndex, getCanGlobalFilter, getGlobalFilterFn } from \"../../core/featureStubs.js\";\nimport { table_getColumn } from \"../../core/columns/coreColumnsFeature.utils.js\";\nimport { column_getFilterFn } from \"./columnFilteringFeature.utils.js\";\nimport { filterRows } from \"./filterRowsUtils.js\";\n\n//#region src/features/column-filtering/createFilteredRowModel.ts\n/**\n* Creates a memoized filtered row model factory.\n*\n* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n*\n* Register the filter functions you use with the `filterFns` slot on the\n* `features` option:\n* `tableFeatures({ columnFilteringFeature, filteredRowModel: createFilteredRowModel(), filterFns: { includesString: filterFn_includesString } })`.\n* Importing individual `filterFn_*` functions keeps unused built-ins out of\n* your bundle; filter functions passed directly to the `filterFn` column\n* option need no registration at all.\n*/\nfunction createFilteredRowModel() {\n\treturn (_table) => {\n\t\tconst table = _table;\n\t\treturn tableMemo({\n\t\t\tfeature: \"columnFilteringFeature\",\n\t\t\ttable,\n\t\t\tfnName: \"table.getFilteredRowModel\",\n\t\t\tmemoDeps: () => [\n\t\t\t\ttable.getPreFilteredRowModel(),\n\t\t\t\ttable.atoms.columnFilters?.get(),\n\t\t\t\ttable.atoms.globalFilter?.get()\n\t\t\t],\n\t\t\tfn: () => _createFilteredRowModel(table),\n\t\t\tonAfterUpdate: skipFirstRun(() => autoResetPageIndex(table))\n\t\t});\n\t};\n}\nfunction _createFilteredRowModel(table) {\n\tconst rowModel = table.getPreFilteredRowModel();\n\tconst columnFilters = table.atoms.columnFilters?.get();\n\tconst globalFilter = table.atoms.globalFilter?.get();\n\tconst hasGlobalFilter = globalFilter !== void 0 && globalFilter !== null && globalFilter !== \"\";\n\tif (!rowModel.rows.length || !columnFilters?.length && !hasGlobalFilter) {\n\t\tconst flatRows = rowModel.flatRows;\n\t\tfor (let i = 0; i < flatRows.length; i++) {\n\t\t\tconst row = flatRows[i];\n\t\t\trow.columnFilters = makeObjectMap();\n\t\t\trow.columnFiltersMeta = makeObjectMap();\n\t\t}\n\t\treturn rowModel;\n\t}\n\tconst resolvedColumnFilters = [];\n\tconst resolvedGlobalFilters = [];\n\tcolumnFilters?.forEach((columnFilter) => {\n\t\tconst column = table_getColumn(table, columnFilter.id);\n\t\tif (!column) return;\n\t\tconst filterFn = column_getFilterFn(column);\n\t\tif (!filterFn) return;\n\t\tresolvedColumnFilters.push({\n\t\t\tid: columnFilter.id,\n\t\t\tfilterFn,\n\t\t\tresolvedValue: filterFn.resolveFilterValue?.(columnFilter.value) ?? columnFilter.value\n\t\t});\n\t});\n\tconst filterableIds = columnFilters?.map((d) => d.id) ?? [];\n\tif (hasGlobalFilter) {\n\t\tconst globalFilterFn = getGlobalFilterFn(table);\n\t\tconst globallyFilterableColumns = globalFilterFn ? table.getAllLeafColumns().filter(getCanGlobalFilter) : [];\n\t\tif (globalFilterFn && globallyFilterableColumns.length) {\n\t\t\tfilterableIds.push(\"__global__\");\n\t\t\tgloballyFilterableColumns.forEach((column) => {\n\t\t\t\tresolvedGlobalFilters.push({\n\t\t\t\t\tid: column.id,\n\t\t\t\t\tfilterFn: globalFilterFn,\n\t\t\t\t\tresolvedValue: globalFilterFn.resolveFilterValue?.(globalFilter) ?? globalFilter\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\tconst flatRows = rowModel.flatRows;\n\tfor (let i = 0; i < flatRows.length; i++) {\n\t\tconst row = flatRows[i];\n\t\trow.columnFilters = makeObjectMap();\n\t\trow.columnFiltersMeta = makeObjectMap();\n\t\tif (resolvedColumnFilters.length) for (let j = 0; j < resolvedColumnFilters.length; j++) {\n\t\t\tconst currentColumnFilter = resolvedColumnFilters[j];\n\t\t\tconst id = currentColumnFilter.id;\n\t\t\trow.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, (filterMeta) => {\n\t\t\t\tif (!row.columnFiltersMeta) row.columnFiltersMeta = makeObjectMap();\n\t\t\t\trow.columnFiltersMeta[id] = filterMeta;\n\t\t\t});\n\t\t}\n\t\tif (resolvedGlobalFilters.length) {\n\t\t\tfor (let j = 0; j < resolvedGlobalFilters.length; j++) {\n\t\t\t\tconst currentGlobalFilter = resolvedGlobalFilters[j];\n\t\t\t\tconst id = currentGlobalFilter.id;\n\t\t\t\tif (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, (filterMeta) => {\n\t\t\t\t\tif (!row.columnFiltersMeta) row.columnFiltersMeta = makeObjectMap();\n\t\t\t\t\trow.columnFiltersMeta[id] = filterMeta;\n\t\t\t\t})) {\n\t\t\t\t\trow.columnFilters.__global__ = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (row.columnFilters.__global__ !== true) row.columnFilters.__global__ = false;\n\t\t}\n\t}\n\tconst filterRowsImpl = (row) => {\n\t\tfor (let i = 0; i < filterableIds.length; i++) if (row.columnFilters[filterableIds[i]] === false) return false;\n\t\treturn true;\n\t};\n\treturn filterRows(rowModel.rows, filterRowsImpl, table);\n}\n\n//#endregion\nexport { createFilteredRowModel };","import { tableMemo } from \"../../utils.js\";\nimport { expandRowModel } from \"../../core/featureStubs.js\";\nimport { getDefaultPaginationState } from \"./rowPaginationFeature.utils.js\";\n\n//#region src/features/row-pagination/createPaginatedRowModel.ts\n/**\n* Creates a memoized paginated row model factory.\n*\n* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n*/\nfunction createPaginatedRowModel() {\n\treturn (_table) => {\n\t\tconst table = _table;\n\t\treturn tableMemo({\n\t\t\tfeature: \"rowPaginationFeature\",\n\t\t\ttable,\n\t\t\tfnName: \"table.getPaginatedRowModel\",\n\t\t\tmemoDeps: () => [\n\t\t\t\ttable.getPrePaginatedRowModel(),\n\t\t\t\ttable.atoms.pagination?.get(),\n\t\t\t\t!table.options.paginateExpandedRows ? table.atoms.expanded?.get() : void 0\n\t\t\t],\n\t\t\tfn: () => _createPaginatedRowModel(table)\n\t\t});\n\t};\n}\nfunction _createPaginatedRowModel(table) {\n\tconst prePaginatedRowModel = table.getPrePaginatedRowModel();\n\tconst pagination = table.atoms.pagination?.get();\n\tif (!prePaginatedRowModel.rows.length) return prePaginatedRowModel;\n\tconst { pageSize, pageIndex } = pagination ?? getDefaultPaginationState();\n\tconst { rows, flatRows, rowsById } = prePaginatedRowModel;\n\tlet paginatedRows = rows;\n\tif (pageSize !== Infinity || pageIndex !== 0) {\n\t\tconst pageStart = pageSize * pageIndex;\n\t\tconst pageEnd = pageStart + pageSize;\n\t\tpaginatedRows = rows.slice(pageStart, pageEnd);\n\t}\n\tlet paginatedRowModel;\n\tif (!table.options.paginateExpandedRows) paginatedRowModel = expandRowModel(table, {\n\t\trows: paginatedRows,\n\t\tflatRows,\n\t\trowsById\n\t});\n\telse paginatedRowModel = {\n\t\trows: paginatedRows,\n\t\tflatRows,\n\t\trowsById\n\t};\n\tpaginatedRowModel.flatRows = [];\n\tconst seenFlatRows = /* @__PURE__ */ new Set();\n\tconst handleRow = (row) => {\n\t\tif (seenFlatRows.has(row.id)) return;\n\t\tseenFlatRows.add(row.id);\n\t\tpaginatedRowModel.flatRows.push(row);\n\t\tif (row.subRows.length) row.subRows.forEach(handleRow);\n\t};\n\tpaginatedRowModel.rows.forEach(handleRow);\n\treturn paginatedRowModel;\n}\n\n//#endregion\nexport { createPaginatedRowModel };","import { copyInstancePropertiesWithoutMemos, skipFirstRun, tableMemo } from \"../../utils.js\";\nimport { autoResetPageIndex } from \"../../core/featureStubs.js\";\nimport { column_getCanSort, column_getSortFn } from \"./rowSortingFeature.utils.js\";\n\n//#region src/features/row-sorting/createSortedRowModel.ts\n/**\n* Creates a memoized sorted row model factory.\n*\n* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n*\n* Register the sorting functions you use with the `sortFns` slot on the\n* `features` option:\n* `tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns: { alphanumeric: sortFn_alphanumeric } })`.\n* Importing individual `sortFn_*` functions keeps unused built-ins out of\n* your bundle; sorting functions passed directly to the `sortFn` column\n* option need no registration at all.\n*/\nfunction createSortedRowModel() {\n\treturn (_table) => {\n\t\tconst table = _table;\n\t\treturn tableMemo({\n\t\t\tfeature: \"rowSortingFeature\",\n\t\t\ttable,\n\t\t\tfnName: \"table.getSortedRowModel\",\n\t\t\tmemoDeps: () => [table.atoms.sorting?.get(), table.getPreSortedRowModel()],\n\t\t\tfn: () => _createSortedRowModel(table),\n\t\t\tonAfterUpdate: skipFirstRun(() => autoResetPageIndex(table))\n\t\t});\n\t};\n}\nfunction _createSortedRowModel(table) {\n\tconst preSortedRowModel = table.getPreSortedRowModel();\n\tconst sorting = table.atoms.sorting?.get();\n\tif (!preSortedRowModel.rows.length || !sorting?.length) return preSortedRowModel;\n\tconst sortedFlatRows = [];\n\tconst availableSorting = sorting.filter((sort) => {\n\t\tconst column = table.getColumn(sort.id);\n\t\treturn column ? column_getCanSort(column) : false;\n\t});\n\tif (!availableSorting.length) return preSortedRowModel;\n\tconst resolvedSorting = [];\n\tfor (let i = 0; i < availableSorting.length; i++) {\n\t\tconst sortEntry = availableSorting[i];\n\t\tconst column = table.getColumn(sortEntry.id);\n\t\tif (!column) continue;\n\t\tresolvedSorting.push({\n\t\t\tid: sortEntry.id,\n\t\t\tdesc: sortEntry.desc,\n\t\t\tsortUndefined: column.columnDef.sortUndefined,\n\t\t\tinvertSorting: column.columnDef.invertSorting,\n\t\t\tsortFn: column_getSortFn(column)\n\t\t});\n\t}\n\tconst compareRows = (rowA, rowB) => {\n\t\tfor (let i = 0; i < resolvedSorting.length; i++) {\n\t\t\tconst sortEntry = resolvedSorting[i];\n\t\t\tconst sortUndefined = sortEntry.sortUndefined;\n\t\t\tconst isDesc = sortEntry.desc;\n\t\t\tlet sortInt = 0;\n\t\t\tif (sortUndefined) {\n\t\t\t\tconst aValue = rowA.getValue(sortEntry.id);\n\t\t\t\tconst bValue = rowB.getValue(sortEntry.id);\n\t\t\t\tconst aUndefined = aValue === void 0;\n\t\t\t\tconst bUndefined = bValue === void 0;\n\t\t\t\tif (aUndefined && bUndefined) continue;\n\t\t\t\tif (aUndefined || bUndefined) {\n\t\t\t\t\tif (sortUndefined === \"first\") return aUndefined ? -1 : 1;\n\t\t\t\t\tif (sortUndefined === \"last\") return aUndefined ? 1 : -1;\n\t\t\t\t\tsortInt = aUndefined ? sortUndefined : -sortUndefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (sortInt === 0) sortInt = sortEntry.sortFn(rowA, rowB, sortEntry.id);\n\t\t\tif (sortInt !== 0) {\n\t\t\t\tif (isDesc) sortInt *= -1;\n\t\t\t\tif (sortEntry.invertSorting) sortInt *= -1;\n\t\t\t\treturn sortInt;\n\t\t\t}\n\t\t}\n\t\treturn rowA.index - rowB.index;\n\t};\n\tconst sortData = (rows) => {\n\t\tconst sortedData = rows.slice();\n\t\tsortedData.sort(compareRows);\n\t\tlet changed = false;\n\t\tfor (let i = 0; i < sortedData.length; i++) {\n\t\t\tconst row = sortedData[i];\n\t\t\tif (row !== rows[i]) changed = true;\n\t\t\tconst flatIndex = sortedFlatRows.length;\n\t\t\tsortedFlatRows.push(row);\n\t\t\tif (row.subRows.length) {\n\t\t\t\tconst sortedSubRows = sortData(row.subRows);\n\t\t\t\tif (sortedSubRows.changed) {\n\t\t\t\t\tconst cloned = Object.create(Object.getPrototypeOf(row));\n\t\t\t\t\tcopyInstancePropertiesWithoutMemos(cloned, row);\n\t\t\t\t\tcloned.subRows = sortedSubRows.rows;\n\t\t\t\t\tsortedData[i] = cloned;\n\t\t\t\t\tsortedFlatRows[flatIndex] = cloned;\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\trows: sortedData,\n\t\t\tchanged\n\t\t};\n\t};\n\treturn {\n\t\trows: sortData(preSortedRowModel.rows).rows,\n\t\tflatRows: sortedFlatRows,\n\t\trowsById: preSortedRowModel.rowsById\n\t};\n}\n\n//#endregion\nexport { createSortedRowModel };","'use client';\n\nimport { FlexRender } from \"./FlexRender.js\";\nimport { Subscribe } from \"./Subscribe.js\";\nimport { reactReactivity } from \"./reactivity.js\";\nimport { constructTable } from \"@tanstack/table-core\";\nimport { useEffect, useLayoutEffect, useMemo, useState } from \"react\";\nimport { shallow, useSelector } from \"@tanstack/react-store\";\nimport { createRenderPhaseSource } from \"@tanstack/table-core/reactivity\";\nimport { table_publishExternalState, table_setOptions } from \"@tanstack/table-core/static-functions\";\n\n//#region src/useTable.ts\nconst useIsomorphicLayoutEffect = typeof window === \"undefined\" ? useEffect : useLayoutEffect;\n/**\n* Creates a React table instance backed by TanStack Store atoms.\n*\n* The optional selector projects from `table.store`; the selected value is\n* exposed on `table.state` and compared shallowly for React re-renders. Omit\n* the selector to subscribe to every registered table state slice, or pass a\n* narrower selector and use `table.Subscribe` lower in the tree for targeted\n* subscriptions.\n*\n* @example\n* ```tsx\n* const table = useTable(\n* {\n* features,\n* columns,\n* data,\n* },\n* (state) => ({ pagination: state.pagination }),\n* )\n*\n* table.state.pagination\n* ```\n*/\nfunction useTable(tableOptions, selector) {\n\tconst [{ table, rootSource }] = useState(() => {\n\t\tconst tableInstance = constructTable({\n\t\t\t...tableOptions,\n\t\t\tfeatures: {\n\t\t\t\tcoreReactivityFeature: reactReactivity(),\n\t\t\t\t...tableOptions.features\n\t\t\t}\n\t\t});\n\t\ttableInstance.Subscribe = ((props) => {\n\t\t\treturn Subscribe({\n\t\t\t\t...props,\n\t\t\t\tsource: props.source ?? tableInstance.store\n\t\t\t});\n\t\t});\n\t\ttableInstance.FlexRender = FlexRender;\n\t\treturn {\n\t\t\ttable: tableInstance,\n\t\t\trootSource: createRenderPhaseSource(tableInstance.store, shallow)\n\t\t};\n\t});\n\tconst coreTable = table;\n\ttable_setOptions(coreTable, (prev) => ({\n\t\t...prev,\n\t\t...tableOptions\n\t}), { syncExternalState: false });\n\tconst controlledState = coreTable.options.state;\n\tconst renderSnapshot = rootSource.get();\n\tconst state = useSelector(rootSource, selector, { compare: shallow });\n\tuseIsomorphicLayoutEffect(() => {\n\t\trootSource.markCommitted(renderSnapshot);\n\t\ttable_publishExternalState(coreTable, controlledState ?? null, shallow);\n\t});\n\treturn useMemo(() => ({\n\t\t...table,\n\t\toptions: tableOptions,\n\t\tstate\n\t}), [\n\t\ttable,\n\t\ttableOptions,\n\t\tstate\n\t]);\n}\n\n//#endregion\nexport { useTable };","'use client';\n\nimport { FlexRender } from \"./FlexRender.js\";\nimport { useTable } from \"./useTable.js\";\nimport { createColumnHelper } from \"@tanstack/table-core\";\nimport React, { createContext, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from \"react\";\n\n//#region src/createTableHook.tsx\nconst useIsomorphicLayoutEffect = typeof window === \"undefined\" ? useEffect : useLayoutEffect;\nconst sharedTableContext = createContext(null);\nconst sharedCellContext = createContext(null);\nconst sharedHeaderContext = createContext(null);\n/**\n* Creates a custom table hook with pre-bound components for composition.\n*\n* This is the table equivalent of TanStack Form's `createFormHook`. It allows you to:\n* - Define features, row models, and default options once, shared across all tables\n* - Register reusable table, cell, and header components\n* - Access table/cell/header instances via context in those components\n* - Get a `useAppTable` hook that returns an extended table with App wrapper components\n* - Get a `createAppColumnHelper` function pre-bound to your features\n*\n* @example\n* ```tsx\n* // hooks/table.ts\n* export const {\n* useAppTable,\n* createAppColumnHelper,\n* useTableContext,\n* useCellContext,\n* useHeaderContext,\n* } = createTableHook({\n* features: tableFeatures({\n* rowPaginationFeature,\n* rowSortingFeature,\n* columnFilteringFeature,\n* paginatedRowModel: createPaginatedRowModel(),\n* sortedRowModel: createSortedRowModel(),\n* filteredRowModel: createFilteredRowModel(),\n* sortFns,\n* filterFns,\n* }),\n* tableComponents: { PaginationControls, RowCount },\n* cellComponents: { TextCell, NumberCell },\n* headerComponents: { SortIndicator, ColumnFilter },\n* })\n*\n* // Create column helper with TFeatures already bound\n* const columnHelper = createAppColumnHelper<Person>()\n*\n* // components/table-components.tsx\n* function PaginationControls() {\n* const table = useTableContext() // TFeatures already known!\n* return <table.Subscribe selector={(s) => s.pagination}>...</table.Subscribe>\n* }\n*\n* // features/users.tsx\n* function UsersTable({ data }: { data: Person[] }) {\n* const table = useAppTable({\n* columns,\n* data, // TData inferred from Person[]\n* })\n*\n* return (\n* <table.AppTable>\n* <table>\n* <thead>\n* {table.getHeaderGroups().map(headerGroup => (\n* <tr key={headerGroup.id}>\n* {headerGroup.headers.map(h => (\n* <table.AppHeader header={h} key={h.id}>\n* {(header) => (\n* <th>\n* <table.FlexRender header={h} />\n* <header.SortIndicator />\n* </th>\n* )}\n* </table.AppHeader>\n* ))}\n* </tr>\n* ))}\n* </thead>\n* <tbody>\n* {table.getRowModel().rows.map(row => (\n* <tr key={row.id}>\n* {row.getAllCells().map(c => (\n* <table.AppCell cell={c} key={c.id}>\n* {(cell) => <td><cell.TextCell /></td>}\n* </table.AppCell>\n* ))}\n* </tr>\n* ))}\n* </tbody>\n* </table>\n* <table.PaginationControls />\n* </table.AppTable>\n* )\n* }\n* ```\n*/\nfunction createTableHook({ tableComponents, cellComponents, headerComponents, tableContext = sharedTableContext, cellContext = sharedCellContext, headerContext = sharedHeaderContext, ...defaultTableOptions }) {\n\tconst TableContext = tableContext;\n\tconst CellContext = cellContext;\n\tconst HeaderContext = headerContext;\n\t/**\n\t* Create a column helper pre-bound to the features and components configured in this table hook.\n\t* The cell, header, and footer contexts include pre-bound components (e.g., `cell.TextCell`).\n\t* @example\n\t* ```tsx\n\t* const columnHelper = createAppColumnHelper<Person>()\n\t*\n\t* const columns = [\n\t* columnHelper.accessor('firstName', {\n\t* header: 'First Name',\n\t* cell: ({ cell }) => <cell.TextCell />, // cell has pre-bound components!\n\t* }),\n\t* columnHelper.accessor('age', {\n\t* header: 'Age',\n\t* cell: ({ cell }) => <cell.NumberCell />,\n\t* }),\n\t* ]\n\t* ```\n\t*/\n\tfunction createAppColumnHelper() {\n\t\treturn createColumnHelper();\n\t}\n\t/**\n\t* Access the table instance from within an `AppTable` wrapper.\n\t* Use this in custom `tableComponents` passed to `createTableHook`.\n\t* TFeatures is already known from the createTableHook call.\n\t*\n\t* @example\n\t* ```tsx\n\t* function PaginationControls() {\n\t* const table = useTableContext()\n\t* return (\n\t* <table.Subscribe selector={(s) => s.pagination}>\n\t* {(pagination) => (\n\t* <div>\n\t* <button onClick={() => table.previousPage()}>Prev</button>\n\t* <span>Page {pagination.pageIndex + 1}</span>\n\t* <button onClick={() => table.nextPage()}>Next</button>\n\t* </div>\n\t* )}\n\t* </table.Subscribe>\n\t* )\n\t* }\n\t* ```\n\t*/\n\tfunction useTableContext() {\n\t\tconst table = useContext(TableContext);\n\t\tif (!table) throw new Error(\"`useTableContext` must be used within an `AppTable` component. Make sure your component is wrapped with `<table.AppTable>...</table.AppTable>`.\");\n\t\treturn table;\n\t}\n\t/**\n\t* Access the cell instance from within an `AppCell` wrapper.\n\t* Use this in custom `cellComponents` passed to `createTableHook`.\n\t* TFeatures is already known from the createTableHook call.\n\t*\n\t* @example\n\t* ```tsx\n\t* function TextCell() {\n\t* const cell = useCellContext<string>()\n\t* return <span>{cell.getValue()}</span>\n\t* }\n\t*\n\t* function NumberCell({ format }: { format?: Intl.NumberFormatOptions }) {\n\t* const cell = useCellContext<number>()\n\t* return <span>{cell.getValue().toLocaleString(undefined, format)}</span>\n\t* }\n\t* ```\n\t*/\n\tfunction useCellContext() {\n\t\tconst cell = useContext(CellContext);\n\t\tif (!cell) throw new Error(\"`useCellContext` must be used within an `AppCell` component. Make sure your component is wrapped with `<table.AppCell cell={cell}>...</table.AppCell>`.\");\n\t\treturn cell;\n\t}\n\t/**\n\t* Access the header instance from within an `AppHeader` or `AppFooter` wrapper.\n\t* Use this in custom `headerComponents` passed to `createTableHook`.\n\t* TFeatures is already known from the createTableHook call.\n\t*\n\t* @example\n\t* ```tsx\n\t* function SortIndicator() {\n\t* const header = useHeaderContext()\n\t* const sorted = header.column.getIsSorted()\n\t* return sorted === 'asc' ? '🔼' : sorted === 'desc' ? '🔽' : null\n\t* }\n\t*\n\t* function ColumnFilter() {\n\t* const header = useHeaderContext()\n\t* if (!header.column.getCanFilter()) return null\n\t* return (\n\t* <input\n\t* value={(header.column.getFilterValue() ?? '') as string}\n\t* onChange={(e) => header.column.setFilterValue(e.target.value)}\n\t* placeholder=\"Filter...\"\n\t* />\n\t* )\n\t* }\n\t* ```\n\t*/\n\tfunction useHeaderContext() {\n\t\tconst header = useContext(HeaderContext);\n\t\tif (!header) throw new Error(\"`useHeaderContext` must be used within an `AppHeader` or `AppFooter` component.\");\n\t\treturn header;\n\t}\n\t/**\n\t* Context-aware FlexRender component for cells.\n\t* Uses the cell from context, so no need to pass cell prop.\n\t*/\n\tfunction CellFlexRender() {\n\t\tconst cell = useCellContext();\n\t\treturn /* @__PURE__ */ React.createElement(FlexRender, { cell });\n\t}\n\t/**\n\t* Context-aware FlexRender component for headers.\n\t* Uses the header from context, so no need to pass header prop.\n\t*/\n\tfunction HeaderFlexRender() {\n\t\tconst header = useHeaderContext();\n\t\treturn /* @__PURE__ */ React.createElement(FlexRender, { header });\n\t}\n\t/**\n\t* Context-aware FlexRender component for footers.\n\t* Uses the header from context, so no need to pass footer prop.\n\t*/\n\tfunction FooterFlexRender() {\n\t\tconst header = useHeaderContext();\n\t\treturn /* @__PURE__ */ React.createElement(FlexRender, { footer: header });\n\t}\n\t/**\n\t* Enhanced useTable hook that returns a table with App wrapper components\n\t* and pre-bound tableComponents attached directly to the table object.\n\t*\n\t* Default options from createTableHook are automatically merged with\n\t* the options passed here. Options passed here take precedence.\n\t*\n\t* TFeatures is already known from the createTableHook call; TData is inferred from the data prop.\n\t*/\n\tfunction useAppTable(tableOptions, selector) {\n\t\tconst mergedTableOptions = useMemo(() => ({\n\t\t\t...defaultTableOptions,\n\t\t\t...tableOptions\n\t\t}), [tableOptions]);\n\t\tconst table = useTable(mergedTableOptions, selector);\n\t\tconst tableRef = useRef(table);\n\t\ttableRef.current = table;\n\t\tconst [tableListeners] = useState(() => /* @__PURE__ */ new Set());\n\t\tconst [subscribeToTable] = useState(() => (listener) => {\n\t\t\ttableListeners.add(listener);\n\t\t\treturn () => {\n\t\t\t\ttableListeners.delete(listener);\n\t\t\t};\n\t\t});\n\t\tuseIsomorphicLayoutEffect(() => {\n\t\t\ttableListeners.forEach((listener) => listener());\n\t\t}, [table]);\n\t\tconst AppTable = useMemo(() => {\n\t\t\tfunction AppTableImpl(props) {\n\t\t\t\tconst { children, selector: appTableSelector } = props;\n\t\t\t\tconst getTable = () => tableRef.current;\n\t\t\t\tconst currentTable = useSyncExternalStore(subscribeToTable, getTable, getTable);\n\t\t\t\treturn /* @__PURE__ */ React.createElement(TableContext.Provider, { value: currentTable }, appTableSelector ? /* @__PURE__ */ React.createElement(currentTable.Subscribe, { selector: appTableSelector }, (state) => children(state)) : children);\n\t\t\t}\n\t\t\treturn AppTableImpl;\n\t\t}, [subscribeToTable]);\n\t\tconst AppCell = useMemo(() => {\n\t\t\tfunction AppCellImpl(props) {\n\t\t\t\tconst { cell, children, selector: appCellSelector } = props;\n\t\t\t\tconst currentTable = tableRef.current;\n\t\t\t\tconst extendedCell = Object.assign(cell, {\n\t\t\t\t\tFlexRender: CellFlexRender,\n\t\t\t\t\t...cellComponents\n\t\t\t\t});\n\t\t\t\treturn /* @__PURE__ */ React.createElement(CellContext.Provider, { value: cell }, appCellSelector ? /* @__PURE__ */ React.createElement(currentTable.Subscribe, { selector: appCellSelector }, (state) => children(extendedCell, state)) : children(extendedCell));\n\t\t\t}\n\t\t\treturn AppCellImpl;\n\t\t}, []);\n\t\tconst AppHeader = useMemo(() => {\n\t\t\tfunction AppHeaderImpl(props) {\n\t\t\t\tconst { header, children, selector: appHeaderSelector } = props;\n\t\t\t\tconst currentTable = tableRef.current;\n\t\t\t\tconst extendedHeader = Object.assign(header, {\n\t\t\t\t\tFlexRender: HeaderFlexRender,\n\t\t\t\t\t...headerComponents\n\t\t\t\t});\n\t\t\t\treturn /* @__PURE__ */ React.createElement(HeaderContext.Provider, { value: header }, appHeaderSelector ? /* @__PURE__ */ React.createElement(currentTable.Subscribe, { selector: appHeaderSelector }, (state) => children(extendedHeader, state)) : children(extendedHeader));\n\t\t\t}\n\t\t\treturn AppHeaderImpl;\n\t\t}, []);\n\t\tconst AppFooter = useMemo(() => {\n\t\t\tfunction AppFooterImpl(props) {\n\t\t\t\tconst { header, children, selector: appFooterSelector } = props;\n\t\t\t\tconst currentTable = tableRef.current;\n\t\t\t\tconst extendedHeader = Object.assign(header, {\n\t\t\t\t\tFlexRender: FooterFlexRender,\n\t\t\t\t\t...headerComponents\n\t\t\t\t});\n\t\t\t\treturn /* @__PURE__ */ React.createElement(HeaderContext.Provider, { value: header }, appFooterSelector ? /* @__PURE__ */ React.createElement(currentTable.Subscribe, { selector: appFooterSelector }, (state) => children(extendedHeader, state)) : children(extendedHeader));\n\t\t\t}\n\t\t\treturn AppFooterImpl;\n\t\t}, []);\n\t\treturn useMemo(() => {\n\t\t\treturn Object.assign(table, {\n\t\t\t\tAppTable,\n\t\t\t\tAppCell,\n\t\t\t\tAppHeader,\n\t\t\t\tAppFooter,\n\t\t\t\t...tableComponents\n\t\t\t});\n\t\t}, [\n\t\t\ttable,\n\t\t\tAppTable,\n\t\t\tAppCell,\n\t\t\tAppHeader,\n\t\t\tAppFooter\n\t\t]);\n\t}\n\treturn {\n\t\tappFeatures: defaultTableOptions.features,\n\t\tcreateAppColumnHelper,\n\t\tuseAppTable,\n\t\tuseTableContext,\n\t\tuseCellContext,\n\t\tuseHeaderContext\n\t};\n}\n\n//#endregion\nexport { createTableHook };","'use client';\n\nimport { createContext, useContext } from \"react\";\n\n//#region src/createTableHookContexts.tsx\n/**\n* Creates a fresh, scoped set of table/cell/header contexts (plus matching\n* context hooks) that you can pass into {@link createTableHook}. This mirrors\n* TanStack Form's `createFormHookContexts`.\n*\n* You usually do NOT need this: by default `createTableHook` wires its\n* `AppTable`/`AppCell`/`AppHeader` providers to a shared module-scoped context,\n* and you read it with the `useTableContext`/`useCellContext`/`useHeaderContext`\n* hooks returned from `createTableHook`. Reach for `createTableHookContexts`\n* when you need an *isolated* context, e.g. when nesting one table inside\n* another and a consumer would otherwise read the wrong (nearest) provider.\n*\n* Type-safety note: the hooks returned here are typed with `TFeatures` only.\n* They do NOT know the component maps you register in `createTableHook`\n* (`tableComponents`/`cellComponents`/`headerComponents`), because those are\n* defined later. For the richest types (the `App*` components and your\n* registered components attached), prefer the `use*Context` hooks returned from\n* your `createTableHook` call. The hooks here are the escape hatch for reading\n* context from a module that does not / cannot import the `createTableHook`\n* result.\n*\n* @example\n* ```tsx\n* // scoped-table-context.ts\n* export const {\n* tableContext,\n* cellContext,\n* headerContext,\n* useTableContext,\n* useCellContext,\n* useHeaderContext,\n* } = createTableHookContexts<typeof features>()\n*\n* // table.ts\n* export const { useAppTable } = createTableHook({\n* features,\n* tableContext, // <- pass the scoped contexts so the providers use them\n* cellContext,\n* headerContext,\n* tableComponents: { PaginationControls },\n* })\n* ```\n*/\nfunction createTableHookContexts() {\n\tconst tableContext = createContext(null);\n\tconst cellContext = createContext(null);\n\tconst headerContext = createContext(null);\n\t/**\n\t* Access the table instance from within an `AppTable` wrapper bound to these\n\t* scoped contexts. `TFeatures` is known; the registered component maps are not\n\t* (see {@link createTableHookContexts}).\n\t*/\n\tfunction useTableContext() {\n\t\tconst table = useContext(tableContext);\n\t\tif (!table) throw new Error(\"`useTableContext` must be used within an `AppTable` component. Make sure your component is wrapped with `<table.AppTable>...</table.AppTable>`.\");\n\t\treturn table;\n\t}\n\t/**\n\t* Access the cell instance from within an `AppCell` wrapper bound to these\n\t* scoped contexts.\n\t*/\n\tfunction useCellContext() {\n\t\tconst cell = useContext(cellContext);\n\t\tif (!cell) throw new Error(\"`useCellContext` must be used within an `AppCell` component. Make sure your component is wrapped with `<table.AppCell cell={cell}>...</table.AppCell>`.\");\n\t\treturn cell;\n\t}\n\t/**\n\t* Access the header instance from within an `AppHeader` or `AppFooter` wrapper\n\t* bound to these scoped contexts.\n\t*/\n\tfunction useHeaderContext() {\n\t\tconst header = useContext(headerContext);\n\t\tif (!header) throw new Error(\"`useHeaderContext` must be used within an `AppHeader` or `AppFooter` component.\");\n\t\treturn header;\n\t}\n\treturn {\n\t\ttableContext,\n\t\tcellContext,\n\t\theaderContext,\n\t\tuseTableContext,\n\t\tuseCellContext,\n\t\tuseHeaderContext\n\t};\n}\n\n//#endregion\nexport { createTableHookContexts };","import {\n assignPrototypeAPIs,\n assignTableAPIs,\n functionalUpdate,\n makeStateUpdater,\n} from '@tanstack/react-table'\nimport type {\n Row,\n RowData,\n Table,\n TableFeature,\n TableFeatures,\n Updater,\n} from '@tanstack/react-table'\n\nimport type { RowLockedState, RowVisibilityState } from './layer-tree.types'\n\n/**\n * Base constraint for tree node data types used by layer tree utilities.\n */\ninterface LayerTreeNodeBase {\n id: string\n children?: this[]\n}\n\ntype LayerTreeTable = Table<TableFeatures, RowData>\ntype LayerTreeRow = Row<TableFeatures, RowData>\n\n/**\n * Recursively searches for a node by ID in a nested tree structure.\n *\n * @param nodes - The array of nodes to search through\n * @param nodeId - The ID of the node to find\n * @returns The matching node or `null` if not found\n *\n * @example\n * ```ts\n * const node = findLayerTreeNode(layers, 'layer-001')\n * if (node) console.log(node.name)\n * ```\n */\nconst findLayerTreeNode = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n nodeId: string,\n ): TData | null => {\n for (const node of nodes) {\n if (node.id === nodeId) {\n return node\n }\n if (node.children?.length) {\n const match = findLayerTreeNode(node.children, nodeId)\n if (match) {\n return match\n }\n }\n }\n // oxlint-disable-next-line unicorn/no-null\n return null\n },\n /**\n * Removes a node from a nested tree structure by ID.\n *\n * @param nodes - The array of nodes to remove from\n * @param nodeId - The ID of the node to remove\n * @returns An object containing the updated tree and the removed node (if found)\n *\n * @example\n * ```ts\n * const { nextNodes, removedNode } = removeLayerTreeNode(layers, 'layer-001')\n * if (removedNode) setLayers(nextNodes)\n * ```\n */\n removeLayerTreeNode = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n nodeId: string,\n ): { nextNodes: TData[]; removedNode: TData | null } => {\n // oxlint-disable-next-line unicorn/no-null\n let removedNode: TData | null = null\n\n const nextNodes = nodes.flatMap((node) => {\n if (node.id === nodeId) {\n removedNode = node\n return []\n }\n if (!node.children?.length) {\n return [node]\n }\n\n const { nextNodes: nextChildren, removedNode: nestedRemovedNode } = removeLayerTreeNode(\n node.children,\n nodeId,\n )\n if (!nestedRemovedNode) {\n return [node]\n }\n\n removedNode = nestedRemovedNode\n return [{ ...node, children: nextChildren }]\n })\n\n return { nextNodes, removedNode }\n },\n /**\n * Inserts a node as a child of the specified folder node.\n *\n * @param nodes - The array of nodes to search through\n * @param folderId - The ID of the folder to insert into\n * @param nodeToInsert - The node to insert\n * @returns A new tree with the node inserted\n *\n * @example\n * ```ts\n * const newTree = insertLayerTreeNode(layers, 'folder-001', newLayer)\n * setLayers(newTree)\n * ```\n */\n insertLayerTreeNode = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n folderId: string,\n nodeToInsert: TData,\n ): TData[] =>\n nodes.map((node) => {\n if (node.id === folderId) {\n return { ...node, children: [...(node.children ?? []), nodeToInsert] }\n }\n if (!node.children?.length) {\n return node\n }\n return {\n ...node,\n children: insertLayerTreeNode(node.children, folderId, nodeToInsert),\n }\n }),\n containsLayerTreeNode = (nodes: LayerTreeNodeBase[], nodeId: string) =>\n Boolean(findLayerTreeNode(nodes, nodeId)),\n moveNodeIntoFolder = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n sourceId: string,\n targetId: string,\n ): TData[] => {\n const { nextNodes, removedNode } = removeLayerTreeNode(nodes, sourceId)\n if (!removedNode) {\n return nodes\n }\n return insertLayerTreeNode(nextNodes, targetId, removedNode)\n },\n /**\n * Moves a node from its current position into a target folder.\n * Prevents circular references by checking if target is a descendant of source.\n *\n * @param nodes - The array of nodes\n * @param sourceId - The ID of the node to move\n * @param targetId - The ID of the folder to move into\n * @returns A new tree with the node moved, or the original tree if the move is invalid\n *\n * @example\n * ```ts\n * const newTree = moveLayerTreeNode(layers, 'layer-001', 'folder-002')\n * setLayers(newTree)\n * ```\n */\n moveLayerTreeNode = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n sourceId: string,\n targetId: string,\n ): TData[] => {\n if (sourceId === targetId) {\n return nodes\n }\n\n const sourceNode = findLayerTreeNode(nodes, sourceId),\n targetNode = findLayerTreeNode(nodes, targetId)\n\n // Target must exist and be a folder (have children array)\n if (!sourceNode || !targetNode?.children) {\n return nodes\n }\n // Prevent circular reference: can't move into own descendant\n if (containsLayerTreeNode(sourceNode.children ?? [], targetId)) {\n return nodes\n }\n\n return moveNodeIntoFolder(nodes, sourceId, targetId)\n },\n /**\n * Moves a node to the root level of the tree.\n *\n * @param nodes - The array of nodes\n * @param sourceId - The ID of the node to move\n * @returns A new tree with the node at root level\n *\n * @example\n * ```ts\n * const newTree = moveLayerTreeNodeToRoot(layers, 'layer-001')\n * setLayers(newTree)\n * ```\n */\n moveLayerTreeNodeToRoot = <TData extends LayerTreeNodeBase>(\n nodes: TData[],\n sourceId: string,\n ): TData[] => {\n const { nextNodes, removedNode } = removeLayerTreeNode(nodes, sourceId)\n if (!removedNode) {\n return nodes\n }\n return [...nextNodes, removedNode]\n },\n rowVisibilityFeature: TableFeature = {\n assignRowPrototype: (prototype, table) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const layerTable = table as unknown as LayerTreeTable\n assignPrototypeAPIs('rowVisibilityFeature', prototype, table, {\n row_getIsVisible: {\n fn: (row) =>\n layerTable.atoms.rowVisibility?.get()?.[row.id] ??\n layerTable.options.getRowVisible?.(row) ??\n true,\n },\n row_toggleVisibility: {\n fn: (row, value?: boolean) => {\n layerTable.options.onRowVisibilityChange?.((old: RowVisibilityState) => ({\n ...old,\n [row.id]: value ?? !(old[row.id] ?? true),\n }))\n },\n },\n })\n },\n constructTableAPIs: (table) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const layerTable = table as unknown as LayerTreeTable,\n isRowVisible = (row: LayerTreeRow) =>\n layerTable.atoms.rowVisibility?.get()?.[row.id] ??\n layerTable.options.getRowVisible?.(row) ??\n true,\n setRowVisibility = (updater: Updater<RowVisibilityState>) => {\n const safeUpdater: Updater<RowVisibilityState> = (old) => functionalUpdate(updater, old)\n layerTable.options.onRowVisibilityChange?.(safeUpdater)\n },\n getIsAllRowsVisible = () =>\n layerTable.getRowModel().flatRows.every((row) => isRowVisible(row))\n\n assignTableAPIs('rowVisibilityFeature', layerTable, {\n table_getIsAllRowsVisible: {\n fn: () => getIsAllRowsVisible(),\n },\n table_resetRowVisibility: {\n fn: () => setRowVisibility(layerTable.initialState.rowVisibility ?? {}),\n },\n table_setRowVisibility: {\n fn: (updater: Updater<RowVisibilityState>) => setRowVisibility(updater),\n },\n table_toggleAllRowsVisible: {\n fn: (value?: boolean) => {\n const next = value ?? !getIsAllRowsVisible()\n setRowVisibility(() => {\n const state: RowVisibilityState = {}\n for (const row of layerTable.getRowModel().flatRows) {\n state[row.id] = next\n }\n return state\n })\n },\n },\n })\n },\n getDefaultTableOptions: (table) => ({\n enableRowVisibility: true,\n onRowVisibilityChange: makeStateUpdater('rowVisibility', table),\n }),\n getInitialState: (initialState) => ({\n rowVisibility: {},\n ...initialState,\n }),\n },\n rowLockedFeature: TableFeature = {\n assignRowPrototype: (prototype, table) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const layerTable = table as unknown as LayerTreeTable\n assignPrototypeAPIs('rowLockedFeature', prototype, table, {\n row_getIsLocked: {\n fn: (row) =>\n layerTable.atoms.rowLocked?.get()?.[row.id] ??\n layerTable.options.getRowLocked?.(row) ??\n false,\n },\n row_toggleLocked: {\n fn: (row, value?: boolean) => {\n layerTable.options.onRowLockedChange?.((old: RowLockedState) => ({\n ...old,\n [row.id]: value ?? !(old[row.id] ?? false),\n }))\n },\n },\n })\n },\n constructTableAPIs: (table) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const layerTable = table as unknown as LayerTreeTable,\n isRowLocked = (row: LayerTreeRow) =>\n layerTable.atoms.rowLocked?.get()?.[row.id] ??\n layerTable.options.getRowLocked?.(row) ??\n false,\n setRowLocked = (updater: Updater<RowLockedState>) => {\n const safeUpdater: Updater<RowLockedState> = (old) => functionalUpdate(updater, old)\n layerTable.options.onRowLockedChange?.(safeUpdater)\n },\n getIsAllRowsLocked = () =>\n layerTable.getRowModel().flatRows.every((row) => isRowLocked(row))\n\n assignTableAPIs('rowLockedFeature', layerTable, {\n table_getIsAllRowsLocked: {\n fn: () => getIsAllRowsLocked(),\n },\n table_resetRowLocked: {\n fn: () => setRowLocked(layerTable.initialState.rowLocked ?? {}),\n },\n table_setRowLocked: {\n fn: (updater: Updater<RowLockedState>) => setRowLocked(updater),\n },\n table_toggleAllRowsLocked: {\n fn: (value?: boolean) => {\n const next = value ?? !getIsAllRowsLocked()\n setRowLocked(() => {\n const state: RowLockedState = {}\n for (const row of layerTable.getRowModel().flatRows) {\n state[row.id] = next\n }\n return state\n })\n },\n },\n })\n },\n getDefaultTableOptions: (table) => ({\n enableRowLocked: true,\n onRowLockedChange: makeStateUpdater('rowLocked', table),\n }),\n getInitialState: (initialState) => ({\n rowLocked: {},\n ...initialState,\n }),\n }\n\nexport {\n findLayerTreeNode,\n insertLayerTreeNode,\n moveLayerTreeNode,\n moveLayerTreeNodeToRoot,\n removeLayerTreeNode,\n rowLockedFeature,\n rowVisibilityFeature,\n type LayerTreeNodeBase,\n}\n","import {\n createExpandedRowModel,\n metaHelper,\n rowExpandingFeature,\n tableFeatures,\n columnFacetingFeature,\n columnFilteringFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n createFacetedRowModel,\n createFacetedUniqueValues,\n createFilteredRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n createTableHookContexts,\n filterFn_arrHas,\n filterFn_arrIncludes,\n filterFn_arrIncludesAll,\n filterFn_arrIncludesSome,\n filterFn_between,\n filterFn_betweenInclusive,\n filterFn_empty,\n filterFn_endsWith,\n filterFn_equals,\n filterFn_equalsString,\n filterFn_equalsStringSensitive,\n filterFn_inDateRange,\n filterFn_inNumberRange,\n filterFn_includesString,\n filterFn_includesStringSensitive,\n filterFn_notEmpty,\n filterFn_startsWith,\n filterFn_weakEquals,\n globalFilteringFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n sortFn_alphanumeric,\n sortFn_basic,\n sortFn_datetime,\n sortFn_text,\n} from '@tanstack/react-table'\n\nimport { rowLockedFeature, rowVisibilityFeature } from './layer-tree-utils'\nimport type { LayerTreeColumnMeta, LayerTreeTableMeta } from './layer-tree.types'\n\nconst features = tableFeatures({\n columnFacetingFeature,\n columnFilteringFeature,\n columnMeta: metaHelper<LayerTreeColumnMeta>(),\n columnSizingFeature,\n columnVisibilityFeature,\n expandedRowModel: createExpandedRowModel(),\n facetedRowModel: createFacetedRowModel(),\n facetedUniqueValues: createFacetedUniqueValues(),\n filterFns: {\n arrHas: filterFn_arrHas,\n arrIncludes: filterFn_arrIncludes,\n arrIncludesAll: filterFn_arrIncludesAll,\n arrIncludesSome: filterFn_arrIncludesSome,\n between: filterFn_between,\n betweenInclusive: filterFn_betweenInclusive,\n empty: filterFn_empty,\n endsWith: filterFn_endsWith,\n equals: filterFn_equals,\n equalsString: filterFn_equalsString,\n equalsStringSensitive: filterFn_equalsStringSensitive,\n inDateRange: filterFn_inDateRange,\n inNumberRange: filterFn_inNumberRange,\n includesString: filterFn_includesString,\n includesStringSensitive: filterFn_includesStringSensitive,\n notEmpty: filterFn_notEmpty,\n startsWith: filterFn_startsWith,\n weakEquals: filterFn_weakEquals,\n },\n filteredRowModel: createFilteredRowModel(),\n globalFilteringFeature,\n paginatedRowModel: createPaginatedRowModel(),\n rowExpandingFeature,\n rowLockedFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n rowVisibilityFeature,\n sortFns: {\n alphanumeric: sortFn_alphanumeric,\n basic: sortFn_basic,\n datetime: sortFn_datetime,\n text: sortFn_text,\n },\n sortedRowModel: createSortedRowModel(),\n tableMeta: metaHelper<LayerTreeTableMeta>(),\n }),\n { tableContext, cellContext, headerContext, useTableContext, useCellContext, useHeaderContext } =\n createTableHookContexts<typeof features>()\n\nexport {\n cellContext,\n features,\n headerContext,\n tableContext,\n useCellContext,\n useHeaderContext,\n useTableContext,\n}\n","import type {\n OnChangeFn,\n Row,\n RowData,\n TableFeature,\n TableFeatures,\n Updater,\n} from '@tanstack/react-table'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport React from 'react'\n\nimport type { Button } from '../button'\nimport type { IconComponent } from '../icon'\nimport type { InputGroup } from '../input-group'\n\ndeclare module '@tanstack/react-table' {\n interface Plugins {\n rowLockedFeature: TableFeature\n rowVisibilityFeature: TableFeature\n }\n\n interface TableState_FeatureMap {\n rowLockedFeature: LayerTreeState_RowLocked\n rowVisibilityFeature: LayerTreeState_RowVisibility\n }\n\n interface TableOptions_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {\n rowLockedFeature: LayerTreeOptions_RowLocked<TData>\n rowVisibilityFeature: LayerTreeOptions_RowVisibility<TData>\n }\n\n interface Table_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {\n rowLockedFeature: LayerTreeTable_RowLocked\n rowVisibilityFeature: LayerTreeTable_RowVisibility\n }\n\n interface Row_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {\n rowLockedFeature: LayerTreeRow_RowLocked\n rowVisibilityFeature: LayerTreeRow_RowVisibility\n }\n}\n\ntype LayerTreeProps = React.ComponentProps<'div'> & {\n onDNDStart?: (event: { nodeId: string }) => void\n onDNDEnd?: (event: { sourceNodeId: string; targetNodeId: string }) => void\n}\n\ntype LayerTreeBodyProps = React.ComponentProps<'div'>\ntype LayerTreeRowProps = React.ComponentProps<'div'> & {\n rowId: string\n}\n\ntype LayerTreeTriggerCellProps = React.ComponentProps<'button'> & {\n dndDisabled?: boolean\n}\ntype LayerTreeSearchProps = React.ComponentProps<typeof InputGroup> & {\n placeholder?: string\n}\ntype LayerTreeExpandAllProps = React.ComponentProps<typeof Button>\ntype LayerTreeFooterProps = React.ComponentProps<'div'>\ntype LayerTreeSortProps = React.ComponentProps<'button'>\ntype LayerTreeIconCellProps = React.ComponentProps<'div'>\ntype LayerTreeLockedCellProps = React.ComponentProps<typeof Button>\ntype LayerTreeLockedAllProps = React.ComponentProps<typeof Button>\ntype LayerTreeVisibilityCellProps = React.ComponentProps<typeof Button>\ntype LayerTreeVisibilityAllProps = React.ComponentProps<typeof Button>\ntype LayerTreeNodeIconProps = React.ComponentProps<'div'> & {\n icon: IconComponent\n}\ntype LayerTreeTextCellProps = React.ComponentProps<'span'> &\n VariantProps<typeof layerTreeTextCellVariants>\n\nconst layerTreeTextCellVariants = cva('min-w-0 grow truncate px-2xs', {\n defaultVariants: {\n size: 'medium',\n },\n variants: {\n size: {\n large: 'style-text-default-1',\n medium: 'style-text-default-0',\n small: 'style-text-default--1',\n },\n },\n }),\n // oxlint-disable-next-line unicorn/no-null\n LayerTreeContext = React.createContext<LayerTreeContextType | null>(null),\n useLayerTree = () => {\n const context = React.useContext<LayerTreeContextType | null>(LayerTreeContext)\n\n if (!context) {\n throw new Error('useLayerTree must be used within a LayerTreeProvider')\n }\n\n return context\n }\n\ninterface LayerTreeColumnMeta {\n fill?: boolean\n}\n\ninterface LayerTreeTableMeta {\n translations?: {\n buttonLabels?: {\n ascending?: string\n descending?: string\n }\n }\n}\n\ntype RowVisibilityState = Record<string, boolean>\n\ninterface LayerTreeState_RowVisibility {\n rowVisibility: RowVisibilityState\n}\n\ninterface LayerTreeOptions_RowVisibility<TData extends RowData = RowData> {\n enableRowVisibility?: boolean\n onRowVisibilityChange?: OnChangeFn<RowVisibilityState>\n getRowVisible?: (row: Row<TableFeatures, TData>) => boolean\n}\n\ninterface LayerTreeTable_RowVisibility {\n setRowVisibility: (updater: Updater<RowVisibilityState>) => void\n resetRowVisibility: () => void\n toggleAllRowsVisible: (value?: boolean) => void\n getIsAllRowsVisible: () => boolean\n}\n\ninterface LayerTreeRow_RowVisibility {\n getIsVisible: () => boolean\n toggleVisibility: (value?: boolean) => void\n}\n\ntype RowLockedState = Record<string, boolean>\n\ninterface LayerTreeState_RowLocked {\n rowLocked: RowLockedState\n}\n\ninterface LayerTreeOptions_RowLocked<TData extends RowData = RowData> {\n enableRowLocked?: boolean\n onRowLockedChange?: OnChangeFn<RowLockedState>\n getRowLocked?: (row: Row<TableFeatures, TData>) => boolean\n}\n\ninterface LayerTreeTable_RowLocked {\n setRowLocked: (updater: Updater<RowLockedState>) => void\n resetRowLocked: () => void\n toggleAllRowsLocked: (value?: boolean) => void\n getIsAllRowsLocked: () => boolean\n}\n\ninterface LayerTreeRow_RowLocked {\n getIsLocked: () => boolean\n toggleLocked: (value?: boolean) => void\n}\n\ntype LayerTreeContextType = LayerTreeProps & {\n draggingNodeId: string | null\n}\n\nexport { LayerTreeContext, layerTreeTextCellVariants, useLayerTree }\nexport type {\n RowLockedState,\n RowVisibilityState,\n LayerTreeContextType,\n LayerTreeState_RowVisibility,\n LayerTreeOptions_RowVisibility,\n LayerTreeTable_RowVisibility,\n LayerTreeRow_RowVisibility,\n LayerTreeState_RowLocked,\n LayerTreeOptions_RowLocked,\n LayerTreeTable_RowLocked,\n LayerTreeRow_RowLocked,\n LayerTreeTableMeta,\n LayerTreeColumnMeta,\n LayerTreeProps,\n LayerTreeBodyProps,\n LayerTreeRowProps,\n LayerTreeTriggerCellProps,\n LayerTreeSearchProps,\n LayerTreeFooterProps,\n LayerTreeSortProps,\n LayerTreeIconCellProps,\n LayerTreeLockedCellProps,\n LayerTreeLockedAllProps,\n LayerTreeVisibilityCellProps,\n LayerTreeVisibilityAllProps,\n LayerTreeNodeIconProps,\n LayerTreeTextCellProps,\n LayerTreeExpandAllProps,\n}\n","// oxlint-disable unicorn/no-null\nimport { Feedback } from '@dnd-kit/dom'\nimport { DragDropProvider, DragOverlay } from '@dnd-kit/react'\nimport type { DragEndEvent, DragStartEvent } from '@dnd-kit/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Badge } from '../badge'\nimport { useTableContext } from './layer-tree-context'\nimport { LayerTreeContext } from './layer-tree.types'\nimport type { LayerTreeProps } from './layer-tree.types'\n\nconst PARENT_ROW_COUNT = 1\n\nexport function LayerTree({\n onDNDStart: onDragStart,\n onDNDEnd: onDragEnd,\n className,\n children,\n ref,\n ...props\n}: LayerTreeProps) {\n const table = useTableContext(),\n [draggingNodeId, setDraggingNodeId] = React.useState<string | null>(null),\n handleDragStart = ({ operation: { source } }: DragStartEvent) => {\n setDraggingNodeId(source?.data.nodeId ?? null)\n if (onDragStart) {\n onDragStart({ nodeId: source?.data.nodeId ?? '' })\n }\n },\n handleDragEnd = ({ operation: { source, target } }: DragEndEvent) => {\n setDraggingNodeId(null)\n if (onDragEnd) {\n const targetNodeId = target?.data.folderId ?? target?.data.nodeId ?? null\n onDragEnd({\n sourceNodeId: source?.data.nodeId ?? '',\n targetNodeId,\n })\n }\n }\n\n return (\n <DragDropProvider\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n plugins={(defaults) => [...defaults, Feedback.configure({ dropAnimation: null })]}\n >\n <LayerTreeContext.Provider\n value={{\n children,\n className,\n draggingNodeId,\n ref,\n ...props,\n }}\n >\n <div className={cn('flex flex-col justify-between', className)} ref={ref} {...props}>\n {children}\n <DragOverlay>\n {(source) => (\n <div\n className={cn(\n 'relative rounded-md border border-neutral-border bg-neutral-container px-xs py-3xs opacity-80 shadow-md transition-opacity',\n )}\n >\n {table.getRow(String(source.id)).renderValue('name') ?? source.id}\n <Badge className=\"absolute -top-xs -right-xs\" size=\"small\" tone=\"neutral\">\n {table.getRow(String(source.id))?.subRows.length + PARENT_ROW_COUNT}\n </Badge>\n </div>\n )}\n </DragOverlay>\n </div>\n </LayerTreeContext.Provider>\n </DragDropProvider>\n )\n}\n\nexport { useLayerTree } from './layer-tree.types'\n","import { cn } from '@/utils/cn'\n\nimport { useTableContext } from './layer-tree-context'\nimport type { useTableContext as useRegisteredTableContext } from './layer-tree-table'\nimport type { LayerTreeRowProps } from './layer-tree.types'\n\nconst ROOT_DEPTH = 0,\n FIRST_CELL_INDEX = 0,\n ROW_INDENT_PER_LEVEL = 24,\n EMPTY_LEAF_COUNT = 0,\n VISIBLE_OPACITY = 1,\n HIDDEN_OPACITY = 0.5\n\nexport function LayerTreeRow({ rowId, className, children, ref, ...props }: LayerTreeRowProps) {\n // The registered table hook adds AppCell and FlexRender at runtime.\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const table = useTableContext() as ReturnType<typeof useRegisteredTableContext>\n\n return (\n <table.Subscribe\n selector={(state) => ({\n expanded: state.expanded,\n rowSelection: state.rowSelection,\n rowVisibility: state.rowVisibility,\n })}\n >\n {() => {\n const row = table.getRowModel().rows.find((candidate) => candidate.id === rowId),\n indent = (row?.depth ?? ROOT_DEPTH) * ROW_INDENT_PER_LEVEL,\n leafRows = row?.getLeafRows() ?? []\n let isVisible = row?.getIsVisible() ?? true\n\n if (leafRows.length > EMPTY_LEAF_COUNT) {\n isVisible = leafRows.some((leaf) => leaf.getIsVisible())\n }\n\n return (\n <div className={cn('flex w-full items-center gap-3xs', className)} ref={ref} {...props}>\n {children}\n {row?.getVisibleCells().map((cell, cellIndex) => {\n const isFirstCell = cellIndex === FIRST_CELL_INDEX,\n isFill = cell.column.columnDef.meta?.fill ?? cell.column.id === 'name'\n let marginLeft: number | undefined = undefined,\n opacity = HIDDEN_OPACITY\n\n if (isFirstCell) {\n marginLeft = indent\n }\n if (isVisible) {\n opacity = VISIBLE_OPACITY\n }\n\n return (\n <table.AppCell key={cell.id} cell={cell}>\n {(renderedCell) => (\n <div\n style={{\n marginLeft,\n opacity,\n }}\n className={cn(\n 'flex items-center',\n isFill && 'min-w-0 grow gap-3xs',\n !isFill && 'w-fit shrink-0',\n )}\n >\n <table.FlexRender cell={renderedCell} />\n </div>\n )}\n </table.AppCell>\n )\n })}\n </div>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { useDroppable } from '@dnd-kit/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { useTableContext } from './layer-tree-context'\nimport { LayerTreeRow } from './layer-tree-row'\nimport type { LayerTreeBodyProps } from './layer-tree.types'\n\nexport function LayerTreeBody({ className, children, ...props }: LayerTreeBodyProps) {\n const table = useTableContext(),\n { isDropTarget, ref } = useDroppable({\n data: {\n folderId: 'root',\n nodeId: 'root',\n },\n id: 'root-dropzone',\n })\n\n return (\n <table.Subscribe selector={(state) => state}>\n {() => (\n <div className={cn('flex min-h-0 w-full grow flex-col', className)} {...props}>\n {children}\n <div className=\"flex min-h-0 w-full flex-col gap-xs overflow-y-auto\">\n {table.getRowModel().rows.map((row) => (\n <LayerTreeRow key={row.id} rowId={row.id} />\n ))}\n </div>\n <div\n ref={ref}\n className={cn(\n 'grow',\n isDropTarget &&\n 'rounded-lg bg-success-container ring-1 ring-success-default ring-inset',\n )}\n />\n </div>\n )}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useTableContext } from './layer-tree-context'\nimport type { LayerTreeExpandAllProps } from './layer-tree.types'\n\nexport function LayerTreeExpandAll({ className, ref, ...props }: LayerTreeExpandAllProps) {\n const table = useTableContext(),\n handleClick = () => {\n if (table.getIsSomeRowsExpanded()) {\n table.toggleAllRowsExpanded(false)\n } else {\n table.toggleAllRowsExpanded(true)\n }\n }\n\n return (\n <table.Subscribe selector={(state) => state.expanded}>\n {() => (\n <Button\n aria-label=\"Expand or collapse all layers\"\n size=\"medium\"\n tone=\"neutral\"\n variant=\"ghost\"\n onClick={handleClick}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {table.getIsSomeRowsExpanded() && <Icon name=\"folderOpen\" />}\n {!table.getIsSomeRowsExpanded() && <Icon name=\"folderExpandAll\" />}\n </Button>\n )}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { LayerTreeFooterProps } from './layer-tree.types'\n\nexport function LayerTreeFooter({ className, ref, ...props }: LayerTreeFooterProps) {\n return <div className={cn('flex flex-col gap-3xs', className)} ref={ref} {...props} />\n}\n","import { createElement } from 'react'\nimport type { ReactNode } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { IconComponent } from '../icon'\nimport { useCellContext, useTableContext } from './layer-tree-context'\nimport type { LayerTreeIconCellProps } from './layer-tree.types'\n\nexport function LayerTreeIconCell({ className, children, ref, ...props }: LayerTreeIconCellProps) {\n const cell = useCellContext<IconComponent>(),\n table = useTableContext(),\n icon = cell.getValue(),\n { row } = cell,\n hasChildren = row.getCanExpand() && Boolean(row.getLeafRows().length)\n\n return (\n <table.Subscribe selector={(state) => state.expanded}>\n {() => {\n const isExpanded = row.getIsExpanded()\n\n let iconNode: ReactNode = createElement(icon)\n if (hasChildren && isExpanded) {\n iconNode = <Icon name=\"folderOpen\" />\n } else if (hasChildren) {\n iconNode = <Icon name=\"folder\" />\n }\n\n return (\n <div\n className={cn('flex w-fit shrink-0 items-center [&>svg]:size-sm', className)}\n ref={ref}\n {...props}\n >\n {children}\n {iconNode}\n </div>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useTableContext } from './layer-tree-context'\nimport type { LayerTreeLockedAllProps } from './layer-tree.types'\n\nexport function LayerTreeLockedAll({\n className,\n children,\n ref,\n ...props\n}: LayerTreeLockedAllProps) {\n const table = useTableContext(),\n allRows = table.getCoreRowModel().flatRows,\n handleClick = (isLocked: boolean) => {\n const next = !isLocked\n for (const leafRow of allRows) {\n leafRow.toggleLocked(next)\n }\n }\n\n return (\n <table.Subscribe selector={(state) => state.rowLocked}>\n {() => {\n const isLocked = allRows.some((leafRow) => leafRow.getIsLocked())\n\n return (\n <Button\n aria-label=\"Toggle all layers lock\"\n size=\"small\"\n tone=\"neutral\"\n variant=\"ghost\"\n onClick={() => handleClick(isLocked)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n {isLocked && <Icon name=\"locked\" />}\n {!isLocked && <Icon name=\"unlocked\" />}\n </Button>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useCellContext, useTableContext } from './layer-tree-context'\nimport type { LayerTreeLockedCellProps } from './layer-tree.types'\n\nexport function LayerTreeLockedCell({\n className,\n children,\n ref,\n ...props\n}: LayerTreeLockedCellProps) {\n const cell = useCellContext<boolean>(),\n table = useTableContext(),\n { row } = cell,\n rows = row.getLeafRows(),\n handleClick = (isLocked: boolean) => {\n const next = !isLocked\n for (const leafRow of rows) {\n leafRow.toggleLocked(next)\n }\n }\n\n if (!rows.length) {\n rows.push(row)\n }\n\n return (\n <table.Subscribe selector={(state) => state.rowLocked}>\n {() => {\n const isLocked = rows.every((leafRow) => leafRow.getIsLocked())\n\n return (\n <Button\n aria-label=\"Toggle layer lock\"\n size=\"small\"\n tone=\"neutral\"\n variant=\"ghost\"\n onClick={() => handleClick(isLocked)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n {isLocked && <Icon name=\"locked\" />}\n {!isLocked && <Icon name=\"unlocked\" />}\n </Button>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport { useCellContext } from './layer-tree-context'\nimport type { LayerTreeNodeIconProps } from './layer-tree.types'\n\nexport function LayerTreeNodeIcon({\n icon: NodeIcon,\n className,\n children,\n ref,\n ...props\n}: LayerTreeNodeIconProps) {\n const cell = useCellContext(),\n { row } = cell,\n hasChildren = row.getCanExpand() && Boolean(row.getLeafRows().length)\n let nodeIcon = <NodeIcon />\n\n if (hasChildren) {\n nodeIcon = <Icon name=\"folder\" />\n if (row.getIsExpanded()) {\n nodeIcon = <Icon name=\"folderOpen\" />\n }\n }\n\n return (\n <div className={cn('', className)} ref={ref} {...props}>\n {children}\n {nodeIcon}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport { InputGroup, InputGroupAddon, InputGroupInput } from '../input-group'\nimport { useTableContext } from './layer-tree-context'\nimport type { LayerTreeSearchProps } from './layer-tree.types'\n\nexport function LayerTreeSearch({\n placeholder,\n className,\n children,\n ref,\n ...props\n}: LayerTreeSearchProps) {\n const table = useTableContext()\n\n return (\n <table.Subscribe selector={(state) => state.globalFilter}>\n {(globalFilter) => (\n <InputGroup className={cn('', className)} ref={ref} {...props}>\n <InputGroupAddon>\n <Icon name=\"search\" />\n </InputGroupAddon>\n <InputGroupInput\n placeholder={placeholder}\n onChange={(event) => table.setGlobalFilter(event.target.value)}\n value={globalFilter ?? ''}\n />\n {children}\n </InputGroup>\n )}\n </table.Subscribe>\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport type { MenuProps } from './menu.types'\n\nexport function Menu({ ...props }: MenuProps) {\n return <BaseMenu.Root {...props} />\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { MenuCheckboxItemProps } from './menu.types'\n\nexport function MenuCheckboxItem({ className, children, ref, ...props }: MenuCheckboxItemProps) {\n return (\n <BaseMenu.CheckboxItem\n className={cn(\n 'relative z-0 grid h-lg cursor-default grid-cols-[1fr_2rem] items-center px-xs style-text-default-0 transition-colors outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:transition-colors before:content-[\"\"] hover:cursor-pointer data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"col-start-1 flex items-center gap-2xs\">{children}</span>\n <BaseMenu.CheckboxItemIndicator className=\"col-start-2 flex items-center justify-center place-self-end self-center\">\n <Icon name=\"selected\" className=\"size-sm\" />\n </BaseMenu.CheckboxItemIndicator>\n </BaseMenu.CheckboxItem>\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuGroupProps } from './menu.types'\n\nexport function MenuGroup({ className, ref, ...props }: MenuGroupProps) {\n return <BaseMenu.Group className={cn('', className)} ref={ref} {...props} />\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuGroupLabelProps } from './menu.types'\n\nexport function MenuGroupLabel({ className, ref, ...props }: MenuGroupLabelProps) {\n return (\n <BaseMenu.GroupLabel\n className={cn(\n 'cursor-default px-2xs py-3xs style-text-default--2 text-on-surface-variant select-none',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import type { Menu as BaseMenu } from '@base-ui/react/menu'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\ntype MenuProps = React.ComponentProps<typeof BaseMenu.Root>\ntype MenuTriggerProps = React.ComponentProps<typeof BaseMenu.Trigger>\ntype MenuPopupProps = React.ComponentProps<typeof BaseMenu.Positioner>\ntype MenuSeparatorProps = React.ComponentProps<typeof BaseMenu.Separator>\ntype MenuCheckboxItemProps = React.ComponentProps<typeof BaseMenu.CheckboxItem>\ntype MenuRadioGroupProps = React.ComponentProps<typeof BaseMenu.RadioGroup>\ntype MenuRadioItemProps = React.ComponentProps<typeof BaseMenu.RadioItem>\ntype MenuGroupProps = React.ComponentProps<typeof BaseMenu.Group>\ntype MenuGroupLabelProps = React.ComponentProps<typeof BaseMenu.GroupLabel>\ntype MenuSubmenuProps = React.ComponentProps<typeof BaseMenu.SubmenuRoot>\ntype MenuShortcutProps = React.ComponentProps<'div'>\n\nconst menuItemVariants = cva(\n 'relative z-0 flex cursor-default items-center px-xs py-3xs style-text-default-0 transition-colors duration-100 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:transition-colors before:duration-100 before:content-[\"\"] hover:cursor-pointer',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent:\n 'text-accent-default data-highlighted:text-accent-on-container data-highlighted:before:bg-accent-container',\n brand:\n 'text-brand-default data-highlighted:text-brand-on-container data-highlighted:before:bg-brand-container',\n error:\n 'text-error-default data-highlighted:text-error-on-container data-highlighted:before:bg-error-container',\n info: 'text-info-default data-highlighted:text-info-on-container data-highlighted:before:bg-info-container',\n neutral:\n 'text-on-surface data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n success:\n 'text-success-default data-highlighted:text-success-on-container data-highlighted:before:bg-success-container',\n warning:\n 'text-warning-default data-highlighted:text-warning-on-container data-highlighted:before:bg-warning-container',\n },\n },\n },\n ),\n menuSubmenuTriggerVariants = cva(\n 'relative z-0 grid cursor-default grid-cols-[1fr_2rem] items-center px-xs py-3xs style-text-default-0 transition-colors duration-100 outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:transition-colors before:duration-100 before:content-[\"\"] hover:cursor-pointer',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent:\n 'text-accent-default data-highlighted:text-accent-on-container data-highlighted:before:bg-accent-container data-popup-open:text-accent-on-container data-popup-open:before:bg-accent-container data-highlighted:data-popup-open:before:bg-accent-container',\n brand:\n 'text-brand-default data-highlighted:text-brand-on-container data-highlighted:before:bg-brand-container data-popup-open:text-brand-on-container data-popup-open:before:bg-brand-container data-highlighted:data-popup-open:before:bg-brand-container',\n error:\n 'text-error-default data-highlighted:text-error-on-container data-highlighted:before:bg-error-container data-popup-open:text-error-on-container data-popup-open:before:bg-error-container data-highlighted:data-popup-open:before:bg-error-container',\n info: 'text-info-default data-highlighted:text-info-on-container data-highlighted:before:bg-info-container data-popup-open:text-info-on-container data-popup-open:before:bg-info-container data-highlighted:data-popup-open:before:bg-info-container',\n neutral:\n 'text-on-surface data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high data-popup-open:text-neutral-on-container data-popup-open:before:bg-neutral-container-high data-highlighted:data-popup-open:before:bg-neutral-container-high',\n success:\n 'text-success-default data-highlighted:text-success-on-container data-highlighted:before:bg-success-container data-popup-open:text-success-on-container data-popup-open:before:bg-success-container data-highlighted:data-popup-open:before:bg-success-container',\n warning:\n 'text-warning-default data-highlighted:text-warning-on-container data-highlighted:before:bg-warning-container data-popup-open:text-warning-on-container data-popup-open:before:bg-warning-container data-highlighted:data-popup-open:before:bg-warning-container',\n },\n },\n },\n )\n\ntype MenuItemProps = React.ComponentProps<typeof BaseMenu.Item> &\n VariantProps<typeof menuItemVariants>\ntype MenuSubmenuTriggerProps = React.ComponentProps<typeof BaseMenu.SubmenuTrigger> &\n VariantProps<typeof menuSubmenuTriggerVariants>\n\nexport type {\n MenuProps,\n MenuTriggerProps,\n MenuPopupProps,\n MenuSeparatorProps,\n MenuCheckboxItemProps,\n MenuRadioGroupProps,\n MenuRadioItemProps,\n MenuGroupProps,\n MenuGroupLabelProps,\n MenuSubmenuProps,\n MenuShortcutProps,\n MenuItemProps,\n MenuSubmenuTriggerProps,\n}\nexport { menuItemVariants, menuSubmenuTriggerVariants }\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport { menuItemVariants } from './menu.types'\nimport type { MenuItemProps } from './menu.types'\n\nexport function MenuItem({ tone, className, children, ref, ...props }: MenuItemProps) {\n return (\n <BaseMenu.Item\n className={cn(menuItemVariants({ tone }), className)}\n nativeButton\n ref={ref}\n render={(renderProps) => (\n <button\n type=\"button\"\n {...renderProps}\n className={cn('w-full gap-2xs [&>svg]:size-sm', renderProps.className)}\n >\n {children}\n </button>\n )}\n {...props}\n />\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuPopupProps } from './menu.types'\n\nexport function MenuPopup({ className, children, ref, ...props }: MenuPopupProps) {\n return (\n <BaseMenu.Portal>\n <BaseMenu.Positioner\n className={cn('z-99 outline-none', className)}\n ref={ref}\n sideOffset={8}\n {...props}\n >\n <BaseMenu.Popup className=\"flex min-w-[12rem] origin-(--transform-origin) translate-x-[-calc(var(--spacing-xl)/2)] flex-col gap-3xs rounded-lg bg-surface-2 px-3xs py-2xs shadow-md transition-[transform,scale,opacity] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0\">\n {children}\n </BaseMenu.Popup>\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuRadioGroupProps } from './menu.types'\n\nexport function MenuRadioGroup({ className, ref, ...props }: MenuRadioGroupProps) {\n return <BaseMenu.RadioGroup className={cn('', className)} ref={ref} {...props} />\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport type { MenuRadioItemProps } from './menu.types'\n\nexport function MenuRadioItem({ className, children, ref, ...props }: MenuRadioItemProps) {\n return (\n <BaseMenu.RadioItem\n className={cn(\n 'relative z-0 grid h-lg cursor-default grid-cols-[1fr_2rem] items-center px-xs style-text-default-0 transition-colors outline-none select-none before:absolute before:inset-x-3xs before:inset-y-[0px] before:z-[-1] before:rounded-md before:bg-transparent before:transition-colors before:content-[\"\"] hover:cursor-pointer data-highlighted:text-neutral-on-container data-highlighted:before:bg-neutral-container-high',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"col-start-1 min-w-3xl\">{children}</span>\n <BaseMenu.RadioItemIndicator className=\"col-start-2 flex items-center justify-center place-self-end self-center\">\n <Icon name=\"selected\" className=\"size-sm\" />\n </BaseMenu.RadioItemIndicator>\n </BaseMenu.RadioItem>\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuSeparatorProps } from './menu.types'\n\nexport function MenuSeparator({ className, ref, ...props }: MenuSeparatorProps) {\n return (\n <BaseMenu.Separator\n className={cn('mx-2xs my-3xs h-px bg-border-strong', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { MenuShortcutProps } from './menu.types'\n\nexport function MenuShortcut({ className, ref, ...props }: MenuShortcutProps) {\n return (\n <div\n className={cn('ml-auto inline-flex items-center gap-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport type { MenuSubmenuProps } from './menu.types'\n\nexport function MenuSubmenu({ ...props }: MenuSubmenuProps) {\n return <BaseMenu.SubmenuRoot {...props} />\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport { menuSubmenuTriggerVariants } from './menu.types'\nimport type { MenuSubmenuTriggerProps } from './menu.types'\n\nexport function MenuSubmenuTrigger({\n tone,\n className,\n children,\n ref,\n ...props\n}: MenuSubmenuTriggerProps) {\n return (\n <BaseMenu.SubmenuTrigger\n className={cn(menuSubmenuTriggerVariants({ tone }), className)}\n ref={ref}\n {...props}\n >\n <div className=\"col-start-1 flex min-w-3xl items-center gap-2xs pr-2xl [&>svg]:size-sm\">\n {children}\n </div>\n <Icon name=\"chevronRight\" className=\"col-start-2 size-xs place-self-end self-center\" />\n </BaseMenu.SubmenuTrigger>\n )\n}\n","import { Menu as BaseMenu } from '@base-ui/react/menu'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { MenuTriggerProps } from './menu.types'\n\nexport function MenuTrigger({ className, children, ref, ...props }: MenuTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return (\n <BaseMenu.Trigger\n className={cn('data-popup-open:pointer-events-none', className)}\n ref={ref}\n render={render}\n {...props}\n />\n )\n}\n","import { Menu as MenuRoot } from './menu'\nimport { MenuCheckboxItem } from './menu-checkbox-item'\nimport { MenuGroup } from './menu-group'\nimport { MenuGroupLabel } from './menu-group-label'\nimport { MenuItem } from './menu-item'\nimport { MenuPopup } from './menu-popup'\nimport { MenuRadioGroup } from './menu-radio-group'\nimport { MenuRadioItem } from './menu-radio-item'\nimport { MenuSeparator } from './menu-separator'\nimport { MenuShortcut } from './menu-shortcut'\nimport { MenuSubmenu } from './menu-submenu'\nimport { MenuSubmenuTrigger } from './menu-submenu-trigger'\nimport { MenuTrigger } from './menu-trigger'\n\nconst Menu = Object.assign(MenuRoot, {\n CheckboxItem: MenuCheckboxItem,\n Group: MenuGroup,\n GroupLabel: MenuGroupLabel,\n Item: MenuItem,\n Popup: MenuPopup,\n RadioGroup: MenuRadioGroup,\n RadioItem: MenuRadioItem,\n Separator: MenuSeparator,\n Shortcut: MenuShortcut,\n Submenu: MenuSubmenu,\n SubmenuTrigger: MenuSubmenuTrigger,\n Trigger: MenuTrigger,\n})\n\nexport type {\n MenuCheckboxItemProps,\n MenuGroupLabelProps,\n MenuGroupProps,\n MenuItemProps,\n MenuPopupProps,\n MenuProps,\n MenuRadioGroupProps,\n MenuRadioItemProps,\n MenuSeparatorProps,\n MenuShortcutProps,\n MenuSubmenuProps,\n MenuSubmenuTriggerProps,\n MenuTriggerProps,\n} from './menu.types'\nexport { MenuCheckboxItem } from './menu-checkbox-item'\nexport { MenuGroup } from './menu-group'\nexport { MenuGroupLabel } from './menu-group-label'\nexport { MenuItem } from './menu-item'\nexport { MenuPopup } from './menu-popup'\nexport { MenuRadioGroup } from './menu-radio-group'\nexport { MenuRadioItem } from './menu-radio-item'\nexport { MenuSeparator } from './menu-separator'\nexport { MenuShortcut } from './menu-shortcut'\nexport { MenuSubmenu } from './menu-submenu'\nexport { MenuSubmenuTrigger } from './menu-submenu-trigger'\nexport { MenuTrigger } from './menu-trigger'\n\nexport { Menu }\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport {\n Menu,\n MenuCheckboxItem,\n MenuPopup,\n MenuSubmenu,\n MenuSubmenuTrigger,\n MenuTrigger,\n} from '../menu'\nimport { useTableContext } from './layer-tree-context'\nimport type { LayerTreeSortProps } from './layer-tree.types'\n\nfunction getColumnHeaderLabel(header: unknown, fallback: string): string {\n if (typeof header === 'string') {\n return header\n }\n return fallback\n}\n\nexport function LayerTreeSort({ className, children, ref, ...props }: LayerTreeSortProps) {\n const table = useTableContext(),\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {},\n ascendingLabel = buttonLabels.ascending ?? 'Ascending',\n descendingLabel = buttonLabels.descending ?? 'Descending',\n handleSort = (columnId: string, direction: 'asc' | 'desc') => {\n const column = table.getColumn(columnId),\n currentSort = column?.getIsSorted()\n\n if (currentSort === direction) {\n column?.clearSorting()\n return\n }\n\n column?.toggleSorting(direction === 'desc', column.getCanMultiSort())\n }\n\n return (\n <Menu>\n <MenuTrigger className={cn('shrink-0', className)} ref={ref} {...props}>\n <Button aria-label=\"Sort layers\" variant=\"ghost\" size=\"medium\" tone=\"neutral\">\n <Icon name=\"sort\" />\n </Button>\n </MenuTrigger>\n <MenuPopup align=\"end\">\n <table.Subscribe selector={(state) => state.sorting}>\n {() =>\n table\n .getAllColumns()\n .filter((column) => column.getCanSort())\n .map((column) => (\n <MenuSubmenu key={column.id}>\n <MenuSubmenuTrigger>\n {getColumnHeaderLabel(column.columnDef.header, column.id)}\n </MenuSubmenuTrigger>\n <MenuPopup>\n {children}\n <MenuCheckboxItem\n checked={column.getIsSorted() === 'asc'}\n onClick={() => handleSort(column.id, 'asc')}\n >\n <Icon name=\"sortDescending\" />\n {ascendingLabel}\n </MenuCheckboxItem>\n <MenuCheckboxItem\n checked={column.getIsSorted() === 'desc'}\n onClick={() => handleSort(column.id, 'desc')}\n >\n <Icon name=\"sortAscending\" />\n {descendingLabel}\n </MenuCheckboxItem>\n </MenuPopup>\n </MenuSubmenu>\n ))\n }\n </table.Subscribe>\n </MenuPopup>\n </Menu>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCellContext } from './layer-tree-context'\nimport { layerTreeTextCellVariants } from './layer-tree.types'\nimport type { LayerTreeTextCellProps } from './layer-tree.types'\n\nexport function LayerTreeTextCell({\n size,\n className,\n children,\n ref,\n ...props\n}: LayerTreeTextCellProps) {\n const cell = useCellContext<string>()\n\n return (\n <span className={cn(layerTreeTextCellVariants({ className, size }))} ref={ref} {...props}>\n {children}\n {cell.getValue()}\n </span>\n )\n}\n","import { useDraggable, useDroppable } from '@dnd-kit/react'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { useCellContext } from './layer-tree-context'\nimport { useLayerTree } from './layer-tree.types'\nimport type { LayerTreeTriggerCellProps } from './layer-tree.types'\n\nexport function LayerTreeTriggerCell({\n className,\n children,\n dndDisabled,\n onClick,\n ...props\n}: LayerTreeTriggerCellProps) {\n const cell = useCellContext<string>(),\n { draggingNodeId } = useLayerTree(),\n { row } = cell,\n hasChildren = row.getCanExpand(),\n isSelected = row.getIsSelected(),\n { ref: draggableRef, isDragging } = useDraggable({\n data: {\n isFolder: hasChildren,\n nodeId: row.id,\n },\n disabled: dndDisabled,\n id: row.id,\n }),\n { ref: droppableRef, isDropTarget } = useDroppable({\n data: {\n folderId: row.id,\n isFolder: hasChildren,\n nodeId: row.id,\n },\n disabled: dndDisabled || !hasChildren,\n id: `folder:${row.id}`,\n }),\n setNodeRef = (element: Element | null) => {\n draggableRef(element)\n droppableRef(element)\n },\n selectRow = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (!row.getCanSelect()) {\n return\n }\n if (!event.shiftKey) {\n cell.table.resetRowSelection()\n }\n row.getToggleSelectedHandler()({ shiftKey: event.shiftKey, target: { checked: true } })\n },\n handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event)\n if (event.defaultPrevented) {\n return\n }\n if (hasChildren) {\n row.toggleExpanded()\n return\n }\n selectRow(event)\n },\n isAncestorDragging = (() => {\n if (!draggingNodeId) {\n return false\n }\n let parent = row.getParentRow()\n while (parent) {\n if (parent.id === draggingNodeId) {\n return true\n }\n parent = parent.getParentRow()\n }\n return false\n })()\n\n return (\n <button\n type=\"button\"\n onClick={handleClick}\n className={cn(\n 'flex h-lg min-w-0 grow items-center justify-start gap-2xs truncate rounded-lg px-2xs style-text-default-0 transition-all hover:cursor-pointer [&>svg]:size-sm [&>svg]:shrink-0',\n hasChildren &&\n isDropTarget &&\n 'bg-success-container text-success-on-container ring ring-success-border',\n isSelected && 'bg-neutral-default text-neutral-on-default',\n !isSelected && 'hover:bg-neutral-container hover:text-neutral-on-container',\n (isDragging || isAncestorDragging) && 'opacity-60',\n className,\n )}\n ref={setNodeRef}\n {...props}\n >\n {children}\n {cell.getValue()}\n </button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useTableContext } from './layer-tree-context'\nimport type { LayerTreeVisibilityAllProps } from './layer-tree.types'\n\nexport function LayerTreeVisibilityAll({\n className,\n children,\n ref,\n ...props\n}: LayerTreeVisibilityAllProps) {\n const table = useTableContext(),\n allRows = table.getCoreRowModel().flatRows,\n handleClick = (isVisible: boolean) => {\n const next = !isVisible\n for (const leafRow of allRows) {\n leafRow.toggleVisibility(next)\n }\n }\n\n return (\n <table.Subscribe selector={(state) => state.rowVisibility}>\n {() => {\n const isVisible = allRows.some((leafRow) => leafRow.getIsVisible())\n\n return (\n <Button\n aria-label=\"Toggle all layers visibility\"\n size=\"small\"\n tone=\"neutral\"\n variant=\"ghost\"\n onClick={() => handleClick(isVisible)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n {isVisible && <Icon name=\"visible\" />}\n {!isVisible && <Icon name=\"hidden\" />}\n </Button>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useCellContext, useTableContext } from './layer-tree-context'\nimport type { LayerTreeVisibilityCellProps } from './layer-tree.types'\n\nexport function LayerTreeVisibilityCell({\n className,\n children,\n ref,\n ...props\n}: LayerTreeVisibilityCellProps) {\n const cell = useCellContext<boolean>(),\n table = useTableContext(),\n { row } = cell,\n rows = row.getLeafRows(),\n handleClick = (isVisible: boolean) => {\n const next = !isVisible\n for (const leafRow of rows) {\n leafRow.toggleVisibility(next)\n }\n }\n\n if (!rows.length) {\n rows.push(row)\n }\n\n return (\n <table.Subscribe selector={(state) => state.rowVisibility}>\n {() => {\n const isVisible = rows.some((leafRow) => leafRow.getIsVisible())\n\n return (\n <Button\n aria-label=\"Toggle layer visibility\"\n size=\"small\"\n tone=\"neutral\"\n variant=\"ghost\"\n onClick={() => handleClick(isVisible)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n {isVisible && <Icon name=\"visible\" />}\n {!isVisible && <Icon name=\"hidden\" />}\n </Button>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { createTableHook } from '@tanstack/react-table'\n\nimport { LayerTree } from './layer-tree'\nimport { LayerTreeBody } from './layer-tree-body'\nimport { features, cellContext, headerContext, tableContext } from './layer-tree-context'\nimport { LayerTreeExpandAll } from './layer-tree-expand-all'\nimport { LayerTreeFooter } from './layer-tree-footer'\nimport { LayerTreeIconCell } from './layer-tree-icon-cell'\nimport { LayerTreeLockedAll } from './layer-tree-locked-all'\nimport { LayerTreeLockedCell } from './layer-tree-locked-cell'\nimport { LayerTreeNodeIcon } from './layer-tree-node-icon'\nimport { LayerTreeRow } from './layer-tree-row'\nimport { LayerTreeSearch } from './layer-tree-search'\nimport { LayerTreeSort } from './layer-tree-sort'\nimport { LayerTreeTextCell } from './layer-tree-text-cell'\nimport { LayerTreeTriggerCell } from './layer-tree-trigger-cell'\nimport { LayerTreeVisibilityAll } from './layer-tree-visibility-all'\nimport { LayerTreeVisibilityCell } from './layer-tree-visibility-cell'\n\nconst { createAppColumnHelper, useAppTable, useTableContext, useCellContext, useHeaderContext } =\n createTableHook({\n cellComponents: {\n LayerTreeIconCell,\n LayerTreeLockedCell,\n LayerTreeNodeIcon,\n LayerTreeTextCell,\n LayerTreeTriggerCell,\n LayerTreeVisibilityCell,\n },\n cellContext,\n features,\n headerComponents: {},\n headerContext,\n tableComponents: {\n LayerTree,\n LayerTreeBody,\n LayerTreeExpandAll,\n LayerTreeFooter,\n LayerTreeLockedAll,\n LayerTreeRow,\n LayerTreeSearch,\n LayerTreeSort,\n LayerTreeVisibilityAll,\n },\n tableContext,\n })\n\nexport { createAppColumnHelper, useAppTable, useCellContext, useHeaderContext, useTableContext }\n\nexport { features } from './layer-tree-context'\n","import React from 'react'\n\nimport type { MapContextValue } from './map.types'\n\nconst MapContext = React.createContext<MapContextValue | undefined>(undefined)\n\nfunction useIxiaMap(): MapContextValue {\n const context = React.useContext(MapContext)\n\n if (!context) {\n throw new Error('useIxiaMap must be used within a Map')\n }\n\n return context\n}\n\nexport { MapContext, useIxiaMap }\n","import { MapContext } from './map.context'\nimport type { MapProps } from './map.types'\n\nexport function Map({ layers, onVisibilityChange, children }: MapProps) {\n return (\n <MapContext.Provider value={{ layers, onVisibilityChange }}>{children}</MapContext.Provider>\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { GeoJsonProperties } from 'geojson'\nimport type { ClusterFeature, ClusterProperties } from 'supercluster'\n\nimport type { GoogleMapClusterLayerItem } from './google-map.types'\n\nconst mapControlGroupVariants = cva(\n 'absolute z-10 flex flex-col items-center justify-start gap-2xs',\n {\n defaultVariants: {\n position: 'bottom-right',\n },\n variants: {\n position: {\n 'bottom-left': 'bottom-lg left-sm',\n 'bottom-right': 'right-sm bottom-lg',\n 'top-left': 'top-lg left-sm',\n 'top-right': 'top-lg right-sm',\n },\n },\n },\n)\n\ninterface GoogleMapSuggestionLabelValue {\n placePrediction: {\n text: {\n text: string\n }\n }\n}\n\nfunction isGoogleMapSuggestionLabelValue(\n itemValue: unknown,\n): itemValue is GoogleMapSuggestionLabelValue {\n return (\n typeof itemValue === 'object' &&\n itemValue !== null &&\n 'placePrediction' in itemValue &&\n typeof itemValue.placePrediction === 'object' &&\n itemValue.placePrediction !== null &&\n 'text' in itemValue.placePrediction &&\n typeof itemValue.placePrediction.text === 'object' &&\n itemValue.placePrediction.text !== null &&\n 'text' in itemValue.placePrediction.text &&\n typeof itemValue.placePrediction.text.text === 'string'\n )\n}\n\nfunction getGoogleMapSuggestionLabel(itemValue: unknown): string {\n if (!isGoogleMapSuggestionLabelValue(itemValue)) {\n return ''\n }\n\n return itemValue.placePrediction.text.text\n}\n\nfunction isClusterFeature<\n Properties extends GeoJsonProperties,\n ClusterPropertiesValue extends GeoJsonProperties = ClusterProperties,\n>(\n item: GoogleMapClusterLayerItem<Properties, ClusterPropertiesValue>,\n): item is ClusterFeature<ClusterPropertiesValue> {\n return (\n item.properties !== null && 'cluster' in item.properties && item.properties.cluster === true\n )\n}\n\nexport { getGoogleMapSuggestionLabel, mapControlGroupVariants, isClusterFeature }\n","import { cn } from '@/utils'\n\nimport { mapControlGroupVariants } from './google-maps/google-map.utils'\nimport type { MapControlGroupProps } from './map.types'\n\nexport function MapControlGroup({\n position,\n className,\n children,\n ref,\n ...props\n}: MapControlGroupProps) {\n return (\n <div className={cn(mapControlGroupVariants({ position }), className)} ref={ref} {...props}>\n {children}\n </div>\n )\n}\n","import React from 'react'\n\nimport type { MapLayerGroupContextValue } from './map.types'\n\nconst MapLayerGroupContext = React.createContext<MapLayerGroupContextValue | undefined>(undefined)\n\nfunction useMapLayerGroup(): MapLayerGroupContextValue {\n const context = React.useContext(MapLayerGroupContext)\n\n if (!context) {\n throw new Error('useMapLayerGroup must be used within a MapLayerGroup')\n }\n\n return context\n}\n\nexport { MapLayerGroupContext, useMapLayerGroup }\n","import { cn } from '@/utils'\n\nimport { MapLayerGroupContext } from './map-layer-group.context'\nimport type { MapLayerGroupProps } from './map.types'\n\nexport function MapLayerGroup({ group, className, children, ref, ...props }: MapLayerGroupProps) {\n return (\n <MapLayerGroupContext.Provider value={{ group }}>\n <div className={cn('flex flex-col gap-3xs', className)} ref={ref} {...props}>\n {children}\n </div>\n </MapLayerGroupContext.Provider>\n )\n}\n","import { cn } from '@/utils'\n\nimport { useMapLayerGroup } from './map-layer-group.context'\nimport type { MapLayerGroupLabelProps } from './map.types'\n\nexport function MapLayerGroupLabel({\n className,\n children,\n ref,\n ...props\n}: MapLayerGroupLabelProps) {\n const { group } = useMapLayerGroup()\n\n return (\n <span\n className={cn('font-body text-sm font-medium text-on-surface-variant', className)}\n ref={ref}\n {...props}\n >\n {children}\n {group.name}\n </span>\n )\n}\n","import { cn } from '@/utils'\n\nimport { useMapLayerGroup } from './map-layer-group.context'\nimport { useIxiaMap } from './map.context'\nimport type { MapLayerGroupLayerListProps } from './map.types'\n\nexport function MapLayerGroupLayerList({\n className,\n children,\n ...props\n}: MapLayerGroupLayerListProps) {\n const { group } = useMapLayerGroup(),\n { layers } = useIxiaMap(),\n groupLayers = group.layers.flatMap((config) => {\n const layer = layers.find((candidate) => candidate.id === config.id)\n if (!layer) {\n return []\n }\n\n return [layer]\n })\n\n return (\n <ul className={cn('flex flex-col gap-2xs', className)} {...props}>\n {groupLayers.map((layer) => children(layer))}\n </ul>\n )\n}\n","import { cn } from '@/utils'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { Popover } from '../popover'\nimport { useIxiaMap } from './map.context'\nimport type { MapLayerGroupListProps } from './map.types'\n\nconst GROUP_CHECK = 0\n\nexport function MapLayerGroupList({\n groups,\n className,\n children,\n ref,\n ...props\n}: MapLayerGroupListProps) {\n const { layers } = useIxiaMap()\n\n return (\n <Popover>\n <Popover.Trigger>\n <Button size=\"medium\" tone=\"neutral\" variant=\"elevated\">\n <Icon name=\"layers\" weight=\"bold\" />\n </Button>\n </Popover.Trigger>\n <Popover.Panel className={cn('', className)} ref={ref} {...props}>\n <Popover.Content>\n <ul className=\"flex flex-col gap-md\">\n {groups.map((group) => {\n const groupLayers = group.layers.flatMap((config) => {\n const layer = layers.find((candidate) => candidate.id === config.id)\n if (!layer) {\n return []\n }\n\n return [\n {\n ...layer,\n visible: config.visible ?? true,\n },\n ]\n })\n\n if (groupLayers.length === GROUP_CHECK) {\n return undefined\n }\n\n return children(group)\n })}\n </ul>\n </Popover.Content>\n </Popover.Panel>\n </Popover>\n )\n}\n","import React from 'react'\n\nimport type { MapLayerItemContextValue } from './map.types'\n\nconst MapLayerItemContext = React.createContext<MapLayerItemContextValue | undefined>(undefined)\n\nfunction useMapLayerItem(): MapLayerItemContextValue {\n const context = React.useContext(MapLayerItemContext)\n\n if (!context) {\n throw new Error('useMapLayerItem must be used within a MapLayerItem')\n }\n\n return context\n}\n\nexport { MapLayerItemContext, useMapLayerItem }\n","import { cn } from '@/utils'\n\nimport { useMapLayerItem } from './map-layer-item.context'\nimport type { MapLayerIconProps } from './map.types'\n\nexport function MapLayerIcon({ className, children, ref, ...props }: MapLayerIconProps) {\n const { layer } = useMapLayerItem()\n\n if (!layer.icon) {\n return undefined\n }\n\n return (\n <div className={cn('shrink-0 [&>svg]:size-md', className)} ref={ref} {...props}>\n {children}\n {layer.icon}\n </div>\n )\n}\n","import { cn } from '@/utils'\n\nimport { MapLayerItemContext } from './map-layer-item.context'\nimport type { MapLayerItemProps } from './map.types'\n\nexport function MapLayerItem({\n fadeWhenInvisible = true,\n layer,\n className,\n children,\n ref,\n ...props\n}: MapLayerItemProps) {\n return (\n <MapLayerItemContext.Provider value={{ layer }}>\n <div\n className={cn(\n 'flex items-center gap-2xs transition-opacity [&>:nth-last-child(2)]:mr-lg',\n fadeWhenInvisible && layer.visible === false && 'opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </MapLayerItemContext.Provider>\n )\n}\n","import { cn } from '@/utils'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { Popover } from '../popover'\nimport { useIxiaMap } from './map.context'\nimport type { MapLayerListProps } from './map.types'\n\nexport function MapLayerList({ className, children, ref, ...props }: MapLayerListProps) {\n const { layers } = useIxiaMap()\n\n return (\n <Popover>\n <Popover.Trigger>\n <Button size=\"medium\" tone=\"neutral\" variant=\"elevated\">\n <Icon name=\"layers\" weight=\"bold\" />\n </Button>\n </Popover.Trigger>\n <Popover.Panel className={cn('', className)} ref={ref} {...props}>\n <Popover.Content>\n <ul className=\"flex flex-col gap-2xs\">{layers.map((layer) => children(layer))}</ul>\n </Popover.Content>\n </Popover.Panel>\n </Popover>\n )\n}\n","import { cn } from '@/utils'\n\nimport { useMapLayerItem } from './map-layer-item.context'\nimport type { MapLayerNameProps } from './map.types'\n\nexport function MapLayerName({ className, children, ref, ...props }: MapLayerNameProps) {\n const { layer } = useMapLayerItem()\n\n return (\n <span\n className={cn('font-body text-sm font-medium whitespace-nowrap', className)}\n ref={ref}\n {...props}\n >\n {children}\n {layer.name}\n </span>\n )\n}\n","import { cn } from '@/utils'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useMapLayerItem } from './map-layer-item.context'\nimport { useIxiaMap } from './map.context'\nimport type { MapLayerVisibilityToggleProps } from './map.types'\n\nexport function MapLayerVisibilityToggle({\n className,\n children,\n ref,\n ...props\n}: MapLayerVisibilityToggleProps) {\n const { layer } = useMapLayerItem(),\n layerId = layer.id,\n { onVisibilityChange } = useIxiaMap(),\n visible = layer.visible ?? true,\n handleClick: NonNullable<MapLayerVisibilityToggleProps['onClick']> = (event) => {\n if (!event.defaultPrevented && onVisibilityChange) {\n onVisibilityChange(layer, !visible)\n }\n }\n\n return (\n <Button\n type=\"button\"\n size=\"small\"\n tone=\"neutral\"\n variant=\"soft\"\n aria-label={`Layer visibility: ${layerId}`}\n aria-pressed={visible}\n title=\"Toggle layer visibility\"\n className={cn('ml-auto shrink-0 grow-0', className)}\n ref={ref}\n onClick={handleClick}\n {...props}\n >\n {children ?? (\n <>\n {visible && <Icon name=\"visible\" />}\n {!visible && <Icon name=\"hidden\" />}\n </>\n )}\n </Button>\n )\n}\n","import { APIProvider } from '@vis.gl/react-google-maps'\n\nimport type { GoogleMapProps } from './google-map.types'\n\nexport function GoogleMap({ children, ...props }: GoogleMapProps) {\n return <APIProvider {...props}>{children}</APIProvider>\n}\n","import { AdvancedMarker, CollisionBehavior } from '@vis.gl/react-google-maps'\nimport type { ComponentPropsWithRef } from 'react'\n\nimport { cn } from '@/utils'\n\ntype GoogleMapClusterProps = ComponentPropsWithRef<typeof AdvancedMarker> & {\n count: number\n label: string\n}\n\nexport function GoogleMapCluster({\n className,\n children,\n count,\n label,\n collisionBehavior = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL,\n zIndex = count,\n ...props\n}: GoogleMapClusterProps) {\n return (\n <AdvancedMarker\n aria-label={label}\n collisionBehavior={collisionBehavior}\n zIndex={zIndex}\n className={cn(\n 'flex min-h-xl min-w-xl animate-appear items-center justify-center rounded-full border border-neutral-border bg-neutral-container p-3xs',\n className,\n )}\n {...props}\n >\n {children ?? <span>{count}</span>}\n </AdvancedMarker>\n )\n}\n\nexport type { GoogleMapClusterProps }\n","import type { GeoJsonProperties } from 'geojson'\nimport { Fragment } from 'react'\nimport type { ClusterProperties } from 'supercluster'\n\nimport type { GoogleMapClusterLayerProps } from './google-map.types'\nimport { isClusterFeature } from './google-map.utils'\n\nexport function GoogleMapClusterLayer<\n Properties extends GeoJsonProperties,\n ClusterPropertiesValue extends GeoJsonProperties = ClusterProperties,\n>({\n items,\n getKey,\n getLeaves,\n getClusterExpansionZoom,\n renderItem,\n renderCluster,\n children,\n}: GoogleMapClusterLayerProps<Properties, ClusterPropertiesValue>) {\n return (\n <>\n {items.map((item) => {\n if (isClusterFeature<Properties, ClusterPropertiesValue>(item)) {\n const clusterId = item.properties.cluster_id\n\n return (\n <Fragment key={`cluster-${clusterId}`}>\n {renderCluster(item, {\n getExpansionZoom: () => getClusterExpansionZoom(clusterId),\n getLeaves: () => getLeaves(clusterId),\n })}\n </Fragment>\n )\n }\n\n return <Fragment key={getKey(item)}>{renderItem(item)}</Fragment>\n })}\n {children}\n </>\n )\n}\n","import type { LayersList } from '@deck.gl/core'\nimport { GoogleMapsOverlay } from '@deck.gl/google-maps'\nimport { useMap } from '@vis.gl/react-google-maps'\nimport React from 'react'\n\nimport { useIxiaMap } from '../map.context'\nimport type { DeckGLLayerConfig } from '../map.types'\nimport type { GoogleMapDeckGLOverlayProps } from './google-map.types'\n\nfunction cloneLayers(configs: DeckGLLayerConfig[]): LayersList {\n return configs.map(({ id, visualLayer: layer, layerProps, visible }) =>\n layer.clone({\n ...layerProps,\n id,\n visible: visible ?? true,\n }),\n )\n}\n\nexport function GoogleMapDeckGLOverlay({\n interleaved = false,\n ...deckProps\n}: GoogleMapDeckGLOverlayProps) {\n const map = useMap(),\n ixiaMap = useIxiaMap(),\n overlayRef = React.useRef<GoogleMapsOverlay | undefined>(undefined)\n\n React.useEffect(() => {\n if (!map) {\n return undefined\n }\n\n const overlay = new GoogleMapsOverlay({ interleaved })\n overlayRef.current = overlay\n overlay.setMap(map)\n\n return () => {\n overlayRef.current = undefined\n overlay.finalize()\n }\n }, [map, interleaved])\n\n React.useEffect(() => {\n overlayRef.current?.setProps({\n ...deckProps,\n interleaved,\n layers: cloneLayers(\n ixiaMap.layers.filter((layer): layer is DeckGLLayerConfig => layer.kind === 'deckgl'),\n ),\n })\n })\n\n return undefined\n}\n","import { Map } from '@vis.gl/react-google-maps'\nimport React from 'react'\n\nimport { cn } from '@/utils'\n\nimport type { GoogleMapFrameProps } from './google-map.types'\n\nexport function GoogleMapFrame({ className, children, ...props }: GoogleMapFrameProps) {\n const id = React.useId()\n\n return (\n <Map className={cn('', className)} id={id} {...props}>\n {children}\n </Map>\n )\n}\n","import { CircleNotchIcon, NavigationArrowIcon } from '@phosphor-icons/react'\nimport { useMap } from '@vis.gl/react-google-maps'\nimport React from 'react'\n\nimport { Button } from '@/components/button'\nimport { cn } from '@/utils'\n\nimport type { GoogleMapGeolocateControlProps } from './google-map.types'\n\nconst ZOOM_LEVEL = 15\n\nexport function GoogleMapGeolocateControl({\n zoomLevel = ZOOM_LEVEL,\n className,\n children,\n ref,\n ...props\n}: GoogleMapGeolocateControlProps) {\n const map = useMap(),\n [isPending, startTransition] = React.useTransition(),\n handleClick = () => {\n if (!map) {\n return\n }\n\n startTransition(async () => {\n const pos = await new Promise<{ lat: number; lng: number }>((resolve) => {\n navigator.geolocation.getCurrentPosition((position) => {\n const lat = position.coords.latitude,\n lng = position.coords.longitude\n resolve({ lat, lng })\n })\n })\n\n if (pos) {\n map.moveCamera({\n center: pos,\n zoom: zoomLevel,\n })\n }\n })\n }\n\n return (\n <Button\n disabled={isPending}\n onClick={handleClick}\n size=\"medium\"\n tone=\"neutral\"\n variant=\"elevated\"\n className={cn('shrink-0', className)}\n ref={ref}\n {...props}\n >\n {children}\n {isPending && <CircleNotchIcon className=\"animate-spin\" weight=\"bold\" />}\n {!isPending && <NavigationArrowIcon weight=\"bold\" />}\n </Button>\n )\n}\n","import { AdvancedMarker, CollisionBehavior } from '@vis.gl/react-google-maps'\nimport type { ComponentPropsWithRef } from 'react'\n\ntype GoogleMapMarkerProps = ComponentPropsWithRef<typeof AdvancedMarker>\n\nexport function GoogleMapMarker({\n collisionBehavior = CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY,\n ...props\n}: GoogleMapMarkerProps) {\n return <AdvancedMarker collisionBehavior={collisionBehavior} {...props} />\n}\n\nexport type { GoogleMapMarkerProps }\n","import { Fragment } from 'react'\nimport type { Key, ReactNode } from 'react'\n\ninterface GoogleMapMarkerLayerProps<Item> {\n items: readonly Item[]\n getKey: (item: Item) => Key\n renderItem: (item: Item) => ReactNode\n children?: ReactNode\n}\n\nexport function GoogleMapMarkerLayer<Item>({\n items,\n getKey,\n renderItem,\n children,\n}: GoogleMapMarkerLayerProps<Item>) {\n return (\n <>\n {items.map((item) => (\n <Fragment key={getKey(item)}>{renderItem(item)}</Fragment>\n ))}\n {children}\n </>\n )\n}\n\nexport type { GoogleMapMarkerLayerProps }\n","import React from 'react'\n\nimport type { GoogleMapSearchControlValue } from './google-map-search-control.types'\n\nconst GoogleMapSearchControlContext = React.createContext<GoogleMapSearchControlValue | undefined>(\n undefined,\n)\n\nfunction useGoogleMapSearchControl() {\n const context = React.useContext(GoogleMapSearchControlContext)\n\n if (!context) {\n throw new Error('useGoogleMapSearchControl must be used within a GoogleMapSearchControl')\n }\n\n return context\n}\n\nexport { GoogleMapSearchControlContext, useGoogleMapSearchControl }\n","import { useAsyncDebouncer } from '@tanstack/react-pacer'\nimport { useMapsLibrary } from '@vis.gl/react-google-maps'\nimport React from 'react'\n\nimport { Autocomplete } from '@/components/autocomplete'\n\nimport { GoogleMapSearchControlContext } from './google-map-search-control.context'\nimport type { GoogleMapSearchControlProps } from './google-map-search-control.types'\nimport { getGoogleMapSuggestionLabel } from './google-map.utils'\n\nconst DEFAULT_DEBOUNCE_INTERVAL = 300\n\nexport function GoogleMapSearchControl({\n onSuggestionSelect,\n onValueChange,\n value: controlledValue,\n defaultValue,\n itemToStringValue = getGoogleMapSuggestionLabel,\n debounceInterval = DEFAULT_DEBOUNCE_INTERVAL,\n locale,\n children,\n ...props\n}: GoogleMapSearchControlProps) {\n const [inputValue, setInputValue] = React.useState(defaultValue ?? ''),\n [results, setResults] = React.useState<google.maps.places.AutocompleteSuggestion[]>([]),\n autocompleteValue = controlledValue ?? inputValue,\n places = useMapsLibrary('places'),\n debouncer = useAsyncDebouncer(\n async (query: string): Promise<google.maps.places.AutocompleteSuggestion[]> => {\n const input = query.trim()\n\n if (!input) {\n setResults([])\n return []\n }\n\n if (!places) {\n return []\n }\n\n // oxlint-disable-next-line one-var\n const request: google.maps.places.AutocompleteRequest = {\n input,\n language: locale?.toString(),\n },\n { suggestions: fetchedSuggestions } =\n await places.AutocompleteSuggestion.fetchAutocompleteSuggestions(request)\n\n setResults(fetchedSuggestions)\n return fetchedSuggestions\n },\n {\n wait: debounceInterval,\n },\n (state) => ({ isPending: state.isPending }),\n ),\n selectSuggestion = async (suggestion: google.maps.places.AutocompleteSuggestion) => {\n if (!places) {\n return\n }\n if (!suggestion.placePrediction) {\n return\n }\n\n if (onSuggestionSelect) {\n await onSuggestionSelect(suggestion)\n }\n },\n selectFirstSuggestion = async () => {\n const [firstSuggestion] = results\n\n if (firstSuggestion) {\n if (controlledValue === undefined) {\n setInputValue(itemToStringValue(firstSuggestion))\n }\n\n await selectSuggestion(firstSuggestion)\n }\n },\n handleValueChange: NonNullable<GoogleMapSearchControlProps['onValueChange']> = (\n value,\n eventDetails,\n ) => {\n if (controlledValue === undefined) {\n setInputValue(value)\n }\n\n onValueChange?.(value, eventDetails)\n void debouncer.maybeExecute(value)\n }\n\n return (\n <GoogleMapSearchControlContext.Provider\n value={{\n debouncer,\n locale,\n results,\n selectFirstSuggestion,\n selectSuggestion,\n setResults,\n }}\n >\n <Autocomplete\n filteredItems={results}\n itemToStringValue={itemToStringValue}\n mode=\"list\"\n onValueChange={handleValueChange}\n value={autocompleteValue}\n {...props}\n >\n {children}\n </Autocomplete>\n </GoogleMapSearchControlContext.Provider>\n )\n}\n","import { AutocompleteEmpty } from '@/components/autocomplete'\nimport { cn } from '@/utils/cn'\n\nimport { useGoogleMapSearchControl } from './google-map-search-control.context'\nimport type { GoogleMapSearchControlEmptyProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlEmpty({\n className,\n children,\n ref,\n ...props\n}: GoogleMapSearchControlEmptyProps) {\n const { debouncer } = useGoogleMapSearchControl()\n\n return (\n <debouncer.Subscribe selector={(state) => ({ isPending: state.isPending })}>\n {({ isPending }) =>\n !isPending && (\n <AutocompleteEmpty className={cn('', className)} ref={ref} {...props}>\n {children}\n </AutocompleteEmpty>\n )\n }\n </debouncer.Subscribe>\n )\n}\n","import { Autocomplete } from '@/components/autocomplete'\nimport { cn } from '@/utils'\n\nimport { useGoogleMapSearchControl } from './google-map-search-control.context'\nimport type { GoogleMapSearchControlInputProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlInput({\n className,\n onKeyDown,\n ref,\n ...props\n}: GoogleMapSearchControlInputProps) {\n const { results, selectFirstSuggestion } = useGoogleMapSearchControl(),\n handleSubmit: NonNullable<GoogleMapSearchControlInputProps['onKeyDown']> = (event) => {\n onKeyDown?.(event)\n\n if (event.key !== 'Enter' || event.defaultPrevented || !results.length) {\n return\n }\n\n event.preventDefault()\n void selectFirstSuggestion()\n }\n\n return (\n <Autocomplete.InputGroupInput\n onKeyDown={handleSubmit}\n className={cn('', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Autocomplete } from '@/components/autocomplete'\nimport { cn } from '@/utils'\n\nimport type { GoogleMapSearchControlInputGroupProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlInputGroup({\n className,\n ref,\n ...props\n}: GoogleMapSearchControlInputGroupProps) {\n return <Autocomplete.InputGroup className={cn('', className)} ref={ref} {...props} />\n}\n","import { CircleNotchIcon } from '@phosphor-icons/react'\nimport React from 'react'\n\nimport { Button } from '@/components/button'\nimport { cn } from '@/utils'\n\nimport { useGoogleMapSearchControl } from './google-map-search-control.context'\nimport type { GoogleMapSearchControlSubmitProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlSubmit({\n className,\n onClick,\n ref,\n ...props\n}: GoogleMapSearchControlSubmitProps) {\n const [isPending, startTransition] = React.useTransition(),\n { selectFirstSuggestion } = useGoogleMapSearchControl(),\n handleClick: NonNullable<GoogleMapSearchControlSubmitProps['onClick']> = async (event) => {\n onClick?.(event)\n\n if (!event.defaultPrevented) {\n startTransition(async () => {\n await selectFirstSuggestion()\n })\n }\n }\n\n if (isPending) {\n return (\n <Button\n tone=\"neutral\"\n size=\"medium\"\n disabled\n className={cn('animate-spin', className)}\n ref={ref}\n {...props}\n >\n <CircleNotchIcon weight=\"bold\" />\n </Button>\n )\n }\n return <Button className={cn('', className)} ref={ref} {...props} onClick={handleClick} />\n}\n","import { AutocompleteItem } from '@/components/autocomplete'\nimport { cn } from '@/utils'\n\nimport { useGoogleMapSearchControl } from './google-map-search-control.context'\nimport type { GoogleMapSearchControlSuggestionProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlSuggestion({\n suggestion,\n className,\n children,\n ref,\n ...props\n}: GoogleMapSearchControlSuggestionProps) {\n const { selectSuggestion } = useGoogleMapSearchControl()\n\n return (\n <AutocompleteItem\n onClick={() => void selectSuggestion(suggestion)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children(suggestion)}\n </AutocompleteItem>\n )\n}\n","import { useMap } from '@vis.gl/react-google-maps'\nimport { useState } from 'react'\n\nimport { Button } from '@/components/button'\nimport { Icon } from '@/components/icon'\nimport { cn } from '@/utils'\n\nimport type { GoogleMapTiltControlProps } from './google-map.types'\n\nconst DEFAULT_TILT = 0,\n NULL_TILT = 0,\n MAX_TILT = 45\n\nexport function GoogleMapTiltControl({\n className,\n children,\n ref,\n ...props\n}: GoogleMapTiltControlProps) {\n const map = useMap(),\n [currentTilt, setCurrentTilt] = useState(map?.getTilt() || DEFAULT_TILT)\n\n function handleClick() {\n if (map) {\n if (currentTilt === NULL_TILT) {\n map.setTilt(MAX_TILT)\n setCurrentTilt(MAX_TILT)\n } else {\n map.setTilt(DEFAULT_TILT)\n setCurrentTilt(DEFAULT_TILT)\n }\n }\n }\n\n return (\n <Button\n onClick={handleClick}\n variant=\"elevated\"\n // oxlint-disable-next-line no-ternary\n tone={currentTilt === MAX_TILT ? 'brand' : 'neutral'}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n <Icon name=\"3d\" />\n </Button>\n )\n}\n","import { MinusIcon, PlusIcon } from '@phosphor-icons/react'\nimport { useMap } from '@vis.gl/react-google-maps'\n\nimport { Button } from '@/components/button'\nimport { ButtonGroup } from '@/components/button-group'\nimport { cn } from '@/utils'\n\nimport type { GoogleMapZoomControlProps } from './google-map.types'\n\nconst DEFAULT_ZOOM = 0,\n ZOOM_STEP = 1\n\nexport function GoogleMapZoomControl({\n step = ZOOM_STEP,\n className,\n children,\n ref,\n ...props\n}: GoogleMapZoomControlProps) {\n const map = useMap(),\n handleZoomIn = () => {\n if (!map) {\n return\n }\n map.setZoom((map.getZoom() ?? DEFAULT_ZOOM) + step)\n },\n handleZoomOut = () => {\n if (!map) {\n return\n }\n map.setZoom((map.getZoom() ?? DEFAULT_ZOOM) - step)\n }\n\n return (\n <ButtonGroup\n size=\"medium\"\n tone=\"neutral\"\n variant=\"elevated\"\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n <Button onClick={handleZoomIn}>\n <PlusIcon weight=\"bold\" />\n </Button>\n <Button onClick={handleZoomOut}>\n <MinusIcon weight=\"bold\" />\n </Button>\n </ButtonGroup>\n )\n}\n","import { AutocompleteContent } from '@/components/autocomplete'\nimport { cn } from '@/utils'\n\nimport type { GoogleMapSearchControlContentProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlContent({\n className,\n ref,\n ...props\n}: GoogleMapSearchControlContentProps) {\n return <AutocompleteContent className={cn('', className)} ref={ref} {...props} />\n}\n","import { AutocompleteCollection } from '@/components/autocomplete'\n\nimport type { GoogleMapsSearchControlResultsProps } from './google-map-search-control.types'\n\nexport function GoogleMapsSearchControlResults({\n children,\n ...props\n}: GoogleMapsSearchControlResultsProps) {\n return (\n <AutocompleteCollection {...props}>\n {(result: google.maps.places.AutocompleteSuggestion, index: number) =>\n children(result, index)\n }\n </AutocompleteCollection>\n )\n}\n","import { AutocompleteStatus } from '@/components/autocomplete'\nimport { cn } from '@/utils'\n\nimport { useGoogleMapSearchControl } from './google-map-search-control.context'\nimport type { GoogleMapsSearchControlStatusProps } from './google-map-search-control.types'\n\nexport function GoogleMapsSearchControlStatus({\n className,\n children,\n ref,\n ...props\n}: GoogleMapsSearchControlStatusProps) {\n const { debouncer } = useGoogleMapSearchControl()\n\n return (\n <AutocompleteStatus className={cn('', className)} ref={ref} {...props}>\n <debouncer.Subscribe\n selector={(state) => ({ isPending: state.isPending, results: state.lastResult })}\n >\n {({ isPending, results }) =>\n (isPending || Boolean(results?.length)) && children({ isPending, results })\n }\n </debouncer.Subscribe>\n </AutocompleteStatus>\n )\n}\n","import { GoogleMap as GoogleMapRoot } from './google-map'\nimport { GoogleMapCluster } from './google-map-cluster'\nimport { GoogleMapClusterLayer } from './google-map-cluster-layer'\nimport { GoogleMapDeckGLOverlay } from './google-map-deckgl-overlay'\nimport { GoogleMapFrame } from './google-map-frame'\nimport { GoogleMapGeolocateControl } from './google-map-geolocate-control'\nimport { GoogleMapMarker } from './google-map-marker'\nimport { GoogleMapMarkerLayer } from './google-map-marker-layer'\nimport { GoogleMapSearchControl } from './google-map-search-control'\nimport { GoogleMapSearchControlEmpty } from './google-map-search-control-empty'\nimport { GoogleMapSearchControlInput } from './google-map-search-control-input'\nimport { GoogleMapSearchControlInputGroup } from './google-map-search-control-input-group'\nimport { GoogleMapSearchControlSubmit } from './google-map-search-control-submit'\nimport { GoogleMapSearchControlSuggestion } from './google-map-search-control-suggestion'\nimport { GoogleMapTiltControl } from './google-map-tilt-control'\nimport { GoogleMapZoomControl } from './google-map-zoom-control'\nimport { GoogleMapSearchControlContent } from './google-maps-search-control-content'\nimport { GoogleMapsSearchControlResults } from './google-maps-search-control-results'\nimport { GoogleMapsSearchControlStatus } from './google-maps-search-control-status'\n\nconst GoogleMap = Object.assign(GoogleMapRoot, {\n Cluster: GoogleMapCluster,\n ClusterLayer: GoogleMapClusterLayer,\n DeckGLOverlay: GoogleMapDeckGLOverlay,\n Frame: GoogleMapFrame,\n GeolocateControl: GoogleMapGeolocateControl,\n Marker: GoogleMapMarker,\n MarkerLayer: GoogleMapMarkerLayer,\n SearchControl: GoogleMapSearchControl,\n SearchControlContent: GoogleMapSearchControlContent,\n SearchControlEmpty: GoogleMapSearchControlEmpty,\n SearchControlInput: GoogleMapSearchControlInput,\n SearchControlInputGroup: GoogleMapSearchControlInputGroup,\n SearchControlResults: GoogleMapsSearchControlResults,\n SearchControlStatus: GoogleMapsSearchControlStatus,\n SearchControlSubmit: GoogleMapSearchControlSubmit,\n SearchControlSuggestion: GoogleMapSearchControlSuggestion,\n TiltControl: GoogleMapTiltControl,\n ZoomControl: GoogleMapZoomControl,\n})\n\nexport type {\n GoogleMapProps,\n GoogleMapGeolocateControlProps,\n GoogleMapFrameProps,\n GoogleMapZoomControlProps,\n GoogleMapDeckGLOverlayProps,\n GoogleMapTiltControlProps,\n GoogleMapClusterLayerProps,\n GoogleMapClusterLayerItem,\n GoogleMapClusterRenderContext,\n} from './google-map.types'\nexport type { GoogleMapClusterProps } from './google-map-cluster'\nexport type { GoogleMapMarkerProps } from './google-map-marker'\nexport type { GoogleMapMarkerLayerProps } from './google-map-marker-layer'\nexport type {\n GoogleMapSearchControlValue,\n GoogleMapSearchControlContextProps,\n GoogleMapSearchControlProps,\n GoogleMapSearchControlInputProps,\n GoogleMapSearchControlSubmitProps,\n GoogleMapSearchControlSuggestionProps,\n GoogleMapSearchControlEmptyProps,\n GoogleMapsSearchControlResultsProps,\n GoogleMapsSearchControlStatusProps,\n GoogleMapSearchControlContentProps,\n GoogleMapSearchControlInputGroupProps,\n} from './google-map-search-control.types'\n\nexport { GoogleMapFrame } from './google-map-frame'\nexport { GoogleMapGeolocateControl } from './google-map-geolocate-control'\nexport { GoogleMapSearchControl } from './google-map-search-control'\nexport { GoogleMapSearchControlInput } from './google-map-search-control-input'\nexport { GoogleMapSearchControlSubmit } from './google-map-search-control-submit'\nexport { GoogleMapSearchControlSuggestion } from './google-map-search-control-suggestion'\nexport { GoogleMapsSearchControlResults } from './google-maps-search-control-results'\nexport { GoogleMapZoomControl } from './google-map-zoom-control'\nexport { GoogleMapSearchControlEmpty } from './google-map-search-control-empty'\nexport { GoogleMapsSearchControlStatus } from './google-maps-search-control-status'\nexport { GoogleMapSearchControlContent } from './google-maps-search-control-content'\nexport { GoogleMapSearchControlInputGroup } from './google-map-search-control-input-group'\nexport { GoogleMapDeckGLOverlay } from './google-map-deckgl-overlay'\nexport { GoogleMapTiltControl } from './google-map-tilt-control'\nexport { GoogleMapMarker } from './google-map-marker'\nexport { GoogleMapCluster } from './google-map-cluster'\nexport { GoogleMapMarkerLayer } from './google-map-marker-layer'\nexport { GoogleMapClusterLayer } from './google-map-cluster-layer'\n\nexport { useGoogleMapSearchControl } from './google-map-search-control.context'\nexport { GoogleMap }\n","import { Map as MapRoot } from './map'\nimport { MapControlGroup } from './map-control-group'\nimport { MapLayerGroup } from './map-layer-group'\nimport { MapLayerGroupLabel } from './map-layer-group-label'\nimport { MapLayerGroupLayerList } from './map-layer-group-layer-list'\nimport { MapLayerGroupList } from './map-layer-group-list'\nimport { MapLayerIcon } from './map-layer-icon'\nimport { MapLayerItem } from './map-layer-item'\nimport { MapLayerList } from './map-layer-list'\nimport { MapLayerName } from './map-layer-name'\nimport { MapLayerVisibilityToggle } from './map-layer-visibility-toggle'\n\nconst Map = Object.assign(MapRoot, {\n ControlGroup: MapControlGroup,\n LayerGroup: MapLayerGroup,\n LayerGroupLabel: MapLayerGroupLabel,\n LayerGroupLayerList: MapLayerGroupLayerList,\n LayerGroupList: MapLayerGroupList,\n LayerIcon: MapLayerIcon,\n LayerItem: MapLayerItem,\n LayerList: MapLayerList,\n LayerName: MapLayerName,\n LayerVisibilityToggle: MapLayerVisibilityToggle,\n})\n\nexport {\n GoogleMap,\n GoogleMapCluster,\n GoogleMapClusterLayer,\n GoogleMapDeckGLOverlay,\n GoogleMapFrame,\n GoogleMapGeolocateControl,\n GoogleMapMarker,\n GoogleMapMarkerLayer,\n GoogleMapSearchControl,\n GoogleMapSearchControlContent,\n GoogleMapSearchControlEmpty,\n GoogleMapSearchControlInput,\n GoogleMapSearchControlInputGroup,\n GoogleMapSearchControlSubmit,\n GoogleMapSearchControlSuggestion,\n GoogleMapsSearchControlResults,\n GoogleMapsSearchControlStatus,\n GoogleMapZoomControl,\n useGoogleMapSearchControl,\n GoogleMapTiltControl,\n} from './google-maps'\nexport type {\n GoogleMapProps,\n GoogleMapClusterProps,\n GoogleMapClusterLayerProps,\n GoogleMapClusterLayerItem,\n GoogleMapClusterRenderContext,\n GoogleMapDeckGLOverlayProps,\n GoogleMapGeolocateControlProps,\n GoogleMapFrameProps,\n GoogleMapMarkerLayerProps,\n GoogleMapMarkerProps,\n GoogleMapZoomControlProps,\n GoogleMapSearchControlValue,\n GoogleMapSearchControlContextProps,\n GoogleMapSearchControlProps,\n GoogleMapSearchControlInputProps,\n GoogleMapSearchControlInputGroupProps,\n GoogleMapSearchControlSubmitProps,\n GoogleMapSearchControlSuggestionProps,\n GoogleMapSearchControlEmptyProps,\n GoogleMapsSearchControlResultsProps,\n GoogleMapsSearchControlStatusProps,\n GoogleMapSearchControlContentProps,\n GoogleMapTiltControlProps,\n} from './google-maps'\n\nexport { MapControlGroup } from './map-control-group'\nexport { MapLayerList } from './map-layer-list'\nexport { MapLayerItem } from './map-layer-item'\nexport { MapLayerName } from './map-layer-name'\nexport { useMapLayerItem } from './map-layer-item.context'\nexport { useIxiaMap } from './map.context'\nexport { MapLayerVisibilityToggle } from './map-layer-visibility-toggle'\nexport { MapLayerIcon } from './map-layer-icon'\nexport { MapLayerGroup } from './map-layer-group'\nexport { MapLayerGroupLabel } from './map-layer-group-label'\nexport { MapLayerGroupLayerList } from './map-layer-group-layer-list'\nexport { MapLayerGroupList } from './map-layer-group-list'\nexport { useMapLayerGroup } from './map-layer-group.context'\nexport type {\n MapLayerIconProps,\n MapLayerListProps,\n MapLayerItemProps,\n MapLayerItemContextValue,\n MapLayerVisibilityToggleProps,\n GeometryLayerConfig,\n DeckGLLayerConfig,\n MarkerOverlayConfig,\n MapLayerConfig,\n MapLayerMetadata,\n MapControlGroupProps,\n MapLayerNameProps,\n MapLayerGroupConfig,\n MapContextValue,\n MapProps,\n MapLayerGroupProps,\n MapLayerGroupLabelProps,\n MapLayerGroupListProps,\n MapLayerGroupLayerListProps,\n MapLayerGroupContextValue,\n} from './map.types'\nexport { Map }\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\ntype NavBarProps = React.ComponentProps<'div'> & VariantProps<typeof navBarVariants>\ntype NavBarItemProps = React.ComponentProps<'button'> &\n VariantProps<typeof navBarItemVariants> & {\n isActive?: boolean\n }\ntype NavBarItemIconProps = React.ComponentProps<'div'>\ntype NavBarItemLabelProps = React.ComponentProps<'span'>\n\nconst navBarVariants = cva('flex h-fit items-center justify-between', {\n compoundVariants: [\n {\n className: 'rounded-xl',\n size: 'small',\n variant: 'floating',\n },\n {\n className: 'rounded-2xl',\n size: 'medium',\n variant: 'floating',\n },\n {\n className: 'rounded-3xl',\n size: 'large',\n variant: 'floating',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:max-w-2xl [&_[data-nav-bar-item]]:gap-3xs [&_[data-nav-bar-item]]:rounded-xl [&_[data-nav-bar-item]]:p-[min(var(--spacing-2xs),25%)]',\n itemOrientation: 'vertical',\n size: 'small',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:max-w-3xl [&_[data-nav-bar-item]]:gap-3xs [&_[data-nav-bar-item]]:rounded-2xl [&_[data-nav-bar-item]]:p-[min(var(--spacing-sm),25%)]',\n itemOrientation: 'vertical',\n size: 'medium',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:gap-2xs [&_[data-nav-bar-item]]:rounded-3xl [&_[data-nav-bar-item]]:p-[min(var(--spacing-md),25%)]',\n itemOrientation: 'vertical',\n size: 'large',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:h-lg [&_[data-nav-bar-item]]:gap-3xs [&_[data-nav-bar-item]]:rounded-lg [&_[data-nav-bar-item]]:px-xs',\n itemOrientation: 'horizontal',\n size: 'small',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:h-xl [&_[data-nav-bar-item]]:gap-2xs [&_[data-nav-bar-item]]:rounded-xl [&_[data-nav-bar-item]]:px-sm',\n itemOrientation: 'horizontal',\n size: 'medium',\n },\n {\n className:\n '[&_[data-nav-bar-item]]:h-2xl [&_[data-nav-bar-item]]:gap-xs [&_[data-nav-bar-item]]:rounded-2xl [&_[data-nav-bar-item]]:px-md',\n itemOrientation: 'horizontal',\n size: 'large',\n },\n ],\n defaultVariants: {\n itemOrientation: 'vertical',\n size: 'medium',\n variant: 'outline',\n },\n variants: {\n itemOrientation: {\n horizontal: '[&_[data-nav-bar-item]]:flex-row',\n vertical:\n 'grid auto-cols-fr grid-flow-col items-start justify-items-center [&_[data-nav-bar-item]]:min-h-0 [&_[data-nav-bar-item]]:w-full [&_[data-nav-bar-item]]:min-w-0 [&_[data-nav-bar-item]]:flex-col [&_[data-nav-bar-item]]:overflow-hidden [&_[data-nav-bar-item]_span]:max-w-full [&_[data-nav-bar-item]_span]:truncate',\n },\n size: {\n large: 'gap-sm p-md [&_span]:style-text-default-0 [&_svg]:size-lg',\n medium: 'gap-xs p-sm [&_span]:style-text-default--1 [&_svg]:size-md',\n small: 'gap-2xs p-xs [&_span]:style-text-default--2 [&_svg]:size-sm',\n },\n variant: {\n floating: 'absolute bottom-md w-fit max-w-15/16 overflow-x-auto bg-surface shadow-2xs',\n outline: 'w-full border border-border bg-surface-background',\n },\n },\n }),\n navBarItemVariants = cva(\n 'flex aspect-square items-center justify-center transition-all disabled:pointer-events-none disabled:opacity-50 data-[active=false]:hover:cursor-pointer data-[active=false]:active:scale-95 [&>svg]:shrink-0',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent:\n 'text-accent-default hover:bg-accent-container hover:text-accent-on-container data-[active=true]:bg-accent-container data-[active=true]:text-accent-on-container',\n brand:\n 'text-brand-default hover:bg-brand-container hover:text-brand-on-container data-[active=true]:bg-brand-container data-[active=true]:text-brand-on-container',\n error:\n 'text-error-default hover:bg-error-container hover:text-error-on-container data-[active=true]:bg-error-container data-[active=true]:text-error-on-container',\n info: 'text-info-default hover:bg-info-container hover:text-info-on-container data-[active=true]:bg-info-container data-[active=true]:text-info-on-container',\n neutral:\n 'text-neutral-default hover:bg-neutral-container hover:text-neutral-on-container data-[active=true]:bg-neutral-container data-[active=true]:text-neutral-on-container',\n success:\n 'text-success-default hover:bg-success-container hover:text-success-on-container data-[active=true]:bg-success-container data-[active=true]:text-success-on-container',\n warning:\n 'text-warning-default hover:bg-warning-container hover:text-warning-on-container data-[active=true]:bg-warning-container data-[active=true]:text-warning-on-container',\n },\n },\n },\n )\n\nexport { navBarVariants, navBarItemVariants }\nexport type { NavBarProps, NavBarItemProps, NavBarItemIconProps, NavBarItemLabelProps }\n","import { cn } from '@/utils/cn'\n\nimport { navBarVariants } from './nav-bar.types'\nimport type { NavBarProps } from './nav-bar.types'\n\nexport function NavBar({ itemOrientation, size, variant, className, ref, ...props }: NavBarProps) {\n return (\n <div\n className={cn(navBarVariants({ itemOrientation, size, variant }), className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { navBarItemVariants } from './nav-bar.types'\nimport type { NavBarItemProps } from './nav-bar.types'\n\nexport function NavBarItem({ isActive = false, tone, className, ref, ...props }: NavBarItemProps) {\n return (\n <button\n type=\"button\"\n data-active={isActive}\n data-nav-bar-item\n className={cn(navBarItemVariants({ tone }), className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { NavBarItemIconProps } from './nav-bar.types'\n\nexport function NavBarItemIcon({ className, ref, ...props }: NavBarItemIconProps) {\n return <div className={cn('', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport type { NavBarItemLabelProps } from './nav-bar.types'\n\nexport function NavBarItemLabel({ className, ref, ...props }: NavBarItemLabelProps) {\n return <span className={cn('', className)} ref={ref} {...props} />\n}\n","import { NavBar as NavBarRoot } from './nav-bar'\nimport { NavBarItem } from './nav-bar-item'\nimport { NavBarItemIcon } from './nav-bar-item-icon'\nimport { NavBarItemLabel } from './nav-bar-item-label'\n\nconst NavBar = Object.assign(NavBarRoot, {\n Item: NavBarItem,\n ItemIcon: NavBarItemIcon,\n ItemLabel: NavBarItemLabel,\n})\n\nexport type {\n NavBarProps,\n NavBarItemIconProps,\n NavBarItemProps,\n NavBarItemLabelProps,\n} from './nav-bar.types'\nexport { NavBarItem } from './nav-bar-item'\nexport { NavBarItemIcon } from './nav-bar-item-icon'\nexport { NavBarItemLabel } from './nav-bar-item-label'\n\nexport { NavBar }\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuProps } from './navigation-menu.types'\n\nexport function NavigationMenu({ className, ref, ...props }: NavigationMenuProps) {\n return <BaseNavigationMenu.Root className={cn('min-w-max', className)} ref={ref} {...props} />\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuContentProps } from './navigation-menu.types'\n\nexport function NavigationMenuContent({ className, ref, ...props }: NavigationMenuContentProps) {\n return (\n <BaseNavigationMenu.Content\n className={cn(\n 'h-full w-[calc(100vw-40px)] rounded-xl bg-surface p-2xs transition-[opacity,transform,translate] duration-(--duration) ease-(--easing) data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:data-[activation-direction=left]:translate-x-[50%] data-starting-style:data-[activation-direction=left]:translate-x-[-50%] data-ending-style:data-[activation-direction=right]:translate-x-[-50%] data-starting-style:data-[activation-direction=right]:translate-x-[50%] min-[500px]:w-max min-[500px]:max-w-[400px]',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuIconProps } from './navigation-menu.types'\n\nexport function NavigationMenuIcon({ className, ref, ...props }: NavigationMenuIconProps) {\n return (\n <BaseNavigationMenu.Icon\n className={cn(\n 'transition-transform duration-200 ease-[ease] data-popup-open:rotate-180',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuItemProps } from './navigation-menu.types'\n\nexport function NavigationMenuItem({ className, ref, ...props }: NavigationMenuItemProps) {\n return <BaseNavigationMenu.Item className={cn('', className)} ref={ref} {...props} />\n}\n","import type { NavigationMenu } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\ntype NavigationMenuProps = React.ComponentProps<typeof NavigationMenu.Root>\ntype NavigationMenuListProps = React.ComponentProps<typeof NavigationMenu.List>\ntype NavigationMenuItemProps = React.ComponentProps<typeof NavigationMenu.Item>\ntype NavigationMenuTriggerProps = React.ComponentProps<typeof NavigationMenu.Trigger> &\n VariantProps<typeof navigationMenuTriggerVariants> & { isActive?: boolean }\ntype NavigationMenuIconProps = React.ComponentProps<typeof NavigationMenu.Icon>\ntype NavigationMenuContentProps = React.ComponentProps<typeof NavigationMenu.Content>\ntype NavigationMenuPopupProps = React.ComponentProps<typeof NavigationMenu.Positioner>\n\nconst navigationMenuTriggerVariants = cva(\n 'flex items-center justify-center rounded-full bg-transparent no-underline transition-colors select-none hover:cursor-pointer focus-visible:outline-2 focus-visible:-outline-offset-1',\n {\n defaultVariants: {\n size: 'medium',\n tone: 'neutral',\n },\n variants: {\n size: {\n large: 'h-2xl gap-lg px-md style-text-default-2 [&>svg]:size-lg',\n medium: 'h-xl gap-md px-sm style-text-default-0 [&>svg]:size-md',\n small: 'h-lg gap-sm px-xs style-text-default--1 [&>svg]:size-sm',\n },\n tone: {\n accent:\n 'text-accent-default data-popup-open:bg-accent-container data-popup-open:text-accent-on-container',\n brand:\n 'text-brand-default data-popup-open:bg-brand-container data-popup-open:text-brand-on-container',\n error:\n 'text-error-default data-popup-open:bg-error-container data-popup-open:text-error-on-container',\n info: 'text-info-default data-popup-open:bg-info-container data-popup-open:text-info-on-container',\n neutral:\n 'text-neutral-default data-popup-open:bg-neutral-container data-popup-open:text-neutral-on-container',\n success:\n 'text-success-default data-popup-open:bg-success-container data-popup-open:text-success-on-container',\n warning:\n 'text-warning-default data-popup-open:bg-warning-container data-popup-open:text-warning-on-container',\n },\n },\n },\n ),\n navigationMenuLinkVariants = cva(\n 'rounded-xl px-sm py-xs transition-colors hover:cursor-pointer',\n {\n defaultVariants: {\n tone: 'neutral',\n },\n variants: {\n tone: {\n accent: 'text-accent-on-container hover:bg-accent-container',\n brand: 'text-brand-on-container hover:bg-brand-container',\n error: 'text-error-on-container hover:bg-error-container',\n info: 'text-info-on-container hover:bg-info-container',\n neutral: 'text-neutral-on-container hover:bg-neutral-container',\n success: 'text-success-on-container hover:bg-success-container',\n warning: 'text-warning-on-container hover:bg-warning-container',\n },\n },\n },\n )\n\ntype NavigationMenuLinkProps = VariantProps<typeof navigationMenuLinkVariants> &\n React.ComponentProps<'div'>\n\nexport type {\n NavigationMenuProps,\n NavigationMenuListProps,\n NavigationMenuItemProps,\n NavigationMenuTriggerProps,\n NavigationMenuIconProps,\n NavigationMenuContentProps,\n NavigationMenuPopupProps,\n NavigationMenuLinkProps,\n}\nexport { navigationMenuLinkVariants, navigationMenuTriggerVariants }\n","import { cn } from '@/utils/cn'\n\nimport { navigationMenuLinkVariants } from './navigation-menu.types'\nimport type { NavigationMenuLinkProps } from './navigation-menu.types'\n\nexport function NavigationMenuLink({ tone, className, ref, ...props }: NavigationMenuLinkProps) {\n return (\n <div\n className={cn(\n navigationMenuLinkVariants({\n className,\n tone,\n }),\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuListProps } from './navigation-menu.types'\n\nexport function NavigationMenuList({ className, ref, ...props }: NavigationMenuListProps) {\n return (\n <BaseNavigationMenu.List\n className={cn('relative flex gap-px', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { NavigationMenuPopupProps } from './navigation-menu.types'\n\nexport function NavigationMenuPopup({\n className,\n children,\n ref,\n ...props\n}: NavigationMenuPopupProps) {\n return (\n <BaseNavigationMenu.Portal>\n <BaseNavigationMenu.Positioner\n sideOffset={10}\n collisionPadding={{ bottom: 5, left: 20, right: 20, top: 5 }}\n collisionAvoidance={{ side: 'none' }}\n className={cn(\n 'h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-(--duration) ease-(--easing) before:absolute data-instant:transition-none data-[side=bottom]:before:inset-x-0 data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:h-2xs data-[side=left]:before:inset-y-0 data-[side=left]:before:right-[-10px] data-[side=left]:before:w-2xs data-[side=right]:before:inset-y-0 data-[side=right]:before:left-[-10px] data-[side=right]:before:w-2xs data-[side=top]:before:inset-x-0 data-[side=top]:before:bottom-[-10px] data-[side=top]:before:h-2xs',\n className,\n )}\n ref={ref}\n style={{\n ['--duration' as string]: '0.35s',\n ['--easing' as string]: 'cubic-bezier(0.22, 1, 0.36, 1)',\n }}\n {...props}\n >\n <BaseNavigationMenu.Popup className=\"relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-xl shadow-md transition-[opacity,transform,width,height,scale] duration-(--duration) ease-(--easing) outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-ending-style:ease-[ease] data-starting-style:scale-90 data-starting-style:opacity-0\">\n <BaseNavigationMenu.Arrow className=\"relative block overflow-clip transition-[left,right] duration-(--duration) ease-(--easing) before:absolute before:bottom-0 before:left-1/2 before:block before:size-[calc(6px*sqrt(2))] before:-translate-x-1/2 before:translate-y-1/2 before:rotate-45 before:border before:content-[''] data-[side=bottom]:top-[-6px] data-[side=left]:right-[-9px] data-[side=left]:rotate-90 data-[side=right]:left-[-9px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-6px] data-[side=top]:rotate-180\" />\n <BaseNavigationMenu.Viewport className=\"relative size-full overflow-hidden\" />\n {children}\n </BaseNavigationMenu.Popup>\n </BaseNavigationMenu.Positioner>\n </BaseNavigationMenu.Portal>\n )\n}\n","import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport { navigationMenuTriggerVariants } from './navigation-menu.types'\nimport type { NavigationMenuTriggerProps } from './navigation-menu.types'\n\nexport function NavigationMenuTrigger({\n size,\n tone,\n className,\n ref,\n ...props\n}: NavigationMenuTriggerProps) {\n return (\n <BaseNavigationMenu.Trigger\n className={cn(navigationMenuTriggerVariants({ size, tone }), className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { NavigationMenu as NavigationMenuRoot } from './navigation-menu'\nimport { NavigationMenuContent } from './navigation-menu-content'\nimport { NavigationMenuIcon } from './navigation-menu-icon'\nimport { NavigationMenuItem } from './navigation-menu-item'\nimport { NavigationMenuLink } from './navigation-menu-link'\nimport { NavigationMenuList } from './navigation-menu-list'\nimport { NavigationMenuPopup } from './navigation-menu-popup'\nimport { NavigationMenuTrigger } from './navigation-menu-trigger'\n\nconst NavigationMenu = Object.assign(NavigationMenuRoot, {\n Content: NavigationMenuContent,\n Icon: NavigationMenuIcon,\n Item: NavigationMenuItem,\n Link: NavigationMenuLink,\n List: NavigationMenuList,\n Popup: NavigationMenuPopup,\n Trigger: NavigationMenuTrigger,\n})\n\nexport type {\n NavigationMenuContentProps,\n NavigationMenuIconProps,\n NavigationMenuItemProps,\n NavigationMenuLinkProps,\n NavigationMenuListProps,\n NavigationMenuPopupProps,\n NavigationMenuProps,\n NavigationMenuTriggerProps,\n} from './navigation-menu.types'\n\nexport { NavigationMenuContent } from './navigation-menu-content'\nexport { NavigationMenuIcon } from './navigation-menu-icon'\nexport { NavigationMenuItem } from './navigation-menu-item'\nexport { NavigationMenuLink } from './navigation-menu-link'\nexport { NavigationMenuList } from './navigation-menu-list'\nexport { NavigationMenuPopup } from './navigation-menu-popup'\nexport { NavigationMenuTrigger } from './navigation-menu-trigger'\n\nexport { NavigationMenu }\n","import type { NumberField as BaseNumberField } from '@base-ui/react/number-field'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const numberFieldVariants = cva(\n 'flex flex-col gap-3xs data-disabled:cursor-not-allowed data-disabled:opacity-50 [&_[role=\"group\"]]:rounded-full [&_[role=\"group\"]]:outline [&_[role=\"group\"]]:outline-transparent [&_[role=\"group\"]]:transition-all aria-invalid:[&_[role=\"group\"]]:bg-error-container aria-invalid:[&_[role=\"group\"]]:outline-error-border aria-invalid:[&_[role=\"group\"]]:focus-within:outline-error-border-strong aria-invalid:[&_[role=\"group\"]]:not-focus-within:hover:outline-error-border data-[disabled]:[&_[role=\"group\"]]:cursor-not-allowed data-[invalid]:[&_[role=\"group\"]]:bg-error-container data-[invalid]:[&_[role=\"group\"]]:outline-error-border data-[invalid]:[&_[role=\"group\"]]:focus-within:outline-error-border-strong data-[invalid]:[&_[role=\"group\"]]:not-focus-within:hover:outline-error-border aria-invalid:[&_input]:text-error-on-container aria-invalid:[&_input]:caret-error-border-strong data-invalid:[&_input]:text-error-on-container data-invalid:[&_input]:caret-error-border-strong',\n {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n },\n variants: {\n size: {\n large: '[&_[role=\"group\"]]:h-2xl [&_input]:style-text-default-1',\n medium: '[&_[role=\"group\"]]:h-xl [&_input]:style-text-default-0',\n small: '[&_[role=\"group\"]]:h-lg [&_input]:style-text-default--1',\n },\n variant: {\n ghost: '',\n primary: '[&_[role=\"group\"]]:bg-surface [&_[role=\"group\"]]:shadow-2xs',\n secondary: '[&_[role=\"group\"]]:bg-neutral-container',\n },\n },\n },\n)\n\nexport type NumberFieldTypesProps = React.ComponentProps<typeof BaseNumberField.Root> &\n VariantProps<typeof numberFieldVariants> & {\n label?: string\n disableInput?: boolean\n }\n","import { NumberField as BaseNumberField } from '@base-ui/react/number-field'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { numberFieldVariants } from './number-field.types'\nimport type { NumberFieldTypesProps } from './number-field.types'\n\nfunction getCurrentValue(value: number | null | undefined, uncontrolledValue: number | undefined) {\n if (typeof value === 'number' || value === null) {\n return value\n }\n return uncontrolledValue\n}\n\nfunction getInvalidAttribute(isInvalid: boolean): string | undefined {\n if (isInvalid) {\n return ''\n }\n return undefined\n}\n\nfunction getInputLabel(label: React.ReactNode): string {\n if (typeof label === 'string') {\n return label\n }\n return 'Number value'\n}\n\nfunction NumberField({\n size,\n variant,\n children,\n label,\n disableInput: disabledInput = false,\n className,\n ref,\n ...props\n}: NumberFieldTypesProps) {\n const id = React.useId(),\n {\n min,\n max,\n value,\n defaultValue,\n onValueChange,\n 'aria-invalid': ariaInvalid,\n ...restProps\n } = props,\n [uncontrolledValue, setUncontrolledValue] = React.useState<number | undefined>(() => {\n if (typeof defaultValue === 'number') {\n return defaultValue\n }\n\n return undefined\n }),\n currentValue = getCurrentValue(value, uncontrolledValue),\n isOutOfRange =\n typeof currentValue === 'number' &&\n ((typeof min === 'number' && currentValue < min) ||\n (typeof max === 'number' && currentValue > max)),\n mergedAriaInvalid = Boolean(ariaInvalid || isOutOfRange),\n handleValueChange: NumberFieldTypesProps['onValueChange'] = (...args) => {\n const [nextValue] = args\n\n if (typeof value !== 'number' && value !== null) {\n setUncontrolledValue(nextValue ?? undefined)\n }\n\n onValueChange?.(...args)\n }\n\n return (\n <BaseNumberField.Root\n className={cn(numberFieldVariants({ className, size, variant }))}\n ref={ref}\n aria-invalid={mergedAriaInvalid}\n data-invalid={getInvalidAttribute(mergedAriaInvalid)}\n defaultValue={defaultValue}\n id={id}\n max={max}\n min={min}\n onValueChange={handleValueChange}\n value={value}\n {...restProps}\n >\n {label && (\n <BaseNumberField.ScrubArea className=\"cursor-ew-resize\">\n <label className=\"cursor-ew-resize style-text-default--1\" htmlFor={id}>\n {label}\n </label>\n <BaseNumberField.ScrubAreaCursor>\n <CursorGrowIcon />\n </BaseNumberField.ScrubAreaCursor>\n </BaseNumberField.ScrubArea>\n )}\n <BaseNumberField.Group className=\"relative flex w-full items-center gap-3xs\">\n <BaseNumberField.Decrement\n render={(stepperProps) => (\n <Button\n {...stepperProps}\n tone=\"error\"\n variant=\"ghost\"\n size={size ?? 'medium'}\n className=\"shrink-0 rounded-r-none\"\n >\n <Icon name=\"minus\" />\n </Button>\n )}\n />\n <BaseNumberField.Input\n aria-label={getInputLabel(label)}\n disabled={disabledInput}\n className={cn('w-full text-center focus:outline-none', children && 'text-right')}\n />\n {children && (\n <div\n className={cn(\n 'w-full text-left text-on-surface-variant',\n size === 'small' && 'style-text-default--1',\n size === 'medium' && 'style-text-default-0',\n size === 'large' && 'style-text-default-1',\n )}\n >\n {children}\n </div>\n )}\n <BaseNumberField.Increment\n render={(stepperProps) => (\n <Button\n {...stepperProps}\n tone=\"success\"\n variant=\"ghost\"\n size={size ?? 'medium'}\n className=\"shrink-0 rounded-l-none\"\n >\n <Icon name=\"add\" />\n </Button>\n )}\n />\n </BaseNumberField.Group>\n </BaseNumberField.Root>\n )\n}\n\nfunction CursorGrowIcon(props: React.ComponentProps<'svg'>) {\n return (\n <svg\n fill=\"black\"\n height=\"14\"\n stroke=\"white\"\n viewBox=\"0 0 24 14\"\n width=\"26\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <title>Resize cursor</title>\n <path d=\"M19.5 5.5L6.49737 5.51844V2L1 6.9999L6.5 12L6.49737 8.5L19.5 8.5V12L25 6.9999L19.5 2V5.5Z\" />\n </svg>\n )\n}\n\nexport { NumberField }\n","import { PreviewCard as BasePreviewCard } from '@base-ui/react'\n\nimport type { PreviewCardProps } from './preview-card.types'\n\nexport function PreviewCard({ ...props }: PreviewCardProps) {\n return <BasePreviewCard.Root {...props} />\n}\n","import { PreviewCard as BasePreviewCard } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { PreviewCardPopupProps } from './preview-card.types'\n\nexport function PreviewCardPopup({ className, children, ref, ...props }: PreviewCardPopupProps) {\n return (\n <BasePreviewCard.Portal>\n <BasePreviewCard.Positioner className={cn('', className)} ref={ref} {...props}>\n <BasePreviewCard.Popup className=\"relative h-(--popup-height,auto) w-(--popup-width,auto) origin-(--transform-origin) rounded-xl bg-surface shadow-md transition-[transform,opacity] duration-100 ease-out data-ending-style:transform-[scale(0.98)] data-ending-style:opacity-0 data-starting-style:transform-[scale(0.98)] data-starting-style:opacity-0\">\n {children}\n </BasePreviewCard.Popup>\n </BasePreviewCard.Positioner>\n </BasePreviewCard.Portal>\n )\n}\n","import { PreviewCard as BasePreviewCard } from '@base-ui/react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { PreviewCardTriggerProps } from './preview-card.types'\n\nexport function PreviewCardTrigger({ className, ref, ...props }: PreviewCardTriggerProps) {\n return <BasePreviewCard.Trigger className={cn('', className)} ref={ref} {...props} />\n}\n","import { PreviewCard as PreviewCardRoot } from './preview-card'\nimport { PreviewCardPopup } from './preview-card-popup'\nimport { PreviewCardTrigger } from './preview-card-trigger'\n\nconst PreviewCard = Object.assign(PreviewCardRoot, {\n Popup: PreviewCardPopup,\n Trigger: PreviewCardTrigger,\n})\n\nexport type {\n PreviewCardPopupProps,\n PreviewCardProps,\n PreviewCardTriggerProps,\n} from './preview-card.types'\nexport { PreviewCardPopup } from './preview-card-popup'\nexport { PreviewCardTrigger } from './preview-card-trigger'\n\nexport { PreviewCard }\n","import { cn } from '@/utils/cn'\n\nimport type { ProfileProps } from './profile.types'\n\nexport function Profile({ className, ref, ...props }: ProfileProps) {\n return (\n <div\n className={cn('flex w-full items-center gap-sm rounded-full', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProfileActionProps } from './profile.types'\n\nexport function ProfileAction({ className, ref, ...props }: ProfileActionProps) {\n return (\n <div\n className={cn('ml-auto text-on-surface-variant [&>svg]:size-sm', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProfileContentProps } from './profile.types'\n\nexport function ProfileContent({ compact, className, ref, ...props }: ProfileContentProps) {\n return (\n <div\n className={cn('flex flex-col items-start justify-start', compact && 'hidden', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProfileNameProps } from './profile.types'\n\nexport function ProfileName({ className, ref, ...props }: ProfileNameProps) {\n return (\n <span\n className={cn('flex items-center gap-xs style-text-default-0 [&>svg]:size-md', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProfileSubnameProps } from './profile.types'\n\nexport function ProfileSubname({ className, ref, ...props }: ProfileSubnameProps) {\n return (\n <span\n className={cn('style-text-default--2 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Profile as ProfileRoot } from './profile'\nimport { ProfileAction } from './profile-action'\nimport { ProfileContent } from './profile-content'\nimport { ProfileName } from './profile-name'\nimport { ProfileSubname } from './profile-subname'\n\nconst Profile = Object.assign(ProfileRoot, {\n Action: ProfileAction,\n Content: ProfileContent,\n Name: ProfileName,\n Subname: ProfileSubname,\n})\n\nexport type {\n ProfileProps,\n ProfileNameProps,\n ProfileSubnameProps,\n ProfileActionProps,\n ProfileContentProps,\n} from './profile.types'\nexport { ProfileName } from './profile-name'\nexport { ProfileSubname } from './profile-subname'\nexport { ProfileAction } from './profile-action'\nexport { ProfileContent } from './profile-content'\n\nexport { Profile }\n","import { useId } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ProgressProps } from './progress.types'\n\nconst CURRENT_CHILD_DECREMENT = 1,\n CURRENT_CHILD_INCREMENT = 2\n\nexport function Progress({ currentIndex, className, ref, ...props }: ProgressProps) {\n const uid = useId().replace(/:/g, ''),\n scope = `progress-${uid}`,\n current = currentIndex * CURRENT_CHILD_INCREMENT - CURRENT_CHILD_DECREMENT\n\n return (\n <>\n <style>\n {`\n\t\t .${scope} > :nth-child(${current}) > :first-child {\n\t\t\tbackground-color: var(--color-accent-container);\n\t\t\tborder: 1px solid var(--color-accent-border-strong);\n\t\t\tcolor: var(--color-accent-on-container);\n\t\t }\n\t\t .${scope} > :nth-child(-n+${current - CURRENT_CHILD_DECREMENT}) > :first-child {\n\t\t\tbackground-color: var(--color-accent-default);\n\t\t\tborder: none;\n\t\t\tcolor: var(--color-accent-on-default);\n\t\t\tbox-shadow: none;\n\t\t }\n\t\t`}\n </style>\n\n <div\n className={cn('flex w-full items-center justify-center gap-2xs', scope, className)}\n ref={ref}\n {...props}\n />\n </>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProgressBarProps } from './progress.types'\n\nexport function ProgressBar({ className, ref, ...props }: ProgressBarProps) {\n return (\n <div className=\"w-full\">\n <div\n className={cn(\n 'h-3xs w-full grow rounded-full bg-accent-default/20 transition-colors ease-in-out',\n className,\n )}\n ref={ref}\n {...props}\n />\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProgressDescriptionProps } from './progress.types'\n\nexport function ProgressDescription({\n className,\n children,\n ref,\n ...props\n}: ProgressDescriptionProps) {\n return (\n <span\n data-slot=\"progress-description\"\n className={cn('block text-center style-text-prose--2 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProgressTitleProps } from './progress.types'\n\nexport function ProgressTitle({ className, children, ref, ...props }: ProgressTitleProps) {\n return (\n <span\n data-slot=\"progress-title\"\n className={cn('block text-center style-text-strong--2 text-on-surface', className)}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n}\n","import { Children, isValidElement } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { ProgressDescription } from './progress-description'\nimport { ProgressTitle } from './progress-title'\nimport type { ProgressIndicatorProps } from './progress.types'\n\nconst META_TYPES = new Set<unknown>([ProgressTitle, ProgressDescription]),\n EMPTY = 0\n\nexport function ProgressIndicator({ className, children, ref, ...props }: ProgressIndicatorProps) {\n const items = Children.toArray(children),\n isMeta = (child: (typeof items)[number]) => isValidElement(child) && META_TYPES.has(child.type),\n meta = items.filter(isMeta),\n inner = items.filter((child) => !isMeta(child))\n\n return (\n <div className=\"relative flex shrink-0 flex-col items-center\">\n <div\n className={cn(\n 'flex size-md shrink-0 flex-col items-center justify-center rounded-full border border-neutral-border bg-neutral-container text-center font-body text-xs leading-none font-medium text-accent-default transition-colors ease-in-out [&_svg]:size-xs',\n className,\n )}\n ref={ref}\n {...props}\n >\n {inner}\n </div>\n {meta.length > EMPTY && (\n <div className=\"absolute top-full left-1/2 flex w-3xl -translate-x-1/2 translate-y-2xs flex-col gap-3xs\">\n {meta}\n </div>\n )}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { ProgressLabelProps } from './progress.types'\n\nexport function ProgressLabel({ className, children, ref, ...props }: ProgressLabelProps) {\n return (\n <span\n data-slot=\"progress-label\"\n className={cn('inline-flex items-center justify-center', className)}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n}\n","import { Progress as ProgressRoot } from './progress'\nimport { ProgressBar } from './progress-bar'\nimport { ProgressDescription } from './progress-description'\nimport { ProgressIndicator } from './progress-indicator'\nimport { ProgressLabel } from './progress-label'\nimport { ProgressTitle } from './progress-title'\n\nconst Progress = Object.assign(ProgressRoot, {\n Bar: ProgressBar,\n Description: ProgressDescription,\n Indicator: ProgressIndicator,\n Label: ProgressLabel,\n Title: ProgressTitle,\n})\n\nexport type {\n ProgressBarProps,\n ProgressDescriptionProps,\n ProgressIndicatorProps,\n ProgressLabelProps,\n ProgressProps,\n ProgressTitleProps,\n} from './progress.types'\nexport { ProgressBar } from './progress-bar'\nexport { ProgressDescription } from './progress-description'\nexport { ProgressIndicator } from './progress-indicator'\nexport { ProgressLabel } from './progress-label'\nexport { ProgressTitle } from './progress-title'\nexport { Progress }\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const radarPingVariants = cva('absolute top-[0px] right-[0px] flex', {\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n size: {\n large: '-mt-xs -mr-xs style-text-default-0 [&_[data-dot]]:size-lg',\n medium: '-mt-2xs -mr-2xs style-text-default--1 [&_[data-dot]]:size-md',\n small: '-mt-3xs -mr-3xs style-text-default--2 [&_[data-dot]]:size-sm',\n },\n tone: {\n accent: '[&_[data-dot]]:bg-accent-default [&_[data-radar-ping]]:bg-accent-default',\n brand: '[&_[data-dot]]:bg-brand-default [&_[data-radar-ping]]:bg-brand-default',\n error: '[&_[data-dot]]:bg-error-default [&_[data-radar-ping]]:bg-error-default',\n info: '[&_[data-dot]]:bg-info-default [&_[data-radar-ping]]:bg-info-default',\n neutral: '[&_[data-dot]]:bg-neutral-default [&_[data-radar-ping]]:bg-neutral-default',\n success: '[&_[data-dot]]:bg-success-default [&_[data-radar-ping]]:bg-success-default',\n warning: '[&_[data-dot]]:bg-warning-default [&_[data-radar-ping]]:bg-warning-default',\n },\n },\n})\n\nexport type RadarPingProps = React.ComponentProps<'div'> &\n VariantProps<typeof radarPingVariants> & {\n hidePing?: boolean\n }\n","import { cn } from '@/utils/cn'\n\nimport { radarPingVariants } from './radar-ping.types'\nimport type { RadarPingProps } from './radar-ping.types'\n\nexport function RadarPing({\n hidePing = false,\n tone = 'brand',\n size = 'medium',\n className,\n children,\n ref,\n ...props\n}: RadarPingProps) {\n return (\n <div className={cn(radarPingVariants({ className, size, tone }))} ref={ref} {...props}>\n {!hidePing && (\n <span\n className=\"absolute inline-flex size-full animate-ping rounded-full opacity-75\"\n data-radar-ping\n />\n )}\n <span\n className=\"relative flex items-center justify-center rounded-full text-surface\"\n data-dot\n >\n {children}\n </span>\n </div>\n )\n}\n","import { Separator as BaseResizableSeparator } from 'react-resizable-panels'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ResizeableHandleProps } from './resizeable.types'\n\nexport function ResizeableHandle({\n withHandle = false,\n className,\n ...props\n}: ResizeableHandleProps) {\n return (\n <BaseResizableSeparator\n className={cn(\n 'relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-[0px] after:left-1/2 after:w-px after:-translate-x-1/2 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full after:aria-[orientation=horizontal]:left-[0px] after:aria-[orientation=horizontal]:h-px after:aria-[orientation=horizontal]:w-full after:aria-[orientation=horizontal]:translate-x-[0px] after:aria-[orientation=horizontal]:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90',\n className,\n )}\n data-slot=\"resizable-handle\"\n {...props}\n >\n {withHandle && <div className=\"z-10 flex h-md w-3xs shrink-0 rounded-lg bg-border-strong\" />}\n </BaseResizableSeparator>\n )\n}\n","import { Panel as BaseResizablePanel } from 'react-resizable-panels'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ResizeablePanelProps } from './resizeable.types'\n\nexport function ResizeablePanel({ className, ...props }: ResizeablePanelProps) {\n return <BaseResizablePanel className={cn('', className)} data-slot=\"resizable-panel\" {...props} />\n}\n","import { Group as BaseResizableGroup } from 'react-resizable-panels'\n\nimport { cn } from '@/utils/cn'\n\nimport type { ResizeablePanelGroupProps } from './resizeable.types'\n\nexport function ResizeablePanelGroup({ className, ...props }: ResizeablePanelGroupProps) {\n return (\n <BaseResizableGroup\n className={cn('flex h-full aria-[orientation=vertical]:flex-col', className)}\n data-slot=\"resizable-panel-group\"\n {...props}\n />\n )\n}\n","import type { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport type { ComponentProps } from 'react'\n\nexport const scrollAreaVariants = cva('overflow-hidden rounded-xl', {\n defaultVariants: {\n orientation: 'vertical',\n variant: 'default',\n },\n variants: {\n orientation: {\n horizontal: 'h-full',\n vertical: '',\n },\n variant: {\n default:\n 'bg-surface-low **:data-viewport:rounded-xl **:data-viewport:bg-surface-low **:data-viewport:p-sm **:data-viewport:inset-shadow-2xs **:data-viewport:before:pointer-events-none **:data-viewport:before:absolute **:data-viewport:before:top-0 **:data-viewport:before:left-0 **:data-viewport:before:block **:data-viewport:before:h-[min(40px,var(--scroll-area-overflow-y-start))] **:data-viewport:before:w-full **:data-viewport:before:bg-linear-to-b **:data-viewport:before:from-shadow **:data-viewport:before:to-transparent **:data-viewport:before:transition-[height] **:data-viewport:before:duration-100 **:data-viewport:before:ease-out **:data-viewport:before:content-[\"\"] **:data-viewport:before:[--scroll-area-overflow-y-start:inherit] **:data-viewport:after:pointer-events-none **:data-viewport:after:absolute **:data-viewport:after:bottom-0 **:data-viewport:after:left-0 **:data-viewport:after:block **:data-viewport:after:h-[min(40px,var(--scroll-area-overflow-y-end,40px))] **:data-viewport:after:w-full **:data-viewport:after:bg-linear-to-t **:data-viewport:after:from-shadow **:data-viewport:after:to-transparent **:data-viewport:after:transition-[height] **:data-viewport:after:duration-100 **:data-viewport:after:ease-out **:data-viewport:after:content-[\"\"] **:data-viewport:after:[--scroll-area-overflow-y-end:inherit]',\n ghost: '',\n outline: 'border border-border **:data-viewport:p-sm',\n },\n },\n})\n\nexport type ScrollAreaProps = ComponentProps<typeof BaseScrollArea.Root> &\n VariantProps<typeof scrollAreaVariants>\n","import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area'\n\nimport { cn } from '@/utils/cn'\n\nimport { scrollAreaVariants } from './scroll-area.types'\nimport type { ScrollAreaProps } from './scroll-area.types'\n\nexport function ScrollArea({\n orientation,\n variant,\n className,\n children,\n ref,\n ...props\n}: ScrollAreaProps) {\n return (\n <BaseScrollArea.Root\n className={cn(className, scrollAreaVariants({ orientation, variant }))}\n ref={ref}\n {...props}\n >\n <BaseScrollArea.Viewport\n data-viewport\n tabIndex={0}\n className={cn(\n 'flex h-full gap-xs overscroll-contain',\n orientation === 'horizontal' && 'flex-row pb-md',\n orientation === 'vertical' && 'flex-col',\n )}\n >\n {children}\n </BaseScrollArea.Viewport>\n <BaseScrollArea.Scrollbar\n data-scrollbar\n className={cn(\n 'ml-sm opacity-0 transition-opacity delay-300 hover:cursor-pointer data-hovering:opacity-100 data-hovering:delay-0 data-hovering:duration-75 data-scrolling:opacity-100 data-scrolling:delay-0 data-scrolling:duration-75',\n orientation === 'vertical' && 'my-2xs mr-3xs w-2xs',\n orientation === 'horizontal' && 'mx-xs mb-xs h-2xs',\n )}\n orientation={orientation!}\n >\n <BaseScrollArea.Thumb className=\"size-full rounded-full bg-accent-default shadow-xs\" />\n </BaseScrollArea.Scrollbar>\n <BaseScrollArea.Corner />\n </BaseScrollArea.Root>\n )\n}\n","import React from 'react'\n\ninterface Device {\n name: 'mobile' | 'tablet' | 'desktop'\n query: string\n}\n\nconst devices: Device[] = [\n { name: 'mobile', query: '(max-width: 767px), (orientation: landscape) and (max-height: 500px)' },\n { name: 'tablet', query: '(min-width: 768px) and (max-width: 1023px)' },\n { name: 'desktop', query: '(min-width: 1024px)' },\n]\n\nfunction getInitialMatch(query: string): boolean {\n if (typeof globalThis.matchMedia !== 'function') {\n return false\n }\n return globalThis.matchMedia(query).matches\n}\n\nexport function useMediaQuery(deviceName: Device['name']) {\n const device = devices.find((candidate) => candidate.name === deviceName)!,\n [matches, setMatches] = React.useState(() => getInitialMatch(device.query))\n\n React.useEffect(() => {\n const media = globalThis.matchMedia(device.query),\n update = () => setMatches(media.matches)\n\n update()\n\n media.addEventListener('change', update)\n\n return () => media.removeEventListener('change', update)\n }, [device])\n\n return matches\n}\n","import { useMap } from '@vis.gl/react-google-maps'\nimport type { BBox } from 'geojson'\nimport { useEffect, useState } from 'react'\n\ninterface UseGoogleMapViewportOptions {\n padding?: number\n}\n\ninterface UseGoogleMapViewportResult {\n bounds: BBox\n zoom: number\n}\n\nconst DEFAULT_PADDING = 0,\n MAX_LONGITUDE = 180,\n MIN_LONGITUDE = -MAX_LONGITUDE,\n MAX_LATITUDE = 90,\n MIN_LATITUDE = -MAX_LATITUDE,\n INITIAL_BOUNDS: BBox = [MIN_LONGITUDE, MIN_LATITUDE, MAX_LONGITUDE, MAX_LATITUDE],\n INITIAL_ZOOM = 0,\n WORLD_LONGITUDE_SPAN = 360,\n ZOOM_BASE = 2,\n TILE_SIZE = 256\n\nexport function useGoogleMapViewport({\n padding = DEFAULT_PADDING,\n}: UseGoogleMapViewportOptions = {}): UseGoogleMapViewportResult {\n const map = useMap(),\n [bounds, setBounds] = useState<BBox>(INITIAL_BOUNDS),\n [zoom, setZoom] = useState(INITIAL_ZOOM)\n\n useEffect(() => {\n if (!map) {\n return undefined\n }\n\n const updateViewport = () => {\n const mapBounds = map.getBounds(),\n mapZoom = map.getZoom(),\n southwest = mapBounds?.getSouthWest(),\n northeast = mapBounds?.getNorthEast(),\n paddingDegrees =\n (WORLD_LONGITUDE_SPAN / (ZOOM_BASE ** (mapZoom ?? INITIAL_ZOOM) * TILE_SIZE)) * padding\n\n if (!southwest || !northeast || mapZoom === undefined) {\n return\n }\n\n setBounds([\n southwest.lng() - paddingDegrees,\n Math.max(MIN_LATITUDE, southwest.lat() - paddingDegrees),\n northeast.lng() + paddingDegrees,\n Math.min(MAX_LATITUDE, northeast.lat() + paddingDegrees),\n ])\n setZoom(mapZoom)\n },\n listener = map.addListener('idle', updateViewport)\n\n updateViewport()\n return () => listener.remove()\n }, [map, padding])\n\n return { bounds, zoom }\n}\n\nexport type { UseGoogleMapViewportOptions, UseGoogleMapViewportResult }\n","'use no memo'\n\nimport type { BBox, FeatureCollection, GeoJsonProperties, Point } from 'geojson'\nimport { useCallback, useMemo } from 'react'\nimport Supercluster from 'supercluster'\nimport type { ClusterFeature, ClusterProperties, Options, PointFeature } from 'supercluster'\n\nconst DEFAULT_OFFSET = 0\n\ninterface UseSuperclusterOptions<\n Properties extends GeoJsonProperties,\n ClusterPropertiesValue extends GeoJsonProperties,\n> {\n geojson: FeatureCollection<Point, Properties>\n bounds: BBox\n zoom: number\n options?: Options<Properties, ClusterPropertiesValue>\n}\n\ninterface UseSuperclusterResult<\n Properties extends GeoJsonProperties,\n ClusterPropertiesValue extends GeoJsonProperties,\n> {\n clusters: (ClusterFeature<ClusterPropertiesValue> | PointFeature<Properties>)[]\n getChildren: (\n clusterId: number,\n ) => (ClusterFeature<ClusterPropertiesValue> | PointFeature<Properties>)[]\n getClusterExpansionZoom: (clusterId: number) => number\n getLeaves: (clusterId: number, limit?: number, offset?: number) => PointFeature<Properties>[]\n}\n\nexport function useSupercluster<\n Properties extends GeoJsonProperties,\n ClusterPropertiesValue extends GeoJsonProperties = ClusterProperties,\n>({\n geojson,\n bounds,\n zoom,\n options,\n}: UseSuperclusterOptions<Properties, ClusterPropertiesValue>): UseSuperclusterResult<\n Properties,\n ClusterPropertiesValue\n> {\n // Supercluster owns a mutable index; memoize it only when its input features or options change.\n // eslint-disable-next-line react/preserve-manual-memoization\n const index = useMemo(() => {\n const clusterIndex = new Supercluster<Properties, ClusterPropertiesValue>(options)\n return clusterIndex.load(geojson.features)\n }, [geojson.features, options]),\n clusters = useMemo(() => index.getClusters(bounds, zoom), [bounds, index, zoom]),\n getChildren = useCallback((clusterId: number) => index.getChildren(clusterId), [index]),\n getClusterExpansionZoom = useCallback(\n (clusterId: number) => index.getClusterExpansionZoom(clusterId),\n [index],\n ),\n getLeaves = useCallback(\n (clusterId: number, limit = Infinity, offset = DEFAULT_OFFSET) =>\n index.getLeaves(clusterId, limit, offset),\n [index],\n )\n\n return { clusters, getChildren, getClusterExpansionZoom, getLeaves }\n}\n\nexport type { UseSuperclusterOptions, UseSuperclusterResult }\n","import type { Theme, ThemeValue } from './theme.types'\n\nconst THEME_STORAGE_KEY = 'ixia-ui-theme',\n DEFAULT_THEME: ThemeValue = 'light',\n getThemeByValue = (value: ThemeValue, themes: Theme[]): Theme | undefined =>\n themes.find((themeItem) => themeItem.value === value)\n\nexport { THEME_STORAGE_KEY, DEFAULT_THEME, getThemeByValue }\n","import { createContext, useContext, useEffect, useState } from 'react'\n\nimport { DEFAULT_THEME, THEME_STORAGE_KEY } from './theme.constants.ts'\nimport type { ThemeProviderProps, ThemeProviderState, ThemeValue } from './theme.types.ts'\n\nconst initialState: ThemeProviderState = {\n setTheme: () => undefined,\n theme: 'system',\n },\n ThemeProviderContext = createContext<ThemeProviderState>(initialState)\n\nfunction getStoredTheme(storageKey: string, fallback: ThemeValue): ThemeValue {\n const stored = localStorage.getItem(storageKey)\n if (stored === 'light' || stored === 'dark' || stored === 'system') {\n return stored\n }\n return fallback\n}\n\nfunction ThemeProvider({\n children,\n defaultTheme = DEFAULT_THEME,\n storageKey = THEME_STORAGE_KEY,\n ...props\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<ThemeValue>(() => getStoredTheme(storageKey, defaultTheme))\n\n useEffect(() => {\n const root = globalThis.document.documentElement\n root.setAttribute('data-theme', theme)\n localStorage.setItem(storageKey, theme)\n }, [theme, storageKey])\n\n return (\n <ThemeProviderContext.Provider {...props} value={{ setTheme, theme }}>\n {children}\n </ThemeProviderContext.Provider>\n )\n}\n\nfunction useTheme() {\n const context = useContext(ThemeProviderContext)\n\n if (context === undefined) {\n throw new Error('useTheme must be used within a ThemeProvider')\n }\n\n return context\n}\n\nexport { ThemeProvider, useTheme }\n","import React from 'react'\n\nimport { useMediaQuery } from '@/hooks'\nimport { cn } from '@/utils/cn'\n\ntype SidebarContextProps = React.ComponentProps<'div'> & {\n id: string\n defaultOpen?: boolean\n trigger?: () => void\n open?: boolean\n setOpen?: (open: boolean) => void\n isMobile?: boolean\n side?: 'left' | 'right'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}\n\n// 7 days in seconds\nconst SIDEBAR_COOKIE_MAX_AGE_SECONDS = 604_800,\n // oxlint-disable-next-line unicorn/no-null\n SidebarContext = React.createContext<SidebarContextProps | null>(null),\n useSidebar = () => {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider')\n }\n return context\n }\n\nfunction resolveOpenState(\n value: boolean | ((open: boolean) => boolean),\n previous: boolean,\n): boolean {\n if (typeof value === 'function') {\n return value(previous)\n }\n return value\n}\n\nfunction SidebarProvider({\n id,\n defaultOpen = true,\n side = 'left',\n collapsible = 'icon',\n className,\n ref,\n ...props\n}: SidebarContextProps) {\n const cookieName = `sidebar-state-${id}`,\n [openState, setOpenState] = React.useState<boolean>(defaultOpen),\n [mobileOpen, setMobileOpen] = React.useState(false),\n isMobile = useMediaQuery('mobile'),\n setOpen = (value: boolean | ((open: boolean) => boolean)) => {\n if (isMobile) {\n setMobileOpen((prev) => resolveOpenState(value, prev))\n return\n }\n setOpenState((prev) => {\n const nextOpen = resolveOpenState(value, prev)\n\n document.cookie = [\n `${cookieName}=${encodeURIComponent(String(nextOpen))}`,\n 'path=/',\n `max-age=${SIDEBAR_COOKIE_MAX_AGE_SECONDS}`,\n 'samesite=lax',\n ].join('; ')\n\n return nextOpen\n })\n },\n trigger = () => setOpen((prev) => !prev)\n\n React.useEffect(() => {\n if (!isMobile) {\n setMobileOpen(false)\n }\n }, [isMobile])\n\n let effectiveCollapsible = collapsible,\n open = openState\n if (isMobile) {\n effectiveCollapsible = 'offcanvas'\n open = mobileOpen\n }\n\n return (\n <SidebarContext.Provider\n value={{\n collapsible: effectiveCollapsible,\n defaultOpen,\n id,\n isMobile,\n open,\n setOpen,\n side,\n trigger,\n }}\n >\n <div\n className={cn(\n 'relative flex min-h-0 w-full min-w-0 flex-1',\n side === 'left' && 'flex flex-row',\n side === 'right' && 'flex flex-row-reverse',\n className,\n )}\n ref={ref}\n {...props}\n />\n </SidebarContext.Provider>\n )\n}\n\nexport { SidebarProvider, useSidebar }\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarProps } from './sidebar.types'\n\nconst DEFAULT_SIDEBAR_WIDTH = 400\n\ninterface SidebarLayoutProps {\n collapsible?: 'offcanvas' | 'icon' | 'none'\n open?: boolean\n isMobile?: boolean\n width: string | number\n}\n\nfunction getOffcanvasWidth(\n open: boolean | undefined,\n isMobile: boolean | undefined,\n fullWidth: React.CSSProperties,\n): React.CSSProperties {\n if (!open) {\n return { width: '0px' }\n }\n if (isMobile) {\n return { width: '33.333333%' }\n }\n return fullWidth\n}\n\nfunction getIconWidth(\n open: boolean | undefined,\n isMobile: boolean | undefined,\n fullWidth: React.CSSProperties,\n): React.CSSProperties {\n if (open) {\n return fullWidth\n }\n if (isMobile) {\n return { width: '0px' }\n }\n return { width: '80px' }\n}\n\nfunction getWidthStyle({\n collapsible,\n open,\n isMobile,\n width,\n}: SidebarLayoutProps): React.CSSProperties {\n const fullWidth: React.CSSProperties = { width: `${width}px` }\n if (collapsible === 'offcanvas') {\n return getOffcanvasWidth(open, isMobile, fullWidth)\n }\n if (collapsible === 'icon') {\n return getIconWidth(open, isMobile, fullWidth)\n }\n return fullWidth\n}\n\nfunction getGapClasses({ collapsible, open }: SidebarLayoutProps) {\n if (collapsible === 'none') {\n return 'gap-lg'\n }\n if (open) {\n return 'gap-lg'\n }\n return 'gap-sm'\n}\n\nfunction getPositionClasses({ collapsible, open, isMobile }: SidebarLayoutProps) {\n if ((collapsible === 'offcanvas' || collapsible === 'icon') && !open && isMobile) {\n return 'absolute z-50 -translate-x-full'\n }\n\n if ((collapsible === 'offcanvas' || collapsible === 'icon') && open && isMobile) {\n return 'absolute z-50'\n }\n\n return ''\n}\n\nexport function Sidebar({\n tone = 'primary',\n width = DEFAULT_SIDEBAR_WIDTH,\n className,\n ...props\n}: SidebarProps) {\n const { open, setOpen, isMobile, collapsible, side } = useSidebar(),\n sidebarRef = React.useRef<HTMLDivElement>(null),\n isHidden = collapsible === 'offcanvas' && !open,\n layout: SidebarLayoutProps = { collapsible, isMobile, open, width }\n\n React.useEffect(() => {\n const handleOutsideClick = (event: MouseEvent) => {\n if (\n sidebarRef.current &&\n event.target instanceof Node &&\n !sidebarRef.current.contains(event.target) &&\n isMobile &&\n open &&\n setOpen\n ) {\n setOpen(false)\n }\n }\n\n document.addEventListener('click', handleOutsideClick)\n\n return () => {\n document.removeEventListener('click', handleOutsideClick)\n }\n }, [open, setOpen, isMobile])\n\n return (\n <div\n className={cn(\n 'sticky left-[0px] flex h-full max-h-dvh min-h-0 shrink-0 flex-col overflow-hidden border-border bg-surface transition-[width,transform] duration-300 ease-in-out',\n className,\n tone === 'primary' && 'bg-surface-background',\n tone === 'secondary' && 'bg-surface',\n tone === 'ghost' && 'bg-transparent',\n getGapClasses(layout),\n getPositionClasses(layout),\n isHidden && 'invisible',\n collapsible === 'offcanvas' && !open && 'border-none',\n open && 'p-md',\n collapsible === 'icon' && !open && 'py-md',\n isMobile && 'border-none',\n side === 'left' && 'border-r',\n side === 'right' && 'border-l',\n )}\n ref={sidebarRef}\n style={getWidthStyle(layout)}\n {...props}\n aria-hidden={isHidden || undefined}\n inert={isHidden}\n />\n )\n}\n","import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area'\n\nimport { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarContentProps } from './sidebar.types'\n\nexport function SidebarContent({ className, children, ref, ...props }: SidebarContentProps) {\n const { open } = useSidebar()\n\n return (\n <BaseScrollArea.Root\n className={cn(\n 'min-h-0 flex-1 overflow-hidden rounded-xl transition-all duration-300 ease-in-out',\n !open && 'w-fit self-center',\n className,\n )}\n ref={ref}\n {...props}\n >\n <BaseScrollArea.Viewport\n className={cn(\n 'flex h-full scrollbar-none flex-col items-center overflow-y-auto overscroll-contain [&::-webkit-scrollbar]:hidden',\n 'before:pointer-events-none before:absolute before:top-0 before:left-0 before:block before:h-[min(40px,var(--scroll-area-overflow-y-start))] before:w-full before:bg-linear-to-b before:from-shadow/35 before:to-transparent before:transition-[height] before:duration-100 before:ease-out before:content-[\"\"] before:[--scroll-area-overflow-y-start:inherit]',\n 'after:pointer-events-none after:absolute after:bottom-0 after:left-0 after:block after:h-[min(40px,var(--scroll-area-overflow-y-end,40px))] after:w-full after:bg-linear-to-t after:from-shadow/35 after:to-transparent after:transition-[height] after:duration-100 after:ease-out after:content-[\"\"] after:[--scroll-area-overflow-y-end:inherit]',\n open && 'gap-md',\n !open && 'gap-xs px-3xs pt-3xs',\n )}\n >\n {children}\n </BaseScrollArea.Viewport>\n </BaseScrollArea.Root>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarFooterProps } from './sidebar.types'\n\nexport function SidebarFooter({ className, children, ref, ...props }: SidebarFooterProps) {\n const { open, collapsible } = useSidebar(),\n isExpanded = collapsible === 'none' || open\n return (\n <div\n className={cn(\n 'flex shrink-0 animate-in items-center truncate p-3xs transition-all duration-300 ease-in-out',\n open && 'justify-start fade-in-0',\n !open && 'justify-center self-center fade-out-0',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children(isExpanded)}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SidebarGroupProps } from './sidebar.types'\n\nexport function SidebarGroup({ className, ref, ...props }: SidebarGroupProps) {\n return (\n <div\n className={cn('flex w-full flex-col items-start gap-2xs not-last-of-type:pb-md', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SidebarGroupContentProps } from './sidebar.types'\n\nexport function SidebarGroupContent({ className, ref, ...props }: SidebarGroupContentProps) {\n return <div className={cn('flex w-full flex-col gap-3xs', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarGroupLabelProps } from './sidebar.types'\n\nexport function SidebarGroupLabel({ className, ref, ...props }: SidebarGroupLabelProps) {\n const { open, collapsible } = useSidebar(),\n showLabel = collapsible === 'none' || open\n\n if (!showLabel) {\n return undefined\n }\n\n return (\n <span\n className={cn(\n 'inline-flex h-md w-full items-center justify-between truncate pr-3xs pl-md style-text-default--1 text-on-surface-variant transition-all duration-200 ease-out',\n collapsible !== 'none' && open && 'animate-in fade-in-0 slide-in-from-left-2',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarHeaderProps } from './sidebar.types'\n\nexport function SidebarHeader({ className, children, ref, ...props }: SidebarHeaderProps) {\n const { open, collapsible } = useSidebar(),\n isExpanded = collapsible === 'none' || open\n\n return (\n <div\n className={cn(\n 'flex shrink-0 items-center justify-start gap-xs truncate style-text-strong-1 transition-all duration-200 ease-out',\n !open && 'self-center',\n open && 'h-2xl pr-3xs pl-xs',\n open && 'justify-between',\n collapsible !== 'none' && 'animate-in',\n isExpanded && 'fade-in-0',\n !isExpanded && 'fade-out-0',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children(isExpanded)}\n </div>\n )\n}\n","import { cn } from '@/utils'\n\nimport type { SidebarInsetProps } from './sidebar.types'\n\nexport function SidebarInset({ className, children, ref, ...props }: SidebarInsetProps) {\n return (\n <div className={cn('min-h-0 min-w-0 flex-1 overflow-auto', className)} ref={ref} {...props}>\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SidebarMenuProps } from './sidebar.types'\n\nexport function SidebarMenu({ className, ref, ...props }: SidebarMenuProps) {\n return (\n <div\n className={cn('flex w-full flex-col items-start gap-3xs p-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Badge } from '../badge'\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarMenuBadgeProps } from './sidebar.types'\n\nexport function SidebarMenuBadge({ className, ref, ...props }: SidebarMenuBadgeProps) {\n const { open } = useSidebar()\n\n return <Badge className={cn(!open && 'hidden', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils/cn'\n\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarMenuButtonProps } from './sidebar.types'\n\nexport function SidebarMenuButton({ isActive, className, ref, ...props }: SidebarMenuButtonProps) {\n const { open, collapsible } = useSidebar(),\n showText = collapsible === 'none' || open\n\n return (\n <button\n type=\"button\"\n data-active={String(Boolean(isActive))}\n className={cn(\n 'inline-flex cursor-pointer items-center gap-2xs rounded-full border border-transparent style-text-default-0 whitespace-nowrap transition-all duration-200 ease-out select-none active:scale-95 disabled:pointer-events-none disabled:opacity-50 [&>svg]:shrink-0',\n isActive && 'pointer-events-none bg-surface text-on-surface shadow-2xs',\n !isActive &&\n 'text-neutral-default hover:bg-neutral-container hover:text-neutral-on-container',\n isActive && !open && 'bg-neutral-container',\n !showText && 'mx-auto',\n !open && 'size-xl justify-center *:hidden [&>svg]:block',\n open && 'h-xl w-full pl-sm',\n collapsible !== 'none' && open && 'animate-in fade-in-0 slide-in-from-left-2',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Children, isValidElement } from 'react'\nimport type { ReactNode } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Collapsible } from '../collapsible'\nimport { Popover } from '../popover'\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarMenuCollapsibleProps } from './sidebar.types'\n\nconst hasActiveDescendant = (children: ReactNode): boolean =>\n Children.toArray(children).some((child) => {\n if (!isValidElement<{ isActive?: boolean; children?: ReactNode }>(child)) {\n return false\n }\n\n return child.props.isActive === true || hasActiveDescendant(child.props.children)\n })\n\nexport function SidebarMenuCollapsible({\n className,\n children,\n ref,\n ...props\n}: SidebarMenuCollapsibleProps) {\n const { open } = useSidebar()\n\n if (!open) {\n return <Popover>{children}</Popover>\n }\n\n return (\n <Collapsible\n defaultOpen={hasActiveDescendant(children)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n </Collapsible>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { CollapsiblePanel } from '../collapsible'\nimport { PopoverContent, PopoverPanel } from '../popover'\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarMenuCollapsiblePanelProps } from './sidebar.types'\n\nexport function SidebarMenuCollapsiblePanel({\n className,\n children,\n ref,\n ...props\n}: SidebarMenuCollapsiblePanelProps) {\n const { open } = useSidebar()\n\n if (!open) {\n return (\n <PopoverPanel side=\"right\" className=\"w-fit bg-surface p-[0.5rem_0.5rem]\">\n <PopoverContent className=\"flex gap-3xs\">{children}</PopoverContent>\n </PopoverPanel>\n )\n }\n\n return (\n <CollapsiblePanel className={cn('py-3xs', className)} ref={ref} {...props}>\n {children}\n </CollapsiblePanel>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { CollapsibleTrigger } from '../collapsible'\nimport { Icon } from '../icon'\nimport { PopoverTrigger } from '../popover'\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarMenuCollapsibleTriggerProps } from './sidebar.types'\n\nexport function SidebarMenuCollapsibleTrigger({\n className,\n children,\n ref,\n style: _style,\n ...props\n}: SidebarMenuCollapsibleTriggerProps) {\n const { open, collapsible } = useSidebar(),\n showText = collapsible === 'none' || open\n\n if (!open) {\n return (\n <PopoverTrigger>\n <button\n type=\"button\"\n className={cn(\n 'flex size-xl items-center justify-center rounded-full shadow-none! transition-colors *:hidden hover:cursor-pointer hover:bg-neutral-container hover:text-neutral-on-container data-popup-open:bg-neutral-container [&>svg]:block',\n )}\n >\n {children}\n <Icon\n name=\"chevronRight\"\n className=\"absolute right-2xs size-xs text-on-surface-variant\"\n />\n </button>\n </PopoverTrigger>\n )\n }\n\n return (\n <CollapsibleTrigger\n variant=\"ghost\"\n className={cn(\n 'inline-flex! w-full! animate-in! justify-start! overflow-hidden! text-left! whitespace-nowrap! slide-in-from-left-2! [&>svg]:size-sm! [&>svg]:flex-none [&>svg]:shrink-0',\n !showText && 'mx-auto',\n !open && 'size-xl *:hidden [&>svg]:block',\n open && 'h-xl pl-sm',\n collapsible !== 'none' && open && 'animate-in slide-in-from-left-2',\n className,\n )}\n ref={ref}\n style={{ justifyContent: 'flex-start' }}\n {...props}\n >\n <span className=\"flex shrink-0 items-center gap-2xs [&>svg]:size-sm\">{children}</span>\n </CollapsibleTrigger>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SidebarMenuItemProps } from './sidebar.types'\n\nexport function SidebarMenuItem({ className, ref, ...props }: SidebarMenuItemProps) {\n return (\n <div\n className={cn('flex h-xl w-full items-center justify-between gap-2xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useSidebar } from './sidebar-provider'\nimport type { SidebarToggleProps } from './sidebar.types'\n\nfunction renderToggleChildren(children: SidebarToggleProps['children'], open?: boolean) {\n if (typeof children === 'function') {\n return children(open)\n }\n return children\n}\n\nexport function SidebarToggle({ className, children, ref, ...props }: SidebarToggleProps) {\n const { trigger, open, collapsible } = useSidebar(),\n handleClick = (event: React.MouseEvent) => {\n event.stopPropagation()\n if (trigger) {\n trigger()\n }\n }\n\n if (!trigger || collapsible === 'none') {\n return undefined\n }\n\n return (\n <Button\n aria-label=\"Toggle sidebar\"\n className={cn('shrink-0 border-none', className)}\n ref={ref}\n size=\"medium\"\n variant=\"ghost\"\n onClick={handleClick}\n {...props}\n >\n {renderToggleChildren(children, open)}\n </Button>\n )\n}\n","export const getStoredSidebarOpen = (id: string, fallback: boolean) => {\n if (typeof document === 'undefined') {\n return fallback\n }\n const match = new RegExp(`(?:^|; )sidebar-state-${id}=(?<value>[^;]*)`).exec(document.cookie)\n if (!match) {\n return fallback\n }\n return decodeURIComponent(match.groups?.value ?? '') === 'true'\n}\n","import { Sidebar as SidebarRoot } from './sidebar'\nimport { SidebarContent } from './sidebar-content'\nimport { SidebarFooter } from './sidebar-footer'\nimport { SidebarGroup } from './sidebar-group'\nimport { SidebarGroupContent } from './sidebar-group-content'\nimport { SidebarGroupLabel } from './sidebar-group-label'\nimport { SidebarHeader } from './sidebar-header'\nimport { SidebarInset } from './sidebar-inset'\nimport { SidebarMenu } from './sidebar-menu'\nimport { SidebarMenuBadge } from './sidebar-menu-badge'\nimport { SidebarMenuButton } from './sidebar-menu-button'\nimport { SidebarMenuCollapsible } from './sidebar-menu-collapsible'\nimport { SidebarMenuCollapsiblePanel } from './sidebar-menu-collapsible-panel'\nimport { SidebarMenuCollapsibleTrigger } from './sidebar-menu-collapsible-trigger'\nimport { SidebarMenuItem } from './sidebar-menu-item'\nimport { SidebarProvider } from './sidebar-provider'\nimport { SidebarToggle } from './sidebar-toggle'\n\nconst Sidebar = Object.assign(SidebarRoot, {\n Content: SidebarContent,\n Footer: SidebarFooter,\n Group: SidebarGroup,\n GroupContent: SidebarGroupContent,\n GroupLabel: SidebarGroupLabel,\n Header: SidebarHeader,\n Inset: SidebarInset,\n Menu: SidebarMenu,\n MenuBadge: SidebarMenuBadge,\n MenuButton: SidebarMenuButton,\n MenuCollapsible: SidebarMenuCollapsible,\n MenuCollapsiblePanel: SidebarMenuCollapsiblePanel,\n MenuCollapsibleTrigger: SidebarMenuCollapsibleTrigger,\n MenuItem: SidebarMenuItem,\n Provider: SidebarProvider,\n Toggle: SidebarToggle,\n})\n\nexport type {\n SidebarContentProps,\n SidebarFooterProps,\n SidebarGroupContentProps,\n SidebarGroupLabelProps,\n SidebarGroupProps,\n SidebarHeaderProps,\n SidebarInsetProps,\n SidebarMenuButtonProps,\n SidebarMenuProps,\n SidebarProps,\n SidebarToggleProps,\n SidebarMenuBadgeProps,\n SidebarMenuCollapsiblePanelProps,\n SidebarMenuCollapsibleProps,\n SidebarMenuCollapsibleTriggerProps,\n SidebarMenuItemProps,\n} from './sidebar.types'\nexport { SidebarContent } from './sidebar-content'\nexport { SidebarFooter } from './sidebar-footer'\nexport { SidebarGroup } from './sidebar-group'\nexport { SidebarGroupContent } from './sidebar-group-content'\nexport { SidebarGroupLabel } from './sidebar-group-label'\nexport { SidebarHeader } from './sidebar-header'\nexport { SidebarInset } from './sidebar-inset'\nexport { SidebarMenu } from './sidebar-menu'\nexport { SidebarProvider, useSidebar } from './sidebar-provider'\nexport { SidebarToggle } from './sidebar-toggle'\nexport { SidebarMenuBadge } from './sidebar-menu-badge'\nexport { SidebarMenuButton } from './sidebar-menu-button'\nexport { SidebarMenuCollapsible } from './sidebar-menu-collapsible'\nexport { SidebarMenuCollapsiblePanel } from './sidebar-menu-collapsible-panel'\nexport { SidebarMenuCollapsibleTrigger } from './sidebar-menu-collapsible-trigger'\nexport { SidebarMenuItem } from './sidebar-menu-item'\nexport { getStoredSidebarOpen } from './sidebar.utils'\n\nexport { Sidebar }\n","import { cn } from '@/utils/cn'\n\nimport type { SiteHeaderProps } from './site-header.types'\n\nexport function SiteHeader({ sticky = false, className, ref, ...props }: SiteHeaderProps) {\n return (\n <div\n className={cn(\n 'z-50 grid auto-cols-fr grid-flow-col items-center gap-xs border-b border-border bg-surface-background px-lg py-xs',\n sticky && 'sticky top-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport type { Separator } from '../separator'\n\nconst siteHeaderGroupVariants = cva('flex items-center gap-3xs', {\n defaultVariants: {\n position: 'start',\n },\n variants: {\n position: {\n center: 'justify-center',\n end: 'justify-end',\n start: 'justify-start',\n },\n },\n})\n\ntype SiteHeaderProps = React.ComponentProps<'div'> & {\n sticky?: boolean\n}\ntype SiteHeaderGroupProps = React.ComponentProps<'div'> &\n VariantProps<typeof siteHeaderGroupVariants>\ntype SiteHeaderTitleProps = React.ComponentProps<'span'>\ntype SiteHeaderSeparatorProps = React.ComponentProps<typeof Separator>\n\nexport type {\n SiteHeaderProps,\n SiteHeaderGroupProps,\n SiteHeaderTitleProps,\n SiteHeaderSeparatorProps,\n}\nexport { siteHeaderGroupVariants }\n","import { cn } from '@/utils'\n\nimport { siteHeaderGroupVariants } from './site-header.types'\nimport type { SiteHeaderGroupProps } from './site-header.types'\n\nexport function SiteHeaderGroup({ position, className, ref, ...props }: SiteHeaderGroupProps) {\n return (\n <div className={cn(siteHeaderGroupVariants({ position }), className)} ref={ref} {...props} />\n )\n}\n","import { cn } from '@/utils'\n\nimport { Separator } from '../separator'\nimport type { SiteHeaderSeparatorProps } from './site-header.types'\n\nexport function SiteHeaderSeparator({ className, ref, ...props }: SiteHeaderSeparatorProps) {\n return <Separator orientation=\"vertical\" className={cn('h-md', className)} ref={ref} {...props} />\n}\n","import { cn } from '@/utils'\n\nimport type { SiteHeaderTitleProps } from './site-header.types'\n\nexport function SiteHeaderTitle({ className, ref, ...props }: SiteHeaderTitleProps) {\n return <span className={cn('style-text-strong-2', className)} ref={ref} {...props} />\n}\n","import { SiteHeader as SiteHeaderRoot } from './site-header'\nimport { SiteHeaderGroup } from './site-header-group'\nimport { SiteHeaderSeparator } from './site-header-separator'\nimport { SiteHeaderTitle } from './site-header-title'\n\nconst SiteHeader = Object.assign(SiteHeaderRoot, {\n Group: SiteHeaderGroup,\n Separator: SiteHeaderSeparator,\n Title: SiteHeaderTitle,\n})\n\nexport type {\n SiteHeaderProps,\n SiteHeaderGroupProps,\n SiteHeaderTitleProps,\n SiteHeaderSeparatorProps,\n} from './site-header.types'\n\nexport { SiteHeaderGroup } from './site-header-group'\nexport { SiteHeaderTitle } from './site-header-title'\nexport { SiteHeaderSeparator } from './site-header-separator'\n\nexport { SiteHeader }\n","import { cn } from '@/utils/cn'\n\nimport type { SliderDescriptionProps } from './slider-group.types'\n\nexport function SliderDescription({ className, ref, ...props }: SliderDescriptionProps) {\n return (\n <p\n data-slot=\"slider-description\"\n className={cn('style-text-prose--1 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { createContext, useContext, useState } from 'react'\n\nimport type { SliderGroupContextValue } from './slider-group.types'\n\nconst FIRST_THUMB_INDEX = 0,\n SliderGroupContext = createContext<SliderGroupContextValue | undefined>(undefined),\n useSliderGroupContext = () => useContext(SliderGroupContext),\n getPrimaryValue = (value: number[] | undefined, min: number): number =>\n value?.[FIRST_THUMB_INDEX] ?? min,\n withPrimaryValue = (value: number[] | undefined, next: number): number[] => {\n const result = [...(value ?? [])]\n result[FIRST_THUMB_INDEX] = next\n return result\n },\n areNumberArraysEqual = (first?: number[], second?: number[]) =>\n first === second ||\n (first !== undefined &&\n second !== undefined &&\n first.length === second.length &&\n first.every((item, index) => item === second[index])),\n // Keeps a referentially-stable array while its contents are unchanged, so a new\n // Literal each render can't masquerade as a value change (which loops Base UI's controlled Slider).\n useStableNumberArray = (next: number[] | undefined) => {\n const [stable, setStable] = useState(next)\n if (!areNumberArraysEqual(stable, next)) {\n setStable(next)\n return next\n }\n return stable\n }\n\nexport {\n SliderGroupContext,\n useSliderGroupContext,\n getPrimaryValue,\n withPrimaryValue,\n areNumberArraysEqual,\n useStableNumberArray,\n}\n","import React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { SliderGroupContext, useStableNumberArray } from './slider-group-context'\nimport type { SliderGroupProps, SliderGroupConfig } from './slider-group.types'\n\nconst MIN_DEFAULT = 0,\n MAX_DEFAULT = 100,\n STEP_DEFAULT = 1\n\nfunction toArray(value: number | readonly number[] | undefined): number[] | undefined {\n if (value === undefined) {\n return undefined\n }\n if (typeof value === 'number') {\n return [value]\n }\n return [...value]\n}\n\nfunction getControlledValue(\n isControlled: boolean,\n valueProp: SliderGroupProps['value'],\n internalValue: number[] | undefined,\n): number[] | undefined {\n if (isControlled) {\n return toArray(valueProp)\n }\n return internalValue\n}\n\nfunction mergeConfig(\n prev: { min: number; max: number; step: number },\n incoming: SliderGroupConfig,\n) {\n if (prev.min === incoming.min && prev.max === incoming.max && prev.step === incoming.step) {\n return prev\n }\n return { max: incoming.max, min: incoming.min, step: incoming.step }\n}\n\nexport function SliderGroup({\n className,\n ref,\n defaultValue,\n value: valueProp,\n onValueChange,\n ...props\n}: SliderGroupProps) {\n const isControlled = valueProp !== undefined,\n [internalValue, setInternalValue] = React.useState<number[] | undefined>(() =>\n toArray(defaultValue),\n ),\n [config, setConfig] = React.useState({\n max: MAX_DEFAULT,\n min: MIN_DEFAULT,\n step: STEP_DEFAULT,\n }),\n value = useStableNumberArray(getControlledValue(isControlled, valueProp, internalValue)),\n setValue = (next: number[]) => {\n if (!isControlled) {\n setInternalValue(next)\n }\n onValueChange?.(next)\n },\n registerConfig = (incoming: SliderGroupConfig) => {\n setConfig((prev) => mergeConfig(prev, incoming))\n if (incoming.defaultValue !== undefined) {\n setInternalValue((prev) => prev ?? toArray(incoming.defaultValue))\n }\n },\n context = {\n max: config.max,\n min: config.min,\n registerConfig,\n setValue,\n step: config.step,\n value,\n }\n\n return (\n <SliderGroupContext.Provider value={context}>\n <div\n data-slot=\"slider-group\"\n className={cn(\n 'flex w-full flex-wrap items-center gap-x-sm',\n '**:data-[slot=slider-label]:basis-full',\n '**:data-[slot=slider-root]:flex-1',\n '**:data-[slot=slider-description]:basis-full',\n className,\n )}\n ref={ref}\n {...props}\n />\n </SliderGroupContext.Provider>\n )\n}\n","import React from 'react'\n\nimport { Slider } from '../slider'\nimport { useSliderGroupContext, useStableNumberArray } from './slider-group-context'\nimport type { SliderGroupContextValue, SliderGroupSliderProps } from './slider-group.types'\n\nconst MIN_DEFAULT = 0,\n MAX_DEFAULT = 100,\n STEP_DEFAULT = 1\n\nfunction toSingleNumber(input: number | readonly number[] | undefined): number | undefined {\n if (typeof input === 'number') {\n return input\n }\n return undefined\n}\n\nfunction toNumberArray(next: number | readonly number[]): number[] {\n if (typeof next === 'number') {\n return [next]\n }\n return [...next]\n}\n\nfunction resolveInitialValue(\n defaultValue: SliderGroupSliderProps['defaultValue'],\n value: SliderGroupSliderProps['value'],\n min: number,\n): number[] {\n if (Array.isArray(defaultValue)) {\n return [...defaultValue]\n }\n return [toSingleNumber(value) ?? toSingleNumber(defaultValue) ?? min]\n}\n\nfunction getGroupValue(\n group: SliderGroupContextValue | undefined,\n fallback: number[],\n): number[] | undefined {\n if (!group) {\n return undefined\n }\n return group.value ?? fallback\n}\n\n// The group-bound Slider: it reads/writes the shared value from SliderGroup and\n// Publishes its min/max/step so siblings (SliderInput, SliderValue) stay in sync.\nexport function SliderGroupSlider({\n min = MIN_DEFAULT,\n max = MAX_DEFAULT,\n step = STEP_DEFAULT,\n defaultValue,\n value,\n onValueChange,\n ...props\n}: SliderGroupSliderProps) {\n const group = useSliderGroupContext(),\n groupValue = useStableNumberArray(\n getGroupValue(group, resolveInitialValue(defaultValue, value, min)),\n ),\n handleValueChange = (\n ...args: Parameters<NonNullable<SliderGroupSliderProps['onValueChange']>>\n ) => {\n const [next] = args\n group?.setValue(toNumberArray(next))\n onValueChange?.(...args)\n }\n\n React.useEffect(() => {\n group?.registerConfig({ defaultValue, max, min, step })\n }, [group, min, max, step, defaultValue])\n\n return (\n <Slider\n min={min}\n max={max}\n step={step}\n value={groupValue}\n onValueChange={handleValueChange}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SliderIconProps } from './slider-group.types'\n\nexport function SliderIcon({ className, ref, ...props }: SliderIconProps) {\n return (\n <div\n data-slot=\"slider-icon\"\n className={cn('[&>svg]:size-sm [&>svg]:shrink-0', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Input } from '../input'\nimport { getPrimaryValue, useSliderGroupContext, withPrimaryValue } from './slider-group-context'\nimport type { SliderInputProps } from './slider-group.types'\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value))\n}\n\nexport function SliderInput({ className, ref, ...props }: SliderInputProps) {\n const group = useSliderGroupContext(),\n handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const raw = event.target.value,\n parsed = Number(raw)\n if (raw === '' || Number.isNaN(parsed) || !group) {\n return\n }\n group.setValue(withPrimaryValue(group.value, clamp(parsed, group.min, group.max)))\n }\n\n if (!group) {\n return undefined\n }\n\n return (\n <Input\n aria-label=\"Value\"\n data-slot=\"slider-input\"\n className={cn('w-[4rem]', className)}\n ref={ref}\n {...props}\n type=\"number\"\n min={group.min}\n max={group.max}\n step={group.step}\n value={getPrimaryValue(group.value, group.min)}\n onChange={handleChange}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { SliderLabelProps } from './slider-group.types'\n\nexport function SliderLabel({ className, ref, ...props }: SliderLabelProps) {\n return (\n <span\n data-slot=\"slider-label\"\n className={cn('style-text-default-0', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { getPrimaryValue, useSliderGroupContext } from './slider-group-context'\nimport type { SliderValueProps } from './slider-group.types'\n\nexport function SliderValue({ className, children, ref, ...props }: SliderValueProps) {\n const group = useSliderGroupContext()\n if (!group) {\n return undefined\n }\n\n return (\n <span\n data-slot=\"slider-value\"\n className={cn('min-w-lg text-right style-text-default--1 text-on-surface-variant', className)}\n ref={ref}\n {...props}\n >\n {children}\n {getPrimaryValue(group.value, group.min)}\n </span>\n )\n}\n","import { SliderDescription } from './slider-description'\nimport { SliderGroup as SliderGroupRoot } from './slider-group'\nimport { SliderGroupSlider } from './slider-group-slider'\nimport { SliderIcon } from './slider-icon'\nimport { SliderInput } from './slider-input'\nimport { SliderLabel } from './slider-label'\nimport { SliderValue } from './slider-value'\n\nconst SliderGroup = Object.assign(SliderGroupRoot, {\n Description: SliderDescription,\n Icon: SliderIcon,\n Input: SliderInput,\n Label: SliderLabel,\n Slider: SliderGroupSlider,\n Value: SliderValue,\n})\n\nexport { SliderGroupSlider } from './slider-group-slider'\nexport { SliderInput } from './slider-input'\nexport { SliderValue } from './slider-value'\nexport { SliderLabel } from './slider-label'\nexport { SliderDescription } from './slider-description'\nexport { SliderIcon } from './slider-icon'\nexport { useSliderGroupContext } from './slider-group-context'\nexport type {\n SliderGroupProps,\n SliderGroupSliderProps,\n SliderInputProps,\n SliderValueProps,\n SliderLabelProps,\n SliderDescriptionProps,\n SliderIconProps,\n} from './slider-group.types'\n\nexport { SliderGroup }\n","// oxlint-disable id-length\nimport type { Column, RowData, TableFeature, TableFeatures } from '@tanstack/react-table'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\nimport { z } from 'zod'\n\nimport type { Avatar } from '../avatar'\nimport type { BadgeProps } from '../badge'\nimport type { Button } from '../button'\nimport type { Checkbox } from '../checkbox'\nimport type { inputVariants } from '../input/input.types'\nimport type { MenuTrigger } from '../menu'\nimport type { MeterProps } from '../meter'\nimport type { Tabs } from '../tabs/tabs'\nimport type { features } from './table-feature-context'\nimport type {\n Table_Dataset,\n TableOptions_Dataset,\n TableOptions_ViewMode,\n TableState_Dataset,\n TableState_ViewMode,\n Table_ViewMode,\n} from './table.utils'\n\ntype TableFirstPageProps = React.ComponentProps<typeof Button>\ntype TableFooterProps = React.ComponentProps<'tfoot'>\ntype TableHeaderProps = React.ComponentProps<'thead'>\ntype TableLastPageProps = React.ComponentProps<typeof Button>\ntype TablePaginationProps = React.ComponentProps<'div'> & {\n truncateFrom?: number\n truncateTo?: number\n}\ntype TableNextPageProps = React.ComponentProps<typeof Button>\ntype TableResultsProps = Omit<React.ComponentProps<'div'>, 'children'> & {\n children: (start: number, end: number, totalRows: number) => React.ReactElement\n}\ntype TablePreviousPageProps = React.ComponentProps<typeof Button>\ntype TableRefreshProps = React.ComponentProps<typeof Button>\ntype TableSearchProps = React.ComponentProps<'input'> & VariantProps<typeof inputVariants>\ntype TableColumnToggleProps = React.ComponentProps<typeof MenuTrigger>\ntype TableRowProps = React.ComponentProps<'tr'>\ntype TableBodyProps = React.ComponentProps<'tbody'> & {\n showDivider?: boolean\n}\ntype TableToolbarProps = React.ComponentProps<'div'>\ntype TableLayoutProps = React.ComponentProps<'div'>\ntype TableBottomBarProps = React.ComponentProps<'div'>\ntype TableContentProps = React.ComponentProps<'div'>\ntype TablePagingProps = React.ComponentProps<'div'> & {\n min?: number\n max?: number\n}\n\nconst tableContainerVariants = cva('group/table flex min-w-0 flex-col gap-0', {\n defaultVariants: {\n variant: 'outline',\n },\n variants: {\n variant: {\n ghost: '',\n outline: 'overflow-hidden rounded-2xl border border-border',\n },\n },\n }),\n stringFilterOperators = [\n 'equals',\n 'notEquals',\n 'contains',\n 'notContains',\n 'startsWith',\n 'endsWith',\n ] as const,\n numberFilterOperators = ['equals', 'notEquals', 'greaterThan', 'lessThan', 'between'] as const,\n dateFilterOperators = ['equals', 'notEquals', 'greaterThan', 'lessThan', 'between'] as const,\n defaultFilterOperatorLabels = {\n between: 'Is between',\n contains: 'Contains',\n endsWith: 'Ends with',\n equals: 'Is',\n greaterThan: 'Is greater than',\n lessThan: 'Is less than',\n notContains: 'Does not contain',\n notEquals: 'Is not',\n startsWith: 'Starts with',\n } satisfies Record<FilterOperator, string>,\n dateFilterSchema = z.object({\n filterOperator: z.enum(dateFilterOperators),\n filterValueFrom: z.union([z.literal(''), z.iso.date()]),\n filterValueTo: z.union([z.literal(''), z.iso.date()]),\n }),\n stringFilterSchema = z.object({\n filterOperator: z.enum(stringFilterOperators),\n filterValue: z.string(),\n }),\n numberFilterSchema = z.object({\n filterOperator: z.enum(numberFilterOperators),\n filterValueFrom: z.string(),\n filterValueTo: z.string(),\n })\n\ntype TableDatasetTabProps = React.ComponentProps<typeof Tabs>\ntype TableContainerProps = React.ComponentProps<'div'> & VariantProps<typeof tableContainerVariants>\ntype TableTopBarProps = React.ComponentProps<'div'>\ntype TableViewModeToggleProps = Omit<React.ComponentProps<typeof Button>, 'children'> & {\n children: (isGridView: boolean) => React.ReactNode\n}\ntype TableFilterMenuProps = React.ComponentProps<'button'>\ntype TableFilterListProps = React.ComponentProps<'div'>\ntype TableDateFilterFormProps<TData extends RowData> = React.ComponentProps<'form'> & {\n column: Column<typeof features, TData>\n}\ntype TableDateFilterChipProps<TData extends RowData> = React.ComponentProps<'button'> & {\n column: Column<typeof features, TData>\n}\ntype TableStringFilterFormProps<TData extends RowData> = React.ComponentProps<'form'> & {\n column: Column<typeof features, TData>\n}\ntype TableStringFilterChipProps<TData extends RowData> = React.ComponentProps<'button'> & {\n column: Column<typeof features, TData>\n}\ntype TableNumberFilterFormProps<TData extends RowData> = React.ComponentProps<'form'> & {\n column: Column<typeof features, TData>\n}\ntype TableNumberFilterChipProps<TData extends RowData> = React.ComponentProps<'button'> & {\n column: Column<typeof features, TData>\n}\ntype TableSelectFilterFormProps<TData extends RowData> = React.ComponentProps<'form'> & {\n column: Column<typeof features, TData>\n}\ntype TableSelectFilterChipProps<TData extends RowData> = React.ComponentProps<'button'> & {\n column: Column<typeof features, TData>\n}\ntype TableSelectFilterOption = string | number | boolean\ntype TableSelectFilterValue = TableSelectFilterOption[]\n\ntype TableSortChipProps<TData extends RowData> = React.ComponentProps<'button'> & {\n column: Column<typeof features, TData>\n}\n\ntype TableSortMenuProps = React.ComponentProps<typeof MenuTrigger>\ntype TableChangeViewProps = React.ComponentProps<typeof Button>\ntype TableCheckboxCellProps = React.ComponentProps<typeof Checkbox>\ntype TableCheckboxHeaderProps = React.ComponentProps<typeof Checkbox>\ntype TableTextCellProps = React.ComponentProps<'span'>\ntype TableDateCellProps = React.ComponentProps<'span'> & {\n locale?: Intl.LocalesArgument\n options?: Intl.DateTimeFormatOptions\n}\ntype TableNumberCellProps = React.ComponentProps<'span'>\ntype TableCurrencyCellProps = React.ComponentProps<'span'> & {\n currency: string\n locale?: Intl.LocalesArgument\n options?: Omit<Intl.NumberFormatOptions, 'style' | 'currency'>\n}\ntype TablePercentCellProps = React.ComponentProps<'span'> & {\n locale?: Intl.LocalesArgument\n options?: Omit<Intl.NumberFormatOptions, 'style'>\n}\ntype TableProgressCellProps = Omit<MeterProps, 'value' | 'defaultValue'> & {\n showValue?: boolean\n}\ntype TableBooleanCellProps = React.ComponentProps<'span'> & {\n trueLabel?: React.ReactNode\n falseLabel?: React.ReactNode\n}\ntype TableTagsCellProps = React.ComponentProps<'div'> & {\n badgeProps?: Omit<BadgeProps, 'children' | 'ref'>\n}\ntype TableRelativeTimeCellProps = React.ComponentProps<'time'> & {\n locale?: Intl.LocalesArgument\n options?: Intl.RelativeTimeFormatOptions\n now?: Date\n}\ntype TableImageCellProps = React.ComponentProps<'img'>\ntype TableViewportProps = React.ComponentProps<'table'> & {\n grow?: boolean\n}\ntype TableSortListProps = React.ComponentProps<'div'>\ntype TableBadgeCellProps = Omit<BadgeProps, 'tone'> & {\n tone?: BadgeProps['tone'] | ((value: string) => BadgeProps['tone'])\n}\ntype TableAvatarCellProps = React.ComponentProps<typeof Avatar> & {\n fallback?: string\n}\ntype TableLinkCellProps = React.ComponentProps<typeof Button>\ntype TableEmptyProps = React.ComponentProps<'div'>\ntype TableEmptyTitleProps = React.ComponentProps<'span'>\ntype TableEmptyDescriptionProps = React.ComponentProps<'span'>\ntype TableEmptyContentProps = React.ComponentProps<'div'>\ntype TableEmptyHeaderProps = React.ComponentProps<'div'>\ntype TableEmptyFooterProps = React.ComponentProps<'div'>\ntype DateFilterOperator = (typeof dateFilterOperators)[number]\ntype StringFilterOperator = (typeof stringFilterOperators)[number]\ntype NumberFilterOperator = (typeof numberFilterOperators)[number]\ntype FilterOperator = StringFilterOperator | NumberFilterOperator\ninterface TableDataset<T extends RowData> {\n id: string\n name: string\n data: T[]\n}\n\ntype ViewMode = 'list' | 'grid'\n\ninterface TableColumnMeta {\n filterVariant?: 'range' | 'select' | 'date' | 'string' | 'number'\n}\n\ninterface TableMeta {\n translations?: {\n filterOperatorLabels?: Partial<Record<FilterOperator, string>>\n buttonLabels?: {\n reset?: string\n apply?: string\n ascending?: string\n descending?: string\n }\n }\n}\n\ndeclare module '@tanstack/react-table' {\n interface Plugins {\n datasetPlugin: TableFeature\n viewModePlugin: TableFeature\n }\n\n interface TableState_FeatureMap {\n datasetPlugin: TableState_Dataset\n viewModePlugin: TableState_ViewMode\n }\n\n interface TableOptions_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {\n datasetPlugin: TableOptions_Dataset\n viewModePlugin: TableOptions_ViewMode\n }\n\n interface Table_FeatureMap<TFeatures extends TableFeatures, TData extends RowData> {\n datasetPlugin: Table_Dataset<TData>\n viewModePlugin: Table_ViewMode\n }\n}\n\nexport {\n tableContainerVariants,\n dateFilterOperators,\n dateFilterSchema,\n defaultFilterOperatorLabels,\n numberFilterOperators,\n numberFilterSchema,\n stringFilterOperators,\n stringFilterSchema,\n type DateFilterOperator,\n type FilterOperator,\n type NumberFilterOperator,\n type StringFilterOperator,\n type TableBadgeCellProps,\n type TableBodyProps,\n type TableChangeViewProps,\n type TableCheckboxCellProps,\n type TableColumnMeta,\n type TableColumnToggleProps,\n type TableContainerProps,\n type TableContentProps,\n type TableDateCellProps,\n type TableDateFilterChipProps,\n type TableDateFilterFormProps,\n type TableFilterListProps,\n type TableFilterMenuProps,\n type TableFirstPageProps,\n type TableFooterProps,\n type TableHeaderProps,\n type TableImageCellProps,\n type TableLastPageProps,\n type TableBottomBarProps,\n type TableNextPageProps,\n type TableNumberCellProps,\n type TableCurrencyCellProps,\n type TablePercentCellProps,\n type TableProgressCellProps,\n type TableBooleanCellProps,\n type TableTagsCellProps,\n type TableRelativeTimeCellProps,\n type TableNumberFilterChipProps,\n type TableNumberFilterFormProps,\n type TablePaginationProps,\n type TablePagingProps,\n type TablePreviousPageProps,\n type TableRefreshProps,\n type TableResultsProps,\n type TableRowProps,\n type TableSearchProps,\n type TableSelectFilterChipProps,\n type TableSelectFilterFormProps,\n type TableSelectFilterOption,\n type TableSelectFilterValue,\n type TableCheckboxHeaderProps,\n type TableSortChipProps,\n type TableSortListProps,\n type TableSortMenuProps,\n type TableStringFilterChipProps,\n type TableStringFilterFormProps,\n type TableTextCellProps,\n type TableTopBarProps,\n type TableViewportProps,\n type TableViewModeToggleProps,\n type TableMeta,\n type ViewMode,\n type TableAvatarCellProps,\n type TableLinkCellProps,\n type TableToolbarProps,\n type TableLayoutProps,\n type TableEmptyProps,\n type TableEmptyTitleProps,\n type TableEmptyDescriptionProps,\n type TableEmptyContentProps,\n type TableEmptyHeaderProps,\n type TableEmptyFooterProps,\n type TableDatasetTabProps,\n type TableDataset,\n}\n","import {\n constructFilterFn,\n functionalUpdate,\n makeStateUpdater,\n assignTableAPIs,\n} from '@tanstack/react-table'\nimport type { OnChangeFn, RowData, TableFeature, Updater } from '@tanstack/react-table'\n\nimport type {\n DateFilterOperator,\n NumberFilterOperator,\n StringFilterOperator,\n TableSelectFilterOption,\n TableSelectFilterValue,\n TableDataset,\n ViewMode,\n} from './table.types'\n\ninterface DateFilterValue {\n operator: DateFilterOperator\n date: [string, string]\n}\n\ninterface StringFilterValue {\n operator: StringFilterOperator\n value: string\n}\n\ninterface NumberFilterValue {\n operator: NumberFilterOperator\n number: [string, string]\n}\n\ninterface ResolvedDateFilterValue {\n operator: DateFilterOperator\n from: number | undefined\n to: number | undefined\n}\n\ninterface ResolvedNumberFilterValue {\n operator: NumberFilterOperator\n from: number | undefined\n to: number | undefined\n}\n\ninterface TableState_ViewMode {\n viewMode: ViewMode\n}\n\ninterface TableOptions_ViewMode {\n enableViewModeToggle?: boolean\n onViewModeChange?: OnChangeFn<ViewMode>\n}\n\ninterface Table_ViewMode {\n setViewMode: (updater: Updater<ViewMode>) => void\n toggleViewMode: (value?: ViewMode) => void\n}\n\n// The TanStack state feature map is not generic over row data.\n// oxlint-disable-next-line typescript/no-explicit-any\ntype TableDatasetStateValue = TableDataset<any>\n\ninterface TableState_Dataset {\n datasets: TableDatasetStateValue[]\n currentDataset: TableDatasetStateValue\n}\n\ninterface TableOptions_Dataset {\n onCurrentDatasetChange?: OnChangeFn<TableDataset<RowData>>\n}\n\ninterface Table_Dataset<TData extends RowData> {\n setCurrentDataset: (updater: Updater<TableDataset<TData>>) => void\n}\n\nfunction getColumnHeaderLabel(column: { id: string; columnDef: { header?: unknown } }): string {\n const { header } = column.columnDef\n if (typeof header === 'string' && header !== '') {\n return header\n }\n return column.id\n}\n\n// oxlint-disable-next-line typescript/no-unnecessary-type-parameters\nfunction asFilterValue<TValue>(value: unknown): TValue {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n return value as TValue\n}\n\nconst ZERO = 0,\n FIRST_RANGE_INDEX = 0,\n SECOND_RANGE_INDEX = 1,\n getDateTimestamp = (date: Date): number =>\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n selectFilterFn = constructFilterFn({\n autoRemove: (value: TableSelectFilterValue) => !value?.length,\n filter: (dataValue: TableSelectFilterOption, filterValue: TableSelectFilterValue) =>\n filterValue.includes(dataValue),\n }),\n parseToTimestamp = (value: string): number | undefined => {\n if (!value) {\n return undefined\n }\n const parsed = new Date(value)\n if (Number.isNaN(parsed.getTime())) {\n return undefined\n }\n return getDateTimestamp(parsed)\n },\n normalizeDataValue = (value: unknown): number => {\n if (value instanceof Date) {\n return getDateTimestamp(value)\n }\n if (typeof value === 'number') {\n return getDateTimestamp(new Date(value))\n }\n if (typeof value === 'string') {\n return parseToTimestamp(value) ?? ZERO\n }\n return ZERO\n },\n dateFilterFn = constructFilterFn({\n autoRemove: (value: DateFilterValue) =>\n !value || (!value.date[FIRST_RANGE_INDEX] && !value.date[SECOND_RANGE_INDEX]),\n filter: (dataValue: number, filterValue: ResolvedDateFilterValue) => {\n const { operator, from, to } = filterValue\n\n switch (operator) {\n case 'equals': {\n return from !== undefined && dataValue === from\n }\n\n case 'notEquals': {\n return from !== undefined && dataValue !== from\n }\n\n case 'greaterThan': {\n return from !== undefined && dataValue > from\n }\n\n case 'lessThan': {\n return from !== undefined && dataValue < from\n }\n\n case 'between': {\n return from !== undefined && to !== undefined && dataValue >= from && dataValue <= to\n }\n\n default: {\n return true\n }\n }\n },\n resolveDataValue: normalizeDataValue,\n resolveFilterValue: (value: DateFilterValue): ResolvedDateFilterValue => ({\n from: parseToTimestamp(value.date[FIRST_RANGE_INDEX]),\n operator: value.operator,\n to: parseToTimestamp(value.date[SECOND_RANGE_INDEX]),\n }),\n }),\n stringFilterFn = constructFilterFn({\n autoRemove: (value: StringFilterValue) => !value || value.value === '',\n filter: (dataValue: string, filterValue: StringFilterValue) => {\n const { operator, value } = filterValue,\n normalizedDataValue = dataValue.toLocaleLowerCase(),\n normalizedFilterValue = value.toLocaleLowerCase()\n\n switch (operator) {\n case 'equals': {\n return normalizedDataValue === normalizedFilterValue\n }\n\n case 'notEquals': {\n return normalizedDataValue !== normalizedFilterValue\n }\n\n case 'contains': {\n return normalizedDataValue.includes(normalizedFilterValue)\n }\n\n case 'notContains': {\n return !normalizedDataValue.includes(normalizedFilterValue)\n }\n\n case 'startsWith': {\n return normalizedDataValue.startsWith(normalizedFilterValue)\n }\n\n case 'endsWith': {\n return normalizedDataValue.endsWith(normalizedFilterValue)\n }\n\n default: {\n return true\n }\n }\n },\n resolveDataValue: (value: unknown) => {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return String(value)\n }\n return ''\n },\n }),\n parseToNumber = (value: string): number | undefined => {\n if (value.trim() === '') {\n return undefined\n }\n const parsed = Number(value)\n if (!Number.isFinite(parsed)) {\n return undefined\n }\n return parsed\n },\n numberFilterFn = constructFilterFn({\n autoRemove: (value: NumberFilterValue) =>\n !value || (value.number[FIRST_RANGE_INDEX] === '' && value.number[SECOND_RANGE_INDEX] === ''),\n filter: (dataValue: number, filterValue: ResolvedNumberFilterValue) => {\n const { operator, from, to } = filterValue\n\n switch (operator) {\n case 'equals': {\n return from !== undefined && dataValue === from\n }\n\n case 'notEquals': {\n return from !== undefined && dataValue !== from\n }\n\n case 'greaterThan': {\n return from !== undefined && dataValue > from\n }\n\n case 'lessThan': {\n return from !== undefined && dataValue < from\n }\n\n case 'between': {\n return (from === undefined || dataValue >= from) && (to === undefined || dataValue <= to)\n }\n\n default: {\n return true\n }\n }\n },\n resolveDataValue: (value: unknown) => Number(value),\n resolveFilterValue: (value: NumberFilterValue): ResolvedNumberFilterValue => {\n const from = parseToNumber(value.number[FIRST_RANGE_INDEX]),\n to = parseToNumber(value.number[SECOND_RANGE_INDEX])\n\n if (from !== undefined && to !== undefined && from > to) {\n return { from: to, operator: value.operator, to: from }\n }\n\n return { from, operator: value.operator, to }\n },\n }),\n datasetPlugin: TableFeature = {\n constructTableAPIs: (table) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const options = table.options as TableOptions_Dataset\n assignTableAPIs('datasetPlugin', table, {\n table_setCurrentDataset: {\n fn: (updater: Updater<TableDatasetStateValue>) => {\n const safeUpdater: Updater<TableDatasetStateValue> = (old) =>\n functionalUpdate(updater, old)\n return options.onCurrentDatasetChange?.(safeUpdater)\n },\n },\n })\n },\n\n getDefaultTableOptions: (table) => ({\n onCurrentDatasetChange: makeStateUpdater('currentDataset', table),\n }),\n\n getInitialState: (initialState) => ({\n currentDataset: { data: [], id: '', name: '' },\n datasets: [],\n ...initialState,\n }),\n },\n viewModePlugin: TableFeature = {\n constructTableAPIs: (table) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const options = table.options as TableOptions_ViewMode\n assignTableAPIs('viewModePlugin', table, {\n table_setViewMode: {\n fn: (updater: Updater<ViewMode>) => {\n const safeUpdater: Updater<ViewMode> = (old) => {\n const newState = functionalUpdate(updater, old)\n return newState\n }\n return options.onViewModeChange?.(safeUpdater)\n },\n },\n table_toggleViewMode: {\n fn: (value?: ViewMode) => {\n const safeUpdater: Updater<ViewMode> = (old) => {\n if (value) {\n return value\n }\n if (old === 'list') {\n return 'grid'\n }\n return 'list'\n }\n return options.onViewModeChange?.(safeUpdater)\n },\n },\n })\n },\n\n getDefaultTableOptions: (table) => ({\n enableViewModeToggle: true,\n onViewModeChange: makeStateUpdater('viewMode', table),\n }),\n\n getInitialState: (initialState) => ({\n viewMode: 'list',\n ...initialState,\n }),\n }\n\nexport {\n asFilterValue,\n dateFilterFn,\n datasetPlugin,\n getColumnHeaderLabel,\n numberFilterFn,\n selectFilterFn,\n stringFilterFn,\n viewModePlugin,\n type DateFilterValue,\n type NumberFilterValue,\n type StringFilterValue,\n type Table_Dataset,\n type TableOptions_Dataset,\n type TableState_Dataset,\n type TableOptions_ViewMode,\n type TableState_ViewMode,\n type Table_ViewMode,\n}\n","import {\n columnFacetingFeature,\n columnFilteringFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n createFacetedRowModel,\n createFacetedUniqueValues,\n createFilteredRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n createTableHookContexts,\n filterFn_arrHas,\n filterFn_arrIncludes,\n filterFn_arrIncludesAll,\n filterFn_arrIncludesSome,\n filterFn_between,\n filterFn_betweenInclusive,\n filterFn_empty,\n filterFn_endsWith,\n filterFn_equals,\n filterFn_equalsString,\n filterFn_equalsStringSensitive,\n filterFn_inDateRange,\n filterFn_inNumberRange,\n filterFn_includesString,\n filterFn_includesStringSensitive,\n filterFn_notEmpty,\n filterFn_startsWith,\n filterFn_weakEquals,\n globalFilteringFeature,\n metaHelper,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n sortFn_alphanumeric,\n sortFn_basic,\n sortFn_datetime,\n sortFn_text,\n tableFeatures,\n} from '@tanstack/react-table'\n\nimport type { TableColumnMeta, TableMeta } from './table.types'\nimport {\n dateFilterFn,\n datasetPlugin,\n numberFilterFn,\n selectFilterFn,\n stringFilterFn,\n viewModePlugin,\n} from './table.utils'\n\nconst features = tableFeatures({\n columnFacetingFeature,\n columnFilteringFeature,\n columnMeta: metaHelper<TableColumnMeta>(),\n columnSizingFeature,\n columnVisibilityFeature,\n datasetPlugin,\n facetedRowModel: createFacetedRowModel(),\n facetedUniqueValues: createFacetedUniqueValues(),\n filterFns: {\n arrHas: filterFn_arrHas,\n arrIncludes: filterFn_arrIncludes,\n arrIncludesAll: filterFn_arrIncludesAll,\n arrIncludesSome: filterFn_arrIncludesSome,\n between: filterFn_between,\n betweenInclusive: filterFn_betweenInclusive,\n date: dateFilterFn,\n empty: filterFn_empty,\n endsWith: filterFn_endsWith,\n equals: filterFn_equals,\n equalsString: filterFn_equalsString,\n equalsStringSensitive: filterFn_equalsStringSensitive,\n inDateRange: filterFn_inDateRange,\n inNumberRange: filterFn_inNumberRange,\n includesString: filterFn_includesString,\n includesStringSensitive: filterFn_includesStringSensitive,\n notEmpty: filterFn_notEmpty,\n number: numberFilterFn,\n select: selectFilterFn,\n startsWith: filterFn_startsWith,\n string: stringFilterFn,\n weakEquals: filterFn_weakEquals,\n },\n filteredRowModel: createFilteredRowModel(),\n globalFilteringFeature,\n paginatedRowModel: createPaginatedRowModel(),\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n sortFns: {\n alphanumeric: sortFn_alphanumeric,\n basic: sortFn_basic,\n datetime: sortFn_datetime,\n text: sortFn_text,\n },\n sortedRowModel: createSortedRowModel(),\n tableMeta: metaHelper<TableMeta>(),\n viewModePlugin,\n }),\n { tableContext, cellContext, headerContext, useTableContext, useCellContext, useHeaderContext } =\n createTableHookContexts<typeof features>()\n\nexport {\n cellContext,\n features,\n headerContext,\n tableContext,\n useCellContext,\n useHeaderContext,\n useTableContext,\n}\n","import { cn } from '@/utils'\n\nimport { Avatar } from '../avatar'\nimport { useCellContext } from './table-feature-context'\nimport type { TableAvatarCellProps } from './table.types'\n\nexport function TableAvatarCell({\n fallback,\n className,\n children,\n ref,\n ...props\n}: TableAvatarCellProps) {\n const cell = useCellContext<string>(),\n value = cell.getValue()\n\n return (\n <Avatar className={cn('', className)} ref={ref} {...props}>\n <Avatar.Image src={value} />\n {fallback && <Avatar.Fallback>{fallback}</Avatar.Fallback>}\n {children}\n </Avatar>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Badge } from '../badge'\nimport { useCellContext } from './table-feature-context'\nimport type { TableBadgeCellProps } from './table.types'\n\nfunction resolveTone(tone: TableBadgeCellProps['tone'], value: string) {\n if (typeof tone === 'function') {\n return tone(value)\n }\n return tone\n}\n\nexport function TableBadgeCell({ className, children, ref, tone, ...props }: TableBadgeCellProps) {\n const cell = useCellContext<string>(),\n value = cell.getValue(),\n resolvedTone = resolveTone(tone, value)\n\n return (\n <Badge variant=\"soft\" className={cn('', className)} ref={ref} tone={resolvedTone} {...props}>\n {children}\n {value}\n </Badge>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { useTableContext as useRegisteredTableContext } from './table-context'\nimport { useTableContext } from './table-feature-context'\nimport type { TableBodyProps } from './table.types'\n\nexport function TableBody({ showDivider = true, className, ref, ...props }: TableBodyProps) {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const table = useTableContext() as ReturnType<typeof useRegisteredTableContext>\n\n return (\n <table.Subscribe selector={(state) => state}>\n {(state) => {\n if (state.viewMode === 'grid') {\n return (\n <ul\n className={cn(\n 'grid auto-rows-fr grid-cols-[repeat(auto-fill,minmax(252px,1fr))] gap-sm overflow-y-auto border-border group-data-[variant=outline]/table:border-y group-data-[variant=outline]/table:p-md',\n className,\n )}\n >\n {table.getRowModel().rows.map((row) => (\n <li key={row.id} className=\"min-w-0\">\n {row.getVisibleCells().map((cell) => (\n <table.AppCell cell={cell} key={cell.id}>\n {(renderedCell) => (\n <div className=\"w-full\">\n <table.FlexRender cell={renderedCell} />\n </div>\n )}\n </table.AppCell>\n ))}\n </li>\n ))}\n </ul>\n )\n }\n return (\n <tbody\n className={cn(showDivider && 'divide-y divide-border', 'overflow-y-auto', className)}\n ref={ref}\n {...props}\n >\n {table.getRowModel().rows.map((row) => (\n <tr key={row.id} className={cn(row.getIsSelected() && 'bg-neutral-container-low')}>\n {row.getVisibleCells().map((cell) => (\n <table.AppCell cell={cell} key={cell.id}>\n {(renderedCell) => (\n // oxlint-disable-next-line jsx-a11y/control-has-associated-label\n <td\n style={{\n width: renderedCell.column.getSize(),\n }}\n className={cn('h-2xl p-xs', className)}\n >\n <table.FlexRender cell={renderedCell} />\n </td>\n )}\n </table.AppCell>\n ))}\n </tr>\n ))}\n </tbody>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { useCellContext } from './table-feature-context'\nimport type { TableBooleanCellProps } from './table.types'\n\nexport function TableBooleanCell({\n trueLabel = 'Yes',\n falseLabel = 'No',\n children,\n ...props\n}: TableBooleanCellProps) {\n const cell = useCellContext<boolean | null | undefined>(),\n value = cell.getValue()\n\n if (value === undefined || value === null) {\n return undefined\n }\n\n return (\n <span {...props}>\n {children}\n {value && trueLabel}\n {!value && falseLabel}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { TableBottomBarProps } from './table.types'\n\nexport function TableBottomBar({ className, ref, ...props }: TableBottomBarProps) {\n return (\n <div\n className={cn(\n 'mt-auto flex w-full flex-wrap items-center justify-between pt-md group-data-[variant=outline]/table:border-t group-data-[variant=outline]/table:border-border',\n 'in-data-[slot=table-container]:sticky in-data-[slot=table-container]:bottom-0 in-data-[slot=table-container]:z-10 in-data-[slot=table-container]:bg-inherit',\n className,\n )}\n data-slot=\"table-bottom-bar\"\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Checkbox } from '../checkbox'\nimport { useCellContext, useTableContext } from './table-feature-context'\nimport type { TableCheckboxCellProps } from './table.types'\n\nexport function TableCheckboxCell({ className, ref, ...props }: TableCheckboxCellProps) {\n const cell = useCellContext(),\n table = useTableContext(),\n { row } = cell\n\n return (\n <table.Subscribe selector={(state) => state.rowSelection}>\n {() => (\n <Checkbox\n variant=\"outline\"\n aria-label=\"Select row\"\n checked={\n row.getIsSelected() || (row.getCanSelectSubRows() && row.getIsAllSubRowsSelected())\n }\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onCheckedChange={(checked) => row.toggleSelected(checked)}\n className={cn('mx-auto flex', className)}\n ref={ref}\n {...props}\n />\n )}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Checkbox } from '../checkbox'\nimport { useTableContext } from './table-feature-context'\nimport type { TableCheckboxHeaderProps } from './table.types'\n\nexport function TableCheckboxHeader({ className, ref, ...props }: TableCheckboxHeaderProps) {\n const table = useTableContext()\n\n return (\n <table.Subscribe selector={(state) => state.rowSelection}>\n {() => {\n const allRowsSelected = table.getIsAllRowsSelected()\n\n return (\n <Checkbox\n aria-label=\"Select all rows\"\n variant=\"outline\"\n checked={allRowsSelected}\n indeterminate={!allRowsSelected && table.getIsSomeRowsSelected()}\n onCheckedChange={(checked) => table.toggleAllRowsSelected(checked)}\n className={cn('mx-auto flex', className)}\n ref={ref}\n {...props}\n />\n )\n }}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Menu, MenuCheckboxItem, MenuPopup, MenuTrigger } from '../menu'\nimport { useTableContext } from './table-feature-context'\nimport type { TableColumnToggleProps } from './table.types'\nimport { getColumnHeaderLabel } from './table.utils'\n\nexport function TableColumnToggle({ className, ref, ...props }: TableColumnToggleProps) {\n const table = useTableContext(),\n handleToggleColumn = (columnId: string) => {\n table.getColumn(columnId)?.toggleVisibility()\n }\n\n return (\n <Menu>\n <MenuTrigger className={cn('shrink-0', className)} ref={ref} {...props} />\n <MenuPopup>\n {table.getAllColumns().flatMap((column) => {\n if (!column.getCanHide()) {\n return []\n }\n\n return (\n <MenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={() => handleToggleColumn(column.id)}\n >\n {getColumnHeaderLabel(column)}\n </MenuCheckboxItem>\n )\n })}\n </MenuPopup>\n </Menu>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { tableContainerVariants } from './table.types'\nimport type { TableContainerProps } from './table.types'\n\nexport function TableContainer({\n variant = 'outline',\n className,\n ref,\n ...props\n}: TableContainerProps) {\n return (\n <div\n data-slot=\"table-container\"\n data-variant={variant}\n className={cn(tableContainerVariants({ variant }), className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { useCellContext } from './table-feature-context'\nimport type { TableCurrencyCellProps } from './table.types'\n\nexport function TableCurrencyCell({\n currency,\n locale,\n options,\n children,\n ...props\n}: TableCurrencyCellProps) {\n const cell = useCellContext<number | null | undefined>(),\n value = cell.getValue()\n\n if (value === undefined || value === null) {\n return undefined\n }\n\n return (\n <span {...props}>\n {children}\n {new Intl.NumberFormat(locale, { ...options, currency, style: 'currency' }).format(value)}\n </span>\n )\n}\n","import { useSelector } from '@tanstack/react-store'\n\nimport { cn } from '@/utils'\n\nimport { TabsList, TabsTab } from '../tabs'\nimport { Tabs } from '../tabs/tabs'\nimport { useTableContext } from './table-feature-context'\nimport type { TableDatasetTabProps } from './table.types'\n\nexport function TableDatasetTab({ className, children, ref, ...props }: TableDatasetTabProps) {\n const table = useTableContext(),\n datasets = useSelector(table.atoms.datasets),\n currentDataset = useSelector(table.atoms.currentDataset),\n handleTabChange = (datasetId: string) => {\n const dataset = datasets.find((candidate) => candidate.id === datasetId)\n\n if (!dataset) {\n return\n }\n\n table.setCurrentDataset(dataset)\n }\n\n return (\n <Tabs\n value={currentDataset.id}\n onValueChange={handleTabChange}\n className={cn(className)}\n ref={ref}\n {...props}\n data-slot=\"table-dataset-tab\"\n >\n {children}\n <TabsList>\n {datasets.map((dataset) => (\n <TabsTab key={dataset.id} value={dataset.id}>\n {dataset.name}\n </TabsTab>\n ))}\n </TabsList>\n </Tabs>\n )\n}\n","import { formatDate } from '@/utils'\nimport { cn } from '@/utils/cn'\n\nimport { useCellContext } from './table-feature-context'\nimport type { TableDateCellProps } from './table.types'\n\nexport function TableDateTimeCell({\n locale,\n options,\n className,\n children,\n ref,\n ...props\n}: TableDateCellProps) {\n const cell = useCellContext<Date | undefined>(),\n date = cell.getValue()\n\n if (!date) {\n return undefined\n }\n\n if (Number.isNaN(date.getTime())) {\n return 'Invalid date'\n }\n\n return (\n <span className={cn('', className)} ref={ref} {...props}>\n {children}\n {formatDate(date, locale, options)}\n </span>\n )\n}\n","import { cn } from '@/utils'\n\nimport { useTableContext } from './table-feature-context'\nimport type { TableEmptyProps } from './table.types'\n\nconst EMPTY_LIMIT = 0\n\nexport function TableEmpty({ className, children, ref, ...props }: TableEmptyProps) {\n const table = useTableContext()\n return (\n <table.Subscribe selector={(state) => state.globalFilter}>\n {() =>\n table.getFilteredRowModel().rows.length <= EMPTY_LIMIT && (\n <div\n data-slot=\"table-empty\"\n className={cn(\n 'flex w-full min-w-0 flex-col items-center justify-center gap-md px-md py-3xl text-center',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n }\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils'\n\nimport type { TableEmptyContentProps } from './table.types'\n\nexport function TableEmptyContent({ className, children, ref, ...props }: TableEmptyContentProps) {\n return (\n <div\n className={cn('flex w-full max-w-[28rem] min-w-0 flex-col items-center gap-2xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils'\n\nimport type { TableEmptyDescriptionProps } from './table.types'\n\nexport function TableEmptyDescription({\n className,\n children,\n ref,\n ...props\n}: TableEmptyDescriptionProps) {\n return (\n <span\n className={cn(\n 'block max-w-[28rem] style-text-default--1 text-pretty wrap-break-word text-on-surface-variant',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n}\n","import { cn } from '@/utils'\n\nimport type { TableEmptyFooterProps } from './table.types'\n\nexport function TableEmptyFooter({ className, children, ref, ...props }: TableEmptyFooterProps) {\n return (\n <div\n className={cn('flex w-full flex-wrap items-center justify-center gap-xs', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils'\n\nimport type { TableEmptyHeaderProps } from './table.types'\n\nexport function TableEmptyHeader({ className, children, ref, ...props }: TableEmptyHeaderProps) {\n return (\n <div\n className={cn('flex w-full max-w-[28rem] flex-col items-center gap-sm', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import { cn } from '@/utils'\n\nimport type { TableEmptyTitleProps } from './table.types'\n\nexport function TableEmptyTitle({ className, children, ref, ...props }: TableEmptyTitleProps) {\n return (\n <span\n className={cn('block style-text-strong-1 text-balance text-on-surface', className)}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Field } from '../field'\nimport { Form, useAppForm } from '../form'\nimport { Radio } from '../radio-group'\nimport { useTableContext } from './table-feature-context'\nimport { dateFilterOperators, dateFilterSchema, defaultFilterOperatorLabels } from './table.types'\nimport type { TableDateFilterFormProps } from './table.types'\nimport { asFilterValue } from './table.utils'\nimport type { DateFilterValue } from './table.utils'\n\nconst FROM_DATE_INDEX = 0,\n TO_DATE_INDEX = 1\n\nexport function TableDateFilterForm<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableDateFilterFormProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {\n apply: 'Apply',\n reset: 'Reset',\n },\n currentFilter = asFilterValue<DateFilterValue | undefined>(column.getFilterValue()),\n form = useAppForm({\n defaultValues: {\n filterOperator: currentFilter?.operator ?? 'equals',\n filterValueFrom: currentFilter?.date[FROM_DATE_INDEX] ?? '',\n filterValueTo: currentFilter?.date[TO_DATE_INDEX] ?? '',\n },\n onSubmit: ({ value }) => {\n column.setFilterValue({\n date: [value.filterValueFrom, value.filterValueTo],\n operator: value.filterOperator,\n } satisfies DateFilterValue)\n },\n validators: {\n onSubmit: dateFilterSchema,\n },\n }),\n onReset = () => {\n column.setFilterValue(undefined)\n form.reset()\n }\n\n return (\n <Form\n onSubmit={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n await form.handleSubmit()\n }}\n onReset={onReset}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n <form.AppForm>\n {children}\n <form.Errors />\n <form.Set>\n <form.SetHeading>\n <form.SetContent>\n <Field>\n <form.AppField name=\"filterOperator\">\n {(field) => (\n <Field>\n <field.Errors />\n <field.RadioGroup>\n {dateFilterOperators.map((operator) => (\n <field.Set key={operator}>\n <Radio value={operator} variant=\"inSurface\">\n {filterOperatorLabels?.[operator] ??\n defaultFilterOperatorLabels[operator]}\n </Radio>\n {field.state.value === operator && (\n <>\n <form.AppField name=\"filterValueFrom\">\n {(valueField) => (\n <Field>\n <valueField.Errors />\n <valueField.Input type=\"date\" variant=\"secondary\" />\n </Field>\n )}\n </form.AppField>\n {operator === 'between' && (\n <form.AppField name=\"filterValueTo\">\n {(valueField) => (\n <Field>\n <valueField.Errors />\n <valueField.Input type=\"date\" variant=\"secondary\" />\n </Field>\n )}\n </form.AppField>\n )}\n </>\n )}\n </field.Set>\n ))}\n </field.RadioGroup>\n </Field>\n )}\n </form.AppField>\n </Field>\n </form.SetContent>\n </form.SetHeading>\n </form.Set>\n <form.Footer>\n <form.Reset>{buttonLabels.reset}</form.Reset>\n <form.Submit>{buttonLabels.apply}</form.Submit>\n </form.Footer>\n </form.AppForm>\n </Form>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport {\n Popover,\n PopoverTrigger,\n PopoverPanel,\n PopoverHeader,\n PopoverContent,\n PopoverTitle,\n} from '../popover'\nimport { TableDateFilterForm } from './table-date-filter-form'\nimport { useTableContext } from './table-feature-context'\nimport { defaultFilterOperatorLabels } from './table.types'\nimport type { TableDateFilterChipProps } from './table.types'\nimport { asFilterValue, getColumnHeaderLabel } from './table.utils'\nimport type { DateFilterValue } from './table.utils'\n\nconst FIRST_DATE_INDEX = 0,\n LAST_DATE_INDEX = 1\n\nfunction getDateFilterLabel(date: DateFilterValue['date'] | string): string {\n if (Array.isArray(date)) {\n if (date[LAST_DATE_INDEX] !== '') {\n return date.join(' - ')\n }\n return date[FIRST_DATE_INDEX]\n }\n return date\n}\n\nexport function TableDateFilterChip<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableDateFilterChipProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n columnFilter = asFilterValue<DateFilterValue>(column.getFilterValue())\n\n return (\n <Popover key={column.id}>\n <PopoverTrigger className={cn('', className)} ref={ref} {...props}>\n <Button tone=\"neutral\" size=\"extraSmall\" variant=\"soft\">\n <Icon name=\"filter\" />\n <span>{getColumnHeaderLabel(column)}</span>\n <span className=\"lowercase\">\n {filterOperatorLabels?.[columnFilter.operator] ??\n defaultFilterOperatorLabels[columnFilter.operator]}\n </span>\n <span>{getDateFilterLabel(columnFilter.date)}</span>\n </Button>\n </PopoverTrigger>\n <PopoverPanel>\n <PopoverHeader>\n <PopoverTitle>{getColumnHeaderLabel(column)}</PopoverTitle>\n <PopoverContent>\n {children}\n <TableDateFilterForm column={column} />\n </PopoverContent>\n </PopoverHeader>\n </PopoverPanel>\n </Popover>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Field } from '../field'\nimport { Form, useAppForm } from '../form'\nimport { Radio } from '../radio-group'\nimport { useTableContext } from './table-feature-context'\nimport {\n defaultFilterOperatorLabels,\n numberFilterOperators,\n numberFilterSchema,\n} from './table.types'\nimport type { TableNumberFilterFormProps } from './table.types'\nimport { asFilterValue } from './table.utils'\nimport type { NumberFilterValue } from './table.utils'\n\nconst FROM_VALUE_INDEX = 0,\n TO_VALUE_INDEX = 1\n\nexport function TableNumberFilterForm<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableNumberFilterFormProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {\n apply: 'Apply',\n reset: 'Reset',\n },\n currentFilter = asFilterValue<NumberFilterValue | undefined>(column.getFilterValue()),\n form = useAppForm({\n defaultValues: {\n filterOperator: currentFilter?.operator ?? 'equals',\n filterValueFrom: currentFilter?.number[FROM_VALUE_INDEX] ?? '',\n filterValueTo: currentFilter?.number[TO_VALUE_INDEX] ?? '',\n },\n onSubmit: ({ value }) => {\n column.setFilterValue({\n number: [value.filterValueFrom, value.filterValueTo],\n operator: value.filterOperator,\n } satisfies NumberFilterValue)\n },\n validators: {\n onSubmit: numberFilterSchema,\n },\n }),\n onReset = () => {\n column.setFilterValue(undefined)\n form.reset({ filterOperator: 'equals', filterValueFrom: '', filterValueTo: '' })\n }\n\n return (\n <Form\n onSubmit={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n await form.handleSubmit()\n }}\n onReset={onReset}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n <form.AppForm>\n {children}\n <form.Errors />\n <form.Set>\n <form.SetContent>\n <form.AppField name=\"filterOperator\">\n {(field) => (\n <Field>\n <field.Errors />\n <field.RadioGroup>\n {numberFilterOperators.map((operator) => (\n <field.Set key={operator}>\n <Radio value={operator} variant=\"inSurface\">\n {filterOperatorLabels?.[operator] ??\n defaultFilterOperatorLabels[operator]}\n </Radio>\n {field.state.value === operator && (\n <>\n <form.AppField name=\"filterValueFrom\">\n {(valueField) => (\n <Field>\n <valueField.Errors />\n <valueField.Input\n aria-label={`${column.id} filter value`}\n type=\"number\"\n variant=\"secondary\"\n />\n </Field>\n )}\n </form.AppField>\n {operator === 'between' && (\n <form.AppField name=\"filterValueTo\">\n {(valueField) => (\n <Field>\n <valueField.Errors />\n <valueField.Input\n aria-label={`${column.id} maximum filter value`}\n type=\"number\"\n variant=\"secondary\"\n />\n </Field>\n )}\n </form.AppField>\n )}\n </>\n )}\n </field.Set>\n ))}\n </field.RadioGroup>\n </Field>\n )}\n </form.AppField>\n </form.SetContent>\n </form.Set>\n <form.Footer>\n <form.Reset>{buttonLabels.reset}</form.Reset>\n <form.Submit>{buttonLabels.apply}</form.Submit>\n </form.Footer>\n </form.AppForm>\n </Form>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport {\n Popover,\n PopoverContent,\n PopoverHeader,\n PopoverPanel,\n PopoverTitle,\n PopoverTrigger,\n} from '../popover'\nimport { useTableContext } from './table-feature-context'\nimport { TableNumberFilterForm } from './table-number-filter-form'\nimport { defaultFilterOperatorLabels } from './table.types'\nimport type { TableNumberFilterChipProps } from './table.types'\nimport { asFilterValue, getColumnHeaderLabel } from './table.utils'\nimport type { NumberFilterValue } from './table.utils'\n\nconst FIRST_RANGE_INDEX = 0\n\nfunction getFilterDisplayValue(filterValue: NumberFilterValue): string {\n if (filterValue.operator === 'between') {\n return filterValue.number.filter(Boolean).join(' - ')\n }\n return filterValue.number[FIRST_RANGE_INDEX]\n}\n\nexport function TableNumberFilterChip<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableNumberFilterChipProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n columnFilter = asFilterValue<NumberFilterValue>(column.getFilterValue()),\n filterValue = getFilterDisplayValue(columnFilter)\n\n return (\n <Popover>\n <PopoverTrigger className={cn('', className)} ref={ref} {...props}>\n <Button tone=\"neutral\" size=\"extraSmall\" variant=\"soft\">\n <Icon name=\"filter\" />\n <span>{getColumnHeaderLabel(column)}</span>\n <span className=\"font-light lowercase\">\n {filterOperatorLabels?.[columnFilter.operator] ??\n defaultFilterOperatorLabels[columnFilter.operator]}\n </span>\n <span>{filterValue}</span>\n {children}\n </Button>\n </PopoverTrigger>\n <PopoverPanel>\n <PopoverHeader>\n <PopoverTitle>{getColumnHeaderLabel(column)}</PopoverTitle>\n </PopoverHeader>\n <PopoverContent>\n <TableNumberFilterForm column={column} />\n </PopoverContent>\n </PopoverPanel>\n </Popover>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\nimport { useState } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Form, FormFooter } from '../form'\nimport { Icon } from '../icon'\nimport {\n Select,\n SelectIcon,\n SelectItem,\n SelectList,\n SelectPopup,\n SelectTitle,\n SelectTrigger,\n SelectValue,\n} from '../select'\nimport { useTableContext } from './table-feature-context'\nimport type {\n TableSelectFilterFormProps,\n TableSelectFilterOption,\n TableSelectFilterValue,\n} from './table.types'\n\nconst EMPTY_FILTER_COUNT = 0,\n isSelectFilterOption = (value: unknown): value is TableSelectFilterOption =>\n typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean',\n isSelectFilterValue = (value: unknown): value is TableSelectFilterValue =>\n Array.isArray(value) && value.every(isSelectFilterOption),\n getSelectValueLabel = (value: unknown): string => {\n if (isSelectFilterValue(value)) {\n return value.map(String).join(', ')\n }\n return 'Select values'\n }\n\nexport function TableSelectFilterForm<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableSelectFilterFormProps<TData>) {\n const table = useTableContext(),\n currentFilter = column.getFilterValue(),\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {\n apply: 'Apply',\n reset: 'Reset',\n },\n [filterValue, setFilterValue] = useState<TableSelectFilterValue>(() => {\n if (isSelectFilterValue(currentFilter)) {\n return currentFilter\n }\n return []\n }),\n options = [...column.getFacetedUniqueValues().keys()]\n .filter(isSelectFilterOption)\n .toSorted((left, right) => String(left).localeCompare(String(right)))\n\n return (\n <Form\n className={cn('', className)}\n onReset={() => {\n column.setFilterValue(undefined)\n setFilterValue([])\n }}\n onSubmit={(event) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (filterValue.length > EMPTY_FILTER_COUNT) {\n column.setFilterValue(filterValue)\n }\n }}\n ref={ref}\n {...props}\n >\n {children}\n <Select\n multiple\n value={filterValue}\n onValueChange={(value) => {\n if (isSelectFilterValue(value)) {\n setFilterValue(value)\n }\n }}\n >\n <SelectTrigger aria-label={`${column.id} filter value`} variant=\"secondary\">\n <SelectValue placeholder=\"Select values\">\n {(value) => getSelectValueLabel(value)}\n </SelectValue>\n <SelectIcon>\n <Icon name=\"chevronsUpDown\" />\n </SelectIcon>\n </SelectTrigger>\n <SelectPopup alignItemWithTrigger={false} sideOffset={8}>\n <SelectList>\n {options.map((option) => (\n <SelectItem key={`${typeof option}:${String(option)}`} value={option}>\n <SelectTitle>{String(option)}</SelectTitle>\n </SelectItem>\n ))}\n </SelectList>\n </SelectPopup>\n </Select>\n <FormFooter>\n <Button className=\"w-full\" tone=\"neutral\" type=\"reset\" variant=\"outline\">\n {buttonLabels.reset}\n </Button>\n <Button\n className=\"w-full\"\n disabled={filterValue.length === EMPTY_FILTER_COUNT}\n type=\"submit\"\n >\n {buttonLabels.apply}\n </Button>\n </FormFooter>\n </Form>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport {\n Popover,\n PopoverContent,\n PopoverHeader,\n PopoverPanel,\n PopoverTitle,\n PopoverTrigger,\n} from '../popover'\nimport { TableSelectFilterForm } from './table-select-filter-form'\nimport type { TableSelectFilterChipProps, TableSelectFilterValue } from './table.types'\nimport { asFilterValue, getColumnHeaderLabel } from './table.utils'\n\nexport function TableSelectFilterChip<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableSelectFilterChipProps<TData>) {\n const columnFilter = asFilterValue<TableSelectFilterValue>(column.getFilterValue()),\n header = getColumnHeaderLabel(column)\n\n return (\n <Popover>\n <PopoverTrigger className={cn('', className)} ref={ref} {...props}>\n <Button size=\"extraSmall\" variant=\"soft\">\n <Icon name=\"filter\" />\n <span>{header}</span>\n <span className=\"font-light lowercase\">{columnFilter.map(String).join(', ')}</span>\n {children}\n </Button>\n </PopoverTrigger>\n <PopoverPanel>\n <PopoverHeader>\n <PopoverTitle>{header}</PopoverTitle>\n </PopoverHeader>\n <PopoverContent>\n <TableSelectFilterForm column={column} />\n </PopoverContent>\n </PopoverPanel>\n </Popover>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Field } from '../field'\nimport { Form, useAppForm } from '../form'\nimport { Radio } from '../radio-group'\nimport { useTableContext } from './table-feature-context'\nimport {\n defaultFilterOperatorLabels,\n stringFilterOperators,\n stringFilterSchema,\n} from './table.types'\nimport type { TableStringFilterFormProps } from './table.types'\nimport { asFilterValue } from './table.utils'\nimport type { StringFilterValue } from './table.utils'\n\nexport function TableStringFilterForm<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableStringFilterFormProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {\n apply: 'Apply',\n reset: 'Reset',\n },\n currentFilter = asFilterValue<StringFilterValue | undefined>(column.getFilterValue()),\n form = useAppForm({\n defaultValues: {\n filterOperator: currentFilter?.operator ?? 'contains',\n filterValue: currentFilter?.value ?? '',\n },\n onSubmit: ({ value }) => {\n column.setFilterValue({\n operator: value.filterOperator,\n value: value.filterValue,\n } satisfies StringFilterValue)\n },\n validators: {\n onSubmit: stringFilterSchema,\n },\n }),\n onReset = () => {\n column.setFilterValue(undefined)\n form.reset({ filterOperator: 'contains', filterValue: '' })\n }\n\n return (\n <Form\n onSubmit={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n await form.handleSubmit()\n }}\n onReset={onReset}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n <form.AppForm>\n {children}\n <form.Errors />\n <form.Set>\n <form.SetContent>\n <form.AppField name=\"filterOperator\">\n {(field) => (\n <Field>\n <field.Errors />\n <field.RadioGroup>\n {stringFilterOperators.map((operator) => (\n <field.Set key={operator}>\n <Radio value={operator} variant=\"inSurface\">\n {filterOperatorLabels?.[operator] ??\n defaultFilterOperatorLabels[operator]}\n </Radio>\n {field.state.value === operator && (\n <form.AppField name=\"filterValue\">\n {(valueField) => (\n <Field>\n <valueField.Errors />\n <valueField.Input\n aria-label={`${column.id} filter value`}\n variant=\"secondary\"\n />\n </Field>\n )}\n </form.AppField>\n )}\n </field.Set>\n ))}\n </field.RadioGroup>\n </Field>\n )}\n </form.AppField>\n </form.SetContent>\n </form.Set>\n <form.Footer>\n <form.Reset>{buttonLabels.reset}</form.Reset>\n <form.Submit>{buttonLabels.apply}</form.Submit>\n </form.Footer>\n </form.AppForm>\n </Form>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport {\n Popover,\n PopoverContent,\n PopoverHeader,\n PopoverPanel,\n PopoverTitle,\n PopoverTrigger,\n} from '../popover'\nimport { useTableContext } from './table-feature-context'\nimport { TableStringFilterForm } from './table-string-filter-form'\nimport { defaultFilterOperatorLabels } from './table.types'\nimport type { TableStringFilterChipProps } from './table.types'\nimport { asFilterValue, getColumnHeaderLabel } from './table.utils'\nimport type { StringFilterValue } from './table.utils'\n\nexport function TableStringFilterChip<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableStringFilterChipProps<TData>) {\n const table = useTableContext(),\n filterOperatorLabels = table.options.meta?.translations?.filterOperatorLabels,\n columnFilter = asFilterValue<StringFilterValue>(column.getFilterValue())\n\n return (\n <Popover>\n <PopoverTrigger className={cn('', className)} ref={ref} {...props}>\n <Button tone=\"neutral\" size=\"extraSmall\" variant=\"soft\">\n <Icon name=\"filter\" />\n <span>{getColumnHeaderLabel(column)}</span>\n <span className=\"font-light lowercase\">\n {filterOperatorLabels?.[columnFilter.operator] ??\n defaultFilterOperatorLabels[columnFilter.operator]}\n </span>\n <span>{columnFilter.value}</span>\n {children}\n </Button>\n </PopoverTrigger>\n <PopoverPanel>\n <PopoverHeader>\n <PopoverTitle>{getColumnHeaderLabel(column)}</PopoverTitle>\n </PopoverHeader>\n <PopoverContent>\n <TableStringFilterForm column={column} />\n </PopoverContent>\n </PopoverPanel>\n </Popover>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { TableDateFilterChip } from './table-date-filter-chip'\nimport { useTableContext } from './table-feature-context'\nimport { TableNumberFilterChip } from './table-number-filter-chip'\nimport { TableSelectFilterChip } from './table-select-filter-chip'\nimport { TableStringFilterChip } from './table-string-filter-chip'\nimport type { TableFilterListProps } from './table.types'\n\nexport function TableFilterList({ className, children, ref, ...props }: TableFilterListProps) {\n const table = useTableContext()\n\n return (\n <table.Subscribe selector={(state) => state.columnFilters}>\n {() => {\n if (!table.getAllColumns().some((column) => column.getIsFiltered())) {\n return undefined\n }\n\n return (\n <div className={cn('flex flex-wrap items-center gap-xs', className)} ref={ref} {...props}>\n {children}\n {table.getAllColumns().map((column) => {\n if (!column.getIsFiltered()) {\n return undefined\n }\n\n switch (column.columnDef.meta?.filterVariant) {\n case 'date': {\n return <TableDateFilterChip key={column.id} column={column} />\n }\n case 'number': {\n return <TableNumberFilterChip key={column.id} column={column} />\n }\n case 'select': {\n return <TableSelectFilterChip key={column.id} column={column} />\n }\n case 'string': {\n return <TableStringFilterChip key={column.id} column={column} />\n }\n default: {\n return undefined\n }\n }\n })}\n </div>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Menu, MenuItem, MenuPopup, MenuTrigger } from '../menu'\nimport {\n Popover,\n PopoverContent,\n PopoverHeader,\n PopoverPanel,\n PopoverTitle,\n PopoverTrigger,\n} from '../popover'\nimport { TableDateFilterForm } from './table-date-filter-form'\nimport { useTableContext } from './table-feature-context'\nimport { TableNumberFilterForm } from './table-number-filter-form'\nimport { TableSelectFilterForm } from './table-select-filter-form'\nimport { TableStringFilterForm } from './table-string-filter-form'\nimport type { TableFilterMenuProps } from './table.types'\nimport { getColumnHeaderLabel } from './table.utils'\n\nexport function TableFilterMenu({ className, ref, ...props }: TableFilterMenuProps) {\n const table = useTableContext()\n\n return (\n <Menu modal={false}>\n <MenuTrigger className={cn('shrink-0', className)} ref={ref} {...props} />\n <MenuPopup align=\"end\" className=\"\">\n {table\n .getAllColumns()\n .filter((column) => column.getCanFilter())\n .map((column) => {\n const { filterVariant } = column.columnDef.meta ?? {}\n\n return (\n <Popover key={column.id}>\n <PopoverTrigger nativeButton>\n <MenuItem closeOnClick={false}>{getColumnHeaderLabel(column)}</MenuItem>\n </PopoverTrigger>\n <PopoverPanel\n side=\"inline-end\"\n align=\"start\"\n className={cn('', className)}\n onKeyDownCapture={(event) => event.stopPropagation()}\n >\n <PopoverHeader>\n <PopoverTitle>{getColumnHeaderLabel(column)}</PopoverTitle>\n </PopoverHeader>\n <PopoverContent>\n {(() => {\n switch (filterVariant) {\n case 'date': {\n return <TableDateFilterForm column={column} />\n }\n case 'number': {\n return <TableNumberFilterForm column={column} />\n }\n case 'select': {\n return <TableSelectFilterForm column={column} />\n }\n case 'string': {\n return <TableStringFilterForm column={column} />\n }\n default: {\n return undefined\n }\n }\n })()}\n </PopoverContent>\n </PopoverPanel>\n </Popover>\n )\n })}\n </MenuPopup>\n </Menu>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useTableContext } from './table-feature-context'\nimport type { TableFirstPageProps } from './table.types'\n\nconst DEFAULT_PAGE_INDEX = 0\n\nexport function TableFirstPage({ className, children, ref, ...props }: TableFirstPageProps) {\n const table = useTableContext(),\n handleClick = () => {\n table.setPageIndex(DEFAULT_PAGE_INDEX)\n }\n\n return (\n <Button\n aria-label=\"Go to first page\"\n className={cn('shrink-0', className)}\n disabled={!table.getCanPreviousPage()}\n onClick={handleClick}\n ref={ref}\n variant=\"outline\"\n tone=\"neutral\"\n size=\"medium\"\n {...props}\n >\n {children ?? <Icon name=\"firstPage\" />}\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { useTableContext as useRegisteredTableContext } from './table-context'\nimport { useTableContext } from './table-feature-context'\nimport type { TableFooterProps } from './table.types'\n\nexport function TableFooter({ className, children, ref, ...props }: TableFooterProps) {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const table = useTableContext() as ReturnType<typeof useRegisteredTableContext>\n\n return (\n <tfoot\n className={cn('border-t border-border bg-neutral-container-low', className)}\n ref={ref}\n {...props}\n >\n {children}\n {table.getFooterGroups().map((footerGroup) => (\n <tr key={footerGroup.id}>\n {footerGroup.headers.map((header) => (\n <table.AppFooter header={header} key={header.id}>\n {(footer) => (\n // oxlint-disable-next-line jsx-a11y/control-has-associated-label\n <td\n style={{\n width: footer.getSize(),\n }}\n className=\"p-xs\"\n colSpan={footer.colSpan}\n >\n <table.FlexRender footer={footer} />\n </td>\n )}\n </table.AppFooter>\n ))}\n </tr>\n ))}\n </tfoot>\n )\n}\n","import { Icon } from '@/components/icon'\nimport { cn } from '@/utils/cn'\n\nimport type { useTableContext as useRegisteredTableContext } from './table-context'\nimport { useTableContext } from './table-feature-context'\nimport type { TableHeaderProps } from './table.types'\n\nexport function TableHeader({ className, children, ref, ...props }: TableHeaderProps) {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion\n const table = useTableContext() as ReturnType<typeof useRegisteredTableContext>\n\n return (\n <table.Subscribe selector={(state) => state}>\n {(state) => {\n if (state.viewMode === 'grid') {\n return undefined\n }\n return (\n <thead\n className={cn('sticky top-0 bg-neutral-container-low', className)}\n ref={ref}\n {...props}\n >\n {children}\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <table.AppHeader\n header={header}\n key={header.id}\n selector={(tableState) => tableState.sorting}\n >\n {(renderHeader) => {\n const sorting = renderHeader.column.getIsSorted()\n return (\n <th\n style={{\n width: renderHeader.getSize(),\n }}\n className={cn(\n 'container p-xs text-left style-text-default-0 text-neutral-on-container-muted transition-colors group-data-[variant=outline]/table:shadow-[inset_0_-1px_0_var(--color-border)] group-data-[variant=ghost]/table:first:rounded-l-xl group-data-[variant=ghost]/table:last:rounded-r-xl',\n renderHeader.column.getCanSort() &&\n 'hover:cursor-pointer hover:bg-neutral-container hover:*:text-neutral-on-container',\n renderHeader.isPlaceholder && 'cursor-default',\n renderHeader.column.getIsSorted() && 'text-brand-on-container!',\n className,\n )}\n colSpan={renderHeader.colSpan}\n key={renderHeader.id}\n onClick={renderHeader.column.getToggleSortingHandler()}\n >\n {!renderHeader.isPlaceholder && (\n <div\n className={cn(\n 'flex items-center gap-2xs whitespace-nowrap has-[[role=checkbox]]:justify-center [&_svg]:size-sm',\n renderHeader.column.getCanSort() &&\n 'select-none hover:cursor-pointer',\n )}\n >\n <div className=\"flex items-center gap-2xs\">\n <table.FlexRender header={renderHeader} />\n </div>\n {sorting === 'asc' && <Icon name=\"sortDescending\" />}\n {sorting === 'desc' && <Icon name=\"sortAscending\" />}\n {!sorting && renderHeader.column.getCanSort() && (\n <Icon name=\"columnFilter\" />\n )}\n </div>\n )}\n </th>\n )\n }}\n </table.AppHeader>\n ))}\n </tr>\n ))}\n </thead>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCellContext } from './table-feature-context'\nimport type { TableImageCellProps } from './table.types'\n\nexport function TableImageCell({ className, ref, ...props }: TableImageCellProps) {\n const cell = useCellContext<string>()\n\n return (\n <img\n alt=\"\"\n src={cell.getValue()}\n className={cn('my-xs size-xl', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useTableContext } from './table-feature-context'\nimport type { TableLastPageProps } from './table.types'\n\nconst LAST_PAGE_OFFSET = 1\n\nexport function TableLastPage({ className, children, ref, ...props }: TableLastPageProps) {\n const table = useTableContext(),\n handleClick = () => {\n table.setPageIndex(table.getPageCount() - LAST_PAGE_OFFSET)\n }\n\n return (\n <Button\n aria-label=\"Go to last page\"\n className={cn('shrink-0', className)}\n disabled={!table.getCanNextPage()}\n onClick={handleClick}\n ref={ref}\n variant=\"outline\"\n tone=\"neutral\"\n size=\"medium\"\n {...props}\n >\n {children ?? <Icon name=\"lastPage\" />}\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { TableLayoutProps } from './table.types'\n\nexport function TableLayout({ className, ref, ...props }: TableLayoutProps) {\n return (\n <div\n data-slot=\"table-layout\"\n className={cn('flex min-w-0 flex-col gap-md', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils'\n\nimport { Button } from '../button'\nimport { useCellContext } from './table-feature-context'\nimport type { TableLinkCellProps } from './table.types'\n\nexport function TableLinkCell({ className, children, ref, ...props }: TableLinkCellProps) {\n const cell = useCellContext<string>(),\n value = cell.getValue()\n\n return (\n <Button variant=\"link\" type=\"button\" className={cn('', className)} ref={ref} {...props}>\n {children ?? value}\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useTableContext } from './table-feature-context'\nimport type { TableNextPageProps } from './table.types'\n\nexport function TableNextPage({ className, children, ref, ...props }: TableNextPageProps) {\n const table = useTableContext(),\n handleClick = () => {\n table.nextPage()\n }\n\n return (\n <Button\n aria-label=\"Go to next page\"\n className={cn('shrink-0', className)}\n disabled={!table.getCanNextPage()}\n onClick={handleClick}\n ref={ref}\n size=\"medium\"\n variant=\"outline\"\n tone=\"neutral\"\n {...props}\n >\n {children ?? <Icon name=\"chevronRight\" />}\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCellContext } from './table-feature-context'\nimport type { TableNumberCellProps } from './table.types'\n\nexport function TableNumberCell({ className, children, ref, ...props }: TableNumberCellProps) {\n const cell = useCellContext<number>()\n\n return (\n <span className={cn('', className)} ref={ref} {...props}>\n {children}\n {cell.getValue().toLocaleString()}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { TablePaginationProps } from './table.types'\n\nexport function TablePagination({ className, ref, ...props }: TablePaginationProps) {\n return (\n <div\n className={cn('inline-flex items-center justify-center gap-3xs', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { Menu, MenuPopup, MenuRadioGroup, MenuRadioItem, MenuTrigger } from '../menu'\nimport { useTableContext } from './table-feature-context'\nimport type { TablePagingProps } from './table.types'\n\nconst DEFAULT_VISIBLE_START_PAGES = 3,\n DEFAULT_VISIBLE_END_PAGES = 1,\n FIRST_PAGE_INDEX = 0,\n PAGE_NUMBER_OFFSET = 1,\n PAGE_INDEX_INCREMENT = 1,\n MORE_PAGES_MAX_HEIGHT = 200\n\nfunction getLeadingPageIndexes(minimumPages: number, totalPages: number): number[] {\n const pageIndexes: number[] = []\n for (\n let pageIndex = FIRST_PAGE_INDEX;\n pageIndex < minimumPages && pageIndex < totalPages;\n pageIndex += PAGE_INDEX_INCREMENT\n ) {\n pageIndexes.push(pageIndex)\n }\n return pageIndexes\n}\n\nfunction getOverflowPageIndexes(\n minimumPages: number,\n maximumPages: number,\n totalPages: number,\n): number[] {\n const pageIndexes: number[] = []\n for (\n let pageIndex = minimumPages;\n pageIndex < totalPages - maximumPages;\n pageIndex += PAGE_INDEX_INCREMENT\n ) {\n pageIndexes.push(pageIndex)\n }\n return pageIndexes\n}\n\nfunction getTrailingPageIndexes(\n minimumPages: number,\n maximumPages: number,\n totalPages: number,\n): number[] {\n const pageIndexes: number[] = []\n for (\n let pageIndex = totalPages - maximumPages;\n pageIndex < totalPages;\n pageIndex += PAGE_INDEX_INCREMENT\n ) {\n if (pageIndex >= minimumPages) {\n pageIndexes.push(pageIndex)\n }\n }\n return pageIndexes\n}\n\nfunction getPageButtonTone(pageIndex: number, selectedPageIndex: number): 'brand' | 'neutral' {\n if (pageIndex === selectedPageIndex) {\n return 'brand'\n }\n return 'neutral'\n}\n\nfunction getPageButtonVariant(pageIndex: number, selectedPageIndex: number): 'fill' | 'outline' {\n if (pageIndex === selectedPageIndex) {\n return 'fill'\n }\n return 'outline'\n}\n\nexport function TablePaging({\n min = DEFAULT_VISIBLE_START_PAGES,\n max = DEFAULT_VISIBLE_END_PAGES,\n className,\n children,\n ref,\n ...props\n}: TablePagingProps) {\n const table = useTableContext(),\n handleClick = (pageIndex: number) => {\n table.setPageIndex(pageIndex)\n }\n\n return (\n <table.Subscribe selector={(state) => state.pagination}>\n {(pagination) => {\n const totalPages = table.getPageCount(),\n leadingPageIndexes = getLeadingPageIndexes(min, totalPages),\n overflowPageIndexes = getOverflowPageIndexes(min, max, totalPages),\n trailingPageIndexes = getTrailingPageIndexes(min, max, totalPages)\n\n return (\n <div className={cn('flex items-center gap-2xs', className)} ref={ref} {...props}>\n {children}\n {leadingPageIndexes.map((pageIndex) => (\n <Button\n key={`page-${pageIndex}`}\n tone={getPageButtonTone(pageIndex, pagination.pageIndex)}\n variant={getPageButtonVariant(pageIndex, pagination.pageIndex)}\n className=\"shrink-0\"\n onClick={() => handleClick(pageIndex)}\n >\n {pageIndex + PAGE_NUMBER_OFFSET}\n </Button>\n ))}\n {totalPages > min + max && (\n <Menu>\n <MenuTrigger>\n <Button\n aria-label=\"Show more pages\"\n tone=\"neutral\"\n size=\"medium\"\n variant=\"outline\"\n className=\"shrink-0\"\n >\n <Icon name=\"ellipsis\" />\n </Button>\n </MenuTrigger>\n <MenuPopup align=\"center\">\n <MenuRadioGroup\n value={pagination.pageIndex}\n onValueChange={handleClick}\n className=\"overflow-y-auto\"\n style={{ maxHeight: `${MORE_PAGES_MAX_HEIGHT}px` }}\n >\n {overflowPageIndexes.map((pageIndex) => (\n <MenuRadioItem key={pageIndex} value={pageIndex} closeOnClick>\n {pageIndex + PAGE_NUMBER_OFFSET}\n </MenuRadioItem>\n ))}\n </MenuRadioGroup>\n </MenuPopup>\n </Menu>\n )}\n {trailingPageIndexes.map((pageIndex) => (\n <Button\n key={`last-page-${pageIndex}`}\n tone={getPageButtonTone(pageIndex, pagination.pageIndex)}\n variant={getPageButtonVariant(pageIndex, pagination.pageIndex)}\n className=\"shrink-0\"\n onClick={() => handleClick(pageIndex)}\n >\n {pageIndex + PAGE_NUMBER_OFFSET}\n </Button>\n ))}\n </div>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { useCellContext } from './table-feature-context'\nimport type { TablePercentCellProps } from './table.types'\n\nexport function TablePercentCell({ locale, options, children, ...props }: TablePercentCellProps) {\n const cell = useCellContext<number | null | undefined>(),\n value = cell.getValue()\n\n if (value === undefined || value === null) {\n return undefined\n }\n\n return (\n <span {...props}>\n {children}\n {new Intl.NumberFormat(locale, { ...options, style: 'percent' }).format(value)}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useTableContext } from './table-feature-context'\nimport type { TablePreviousPageProps } from './table.types'\n\nexport function TablePreviousPage({ className, children, ref, ...props }: TablePreviousPageProps) {\n const table = useTableContext(),\n handleClick = () => {\n table.previousPage()\n }\n\n return (\n <Button\n aria-label=\"Go to previous page\"\n className={cn('shrink-0', className)}\n disabled={!table.getCanPreviousPage()}\n onClick={handleClick}\n ref={ref}\n variant=\"outline\"\n tone=\"neutral\"\n size=\"medium\"\n {...props}\n >\n {children ?? <Icon name=\"chevronLeft\" />}\n </Button>\n )\n}\n","import { Meter } from '../meter'\nimport { useCellContext } from './table-feature-context'\nimport type { TableProgressCellProps } from './table.types'\n\nexport function TableProgressCell({\n showValue = true,\n children,\n ...props\n}: TableProgressCellProps) {\n const cell = useCellContext<number | null | undefined>(),\n value = cell.getValue()\n\n if (value === undefined || value === null) {\n return undefined\n }\n\n return (\n <Meter orientation=\"horizontal\" aria-label=\"Progress\" {...props} value={value}>\n <Meter.Track>\n <Meter.Indicator />\n </Meter.Track>\n {showValue && <Meter.Value />}\n {children}\n </Meter>\n )\n}\n","import { useState } from 'react'\n\nimport { useCellContext } from './table-feature-context'\nimport type { TableRelativeTimeCellProps } from './table.types'\n\nconst MILLISECONDS_PER_SECOND = 1000,\n ZERO = 0,\n SECONDS_PER_SECOND = 1,\n SECONDS_PER_MINUTE = 60,\n SECONDS_PER_HOUR = 3600,\n SECONDS_PER_DAY = 86_400,\n SECONDS_PER_WEEK = 604_800,\n SECONDS_PER_MONTH = 2_592_000,\n SECONDS_PER_YEAR = 31_536_000,\n RELATIVE_TIME_UNITS = [\n ['year', SECONDS_PER_YEAR],\n ['month', SECONDS_PER_MONTH],\n ['week', SECONDS_PER_WEEK],\n ['day', SECONDS_PER_DAY],\n ['hour', SECONDS_PER_HOUR],\n ['minute', SECONDS_PER_MINUTE],\n ['second', SECONDS_PER_SECOND],\n ] as const\n\nfunction formatRelativeTime(\n date: Date,\n now: Date,\n { locale, options }: Pick<TableRelativeTimeCellProps, 'locale' | 'options'>,\n) {\n const seconds = (date.getTime() - now.getTime()) / MILLISECONDS_PER_SECOND,\n [unit, divisor] =\n RELATIVE_TIME_UNITS.find(([, duration]) => Math.abs(seconds) >= duration) ??\n (['second', SECONDS_PER_SECOND] as const),\n amount = Math.round(seconds / divisor) || ZERO\n\n return new Intl.RelativeTimeFormat(locale, { numeric: 'auto', ...options }).format(amount, unit)\n}\n\nexport function TableRelativeTimeCell({\n locale,\n options,\n now,\n children,\n ...props\n}: TableRelativeTimeCellProps) {\n const cell = useCellContext<Date | null | undefined>(),\n date = cell.getValue(),\n // oxlint-disable-next-line react/hook-use-state -- Keep a fixed mount-time reference unless now is supplied.\n [mountedAt] = useState(() => new Date()),\n referenceDate = now ?? mountedAt\n\n if (!date) {\n return undefined\n }\n\n if (Number.isNaN(date.getTime())) {\n return 'Invalid date'\n }\n\n if (Number.isNaN(referenceDate.getTime())) {\n throw new RangeError('TableRelativeTimeCell requires a valid now date')\n }\n\n return (\n <time dateTime={date.toISOString()} title={date.toLocaleString(locale)} {...props}>\n {children}\n {formatRelativeTime(date, referenceDate, { locale, options })}\n </time>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useTableContext } from './table-feature-context'\nimport type { TableResultsProps } from './table.types'\n\nconst EMPTY_ROW_COUNT = 0,\n PAGE_NUMBER_OFFSET = 1\n\nfunction getPageStart(totalRows: number, pageIndex: number, pageSize: number): number {\n if (totalRows === EMPTY_ROW_COUNT) {\n return EMPTY_ROW_COUNT\n }\n return pageIndex * pageSize + PAGE_NUMBER_OFFSET\n}\n\nfunction getPageEnd(start: number, pageSize: number, totalRows: number): number {\n if (totalRows === EMPTY_ROW_COUNT) {\n return EMPTY_ROW_COUNT\n }\n return Math.min(start + pageSize - PAGE_NUMBER_OFFSET, totalRows)\n}\n\nexport function TableResults({ children, className, ref, ...props }: TableResultsProps) {\n const table = useTableContext(),\n { pageIndex } = table.state.pagination,\n { pageSize } = table.state.pagination,\n totalRows = table.getFilteredRowModel().rows.length,\n start = getPageStart(totalRows, pageIndex, pageSize),\n end = getPageEnd(start, pageSize, totalRows)\n\n return (\n <div\n className={cn(\n 'flex items-center gap-2xs style-text-default--1 text-on-surface-variant',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children(start, end, totalRows)}\n </div>\n )\n}\n","import type { ChangeEvent } from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport { InputGroup, InputGroupAddon, InputGroupInput } from '../input-group'\nimport { useTableContext } from './table-feature-context'\nimport type { TableSearchProps } from './table.types'\n\nexport function TableSearch({ className, ref, ...props }: TableSearchProps) {\n const table = useTableContext(),\n handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n table.setGlobalFilter(event.target.value)\n }\n\n return (\n <table.Subscribe selector={(state) => state.globalFilter}>\n {(globalFilter) => (\n <InputGroup variant={props.variant ?? 'outline'} className=\"flex-1\">\n <InputGroupAddon>\n <Icon name=\"search\" />\n </InputGroupAddon>\n <InputGroupInput\n className={cn('', className)}\n onChange={handleChange}\n ref={ref}\n value={globalFilter ?? ''}\n {...props}\n />\n </InputGroup>\n )}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Icon } from '../icon'\nimport {\n Menu,\n MenuCheckboxItem,\n MenuPopup,\n MenuSubmenu,\n MenuSubmenuTrigger,\n MenuTrigger,\n} from '../menu'\nimport { useTableContext } from './table-feature-context'\nimport type { TableSortMenuProps } from './table.types'\nimport { getColumnHeaderLabel } from './table.utils'\n\nexport function TableSortMenu({ className, ref, ...props }: TableSortMenuProps) {\n const table = useTableContext(),\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {},\n ascendingLabel = buttonLabels.ascending ?? 'Ascending',\n descendingLabel = buttonLabels.descending ?? 'Descending',\n handleSort = (columnId: string, direction: 'asc' | 'desc') => {\n const column = table.getColumn(columnId),\n currentSort = column?.getIsSorted()\n\n if (currentSort === direction) {\n column?.clearSorting()\n return\n }\n\n column?.toggleSorting(direction === 'desc', column.getCanMultiSort())\n }\n\n return (\n <Menu>\n <MenuTrigger className={cn('shrink-0', className)} ref={ref} {...props} />\n <MenuPopup align=\"end\">\n <table.Subscribe selector={(state) => state.sorting}>\n {() =>\n table\n .getAllColumns()\n .filter((column) => column.getCanSort())\n .map((column) => (\n <MenuSubmenu key={column.id}>\n <MenuSubmenuTrigger>{getColumnHeaderLabel(column)}</MenuSubmenuTrigger>\n <MenuPopup>\n <MenuCheckboxItem\n checked={column.getIsSorted() === 'asc'}\n onClick={() => handleSort(column.id, 'asc')}\n >\n <Icon name=\"sortDescending\" />\n {ascendingLabel}\n </MenuCheckboxItem>\n <MenuCheckboxItem\n checked={column.getIsSorted() === 'desc'}\n onClick={() => handleSort(column.id, 'desc')}\n >\n <Icon name=\"sortAscending\" />\n {descendingLabel}\n </MenuCheckboxItem>\n </MenuPopup>\n </MenuSubmenu>\n ))\n }\n </table.Subscribe>\n </MenuPopup>\n </Menu>\n )\n}\n","import type { RowData } from '@tanstack/react-table'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useTableContext } from './table-feature-context'\nimport { TableSortMenu } from './table-sort-menu'\nimport type { TableSortChipProps } from './table.types'\nimport { getColumnHeaderLabel } from './table.utils'\n\nexport function TableSortChip<TData extends RowData>({\n column,\n className,\n children,\n ref,\n ...props\n}: TableSortChipProps<TData>) {\n const table = useTableContext(),\n buttonLabels = table.options.meta?.translations?.buttonLabels ?? {},\n ascendingLabel = buttonLabels.ascending ?? 'Ascending',\n descendingLabel = buttonLabels.descending ?? 'Descending'\n\n return (\n <table.Subscribe selector={(state) => state.sorting}>\n {() => {\n const columnSort = column.getIsSorted()\n\n console.log(columnSort)\n\n if (!columnSort) {\n return undefined\n }\n\n return (\n <TableSortMenu className={cn('', className)} ref={ref} {...props}>\n <Button size=\"extraSmall\" variant=\"soft\">\n {columnSort === 'asc' && <Icon name=\"sortDescending\" />}\n {columnSort === 'desc' && <Icon name=\"sortAscending\" />}\n <span>{getColumnHeaderLabel(column)}</span>\n <span className=\"font-light lowercase\">\n {columnSort === 'asc' && ascendingLabel}\n {columnSort === 'desc' && descendingLabel}\n </span>\n {children}\n </Button>\n </TableSortMenu>\n )\n }}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useTableContext } from './table-feature-context'\nimport { TableSortChip } from './table-sort-chip'\nimport type { TableSortListProps } from './table.types'\n\nexport function TableSortList({ className, children, ref, ...props }: TableSortListProps) {\n const table = useTableContext()\n\n if (!table.getAllColumns().some((column) => column.getIsSorted())) {\n return undefined\n }\n\n return (\n <table.Subscribe selector={(state) => state.sorting}>\n {() => (\n <div className={cn('flex flex-wrap items-center gap-xs', className)} ref={ref} {...props}>\n {children}\n {table.getAllColumns().map((column) => {\n if (!column.getIsSorted()) {\n return undefined\n }\n\n return <TableSortChip key={column.id} column={column} />\n })}\n </div>\n )}\n </table.Subscribe>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Badge } from '../badge'\nimport { useCellContext } from './table-feature-context'\nimport type { TableTagsCellProps } from './table.types'\n\nexport function TableTagsCell({ badgeProps, className, children, ...props }: TableTagsCellProps) {\n const cell = useCellContext<readonly string[] | null | undefined>(),\n value = cell.getValue()\n\n if (value === undefined || value === null) {\n return undefined\n }\n\n return (\n <div className={cn('flex flex-wrap gap-3xs', className)} {...props}>\n {children}\n {value.map((tag, index) => (\n // oxlint-disable-next-line react/no-array-index-key -- Labels may repeat; badges have no local state.\n <Badge key={`${index}-${tag}`} variant=\"soft\" {...badgeProps}>\n {tag}\n </Badge>\n ))}\n </div>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useCellContext } from './table-feature-context'\nimport type { TableTextCellProps } from './table.types'\n\nexport function TableTextCell({ className, children, ref, ...props }: TableTextCellProps) {\n const cell = useCellContext<string>()\n\n return (\n <span className={cn('', className)} ref={ref} {...props}>\n {children}\n {cell.getValue()}\n </span>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { TableToolbarProps } from './table.types'\n\nexport function TableToolbar({ className, ref, ...props }: TableToolbarProps) {\n return (\n <div\n data-slot=\"table-toolbar\"\n className={cn(\n 'flex w-full min-w-0 flex-wrap items-center gap-2xs',\n '[:where([data-slot=table-container][data-variant=outline]>&)]:px-md [:where([data-slot=table-container][data-variant=outline]>&:first-child)]:pt-md [:where([data-slot=table-container][data-variant=outline]>&:last-child)]:pb-md',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport type { TableTopBarProps } from './table.types'\n\nexport function TableTopBar({ className, ref, ...props }: TableTopBarProps) {\n return (\n <div\n className={cn(\n 'flex min-w-0 flex-col pb-md group-data-[variant=outline]/table:border-b group-data-[variant=outline]/table:border-border',\n 'in-data-[slot=table-container]:sticky in-data-[slot=table-container]:top-0 in-data-[slot=table-container]:z-10',\n className,\n )}\n data-slot=\"table-top-bar\"\n ref={ref}\n {...props}\n />\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { useTableContext } from './table-feature-context'\nimport type { TableViewModeToggleProps } from './table.types'\n\nexport function TableViewModeToggle({\n className,\n children,\n ref,\n ...props\n}: TableViewModeToggleProps) {\n const table = useTableContext(),\n isGridView = table.state.viewMode === 'grid',\n handleClick = () => {\n table.toggleViewMode()\n }\n\n return (\n <Button onClick={handleClick} className={cn('shrink-0', className)} ref={ref} {...props}>\n {children(isGridView)}\n </Button>\n )\n}\n","import { cn } from '@/utils/cn'\n\nimport { useTableContext } from './table-feature-context'\nimport type { TableViewportProps } from './table.types'\n\nexport function TableViewport({ grow, className, children, ref, ...props }: TableViewportProps) {\n const table = useTableContext(),\n isGridView = table.state.viewMode === 'grid'\n\n if (isGridView) {\n return (\n <div\n data-slot=\"table-viewport\"\n className={cn('min-h-0 min-w-0 overflow-auto', grow && 'flex-1', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n return (\n <div\n data-slot=\"table-viewport\"\n className={cn(\n 'min-h-0 min-w-0 overflow-auto focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-surface-focus-ring',\n grow && 'flex-1',\n )}\n >\n <table className={cn('w-full', grow && 'h-full', className)} ref={ref} {...props}>\n {children}\n </table>\n </div>\n )\n}\n","import { createTableHook } from '@tanstack/react-table'\n\nimport { TableAvatarCell } from './table-avatar-cell'\nimport { TableBadgeCell } from './table-badge-cell'\nimport { TableBody } from './table-body'\nimport { TableBooleanCell } from './table-boolean-cell'\nimport { TableBottomBar } from './table-bottom-bar'\nimport { TableCheckboxCell } from './table-checkbox-cell'\nimport { TableCheckboxHeader } from './table-checkbox-header'\nimport { TableColumnToggle } from './table-column-toggle'\nimport { TableContainer } from './table-container'\nimport { TableCurrencyCell } from './table-currency-cell'\nimport { TableDatasetTab } from './table-dataset-tab'\nimport { TableDateTimeCell } from './table-date-time-cell'\nimport { TableEmpty } from './table-empty'\nimport { TableEmptyContent } from './table-empty-content'\nimport { TableEmptyDescription } from './table-empty-description'\nimport { TableEmptyFooter } from './table-empty-footer'\nimport { TableEmptyHeader } from './table-empty-header'\nimport { TableEmptyTitle } from './table-empty-title'\nimport { cellContext, features, headerContext, tableContext } from './table-feature-context'\nimport { TableFilterList } from './table-filter-list'\nimport { TableFilterMenu } from './table-filter-menu'\nimport { TableFirstPage } from './table-first-page'\nimport { TableFooter } from './table-footer'\nimport { TableHeader } from './table-header'\nimport { TableImageCell } from './table-image-cell'\nimport { TableLastPage } from './table-last-page'\nimport { TableLayout } from './table-layout'\nimport { TableLinkCell } from './table-link-cell'\nimport { TableNextPage } from './table-next-page'\nimport { TableNumberCell } from './table-number-cell'\nimport { TablePagination } from './table-pagination'\nimport { TablePaging } from './table-paging'\nimport { TablePercentCell } from './table-percent-cell'\nimport { TablePreviousPage } from './table-previous-page'\nimport { TableProgressCell } from './table-progress-cell'\nimport { TableRelativeTimeCell } from './table-relative-time-cell'\nimport { TableResults } from './table-results'\nimport { TableSearch } from './table-search'\nimport { TableSortList } from './table-sort-list'\nimport { TableSortMenu } from './table-sort-menu'\nimport { TableTagsCell } from './table-tags-cell'\nimport { TableTextCell } from './table-text-cell'\nimport { TableToolbar } from './table-toolbar'\nimport { TableTopBar } from './table-top-bar'\nimport { TableViewModeToggle } from './table-view-mode-toggle'\nimport { TableViewport } from './table-viewport'\n\nconst { createAppColumnHelper, useAppTable, useTableContext, useCellContext, useHeaderContext } =\n createTableHook({\n cellComponents: {\n AvatarCell: TableAvatarCell,\n BadgeCell: TableBadgeCell,\n BooleanCell: TableBooleanCell,\n CheckboxCell: TableCheckboxCell,\n CurrencyCell: TableCurrencyCell,\n DateTimeCell: TableDateTimeCell,\n ImageCell: TableImageCell,\n LinkCell: TableLinkCell,\n NumberCell: TableNumberCell,\n PercentCell: TablePercentCell,\n ProgressCell: TableProgressCell,\n RelativeTimeCell: TableRelativeTimeCell,\n TagsCell: TableTagsCell,\n TextCell: TableTextCell,\n },\n cellContext,\n features,\n getRowId: (row, index, parent) => {\n if (row.id !== undefined && row.id !== null) {\n return row.id\n }\n if (parent) {\n return `${parent.id}.${index}`\n }\n return String(index)\n },\n headerComponents: { CheckboxHeader: TableCheckboxHeader },\n headerContext,\n tableComponents: {\n Body: TableBody,\n BottomBar: TableBottomBar,\n ColumnToggle: TableColumnToggle,\n Container: TableContainer,\n DatasetTab: TableDatasetTab,\n Empty: TableEmpty,\n EmptyContent: TableEmptyContent,\n EmptyDescription: TableEmptyDescription,\n EmptyFooter: TableEmptyFooter,\n EmptyHeader: TableEmptyHeader,\n EmptyTitle: TableEmptyTitle,\n FilterList: TableFilterList,\n FilterMenu: TableFilterMenu,\n FirstPage: TableFirstPage,\n Footer: TableFooter,\n Header: TableHeader,\n LastPage: TableLastPage,\n Layout: TableLayout,\n NextPage: TableNextPage,\n Pagination: TablePagination,\n Paging: TablePaging,\n PreviousPage: TablePreviousPage,\n Results: TableResults,\n Search: TableSearch,\n SortList: TableSortList,\n SortMenu: TableSortMenu,\n Toolbar: TableToolbar,\n TopBar: TableTopBar,\n ViewModeToggle: TableViewModeToggle,\n Viewport: TableViewport,\n },\n tableContext,\n })\n\nexport { createAppColumnHelper, useAppTable, useTableContext, useCellContext, useHeaderContext }\n","import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AnchoredToastItemProps } from './toast.types'\n\nexport function AnchoredToastItem({ className, ref, toast, ...props }: AnchoredToastItemProps) {\n return (\n <BaseToast.Root\n className={cn(\n 'group flex w-max origin-(--transform-origin) flex-col rounded-full bg-surface px-sm py-2xs shadow-lg transition-[transform,scale,opacity] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0',\n className,\n )}\n ref={ref}\n toast={toast}\n {...props}\n >\n <BaseToast.Arrow className=\"data-[side=bottom]:-top-3xs data-[side=left]:right-[-13px] data-[side=left]:rotate-90 data-[side=right]:left-[-13px] data-[side=right]:-rotate-90 data-[side=top]:-bottom-3xs data-[side=top]:rotate-180\" />\n <BaseToast.Content>\n <BaseToast.Description className=\"style-text-default--1\" />\n </BaseToast.Content>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport type { ToastManagerAddOptions } from '@base-ui/react/toast'\n\nimport type { IconComponent } from '../icon'\nimport type { ToastVariant } from './toast.types'\n\ntype ToastAddOptions = ToastManagerAddOptions<object> & {\n icon?: IconComponent\n variant?: ToastVariant\n}\n\nconst createToastManager = () => {\n const manager = BaseToast.createToastManager(),\n add = (options: ToastAddOptions) =>\n manager.add({\n ...options,\n data: {\n ...options.data,\n icon: options.icon,\n variant: options.variant,\n },\n })\n\n return {\n ...manager,\n add,\n }\n },\n useToastManager = () => {\n const toast = BaseToast.useToastManager(),\n add = (options: ToastAddOptions) =>\n toast.add({\n ...options,\n data: {\n ...options.data,\n icon: options.icon,\n variant: options.variant,\n },\n })\n\n return { add, toasts: toast.toasts }\n }\n\nexport { createToastManager, useToastManager }\n","import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { cn } from '@/utils/cn'\n\nimport { AnchoredToastItem } from './anchored-toast-item'\nimport { useToastManager } from './toast-manager'\nimport type { AnchoredToastProps } from './toast.types'\n\nexport function AnchoredToasts({ className, ref, ...props }: AnchoredToastProps) {\n const { toasts } = useToastManager()\n\n return (\n <BaseToast.Portal>\n <BaseToast.Viewport\n aria-label=\"Anchored notifications\"\n className={cn(\n 'fixed top-auto right-[1rem] bottom-[1rem] z-10 mx-auto flex w-[250px] sm:right-[2rem] sm:bottom-[2rem] sm:w-[300px]',\n className,\n )}\n ref={ref}\n {...props}\n >\n {toasts.map((toast) => (\n <BaseToast.Positioner\n className=\"z-[calc(1000-var(--toast-index))]\"\n key={toast.id}\n toast={toast}\n >\n <AnchoredToastItem toast={toast} />\n </BaseToast.Positioner>\n ))}\n </BaseToast.Viewport>\n </BaseToast.Portal>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport type { IconComponent } from '../icon'\nimport { Separator } from '../separator'\nimport type { StackToastItemProps, ToastVariant } from './toast.types'\n\nconst DEFAULT_DURATION = 10_000,\n RING_RADIUS = 14,\n RING_DIAMETER = RING_RADIUS + RING_RADIUS,\n RING_CIRCUMFERENCE = Math.PI * RING_DIAMETER\n\nfunction getVariantBgColor(variant: ToastVariant | undefined): string {\n switch (variant) {\n case 'brand': {\n return 'bg-brand-default'\n }\n case 'accent': {\n return 'bg-accent-default'\n }\n case 'neutral': {\n return 'bg-neutral-default'\n }\n case 'error': {\n return 'bg-error-default'\n }\n case 'info': {\n return 'bg-info-default'\n }\n case 'success': {\n return 'bg-success-default'\n }\n case 'warning': {\n return 'bg-warning-default'\n }\n default: {\n return 'bg-neutral-default'\n }\n }\n}\n\nfunction getVariantBorderColor(variant: ToastVariant | undefined): string {\n switch (variant) {\n case 'brand': {\n return 'border-brand-border-strong'\n }\n case 'accent': {\n return 'border-accent-border-strong'\n }\n case 'neutral': {\n return 'border-neutral-border-strong'\n }\n case 'error': {\n return 'border-error-border-strong'\n }\n case 'info': {\n return 'border-info-border-strong'\n }\n case 'success': {\n return 'border-success-border-strong'\n }\n case 'warning': {\n return 'border-warning-border-strong'\n }\n default: {\n return 'border-neutral-border-strong'\n }\n }\n}\n\nfunction getVariantIcon(variant: ToastVariant | undefined, icon?: IconComponent) {\n if (icon) {\n return React.createElement(icon)\n }\n switch (variant) {\n case 'error': {\n return <Icon name=\"error\" weight=\"fill\" />\n }\n case 'success': {\n return <Icon name=\"success\" weight=\"fill\" />\n }\n case 'warning': {\n return <Icon name=\"warning\" weight=\"fill\" />\n }\n default: {\n return <Icon name=\"info\" weight=\"fill\" />\n }\n }\n}\n\nexport function StackToastItem({ className, ref, toast, ...props }: StackToastItemProps) {\n const duration = toast.timeout ?? DEFAULT_DURATION,\n variant = toast.data?.variant,\n icon = toast.data?.icon\n\n return (\n <BaseToast.Root\n className={cn(\n \"absolute right-[0px] bottom-[0px] left-auto z-[calc(1000-var(--toast-index))] mr-[0px] flex h-2xl origin-bottom transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] items-center justify-center gap-xs overflow-hidden rounded-full border bg-surface bg-clip-padding pr-sm shadow-lg select-none [--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))] [transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s] after:absolute after:top-full after:left-[0px] after:w-full after:content-[''] data-ending-style:opacity-0 data-expanded:h-(--toast-height) data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--offset-y)))] data-limited:opacity-0 data-starting-style:transform-[translateY(150%)] data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+150%))] data-expanded:data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+150%))] data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-150%))] data-expanded:data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-150%))] [&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:transform-[translateY(150%)]\",\n className,\n getVariantBorderColor(variant),\n )}\n key={toast.id}\n ref={ref}\n toast={toast}\n {...props}\n >\n <div\n className={cn(\n 'flex aspect-square size-2xl items-center justify-center [&>svg]:size-lg [&>svg]:text-on-surface-inverse',\n getVariantBgColor(variant),\n )}\n >\n {getVariantIcon(variant, icon)}\n </div>\n <BaseToast.Content className=\"flex items-center justify-center gap-3xs overflow-hidden pl-2xs transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:pointer-events-auto data-expanded:opacity-100\">\n <div>\n <BaseToast.Title className=\"style-text-strong--1\" />\n <BaseToast.Description className=\"style-text-prose--1 whitespace-nowrap text-on-surface-variant\" />\n </div>\n <div className=\"ml-xl flex h-lg grow items-center justify-center gap-xs\">\n <BaseToast.Action\n render={({ onClick, children }) => (\n <Button\n data-testid=\"toast-action-button\"\n onClick={onClick}\n size=\"small\"\n tone={toast.data?.variant}\n variant=\"soft\"\n >\n {children}\n </Button>\n )}\n />\n {toast.actionProps && (\n <Separator variant=\"strong\" orientation=\"vertical\" weight=\"thinnest\" />\n )}\n <BaseToast.Close\n aria-label=\"Close\"\n className=\"relative flex size-sm items-center justify-center rounded-full bg-transparent p-xs text-on-surface-variant transition-colors hover:cursor-pointer hover:bg-error-container hover:text-error-on-container\"\n >\n <span className=\"pointer-events-none absolute inset-[0px] z-10 flex items-center justify-center\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\" className=\"block -rotate-90\">\n <style>{`\n @keyframes toast-drain-${toast.id} {\n from { stroke-dashoffset: 0; }\n to { stroke-dashoffset: ${RING_CIRCUMFERENCE}; }\n }\n `}</style>\n <circle\n cx=\"16\"\n cy=\"16\"\n r={RING_RADIUS}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeDasharray={RING_CIRCUMFERENCE}\n strokeLinecap=\"round\"\n className=\"text-error-border-strong\"\n style={{\n animation: `toast-drain-${toast.id} ${duration}ms linear forwards`,\n }}\n />\n </svg>\n </span>\n\n <Icon name=\"close\" className=\"size-sm shrink-0\" />\n </BaseToast.Close>\n </div>\n </BaseToast.Content>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { cn } from '@/utils/cn'\n\nimport { StackToastItem } from './stack-toast-item'\nimport { useToastManager } from './toast-manager'\nimport type { StackToastProps } from './toast.types'\n\nexport function StackToasts({ className, ref, ...props }: StackToastProps) {\n const { toasts } = useToastManager()\n\n return (\n <BaseToast.Portal>\n <BaseToast.Viewport\n aria-label=\"Notifications\"\n className={cn(\n 'fixed top-auto right-[1rem] bottom-[1rem] z-10 mx-auto flex w-[250px] sm:right-[2rem] sm:bottom-[2rem] sm:w-[300px]',\n className,\n )}\n ref={ref}\n {...props}\n >\n {toasts.map((toast) => (\n <StackToastItem key={toast.id} toast={toast} />\n ))}\n </BaseToast.Viewport>\n </BaseToast.Portal>\n )\n}\n","import { createToastManager } from './toast-manager'\n\nconst anchoredToastManager = createToastManager(),\n stackToastManager = createToastManager()\n\nexport { anchoredToastManager, stackToastManager }\n","import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { AnchoredToasts } from './anchored-toasts'\nimport { StackToasts } from './stack-toasts'\nimport { anchoredToastManager, stackToastManager } from './toast-managers'\nimport type { ToastProviderProps } from './toast.types'\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n return (\n <>\n <BaseToast.Provider timeout={10_000} toastManager={anchoredToastManager}>\n <AnchoredToasts />\n </BaseToast.Provider>\n <BaseToast.Provider timeout={10_000} toastManager={stackToastManager}>\n <StackToasts />\n </BaseToast.Provider>\n {children}\n </>\n )\n}\n","import { AnchoredToastItem } from './anchored-toast-item'\nimport { AnchoredToasts } from './anchored-toasts'\nimport { StackToastItem } from './stack-toast-item'\nimport { StackToasts } from './stack-toasts'\nimport { ToastProvider } from './toast-provider'\n\nconst Toast = Object.assign(ToastProvider, {\n AnchoredToastItem,\n AnchoredToasts,\n StackToastItem,\n StackToasts,\n})\n\nexport { Toast }\n","import type { ToggleGroup } from '@base-ui/react/toggle-group'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const toggleGroupVariants = cva(\n 'group flex w-fit items-center justify-center gap-3xs rounded-full',\n {\n compoundVariants: [\n {\n className: 'p-3xs',\n size: 'small',\n variant: 'default',\n },\n {\n className: 'p-2xs',\n size: 'medium',\n variant: 'default',\n },\n {\n className: 'p-2xs',\n size: 'large',\n variant: 'default',\n },\n ],\n defaultVariants: {\n size: 'medium',\n variant: 'default',\n },\n variants: {\n size: {\n large: '',\n medium: '',\n small: '',\n },\n variant: {\n default: 'bg-surface-low',\n ghost: 'bg-transparent',\n },\n },\n },\n)\n\nexport type ToggleGroupProps = React.ComponentProps<typeof ToggleGroup> &\n VariantProps<typeof toggleGroupVariants>\n","import { ToggleGroup as BaseToggleGroup } from '@base-ui/react/toggle-group'\n\nimport { cn } from '@/utils/cn'\n\nimport { ToggleGroupContext } from './toggle-group-context'\nimport { toggleGroupVariants } from './toggle-group.types'\nimport type { ToggleGroupProps } from './toggle-group.types'\n\nexport function ToggleGroup({\n size = 'medium',\n variant,\n className,\n ref,\n ...props\n}: ToggleGroupProps) {\n const displaySize = size ?? 'medium'\n return (\n <ToggleGroupContext.Provider value={{ size: displaySize }}>\n <BaseToggleGroup\n className={cn(toggleGroupVariants({ className, size: displaySize, variant }))}\n data-size={displaySize}\n ref={ref}\n {...props}\n />\n </ToggleGroupContext.Provider>\n )\n}\n"],"ignoreList":[334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394],"mappings":"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GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;CACF;CACA,iBAAiB;EACf,MAAM;EACN,MAAM;EACN,SAAS;CACX;CACA,UAAU;EACR,MAAM;GACJ,YACE;GACF,OACE;GACF,QACE;GACF,OACE;EACJ;EACA,MAAM;GACJ,QAAQ;GACR,OAAO;GACP,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,SAAS;EACX;EACA,SAAS;GACP,UAAU;GACV,MAAM;GACN,OAAO;GACP,MAAM;GACN,SAAS;GACT,WAAW;GACX,MAAM;EACR;CACF;AACF,CACF;;ACrTA,SAAgB,OAAO,EAAE,MAAM,SAAS,MAAM,WAAW,UAAU,GAAG,SAAsB;CAC1F,IAAI,WAA2B,KAAA;CAE/B,IAAI,sBAAsB,QAAQ,GAChC,WAAW;CAGb,OACE,oBAACC,UAAD;EACE,kBAAgB;EAChB,aAAW;EACX,WAAW,GAAG,eAAe;GAAE;GAAW;GAAM;GAAM;EAAQ,CAAC,CAAC;EAChE,GAAI;EAEH;CACS,CAAA;AAEhB;;AClBA,SAAgB,iBAAiB,EAC/B,WACA,OAAO,WACP,UAAU,WACV,MACA,GAAG,SACqB;CACxB,OACE,oBAACC,cAAgB,OAAjB;EACE,aAAU;EACV,WAAW,GAAG,SAAS;EACvB,QAAQ,oBAAC,QAAD;GAAc;GAAe;GAAe;EAAO,CAAA;EAC3D,GAAI;C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AAS;EACrE;EACL,GAAI;CACL,CAAA;AAEL;;ACHA,SAAgB,YAAY,EAAE,WAAW,KAAK,GAAG,SAA2B;CAC1E,MAAM,CAAC,QAAQ,aAAa,MAAM,SAA6B,SAAS;CAExE,OACE,qBAAA,UAAA,EAAA,UAAA,CACG,WAAW,aAAa,oBAAC,UAAD,EAAU,WAAU,0CAA2C,CAAA,GACxF,oBAACC,SAAW,OAAZ;EACE,uBAAuB;EACvB,WAAW,GAAG,uCAAuC,SAAS;EAC9D,aAAU;EACL;EACL,GAAI;CACL,CAAA,CACD,EAAA,CAAA;AAEN;;ACnBA,MAAM,SAAS,OAAO,OAAOC,UAAY;CACvC,OAAO;CACP,UAAU;CACV,OAAO;AACT,CAAC;;ACLD,MAAa,gBAAgB,IAC3B,8KACA;CACE,kBAAkB;EAChB;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA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ClC,WACA,UACA,KACA,GAAG,SACwB;CAC3B,OACE,oBAAC,OAAD;EAAK,WAAW,GAAG,2CAA2C,SAAS;EAAQ;EAAK,GAAI;EACrF,UAAA,YAAY,oBAAC,MAAD,EAAM,MAAK,eAAgB,CAAA;CACrC,CAAA;AAET;;ACVA,MAAM,aAAa,OAAO,OAAOC,cAAgB;CAC/C,UAAU;CACV,MAAM;CACN,MAAM;CACN,WAAW;AACb,CAAC;;ACRD,MAAa,sBAAsB,IACjC,6OACA;CACE,kBAAkB;EAChB;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,MAAM;GACN,SAAS;EACX;CACF;CACA,iBAAiB;EACf,aAAa;EACb,MAAM;EACN,MAAM;EACN,SAAS;CACX;CACA,UAAU;EACR,aAAa;GACX,YACE;GACF,UACE;EACJ;EACA,MAAM;GACJ,YACE;GACF,OACE;GACF,QACE;GACF,OACE;EACJ;EACA,MAAM;GACJ,QAAQ;GACR,OAAO;GACP,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,SAAS;EACX;EACA,SAAS;GACP,UAAU;GACV,MAAM;GACN,OAAO;GACP,SAAS;GACT,WAAW;GACX,MAAM;EACR;CACF;AACF,CACF;;ACjSA,SAAgB,YAAY,EAC1B,MACA,SACA,MACA,aACA,WACA,KACA,GAAG,SACgB;CACnB,OACE,oBAAC,OAAD;EACE,WAAW,G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ACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OACE;GACF,MAAM;GACN,SAAS;EACX;EACA;GACE,OAAO;GACP,MAAM;GACN,SAAS,CAAC,WAAW,OAAO;EAC9B;EACA;GACE,OAAO;GACP,MAAM;GACN,SAAS;EACX;CACF;CACA,iBAAiB;EACf,MAAM;EACN,MAAM;EAC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hB,WAAW;CACX,WAAW;CACX,WAAW;CACX,WAAW;CACX,uBAAuB;AACzB,CAAC;;ACZD,MAAM,iBAAiB,IAAI,2CAA2C;CAClE,kBAAkB;EAChB;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;EACA;GACE,WACE;GACF,iBAAiB;GACjB,MAAM;EACR;CACF;CACA,iBAAiB;EACf,iBAAiB;EACjB,MAAM;EACN,SAAS;CACX;CACA,UAAU;EACR,iBAAiB;GACf,YAAY;GACZ,UACE;EACJ;EACA,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,OAAO;EACT;EACA,SAAS;GACP,UAAU;GACV,SAAS;EACX;CACF;AACF,CAAC;AACD,MAAA,qBAAqB,IACnB,gNACA;CACE,iBAAiB,EACf,MAAM,UACR;CACA,UAAU,EACR,MAAM;EACJ,QACE;EACF,OACE;EACF,OACE;EACF,MAAM;EACN,SACE;EACF,SACE;EACF,SACE;CACJ,EACF;AACF,CACF;;AC1GF,SAAgBC,SAAO,EAAE,iBAAiB,MAAM,SAAS,WAAW,KAAK,GAAG,SAAsB;CAChG,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,eAAe;GAAE;GAAiB;GAAM;EAAQ,CAAC,GAAG,SAAS;EACtE;EACL,GAAI;CACL,CAAA;AAEL;;ACRA,SAAgB,WAAW,EAAE,WAAW,OAAO,MAAM,WAAW,KAAK,GAAG,SAA0B;CAChG,OACE,oBAAC,UAAD;EACE,MAAK;EACL,eAAa;EACb,qBAAA;EACA,WAAW,GAAG,mBAAmB,EAAE,KAAK,CAAC,GAAG,SAAS;EAChD;EACL,GAAI;CACL,CAAA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"}
|