ics-ui-kit 0.1.0-alpha.9 → 0.1.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 +36 -0
- package/dist/AlertContext-CxjW1LVL.js +13 -0
- package/dist/AlertContext-CxjW1LVL.js.map +1 -0
- package/dist/AlertIcon-5B6AgZpe.js +96 -0
- package/dist/AlertIcon-5B6AgZpe.js.map +1 -0
- package/dist/Button-Dg89xRSi.js +36 -0
- package/dist/Button-Dg89xRSi.js.map +1 -0
- package/dist/ButtonBase-e6qyv6mD.js +158 -0
- package/dist/ButtonBase-e6qyv6mD.js.map +1 -0
- package/dist/CheckboxField-B6ojieD7.js +347 -0
- package/dist/CheckboxField-B6ojieD7.js.map +1 -0
- package/dist/Command-BhbfL5wm.js +554 -0
- package/dist/Command-BhbfL5wm.js.map +1 -0
- package/dist/ComponentVariantProvider-B0SFUaXB.js +8 -0
- package/dist/ComponentVariantProvider-B0SFUaXB.js.map +1 -0
- package/dist/DayPicker-4hE1QEvO.js +2452 -0
- package/dist/DayPicker-4hE1QEvO.js.map +1 -0
- package/dist/Description-BTPMlTT-.js +19 -0
- package/dist/Description-BTPMlTT-.js.map +1 -0
- package/dist/Dialog-ByiJIDhl.js +99 -0
- package/dist/Dialog-ByiJIDhl.js.map +1 -0
- package/dist/Divider-DPW5ZhZ8.js +24 -0
- package/dist/Divider-DPW5ZhZ8.js.map +1 -0
- package/dist/EmptyState-DRKjscH-.js +12 -0
- package/dist/EmptyState-DRKjscH-.js.map +1 -0
- package/dist/ErrorState-B26k67-z.js +11 -0
- package/dist/ErrorState-B26k67-z.js.map +1 -0
- package/dist/FeatureIcon-BGE0Orkc.js +23 -0
- package/dist/FeatureIcon-BGE0Orkc.js.map +1 -0
- package/dist/Field-CSvS9f_a.js +86 -0
- package/dist/Field-CSvS9f_a.js.map +1 -0
- package/dist/FieldLabel-BA0y5lhr.js +70 -0
- package/dist/FieldLabel-BA0y5lhr.js.map +1 -0
- package/dist/FolderSvg-cw0DxNVy.js +742 -0
- package/dist/FolderSvg-cw0DxNVy.js.map +1 -0
- package/dist/FormFooterTemplate-BPspyDbr.js +88 -0
- package/dist/FormFooterTemplate-BPspyDbr.js.map +1 -0
- package/dist/FormHeader--F6b2aRk.js +49 -0
- package/dist/FormHeader--F6b2aRk.js.map +1 -0
- package/dist/FormStack-DvlFQQiP.js +127 -0
- package/dist/FormStack-DvlFQQiP.js.map +1 -0
- package/dist/HintState-BxrCAWqq.js +12 -0
- package/dist/HintState-BxrCAWqq.js.map +1 -0
- package/dist/Icon-DH3ev9GK.js +22 -0
- package/dist/Icon-DH3ev9GK.js.map +1 -0
- package/dist/IconButton-DwkpNgn3.js +33 -0
- package/dist/IconButton-DwkpNgn3.js.map +1 -0
- package/dist/IconTooltip-DhkXc8Uy.js +11 -0
- package/dist/IconTooltip-DhkXc8Uy.js.map +1 -0
- package/dist/Indicator-AqxHWPA9.js +29 -0
- package/dist/Indicator-AqxHWPA9.js.map +1 -0
- package/dist/InputGroup-BvD9Igmt.js +137 -0
- package/dist/InputGroup-BvD9Igmt.js.map +1 -0
- package/dist/InputOTP-B2e1nfSO.js +259 -0
- package/dist/InputOTP-B2e1nfSO.js.map +1 -0
- package/dist/Loader-BpHiL6W-.js +58 -0
- package/dist/Loader-BpHiL6W-.js.map +1 -0
- package/dist/MenuItem-pvsONHlh.js +32 -0
- package/dist/MenuItem-pvsONHlh.js.map +1 -0
- package/dist/MenuItemShortcut-DgPol9Nz.js +21 -0
- package/dist/MenuItemShortcut-DgPol9Nz.js.map +1 -0
- package/dist/MenuItemText-7uPl9P3z.js +20 -0
- package/dist/MenuItemText-7uPl9P3z.js.map +1 -0
- package/dist/Overlay-2XMlxApi.js +28 -0
- package/dist/Overlay-2XMlxApi.js.map +1 -0
- package/dist/Popover-Dvr7y0YY.js +258 -0
- package/dist/Popover-Dvr7y0YY.js.map +1 -0
- package/dist/RichButton-DuPTenmS.js +49 -0
- package/dist/RichButton-DuPTenmS.js.map +1 -0
- package/dist/ScrollArea-CuuTeDn3.js +576 -0
- package/dist/ScrollArea-CuuTeDn3.js.map +1 -0
- package/dist/ScrollShadowContainer-DdrnF8qU.js +36 -0
- package/dist/ScrollShadowContainer-DdrnF8qU.js.map +1 -0
- package/dist/SearchSelectTag-DFCX9zT1.js +56 -0
- package/dist/SearchSelectTag-DFCX9zT1.js.map +1 -0
- package/dist/Select-DRwv6-eZ.js +980 -0
- package/dist/Select-DRwv6-eZ.js.map +1 -0
- package/dist/Sheet-rtwmzm2-.js +83 -0
- package/dist/Sheet-rtwmzm2-.js.map +1 -0
- package/dist/Shortcut-D8L15_ed.js +22 -0
- package/dist/Shortcut-D8L15_ed.js.map +1 -0
- package/dist/Skeleton-y6I-i9q5.js +21 -0
- package/dist/Skeleton-y6I-i9q5.js.map +1 -0
- package/dist/Tag-DdHXTyKF.js +199 -0
- package/dist/Tag-DdHXTyKF.js.map +1 -0
- package/dist/Text-DeBE8AKl.js +22 -0
- package/dist/Text-DeBE8AKl.js.map +1 -0
- package/dist/TextInput-Cj50ImXi.js +205 -0
- package/dist/TextInput-Cj50ImXi.js.map +1 -0
- package/dist/TextOverflowTooltip-DlUgic5y.js +36 -0
- package/dist/TextOverflowTooltip-DlUgic5y.js.map +1 -0
- package/dist/Toggle-v_HT3Gm2.js +40 -0
- package/dist/Toggle-v_HT3Gm2.js.map +1 -0
- package/dist/Tooltip-C4rVuWr4.js +473 -0
- package/dist/Tooltip-C4rVuWr4.js.map +1 -0
- package/dist/TriggerButton-CfDObWP9.js +33 -0
- package/dist/TriggerButton-CfDObWP9.js.map +1 -0
- package/dist/blocks/auth/otp-form/OTPForm.d.ts +47 -0
- package/dist/blocks/auth/otp-form/OTPForm.stories.d.ts +40 -0
- package/dist/blocks/auth/otp-form/components/EmailForm.d.ts +25 -0
- package/dist/blocks/auth/otp-form/components/OTPInputForm.d.ts +27 -0
- package/dist/blocks/auth/otp-form/components/ResendButton.d.ts +14 -0
- package/dist/blocks/auth/otp-form/index.d.ts +3 -0
- package/dist/blocks/auth/otp-form/utils/OTPError.d.ts +8 -0
- package/dist/blocks/auth/otp-form.d.ts +2 -0
- package/dist/blocks/auth/otp-form.js +309 -0
- package/dist/blocks/auth/otp-form.js.map +1 -0
- package/dist/buildMatchPatternFn-d7GTeGl_.js +68 -0
- package/dist/buildMatchPatternFn-d7GTeGl_.js.map +1 -0
- package/dist/{bundle-mjs-D6wdQkGI.js → bundle-mjs-CQ0w4GOB.js} +347 -338
- package/dist/{bundle-mjs-D6wdQkGI.js.map → bundle-mjs-CQ0w4GOB.js.map} +1 -1
- package/dist/{check-C-TqZgvb.js → check-CeyaOoZv.js} +2 -2
- package/dist/{check-C-TqZgvb.js.map → check-CeyaOoZv.js.map} +1 -1
- package/dist/chevron-down-CAOItu8X.js +14 -0
- package/dist/chevron-down-CAOItu8X.js.map +1 -0
- package/dist/chevron-left-D6FtXcdU.js +14 -0
- package/dist/chevron-left-D6FtXcdU.js.map +1 -0
- package/dist/chevron-right-D3juAhA-.js +14 -0
- package/dist/chevron-right-D3juAhA-.js.map +1 -0
- package/dist/chevron-up-UDiVTHo0.js +12 -0
- package/dist/chevron-up-UDiVTHo0.js.map +1 -0
- package/dist/circle-alert-CVIokIC7.js +16 -0
- package/dist/circle-alert-CVIokIC7.js.map +1 -0
- package/dist/circle-x-u75Rx3Tj.js +16 -0
- package/dist/circle-x-u75Rx3Tj.js.map +1 -0
- package/dist/{utils-2yE78m5l.js → cn-dsXlqdJg.js} +2 -2
- package/dist/cn-dsXlqdJg.js.map +1 -0
- package/dist/components/alert/Alert.d.ts +12 -0
- package/dist/components/alert/Alert.stories.d.ts +38 -0
- package/dist/components/alert/AlertContext.d.ts +16 -0
- package/dist/components/alert/components/AlertButton.d.ts +8 -0
- package/dist/components/alert/components/AlertDescription.d.ts +7 -0
- package/dist/components/alert/components/AlertIcon.d.ts +14 -0
- package/dist/components/alert/components/AlertTitle.d.ts +11 -0
- package/dist/components/alert/index.d.ts +6 -0
- package/dist/components/alert-dialog/AlertDialog.d.ts +69 -0
- package/dist/components/alert-dialog/AlertDialog.stories.d.ts +32 -0
- package/dist/components/alert-dialog/index.d.ts +1 -0
- package/dist/components/alert-dialog.d.ts +2 -0
- package/dist/components/alert-dialog.js +313 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +2 -0
- package/dist/components/alert.js +50 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/avatar/Avatar.d.ts +7 -0
- package/dist/components/avatar/Avatar.stories.d.ts +10 -0
- package/dist/components/avatar/avatar-fallback/AvatarFallback.d.ts +6 -0
- package/dist/components/avatar/avatar-icon/AvatarIcon.d.ts +6 -0
- package/dist/components/avatar/avatar-image/AvatarImage.d.ts +3 -0
- package/dist/components/avatar/avatar-indicator/AvatarIndicator.d.ts +5 -0
- package/dist/components/avatar/avatar-label/AvatarLabel.d.ts +5 -0
- package/dist/components/avatar/avatar-label/AvatarLabel.stories.d.ts +10 -0
- package/dist/components/avatar/avatar-label/AvatarLabelContext.d.ts +9 -0
- package/dist/components/avatar/avatar-label/components/avatar-label-avatar/AvatarLabelAvatar.d.ts +6 -0
- package/dist/components/avatar/avatar-label/components/avatar-label-description/AvatarLabelDescription.d.ts +10 -0
- package/dist/components/avatar/avatar-label/components/avatar-label-indicator/AvatarLabelIndicator.d.ts +6 -0
- package/dist/components/avatar/avatar-label/components/avatar-label-title/AvatarLabelTitle.d.ts +6 -0
- package/dist/components/avatar/index.d.ts +13 -0
- package/dist/components/avatar.d.ts +2 -0
- package/dist/components/avatar.js +432 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge/Badge.d.ts +7 -382
- package/dist/components/badge.js +24 -46
- package/dist/components/badge.js.map +1 -1
- package/dist/components/banner/Banner.d.ts +5 -0
- package/dist/components/banner/Banner.stories.d.ts +8 -0
- package/dist/components/banner/components/banner-description/BannerDescription.d.ts +5 -0
- package/dist/components/banner/components/banner-description/BannerDescription.stories.d.ts +14 -0
- package/dist/components/banner/components/banner-title/BannerTitle.d.ts +5 -0
- package/dist/components/banner/components/banner-title/BannerTitle.stories.d.ts +14 -0
- package/dist/components/banner/index.d.ts +3 -0
- package/dist/components/banner.d.ts +2 -0
- package/dist/components/banner.js +27 -0
- package/dist/components/banner.js.map +1 -0
- package/dist/components/breadcrumb/Breadcrumb.d.ts +19 -0
- package/dist/components/breadcrumb/Breadcrumb.stories.d.ts +10 -0
- package/dist/components/breadcrumb/index.d.ts +1 -0
- package/dist/components/breadcrumb.d.ts +2 -0
- package/dist/components/breadcrumb.js +78 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button/button/Button.d.ts +6 -167
- package/dist/components/button/button/Button.stories.d.ts +4 -164
- package/dist/components/button/button-base/ButtonBase.d.ts +7 -328
- package/dist/components/button/icon-button/IconButton.d.ts +5 -466
- package/dist/components/button/icon-button/IconButton.stories.d.ts +21 -2
- package/dist/components/button/index.d.ts +9 -0
- package/dist/components/button/rich-button/RichButton.d.ts +79 -0
- package/dist/components/button/rich-button/RichButton.stories.d.ts +46 -0
- package/dist/components/button/templates/loading-button/LoadingButtonTemplate.d.ts +12 -0
- package/dist/components/button/templates/loading-button/LoadingButtonTemplate.stories.d.ts +21 -0
- package/dist/components/button/trigger-button/TriggerButton.d.ts +13 -0
- package/dist/components/button/trigger-button/TriggerButton.stories.d.ts +7 -0
- package/dist/components/button.js +26 -6
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar/Calendar.d.ts +14 -0
- package/dist/components/calendar/Calendar.stories.d.ts +45 -0
- package/dist/components/calendar/components/calendar-chevron/CalendarChevron.d.ts +12 -0
- package/dist/components/calendar/components/calendar-day-button/CalendarDayButton.d.ts +26 -0
- package/dist/components/calendar/components/calendar-day-button/CalendarDayButton.stories.d.ts +18 -0
- package/dist/components/calendar/components/calendar-next-month-button/CalendarNextMonthButton.d.ts +11 -0
- package/dist/components/calendar/components/calendar-previous-month-button/CalendarPreviousMonthButton.d.ts +11 -0
- package/dist/components/calendar/components/calendar-root/CalendarRoot.d.ts +11 -0
- package/dist/components/calendar/components/calendar-week-day/CalendarWeekDay.d.ts +11 -0
- package/dist/components/calendar/components/calendar-week-day/CalendarWeekDay.stories.d.ts +7 -0
- package/dist/components/calendar/index.d.ts +3 -0
- package/dist/components/calendar.d.ts +2 -0
- package/dist/components/calendar.js +186 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card/Card.d.ts +7 -0
- package/dist/components/card/Card.stories.d.ts +17 -0
- package/dist/components/card/components/ActionCard.d.ts +7 -0
- package/dist/components/card/components/CardFeature.d.ts +7 -0
- package/dist/components/card/components/CardFolder.d.ts +9 -0
- package/dist/components/card/components/CardFooter.d.ts +7 -0
- package/dist/components/card/components/CardMenuTrigger.d.ts +8 -0
- package/dist/components/card/components/CardSubTitle.d.ts +7 -0
- package/dist/components/card/components/CardTitle.d.ts +7 -0
- package/dist/components/card/components/CardVisualBadge.d.ts +7 -0
- package/dist/components/card/components/FolderSvg.d.ts +3 -0
- package/dist/components/card/index.d.ts +19 -0
- package/dist/components/card/styles.d.ts +2 -0
- package/dist/components/card.d.ts +2 -0
- package/dist/components/card.js +159 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel/Carousel.d.ts +17 -0
- package/dist/components/carousel/Carousel.stories.d.ts +8 -0
- package/dist/components/carousel/components/carousel-buttons/CarouselButtons.d.ts +27 -0
- package/dist/components/carousel/components/carousel-item/CarouselItem.d.ts +3 -0
- package/dist/components/carousel/index.d.ts +4 -0
- package/dist/components/carousel/utils/CarouselContext.d.ts +13 -0
- package/dist/components/carousel/utils/useCarousel.d.ts +10 -0
- package/dist/components/carousel.d.ts +2 -0
- package/dist/components/carousel.js +1700 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/checkbox/Checkbox.d.ts +49 -2
- package/dist/components/checkbox/Checkbox.test.d.ts +1 -0
- package/dist/components/checkbox/checkbox-field/CheckboxField.d.ts +10 -456
- package/dist/components/checkbox/checkbox-field/CheckboxField.stories.d.ts +3 -228
- package/dist/components/checkbox/index.d.ts +2 -2
- package/dist/components/checkbox.js +4 -3
- package/dist/components/collapsible/Collapsible.d.ts +6 -0
- package/dist/components/collapsible/Collapsible.stories.d.ts +6 -0
- package/dist/components/collapsible/index.d.ts +1 -0
- package/dist/components/collapsible.d.ts +2 -0
- package/dist/components/collapsible.js +133 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/color-tile/ColorTile.d.ts +9 -0
- package/dist/components/color-tile/ColorTile.stories.d.ts +6 -0
- package/dist/components/color-tile/index.d.ts +1 -0
- package/dist/components/color-tile.d.ts +2 -0
- package/dist/components/color-tile.js +26 -0
- package/dist/components/color-tile.js.map +1 -0
- package/dist/components/command/Command.d.ts +108 -0
- package/dist/components/command/Command.stories.d.ts +34 -0
- package/dist/components/command/index.d.ts +1 -0
- package/dist/components/command.d.ts +2 -0
- package/dist/components/command.js +15 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/container/Container.d.ts +29 -0
- package/dist/components/container/Container.stories.d.ts +6 -0
- package/dist/components/container/index.d.ts +1 -0
- package/dist/components/container.d.ts +2 -0
- package/dist/components/container.js +23 -0
- package/dist/components/container.js.map +1 -0
- package/dist/components/counter/Counter.d.ts +14 -0
- package/dist/components/counter/Counter.stories.d.ts +9 -0
- package/dist/components/counter/index.d.ts +1 -0
- package/dist/components/counter.d.ts +2 -0
- package/dist/components/counter.js +142 -0
- package/dist/components/counter.js.map +1 -0
- package/dist/components/data-table/DataTable.stories.d.ts +8 -0
- package/dist/components/description/Description.d.ts +5 -1
- package/dist/components/description/Description.stories.d.ts +10 -0
- package/dist/components/description.js +1 -1
- package/dist/components/dialog/Dialog.d.ts +51 -12
- package/dist/components/dialog/Dialog.stories.d.ts +26 -0
- package/dist/components/dialog/DialogTemplates.d.ts +24 -0
- package/dist/components/dialog/index.d.ts +4 -0
- package/dist/components/dialog.d.ts +2 -0
- package/dist/components/dialog.js +47 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/divider/Divider.d.ts +6 -118
- package/dist/components/divider/content-divider/ContentDivider.d.ts +15 -0
- package/dist/components/divider/content-divider/ContentDivider.stories.d.ts +7 -0
- package/dist/components/divider/index.d.ts +1 -0
- package/dist/components/divider.js +32 -1
- package/dist/components/divider.js.map +1 -1
- package/dist/components/drawer/Drawer.d.ts +13 -0
- package/dist/components/drawer/Drawer.stories.d.ts +25 -0
- package/dist/components/drawer/components/drawer-body/DrawerBody.d.ts +3 -0
- package/dist/components/drawer/components/drawer-content/DrawerContent.d.ts +19 -0
- package/dist/components/drawer/components/drawer-footer/DrawerFooter.d.ts +3 -0
- package/dist/components/drawer/components/drawer-handler/DrawerHandler.d.ts +2 -0
- package/dist/components/drawer/components/drawer-handler/DrawerHandlerSvg.d.ts +1 -0
- package/dist/components/drawer/components/drawer-header/DrawerHeader.d.ts +3 -0
- package/dist/components/drawer/components/drawer-overlay/DrawerOverlay.d.ts +7 -0
- package/dist/components/drawer/index.d.ts +9 -0
- package/dist/components/{modal/templates/footer-template/ModalFooterTemplate.d.ts → drawer/templates/drawer-footer-template/DrawerFooterTemplate.d.ts} +6 -6
- package/dist/components/drawer/templates/drawer-header-template/DrawerHeaderTemplate.d.ts +10 -0
- package/dist/components/drawer.d.ts +2 -0
- package/dist/components/drawer.js +1232 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown/Dropdown.d.ts +80 -0
- package/dist/components/dropdown/Dropdown.stories.d.ts +22 -0
- package/dist/components/dropdown/index.d.ts +3 -0
- package/dist/components/dropdown/useHoverDropdown.d.ts +68 -0
- package/dist/components/dropdown.d.ts +2 -0
- package/dist/components/dropdown.js +1152 -0
- package/dist/components/dropdown.js.map +1 -0
- package/dist/components/empty-state/EmptyState.d.ts +5 -0
- package/dist/components/empty-state/EmptyState.stories.d.ts +6 -0
- package/dist/components/empty-state/index.d.ts +1 -0
- package/dist/components/empty-state.d.ts +2 -0
- package/dist/components/empty-state.js +5 -0
- package/dist/components/empty-state.js.map +1 -0
- package/dist/components/error-state/ErrorState.d.ts +3 -0
- package/dist/components/error-state/ErrorState.stories.d.ts +6 -0
- package/dist/components/error-state/Retry.d.ts +10 -0
- package/dist/components/error-state/Retry.stories.d.ts +7 -0
- package/dist/components/error-state/index.d.ts +2 -0
- package/dist/components/error-state.d.ts +2 -0
- package/dist/components/error-state.js +16 -0
- package/dist/components/error-state.js.map +1 -0
- package/dist/components/field/Field.d.ts +38 -106
- package/dist/components/field/Field.stories.d.ts +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/file-upload/FileUpload.d.ts +24 -0
- package/dist/components/file-upload/FileUpload.stories.d.ts +19 -0
- package/dist/components/file-upload/components/file-upload-clear-button/FileUploadClearButton.d.ts +9 -0
- package/dist/components/file-upload/components/file-upload-compact-input-zone/FileUploadCompactInputZone.d.ts +9 -0
- package/dist/components/file-upload/components/file-upload-drop-area/FileUploadDropArea.d.ts +12 -0
- package/dist/components/file-upload/components/file-upload-drop-area/FileUploadDropArea.stories.d.ts +18 -0
- package/dist/components/file-upload/components/file-upload-drop-area-icon/FileUploadDropAreaIcon.d.ts +3 -0
- package/dist/components/file-upload/components/file-upload-drop-area-icon/FileUploadDropAreaIcon.stories.d.ts +14 -0
- package/dist/components/file-upload/components/file-upload-error/FileUploadError.d.ts +7 -0
- package/dist/components/file-upload/components/file-upload-error/FileUploadError.stories.d.ts +15 -0
- package/dist/components/file-upload/components/file-upload-icon/FileUploadIcon.d.ts +5 -0
- package/dist/components/file-upload/components/file-upload-icon/FileUploadIcon.stories.d.ts +13 -0
- package/dist/components/file-upload/components/file-upload-inline-drop-area/FileUploadInlineDropArea.d.ts +12 -0
- package/dist/components/file-upload/components/file-upload-inline-drop-area/FileUploadInlineDropArea.stories.d.ts +18 -0
- package/dist/components/file-upload/components/file-upload-input-zone/FileUploadInputZone.d.ts +9 -0
- package/dist/components/file-upload/components/file-upload-item/FileUploadItem.d.ts +12 -0
- package/dist/components/file-upload/components/file-upload-item/FileUploadItem.stories.d.ts +19 -0
- package/dist/components/file-upload/components/file-upload-item-compact/FileUploadItemCompact.d.ts +14 -0
- package/dist/components/file-upload/components/file-upload-item-compact/FileUploadItemCompact.stories.d.ts +19 -0
- package/dist/components/file-upload/file-upload-compact/FileUploadCompact.d.ts +19 -0
- package/dist/components/file-upload/file-upload-compact/FileUploadCompact.stories.d.ts +20 -0
- package/dist/components/file-upload/index.d.ts +11 -0
- package/dist/components/file-upload.d.ts +2 -0
- package/dist/components/file-upload.js +484 -0
- package/dist/components/file-upload.js.map +1 -0
- package/dist/components/form/Form.d.ts +27 -4
- package/dist/components/form/Form.stories.d.ts +22 -7
- package/dist/components/form/components/form-body/FormBody.d.ts +5 -0
- package/dist/components/form/components/form-divider/FormDivider.d.ts +6 -0
- package/dist/components/form/components/form-field/FormField.d.ts +21 -62
- package/dist/components/form/components/form-field/FormField.stories.d.ts +10 -0
- package/dist/components/form/components/form-field-set/FormFieldSet.d.ts +3 -0
- package/dist/components/form/components/form-footer/FormFooter.d.ts +5 -0
- package/dist/components/form/components/form-header/FormHeader.d.ts +16 -0
- package/dist/components/form/components/form-section-header-button/FormSectionHeaderButton.d.ts +17 -0
- package/dist/components/form/components/form-section-title/FormSectionTitle.d.ts +3 -1
- package/dist/components/form/components/form-stack/FormStack.d.ts +3 -0
- package/dist/components/form/index.d.ts +10 -1
- package/dist/components/form/templates/footer-template/FormFooterTemplate.d.ts +24 -0
- package/dist/components/form/templates/header-template/FormHeaderTemplate.d.ts +43 -0
- package/dist/components/form.js +59 -335
- package/dist/components/form.js.map +1 -1
- package/dist/components/hint-state/HintState.d.ts +3 -0
- package/dist/components/hint-state/HintState.stories.d.ts +6 -0
- package/dist/components/hint-state/index.d.ts +1 -0
- package/dist/components/hint-state.d.ts +2 -0
- package/dist/components/hint-state.js +5 -0
- package/dist/components/hint-state.js.map +1 -0
- package/dist/components/icon/Icon.d.ts +9 -48
- package/dist/components/icon/Icon.stories.d.ts +7 -4
- package/dist/components/icon/feature-icon/FeatureIcon.d.ts +4 -75
- package/dist/components/icon/feature-icon/FeatureIcon.stories.d.ts +16 -6
- package/dist/components/icon/index.d.ts +2 -0
- package/dist/components/icon-tooltip/IconTooltip.d.ts +5 -4
- package/dist/components/icon-tooltip/index.d.ts +2 -0
- package/dist/components/icon-tooltip.d.ts +2 -0
- package/dist/components/icon-tooltip.js +5 -0
- package/dist/components/icon-tooltip.js.map +1 -0
- package/dist/components/icon.d.ts +2 -0
- package/dist/components/icon.js +7 -0
- package/dist/components/icon.js.map +1 -0
- package/dist/components/image-placeholder/ImagePlaceholder.d.ts +6 -0
- package/dist/components/image-placeholder/ImagePlaceholder.stories.d.ts +6 -0
- package/dist/components/image-placeholder/index.d.ts +1 -0
- package/dist/components/image-placeholder.d.ts +2 -0
- package/dist/components/image-placeholder.js +22 -0
- package/dist/components/image-placeholder.js.map +1 -0
- package/dist/components/image-preview/ImagePreview.d.ts +23 -0
- package/dist/components/image-preview/ImagePreview.stories.d.ts +6 -0
- package/dist/components/image-preview/index.d.ts +1 -0
- package/dist/components/image-preview/utils.d.ts +1 -0
- package/dist/components/image-preview.d.ts +2 -0
- package/dist/components/image-preview.js +124 -0
- package/dist/components/image-preview.js.map +1 -0
- package/dist/components/image-uploader/ImageUploader.d.ts +27 -0
- package/dist/components/image-uploader/ImageUploader.stories.d.ts +6 -0
- package/dist/components/image-uploader/components/ImageCameraAddSvg.d.ts +5 -0
- package/dist/components/image-uploader/components/ImageUploaderButton.d.ts +8 -0
- package/dist/components/image-uploader/index.d.ts +1 -0
- package/dist/components/image-uploader.d.ts +2 -0
- package/dist/components/image-uploader.js +88 -0
- package/dist/components/image-uploader.js.map +1 -0
- package/dist/components/images/BoxSvg.d.ts +5 -0
- package/dist/components/images/BoxSvg.stories.d.ts +13 -0
- package/dist/components/images/FolderSvg.d.ts +5 -0
- package/dist/components/images/FolderSvg.stories.d.ts +13 -0
- package/dist/components/images/index.d.ts +2 -0
- package/dist/components/images.d.ts +2 -0
- package/dist/components/images.js +6 -0
- package/dist/components/images.js.map +1 -0
- package/dist/components/indicator/Indicator.d.ts +7 -0
- package/dist/components/indicator/Indicator.stories.d.ts +6 -0
- package/dist/components/indicator/index.d.ts +1 -0
- package/dist/components/indicator.d.ts +2 -0
- package/dist/components/indicator.js +5 -0
- package/dist/components/indicator.js.map +1 -0
- package/dist/components/input/components/clear-button/ClearButton.d.ts +3 -3
- package/dist/components/input/file-input/FileInput.d.ts +34 -0
- package/dist/components/input/file-input/FileInput.stories.d.ts +12 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/input/Input.d.ts +5 -2
- package/dist/components/input/input/Input.stories.d.ts +3 -0
- package/dist/components/input/input-group/InputGroup.d.ts +37 -0
- package/dist/components/input/input-group/InputGroup.stories.d.ts +7 -0
- package/dist/components/input/secret-input/SecretInput.d.ts +14 -5
- package/dist/components/input/secret-input/SecretInput.stories.d.ts +4 -0
- package/dist/components/input/styles/inputBaseStyles.d.ts +3 -0
- package/dist/components/input/text-input/TextInput.d.ts +2 -2
- package/dist/components/input/text-input/TextInput.stories.d.ts +2 -2
- package/dist/components/input/web-input/WebInput.d.ts +15 -0
- package/dist/components/input/web-input/WebInput.stories.d.ts +14 -0
- package/dist/components/input-otp/InputOTP.d.ts +29 -0
- package/dist/components/input-otp/InputOTP.stories.d.ts +9 -0
- package/dist/components/input-otp/components/input-otp-group/InputOTPGroup.d.ts +2 -0
- package/dist/components/input-otp/components/input-otp-separator/InputOTPSeparator.d.ts +2 -0
- package/dist/components/input-otp/components/input-otp-slot/InputOTPSlot.d.ts +4 -0
- package/dist/components/input-otp/index.d.ts +4 -0
- package/dist/components/input-otp.d.ts +2 -0
- package/dist/components/input-otp.js +8 -0
- package/dist/components/input-otp.js.map +1 -0
- package/dist/components/input.js +223 -202
- package/dist/components/input.js.map +1 -1
- package/dist/components/label/Label.d.ts +1 -3
- package/dist/components/label/Label.stories.d.ts +1 -5
- package/dist/components/label/field-label/FieldLabel.d.ts +4 -47
- package/dist/components/label/field-label/FieldLabel.stories.d.ts +1 -0
- package/dist/components/label/field-label/components/RequiredIcon.d.ts +5 -0
- package/dist/components/label.js +1 -1
- package/dist/components/loader/Loader.d.ts +6 -0
- package/dist/components/loader/Loader.stories.d.ts +6 -0
- package/dist/components/loader/index.d.ts +1 -0
- package/dist/components/loader.d.ts +2 -0
- package/dist/components/loader.js +5 -0
- package/dist/components/loader.js.map +1 -0
- package/dist/components/menu-item/MenuItem.d.ts +31 -0
- package/dist/components/menu-item/MenuItem.stories.d.ts +6 -0
- package/dist/components/menu-item/MenuItemAction.d.ts +6 -0
- package/dist/components/menu-item/components/menu-item-button/MenuItemButton.d.ts +37 -0
- package/dist/components/menu-item/components/menu-item-button/MenuItemButton.stories.d.ts +7 -0
- package/dist/components/menu-item/components/menu-item-icon/MenuItemIcon.d.ts +7 -0
- package/dist/components/menu-item/components/menu-item-icon/MenuItemIcon.stories.d.ts +6 -0
- package/dist/components/menu-item/components/menu-item-icon-button/MenuItemIconButton.d.ts +5 -0
- package/dist/components/menu-item/components/menu-item-icon-button/MenuItemIconButton.stories.d.ts +7 -0
- package/dist/components/menu-item/components/menu-item-secondary-text/MenuItemSecondaryText.d.ts +21 -0
- package/dist/components/menu-item/components/menu-item-secondary-text/MenuItemSecondaryText.stories.d.ts +6 -0
- package/dist/components/menu-item/components/menu-item-shortcut/MenuItemShortcut.d.ts +21 -0
- package/dist/components/menu-item/components/menu-item-shortcut/MenuItemShortcut.stories.d.ts +6 -0
- package/dist/components/menu-item/components/menu-item-text/MenuItemText.d.ts +21 -0
- package/dist/components/menu-item/components/menu-item-text/MenuItemText.stories.d.ts +6 -0
- package/dist/components/menu-item/index.d.ts +13 -0
- package/dist/components/menu-item/templates/menu-item-action-template/MenuItemActionTemplate.d.ts +12 -0
- package/dist/components/menu-item/templates/menu-item-action-template/MenuItemActionTemplate.stories.d.ts +6 -0
- package/dist/components/menu-item/templates/menu-item-common-template/MenuItemCommonTemplate.d.ts +16 -0
- package/dist/components/menu-item/templates/menu-item-common-template/MenuItemCommonTemplate.stories.d.ts +6 -0
- package/dist/components/menu-item/templates/menu-item-info-template/MenuItemInfoTemplate.d.ts +13 -0
- package/dist/components/menu-item/templates/menu-item-info-template/MenuItemInfoTemplate.stories.d.ts +6 -0
- package/dist/components/menu-item/templates/menu-item-interactive-template/MenuItemInteractiveTemplate.d.ts +16 -0
- package/dist/components/menu-item/templates/menu-item-interactive-template/MenuItemInteractiveTemplate.stories.d.ts +6 -0
- package/dist/components/menu-item/templates/menu-item-rich-template/MenuItemRichTemplate.d.ts +11 -0
- package/dist/components/menu-item/templates/menu-item-rich-template/MenuItemRichTemplate.stories.d.ts +6 -0
- package/dist/components/menu-item.d.ts +2 -0
- package/dist/components/menu-item.js +243 -0
- package/dist/components/menu-item.js.map +1 -0
- package/dist/components/overflow-tooltip/OverflowTooltip.d.ts +29 -0
- package/dist/components/overflow-tooltip/OverflowTooltip.stories.d.ts +9 -0
- package/dist/components/overflow-tooltip/TextOverflowTooltip.d.ts +11 -0
- package/dist/components/overflow-tooltip/TextOverflowTooltip.stories.d.ts +6 -0
- package/dist/components/overflow-tooltip/index.d.ts +3 -0
- package/dist/components/overflow-tooltip/useOverflowTooltip.d.ts +6 -0
- package/dist/components/overflow-tooltip.d.ts +2 -0
- package/dist/components/overflow-tooltip.js +7 -0
- package/dist/components/overflow-tooltip.js.map +1 -0
- package/dist/components/overlay/Overlay.d.ts +45 -0
- package/dist/components/overlay/Overlay.stories.d.ts +6 -0
- package/dist/components/overlay/index.d.ts +1 -0
- package/dist/components/overlay.d.ts +2 -0
- package/dist/components/overlay.js +5 -0
- package/dist/components/overlay.js.map +1 -0
- package/dist/components/page-state/PageState.d.ts +8 -0
- package/dist/components/page-state/PageState.stories.d.ts +9 -0
- package/dist/components/page-state/components/PageStateAction.d.ts +14 -0
- package/dist/components/page-state/components/PageStateBoxSvg.d.ts +6 -0
- package/dist/components/page-state/components/PageStateButtonGroup.d.ts +3 -0
- package/dist/components/page-state/components/PageStateCancel.d.ts +14 -0
- package/dist/components/page-state/components/PageStateDescription.d.ts +8 -0
- package/dist/components/page-state/components/PageStateFeatureIcon.d.ts +7 -0
- package/dist/components/page-state/components/PageStateFolderSvg.d.ts +7 -0
- package/dist/components/page-state/components/PageStateTitle.d.ts +8 -0
- package/dist/components/page-state/context/PageStateContext.d.ts +12 -0
- package/dist/components/page-state/hooks/usePageStateButtonSize.d.ts +3 -0
- package/dist/components/page-state/index.d.ts +10 -0
- package/dist/components/page-state.d.ts +2 -0
- package/dist/components/page-state.js +173 -0
- package/dist/components/page-state.js.map +1 -0
- package/dist/components/popover/Popover.d.ts +31 -0
- package/dist/components/popover/Popover.stories.d.ts +24 -0
- package/dist/components/popover/index.d.ts +1 -0
- package/dist/components/popover.d.ts +2 -0
- package/dist/components/popover.js +9 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/portal-container/PortalContainer.d.ts +10 -0
- package/dist/components/portal-container/index.d.ts +2 -0
- package/dist/components/portal-container/portalContainerEvents.d.ts +12 -0
- package/dist/components/portal-container/usePortalContainer.d.ts +10 -0
- package/dist/components/portal-container.d.ts +2 -0
- package/dist/components/portal-container.js +14 -0
- package/dist/components/portal-container.js.map +1 -0
- package/dist/components/progress/Progress.d.ts +15 -0
- package/dist/components/progress/Progress.stories.d.ts +9 -0
- package/dist/components/progress/ProgressBarStyles.d.ts +70 -0
- package/dist/components/progress/components/progress-icon/ProgressIcon.d.ts +5 -0
- package/dist/components/progress/components/progress-icon/ProgressIcon.stories.d.ts +6 -0
- package/dist/components/progress/components/progress-icon-button/ProgressIconButton.d.ts +5 -0
- package/dist/components/progress/components/progress-icon-button/ProgressIconButton.stories.d.ts +6 -0
- package/dist/components/progress/components/progress-text/ProgressText.d.ts +6 -0
- package/dist/components/progress/components/progress-text/ProgressText.stories.d.ts +6 -0
- package/dist/components/progress/index.d.ts +10 -0
- package/dist/components/progress/templates/ProgressBlockTemplate.d.ts +16 -0
- package/dist/components/progress/templates/ProgressBlockTemplate.stories.d.ts +7 -0
- package/dist/components/progress-circle/ProgressCircle.d.ts +186 -0
- package/dist/components/progress-circle/ProgressCircle.stories.d.ts +9 -0
- package/dist/components/progress-circle/components/progress-circle-description/ProgressCircleDescription.d.ts +5 -0
- package/dist/components/progress-circle/components/progress-circle-description/ProgressCircleDescription.stories.d.ts +6 -0
- package/dist/components/progress-circle/components/progress-circle-icon-button/ProgressCircleIconButton.d.ts +70 -0
- package/dist/components/progress-circle/components/progress-circle-icon-button/ProgressCircleIconButton.stories.d.ts +6 -0
- package/dist/components/progress-circle/components/progress-circle-text/ProgressCircleTitle.d.ts +56 -0
- package/dist/components/progress-circle/components/progress-circle-text/ProgressCircleTitle.stories.d.ts +6 -0
- package/dist/components/progress-circle/index.d.ts +5 -0
- package/dist/components/progress-circle/templates/ProgressCircleTemplate.d.ts +13 -0
- package/dist/components/progress-circle/templates/ProgressCircleTemplate.stories.d.ts +8 -0
- package/dist/components/progress-circle.d.ts +2 -0
- package/dist/components/progress-circle.js +187 -0
- package/dist/components/progress-circle.js.map +1 -0
- package/dist/components/progress.d.ts +2 -0
- package/dist/components/progress.js +262 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/prose/Prose.d.ts +9 -0
- package/dist/components/prose/Prose.stories.d.ts +6 -0
- package/dist/components/prose/index.d.ts +1 -0
- package/dist/components/prose.d.ts +2 -0
- package/dist/components/prose.js +12 -0
- package/dist/components/prose.js.map +1 -0
- package/dist/components/radio-group/RadioGroup.d.ts +4 -0
- package/dist/components/radio-group/RadioGroup.stories.d.ts +11 -0
- package/dist/components/radio-group/components/RadioGroupItem.d.ts +43 -0
- package/dist/components/radio-group/index.d.ts +2 -0
- package/dist/components/radio-group.d.ts +2 -0
- package/dist/components/radio-group.js +271 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/resizable/Resizable.d.ts +23 -0
- package/dist/components/resizable/Resizable.stories.d.ts +8 -0
- package/dist/components/resizable/index.d.ts +1 -0
- package/dist/components/resizable.d.ts +2 -0
- package/dist/components/resizable.js +1552 -0
- package/dist/components/resizable.js.map +1 -0
- package/dist/components/scheduler/components/day/Day.d.ts +4 -61
- package/dist/components/scheduler.js +1249 -1244
- package/dist/components/scheduler.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea.d.ts +19 -2
- package/dist/components/scroll-area/ScrollArea.stories.d.ts +5 -2
- package/dist/components/scroll-area/index.d.ts +2 -0
- package/dist/components/scroll-area.d.ts +2 -0
- package/dist/components/scroll-area.js +6 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/scroll-shadow-container/ScrollShadowContainer.d.ts +2 -49
- package/dist/components/scroll-shadow-container/ScrollShadowContainer.stories.d.ts +1 -0
- package/dist/components/scroll-shadow-container/index.d.ts +1 -0
- package/dist/components/scroll-shadow-container.js +1 -1
- package/dist/components/search-select/async-search-select/AsyncSearchSelect.d.ts +2 -0
- package/dist/components/search-select/async-search-select/AsyncSearchSelect.stories.d.ts +20 -0
- package/dist/components/search-select/async-search-select/components/AsyncSearchSelectContent.d.ts +42 -0
- package/dist/components/search-select/async-search-select/components/AsyncSearchSelectPopoverContent.d.ts +7 -0
- package/dist/components/search-select/async-search-select/hooks/useAsyncDataLoader.d.ts +48 -0
- package/dist/components/search-select/async-search-select/types.d.ts +99 -0
- package/dist/components/search-select/components/SearchSelectPlaceholder.d.ts +7 -0
- package/dist/components/search-select/components/SearchSelectTag.d.ts +13 -0
- package/dist/components/search-select/components/SearchSelectTextValue.d.ts +7 -0
- package/dist/components/search-select/components/SearchSelectTrigger.d.ts +23 -0
- package/dist/components/search-select/index.d.ts +22 -0
- package/dist/components/search-select/multi-select/MultiSelect.d.ts +87 -0
- package/dist/components/search-select/multi-select/MultiSelect.stories.d.ts +18 -0
- package/dist/components/search-select/search-select/LazySearchSelect.d.ts +16 -0
- package/dist/components/search-select/search-select/LazySearchSelect.stories.d.ts +21 -0
- package/dist/components/search-select/search-select/SearchSelect.d.ts +80 -0
- package/dist/components/search-select/search-select/SearchSelect.stories.d.ts +16 -0
- package/dist/components/search-select/search-select/components/LoadMoreTrigger.d.ts +17 -0
- package/dist/components/search-select/search-select/components/SearchSelectContent.d.ts +10 -0
- package/dist/components/search-select/search-select/components/SearchSelectGroup.d.ts +12 -0
- package/dist/components/search-select/search-select/components/SearchSelectInput.d.ts +9 -0
- package/dist/components/search-select/search-select/components/SearchSelectSeparator.d.ts +12 -0
- package/dist/components/search-select/search-select/utils/fuzzyFilter.d.ts +9 -0
- package/dist/components/search-select.d.ts +2 -0
- package/dist/components/search-select.js +596 -0
- package/dist/components/search-select.js.map +1 -0
- package/dist/components/select/Select.d.ts +39 -27
- package/dist/components/select/Select.stories.d.ts +2 -0
- package/dist/components/select/components/SelectTriggerClearButton.d.ts +6 -0
- package/dist/components/select/index.d.ts +1 -1
- package/dist/components/select.js +14 -1032
- package/dist/components/select.js.map +1 -1
- package/dist/components/sheet/Sheet.d.ts +35 -0
- package/dist/components/sheet/Sheet.stories.d.ts +20 -0
- package/dist/components/sheet/index.d.ts +1 -0
- package/dist/components/sheet.d.ts +2 -0
- package/dist/components/sheet.js +14 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/shortcut/Shortcut.d.ts +8 -0
- package/dist/components/shortcut/Shortcut.stories.d.ts +22 -0
- package/dist/components/shortcut/index.d.ts +1 -0
- package/dist/components/shortcut.d.ts +2 -0
- package/dist/components/shortcut.js +5 -0
- package/dist/components/shortcut.js.map +1 -0
- package/dist/components/sidebar/Sidebar.d.ts +73 -0
- package/dist/components/sidebar/Sidebar.stories.d.ts +18 -0
- package/dist/components/sidebar/SidebarContext.d.ts +12 -0
- package/dist/components/sidebar/index.d.ts +3 -0
- package/dist/components/sidebar.d.ts +2 -0
- package/dist/components/sidebar.js +505 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton/Skeleton.d.ts +6 -0
- package/dist/components/skeleton/Skeleton.stories.d.ts +9 -0
- package/dist/components/skeleton/index.d.ts +1 -0
- package/dist/components/skeleton.d.ts +2 -0
- package/dist/components/skeleton.js +5 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider/Slider.d.ts +4 -0
- package/dist/components/slider/Slider.stories.d.ts +12 -0
- package/dist/components/slider/components/SliderRange.d.ts +4 -0
- package/dist/components/slider/components/SliderThumb.d.ts +4 -0
- package/dist/components/slider/components/SliderTrack.d.ts +4 -0
- package/dist/components/slider/index.d.ts +4 -0
- package/dist/components/slider.d.ts +2 -0
- package/dist/components/slider.js +458 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/stepper/Stepper.d.ts +8 -0
- package/dist/components/stepper/Stepper.stories.d.ts +8 -0
- package/dist/components/stepper/StepperContext.d.ts +9 -0
- package/dist/components/stepper/components/stepper-description/StepperDescription.d.ts +1 -0
- package/dist/components/stepper/components/stepper-indicator/StepperIndicator.d.ts +4 -0
- package/dist/components/stepper/components/stepper-item/StepperItem.d.ts +7 -0
- package/dist/components/stepper/components/stepper-item/StepperItemContext.d.ts +11 -0
- package/dist/components/stepper/components/stepper-title/StepperTitle.d.ts +1 -0
- package/dist/components/stepper/components/stepper-trigger/StepperTrigger.d.ts +4 -0
- package/dist/components/stepper/index.d.ts +9 -0
- package/dist/components/stepper/stepper-separator/StepperSeparator.d.ts +1 -0
- package/dist/components/stepper.d.ts +2 -0
- package/dist/components/stepper.js +145 -0
- package/dist/components/stepper.js.map +1 -0
- package/dist/components/switch/Switch.d.ts +5 -180
- package/dist/components/switch/Switch.stories.d.ts +2 -90
- package/dist/components/switch/switch-field/SwitchField.d.ts +9 -315
- package/dist/components/switch/switch-field/SwitchField.stories.d.ts +4 -315
- package/dist/components/switch.js +139 -152
- package/dist/components/switch.js.map +1 -1
- package/dist/components/system-state/SystemState.d.ts +3 -0
- package/dist/components/system-state/SystemState.stories.d.ts +19 -0
- package/dist/components/system-state/components/SystemStateActions.d.ts +10 -0
- package/dist/components/system-state/components/SystemStateCode.d.ts +3 -0
- package/dist/components/system-state/components/SystemStateDescription.d.ts +3 -0
- package/dist/components/system-state/components/SystemStateTitle.d.ts +3 -0
- package/dist/components/system-state/index.d.ts +10 -0
- package/dist/components/system-state.d.ts +2 -0
- package/dist/components/system-state.js +51 -0
- package/dist/components/system-state.js.map +1 -0
- package/dist/components/table/Table.d.ts +18 -0
- package/dist/components/table/Table.stories.d.ts +15 -0
- package/dist/components/table/index.d.ts +1 -0
- package/dist/components/table.d.ts +2 -0
- package/dist/components/table.js +83 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs/Tabs.d.ts +7 -0
- package/dist/components/tabs/Tabs.stories.d.ts +8 -0
- package/dist/components/tabs/index.d.ts +1 -0
- package/dist/components/tabs.d.ts +2 -0
- package/dist/components/tabs.js +178 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/tag/Tag.d.ts +59 -1103
- package/dist/components/tag/Tag.stories.d.ts +1 -0
- package/dist/components/tag/index.d.ts +1 -1
- package/dist/components/tag-input/TagInput.d.ts +42 -0
- package/dist/components/tag-input/TagInput.stories.d.ts +9 -0
- package/dist/components/tag-input/index.d.ts +2 -0
- package/dist/components/tag-input.d.ts +2 -0
- package/dist/components/tag-input.js +162 -0
- package/dist/components/tag-input.js.map +1 -0
- package/dist/components/tag.js +7 -189
- package/dist/components/tag.js.map +1 -1
- package/dist/components/text/Text.d.ts +9 -0
- package/dist/components/text/Text.stories.d.ts +24 -0
- package/dist/components/text/index.d.ts +1 -0
- package/dist/components/text.d.ts +2 -0
- package/dist/components/text.js +5 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/textarea/autogrow-textarea/AutogrowTextarea.d.ts +12 -0
- package/dist/components/textarea/autogrow-textarea/AutogrowTextarea.stories.d.ts +10 -0
- package/dist/components/textarea/index.d.ts +2 -0
- package/dist/components/textarea/textarea/Textarea.d.ts +14 -0
- package/dist/components/textarea/textarea/Textarea.stories.d.ts +7 -0
- package/dist/components/textarea.d.ts +2 -0
- package/dist/components/textarea.js +217 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/timer/Timer.d.ts +5 -0
- package/dist/components/timer/Timer.stories.d.ts +15 -0
- package/dist/components/timer/components/TimerUnit.d.ts +5 -0
- package/dist/components/timer/components/TimerValue.d.ts +5 -0
- package/dist/components/timer/index.d.ts +3 -0
- package/dist/components/timer.d.ts +2 -0
- package/dist/components/timer.js +23 -0
- package/dist/components/timer.js.map +1 -0
- package/dist/components/toast/Toast.d.ts +11 -3
- package/dist/components/toast/Toast.stories.d.ts +3 -0
- package/dist/components/toast/ToastView.d.ts +20 -401
- package/dist/components/toast/components/toast-action/ToastAction.d.ts +1 -0
- package/dist/components/toast/hooks/useToastContext.d.ts +1 -1
- package/dist/components/toast/index.d.ts +4 -1
- package/dist/components/toast.js +460 -471
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toggle/Toggle.d.ts +52 -0
- package/dist/components/toggle/Toggle.stories.d.ts +8 -0
- package/dist/components/toggle/index.d.ts +1 -0
- package/dist/components/toggle-group/ToggleGroup.d.ts +6 -0
- package/dist/components/toggle-group/ToggleGroup.stories.d.ts +13 -0
- package/dist/components/toggle-group/index.d.ts +1 -0
- package/dist/components/toggle-group.d.ts +2 -0
- package/dist/components/toggle-group.js +37 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.d.ts +2 -0
- package/dist/components/toggle.js +5 -0
- package/dist/components/toggle.js.map +1 -0
- package/dist/components/toolbar/Toolbar.d.ts +52 -0
- package/dist/components/toolbar/Toolbar.stories.d.ts +22 -0
- package/dist/components/toolbar/ToolbarContext.d.ts +11 -0
- package/dist/components/toolbar/index.d.ts +2 -0
- package/dist/components/toolbar.d.ts +2 -0
- package/dist/components/toolbar.js +304 -0
- package/dist/components/toolbar.js.map +1 -0
- package/dist/components/tooltip/Tooltip.d.ts +34 -0
- package/dist/components/tooltip/Tooltip.stories.d.ts +20 -0
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/useTooltipContext.d.ts +6 -0
- package/dist/components/tooltip.d.ts +2 -0
- package/dist/components/tooltip.js +16 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/createLucideIcon-DwBrHnj9.js +80 -0
- package/dist/{createLucideIcon-DgrNxRV5.js.map → createLucideIcon-DwBrHnj9.js.map} +1 -1
- package/dist/design-tokens.source.json +1 -1
- package/dist/download-BHsj218e.js +16 -0
- package/dist/download-BHsj218e.js.map +1 -0
- package/dist/examples/gramax/CloneRepository.stories.d.ts +5 -0
- package/dist/examples/gramax/NewStorage.stories.d.ts +5 -0
- package/dist/examples/quiz/QuizPage.stories.d.ts +6 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/use-file-upload/errorMessages.d.ts +39 -0
- package/dist/hooks/use-file-upload/index.d.ts +3 -0
- package/dist/hooks/use-file-upload/useFileUpload.d.ts +81 -0
- package/dist/hooks/use-file-upload.d.ts +2 -0
- package/dist/hooks/use-file-upload.js +7 -0
- package/dist/hooks/use-file-upload.js.map +1 -0
- package/dist/hooks/useAutofill.d.ts +8 -0
- package/dist/hooks/useBreakpoints.d.ts +23 -0
- package/dist/hooks/useControllableState.d.ts +13 -0
- package/dist/hooks/useControlledValue.d.ts +10 -0
- package/dist/hooks/useCopyAction.d.ts +7 -0
- package/dist/hooks/useCustomValidity.d.ts +9 -0
- package/dist/hooks/useDataCache.d.ts +77 -0
- package/dist/hooks/useDebounce.d.ts +7 -0
- package/dist/hooks/useFileType.d.ts +4 -0
- package/dist/hooks/useInputWithActions.d.ts +32 -0
- package/dist/hooks/useItemsKeyboardNavigation.d.ts +56 -0
- package/dist/hooks/useSearchCache.test.d.ts +1 -0
- package/dist/hooks/useSearchSelect.d.ts +31 -0
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.js +14 -0
- package/dist/hooks.js.map +1 -0
- package/dist/image-BqL5JP90.js +16 -0
- package/dist/image-BqL5JP90.js.map +1 -0
- package/dist/index-0ioNhtNM.js +11 -0
- package/dist/index-0ioNhtNM.js.map +1 -0
- package/dist/index-437EL2iq.js +53 -0
- package/dist/index-437EL2iq.js.map +1 -0
- package/dist/index-BGQepRFJ.js +28 -0
- package/dist/index-BGQepRFJ.js.map +1 -0
- package/dist/index-BVqs-uqP.js +234 -0
- package/dist/index-BVqs-uqP.js.map +1 -0
- package/dist/index-BZPx6jYI.js.map +1 -1
- package/dist/index-Bb23HztA.js +33 -0
- package/dist/index-Bb23HztA.js.map +1 -0
- package/dist/index-BpWB3aFK.js +71 -0
- package/dist/index-BpWB3aFK.js.map +1 -0
- package/dist/index-BtQfgaSF.js +61 -0
- package/dist/index-BtQfgaSF.js.map +1 -0
- package/dist/index-ByaXH_ih.js +11 -0
- package/dist/index-ByaXH_ih.js.map +1 -0
- package/dist/index-BzCriPiK.js +671 -0
- package/dist/index-BzCriPiK.js.map +1 -0
- package/dist/index-CCKe-Mpx.js +7 -0
- package/dist/index-CCKe-Mpx.js.map +1 -0
- package/dist/index-CFaU3UXv.js +94 -0
- package/dist/index-CFaU3UXv.js.map +1 -0
- package/dist/index-CLuiUUQ8.js +137 -0
- package/dist/index-CLuiUUQ8.js.map +1 -0
- package/dist/index-CQD-Njgt.js +245 -0
- package/dist/index-CQD-Njgt.js.map +1 -0
- package/dist/index-CmBeyp2d.js +56 -0
- package/dist/index-CmBeyp2d.js.map +1 -0
- package/dist/index-DFZozV_h.js +69 -0
- package/dist/index-DFZozV_h.js.map +1 -0
- package/dist/index-DHsfW5Rj.js +49 -0
- package/dist/index-DHsfW5Rj.js.map +1 -0
- package/dist/index-DHyZ_0Ut.js +181 -0
- package/dist/index-DHyZ_0Ut.js.map +1 -0
- package/dist/index-DLcqcWxM.js +30 -0
- package/dist/index-DLcqcWxM.js.map +1 -0
- package/dist/index-DRo26PBK.js +1525 -0
- package/dist/index-DRo26PBK.js.map +1 -0
- package/dist/index-DnnQs07z.js +33 -0
- package/dist/index-DnnQs07z.js.map +1 -0
- package/dist/index-Uiy0Xwy2.js +32 -0
- package/dist/index-Uiy0Xwy2.js.map +1 -0
- package/dist/index-_ITz1IyW.js +144 -0
- package/dist/index-_ITz1IyW.js.map +1 -0
- package/dist/index-rKs9bXHr.js +7 -0
- package/dist/index-rKs9bXHr.js.map +1 -0
- package/dist/index-xqkGMOJ8.js +14 -0
- package/dist/index-xqkGMOJ8.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.esm-CXA6i4d7.js +1282 -0
- package/dist/index.esm-CXA6i4d7.js.map +1 -0
- package/dist/index.js +53 -1
- package/dist/index.js.map +1 -1
- package/dist/inputBaseStyles-DbzD_jvq.js +34 -0
- package/dist/inputBaseStyles-DbzD_jvq.js.map +1 -0
- package/dist/lib/utils/cn.d.ts +2 -0
- package/dist/lib/utils/dom.d.ts +6 -0
- package/dist/lib/utils/file/downloadFile.d.ts +2 -0
- package/dist/lib/utils/file/formatBytes.d.ts +1 -0
- package/dist/lib/utils/formatCounterValue.d.ts +21 -0
- package/dist/lib/utils/image/imageConverter.d.ts +23 -0
- package/dist/lib/utils/index.d.ts +2 -0
- package/dist/lib/utils/storybook.d.ts +13 -2
- package/dist/lib/utils/styles.d.ts +9 -0
- package/dist/lib/utils/variants.d.ts +35 -0
- package/dist/lib/utils.d.ts +2 -2
- package/dist/lib/utils.js +25 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/loader-circle-D1YXTEGq.js +14 -0
- package/dist/loader-circle-D1YXTEGq.js.map +1 -0
- package/dist/minus-BltQa7Q2.js +12 -0
- package/dist/minus-BltQa7Q2.js.map +1 -0
- package/dist/normalizeDates-9A3c9WYM.js +32 -0
- package/dist/normalizeDates-9A3c9WYM.js.map +1 -0
- package/dist/providers/component-variant-context/ComponentVariantProvider.d.ts +30 -0
- package/dist/providers/component-variant-context/index.d.ts +1 -0
- package/dist/providers/component-variant-context.d.ts +2 -0
- package/dist/providers/component-variant-context.js +6 -0
- package/dist/providers/component-variant-context.js.map +1 -0
- package/dist/rotate-cw-tYRlcg0g.js +15 -0
- package/dist/rotate-cw-tYRlcg0g.js.map +1 -0
- package/dist/search-CDdgqSGg.js +15 -0
- package/dist/search-CDdgqSGg.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.ts.js +7 -0
- package/dist/src/index.ts.js.map +1 -0
- package/dist/styles-scoped.css +4318 -420
- package/dist/styles.css +4313 -417
- package/dist/theme.css +329 -0
- package/dist/theme.d.ts +1 -0
- package/dist/useBreakpoints-D8wKOvil.js +103 -0
- package/dist/useBreakpoints-D8wKOvil.js.map +1 -0
- package/dist/useDebounce-BRah78CF.js +16 -0
- package/dist/useDebounce-BRah78CF.js.map +1 -0
- package/dist/useFileUpload-iDag0iqM.js +197 -0
- package/dist/useFileUpload-iDag0iqM.js.map +1 -0
- package/dist/useItemsKeyboardNavigation-CmeOR30y.js +62 -0
- package/dist/useItemsKeyboardNavigation-CmeOR30y.js.map +1 -0
- package/dist/useMergeRefs-qoKniYqT.js +19 -0
- package/dist/useMergeRefs-qoKniYqT.js.map +1 -0
- package/dist/usePortalContainer-ae6EzS08.js +39 -0
- package/dist/usePortalContainer-ae6EzS08.js.map +1 -0
- package/dist/vendors/date-fns/index.d.ts +19 -0
- package/dist/vendors/date-fns/locale/en-US/index.d.ts +1 -0
- package/dist/vendors/date-fns/locale/en-US.d.ts +2 -0
- package/dist/vendors/date-fns/locale/en-US.js +372 -0
- package/dist/vendors/date-fns/locale/en-US.js.map +1 -0
- package/dist/vendors/date-fns/locale/ru/index.d.ts +1 -0
- package/dist/vendors/date-fns/locale/ru.d.ts +2 -0
- package/dist/vendors/date-fns/locale/ru.js +569 -0
- package/dist/vendors/date-fns/locale/ru.js.map +1 -0
- package/dist/vendors/date-fns.d.ts +2 -0
- package/dist/vendors/date-fns.js +2 -0
- package/dist/vendors/date-fns.js.map +1 -0
- package/dist/vendors/react-day-picker/index.d.ts +22 -0
- package/dist/vendors/react-day-picker.d.ts +2 -0
- package/dist/vendors/react-day-picker.js +87 -0
- package/dist/vendors/react-day-picker.js.map +1 -0
- package/dist/vendors/react-hook-form/index.d.ts +21 -0
- package/dist/vendors/react-hook-form.d.ts +2 -0
- package/dist/vendors/react-hook-form.js +19 -0
- package/dist/vendors/react-hook-form.js.map +1 -0
- package/dist/vendors/tanstack/react-table/index.d.ts +1 -0
- package/dist/vendors/tanstack/react-table.d.ts +2 -0
- package/dist/vendors/tanstack/react-table.js +2090 -0
- package/dist/vendors/tanstack/react-table.js.map +1 -0
- package/dist/vendors/zod/index.d.ts +14 -0
- package/dist/vendors/zod.d.ts +2 -0
- package/dist/vendors/zod.js +3080 -0
- package/dist/vendors/zod.js.map +1 -0
- package/dist/{x-JgjNP5oH.js → x-tDTt7hTQ.js} +2 -2
- package/dist/{x-JgjNP5oH.js.map → x-tDTt7hTQ.js.map} +1 -1
- package/dist/zod-BMNoK3aM.js +75 -0
- package/dist/zod-BMNoK3aM.js.map +1 -0
- package/package.json +89 -23
- package/tailwind.preset.js +440 -0
- package/dist/Button-Cfe4WIYW.js +0 -57
- package/dist/Button-Cfe4WIYW.js.map +0 -1
- package/dist/ButtonBase-C8kakRHQ.js +0 -184
- package/dist/ButtonBase-C8kakRHQ.js.map +0 -1
- package/dist/CheckboxField-DaRmV9yw.js +0 -251
- package/dist/CheckboxField-DaRmV9yw.js.map +0 -1
- package/dist/Description-g2E6P7Qi.js +0 -37
- package/dist/Description-g2E6P7Qi.js.map +0 -1
- package/dist/Divider-D3NvaU8c.js +0 -46
- package/dist/Divider-D3NvaU8c.js.map +0 -1
- package/dist/Field-CjwIc66I.js +0 -83
- package/dist/Field-CjwIc66I.js.map +0 -1
- package/dist/FieldLabel--NVcQQhJ.js +0 -64
- package/dist/FieldLabel--NVcQQhJ.js.map +0 -1
- package/dist/Icon-CSPBHL_x.js +0 -19
- package/dist/Icon-CSPBHL_x.js.map +0 -1
- package/dist/IconButton-CTxOql_1.js +0 -55
- package/dist/IconButton-CTxOql_1.js.map +0 -1
- package/dist/ScrollShadowContainer-C4qXz8gc.js +0 -849
- package/dist/ScrollShadowContainer-C4qXz8gc.js.map +0 -1
- package/dist/components/background/Background.d.ts +0 -138
- package/dist/components/background/Background.stories.d.ts +0 -6
- package/dist/components/input/secret-input/components/ShowValueToggler.d.ts +0 -7
- package/dist/components/modal/Modal.d.ts +0 -14
- package/dist/components/modal/Modal.stories.d.ts +0 -25
- package/dist/components/modal/components/body/ModalBody.d.ts +0 -2
- package/dist/components/modal/components/footer/ModalFooter.d.ts +0 -2
- package/dist/components/modal/components/header/ModalHeader.d.ts +0 -6
- package/dist/components/modal/index.d.ts +0 -6
- package/dist/components/modal/templates/header-template/ModalHeaderTemplate.d.ts +0 -210
- package/dist/components/modal.d.ts +0 -2
- package/dist/components/modal.js +0 -507
- package/dist/components/modal.js.map +0 -1
- package/dist/components/ui/tooltip.d.ts +0 -7
- package/dist/createLucideIcon-DgrNxRV5.js +0 -112
- package/dist/fonts/inter/InterVariable-Italic.ttf +0 -0
- package/dist/fonts/inter/InterVariable.ttf +0 -0
- package/dist/index-BA36kN2b.js +0 -76
- package/dist/index-BA36kN2b.js.map +0 -1
- package/dist/index-CImD85pK.js +0 -179
- package/dist/index-CImD85pK.js.map +0 -1
- package/dist/index-CR-odn5-.js +0 -2446
- package/dist/index-CR-odn5-.js.map +0 -1
- package/dist/index-CaGtfIqw.js +0 -163
- package/dist/index-CaGtfIqw.js.map +0 -1
- package/dist/index-CfJKNBxG.js +0 -698
- package/dist/index-CfJKNBxG.js.map +0 -1
- package/dist/index-DPws5oAn.js +0 -90
- package/dist/index-DPws5oAn.js.map +0 -1
- package/dist/index-DsEh1WRc.js +0 -1586
- package/dist/index-DsEh1WRc.js.map +0 -1
- package/dist/index-pysSAa5G.js +0 -57
- package/dist/index-pysSAa5G.js.map +0 -1
- package/dist/tooltip-CYQMPCEj.js +0 -365
- package/dist/tooltip-CYQMPCEj.js.map +0 -1
- package/dist/utils-2yE78m5l.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-select.js","sources":["../../src/hooks/useSearchSelect.ts","../../src/components/search-select/components/SearchSelectTextValue.tsx","../../src/components/search-select/components/SearchSelectPlaceholder.tsx","../../src/components/search-select/components/SearchSelectTrigger.tsx","../../src/components/search-select/search-select/components/SearchSelectContent.tsx","../../src/components/search-select/search-select/components/SearchSelectInput.tsx","../../src/components/search-select/search-select/SearchSelect.tsx","../../src/components/search-select/search-select/components/LoadMoreTrigger.tsx","../../src/components/search-select/search-select/utils/fuzzyFilter.ts","../../src/components/search-select/search-select/LazySearchSelect.tsx","../../src/components/search-select/search-select/components/SearchSelectSeparator.tsx","../../src/components/search-select/async-search-select/hooks/useAsyncDataLoader.ts","../../src/components/search-select/async-search-select/components/AsyncSearchSelectContent.tsx","../../src/components/search-select/async-search-select/components/AsyncSearchSelectPopoverContent.tsx","../../src/components/search-select/async-search-select/AsyncSearchSelect.tsx","../../src/components/search-select/multi-select/MultiSelect.tsx"],"sourcesContent":["import { useCallback, useState, useEffect } from \"react\";\r\nimport { useControllableState } from \"./useControllableState\";\r\n\r\nexport interface SearchSelectOption {\r\n\t/** Уникальный идентификатор опции */\r\n\tvalue: string | number;\r\n\t/** Отображаемый текст */\r\n\tlabel: string;\r\n\t/** Состояние отключения опции */\r\n\tdisabled?: boolean;\r\n}\r\n\r\ninterface UseSearchSelectProps<T extends SearchSelectOption = SearchSelectOption> {\r\n\t/** Список опций */\r\n\toptions: T[];\r\n\t/** Текущее выбранное значение (controlled режим) */\r\n\tvalue?: T[\"value\"];\r\n\t/** Значение по умолчанию (uncontrolled режим) */\r\n\tdefaultValue?: T[\"value\"];\r\n\t/** Callback при выборе опции */\r\n\tonChange?: (value: T[\"value\"], option: T) => void;\r\n\t/**\r\n\t * Значение по умолчанию для выбранной опции. Используется, когда выбранная опция\r\n\t * отсутствует в текущем списке options. Это может произойти при изменении фильтра\r\n\t * или при использовании виртуальной (ленивой) загрузки данных.\r\n\t * */\r\n\tvalueOption?: T;\r\n}\r\n\r\nexport const useSearchSelect = <T extends SearchSelectOption = SearchSelectOption>({\r\n\toptions,\r\n\tvalue,\r\n\tdefaultValue,\r\n\tonChange,\r\n\tvalueOption\r\n}: UseSearchSelectProps<T>) => {\r\n\t// Сохраняем выбранную опцию отдельно, чтобы она не терялась при фильтрации\r\n\tconst [selectedOption, setSelectedOption] = useState<T | undefined>(undefined);\r\n\r\n\tconst memoizedOnChange = useCallback(\r\n\t\t(newValue: T[\"value\"] | undefined) => {\r\n\t\t\tif (newValue !== undefined) {\r\n\t\t\t\tconst option = options.find((option) => option.value === newValue) || selectedOption;\r\n\t\t\t\tif (option && option.value === newValue) {\r\n\t\t\t\t\tsetSelectedOption(option);\r\n\t\t\t\t\tonChange?.(newValue, option);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t[onChange, options, selectedOption]\r\n\t);\r\n\r\n\tconst [selectedValue, setSelectedValue] = useControllableState<T[\"value\"] | undefined>({\r\n\t\tvalue,\r\n\t\tdefaultValue,\r\n\t\tonChange: memoizedOnChange\r\n\t});\r\n\r\n\t// Синхронизируем selectedOption с selectedValue при изменении selectedValue или options\r\n\tuseEffect(() => {\r\n\t\tif (selectedValue !== undefined) {\r\n\t\t\t// Если selectedOption уже соответствует selectedValue, ничего не делаем\r\n\t\t\tif (selectedOption && selectedOption.value === selectedValue) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Ищем опцию в текущих options\r\n\t\t\tconst currentOption = options.find((option) => option.value === selectedValue);\r\n\t\t\tif (currentOption) {\r\n\t\t\t\tsetSelectedOption(currentOption);\r\n\t\t\t} else if (valueOption && valueOption.value === selectedValue) {\r\n\t\t\t\tsetSelectedOption(valueOption);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tsetSelectedOption(undefined);\r\n\t\t}\r\n\t}, [selectedValue, options, selectedOption, valueOption]);\r\n\r\n\tconst setSelectedByLabel = useCallback(\r\n\t\t(label: string) => {\r\n\t\t\t// CommandItem работает с label, а не с value, поэтому нужно найти опцию по label\r\n\t\t\tconst option = options.find((option) => option.label === label);\r\n\t\t\tif (option) {\r\n\t\t\t\tsetSelectedValue(option.value);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[setSelectedValue, options]\r\n\t);\r\n\r\n\treturn {\r\n\t\tselectedValue,\r\n\t\tselectedOption,\r\n\t\tsetSelectedByLabel,\r\n\t\tsetSelectedValue\r\n\t};\r\n};\r\n","import React from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\n\r\nconst searchSelectTextValueStyles = tv({\r\n\tbase: \"self-center pl-1.5\"\r\n});\r\n\r\ninterface SearchSelectTextValueProps {\r\n\tchildren: React.ReactNode;\r\n\tclassName?: string;\r\n}\r\n\r\nexport const SearchSelectTextValue: React.FC<SearchSelectTextValueProps> = ({ children, className }) => {\r\n\treturn <span className={searchSelectTextValueStyles({ className })}>{children}</span>;\r\n};\r\n","import React from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\n\r\nconst searchSelectPlaceholderStyles = tv({\r\n\tbase: \"pointer-events-none self-center pl-1.5 text-muted\"\r\n});\r\n\r\ninterface SearchSelectPlaceholderProps {\r\n\tchildren: React.ReactNode;\r\n\tclassName?: string;\r\n}\r\n\r\nexport const SearchSelectPlaceholder: React.FC<SearchSelectPlaceholderProps> = ({ children, className }) => {\r\n\treturn <span className={searchSelectPlaceholderStyles({ className })}>{children}</span>;\r\n};\r\n","import { Icon } from \"@/components/icon/Icon\";\r\nimport { selectTriggerStyles } from \"@/components/select/Select\";\r\nimport { ChevronDownIcon } from \"lucide-react\";\r\nimport React from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { SearchSelectPlaceholder } from \"./SearchSelectPlaceholder\";\r\nimport { SelectTriggerClearButton } from \"@/components/select/components/SelectTriggerClearButton\";\r\n\r\nconst searchSelectTriggerStyles = tv({\r\n\textend: selectTriggerStyles,\r\n\tbase: \"group/search-select-trigger min-h-10 items-start py-[0.3125rem] pl-1.5 pr-3 lg:min-h-9 lg:py-[0.3125rem] lg:pl-1.5 lg:pr-2.5\",\r\n\tslots: {\r\n\t\tbuttonWrapper: \"ml-auto flex gap-2.5 pl-2.5\",\r\n\t\ticonWrapper: \"min-h-7 lg:min-h-6\",\r\n\t\tstartIcon: \"flex min-h-7 items-center pl-1.5 pr-0.5 text-muted lg:min-h-6\",\r\n\t\tclearButton:\r\n\t\t\t\"h-auto p-0 opacity-0 group-hover/search-select-trigger:opacity-100 group-focus-visible/search-select-trigger:opacity-100\"\r\n\t}\r\n});\r\n\r\ninterface SearchSelectTriggerProps extends React.ComponentPropsWithoutRef<\"button\"> {\r\n\t/** Состояние отключения */\r\n\tdisabled?: boolean;\r\n\t/** Состояние ошибки */\r\n\tinvalid?: boolean;\r\n\t/** Текст placeholder */\r\n\tplaceholder?: string;\r\n\t/** Состояние открытия. Используется для проставления accessibility аттрибутов */\r\n\topen?: boolean;\r\n\t/** Иконка, отображаемая в начале текстового поля */\r\n\tstartIcon?: React.ReactNode;\r\n\t/** Callback при очистке значения */\r\n\tonClear?: () => void;\r\n}\r\n\r\n/**\r\n * Компонент отображения триггера для SearchSelect.\r\n * Выполняет роль кнопки, которая открывает Popover с опциями.\r\n * Может отображать значение или placeholder в зависимости от наличия дочерних элементов.\r\n * Не содержит сам триггер, а только стилизует кнопку.\r\n */\r\nexport const SearchSelectTrigger = React.forwardRef<HTMLButtonElement, SearchSelectTriggerProps>(\r\n\t({ className, children, disabled, open, invalid, placeholder, startIcon, onClear, ...props }, ref) => {\r\n\t\tconst styles = searchSelectTriggerStyles({ disabled, invalid });\r\n\r\n\t\treturn (\r\n\t\t\t<button\r\n\t\t\t\t{...props}\r\n\t\t\t\tdisabled={disabled}\r\n\t\t\t\tclassName={styles.base({ className })}\r\n\t\t\t\tref={ref}\r\n\t\t\t\trole=\"combobox\"\r\n\t\t\t\taria-expanded={open}\r\n\t\t\t\taria-invalid={invalid}\r\n\t\t\t\taria-haspopup=\"listbox\"\r\n\t\t\t>\r\n\t\t\t\t{startIcon && <div className={styles.startIcon()}>{startIcon}</div>}\r\n\t\t\t\t{children !== undefined ? children : <SearchSelectPlaceholder>{placeholder}</SearchSelectPlaceholder>}\r\n\t\t\t\t<div className={styles.buttonWrapper()}>\r\n\t\t\t\t\t{onClear && (\r\n\t\t\t\t\t\t<div className={styles.iconWrapper()}>\r\n\t\t\t\t\t\t\t<SelectTriggerClearButton onClear={onClear} className={styles.clearButton()} />\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{!disabled && (\r\n\t\t\t\t\t\t<div className={styles.iconWrapper()}>\r\n\t\t\t\t\t\t\t<Icon icon={ChevronDownIcon} className={styles.icon()} />\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</div>\r\n\t\t\t</button>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nSearchSelectTrigger.displayName = \"SearchSelectTrigger\";\r\n","import { PopoverContent } from \"@/components/popover\";\r\nimport React, { ComponentPropsWithoutRef } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\n\r\ntype SearchSelectContentProps = ComponentPropsWithoutRef<typeof PopoverContent>;\r\n\r\nconst searchSelectContentStyles = tv({\r\n\tbase: \"w-full min-w-[var(--radix-popper-anchor-width)] border-secondary-border p-0\"\r\n});\r\n\r\n/**\r\n * Контейнер содержимого для SearchSelect.\r\n * Обертка вокруг PopoverContent с настроенными стилями и интеграцией с Command.\r\n * Планируется рефакторинг для вынесения input логики.\r\n */\r\nexport const SearchSelectContent = React.forwardRef<React.ElementRef<typeof PopoverContent>, SearchSelectContentProps>(\r\n\t({ className, children, ...props }, ref) => {\r\n\t\treturn (\r\n\t\t\t<PopoverContent ref={ref} className={searchSelectContentStyles({ className })} align=\"start\" {...props}>\r\n\t\t\t\t{children}\r\n\t\t\t</PopoverContent>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nSearchSelectContent.displayName = \"SearchSelectContent\";\r\n","import { CommandInput } from \"@/components/command/Command\";\r\nimport { Command as CommandPrimitive } from \"cmdk\";\r\nimport React from \"react\";\r\n\r\nexport const SearchSelectInput = React.forwardRef<\r\n\tReact.ElementRef<typeof CommandPrimitive.Input>,\r\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\r\n>(({ placeholder = \"Find\", ...props }, ref) => {\r\n\treturn <CommandInput ref={ref} placeholder={placeholder} {...props} />;\r\n});\r\n\r\nSearchSelectInput.displayName = \"SearchSelectInput\";\r\n","import { CheckIcon } from \"lucide-react\";\r\nimport { ComponentPropsWithoutRef, forwardRef, useCallback, useMemo, useState } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { SearchSelectOption, useSearchSelect } from \"../../../hooks/useSearchSelect\";\r\nimport { Command, CommandEmpty, CommandItem, CommandList } from \"../../command/Command\";\r\nimport { Icon } from \"../../icon/Icon\";\r\nimport { Popover, PopoverTrigger } from \"../../popover\";\r\nimport { SearchSelectTextValue } from \"../components/SearchSelectTextValue\";\r\nimport { SearchSelectTrigger } from \"../components/SearchSelectTrigger\";\r\nimport { SearchSelectContent } from \"./components/SearchSelectContent\";\r\nimport { SearchSelectInput } from \"./components/SearchSelectInput\";\r\n\r\nconst searchSelectStyles = tv({ base: \"\" });\r\n\r\nexport type RenderOptionProps<T extends SearchSelectOption = SearchSelectOption> = {\r\n\t/** Отображаемая опция */\r\n\toption: T;\r\n} & (RenderOptionInTriggerProps | RenderOptionInListProps);\r\n\r\nexport type RenderOptionInTriggerProps = {\r\n\t/** Тип рендера. Если `trigger`, то опция рендерится в триггере в качестве текущего значения компонента. */\r\n\ttype: \"trigger\";\r\n};\r\n\r\nexport type RenderOptionInListProps = {\r\n\t/** Тип рендера. Если `list`, то опция рендерится в списке опций. */\r\n\ttype: \"list\";\r\n\t/** Выбрана ли опция в данный момент */\r\n\tisSelected: boolean;\r\n\t/** Отключена ли опция */\r\n\tisDisabled: boolean;\r\n\t/** Текущий поисковый запрос для подсветки совпадений */\r\n\tsearchQuery: string;\r\n\t/** Индекс элемента в списке */\r\n\tindex: number;\r\n};\r\n\r\ntype PopoverProps = ComponentPropsWithoutRef<typeof Popover>;\r\nexport interface SearchSelectProps<T extends SearchSelectOption = SearchSelectOption>\r\n\textends Omit<PopoverProps, \"children\"> {\r\n\t/** Идентификатор поля в форме. Позволяет связать компонент с полем формы. */\r\n\tid?: string;\r\n\t/** Событие blur */\r\n\tonBlur?: (e: React.FocusEvent<HTMLButtonElement>) => void;\r\n\t/** Дополнительные классы для контейнера */\r\n\tclassName?: string;\r\n\t/** Список опций */\r\n\toptions: T[];\r\n\t/** Значение по умолчанию для выбранной опции. Используется, когда выбранная опция\r\n\t * отсутствует в текущем списке options. Это может произойти при изменении фильтра\r\n\t * или при использовании виртуальной (ленивой) загрузки данных.\r\n\t * */\r\n\tvalueOption?: T;\r\n\t/**\r\n\t * Кастомная функция рендера опции.\r\n\t * Используется для отображения как в trigger (type: \"trigger\"), так и в списке (type: \"list\").\r\n\t */\r\n\trenderOption?: (props: RenderOptionProps<T>) => React.ReactNode;\r\n\t/** Текст placeholder, отображается когда ничего не выбрано */\r\n\tplaceholder?: string;\r\n\t/** Текущее выбранное значение (controlled режим) */\r\n\tvalue?: T[\"value\"];\r\n\t/** Значение по умолчанию (uncontrolled режим) */\r\n\tdefaultValue?: T[\"value\"];\r\n\t/** Callback при выборе опции */\r\n\tonChange?: (value: T[\"value\"], option: T) => void;\r\n\t/** Callback при очистке значения */\r\n\tonClear?: () => void;\r\n\t/** Состояние отключения */\r\n\tdisabled?: boolean;\r\n\t/** Состояние ошибки */\r\n\tinvalid?: boolean;\r\n\t/** Текст placeholder для поиска */\r\n\tsearchPlaceholder?: string;\r\n\t/** Текст для пустого состояния */\r\n\temptyText?: string;\r\n\t/** Использовать встроенную фильтрацию cmdk. По умолчанию true */\r\n\tshouldFilter?: boolean;\r\n\t/** Контент, отображаемый в конце списка (например, для триггера загрузки) */\r\n\tfooterContent?: React.ReactNode;\r\n\t/** Callback при изменении поискового запроса */\r\n\tonSearchChange?: (value: string) => void;\r\n\t/** Callback при изменении состояния открытия */\r\n\tonOpenChange?: (open: boolean) => void;\r\n\t/** Иконка, отображаемая в начале поля */\r\n\tstartIcon?: React.ReactNode;\r\n\t/** Скрыть поле поиска */\r\n\thideSearch?: boolean;\r\n}\r\n\r\nexport const SearchSelect = forwardRef(\r\n\t<T extends SearchSelectOption = SearchSelectOption>(\r\n\t\tprops: SearchSelectProps<T>,\r\n\t\tref: React.ForwardedRef<HTMLButtonElement>\r\n\t) => {\r\n\t\tconst {\r\n\t\t\tid,\r\n\t\t\tclassName,\r\n\t\t\toptions,\r\n\t\t\tvalueOption,\r\n\t\t\trenderOption,\r\n\t\t\tplaceholder = \"Выберите значение\",\r\n\t\t\tvalue,\r\n\t\t\tdefaultValue,\r\n\t\t\tonBlur,\r\n\t\t\tonChange,\r\n\t\t\tonClear,\r\n\t\t\tdisabled,\r\n\t\t\tinvalid,\r\n\t\t\tsearchPlaceholder = \"Найти\",\r\n\t\t\temptyText = \"Результатов не найдено\",\r\n\t\t\tshouldFilter = true,\r\n\t\t\tfooterContent,\r\n\t\t\tonSearchChange,\r\n\t\t\tonOpenChange,\r\n\t\t\tstartIcon,\r\n\t\t\thideSearch,\r\n\t\t\t...popoverProps\r\n\t\t} = props;\r\n\r\n\t\tconst [open, setOpen] = useState(false);\r\n\t\tconst [searchQuery, setSearchQuery] = useState(\"\");\r\n\r\n\t\tconst { selectedValue, selectedOption, setSelectedByLabel } = useSearchSelect({\r\n\t\t\toptions,\r\n\t\t\tvalue,\r\n\t\t\tdefaultValue,\r\n\t\t\tvalueOption,\r\n\t\t\tonChange\r\n\t\t});\r\n\r\n\t\tconst handleSelect = useCallback(\r\n\t\t\t(label: string) => {\r\n\t\t\t\tsetSelectedByLabel(label);\r\n\t\t\t\tsetOpen(false);\r\n\t\t\t},\r\n\t\t\t[setSelectedByLabel, setOpen]\r\n\t\t);\r\n\r\n\t\tconst handleSearchChange = useCallback(\r\n\t\t\t(value: string) => {\r\n\t\t\t\tsetSearchQuery(value);\r\n\t\t\t\tonSearchChange?.(value);\r\n\t\t\t},\r\n\t\t\t[onSearchChange]\r\n\t\t);\r\n\r\n\t\tconst handleOpenChange = useCallback(\r\n\t\t\t(open: boolean) => {\r\n\t\t\t\tsetOpen(open);\r\n\t\t\t\tonOpenChange?.(open);\r\n\t\t\t},\r\n\t\t\t[onOpenChange]\r\n\t\t);\r\n\r\n\t\tconst displayValue = useMemo(() => {\r\n\t\t\tif (!selectedOption) return undefined;\r\n\t\t\tif (renderOption) {\r\n\t\t\t\tconst item = renderOption({ option: selectedOption, type: \"trigger\" });\r\n\t\t\t\tif (item !== undefined) {\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn <SearchSelectTextValue>{selectedOption.label}</SearchSelectTextValue>;\r\n\t\t}, [selectedOption, renderOption]);\r\n\r\n\t\tconst renderedOptions = useMemo(() => {\r\n\t\t\treturn options.map((option, index) => {\r\n\t\t\t\tconst isDisabled = option.disabled ?? false;\r\n\t\t\t\tconst isSelected = selectedValue === option.value;\r\n\r\n\t\t\t\tconst renderOptionItem = () => {\r\n\t\t\t\t\tif (renderOption) {\r\n\t\t\t\t\t\tconst customRender = renderOption({\r\n\t\t\t\t\t\t\toption,\r\n\t\t\t\t\t\t\ttype: \"list\",\r\n\t\t\t\t\t\t\tisSelected,\r\n\t\t\t\t\t\t\tisDisabled,\r\n\t\t\t\t\t\t\tsearchQuery,\r\n\t\t\t\t\t\t\tindex\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (customRender !== undefined) {\r\n\t\t\t\t\t\t\treturn customRender;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{option.label}\r\n\t\t\t\t\t\t\t{isSelected && <Icon icon={CheckIcon} className=\"ml-auto\" />}\r\n\t\t\t\t\t\t</>\r\n\t\t\t\t\t);\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<CommandItem\r\n\t\t\t\t\t\tkey={option.value}\r\n\t\t\t\t\t\tvalue={option.label}\r\n\t\t\t\t\t\tonSelect={isDisabled ? undefined : handleSelect}\r\n\t\t\t\t\t\tdisabled={isDisabled}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{renderOptionItem()}\r\n\t\t\t\t\t</CommandItem>\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t}, [options, selectedValue, handleSelect, renderOption, searchQuery]);\r\n\r\n\t\treturn (\r\n\t\t\t<Popover {...popoverProps} open={open} onOpenChange={handleOpenChange}>\r\n\t\t\t\t<div className={searchSelectStyles({ className })}>\r\n\t\t\t\t\t<PopoverTrigger asChild>\r\n\t\t\t\t\t\t<SearchSelectTrigger\r\n\t\t\t\t\t\t\tonClear={displayValue ? onClear : undefined}\r\n\t\t\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\t\t\tinvalid={invalid}\r\n\t\t\t\t\t\t\topen={open}\r\n\t\t\t\t\t\t\tplaceholder={placeholder}\r\n\t\t\t\t\t\t\tid={id}\r\n\t\t\t\t\t\t\tonBlur={onBlur}\r\n\t\t\t\t\t\t\tref={ref}\r\n\t\t\t\t\t\t\tstartIcon={startIcon}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{displayValue}\r\n\t\t\t\t\t\t</SearchSelectTrigger>\r\n\t\t\t\t\t</PopoverTrigger>\r\n\t\t\t\t\t<SearchSelectContent>\r\n\t\t\t\t\t\t<Command shouldFilter={shouldFilter}>\r\n\t\t\t\t\t\t\t{!hideSearch && (\r\n\t\t\t\t\t\t\t\t<SearchSelectInput placeholder={searchPlaceholder} onValueChange={handleSearchChange} />\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t<CommandList key={`list-${searchQuery}`} className=\"p-1\">\r\n\t\t\t\t\t\t\t\t{renderedOptions}\r\n\t\t\t\t\t\t\t\t<CommandEmpty>{emptyText}</CommandEmpty>\r\n\t\t\t\t\t\t\t\t{footerContent}\r\n\t\t\t\t\t\t\t</CommandList>\r\n\t\t\t\t\t\t</Command>\r\n\t\t\t\t\t</SearchSelectContent>\r\n\t\t\t\t</div>\r\n\t\t\t</Popover>\r\n\t\t);\r\n\t}\r\n) as (<T extends SearchSelectOption = SearchSelectOption>(\r\n\tprops: SearchSelectProps<T> & { ref?: React.ForwardedRef<HTMLButtonElement> }\r\n) => React.ReactElement) & { displayName?: string };\r\n\r\nSearchSelect.displayName = \"SearchSelect\";\r\n","import { Loader } from \"@/components/loader\";\r\nimport React, { useEffect, useRef } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\n\r\nconst loadMoreTriggerStyles = tv({\r\n\tbase: \"py-2 text-center text-sm text-muted-foreground\"\r\n});\r\n\r\nexport interface LoadMoreTriggerProps {\r\n\t/** Callback, который вызывается когда триггер становится видимым */\r\n\tonLoad: () => void;\r\n\t/** Есть ли еще элементы для загрузки */\r\n\thasMore: boolean;\r\n\t/** Текст индикатора загрузки */\r\n\tloadingText?: string;\r\n\t/** Дополнительные CSS классы */\r\n\tclassName?: string;\r\n}\r\n\r\n/**\r\n * Компонент для автоматической загрузки дополнительных элементов при прокрутке.\r\n * Отображает индикатор загрузки и автоматически вызывает `onLoad` когда пользователь\r\n * доскроллит до этого элемента.\r\n */\r\nexport const LoadMoreTrigger = React.forwardRef<HTMLDivElement, LoadMoreTriggerProps>(\r\n\t({ onLoad, hasMore, loadingText = \"Загрузка...\", className }, ref) => {\r\n\t\tconst triggerRef = useRef<HTMLDivElement>(null);\r\n\t\tconst styles = loadMoreTriggerStyles({ className });\r\n\r\n\t\tReact.useImperativeHandle(ref, () => triggerRef.current as HTMLDivElement);\r\n\r\n\t\tuseEffect(() => {\r\n\t\t\tconst trigger = triggerRef.current;\r\n\t\t\tif (!trigger || !hasMore) return;\r\n\r\n\t\t\tconst observer = new IntersectionObserver(\r\n\t\t\t\t([entry]) => {\r\n\t\t\t\t\tif (entry.isIntersecting) {\r\n\t\t\t\t\t\tonLoad();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{ rootMargin: \"50px\" }\r\n\t\t\t);\r\n\r\n\t\t\tobserver.observe(trigger);\r\n\r\n\t\t\treturn () => {\r\n\t\t\t\tobserver.disconnect();\r\n\t\t\t};\r\n\t\t}, [onLoad, hasMore]);\r\n\r\n\t\tif (!hasMore) return null;\r\n\r\n\t\treturn (\r\n\t\t\t<div ref={triggerRef} className={styles}>\r\n\t\t\t\t<Loader className=\"flex-row\">{loadingText}</Loader>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nLoadMoreTrigger.displayName = \"LoadMoreTrigger\";\r\n","/**\r\n * Простой fuzzy filter для поиска\r\n * Возвращает число от 0 до 3, где большее число означает лучшее совпадение\r\n */\r\nexport const defaultFuzzyFilter = (value: string, search: string): number => {\r\n\tif (!search.trim()) return 1; // Пустой поиск - показываем все\r\n\r\n\tconst valueLower = value.toLowerCase().trim();\r\n\tconst searchLower = search.toLowerCase().trim();\r\n\r\n\t// Точное совпадение с началом - наивысший приоритет\r\n\tif (valueLower.startsWith(searchLower)) return 3;\r\n\r\n\t// Содержит подстроку - высокий приоритет\r\n\tif (valueLower.includes(searchLower)) return 2;\r\n\r\n\t// Fuzzy match - проверяем, что все символы поиска есть в правильном порядке\r\n\tlet searchIndex = 0;\r\n\tfor (let i = 0; i < valueLower.length && searchIndex < searchLower.length; i++) {\r\n\t\tif (valueLower[i] === searchLower[searchIndex]) {\r\n\t\t\tsearchIndex++;\r\n\t\t}\r\n\t}\r\n\r\n\t// Если нашли все символы поиска в правильном порядке - низкий приоритет\r\n\treturn searchIndex === searchLower.length ? 1 : 0;\r\n};\r\n\r\n/**\r\n * Тип функции фильтрации\r\n */\r\nexport type FilterFunction = (value: string, search: string) => number;\r\n","import { forwardRef, useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport { SearchSelect, SearchSelectProps } from \"./SearchSelect\";\r\nimport { SearchSelectOption } from \"../../../hooks/useSearchSelect\";\r\nimport { LoadMoreTrigger } from \"./components/LoadMoreTrigger\";\r\nimport { defaultFuzzyFilter, FilterFunction } from \"./utils/fuzzyFilter\";\r\n\r\nexport interface LazySearchSelectProps<T extends SearchSelectOption = SearchSelectOption>\r\n\textends Omit<\r\n\t\tSearchSelectProps<T>,\r\n\t\t\"options\" | \"shouldFilter\" | \"footerContent\" | \"onSearchChange\" | \"valueOption\"\r\n\t> {\r\n\t/** Полный список опций */\r\n\toptions: T[];\r\n\t/** Количество элементов на странице */\r\n\tpageSize?: number;\r\n\t/** Кастомная функция фильтрации. По умолчанию используется встроенный fuzzy search */\r\n\tfilter?: FilterFunction;\r\n}\r\n\r\nexport const LazySearchSelect = forwardRef<HTMLButtonElement, LazySearchSelectProps>(\r\n\t<T extends SearchSelectOption = SearchSelectOption>(\r\n\t\tprops: LazySearchSelectProps<T>,\r\n\t\tref: React.ForwardedRef<HTMLButtonElement>\r\n\t) => {\r\n\t\tconst {\r\n\t\t\toptions,\r\n\t\t\tpageSize = 50,\r\n\t\t\tfilter = defaultFuzzyFilter,\r\n\t\t\tdefaultValue,\r\n\t\t\tvalue,\r\n\t\t\t...searchSelectProps\r\n\t\t} = props;\r\n\r\n\t\tconst [visibleCount, setVisibleCount] = useState(pageSize);\r\n\t\tconst [searchQuery, setSearchQuery] = useState(\"\");\r\n\t\tconst [valueOption, setValueOption] = useState<T | undefined>(undefined);\r\n\r\n\t\t// При изменении поиска сбрасываем счетчик видимых элементов\r\n\t\tuseEffect(() => setVisibleCount(pageSize), [searchQuery, pageSize]);\r\n\r\n\t\tuseEffect(() => {\r\n\t\t\tconst currentValue = value || defaultValue;\r\n\t\t\tif (currentValue && !valueOption) {\r\n\t\t\t\tsetValueOption(options.find((option) => option.value === currentValue));\r\n\t\t\t}\r\n\t\t}, [defaultValue, value, options, valueOption]);\r\n\r\n\t\t// Фильтрация и ограничение элементов\r\n\t\tconst { visibleOptions, hasMoreItems } = useMemo(() => {\r\n\t\t\t// Сначала фильтруем и ранжируем по поисковому запросу\r\n\t\t\tconst filteredAndRanked = searchQuery\r\n\t\t\t\t? options\r\n\t\t\t\t\t\t.map((option) => ({\r\n\t\t\t\t\t\t\toption,\r\n\t\t\t\t\t\t\tscore: filter(option.label, searchQuery)\r\n\t\t\t\t\t\t}))\r\n\t\t\t\t\t\t.filter(({ score }) => score > 0) // Убираем элементы с нулевым скором\r\n\t\t\t\t\t\t.sort((a, b) => b.score - a.score) // Сортируем по убыванию скора\r\n\t\t\t\t\t\t.map(({ option }) => option)\r\n\t\t\t\t: options;\r\n\r\n\t\t\t// Затем ограничиваем количество видимых элементов\r\n\t\t\tconst visible = filteredAndRanked.slice(0, visibleCount);\r\n\t\t\tconst hasMore = visibleCount < filteredAndRanked.length;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tvisibleOptions: visible,\r\n\t\t\t\thasMoreItems: hasMore\r\n\t\t\t};\r\n\t\t}, [options, searchQuery, visibleCount, filter]);\r\n\r\n\t\t// Обработчик загрузки следующей порции\r\n\t\tconst handleLoadMore = useCallback(() => {\r\n\t\t\tsetVisibleCount((prev) => prev + pageSize);\r\n\t\t}, [pageSize]);\r\n\r\n\t\tconst handleSearchChange = useCallback((value: string) => {\r\n\t\t\tsetSearchQuery(value);\r\n\t\t}, []);\r\n\r\n\t\t// Сброс поиска при открытии\r\n\t\tconst handleOpenChange = useCallback(\r\n\t\t\t(open: boolean) => {\r\n\t\t\t\tif (open && searchQuery) setSearchQuery(\"\");\r\n\t\t\t},\r\n\t\t\t[searchQuery, setSearchQuery]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<SearchSelect<T>\r\n\t\t\t\t{...searchSelectProps}\r\n\t\t\t\tref={ref}\r\n\t\t\t\toptions={visibleOptions}\r\n\t\t\t\tvalue={value}\r\n\t\t\t\tdefaultValue={defaultValue}\r\n\t\t\t\tvalueOption={valueOption}\r\n\t\t\t\tshouldFilter={false}\r\n\t\t\t\tfooterContent={<LoadMoreTrigger onLoad={handleLoadMore} hasMore={hasMoreItems} />}\r\n\t\t\t\tonSearchChange={handleSearchChange}\r\n\t\t\t\tonOpenChange={handleOpenChange}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n) as (<T extends SearchSelectOption = SearchSelectOption>(\r\n\tprops: LazySearchSelectProps<T> & { ref?: React.ForwardedRef<HTMLButtonElement> }\r\n) => React.ReactElement) & { displayName?: string };\r\n\r\nLazySearchSelect.displayName = \"LazySearchSelect\";\r\n","import React from \"react\";\r\nimport { CommandSeparator } from \"@/components/command/Command\";\r\nimport { ComponentPropsWithoutRef } from \"react\";\r\nimport { Command as CommandPrimitive } from \"cmdk\";\r\n\r\ntype SearchSelectSeparatorProps = ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>;\r\n\r\n/**\r\n * Разделитель для SearchSelect.\r\n * Простая обертка вокруг CommandSeparator.\r\n */\r\nexport const SearchSelectSeparator = React.forwardRef<\r\n\tReact.ElementRef<typeof CommandPrimitive.Separator>,\r\n\tSearchSelectSeparatorProps\r\n>((props, ref) => {\r\n\treturn <CommandSeparator ref={ref} {...props} />;\r\n});\r\n\r\nSearchSelectSeparator.displayName = \"SearchSelectSeparator\";\r\n","import { useCallback, useEffect, useRef, useState } from \"react\";\r\n\r\nexport type LoadingState = \"idle\" | \"loading\" | \"success\" | \"error\";\r\n\r\nexport interface LoadOptionsParams {\r\n\tsearchQuery: string;\r\n\tsignal?: AbortSignal;\r\n}\r\n\r\nexport interface LoadOptionsResult<T> {\r\n\toptions: T[];\r\n}\r\n\r\ninterface UseAsyncDataLoaderOptions<T> {\r\n\t/** Функция загрузки данных */\r\n\tloadOptions: (params: LoadOptionsParams) => Promise<LoadOptionsResult<T>>;\r\n}\r\n\r\ninterface UseAsyncDataLoaderReturn<T> {\r\n\t/** Текущие загруженные элементы */\r\n\toptions: T[];\r\n\t/** Состояние загрузки */\r\n\tloadingState: LoadingState;\r\n\t/** Текст ошибки, если загрузка не удалась */\r\n\terror: string | null;\r\n\t/** Функция загрузки данных */\r\n\tloadData: (query: string) => Promise<void>;\r\n\t/** Функция отмены текущих запросов */\r\n\tcancelRequests: () => void;\r\n}\r\n\r\n/**\r\n * Хук для асинхронной загрузки данных с защитой от race conditions\r\n *\r\n * Решает следующие проблемы:\r\n * - Race conditions при быстром вводе пользователя\r\n * - Мерцание интерфейса из-за множественных запросов\r\n * - Неправильный порядок получения ответов от сервера\r\n * - Обработка отмены запросов при размонтировании компонента\r\n *\r\n * @example\r\n * ```tsx\r\n * const { options, loadingState, loadData } = useAsyncDataLoader({\r\n * loadOptions: async ({ searchQuery }) => {\r\n * const response = await fetch(`/api/search?q=${searchQuery}`);\r\n * return response.json();\r\n * }\r\n * });\r\n *\r\n * // Загрузить данные\r\n * loadData(\"search query\");\r\n * ```\r\n */\r\nexport const useAsyncDataLoader = <T>({ loadOptions }: UseAsyncDataLoaderOptions<T>): UseAsyncDataLoaderReturn<T> => {\r\n\tconst [options, setItems] = useState<T[]>([]);\r\n\tconst [loadingState, setLoadingState] = useState<LoadingState>(\"idle\");\r\n\tconst [error, setError] = useState<string | null>(null);\r\n\r\n\t// Refs для управления race conditions\r\n\tconst abortControllerRef = useRef<AbortController | null>(null);\r\n\tconst requestSequenceRef = useRef(0);\r\n\r\n\t// Функция для отмены предыдущих запросов\r\n\tconst cancelRequests = useCallback(() => {\r\n\t\tif (abortControllerRef.current) {\r\n\t\t\tabortControllerRef.current.abort();\r\n\t\t}\r\n\t}, []);\r\n\r\n\t// Основная функция загрузки данных\r\n\tconst loadData = useCallback(\r\n\t\tasync (query: string) => {\r\n\t\t\t// Отменяем предыдущие запросы\r\n\t\t\tcancelRequests();\r\n\r\n\t\t\t// Увеличиваем sequence для отслеживания порядка\r\n\t\t\tconst currentSequence = ++requestSequenceRef.current;\r\n\r\n\t\t\t// Создаем новый AbortController\r\n\t\t\tconst abortController = new AbortController();\r\n\t\t\tabortControllerRef.current = abortController;\r\n\r\n\t\t\tsetLoadingState(\"loading\");\r\n\t\t\tsetError(null);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst result = await loadOptions({\r\n\t\t\t\t\tsearchQuery: query,\r\n\t\t\t\t\tsignal: abortController.signal\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Проверяем, что запрос еще актуален\r\n\t\t\t\tif (currentSequence !== requestSequenceRef.current) return;\r\n\r\n\t\t\t\tsetItems(result.options);\r\n\t\t\t\tsetLoadingState(\"success\");\r\n\t\t\t} catch (err) {\r\n\t\t\t\t// Игнорируем AbortError - это нормальная отмена\r\n\t\t\t\tif (err instanceof Error && err.name === \"AbortError\") return;\r\n\t\t\t\tif (currentSequence !== requestSequenceRef.current) return;\r\n\r\n\t\t\t\tsetError(err instanceof Error ? err.message : \"Неизвестная ошибка\");\r\n\t\t\t\tsetLoadingState(\"error\");\r\n\t\t\t}\r\n\t\t},\r\n\t\t[loadOptions, cancelRequests]\r\n\t);\r\n\r\n\t// Cleanup при размонтировании компонента\r\n\tuseEffect(() => {\r\n\t\treturn () => cancelRequests();\r\n\t}, [cancelRequests]);\r\n\r\n\treturn {\r\n\t\toptions,\r\n\t\tloadingState,\r\n\t\terror,\r\n\t\tloadData,\r\n\t\tcancelRequests\r\n\t};\r\n};\r\n","import { EmptyState } from \"@/components/empty-state\";\r\nimport { ErrorState } from \"@/components/error-state\";\r\nimport { HintState } from \"@/components/hint-state\";\r\nimport { Loader } from \"@/components/loader\";\r\nimport { CheckIcon } from \"lucide-react\";\r\nimport { useMemo, useCallback } from \"react\";\r\nimport { CommandItem } from \"../../../command/Command\";\r\nimport { Icon } from \"../../../icon/Icon\";\r\nimport type { LoadingState, RenderOptionProps, SearchSelectOption } from \"../types\";\r\nimport React from \"react\";\r\n\r\ninterface AsyncSearchSelectContentProps<T extends SearchSelectOption = SearchSelectOption> {\r\n\t/** Текущие опции для отображения */\r\n\toptions: T[];\r\n\t/** Состояние загрузки */\r\n\tloadingState: LoadingState;\r\n\t/** Текст ошибки, если есть */\r\n\terror: string | null;\r\n\t/** Функция проверки выбранности элемента */\r\n\tisSelected?: (value: T) => boolean;\r\n\t/** Текущий поисковый запрос */\r\n\tsearchQuery: string;\r\n\t/** Режим загрузки */\r\n\tloadMode: \"auto\" | \"input\";\r\n\t/** Минимальная длина запроса для режима input */\r\n\tminInputLength: number;\r\n\t/** Функция обработки выбора опции */\r\n\tonSelect: (label: string) => void;\r\n\t/** Кастомная функция рендера опции */\r\n\trenderOption?: (props: RenderOptionProps<T>) => React.ReactNode;\r\n\t/** Текст во время загрузки */\r\n\tloadingText: string;\r\n\t/** Текст при ошибке загрузки */\r\n\terrorText: string;\r\n\t/** Текст подсказки для ввода */\r\n\tinputHintText: string;\r\n\t/** Текст для пустого состояния */\r\n\temptyText: string;\r\n}\r\n\r\n/**\r\n * Компонент для рендера содержимого AsyncSearchSelect\r\n *\r\n * Отвечает за отображение разных состояний:\r\n * - Загрузка\r\n * - Ошибка\r\n * - Подсказка для ввода\r\n * - Пустое состояние\r\n * - Список опций\r\n */\r\nexport const AsyncSearchSelectContent = <T extends SearchSelectOption = SearchSelectOption>({\r\n\toptions,\r\n\tloadingState,\r\n\terror,\r\n\tisSelected,\r\n\tsearchQuery,\r\n\tloadMode,\r\n\tminInputLength,\r\n\tonSelect,\r\n\trenderOption,\r\n\tloadingText,\r\n\terrorText,\r\n\tinputHintText,\r\n\temptyText\r\n}: AsyncSearchSelectContentProps<T>) => {\r\n\t// Мемоизируем опции с предвычисленным состоянием выбранности\r\n\tconst optionsWithSelection = useMemo(() => {\r\n\t\treturn options.map((option, index) => ({\r\n\t\t\toption,\r\n\t\t\tindex,\r\n\t\t\tisSelected: isSelected?.(option) ?? false,\r\n\t\t\tisDisabled: option.disabled ?? false\r\n\t\t}));\r\n\t}, [options, isSelected]);\r\n\r\n\tconst renderOptionItem = useCallback(\r\n\t\t({\r\n\t\t\toption,\r\n\t\t\tisSelected: selected,\r\n\t\t\tisDisabled: disabled,\r\n\t\t\tindex\r\n\t\t}: {\r\n\t\t\toption: T;\r\n\t\t\tisSelected: boolean;\r\n\t\t\tisDisabled: boolean;\r\n\t\t\tindex: number;\r\n\t\t}) => {\r\n\t\t\tif (renderOption) {\r\n\t\t\t\tconst customRender = renderOption({\r\n\t\t\t\t\toption,\r\n\t\t\t\t\ttype: \"list\",\r\n\t\t\t\t\tisSelected: selected,\r\n\t\t\t\t\tisDisabled: disabled,\r\n\t\t\t\t\tsearchQuery,\r\n\t\t\t\t\tindex\r\n\t\t\t\t});\r\n\t\t\t\tif (customRender !== undefined) {\r\n\t\t\t\t\treturn customRender;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{option.label}\r\n\t\t\t\t\t{selected && <Icon icon={CheckIcon} className=\"ml-auto\" />}\r\n\t\t\t\t</>\r\n\t\t\t);\r\n\t\t},\r\n\t\t[renderOption, searchQuery]\r\n\t);\r\n\r\n\t// Состояние ошибки\r\n\tif (loadingState === \"error\") {\r\n\t\treturn <ErrorState className=\"py-6\">{error || errorText}</ErrorState>;\r\n\t}\r\n\r\n\t// Состояние загрузки\r\n\tif (loadingState === \"loading\") {\r\n\t\treturn <Loader className=\"py-6\">{loadingText}</Loader>;\r\n\t}\r\n\r\n\t// Подсказка для режима input\r\n\tif (loadMode === \"input\" && searchQuery.length < minInputLength) {\r\n\t\treturn <HintState className=\"py-6\">{inputHintText}</HintState>;\r\n\t}\r\n\r\n\t// Пустое состояние\r\n\tif (options.length === 0 && loadingState === \"success\") {\r\n\t\treturn <EmptyState className=\"py-6\">{emptyText}</EmptyState>;\r\n\t}\r\n\r\n\t// Список опций\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{optionsWithSelection.map(({ option, index, isSelected: selected, isDisabled: disabled }) => (\r\n\t\t\t\t<CommandItem\r\n\t\t\t\t\tkey={option.value}\r\n\t\t\t\t\tvalue={option.label}\r\n\t\t\t\t\tonSelect={disabled ? undefined : onSelect}\r\n\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t>\r\n\t\t\t\t\t{renderOptionItem({\r\n\t\t\t\t\t\toption,\r\n\t\t\t\t\t\tisSelected: selected,\r\n\t\t\t\t\t\tisDisabled: disabled,\r\n\t\t\t\t\t\tindex\r\n\t\t\t\t\t})}\r\n\t\t\t\t</CommandItem>\r\n\t\t\t))}\r\n\t\t</>\r\n\t);\r\n};\r\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport { useDebounce } from \"../../../../hooks/useDebounce\";\r\nimport { Command, CommandList } from \"../../../command/Command\";\r\nimport { SearchSelectInput } from \"../../search-select/components/SearchSelectInput\";\r\nimport { useAsyncDataLoader } from \"../hooks/useAsyncDataLoader\";\r\nimport type { AsyncSearchSelectProps, SearchSelectOption } from \"../types\";\r\nimport { AsyncSearchSelectContent } from \"./AsyncSearchSelectContent\";\r\n\r\ninterface AsyncSearchSelectPopoverContentProps<T extends SearchSelectOption = SearchSelectOption>\r\n\textends Pick<\r\n\t\tAsyncSearchSelectProps<T>,\r\n\t\t| \"loadOptions\"\r\n\t\t| \"loadMode\"\r\n\t\t| \"minInputLength\"\r\n\t\t| \"debounceMs\"\r\n\t\t| \"searchPlaceholder\"\r\n\t\t| \"loadingText\"\r\n\t\t| \"errorText\"\r\n\t\t| \"inputHintText\"\r\n\t\t| \"emptyText\"\r\n\t\t| \"renderOption\"\r\n\t\t| \"hideSearch\"\r\n\t> {\r\n\tonSelect: (value: T | null) => void;\r\n\tisSelected?: (value: T) => boolean;\r\n}\r\n\r\nexport const AsyncSearchSelectPopoverContent = <T extends SearchSelectOption = SearchSelectOption>(\r\n\tprops: AsyncSearchSelectPopoverContentProps<T>\r\n) => {\r\n\tconst {\r\n\t\tloadOptions,\r\n\t\tloadMode = \"auto\",\r\n\t\tminInputLength = 3,\r\n\t\tdebounceMs = 300,\r\n\t\tsearchPlaceholder = \"Найти\",\r\n\t\tloadingText = \"Загружаем...\",\r\n\t\terrorText = \"Ошибка загрузки\",\r\n\t\tinputHintText = \"Введите текст для поиска\",\r\n\t\temptyText = \"Результатов не найдено\",\r\n\t\trenderOption,\r\n\t\tonSelect,\r\n\t\tisSelected,\r\n\t\thideSearch\r\n\t} = props;\r\n\r\n\tconst [searchQuery, setSearchQuery] = useState(\"\");\r\n\r\n\t// Дебаунсированный поисковый запрос для загрузки данных\r\n\tconst debouncedSearchQuery = useDebounce(searchQuery, debounceMs);\r\n\r\n\tconst { options, loadingState, error, loadData } = useAsyncDataLoader<T>({\r\n\t\tloadOptions\r\n\t});\r\n\r\n\tconst shouldLoad = useMemo(() => {\r\n\t\tif (loadMode === \"auto\") return true;\r\n\t\tif (loadMode === \"input\") return debouncedSearchQuery.length >= minInputLength;\r\n\t\treturn false;\r\n\t}, [loadMode, debouncedSearchQuery, minInputLength]);\r\n\r\n\t// Загрузка при изменении условий\r\n\tuseEffect(() => {\r\n\t\tif (shouldLoad) loadData(debouncedSearchQuery);\r\n\t}, [shouldLoad, debouncedSearchQuery, loadData]);\r\n\r\n\tconst handleSelect = useCallback(\r\n\t\t(label: string) => {\r\n\t\t\tonSelect(options.find((option) => option.label === label) || null);\r\n\t\t},\r\n\t\t[onSelect, options]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<Command shouldFilter={false}>\r\n\t\t\t{!hideSearch && <SearchSelectInput placeholder={searchPlaceholder} onValueChange={setSearchQuery} />}\r\n\t\t\t<CommandList key={`list-${debouncedSearchQuery}`} className=\"p-1\">\r\n\t\t\t\t<AsyncSearchSelectContent\r\n\t\t\t\t\toptions={options}\r\n\t\t\t\t\tloadingState={loadingState}\r\n\t\t\t\t\terror={error}\r\n\t\t\t\t\tisSelected={isSelected}\r\n\t\t\t\t\tsearchQuery={debouncedSearchQuery}\r\n\t\t\t\t\tloadMode={loadMode}\r\n\t\t\t\t\tminInputLength={minInputLength}\r\n\t\t\t\t\tonSelect={handleSelect}\r\n\t\t\t\t\trenderOption={renderOption}\r\n\t\t\t\t\tloadingText={loadingText}\r\n\t\t\t\t\terrorText={errorText}\r\n\t\t\t\t\tinputHintText={inputHintText}\r\n\t\t\t\t\temptyText={emptyText}\r\n\t\t\t\t/>\r\n\t\t\t</CommandList>\r\n\t\t</Command>\r\n\t);\r\n};\r\n","import { useControllableState } from \"@/hooks/useControllableState\";\r\nimport { useCallback, useMemo, useState } from \"react\";\r\nimport { Popover, PopoverTrigger } from \"../../popover\";\r\nimport { SearchSelectTextValue } from \"../components/SearchSelectTextValue\";\r\nimport { SearchSelectTrigger } from \"../components/SearchSelectTrigger\";\r\nimport { SearchSelectContent } from \"../search-select/components/SearchSelectContent\";\r\nimport { AsyncSearchSelectPopoverContent } from \"./components/AsyncSearchSelectPopoverContent\";\r\nimport type { AsyncSearchSelectProps, SearchSelectOption } from \"./types\";\r\n\r\nexport const AsyncSearchSelect = <T extends SearchSelectOption = SearchSelectOption>(\r\n\tprops: AsyncSearchSelectProps<T>\r\n) => {\r\n\tconst {\r\n\t\trenderOption,\r\n\t\tplaceholder = \"Выберите значение\",\r\n\t\tvalue,\r\n\t\tdefaultValue,\r\n\t\tdisabled,\r\n\t\tinvalid,\r\n\t\tonChange,\r\n\t\tstartIcon,\r\n\t\tonClear,\r\n\t\t...popoverProps\r\n\t} = props;\r\n\r\n\tconst [open, setOpen] = useState(false);\r\n\r\n\tconst [currentOption, setCurrentOption] = useControllableState<T>({\r\n\t\tvalue,\r\n\t\tdefaultValue,\r\n\t\tonChange\r\n\t});\r\n\r\n\tconst displayValue = useMemo(() => {\r\n\t\tif (!currentOption) return undefined;\r\n\t\tif (renderOption) {\r\n\t\t\tconst item = renderOption({ option: currentOption, type: \"trigger\" });\r\n\t\t\tif (item !== undefined) {\r\n\t\t\t\treturn item;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn <SearchSelectTextValue>{currentOption.label}</SearchSelectTextValue>;\r\n\t}, [currentOption, renderOption]);\r\n\r\n\tconst onSelect = useCallback(\r\n\t\t(option: T | null) => {\r\n\t\t\tif (option) setCurrentOption(option);\r\n\t\t\tsetOpen(false);\r\n\t\t},\r\n\t\t[setCurrentOption, setOpen]\r\n\t);\r\n\r\n\tconst isSelected = useCallback(\r\n\t\t(option: T) => {\r\n\t\t\treturn currentOption?.value === option.value;\r\n\t\t},\r\n\t\t[currentOption]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<Popover {...popoverProps} open={open} onOpenChange={setOpen}>\r\n\t\t\t<PopoverTrigger asChild>\r\n\t\t\t\t<SearchSelectTrigger\r\n\t\t\t\t\tplaceholder={placeholder}\r\n\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\tinvalid={invalid}\r\n\t\t\t\t\topen={open}\r\n\t\t\t\t\tstartIcon={startIcon}\r\n\t\t\t\t\tonClear={displayValue ? onClear : undefined}\r\n\t\t\t\t>\r\n\t\t\t\t\t{displayValue}\r\n\t\t\t\t</SearchSelectTrigger>\r\n\t\t\t</PopoverTrigger>\r\n\t\t\t<SearchSelectContent>\r\n\t\t\t\t<AsyncSearchSelectPopoverContent {...props} onSelect={onSelect} isSelected={isSelected} />\r\n\t\t\t</SearchSelectContent>\r\n\t\t</Popover>\r\n\t);\r\n};\r\n","import { useControllableState } from \"@/hooks/useControllableState\";\r\nimport { useItemsKeyboardNavigation } from \"@/hooks/useItemsKeyboardNavigation\";\r\nimport { PopoverProps } from \"@radix-ui/react-popover\";\r\nimport { useCallback, useMemo, useState } from \"react\";\r\nimport { SearchSelectOption } from \"../../../hooks/useSearchSelect\";\r\nimport { Popover, PopoverTrigger } from \"../../popover\";\r\nimport { AsyncSearchSelectPopoverContent } from \"../async-search-select/components/AsyncSearchSelectPopoverContent\";\r\nimport { LoadOptionsParams, LoadOptionsResult } from \"../async-search-select/types\";\r\nimport { SearchSelectTag } from \"../components/SearchSelectTag\";\r\nimport { SearchSelectTrigger } from \"../components/SearchSelectTrigger\";\r\nimport { SearchSelectContent } from \"../search-select/components/SearchSelectContent\";\r\n\r\n/**\r\n * Пропсы для рендера опции в trigger (кнопке)\r\n */\r\nexport type RenderOptionInTriggerProps = {\r\n\ttype: \"trigger\";\r\n\tonClose?: () => void;\r\n};\r\n\r\n/**\r\n * Пропсы для рендера опции в списке\r\n */\r\nexport type RenderOptionInListProps = {\r\n\ttype: \"list\";\r\n\t/** Выбрана ли опция в данный момент */\r\n\tisSelected: boolean;\r\n\t/** Отключена ли опция */\r\n\tisDisabled: boolean;\r\n\t/** Текущий поисковый запрос для подсветки совпадений */\r\n\tsearchQuery: string;\r\n\t/** Индекс элемента в списке */\r\n\tindex: number;\r\n};\r\n\r\n/**\r\n * Объединенный тип для рендера опции\r\n */\r\nexport type RenderOptionProps<T extends SearchSelectOption = SearchSelectOption> = {\r\n\toption: T;\r\n} & (RenderOptionInTriggerProps | RenderOptionInListProps);\r\n\r\nexport interface MultiSelectProps<T extends SearchSelectOption = SearchSelectOption> {\r\n\t/** Дополнительные классы для контейнера */\r\n\tclassName?: string;\r\n\t/** Флаг для отключения компонента */\r\n\tdisabled?: boolean;\r\n\t/** Текст placeholder, отображается когда ничего не выбрано */\r\n\tplaceholder?: string;\r\n\t/** Текущие выбранные опции (controlled режим) */\r\n\tvalue?: T[];\r\n\t/** Опции по умолчанию (uncontrolled режим) */\r\n\tdefaultValue?: T[];\r\n\t/** Callback при изменении выбранных опций */\r\n\tonChange?: (options: T[]) => void;\r\n\t/** Callback при очистке значения */\r\n\tonClear?: () => void;\r\n\t/** Оставлять поповер открытым после выбора элемента */\r\n\tkeepOpenOnSelect?: boolean;\r\n\t/** Обработчик клика по названию выбранного тега */\r\n\tonLabelClick?: (option: T) => void;\r\n\t/** Функция загрузки опций */\r\n\tloadOptions: (params: LoadOptionsParams) => Promise<LoadOptionsResult<T>>;\r\n\t/** Режим загрузки опций */\r\n\tloadMode?: \"auto\" | \"input\";\r\n\t/** Минимальное количество символов для начала загрузки (только для режима \"input\") */\r\n\tminInputLength?: number;\r\n\t/** Задержка перед отправкой запроса в миллисекундах (debounce) */\r\n\tdebounceMs?: number;\r\n\t/** Текст подсказки для режима \"input\", когда пользователь еще не ввел символы */\r\n\tinputHintText?: string;\r\n\t/** Текст во время загрузки */\r\n\tloadingText?: string;\r\n\t/** Текст при ошибке загрузки */\r\n\terrorText?: string;\r\n\t/** Кастомная функция рендера опции */\r\n\trenderOption?: (props: RenderOptionProps<T>) => React.ReactNode;\r\n\t/** Текст placeholder для поиска */\r\n\tsearchPlaceholder?: string;\r\n\t/** Текст для пустого состояния */\r\n\temptyText?: string;\r\n\t/** Дополнительные пропсы для Popover */\r\n\tpopoverProps?: PopoverProps;\r\n\t/** Состояние ошибки */\r\n\tinvalid?: boolean;\r\n\t/** Иконка, отображаемая в начале поля */\r\n\tstartIcon?: React.ReactNode;\r\n\t/** Скрыть поле поиска */\r\n\thideSearch?: boolean;\r\n\t/** Контейнер для портала контента. Если не указан, используется usePortalContainer */\r\n\tportalContainer?: HTMLElement;\r\n}\r\n\r\n/**\r\n * Компонент для множественного выбора элементов из списка\r\n */\r\nexport const MultiSelect = <T extends SearchSelectOption = SearchSelectOption>(props: MultiSelectProps<T>) => {\r\n\tconst {\r\n\t\tclassName,\r\n\t\tplaceholder = \"Выберите значение\",\r\n\t\tvalue,\r\n\t\tdefaultValue,\r\n\t\tonChange,\r\n\t\tdisabled,\r\n\t\tinvalid,\r\n\t\tkeepOpenOnSelect = true,\r\n\t\tonClear,\r\n\t\tonLabelClick,\r\n\t\trenderOption,\r\n\t\tstartIcon,\r\n\t\tportalContainer,\r\n\t\t...popoverProps\r\n\t} = props;\r\n\r\n\tconst [open, setOpen] = useState(false);\r\n\r\n\tconst [selectedOptions, setSelectedOptions] = useControllableState<T[]>({\r\n\t\tvalue,\r\n\t\tdefaultValue,\r\n\t\tonChange\r\n\t});\r\n\r\n\tconst onSelect = useCallback(\r\n\t\t(option: T | null) => {\r\n\t\t\tif (option) {\r\n\t\t\t\tconst isAlreadySelected = selectedOptions?.find((o) => o.value === option.value);\r\n\t\t\t\tif (isAlreadySelected) {\r\n\t\t\t\t\tsetSelectedOptions((prev) => {\r\n\t\t\t\t\t\treturn prev?.filter((o) => o.value !== option.value) || [];\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetSelectedOptions((prev) => {\r\n\t\t\t\t\t\treturn [...(prev || []), option];\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!keepOpenOnSelect) {\r\n\t\t\t\tsetOpen(false);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[selectedOptions, keepOpenOnSelect, setSelectedOptions, setOpen]\r\n\t);\r\n\r\n\tconst handleClose = useCallback(\r\n\t\t(option: T) => {\r\n\t\t\tconst isSelected = selectedOptions?.find((o) => o.value === option.value);\r\n\t\t\tif (isSelected) {\r\n\t\t\t\tsetSelectedOptions((prev) => {\r\n\t\t\t\t\treturn prev?.filter((o) => o.value !== option.value) || [];\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\t[selectedOptions, setSelectedOptions]\r\n\t);\r\n\r\n\tconst isSelected = useCallback(\r\n\t\t(option: T) => {\r\n\t\t\treturn selectedOptions?.some((selectedOption) => selectedOption.value === option.value) ?? false;\r\n\t\t},\r\n\t\t[selectedOptions]\r\n\t);\r\n\r\n\tconst { handleKeyDown, isFocused } = useItemsKeyboardNavigation({\r\n\t\titems: selectedOptions || [],\r\n\t\tonEnter: onLabelClick,\r\n\t\tonDelete: handleClose\r\n\t});\r\n\r\n\tconst displayValue = useMemo(() => {\r\n\t\tif (!selectedOptions || selectedOptions.length === 0) return undefined;\r\n\r\n\t\treturn selectedOptions.map((option, index) => {\r\n\t\t\tif (renderOption) {\r\n\t\t\t\tconst item = renderOption({\r\n\t\t\t\t\toption,\r\n\t\t\t\t\ttype: \"trigger\",\r\n\t\t\t\t\tonClose: () => {\r\n\t\t\t\t\t\thandleClose(option);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tif (item !== undefined) {\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn (\r\n\t\t\t\t<SearchSelectTag\r\n\t\t\t\t\tkey={option.value}\r\n\t\t\t\t\tonLabelClick={(e) => {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tonLabelClick?.(option);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonClose={(e) => {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\thandleClose(option);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tisFocused={isFocused(index)}\r\n\t\t\t\t>\r\n\t\t\t\t\t{option.label}\r\n\t\t\t\t</SearchSelectTag>\r\n\t\t\t);\r\n\t\t});\r\n\t}, [selectedOptions, renderOption, handleClose, onLabelClick, isFocused]);\r\n\r\n\treturn (\r\n\t\t<div className={className}>\r\n\t\t\t<Popover open={open} onOpenChange={setOpen} {...popoverProps}>\r\n\t\t\t\t<PopoverTrigger asChild>\r\n\t\t\t\t\t<SearchSelectTrigger\r\n\t\t\t\t\t\tonKeyDown={handleKeyDown}\r\n\t\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\t\topen={open}\r\n\t\t\t\t\t\tplaceholder={placeholder}\r\n\t\t\t\t\t\tinvalid={invalid}\r\n\t\t\t\t\t\tstartIcon={startIcon}\r\n\t\t\t\t\t\tonClear={onClear}\r\n\t\t\t\t\t\tclassName=\"h-auto lg:h-auto\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{displayValue && <div className=\"flex flex-wrap gap-1.5 pl-1.5 lg:gap-1\">{displayValue}</div>}\r\n\t\t\t\t\t</SearchSelectTrigger>\r\n\t\t\t\t</PopoverTrigger>\r\n\t\t\t\t<SearchSelectContent portalContainer={portalContainer}>\r\n\t\t\t\t\t<AsyncSearchSelectPopoverContent {...props} onSelect={onSelect} isSelected={isSelected} />\r\n\t\t\t\t</SearchSelectContent>\r\n\t\t\t</Popover>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nMultiSelect.displayName = \"MultiSelect\";\r\n"],"names":["useSearchSelect","options","value","defaultValue","onChange","valueOption","selectedOption","setSelectedOption","useState","memoizedOnChange","useCallback","newValue","option","selectedValue","setSelectedValue","useControllableState","useEffect","currentOption","setSelectedByLabel","label","searchSelectTextValueStyles","tv","SearchSelectTextValue","children","className","jsx","searchSelectPlaceholderStyles","SearchSelectPlaceholder","searchSelectTriggerStyles","selectTriggerStyles","SearchSelectTrigger","React","disabled","open","invalid","placeholder","startIcon","onClear","props","ref","styles","jsxs","SelectTriggerClearButton","Icon","ChevronDownIcon","searchSelectContentStyles","SearchSelectContent","PopoverContent","SearchSelectInput","CommandInput","searchSelectStyles","SearchSelect","forwardRef","id","renderOption","onBlur","searchPlaceholder","emptyText","shouldFilter","footerContent","onSearchChange","onOpenChange","hideSearch","popoverProps","setOpen","searchQuery","setSearchQuery","handleSelect","handleSearchChange","handleOpenChange","displayValue","useMemo","item","renderedOptions","index","isDisabled","isSelected","renderOptionItem","customRender","Fragment","CheckIcon","CommandItem","Popover","PopoverTrigger","Command","CommandList","CommandEmpty","loadMoreTriggerStyles","LoadMoreTrigger","onLoad","hasMore","loadingText","triggerRef","useRef","trigger","observer","entry","Loader","defaultFuzzyFilter","search","valueLower","searchLower","searchIndex","i","LazySearchSelect","pageSize","filter","searchSelectProps","visibleCount","setVisibleCount","setValueOption","currentValue","visibleOptions","hasMoreItems","filteredAndRanked","score","a","b","visible","handleLoadMore","prev","SearchSelectSeparator","CommandSeparator","useAsyncDataLoader","loadOptions","setItems","loadingState","setLoadingState","error","setError","abortControllerRef","requestSequenceRef","cancelRequests","loadData","query","currentSequence","abortController","result","err","AsyncSearchSelectContent","loadMode","minInputLength","onSelect","errorText","inputHintText","optionsWithSelection","selected","ErrorState","HintState","EmptyState","AsyncSearchSelectPopoverContent","debounceMs","debouncedSearchQuery","useDebounce","shouldLoad","AsyncSearchSelect","setCurrentOption","MultiSelect","keepOpenOnSelect","onLabelClick","portalContainer","selectedOptions","setSelectedOptions","isAlreadySelected","o","handleClose","handleKeyDown","isFocused","useItemsKeyboardNavigation","SearchSelectTag","e"],"mappings":"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"}
|
|
@@ -1,63 +1,75 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TVConfig } from 'tailwind-variants/dist/config.js';
|
|
1
|
+
import { TVReturnType } from 'tailwind-variants';
|
|
3
2
|
import * as React from "react";
|
|
4
3
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
5
4
|
declare const Select: React.FC<SelectPrimitive.SelectProps>;
|
|
6
5
|
declare const SelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
7
6
|
declare const SelectValue: React.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
|
|
8
|
-
|
|
7
|
+
export interface SelectTriggerVariants {
|
|
8
|
+
invalid?: boolean;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const selectTriggerStyles: TVReturnType<{
|
|
9
12
|
invalid: {
|
|
10
13
|
true: {
|
|
11
|
-
base: string
|
|
14
|
+
base: string;
|
|
12
15
|
};
|
|
13
16
|
};
|
|
14
|
-
|
|
15
|
-
icon: string;
|
|
16
|
-
}, string[], TVConfig<{
|
|
17
|
-
invalid: {
|
|
17
|
+
disabled: {
|
|
18
18
|
true: {
|
|
19
|
-
base: string
|
|
19
|
+
base: string;
|
|
20
|
+
icon: string;
|
|
20
21
|
};
|
|
21
22
|
};
|
|
22
23
|
}, {
|
|
24
|
+
iconWrapper: string;
|
|
25
|
+
icon: string;
|
|
26
|
+
}, string[], {
|
|
23
27
|
invalid: {
|
|
24
28
|
true: {
|
|
25
|
-
base: string
|
|
29
|
+
base: string;
|
|
26
30
|
};
|
|
27
31
|
};
|
|
28
|
-
|
|
29
|
-
invalid: {
|
|
32
|
+
disabled: {
|
|
30
33
|
true: {
|
|
31
|
-
base: string
|
|
34
|
+
base: string;
|
|
35
|
+
icon: string;
|
|
32
36
|
};
|
|
33
37
|
};
|
|
34
38
|
}, {
|
|
39
|
+
iconWrapper: string;
|
|
35
40
|
icon: string;
|
|
36
41
|
}, TVReturnType<{
|
|
37
42
|
invalid: {
|
|
38
43
|
true: {
|
|
39
|
-
base: string
|
|
44
|
+
base: string;
|
|
40
45
|
};
|
|
41
46
|
};
|
|
42
|
-
|
|
43
|
-
icon: string;
|
|
44
|
-
}, string[], TVConfig<{
|
|
45
|
-
invalid: {
|
|
47
|
+
disabled: {
|
|
46
48
|
true: {
|
|
47
|
-
base: string
|
|
49
|
+
base: string;
|
|
50
|
+
icon: string;
|
|
48
51
|
};
|
|
49
52
|
};
|
|
50
53
|
}, {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
54
|
+
iconWrapper: string;
|
|
55
|
+
icon: string;
|
|
56
|
+
}, string[], unknown, unknown, undefined>>;
|
|
57
|
+
declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & SelectTriggerVariants & {
|
|
58
|
+
onClear?: () => void;
|
|
59
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
57
60
|
declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
58
61
|
declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
59
|
-
declare const SelectContent: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> &
|
|
62
|
+
declare const SelectContent: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
63
|
+
/**
|
|
64
|
+
* Контейнер для портала. Если не указан, используется хук usePortalContainer
|
|
65
|
+
* для поиска PortalContainer
|
|
66
|
+
*/
|
|
67
|
+
portalContainer?: HTMLElement;
|
|
68
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
60
69
|
declare const SelectLabel: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
61
70
|
declare const SelectItem: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
62
71
|
declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
63
|
-
|
|
72
|
+
declare const SelectOption: React.ForwardRefExoticComponent<SelectPrimitive.SelectItemProps & React.RefAttributes<HTMLDivElement>>;
|
|
73
|
+
declare const SelectItemText: React.ForwardRefExoticComponent<SelectPrimitive.SelectItemTextProps & React.RefAttributes<HTMLSpanElement>>;
|
|
74
|
+
declare const SelectItemIndicator: React.ForwardRefExoticComponent<SelectPrimitive.SelectItemIndicatorProps & React.RefAttributes<HTMLSpanElement>>;
|
|
75
|
+
export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, SelectOption, SelectItemText, SelectItemIndicator };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ClearButtonProps } from '../../input/components/clear-button/ClearButton';
|
|
2
|
+
type SelectTriggerClearButtonProps = ClearButtonProps & {
|
|
3
|
+
onClear?: () => void;
|
|
4
|
+
};
|
|
5
|
+
export declare const SelectTriggerClearButton: ({ onClear, ...props }: SelectTriggerClearButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton } from './Select';
|
|
1
|
+
export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, SelectOption, SelectItemText, SelectItemIndicator } from './Select';
|