@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
package/dist/menu.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/menu/basic-menu/BasicMenu.tsx","../src/menu/utils.ts","../src/menu/_shared/NavBar.tsx","../src/menu/_shared/MobileNav.tsx","../src/menu/_shared/NavDrawer.tsx","../src/menu/_shared/_components/MegaPanelPromoGrid.tsx","../src/menu/_shared/MenuLink.tsx","../src/menu/_shared/_components/MobileNavLevel.tsx","../src/menu/_shared/responsive.ts","../src/menu/basic-menu/_components/BasicMenuItem.tsx","../src/menu/basic-menu/_components/DropdownSubMenu.tsx","../src/menu/basic-menu/_components/SubMenuRow.tsx","../src/menu/mega-menu/MegaMenu.tsx","../src/menu/_shared/MegaPanel.tsx","../src/menu/_shared/_components/MegaPanelColumn.tsx","../src/menu/_shared/_components/MegaPanelRail.tsx","../src/menu/mega-menu/_components/MegaMenuItem.tsx","../src/menu/sidebar/Sidebar.tsx","../src/menu/_shared/useHoverIntent.ts","../src/menu/sidebar/_components/SidebarButton.tsx","../src/menu/sidebar/_components/SidebarMegaPanel.tsx","../src/menu/sidebar/_components/SidebarMenu.tsx","../src/menu/sidebar/_components/SidebarItem.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport type { MenuColorProps } from \"../types\";\nimport { findActiveKeyByRoute } from \"../utils\";\nimport { NavBar, type NavBarBaseProps } from \"../_shared/NavBar\";\nimport { BasicMenuItem } from \"./_components/BasicMenuItem\";\nimport { DropdownSubMenu } from \"./_components/DropdownSubMenu\";\n\nexport type BasicMenuProps = NavBarBaseProps & MenuColorProps;\n\n/**\n * `currentPath` eskiden kabul edilip hiç kullanılmıyordu — sayfa yenilendiğinde\n * (veya SSR'da) aktif öğe her zaman `data[0]`e düşüyordu, gerçek route ne\n * olursa olsun (Faz 13.5 bulgusu). Artık `findActiveKeyByRoute` ile\n * `currentPath`e karşılık gelen öğe varsa o başlangıçta aktif.\n *\n * 2026-09-22: `data[0]`e geri düşme davranışı KALDIRILDI — Sidebar hiçbir\n * zaman böyle bir varsayılan seçmiyordu (`findActiveKeyByRoute` eşleşmezse\n * `null` kalır) ve `currentPath` hiç eşleşmediğinde ilk öğeyi \"aktif\" göstermek\n * yanıltıcıydı (kullanıcı nav'da olmayan bir sayfadaysa bile ilk öğe vurgulanırdı).\n * BasicMenu artık Sidebar'la tutarlı: eşleşme yoksa hiçbir öğe aktif görünmez.\n *\n * Faz 13.5 kullanıcı bulgusu: logo ve öğeler eskiden TEK bir flex satırında,\n * yan yana render ediliyordu — \"logo solda sabit, öğeler ortada/sağda, eylem\n * alanı (giriş/sepet) en sağda\" gibi HERHANGİ BİR gerçek navbar düzeni\n * (bkz. e-ticaret/kurumsal siteler) kurulamıyordu; ayrıca konteynerde hiç\n * `padding` yoktu, öğeler kenara yapışıyordu. Artık logo/öğeler/`actions`\n * üç ayrı grup — `justify-between` ile logo sabit solda, `actions` sabit\n * sağda kalır, öğeler aradaki alanı `menuItemJustify`e göre kullanır.\n *\n * Responsive (kullanıcı bulgusu — hiç düşünülmemişti; dar ekranda öğeler\n * taşıyor ve başlıklar iki satıra kırılıyordu): `mobileBreakpoint` altında\n * öğeler CSS ile gizlenir, logonun soluna hamburger gelir (`MobileNav`).\n * JS ile değil CSS ile gizlendiği için SSR/hydration'da sıçrama yok.\n *\n * Faz 15.5: çubuk kabuğu (logo, `<nav><ul>`, `actions`, mobil çekmece,\n * sticky, iskelet) MegaMenu ile ortak `NavBar`da. Route'u olan öğeler gerçek\n * link (`MenuLink`), geçerli sayfa `aria-current=\"page\"`.\n */\nexport function BasicMenu({ data, color = \"primary\", currentPath, onNavigate, ...barProps }: BasicMenuProps) {\n const [activeKey, setActiveKey] = useState<string | null>(null);\n\n useEffect(() => {\n setActiveKey(findActiveKeyByRoute(data, currentPath));\n }, [data, currentPath]);\n\n return (\n <NavBar\n {...barProps}\n data={data}\n color={color}\n currentPath={currentPath}\n onNavigate={onNavigate}\n activeKey={activeKey}\n onItemSelect={(item) => setActiveKey(item.key)}\n renderItem={(item) =>\n item.children ? (\n <DropdownSubMenu item={item} activeKey={activeKey} setActiveKey={setActiveKey} color={color} onNavigate={onNavigate} currentPath={currentPath} />\n ) : (\n <BasicMenuItem item={item} activeKey={activeKey} setActiveKey={setActiveKey} color={color} onNavigate={onNavigate} />\n )\n }\n />\n );\n}\n","\"use client\";\n\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport { bgSubtleClass, textClass, textHoverClass } from \"../lib/colorClasses\";\nimport type { MenuItemJustify, MenuItemType, MenuPosition, SidebarVariant } from \"./types\";\n\nexport function getMenuItemJustify(justify: MenuItemJustify): string {\n return { left: \"justify-start\", right: \"justify-end\", center: \"justify-center\" }[justify];\n}\n\n/**\n * Eskiden `onNavigate ?? window.location.href` düşüşü 6 farklı dosyada\n * birbirinden bağımsız kopyalanmıştı (BasicMenuItem, DropdownSubMenu,\n * MegaMenuItem, MegaSubMenu, SidebarItem, MegaSub) — tek bir yerde.\n */\nexport function navigateTo(route: string | undefined, onNavigate?: (route: string) => void): void {\n if (!route) return;\n if (onNavigate) onNavigate(route);\n else window.location.href = route;\n}\n\nexport function getMenuPosition(position: MenuPosition): string {\n return { default: \"\", sticky: \"sticky top-0\", fixed: \"fixed top-0 w-full\" }[position];\n}\n\nexport function isMenuItemActive(item: MenuItemType, activeKey: string | null): boolean {\n if (!activeKey) return false;\n if (item.key === activeKey) return true;\n if (item.children) return item.children.some((child) => isMenuItemActive(child, activeKey));\n return false;\n}\n\n/**\n * Yatay nav öğesinin alt göstergesi. Eskiden öğenin kendi `border-b-2`'siydi —\n * öğe `rounded-md` bir `Button` olduğundan çizginin uçları köşe yuvarlaklığıyla\n * bükülüyordu, ve rengi açık `-border` tonuydu (primary DEĞİL). Artık kutunun\n * altına oturan ayrı, düz bir `::after` çubuğu: rengi rol renginin kendisi\n * (`--mari-color-primary` — açık temada koyu, KOYU temada açık ton; `-solid`\n * her iki temada da koyu kaldığı için koyu zeminde kayboluyordu),\n * hover'da ortadan iki yana açılır (`scale-x`), aktif/açıkken tam görünür.\n * Kutu boyutunu hiç etkilemediği için jitter yok; yazı kalınlığı da sabit.\n */\nconst INDICATOR_COLOR_CLASS: Record<ColorRole, string> = {\n primary: \"after:bg-mari-primary\",\n accent: \"after:bg-mari-accent\",\n success: \"after:bg-mari-success\",\n error: \"after:bg-mari-error\",\n warning: \"after:bg-mari-warning\",\n info: \"after:bg-mari-info\",\n neutral: \"after:bg-mari-neutral\",\n};\n\n/** Alt menüsü AÇIK tetikleyici (`aria-expanded=\"true\"`) aktif gibi görünsün. Literal — Tailwind birleştirilmiş string'i taramaz. */\nconst EXPANDED_TEXT_CLASS: Record<ColorRole, string> = {\n primary: \"aria-expanded:text-mari-primary\",\n accent: \"aria-expanded:text-mari-accent\",\n success: \"aria-expanded:text-mari-success\",\n error: \"aria-expanded:text-mari-error\",\n warning: \"aria-expanded:text-mari-warning\",\n info: \"aria-expanded:text-mari-info\",\n neutral: \"aria-expanded:text-mari-neutral\",\n};\n\nexport function getItemClass(item: MenuItemType, activeKey: string | null, color: ColorRole): string {\n const isActive = isMenuItemActive(item, activeKey);\n return cn(\n // `whitespace-nowrap`: dar genişlikte \"Ana Sayfa\" gibi başlıklar iki satıra kırılıyordu.\n \"relative whitespace-nowrap font-medium transition-colors duration-150\",\n \"after:pointer-events-none after:absolute after:inset-x-3 after:bottom-0 after:h-0.5 after:origin-center after:transition-transform after:duration-200 after:ease-out after:content-['']\",\n INDICATOR_COLOR_CLASS[color],\n isActive\n ? cn(textClass[color], \"after:scale-x-100\")\n : cn(\"text-mari-foreground/80\", textHoverClass[color], \"after:scale-x-0 hover:after:scale-x-100 aria-expanded:after:scale-x-100\", EXPANDED_TEXT_CLASS[color])\n );\n}\n\n/**\n * Faz 13.5 kullanıcı bulgusu: aktif öğe eskiden sadece metin rengiyle\n * ayırt ediliyordu — Button'ın kendi varsayılan `solid`/`primary` dolgusu\n * yüzünden zaten HER öğe koyu mavi bir buton gibi göründüğünden bu incelik\n * hiç fark edilmiyordu. `SidebarItem`/`BasicMenuItem`/`MegaMenuItem` artık\n * `variant=\"ghost\" color=\"neutral\"` (düz metin görünümü) kullanıyor; aktif\n * öğe gerçek modern sidebar'lardaki gibi (GitHub, Linear vb.) yumuşak bir\n * arka plan + vurgu rengiyle ayrışıyor. Eskiden bu iki çağrı sitesi\n * (dropdown/mega panel satırları ve Sidebar satırları) neredeyse birebir\n * aynı iki ayrı fonksiyondu (`getMenuListItemClass`/`getSidebarItemClass`)\n * — tek fonksiyonda birleştirildi, `MegaPanel`in ray/kolon satırları da\n * aynısını kullanıyor.\n */\nexport function getMenuVerticalItemClass(item: MenuItemType, activeKey: string | null, color: ColorRole): string {\n const isActive = isMenuItemActive(item, activeKey);\n return isActive ? cn(textClass[color], bgSubtleClass[color], \"font-medium\") : cn(textHoverClass[color], \"hover:bg-mari-surface-alt font-normal\");\n}\n\n/**\n * Eskiden `w-2xs`/`w-6xl`/`w-12` gibi bir karışım kullanıyordu — `2xs`/`6xl`\n * Tailwind'in `w-*` (width) skalasında GERÇEKTEN YOK (Slider'daki\n * `w-lg`/`w-md` hatasının aynısı, bkz. plan). Gerçek genişliklerle düzeltildi.\n *\n * Ray 48px'ten 64px'e çıktı: 20px ikon + iki yanda 14px satır dolgusu + 8px\n * nav dolgusu; 48px'te ikon ortalanamıyor ve etiketin ilk harfleri görünüyordu.\n * Hover'da genişleyen ray içeriğin ÜSTÜNE bindiği için gölge alır.\n */\nexport function getSidebarWidthClass(variant: SidebarVariant, expanded: boolean, onlyIcon = false): string {\n if (onlyIcon) return \"w-16\";\n if (variant === \"hover\") return expanded ? \"w-64 shadow-mari-lg\" : \"w-16\";\n return expanded ? \"w-64\" : \"w-0 border-0\";\n}\n\nexport function findActiveKeyByRoute(items: MenuItemType[], route: string | undefined): string | null {\n if (!route) return null;\n for (const item of items) {\n if (item.route === route) return item.key;\n if (item.children) {\n const found = findActiveKeyByRoute(item.children, route);\n if (found) return found;\n }\n }\n return null;\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport type { MenuItemJustify, MenuItemType, MenuNavigationProps, MenuPosition } from \"../types\";\nimport { getMenuItemJustify, getMenuPosition } from \"../utils\";\nimport { MobileNav } from \"./MobileNav\";\nimport { MenuLink } from \"./MenuLink\";\nimport { DESKTOP_ONLY_CLASS, MOBILE_ONLY_CLASS, type MenuMobileBreakpoint } from \"./responsive\";\nimport { SkeletonSlot } from \"../../lib/SkeletonSlot\";\nimport { skeletonFill, type SkeletonableProps } from \"../../lib/skeleton\";\n\n/** BasicMenu ve MegaMenu'nün ortak çubuk prop'ları. */\nexport interface NavBarBaseProps extends MenuNavigationProps, SkeletonableProps {\n data: MenuItemType[];\n logo?: React.ReactNode;\n /** Verilirse logo bu adrese giden gerçek bir link olur (genelde `\"/\"`). `onNavigate` varsa ona devredilir. */\n logoHref?: string;\n /** Logo bir düğme olarak davranır (`logoHref` yoksa). İkisi de yoksa logo etkileşimsizdir. */\n onLogoClick?: () => void;\n /** Etkileşimli logonun erişilebilir adı. Varsayılan \"Ana sayfa\". */\n logoLabel?: string;\n menuItemJustify?: MenuItemJustify;\n menuPosition?: MenuPosition;\n /** Sağ tarafta gösterilecek keyfi içerik (örn. \"Giriş Yap\" düğmesi, sepet ikonu, arama). */\n actions?: React.ReactNode;\n /**\n * Bu genişliğin ALTINDA yatay öğeler gizlenir, yerine hamburger + soldan\n * kayan çekmece gelir (`actions` çubukta kalır). Varsayılan: `\"lg\"` (1024px).\n */\n mobileBreakpoint?: MenuMobileBreakpoint;\n /** Öğeleri saran `<nav>`ın erişilebilir adı. Varsayılan \"Ana menü\". */\n \"aria-label\"?: string;\n}\n\ninterface NavBarProps extends NavBarBaseProps {\n color: ColorRole;\n activeKey: string | null;\n onItemSelect: (item: MenuItemType) => void;\n /** Her üst öğenin masaüstü render'ı (`<li>` içine konur). */\n renderItem: (item: MenuItemType) => React.ReactNode;\n /** Çubuğun kutusu — MegaMenu paneli tam genişlikte bu kutunun altına hizalar. */\n barRef?: React.Ref<HTMLDivElement>;\n /** Çubuğun yanına (portal panel vb.). */\n children?: React.ReactNode;\n}\n\nconst placeholder = <span className={cn(\"block size-full min-h-[1lh] rounded-md\", skeletonFill(true))} />;\n\n/**\n * Faz 15.5 — BasicMenu/MegaMenu'nün ortak kabuğu (eskiden iki dosyada kopya):\n * logo solda sabit, öğeler `<nav aria-label><ul>` içinde, `actions` sağda\n * sabit; `mobileBreakpoint` altında hamburger + çekmece (CSS ile — SSR'da\n * sıçrama yok). Logo `logoHref` ile link, `onLogoClick` ile düğme, ikisi de\n * yoksa etkileşimsiz. `sticky`/`fixed` → `z-mari-sticky`. Gölge token'lı.\n * `skeleton`: hamburger, logo, her öğe ve `actions` kendi kutusunda yer tutucu.\n */\nexport function NavBar({\n data,\n logo,\n logoHref,\n onLogoClick,\n logoLabel = \"Ana sayfa\",\n menuItemJustify = \"left\",\n menuPosition = \"default\",\n color,\n onNavigate,\n currentPath,\n actions,\n mobileBreakpoint = \"lg\",\n skeleton = false,\n \"aria-label\": ariaLabel = \"Ana menü\",\n activeKey,\n onItemSelect,\n renderItem,\n barRef,\n children,\n}: Readonly<NavBarProps>) {\n let logoNode: React.ReactNode = null;\n if (logo && logoHref) {\n logoNode = (\n <MenuLink route={logoHref} onNavigate={onNavigate} className=\"shrink-0 rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\">\n <span className=\"sr-only\">{logoLabel}</span>\n <span aria-hidden=\"true\">{logo}</span>\n </MenuLink>\n );\n } else if (logo && onLogoClick) {\n logoNode = (\n <button type=\"button\" aria-label={logoLabel} className=\"shrink-0 cursor-pointer rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\" onClick={onLogoClick}>\n {logo}\n </button>\n );\n } else if (logo) {\n logoNode = <div className=\"shrink-0\">{logo}</div>;\n }\n\n return (\n <div className={cn(getMenuPosition(menuPosition), menuPosition !== \"default\" && \"z-mari-sticky\")}>\n <div\n ref={barRef}\n aria-busy={skeleton || undefined}\n className=\"flex flex-row items-center justify-between gap-4 border-b border-mari-border bg-mari-surface px-4 py-3 shadow-mari-sm\"\n >\n <div className=\"flex min-w-0 shrink-0 items-center gap-2\">\n <SkeletonSlot on={skeleton} placeholder={placeholder} className={MOBILE_ONLY_CLASS[mobileBreakpoint]}>\n <MobileNav\n data={data}\n color={color}\n breakpoint={mobileBreakpoint}\n logo={logo}\n activeKey={activeKey}\n onItemSelect={onItemSelect}\n onNavigate={onNavigate}\n currentPath={currentPath}\n />\n </SkeletonSlot>\n {logoNode && (\n <SkeletonSlot on={skeleton} placeholder={placeholder} className=\"shrink-0\">\n {logoNode}\n </SkeletonSlot>\n )}\n </div>\n\n <nav aria-label={ariaLabel} className={cn(\"min-w-0 flex-1\", DESKTOP_ONLY_CLASS[mobileBreakpoint])}>\n <ul className={cn(\"flex w-full flex-row items-center gap-1 xl:gap-4\", getMenuItemJustify(menuItemJustify))}>\n {data.map((item) => (\n <li key={item.key} className=\"flex\">\n <SkeletonSlot on={skeleton} placeholder={placeholder}>\n {renderItem(item)}\n </SkeletonSlot>\n </li>\n ))}\n </ul>\n </nav>\n\n {actions && (\n <SkeletonSlot on={skeleton} placeholder={placeholder} flow=\"flex\" className=\"shrink-0\">\n <div className=\"flex shrink-0 flex-row items-center gap-3\">{actions}</div>\n </SkeletonSlot>\n )}\n </div>\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useEffect, useId, useState } from \"react\";\nimport { MenuIcon } from \"lucide-react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport type { MenuItemType, MenuNavigationProps } from \"../types\";\nimport { NavDrawer } from \"./NavDrawer\";\nimport { MOBILE_BREAKPOINT_PX, MOBILE_ONLY_CLASS, type MenuMobileBreakpoint } from \"./responsive\";\n\nexport interface MobileNavProps extends MenuNavigationProps {\n data: MenuItemType[];\n color: ColorRole;\n /** Bu genişliğin altında hamburger görünür; üstüne çıkınca açık çekmece kendiliğinden kapanır. */\n breakpoint: MenuMobileBreakpoint;\n /** Çekmecenin başlığında gösterilir. */\n logo?: React.ReactNode;\n /** Host kendi aktif öğesini tutuyorsa (BasicMenu) onu geçer; verilmezse `currentPath`ten bulunur. */\n activeKey?: string | null;\n /** Yaprak öğe seçildiğinde (`navigateTo`dan önce) — host aktif öğesini güncelleyebilsin diye. */\n onItemSelect?: (item: MenuItemType) => void;\n /** Çekmecenin (dialog) erişilebilir adı. */\n label?: string;\n}\n\n/**\n * Navbar'ların (BasicMenu/MegaMenu) mobil hâli: hamburger düğmesi + soldan\n * kayan çekmece (`NavDrawer`). Kullanıcı bulgusu: iki navbar da hiç\n * responsive değildi — dar ekranda öğeler taşıyor, \"Ana Sayfa\" gibi\n * başlıklar iki satıra kırılıyor, mega panel/alt menüler hover'a dayalı\n * olduğu için dokunmatik cihazda fiilen kullanılamıyordu.\n *\n * Viewport `breakpoint`in üstüne çıkarsa (hamburger CSS ile gizlenince) açık\n * çekmece kendiliğinden kapanır — yoksa kapatma düğmesi olmayan bir masaüstü\n * ekranında asılı kalırdı.\n */\nexport function MobileNav({ data, color, breakpoint, logo, activeKey, onItemSelect, onNavigate, currentPath, label }: Readonly<MobileNavProps>) {\n const [open, setOpen] = useState(false);\n const panelId = useId();\n\n useEffect(() => {\n if (!open || typeof window.matchMedia !== \"function\") return;\n const query = window.matchMedia(`(min-width: ${MOBILE_BREAKPOINT_PX[breakpoint]}px)`);\n const handleChange = (event: MediaQueryListEvent) => {\n if (event.matches) setOpen(false);\n };\n query.addEventListener(\"change\", handleChange);\n return () => query.removeEventListener(\"change\", handleChange);\n }, [open, breakpoint]);\n\n return (\n <>\n <button\n type=\"button\"\n aria-label={open ? \"Menüyü kapat\" : \"Menüyü aç\"}\n aria-expanded={open}\n aria-controls={open ? panelId : undefined}\n onClick={() => setOpen((prev) => !prev)}\n className={cn(\n \"-ml-2 inline-flex size-10 shrink-0 cursor-pointer items-center justify-center rounded-md text-mari-foreground transition-colors hover:bg-mari-surface-alt focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\",\n MOBILE_ONLY_CLASS[breakpoint]\n )}\n >\n <MenuIcon aria-hidden=\"true\" size={22} />\n </button>\n\n <NavDrawer\n id={panelId}\n open={open}\n onClose={() => setOpen(false)}\n data={data}\n color={color}\n header={logo}\n activeKey={activeKey}\n onItemSelect={onItemSelect}\n onNavigate={onNavigate}\n currentPath={currentPath}\n label={label}\n className={MOBILE_ONLY_CLASS[breakpoint]}\n />\n </>\n );\n}\n","\"use client\";\n\nimport React, { useEffect, useId, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { XIcon } from \"lucide-react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport { bgSolidClass, textSolidContrastClass } from \"../../lib/colorClasses\";\nimport { useModalBehavior, usePresence } from \"../../lib/overlay\";\nimport type { MenuItemType, MenuNavigationProps } from \"../types\";\nimport { findActiveKeyByRoute } from \"../utils\";\nimport { MegaPanelPromoGrid } from \"./_components/MegaPanelPromoGrid\";\nimport { MobileNavLevel } from \"./_components/MobileNavLevel\";\n\n/** Kapanış animasyonu bitene kadar çekmece DOM'da kalır. */\nconst CLOSE_ANIMATION_MS = 250;\n\nexport interface NavDrawerProps extends MenuNavigationProps {\n /** Dialog'un `id`si — tetikleyicinin `aria-controls`u için. Verilmezse üretilir. */\n id?: string;\n open: boolean;\n onClose: () => void;\n data: MenuItemType[];\n color: ColorRole;\n /** Çekmecenin başlık şeridi (logo ya da Amazon tarzı \"Merhaba, …\" bloğu). Kapatma düğmesi her zaman yanında. */\n header?: React.ReactNode;\n /** Başlık şeridini rol renginin dolgusuyla vurgular (Amazon'daki koyu karşılama bandının yapısı). */\n emphasizedHeader?: boolean;\n /** Çekmecenin açıldığı kenar. Varsayılan `\"left\"`. */\n side?: \"left\" | \"right\";\n /** Host kendi aktif öğesini tutuyorsa onu geçer; verilmezse `currentPath`ten bulunur. */\n activeKey?: string | null;\n /** Yaprak öğe seçildiğinde (`navigateTo`dan önce). */\n onItemSelect?: (item: MenuItemType) => void;\n /** Çekmecenin (dialog) erişilebilir adı. */\n label?: string;\n /** Portal sarmalayıcısına eklenecek sınıf — örn. mobil navbar'ın `lg:hidden`ı. */\n className?: string;\n}\n\n/**\n * Kenardan kayan, kademeli (drill-down) gezinme çekmecesi. İki yerde\n * kullanılıyor: navbar'ların mobil hâli (`MobileNav`) ve Sidebar'ın\n * `variant=\"drawer\"`ı (Amazon'un hamburger menüsünün yapısı).\n *\n * - `document.body`'ye portal edilir (sticky/overflow'lu atalar kırpamasın),\n * `role=\"dialog\"` + `aria-modal`.\n * - Açıkken: sayfa kaydırması kilitlenir, odak çekmeceye taşınır ve içinde\n * döner (Tab tuzağı), Escape/scrim kapatır, kapanınca odak açılıştan önce\n * odaklı olan öğeye (genelde tetikleyici) geri döner.\n * - Seviye değişince odak: içeri girildiyse \"geri\" düğmesine, geri\n * çıkıldıysa girilen satıra — klavye kullanıcısı yerini kaybetmez.\n */\nexport function NavDrawer({\n id,\n open,\n onClose,\n data,\n color,\n header,\n emphasizedHeader = false,\n side = \"left\",\n activeKey,\n onItemSelect,\n onNavigate,\n currentPath,\n label = \"Ana menü\",\n className,\n}: NavDrawerProps) {\n const [trail, setTrail] = useState<MenuItemType[]>([]);\n const panelRef = useRef<HTMLDivElement>(null);\n const backRef = useRef<HTMLButtonElement>(null);\n // Portal/kaydırma kilidi/odak tuzağı/Escape — Drawer ile ortak (lib/overlay).\n const mounted = usePresence(open, CLOSE_ANIMATION_MS);\n useModalBehavior(open, panelRef, onClose);\n /** Bir seviye geri dönüldüğünde odağın döneceği satırın anahtarı. */\n const returnKeyRef = useRef<string | null>(null);\n const generatedId = useId();\n const panelId = id ?? generatedId;\n\n const resolvedActiveKey = activeKey !== undefined ? activeKey : findActiveKeyByRoute(data, currentPath);\n\n // Kapanış animasyonu bitip unmount olunca kök seviyeye dön.\n useEffect(() => {\n if (!mounted) setTrail([]);\n }, [mounted]);\n\n useEffect(() => {\n if (!open) return;\n const returnKey = returnKeyRef.current;\n if (returnKey) {\n returnKeyRef.current = null;\n const rows = panelRef.current?.querySelectorAll<HTMLElement>(\"[data-menu-key]\") ?? [];\n Array.from(rows)\n .find((row) => row.dataset.menuKey === returnKey)\n ?.focus();\n } else if (trail.length > 0) {\n backRef.current?.focus();\n }\n panelRef.current?.querySelector(\"[data-nav-drawer-body]\")?.scrollTo?.({ top: 0 });\n }, [trail, open]);\n\n // Gezinmenin kendisi `MenuLink`te (gerçek `<a href>`); burada yalnızca seçim bildirilip çekmece kapanır.\n const handleSelect = (item: MenuItemType) => {\n onItemSelect?.(item);\n onClose();\n };\n\n const handleBack = () => {\n returnKeyRef.current = trail[trail.length - 1]?.key ?? null;\n setTrail((prev) => prev.slice(0, -1));\n };\n\n if (!mounted || typeof document === \"undefined\") return null;\n\n const parent = trail[trail.length - 1];\n const items = parent ? (parent.children ?? []) : data;\n const isLeft = side === \"left\";\n const hiddenTranslate = isLeft ? \"-translate-x-full\" : \"translate-x-full\";\n\n return createPortal(\n <div className={cn(\"fixed inset-0 z-mari-drawer\", className, !open && \"pointer-events-none\")}>\n <div aria-hidden=\"true\" onClick={onClose} className={cn(\"absolute inset-0 bg-mari-scrim transition-opacity duration-250 starting:opacity-0\", open ? \"opacity-100\" : \"opacity-0\")} />\n <div\n ref={panelRef}\n id={panelId}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={label}\n className={cn(\n \"absolute inset-y-0 flex w-[min(22rem,85vw)] flex-col border-mari-border bg-mari-surface text-mari-foreground shadow-mari-lg transition-transform duration-250 ease-out\",\n isLeft ? \"left-0 border-r starting:-translate-x-full\" : \"right-0 border-l starting:translate-x-full\",\n open ? \"translate-x-0\" : hiddenTranslate\n )}\n >\n <div\n className={cn(\n \"flex min-h-14 shrink-0 items-center justify-between gap-3 px-4\",\n emphasizedHeader ? cn(bgSolidClass[color], textSolidContrastClass[color]) : \"border-b border-mari-border\"\n )}\n >\n <div className=\"min-w-0 flex-1 truncate\">{header}</div>\n <button\n type=\"button\"\n aria-label=\"Menüyü kapat\"\n onClick={onClose}\n className={cn(\n \"-mr-2 inline-flex size-10 shrink-0 cursor-pointer items-center justify-center rounded-md transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\",\n emphasizedHeader ? \"hover:bg-current/15\" : \"text-mari-muted hover:bg-mari-surface-alt hover:text-mari-foreground\"\n )}\n >\n <XIcon aria-hidden=\"true\" size={20} />\n </button>\n </div>\n\n <div data-nav-drawer-body className=\"flex-1 overflow-y-auto overscroll-contain\">\n <MobileNavLevel\n key={parent?.key ?? \"root\"}\n items={items}\n trail={trail}\n activeKey={resolvedActiveKey}\n color={color}\n backRef={backRef}\n onDrill={(item) => setTrail((prev) => [...prev, item])}\n onBack={handleBack}\n onSelect={handleSelect}\n onNavigate={onNavigate}\n />\n {parent?.promoTiles && parent.promoTiles.length > 0 && (\n <MegaPanelPromoGrid tiles={parent.promoTiles} onNavigate={onNavigate} onTileClick={onClose} className=\"w-full px-4 pb-6\" />\n )}\n </div>\n </div>\n </div>,\n document.body\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { cn } from \"@mari-ui/core\";\nimport type { MenuNavigationProps, MenuPromoTile } from \"../../types\";\nimport { MenuLink } from \"../MenuLink\";\nimport { NewTabHint } from \"../../../lib/linkBehavior\";\n\nexport interface MegaPanelPromoGridProps extends MenuNavigationProps {\n tiles: MenuPromoTile[];\n /** Karta tıklanınca (gezinmeden ÖNCE) çağrılır — host kendi panelini/çekmecesini kapatabilsin diye. */\n onTileClick?: (tile: MenuPromoTile) => void;\n /** Varsayılan genişlik (`w-64`) masaüstü paneli için; mobil çekmece tam genişlik ister. */\n className?: string;\n}\n\n/**\n * Referans sitelerdeki karma boyutlu kart ızgarasının YAPISI alındı (küçük\n * kareler + birkaç geniş banner), pixel-exact boyutlar değil. `span` sadece\n * bu 2 kolonluk ızgara İÇİNDE ne kadar yer kapladığını belirler — tüm\n * panelin genişliğine yayılan tam-genişlik banner (referansın en alttaki\n * yazıcı reklamı gibi) bu turun kapsamı dışında bırakıldı.\n *\n * `Card` KASITLI OLARAK kullanılmadı: onun DOM'u (cover'a sabit `mb-4`, ayrı\n * padded bir `body` div'i) \"görsel kutuyu tamamen doldur, altına gradient'li\n * başlık bindir\" düzenine uymuyor — Card'ı zorlamak yerine üç token'ı\n * (`border-mari-border`, `elevationClass.sm`) doğrudan kullanan hafif bir\n * kutu yeterli.\n */\nconst SPAN_CLASS: Record<NonNullable<MenuPromoTile[\"span\"]>, string> = {\n sm: \"col-span-1 aspect-square\",\n wide: \"col-span-2 aspect-[21/9]\",\n full: \"col-span-2 aspect-[16/9]\",\n};\n\nexport function MegaPanelPromoGrid({ tiles, onNavigate, onTileClick, className }: Readonly<MegaPanelPromoGridProps>) {\n return (\n <div className={cn(\"grid w-64 shrink-0 grid-cols-2 gap-3 self-start\", className)}>\n {tiles.map((tile) => (\n <MenuLink\n key={tile.title}\n route={tile.href}\n target={tile.target}\n reloadDocument={tile.reloadDocument}\n onNavigate={onNavigate}\n onSelect={() => onTileClick?.(tile)}\n className={cn(\n \"group relative block cursor-pointer overflow-hidden rounded-lg border border-mari-border transition-shadow hover:shadow-mari-sm focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\",\n SPAN_CLASS[tile.span ?? \"sm\"]\n )}\n >\n <img src={tile.image} alt=\"\" className=\"absolute inset-0 h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\" />\n <span className=\"absolute inset-x-0 bottom-0 flex items-center gap-1 bg-gradient-to-t from-black/70 to-transparent px-2 py-1.5 text-start text-xs font-semibold text-white\">\n {tile.title}\n <NewTabHint target={tile.target} />\n </span>\n </MenuLink>\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { bypassesRouter, getLinkAttrs, isPlainLeftClick, type LinkBehaviorProps } from \"../../lib/linkBehavior\";\n\nexport interface MenuLinkProps extends LinkBehaviorProps {\n /** Varsa gerçek bir `<a href>` render edilir; yoksa (ya da `disabled`) düğme. */\n route?: string;\n onNavigate?: (route: string) => void;\n /** Tıklamada (gezinmeden önce) — host aktif öğeyi güncellesin / panelini kapatsın diye. */\n onSelect?: () => void;\n disabled?: boolean;\n /** Geçerli sayfa ise `aria-current=\"page\"`. */\n current?: boolean;\n className?: string;\n children: React.ReactNode;\n /** Ray satırı gibi hover/odakla seçim yapan öğeler için. */\n onMouseEnter?: React.MouseEventHandler<HTMLElement>;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n /** Odak geri döndürme gibi DOM aramaları için (`[data-menu-key]`). */\n \"data-menu-key\"?: string;\n /** Seçili ray öğesi — klavyeyle açılan panelde odak buraya gelir. */\n \"data-selected\"?: boolean;\n \"data-sidebar-key\"?: string;\n /** Kapalı akordeonun içindeki satırlar Tab sırasından çıkar (`-1`). */\n tabIndex?: number;\n /** Daraltılmış rayda tam başlık ipucu. */\n title?: string;\n}\n\n/**\n * Faz 15.5 — menü öğeleri eskiden `<button>` + `window.location.href` idi:\n * orta tık / \"yeni sekmede aç\" / adres önizlemesi çalışmıyor, arama motorları\n * menüdeki sayfaları hiç göremiyordu. Artık route'u olan öğe gerçek bir link.\n *\n * Router bağımsızdır (component Next mi React Router mı bilmez): `onNavigate`\n * verilmişse DÜZ sol tık engellenip ona devredilir (Next: `router.push`,\n * React Router: `navigate`) → sayfa yenilenmeden geçiş. Değiştirici tuşlu\n * tıklamalar, `target` (`_self` dışı), `reloadDocument` ve dış adresler\n * (`https:`, `mailto:`…) her zaman tarayıcıya bırakılır.\n */\nexport function MenuLink({ route, onNavigate, onSelect, disabled, current, target, reloadDocument, className, children, ...rest }: Readonly<MenuLinkProps>) {\n if (!route || disabled) {\n return (\n <button type=\"button\" {...rest} disabled={disabled} onClick={onSelect} className={className}>\n {children}\n </button>\n );\n }\n return (\n <a\n {...rest}\n href={route}\n {...getLinkAttrs(target)}\n aria-current={current ? \"page\" : undefined}\n className={className}\n onClick={(event) => {\n onSelect?.();\n if (!onNavigate || !isPlainLeftClick(event) || bypassesRouter(route, { target, reloadDocument })) return;\n event.preventDefault();\n onNavigate(route);\n }}\n >\n {children}\n </a>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport { bgSubtleClass, textClass } from \"../../../lib/colorClasses\";\nimport type { MenuItemType } from \"../../types\";\nimport { isMenuItemActive } from \"../../utils\";\nimport { MenuLink } from \"../MenuLink\";\nimport { NewTabHint } from \"../../../lib/linkBehavior\";\n\nexport interface MobileNavLevelProps {\n /** Bu seviyede listelenen öğeler. */\n items: MenuItemType[];\n /** İçine girilmiş üst öğeler zinciri — boşsa kök seviyedeyiz. */\n trail: MenuItemType[];\n activeKey: string | null;\n color: ColorRole;\n onDrill: (item: MenuItemType) => void;\n onBack: () => void;\n /** Yaprak / \"Tümünü gör\" tıklandığında (gezinmeden önce) — host çekmeceyi kapatır. */\n onSelect: (item: MenuItemType) => void;\n onNavigate?: (route: string) => void;\n backRef: React.Ref<HTMLButtonElement>;\n}\n\nconst ROW_CLASS =\n \"flex min-h-12 w-full items-center gap-3 px-4 py-2.5 text-start text-sm transition-colors duration-150 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-mari-ring\";\n\n/**\n * Mobil çekmecenin tek bir seviyesi. Referans mobil menülerin (Amazon/Trendyol\n * çekmecesi) YAPISI: alt seviyede üstte \"geri\" satırı + seviye başlığı (üst\n * öğenin kendi route'u varsa yanında \"Tümünü gör\"), altında 48px yüksekliğinde\n * dokunma dostu satırlar; çocuğu olan satır sağda chevron taşır ve bir seviye\n * içeri girer (accordion değil — derin veride liste boyu patlamasın diye).\n */\nexport function MobileNavLevel({ items, trail, activeKey, color, onDrill, onBack, onSelect, onNavigate, backRef }: Readonly<MobileNavLevelProps>) {\n const parent = trail[trail.length - 1];\n const backLabel = trail[trail.length - 2]?.title ?? \"Ana Menü\";\n // Seviyede ikonlu bir kardeş varsa ikonsuz satırlar da aynı yeri ayırır — başlıklar tek hizada dursun.\n const reserveIconSlot = items.some((item) => item.icon && !item.heading);\n\n return (\n <div className=\"flex flex-col pb-4 transition-[opacity,translate] duration-200 ease-out starting:translate-x-3 starting:opacity-0\">\n {parent && (\n <>\n <button\n ref={backRef}\n type=\"button\"\n onClick={onBack}\n className={cn(ROW_CLASS, \"cursor-pointer gap-2 border-b border-mari-border font-medium text-mari-muted hover:bg-mari-surface-alt hover:text-mari-foreground\")}\n >\n <ChevronLeftIcon aria-hidden=\"true\" size={18} className=\"shrink-0\" />\n {backLabel}\n </button>\n <div className=\"flex items-center justify-between gap-3 px-4 pt-4 pb-2\">\n <span className=\"text-base font-semibold text-mari-foreground\">{parent.title}</span>\n {parent.route && (\n <MenuLink route={parent.route} target={parent.target} reloadDocument={parent.reloadDocument} onNavigate={onNavigate} onSelect={() => onSelect(parent)} className={cn(\"shrink-0 cursor-pointer text-sm font-medium hover:underline\", textClass[color])}>\n Tümünü gör\n </MenuLink>\n )}\n </div>\n </>\n )}\n\n <ul className=\"flex flex-col\">\n {items.map((item) => {\n if (item.heading) {\n return (\n // Amazon çekmecesinin yapısı: her bölüm bir ayraçla ayrılır, başlığı kalın ve okunur (soluk küçük etiket değil).\n <li key={item.key} className=\"mt-2 border-t border-mari-border px-4 pt-4 pb-1 text-base font-semibold text-mari-foreground first:mt-0 first:border-t-0 first:pt-3\">\n {item.title}\n </li>\n );\n }\n const hasChildren = !!item.children?.length;\n const active = isMenuItemActive(item, activeKey);\n const rowClass = cn(\n ROW_CLASS,\n item.disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\",\n active ? cn(textClass[color], bgSubtleClass[color], \"font-medium\") : cn(\"text-mari-foreground\", !item.disabled && \"hover:bg-mari-surface-alt\")\n );\n const content = (\n <>\n {item.icon ? (\n <span aria-hidden=\"true\" className={cn(\"flex size-5 shrink-0 items-center justify-center [&_svg]:size-5\", !active && \"text-mari-muted\")}>\n {item.icon}\n </span>\n ) : (\n reserveIconSlot && <span aria-hidden=\"true\" className=\"size-5 shrink-0\" />\n )}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"flex min-w-0 items-center gap-1\">\n <span className=\"truncate\">{item.title}</span>\n <NewTabHint target={item.target} />\n </span>\n {item.description && <span className=\"line-clamp-1 text-xs text-mari-muted\">{item.description}</span>}\n </span>\n {hasChildren && <ChevronRightIcon aria-hidden=\"true\" size={18} className=\"shrink-0 text-mari-muted\" />}\n </>\n );\n // Çocuklu satır bir seviye içeri girer (düğme); yaprak gerçek bir link.\n const row = hasChildren ? (\n <button type=\"button\" data-menu-key={item.key} disabled={item.disabled} onClick={() => onDrill(item)} className={rowClass}>\n {content}\n </button>\n ) : (\n <MenuLink route={item.route} target={item.target} reloadDocument={item.reloadDocument} onNavigate={onNavigate} onSelect={() => onSelect(item)} disabled={item.disabled} current={active} className={rowClass}>\n {content}\n </MenuLink>\n );\n return <li key={item.key}>{row}</li>;\n })}\n </ul>\n </div>\n );\n}\n","/**\n * Navbar'ların (BasicMenu/MegaMenu) masaüstü ↔ mobil geçiş noktası. Bu\n * genişliğin ALTINDA yatay öğeler gizlenir, yerine hamburger + çekmece\n * (`MobileNav`) gelir. Değerler `@mari-ui/tokens`un `breakpoint` skalasıyla\n * (ve Tailwind'in varsayılanlarıyla) aynı.\n */\nexport type MenuMobileBreakpoint = \"md\" | \"lg\" | \"xl\";\n\nexport const MOBILE_BREAKPOINT_PX: Record<MenuMobileBreakpoint, number> = {\n md: 768,\n lg: 1024,\n xl: 1280,\n};\n\n/** Literal tablolar — Tailwind birleştirilmiş/dinamik sınıf adlarını taramaz. */\nexport const DESKTOP_ONLY_CLASS: Record<MenuMobileBreakpoint, string> = {\n md: \"hidden md:flex\",\n lg: \"hidden lg:flex\",\n xl: \"hidden xl:flex\",\n};\n\nexport const MOBILE_ONLY_CLASS: Record<MenuMobileBreakpoint, string> = {\n md: \"md:hidden\",\n lg: \"lg:hidden\",\n xl: \"xl:hidden\",\n};\n","\"use client\";\n\nimport React from \"react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport type { MenuItemType, MenuNavigationProps } from \"../../types\";\nimport { getItemClass } from \"../../utils\";\nimport { touchTargetClass } from \"../../../lib/sizeClasses\";\nimport { MenuLink } from \"../../_shared/MenuLink\";\nimport { NewTabHint } from \"../../../lib/linkBehavior\";\n\nexport interface BasicMenuItemProps extends MenuNavigationProps {\n item: MenuItemType;\n activeKey: string | null;\n setActiveKey: (key: string) => void;\n color: ColorRole;\n className?: string;\n}\n\n/**\n * Navbar'ın alt menüsüz öğesi. `DropdownSubMenu`nün tetikleyicisiyle AYNI kutu\n * (`px-3 py-2 text-sm`) ve aynı alt gösterge (`getItemClass`) — iki tür öğe\n * yan yana aynı hizada ve aynı yükseklikte durur. Route'u olan öğe gerçek bir\n * link (`MenuLink`), geçerli sayfa `aria-current=\"page\"` taşır.\n */\nexport function BasicMenuItem({ item, activeKey, setActiveKey, color, onNavigate, className }: Readonly<BasicMenuItemProps>) {\n return (\n <MenuLink\n route={item.route}\n onNavigate={onNavigate}\n disabled={item.disabled}\n target={item.target}\n reloadDocument={item.reloadDocument}\n current={item.key === activeKey}\n onSelect={() => setActiveKey(item.key)}\n className={cn(\n \"relative inline-flex items-center gap-2 rounded-md px-3 py-2 text-sm focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\",\n touchTargetClass.md,\n item.disabled ? \"cursor-not-allowed opacity-50\" : cn(\"cursor-pointer\", getItemClass(item, activeKey, color)),\n className\n )}\n >\n {item.icon}\n {item.title}\n <NewTabHint target={item.target} />\n </MenuLink>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { ChevronDownIcon, ChevronRightIcon } from \"lucide-react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport { Dropdown, DropdownContent, DropdownTrigger } from \"../../../dropdown\";\nimport { useDropdown } from \"../../../dropdown/useDropdown\";\nimport type { MenuItemType, MenuNavigationProps } from \"../../types\";\nimport { getItemClass, isMenuItemActive } from \"../../utils\";\nimport { touchTargetClass } from \"../../../lib/sizeClasses\";\nimport { MenuLink } from \"../../_shared/MenuLink\";\nimport { BasicMenuItem } from \"./BasicMenuItem\";\nimport { SubMenuRowContent, getSubMenuRowClass } from \"./SubMenuRow\";\n\nexport interface DropdownSubMenuProps extends MenuNavigationProps {\n item: MenuItemType;\n activeKey: string | null;\n setActiveKey: (key: string) => void;\n color: ColorRole;\n}\n\n/** Navbar'ın `py-3` iç boşluğu kadar ek mesafe: panel, çubuğun ÜSTÜNE binmeden hemen altından açılır. */\nconst NAVBAR_OFFSET_PX = 12;\n/** Düz listede bu sayıdan fazla öğe varsa panel iki kolona geçer. */\nconst TWO_COLUMN_THRESHOLD = 4;\n\ninterface RowProps extends MenuNavigationProps {\n item: MenuItemType;\n activeKey: string | null;\n setActiveKey: (key: string) => void;\n color: ColorRole;\n /** Yaprak seçildikten sonra — host kendi panelini kapatır. */\n onAfterSelect?: () => void;\n}\n\n/** Yaprak satır: gerçek bir link (`MenuLink`); tıklanınca aktif öğeyi günceller ve paneli kapatır. */\nfunction LeafRow({ item, activeKey, setActiveKey, color, onNavigate, onAfterSelect }: Readonly<RowProps>) {\n return (\n <MenuLink\n route={item.route}\n onNavigate={onNavigate}\n disabled={item.disabled}\n target={item.target}\n reloadDocument={item.reloadDocument}\n current={item.key === activeKey}\n className={getSubMenuRowClass(item)}\n onSelect={() => {\n setActiveKey(item.key);\n onAfterSelect?.();\n }}\n >\n <SubMenuRowContent item={item} active={isMenuItemActive(item, activeKey)} color={color} />\n </MenuLink>\n );\n}\n\n/** İç içe alt menü: satırın kendisi tetikleyici, paneli sağa doğru açılır. */\nfunction FlyoutRow(props: Readonly<RowProps>) {\n const { item, activeKey, color } = props;\n return (\n <Dropdown hover className=\"block self-auto\">\n <DropdownTrigger className={getSubMenuRowClass(item)}>\n <SubMenuRowContent item={item} active={isMenuItemActive(item, activeKey)} color={color} trailing={<ChevronRightIcon aria-hidden=\"true\" size={16} className=\"mt-0.5 shrink-0 self-center text-mari-muted\" />} />\n </DropdownTrigger>\n <DropdownContent placement=\"right-start\" offset={6} className=\"w-72 rounded-xl p-2\">\n <RowList {...props} items={item.children ?? []} />\n </DropdownContent>\n </Dropdown>\n );\n}\n\nfunction RowList({ items, ...rest }: Omit<RowProps, \"item\"> & { items: MenuItemType[] }) {\n return (\n <>\n {/* `item` spread'den SONRA: `FlyoutRow` kendi prop'larını (kendi `item`i dahil) buraya geçiriyor —\n önce yazıldığında iç içe panel çocukları değil üst öğeyi tekrar tekrar gösteriyordu. */}\n {items.map((child) => (child.children?.length ? <FlyoutRow key={child.key} {...rest} item={child} /> : <LeafRow key={child.key} {...rest} item={child} />))}\n </>\n );\n}\n\nexport type SubMenuPanelBodyProps = Omit<RowProps, \"item\"> & { items: MenuItemType[] };\n\n/**\n * Gruplu (başlıklı kolonlar) görünüm yalnızca HER çocuk bir grupsa. Eskiden\n * tek bir çocuğun alt öğesi olması yetiyordu: karışık veride düz öğeler de\n * \"grup\" sayılıp kendi başlıklarıyla tekrar ediliyordu (\"ÜRÜN LİSTESİ →\n * Ürün Listesi\") ve panel gereksizce genişleyip viewport'tan taşıyordu.\n * Karışık veri düz satırlar olarak kalır; alt öğesi olan satır kendi flyout'unu açar.\n */\nfunction isGrouped(items: MenuItemType[]): boolean {\n return items.length > 0 && items.every((child) => child.children && child.children.length > 0);\n}\n\n/** Panelin genişlik sınıfı — veri şekline göre (düz / iki kolon / gruplu). */\nexport function getSubMenuPanelWidthClass(items: MenuItemType[]): string {\n if (isGrouped(items)) return \"w-max\";\n return items.length > TWO_COLUMN_THRESHOLD ? \"w-[36rem]\" : \"w-80\";\n}\n\n/**\n * Alt menü panelinin gövdesi (BasicMenu'nün dropdown'ı ve Sidebar'ın\n * `dropdown` modu aynı paneli kullanıyor). Veri şekline göre:\n * - Düz (tek seviye) → ikon karosu + başlık + açıklama satırları; öğe sayısı\n * `TWO_COLUMN_THRESHOLD`i geçerse iki kolon.\n * - Gruplu (çocukların kendi çocukları varsa) → her grup küçük bir başlık +\n * altında satırlar, gruplar yan yana kolonlar.\n */\nexport function SubMenuPanelBody({ items, ...rowProps }: SubMenuPanelBodyProps) {\n if (isGrouped(items)) {\n return (\n // `flex-wrap`: grup sayısı viewport'a sığmıyorsa (panel `max-w`ye takılır) gruplar alt satıra iner.\n <div className=\"flex flex-wrap gap-2\">\n {items.map((group) => (\n <div key={group.key} className=\"flex w-64 flex-col\">\n <div className=\"px-2.5 pt-1.5 pb-1 text-xs font-semibold uppercase tracking-wide text-mari-muted\">{group.title}</div>\n <RowList {...rowProps} items={group.children?.length ? group.children : [group]} />\n </div>\n ))}\n </div>\n );\n }\n return (\n <div className={cn(items.length > TWO_COLUMN_THRESHOLD && \"grid grid-cols-2\")}>\n <RowList {...rowProps} items={items} />\n </div>\n );\n}\n\n/** `DropdownContent`in içinde: yaprak seçilince en dıştaki dropdown'ı kapatır. */\nfunction DropdownPanelBody(props: SubMenuPanelBodyProps) {\n const { setVisible } = useDropdown();\n return <SubMenuPanelBody {...props} onAfterSelect={() => setVisible(false)} />;\n}\n\n/**\n * Üst navbar'daki alt menüsü olan öğe. Panel içeriği veri şekline göre:\n * - Düz (tek seviye) → ikon karosu + başlık + açıklama satırları; öğe sayısı\n * `TWO_COLUMN_THRESHOLD`i geçerse iki kolon.\n * - Gruplu (çocukların kendi çocukları varsa) → her grup küçük bir başlık +\n * altında satırlar, gruplar yan yana kolonlar. Ray + promosyon içeren tam\n * genişlik mega panel BasicMenu'nün değil `MegaMenu`nün işi.\n * Tetikleyici hem hover hem tıklama/klavye ile açılır (DropdownTrigger).\n */\nexport function DropdownSubMenu({ item, activeKey, setActiveKey, color, onNavigate, currentPath }: Readonly<DropdownSubMenuProps>) {\n if (!item.children) {\n return <BasicMenuItem item={item} activeKey={activeKey} setActiveKey={setActiveKey} color={color} onNavigate={onNavigate} />;\n }\n\n const children = item.children;\n const rowProps = { activeKey, setActiveKey, color, onNavigate, currentPath };\n\n return (\n <Dropdown hover>\n <DropdownTrigger\n className={cn(\n \"group inline-flex items-center gap-2 rounded-md px-3 py-2 text-sm focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\",\n touchTargetClass.md,\n getItemClass(item, activeKey, color)\n )}\n >\n {item.icon}\n {item.title}\n <ChevronDownIcon aria-hidden=\"true\" size={14} className=\"opacity-60 transition-transform duration-200 group-aria-expanded:rotate-180\" />\n </DropdownTrigger>\n <DropdownContent placement=\"bottom-start\" offset={NAVBAR_OFFSET_PX} className={cn(\"max-w-[calc(100vw-2rem)] rounded-xl p-2\", getSubMenuPanelWidthClass(children))}>\n <DropdownPanelBody {...rowProps} items={children} />\n </DropdownContent>\n </Dropdown>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport type { MenuItemType } from \"../../types\";\nimport { NewTabHint } from \"../../../lib/linkBehavior\";\n\n/** Literal tablolar — Tailwind birleştirilmiş/dinamik sınıf adlarını taramaz. */\nconst TILE_HOVER_CLASS: Record<ColorRole, string> = {\n primary: \"group-hover/row:bg-mari-primary-subtle group-hover/row:text-mari-primary\",\n accent: \"group-hover/row:bg-mari-accent-subtle group-hover/row:text-mari-accent\",\n success: \"group-hover/row:bg-mari-success-subtle group-hover/row:text-mari-success\",\n error: \"group-hover/row:bg-mari-error-subtle group-hover/row:text-mari-error\",\n warning: \"group-hover/row:bg-mari-warning-subtle group-hover/row:text-mari-warning\",\n info: \"group-hover/row:bg-mari-info-subtle group-hover/row:text-mari-info\",\n neutral: \"group-hover/row:bg-mari-neutral-subtle group-hover/row:text-mari-neutral\",\n};\nconst TILE_ACTIVE_CLASS: Record<ColorRole, string> = {\n primary: \"bg-mari-primary-subtle text-mari-primary\",\n accent: \"bg-mari-accent-subtle text-mari-accent\",\n success: \"bg-mari-success-subtle text-mari-success\",\n error: \"bg-mari-error-subtle text-mari-error\",\n warning: \"bg-mari-warning-subtle text-mari-warning\",\n info: \"bg-mari-info-subtle text-mari-info\",\n neutral: \"bg-mari-neutral-subtle text-mari-neutral\",\n};\nconst TITLE_HOVER_CLASS: Record<ColorRole, string> = {\n primary: \"group-hover/row:text-mari-primary\",\n accent: \"group-hover/row:text-mari-accent\",\n success: \"group-hover/row:text-mari-success\",\n error: \"group-hover/row:text-mari-error\",\n warning: \"group-hover/row:text-mari-warning\",\n info: \"group-hover/row:text-mari-info\",\n neutral: \"group-hover/row:text-mari-neutral\",\n};\nconst TITLE_ACTIVE_CLASS: 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/** Satırın kendisi (buton ya da `DropdownTrigger`) için ortak kutu sınıfları. */\nexport function getSubMenuRowClass(item: MenuItemType): string {\n return cn(\n \"group/row flex w-full gap-3 rounded-lg p-2.5 text-start transition-colors duration-150\",\n \"focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-mari-ring\",\n item.description ? \"items-start\" : \"items-center\",\n item.disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer hover:bg-mari-surface-alt\"\n );\n}\n\nexport interface SubMenuRowContentProps {\n item: MenuItemType;\n active: boolean;\n color: ColorRole;\n /** Satırın sağında (örn. iç içe alt menü için chevron). */\n trailing?: React.ReactNode;\n}\n\n/**\n * Alt menü satırının içeriği: ikon karosu + başlık + (varsa) açıklama. Modern\n * nav menülerindeki (Stripe, Vercel, Linear) \"ikon + başlık + tek satır\n * açıklama\" yapısı; renkler tamamen kendi token'larımızdan — karo dinlenmede\n * nötr, hover/aktifte seçili rengin `-subtle` zemini + asıl rengi.\n */\nexport function SubMenuRowContent({ item, active, color, trailing }: Readonly<SubMenuRowContentProps>) {\n const interactive = !item.disabled;\n return (\n <>\n {item.icon && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"flex size-9 shrink-0 items-center justify-center rounded-lg transition-colors duration-150 [&_svg]:size-[1.125rem]\",\n active ? TILE_ACTIVE_CLASS[color] : cn(\"bg-mari-surface-alt text-mari-muted\", interactive && TILE_HOVER_CLASS[color])\n )}\n >\n {item.icon}\n </span>\n )}\n <span className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n <span className={cn(\"inline-flex items-center gap-1 text-sm font-medium transition-colors duration-150\", active ? TITLE_ACTIVE_CLASS[color] : cn(\"text-mari-foreground\", interactive && TITLE_HOVER_CLASS[color]))}>\n {item.title}\n <NewTabHint target={item.target} />\n </span>\n {item.description && <span className=\"line-clamp-2 text-xs leading-snug text-mari-muted\">{item.description}</span>}\n </span>\n {trailing}\n </>\n );\n}\n","\"use client\";\n\nimport React, { useCallback, useEffect, useId, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@mari-ui/core\";\nimport { MegaPanel } from \"../_shared\";\nimport type { MenuColorProps, MenuItemType } from \"../types\";\nimport { findActiveKeyByRoute } from \"../utils\";\nimport { NavBar, type NavBarBaseProps } from \"../_shared/NavBar\";\nimport { getFocusable, getRovingTarget } from \"../../dropdown/utils\";\nimport { MegaMenuItem } from \"./_components/MegaMenuItem\";\n\nexport type MegaMenuProps = NavBarBaseProps & MenuColorProps;\n\n/**\n * Kullanıcı bulgusu: nav öğesinden panele inerken menü kapanıyordu. Öğenin\n * `onMouseLeave`i ANINDA kapatıyordu; navbar'ın `py-3` boşluğu ne öğeye ne\n * panele ait olduğundan fare oradan geçerken menü kapanıyor, kapanan panel\n * `pointer-events-none` olduğu için de fareyi bir daha HİÇ göremiyordu —\n * yani menüye ulaşmak imkânsızdı. `Dropdown`daki hover-intent deseninin\n * aynısı: kapatma gecikmeli planlanır, fare panele (veya başka bir üst\n * öğeye) varırsa iptal edilir.\n */\nconst HOVER_CLOSE_DELAY_MS = 200;\n/** Panelin viewport'un alt kenarına yapışmaması için bırakılan pay. */\nconst VIEWPORT_EDGE_PX = 8;\n\n/**\n * Odak paneldeyken: ↑/↓/Home/End/harf gezinmesi; panelin sonundan Tab\n * tetikleyiciden SONRAKİ üst öğeye (panel DOM'da body'nin sonunda), başından\n * Shift+Tab tetikleyiciye geçer ve paneli kapatır.\n */\nfunction handlePanelKey(event: KeyboardEvent, panel: HTMLElement, bar: HTMLElement | null, trigger: HTMLElement | null, close: () => void) {\n const active = document.activeElement;\n const typing = active instanceof HTMLInputElement || active instanceof HTMLTextAreaElement;\n const focusable = getFocusable(panel);\n if (!typing && !event.metaKey && !event.ctrlKey && !event.altKey) {\n const target = getRovingTarget(focusable, active, event.key);\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n }\n }\n if (event.key !== \"Tab\") return;\n const leavingForward = !event.shiftKey && active === (focusable.at(-1) ?? null);\n const leavingBackward = event.shiftKey && active === (focusable[0] ?? null);\n if (!leavingForward && !leavingBackward) return;\n event.preventDefault();\n close();\n if (leavingBackward || !trigger) {\n trigger?.focus();\n return;\n }\n const barFocusable = getFocusable(bar);\n (barFocusable[barFocusable.indexOf(trigger) + 1] ?? trigger).focus();\n}\n\n/**\n * Alt panel tam genişlikte ve nav bar bandına (tek bir tetikleyici\n * dikdörtgenine değil) sabitlendiğinden `Dropdown` primitive'i kullanılmıyor;\n * çubuk kabuğu (logo, `<nav>`, `actions`, mobil çekmece, iskelet) BasicMenu\n * ile ortak `NavBar`da, panel içeriği (`MegaPanel`) Sidebar ile ortak.\n *\n * Faz 15.5 klavye modeli (APG disclosure navigation): çocuklu öğe\n * Enter/Boşluk/↓ ile açılır ve odak panelin ilk öğesine taşınır; panelde\n * ↑/↓/Home/End/harf gezinir, Escape kapatıp odağı tetikleyiciye döndürür,\n * panelin sonundan Tab bir sonraki üst öğeye, başından Shift+Tab\n * tetikleyiciye geçer. Odak menü dışına çıkınca / dışarı tıklanınca kapanır.\n * Kapalı panel `invisible` → içindeki linkler Tab sırasına girmez.\n * `currentPath`: üst öğe alt çizgisi + ray ön seçimi + link `aria-current`.\n */\nexport function MegaMenu({ data, color = \"primary\", currentPath, onNavigate, menuItemJustify = \"center\", ...barProps }: MegaMenuProps) {\n const [openKey, setOpenKey] = useState<string | null>(null);\n // Kapanış animasyonu sürerken içerik boşalmasın diye son açılan öğe tutulur.\n const [shownKey, setShownKey] = useState<string | null>(null);\n const [activeKey, setActiveKey] = useState<string | null>(null);\n const [panelBox, setPanelBox] = useState<{ top: number; left: number; width: number } | null>(null);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const barRef = useRef<HTMLDivElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const focusPanelOnOpenRef = useRef(false);\n const panelId = useId();\n const visible = openKey !== null;\n const shownItem = data.find((item) => item.key === shownKey);\n\n useEffect(() => {\n setActiveKey(findActiveKeyByRoute(data, currentPath));\n }, [data, currentPath]);\n\n const cancelClose = useCallback(() => {\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const close = useCallback(() => {\n cancelClose();\n setOpenKey(null);\n }, [cancelClose]);\n\n const scheduleClose = useCallback(() => {\n cancelClose();\n closeTimerRef.current = setTimeout(() => {\n // Klavye odağı paneldeyken fare çekilse bile panel kapanmaz.\n if (panelRef.current?.contains(document.activeElement)) return;\n setOpenKey(null);\n }, HOVER_CLOSE_DELAY_MS);\n }, [cancelClose]);\n\n const open = useCallback(\n (key: string) => {\n cancelClose();\n setOpenKey(key);\n setShownKey(key);\n },\n [cancelClose]\n );\n\n const triggerFor = (key: string | null) => (key ? barRef.current?.querySelector<HTMLElement>(`[data-mega-key=\"${CSS.escape(key)}\"]`) : null);\n\n useEffect(() => cancelClose, [cancelClose]);\n\n // Kullanıcı bulgusu: `menuPosition=\"sticky\"` (veya panelin `overflow`'lu bir\n // atası olduğu her durumda) panel KIRPILIYORDU. Çözüm `DropdownContent`teki\n // ile aynı: panel `document.body`'ye portal edilir ve navbar'ın gerçek\n // kutusuna göre `position: fixed` konumlanır; konum her karede tazelenir.\n useEffect(() => {\n if (!visible) return;\n let frameId: number;\n const update = () => {\n const bar = barRef.current;\n if (bar) {\n const rect = bar.getBoundingClientRect();\n setPanelBox((prev) =>\n prev && prev.top === rect.bottom && prev.left === rect.left && prev.width === rect.width ? prev : { top: rect.bottom, left: rect.left, width: rect.width }\n );\n }\n frameId = requestAnimationFrame(update);\n };\n frameId = requestAnimationFrame(update);\n return () => cancelAnimationFrame(frameId);\n }, [visible]);\n\n // Klavyeyle açıldıysa panel görünür olunca odak ilk öğeye.\n useEffect(() => {\n if (!visible || !panelBox || !focusPanelOnOpenRef.current) return;\n focusPanelOnOpenRef.current = false;\n // Seçili ray öğesine (aktif sayfanın kategorisi) — ilk öğeye odaklanmak rayı ona çevirip ön seçimi ezerdi.\n const panel = panelRef.current;\n (panel?.querySelector<HTMLElement>(\"[data-selected]\") ?? getFocusable(panel)[0])?.focus();\n }, [visible, panelBox, openKey]);\n\n useEffect(() => {\n if (!visible) return;\n const inMenu = (node: Node | null) => !!node && (!!barRef.current?.contains(node) || !!panelRef.current?.contains(node));\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const panel = panelRef.current;\n const trigger = triggerFor(openKey);\n const focusInPanel = !!panel && panel.contains(document.activeElement);\n\n if (event.key === \"Escape\") {\n close();\n if (focusInPanel || document.activeElement === (trigger ?? null)) trigger?.focus();\n return;\n }\n if (!focusInPanel || !panel) return;\n\n handlePanelKey(event, panel, barRef.current, trigger ?? null, close);\n };\n const handlePointerDown = (event: MouseEvent) => {\n if (!inMenu(event.target as Node)) close();\n };\n const handleFocusIn = (event: FocusEvent) => {\n const target = event.target as Node;\n if (panelRef.current?.contains(target) || triggerFor(openKey)?.contains(target)) return;\n close();\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"focusin\", handleFocusIn);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"focusin\", handleFocusIn);\n };\n }, [visible, openKey, close]);\n\n return (\n <NavBar\n {...barProps}\n data={data}\n color={color}\n currentPath={currentPath}\n onNavigate={onNavigate}\n menuItemJustify={menuItemJustify}\n activeKey={activeKey}\n onItemSelect={(item) => setActiveKey(item.key)}\n barRef={barRef}\n renderItem={(item: MenuItemType) => (\n <MegaMenuItem\n item={item}\n open={openKey === item.key}\n activeKey={activeKey}\n panelId={panelId}\n color={color}\n onNavigate={onNavigate}\n onHover={() => (item.children?.length ? open(item.key) : close())}\n onLeave={scheduleClose}\n onToggle={(source) => {\n const isOpen = openKey === item.key;\n if (isOpen && (source === \"key\" || source === \"touch\")) {\n close();\n return;\n }\n focusPanelOnOpenRef.current = source === \"key\" || source === \"arrow\";\n open(item.key);\n }}\n />\n )}\n >\n {shownItem?.children &&\n panelBox &&\n typeof document !== \"undefined\" &&\n createPortal(\n <div\n ref={panelRef}\n id={panelId}\n aria-label={shownItem.title}\n role=\"region\"\n onMouseEnter={cancelClose}\n onMouseLeave={scheduleClose}\n style={{\n top: panelBox.top,\n left: panelBox.left,\n width: panelBox.width,\n maxHeight: `calc(100vh - ${panelBox.top + VIEWPORT_EDGE_PX}px)`,\n }}\n className={cn(\n // `overscroll-contain`: panel kendi içinde sonuna geldiğinde kaydırma arkadaki sayfaya ZİNCİRLENMEZ.\n // Kapalıyken `invisible` (geçişin sonunda): linkler Tab sırasına ve ekran okuyucuya girmez.\n \"fixed z-mari-dropdown origin-top overflow-y-auto overscroll-contain border-b border-mari-border bg-mari-surface shadow-mari-lg transition-[opacity,translate,visibility] duration-200\",\n visible ? \"visible translate-y-0 opacity-100\" : \"pointer-events-none invisible -translate-y-1 opacity-0\"\n )}\n >\n <div className=\"mx-auto w-full max-w-7xl px-4 py-6\">\n <MegaPanel\n key={shownItem.key}\n items={shownItem.children}\n layout=\"full\"\n orientation=\"horizontal\"\n color={color}\n onNavigate={onNavigate}\n activeKey={activeKey}\n onItemClick={(item) => {\n setActiveKey(item.key);\n close();\n }}\n />\n </div>\n </div>,\n document.body\n )}\n </NavBar>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { cn } from \"@mari-ui/core\";\nimport type { MegaPanelProps } from \"./types\";\nimport { MegaPanelColumn } from \"./_components/MegaPanelColumn\";\nimport { MegaPanelPromoGrid } from \"./_components/MegaPanelPromoGrid\";\nimport { MegaPanelRail } from \"./_components/MegaPanelRail\";\nimport { isMenuItemActive } from \"../utils\";\n\nexport type { MegaPanelProps };\n\n/**\n * \"Ray + kolonlar + opsiyonel promosyon\" — üç menü bileşeninin (MegaMenu,\n * BasicMenu'nün zengin dropdown'ı, Sidebar'ın dropdown/mega modları) ortak\n * içerik gövdesi. Konumlama/tetikleme host'a ait — bu bileşen `position`,\n * portal, elevation UYGULAMAZ; sadece düz bir `<div>` render eder (bkz.\n * plan: MegaMenu tam genişlikte kendi sarmalayıcısını kullanır, BasicMenu/\n * Sidebar `DropdownContent`in İÇİNDE render eder).\n *\n * Klavye: Tab sırası + host'un ok tuşu gezinmesi (MegaMenu ve Dropdown\n * panelleri ↑/↓/Home/End/harf ile gezer — `getRovingTarget`) + Escape.\n * Ray, kolon ve promosyon öğeleri gerçek linklerdir (`MenuLink`).\n *\n * Geçerli sayfa `activeKey` ile gelir (host `currentPath`ten bulur): ray\n * başlangıçta onu içeren kategoriyi seçer, link vurgulanır.\n */\nexport function MegaPanel({ items, color, layout, orientation = \"horizontal\", onNavigate, onItemClick, activeKey = null, className }: Readonly<MegaPanelProps>) {\n // Geçerli sayfa bu paneldeyse ray onu içeren kategoriyle açılır (kullanıcı nerede olduğunu görür).\n const [selectedKey, setSelectedKey] = useState<string | null>(() => items.find((item) => isMenuItemActive(item, activeKey))?.key ?? items[0]?.key ?? null);\n const selected = items.find((item) => item.key === selectedKey) ?? items[0];\n if (!selected) return null;\n\n const columns = selected.children ?? [];\n // Kolon SAYISI daralır, veri kırpılmaz — eskiden `compact` modda gruplar\n // `slice(0, 2)` ile sessizce atılıyordu (kullanıcı menüsünde eksik kategori).\n const visibleColumns = columns;\n const promoTiles = layout === \"full\" ? selected.promoTiles : undefined;\n const hasContent = visibleColumns.length > 0 || !!promoTiles?.length;\n // 3 kolon + promosyon ancak `xl`de sığıyor; 1024px'te başlıklar kırılıyordu.\n let columnsClass = \"columns-2 gap-8 xl:columns-3\";\n if (orientation === \"vertical\") columnsClass = \"columns-1\";\n else if (layout === \"compact\") columnsClass = \"columns-2 gap-8\";\n\n return (\n <div className={cn(\"flex gap-6\", orientation === \"vertical\" ? \"flex-col\" : \"flex-row\", className)}>\n <MegaPanelRail items={items} selectedKey={selected.key} onSelect={setSelectedKey} color={color} orientation={orientation} onNavigate={onNavigate} onItemClick={onItemClick} activeKey={activeKey} />\n\n {hasContent && (\n <div className={cn(\"flex min-w-0 flex-1\", orientation === \"vertical\" ? \"flex-col gap-4\" : \"gap-8\")}>\n {visibleColumns.length > 0 && (\n // Gruplar TEK TEK kolon değil, çok kolonlu bir metin akışına giriyor:\n // referans menülerdeki gibi kısa gruplar aynı kolonda alt alta\n // dizilir, kolonlar eşit dolar (`break-inside-avoid` bir grubu\n // ikiye bölmeyi engeller). Sabit `grid-cols-N` bunu yapamaz.\n <div className={cn(\"min-w-0 flex-1\", columnsClass)}>\n {visibleColumns.map((group) => (\n <MegaPanelColumn key={group.key} group={group} color={color} onNavigate={onNavigate} onItemClick={onItemClick} activeKey={activeKey} />\n ))}\n </div>\n )}\n {promoTiles && promoTiles.length > 0 && <MegaPanelPromoGrid tiles={promoTiles} onNavigate={onNavigate} onTileClick={() => onItemClick?.(selected)} className=\"hidden xl:grid\" />}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ChevronDownIcon, ChevronRightIcon } from \"lucide-react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport { textClass, textHoverClass } from \"../../../lib/colorClasses\";\nimport type { MenuItemType, MenuNavigationProps } from \"../../types\";\nimport { MenuLink } from \"../MenuLink\";\nimport { NewTabHint } from \"../../../lib/linkBehavior\";\n\n/** Bu sayıdan fazla leaf varsa gerisi \"Daha Fazla Gör\" arkasına saklanır (referanstaki aynı desen). */\nconst VISIBLE_LEAF_COUNT = 6;\n\nexport interface MegaPanelColumnProps extends MenuNavigationProps {\n /** Grup başlığı — seçili ray öğesinin bir çocuğu. `group.children` altındaki linkler olur. */\n group: MenuItemType;\n color: ColorRole;\n onItemClick?: (item: MenuItemType) => void;\n activeKey?: string | null;\n}\n\n/**\n * Bir bağlantı grubu: vurgu renginde başlık + altında yoğun bir link listesi.\n * Referans e-ticaret menülerinin YAPISI (başlık → linkler → \"Daha Fazla Gör\"),\n * görünüm kendi token'larımızdan. Linkler kasıtlı olarak \"satır/pill\" değil\n * düz metin bağlantıları: bir mega panelde onlarca öğe var, her birine hover\n * dolgusu vermek görsel gürültü yaratıyor — sadece renk değişiyor.\n */\nexport function MegaPanelColumn({ group, color, onNavigate, onItemClick, activeKey = null }: Readonly<MegaPanelColumnProps>) {\n const leaves = group.children ?? [];\n // Geçerli sayfa \"Daha Fazla Gör\" arkasında kalıyorsa kolon açık başlar — aktif link gizlenmesin.\n const [expanded, setExpanded] = useState(() => leaves.slice(VISIBLE_LEAF_COUNT).some((leaf) => leaf.key === activeKey));\n const visibleLeaves = expanded ? leaves : leaves.slice(0, VISIBLE_LEAF_COUNT);\n const hasMore = leaves.length > VISIBLE_LEAF_COUNT;\n\n\n return (\n <div className=\"mb-6 flex break-inside-avoid flex-col items-start gap-1.5\">\n {group.route ? (\n <MenuLink\n route={group.route}\n target={group.target}\n reloadDocument={group.reloadDocument}\n onNavigate={onNavigate}\n current={group.key === activeKey}\n onSelect={() => onItemClick?.(group)}\n className={cn(\"group/head flex cursor-pointer items-center gap-1 rounded-sm text-start text-sm font-semibold transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\", textClass[color])}\n >\n {group.title}\n <NewTabHint target={group.target} />\n <ChevronRightIcon aria-hidden=\"true\" size={14} className=\"transition-transform duration-150 group-hover/head:translate-x-0.5\" />\n </MenuLink>\n ) : (\n <div className={cn(\"text-sm font-semibold\", textClass[color])}>{group.title}</div>\n )}\n\n {visibleLeaves.map((leaf) => (\n <MenuLink\n key={leaf.key}\n route={leaf.route}\n target={leaf.target}\n reloadDocument={leaf.reloadDocument}\n onNavigate={onNavigate}\n disabled={leaf.disabled}\n current={leaf.key === activeKey}\n onSelect={() => onItemClick?.(leaf)}\n className={cn(\n \"inline-flex items-center gap-1 rounded-sm text-start text-sm leading-6 transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\",\n leaf.disabled && \"cursor-not-allowed text-mari-muted opacity-50\",\n !leaf.disabled && leaf.key === activeKey && cn(\"cursor-pointer font-medium\", textClass[color]),\n !leaf.disabled && leaf.key !== activeKey && cn(\"cursor-pointer text-mari-foreground/75\", textHoverClass[color])\n )}\n >\n {leaf.title}\n <NewTabHint target={leaf.target} />\n </MenuLink>\n ))}\n\n {hasMore && (\n <button type=\"button\" aria-expanded={expanded} onClick={() => setExpanded((prev) => !prev)} className=\"mt-0.5 flex cursor-pointer items-center gap-1 whitespace-nowrap text-sm font-medium text-mari-foreground underline underline-offset-4 transition-colors hover:text-mari-muted\">\n {expanded ? \"Daha Az Göster\" : \"Daha Fazla Gör\"}\n <ChevronDownIcon aria-hidden=\"true\" size={14} className={cn(\"transition-transform duration-200\", expanded && \"rotate-180\")} />\n </button>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport { textClass } from \"../../../lib/colorClasses\";\nimport type { MenuItemType, MenuNavigationProps } from \"../../types\";\nimport { isMenuItemActive } from \"../../utils\";\nimport { MenuLink } from \"../MenuLink\";\nimport { NewTabHint } from \"../../../lib/linkBehavior\";\n\n/** Seçili satırın sol şeridi — literal tablo (Tailwind birleştirilmiş sınıf adını taramaz). */\nconst INDICATOR_COLOR_CLASS: Record<ColorRole, string> = {\n primary: \"before:bg-mari-primary\",\n accent: \"before:bg-mari-accent\",\n success: \"before:bg-mari-success\",\n error: \"before:bg-mari-error\",\n warning: \"before:bg-mari-warning\",\n info: \"before:bg-mari-info\",\n neutral: \"before:bg-mari-neutral\",\n};\n\nexport interface MegaPanelRailProps extends MenuNavigationProps {\n items: MenuItemType[];\n selectedKey: string | null;\n onSelect: (key: string) => void;\n color: ColorRole;\n orientation: \"horizontal\" | \"vertical\";\n onItemClick?: (item: MenuItemType) => void;\n activeKey?: string | null;\n}\n\n/**\n * Kategori rayı: hover VEYA klavye focus'u ile seçili öğeyi değiştirir (Tab\n * kullanıcıları da kolonları görebilsin diye — mouse'a özel bırakılmadı).\n *\n * Referans e-ticaret menülerinin YAPISI: seçili satır vurgu rengine döner,\n * sol kenarında rengin kendisinden 2px'lik bir şerit taşır ve satırın sağ\n * ucundaki chevron \"burada devamı var\" der. Renkler kendi token'larımızdan —\n * referansın turuncusu kopyalanmadı.\n *\n * Şerit bir `border-l` DEĞİL ayrı bir `::before` çubuğu: kenarlık, satırın\n * `rounded-md` köşelerini takip edip uçlarından bükülüyordu (kullanıcı\n * bulgusu — navbar alt çizgisindeki radius sorununun aynısı).\n *\n * `orientation=\"vertical\"` (Sidebar'ın dar yan panelleri) ray'i üstte yatay\n * bir şerit hâline getirir; orada sol şerit/ayraç yerine altta bir ayraç olur.\n */\nexport function MegaPanelRail({ items, selectedKey, onSelect, color, orientation, onNavigate, onItemClick, activeKey = null }: Readonly<MegaPanelRailProps>) {\n if (items.length === 0) return null;\n\n const horizontal = orientation === \"horizontal\";\n\n return (\n <ul className={cn(\"flex shrink-0\", horizontal ? \"w-52 flex-col xl:w-60 gap-0.5 border-r border-mari-border pr-3\" : \"flex-row flex-wrap gap-1 border-b border-mari-border pb-2\")}>\n {items.map((item) => {\n const selected = item.key === selectedKey;\n const indicatorClass = selected ? INDICATOR_COLOR_CLASS[color] : \"before:bg-transparent\";\n return (\n <li key={item.key}>\n <MenuLink\n route={item.route}\n target={item.target}\n reloadDocument={item.reloadDocument}\n onNavigate={onNavigate}\n disabled={item.disabled}\n current={item.key === activeKey}\n data-selected={selected || undefined}\n onMouseEnter={() => !item.disabled && onSelect(item.key)}\n onFocus={() => !item.disabled && onSelect(item.key)}\n // Route'suz ray öğesi yalnızca kategori seçer; route'lu olan gider ve paneli kapatır.\n onSelect={() => {\n if (item.disabled) return;\n onSelect(item.key);\n if (item.route) onItemClick?.(item);\n }}\n className={cn(\n \"relative flex w-full items-center gap-2 rounded-md py-2 text-start text-sm transition-colors duration-150\",\n horizontal\n ? cn(\n \"pr-2 pl-3\",\n // Düz (yuvarlatılmamış) sol şerit — sadece seçiliyken görünür.\n \"before:absolute before:inset-y-0 before:left-0 before:w-0.5 before:content-['']\",\n indicatorClass\n )\n : \"px-3\",\n item.disabled && \"cursor-not-allowed opacity-50\",\n !item.disabled && \"cursor-pointer\",\n selected || isMenuItemActive(item, activeKey) ? cn(textClass[color], \"font-medium\") : \"font-normal text-mari-foreground/80\",\n selected ? \"bg-mari-surface-alt\" : \"hover:bg-mari-surface-alt\"\n )}\n >\n {item.icon}\n <span className=\"flex-1 truncate\">{item.title}</span>\n <NewTabHint target={item.target} />\n {horizontal && item.children && item.children.length > 0 && (\n <ChevronRightIcon aria-hidden=\"true\" size={16} className={cn(\"shrink-0 transition-colors\", selected ? textClass[color] : \"text-mari-muted\")} />\n )}\n </MenuLink>\n </li>\n );\n })}\n </ul>\n );\n}\n","\"use client\";\n\nimport React, { useRef } from \"react\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport { getItemClass, isMenuItemActive } from \"../../utils\";\nimport type { MenuItemType, MenuNavigationProps } from \"../../types\";\nimport { MenuLink } from \"../../_shared/MenuLink\";\nimport { touchTargetClass } from \"../../../lib/sizeClasses\";\nimport { NewTabHint } from \"../../../lib/linkBehavior\";\n\nexport type MegaToggleSource = \"key\" | \"arrow\" | \"mouse\" | \"touch\";\n\nexport interface MegaMenuItemProps extends MenuNavigationProps {\n item: MenuItemType;\n /** Bu öğenin paneli şu an açık mı. */\n open: boolean;\n /** Geçerli sayfanın öğe anahtarı (alt çizgi + `aria-current`). */\n activeKey: string | null;\n panelId: string;\n /** Fare ile üzerine gelince (hover-intent) — paneli açar ya da (çocuksuz öğede) kapatır. */\n onHover: () => void;\n /** Fare ayrılınca / odak çıkınca — kapatma GECİKMELİ planlanır. */\n onLeave: () => void;\n /**\n * Tetikleyici etkinleşti. `\"key\"` (Enter/Boşluk) aç-kapat + odak panele;\n * `\"arrow\"` (↓) her zaman açar + odak panele; `\"mouse\"` açık tutar (hover\n * zaten açtı — toggle etse menü gözün önünde kapanırdı); `\"touch\"` aç-kapat.\n */\n onToggle: (source: MegaToggleSource) => void;\n color: ColorRole;\n className?: string;\n}\n\n/**\n * Faz 15.5: çocuklu öğe bir açma düğmesidir (APG \"disclosure navigation\"):\n * `aria-expanded` + `aria-controls`, tıklama/Enter/Boşluk/↓ paneli açar ve\n * klavyeden açıldıysa odağı panelin ilk öğesine taşır. Eskiden panel ODAKLA\n * açılıyordu (Tab ile gezerken her öğede panel patlıyordu) ve body'nin sonuna\n * portal edildiği için klavyeyle İÇİNE hiç girilemiyordu. Fare için hover\n * açma korunur. Çocuksuz öğe gerçek bir link (`MenuLink`).\n *\n * Kullanıcı bulgusu (2026-09-22): öğe eskiden `Button variant=\"ghost\"` idi;\n * hover dolgusu alt göstergeden geniş bir şerit yaratıyordu. BasicMenuItem'ın\n * aynısı: arka plan yok, yalnızca metin rengi + alt gösterge.\n */\nexport function MegaMenuItem({ item, open, activeKey, panelId, onHover, onLeave, onToggle, color, onNavigate, className }: Readonly<MegaMenuItemProps>) {\n const hasChildren = !!item.children?.length;\n const pointerTypeRef = useRef<string>(\"mouse\");\n // Paneli açık öğe ya da geçerli sayfayı içeren öğe \"aktif\" görünür.\n const highlightKey = open || isMenuItemActive(item, activeKey) ? item.key : null;\n const baseClass = cn(\n \"relative inline-flex items-center gap-2 rounded-md px-3 py-2 text-sm focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\",\n touchTargetClass.md,\n item.disabled ? \"cursor-not-allowed opacity-50\" : cn(\"cursor-pointer\", getItemClass(item, highlightKey, color)),\n className\n );\n\n return (\n <div className=\"flex h-full items-center\" onMouseEnter={item.disabled ? undefined : onHover} onMouseLeave={onLeave}>\n {hasChildren ? (\n <button\n type=\"button\"\n data-mega-key={item.key}\n disabled={item.disabled}\n aria-expanded={open}\n aria-controls={open ? panelId : undefined}\n onPointerDown={(event) => {\n pointerTypeRef.current = event.pointerType;\n }}\n onClick={(event) => {\n // `detail === 0`: tıklamayı klavye (Enter/Boşluk) üretti.\n if (event.detail === 0) onToggle(\"key\");\n else onToggle(pointerTypeRef.current === \"mouse\" ? \"mouse\" : \"touch\");\n }}\n onKeyDown={(event) => {\n if (event.key !== \"ArrowDown\") return;\n event.preventDefault();\n onToggle(\"arrow\");\n }}\n className={cn(\"group\", baseClass)}\n >\n {item.icon}\n {item.title}\n <ChevronDownIcon aria-hidden=\"true\" size={14} className=\"opacity-60 transition-transform duration-200 group-aria-expanded:rotate-180\" />\n </button>\n ) : (\n <MenuLink\n route={item.route}\n target={item.target}\n reloadDocument={item.reloadDocument}\n onNavigate={onNavigate}\n disabled={item.disabled}\n current={item.key === activeKey}\n className={baseClass}\n >\n {item.icon}\n {item.title}\n <NewTabHint target={item.target} />\n </MenuLink>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useCallback, useEffect, useId, useRef, useState } from \"react\";\nimport { cn } from \"@mari-ui/core\";\nimport { NavDrawer } from \"../_shared/NavDrawer\";\nimport { useHoverIntent } from \"../_shared/useHoverIntent\";\nimport type { MenuColorProps, MenuItemType, MenuNavigationProps, SidebarPosition, SidebarVariant } from \"../types\";\nimport { findActiveKeyByRoute, getSidebarWidthClass } from \"../utils\";\nimport { MenuLink } from \"../_shared/MenuLink\";\nimport { getFocusable, getRovingTarget } from \"../../dropdown/utils\";\nimport { SkeletonSlot } from \"../../lib/SkeletonSlot\";\nimport { skeletonFill, type SkeletonableProps } from \"../../lib/skeleton\";\nimport { SidebarButton } from \"./_components/SidebarButton\";\nimport { SidebarMegaPanel } from \"./_components/SidebarMegaPanel\";\nimport { SidebarMenu } from \"./_components/SidebarMenu\";\nimport type { SidebarSubMode } from \"./_components/SidebarItem\";\n\nexport interface SidebarProps extends MenuNavigationProps, MenuColorProps, SkeletonableProps {\n data: MenuItemType[];\n /**\n * - `\"hover\"`: 64px ikon rayı, üzerine gelince (veya klavyeyle odaklanınca) 256px'e genişler.\n * - `\"click\"`: kenardaki sekmeyle açılıp kapanır.\n * - `\"drawer\"`: Amazon'un hamburger menüsü gibi kenardan kayan, kademeli (drill-down)\n * bir çekmece — `open`/`onOpenChange` ile kontrol edilir, tetikleyiciyi tüketici koyar.\n */\n variant?: SidebarVariant;\n position?: SidebarPosition;\n /** Sidebar her zaman ikon rayı olarak kalır; alt menüler rayın yanında açılır (dropdown). */\n onlyIcon?: boolean;\n /** Alt öğeler akordeon yerine satırın yanında açılan bir panelde (BasicMenu'nün alt menü paneli). */\n dropdown?: boolean;\n /** Alt öğeler sidebar'ın yanında tam yükseklikte bir mega panelde. */\n mega?: boolean;\n /** Eskiden varsayılan değeri hardcoded `/images/fb.png` idi — bir\n * kütüphanenin varsayılanı olarak marka varlığı barındırmak yanlıştı\n * (bkz. plan denetimi). Artık verilmezse hiç logo render edilmez. */\n logo?: React.ReactNode;\n /** Verilirse logo bu adrese giden gerçek bir link olur (genelde `\"/\"`). */\n logoHref?: string;\n /** Logo bir düğme olarak davranır (`logoHref` yoksa). İkisi de yoksa logo etkileşimsizdir. */\n onLogoClick?: () => void;\n /** Etkileşimli logonun erişilebilir adı. Varsayılan \"Ana sayfa\". */\n logoLabel?: string;\n /**\n * Menünün üstünde render edilen keyfi içerik. `variant=\"drawer\"`da Amazon'daki\n * \"Merhaba, {isim}\" bandı olur (rol renginin dolgusuyla). Sidebar tüketicinin\n * auth/kullanıcı durumundan habersiz kalır; tüketici kendi `Avatar`ını + metnini geçer.\n */\n header?: React.ReactNode;\n /** `variant=\"drawer\"`: çekmece açık mı. */\n open?: boolean;\n /** `variant=\"drawer\"`: kapatma isteği (Escape, scrim, kapatma düğmesi, öğe seçimi). */\n onOpenChange?: (open: boolean) => void;\n /** Gezinme bölgesinin erişilebilir adı. Varsayılan: \"Ana menü\". */\n label?: string;\n}\n\nconst RAIL_OPEN_DELAY_MS = 80;\nconst RAIL_CLOSE_DELAY_MS = 250;\nconst MEGA_CLOSE_DELAY_MS = 200;\n\n/**\n * Dikey gezinme menüsü.\n *\n * Kullanıcı bulguları (2026-09-25) ve karşılıkları:\n * - Daraltılmış rayda etiketler yarım harf olarak kesiliyordu → etiketler\n * soluyor, ikonlar 64px rayda ortalı; ikonu olmayan öğe baş harfiyle.\n * - Hover genişlemesi fare üzerinden geçer geçmez tetikleniyor ve 500ms\n * sürüyordu → kısa bir açılma gecikmesi + gecikmeli kapanma (hover-intent),\n * 200ms geçiş; klavye odağı da rayı genişletiyor (eskiden Tab'la gezen\n * kullanıcı kesik bir ray görüyordu).\n * - `dropdown` paneli hover edilen satıra hizalı değildi → satırın kendisi\n * tetikleyici. `mega` 2 seviyeli veride anlamsız bir \"chip\" şeridi\n * gösteriyordu → düz veride açıklamalı satırlar, 3 seviyede ray + kolonlar.\n * - Amazon örneği → `variant=\"drawer\"` (bkz. `NavDrawer`).\n *\n * Faz 15.5: yaprak satırlar gerçek link (`MenuLink`: `target`/`reloadDocument`,\n * `onNavigate` yalnız düz sol tıkı yakalar). Satırlar arasında ↑/↓/Home/End/harf.\n * `mega` paneli odakla açılmıyor (Tab ile gezerken her satırda açılıyordu):\n * hover ya da Enter/Boşluk/→ açar ve odağı panele taşır; panelde ok tuşları,\n * Escape satıra döndürür, dışarı tıklama kapatır. Logo `logoHref` ile link.\n * `skeleton`: logo, başlık ve kök satırlar (ikon + metin çubuğu) yer tutucu.\n */\nexport function Sidebar({\n data,\n variant = \"hover\",\n position = \"left\",\n onlyIcon = false,\n dropdown = false,\n mega = false,\n logo,\n logoHref,\n onLogoClick,\n logoLabel = \"Ana sayfa\",\n header,\n open = false,\n onOpenChange,\n label = \"Ana menü\",\n color = \"primary\",\n onNavigate,\n currentPath,\n skeleton = false,\n}: Readonly<SidebarProps>) {\n const [expanded, setExpanded] = useState(false);\n const [activeKey, setActiveKey] = useState<string | null>(null);\n const [megaKey, setMegaKey] = useState<string | null>(null);\n const megaPanelRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const railIntent = useHoverIntent();\n const megaIntent = useHoverIntent();\n const asideId = useId();\n\n useEffect(() => {\n setActiveKey(findActiveKeyByRoute(data, currentPath));\n }, [data, currentPath]);\n\n const railCapable = variant === \"hover\" && !onlyIcon;\n const collapsed = onlyIcon || (railCapable && !expanded);\n let subMode: SidebarSubMode = \"accordion\";\n if (mega) subMode = \"mega\";\n else if (dropdown || onlyIcon) subMode = \"dropdown\";\n\n const openMega = useCallback(\n (item: MenuItemType) => {\n megaIntent.cancel();\n setMegaKey(item.key);\n },\n [megaIntent]\n );\n const closeMega = useCallback(() => megaIntent.schedule(() => setMegaKey(null), MEGA_CLOSE_DELAY_MS), [megaIntent]);\n\n const megaItem = megaKey ? data.find((item) => item.key === megaKey) : undefined;\n\n // Mega satırında klavyeyle Enter/Boşluk: panel (odakla zaten açılmıştı) render olunca odak ilk öğesine geçer.\n const [megaFocusRequest, setMegaFocusRequest] = useState(0);\n useEffect(() => {\n if (megaFocusRequest === 0) return;\n const panel = megaPanelRef.current;\n // Seçili ray öğesi (aktif sayfanın kategorisi) varsa ona — ilk öğeye odaklanmak rayı ona çevirirdi.\n (panel?.querySelector<HTMLElement>(\"[data-selected]\") ?? getFocusable(panel)[0])?.focus();\n }, [megaFocusRequest]);\n\n // Mega panel açıkken: Escape kapatır (odak paneldeyse kök satırına döner),\n // panelde ↑/↓/Home/End/harf gezinir, dışarı tıklama kapatır.\n useEffect(() => {\n if (!megaKey) return;\n const focusRow = () =>\n Array.from(wrapperRef.current?.querySelectorAll<HTMLElement>(\"[data-sidebar-key]\") ?? [])\n .find((row) => row.dataset.sidebarKey === megaKey)\n ?.focus();\n const handleKeyDown = (event: KeyboardEvent) => {\n const panel = megaPanelRef.current;\n const focusInPanel = !!panel?.contains(document.activeElement);\n if (event.key === \"Escape\") {\n setMegaKey(null);\n if (focusInPanel) focusRow();\n return;\n }\n if (!focusInPanel || event.metaKey || event.ctrlKey || event.altKey) return;\n const target = getRovingTarget(getFocusable(panel), document.activeElement, event.key);\n if (!target) return;\n event.preventDefault();\n target.focus();\n };\n const handlePointerDown = (event: MouseEvent) => {\n if (!wrapperRef.current?.contains(event.target as Node)) setMegaKey(null);\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"mousedown\", handlePointerDown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"mousedown\", handlePointerDown);\n };\n }, [megaKey]);\n\n // Satırlar arasında ↑/↓/Home/End/harf (Tab sırası da çalışmaya devam eder).\n // Kapalı akordeonun içindeki satırlar `tabIndex=-1` olduğundan atlanır.\n const navRef = useRef<HTMLElement>(null);\n useEffect(() => {\n const nav = navRef.current;\n if (!nav) return;\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.metaKey || event.ctrlKey || event.altKey) return;\n const target = getRovingTarget(getFocusable(nav), document.activeElement, event.key);\n if (!target) return;\n event.preventDefault();\n target.focus();\n };\n nav.addEventListener(\"keydown\", handleKeyDown);\n return () => nav.removeEventListener(\"keydown\", handleKeyDown);\n }, [variant]);\n\n // Gezinmenin kendisi `MenuLink`te; burada yalnızca seçim işlenir.\n const handleSelect = (item: MenuItemType) => {\n setActiveKey(item.key);\n setMegaKey(null);\n };\n\n const logoClass = \"flex shrink-0 items-center rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\";\n let logoNode: React.ReactNode = null;\n if (logo && logoHref) {\n logoNode = (\n <MenuLink route={logoHref} onNavigate={onNavigate} className={logoClass}>\n <span className=\"sr-only\">{logoLabel}</span>\n <span aria-hidden=\"true\">{logo}</span>\n </MenuLink>\n );\n } else if (logo && onLogoClick) {\n logoNode = (\n <button type=\"button\" aria-label={logoLabel} className={cn(logoClass, \"cursor-pointer\")} onClick={onLogoClick}>\n {logo}\n </button>\n );\n } else if (logo) {\n logoNode = <div className=\"flex shrink-0 items-center\">{logo}</div>;\n }\n const blockPlaceholder = <span className={cn(\"block size-full min-h-8 rounded-md\", skeletonFill(true))} />;\n\n if (variant === \"drawer\") {\n return (\n <NavDrawer\n open={open}\n onClose={() => onOpenChange?.(false)}\n data={data}\n color={color}\n header={header ?? logo}\n emphasizedHeader={!!header}\n side={position}\n activeKey={activeKey}\n onItemSelect={(item) => setActiveKey(item.key)}\n onNavigate={onNavigate}\n currentPath={currentPath}\n label={label}\n />\n );\n }\n\n const collapseAll = () => {\n setExpanded(false);\n setMegaKey(null);\n };\n\n const wrapperHandlers = {\n onMouseEnter: () => {\n if (railCapable) railIntent.schedule(() => setExpanded(true), RAIL_OPEN_DELAY_MS);\n },\n onMouseLeave: () => {\n if (railCapable) railIntent.schedule(collapseAll, RAIL_CLOSE_DELAY_MS);\n else closeMega();\n },\n onFocus: () => {\n if (!railCapable) return;\n railIntent.cancel();\n setExpanded(true);\n },\n onBlur: (event: React.FocusEvent<HTMLDivElement>) => {\n // Odak portal'daki bir panele geçtiyse React'in `onFocus`u (fiber ağacında\n // kabarcıklanır) bu zamanlayıcıyı hemen iptal eder.\n if (railCapable && !event.currentTarget.contains(event.relatedTarget as Node | null)) railIntent.schedule(collapseAll, RAIL_CLOSE_DELAY_MS);\n },\n };\n\n return (\n <div\n ref={wrapperRef}\n {...wrapperHandlers}\n className={cn(\"fixed top-0 z-mari-drawer flex h-full\", position === \"right\" ? \"right-0 flex-row-reverse\" : \"left-0\")}\n >\n <aside\n id={asideId}\n className={cn(\n \"flex h-full shrink-0 flex-col overflow-hidden border-mari-border bg-mari-surface transition-[width,box-shadow] duration-200 ease-out\",\n position === \"right\" ? \"border-l\" : \"border-r\",\n getSidebarWidthClass(variant, expanded, onlyIcon)\n )}\n >\n {header && (\n <div className=\"shrink-0 overflow-hidden border-b border-mari-border px-2 py-2 whitespace-nowrap\">\n <SkeletonSlot on={skeleton} placeholder={blockPlaceholder}>\n {header}\n </SkeletonSlot>\n </div>\n )}\n {logoNode && (\n <div className=\"flex h-14 shrink-0 items-center overflow-hidden border-b border-mari-border px-4\">\n <SkeletonSlot on={skeleton} placeholder={blockPlaceholder}>\n {logoNode}\n </SkeletonSlot>\n </div>\n )}\n <nav ref={navRef} aria-label={label} aria-busy={skeleton || undefined} className=\"min-h-0 flex-1 overflow-x-hidden overflow-y-auto px-2 py-3\">\n <SidebarMenu\n data={data}\n level={0}\n activeKey={activeKey}\n onSelect={handleSelect}\n setActiveKey={setActiveKey}\n color={color}\n subMode={subMode}\n collapsed={collapsed}\n showMonogram={railCapable || onlyIcon}\n tabbable\n skeleton={skeleton}\n position={position}\n megaKey={megaKey}\n onMegaOpen={(item, fromKeyboard) => {\n openMega(item);\n if (fromKeyboard) setMegaFocusRequest((count) => count + 1);\n }}\n onMegaClose={closeMega}\n onNavigate={onNavigate}\n currentPath={currentPath}\n />\n </nav>\n </aside>\n\n {megaItem?.children && (\n <SidebarMegaPanel\n ref={megaPanelRef}\n item={megaItem}\n activeKey={activeKey}\n setActiveKey={setActiveKey}\n color={color}\n position={position}\n onClose={() => setMegaKey(null)}\n onMouseEnter={megaIntent.cancel}\n onMouseLeave={closeMega}\n onNavigate={onNavigate}\n currentPath={currentPath}\n />\n )}\n\n {variant === \"click\" && !onlyIcon && <SidebarButton visible={expanded} setVisible={setExpanded} position={position} controlsId={asideId} />}\n </div>\n );\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\n/**\n * Hover-intent için tek bir zamanlayıcı: `schedule` bekleyen işi iptal edip\n * yenisini kurar, `cancel` iptal eder, unmount'ta temizlenir. Menülerde\n * \"fare panele geçerken kapanmasın / yanlışlıkla üzerinden geçince\n * açılmasın\" gecikmeleri için (bkz. MegaMenu, Sidebar).\n */\nexport function useHoverIntent() {\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const cancel = useCallback(() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n }, []);\n\n const schedule = useCallback(\n (action: () => void, delayMs: number) => {\n cancel();\n timerRef.current = setTimeout(() => {\n timerRef.current = null;\n action();\n }, delayMs);\n },\n [cancel]\n );\n\n useEffect(() => cancel, [cancel]);\n\n return { schedule, cancel };\n}\n","import React from \"react\";\nimport { PanelLeftCloseIcon, PanelLeftOpenIcon, PanelRightCloseIcon, PanelRightOpenIcon } from \"lucide-react\";\nimport { cn } from \"@mari-ui/core\";\nimport type { SidebarPosition } from \"../../types\";\nimport { touchTargetSquareClass } from \"../../../lib/sizeClasses\";\n\nexport interface SidebarButtonProps {\n position: SidebarPosition;\n setVisible: (val: boolean) => void;\n visible: boolean;\n controlsId: string;\n}\n\n/**\n * `variant=\"click\"`in aç/kapa düğmesi. Eskiden bir ▶ \"oynat\" ikonuydu\n * (döndürülerek yön veriliyordu) — anlamı \"medya oynat\"; kenar çubuğu\n * için standart olan panel aç/kapa ikonları kullanılıyor. Kenara yapışık\n * küçük bir sekme: sidebar kapalıyken de ekranda kalan tek tutamaç.\n */\nexport function SidebarButton({ position, setVisible, visible, controlsId }: Readonly<SidebarButtonProps>) {\n const isLeft = position === \"left\";\n let Icon = isLeft ? PanelLeftOpenIcon : PanelRightOpenIcon;\n if (visible) Icon = isLeft ? PanelLeftCloseIcon : PanelRightCloseIcon;\n\n return (\n <button\n type=\"button\"\n aria-label={visible ? \"Kenar çubuğunu kapat\" : \"Kenar çubuğunu aç\"}\n aria-expanded={visible}\n aria-controls={controlsId}\n onClick={() => setVisible(!visible)}\n className={cn(\n \"relative mt-3 inline-flex size-9 shrink-0\",\n touchTargetSquareClass.md,\n \" cursor-pointer items-center justify-center self-start border border-mari-border bg-mari-surface text-mari-muted shadow-mari-sm transition-colors hover:bg-mari-surface-alt hover:text-mari-foreground\",\n \"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mari-ring\",\n isLeft ? \"rounded-r-lg border-l-0\" : \"rounded-l-lg border-r-0\"\n )}\n >\n <Icon aria-hidden=\"true\" size={18} />\n </button>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport { SubMenuPanelBody } from \"../../basic-menu/_components/DropdownSubMenu\";\nimport { MegaPanel } from \"../../_shared\";\nimport { MegaPanelColumn } from \"../../_shared/_components/MegaPanelColumn\";\nimport type { MenuItemType, MenuNavigationProps, SidebarPosition } from \"../../types\";\n\nexport interface SidebarMegaPanelProps extends MenuNavigationProps {\n item: MenuItemType;\n activeKey: string | null;\n setActiveKey: (key: string) => void;\n color: ColorRole;\n position: SidebarPosition;\n onClose: () => void;\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n}\n\ntype MegaShape = \"rail\" | \"columns\" | \"rows\";\n\n/**\n * Panel gövdesi verinin DERİNLİĞİNE göre seçilir (eskiden her durumda\n * `MegaPanel`e veriliyordu — o \"ray → grup → bağlantı\" yani 4 seviye bekler;\n * 3 seviyede gruplar raya, bağlantılar chevron'lu grup başlıklarına dönüşüyor,\n * 2 seviyede anlamsız bir \"chip\" şeridi çıkıyordu):\n * - `rail`: kök → ray öğesi → grup → bağlantı (MegaMenu'nün paneliyle aynı).\n * - `columns`: kök → grup → bağlantı; gruplar doğrudan kolonlara akar.\n * - `rows`: kök → bağlantı; açıklamalı satırlar (BasicMenu'nün alt menü paneli).\n */\nfunction getMegaShape(children: MenuItemType[]): MegaShape {\n if (children.some((child) => child.children?.some((grandchild) => grandchild.children?.length))) return \"rail\";\n if (children.some((child) => child.children?.length)) return \"columns\";\n return \"rows\";\n}\n\nfunction getWidthClass(shape: MegaShape, count: number): string {\n if (shape === \"rail\") return \"w-[44rem]\";\n if (shape === \"columns\") return count > 4 ? \"w-[44rem]\" : \"w-[32rem]\";\n return count > 4 ? \"w-[38rem]\" : \"w-[24rem]\";\n}\n\n/** `mega` modunda sidebar'ın yanında tam yükseklikte açılan panel. */\nexport const SidebarMegaPanel = React.forwardRef<HTMLDivElement, SidebarMegaPanelProps>(function SidebarMegaPanel(\n { item, activeKey, setActiveKey, color, position, onClose, onMouseEnter, onMouseLeave, onNavigate, currentPath },\n ref\n) {\n const children = item.children ?? [];\n const shape = getMegaShape(children);\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={item.title}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n className={cn(\n \"h-full max-w-[calc(100vw-5rem)] shrink overflow-y-auto overscroll-contain border-mari-border bg-mari-surface p-6 shadow-mari-lg transition-[opacity,translate] duration-200 ease-out starting:opacity-0\",\n position === \"right\" ? \"border-l starting:translate-x-2\" : \"border-r starting:-translate-x-2\",\n getWidthClass(shape, children.length)\n )}\n >\n <div className=\"mb-4 text-base font-semibold text-mari-foreground\">{item.title}</div>\n {shape === \"rail\" && (\n <MegaPanel\n items={children}\n layout=\"compact\"\n orientation=\"horizontal\"\n color={color}\n onNavigate={onNavigate}\n activeKey={activeKey}\n onItemClick={(picked) => {\n setActiveKey(picked.key);\n onClose();\n }}\n />\n )}\n {shape === \"columns\" && (\n <div className={cn(\"gap-8\", children.length > 4 ? \"columns-3\" : \"columns-2\")}>\n {children.map((group) => (\n <MegaPanelColumn\n key={group.key}\n group={group}\n color={color}\n onNavigate={onNavigate}\n activeKey={activeKey}\n onItemClick={(picked) => {\n setActiveKey(picked.key);\n onClose();\n }}\n />\n ))}\n </div>\n )}\n {shape === \"rows\" && (\n <SubMenuPanelBody items={children} activeKey={activeKey} setActiveKey={setActiveKey} color={color} onNavigate={onNavigate} currentPath={currentPath} onAfterSelect={onClose} />\n )}\n </div>\n );\n});\n","\"use client\";\n\nimport React from \"react\";\nimport { cn } from \"@mari-ui/core\";\nimport type { MenuItemType } from \"../../types\";\nimport { SidebarItem, type SidebarItemProps } from \"./SidebarItem\";\n\nexport interface SidebarMenuProps extends Omit<SidebarItemProps, \"item\" | \"reserveIconSlot\"> {\n data: MenuItemType[];\n className?: string;\n}\n\n/**\n * Bir seviyenin listesi. `heading: true` öğeler etkileşimsiz bölüm\n * etiketleri — ray daraltılmışken yazı yerine ince bir ayraç olurlar.\n *\n * Aktif anahtar artık `Sidebar`da TEK yerde tutuluyor: eskiden her iç içe\n * `SidebarMenu` kendi `activeKey` state'ini tutuyordu, iç seviyede bir öğeye\n * tıklamak üst öğenin \"aktif grup\" rengini hiç güncellemiyordu.\n */\nexport function SidebarMenu({ data, className, ...itemProps }: Readonly<SidebarMenuProps>) {\n const reserveIconSlot = data.some((item) => item.icon && !item.heading);\n\n return (\n <ul className={cn(\"flex flex-col gap-0.5\", className)}>\n {data.map((item) =>\n item.heading ? (\n <li key={item.key} className=\"px-3.5 pt-4 pb-1 first:pt-1\">\n {/* Daraltılmış rayda yazı yerine ince bir ayraç — metin ekran okuyucu için DOM'da kalır. */}\n {itemProps.collapsed && <span aria-hidden=\"true\" className=\"block h-px w-full bg-mari-border\" />}\n <span className={cn(\"block truncate text-xs font-semibold tracking-wide text-mari-muted uppercase\", itemProps.collapsed && \"sr-only\")}>{item.title}</span>\n </li>\n ) : (\n <SidebarItem key={item.key} {...itemProps} item={item} reserveIconSlot={reserveIconSlot} />\n )\n )}\n </ul>\n );\n}\n","\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport { cn, type ColorRole } from \"@mari-ui/core\";\nimport { bgSubtleClass, textClass } from \"../../../lib/colorClasses\";\nimport { Dropdown, DropdownContent, DropdownTrigger } from \"../../../dropdown\";\nimport { SubMenuPanelBody, getSubMenuPanelWidthClass } from \"../../basic-menu/_components/DropdownSubMenu\";\nimport type { MenuItemType, MenuNavigationProps, SidebarPosition } from \"../../types\";\nimport { isMenuItemActive } from \"../../utils\";\nimport { SidebarMenu } from \"./SidebarMenu\";\nimport { MenuLink } from \"../../_shared/MenuLink\";\nimport { SkeletonSlot } from \"../../../lib/SkeletonSlot\";\nimport { skeletonFill } from \"../../../lib/skeleton\";\nimport { NewTabHint } from \"../../../lib/linkBehavior\";\n\n/** Alt öğelerin nasıl açıldığı — `Sidebar` prop'larından türetilir. */\nexport type SidebarSubMode = \"accordion\" | \"dropdown\" | \"mega\";\n\nexport interface SidebarItemProps extends MenuNavigationProps {\n item: MenuItemType;\n /** 0 = kök seviye. İç seviyeler her zaman akordeon + girintili. */\n level: number;\n activeKey: string | null;\n /** Yaprak seçildi (gezinmeden önce): aktif öğeyi günceller, açık paneli kapatır. Gezinme `MenuLink`te. */\n onSelect: (item: MenuItemType) => void;\n /** Sadece aktif anahtarı günceller — kendi navigasyonunu yapan paneller (dropdown) için. */\n setActiveKey: (key: string) => void;\n color: ColorRole;\n subMode: SidebarSubMode;\n /** Ray daraltılmış: sadece ikon görünür, etiket/chevron solar. */\n collapsed: boolean;\n /** İkonsuz kök öğe rayda baş harfiyle gösterilsin mi (ray daralabiliyorsa). */\n showMonogram: boolean;\n /** Seviyede ikonlu bir kardeş var — ikonsuz satırlar da aynı yeri ayırır. */\n reserveIconSlot: boolean;\n /** Kapalı akordeonun içindeki satırlar Tab sırasından çıkar. */\n tabbable: boolean;\n position: SidebarPosition;\n /** `mega` modunda paneli açık olan kök öğenin anahtarı. */\n megaKey: string | null;\n /** `fromKeyboard`: Enter/Boşluk ile açıldı — odak panele taşınsın. */\n onMegaOpen: (item: MenuItemType, fromKeyboard?: boolean) => void;\n onMegaClose: () => void;\n /** Satırlar ikon + metin çubuğu biçiminde yer tutucu; alt öğeler kapalı. */\n skeleton: boolean;\n}\n\n/** Kök altındaki kılavuz çizgisi ikonun ortasından (24px), daha derin seviyeler üst satırın metin başından (12px) iner. */\nconst NESTED_INDENT_CLASS: Record<SidebarPosition, { root: string; deep: string }> = {\n left: { root: \"ml-6\", deep: \"ml-3\" },\n right: { root: \"mr-6\", deep: \"mr-3\" },\n};\n\nconst FOCUS_RING = \"focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-mari-ring\";\n\nfunction ItemIcon({ item, showMonogram, reserveIconSlot }: Readonly<Pick<SidebarItemProps, \"item\" | \"showMonogram\" | \"reserveIconSlot\">>) {\n if (item.icon) {\n return (\n <span aria-hidden=\"true\" className=\"flex size-5 shrink-0 items-center justify-center [&_svg]:size-[1.125rem]\">\n {item.icon}\n </span>\n );\n }\n // İkonu olmayan öğeye uydurma bir ikon koymak yerine rayda baş harfi.\n if (showMonogram) {\n return (\n <span aria-hidden=\"true\" className=\"flex size-5 shrink-0 items-center justify-center rounded-sm bg-mari-surface-alt text-[0.6875rem] font-semibold uppercase\">\n {item.title.charAt(0)}\n </span>\n );\n }\n return reserveIconSlot ? <span aria-hidden=\"true\" className=\"size-5 shrink-0\" /> : null;\n}\n\ninterface RowStateOptions {\n level: number;\n collapsed?: boolean;\n disabled?: boolean;\n /** Dolgu + renk: aktif yaprak, ya da daraltılmış rayda aktif grubu / açık mega paneli temsil eden kök. */\n highlighted: boolean;\n /** Sadece renk: aktif yaprağı içeren (açık) grup. */\n containsActive: boolean;\n color: ColorRole;\n}\n\nfunction getRowStateClass({ disabled, highlighted, containsActive, color }: RowStateOptions): string {\n if (disabled) return \"cursor-not-allowed opacity-50\";\n if (highlighted) return cn(\"cursor-pointer font-medium\", bgSubtleClass[color], textClass[color]);\n if (containsActive) return cn(\"cursor-pointer font-medium hover:bg-mari-surface-alt\", textClass[color]);\n return \"cursor-pointer text-mari-foreground/80 hover:bg-mari-surface-alt hover:text-mari-foreground\";\n}\n\nfunction getRowClass(options: RowStateOptions): string {\n return cn(\n \"relative flex w-full items-center rounded-lg text-start text-sm transition-colors duration-150\",\n // Daraltılmış rayda satır tam ikon genişliğinde: boşluk + chevron kalsaydı içerik satırı\n // taşırıyor, `nav` yatayda kayıyor ve ikonlar sola kaçıyordu.\n options.collapsed ? \"gap-0\" : \"gap-3\",\n options.level === 0 ? \"h-10 px-3.5\" : \"h-9 px-3\",\n FOCUS_RING,\n getRowStateClass(options)\n );\n}\n\ninterface RowContentProps extends Pick<SidebarItemProps, \"item\" | \"collapsed\" | \"reserveIconSlot\" | \"position\"> {\n showMonogram: boolean;\n /** `accordion`: aşağı chevron (açıkken döner); `flyout`: panel yönünü gösteren yan chevron. */\n chevron?: \"accordion\" | \"flyout\";\n open?: boolean;\n}\n\nfunction RowContent({ item, collapsed, reserveIconSlot, position, showMonogram, chevron, open }: Readonly<RowContentProps>) {\n const FlyoutChevron = position === \"left\" ? ChevronRightIcon : ChevronLeftIcon;\n return (\n <>\n <ItemIcon item={item} showMonogram={showMonogram} reserveIconSlot={reserveIconSlot} />\n <span className={cn(\"min-w-0 flex-1 truncate transition-opacity duration-150\", collapsed ? \"opacity-0\" : \"opacity-100\")}>{item.title}</span>\n {!collapsed && <NewTabHint target={item.target} />}\n {chevron === \"accordion\" && (\n <ChevronDownIcon aria-hidden=\"true\" size={16} className={cn(\"shrink-0 text-mari-muted transition-transform duration-200\", open && \"rotate-180\", collapsed && \"hidden\")} />\n )}\n {chevron === \"flyout\" && <FlyoutChevron aria-hidden=\"true\" size={16} className={cn(\"shrink-0 text-mari-muted\", collapsed && \"hidden\")} />}\n </>\n );\n}\n\n/** İskelet satırı: satırın kendi kutusunda ikon karesi + metin çubuğu (daraltılmış rayda yalnızca ikon). */\nfunction RowPlaceholder({ level, collapsed, hasIcon }: Readonly<{ level: number; collapsed: boolean; hasIcon: boolean }>) {\n return (\n <span className={cn(\"flex h-full items-center gap-3\", level === 0 ? \"px-3.5\" : \"px-3\")}>\n {hasIcon && <span className={cn(\"size-5 shrink-0 rounded-sm\", skeletonFill(true))} />}\n {!collapsed && <span className={cn(\"h-3 flex-1 rounded-sm\", skeletonFill(true))} />}\n </span>\n );\n}\n\n/** Satırı iskelette yer tutucuya çevirir; gerçek satır görünmez olarak kalır → yüklenince zıplamaz. */\nfunction RowSlot({ props, level, children }: Readonly<{ props: SidebarItemProps; level: number; children: React.ReactNode }>) {\n const { skeleton, collapsed, item, showMonogram, reserveIconSlot } = props;\n // Satırın gerçek ikon yuvasıyla aynı: ikon, rayda baş harf ya da kardeşler için ayrılmış boşluk.\n const hasIcon = !!item.icon || (showMonogram && level === 0) || reserveIconSlot || collapsed;\n return (\n <SkeletonSlot on={skeleton} placeholder={<RowPlaceholder level={level} collapsed={collapsed} hasIcon={hasIcon} />}>\n {children}\n </SkeletonSlot>\n );\n}\n\n/**\n * `dropdown` modu: satırın kendisi tetikleyici — panel TAM o satırın yanında\n * açılır (eskiden tetikleyicisiz bir Dropdown'ın satırın ALTINA düşen sıfır\n * yükseklikli çıpasına hizalanıyordu). İçerik BasicMenu'nün alt menü paneliyle aynı.\n */\nfunction SidebarDropdownItem(props: Readonly<SidebarItemProps>) {\n const { item, activeKey, setActiveKey, color, collapsed, showMonogram, position, onNavigate, currentPath } = props;\n const children = item.children ?? [];\n const containsActive = isMenuItemActive(item, activeKey);\n const rowClass = getRowClass({ level: 0, collapsed, highlighted: collapsed && containsActive, containsActive, color });\n\n return (\n <li>\n <RowSlot props={props} level={0}>\n <Dropdown hover className=\"block self-auto\">\n <DropdownTrigger className={cn(rowClass, \"aria-expanded:bg-mari-surface-alt\")}>\n <RowContent {...props} showMonogram={showMonogram} chevron=\"flyout\" />\n </DropdownTrigger>\n <DropdownContent\n placement={position === \"left\" ? \"right-start\" : \"left-start\"}\n offset={10}\n className={cn(\"max-w-[calc(100vw-2rem)] rounded-xl p-2\", getSubMenuPanelWidthClass(children))}\n >\n <SubMenuPanelBody items={children} activeKey={activeKey} setActiveKey={setActiveKey} color={color} onNavigate={onNavigate} currentPath={currentPath} />\n </DropdownContent>\n </Dropdown>\n </RowSlot>\n </li>\n );\n}\n\n/**\n * Sidebar satırı. Yapı modern yan menülerden (Linear/Vercel/GitHub): sabit\n * 20px ikon yuvası + etiket + sağa yaslı chevron; aktif yaprak = rol renginin\n * `-subtle` zemini + rengin kendisi, aktif yaprağı İÇEREN üst öğe = sadece\n * renk (eskiden `li`nin tamamı boyanıyordu, açık bir grup komple mavi bir\n * blok gibi görünüyordu).\n *\n * Ray daraltılmışken etiket kesilmiyor, SOLUYOR (eskiden `w-12` içinde yarım\n * harfler görünüyordu); erişilebilir ad metin DOM'da kaldığı için bozulmaz.\n */\nexport function SidebarItem(props: Readonly<SidebarItemProps>) {\n const hasChildren = !!props.item.children?.length;\n // Kök seviyede alt menü dropdown/mega olabilir; iç seviyeler hep akordeon.\n const mode: SidebarSubMode = props.level === 0 ? props.subMode : \"accordion\";\n if (hasChildren && mode === \"dropdown\" && !props.item.disabled) return <SidebarDropdownItem {...props} />;\n return mode === \"mega\" ? <SidebarMegaItem {...props} /> : <SidebarAccordionItem {...props} />;\n}\n\n/**\n * `mega` modunun kök satırı. Faz 15.5: panel artık ODAKLA açılmıyor (Tab ile\n * gezerken her satırda panel açılıyordu) — fareyle üzerine gelince, ya da\n * Enter/Boşluk/→ (sağdaki sidebar'da ←) ile açılır ve odak panele taşınır.\n * Çocuksuz satır gerçek bir link.\n */\nfunction SidebarMegaItem(props: Readonly<SidebarItemProps>) {\n const { item, activeKey, color, collapsed, showMonogram, megaKey, onMegaOpen, onMegaClose, onSelect, onNavigate, position } = props;\n const hasChildren = !!item.children?.length;\n const containsActive = isMenuItemActive(item, activeKey);\n const isActiveLeaf = !hasChildren && item.key === activeKey;\n const isOpen = megaKey === item.key;\n const rowClass = getRowClass({ level: 0, collapsed, disabled: item.disabled, highlighted: isActiveLeaf || isOpen || (collapsed && containsActive), containsActive, color });\n const openKey = position === \"left\" ? \"ArrowRight\" : \"ArrowLeft\";\n\n return (\n <li>\n <RowSlot props={props} level={0}>\n {hasChildren ? (\n <button\n type=\"button\"\n data-sidebar-key={item.key}\n disabled={item.disabled}\n aria-expanded={isOpen}\n title={collapsed ? item.title : undefined}\n onMouseEnter={item.disabled ? undefined : () => onMegaOpen(item)}\n onClick={(event) => {\n // `detail === 0`: click'i fare değil klavye üretti → odak panele.\n if (!item.disabled) onMegaOpen(item, event.detail === 0);\n }}\n onKeyDown={(event) => {\n if (event.key !== openKey || item.disabled) return;\n event.preventDefault();\n onMegaOpen(item, true);\n }}\n className={rowClass}\n >\n <RowContent {...props} showMonogram={showMonogram} chevron=\"flyout\" />\n </button>\n ) : (\n <MenuLink\n route={item.route}\n target={item.target}\n reloadDocument={item.reloadDocument}\n onNavigate={onNavigate}\n disabled={item.disabled}\n current={isActiveLeaf}\n data-sidebar-key={item.key}\n title={collapsed ? item.title : undefined}\n onMouseEnter={item.disabled ? undefined : onMegaClose}\n onSelect={() => onSelect(item)}\n className={rowClass}\n >\n <RowContent {...props} showMonogram={showMonogram} />\n </MenuLink>\n )}\n </RowSlot>\n </li>\n );\n}\n\n/** Varsayılan mod: alt öğeler satırın altında girintili bir akordeonla açılır. */\nfunction SidebarAccordionItem(props: Readonly<SidebarItemProps>) {\n const { item, level, activeKey, onSelect, color, collapsed, showMonogram, tabbable, position, skeleton, ...shared } = props;\n const { onNavigate } = props;\n const hasChildren = !!item.children?.length;\n const containsActive = isMenuItemActive(item, activeKey);\n const isActiveLeaf = !hasChildren && item.key === activeKey;\n const [open, setOpen] = useState(containsActive);\n\n // Aktif öğe (route) bu grubun içine düşerse grup kendiliğinden açılır — kapatmaz.\n useEffect(() => {\n if (hasChildren && containsActive) setOpen(true);\n }, [hasChildren, containsActive]);\n\n // İskelette gruplar yüklü hâldeki gibi açık/kapalı kalır (iç satırlar da yer tutucu) → yüklenince zıplama yok.\n const expandedBody = open && !collapsed;\n const rowClass = getRowClass({ level, collapsed, disabled: item.disabled, highlighted: isActiveLeaf || (collapsed && containsActive), containsActive, color });\n\n return (\n <li>\n <RowSlot props={props} level={level}>\n {hasChildren ? (\n <button\n type=\"button\"\n data-sidebar-key={item.key}\n disabled={item.disabled}\n tabIndex={tabbable ? undefined : -1}\n aria-expanded={open}\n title={collapsed ? item.title : undefined}\n onClick={() => !item.disabled && setOpen((prev) => !prev)}\n className={rowClass}\n >\n <RowContent {...props} showMonogram={showMonogram && level === 0} chevron=\"accordion\" open={open} />\n </button>\n ) : (\n <MenuLink\n route={item.route}\n target={item.target}\n reloadDocument={item.reloadDocument}\n onNavigate={onNavigate}\n disabled={item.disabled}\n current={isActiveLeaf}\n data-sidebar-key={item.key}\n tabIndex={tabbable ? undefined : -1}\n title={collapsed ? item.title : undefined}\n onSelect={() => onSelect(item)}\n className={rowClass}\n >\n <RowContent {...props} showMonogram={showMonogram && level === 0} />\n </MenuLink>\n )}\n </RowSlot>\n\n {hasChildren && (\n // Yükseklik `grid-template-rows` 0fr→1fr ile animasyonlu: içerik ne kadar\n // uzun olursa olsun doğru açılır (eskiden sabit `max-h-96` sınırı vardı).\n <div className={cn(\"grid transition-[grid-template-rows,opacity] duration-200 ease-out\", expandedBody ? \"grid-rows-[1fr] opacity-100\" : \"grid-rows-[0fr] opacity-0\")}>\n <div className=\"overflow-hidden\">\n <SidebarMenu\n {...shared}\n activeKey={activeKey}\n onSelect={onSelect}\n color={color}\n collapsed={collapsed}\n showMonogram={showMonogram}\n position={position}\n skeleton={skeleton}\n data={item.children ?? []}\n level={level + 1}\n tabbable={tabbable && expandedBody}\n className={cn(\"mt-0.5 border-mari-border\", position === \"left\" ? \"border-l pl-2\" : \"border-r pr-2\", NESTED_INDENT_CLASS[position][level === 0 ? \"root\" : \"deep\"])}\n />\n </div>\n </div>\n )}\n </li>\n );\n}\n"],"mappings":"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","names":["useEffect","useState","cn","useEffect","useId","useState","cn","cn","cn","jsx","cn","cn","jsx","jsxs","cn","jsx","jsxs","cn","Fragment","jsx","jsxs","useState","useId","useEffect","cn","jsx","jsxs","cn","cn","jsx","jsxs","cn","ChevronRightIcon","cn","cn","Fragment","jsx","jsxs","cn","Fragment","jsx","jsxs","ChevronRightIcon","cn","jsx","useState","useEffect","useEffect","useId","useRef","useState","createPortal","cn","useState","cn","useState","ChevronDownIcon","ChevronRightIcon","cn","jsx","jsxs","useState","cn","ChevronRightIcon","ChevronDownIcon","ChevronRightIcon","cn","jsx","jsxs","INDICATOR_COLOR_CLASS","cn","ChevronRightIcon","jsx","jsxs","useState","cn","useRef","ChevronDownIcon","cn","jsx","jsxs","useRef","cn","ChevronDownIcon","jsx","useState","useRef","useId","useEffect","createPortal","cn","useCallback","useEffect","useId","useRef","useState","cn","useCallback","useEffect","useRef","cn","jsx","cn","React","cn","jsx","jsxs","React","SidebarMegaPanel","cn","cn","useEffect","useState","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","cn","Fragment","jsx","jsxs","cn","ChevronRightIcon","ChevronLeftIcon","ChevronDownIcon","useState","useEffect","jsx","jsxs","cn","jsx","jsxs","useState","useRef","useId","useEffect","useCallback","cn"]}
|
package/dist/modal.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./types/modal/index";
|