@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/lib/colorClasses.ts"],"sourcesContent":["import { cn, type ColorRole, type ColorVariantStyle } from \"@mari-ui/core\";\n\n/**\n * `@mari-ui/tokens`'ın ürettiği `--color-mari-*` CSS değişkenlerine karşılık\n * gelen Tailwind utility class'ları.\n *\n * ÖNEMLİ: Her class ismi burada HARFİ HARFİNE, literal string olarak\n * yazılıdır — `` `bg-mari-${role}-solid` `` gibi bir template literal\n * KULLANILMAZ. Sebebi: Tailwind'in derleme-zamanı tarayıcısı kaynak\n * dosyanın METNİNİ okur, kodu çalıştırmaz. `${role}` içeren bir satır\n * çalışma zamanında \"bg-mari-primary-solid\" olur ama tarayıcı bunu asla\n * göremez — kaynak metinde hâlâ kesik bir template literal olarak durur.\n * Bu repoda `Skeleton`/`Tag`/`Loading`'i sessizce bozan hata tam olarak\n * buydu (bkz. plan Faz 3); burada aynı hatayı tekrarlamamak için tabloyu\n * elle, tam string'lerle yazıyoruz.\n */\nexport const bgSolidClass: Record<ColorRole, string> = {\n primary: \"bg-mari-primary-solid\",\n accent: \"bg-mari-accent-solid\",\n success: \"bg-mari-success-solid\",\n error: \"bg-mari-error-solid\",\n warning: \"bg-mari-warning-solid\",\n info: \"bg-mari-info-solid\",\n neutral: \"bg-mari-neutral-solid\",\n};\n\nexport const bgSolidHoverClass: Record<ColorRole, string> = {\n primary: \"hover:bg-mari-primary-solid-hover\",\n accent: \"hover:bg-mari-accent-solid-hover\",\n success: \"hover:bg-mari-success-solid-hover\",\n error: \"hover:bg-mari-error-solid-hover\",\n warning: \"hover:bg-mari-warning-solid-hover\",\n info: \"hover:bg-mari-info-solid-hover\",\n neutral: \"hover:bg-mari-neutral-solid-hover\",\n};\n\n/** Dolgu üzerindeki ikon/anahtar topu, solidContrast ile aynı kontrastı korur. */\nexport const bgSolidContrastClass: Record<ColorRole, string> = {\n primary: \"bg-mari-primary-solid-contrast\",\n accent: \"bg-mari-accent-solid-contrast\",\n success: \"bg-mari-success-solid-contrast\",\n error: \"bg-mari-error-solid-contrast\",\n warning: \"bg-mari-warning-solid-contrast\",\n info: \"bg-mari-info-solid-contrast\",\n neutral: \"bg-mari-neutral-solid-contrast\",\n};\n\nexport const textSolidContrastClass: Record<ColorRole, string> = {\n primary: \"text-mari-primary-solid-contrast\",\n accent: \"text-mari-accent-solid-contrast\",\n success: \"text-mari-success-solid-contrast\",\n error: \"text-mari-error-solid-contrast\",\n warning: \"text-mari-warning-solid-contrast\",\n info: \"text-mari-info-solid-contrast\",\n neutral: \"text-mari-neutral-solid-contrast\",\n};\n\nexport const bgSubtleClass: Record<ColorRole, string> = {\n primary: \"bg-mari-primary-subtle\",\n accent: \"bg-mari-accent-subtle\",\n success: \"bg-mari-success-subtle\",\n error: \"bg-mari-error-subtle\",\n warning: \"bg-mari-warning-subtle\",\n info: \"bg-mari-info-subtle\",\n neutral: \"bg-mari-neutral-subtle\",\n};\n\nexport const textSubtleContrastClass: Record<ColorRole, string> = {\n primary: \"text-mari-primary-subtle-contrast\",\n accent: \"text-mari-accent-subtle-contrast\",\n success: \"text-mari-success-subtle-contrast\",\n error: \"text-mari-error-subtle-contrast\",\n warning: \"text-mari-warning-subtle-contrast\",\n info: \"text-mari-info-subtle-contrast\",\n neutral: \"text-mari-neutral-subtle-contrast\",\n};\n\nexport const textClass: Record<ColorRole, string> = {\n primary: \"text-mari-primary\",\n accent: \"text-mari-accent\",\n success: \"text-mari-success\",\n error: \"text-mari-error\",\n warning: \"text-mari-warning\",\n info: \"text-mari-info\",\n neutral: \"text-mari-neutral\",\n};\n\n/** `textClass`in `hover:` varyantı — örn. Menu öğelerinde primary rengi SADECE hover metin rengi olarak uygulamak için. */\nexport const textHoverClass: Record<ColorRole, string> = {\n primary: \"hover:text-mari-primary\",\n accent: \"hover:text-mari-accent\",\n success: \"hover:text-mari-success\",\n error: \"hover:text-mari-error\",\n warning: \"hover:text-mari-warning\",\n info: \"hover:text-mari-info\",\n neutral: \"hover:text-mari-neutral\",\n};\n\nexport const borderColorClass: Record<ColorRole, string> = {\n primary: \"border-mari-primary-border\",\n accent: \"border-mari-accent-border\",\n success: \"border-mari-success-border\",\n error: \"border-mari-error-border\",\n warning: \"border-mari-warning-border\",\n info: \"border-mari-info-border\",\n neutral: \"border-mari-neutral-border\",\n};\n\n/** Rolün KENDİ rengiyle (açık `-border` tonuyla değil) çizilen kenarlık — `outline` varyantı bunu kullanır. */\nexport const borderStrongColorClass: Record<ColorRole, string> = {\n primary: \"border-mari-primary\",\n accent: \"border-mari-accent\",\n success: \"border-mari-success\",\n error: \"border-mari-error\",\n warning: \"border-mari-warning\",\n info: \"border-mari-info\",\n neutral: \"border-mari-neutral\",\n};\n\n/** `bgSubtleClass`in `hover:` varyantı — outline/ghost butonların hover dolgusu. */\nexport const bgSubtleHoverClass: Record<ColorRole, string> = {\n primary: \"hover:bg-mari-primary-subtle\",\n accent: \"hover:bg-mari-accent-subtle\",\n success: \"hover:bg-mari-success-subtle\",\n error: \"hover:bg-mari-error-subtle\",\n warning: \"hover:bg-mari-warning-subtle\",\n info: \"hover:bg-mari-info-subtle\",\n neutral: \"hover:bg-mari-neutral-subtle\",\n};\n\n/** `borderColorClass`in `hover:` varyantı. */\nexport const borderColorHoverClass: Record<ColorRole, string> = {\n primary: \"hover:border-mari-primary-border\",\n accent: \"hover:border-mari-accent-border\",\n success: \"hover:border-mari-success-border\",\n error: \"hover:border-mari-error-border\",\n warning: \"hover:border-mari-warning-border\",\n info: \"hover:border-mari-info-border\",\n neutral: \"hover:border-mari-neutral-border\",\n};\n\n/** SVG `fill`/`stroke` için — örn. Tooltip'in ok işareti. */\nexport const fillSolidClass: Record<ColorRole, string> = {\n primary: \"fill-mari-primary-solid\",\n accent: \"fill-mari-accent-solid\",\n success: \"fill-mari-success-solid\",\n error: \"fill-mari-error-solid\",\n warning: \"fill-mari-warning-solid\",\n info: \"fill-mari-info-solid\",\n neutral: \"fill-mari-neutral-solid\",\n};\n\nexport const strokeSolidClass: Record<ColorRole, string> = {\n primary: \"stroke-mari-primary-solid\",\n accent: \"stroke-mari-accent-solid\",\n success: \"stroke-mari-success-solid\",\n error: \"stroke-mari-error-solid\",\n warning: \"stroke-mari-warning-solid\",\n info: \"stroke-mari-info-solid\",\n neutral: \"stroke-mari-neutral-solid\",\n};\n\n/** `soft` varyantlı yüzeyler (örn. Tooltip'in soft rengi) için — arka planla eşleşsin diye SVG `fill`. */\nexport const fillSubtleClass: Record<ColorRole, string> = {\n primary: \"fill-mari-primary-subtle\",\n accent: \"fill-mari-accent-subtle\",\n success: \"fill-mari-success-subtle\",\n error: \"fill-mari-error-subtle\",\n warning: \"fill-mari-warning-subtle\",\n info: \"fill-mari-info-subtle\",\n neutral: \"fill-mari-neutral-subtle\",\n};\n\nexport const strokeSubtleClass: Record<ColorRole, string> = {\n primary: \"stroke-mari-primary-subtle\",\n accent: \"stroke-mari-accent-subtle\",\n success: \"stroke-mari-success-subtle\",\n error: \"stroke-mari-error-subtle\",\n warning: \"stroke-mari-warning-subtle\",\n info: \"stroke-mari-info-subtle\",\n neutral: \"stroke-mari-neutral-subtle\",\n};\n\n/**\n * `resolveColorVariant()`'ın döndürdüğü soyut token referanslarını gerçek\n * Tailwind class'larına çevirir. Web renderer'ının (bu paketin) tek görevi\n * budur — aynı soyut çıktı, `@mari-ui/native`'de `StyleSheet` objesine\n * çevrilir.\n */\nexport function colorVariantToClassName(style: ColorVariantStyle): string {\n const slotTable = {\n text: textClass,\n solid: bgSolidClass,\n solidContrast: textSolidContrastClass,\n solidHover: bgSolidHoverClass,\n subtle: bgSubtleClass,\n subtleContrast: textSubtleContrastClass,\n border: borderColorClass,\n } as const;\n\n // `background`/`foreground` slot adını doğrudan kullanır; `border` ve\n // `hoverBackground` ise AYNI slot'u kendi CSS özelliğine çevirmek zorunda\n // (örn. `text` slot'u bir kenarlıkta `border-mari-primary`, bir metinde\n // `text-mari-primary` demektir — native tarafında ikisi de aynı ham renge\n // çözüldüğü için `slot` seti değişmeden kalıyor).\n const borderSlotTable = { text: borderStrongColorClass, border: borderColorClass } as const;\n const hoverBgSlotTable = { solidHover: bgSolidHoverClass, subtle: bgSubtleHoverClass } as const;\n\n const bg = style.background ? slotTable[style.background.slot][style.background.role] : undefined;\n const hoverBg = style.hoverBackground\n ? hoverBgSlotTable[style.hoverBackground.slot as keyof typeof hoverBgSlotTable]?.[style.hoverBackground.role]\n : undefined;\n const text = style.foreground ? slotTable[style.foreground.slot][style.foreground.role] : undefined;\n const border = style.border ? borderSlotTable[style.border.slot as keyof typeof borderSlotTable]?.[style.border.role] : undefined;\n\n return cn(bg, hoverBg, text, border, border && \"border\");\n}\n\n/**\n * Faz 15 — işaretlenebilir kontroller (Checkbox/Radio) için `checked:` önekli\n * literal tablolar. Önek runtime'da birleştirilmez (Tailwind taraması).\n * Kenarlık dolguyla AYNI (`-solid`): eskiden açık `-border` tonuydu, dolu\n * kutunun etrafında soluk bir hare gibi duruyordu ve 3:1'i geçmiyordu.\n */\nexport const checkedBgSolidClass: Record<ColorRole, string> = {\n primary: \"checked:bg-mari-primary-solid\",\n accent: \"checked:bg-mari-accent-solid\",\n success: \"checked:bg-mari-success-solid\",\n error: \"checked:bg-mari-error-solid\",\n warning: \"checked:bg-mari-warning-solid\",\n info: \"checked:bg-mari-info-solid\",\n neutral: \"checked:bg-mari-neutral-solid\",\n};\n\nexport const checkedBgSolidHoverClass: Record<ColorRole, string> = {\n primary: \"checked:hover:bg-mari-primary-solid-hover\",\n accent: \"checked:hover:bg-mari-accent-solid-hover\",\n success: \"checked:hover:bg-mari-success-solid-hover\",\n error: \"checked:hover:bg-mari-error-solid-hover\",\n warning: \"checked:hover:bg-mari-warning-solid-hover\",\n info: \"checked:hover:bg-mari-info-solid-hover\",\n neutral: \"checked:hover:bg-mari-neutral-solid-hover\",\n};\n\nexport const checkedBorderSolidClass: Record<ColorRole, string> = {\n primary: \"checked:border-mari-primary-solid\",\n accent: \"checked:border-mari-accent-solid\",\n success: \"checked:border-mari-success-solid\",\n error: \"checked:border-mari-error-solid\",\n warning: \"checked:border-mari-warning-solid\",\n info: \"checked:border-mari-info-solid\",\n neutral: \"checked:border-mari-neutral-solid\",\n};\n\n/** Radio'nun dış halkası seçiliyken rol rengi (outline varyantı — içi boş, nokta ayrı). */\nexport const checkedBorderStrongClass: Record<ColorRole, string> = {\n primary: \"checked:border-mari-primary\",\n accent: \"checked:border-mari-accent\",\n success: \"checked:border-mari-success\",\n error: \"checked:border-mari-error\",\n warning: \"checked:border-mari-warning\",\n info: \"checked:border-mari-info\",\n neutral: \"checked:border-mari-neutral\",\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/lib/overlay.ts
|
|
4
|
+
import { useEffect, useRef, useState } from "react";
|
|
5
|
+
var FOCUSABLE_SELECTOR = 'button:not([disabled]), a[href], input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
6
|
+
function getFocusables(root) {
|
|
7
|
+
return Array.from(root.querySelectorAll(FOCUSABLE_SELECTOR)).filter(
|
|
8
|
+
(el) => !el.closest('[aria-hidden="true"], [inert]')
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
function firstFocusable(root) {
|
|
12
|
+
return getFocusables(root)[0] ?? null;
|
|
13
|
+
}
|
|
14
|
+
function reachable(el) {
|
|
15
|
+
return el && !el.closest('[aria-hidden="true"], [inert]') ? el : null;
|
|
16
|
+
}
|
|
17
|
+
function useRefocusAfterSkeleton(open, skeleton, panelRef, getInitialFocus, closeSelector) {
|
|
18
|
+
const wasSkeleton = useRef(skeleton);
|
|
19
|
+
const getInitialFocusRef = useRef(getInitialFocus);
|
|
20
|
+
getInitialFocusRef.current = getInitialFocus;
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
const panel = panelRef.current;
|
|
23
|
+
if (open && wasSkeleton.current && !skeleton && panel) {
|
|
24
|
+
const active = document.activeElement;
|
|
25
|
+
if (active === panel || active instanceof HTMLElement && active.matches(closeSelector)) {
|
|
26
|
+
const target = getInitialFocusRef.current(panel);
|
|
27
|
+
if (target && target !== active) target.focus();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
wasSkeleton.current = skeleton;
|
|
31
|
+
}, [skeleton, open, panelRef, closeSelector]);
|
|
32
|
+
}
|
|
33
|
+
function usePresence(open, exitMs) {
|
|
34
|
+
const [mounted, setMounted] = useState(open);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (open) {
|
|
37
|
+
setMounted(true);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const timer = setTimeout(() => setMounted(false), exitMs);
|
|
41
|
+
return () => clearTimeout(timer);
|
|
42
|
+
}, [open, exitMs]);
|
|
43
|
+
return open || mounted;
|
|
44
|
+
}
|
|
45
|
+
function findAutofocus(root) {
|
|
46
|
+
const auto = root.querySelector("[data-autofocus]");
|
|
47
|
+
if (!auto || auto.closest('[aria-hidden="true"], [inert]')) return null;
|
|
48
|
+
return auto.matches(FOCUSABLE_SELECTOR) ? auto : firstFocusable(auto);
|
|
49
|
+
}
|
|
50
|
+
function useModalBehavior(open, panelRef, onClose, { closeOnEscape = true, lockScroll = true, getInitialFocus } = {}) {
|
|
51
|
+
const onCloseRef = useRef(onClose);
|
|
52
|
+
onCloseRef.current = onClose;
|
|
53
|
+
const getInitialFocusRef = useRef(getInitialFocus);
|
|
54
|
+
getInitialFocusRef.current = getInitialFocus;
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (!open) return;
|
|
57
|
+
const panel = panelRef.current;
|
|
58
|
+
const previouslyFocused = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
59
|
+
const { body, documentElement } = document;
|
|
60
|
+
const previousOverflow = body.style.overflow;
|
|
61
|
+
const previousPaddingRight = body.style.paddingRight;
|
|
62
|
+
if (lockScroll) {
|
|
63
|
+
const scrollbar = window.innerWidth - documentElement.clientWidth;
|
|
64
|
+
body.style.overflow = "hidden";
|
|
65
|
+
if (scrollbar > 0) body.style.paddingRight = `${scrollbar}px`;
|
|
66
|
+
}
|
|
67
|
+
if (panel) {
|
|
68
|
+
const target = getInitialFocusRef.current ? getInitialFocusRef.current(panel) : findAutofocus(panel) ?? firstFocusable(panel);
|
|
69
|
+
(target ?? panel).focus();
|
|
70
|
+
}
|
|
71
|
+
const handleKeyDown = (event) => {
|
|
72
|
+
if (event.key === "Escape" && closeOnEscape) {
|
|
73
|
+
if (event.defaultPrevented) return;
|
|
74
|
+
event.preventDefault();
|
|
75
|
+
onCloseRef.current();
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (event.key !== "Tab" || !panel) return;
|
|
79
|
+
const focusables = getFocusables(panel);
|
|
80
|
+
const first = focusables[0];
|
|
81
|
+
const last = focusables[focusables.length - 1];
|
|
82
|
+
if (!first || !last) {
|
|
83
|
+
event.preventDefault();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const active = document.activeElement;
|
|
87
|
+
if (event.shiftKey && (active === first || !panel.contains(active))) {
|
|
88
|
+
event.preventDefault();
|
|
89
|
+
last.focus();
|
|
90
|
+
} else if (!event.shiftKey && (active === last || !panel.contains(active))) {
|
|
91
|
+
event.preventDefault();
|
|
92
|
+
first.focus();
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
96
|
+
return () => {
|
|
97
|
+
document.removeEventListener("keydown", handleKeyDown);
|
|
98
|
+
if (lockScroll) {
|
|
99
|
+
body.style.overflow = previousOverflow;
|
|
100
|
+
body.style.paddingRight = previousPaddingRight;
|
|
101
|
+
}
|
|
102
|
+
previouslyFocused?.focus();
|
|
103
|
+
};
|
|
104
|
+
}, [open, panelRef, closeOnEscape, lockScroll]);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export {
|
|
108
|
+
getFocusables,
|
|
109
|
+
firstFocusable,
|
|
110
|
+
reachable,
|
|
111
|
+
useRefocusAfterSkeleton,
|
|
112
|
+
usePresence,
|
|
113
|
+
findAutofocus,
|
|
114
|
+
useModalBehavior
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=chunk-JNZODUXP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/overlay.ts"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState, type RefObject } from \"react\";\n\n/**\n * Kenardan açılan modal katmanların (Drawer, NavDrawer) ortak davranışı.\n * Faz 13.6'dan önce bu mantık yalnız `menu/_shared/NavDrawer.tsx`'te vardı;\n * `Drawer`da HİÇBİRİ yoktu (odak tuzağı, Escape, kaydırma kilidi, portal) —\n * kapalı Drawer DOM'da kalıyor, içindeki düğmeler Tab ile odaklanabiliyordu.\n * Artık tek yerde.\n */\n\nexport const FOCUSABLE_SELECTOR =\n 'button:not([disabled]), a[href], input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Gerçekten odaklanabilen öğeler. `aria-hidden`/`inert` bir atanın içindekiler\n * elenir: iskelette gerçek içerik `SkeletonSlot` ile görünmez kopya olarak\n * DOM'da kalır (`visibility: hidden` → `focus()` sessizce başarısız olur);\n * bunlar sayılırsa odak tuzağının ilk/son öğesi görünmez bir düğme olur ve\n * Tab takılır.\n */\nexport function getFocusables(root: ParentNode): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (el) => !el.closest('[aria-hidden=\"true\"], [inert]')\n );\n}\n\nexport function firstFocusable(root: ParentNode): HTMLElement | null {\n return getFocusables(root)[0] ?? null;\n}\n\n/** Öğe var ve iskeletin görünmez kopyasında (aria-hidden/inert) değilse kendisi. */\nexport function reachable(el: HTMLElement | null | undefined): HTMLElement | null {\n return el && !el.closest('[aria-hidden=\"true\"], [inert]') ? el : null;\n}\n\n/**\n * İskelet → içerik geldi: iskelette odak \"Kapat\"a (ya da panele) düşer;\n * içerik gelince odak hâlâ orada ise normal ilk odağa taşınır. Kullanıcı\n * bu arada odağı başka yere taşıdıysa dokunulmaz.\n */\nexport function useRefocusAfterSkeleton(\n open: boolean,\n skeleton: boolean,\n panelRef: RefObject<HTMLElement | null>,\n getInitialFocus: (panel: HTMLElement) => HTMLElement | null | undefined,\n closeSelector: string\n) {\n const wasSkeleton = useRef(skeleton);\n const getInitialFocusRef = useRef(getInitialFocus);\n getInitialFocusRef.current = getInitialFocus;\n useEffect(() => {\n const panel = panelRef.current;\n if (open && wasSkeleton.current && !skeleton && panel) {\n const active = document.activeElement;\n if (active === panel || (active instanceof HTMLElement && active.matches(closeSelector))) {\n const target = getInitialFocusRef.current(panel);\n if (target && target !== active) target.focus();\n }\n }\n wasSkeleton.current = skeleton;\n }, [skeleton, open, panelRef, closeSelector]);\n}\n\n/**\n * Açılışta hemen mount; kapanışta `exitMs` (çıkış animasyonu) bitince\n * unmount. `mounted` false iken hiç render etmeyin.\n */\nexport function usePresence(open: boolean, exitMs: number): boolean {\n const [mounted, setMounted] = useState(open);\n useEffect(() => {\n if (open) {\n setMounted(true);\n return;\n }\n const timer = setTimeout(() => setMounted(false), exitMs);\n return () => clearTimeout(timer);\n }, [open, exitMs]);\n return open || mounted;\n}\n\nexport interface ModalBehaviorOptions {\n /** Escape kapatsın mı. Varsayılan: `true`. */\n closeOnEscape?: boolean;\n /** Sayfa kaydırmasını kilitle. Varsayılan: `true`. */\n lockScroll?: boolean;\n /**\n * Açılışta odaklanacak öğeyi seçer. Verilmezse: `[data-autofocus]` → ilk\n * odaklanabilir → panelin kendisi.\n */\n getInitialFocus?: (panel: HTMLElement) => HTMLElement | null | undefined;\n}\n\n/** `[data-autofocus]` — kendisi odaklanabilir değilse (bileşen data-* iletmiyorsa) içindeki ilk odaklanabilir. */\nexport function findAutofocus(root: ParentNode): HTMLElement | null {\n const auto = root.querySelector<HTMLElement>(\"[data-autofocus]\");\n if (!auto || auto.closest('[aria-hidden=\"true\"], [inert]')) return null;\n return auto.matches(FOCUSABLE_SELECTOR) ? auto : firstFocusable(auto);\n}\n\n/**\n * Açıkken:\n * - sayfa kaydırması kilitlenir (kaydırma çubuğu genişliği kadar sağ dolgu\n * eklenir — kilitlenince içerik yana kaymasın),\n * - odak panelin ilk odaklanabilir öğesine (yoksa panelin kendisine) taşınır\n * ve Tab/Shift+Tab ile panel içinde döner,\n * - Escape `onClose` çağırır,\n * - kapanınca odak açılıştan önceki öğeye (genelde tetikleyici) döner.\n */\nexport function useModalBehavior(\n open: boolean,\n panelRef: RefObject<HTMLElement | null>,\n onClose: () => void,\n { closeOnEscape = true, lockScroll = true, getInitialFocus }: ModalBehaviorOptions = {}\n) {\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n const getInitialFocusRef = useRef(getInitialFocus);\n getInitialFocusRef.current = getInitialFocus;\n\n useEffect(() => {\n if (!open) return;\n const panel = panelRef.current;\n const previouslyFocused = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n\n const { body, documentElement } = document;\n const previousOverflow = body.style.overflow;\n const previousPaddingRight = body.style.paddingRight;\n if (lockScroll) {\n const scrollbar = window.innerWidth - documentElement.clientWidth;\n body.style.overflow = \"hidden\";\n if (scrollbar > 0) body.style.paddingRight = `${scrollbar}px`;\n }\n\n if (panel) {\n const target = getInitialFocusRef.current\n ? getInitialFocusRef.current(panel)\n : (findAutofocus(panel) ?? firstFocusable(panel));\n (target ?? panel).focus();\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && closeOnEscape) {\n // İçteki açılır bir parça (Select listesi, DatePicker/Popover paneli) Escape'i zaten işlediyse\n // yalnız o kapanır — pencere değil.\n if (event.defaultPrevented) return;\n event.preventDefault();\n onCloseRef.current();\n return;\n }\n if (event.key !== \"Tab\" || !panel) return;\n const focusables = getFocusables(panel);\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n if (!first || !last) {\n event.preventDefault();\n return;\n }\n const active = document.activeElement;\n if (event.shiftKey && (active === first || !panel.contains(active))) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && (active === last || !panel.contains(active))) {\n event.preventDefault();\n first.focus();\n }\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n if (lockScroll) {\n body.style.overflow = previousOverflow;\n body.style.paddingRight = previousPaddingRight;\n }\n previouslyFocused?.focus();\n };\n }, [open, panelRef, closeOnEscape, lockScroll]);\n}\n"],"mappings":";AAEA,SAAS,WAAW,QAAQ,gBAAgC;AAUrD,IAAM,qBACX;AASK,SAAS,cAAc,MAAiC;AAC7D,SAAO,MAAM,KAAK,KAAK,iBAA8B,kBAAkB,CAAC,EAAE;AAAA,IACxE,CAAC,OAAO,CAAC,GAAG,QAAQ,+BAA+B;AAAA,EACrD;AACF;AAEO,SAAS,eAAe,MAAsC;AACnE,SAAO,cAAc,IAAI,EAAE,CAAC,KAAK;AACnC;AAGO,SAAS,UAAU,IAAwD;AAChF,SAAO,MAAM,CAAC,GAAG,QAAQ,+BAA+B,IAAI,KAAK;AACnE;AAOO,SAAS,wBACd,MACA,UACA,UACA,iBACA,eACA;AACA,QAAM,cAAc,OAAO,QAAQ;AACnC,QAAM,qBAAqB,OAAO,eAAe;AACjD,qBAAmB,UAAU;AAC7B,YAAU,MAAM;AACd,UAAM,QAAQ,SAAS;AACvB,QAAI,QAAQ,YAAY,WAAW,CAAC,YAAY,OAAO;AACrD,YAAM,SAAS,SAAS;AACxB,UAAI,WAAW,SAAU,kBAAkB,eAAe,OAAO,QAAQ,aAAa,GAAI;AACxF,cAAM,SAAS,mBAAmB,QAAQ,KAAK;AAC/C,YAAI,UAAU,WAAW,OAAQ,QAAO,MAAM;AAAA,MAChD;AAAA,IACF;AACA,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,UAAU,MAAM,UAAU,aAAa,CAAC;AAC9C;AAMO,SAAS,YAAY,MAAe,QAAyB;AAClE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,IAAI;AAC3C,YAAU,MAAM;AACd,QAAI,MAAM;AACR,iBAAW,IAAI;AACf;AAAA,IACF;AACA,UAAM,QAAQ,WAAW,MAAM,WAAW,KAAK,GAAG,MAAM;AACxD,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAC,MAAM,MAAM,CAAC;AACjB,SAAO,QAAQ;AACjB;AAeO,SAAS,cAAc,MAAsC;AAClE,QAAM,OAAO,KAAK,cAA2B,kBAAkB;AAC/D,MAAI,CAAC,QAAQ,KAAK,QAAQ,+BAA+B,EAAG,QAAO;AACnE,SAAO,KAAK,QAAQ,kBAAkB,IAAI,OAAO,eAAe,IAAI;AACtE;AAWO,SAAS,iBACd,MACA,UACA,SACA,EAAE,gBAAgB,MAAM,aAAa,MAAM,gBAAgB,IAA0B,CAAC,GACtF;AACA,QAAM,aAAa,OAAO,OAAO;AACjC,aAAW,UAAU;AACrB,QAAM,qBAAqB,OAAO,eAAe;AACjD,qBAAmB,UAAU;AAE7B,YAAU,MAAM;AACd,QAAI,CAAC,KAAM;AACX,UAAM,QAAQ,SAAS;AACvB,UAAM,oBAAoB,SAAS,yBAAyB,cAAc,SAAS,gBAAgB;AAEnG,UAAM,EAAE,MAAM,gBAAgB,IAAI;AAClC,UAAM,mBAAmB,KAAK,MAAM;AACpC,UAAM,uBAAuB,KAAK,MAAM;AACxC,QAAI,YAAY;AACd,YAAM,YAAY,OAAO,aAAa,gBAAgB;AACtD,WAAK,MAAM,WAAW;AACtB,UAAI,YAAY,EAAG,MAAK,MAAM,eAAe,GAAG,SAAS;AAAA,IAC3D;AAEA,QAAI,OAAO;AACT,YAAM,SAAS,mBAAmB,UAC9B,mBAAmB,QAAQ,KAAK,IAC/B,cAAc,KAAK,KAAK,eAAe,KAAK;AACjD,OAAC,UAAU,OAAO,MAAM;AAAA,IAC1B;AAEA,UAAM,gBAAgB,CAAC,UAAyB;AAC9C,UAAI,MAAM,QAAQ,YAAY,eAAe;AAG3C,YAAI,MAAM,iBAAkB;AAC5B,cAAM,eAAe;AACrB,mBAAW,QAAQ;AACnB;AAAA,MACF;AACA,UAAI,MAAM,QAAQ,SAAS,CAAC,MAAO;AACnC,YAAM,aAAa,cAAc,KAAK;AACtC,YAAM,QAAQ,WAAW,CAAC;AAC1B,YAAM,OAAO,WAAW,WAAW,SAAS,CAAC;AAC7C,UAAI,CAAC,SAAS,CAAC,MAAM;AACnB,cAAM,eAAe;AACrB;AAAA,MACF;AACA,YAAM,SAAS,SAAS;AACxB,UAAI,MAAM,aAAa,WAAW,SAAS,CAAC,MAAM,SAAS,MAAM,IAAI;AACnE,cAAM,eAAe;AACrB,aAAK,MAAM;AAAA,MACb,WAAW,CAAC,MAAM,aAAa,WAAW,QAAQ,CAAC,MAAM,SAAS,MAAM,IAAI;AAC1E,cAAM,eAAe;AACrB,cAAM,MAAM;AAAA,MACd;AAAA,IACF;AACA,aAAS,iBAAiB,WAAW,aAAa;AAElD,WAAO,MAAM;AACX,eAAS,oBAAoB,WAAW,aAAa;AACrD,UAAI,YAAY;AACd,aAAK,MAAM,WAAW;AACtB,aAAK,MAAM,eAAe;AAAA,MAC5B;AACA,yBAAmB,MAAM;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,MAAM,UAAU,eAAe,UAAU,CAAC;AAChD;","names":[]}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
useScrollable
|
|
5
|
+
} from "./chunk-KG6A32KX.js";
|
|
6
|
+
import {
|
|
7
|
+
findAutofocus,
|
|
8
|
+
firstFocusable,
|
|
9
|
+
useModalBehavior,
|
|
10
|
+
usePresence,
|
|
11
|
+
useRefocusAfterSkeleton
|
|
12
|
+
} from "./chunk-JNZODUXP.js";
|
|
13
|
+
import {
|
|
14
|
+
ContentSkeleton
|
|
15
|
+
} from "./chunk-V7KDUUV6.js";
|
|
16
|
+
import {
|
|
17
|
+
Skeleton,
|
|
18
|
+
SkeletonBlock
|
|
19
|
+
} from "./chunk-NPM7IDYV.js";
|
|
20
|
+
import {
|
|
21
|
+
touchTargetSquareClass
|
|
22
|
+
} from "./chunk-FFXRFQSU.js";
|
|
23
|
+
|
|
24
|
+
// src/drawer/Drawer.tsx
|
|
25
|
+
import { useId, useRef } from "react";
|
|
26
|
+
import { createPortal } from "react-dom";
|
|
27
|
+
import { XIcon } from "lucide-react";
|
|
28
|
+
import { cn as cn2 } from "@mari-ui/core";
|
|
29
|
+
|
|
30
|
+
// src/drawer/utils.ts
|
|
31
|
+
import { cn } from "@mari-ui/core";
|
|
32
|
+
var SIDE_WIDTH = {
|
|
33
|
+
sm: "w-[min(20rem,calc(100vw-3rem))]",
|
|
34
|
+
md: "w-[min(25rem,calc(100vw-3rem))]",
|
|
35
|
+
lg: "w-[min(40rem,calc(100vw-3rem))]"
|
|
36
|
+
};
|
|
37
|
+
var EDGE_HEIGHT = {
|
|
38
|
+
sm: "h-[min(16rem,85dvh)]",
|
|
39
|
+
md: "h-[min(28rem,85dvh)]",
|
|
40
|
+
lg: "h-[min(40rem,90dvh)]"
|
|
41
|
+
};
|
|
42
|
+
var isSide = (position) => position === "left" || position === "right";
|
|
43
|
+
function getPanelClass(position, size, custom) {
|
|
44
|
+
const side = isSide(position);
|
|
45
|
+
return cn(
|
|
46
|
+
"absolute flex flex-col bg-mari-surface text-mari-foreground shadow-mari-xl outline-none",
|
|
47
|
+
"transition-transform duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] motion-reduce:transition-none",
|
|
48
|
+
position === "right" && "inset-y-0 right-0 border-l border-mari-border",
|
|
49
|
+
position === "left" && "inset-y-0 left-0 border-r border-mari-border",
|
|
50
|
+
position === "top" && "inset-x-0 top-0 rounded-b-xl border-b border-mari-border",
|
|
51
|
+
// Alt çekmece = mobil "bottom sheet": yuvarlak üst köşeler + tutamaç.
|
|
52
|
+
position === "bottom" && "inset-x-0 bottom-0 rounded-t-xl border-t border-mari-border pb-[env(safe-area-inset-bottom)]",
|
|
53
|
+
!custom && (side ? SIDE_WIDTH[size] : EDGE_HEIGHT[size])
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
var OPEN = {
|
|
57
|
+
right: "translate-x-0 starting:translate-x-full",
|
|
58
|
+
left: "translate-x-0 starting:-translate-x-full",
|
|
59
|
+
top: "translate-y-0 starting:-translate-y-full",
|
|
60
|
+
bottom: "translate-y-0 starting:translate-y-full"
|
|
61
|
+
};
|
|
62
|
+
var CLOSED = {
|
|
63
|
+
right: "translate-x-full",
|
|
64
|
+
left: "-translate-x-full",
|
|
65
|
+
top: "-translate-y-full",
|
|
66
|
+
bottom: "translate-y-full"
|
|
67
|
+
};
|
|
68
|
+
function getTranslateClass(position, open) {
|
|
69
|
+
return open ? OPEN[position] : CLOSED[position];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// src/drawer/Drawer.tsx
|
|
73
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
74
|
+
var EXIT_MS = 300;
|
|
75
|
+
function getDrawerInitialFocus(panel) {
|
|
76
|
+
const body = panel.querySelector("[data-drawer-body]");
|
|
77
|
+
return findAutofocus(panel) ?? (body && firstFocusable(body)) ?? panel.querySelector("[data-drawer-close]");
|
|
78
|
+
}
|
|
79
|
+
var TITLE_PLACEHOLDER = /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 py-1", children: /* @__PURE__ */ jsx(SkeletonBlock, { active: true, width: "45%", height: "1rem", radius: "sm" }) });
|
|
80
|
+
var FOOTER_PLACEHOLDER = /* @__PURE__ */ jsxs("div", { className: "flex h-full items-center justify-end gap-2", children: [
|
|
81
|
+
/* @__PURE__ */ jsx(SkeletonBlock, { active: true, width: "4.5rem", height: "2rem" }),
|
|
82
|
+
/* @__PURE__ */ jsx(SkeletonBlock, { active: true, width: "4.5rem", height: "2rem" })
|
|
83
|
+
] });
|
|
84
|
+
function getCustomSizeStyle(side, custom, width, height) {
|
|
85
|
+
if (!custom) return void 0;
|
|
86
|
+
return side ? { width, maxWidth: "calc(100vw - 3rem)" } : { height, maxHeight: "90dvh" };
|
|
87
|
+
}
|
|
88
|
+
function Drawer({
|
|
89
|
+
open,
|
|
90
|
+
onClose,
|
|
91
|
+
position = "right",
|
|
92
|
+
size = "md",
|
|
93
|
+
width,
|
|
94
|
+
height,
|
|
95
|
+
title,
|
|
96
|
+
description,
|
|
97
|
+
extra,
|
|
98
|
+
footer,
|
|
99
|
+
children,
|
|
100
|
+
showCloseButton = true,
|
|
101
|
+
closeButtonPosition = "right",
|
|
102
|
+
skeleton = false,
|
|
103
|
+
mask = true,
|
|
104
|
+
maskClosable = true,
|
|
105
|
+
keyboard = true,
|
|
106
|
+
"aria-label": ariaLabel,
|
|
107
|
+
className,
|
|
108
|
+
bodyClassName
|
|
109
|
+
}) {
|
|
110
|
+
const panelRef = useRef(null);
|
|
111
|
+
const titleId = useId();
|
|
112
|
+
const descriptionId = useId();
|
|
113
|
+
const present = usePresence(open, EXIT_MS);
|
|
114
|
+
const bodyRef = useRef(null);
|
|
115
|
+
const bodyScrollable = useScrollable(bodyRef, "y", [children, skeleton, present]);
|
|
116
|
+
useModalBehavior(open, panelRef, onClose, { closeOnEscape: keyboard, getInitialFocus: getDrawerInitialFocus });
|
|
117
|
+
useRefocusAfterSkeleton(open, skeleton, panelRef, getDrawerInitialFocus, "[data-drawer-close]");
|
|
118
|
+
if (!present || typeof document === "undefined") return null;
|
|
119
|
+
const side = isSide(position);
|
|
120
|
+
const customSize = side ? width !== void 0 : height !== void 0;
|
|
121
|
+
const sizeStyle = getCustomSizeStyle(side, customSize, width, height);
|
|
122
|
+
const hasHeader = Boolean(title || extra || showCloseButton);
|
|
123
|
+
const closeButton = showCloseButton && /* @__PURE__ */ jsx(
|
|
124
|
+
"button",
|
|
125
|
+
{
|
|
126
|
+
type: "button",
|
|
127
|
+
onClick: onClose,
|
|
128
|
+
"aria-label": "Kapat",
|
|
129
|
+
"data-drawer-close": true,
|
|
130
|
+
className: cn2(
|
|
131
|
+
"relative inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-mari-muted transition-colors",
|
|
132
|
+
"hover:bg-mari-surface-alt hover:text-mari-foreground focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring",
|
|
133
|
+
touchTargetSquareClass.md,
|
|
134
|
+
closeButtonPosition === "left" ? "-ml-1.5" : "-mr-1.5"
|
|
135
|
+
),
|
|
136
|
+
children: /* @__PURE__ */ jsx(XIcon, { size: 18, "aria-hidden": true })
|
|
137
|
+
}
|
|
138
|
+
);
|
|
139
|
+
return createPortal(
|
|
140
|
+
/* @__PURE__ */ jsxs("div", { className: cn2("fixed inset-0 z-mari-drawer", !open && "pointer-events-none"), children: [
|
|
141
|
+
mask && /* @__PURE__ */ jsx(
|
|
142
|
+
"div",
|
|
143
|
+
{
|
|
144
|
+
"aria-hidden": true,
|
|
145
|
+
onClick: maskClosable ? onClose : void 0,
|
|
146
|
+
className: cn2(
|
|
147
|
+
"absolute inset-0 bg-mari-scrim transition-opacity duration-300 motion-reduce:transition-none starting:opacity-0",
|
|
148
|
+
open ? "opacity-100" : "opacity-0"
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
),
|
|
152
|
+
/* @__PURE__ */ jsxs(
|
|
153
|
+
"div",
|
|
154
|
+
{
|
|
155
|
+
ref: panelRef,
|
|
156
|
+
role: "dialog",
|
|
157
|
+
"aria-modal": "true",
|
|
158
|
+
"aria-labelledby": title ? titleId : void 0,
|
|
159
|
+
"aria-label": title ? void 0 : ariaLabel,
|
|
160
|
+
"aria-describedby": description ? descriptionId : void 0,
|
|
161
|
+
"aria-busy": skeleton || void 0,
|
|
162
|
+
tabIndex: -1,
|
|
163
|
+
style: sizeStyle,
|
|
164
|
+
className: cn2(getPanelClass(position, size, customSize), getTranslateClass(position, open), className),
|
|
165
|
+
children: [
|
|
166
|
+
position === "bottom" && /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "flex justify-center pt-2.5", children: /* @__PURE__ */ jsx("span", { className: "h-1 w-10 rounded-full bg-mari-border" }) }),
|
|
167
|
+
hasHeader && /* @__PURE__ */ jsxs("div", { className: cn2("flex shrink-0 items-start gap-3 border-b border-mari-border px-4 py-4 sm:px-6", position === "bottom" && "pt-2"), children: [
|
|
168
|
+
closeButtonPosition === "left" && closeButton,
|
|
169
|
+
/* @__PURE__ */ jsx(ContentSkeleton, { on: skeleton, fallback: TITLE_PLACEHOLDER, className: "min-w-0 flex-1 self-center", children: /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 self-center", children: [
|
|
170
|
+
title && /* @__PURE__ */ jsx("h2", { id: titleId, className: "truncate text-base font-semibold leading-6 text-mari-foreground", children: title }),
|
|
171
|
+
description && /* @__PURE__ */ jsx("p", { id: descriptionId, className: "mt-0.5 text-sm text-mari-muted", children: description })
|
|
172
|
+
] }) }),
|
|
173
|
+
extra && /* @__PURE__ */ jsx(ContentSkeleton, { on: skeleton, fallback: null, className: "shrink-0 self-center", children: /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-2 self-center", children: extra }) }),
|
|
174
|
+
closeButtonPosition === "right" && closeButton
|
|
175
|
+
] }),
|
|
176
|
+
/* @__PURE__ */ jsx(
|
|
177
|
+
"div",
|
|
178
|
+
{
|
|
179
|
+
ref: bodyRef,
|
|
180
|
+
"data-drawer-body": true,
|
|
181
|
+
tabIndex: bodyScrollable && !skeleton ? 0 : void 0,
|
|
182
|
+
className: cn2(
|
|
183
|
+
"min-h-0 flex-1 overflow-y-auto overscroll-contain p-4 sm:p-6",
|
|
184
|
+
"focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-mari-ring",
|
|
185
|
+
bodyClassName
|
|
186
|
+
),
|
|
187
|
+
children: /* @__PURE__ */ jsx(ContentSkeleton, { on: skeleton, fallback: /* @__PURE__ */ jsx(Skeleton, { active: true, paragraph: { rows: 6 } }), children })
|
|
188
|
+
}
|
|
189
|
+
),
|
|
190
|
+
footer && /* @__PURE__ */ jsx("div", { className: "shrink-0 border-t border-mari-border px-4 py-3 sm:px-6", children: /* @__PURE__ */ jsx(ContentSkeleton, { on: skeleton, fallback: FOOTER_PLACEHOLDER, children: footer }) })
|
|
191
|
+
]
|
|
192
|
+
}
|
|
193
|
+
)
|
|
194
|
+
] }),
|
|
195
|
+
document.body
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export {
|
|
200
|
+
Drawer
|
|
201
|
+
};
|
|
202
|
+
//# sourceMappingURL=chunk-KCYM2JXP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/drawer/Drawer.tsx","../src/drawer/utils.ts"],"sourcesContent":["\"use client\";\n\nimport React, { useId, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { XIcon } from \"lucide-react\";\nimport { cn } from \"@mari-ui/core\";\nimport { Skeleton, SkeletonBlock } from \"../skeleton\";\nimport { ContentSkeleton } from \"../lib/ContentSkeleton\";\nimport { useScrollable } from \"../lib/useScrollable\";\nimport { touchTargetSquareClass } from \"../lib/sizeClasses\";\nimport { findAutofocus, firstFocusable, useModalBehavior, usePresence, useRefocusAfterSkeleton } from \"../lib/overlay\";\nimport type { DrawerProps } from \"./types\";\nimport { getPanelClass, getTranslateClass, isSide } from \"./utils\";\n\nexport type { DrawerProps };\n\nconst EXIT_MS = 300;\n\n/**\n * Açılışta odak sırası: `[data-autofocus]` → gövdedeki ilk alan → Kapat →\n * panel. Başlıktaki `extra` aksiyonlarına ASLA ilk odak verilmez — Faz 13.6\n * incelemesinde yükleniyor durumunda açılan düzenleme çekmecesinde ilk odak\n * \"Sil\" düğmesine gidiyordu (Enter'a basan kullanıcı kaydı silebilirdi).\n */\nfunction getDrawerInitialFocus(panel: HTMLElement): HTMLElement | null {\n const body = panel.querySelector<HTMLElement>(\"[data-drawer-body]\");\n return findAutofocus(panel) ?? (body && firstFocusable(body)) ?? panel.querySelector<HTMLElement>(\"[data-drawer-close]\");\n}\n\n/*\n * Ölçülecek içerik yoksa (başlık/alt çubuk da veriden geliyor ya da\n * yerleşimsiz ortam) gösterilen genel yer tutucular.\n */\nconst TITLE_PLACEHOLDER = (\n <div className=\"flex flex-col gap-2 py-1\">\n <SkeletonBlock active width=\"45%\" height=\"1rem\" radius=\"sm\" />\n </div>\n);\n\n/** Alt çubuğun genel iskeleti: en yaygın düzen sağa yaslı İptal / Kaydet. */\nconst FOOTER_PLACEHOLDER = (\n <div className=\"flex h-full items-center justify-end gap-2\">\n <SkeletonBlock active width=\"4.5rem\" height=\"2rem\" />\n <SkeletonBlock active width=\"4.5rem\" height=\"2rem\" />\n </div>\n);\n\n/** Özel `width`/`height` — yine de ekranı taşmasın. */\nfunction getCustomSizeStyle(side: boolean, custom: boolean, width?: number | string, height?: number | string): React.CSSProperties | undefined {\n if (!custom) return undefined;\n return side ? { width, maxWidth: \"calc(100vw - 3rem)\" } : { height, maxHeight: \"90dvh\" };\n}\n\n/**\n * Faz 13.6 — yapı ant.design Drawer'ından (başlık 16/24px dolgu + 16px/600,\n * gövde 24px, alt çubuk), görünüm kendi token'larımızdan; overlay davranışı\n * `lib/overlay.ts`'te NavDrawer ile ortak.\n *\n * Eski sürümdeki sorunlar:\n * - `role=\"dialog\"`/`aria-modal`/erişilebilir ad yoktu; odak içeri\n * taşınmıyor, Tab sayfaya kaçıyor, Escape kapatmıyordu.\n * - Kapalıyken DOM'da kalıyordu (sadece opacity) — içindeki düğmeler Tab ile\n * odaklanabiliyordu. Artık kapanış animasyonundan sonra unmount.\n * - Sayfa kaydırması kilitlenmiyordu; portal yoktu (overflow/transform'lu bir\n * atanın içinde kırpılabiliyordu).\n * - Başlık ortalıydı; yan çekmece mobilde ekranı taşıyordu (`w-96` sabit).\n * - `loading` düz \"Yükleniyor...\" metniydi.\n *\n * Faz 15.6 — `skeleton` artık yalnız gövdeyi değil\n * başlık/açıklama/extra/alt çubuğu da iskelete çevirir; Kapat düğmesi canlı\n * kalır. Her bölge `ContentSkeleton` ile içeriğin kendi şeklinde (satır satır\n * metin, alan alan form, düğme düğme alt çubuk) iskelete döner; gerçek içerik\n * görünmez olarak yerinde kalır → yükseklik zıplamaz.\n * Görünmez kopyalar `aria-hidden` bölgede — odak tuzağı onları atlar.\n */\nexport function Drawer({\n open,\n onClose,\n position = \"right\",\n size = \"md\",\n width,\n height,\n title,\n description,\n extra,\n footer,\n children,\n showCloseButton = true,\n closeButtonPosition = \"right\",\n skeleton = false,\n mask = true,\n maskClosable = true,\n keyboard = true,\n \"aria-label\": ariaLabel,\n className,\n bodyClassName,\n}: DrawerProps) {\n const panelRef = useRef<HTMLDivElement>(null);\n const titleId = useId();\n const descriptionId = useId();\n const present = usePresence(open, EXIT_MS);\n const bodyRef = useRef<HTMLDivElement>(null);\n const bodyScrollable = useScrollable(bodyRef, \"y\", [children, skeleton, present]);\n useModalBehavior(open, panelRef, onClose, { closeOnEscape: keyboard, getInitialFocus: getDrawerInitialFocus });\n\n // İskelet → içerik geldi: odak hâlâ Kapat'ta/panelde ise forma taşı.\n useRefocusAfterSkeleton(open, skeleton, panelRef, getDrawerInitialFocus, \"[data-drawer-close]\");\n\n if (!present || typeof document === \"undefined\") return null;\n\n const side = isSide(position);\n const customSize = side ? width !== undefined : height !== undefined;\n const sizeStyle = getCustomSizeStyle(side, customSize, width, height);\n const hasHeader = Boolean(title || extra || showCloseButton);\n\n const closeButton = showCloseButton && (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Kapat\"\n data-drawer-close\n className={cn(\n \"relative inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-mari-muted transition-colors\",\n \"hover:bg-mari-surface-alt hover:text-mari-foreground focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\",\n touchTargetSquareClass.md,\n closeButtonPosition === \"left\" ? \"-ml-1.5\" : \"-mr-1.5\"\n )}\n >\n <XIcon size={18} aria-hidden />\n </button>\n );\n\n return createPortal(\n <div className={cn(\"fixed inset-0 z-mari-drawer\", !open && \"pointer-events-none\")}>\n {mask && (\n <div\n aria-hidden\n onClick={maskClosable ? onClose : undefined}\n className={cn(\n \"absolute inset-0 bg-mari-scrim transition-opacity duration-300 motion-reduce:transition-none starting:opacity-0\",\n open ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n )}\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n aria-label={title ? undefined : ariaLabel}\n aria-describedby={description ? descriptionId : undefined}\n aria-busy={skeleton || undefined}\n tabIndex={-1}\n style={sizeStyle}\n className={cn(getPanelClass(position, size, customSize), getTranslateClass(position, open), className)}\n >\n {position === \"bottom\" && (\n <div aria-hidden className=\"flex justify-center pt-2.5\">\n <span className=\"h-1 w-10 rounded-full bg-mari-border\" />\n </div>\n )}\n\n {hasHeader && (\n <div className={cn(\"flex shrink-0 items-start gap-3 border-b border-mari-border px-4 py-4 sm:px-6\", position === \"bottom\" && \"pt-2\")}>\n {closeButtonPosition === \"left\" && closeButton}\n <ContentSkeleton on={skeleton} fallback={TITLE_PLACEHOLDER} className=\"min-w-0 flex-1 self-center\">\n <div className=\"min-w-0 flex-1 self-center\">\n {title && (\n <h2 id={titleId} className=\"truncate text-base font-semibold leading-6 text-mari-foreground\">\n {title}\n </h2>\n )}\n {description && (\n <p id={descriptionId} className=\"mt-0.5 text-sm text-mari-muted\">\n {description}\n </p>\n )}\n </div>\n </ContentSkeleton>\n {extra && (\n <ContentSkeleton on={skeleton} fallback={null} className=\"shrink-0 self-center\">\n <div className=\"flex shrink-0 items-center gap-2 self-center\">{extra}</div>\n </ContentSkeleton>\n )}\n {closeButtonPosition === \"right\" && closeButton}\n </div>\n )}\n\n <div\n ref={bodyRef}\n data-drawer-body\n // Taşan ve içinde odaklanabilir öğe olmayan gövde de klavyeyle kaydırılabilsin (axe scrollable-region-focusable).\n tabIndex={bodyScrollable && !skeleton ? 0 : undefined}\n className={cn(\n \"min-h-0 flex-1 overflow-y-auto overscroll-contain p-4 sm:p-6\",\n \"focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-mari-ring\",\n bodyClassName\n )}\n >\n <ContentSkeleton on={skeleton} fallback={<Skeleton active paragraph={{ rows: 6 }} />}>\n {children}\n </ContentSkeleton>\n </div>\n\n {footer && (\n <div className=\"shrink-0 border-t border-mari-border px-4 py-3 sm:px-6\">\n <ContentSkeleton on={skeleton} fallback={FOOTER_PLACEHOLDER}>\n {footer}\n </ContentSkeleton>\n </div>\n )}\n </div>\n </div>,\n document.body\n );\n}\n","import { cn } from \"@mari-ui/core\";\nimport type { DrawerPosition, DrawerSize } from \"./types\";\n\n/**\n * Yan çekmece genişliği / üst-alt yüksekliği. Yan çekmece dar ekranda\n * `100vw - 3rem`i aşmaz — solda örtüden bir şerit kalır, dokunarak\n * kapatılabilir ve kullanıcı hâlâ sayfada olduğunu görür.\n */\nconst SIDE_WIDTH: Record<DrawerSize, string> = {\n sm: \"w-[min(20rem,calc(100vw-3rem))]\",\n md: \"w-[min(25rem,calc(100vw-3rem))]\",\n lg: \"w-[min(40rem,calc(100vw-3rem))]\",\n};\nconst EDGE_HEIGHT: Record<DrawerSize, string> = {\n sm: \"h-[min(16rem,85dvh)]\",\n md: \"h-[min(28rem,85dvh)]\",\n lg: \"h-[min(40rem,90dvh)]\",\n};\n\nexport const isSide = (position: DrawerPosition) => position === \"left\" || position === \"right\";\n\nexport function getPanelClass(position: DrawerPosition, size: DrawerSize, custom: boolean): string {\n const side = isSide(position);\n return cn(\n \"absolute flex flex-col bg-mari-surface text-mari-foreground shadow-mari-xl outline-none\",\n \"transition-transform duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] motion-reduce:transition-none\",\n position === \"right\" && \"inset-y-0 right-0 border-l border-mari-border\",\n position === \"left\" && \"inset-y-0 left-0 border-r border-mari-border\",\n position === \"top\" && \"inset-x-0 top-0 rounded-b-xl border-b border-mari-border\",\n // Alt çekmece = mobil \"bottom sheet\": yuvarlak üst köşeler + tutamaç.\n position === \"bottom\" && \"inset-x-0 bottom-0 rounded-t-xl border-t border-mari-border pb-[env(safe-area-inset-bottom)]\",\n !custom && (side ? SIDE_WIDTH[size] : EDGE_HEIGHT[size])\n );\n}\n\n/**\n * Açıkken yerinde; `starting:` (@starting-style) ilk boyamada kapalı\n * konumdan başlatır → mount anında kayarak girer. Kapanışta panel\n * `usePresence` süresi boyunca DOM'da kalıp dışarı kayar.\n */\nconst OPEN: Record<DrawerPosition, string> = {\n right: \"translate-x-0 starting:translate-x-full\",\n left: \"translate-x-0 starting:-translate-x-full\",\n top: \"translate-y-0 starting:-translate-y-full\",\n bottom: \"translate-y-0 starting:translate-y-full\",\n};\nconst CLOSED: Record<DrawerPosition, string> = {\n right: \"translate-x-full\",\n left: \"-translate-x-full\",\n top: \"-translate-y-full\",\n bottom: \"translate-y-full\",\n};\n\nexport function getTranslateClass(position: DrawerPosition, open: boolean): string {\n return open ? OPEN[position] : CLOSED[position];\n}\n"],"mappings":"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","names":["cn","cn"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/lib/useScrollable.ts
|
|
4
|
+
import { useEffect, useState } from "react";
|
|
5
|
+
function useScrollable(ref, axis, deps = []) {
|
|
6
|
+
const [scrollable, setScrollable] = useState(false);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const el = ref.current;
|
|
9
|
+
if (!el || typeof ResizeObserver === "undefined") return;
|
|
10
|
+
const check = () => setScrollable(axis === "x" ? el.scrollWidth > el.clientWidth + 1 : el.scrollHeight > el.clientHeight + 1);
|
|
11
|
+
check();
|
|
12
|
+
const observer = new ResizeObserver(check);
|
|
13
|
+
observer.observe(el);
|
|
14
|
+
for (const child of Array.from(el.children)) observer.observe(child);
|
|
15
|
+
return () => observer.disconnect();
|
|
16
|
+
}, [ref, axis, ...deps]);
|
|
17
|
+
return scrollable;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
useScrollable
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=chunk-KG6A32KX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/useScrollable.ts"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState, type RefObject } from \"react\";\n\n/**\n * Bölge gerçekten taşıyor mu (kaydırılabilir mi)? Kaydırılan bir bölge\n * klavyeyle de kaydırılabilmeli (axe `scrollable-region-focusable`): içinde\n * odaklanabilir öğe yoksa bölgenin kendisi Tab durağı olmalı — ama SADECE\n * taşarken; sığan içeriğe boşuna bir durak eklenmesin.\n *\n * Sabit boyutlu bir kutuda içerik büyüyünce kutunun kendisi yeniden\n * boyutlanmaz → çocuklar da gözlenir. `deps` değişince (ör. içerik/iskelet)\n * yeniden bağlanır.\n */\nexport function useScrollable(ref: RefObject<HTMLElement | null>, axis: \"x\" | \"y\", deps: readonly unknown[] = []): boolean {\n const [scrollable, setScrollable] = useState(false);\n useEffect(() => {\n const el = ref.current;\n if (!el || typeof ResizeObserver === \"undefined\") return;\n const check = () =>\n setScrollable(axis === \"x\" ? el.scrollWidth > el.clientWidth + 1 : el.scrollHeight > el.clientHeight + 1);\n check();\n const observer = new ResizeObserver(check);\n observer.observe(el);\n for (const child of Array.from(el.children)) observer.observe(child);\n return () => observer.disconnect();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- çağıranın verdiği deps\n }, [ref, axis, ...deps]);\n return scrollable;\n}\n"],"mappings":";AAEA,SAAS,WAAW,gBAAgC;AAY7C,SAAS,cAAc,KAAoC,MAAiB,OAA2B,CAAC,GAAY;AACzH,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,YAAU,MAAM;AACd,UAAM,KAAK,IAAI;AACf,QAAI,CAAC,MAAM,OAAO,mBAAmB,YAAa;AAClD,UAAM,QAAQ,MACZ,cAAc,SAAS,MAAM,GAAG,cAAc,GAAG,cAAc,IAAI,GAAG,eAAe,GAAG,eAAe,CAAC;AAC1G,UAAM;AACN,UAAM,WAAW,IAAI,eAAe,KAAK;AACzC,aAAS,QAAQ,EAAE;AACnB,eAAW,SAAS,MAAM,KAAK,GAAG,QAAQ,EAAG,UAAS,QAAQ,KAAK;AACnE,WAAO,MAAM,SAAS,WAAW;AAAA,EAEnC,GAAG,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;AACvB,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/input/_components/FieldAdornments.tsx
|
|
2
|
+
import { EyeIcon, EyeOffIcon, XIcon } from "lucide-react";
|
|
3
|
+
import { cn } from "@mari-ui/core";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
var ICON_BUTTON_CLASS = "flex shrink-0 cursor-pointer items-center justify-center rounded-sm text-mari-muted hover:text-mari-foreground focus-visible:outline-2 focus-visible:outline-mari-ring";
|
|
6
|
+
function ClearButton({ visible, label, icon, onClear, className }) {
|
|
7
|
+
return /* @__PURE__ */ jsx(
|
|
8
|
+
"button",
|
|
9
|
+
{
|
|
10
|
+
type: "button",
|
|
11
|
+
onClick: onClear,
|
|
12
|
+
"aria-label": label,
|
|
13
|
+
className: cn(ICON_BUTTON_CLASS, "invisible size-5 hover:bg-mari-surface-alt", visible && "visible", className),
|
|
14
|
+
children: icon ?? /* @__PURE__ */ jsx(XIcon, { size: 14, "aria-hidden": true })
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
function PasswordToggle({ visible, disabled, onToggle, iconRender }) {
|
|
19
|
+
const defaultIcon = visible ? /* @__PURE__ */ jsx(EyeIcon, { size: 16, "aria-hidden": true }) : /* @__PURE__ */ jsx(EyeOffIcon, { size: 16, "aria-hidden": true });
|
|
20
|
+
const icon = iconRender ? iconRender(visible) : defaultIcon;
|
|
21
|
+
return /* @__PURE__ */ jsx(
|
|
22
|
+
"button",
|
|
23
|
+
{
|
|
24
|
+
type: "button",
|
|
25
|
+
onClick: onToggle,
|
|
26
|
+
"aria-label": visible ? "\u015Eifreyi gizle" : "\u015Eifreyi g\xF6ster",
|
|
27
|
+
"aria-pressed": visible,
|
|
28
|
+
disabled,
|
|
29
|
+
className: cn(ICON_BUTTON_CLASS, "size-6"),
|
|
30
|
+
children: icon
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
function clearIconOf(allowClear) {
|
|
35
|
+
return typeof allowClear === "object" ? allowClear.clearIcon : void 0;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export {
|
|
39
|
+
ClearButton,
|
|
40
|
+
PasswordToggle,
|
|
41
|
+
clearIconOf
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=chunk-KSPM2Z3T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/input/_components/FieldAdornments.tsx"],"sourcesContent":["import React from \"react\";\nimport { EyeIcon, EyeOffIcon, XIcon } from \"lucide-react\";\nimport { cn } from \"@mari-ui/core\";\n\nconst ICON_BUTTON_CLASS =\n \"flex shrink-0 cursor-pointer items-center justify-center rounded-sm text-mari-muted hover:text-mari-foreground focus-visible:outline-2 focus-visible:outline-mari-ring\";\n\ninterface ClearButtonProps {\n visible: boolean;\n label: string;\n icon?: React.ReactNode;\n onClear: () => void;\n className?: string;\n}\n\n/** Input/Textarea ortak temizle butonu. `invisible` yer ayırır (yazınca metin kaymaz) ve sekme sırasından çıkarır. */\nexport function ClearButton({ visible, label, icon, onClear, className }: Readonly<ClearButtonProps>) {\n return (\n <button\n type=\"button\"\n onClick={onClear}\n aria-label={label}\n className={cn(ICON_BUTTON_CLASS, \"invisible size-5 hover:bg-mari-surface-alt\", visible && \"visible\", className)}\n >\n {icon ?? <XIcon size={14} aria-hidden />}\n </button>\n );\n}\n\ninterface PasswordToggleProps {\n visible: boolean;\n disabled: boolean;\n onToggle: () => void;\n iconRender?: (visible: boolean) => React.ReactNode;\n}\n\nexport function PasswordToggle({ visible, disabled, onToggle, iconRender }: Readonly<PasswordToggleProps>) {\n const defaultIcon = visible ? <EyeIcon size={16} aria-hidden /> : <EyeOffIcon size={16} aria-hidden />;\n const icon = iconRender ? iconRender(visible) : defaultIcon;\n return (\n <button\n type=\"button\"\n onClick={onToggle}\n aria-label={visible ? \"Şifreyi gizle\" : \"Şifreyi göster\"}\n aria-pressed={visible}\n disabled={disabled}\n className={cn(ICON_BUTTON_CLASS, \"size-6\")}\n >\n {icon}\n </button>\n );\n}\n\nexport function clearIconOf(allowClear: boolean | { clearIcon?: React.ReactNode }): React.ReactNode | undefined {\n return typeof allowClear === \"object\" ? allowClear.clearIcon : undefined;\n}\n"],"mappings":";AACA,SAAS,SAAS,YAAY,aAAa;AAC3C,SAAS,UAAU;AAsBJ;AApBf,IAAM,oBACJ;AAWK,SAAS,YAAY,EAAE,SAAS,OAAO,MAAM,SAAS,UAAU,GAA+B;AACpG,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAY;AAAA,MACZ,WAAW,GAAG,mBAAmB,8CAA8C,WAAW,WAAW,SAAS;AAAA,MAE7G,kBAAQ,oBAAC,SAAM,MAAM,IAAI,eAAW,MAAC;AAAA;AAAA,EACxC;AAEJ;AASO,SAAS,eAAe,EAAE,SAAS,UAAU,UAAU,WAAW,GAAkC;AACzG,QAAM,cAAc,UAAU,oBAAC,WAAQ,MAAM,IAAI,eAAW,MAAC,IAAK,oBAAC,cAAW,MAAM,IAAI,eAAW,MAAC;AACpG,QAAM,OAAO,aAAa,WAAW,OAAO,IAAI;AAChD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAY,UAAU,uBAAkB;AAAA,MACxC,gBAAc;AAAA,MACd;AAAA,MACA,WAAW,GAAG,mBAAmB,QAAQ;AAAA,MAExC;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,YAAY,YAAoF;AAC9G,SAAO,OAAO,eAAe,WAAW,WAAW,YAAY;AACjE;","names":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/lib/fieldContext.ts
|
|
4
|
+
import { createContext, useContext, useEffect } from "react";
|
|
5
|
+
var FieldContext = createContext(null);
|
|
6
|
+
var joinIds = (...ids) => ids.filter(Boolean).join(" ") || void 0;
|
|
7
|
+
function useFieldControl(props) {
|
|
8
|
+
const field = useContext(FieldContext);
|
|
9
|
+
const setControlId = field?.setControlId;
|
|
10
|
+
const ownId = props.id;
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (!setControlId || ownId === void 0) return;
|
|
13
|
+
setControlId(ownId);
|
|
14
|
+
return () => setControlId(void 0);
|
|
15
|
+
}, [setControlId, ownId]);
|
|
16
|
+
if (!field) return props;
|
|
17
|
+
return {
|
|
18
|
+
...props,
|
|
19
|
+
id: props.id ?? field.controlId,
|
|
20
|
+
"aria-describedby": joinIds(props["aria-describedby"], field.describedBy),
|
|
21
|
+
"aria-invalid": props["aria-invalid"] ?? (field.invalid || void 0),
|
|
22
|
+
required: props.required ?? (field.required || void 0),
|
|
23
|
+
disabled: props.disabled ?? (field.disabled || void 0),
|
|
24
|
+
color: props.color ?? (field.invalid ? "error" : void 0),
|
|
25
|
+
skeleton: props.skeleton ?? (field.skeleton || void 0)
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function useFieldSkeleton(own) {
|
|
29
|
+
const field = useContext(FieldContext);
|
|
30
|
+
return own ?? field?.skeleton ?? false;
|
|
31
|
+
}
|
|
32
|
+
function useFieldGroup(props, enabled = true) {
|
|
33
|
+
const field = useContext(FieldContext);
|
|
34
|
+
const markGroup = enabled ? field?.markGroup : void 0;
|
|
35
|
+
useEffect(() => markGroup?.(), [markGroup]);
|
|
36
|
+
if (!field || !enabled) return props;
|
|
37
|
+
const named = props["aria-labelledby"] !== void 0 || props["aria-label"] !== void 0;
|
|
38
|
+
return {
|
|
39
|
+
...props,
|
|
40
|
+
"aria-labelledby": named ? props["aria-labelledby"] : field.labelId,
|
|
41
|
+
"aria-describedby": joinIds(props["aria-describedby"], field.describedBy),
|
|
42
|
+
disabled: props.disabled ?? (field.disabled || void 0),
|
|
43
|
+
"aria-invalid": field.invalid ? true : void 0,
|
|
44
|
+
"aria-required": field.required ? true : void 0
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export {
|
|
49
|
+
FieldContext,
|
|
50
|
+
useFieldControl,
|
|
51
|
+
useFieldSkeleton,
|
|
52
|
+
useFieldGroup
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=chunk-LBQMEHK6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/fieldContext.ts"],"sourcesContent":["\"use client\";\n\nimport type React from \"react\";\nimport { createContext, useContext, useEffect } from \"react\";\nimport type { ColorRole } from \"@mari-ui/core\";\n\n/**\n * Faz 16.1 — `Field`in içindeki kontrole geçirdiği bağlantılar. `lib`te\n * duruyor (field/ klasöründe değil) çünkü her kontrol bunu import eder;\n * tsup ortak parçaya (chunk) koyar, tek bir context örneği olur.\n */\nexport interface FieldContextValue {\n /** Kontrolün id'si — `<label htmlFor>` buna bağlı. */\n controlId: string;\n labelId: string;\n /** İpucu ve/veya hata metninin id'leri (boşlukla ayrılmış); yoksa `undefined`. */\n describedBy: string | undefined;\n invalid: boolean;\n required: boolean;\n disabled: boolean;\n /** Grup kontrolleri (RadioGroup, Segmented, OtpInput) çağırır: etiket `<label for>` değil grubun adı olur. */\n markGroup: () => void;\n /** Kontrol kendi `id`sini verdiyse etiketin `htmlFor`u ona dönsün. */\n setControlId: (id: string | undefined) => void;\n /** Field iskelette: içindeki kontrol de iskelet çizer (tek prop kuralı). */\n skeleton: boolean;\n}\n\nexport const FieldContext = createContext<FieldContextValue | null>(null);\n\nconst joinIds = (...ids: Array<string | undefined>) => ids.filter(Boolean).join(\" \") || undefined;\n\nexport interface FieldControlProps {\n id?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: Exclude<React.AriaAttributes[\"aria-invalid\"], undefined>;\n required?: boolean;\n disabled?: boolean;\n color?: ColorRole;\n skeleton?: boolean;\n}\n\n/**\n * Tek bir alanı olan kontroller (Input, Select, InputNumber…) için. Field\n * içinde değilse verilen prop'ları olduğu gibi döner. İçindeyse eksikleri\n * Field'dan tamamlar — kontrole AÇIKÇA verilen prop her zaman kazanır;\n * `aria-describedby` ise birleştirilir (ikisi de okunsun).\n */\nexport function useFieldControl<P extends FieldControlProps>(props: P): P & FieldControlProps {\n const field = useContext(FieldContext);\n const setControlId = field?.setControlId;\n const ownId = props.id;\n useEffect(() => {\n if (!setControlId || ownId === undefined) return;\n setControlId(ownId);\n return () => setControlId(undefined);\n }, [setControlId, ownId]);\n if (!field) return props;\n return {\n ...props,\n id: props.id ?? field.controlId,\n \"aria-describedby\": joinIds(props[\"aria-describedby\"], field.describedBy),\n \"aria-invalid\": props[\"aria-invalid\"] ?? (field.invalid || undefined),\n required: props.required ?? (field.required || undefined),\n disabled: props.disabled ?? (field.disabled || undefined),\n color: props.color ?? (field.invalid ? \"error\" : undefined),\n skeleton: props.skeleton ?? (field.skeleton || undefined),\n };\n}\n\n/**\n * Grup kontrolleri (RadioGroup, Segmented, OtpInput, Transfer) için: kontrolün\n * kendi `skeleton`u verilmediyse Field'ınki geçerli.\n */\nexport function useFieldSkeleton(own: boolean | undefined): boolean {\n const field = useContext(FieldContext);\n return own ?? field?.skeleton ?? false;\n}\n\nexport interface FieldGroupProps {\n \"aria-labelledby\"?: string;\n \"aria-label\"?: string;\n \"aria-describedby\"?: string;\n disabled?: boolean;\n}\n\n/**\n * Grup kontrolleri için: Field'ın etiketi grubun adı olur (`aria-labelledby`)\n * — grup tek bir odaklanabilir alan olmadığından `<label htmlFor>` bağlanamaz.\n * Kontrol kendi `aria-label`/`aria-labelledby`sini verdiyse o kazanır.\n */\nexport function useFieldGroup<P extends FieldGroupProps>(props: P, enabled = true): P & FieldGroupProps & { \"aria-invalid\"?: true; \"aria-required\"?: true } {\n const field = useContext(FieldContext);\n const markGroup = enabled ? field?.markGroup : undefined;\n useEffect(() => markGroup?.(), [markGroup]);\n if (!field || !enabled) return props;\n const named = props[\"aria-labelledby\"] !== undefined || props[\"aria-label\"] !== undefined;\n return {\n ...props,\n \"aria-labelledby\": named ? props[\"aria-labelledby\"] : field.labelId,\n \"aria-describedby\": joinIds(props[\"aria-describedby\"], field.describedBy),\n disabled: props.disabled ?? (field.disabled || undefined),\n \"aria-invalid\": field.invalid ? true : undefined,\n \"aria-required\": field.required ? true : undefined,\n };\n}\n"],"mappings":";AAGA,SAAS,eAAe,YAAY,iBAAiB;AAyB9C,IAAM,eAAe,cAAwC,IAAI;AAExE,IAAM,UAAU,IAAI,QAAmC,IAAI,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK;AAkBjF,SAAS,gBAA6C,OAAiC;AAC5F,QAAM,QAAQ,WAAW,YAAY;AACrC,QAAM,eAAe,OAAO;AAC5B,QAAM,QAAQ,MAAM;AACpB,YAAU,MAAM;AACd,QAAI,CAAC,gBAAgB,UAAU,OAAW;AAC1C,iBAAa,KAAK;AAClB,WAAO,MAAM,aAAa,MAAS;AAAA,EACrC,GAAG,CAAC,cAAc,KAAK,CAAC;AACxB,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,MAAM,MAAM,MAAM;AAAA,IACtB,oBAAoB,QAAQ,MAAM,kBAAkB,GAAG,MAAM,WAAW;AAAA,IACxE,gBAAgB,MAAM,cAAc,MAAM,MAAM,WAAW;AAAA,IAC3D,UAAU,MAAM,aAAa,MAAM,YAAY;AAAA,IAC/C,UAAU,MAAM,aAAa,MAAM,YAAY;AAAA,IAC/C,OAAO,MAAM,UAAU,MAAM,UAAU,UAAU;AAAA,IACjD,UAAU,MAAM,aAAa,MAAM,YAAY;AAAA,EACjD;AACF;AAMO,SAAS,iBAAiB,KAAmC;AAClE,QAAM,QAAQ,WAAW,YAAY;AACrC,SAAO,OAAO,OAAO,YAAY;AACnC;AAcO,SAAS,cAAyC,OAAU,UAAU,MAA+E;AAC1J,QAAM,QAAQ,WAAW,YAAY;AACrC,QAAM,YAAY,UAAU,OAAO,YAAY;AAC/C,YAAU,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC;AAC1C,MAAI,CAAC,SAAS,CAAC,QAAS,QAAO;AAC/B,QAAM,QAAQ,MAAM,iBAAiB,MAAM,UAAa,MAAM,YAAY,MAAM;AAChF,SAAO;AAAA,IACL,GAAG;AAAA,IACH,mBAAmB,QAAQ,MAAM,iBAAiB,IAAI,MAAM;AAAA,IAC5D,oBAAoB,QAAQ,MAAM,kBAAkB,GAAG,MAAM,WAAW;AAAA,IACxE,UAAU,MAAM,aAAa,MAAM,YAAY;AAAA,IAC/C,gBAAgB,MAAM,UAAU,OAAO;AAAA,IACvC,iBAAiB,MAAM,WAAW,OAAO;AAAA,EAC3C;AACF;","names":[]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Button
|
|
3
|
+
} from "./chunk-2IEXY3OZ.js";
|
|
4
|
+
import {
|
|
5
|
+
skeletonBoxProps
|
|
6
|
+
} from "./chunk-54HHEXXD.js";
|
|
7
|
+
|
|
8
|
+
// src/empty/Empty.tsx
|
|
9
|
+
import { InboxIcon } from "lucide-react";
|
|
10
|
+
import { cn } from "@mari-ui/core";
|
|
11
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
+
var SIZE = {
|
|
13
|
+
sm: { root: "py-8 px-4 gap-1.5", icon: "size-10 [&_svg]:size-5", title: "text-sm", description: "text-xs", actionGap: "mt-3" },
|
|
14
|
+
md: { root: "py-16 px-4 gap-2", icon: "size-14 [&_svg]:size-7", title: "text-lg", description: "text-sm", actionGap: "mt-4" }
|
|
15
|
+
};
|
|
16
|
+
function Empty({
|
|
17
|
+
title,
|
|
18
|
+
description,
|
|
19
|
+
buttonText,
|
|
20
|
+
onClick,
|
|
21
|
+
href,
|
|
22
|
+
icon,
|
|
23
|
+
buttonIcon,
|
|
24
|
+
actions,
|
|
25
|
+
size = "md",
|
|
26
|
+
titleAs: TitleTag = "p",
|
|
27
|
+
className,
|
|
28
|
+
skeleton = false
|
|
29
|
+
}) {
|
|
30
|
+
const s = SIZE[size];
|
|
31
|
+
if (skeleton) {
|
|
32
|
+
return /* @__PURE__ */ jsxs("div", { "aria-hidden": true, className: cn("flex flex-col items-center justify-center text-center", s.root, className), children: [
|
|
33
|
+
/* @__PURE__ */ jsx("span", { ...skeletonBoxProps(cn("rounded-full", s.icon)) }),
|
|
34
|
+
/* @__PURE__ */ jsx("span", { ...skeletonBoxProps(cn("mt-1 h-4 w-40 rounded-sm")) }),
|
|
35
|
+
description && /* @__PURE__ */ jsx("span", { ...skeletonBoxProps("h-3 w-56 max-w-full rounded-sm") })
|
|
36
|
+
] });
|
|
37
|
+
}
|
|
38
|
+
const hasButton = Boolean(buttonText && (onClick || href));
|
|
39
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center justify-center text-center", s.root, className), children: [
|
|
40
|
+
/* @__PURE__ */ jsx("div", { "aria-hidden": true, className: cn("mb-1 flex items-center justify-center rounded-full bg-mari-surface-alt text-mari-muted", s.icon), children: icon ?? /* @__PURE__ */ jsx(InboxIcon, {}) }),
|
|
41
|
+
/* @__PURE__ */ jsx(TitleTag, { className: cn("font-semibold text-balance text-mari-foreground", s.title), children: title }),
|
|
42
|
+
description && /* @__PURE__ */ jsx("p", { className: cn("max-w-md text-pretty text-mari-muted", s.description), children: description }),
|
|
43
|
+
actions ? /* @__PURE__ */ jsx("div", { className: cn("flex flex-wrap items-center justify-center gap-2", s.actionGap), children: actions }) : hasButton && /* @__PURE__ */ jsx("div", { className: s.actionGap, children: /* @__PURE__ */ jsx(Button, { color: "primary", size: size === "sm" ? "sm" : "md", onClick, href, icon: buttonIcon, children: buttonText }) })
|
|
44
|
+
] });
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export {
|
|
48
|
+
Empty
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=chunk-LBXIPDAB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/empty/Empty.tsx"],"sourcesContent":["import React from \"react\";\nimport { InboxIcon } from \"lucide-react\";\nimport { cn } from \"@mari-ui/core\";\nimport { Button } from \"../button\";\nimport { skeletonBoxProps, type SkeletonableProps } from \"../lib/skeleton\";\n\nexport interface EmptyProps extends SkeletonableProps {\n title: string;\n description?: React.ReactNode;\n /** Tek birincil eylem. `onClick` (ya da `href`) olmadan buton çizilmez. */\n buttonText?: string;\n onClick?: () => void;\n /** Butonu bağlantı olarak çizer (başka sayfaya götüren eylem). */\n href?: string;\n icon?: React.ReactNode;\n buttonIcon?: React.ReactNode;\n /** Birden çok ya da özel eylem (ör. birincil + ikincil buton). Verilirse `buttonText` yok sayılır. */\n actions?: React.ReactNode;\n /** `md` (varsayılan): sayfa/bölüm. `sm`: kart, tablo, liste içi — daha az boşluk, küçük ikon. */\n size?: \"sm\" | \"md\";\n /**\n * Başlığın etiketi. Varsayılan `p`: boş durum bir belge BÖLÜMÜ değildir —\n * eskiden sabit `<h2>`'ydi, kart/tablo içinde başlık hiyerarşisini bozuyordu.\n * Sayfanın ana içeriği boşsa uygun bir başlık seviyesi verin.\n */\n titleAs?: \"p\" | \"h2\" | \"h3\" | \"h4\";\n className?: string;\n}\n\nconst SIZE = {\n sm: { root: \"py-8 px-4 gap-1.5\", icon: \"size-10 [&_svg]:size-5\", title: \"text-sm\", description: \"text-xs\", actionGap: \"mt-3\" },\n md: { root: \"py-16 px-4 gap-2\", icon: \"size-14 [&_svg]:size-7\", title: \"text-lg\", description: \"text-sm\", actionGap: \"mt-4\" },\n} as const;\n\n/**\n * Faz 15: varsayılan ikon `FileWarning` idi — boş durum bir HATA değil\n * (`InboxIcon`). İkon yumuşak bir daire içinde; başlık `h2` yerine `p`\n * (`titleAs`); `onClick` olmadan `buttonText` verilince işe yaramaz, devre dışı\n * bir buton çiziliyordu — artık buton yalnızca bir eylem varsa çıkar.\n */\n// Hook yok, browser API yok — saf sunum, \"use client\" gerekmiyor.\nexport function Empty({\n title,\n description,\n buttonText,\n onClick,\n href,\n icon,\n buttonIcon,\n actions,\n size = \"md\",\n titleAs: TitleTag = \"p\",\n className,\n skeleton = false,\n}: Readonly<EmptyProps>) {\n const s = SIZE[size];\n\n if (skeleton) {\n return (\n <div aria-hidden className={cn(\"flex flex-col items-center justify-center text-center\", s.root, className)}>\n <span {...skeletonBoxProps(cn(\"rounded-full\", s.icon))} />\n <span {...skeletonBoxProps(cn(\"mt-1 h-4 w-40 rounded-sm\"))} />\n {description && <span {...skeletonBoxProps(\"h-3 w-56 max-w-full rounded-sm\")} />}\n </div>\n );\n }\n\n const hasButton = Boolean(buttonText && (onClick || href));\n\n return (\n <div className={cn(\"flex flex-col items-center justify-center text-center\", s.root, className)}>\n <div aria-hidden className={cn(\"mb-1 flex items-center justify-center rounded-full bg-mari-surface-alt text-mari-muted\", s.icon)}>\n {icon ?? <InboxIcon />}\n </div>\n <TitleTag className={cn(\"font-semibold text-balance text-mari-foreground\", s.title)}>{title}</TitleTag>\n {description && <p className={cn(\"max-w-md text-pretty text-mari-muted\", s.description)}>{description}</p>}\n {actions ? (\n <div className={cn(\"flex flex-wrap items-center justify-center gap-2\", s.actionGap)}>{actions}</div>\n ) : (\n hasButton && (\n <div className={s.actionGap}>\n <Button color=\"primary\" size={size === \"sm\" ? \"sm\" : \"md\"} onClick={onClick} href={href} icon={buttonIcon}>\n {buttonText}\n </Button>\n </div>\n )\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AACA,SAAS,iBAAiB;AAC1B,SAAS,UAAU;AAyDb,SACE,KADF;AA9BN,IAAM,OAAO;AAAA,EACX,IAAI,EAAE,MAAM,qBAAqB,MAAM,0BAA0B,OAAO,WAAW,aAAa,WAAW,WAAW,OAAO;AAAA,EAC7H,IAAI,EAAE,MAAM,oBAAoB,MAAM,0BAA0B,OAAO,WAAW,aAAa,WAAW,WAAW,OAAO;AAC9H;AASO,SAAS,MAAM;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS,WAAW;AAAA,EACpB;AAAA,EACA,WAAW;AACb,GAAyB;AACvB,QAAM,IAAI,KAAK,IAAI;AAEnB,MAAI,UAAU;AACZ,WACE,qBAAC,SAAI,eAAW,MAAC,WAAW,GAAG,yDAAyD,EAAE,MAAM,SAAS,GACvG;AAAA,0BAAC,UAAM,GAAG,iBAAiB,GAAG,gBAAgB,EAAE,IAAI,CAAC,GAAG;AAAA,MACxD,oBAAC,UAAM,GAAG,iBAAiB,GAAG,0BAA0B,CAAC,GAAG;AAAA,MAC3D,eAAe,oBAAC,UAAM,GAAG,iBAAiB,gCAAgC,GAAG;AAAA,OAChF;AAAA,EAEJ;AAEA,QAAM,YAAY,QAAQ,eAAe,WAAW,KAAK;AAEzD,SACE,qBAAC,SAAI,WAAW,GAAG,yDAAyD,EAAE,MAAM,SAAS,GAC3F;AAAA,wBAAC,SAAI,eAAW,MAAC,WAAW,GAAG,0FAA0F,EAAE,IAAI,GAC5H,kBAAQ,oBAAC,aAAU,GACtB;AAAA,IACA,oBAAC,YAAS,WAAW,GAAG,mDAAmD,EAAE,KAAK,GAAI,iBAAM;AAAA,IAC3F,eAAe,oBAAC,OAAE,WAAW,GAAG,wCAAwC,EAAE,WAAW,GAAI,uBAAY;AAAA,IACrG,UACC,oBAAC,SAAI,WAAW,GAAG,oDAAoD,EAAE,SAAS,GAAI,mBAAQ,IAE9F,aACE,oBAAC,SAAI,WAAW,EAAE,WAChB,8BAAC,UAAO,OAAM,WAAU,MAAM,SAAS,OAAO,OAAO,MAAM,SAAkB,MAAY,MAAM,YAC5F,sBACH,GACF;AAAA,KAGN;AAEJ;","names":[]}
|