@mari-ui/components 0.0.0-stage → 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/LICENSE +21 -0
- package/README.md +25 -2
- package/dist/accordion.d.ts +1 -0
- package/dist/accordion.js +245 -0
- package/dist/accordion.js.map +1 -0
- package/dist/alert.d.ts +1 -0
- package/dist/alert.js +114 -0
- package/dist/alert.js.map +1 -0
- package/dist/autocomplete.d.ts +1 -0
- package/dist/autocomplete.js +158 -0
- package/dist/autocomplete.js.map +1 -0
- package/dist/avatar.d.ts +1 -0
- package/dist/avatar.js +74 -0
- package/dist/avatar.js.map +1 -0
- package/dist/badge.d.ts +1 -0
- package/dist/badge.js +11 -0
- package/dist/badge.js.map +1 -0
- package/dist/breadcrumb.d.ts +1 -0
- package/dist/breadcrumb.js +141 -0
- package/dist/breadcrumb.js.map +1 -0
- package/dist/button.d.ts +1 -0
- package/dist/button.js +10 -0
- package/dist/button.js.map +1 -0
- package/dist/calendar.d.ts +1 -0
- package/dist/calendar.js +208 -0
- package/dist/calendar.js.map +1 -0
- package/dist/card.d.ts +1 -0
- package/dist/card.js +148 -0
- package/dist/card.js.map +1 -0
- package/dist/carousel.d.ts +1 -0
- package/dist/carousel.js +383 -0
- package/dist/carousel.js.map +1 -0
- package/dist/chart.d.ts +1 -0
- package/dist/chart.js +986 -0
- package/dist/chart.js.map +1 -0
- package/dist/checkbox.d.ts +1 -0
- package/dist/checkbox.js +10 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/chunk-2IEXY3OZ.js +147 -0
- package/dist/chunk-2IEXY3OZ.js.map +1 -0
- package/dist/chunk-3ABWBQCS.js +49 -0
- package/dist/chunk-3ABWBQCS.js.map +1 -0
- package/dist/chunk-47FHUOLT.js +166 -0
- package/dist/chunk-47FHUOLT.js.map +1 -0
- package/dist/chunk-54HHEXXD.js +20 -0
- package/dist/chunk-54HHEXXD.js.map +1 -0
- package/dist/chunk-BDV4GOEN.js +53 -0
- package/dist/chunk-BDV4GOEN.js.map +1 -0
- package/dist/chunk-CYLXW66E.js +449 -0
- package/dist/chunk-CYLXW66E.js.map +1 -0
- package/dist/chunk-DKENCYHA.js +15 -0
- package/dist/chunk-DKENCYHA.js.map +1 -0
- package/dist/chunk-DUCIAQGR.js +67 -0
- package/dist/chunk-DUCIAQGR.js.map +1 -0
- package/dist/chunk-ELHESRRH.js +240 -0
- package/dist/chunk-ELHESRRH.js.map +1 -0
- package/dist/chunk-FFXRFQSU.js +51 -0
- package/dist/chunk-FFXRFQSU.js.map +1 -0
- package/dist/chunk-FNJHS5KQ.js +330 -0
- package/dist/chunk-FNJHS5KQ.js.map +1 -0
- package/dist/chunk-IO4346TF.js +392 -0
- package/dist/chunk-IO4346TF.js.map +1 -0
- package/dist/chunk-IP2J3BWY.js +185 -0
- package/dist/chunk-IP2J3BWY.js.map +1 -0
- package/dist/chunk-JNZODUXP.js +116 -0
- package/dist/chunk-JNZODUXP.js.map +1 -0
- package/dist/chunk-KCYM2JXP.js +202 -0
- package/dist/chunk-KCYM2JXP.js.map +1 -0
- package/dist/chunk-KG6A32KX.js +23 -0
- package/dist/chunk-KG6A32KX.js.map +1 -0
- package/dist/chunk-KSPM2Z3T.js +43 -0
- package/dist/chunk-KSPM2Z3T.js.map +1 -0
- package/dist/chunk-LBQMEHK6.js +54 -0
- package/dist/chunk-LBQMEHK6.js.map +1 -0
- package/dist/chunk-LBXIPDAB.js +50 -0
- package/dist/chunk-LBXIPDAB.js.map +1 -0
- package/dist/chunk-LEOIKO7C.js +144 -0
- package/dist/chunk-LEOIKO7C.js.map +1 -0
- package/dist/chunk-LZHERDNB.js +344 -0
- package/dist/chunk-LZHERDNB.js.map +1 -0
- package/dist/chunk-NPM7IDYV.js +145 -0
- package/dist/chunk-NPM7IDYV.js.map +1 -0
- package/dist/chunk-NS7FKOFI.js +56 -0
- package/dist/chunk-NS7FKOFI.js.map +1 -0
- package/dist/chunk-P7Z5BREP.js +935 -0
- package/dist/chunk-P7Z5BREP.js.map +1 -0
- package/dist/chunk-QDFDMWXD.js +236 -0
- package/dist/chunk-QDFDMWXD.js.map +1 -0
- package/dist/chunk-QNOHFHVL.js +555 -0
- package/dist/chunk-QNOHFHVL.js.map +1 -0
- package/dist/chunk-QZRBO7BE.js +684 -0
- package/dist/chunk-QZRBO7BE.js.map +1 -0
- package/dist/chunk-RAS77O7N.js +81 -0
- package/dist/chunk-RAS77O7N.js.map +1 -0
- package/dist/chunk-RIBB5OJV.js +152 -0
- package/dist/chunk-RIBB5OJV.js.map +1 -0
- package/dist/chunk-S66GKX2W.js +50 -0
- package/dist/chunk-S66GKX2W.js.map +1 -0
- package/dist/chunk-TCYDVNSU.js +13 -0
- package/dist/chunk-TCYDVNSU.js.map +1 -0
- package/dist/chunk-TXRQCHOR.js +401 -0
- package/dist/chunk-TXRQCHOR.js.map +1 -0
- package/dist/chunk-V7KDUUV6.js +101 -0
- package/dist/chunk-V7KDUUV6.js.map +1 -0
- package/dist/chunk-XUKVQO6M.js +31 -0
- package/dist/chunk-XUKVQO6M.js.map +1 -0
- package/dist/chunk-YZ7MDC6B.js +189 -0
- package/dist/chunk-YZ7MDC6B.js.map +1 -0
- package/dist/chunk-ZLPAXPDI.js +69 -0
- package/dist/chunk-ZLPAXPDI.js.map +1 -0
- package/dist/chunk-ZMA7BT2L.js +223 -0
- package/dist/chunk-ZMA7BT2L.js.map +1 -0
- package/dist/chunk-ZXYQ2ZPR.js +79 -0
- package/dist/chunk-ZXYQ2ZPR.js.map +1 -0
- package/dist/color-picker.d.ts +1 -0
- package/dist/color-picker.js +32 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/date-picker.d.ts +1 -0
- package/dist/date-picker.js +826 -0
- package/dist/date-picker.js.map +1 -0
- package/dist/divider.d.ts +1 -0
- package/dist/divider.js +106 -0
- package/dist/divider.js.map +1 -0
- package/dist/drawer.d.ts +1 -0
- package/dist/drawer.js +14 -0
- package/dist/drawer.js.map +1 -0
- package/dist/dropdown.d.ts +1 -0
- package/dist/dropdown.js +23 -0
- package/dist/dropdown.js.map +1 -0
- package/dist/empty.d.ts +1 -0
- package/dist/empty.js +11 -0
- package/dist/empty.js.map +1 -0
- package/dist/field.d.ts +1 -0
- package/dist/field.js +51 -0
- package/dist/field.js.map +1 -0
- package/dist/float-button.d.ts +1 -0
- package/dist/float-button.js +247 -0
- package/dist/float-button.js.map +1 -0
- package/dist/image.d.ts +1 -0
- package/dist/image.js +1727 -0
- package/dist/image.js.map +1 -0
- package/dist/input-number.d.ts +1 -0
- package/dist/input-number.js +12 -0
- package/dist/input-number.js.map +1 -0
- package/dist/input.d.ts +1 -0
- package/dist/input.js +21 -0
- package/dist/input.js.map +1 -0
- package/dist/list.d.ts +1 -0
- package/dist/list.js +270 -0
- package/dist/list.js.map +1 -0
- package/dist/loading.d.ts +1 -0
- package/dist/loading.js +7 -0
- package/dist/loading.js.map +1 -0
- package/dist/logo.d.ts +1 -0
- package/dist/logo.js +38 -0
- package/dist/logo.js.map +1 -0
- package/dist/manifest.json +9006 -0
- package/dist/mari.css +145 -0
- package/dist/masonry.d.ts +1 -0
- package/dist/masonry.js +143 -0
- package/dist/masonry.js.map +1 -0
- package/dist/menu.d.ts +1 -0
- package/dist/menu.js +1682 -0
- package/dist/menu.js.map +1 -0
- package/dist/modal.d.ts +1 -0
- package/dist/modal.js +280 -0
- package/dist/modal.js.map +1 -0
- package/dist/pagination.d.ts +1 -0
- package/dist/pagination.js +11 -0
- package/dist/pagination.js.map +1 -0
- package/dist/popconfirm.d.ts +1 -0
- package/dist/popconfirm.js +110 -0
- package/dist/popconfirm.js.map +1 -0
- package/dist/popover.d.ts +1 -0
- package/dist/popover.js +16 -0
- package/dist/popover.js.map +1 -0
- package/dist/progress.d.ts +1 -0
- package/dist/progress.js +135 -0
- package/dist/progress.js.map +1 -0
- package/dist/qrcode.d.ts +1 -0
- package/dist/qrcode.js +212 -0
- package/dist/qrcode.js.map +1 -0
- package/dist/radio.d.ts +1 -0
- package/dist/radio.js +221 -0
- package/dist/radio.js.map +1 -0
- package/dist/rate.d.ts +1 -0
- package/dist/rate.js +196 -0
- package/dist/rate.js.map +1 -0
- package/dist/segmented.d.ts +1 -0
- package/dist/segmented.js +10 -0
- package/dist/segmented.js.map +1 -0
- package/dist/select.d.ts +1 -0
- package/dist/select.js +18 -0
- package/dist/select.js.map +1 -0
- package/dist/skeleton.d.ts +1 -0
- package/dist/skeleton.js +15 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/slider.d.ts +1 -0
- package/dist/slider.js +401 -0
- package/dist/slider.js.map +1 -0
- package/dist/splitter.d.ts +1 -0
- package/dist/splitter.js +323 -0
- package/dist/splitter.js.map +1 -0
- package/dist/statistic.d.ts +1 -0
- package/dist/statistic.js +299 -0
- package/dist/statistic.js.map +1 -0
- package/dist/steps.d.ts +1 -0
- package/dist/steps.js +395 -0
- package/dist/steps.js.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/switch.d.ts +1 -0
- package/dist/switch.js +172 -0
- package/dist/switch.js.map +1 -0
- package/dist/table.d.ts +1 -0
- package/dist/table.js +471 -0
- package/dist/table.js.map +1 -0
- package/dist/tabs.d.ts +1 -0
- package/dist/tabs.js +446 -0
- package/dist/tabs.js.map +1 -0
- package/dist/tag.d.ts +1 -0
- package/dist/tag.js +9 -0
- package/dist/tag.js.map +1 -0
- package/dist/tailwind.css +13 -0
- package/dist/theme-customizer.d.ts +1 -0
- package/dist/theme-customizer.js +271 -0
- package/dist/theme-customizer.js.map +1 -0
- package/dist/timeline.d.ts +1 -0
- package/dist/timeline.js +176 -0
- package/dist/timeline.js.map +1 -0
- package/dist/toast.d.ts +1 -0
- package/dist/toast.js +17 -0
- package/dist/toast.js.map +1 -0
- package/dist/tooltip.d.ts +1 -0
- package/dist/tooltip.js +10 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tour.d.ts +1 -0
- package/dist/tour.js +253 -0
- package/dist/tour.js.map +1 -0
- package/dist/transfer.d.ts +1 -0
- package/dist/transfer.js +423 -0
- package/dist/transfer.js.map +1 -0
- package/dist/tree-select.d.ts +1 -0
- package/dist/tree-select.js +549 -0
- package/dist/tree-select.js.map +1 -0
- package/dist/tree.d.ts +1 -0
- package/dist/tree.js +23 -0
- package/dist/tree.js.map +1 -0
- package/dist/types/accordion/Accordion.d.ts +16 -0
- package/dist/types/accordion/Accordion.d.ts.map +1 -0
- package/dist/types/accordion/index.d.ts +3 -0
- package/dist/types/accordion/index.d.ts.map +1 -0
- package/dist/types/accordion/types.d.ts +57 -0
- package/dist/types/accordion/types.d.ts.map +1 -0
- package/dist/types/accordion/utils.d.ts +10 -0
- package/dist/types/accordion/utils.d.ts.map +1 -0
- package/dist/types/alert/Alert.d.ts +14 -0
- package/dist/types/alert/Alert.d.ts.map +1 -0
- package/dist/types/alert/index.d.ts +3 -0
- package/dist/types/alert/index.d.ts.map +1 -0
- package/dist/types/alert/types.d.ts +33 -0
- package/dist/types/alert/types.d.ts.map +1 -0
- package/dist/types/autocomplete/AutoComplete.d.ts +16 -0
- package/dist/types/autocomplete/AutoComplete.d.ts.map +1 -0
- package/dist/types/autocomplete/index.d.ts +3 -0
- package/dist/types/autocomplete/index.d.ts.map +1 -0
- package/dist/types/autocomplete/types.d.ts +28 -0
- package/dist/types/autocomplete/types.d.ts.map +1 -0
- package/dist/types/autocomplete/utils.d.ts +14 -0
- package/dist/types/autocomplete/utils.d.ts.map +1 -0
- package/dist/types/avatar/Avatar.d.ts +10 -0
- package/dist/types/avatar/Avatar.d.ts.map +1 -0
- package/dist/types/avatar/index.d.ts +3 -0
- package/dist/types/avatar/index.d.ts.map +1 -0
- package/dist/types/avatar/types.d.ts +29 -0
- package/dist/types/avatar/types.d.ts.map +1 -0
- package/dist/types/avatar/utils.d.ts +12 -0
- package/dist/types/avatar/utils.d.ts.map +1 -0
- package/dist/types/badge/Badge.d.ts +19 -0
- package/dist/types/badge/Badge.d.ts.map +1 -0
- package/dist/types/badge/index.d.ts +3 -0
- package/dist/types/badge/index.d.ts.map +1 -0
- package/dist/types/badge/types.d.ts +38 -0
- package/dist/types/badge/types.d.ts.map +1 -0
- package/dist/types/breadcrumb/Breadcrumb.d.ts +21 -0
- package/dist/types/breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/types/breadcrumb/index.d.ts +3 -0
- package/dist/types/breadcrumb/index.d.ts.map +1 -0
- package/dist/types/breadcrumb/types.d.ts +47 -0
- package/dist/types/breadcrumb/types.d.ts.map +1 -0
- package/dist/types/breadcrumb/utils.d.ts +25 -0
- package/dist/types/breadcrumb/utils.d.ts.map +1 -0
- package/dist/types/button/Button.d.ts +12 -0
- package/dist/types/button/Button.d.ts.map +1 -0
- package/dist/types/button/index.d.ts +3 -0
- package/dist/types/button/index.d.ts.map +1 -0
- package/dist/types/button/types.d.ts +57 -0
- package/dist/types/button/types.d.ts.map +1 -0
- package/dist/types/button/utils.d.ts +10 -0
- package/dist/types/button/utils.d.ts.map +1 -0
- package/dist/types/calendar/Calendar.d.ts +11 -0
- package/dist/types/calendar/Calendar.d.ts.map +1 -0
- package/dist/types/calendar/_components/CalendarPanel.d.ts +36 -0
- package/dist/types/calendar/_components/CalendarPanel.d.ts.map +1 -0
- package/dist/types/calendar/_components/CellGrid.d.ts +32 -0
- package/dist/types/calendar/_components/CellGrid.d.ts.map +1 -0
- package/dist/types/calendar/_components/DayGrid.d.ts +47 -0
- package/dist/types/calendar/_components/DayGrid.d.ts.map +1 -0
- package/dist/types/calendar/index.d.ts +3 -0
- package/dist/types/calendar/index.d.ts.map +1 -0
- package/dist/types/calendar/types.d.ts +49 -0
- package/dist/types/calendar/types.d.ts.map +1 -0
- package/dist/types/card/Card.d.ts +21 -0
- package/dist/types/card/Card.d.ts.map +1 -0
- package/dist/types/card/index.d.ts +3 -0
- package/dist/types/card/index.d.ts.map +1 -0
- package/dist/types/card/types.d.ts +49 -0
- package/dist/types/card/types.d.ts.map +1 -0
- package/dist/types/card/utils.d.ts +17 -0
- package/dist/types/card/utils.d.ts.map +1 -0
- package/dist/types/carousel/Carousel.d.ts +62 -0
- package/dist/types/carousel/Carousel.d.ts.map +1 -0
- package/dist/types/carousel/index.d.ts +4 -0
- package/dist/types/carousel/index.d.ts.map +1 -0
- package/dist/types/carousel/types.d.ts +33 -0
- package/dist/types/carousel/types.d.ts.map +1 -0
- package/dist/types/carousel/utils.d.ts +14 -0
- package/dist/types/carousel/utils.d.ts.map +1 -0
- package/dist/types/chart/_shared/ChartFrame.d.ts +55 -0
- package/dist/types/chart/_shared/ChartFrame.d.ts.map +1 -0
- package/dist/types/chart/_shared/ChartSkeleton.d.ts +41 -0
- package/dist/types/chart/_shared/ChartSkeleton.d.ts.map +1 -0
- package/dist/types/chart/_shared/animation.d.ts +39 -0
- package/dist/types/chart/_shared/animation.d.ts.map +1 -0
- package/dist/types/chart/_shared/cartesian.d.ts +50 -0
- package/dist/types/chart/_shared/cartesian.d.ts.map +1 -0
- package/dist/types/chart/_shared/format.d.ts +10 -0
- package/dist/types/chart/_shared/format.d.ts.map +1 -0
- package/dist/types/chart/_shared/paths.d.ts +20 -0
- package/dist/types/chart/_shared/paths.d.ts.map +1 -0
- package/dist/types/chart/_shared/scale.d.ts +35 -0
- package/dist/types/chart/_shared/scale.d.ts.map +1 -0
- package/dist/types/chart/_shared/storyDocs.d.ts +3 -0
- package/dist/types/chart/_shared/storyDocs.d.ts.map +1 -0
- package/dist/types/chart/_shared/useChartSize.d.ts +17 -0
- package/dist/types/chart/_shared/useChartSize.d.ts.map +1 -0
- package/dist/types/chart/bar-chart/BarChart.d.ts +17 -0
- package/dist/types/chart/bar-chart/BarChart.d.ts.map +1 -0
- package/dist/types/chart/bar-chart/bars.d.ts +21 -0
- package/dist/types/chart/bar-chart/bars.d.ts.map +1 -0
- package/dist/types/chart/gauge/Gauge.d.ts +42 -0
- package/dist/types/chart/gauge/Gauge.d.ts.map +1 -0
- package/dist/types/chart/index.d.ts +12 -0
- package/dist/types/chart/index.d.ts.map +1 -0
- package/dist/types/chart/line-chart/LineChart.d.ts +22 -0
- package/dist/types/chart/line-chart/LineChart.d.ts.map +1 -0
- package/dist/types/chart/pie-chart/PieChart.d.ts +33 -0
- package/dist/types/chart/pie-chart/PieChart.d.ts.map +1 -0
- package/dist/types/chart/sparkline/Sparkline.d.ts +31 -0
- package/dist/types/chart/sparkline/Sparkline.d.ts.map +1 -0
- package/dist/types/chart/storyData.d.ts +36 -0
- package/dist/types/chart/storyData.d.ts.map +1 -0
- package/dist/types/chart/types.d.ts +50 -0
- package/dist/types/chart/types.d.ts.map +1 -0
- package/dist/types/checkbox/Checkbox.d.ts +5 -0
- package/dist/types/checkbox/Checkbox.d.ts.map +1 -0
- package/dist/types/checkbox/index.d.ts +3 -0
- package/dist/types/checkbox/index.d.ts.map +1 -0
- package/dist/types/checkbox/types.d.ts +35 -0
- package/dist/types/checkbox/types.d.ts.map +1 -0
- package/dist/types/checkbox/utils.d.ts +15 -0
- package/dist/types/checkbox/utils.d.ts.map +1 -0
- package/dist/types/color-picker/ColorPicker.d.ts +17 -0
- package/dist/types/color-picker/ColorPicker.d.ts.map +1 -0
- package/dist/types/color-picker/_components/ColorArea.d.ts +19 -0
- package/dist/types/color-picker/_components/ColorArea.d.ts.map +1 -0
- package/dist/types/color-picker/_components/ColorInputs.d.ts +14 -0
- package/dist/types/color-picker/_components/ColorInputs.d.ts.map +1 -0
- package/dist/types/color-picker/_components/ColorPresets.d.ts +9 -0
- package/dist/types/color-picker/_components/ColorPresets.d.ts.map +1 -0
- package/dist/types/color-picker/_components/ColorSlider.d.ts +24 -0
- package/dist/types/color-picker/_components/ColorSlider.d.ts.map +1 -0
- package/dist/types/color-picker/_components/Swatch.d.ts +14 -0
- package/dist/types/color-picker/_components/Swatch.d.ts.map +1 -0
- package/dist/types/color-picker/_components/usePointerDrag.d.ts +18 -0
- package/dist/types/color-picker/_components/usePointerDrag.d.ts.map +1 -0
- package/dist/types/color-picker/index.d.ts +4 -0
- package/dist/types/color-picker/index.d.ts.map +1 -0
- package/dist/types/color-picker/types.d.ts +81 -0
- package/dist/types/color-picker/types.d.ts.map +1 -0
- package/dist/types/color-picker/utils.d.ts +50 -0
- package/dist/types/color-picker/utils.d.ts.map +1 -0
- package/dist/types/date-picker/DatePicker.d.ts +17 -0
- package/dist/types/date-picker/DatePicker.d.ts.map +1 -0
- package/dist/types/date-picker/TimePicker.d.ts +8 -0
- package/dist/types/date-picker/TimePicker.d.ts.map +1 -0
- package/dist/types/date-picker/_components/PickerPanel.d.ts +21 -0
- package/dist/types/date-picker/_components/PickerPanel.d.ts.map +1 -0
- package/dist/types/date-picker/_components/TimePanel.d.ts +13 -0
- package/dist/types/date-picker/_components/TimePanel.d.ts.map +1 -0
- package/dist/types/date-picker/index.d.ts +4 -0
- package/dist/types/date-picker/index.d.ts.map +1 -0
- package/dist/types/date-picker/types.d.ts +89 -0
- package/dist/types/date-picker/types.d.ts.map +1 -0
- package/dist/types/date-picker/usePickerState.d.ts +37 -0
- package/dist/types/date-picker/usePickerState.d.ts.map +1 -0
- package/dist/types/date-picker/utils.d.ts +24 -0
- package/dist/types/date-picker/utils.d.ts.map +1 -0
- package/dist/types/divider/Divider.d.ts +8 -0
- package/dist/types/divider/Divider.d.ts.map +1 -0
- package/dist/types/divider/index.d.ts +3 -0
- package/dist/types/divider/index.d.ts.map +1 -0
- package/dist/types/divider/types.d.ts +25 -0
- package/dist/types/divider/types.d.ts.map +1 -0
- package/dist/types/divider/utils.d.ts +12 -0
- package/dist/types/divider/utils.d.ts.map +1 -0
- package/dist/types/drawer/Drawer.d.ts +27 -0
- package/dist/types/drawer/Drawer.d.ts.map +1 -0
- package/dist/types/drawer/index.d.ts +3 -0
- package/dist/types/drawer/index.d.ts.map +1 -0
- package/dist/types/drawer/types.d.ts +51 -0
- package/dist/types/drawer/types.d.ts.map +1 -0
- package/dist/types/drawer/utils.d.ts +5 -0
- package/dist/types/drawer/utils.d.ts.map +1 -0
- package/dist/types/dropdown/Dropdown.d.ts +6 -0
- package/dist/types/dropdown/Dropdown.d.ts.map +1 -0
- package/dist/types/dropdown/_components/DropdownContent.d.ts +16 -0
- package/dist/types/dropdown/_components/DropdownContent.d.ts.map +1 -0
- package/dist/types/dropdown/_components/DropdownItem.d.ts +18 -0
- package/dist/types/dropdown/_components/DropdownItem.d.ts.map +1 -0
- package/dist/types/dropdown/_components/DropdownTrigger.d.ts +4 -0
- package/dist/types/dropdown/_components/DropdownTrigger.d.ts.map +1 -0
- package/dist/types/dropdown/index.d.ts +6 -0
- package/dist/types/dropdown/index.d.ts.map +1 -0
- package/dist/types/dropdown/types.d.ts +69 -0
- package/dist/types/dropdown/types.d.ts.map +1 -0
- package/dist/types/dropdown/useDropdown.d.ts +44 -0
- package/dist/types/dropdown/useDropdown.d.ts.map +1 -0
- package/dist/types/dropdown/utils.d.ts +13 -0
- package/dist/types/dropdown/utils.d.ts.map +1 -0
- package/dist/types/empty/Empty.d.ts +32 -0
- package/dist/types/empty/Empty.d.ts.map +1 -0
- package/dist/types/empty/index.d.ts +3 -0
- package/dist/types/empty/index.d.ts.map +1 -0
- package/dist/types/field/Field.d.ts +20 -0
- package/dist/types/field/Field.d.ts.map +1 -0
- package/dist/types/field/index.d.ts +3 -0
- package/dist/types/field/index.d.ts.map +1 -0
- package/dist/types/field/types.d.ts +26 -0
- package/dist/types/field/types.d.ts.map +1 -0
- package/dist/types/float-button/BackTop.d.ts +11 -0
- package/dist/types/float-button/BackTop.d.ts.map +1 -0
- package/dist/types/float-button/FloatButton.d.ts +28 -0
- package/dist/types/float-button/FloatButton.d.ts.map +1 -0
- package/dist/types/float-button/FloatButtonGroup.d.ts +11 -0
- package/dist/types/float-button/FloatButtonGroup.d.ts.map +1 -0
- package/dist/types/float-button/index.d.ts +5 -0
- package/dist/types/float-button/index.d.ts.map +1 -0
- package/dist/types/float-button/types.d.ts +73 -0
- package/dist/types/float-button/types.d.ts.map +1 -0
- package/dist/types/float-button/utils.d.ts +14 -0
- package/dist/types/float-button/utils.d.ts.map +1 -0
- package/dist/types/foundations/PersonaDocs.d.ts +11 -0
- package/dist/types/foundations/PersonaDocs.d.ts.map +1 -0
- package/dist/types/foundations/usePersonaTheme.d.ts +17 -0
- package/dist/types/foundations/usePersonaTheme.d.ts.map +1 -0
- package/dist/types/image/Image.d.ts +16 -0
- package/dist/types/image/Image.d.ts.map +1 -0
- package/dist/types/image/ImageGallery.d.ts +82 -0
- package/dist/types/image/ImageGallery.d.ts.map +1 -0
- package/dist/types/image/ImageViewer.d.ts +54 -0
- package/dist/types/image/ImageViewer.d.ts.map +1 -0
- package/dist/types/image/galleryUtils.d.ts +89 -0
- package/dist/types/image/galleryUtils.d.ts.map +1 -0
- package/dist/types/image/index.d.ts +7 -0
- package/dist/types/image/index.d.ts.map +1 -0
- package/dist/types/image/types.d.ts +78 -0
- package/dist/types/image/types.d.ts.map +1 -0
- package/dist/types/image/utils.d.ts +54 -0
- package/dist/types/image/utils.d.ts.map +1 -0
- package/dist/types/image/viewerUtils.d.ts +66 -0
- package/dist/types/image/viewerUtils.d.ts.map +1 -0
- package/dist/types/input/Input.d.ts +5 -0
- package/dist/types/input/Input.d.ts.map +1 -0
- package/dist/types/input/OtpInput.d.ts +41 -0
- package/dist/types/input/OtpInput.d.ts.map +1 -0
- package/dist/types/input/SearchInput.d.ts +25 -0
- package/dist/types/input/SearchInput.d.ts.map +1 -0
- package/dist/types/input/Textarea.d.ts +59 -0
- package/dist/types/input/Textarea.d.ts.map +1 -0
- package/dist/types/input/_components/FieldAdornments.d.ts +22 -0
- package/dist/types/input/_components/FieldAdornments.d.ts.map +1 -0
- package/dist/types/input/_components/OtpSingleField.d.ts +38 -0
- package/dist/types/input/_components/OtpSingleField.d.ts.map +1 -0
- package/dist/types/input/index.d.ts +10 -0
- package/dist/types/input/index.d.ts.map +1 -0
- package/dist/types/input/mention/caret.d.ts +12 -0
- package/dist/types/input/mention/caret.d.ts.map +1 -0
- package/dist/types/input/mention/types.d.ts +45 -0
- package/dist/types/input/mention/types.d.ts.map +1 -0
- package/dist/types/input/mention/useMention.d.ts +16 -0
- package/dist/types/input/mention/useMention.d.ts.map +1 -0
- package/dist/types/input/mention/utils.d.ts +22 -0
- package/dist/types/input/mention/utils.d.ts.map +1 -0
- package/dist/types/input/types.d.ts +97 -0
- package/dist/types/input/types.d.ts.map +1 -0
- package/dist/types/input/utils.d.ts +51 -0
- package/dist/types/input/utils.d.ts.map +1 -0
- package/dist/types/input-number/InputNumber.d.ts +17 -0
- package/dist/types/input-number/InputNumber.d.ts.map +1 -0
- package/dist/types/input-number/index.d.ts +3 -0
- package/dist/types/input-number/index.d.ts.map +1 -0
- package/dist/types/input-number/types.d.ts +53 -0
- package/dist/types/input-number/types.d.ts.map +1 -0
- package/dist/types/input-number/utils.d.ts +42 -0
- package/dist/types/input-number/utils.d.ts.map +1 -0
- package/dist/types/lib/AnimationDemo.d.ts +13 -0
- package/dist/types/lib/AnimationDemo.d.ts.map +1 -0
- package/dist/types/lib/ContentSkeleton.d.ts +21 -0
- package/dist/types/lib/ContentSkeleton.d.ts.map +1 -0
- package/dist/types/lib/FloatingArrow.d.ts +22 -0
- package/dist/types/lib/FloatingArrow.d.ts.map +1 -0
- package/dist/types/lib/SkeletonDemo.d.ts +14 -0
- package/dist/types/lib/SkeletonDemo.d.ts.map +1 -0
- package/dist/types/lib/SkeletonSlot.d.ts +22 -0
- package/dist/types/lib/SkeletonSlot.d.ts.map +1 -0
- package/dist/types/lib/colorClasses.d.ts +57 -0
- package/dist/types/lib/colorClasses.d.ts.map +1 -0
- package/dist/types/lib/date/index.d.ts +51 -0
- package/dist/types/lib/date/index.d.ts.map +1 -0
- package/dist/types/lib/elevationClass.d.ts +10 -0
- package/dist/types/lib/elevationClass.d.ts.map +1 -0
- package/dist/types/lib/fieldContext.d.ts +61 -0
- package/dist/types/lib/fieldContext.d.ts.map +1 -0
- package/dist/types/lib/floating.d.ts +46 -0
- package/dist/types/lib/floating.d.ts.map +1 -0
- package/dist/types/lib/infiniteScroll.d.ts +36 -0
- package/dist/types/lib/infiniteScroll.d.ts.map +1 -0
- package/dist/types/lib/linkBehavior.d.ts +38 -0
- package/dist/types/lib/linkBehavior.d.ts.map +1 -0
- package/dist/types/lib/overlay.d.ts +55 -0
- package/dist/types/lib/overlay.d.ts.map +1 -0
- package/dist/types/lib/sizeClasses.d.ts +49 -0
- package/dist/types/lib/sizeClasses.d.ts.map +1 -0
- package/dist/types/lib/skeleton.d.ts +31 -0
- package/dist/types/lib/skeleton.d.ts.map +1 -0
- package/dist/types/lib/storyMeta.d.ts +85 -0
- package/dist/types/lib/storyMeta.d.ts.map +1 -0
- package/dist/types/lib/storyPhotos.d.ts +31 -0
- package/dist/types/lib/storyPhotos.d.ts.map +1 -0
- package/dist/types/lib/storybookArgTypes.d.ts +20 -0
- package/dist/types/lib/storybookArgTypes.d.ts.map +1 -0
- package/dist/types/lib/useAnimatedValue.d.ts +38 -0
- package/dist/types/lib/useAnimatedValue.d.ts.map +1 -0
- package/dist/types/lib/useFloatingPosition.d.ts +32 -0
- package/dist/types/lib/useFloatingPosition.d.ts.map +1 -0
- package/dist/types/lib/useScrollable.d.ts +13 -0
- package/dist/types/lib/useScrollable.d.ts.map +1 -0
- package/dist/types/list/List.d.ts +23 -0
- package/dist/types/list/List.d.ts.map +1 -0
- package/dist/types/list/index.d.ts +3 -0
- package/dist/types/list/index.d.ts.map +1 -0
- package/dist/types/list/types.d.ts +95 -0
- package/dist/types/list/types.d.ts.map +1 -0
- package/dist/types/list/utils.d.ts +16 -0
- package/dist/types/list/utils.d.ts.map +1 -0
- package/dist/types/loading/Loading.d.ts +5 -0
- package/dist/types/loading/Loading.d.ts.map +1 -0
- package/dist/types/loading/index.d.ts +3 -0
- package/dist/types/loading/index.d.ts.map +1 -0
- package/dist/types/loading/types.d.ts +33 -0
- package/dist/types/loading/types.d.ts.map +1 -0
- package/dist/types/loading/utils.d.ts +15 -0
- package/dist/types/loading/utils.d.ts.map +1 -0
- package/dist/types/logo/Logo.d.ts +11 -0
- package/dist/types/logo/Logo.d.ts.map +1 -0
- package/dist/types/logo/index.d.ts +3 -0
- package/dist/types/logo/index.d.ts.map +1 -0
- package/dist/types/masonry/Masonry.d.ts +15 -0
- package/dist/types/masonry/Masonry.d.ts.map +1 -0
- package/dist/types/masonry/index.d.ts +3 -0
- package/dist/types/masonry/index.d.ts.map +1 -0
- package/dist/types/masonry/types.d.ts +35 -0
- package/dist/types/masonry/types.d.ts.map +1 -0
- package/dist/types/masonry/utils.d.ts +23 -0
- package/dist/types/masonry/utils.d.ts.map +1 -0
- package/dist/types/menu/_shared/MegaPanel.d.ts +20 -0
- package/dist/types/menu/_shared/MegaPanel.d.ts.map +1 -0
- package/dist/types/menu/_shared/MenuLink.d.ts +39 -0
- package/dist/types/menu/_shared/MenuLink.d.ts.map +1 -0
- package/dist/types/menu/_shared/MobileNav.d.ts +31 -0
- package/dist/types/menu/_shared/MobileNav.d.ts.map +1 -0
- package/dist/types/menu/_shared/NavBar.d.ts +49 -0
- package/dist/types/menu/_shared/NavBar.d.ts.map +1 -0
- package/dist/types/menu/_shared/NavDrawer.d.ts +40 -0
- package/dist/types/menu/_shared/NavDrawer.d.ts.map +1 -0
- package/dist/types/menu/_shared/_components/MegaPanelColumn.d.ts +19 -0
- package/dist/types/menu/_shared/_components/MegaPanelColumn.d.ts.map +1 -0
- package/dist/types/menu/_shared/_components/MegaPanelPromoGrid.d.ts +11 -0
- package/dist/types/menu/_shared/_components/MegaPanelPromoGrid.d.ts.map +1 -0
- package/dist/types/menu/_shared/_components/MegaPanelRail.d.ts +30 -0
- package/dist/types/menu/_shared/_components/MegaPanelRail.d.ts.map +1 -0
- package/dist/types/menu/_shared/_components/MobileNavLevel.d.ts +26 -0
- package/dist/types/menu/_shared/_components/MobileNavLevel.d.ts.map +1 -0
- package/dist/types/menu/_shared/index.d.ts +3 -0
- package/dist/types/menu/_shared/index.d.ts.map +1 -0
- package/dist/types/menu/_shared/responsive.d.ts +12 -0
- package/dist/types/menu/_shared/responsive.d.ts.map +1 -0
- package/dist/types/menu/_shared/types.d.ts +17 -0
- package/dist/types/menu/_shared/types.d.ts.map +1 -0
- package/dist/types/menu/_shared/useHoverIntent.d.ts +11 -0
- package/dist/types/menu/_shared/useHoverIntent.d.ts.map +1 -0
- package/dist/types/menu/basic-menu/BasicMenu.d.ts +35 -0
- package/dist/types/menu/basic-menu/BasicMenu.d.ts.map +1 -0
- package/dist/types/menu/basic-menu/_components/BasicMenuItem.d.ts +18 -0
- package/dist/types/menu/basic-menu/_components/BasicMenuItem.d.ts.map +1 -0
- package/dist/types/menu/basic-menu/_components/DropdownSubMenu.d.ts +43 -0
- package/dist/types/menu/basic-menu/_components/DropdownSubMenu.d.ts.map +1 -0
- package/dist/types/menu/basic-menu/_components/SubMenuRow.d.ts +20 -0
- package/dist/types/menu/basic-menu/_components/SubMenuRow.d.ts.map +1 -0
- package/dist/types/menu/basic-menu/index.d.ts +3 -0
- package/dist/types/menu/basic-menu/index.d.ts.map +1 -0
- package/dist/types/menu/index.d.ts +9 -0
- package/dist/types/menu/index.d.ts.map +1 -0
- package/dist/types/menu/mega-menu/MegaMenu.d.ts +20 -0
- package/dist/types/menu/mega-menu/MegaMenu.d.ts.map +1 -0
- package/dist/types/menu/mega-menu/_components/MegaMenuItem.d.ts +38 -0
- package/dist/types/menu/mega-menu/_components/MegaMenuItem.d.ts.map +1 -0
- package/dist/types/menu/mega-menu/index.d.ts +3 -0
- package/dist/types/menu/mega-menu/index.d.ts.map +1 -0
- package/dist/types/menu/sidebar/Sidebar.d.ts +66 -0
- package/dist/types/menu/sidebar/Sidebar.d.ts.map +1 -0
- package/dist/types/menu/sidebar/_components/SidebarButton.d.ts +16 -0
- package/dist/types/menu/sidebar/_components/SidebarButton.d.ts.map +1 -0
- package/dist/types/menu/sidebar/_components/SidebarItem.d.ts +45 -0
- package/dist/types/menu/sidebar/_components/SidebarItem.d.ts.map +1 -0
- package/dist/types/menu/sidebar/_components/SidebarMegaPanel.d.ts +16 -0
- package/dist/types/menu/sidebar/_components/SidebarMegaPanel.d.ts.map +1 -0
- package/dist/types/menu/sidebar/_components/SidebarMenu.d.ts +17 -0
- package/dist/types/menu/sidebar/_components/SidebarMenu.d.ts.map +1 -0
- package/dist/types/menu/sidebar/index.d.ts +3 -0
- package/dist/types/menu/sidebar/index.d.ts.map +1 -0
- package/dist/types/menu/types.d.ts +66 -0
- package/dist/types/menu/types.d.ts.map +1 -0
- package/dist/types/menu/utils.d.ts +38 -0
- package/dist/types/menu/utils.d.ts.map +1 -0
- package/dist/types/modal/Modal.d.ts +22 -0
- package/dist/types/modal/Modal.d.ts.map +1 -0
- package/dist/types/modal/index.d.ts +3 -0
- package/dist/types/modal/index.d.ts.map +1 -0
- package/dist/types/modal/types.d.ts +64 -0
- package/dist/types/modal/types.d.ts.map +1 -0
- package/dist/types/modal/utils.d.ts +10 -0
- package/dist/types/modal/utils.d.ts.map +1 -0
- package/dist/types/pagination/Pagination.d.ts +18 -0
- package/dist/types/pagination/Pagination.d.ts.map +1 -0
- package/dist/types/pagination/index.d.ts +3 -0
- package/dist/types/pagination/index.d.ts.map +1 -0
- package/dist/types/pagination/types.d.ts +64 -0
- package/dist/types/pagination/types.d.ts.map +1 -0
- package/dist/types/pagination/utils.d.ts +41 -0
- package/dist/types/pagination/utils.d.ts.map +1 -0
- package/dist/types/popconfirm/Popconfirm.d.ts +16 -0
- package/dist/types/popconfirm/Popconfirm.d.ts.map +1 -0
- package/dist/types/popconfirm/index.d.ts +3 -0
- package/dist/types/popconfirm/index.d.ts.map +1 -0
- package/dist/types/popconfirm/types.d.ts +35 -0
- package/dist/types/popconfirm/types.d.ts.map +1 -0
- package/dist/types/popover/Popover.d.ts +16 -0
- package/dist/types/popover/Popover.d.ts.map +1 -0
- package/dist/types/popover/index.d.ts +3 -0
- package/dist/types/popover/index.d.ts.map +1 -0
- package/dist/types/popover/types.d.ts +42 -0
- package/dist/types/popover/types.d.ts.map +1 -0
- package/dist/types/progress/Progress.d.ts +15 -0
- package/dist/types/progress/Progress.d.ts.map +1 -0
- package/dist/types/progress/index.d.ts +3 -0
- package/dist/types/progress/index.d.ts.map +1 -0
- package/dist/types/progress/types.d.ts +34 -0
- package/dist/types/progress/types.d.ts.map +1 -0
- package/dist/types/qrcode/QRCode.d.ts +17 -0
- package/dist/types/qrcode/QRCode.d.ts.map +1 -0
- package/dist/types/qrcode/index.d.ts +3 -0
- package/dist/types/qrcode/index.d.ts.map +1 -0
- package/dist/types/qrcode/types.d.ts +49 -0
- package/dist/types/qrcode/types.d.ts.map +1 -0
- package/dist/types/qrcode/utils.d.ts +34 -0
- package/dist/types/qrcode/utils.d.ts.map +1 -0
- package/dist/types/radio/Radio.d.ts +5 -0
- package/dist/types/radio/Radio.d.ts.map +1 -0
- package/dist/types/radio/RadioGroup.d.ts +8 -0
- package/dist/types/radio/RadioGroup.d.ts.map +1 -0
- package/dist/types/radio/index.d.ts +4 -0
- package/dist/types/radio/index.d.ts.map +1 -0
- package/dist/types/radio/types.d.ts +53 -0
- package/dist/types/radio/types.d.ts.map +1 -0
- package/dist/types/radio/utils.d.ts +14 -0
- package/dist/types/radio/utils.d.ts.map +1 -0
- package/dist/types/rate/Rate.d.ts +5 -0
- package/dist/types/rate/Rate.d.ts.map +1 -0
- package/dist/types/rate/index.d.ts +3 -0
- package/dist/types/rate/index.d.ts.map +1 -0
- package/dist/types/rate/types.d.ts +37 -0
- package/dist/types/rate/types.d.ts.map +1 -0
- package/dist/types/rate/utils.d.ts +15 -0
- package/dist/types/rate/utils.d.ts.map +1 -0
- package/dist/types/segmented/Segmented.d.ts +15 -0
- package/dist/types/segmented/Segmented.d.ts.map +1 -0
- package/dist/types/segmented/index.d.ts +3 -0
- package/dist/types/segmented/index.d.ts.map +1 -0
- package/dist/types/segmented/types.d.ts +33 -0
- package/dist/types/segmented/types.d.ts.map +1 -0
- package/dist/types/select/Select.d.ts +17 -0
- package/dist/types/select/Select.d.ts.map +1 -0
- package/dist/types/select/_components/SelectPanel.d.ts +34 -0
- package/dist/types/select/_components/SelectPanel.d.ts.map +1 -0
- package/dist/types/select/index.d.ts +3 -0
- package/dist/types/select/index.d.ts.map +1 -0
- package/dist/types/select/types.d.ts +82 -0
- package/dist/types/select/types.d.ts.map +1 -0
- package/dist/types/select/useSelectState.d.ts +29 -0
- package/dist/types/select/useSelectState.d.ts.map +1 -0
- package/dist/types/select/utils.d.ts +39 -0
- package/dist/types/select/utils.d.ts.map +1 -0
- package/dist/types/skeleton/Skeleton.d.ts +10 -0
- package/dist/types/skeleton/Skeleton.d.ts.map +1 -0
- package/dist/types/skeleton/SkeletonButton.d.ts +13 -0
- package/dist/types/skeleton/SkeletonButton.d.ts.map +1 -0
- package/dist/types/skeleton/SkeletonInput.d.ts +9 -0
- package/dist/types/skeleton/SkeletonInput.d.ts.map +1 -0
- package/dist/types/skeleton/index.d.ts +7 -0
- package/dist/types/skeleton/index.d.ts.map +1 -0
- package/dist/types/skeleton/types.d.ts +46 -0
- package/dist/types/skeleton/types.d.ts.map +1 -0
- package/dist/types/skeleton/utils.d.ts +12 -0
- package/dist/types/skeleton/utils.d.ts.map +1 -0
- package/dist/types/slider/Slider.d.ts +5 -0
- package/dist/types/slider/Slider.d.ts.map +1 -0
- package/dist/types/slider/index.d.ts +3 -0
- package/dist/types/slider/index.d.ts.map +1 -0
- package/dist/types/slider/types.d.ts +52 -0
- package/dist/types/slider/types.d.ts.map +1 -0
- package/dist/types/slider/utils.d.ts +15 -0
- package/dist/types/slider/utils.d.ts.map +1 -0
- package/dist/types/splitter/Splitter.d.ts +22 -0
- package/dist/types/splitter/Splitter.d.ts.map +1 -0
- package/dist/types/splitter/index.d.ts +3 -0
- package/dist/types/splitter/index.d.ts.map +1 -0
- package/dist/types/splitter/types.d.ts +50 -0
- package/dist/types/splitter/types.d.ts.map +1 -0
- package/dist/types/splitter/utils.d.ts +33 -0
- package/dist/types/splitter/utils.d.ts.map +1 -0
- package/dist/types/statistic/Statistic.d.ts +23 -0
- package/dist/types/statistic/Statistic.d.ts.map +1 -0
- package/dist/types/statistic/index.d.ts +3 -0
- package/dist/types/statistic/index.d.ts.map +1 -0
- package/dist/types/statistic/types.d.ts +72 -0
- package/dist/types/statistic/types.d.ts.map +1 -0
- package/dist/types/statistic/utils.d.ts +34 -0
- package/dist/types/statistic/utils.d.ts.map +1 -0
- package/dist/types/steps/Steps.d.ts +5 -0
- package/dist/types/steps/Steps.d.ts.map +1 -0
- package/dist/types/steps/_components/StepsContent.d.ts +19 -0
- package/dist/types/steps/_components/StepsContent.d.ts.map +1 -0
- package/dist/types/steps/index.d.ts +5 -0
- package/dist/types/steps/index.d.ts.map +1 -0
- package/dist/types/steps/types.d.ts +90 -0
- package/dist/types/steps/types.d.ts.map +1 -0
- package/dist/types/steps/utils.d.ts +25 -0
- package/dist/types/steps/utils.d.ts.map +1 -0
- package/dist/types/switch/Switch.d.ts +14 -0
- package/dist/types/switch/Switch.d.ts.map +1 -0
- package/dist/types/switch/index.d.ts +3 -0
- package/dist/types/switch/index.d.ts.map +1 -0
- package/dist/types/switch/types.d.ts +19 -0
- package/dist/types/switch/types.d.ts.map +1 -0
- package/dist/types/switch/utils.d.ts +11 -0
- package/dist/types/switch/utils.d.ts.map +1 -0
- package/dist/types/table/Table.d.ts +26 -0
- package/dist/types/table/Table.d.ts.map +1 -0
- package/dist/types/table/_components/TableAccordion.d.ts +16 -0
- package/dist/types/table/_components/TableAccordion.d.ts.map +1 -0
- package/dist/types/table/_components/TableBody.d.ts +16 -0
- package/dist/types/table/_components/TableBody.d.ts.map +1 -0
- package/dist/types/table/_components/TableCellSkeleton.d.ts +12 -0
- package/dist/types/table/_components/TableCellSkeleton.d.ts.map +1 -0
- package/dist/types/table/_components/TableEditDrawer.d.ts +18 -0
- package/dist/types/table/_components/TableEditDrawer.d.ts.map +1 -0
- package/dist/types/table/_components/TableHeader.d.ts +19 -0
- package/dist/types/table/_components/TableHeader.d.ts.map +1 -0
- package/dist/types/table/_components/TableInfoValue.d.ts +17 -0
- package/dist/types/table/_components/TableInfoValue.d.ts.map +1 -0
- package/dist/types/table/_components/TablePagination.d.ts +21 -0
- package/dist/types/table/_components/TablePagination.d.ts.map +1 -0
- package/dist/types/table/_components/TableRowActions.d.ts +22 -0
- package/dist/types/table/_components/TableRowActions.d.ts.map +1 -0
- package/dist/types/table/index.d.ts +3 -0
- package/dist/types/table/index.d.ts.map +1 -0
- package/dist/types/table/types.d.ts +101 -0
- package/dist/types/table/types.d.ts.map +1 -0
- package/dist/types/table/utils.d.ts +27 -0
- package/dist/types/table/utils.d.ts.map +1 -0
- package/dist/types/tabs/Tabs.d.ts +13 -0
- package/dist/types/tabs/Tabs.d.ts.map +1 -0
- package/dist/types/tabs/_components/TabsContent.d.ts +9 -0
- package/dist/types/tabs/_components/TabsContent.d.ts.map +1 -0
- package/dist/types/tabs/_components/TabsList.d.ts +16 -0
- package/dist/types/tabs/_components/TabsList.d.ts.map +1 -0
- package/dist/types/tabs/_components/TabsTrigger.d.ts +12 -0
- package/dist/types/tabs/_components/TabsTrigger.d.ts.map +1 -0
- package/dist/types/tabs/index.d.ts +6 -0
- package/dist/types/tabs/index.d.ts.map +1 -0
- package/dist/types/tabs/types.d.ts +91 -0
- package/dist/types/tabs/types.d.ts.map +1 -0
- package/dist/types/tabs/useTabs.d.ts +10 -0
- package/dist/types/tabs/useTabs.d.ts.map +1 -0
- package/dist/types/tabs/utils.d.ts +20 -0
- package/dist/types/tabs/utils.d.ts.map +1 -0
- package/dist/types/tag/Tag.d.ts +5 -0
- package/dist/types/tag/Tag.d.ts.map +1 -0
- package/dist/types/tag/index.d.ts +3 -0
- package/dist/types/tag/index.d.ts.map +1 -0
- package/dist/types/tag/types.d.ts +18 -0
- package/dist/types/tag/types.d.ts.map +1 -0
- package/dist/types/tag/utils.d.ts +13 -0
- package/dist/types/tag/utils.d.ts.map +1 -0
- package/dist/types/theme-customizer/ThemeCustomizer.d.ts +17 -0
- package/dist/types/theme-customizer/ThemeCustomizer.d.ts.map +1 -0
- package/dist/types/theme-customizer/applyTheme.d.ts +16 -0
- package/dist/types/theme-customizer/applyTheme.d.ts.map +1 -0
- package/dist/types/theme-customizer/index.d.ts +8 -0
- package/dist/types/theme-customizer/index.d.ts.map +1 -0
- package/dist/types/theme-customizer/types.d.ts +37 -0
- package/dist/types/theme-customizer/types.d.ts.map +1 -0
- package/dist/types/timeline/Timeline.d.ts +15 -0
- package/dist/types/timeline/Timeline.d.ts.map +1 -0
- package/dist/types/timeline/index.d.ts +3 -0
- package/dist/types/timeline/index.d.ts.map +1 -0
- package/dist/types/timeline/types.d.ts +53 -0
- package/dist/types/timeline/types.d.ts.map +1 -0
- package/dist/types/timeline/utils.d.ts +13 -0
- package/dist/types/timeline/utils.d.ts.map +1 -0
- package/dist/types/toast/Toast.d.ts +19 -0
- package/dist/types/toast/Toast.d.ts.map +1 -0
- package/dist/types/toast/index.d.ts +4 -0
- package/dist/types/toast/index.d.ts.map +1 -0
- package/dist/types/toast/types.d.ts +43 -0
- package/dist/types/toast/types.d.ts.map +1 -0
- package/dist/types/toast/useToast.d.ts +26 -0
- package/dist/types/toast/useToast.d.ts.map +1 -0
- package/dist/types/toast/utils.d.ts +12 -0
- package/dist/types/toast/utils.d.ts.map +1 -0
- package/dist/types/tooltip/Tooltip.d.ts +5 -0
- package/dist/types/tooltip/Tooltip.d.ts.map +1 -0
- package/dist/types/tooltip/index.d.ts +3 -0
- package/dist/types/tooltip/index.d.ts.map +1 -0
- package/dist/types/tooltip/types.d.ts +32 -0
- package/dist/types/tooltip/types.d.ts.map +1 -0
- package/dist/types/tooltip/utils.d.ts +12 -0
- package/dist/types/tooltip/utils.d.ts.map +1 -0
- package/dist/types/tour/Tour.d.ts +18 -0
- package/dist/types/tour/Tour.d.ts.map +1 -0
- package/dist/types/tour/index.d.ts +3 -0
- package/dist/types/tour/index.d.ts.map +1 -0
- package/dist/types/tour/types.d.ts +46 -0
- package/dist/types/tour/types.d.ts.map +1 -0
- package/dist/types/tour/utils.d.ts +18 -0
- package/dist/types/tour/utils.d.ts.map +1 -0
- package/dist/types/transfer/Transfer.d.ts +16 -0
- package/dist/types/transfer/Transfer.d.ts.map +1 -0
- package/dist/types/transfer/_components/TransferList.d.ts +32 -0
- package/dist/types/transfer/_components/TransferList.d.ts.map +1 -0
- package/dist/types/transfer/index.d.ts +3 -0
- package/dist/types/transfer/index.d.ts.map +1 -0
- package/dist/types/transfer/types.d.ts +67 -0
- package/dist/types/transfer/types.d.ts.map +1 -0
- package/dist/types/transfer/utils.d.ts +34 -0
- package/dist/types/transfer/utils.d.ts.map +1 -0
- package/dist/types/tree/Tree.d.ts +59 -0
- package/dist/types/tree/Tree.d.ts.map +1 -0
- package/dist/types/tree/index.d.ts +5 -0
- package/dist/types/tree/index.d.ts.map +1 -0
- package/dist/types/tree/types.d.ts +92 -0
- package/dist/types/tree/types.d.ts.map +1 -0
- package/dist/types/tree/utils.d.ts +66 -0
- package/dist/types/tree/utils.d.ts.map +1 -0
- package/dist/types/tree-select/TreeSelect.d.ts +18 -0
- package/dist/types/tree-select/TreeSelect.d.ts.map +1 -0
- package/dist/types/tree-select/_components/TreeSelectPanel.d.ts +27 -0
- package/dist/types/tree-select/_components/TreeSelectPanel.d.ts.map +1 -0
- package/dist/types/tree-select/index.d.ts +3 -0
- package/dist/types/tree-select/index.d.ts.map +1 -0
- package/dist/types/tree-select/types.d.ts +87 -0
- package/dist/types/tree-select/types.d.ts.map +1 -0
- package/dist/types/tree-select/useTreeSelectState.d.ts +38 -0
- package/dist/types/tree-select/useTreeSelectState.d.ts.map +1 -0
- package/dist/types/tree-select/utils.d.ts +28 -0
- package/dist/types/tree-select/utils.d.ts.map +1 -0
- package/dist/types/typewriter/Typewriter.d.ts +16 -0
- package/dist/types/typewriter/Typewriter.d.ts.map +1 -0
- package/dist/types/typewriter/index.d.ts +3 -0
- package/dist/types/typewriter/index.d.ts.map +1 -0
- package/dist/types/typewriter/types.d.ts +33 -0
- package/dist/types/typewriter/types.d.ts.map +1 -0
- package/dist/types/typewriter/useTypewriter.d.ts +29 -0
- package/dist/types/typewriter/useTypewriter.d.ts.map +1 -0
- package/dist/types/typography/Typography.d.ts +6 -0
- package/dist/types/typography/Typography.d.ts.map +1 -0
- package/dist/types/typography/index.d.ts +3 -0
- package/dist/types/typography/index.d.ts.map +1 -0
- package/dist/types/typography/types.d.ts +38 -0
- package/dist/types/typography/types.d.ts.map +1 -0
- package/dist/types/typography/utils.d.ts +10 -0
- package/dist/types/typography/utils.d.ts.map +1 -0
- package/dist/types/upload/Upload.d.ts +5 -0
- package/dist/types/upload/Upload.d.ts.map +1 -0
- package/dist/types/upload/_components/List.d.ts +15 -0
- package/dist/types/upload/_components/List.d.ts.map +1 -0
- package/dist/types/upload/_components/ReviewList.d.ts +17 -0
- package/dist/types/upload/_components/ReviewList.d.ts.map +1 -0
- package/dist/types/upload/_components/UploadDragDropButton.d.ts +16 -0
- package/dist/types/upload/_components/UploadDragDropButton.d.ts.map +1 -0
- package/dist/types/upload/_components/UploadListButton.d.ts +7 -0
- package/dist/types/upload/_components/UploadListButton.d.ts.map +1 -0
- package/dist/types/upload/_components/UploadReviewButton.d.ts +14 -0
- package/dist/types/upload/_components/UploadReviewButton.d.ts.map +1 -0
- package/dist/types/upload/index.d.ts +3 -0
- package/dist/types/upload/index.d.ts.map +1 -0
- package/dist/types/upload/types.d.ts +30 -0
- package/dist/types/upload/types.d.ts.map +1 -0
- package/dist/types/upload/useUpload.d.ts +24 -0
- package/dist/types/upload/useUpload.d.ts.map +1 -0
- package/dist/types/upload/utils.d.ts +23 -0
- package/dist/types/upload/utils.d.ts.map +1 -0
- package/dist/typewriter.d.ts +1 -0
- package/dist/typewriter.js +139 -0
- package/dist/typewriter.js.map +1 -0
- package/dist/typography.d.ts +1 -0
- package/dist/typography.js +81 -0
- package/dist/typography.js.map +1 -0
- package/dist/upload.d.ts +1 -0
- package/dist/upload.js +370 -0
- package/dist/upload.js.map +1 -0
- package/package.json +325 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/input/Input.tsx","../src/input/mention/useMention.tsx","../src/input/mention/caret.ts","../src/input/mention/utils.ts","../src/input/Textarea.tsx","../src/input/OtpInput.tsx","../src/input/_components/OtpSingleField.tsx","../src/input/SearchInput.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { forwardRef, useState } from \"react\";\nimport { InputMask } from \"@react-input/mask\";\nimport { skeletonBoxProps } from \"../lib/skeleton\";\nimport { touchTargetClass } from \"../lib/sizeClasses\";\nimport { cn, useControllableState } from \"@mari-ui/core\";\nimport { useFieldControl } from \"../lib/fieldContext\";\nimport type { InputProps } from \"./types\";\nimport { useMention } from \"./mention/useMention\";\nimport { ClearButton, clearIconOf, PasswordToggle } from \"./_components/FieldAdornments\";\nimport {\n FIELD_BASE_CLASS,\n FIELD_DISABLED_CLASS,\n FIELD_MOBILE_TEXT_CLASS,\n getShapeClasses,\n getSizeClasses,\n getVariantClasses,\n clearNativeValue,\n isClearable,\n} from \"./utils\";\n\nexport type { InputProps };\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>((outerProps, ref) => {\n // Field içindeyse id / aria-describedby / hata / required / disabled oradan tamamlanır.\n return <InputInner {...useFieldControl(outerProps)} forwardedRef={ref} />;\n});\n\nInput.displayName = \"Input\";\n\nconst InputInner = (\n {\n forwardedRef: ref,\n placeholder,\n allowClear = false,\n clearLabel = \"Temizle\",\n skeleton = false,\n classNames = {},\n className = \"\",\n style,\n count,\n defaultValue = \"\",\n disabled = false,\n id,\n maxLength,\n icon,\n iconPosition = \"start\",\n showCount,\n color,\n size = \"md\",\n shape = \"default\",\n type = \"text\",\n value,\n variant = \"outline\",\n onChange,\n onPressEnter,\n onClear,\n onFocus,\n onBlur,\n onKeyDown,\n onInput,\n onPaste,\n mask,\n replacement = { _: /\\d/ },\n visibilityToggle,\n visibilityIconRender,\n max,\n min,\n mentions,\n ...nativeProps\n }: InputProps & { forwardedRef: React.ForwardedRef<HTMLInputElement> }\n ) => {\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n const setRefs = (el: HTMLInputElement | null) => {\n innerRef.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n };\n // `color` varsayılansız: verilmezse dinlenmede nötr, odakta primary (bkz. `getVariantClasses`).\n // `error` rengi aynı zamanda gerçek bir doğrulama durumudur — ekran\n // okuyucuya da bildirilsin diye `aria-invalid` otomatik eklenir\n // (tüketici zaten kendi `aria-invalid`'ini verdiyse o kazanır).\n const ariaInvalid = nativeProps[\"aria-invalid\"] ?? (color === \"error\" || undefined);\n // `onChange` burada hook'a geçirilmiyor — tam ChangeEvent'i tüketiciye\n // iletmek için `handleChange` içinde ayrıca çağrılıyor.\n const [currentValue, setCurrentValue] = useControllableState<string>({ value, defaultValue });\n const [passwordVisible, setPasswordVisible] = useState(false);\n\n const showPasswordToggle = type === \"password\" && visibilityToggle !== false;\n\n // İç içe ternary yerine ayrık if — SonarJS'in `no-nested-conditional`\n // kuralı bunu okunurluk için haklı olarak istiyordu (Faz 8).\n let inputType = type;\n if (showPasswordToggle) inputType = passwordVisible ? \"text\" : \"password\";\n const charCount = currentValue.length;\n // Ayrık değişken — iç içe template literal yerine (Faz 8, SonarJS `no-nested-template-literals`).\n const countLabel = maxLength ? `${charCount} / ${maxLength}` : `${charCount}`;\n const showClear = isClearable(allowClear) && Boolean(currentValue) && !disabled;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(e.target.value);\n onChange?.(e);\n };\n\n // Maskeli alanda bahsetme yok (maske metni yeniden biçimlendirir).\n const mention = useMention(mask ? undefined : mentions, innerRef, currentValue, \"input\");\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Açık öneri listesinde Enter bir öneri seçer — formu göndermesin / onPressEnter tetiklenmesin.\n const handledByMention = mention.handleKeyDown(e);\n if (e.key === \"Enter\" && !handledByMention) onPressEnter?.(e);\n onKeyDown?.(e);\n };\n\n // Temizledikten sonra odak alana döner — kullanıcı hemen yeniden yazabilsin\n // (buton kaybolduğu için odak aksi halde <body>'ye düşüyordu).\n const handleClear = () => {\n // onChange'i gerçek olayla tetikler (handleChange → iç state + tüketici).\n clearNativeValue(innerRef.current);\n onClear?.();\n innerRef.current?.focus();\n };\n\n // Geometri iskeletle ORTAK (boyut + şekil) — yüklenince kutu zıplamaz.\n const geometryClass = cn(\"flex w-full items-center gap-2\", getSizeClasses(size), getShapeClasses(shape, variant));\n\n if (skeleton) {\n return <div {...skeletonBoxProps(cn(geometryClass, classNames.wrapper, className))} style={style} />;\n }\n\n const wrapperClass = cn(\n geometryClass,\n \"group relative cursor-text\",\n touchTargetClass[size],\n FIELD_BASE_CLASS,\n getVariantClasses(variant, color),\n disabled && FIELD_DISABLED_CLASS,\n classNames.wrapper,\n className\n );\n const adornmentClass = \"flex shrink-0 items-center text-mari-muted\";\n\n // Kutunun input DIŞINDAKİ alanına (dolgu, ikon, dokunmatikte genişletilmiş\n // alan) tıklamak da alanı odaklar — eskiden sadece metin satırının kendisi\n // tıklanabilirdi. İç butonlar (temizle, şifre) kendi işini yapar.\n const handleWrapperMouseDown = (e: React.MouseEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n if (disabled || innerRef.current?.contains(target) || target.closest(\"button\")) return;\n e.preventDefault();\n innerRef.current?.focus();\n };\n\n // `w-full min-w-0`: native <input>'un tarayıcı varsayılanı ~20 karakterlik\n // bir içsel genişliktir (≈250px) ve bu, kapsayıcının min-content boyutuna\n // katkı olarak sızıp dar grid kolonlarını (mobil form) taşırıyordu —\n // `min-w-0` tek başına yetmez, yüzdelik genişlik bu katkıyı sıfırlar\n // (Faz 13.6 Steps mobil incelemesinde bulundu).\n const inputClass = cn(\"w-full min-w-0 flex-grow bg-transparent placeholder:text-mari-muted focus:outline-none disabled:cursor-not-allowed\", FIELD_MOBILE_TEXT_CLASS, classNames.input);\n\n return (\n <>\n {/* Fare kısayolu; klavye kullanıcısı zaten doğrudan <input>'a sekmeyle gelir. */}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div className={wrapperClass} style={style} onMouseDown={handleWrapperMouseDown}>\n {/* Boşluk wrapper'ın `gap-*`'ından gelir — eskiden ayrıca `mr-2` vardı, ikon ile metin arası 2 katıydı. */}\n {icon && iconPosition === \"start\" && <span className={cn(adornmentClass, classNames.icon)}>{icon}</span>}\n\n {mask ? (\n <InputMask\n ref={setRefs}\n id={id}\n mask={mask}\n replacement={replacement}\n disabled={disabled}\n type={inputType}\n maxLength={maxLength}\n placeholder={placeholder}\n value={currentValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n onInput={onInput}\n onPaste={onPaste}\n className={inputClass}\n {...nativeProps}\n aria-invalid={ariaInvalid}\n />\n ) : (\n <input\n ref={setRefs}\n id={id}\n disabled={disabled}\n type={inputType}\n maxLength={maxLength}\n placeholder={placeholder}\n value={currentValue}\n {...mention.controlProps}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onFocus={onFocus}\n onBlur={(e) => {\n mention.close();\n onBlur?.(e);\n }}\n onInput={onInput}\n onPaste={onPaste}\n className={inputClass}\n max={max}\n min={min}\n {...nativeProps}\n aria-invalid={ariaInvalid}\n />\n )}\n\n {allowClear && <ClearButton visible={showClear} label={clearLabel} icon={clearIconOf(allowClear)} onClear={handleClear} className={classNames.clear} />}\n\n {(showCount || count?.formatter) && (\n <span className={cn(\"flex flex-none items-center text-xs tabular-nums text-mari-muted\", classNames.count)}>\n {count?.formatter ? count.formatter({ value: currentValue, count: charCount, maxLength }) : countLabel}\n </span>\n )}\n\n {icon && iconPosition === \"end\" && <span className={cn(adornmentClass, classNames.icon)}>{icon}</span>}\n\n {showPasswordToggle && (\n <PasswordToggle visible={passwordVisible} disabled={disabled} onToggle={() => setPasswordVisible((prev) => !prev)} iconRender={visibilityIconRender} />\n )}\n </div>\n {mention.panel}\n </>\n );\n };\n","\"use client\";\n\nimport type React from \"react\";\nimport { useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport type { FloatingCoords } from \"../../lib/useFloatingPosition\";\nimport { optionDomId, SelectPanel } from \"../../select/_components/SelectPanel\";\nimport type { SelectOption } from \"../../select/types\";\nimport type { MentionOption, MentionsConfig } from \"./types\";\nimport { getCaretRect } from \"./caret\";\nimport { filterMentionOptions, findMention, insertMention, type MentionMatch } from \"./utils\";\n\ntype Field = HTMLInputElement | HTMLTextAreaElement;\n\nconst GAP_PX = 4;\nconst EDGE_PX = 8;\n/** Panel genişliği (rem) — kök yazı boyutuyla ölçeklenir. */\nconst PANEL_WIDTH_REM = 16;\n\nconst toSelectOption = (o: MentionOption): SelectOption => ({ value: o.value, label: o.label ?? o.value, icon: o.icon, description: o.description, disabled: o.disabled });\n\n/** React'in kontrollü alanına değeri \"kullanıcı yazmış gibi\" verir → bileşenin onChange'i gerçek olayla çalışır. */\nfunction setNativeValue(el: Field, text: string) {\n const proto = el instanceof HTMLTextAreaElement ? HTMLTextAreaElement.prototype : HTMLInputElement.prototype;\n Object.getOwnPropertyDescriptor(proto, \"value\")?.set?.call(el, text);\n el.dispatchEvent(new Event(\"input\", { bubbles: true }));\n}\n\nfunction nextEnabled(options: MentionOption[], from: number, step: 1 | -1): number {\n const n = options.length;\n for (let i = 1; i <= n; i++) {\n const idx = (((from + step * i) % n) + n) % n;\n if (!options[idx]!.disabled) return idx;\n }\n return -1;\n}\n\n/** Eşleşmenin tetiğine göre liste, sorguya göre süzülmüş. */\nfunction resolveOptions(config: MentionsConfig | undefined, match: MentionMatch | null): MentionOption[] {\n if (!config || !match) return [];\n const all = typeof config.options === \"function\" ? config.options(match.prefix) : config.options;\n return filterMentionOptions(all, match.query, config.filterOption);\n}\n\n/** Panel konumu: imlecin altında; sığmazsa üstünde; yatayda ekrana sığdırılır. */\nfunction useCaretPosition(open: boolean, elRef: React.RefObject<Field | null>, panelRef: React.RefObject<HTMLDivElement | null>, match: MentionMatch | null, deps: unknown) {\n const [coords, setCoords] = useState<FloatingCoords | null>(null);\n useLayoutEffect(() => {\n if (!open || !match) {\n setCoords(null);\n return;\n }\n const measure = () => {\n const el = elRef.current;\n const panel = panelRef.current;\n if (!el) return;\n const caret = getCaretRect(el, match.start);\n const width = panel?.offsetWidth ?? 0;\n const height = panel?.offsetHeight ?? 0;\n let top = caret.top + caret.height + GAP_PX;\n if (top + height > window.innerHeight - EDGE_PX && caret.top - GAP_PX - height > EDGE_PX) top = caret.top - GAP_PX - height;\n const left = Math.max(EDGE_PX, Math.min(caret.left, window.innerWidth - width - EDGE_PX));\n setCoords({ top, left, side: \"bottom\", arrowOffset: 0, anchorWidth: PANEL_WIDTH_REM * Number.parseFloat(getComputedStyle(document.documentElement).fontSize) });\n };\n measure();\n // İlk ölçümde panel henüz boyutsuz olabilir; bir kare sonra gerçek boyutla yeniden.\n const raf = requestAnimationFrame(measure);\n window.addEventListener(\"scroll\", measure, true);\n window.addEventListener(\"resize\", measure);\n return () => {\n cancelAnimationFrame(raf);\n window.removeEventListener(\"scroll\", measure, true);\n window.removeEventListener(\"resize\", measure);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- `deps`: liste uzunluğu değişince yeniden ölç\n }, [open, match?.start, match?.prefix, deps]);\n return coords;\n}\n\n/**\n * Input ve Textarea'nın ortak `mentions` davranışı. Döndürdüğü `controlProps`\n * alana yayılır (ARIA + klavye + imleç izleme), `panel` alanın yanına çizilir.\n * Odak hep alanda kalır; aktif öneri `aria-activedescendant` (APG combobox).\n */\nexport function useMention(config: MentionsConfig | undefined, elRef: React.RefObject<Field | null>, value: string, kind: \"input\" | \"textarea\") {\n const enabled = config !== undefined;\n const prefixes = useMemo(() => {\n const p = config?.prefix ?? \"@\";\n return Array.isArray(p) ? p : [p];\n }, [config?.prefix]);\n const split = config?.split ?? \" \";\n const [match, setMatch] = useState<MentionMatch | null>(null);\n const [dismissedAt, setDismissedAt] = useState<number | null>(null);\n const [activeIndex, setActiveIndex] = useState(0);\n const panelRef = useRef<HTMLDivElement>(null);\n const listboxId = useId();\n const lastQuery = useRef<string | null>(null);\n\n const options = useMemo(() => resolveOptions(config, match), [config, match]);\n const notFound = config?.notFoundContent === undefined ? \"Sonuç bulunamadı\" : config.notFoundContent;\n const open = enabled && match !== null && dismissedAt !== match.start && (options.length > 0 || !!config?.loading || notFound !== null);\n // SelectPanel aktif satırı nesne kimliğiyle bulur — iki listeye AYNI dizi verilmeli.\n const selectOptions = useMemo(() => options.map(toSelectOption), [options]);\n const coords = useCaretPosition(open, elRef, panelRef, match, options.length);\n\n /** İmlece göre eşleşmeyi yeniden hesapla (yazınca, imleç oynayınca, odakta). */\n const sync = () => {\n const el = elRef.current;\n if (!enabled || !el) return;\n const caret = el.selectionStart;\n const next = caret !== null && caret === el.selectionEnd ? findMention(el.value, caret, prefixes) : null;\n setMatch((prev) => (prev?.start === next?.start && prev?.query === next?.query && prev?.prefix === next?.prefix ? prev : next));\n if (!next) setDismissedAt(null);\n };\n\n // Değer değişince (yazma, yapıştırma, dışarıdan) eşleşmeyi güncelle.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(sync, [value, enabled]);\n\n // Sorgu değişince: aktif satır başa, sunucu araması bildirimi.\n useEffect(() => {\n setActiveIndex(0);\n const key = match ? `${match.prefix}${match.start}:${match.query}` : null;\n if (match && key !== lastQuery.current) config?.onSearch?.(match.query, match.prefix);\n lastQuery.current = key;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [match]);\n\n // Klavyeyle gezinirken aktif öneri listenin görünür alanında kalsın (Select ile aynı).\n const activeId = open && options[activeIndex] ? optionDomId(listboxId, selectOptions[activeIndex]!) : undefined;\n useEffect(() => {\n if (activeId) document.getElementById(activeId)?.scrollIntoView?.({ block: \"nearest\" });\n }, [activeId]);\n\n const choose = (option: MentionOption) => {\n const el = elRef.current;\n if (!el || !match || option.disabled) return;\n const caret = el.selectionStart ?? el.value.length;\n const result = insertMention(el.value, match, caret, option.value, split);\n setNativeValue(el, result.text);\n el.setSelectionRange(result.caret, result.caret);\n // Kontrollü alanda React yeniden çizince imleç sona kaçmasın.\n requestAnimationFrame(() => el.setSelectionRange(result.caret, result.caret));\n setMatch(null);\n config?.onSelect?.(option, match.prefix);\n };\n\n /** `true` → tuş mention tarafından işlendi (bileşen kendi Enter davranışını çalıştırmasın). */\n const handleKeyDown = (e: React.KeyboardEvent): boolean => {\n if (!open || !match) return false;\n const active = options[activeIndex];\n switch (e.key) {\n case \"ArrowDown\":\n case \"ArrowUp\": {\n e.preventDefault();\n if (options.length) setActiveIndex((i) => Math.max(0, nextEnabled(options, i, e.key === \"ArrowDown\" ? 1 : -1)));\n return true;\n }\n case \"Enter\":\n case \"Tab\":\n if (!active || active.disabled) return false;\n e.preventDefault();\n choose(active);\n return true;\n case \"Escape\":\n // Modal/Drawer içinde Escape önce listeyi kapatsın, pencereyi değil.\n e.preventDefault();\n e.stopPropagation();\n setDismissedAt(match.start);\n return true;\n default:\n return false;\n }\n };\n\n const controlProps = enabled\n ? {\n ...(kind === \"input\" ? { role: \"combobox\" as const, \"aria-expanded\": open } : {}),\n \"aria-autocomplete\": \"list\" as const,\n \"aria-controls\": open ? listboxId : undefined,\n \"aria-activedescendant\": activeId,\n onKeyUp: (e: React.KeyboardEvent) => {\n if ([\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].includes(e.key)) sync();\n },\n onClick: sync,\n }\n : {};\n\n const panel = open ? (\n <SelectPanel\n ref={panelRef}\n listboxId={listboxId}\n coords={coords}\n sections={[{ key: \"mentions\", options: selectOptions }]}\n flatOptions={selectOptions}\n activeIndex={activeIndex}\n isSelected={() => false}\n multiple={false}\n loading={!!config?.loading}\n notFoundContent={notFound}\n listHeight={config?.listHeight ?? \"14rem\"}\n label={config?.listLabel ?? \"Öneriler\"}\n onPick={(o) => {\n const option = options.find((m) => m.value === o.value);\n if (option) choose(option);\n }}\n onHover={setActiveIndex}\n />\n ) : null;\n\n return { controlProps, panel, handleKeyDown, close: () => setMatch(null) };\n}\n","\"use client\";\n\nconst MIRROR_PROPS = [\n \"boxSizing\", \"width\", \"height\", \"overflowX\", \"overflowY\",\n \"borderTopWidth\", \"borderRightWidth\", \"borderBottomWidth\", \"borderLeftWidth\",\n \"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\",\n \"fontStyle\", \"fontVariant\", \"fontWeight\", \"fontStretch\", \"fontSize\", \"lineHeight\", \"fontFamily\",\n \"textAlign\", \"textTransform\", \"textIndent\", \"letterSpacing\", \"wordSpacing\", \"tabSize\",\n] as const;\n\n/**\n * İmlecin ekrandaki konumu (viewport koordinatı). Alanın stilini kopyalayan\n * görünmez bir \"ayna\" kutuda imlece kadar olan metin yazılır, ardından gelen\n * işaretçinin konumu ölçülür — tarayıcılar textarea imlecinin konumunu\n * doğrudan vermiyor.\n */\nexport function getCaretRect(el: HTMLInputElement | HTMLTextAreaElement, position: number): { top: number; left: number; height: number } {\n const style = getComputedStyle(el);\n const mirror = document.createElement(\"div\");\n const isInput = el.nodeName === \"INPUT\";\n for (const prop of MIRROR_PROPS) mirror.style[prop] = style[prop];\n Object.assign(mirror.style, {\n position: \"absolute\",\n visibility: \"hidden\",\n top: \"0\",\n left: \"-9999px\",\n whiteSpace: isInput ? \"pre\" : \"pre-wrap\",\n overflowWrap: \"break-word\",\n overflow: \"hidden\",\n });\n mirror.textContent = el.value.slice(0, position);\n const marker = document.createElement(\"span\");\n marker.textContent = el.value.slice(position) || \".\";\n mirror.appendChild(marker);\n document.body.appendChild(mirror);\n const rect = el.getBoundingClientRect();\n const lineHeight = Number.parseFloat(style.lineHeight) || Number.parseFloat(style.fontSize) * 1.25;\n const top = rect.top + marker.offsetTop + Number.parseFloat(style.borderTopWidth) - el.scrollTop;\n const left = rect.left + marker.offsetLeft + Number.parseFloat(style.borderLeftWidth) - el.scrollLeft;\n mirror.remove();\n return { top, left: Math.min(left, rect.right), height: lineHeight };\n}\n","import { foldForSearch } from \"../../autocomplete/utils\";\nimport type { MentionOption } from \"./types\";\n\nexport interface MentionMatch {\n prefix: string;\n /** Tetik karakterinin metindeki konumu. */\n start: number;\n /** Tetik ile imleç arası. */\n query: string;\n}\n\nconst isSpace = (ch: string | undefined) => ch !== undefined && /\\s/.test(ch);\n\n/**\n * İmleçten geriye: en yakın tetik karakteri, öncesi satır başı/boşluk ve\n * tetik ile imleç arasında boşluk yoksa eşleşme. (`e-posta@alan` gibi kelime\n * içi `@` tetiklemez.)\n */\nexport function findMention(text: string, caret: number, prefixes: readonly string[]): MentionMatch | null {\n const before = text.slice(0, caret);\n let best: MentionMatch | null = null;\n for (const prefix of prefixes) {\n const start = before.lastIndexOf(prefix);\n if (start === -1) continue;\n if (start > 0 && !isSpace(before[start - 1])) continue;\n const query = before.slice(start + prefix.length);\n if (/\\s/.test(query)) continue;\n if (!best || start > best.start) best = { prefix, start, query };\n }\n return best;\n}\n\n/** `@sor` → `@ayse.demir ` ; imleç ayraçtan sonra. Ayraç zaten varsa ikincisi eklenmez. */\nexport function insertMention(text: string, match: MentionMatch, caret: number, value: string, split: string): { text: string; caret: number } {\n const head = text.slice(0, match.start) + match.prefix + value;\n const tail = text.slice(caret);\n const sep = split && !tail.startsWith(split) ? split : \"\";\n return { text: head + sep + tail, caret: head.length + (split ? split.length : 0) };\n}\n\nexport function mentionText(option: MentionOption): string {\n if (option.searchText !== undefined) return option.searchText;\n const label = typeof option.label === \"string\" ? option.label : \"\";\n return `${option.value} ${label}`;\n}\n\nexport function filterMentionOptions(\n options: readonly MentionOption[],\n query: string,\n filterOption?: false | ((query: string, option: MentionOption) => boolean)\n): MentionOption[] {\n if (filterOption === false) return [...options];\n if (filterOption) return options.filter((o) => filterOption(query, o));\n const q = foldForSearch(query);\n return q ? options.filter((o) => foldForSearch(mentionText(o)).includes(q)) : [...options];\n}\n","\"use client\";\n\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef } from \"react\";\nimport { cn, useControllableState } from \"@mari-ui/core\";\nimport { ClearButton, clearIconOf } from \"./_components/FieldAdornments\";\nimport type { InputClassNames, InputShape, InputVariant, InputCountConfig, TextareaAutoSize } from \"./types\";\nimport type { ColorRole, Size } from \"@mari-ui/core\";\nimport { skeletonBoxProps, type SkeletonableProps } from \"../lib/skeleton\";\nimport { useFieldControl } from \"../lib/fieldContext\";\nimport {\n FIELD_BASE_CLASS,\n FIELD_DISABLED_CLASS,\n FIELD_MOBILE_TEXT_CLASS,\n getShapeClasses,\n getTextareaSizeClasses,\n getVariantClasses,\n clearNativeValue,\n isClearable,\n} from \"./utils\";\nimport type { MentionsConfig } from \"./mention/types\";\nimport { useMention } from \"./mention/useMention\";\n\nexport interface TextareaProps extends SkeletonableProps {\n placeholder?: string;\n value?: string;\n defaultValue?: string;\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n onClear?: () => void;\n onFocus?: (e: React.FocusEvent<HTMLTextAreaElement>) => void;\n onBlur?: (e: React.FocusEvent<HTMLTextAreaElement>) => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void;\n allowClear?: boolean | { clearIcon?: React.ReactNode };\n /** Temizle butonunun erişilebilir adı. Varsayılan: `\"Temizle\"`. */\n clearLabel?: string;\n readOnly?: boolean;\n disabled?: boolean;\n name?: string;\n required?: boolean;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n /** İpucu/hata metnine bağlantı (Field içindeyse otomatik). */\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean | \"true\" | \"false\";\n size?: Size;\n shape?: InputShape;\n variant?: InputVariant;\n color?: ColorRole;\n maxLength?: number;\n showCount?: boolean;\n count?: InputCountConfig;\n id?: string;\n classNames?: InputClassNames;\n className?: string;\n /**\n * `true`: içerik kadar uzar. `{ minRows, maxRows }`: en az/en çok bu kadar\n * satır; `maxRows` aşılınca kaydırma çubuğu çıkar. `autoSize` verilince\n * elle yeniden boyutlandırma kapalıdır.\n */\n autoSize?: TextareaAutoSize;\n /** Başlangıç yüksekliği (satır). `autoSize` yoksa elle dikey büyütülebilir. Varsayılan: 3. */\n rows?: number;\n /** `@` ile bahsetme — Input'taki `mentions` ile aynı. */\n mentions?: MentionsConfig;\n}\n\n/**\n * `autoSize` yüksekliği: içerik yüksekliğini satır yüksekliği × min/max'a\n * kıstırır. Eskiden `{ minRows, maxRows }` tipte vardı ama HİÇ uygulanmıyordu —\n * alan sınırsız uzuyordu.\n */\nfunction fitHeight(el: HTMLTextAreaElement, autoSize: TextareaAutoSize) {\n const style = window.getComputedStyle(el);\n const lineHeight = Number.parseFloat(style.lineHeight) || 20;\n const padding = Number.parseFloat(style.paddingTop) + Number.parseFloat(style.paddingBottom);\n const { minRows, maxRows } = typeof autoSize === \"object\" ? autoSize : {};\n el.style.height = \"auto\";\n let height = el.scrollHeight;\n if (minRows) height = Math.max(height, minRows * lineHeight + padding);\n if (maxRows) height = Math.min(height, maxRows * lineHeight + padding);\n el.style.height = `${height}px`;\n el.style.overflowY = maxRows && el.scrollHeight > height ? \"auto\" : \"hidden\";\n}\n\n/**\n * Eskiden `TextareaProps = Omit<InputProps, ...>` ile `Input`tan türetiliyordu\n * ama `onBlur`/`onFocus` Omit listesinde YOKTU — `InputProps.onBlur`'un tipi\n * `FormEvent<HTMLInputElement>` idi ve `{...rest}` ile `<textarea>`'ya\n * yayıldığında (`FocusEventHandler<HTMLTextAreaElement>` beklenen yerde)\n * gerçek bir TS hatasıydı (bkz. plan denetimi). Artık Textarea kendi tam\n * tip setini tanımlıyor, `Input`tan miras almıyor.\n */\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>((outerProps, ref) => {\n // Field içindeyse id / aria-describedby / hata / required / disabled oradan tamamlanır.\n return <TextareaInner {...useFieldControl(outerProps)} forwardedRef={ref} />;\n});\n\nTextarea.displayName = \"Textarea\";\n\nconst TextareaInner = (\n {\n forwardedRef: ref,\n placeholder,\n allowClear = false,\n clearLabel = \"Temizle\",\n skeleton = false,\n rows = 3,\n readOnly,\n onKeyDown,\n classNames = {},\n className = \"\",\n count,\n defaultValue = \"\",\n disabled = false,\n id,\n maxLength,\n showCount,\n color,\n size = \"md\",\n shape = \"default\",\n variant = \"outline\",\n value,\n onChange,\n onClear,\n onFocus,\n onBlur,\n autoSize = false,\n name,\n required,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalidProp,\n mentions,\n }: TextareaProps & { forwardedRef: React.ForwardedRef<HTMLTextAreaElement> }\n ) => {\n // `color` varsayılansız: verilmezse dinlenmede nötr, odakta primary (bkz. `getVariantClasses`).\n const ariaInvalid = ariaInvalidProp ?? (color === \"error\" || undefined);\n const innerRef = useRef<HTMLTextAreaElement>(null);\n useImperativeHandle(ref, () => innerRef.current as HTMLTextAreaElement);\n\n const [currentValue, setCurrentValue] = useControllableState<string>({ value, defaultValue });\n const charCount = currentValue.length;\n // Ayrık değişken — iç içe template literal yerine (Faz 8, SonarJS `no-nested-template-literals`).\n const countLabel = maxLength ? `${charCount} / ${maxLength}` : `${charCount}`;\n const showClear = isClearable(allowClear) && Boolean(currentValue) && !disabled;\n\n const mention = useMention(mentions, innerRef, currentValue, \"textarea\");\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setCurrentValue(e.target.value);\n onChange?.(e);\n };\n\n const handleClear = () => {\n // onChange'i gerçek olayla tetikler (handleChange → iç state + tüketici).\n clearNativeValue(innerRef.current);\n onClear?.();\n innerRef.current?.focus();\n };\n\n const initialRows = typeof autoSize === \"object\" && autoSize.minRows ? autoSize.minRows : rows;\n const autoSizeKey = typeof autoSize === \"object\" ? `${autoSize.minRows}-${autoSize.maxRows}` : String(autoSize);\n useEffect(() => {\n if (autoSize && innerRef.current) fitHeight(innerRef.current, autoSize);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- autoSizeKey, obje kimliği yerine değerleri izler\n }, [currentValue, autoSizeKey]);\n\n const geometryClass = cn(\"flex w-full items-start gap-2\", getTextareaSizeClasses(size), getShapeClasses(shape, variant));\n const textareaClass = cn(\n \"w-full bg-transparent placeholder:text-mari-muted focus:outline-none disabled:cursor-not-allowed\",\n autoSize ? \"resize-none\" : \"resize-y\",\n FIELD_MOBILE_TEXT_CLASS,\n classNames.input\n );\n\n if (skeleton) {\n // Şeffaf, erişilemez bir <textarea> kutuya GERÇEK yüksekliğini verir\n // (satır sayısı × satır yüksekliği + dolgu) — tahmin yok, zıplama yok.\n return (\n <div {...skeletonBoxProps(cn(geometryClass, classNames.wrapper, className))}>\n <textarea tabIndex={-1} rows={initialRows} className={cn(textareaClass, \"invisible resize-none\")} />\n </div>\n );\n }\n\n const wrapperClass = cn(\n geometryClass,\n FIELD_BASE_CLASS,\n getVariantClasses(variant, color),\n disabled && FIELD_DISABLED_CLASS,\n classNames.wrapper,\n className\n );\n\n return (\n // `w-full`: Input gibi kapsayıcısını doldurur — `items-start`lı bir flex sütununda (Field) büzülüyordu.\n <div className=\"flex w-full flex-col gap-2\">\n <div className={wrapperClass}>\n <textarea\n id={id}\n ref={innerRef}\n value={currentValue}\n onChange={handleChange}\n {...mention.controlProps}\n onFocus={onFocus}\n onBlur={(e) => {\n mention.close();\n onBlur?.(e);\n }}\n onKeyDown={(e) => {\n mention.handleKeyDown(e);\n onKeyDown?.(e);\n }}\n readOnly={readOnly}\n rows={initialRows}\n placeholder={placeholder}\n maxLength={maxLength}\n disabled={disabled}\n name={name}\n required={required}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-invalid={ariaInvalid}\n className={textareaClass}\n />\n {allowClear && <ClearButton visible={showClear} label={clearLabel} icon={clearIconOf(allowClear)} onClear={handleClear} className={classNames.clear} />}\n </div>\n {(showCount || count?.formatter) && (\n <span className={cn(\"flex flex-none items-center justify-end text-xs tabular-nums\", maxLength && charCount >= maxLength ? \"text-mari-error\" : \"text-mari-muted\", classNames.count)}>\n {count?.formatter ? count.formatter({ value: currentValue, count: charCount, maxLength }) : countLabel}\n </span>\n )}\n {mention.panel}\n </div>\n );\n };\n","\"use client\";\n\nimport React, { useContext, useEffect, useRef, useState } from \"react\";\nimport { cn, type ColorRole, type Size } from \"@mari-ui/core\";\nimport { FieldContext, useFieldControl, useFieldGroup, useFieldSkeleton } from \"../lib/fieldContext\";\nimport type { SkeletonableProps } from \"../lib/skeleton\";\nimport { Input } from \"./Input\";\nimport { OtpSingleField } from \"./_components/OtpSingleField\";\nimport type { InputShape, InputVariant } from \"./types\";\n\nexport interface OtpInputProps extends SkeletonableProps {\n length?: number;\n value?: string;\n defaultValue?: string;\n disabled?: boolean;\n size?: Size;\n shape?: InputShape;\n variant?: InputVariant;\n color?: ColorRole;\n onChange?: (value: string) => void;\n onInput?: (value: string[]) => void;\n mask?: boolean;\n formatter?: (val: string) => string;\n separator?: React.ReactNode | ((i: number) => React.ReactNode);\n className?: string;\n /** Grubun erişilebilir adı. Varsayılan: `\"Doğrulama kodu\"`. */\n \"aria-label\"?: string;\n /**\n * Mobil klavye. Varsayılan `\"numeric\"` (SMS/e-posta kodları rakamdır);\n * harf içeren kodlar için `\"text\"`.\n */\n inputMode?: \"numeric\" | \"text\";\n /**\n * `separated` (varsayılan): her hane ayrı bir kutucuk. `single`: tek bir\n * alan içinde hane yuvaları — arkada tek bir gerçek `<input>` (yapıştırma,\n * SMS otomatik doldurma, ekran okuyucu için en sade yapı).\n */\n layout?: \"separated\" | \"single\";\n /**\n * Yalnızca `layout=\"single\"`: yuva çizgisinin yeri. `center` (varsayılan):\n * boş yuvada dikeyde ortalı çizgi, hane girilince kaybolur. `bottom`:\n * hanenin altında, dolu yuvada da kalan alt çizgi.\n */\n linePosition?: \"center\" | \"bottom\";\n}\n\nconst WIDTH_CLASS: Record<Size, string> = { sm: \"w-6 p-0\", md: \"w-8 p-0\", lg: \"w-10 p-0\" };\n\n/** İç içe ternary yerine ayrık fonksiyon (Faz 8, SonarJS `no-nested-conditional`). */\nfunction resolveDisplayValue(rawValue: string, formatter: ((val: string) => string) | undefined, mask: boolean): string {\n if (formatter) return formatter(rawValue);\n if (mask && rawValue) return \"•\";\n return rawValue;\n}\n\nexport function OtpInput({\n length = 6,\n value,\n defaultValue = \"\",\n disabled = false,\n size = \"md\",\n shape = \"default\",\n variant = \"outline\",\n color,\n onChange,\n onInput,\n mask = false,\n formatter,\n separator,\n className,\n \"aria-label\": ariaLabelProp,\n inputMode = \"numeric\",\n skeleton: ownSkeleton,\n layout = \"separated\",\n linePosition = \"center\",\n}: Readonly<OtpInputProps>) {\n // Field içinde: kutucuklu düzen bir GRUP (etiket grubun adı), tek kutu düzeni tek bir ALAN (label htmlFor).\n // Varsayılan \"Doğrulama kodu\" adı yalnız hiç ad yoksa — Field'ın etiketini ezmesin.\n const inField = useContext(FieldContext) !== null;\n const group = useFieldGroup({ \"aria-label\": ariaLabelProp, disabled }, layout === \"separated\");\n const skeleton = useFieldSkeleton(ownSkeleton);\n const control = useFieldControl({ disabled, color });\n const ariaLabel = ariaLabelProp ?? (inField ? undefined : \"Doğrulama kodu\");\n const [otpValues, setOtpValues] = useState<string[]>(Array.from({ length }, (_, i) => value?.[i] ?? defaultValue[i] ?? \"\"));\n const inputsRef = useRef<Array<HTMLInputElement | null>>([]);\n\n const focusInput = (index: number) => {\n const input = inputsRef.current[index];\n if (input) {\n input.focus();\n input.select();\n }\n };\n\n /**\n * Faz 15: hücrelerde artık `maxLength=1` YOK — o, 6 haneli bir kodun\n * yapıştırılmasını VE iOS/Android'in SMS kodunu otomatik doldurmasını\n * (`autocomplete=\"one-time-code\"`, kodun tamamını ilk hücreye yazar) tek\n * haneye kırpıyordu. Uzun giriş buradan hücrelere dağıtılır; dolu bir\n * hücrede imleç sondayken yazılan tek karakter ise eskisinin YERİNE geçer.\n */\n const handleInput = (i: number, rawValue: string) => {\n const shown = resolveDisplayValue(otpValues[i] ?? \"\", formatter, mask);\n let text = rawValue.replace(/\\s/g, \"\");\n if (shown && text.length === shown.length + 1) text = text.startsWith(shown) ? text.slice(shown.length) : text.slice(0, 1);\n const chars = text.split(\"\");\n const updated = [...otpValues];\n for (let j = 0; j < chars.length; j++) {\n if (i + j < length) updated[i + j] = chars[j] ?? \"\";\n }\n setOtpValues(updated);\n onInput?.(updated);\n if (!updated.includes(\"\")) onChange?.(updated.join(\"\"));\n focusInput(Math.min(i + chars.length, length - 1));\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>, i: number) => {\n const input = e.currentTarget;\n const cursorAtStart = input.selectionStart === 0;\n const cursorAtEnd = input.selectionStart === input.value.length;\n\n if (e.key === \"Backspace\") {\n e.preventDefault();\n const updated = [...otpValues];\n if (otpValues[i]) {\n updated[i] = \"\";\n setOtpValues(updated);\n onInput?.(updated);\n focusInput(i);\n } else if (i > 0) {\n updated[i - 1] = \"\";\n setOtpValues(updated);\n onInput?.(updated);\n focusInput(i - 1);\n }\n }\n if (e.key === \"ArrowLeft\" && cursorAtStart && i > 0) {\n e.preventDefault();\n focusInput(i - 1);\n }\n if (e.key === \"ArrowRight\" && cursorAtEnd && i < length - 1) {\n e.preventDefault();\n focusInput(i + 1);\n }\n };\n\n useEffect(() => {\n if (value !== undefined) {\n const split = value.split(\"\").slice(0, length);\n setOtpValues((prev) => Array.from({ length }, (_, i) => split[i] ?? prev[i] ?? \"\"));\n }\n }, [value, length]);\n\n // Faz 13 gözden geçirmesi: `ghost` Input'ta (\"kenarlıksız, arka planı\n // saydam\") bir metin alanının içinde/etrafında bağlam olduğu için anlamlı\n // — ama OTP'de her kutucuk TEK BAŞINA bir hücre, çevresinde hiçbir görsel\n // referans yok. `ghost` seçilince kutucuklar TAMAMEN görünmez oluyordu,\n // kullanıcı nereye yazacağını göremiyordu. OTP için `ghost`, `underlined`e\n // (en azından bir alt çizgi kalır) düşürülür.\n const resolvedVariant = variant === \"ghost\" ? \"underlined\" : variant;\n\n if (layout === \"single\") {\n return (\n <OtpSingleField\n length={length}\n value={value}\n defaultValue={defaultValue}\n disabled={!!control.disabled}\n size={size}\n shape={shape}\n variant={resolvedVariant}\n color={control.color}\n id={control.id}\n describedBy={control[\"aria-describedby\"]}\n required={control.required}\n onChange={onChange}\n onInput={onInput}\n display={(raw) => resolveDisplayValue(raw, formatter, mask)}\n separator={separator}\n className={className}\n ariaLabel={ariaLabel}\n inputMode={inputMode}\n skeleton={skeleton}\n linePosition={linePosition}\n />\n );\n }\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>, i: number) => {\n e.preventDefault();\n handleInput(i, e.clipboardData.getData(\"text\"));\n };\n\n if (skeleton) {\n return (\n <div aria-hidden className=\"flex items-center gap-2\">\n {Array.from({ length }, (_, i) => (\n <Input key={i} skeleton size={size} shape={shape} className={cn(WIDTH_CLASS[size], className)} />\n ))}\n </div>\n );\n }\n\n return (\n <div\n role=\"group\"\n aria-label={group[\"aria-labelledby\"] ? undefined : (ariaLabel ?? \"Doğrulama kodu\")}\n aria-labelledby={group[\"aria-labelledby\"]}\n aria-describedby={group[\"aria-describedby\"]}\n className=\"flex items-center gap-2\"\n >\n {/* Hücreler Field'ın bağlantılarını ALMAZ — hepsi aynı id'yi alırdı; bağlantılar gruptadır. */}\n <FieldContext.Provider value={null}>\n {Array.from({ length }).map((_, i) => {\n const rawValue = otpValues[i] ?? \"\";\n const displayValue = resolveDisplayValue(rawValue, formatter, mask);\n\n return (\n <React.Fragment key={`otp-${i}`}>\n <Input\n ref={(el) => {\n inputsRef.current[i] = el;\n }}\n value={displayValue}\n onInput={(e) => handleInput(i, (e.target as HTMLInputElement).value)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onPaste={(e) => handlePaste(e, i)}\n onFocus={(e) => e.currentTarget.select()}\n aria-label={`Hane ${i + 1} / ${length}`}\n inputMode={inputMode}\n // SMS kodunu klavye önerisi olarak sunar — sadece ilk hücrede.\n autoComplete={i === 0 ? \"one-time-code\" : \"off\"}\n disabled={!!group.disabled}\n size={size}\n shape={shape}\n variant={resolvedVariant}\n color={group[\"aria-invalid\"] ? (color ?? \"error\") : color}\n className={cn(WIDTH_CLASS[size], className)}\n classNames={{ input: \"w-full text-center font-medium\" }}\n />\n {separator && i < length - 1 && (\n <span aria-hidden className=\"text-mari-muted\">\n {typeof separator === \"function\" ? separator(i) : separator}\n </span>\n )}\n </React.Fragment>\n );\n })}\n </FieldContext.Provider>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useRef, useState } from \"react\";\nimport { cn, useControllableState, type ColorRole, type Size } from \"@mari-ui/core\";\nimport { skeletonBoxProps } from \"../../lib/skeleton\";\nimport { touchTargetClass } from \"../../lib/sizeClasses\";\nimport type { InputShape, InputVariant } from \"../types\";\nimport { FIELD_BASE_CLASS, FIELD_DISABLED_CLASS, getShapeClasses, getVariantClasses } from \"../utils\";\n\nexport interface OtpSingleFieldProps {\n length: number;\n value?: string;\n defaultValue: string;\n disabled: boolean;\n size: Size;\n shape: InputShape;\n variant: InputVariant;\n color?: ColorRole;\n onChange?: (value: string) => void;\n onInput?: (value: string[]) => void;\n display: (raw: string) => string;\n separator?: React.ReactNode | ((i: number) => React.ReactNode);\n className?: string;\n /** Field içinde `undefined` — ad `<label htmlFor>`dan gelir. */\n ariaLabel?: string;\n /** Field bağlantıları. */\n id?: string;\n describedBy?: string;\n required?: boolean;\n inputMode: \"numeric\" | \"text\";\n skeleton: boolean;\n linePosition: \"center\" | \"bottom\";\n}\n\n/** Kutu yüksekliği + yatay dolgu; yuva genişliği ve rakam boyutu. */\nconst BOX_CLASS: Record<Size, string> = { sm: \"h-8 px-2.5 gap-1\", md: \"h-10 px-3 gap-1.5\", lg: \"h-12 px-4 gap-2\" };\nconst SLOT_CLASS: Record<Size, string> = { sm: \"w-4 text-sm\", md: \"w-5 text-base\", lg: \"w-6 text-xl\" };\n\n/**\n * Tek kutu görünümlü OTP (`layout=\"single\"`). Kutucuklar yerine TEK bir alan\n * içinde eşit aralıklı hane yuvaları çizilir; arkada ise TEK bir gerçek\n * `<input>` vardır (metni ve imleci şeffaf, kutuyu tamamen kaplar). Bu yapı:\n * yapıştırma ve SMS otomatik doldurma kendiliğinden çalışır (kodun tamamı tek\n * alana gelir), ekran okuyucu tek bir adlandırılmış alan görür (6 ayrı\n * \"hane\" değil), mobil klavye bir kez açılır. Yuvalar yalnızca görseldir\n * (`aria-hidden`).\n */\nexport function OtpSingleField({\n length,\n value,\n defaultValue,\n disabled,\n size,\n shape,\n variant,\n color,\n onChange,\n onInput,\n display,\n separator,\n className,\n ariaLabel,\n id,\n describedBy,\n required,\n inputMode,\n skeleton,\n linePosition,\n}: Readonly<OtpSingleFieldProps>) {\n const [code, setCode] = useControllableState<string>({ value, defaultValue: defaultValue.slice(0, length) });\n const [focused, setFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const boxClass = cn(\"relative inline-flex w-fit max-w-full items-center\", BOX_CLASS[size], getShapeClasses(shape, variant));\n\n if (skeleton) {\n return (\n <div {...skeletonBoxProps(cn(boxClass, className))}>\n {Array.from({ length }, (_, i) => (\n <span key={i} className={SLOT_CLASS[size]} />\n ))}\n </div>\n );\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let next = e.target.value.replace(/\\s/g, \"\");\n if (inputMode === \"numeric\") next = next.replace(/\\D/g, \"\");\n next = next.slice(0, length);\n setCode(next);\n onInput?.(Array.from({ length }, (_, i) => next[i] ?? \"\"));\n if (next.length === length) onChange?.(next);\n };\n\n // İmleç hep sonda: yuvalar ortada bir konuma tıklamayı göstermediği için\n // seçim/imleç taşınırsa kullanıcı nereye yazdığını göremezdi.\n const keepCaretAtEnd = (e: React.SyntheticEvent<HTMLInputElement>) => {\n const el = e.currentTarget;\n const end = el.value.length;\n if (el.selectionStart !== end || el.selectionEnd !== end) el.setSelectionRange(end, end);\n };\n\n const activeIndex = Math.min(code.length, length - 1);\n\n return (\n <div\n className={cn(\n boxClass,\n FIELD_BASE_CLASS,\n getVariantClasses(variant, color),\n touchTargetClass[size],\n disabled && FIELD_DISABLED_CLASS,\n className\n )}\n >\n {Array.from({ length }, (_, i) => {\n const char = code[i];\n const isActive = focused && i === activeIndex;\n // `center`: yalnızca BOŞ yuvada ortada çizgi (dolu hanenin üstünü çizmesin).\n // `bottom`: hanenin altında, dolu olsa da kalan alt çizgi.\n // Aktif boş yuvada `center` çizgisi imleçle kesişip \"+\" çiziyordu — orada imleç yeterli.\n const showLine = linePosition === \"bottom\" || (!char && !isActive);\n return (\n <React.Fragment key={i}>\n <span\n aria-hidden\n className={cn(\n \"relative flex h-full items-center justify-center font-medium tabular-nums text-mari-foreground\",\n SLOT_CLASS[size],\n showLine && \"after:absolute after:inset-x-0.5 after:h-px after:bg-mari-input\",\n showLine && (linePosition === \"bottom\" ? \"after:bottom-[18%]\" : \"after:top-1/2 after:-translate-y-1/2\"),\n showLine && isActive && \"after:bg-mari-primary\"\n )}\n >\n {char ? display(char) : null}\n {isActive && code.length < length && (\n // `key`: her yazışta animasyon baştan başlar — yazarken imleç\n // hep görünür, durunca yanıp söner (gerçek imleç davranışı).\n <span\n key={code.length}\n className=\"absolute h-[45%] w-px bg-mari-foreground animate-[mari-caret-blink_1.06s_step-end_infinite] motion-reduce:animate-none\"\n />\n )}\n </span>\n {separator && i < length - 1 && (\n <span aria-hidden className=\"px-0.5 text-mari-muted\">\n {typeof separator === \"function\" ? separator(i) : separator}\n </span>\n )}\n </React.Fragment>\n );\n })}\n <input\n ref={inputRef}\n value={code}\n onChange={handleChange}\n onFocus={(e) => {\n setFocused(true);\n keepCaretAtEnd(e);\n }}\n onBlur={() => setFocused(false)}\n onSelect={keepCaretAtEnd}\n // `maxLength` YOK: tarayıcı yapıştırılan \"482 913\" gibi biçimli bir kodu\n // temizlemeden ÖNCE kırpıp \"482 91\" bırakırdı. Uzunluk `handleChange`de.\n disabled={disabled}\n id={id}\n required={required}\n aria-label={ariaLabel}\n aria-describedby={describedBy}\n aria-invalid={color === \"error\" || undefined}\n inputMode={inputMode}\n autoComplete=\"one-time-code\"\n spellCheck={false}\n // Metin ve imleç şeffaf — görünen haneler yuvalardır. `text-base`:\n // iOS 16px altındaki alanda odakta sayfayı yakınlaştırır.\n className=\"absolute inset-0 h-full w-full cursor-text bg-transparent text-base text-transparent caret-transparent outline-none selection:bg-transparent disabled:cursor-not-allowed\"\n />\n </div>\n );\n}\n","\"use client\";\n\nimport React, { forwardRef, useImperativeHandle, useRef } from \"react\";\nimport { Loader2Icon, SearchIcon } from \"lucide-react\";\nimport { Input } from \"./Input\";\nimport type { InputProps } from \"./types\";\n\nexport type SearchInputProps = InputProps & {\n /** Enter'a basılınca VE ara butonuna tıklanınca, alanın o anki değeriyle çağrılır. */\n onSearch?: (value: string) => void;\n /** Arama sürüyor — ara ikonu yerine dönen gösterge. Alan yazılabilir kalır. */\n loading?: boolean;\n /** Ara butonunun erişilebilir adı. Varsayılan: `\"Ara\"`. */\n searchLabel?: string;\n};\n\n/**\n * Faz 15: `onSearch` eskiden YALNIZCA butona tıklanınca çağrılıyordu — Enter\n * sadece `onPressEnter`'ı tetikliyordu, klavyeyle arama yapan kullanıcı sonuç\n * alamıyordu. Butonun erişilebilir adı yoktu. Mobil klavyede Enter tuşu artık\n * \"Ara\" etiketli (`enterKeyHint=\"search\"`).\n */\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n ({ icon, iconPosition = \"end\", onSearch, onPressEnter, loading = false, searchLabel = \"Ara\", ...rest }, ref) => {\n const inputRef = useRef<HTMLInputElement>(null);\n useImperativeHandle(ref, () => inputRef.current!, []);\n\n const search = () => onSearch?.(inputRef.current?.value ?? \"\");\n\n const handlePressEnter = (e: React.KeyboardEvent<HTMLInputElement>) => {\n search();\n onPressEnter?.(e);\n };\n\n const searchButton = (\n <button\n type=\"button\"\n aria-label={searchLabel}\n onClick={search}\n disabled={rest.disabled}\n className=\"flex size-6 cursor-pointer select-none items-center justify-center rounded-sm hover:text-mari-foreground focus-visible:outline-2 focus-visible:outline-mari-ring\"\n >\n {loading ? <Loader2Icon size={16} className=\"animate-spin\" aria-hidden /> : <SearchIcon size={16} aria-hidden />}\n </button>\n );\n\n return (\n <Input\n ref={inputRef}\n icon={icon ?? searchButton}\n iconPosition={iconPosition}\n onPressEnter={handlePressEnter}\n enterKeyHint=\"search\"\n aria-busy={loading || undefined}\n {...rest}\n />\n );\n }\n);\n\nSearchInput.displayName = \"SearchInput\";\n"],"mappings":"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","names":["useState","jsx","useState","forwardRef","useEffect","useRef","cn","useControllableState","jsx","jsxs","forwardRef","useRef","useControllableState","useEffect","cn","React","useEffect","useRef","useState","cn","React","useRef","useState","cn","useControllableState","jsx","jsxs","useControllableState","useState","useRef","cn","React","jsx","jsxs","useState","useRef","useEffect","cn","React","forwardRef","useImperativeHandle","useRef","jsx","forwardRef","useRef","useImperativeHandle"]}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
findAutofocus,
|
|
5
|
+
firstFocusable,
|
|
6
|
+
getFocusables
|
|
7
|
+
} from "./chunk-JNZODUXP.js";
|
|
8
|
+
import {
|
|
9
|
+
ContentSkeleton
|
|
10
|
+
} from "./chunk-V7KDUUV6.js";
|
|
11
|
+
import {
|
|
12
|
+
SkeletonBlock
|
|
13
|
+
} from "./chunk-NPM7IDYV.js";
|
|
14
|
+
import {
|
|
15
|
+
FLOATING_ARROW_GAP_PX,
|
|
16
|
+
FLOATING_ARROW_INSET_PX,
|
|
17
|
+
FLOATING_EDGE_PX,
|
|
18
|
+
FLOATING_GAP_PX,
|
|
19
|
+
FloatingArrow
|
|
20
|
+
} from "./chunk-S66GKX2W.js";
|
|
21
|
+
import {
|
|
22
|
+
useFloatingPosition
|
|
23
|
+
} from "./chunk-3ABWBQCS.js";
|
|
24
|
+
import {
|
|
25
|
+
elevationClass
|
|
26
|
+
} from "./chunk-TCYDVNSU.js";
|
|
27
|
+
|
|
28
|
+
// src/popover/Popover.tsx
|
|
29
|
+
import React, { isValidElement, useEffect, useId, useRef } from "react";
|
|
30
|
+
import { createPortal } from "react-dom";
|
|
31
|
+
import { cn, useControllableState } from "@mari-ui/core";
|
|
32
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
33
|
+
var HOVER_OPEN_MS = 100;
|
|
34
|
+
var HOVER_CLOSE_MS = 150;
|
|
35
|
+
var PLACEHOLDER = /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 py-0.5", children: [
|
|
36
|
+
/* @__PURE__ */ jsx(SkeletonBlock, { active: true, width: "10rem", height: "0.875rem", radius: "sm" }),
|
|
37
|
+
/* @__PURE__ */ jsx(SkeletonBlock, { active: true, width: "14rem", height: "0.75rem", radius: "sm" })
|
|
38
|
+
] });
|
|
39
|
+
var triggerEl = (anchor) => anchor ? firstFocusable(anchor) ?? anchor : null;
|
|
40
|
+
function useDismiss(open, anchorRef, panelRef, close) {
|
|
41
|
+
const closeRef = useRef(close);
|
|
42
|
+
closeRef.current = close;
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
if (!open) return;
|
|
45
|
+
const onPointerDown = (e) => {
|
|
46
|
+
const target = e.target;
|
|
47
|
+
if (anchorRef.current?.contains(target) || panelRef.current?.contains(target)) return;
|
|
48
|
+
closeRef.current();
|
|
49
|
+
};
|
|
50
|
+
const onKeyDown = (e) => {
|
|
51
|
+
if (e.key === "Escape") {
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
const focusWasInside = panelRef.current?.contains(document.activeElement) || anchorRef.current?.contains(document.activeElement);
|
|
54
|
+
closeRef.current();
|
|
55
|
+
if (focusWasInside) triggerEl(anchorRef.current)?.focus();
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const panel = panelRef.current;
|
|
59
|
+
if (e.key !== "Tab" || !panel?.contains(document.activeElement)) return;
|
|
60
|
+
const items = getFocusables(panel);
|
|
61
|
+
const atEnd = e.shiftKey ? document.activeElement === (items[0] ?? null) || items.length === 0 : document.activeElement === (items.at(-1) ?? null) || items.length === 0;
|
|
62
|
+
if (!atEnd) return;
|
|
63
|
+
triggerEl(anchorRef.current)?.focus();
|
|
64
|
+
if (e.shiftKey) e.preventDefault();
|
|
65
|
+
closeRef.current();
|
|
66
|
+
};
|
|
67
|
+
document.addEventListener("pointerdown", onPointerDown);
|
|
68
|
+
document.addEventListener("keydown", onKeyDown, true);
|
|
69
|
+
return () => {
|
|
70
|
+
document.removeEventListener("pointerdown", onPointerDown);
|
|
71
|
+
document.removeEventListener("keydown", onKeyDown, true);
|
|
72
|
+
};
|
|
73
|
+
}, [open, anchorRef, panelRef]);
|
|
74
|
+
}
|
|
75
|
+
function useFocusOnOpen(open, positioned, moveFocus, panelRef) {
|
|
76
|
+
const done = useRef(false);
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
if (!open) {
|
|
79
|
+
done.current = false;
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (!moveFocus || !positioned || done.current) return;
|
|
83
|
+
done.current = true;
|
|
84
|
+
const panel = panelRef.current;
|
|
85
|
+
if (panel) (findAutofocus(panel) ?? firstFocusable(panel) ?? panel).focus();
|
|
86
|
+
}, [open, positioned, moveFocus, panelRef]);
|
|
87
|
+
}
|
|
88
|
+
function useReturnFocus(open, anchorRef) {
|
|
89
|
+
const focusInside = useRef(false);
|
|
90
|
+
useEffect(() => {
|
|
91
|
+
if (open || !focusInside.current) return;
|
|
92
|
+
focusInside.current = false;
|
|
93
|
+
triggerEl(anchorRef.current)?.focus();
|
|
94
|
+
}, [open, anchorRef]);
|
|
95
|
+
return {
|
|
96
|
+
onFocus: () => focusInside.current = true,
|
|
97
|
+
onBlur: (e) => {
|
|
98
|
+
if (!e.currentTarget.contains(e.relatedTarget)) focusInside.current = false;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function useHoverIntent(setOpen) {
|
|
103
|
+
const timer = useRef(void 0);
|
|
104
|
+
useEffect(() => () => clearTimeout(timer.current), []);
|
|
105
|
+
const schedule = (next, ms) => {
|
|
106
|
+
clearTimeout(timer.current);
|
|
107
|
+
timer.current = setTimeout(() => setOpen(next), ms);
|
|
108
|
+
};
|
|
109
|
+
return { enter: () => schedule(true, HOVER_OPEN_MS), leave: () => schedule(false, HOVER_CLOSE_MS), cancel: () => clearTimeout(timer.current) };
|
|
110
|
+
}
|
|
111
|
+
function Popover({
|
|
112
|
+
title,
|
|
113
|
+
content,
|
|
114
|
+
children,
|
|
115
|
+
trigger = "click",
|
|
116
|
+
placement = "top",
|
|
117
|
+
arrow = true,
|
|
118
|
+
open: openProp,
|
|
119
|
+
defaultOpen = false,
|
|
120
|
+
onOpenChange,
|
|
121
|
+
"aria-label": ariaLabel,
|
|
122
|
+
"aria-labelledby": ariaLabelledBy,
|
|
123
|
+
"aria-describedby": ariaDescribedBy,
|
|
124
|
+
role = "dialog",
|
|
125
|
+
className,
|
|
126
|
+
skeleton = false
|
|
127
|
+
}) {
|
|
128
|
+
const [open, setOpen] = useControllableState({ value: openProp, defaultValue: defaultOpen, onChange: onOpenChange });
|
|
129
|
+
const anchorRef = useRef(null);
|
|
130
|
+
const panelRef = useRef(null);
|
|
131
|
+
const panelId = useId();
|
|
132
|
+
const titleId = useId();
|
|
133
|
+
const coords = useFloatingPosition(open, anchorRef, panelRef, {
|
|
134
|
+
placement,
|
|
135
|
+
gap: arrow ? FLOATING_ARROW_GAP_PX : FLOATING_GAP_PX,
|
|
136
|
+
edge: FLOATING_EDGE_PX,
|
|
137
|
+
arrow: arrow ? { inset: FLOATING_ARROW_INSET_PX, pointAtCenter: false } : void 0
|
|
138
|
+
});
|
|
139
|
+
const hover = useHoverIntent(setOpen);
|
|
140
|
+
useDismiss(open, anchorRef, panelRef, () => setOpen(false));
|
|
141
|
+
useFocusOnOpen(open, coords !== null, trigger === "click", panelRef);
|
|
142
|
+
const trackFocus = useReturnFocus(open, anchorRef);
|
|
143
|
+
const decorated = isValidElement(children) ? React.cloneElement(children, {
|
|
144
|
+
"aria-expanded": open,
|
|
145
|
+
"aria-haspopup": "dialog",
|
|
146
|
+
"aria-controls": open ? panelId : void 0
|
|
147
|
+
}) : children;
|
|
148
|
+
const triggerHandlers = {
|
|
149
|
+
click: { onClick: () => setOpen(!open) },
|
|
150
|
+
hover: { onMouseEnter: hover.enter, onMouseLeave: hover.leave, onFocus: () => setOpen(true), onBlur: (e) => !panelRef.current?.contains(e.relatedTarget) && hover.leave() },
|
|
151
|
+
focus: { onFocus: () => setOpen(true), onBlur: (e) => !panelRef.current?.contains(e.relatedTarget) && setOpen(false) }
|
|
152
|
+
}[trigger];
|
|
153
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
154
|
+
/* @__PURE__ */ jsx("span", { ref: anchorRef, className: "inline-flex", ...triggerHandlers, children: decorated }),
|
|
155
|
+
open && /* @__PURE__ */ jsx(
|
|
156
|
+
PopoverPanel,
|
|
157
|
+
{
|
|
158
|
+
panelRef,
|
|
159
|
+
id: panelId,
|
|
160
|
+
titleId,
|
|
161
|
+
title,
|
|
162
|
+
content,
|
|
163
|
+
ariaLabel,
|
|
164
|
+
ariaLabelledBy,
|
|
165
|
+
ariaDescribedBy,
|
|
166
|
+
role,
|
|
167
|
+
focusTracking: trackFocus,
|
|
168
|
+
coords,
|
|
169
|
+
arrow,
|
|
170
|
+
skeleton,
|
|
171
|
+
hover: trigger === "hover" ? hover : void 0,
|
|
172
|
+
className
|
|
173
|
+
}
|
|
174
|
+
)
|
|
175
|
+
] });
|
|
176
|
+
}
|
|
177
|
+
function PopoverPanel({
|
|
178
|
+
panelRef,
|
|
179
|
+
id,
|
|
180
|
+
titleId,
|
|
181
|
+
title,
|
|
182
|
+
content,
|
|
183
|
+
ariaLabel,
|
|
184
|
+
ariaLabelledBy,
|
|
185
|
+
ariaDescribedBy,
|
|
186
|
+
role,
|
|
187
|
+
focusTracking,
|
|
188
|
+
coords,
|
|
189
|
+
arrow,
|
|
190
|
+
skeleton,
|
|
191
|
+
hover,
|
|
192
|
+
className
|
|
193
|
+
}) {
|
|
194
|
+
if (typeof document === "undefined") return null;
|
|
195
|
+
const labelledBy = ariaLabelledBy ?? (title ? titleId : void 0);
|
|
196
|
+
return createPortal(
|
|
197
|
+
/* @__PURE__ */ jsxs(
|
|
198
|
+
"div",
|
|
199
|
+
{
|
|
200
|
+
ref: panelRef,
|
|
201
|
+
id,
|
|
202
|
+
role,
|
|
203
|
+
tabIndex: -1,
|
|
204
|
+
"aria-labelledby": labelledBy,
|
|
205
|
+
"aria-label": labelledBy ? void 0 : ariaLabel,
|
|
206
|
+
"aria-describedby": ariaDescribedBy,
|
|
207
|
+
"aria-busy": skeleton || void 0,
|
|
208
|
+
onFocus: focusTracking.onFocus,
|
|
209
|
+
onBlur: focusTracking.onBlur,
|
|
210
|
+
onMouseEnter: hover?.cancel,
|
|
211
|
+
onMouseLeave: hover?.leave,
|
|
212
|
+
className: cn(
|
|
213
|
+
"fixed z-mari-dropdown w-max max-w-[min(22rem,calc(100vw-1rem))] rounded-lg bg-mari-surface p-3 text-sm text-mari-foreground outline-none",
|
|
214
|
+
"transition-opacity duration-150 starting:opacity-0 motion-reduce:transition-none",
|
|
215
|
+
elevationClass.md,
|
|
216
|
+
!coords && "invisible",
|
|
217
|
+
className
|
|
218
|
+
),
|
|
219
|
+
style: { top: coords?.top ?? 0, left: coords?.left ?? 0 },
|
|
220
|
+
children: [
|
|
221
|
+
arrow && coords && /* @__PURE__ */ jsx(FloatingArrow, { side: coords.side, offset: coords.arrowOffset }),
|
|
222
|
+
/* @__PURE__ */ jsx(ContentSkeleton, { on: skeleton, fallback: PLACEHOLDER, children: /* @__PURE__ */ jsxs("div", { children: [
|
|
223
|
+
title && /* @__PURE__ */ jsx("p", { id: titleId, className: "mb-1 font-semibold", children: title }),
|
|
224
|
+
content
|
|
225
|
+
] }) })
|
|
226
|
+
]
|
|
227
|
+
}
|
|
228
|
+
),
|
|
229
|
+
document.body
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export {
|
|
234
|
+
Popover
|
|
235
|
+
};
|
|
236
|
+
//# sourceMappingURL=chunk-QDFDMWXD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/popover/Popover.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { isValidElement, useEffect, useId, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn, useControllableState } from \"@mari-ui/core\";\nimport { ContentSkeleton } from \"../lib/ContentSkeleton\";\nimport { elevationClass } from \"../lib/elevationClass\";\nimport { FLOATING_ARROW_GAP_PX, FLOATING_ARROW_INSET_PX, FLOATING_EDGE_PX, FLOATING_GAP_PX, FloatingArrow } from \"../lib/FloatingArrow\";\nimport { findAutofocus, firstFocusable, getFocusables } from \"../lib/overlay\";\nimport { useFloatingPosition } from \"../lib/useFloatingPosition\";\nimport { SkeletonBlock } from \"../skeleton\";\nimport type { PopoverProps } from \"./types\";\n\nexport type { PopoverProps };\n\nconst HOVER_OPEN_MS = 100;\nconst HOVER_CLOSE_MS = 150;\n\nconst PLACEHOLDER = (\n <div className=\"flex flex-col gap-2 py-0.5\">\n <SkeletonBlock active width=\"10rem\" height=\"0.875rem\" radius=\"sm\" />\n <SkeletonBlock active width=\"14rem\" height=\"0.75rem\" radius=\"sm\" />\n </div>\n);\n\ntype ElRef = React.RefObject<HTMLElement | null>;\n\n/** Sarmalayıcının içindeki gerçek tetikleyici (odak buraya döner). */\nconst triggerEl = (anchor: HTMLElement | null) => (anchor ? (firstFocusable(anchor) ?? anchor) : null);\n\n/**\n * Kapatma yolları: Escape (odak tetikleyiciye döner), dışarı tıklama (odağa\n * dokunmaz — kullanıcı başka bir yere tıkladı), panelin kenarından Tab ile\n * çıkma (odak tetikleyiciye döner, Tab doğal akışla SONRAKİ öğeye geçer;\n * Shift+Tab tetikleyicide kalır).\n */\nfunction useDismiss(open: boolean, anchorRef: ElRef, panelRef: ElRef, close: () => void) {\n const closeRef = useRef(close);\n closeRef.current = close;\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (e: PointerEvent) => {\n const target = e.target as Node;\n if (anchorRef.current?.contains(target) || panelRef.current?.contains(target)) return;\n closeRef.current();\n };\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n // Modal içinde: yalnız Popover kapansın (Modal `defaultPrevented`ı görür).\n e.preventDefault();\n const focusWasInside = panelRef.current?.contains(document.activeElement) || anchorRef.current?.contains(document.activeElement);\n closeRef.current();\n if (focusWasInside) triggerEl(anchorRef.current)?.focus();\n return;\n }\n const panel = panelRef.current;\n if (e.key !== \"Tab\" || !panel?.contains(document.activeElement)) return;\n const items = getFocusables(panel);\n const atEnd = e.shiftKey ? document.activeElement === (items[0] ?? null) || items.length === 0 : document.activeElement === (items.at(-1) ?? null) || items.length === 0;\n if (!atEnd) return;\n // Panel body'ye portal edildiğinden DOM sırası tetikleyiciden sonra değil: önce tetikleyiciye dön.\n triggerEl(anchorRef.current)?.focus();\n if (e.shiftKey) e.preventDefault();\n closeRef.current();\n };\n document.addEventListener(\"pointerdown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n document.removeEventListener(\"pointerdown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown, true);\n };\n }, [open, anchorRef, panelRef]);\n}\n\n/** Tıklamayla açılınca odak panele: `data-autofocus` → ilk odaklanabilir → panelin kendisi. Konum ölçülene kadar beklenir (görünmez öğeye odak verilemez). */\nfunction useFocusOnOpen(open: boolean, positioned: boolean, moveFocus: boolean, panelRef: ElRef) {\n const done = useRef(false);\n useEffect(() => {\n if (!open) {\n done.current = false;\n return;\n }\n if (!moveFocus || !positioned || done.current) return;\n done.current = true;\n const panel = panelRef.current;\n if (panel) (findAutofocus(panel) ?? firstFocusable(panel) ?? panel).focus();\n }, [open, positioned, moveFocus, panelRef]);\n}\n\n/**\n * Panel, odak İÇİNDEYKEN kapanırsa (içindeki \"Vazgeç\"/\"Uygula\" gibi bir\n * düğmeyle ya da kontrollü `open` ile) odak tetikleyiciye döner — panel DOM'dan\n * kalkınca odak aksi halde `<body>`ye düşüyordu. Dışarı tıklamada odak zaten\n * tıklanan yere geçtiği için dokunulmaz.\n */\nfunction useReturnFocus(open: boolean, anchorRef: ElRef) {\n const focusInside = useRef(false);\n useEffect(() => {\n if (open || !focusInside.current) return;\n focusInside.current = false;\n triggerEl(anchorRef.current)?.focus();\n }, [open, anchorRef]);\n return {\n onFocus: () => (focusInside.current = true),\n onBlur: (e: React.FocusEvent) => {\n if (!e.currentTarget.contains(e.relatedTarget as Node)) focusInside.current = false;\n },\n };\n}\n\n/** Üzerine gelme niyeti: açarken kısa gecikme, kapatırken tetikleyiciden panele geçecek kadar süre. */\nfunction useHoverIntent(setOpen: (open: boolean) => void) {\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n useEffect(() => () => clearTimeout(timer.current), []);\n const schedule = (next: boolean, ms: number) => {\n clearTimeout(timer.current);\n timer.current = setTimeout(() => setOpen(next), ms);\n };\n return { enter: () => schedule(true, HOVER_OPEN_MS), leave: () => schedule(false, HOVER_CLOSE_MS), cancel: () => clearTimeout(timer.current) };\n}\n\n/**\n * Faz 16.2 — yapı ant.design Popover'dan: başlık + etkileşimli içerik taşıyan\n * yüzen panel. Tooltip'ten farkı: içinde düğme/form olabilir, bu yüzden\n * gerçek bir (modal olmayan) dialog. Panel, konum ve ok Dropdown ile ortak\n * (`useFloatingPosition`, `FloatingArrow`).\n *\n * Erişilebilirlik: tetikleyici `aria-expanded` + `aria-haspopup=\"dialog\"` +\n * (açıkken) `aria-controls`; panel `role=\"dialog\"`, başlık adıdır. Tıklamayla\n * açılınca odak panele geçer; Escape/dışarı tıklama/kenardan Tab kapatır.\n * `hover` modunda klavye odağı da açar (yalnız fareyle erişilen içerik olmasın).\n */\nexport function Popover({\n title,\n content,\n children,\n trigger = \"click\",\n placement = \"top\",\n arrow = true,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n role = \"dialog\",\n className,\n skeleton = false,\n}: Readonly<PopoverProps>) {\n const [open, setOpen] = useControllableState<boolean>({ value: openProp, defaultValue: defaultOpen, onChange: onOpenChange });\n const anchorRef = useRef<HTMLSpanElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const panelId = useId();\n const titleId = useId();\n const coords = useFloatingPosition(open, anchorRef, panelRef, {\n placement,\n gap: arrow ? FLOATING_ARROW_GAP_PX : FLOATING_GAP_PX,\n edge: FLOATING_EDGE_PX,\n arrow: arrow ? { inset: FLOATING_ARROW_INSET_PX, pointAtCenter: false } : undefined,\n });\n const hover = useHoverIntent(setOpen);\n\n useDismiss(open, anchorRef, panelRef, () => setOpen(false));\n useFocusOnOpen(open, coords !== null, trigger === \"click\", panelRef);\n const trackFocus = useReturnFocus(open, anchorRef);\n\n const decorated = isValidElement<Record<string, unknown>>(children)\n ? React.cloneElement(children, {\n \"aria-expanded\": open,\n \"aria-haspopup\": \"dialog\",\n \"aria-controls\": open ? panelId : undefined,\n })\n : children;\n\n const triggerHandlers = {\n click: { onClick: () => setOpen(!open) },\n hover: { onMouseEnter: hover.enter, onMouseLeave: hover.leave, onFocus: () => setOpen(true), onBlur: (e: React.FocusEvent) => !panelRef.current?.contains(e.relatedTarget as Node) && hover.leave() },\n focus: { onFocus: () => setOpen(true), onBlur: (e: React.FocusEvent) => !panelRef.current?.contains(e.relatedTarget as Node) && setOpen(false) },\n }[trigger];\n\n return (\n <>\n {/* Sarmalayıcı etkileşimli değil — olaylar içindeki gerçek tetikleyiciden kabarır. */}\n <span ref={anchorRef} className=\"inline-flex\" {...triggerHandlers}>\n {decorated}\n </span>\n {open && (\n <PopoverPanel\n panelRef={panelRef}\n id={panelId}\n titleId={titleId}\n title={title}\n content={content}\n ariaLabel={ariaLabel}\n ariaLabelledBy={ariaLabelledBy}\n ariaDescribedBy={ariaDescribedBy}\n role={role}\n focusTracking={trackFocus}\n coords={coords}\n arrow={arrow}\n skeleton={skeleton}\n hover={trigger === \"hover\" ? hover : undefined}\n className={className}\n />\n )}\n </>\n );\n}\n\ninterface PopoverPanelProps {\n panelRef: React.RefObject<HTMLDivElement | null>;\n id: string;\n titleId: string;\n title: React.ReactNode;\n content: React.ReactNode;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaDescribedBy?: string;\n role: \"dialog\" | \"alertdialog\";\n focusTracking: ReturnType<typeof useReturnFocus>;\n coords: ReturnType<typeof useFloatingPosition>;\n arrow: boolean;\n skeleton: boolean;\n /** Yalnız `hover` modunda: panelin üstüne gelmek kapanmayı iptal eder. */\n hover?: ReturnType<typeof useHoverIntent>;\n className?: string;\n}\n\nfunction PopoverPanel({\n panelRef,\n id,\n titleId,\n title,\n content,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n role,\n focusTracking,\n coords,\n arrow,\n skeleton,\n hover,\n className,\n}: PopoverPanelProps) {\n if (typeof document === \"undefined\") return null;\n const labelledBy = ariaLabelledBy ?? (title ? titleId : undefined);\n return createPortal(\n <div\n ref={panelRef}\n id={id}\n role={role}\n tabIndex={-1}\n aria-labelledby={labelledBy}\n aria-label={labelledBy ? undefined : ariaLabel}\n aria-describedby={ariaDescribedBy}\n aria-busy={skeleton || undefined}\n onFocus={focusTracking.onFocus}\n onBlur={focusTracking.onBlur}\n onMouseEnter={hover?.cancel}\n onMouseLeave={hover?.leave}\n className={cn(\n \"fixed z-mari-dropdown w-max max-w-[min(22rem,calc(100vw-1rem))] rounded-lg bg-mari-surface p-3 text-sm text-mari-foreground outline-none\",\n \"transition-opacity duration-150 starting:opacity-0 motion-reduce:transition-none\",\n elevationClass.md,\n !coords && \"invisible\",\n className\n )}\n style={{ top: coords?.top ?? 0, left: coords?.left ?? 0 }}\n >\n {arrow && coords && <FloatingArrow side={coords.side} offset={coords.arrowOffset} />}\n <ContentSkeleton on={skeleton} fallback={PLACEHOLDER}>\n <div>\n {title && (\n <p id={titleId} className=\"mb-1 font-semibold\">\n {title}\n </p>\n )}\n {content}\n </div>\n </ContentSkeleton>\n </div>,\n document.body\n );\n}\n"],"mappings":"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","names":[]}
|