@mari-ui/components 0.1.1 → 0.2.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/dist/accordion.js +4 -4
- package/dist/accordion.js.map +1 -1
- package/dist/alert.js +5 -5
- package/dist/alert.js.map +1 -1
- package/dist/autocomplete.js +8 -8
- package/dist/autocomplete.js.map +1 -1
- package/dist/avatar.js +3 -3
- package/dist/badge.js +3 -3
- package/dist/breadcrumb.js +9 -9
- package/dist/breadcrumb.js.map +1 -1
- package/dist/button.js +4 -4
- package/dist/calendar.js +14 -14
- package/dist/calendar.js.map +1 -1
- package/dist/card.js +4 -4
- package/dist/card.js.map +1 -1
- package/dist/carousel.js +4 -4
- package/dist/carousel.js.map +1 -1
- package/dist/chart.js +5 -5
- package/dist/chart.js.map +1 -1
- package/dist/checkbox.js +4 -4
- package/dist/{chunk-BDV4GOEN.js → chunk-5GILG5AK.js} +1 -1
- package/dist/chunk-5GILG5AK.js.map +1 -0
- package/dist/{chunk-IP2J3BWY.js → chunk-6AMBZXZJ.js} +1 -1
- package/dist/chunk-6AMBZXZJ.js.map +1 -0
- package/dist/{chunk-XUKVQO6M.js → chunk-6CSUVVFG.js} +1 -1
- package/dist/chunk-6CSUVVFG.js.map +1 -0
- package/dist/{chunk-ELHESRRH.js → chunk-7FQQRTPX.js} +5 -5
- package/dist/chunk-7FQQRTPX.js.map +1 -0
- package/dist/{chunk-QNOHFHVL.js → chunk-7WB4CDWX.js} +4 -4
- package/dist/chunk-7WB4CDWX.js.map +1 -0
- package/dist/{chunk-47FHUOLT.js → chunk-BLFY5UAL.js} +1 -1
- package/dist/chunk-BLFY5UAL.js.map +1 -0
- package/dist/{chunk-CYLXW66E.js → chunk-C3QWJFSE.js} +2 -2
- package/dist/chunk-C3QWJFSE.js.map +1 -0
- package/dist/{chunk-QDFDMWXD.js → chunk-CNWRDTEW.js} +7 -7
- package/dist/chunk-CNWRDTEW.js.map +1 -0
- package/dist/{chunk-2IEXY3OZ.js → chunk-CVKAGR3D.js} +4 -4
- package/dist/{chunk-LZHERDNB.js → chunk-CXIWRNSP.js} +5 -5
- package/dist/chunk-CXIWRNSP.js.map +1 -0
- package/dist/{chunk-FNJHS5KQ.js → chunk-E5JTEQ4V.js} +6 -6
- package/dist/chunk-E5JTEQ4V.js.map +1 -0
- package/dist/{chunk-IO4346TF.js → chunk-FC7T3INX.js} +8 -8
- package/dist/chunk-FC7T3INX.js.map +1 -0
- package/dist/{chunk-KCYM2JXP.js → chunk-FWSMUUZ5.js} +5 -5
- package/dist/chunk-FWSMUUZ5.js.map +1 -0
- package/dist/{chunk-3ABWBQCS.js → chunk-GTNCXOUL.js} +2 -2
- package/dist/chunk-GTNCXOUL.js.map +1 -0
- package/dist/{chunk-ZLPAXPDI.js → chunk-GVJ4M63W.js} +3 -3
- package/dist/{chunk-ZLPAXPDI.js.map → chunk-GVJ4M63W.js.map} +1 -1
- package/dist/{chunk-LBXIPDAB.js → chunk-JXD5DW6E.js} +3 -3
- package/dist/chunk-JXD5DW6E.js.map +1 -0
- package/dist/{chunk-P7Z5BREP.js → chunk-L6DBWUAB.js} +6 -6
- package/dist/chunk-L6DBWUAB.js.map +1 -0
- package/dist/{chunk-YZ7MDC6B.js → chunk-LNL4TCGL.js} +2 -2
- package/dist/chunk-LNL4TCGL.js.map +1 -0
- package/dist/{chunk-TCYDVNSU.js → chunk-MT4VH7QV.js} +1 -1
- package/dist/chunk-MT4VH7QV.js.map +1 -0
- package/dist/{chunk-DKENCYHA.js → chunk-MXGY2ENX.js} +1 -1
- package/dist/chunk-MXGY2ENX.js.map +1 -0
- package/dist/{chunk-DUCIAQGR.js → chunk-NENNFQEY.js} +3 -3
- package/dist/chunk-NENNFQEY.js.map +1 -0
- package/dist/{chunk-LBQMEHK6.js → chunk-NPFMPRII.js} +1 -1
- package/dist/chunk-NPFMPRII.js.map +1 -0
- package/dist/{chunk-NS7FKOFI.js → chunk-NYXU5EFE.js} +1 -1
- package/dist/chunk-NYXU5EFE.js.map +1 -0
- package/dist/{chunk-S66GKX2W.js → chunk-OAWUZIIN.js} +1 -1
- package/dist/chunk-OAWUZIIN.js.map +1 -0
- package/dist/{chunk-JNZODUXP.js → chunk-OYDG6C54.js} +1 -1
- package/dist/chunk-OYDG6C54.js.map +1 -0
- package/dist/{chunk-FFXRFQSU.js → chunk-POBOJBNJ.js} +1 -1
- package/dist/chunk-POBOJBNJ.js.map +1 -0
- package/dist/{chunk-RIBB5OJV.js → chunk-PR2MCHU4.js} +4 -4
- package/dist/chunk-PR2MCHU4.js.map +1 -0
- package/dist/{chunk-LEOIKO7C.js → chunk-RLWP6NJU.js} +4 -4
- package/dist/chunk-RLWP6NJU.js.map +1 -0
- package/dist/{chunk-V7KDUUV6.js → chunk-RMNV2CE2.js} +2 -2
- package/dist/chunk-RMNV2CE2.js.map +1 -0
- package/dist/{chunk-ZXYQ2ZPR.js → chunk-TEMTIMAH.js} +3 -3
- package/dist/chunk-TEMTIMAH.js.map +1 -0
- package/dist/{chunk-NPM7IDYV.js → chunk-TSFAAREV.js} +3 -3
- package/dist/chunk-TSFAAREV.js.map +1 -0
- package/dist/{chunk-54HHEXXD.js → chunk-VKN374SD.js} +1 -1
- package/dist/chunk-VKN374SD.js.map +1 -0
- package/dist/{chunk-ZMA7BT2L.js → chunk-XWBJPA3D.js} +4 -4
- package/dist/{chunk-ZMA7BT2L.js.map → chunk-XWBJPA3D.js.map} +1 -1
- package/dist/{chunk-QZRBO7BE.js → chunk-Z4KFHRDW.js} +9 -9
- package/dist/chunk-Z4KFHRDW.js.map +1 -0
- package/dist/{chunk-TXRQCHOR.js → chunk-ZAR3SCPV.js} +5 -5
- package/dist/chunk-ZAR3SCPV.js.map +1 -0
- package/dist/color-picker.js +19 -19
- package/dist/date-picker.js +10 -10
- package/dist/date-picker.js.map +1 -1
- package/dist/divider.js +2 -2
- package/dist/divider.js.map +1 -1
- package/dist/drawer.js +7 -7
- package/dist/dropdown.js +7 -7
- package/dist/empty.js +5 -5
- package/dist/field.js +2 -2
- package/dist/field.js.map +1 -1
- package/dist/float-button.js +6 -6
- package/dist/float-button.js.map +1 -1
- package/dist/image.js +8 -8
- package/dist/image.js.map +1 -1
- package/dist/input-number.js +6 -6
- package/dist/input.js +8 -8
- package/dist/list.js +12 -12
- package/dist/list.js.map +1 -1
- package/dist/loading.js +1 -1
- package/dist/logo.js.map +1 -1
- package/dist/mari.css +8 -2
- package/dist/masonry.js +5 -5
- package/dist/masonry.js.map +1 -1
- package/dist/menu.js +10 -10
- package/dist/menu.js.map +1 -1
- package/dist/modal.js +8 -8
- package/dist/modal.js.map +1 -1
- package/dist/pagination.js +5 -5
- package/dist/popconfirm.js +13 -13
- package/dist/popconfirm.js.map +1 -1
- package/dist/popover.js +10 -10
- package/dist/progress.js +2 -2
- package/dist/progress.js.map +1 -1
- package/dist/qrcode.js +1 -1
- package/dist/qrcode.js.map +1 -1
- package/dist/radio.js +4 -4
- package/dist/radio.js.map +1 -1
- package/dist/rate.js +2 -2
- package/dist/rate.js.map +1 -1
- package/dist/segmented.js +4 -4
- package/dist/select.js +11 -11
- package/dist/skeleton.js +3 -3
- package/dist/slider.js +8 -8
- package/dist/slider.js.map +1 -1
- package/dist/splitter.js.map +1 -1
- package/dist/statistic.js +7 -7
- package/dist/statistic.js.map +1 -1
- package/dist/steps.js +4 -4
- package/dist/steps.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/switch.js +2 -2
- package/dist/switch.js.map +1 -1
- package/dist/table.js +19 -19
- package/dist/table.js.map +1 -1
- package/dist/tabs.js +2 -2
- package/dist/tabs.js.map +1 -1
- package/dist/tag.js +3 -3
- package/dist/theme-customizer.js +19 -19
- package/dist/theme-customizer.js.map +1 -1
- package/dist/timeline.js +5 -5
- package/dist/timeline.js.map +1 -1
- package/dist/toast.js +7 -7
- package/dist/tooltip.js +4 -4
- package/dist/tour.js +12 -12
- package/dist/tour.js.map +1 -1
- package/dist/transfer.js +11 -11
- package/dist/transfer.js.map +1 -1
- package/dist/tree-select.js +12 -12
- package/dist/tree-select.js.map +1 -1
- package/dist/tree.js +5 -5
- package/dist/types/accordion/Accordion.d.ts +1 -3
- package/dist/types/accordion/Accordion.d.ts.map +1 -1
- package/dist/types/alert/Alert.d.ts +0 -1
- package/dist/types/alert/Alert.d.ts.map +1 -1
- package/dist/types/autocomplete/AutoComplete.d.ts +2 -2
- package/dist/types/autocomplete/utils.d.ts +0 -8
- package/dist/types/autocomplete/utils.d.ts.map +1 -1
- package/dist/types/avatar/utils.d.ts +1 -1
- package/dist/types/badge/Badge.d.ts +0 -3
- package/dist/types/badge/Badge.d.ts.map +1 -1
- package/dist/types/breadcrumb/Breadcrumb.d.ts +1 -12
- package/dist/types/breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/types/breadcrumb/utils.d.ts +0 -7
- package/dist/types/breadcrumb/utils.d.ts.map +1 -1
- package/dist/types/button/types.d.ts +1 -9
- package/dist/types/button/types.d.ts.map +1 -1
- package/dist/types/calendar/Calendar.d.ts +3 -4
- package/dist/types/calendar/Calendar.d.ts.map +1 -1
- package/dist/types/calendar/_components/CalendarPanel.d.ts +1 -2
- package/dist/types/calendar/_components/CalendarPanel.d.ts.map +1 -1
- package/dist/types/calendar/_components/DayGrid.d.ts +1 -1
- package/dist/types/calendar/types.d.ts +1 -1
- package/dist/types/calendar/types.d.ts.map +1 -1
- package/dist/types/card/Card.d.ts +3 -4
- package/dist/types/card/Card.d.ts.map +1 -1
- package/dist/types/card/types.d.ts +1 -1
- package/dist/types/carousel/types.d.ts +4 -10
- package/dist/types/carousel/types.d.ts.map +1 -1
- package/dist/types/carousel/utils.d.ts +0 -11
- package/dist/types/carousel/utils.d.ts.map +1 -1
- package/dist/types/chart/_shared/paths.d.ts +1 -1
- package/dist/types/chart/_shared/scale.d.ts +1 -2
- package/dist/types/chart/_shared/scale.d.ts.map +1 -1
- package/dist/types/chart/bar-chart/BarChart.d.ts +1 -1
- package/dist/types/chart/gauge/Gauge.d.ts +1 -1
- package/dist/types/chart/line-chart/LineChart.d.ts +2 -2
- package/dist/types/chart/pie-chart/PieChart.d.ts +1 -1
- package/dist/types/chart/sparkline/Sparkline.d.ts +1 -1
- package/dist/types/checkbox/utils.d.ts.map +1 -1
- package/dist/types/color-picker/ColorPicker.d.ts +0 -6
- package/dist/types/color-picker/ColorPicker.d.ts.map +1 -1
- package/dist/types/color-picker/_components/ColorPresets.d.ts +1 -1
- package/dist/types/color-picker/_components/ColorPresets.d.ts.map +1 -1
- package/dist/types/color-picker/utils.d.ts +1 -1
- package/dist/types/date-picker/DatePicker.d.ts +0 -6
- package/dist/types/date-picker/DatePicker.d.ts.map +1 -1
- package/dist/types/date-picker/TimePicker.d.ts +1 -1
- package/dist/types/date-picker/_components/TimePanel.d.ts.map +1 -1
- package/dist/types/date-picker/utils.d.ts +1 -1
- package/dist/types/date-picker/utils.d.ts.map +1 -1
- package/dist/types/divider/Divider.d.ts +1 -1
- package/dist/types/divider/types.d.ts +2 -4
- package/dist/types/divider/types.d.ts.map +1 -1
- package/dist/types/drawer/Drawer.d.ts +5 -6
- package/dist/types/drawer/Drawer.d.ts.map +1 -1
- package/dist/types/dropdown/_components/DropdownContent.d.ts +1 -1
- package/dist/types/dropdown/_components/DropdownItem.d.ts +0 -5
- package/dist/types/dropdown/_components/DropdownItem.d.ts.map +1 -1
- package/dist/types/dropdown/types.d.ts +1 -1
- package/dist/types/dropdown/useDropdown.d.ts +0 -16
- package/dist/types/dropdown/useDropdown.d.ts.map +1 -1
- package/dist/types/dropdown/utils.d.ts +1 -1
- package/dist/types/empty/Empty.d.ts +1 -6
- package/dist/types/empty/Empty.d.ts.map +1 -1
- package/dist/types/field/Field.d.ts +1 -5
- package/dist/types/field/Field.d.ts.map +1 -1
- package/dist/types/float-button/BackTop.d.ts +1 -1
- package/dist/types/float-button/FloatButton.d.ts +0 -5
- package/dist/types/float-button/FloatButton.d.ts.map +1 -1
- package/dist/types/float-button/FloatButtonGroup.d.ts +1 -1
- package/dist/types/float-button/utils.d.ts +1 -1
- package/dist/types/foundations/usePersonaTheme.d.ts +1 -1
- package/dist/types/image/Image.d.ts +0 -6
- package/dist/types/image/Image.d.ts.map +1 -1
- package/dist/types/image/ImageGallery.d.ts +1 -1
- package/dist/types/image/ImageViewer.d.ts +1 -1
- package/dist/types/image/galleryUtils.d.ts +1 -1
- package/dist/types/input/SearchInput.d.ts +1 -6
- package/dist/types/input/SearchInput.d.ts.map +1 -1
- package/dist/types/input/Textarea.d.ts +2 -6
- package/dist/types/input/Textarea.d.ts.map +1 -1
- package/dist/types/input/mention/types.d.ts +1 -2
- package/dist/types/input/mention/types.d.ts.map +1 -1
- package/dist/types/input/types.d.ts +3 -15
- package/dist/types/input/types.d.ts.map +1 -1
- package/dist/types/input/utils.d.ts +1 -26
- package/dist/types/input/utils.d.ts.map +1 -1
- package/dist/types/input-number/InputNumber.d.ts +0 -2
- package/dist/types/input-number/InputNumber.d.ts.map +1 -1
- package/dist/types/input-number/utils.d.ts +1 -1
- package/dist/types/lib/ContentSkeleton.d.ts +1 -1
- package/dist/types/lib/FloatingArrow.d.ts +0 -10
- package/dist/types/lib/FloatingArrow.d.ts.map +1 -1
- package/dist/types/lib/SkeletonDemo.d.ts +1 -1
- package/dist/types/lib/SkeletonSlot.d.ts +1 -1
- package/dist/types/lib/colorClasses.d.ts +1 -7
- package/dist/types/lib/colorClasses.d.ts.map +1 -1
- package/dist/types/lib/date/index.d.ts +1 -1
- package/dist/types/lib/elevationClass.d.ts +0 -8
- package/dist/types/lib/elevationClass.d.ts.map +1 -1
- package/dist/types/lib/fieldContext.d.ts +1 -1
- package/dist/types/lib/floating.d.ts +2 -7
- package/dist/types/lib/floating.d.ts.map +1 -1
- package/dist/types/lib/infiniteScroll.d.ts +1 -1
- package/dist/types/lib/linkBehavior.d.ts +1 -1
- package/dist/types/lib/overlay.d.ts +0 -7
- package/dist/types/lib/overlay.d.ts.map +1 -1
- package/dist/types/lib/sizeClasses.d.ts +2 -2
- package/dist/types/lib/skeleton.d.ts +1 -1
- package/dist/types/lib/storyMeta.d.ts +7 -28
- package/dist/types/lib/storyMeta.d.ts.map +1 -1
- package/dist/types/lib/storybookArgTypes.d.ts +1 -1
- package/dist/types/lib/useFloatingPosition.d.ts +1 -1
- package/dist/types/list/List.d.ts +0 -4
- package/dist/types/list/List.d.ts.map +1 -1
- package/dist/types/loading/Loading.d.ts.map +1 -1
- package/dist/types/loading/types.d.ts +2 -5
- package/dist/types/loading/types.d.ts.map +1 -1
- package/dist/types/loading/utils.d.ts +0 -5
- package/dist/types/loading/utils.d.ts.map +1 -1
- package/dist/types/masonry/Masonry.d.ts +0 -4
- package/dist/types/masonry/Masonry.d.ts.map +1 -1
- package/dist/types/menu/_shared/MenuLink.d.ts +0 -4
- package/dist/types/menu/_shared/MenuLink.d.ts.map +1 -1
- package/dist/types/menu/_shared/MobileNav.d.ts +0 -6
- package/dist/types/menu/_shared/MobileNav.d.ts.map +1 -1
- package/dist/types/menu/_shared/NavBar.d.ts +0 -8
- package/dist/types/menu/_shared/NavBar.d.ts.map +1 -1
- package/dist/types/menu/basic-menu/BasicMenu.d.ts +2 -16
- package/dist/types/menu/basic-menu/BasicMenu.d.ts.map +1 -1
- package/dist/types/menu/mega-menu/MegaMenu.d.ts +0 -8
- package/dist/types/menu/mega-menu/MegaMenu.d.ts.map +1 -1
- package/dist/types/menu/mega-menu/_components/MegaMenuItem.d.ts +0 -12
- package/dist/types/menu/mega-menu/_components/MegaMenuItem.d.ts.map +1 -1
- package/dist/types/menu/sidebar/Sidebar.d.ts +1 -16
- package/dist/types/menu/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/types/menu/sidebar/_components/SidebarButton.d.ts +0 -6
- package/dist/types/menu/sidebar/_components/SidebarButton.d.ts.map +1 -1
- package/dist/types/menu/sidebar/_components/SidebarItem.d.ts +0 -10
- package/dist/types/menu/sidebar/_components/SidebarItem.d.ts.map +1 -1
- package/dist/types/menu/sidebar/_components/SidebarMenu.d.ts +0 -4
- package/dist/types/menu/sidebar/_components/SidebarMenu.d.ts.map +1 -1
- package/dist/types/menu/types.d.ts +2 -11
- package/dist/types/menu/types.d.ts.map +1 -1
- package/dist/types/menu/utils.d.ts +0 -22
- package/dist/types/menu/utils.d.ts.map +1 -1
- package/dist/types/modal/Modal.d.ts +1 -12
- package/dist/types/modal/Modal.d.ts.map +1 -1
- package/dist/types/modal/types.d.ts +3 -4
- package/dist/types/modal/types.d.ts.map +1 -1
- package/dist/types/modal/utils.d.ts +1 -5
- package/dist/types/modal/utils.d.ts.map +1 -1
- package/dist/types/pagination/Pagination.d.ts +2 -11
- package/dist/types/pagination/Pagination.d.ts.map +1 -1
- package/dist/types/pagination/types.d.ts +1 -1
- package/dist/types/pagination/types.d.ts.map +1 -1
- package/dist/types/pagination/utils.d.ts +5 -12
- package/dist/types/pagination/utils.d.ts.map +1 -1
- package/dist/types/popconfirm/Popconfirm.d.ts +0 -4
- package/dist/types/popconfirm/Popconfirm.d.ts.map +1 -1
- package/dist/types/popover/Popover.d.ts +0 -5
- package/dist/types/popover/Popover.d.ts.map +1 -1
- package/dist/types/progress/Progress.d.ts +0 -3
- package/dist/types/progress/Progress.d.ts.map +1 -1
- package/dist/types/qrcode/QRCode.d.ts +0 -6
- package/dist/types/qrcode/QRCode.d.ts.map +1 -1
- package/dist/types/radio/utils.d.ts +1 -1
- package/dist/types/segmented/Segmented.d.ts +0 -4
- package/dist/types/segmented/Segmented.d.ts.map +1 -1
- package/dist/types/select/Select.d.ts +0 -5
- package/dist/types/select/Select.d.ts.map +1 -1
- package/dist/types/select/_components/SelectPanel.d.ts +2 -3
- package/dist/types/select/_components/SelectPanel.d.ts.map +1 -1
- package/dist/types/select/types.d.ts +1 -1
- package/dist/types/select/types.d.ts.map +1 -1
- package/dist/types/skeleton/utils.d.ts.map +1 -1
- package/dist/types/slider/Slider.d.ts.map +1 -1
- package/dist/types/slider/utils.d.ts +0 -1
- package/dist/types/slider/utils.d.ts.map +1 -1
- package/dist/types/splitter/Splitter.d.ts +4 -4
- package/dist/types/statistic/Statistic.d.ts +1 -1
- package/dist/types/statistic/utils.d.ts +2 -4
- package/dist/types/statistic/utils.d.ts.map +1 -1
- package/dist/types/steps/Steps.d.ts.map +1 -1
- package/dist/types/steps/_components/StepsContent.d.ts +1 -10
- package/dist/types/steps/_components/StepsContent.d.ts.map +1 -1
- package/dist/types/steps/types.d.ts +1 -1
- package/dist/types/steps/types.d.ts.map +1 -1
- package/dist/types/steps/utils.d.ts +0 -9
- package/dist/types/steps/utils.d.ts.map +1 -1
- package/dist/types/switch/Switch.d.ts +1 -9
- package/dist/types/switch/Switch.d.ts.map +1 -1
- package/dist/types/switch/utils.d.ts.map +1 -1
- package/dist/types/table/Table.d.ts +7 -11
- package/dist/types/table/Table.d.ts.map +1 -1
- package/dist/types/table/_components/TableBody.d.ts.map +1 -1
- package/dist/types/table/_components/TableEditDrawer.d.ts +0 -8
- package/dist/types/table/_components/TableEditDrawer.d.ts.map +1 -1
- package/dist/types/table/_components/TableHeader.d.ts +0 -7
- package/dist/types/table/_components/TableHeader.d.ts.map +1 -1
- package/dist/types/table/_components/TableInfoValue.d.ts +0 -10
- package/dist/types/table/_components/TableInfoValue.d.ts.map +1 -1
- package/dist/types/table/_components/TablePagination.d.ts +0 -12
- package/dist/types/table/_components/TablePagination.d.ts.map +1 -1
- package/dist/types/table/_components/TableRowActions.d.ts +0 -6
- package/dist/types/table/_components/TableRowActions.d.ts.map +1 -1
- package/dist/types/table/types.d.ts +2 -18
- package/dist/types/table/types.d.ts.map +1 -1
- package/dist/types/table/utils.d.ts +1 -7
- package/dist/types/table/utils.d.ts.map +1 -1
- package/dist/types/tabs/Tabs.d.ts +0 -1
- package/dist/types/tabs/Tabs.d.ts.map +1 -1
- package/dist/types/tabs/_components/TabsContent.d.ts +0 -5
- package/dist/types/tabs/_components/TabsContent.d.ts.map +1 -1
- package/dist/types/tabs/_components/TabsList.d.ts +6 -6
- package/dist/types/tabs/_components/TabsTrigger.d.ts +1 -1
- package/dist/types/tabs/utils.d.ts +0 -5
- package/dist/types/tabs/utils.d.ts.map +1 -1
- package/dist/types/tag/utils.d.ts +0 -8
- package/dist/types/tag/utils.d.ts.map +1 -1
- package/dist/types/theme-customizer/ThemeCustomizer.d.ts +1 -1
- package/dist/types/timeline/Timeline.d.ts +1 -3
- package/dist/types/timeline/Timeline.d.ts.map +1 -1
- package/dist/types/toast/Toast.d.ts +2 -2
- package/dist/types/toast/useToast.d.ts +2 -4
- package/dist/types/toast/useToast.d.ts.map +1 -1
- package/dist/types/toast/utils.d.ts +0 -1
- package/dist/types/toast/utils.d.ts.map +1 -1
- package/dist/types/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/tooltip/utils.d.ts +0 -6
- package/dist/types/tooltip/utils.d.ts.map +1 -1
- package/dist/types/tour/Tour.d.ts +0 -6
- package/dist/types/tour/Tour.d.ts.map +1 -1
- package/dist/types/tour/utils.d.ts +1 -1
- package/dist/types/tour/utils.d.ts.map +1 -1
- package/dist/types/transfer/Transfer.d.ts +0 -5
- package/dist/types/transfer/Transfer.d.ts.map +1 -1
- package/dist/types/transfer/utils.d.ts +1 -3
- package/dist/types/transfer/utils.d.ts.map +1 -1
- package/dist/types/tree/Tree.d.ts +0 -6
- package/dist/types/tree/Tree.d.ts.map +1 -1
- package/dist/types/tree/utils.d.ts +1 -1
- package/dist/types/tree-select/TreeSelect.d.ts +0 -6
- package/dist/types/tree-select/TreeSelect.d.ts.map +1 -1
- package/dist/types/tree-select/_components/TreeSelectPanel.d.ts +1 -1
- package/dist/types/tree-select/utils.d.ts +1 -1
- package/dist/types/typography/utils.d.ts.map +1 -1
- package/dist/types/upload/_components/List.d.ts +0 -7
- package/dist/types/upload/_components/List.d.ts.map +1 -1
- package/dist/types/upload/_components/ReviewList.d.ts +0 -8
- package/dist/types/upload/_components/ReviewList.d.ts.map +1 -1
- package/dist/types/upload/_components/UploadDragDropButton.d.ts +0 -8
- package/dist/types/upload/_components/UploadDragDropButton.d.ts.map +1 -1
- package/dist/types/upload/_components/UploadReviewButton.d.ts +0 -5
- package/dist/types/upload/_components/UploadReviewButton.d.ts.map +1 -1
- package/dist/types/upload/types.d.ts +5 -8
- package/dist/types/upload/types.d.ts.map +1 -1
- package/dist/types/upload/useUpload.d.ts +0 -10
- package/dist/types/upload/useUpload.d.ts.map +1 -1
- package/dist/types/upload/utils.d.ts +0 -4
- package/dist/types/upload/utils.d.ts.map +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/typography.js +2 -2
- package/dist/typography.js.map +1 -1
- package/dist/upload.js +8 -8
- package/dist/upload.js.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-3ABWBQCS.js.map +0 -1
- package/dist/chunk-47FHUOLT.js.map +0 -1
- package/dist/chunk-54HHEXXD.js.map +0 -1
- package/dist/chunk-BDV4GOEN.js.map +0 -1
- package/dist/chunk-CYLXW66E.js.map +0 -1
- package/dist/chunk-DKENCYHA.js.map +0 -1
- package/dist/chunk-DUCIAQGR.js.map +0 -1
- package/dist/chunk-ELHESRRH.js.map +0 -1
- package/dist/chunk-FFXRFQSU.js.map +0 -1
- package/dist/chunk-FNJHS5KQ.js.map +0 -1
- package/dist/chunk-IO4346TF.js.map +0 -1
- package/dist/chunk-IP2J3BWY.js.map +0 -1
- package/dist/chunk-JNZODUXP.js.map +0 -1
- package/dist/chunk-KCYM2JXP.js.map +0 -1
- package/dist/chunk-LBQMEHK6.js.map +0 -1
- package/dist/chunk-LBXIPDAB.js.map +0 -1
- package/dist/chunk-LEOIKO7C.js.map +0 -1
- package/dist/chunk-LZHERDNB.js.map +0 -1
- package/dist/chunk-NPM7IDYV.js.map +0 -1
- package/dist/chunk-NS7FKOFI.js.map +0 -1
- package/dist/chunk-P7Z5BREP.js.map +0 -1
- package/dist/chunk-QDFDMWXD.js.map +0 -1
- package/dist/chunk-QNOHFHVL.js.map +0 -1
- package/dist/chunk-QZRBO7BE.js.map +0 -1
- package/dist/chunk-RIBB5OJV.js.map +0 -1
- package/dist/chunk-S66GKX2W.js.map +0 -1
- package/dist/chunk-TCYDVNSU.js.map +0 -1
- package/dist/chunk-TXRQCHOR.js.map +0 -1
- package/dist/chunk-V7KDUUV6.js.map +0 -1
- package/dist/chunk-XUKVQO6M.js.map +0 -1
- package/dist/chunk-YZ7MDC6B.js.map +0 -1
- package/dist/chunk-ZXYQ2ZPR.js.map +0 -1
- /package/dist/{chunk-2IEXY3OZ.js.map → chunk-CVKAGR3D.js.map} +0 -0
package/dist/date-picker.js
CHANGED
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
parseDate,
|
|
17
17
|
startOfDay,
|
|
18
18
|
startOfMonth
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-C3QWJFSE.js";
|
|
20
20
|
import {
|
|
21
21
|
ClearButton
|
|
22
22
|
} from "./chunk-KSPM2Z3T.js";
|
|
@@ -26,28 +26,28 @@ import {
|
|
|
26
26
|
FIELD_MOBILE_TEXT_CLASS,
|
|
27
27
|
getShapeClasses,
|
|
28
28
|
getVariantClasses
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-NENNFQEY.js";
|
|
30
30
|
import {
|
|
31
31
|
useFieldControl
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-NPFMPRII.js";
|
|
33
33
|
import {
|
|
34
34
|
useFloatingPosition
|
|
35
|
-
} from "./chunk-
|
|
36
|
-
import "./chunk-
|
|
35
|
+
} from "./chunk-GTNCXOUL.js";
|
|
36
|
+
import "./chunk-NYXU5EFE.js";
|
|
37
37
|
import {
|
|
38
38
|
elevationClass
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-MT4VH7QV.js";
|
|
40
40
|
import {
|
|
41
41
|
Button
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-CVKAGR3D.js";
|
|
43
43
|
import {
|
|
44
44
|
sizeClass,
|
|
45
45
|
touchTargetClass
|
|
46
|
-
} from "./chunk-
|
|
47
|
-
import "./chunk-
|
|
46
|
+
} from "./chunk-POBOJBNJ.js";
|
|
47
|
+
import "./chunk-6AMBZXZJ.js";
|
|
48
48
|
import {
|
|
49
49
|
skeletonBoxProps
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-VKN374SD.js";
|
|
51
51
|
|
|
52
52
|
// src/date-picker/DatePicker.tsx
|
|
53
53
|
import { useEffect as useEffect3, useId, useRef as useRef2, useState as useState4 } from "react";
|
package/dist/date-picker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/date-picker/DatePicker.tsx","../src/date-picker/_components/PickerPanel.tsx","../src/calendar/_components/CalendarPanel.tsx","../src/date-picker/utils.ts","../src/date-picker/_components/TimePanel.tsx","../src/date-picker/usePickerState.ts","../src/date-picker/TimePicker.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useId, useRef, useState } from \"react\";\nimport { ArrowRightIcon, CalendarIcon, ClockIcon } from \"lucide-react\";\nimport { cn } from \"@mari-ui/core\";\nimport { ClearButton } from \"../input/_components/FieldAdornments\";\nimport { FIELD_BASE_CLASS, FIELD_DISABLED_CLASS, FIELD_MOBILE_TEXT_CLASS, getShapeClasses, getVariantClasses } from \"../input/utils\";\nimport { useFieldControl } from \"../lib/fieldContext\";\nimport { skeletonBoxProps } from \"../lib/skeleton\";\nimport { sizeClass, touchTargetClass } from \"../lib/sizeClasses\";\nimport { useFloatingPosition } from \"../lib/useFloatingPosition\";\nimport { PickerPanel } from \"./_components/PickerPanel\";\nimport type { DatePickerProps, DatePickerRangeProps } from \"./types\";\nimport { usePickerState, type PickerState } from \"./usePickerState\";\nimport { formatPlaceholder, isoValue } from \"./utils\";\n\nexport type { DatePickerProps };\n\nconst GAP_PX = 4;\n\ninterface SlotInputProps {\n state: PickerState;\n slot: 0 | 1;\n id?: string;\n label?: string;\n labelledBy?: string;\n describedBy?: string;\n placeholder: string;\n panelId: string;\n disabled: boolean;\n required?: boolean;\n invalid?: boolean;\n inputRef: (el: HTMLInputElement | null) => void;\n onOpenWithFocus: () => void;\n}\n\n/** Yazılabilir alan (her yuva için). Panel açıkken odak burada kalır; ↓ odağı panele taşır. */\nfunction SlotInput({ state, slot, id, label, labelledBy, describedBy, placeholder, panelId, disabled, required, invalid, inputRef, onOpenWithFocus }: Readonly<SlotInputProps>) {\n const active = state.open && state.slot === slot;\n return (\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n // APG \"Date Picker Combobox\": yazılabilir alan + açılır dialog.\n role=\"combobox\"\n inputMode={state.mode === \"time\" ? \"numeric\" : \"text\"}\n autoComplete=\"off\"\n aria-label={label}\n aria-labelledby={labelledBy}\n aria-describedby={describedBy}\n aria-haspopup=\"dialog\"\n aria-expanded={state.open}\n aria-controls={state.open ? panelId : undefined}\n aria-required={required || undefined}\n aria-invalid={invalid || undefined}\n disabled={disabled}\n placeholder={placeholder}\n value={state.texts[slot] ?? \"\"}\n onChange={(e) => {\n state.setSlot(slot);\n state.typeText(slot, e.target.value);\n state.setOpen(true);\n }}\n onFocus={() => state.open && state.setSlot(slot)}\n onClick={() => {\n state.setSlot(slot);\n state.setOpen(true);\n }}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\" || (e.key === \"ArrowDown\" && e.altKey)) {\n e.preventDefault();\n state.setSlot(slot);\n onOpenWithFocus();\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n state.commitText(slot);\n state.close();\n } else if (e.key === \"Escape\" && state.open) {\n e.preventDefault();\n e.stopPropagation();\n state.close();\n }\n }}\n className={cn(\n \"w-full min-w-0 flex-1 bg-transparent tabular-nums placeholder:text-mari-muted focus:outline-none disabled:cursor-not-allowed\",\n FIELD_MOBILE_TEXT_CLASS,\n state.range && \"border-b-2 border-transparent\",\n active && state.range && \"border-mari-primary\"\n )}\n />\n );\n}\n\n/** Değerin sığacağı genişlik: tek alan / aralık, tarih-saatte daha geniş. */\nfunction boxWidthClass({ range, mode }: PickerState): string {\n if (mode === \"datetime\") return range ? \"max-w-[26rem]\" : \"max-w-60\";\n return range ? \"max-w-80\" : \"max-w-52\";\n}\n\ntype ElRef<T> = React.RefObject<T | null>;\n\n/**\n * Dışarı tıklama taslağı atıp kapatır; paneldeyken Escape kapatıp alana\n * döner; seçimle kapanınca odak body'ye düştüyse alana geri verilir.\n */\nfunction usePickerDismiss(state: PickerState, anchorRef: ElRef<HTMLDivElement>, panelRef: ElRef<HTMLDivElement>, inputs: ElRef<(HTMLInputElement | null)[]>, resetFocusPanel: () => void) {\n const { open, slot, close } = state;\n const closeRef = useRef(close);\n closeRef.current = close;\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (e: PointerEvent) => {\n const t = e.target as Node;\n if (anchorRef.current?.contains(t) || panelRef.current?.contains(t)) return;\n closeRef.current();\n resetFocusPanel();\n };\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\" || !panelRef.current?.contains(document.activeElement)) return;\n e.preventDefault();\n closeRef.current();\n resetFocusPanel();\n inputs.current?.[slot]?.focus();\n };\n document.addEventListener(\"pointerdown\", onPointerDown);\n // Yakalama aşaması: Modal'ın (belge düzeyi) Escape dinleyicisinden ÖNCE işlenip `preventDefault` ile işaretlenir.\n document.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n document.removeEventListener(\"pointerdown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown, true);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- refler kararlı\n }, [open, slot]);\n\n const wasOpen = useRef(open);\n useEffect(() => {\n if (wasOpen.current && !open && document.activeElement === document.body) inputs.current?.[slot]?.focus();\n if (!open) resetFocusPanel();\n wasOpen.current = open;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, slot]);\n}\n\n/**\n * Faz 16.5 — yapı ant.design DatePicker/RangePicker/TimePicker'dan; 16.0\n * kararıyla tek motor: `mode=\"date\" | \"time\" | \"datetime\"`, `picker`\n * (gün/ay/yıl), `range` (iki alan, gün modunda iki aylık panel, üzerine\n * gelince önizleme). Alan yazılabilir (biçim `format`, ayraçlar esnek);\n * takvim Calendar ile ortak (APG date grid). Bağımlılık yok.\n *\n * Erişilebilirlik: alan(lar) `aria-haspopup=\"dialog\"` + `aria-expanded`;\n * fareyle açılınca odak alanda kalır, ↓ odağı takvime (ya da saat\n * sütununa) taşır; Escape kapatır ve alana döner; Enter yazılanı uygular.\n * Panel `role=\"dialog\"`, adı işlevi (\"Tarih aralığı seç\").\n */\nexport function DatePicker(outerProps: DatePickerProps) {\n const props = useFieldControl(outerProps) as DatePickerProps;\n const {\n allowClear = true,\n clearLabel = \"Temizle\",\n disabled = false,\n size = \"md\",\n variant = \"outline\",\n shape = \"default\",\n color,\n placement = \"bottom-start\",\n id,\n name,\n required,\n className,\n skeleton = false,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n } = props;\n const state = usePickerState(props);\n const anchorRef = useRef<HTMLDivElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const inputs = useRef<(HTMLInputElement | null)[]>([]);\n const panelId = useId();\n const [focusPanel, setFocusPanel] = useState(false);\n const coords = useFloatingPosition(state.open, anchorRef, panelRef, { placement, gap: GAP_PX });\n usePickerDismiss(state, anchorRef, panelRef, inputs, () => setFocusPanel(false));\n\n // Genişlik iskeletle ORTAK — yüklenince kutu kaymasın.\n const geometry = cn(\"flex w-full items-center gap-2\", sizeClass[size], getShapeClasses(shape, variant), boxWidthClass(state));\n if (skeleton) return <div {...skeletonBoxProps(cn(geometry, className))} />;\n\n const rangeProps = props as DatePickerRangeProps;\n const basePlaceholder = formatPlaceholder(state.format);\n const placeholders: [string, string] = state.range ? (rangeProps.placeholder ?? [basePlaceholder, basePlaceholder]) : [(props.placeholder as string | undefined) ?? basePlaceholder, \"\"];\n const rangeLabels = rangeProps.rangeLabels ?? [\"Başlangıç\", \"Bitiş\"];\n const hasValue = state.values.some((v) => v !== null);\n const Icon = state.mode === \"time\" ? ClockIcon : CalendarIcon;\n\n /** Odak bileşenin (alanlar + panel) dışına çıkınca: yazılanı uygula, kapat. */\n const onFocusOut = (e: React.FocusEvent) => {\n const to = e.relatedTarget as Node | null;\n if (anchorRef.current?.contains(to) || panelRef.current?.contains(to)) return;\n state.commitText(state.slot);\n state.close();\n setFocusPanel(false);\n };\n\n const slotInput = (slot: 0 | 1) => (\n <SlotInput\n state={state}\n slot={slot}\n id={slot === 0 ? id : undefined}\n label={state.range ? rangeLabels[slot] : ariaLabel}\n labelledBy={state.range ? undefined : ariaLabelledBy}\n describedBy={ariaDescribedBy}\n placeholder={placeholders[slot]}\n panelId={panelId}\n disabled={disabled}\n required={required}\n invalid={color === \"error\"}\n inputRef={(el) => (inputs.current[slot] = el)}\n onOpenWithFocus={() => {\n setFocusPanel(true);\n state.setOpen(true);\n }}\n />\n );\n\n return (\n <>\n <div\n ref={anchorRef}\n role={state.range ? \"group\" : undefined}\n aria-labelledby={state.range ? ariaLabelledBy : undefined}\n aria-label={state.range ? ariaLabel : undefined}\n onBlur={onFocusOut}\n onMouseDown={(e) => {\n const t = e.target as HTMLElement;\n if (disabled || t.tagName === \"INPUT\" || t.closest(\"button\")) return;\n e.preventDefault();\n inputs.current[state.open ? state.slot : 0]?.focus();\n state.setOpen(!state.open);\n }}\n className={cn(\n geometry,\n \"group relative cursor-text\",\n touchTargetClass[size],\n FIELD_BASE_CLASS,\n getVariantClasses(variant, color),\n disabled && FIELD_DISABLED_CLASS,\n className\n )}\n >\n {slotInput(0)}\n {state.range && (\n <>\n <ArrowRightIcon aria-hidden size={14} className=\"shrink-0 text-mari-muted\" />\n {slotInput(1)}\n </>\n )}\n {allowClear && (\n <ClearButton\n visible={hasValue && !disabled}\n label={clearLabel}\n onClear={() => {\n state.clear();\n inputs.current[0]?.focus();\n }}\n />\n )}\n <Icon aria-hidden size={16} className=\"shrink-0 text-mari-muted\" />\n {name && state.values.map((v, i) => <input key={i} type=\"hidden\" name={name} value={isoValue(v, state.mode)} />)}\n </div>\n {state.open && (\n <PickerPanel\n ref={panelRef}\n id={panelId}\n coords={coords}\n state={state}\n props={props}\n takeFocus={focusPanel}\n onFocusOut={onFocusOut}\n />\n )}\n </>\n );\n}\n","\"use client\";\n\nimport React, { forwardRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@mari-ui/core\";\nimport { Button } from \"../../button\";\nimport { CalendarPanel } from \"../../calendar/_components/CalendarPanel\";\nimport { addMonths, isSameDay, isSameMonth, isSameYear, startOfDay, startOfMonth } from \"../../lib/date\";\nimport { elevationClass } from \"../../lib/elevationClass\";\nimport type { FloatingCoords } from \"../../lib/useFloatingPosition\";\nimport type { DatePickerPreset, DatePickerProps } from \"../types\";\nimport type { PickerState } from \"../usePickerState\";\nimport { rangePosition } from \"../utils\";\nimport { TimePanel } from \"./TimePanel\";\n\ninterface PickerPanelProps {\n id: string;\n coords: FloatingCoords | null;\n state: PickerState;\n props: DatePickerProps;\n /** Klavyeyle (↓) açıldıysa odak panele. */\n takeFocus: boolean;\n onFocusOut: (e: React.FocusEvent) => void;\n}\n\nconst panelLabel = (mode: string, range: boolean) => {\n if (mode === \"time\") return range ? \"Saat aralığı seç\" : \"Saat seç\";\n if (mode === \"datetime\") return range ? \"Tarih ve saat aralığı seç\" : \"Tarih ve saat seç\";\n return range ? \"Tarih aralığı seç\" : \"Tarih seç\";\n};\n\nfunction Presets({ presets, onPick }: Readonly<{ presets: DatePickerPreset<Date | [Date, Date]>[]; onPick: (v: Date | [Date, Date]) => void }>) {\n return (\n <ul aria-label=\"Hazır seçimler\" className=\"flex shrink-0 flex-row flex-wrap gap-1 border-b border-mari-border p-2 sm:w-36 sm:flex-col sm:border-r sm:border-b-0\">\n {presets.map((p, i) => (\n // Hazır seçimler sabit sırada.\n <li key={i}>\n <button\n type=\"button\"\n onClick={() => onPick(typeof p.value === \"function\" ? p.value() : p.value)}\n className=\"w-full rounded-md px-2 py-1 pointer-coarse:py-2.5 text-left text-sm text-mari-foreground outline-none hover:bg-mari-surface-alt focus-visible:outline-2 focus-visible:outline-mari-ring\"\n >\n {p.label}\n </button>\n </li>\n ))}\n </ul>\n );\n}\n\nfunction selectionChecker({ picker, draft, range }: PickerState) {\n return (d: Date) => {\n if (picker === \"month\") return draft.some((v) => isSameMonth(v, d));\n if (picker === \"year\") return draft.some((v) => isSameYear(v, d));\n return !range && isSameDay(draft[0], d);\n };\n}\n\nfunction rangeChecker({ range, picker, draft, slot, hover }: PickerState) {\n if (!range || picker !== \"date\") return undefined;\n return (d: Date) => rangePosition(d, draft[0] ?? null, draft[1] ?? null, slot === 1 && !draft[1] ? hover : null);\n}\n\nfunction Footer({ state, showNow, needsConfirm }: Readonly<{ state: PickerState; showNow: boolean; needsConfirm: boolean }>) {\n if (!showNow && !needsConfirm) return null;\n return (\n <div className=\"flex items-center justify-between gap-2 border-t border-mari-border px-3 py-2\">\n {showNow ? (\n <Button size=\"sm\" variant=\"ghost\" onClick={state.pickNow}>\n {state.mode === \"date\" ? \"Bugün\" : \"Şimdi\"}\n </Button>\n ) : (\n <span />\n )}\n {needsConfirm && (\n <Button size=\"sm\" onClick={state.confirm} disabled={!state.draft[state.slot]}>\n {state.range && state.slot === 0 ? \"Sonraki\" : \"Tamam\"}\n </Button>\n )}\n </div>\n );\n}\n\n/**\n * DatePicker paneli: (hazır seçimler) + takvim(ler) + (saat sütunları) +\n * alt çubuk (Bugün/Şimdi, Tamam). Aralık gün modunda iki ay yan yana.\n * `role=\"dialog\"` (modal değil); fareyle tıklama alanın odağını almaz.\n */\nexport const PickerPanel = forwardRef<HTMLDivElement, PickerPanelProps>(function PickerPanel({ id, coords, state, props, takeFocus, onFocusOut }, ref) {\n const { mode, picker, range, draft, slot } = state;\n const hasDate = mode !== \"time\";\n const hasTime = mode !== \"date\";\n const dual = range && mode === \"date\" && picker === \"date\";\n const current = draft[slot] ?? draft[slot === 0 ? 1 : 0] ?? startOfDay(new Date());\n const [view, setView] = useState(() => startOfMonth(current));\n const seconds = state.format.includes(\"ss\");\n const showNow = props.showNow ?? !range;\n const needsConfirm = hasTime;\n // Panel konumu ölçülene kadar `invisible` — görünmez öğeye odak verilemez, ölçümü bekle.\n const focusNow = takeFocus && coords !== null;\n\n if (typeof document === \"undefined\") return null;\n\n const isSelected = selectionChecker(state);\n const rangeOf = rangeChecker(state);\n\n const calendarCommon = {\n picker,\n isSelected,\n rangeOf,\n isDisabled: state.isDisabled,\n onSelect: state.pickDate,\n onHover: range ? state.setHover : undefined,\n weekStart: props.weekStart,\n locale: props.locale,\n showWeek: props.showWeek,\n };\n\n const presets = props.presets as DatePickerPreset<Date | [Date, Date]>[] | undefined;\n\n return createPortal(\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- yalnız alanın odağını korur / dışarı çıkışı izler\n <div\n ref={ref}\n id={id}\n role=\"dialog\"\n aria-label={panelLabel(mode, range)}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={onFocusOut}\n className={cn(\n \"fixed z-mari-dropdown flex max-h-[calc(100vh-1rem)] max-w-[calc(100vw-1rem)] flex-col overflow-auto rounded-lg bg-mari-surface text-mari-foreground\",\n elevationClass.md,\n !coords && \"invisible\"\n )}\n style={{ top: coords?.top ?? 0, left: coords?.left ?? 0 }}\n >\n <div className=\"flex flex-col sm:flex-row\">\n {presets && presets.length > 0 && (\n <Presets\n presets={presets}\n onPick={(v) => {\n state.commit(Array.isArray(v) ? [...v] : [v]);\n state.close();\n }}\n />\n )}\n {hasDate && (\n <div className=\"flex flex-col gap-4 p-3 sm:flex-row\">\n {dual ? (\n <>\n {/* Dar ekranda tek ay (iki ay alt alta ekrana sığmıyor, alanın üstüne biniyordu); ikinci ay sm+. */}\n <CalendarPanel key=\"l\" {...calendarCommon} initialDate={view} viewDate={view} onViewDateChange={setView} hideNext=\"sm\" takeFocus={focusNow} />\n <div className=\"hidden sm:block\">\n <CalendarPanel key=\"r\" {...calendarCommon} initialDate={addMonths(view, 1)} viewDate={addMonths(view, 1)} onViewDateChange={(d) => setView(addMonths(d, -1))} hidePrev />\n </div>\n </>\n ) : (\n <CalendarPanel key={`s${slot}`} {...calendarCommon} initialDate={current} takeFocus={focusNow} />\n )}\n </div>\n )}\n {hasTime && (\n <div className={cn(\"p-2\", hasDate && \"border-t border-mari-border sm:border-t-0 sm:border-l\")}>\n <TimePanel\n value={current}\n onChange={state.pickTime}\n seconds={seconds}\n hourStep={props.hourStep}\n minuteStep={props.minuteStep}\n secondStep={props.secondStep}\n takeFocus={focusNow && !hasDate}\n />\n </div>\n )}\n </div>\n <Footer state={state} showNow={showNow} needsConfirm={needsConfirm} />\n </div>,\n document.body\n );\n});\n","\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport { ChevronLeftIcon, ChevronRightIcon, ChevronsLeftIcon, ChevronsRightIcon } from \"lucide-react\";\nimport { cn } from \"@mari-ui/core\";\nimport { addMonths, addYears, isSameMonth, isSameYear, monthNames, startOfMonth, type WeekStart } from \"../../lib/date\";\nimport { CellGrid, type GridCell } from \"./CellGrid\";\nimport { DayGrid, type RangePosition } from \"./DayGrid\";\n\nexport type PanelPicker = \"date\" | \"month\" | \"year\";\n\nexport interface CalendarPanelProps {\n /** Hangi düzeyde seçim yapılır. Varsayılan: `date`. */\n picker?: PanelPicker;\n /** Panelin açıldığı gün (seçili değer ya da bugün). */\n initialDate: Date;\n isSelected: (date: Date) => boolean;\n rangeOf?: (date: Date) => RangePosition | null;\n isDisabled: (date: Date) => boolean;\n onSelect: (date: Date) => void;\n onHover?: (date: Date | null) => void;\n weekStart?: WeekStart;\n locale?: string;\n showWeek?: boolean;\n takeFocus?: boolean;\n /** Görünen ay dışarıdan (aralıkta iki panel birlikte kayar). */\n viewDate?: Date;\n onViewDateChange?: (date: Date) => void;\n /**\n * Aralıkta: sol panel yalnız geri, sağ panel yalnız ileri oklarını gösterir.\n * `\"sm\"`: yalnız `sm` ve üstünde gizli (dar ekranda tek panel kalır, oklar gerekir).\n */\n hidePrev?: boolean;\n hideNext?: boolean | \"sm\";\n className?: string;\n}\n\nconst NAV_BUTTON = \"grid size-7 pointer-coarse:size-10 place-items-center rounded-md text-mari-muted outline-none hover:bg-mari-surface-alt hover:text-mari-foreground focus-visible:outline-2 focus-visible:outline-mari-ring\";\nconst TITLE_BUTTON = \"rounded-md px-1.5 py-0.5 pointer-coarse:py-2.5 font-medium outline-none hover:bg-mari-surface-alt hover:text-mari-primary focus-visible:outline-2 focus-visible:outline-mari-ring\";\n\nconst decadeStart = (year: number) => year - (year % 10);\n\nfunction monthCells(year: number, picker: PanelPicker, selected: (d: Date) => boolean, disabled: (d: Date) => boolean, locale?: string): GridCell[] {\n const short = monthNames(locale, \"short\");\n const long = monthNames(locale, \"long\");\n const now = new Date();\n return short.map((name, m) => {\n const first = new Date(year, m, 1);\n const days = new Date(year, m + 1, 0).getDate();\n // Ay seçiminde: ayın tüm günleri devre dışıysa ay da devre dışı.\n const allDisabled = picker === \"month\" && Array.from({ length: days }, (_, i) => new Date(year, m, i + 1)).every(disabled);\n return {\n key: String(m),\n label: name,\n fullLabel: `${long[m]} ${year}`,\n selected: picker === \"month\" ? selected(first) : false,\n current: isSameMonth(first, now),\n disabled: allDisabled,\n };\n });\n}\n\nfunction yearCells(year: number, picker: PanelPicker, selected: (d: Date) => boolean, disabled: (d: Date) => boolean): GridCell[] {\n const start = decadeStart(year) - 1;\n const now = new Date();\n return Array.from({ length: 12 }, (_, i) => {\n const y = start + i;\n const first = new Date(y, 0, 1);\n return {\n key: String(y),\n label: String(y),\n fullLabel: String(y),\n selected: picker === \"year\" ? selected(first) : false,\n current: isSameYear(first, now),\n disabled: picker === \"year\" && disabled(first) && disabled(new Date(y, 11, 31)),\n outside: i === 0 || i === 11,\n };\n });\n}\n\n/**\n * Faz 16.5 — kompakt takvim paneli (DatePicker'ın paneli; ant.design\n * PickerPanel yapısı): «/‹ başlık ›/» gezinmesi; başlıktaki ay/yıl düğmeleri\n * ay ve yıl görünümüne geçer. Görünen dönem `aria-live` ile duyurulur.\n */\nexport function CalendarPanel(props: Readonly<CalendarPanelProps>) {\n const { picker = \"date\", initialDate, isSelected, rangeOf, isDisabled, onSelect, onHover, weekStart = 1, locale, showWeek, takeFocus, hidePrev, hideNext, className } = props;\n const [mode, setMode] = useState<PanelPicker>(picker);\n const [innerView, setInnerView] = useState(() => startOfMonth(initialDate));\n const [focused, setFocused] = useState(initialDate);\n const view = props.viewDate ?? innerView;\n const setView = (d: Date) => {\n const next = startOfMonth(d);\n setInnerView(next);\n props.onViewDateChange?.(next);\n };\n const [focusGrid, setFocusGrid] = useState(!!takeFocus);\n useEffect(() => setMode(picker), [picker]);\n\n const moveFocus = (d: Date) => {\n setFocused(d);\n if (!isSameMonth(d, view)) setView(d);\n };\n\n const long = monthNames(locale, \"long\");\n const year = view.getFullYear();\n\n let title: React.ReactNode;\n let grid: React.ReactNode;\n if (mode === \"date\") {\n title = (\n <>\n <button type=\"button\" className={TITLE_BUTTON} aria-label={`Ay seç, ${long[view.getMonth()]}`} onClick={() => setMode(\"month\")}>\n {long[view.getMonth()]}\n </button>\n <button type=\"button\" className={TITLE_BUTTON} aria-label={`Yıl seç, ${year}`} onClick={() => setMode(\"year\")}>\n {year}\n </button>\n </>\n );\n grid = (\n <DayGrid\n view={view}\n focused={isSameMonth(focused, view) ? focused : view}\n onFocusChange={(d) => {\n setFocusGrid(true);\n moveFocus(d);\n }}\n isSelected={isSelected}\n rangeOf={rangeOf}\n isDisabled={isDisabled}\n onSelect={onSelect}\n onHover={onHover}\n weekStart={weekStart}\n locale={locale}\n showWeek={showWeek}\n label={`${long[view.getMonth()]} ${year}`}\n takeFocus={focusGrid || !!takeFocus}\n />\n );\n } else if (mode === \"month\") {\n const cells = monthCells(year, picker, isSelected, isDisabled, locale);\n title = (\n <button type=\"button\" className={TITLE_BUTTON} aria-label={`Yıl seç, ${year}`} onClick={() => setMode(\"year\")}>\n {year}\n </button>\n );\n grid = (\n <CellGrid\n cells={cells}\n focusedIndex={view.getMonth()}\n label={`${year} ayları`}\n takeFocus\n onFocusIndex={(i) => setView(new Date(year, i, 1))}\n onPage={(d) => setView(addYears(view, d))}\n onSelect={(i) => {\n const d = new Date(year, i, 1);\n if (picker === \"month\") onSelect(d);\n else {\n setView(d);\n setFocused(d);\n setMode(\"date\");\n }\n }}\n />\n );\n } else {\n const cells = yearCells(year, picker, isSelected, isDisabled);\n const start = decadeStart(year);\n title = <span className=\"px-1.5 font-medium\">{`${start}–${start + 9}`}</span>;\n grid = (\n <CellGrid\n cells={cells}\n focusedIndex={year - (start - 1)}\n label={`${start}–${start + 9} yılları`}\n takeFocus\n onFocusIndex={(i) => setView(new Date(start - 1 + i, view.getMonth(), 1))}\n onPage={(d) => setView(addYears(view, d * 10))}\n onSelect={(i) => {\n const d = new Date(start - 1 + i, view.getMonth(), 1);\n if (picker === \"year\") onSelect(d);\n else {\n setView(d);\n setMode(\"month\");\n }\n }}\n />\n );\n }\n\n const shift = (months: number) => {\n const next = mode === \"year\" ? addYears(view, Math.sign(months) * 10) : addMonths(view, months);\n setView(next);\n setFocused(addMonths(focused, next.getFullYear() * 12 + next.getMonth() - (view.getFullYear() * 12 + view.getMonth())));\n };\n\n return (\n <div className={cn(\"w-[17.5rem] max-w-full pointer-coarse:w-[19.25rem]\", className)}>\n <div className=\"mb-2 flex items-center gap-0.5\">\n {!hidePrev && (\n <>\n <button type=\"button\" className={NAV_BUTTON} aria-label={mode === \"year\" ? \"Önceki on yıl\" : \"Önceki yıl\"} onClick={() => shift(-12)}>\n <ChevronsLeftIcon aria-hidden size={16} />\n </button>\n {mode === \"date\" && (\n <button type=\"button\" className={NAV_BUTTON} aria-label=\"Önceki ay\" onClick={() => shift(-1)}>\n <ChevronLeftIcon aria-hidden size={16} />\n </button>\n )}\n </>\n )}\n <div aria-live=\"polite\" className=\"flex flex-1 items-center justify-center gap-0.5 text-sm\">\n {title}\n </div>\n {hideNext !== true && (\n <span className={cn(\"contents\", hideNext === \"sm\" && \"sm:hidden\")}>\n {mode === \"date\" && (\n <button type=\"button\" className={NAV_BUTTON} aria-label=\"Sonraki ay\" onClick={() => shift(1)}>\n <ChevronRightIcon aria-hidden size={16} />\n </button>\n )}\n <button type=\"button\" className={NAV_BUTTON} aria-label={mode === \"year\" ? \"Sonraki on yıl\" : \"Sonraki yıl\"} onClick={() => shift(12)}>\n <ChevronsRightIcon aria-hidden size={16} />\n </button>\n </span>\n )}\n </div>\n {grid}\n </div>\n );\n}\n","import { addDays, compareDay, isBetweenDays, isSameDay, isWithin, startOfDay } from \"../lib/date\";\nimport type { RangePosition } from \"../calendar/_components/DayGrid\";\nimport type { DatePickerMode, DatePickerPicker } from \"./types\";\n\n/** Faz 16.5 — DatePicker'ın saf mantığı. */\n\nexport function defaultFormat(mode: DatePickerMode, picker: DatePickerPicker, seconds = false): string {\n const time = seconds ? \"HH:mm:ss\" : \"HH:mm\";\n if (mode === \"time\") return time;\n if (mode === \"datetime\") return `dd.MM.yyyy ${time}`;\n if (picker === \"month\") return \"MM.yyyy\";\n if (picker === \"year\") return \"yyyy\";\n return \"dd.MM.yyyy\";\n}\n\n/** Yer tutucu: biçimin Türkçe okunuşu (\"gg.aa.yyyy ss:dd\"). */\nconst PLACEHOLDER_TOKENS: Record<string, string> = { yyyy: \"yyyy\", MM: \"aa\", dd: \"gg\", HH: \"ss\", mm: \"dd\", ss: \"sn\" };\nexport function formatPlaceholder(format: string): string {\n return format.replace(/yyyy|MM|dd|HH|mm|ss/g, (t) => PLACEHOLDER_TOKENS[t]!);\n}\n\n/** Gizli form alanı için ISO metin. */\nexport function isoValue(d: Date | null, mode: DatePickerMode): string {\n if (!d) return \"\";\n const p = (n: number) => String(n).padStart(2, \"0\");\n const date = `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`;\n const time = `${p(d.getHours())}:${p(d.getMinutes())}`;\n if (mode === \"time\") return time;\n return mode === \"datetime\" ? `${date}T${time}` : date;\n}\n\n/** Tarihin gününü, saatin saat/dakika/saniyesini birleştirir. */\nexport const mergeDateTime = (date: Date, time: Date) =>\n new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds());\n\nexport function isDayDisabled(d: Date, min?: Date, max?: Date, disabledDate?: (d: Date) => boolean): boolean {\n return !isWithin(d, min, max) || !!disabledDate?.(d);\n}\n\n/** Saat sütunu değerleri: 0..max adımla. */\nexport const columnValues = (max: number, step = 1) => Array.from({ length: Math.ceil((max + 1) / step) }, (_, i) => i * step);\n\n/** Bir değerin sütundaki en yakın adıma yuvarlanmış hali (adım dışı değer listede görünmezdi). */\nexport const snap = (value: number, step = 1) => Math.floor(value / step) * step;\n\n/**\n * Aralık vurgusu: seçili uçlar ve (seçim sürerken) üzerine gelinen gün.\n * `[start, null]` + hover → start..hover önizlemesi.\n */\nexport function rangePosition(d: Date, start: Date | null, end: Date | null, hover: Date | null): RangePosition | null {\n const b = end ?? (start ? (hover ?? start) : null);\n const a = start ?? b;\n if (!a || !b) return null;\n const [lo, hi] = compareDay(a, b) <= 0 ? [a, b] : [b, a];\n if (isSameDay(lo, hi)) return isSameDay(d, lo) ? \"single\" : null;\n if (isSameDay(d, lo)) return \"start\";\n if (isSameDay(d, hi)) return \"end\";\n return isBetweenDays(d, lo, hi) ? \"middle\" : null;\n}\n\n/** Aralığı sıraya koyar (bitiş başlangıçtan önceyse yer değiştirir). */\nexport function orderRange(a: Date | null, b: Date | null): [Date | null, Date | null] {\n if (a && b && a.getTime() > b.getTime()) return [b, a];\n return [a, b];\n}\n\n/** Hazır aralık örnekleri için yardımcı: son N gün (bugün dahil). */\nexport const lastDays = (n: number): [Date, Date] => {\n const today = startOfDay(new Date());\n return [addDays(today, -(n - 1)), today];\n};\n","\"use client\";\n\nimport React, { useEffect, useRef } from \"react\";\nimport { cn } from \"@mari-ui/core\";\nimport { columnValues, snap } from \"../utils\";\n\ninterface ColumnProps {\n label: string;\n values: number[];\n value: number;\n onChange: (v: number) => void;\n takeFocus?: boolean;\n}\n\nconst pad = (n: number) => String(n).padStart(2, \"0\");\n\n/**\n * Tek sütun (saat, dakika ya da saniye): APG listbox, seçim odağı izler\n * (↑/↓, Home/End, PageUp/Down 5'er). Seçili değer sütunun en üstüne kayar\n * (ant.design gibi).\n */\nfunction Column({ label, values, value, onChange, takeFocus }: Readonly<ColumnProps>) {\n const listRef = useRef<HTMLDivElement>(null);\n const navigating = useRef(false);\n const index = Math.max(0, values.indexOf(value));\n useEffect(() => {\n const list = listRef.current;\n const option = list?.children[index] as HTMLElement | undefined;\n if (!list || !option) return;\n list.scrollTo?.({ top: option.offsetTop - list.offsetTop, behavior: \"smooth\" });\n if (navigating.current || takeFocus) option.focus({ preventScroll: true });\n navigating.current = false;\n }, [index, takeFocus]);\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n const map: Record<string, number> = { ArrowDown: 1, ArrowUp: -1, PageDown: 5, PageUp: -5 };\n let next: number | null = null;\n if (e.key in map) next = Math.min(values.length - 1, Math.max(0, index + map[e.key]!));\n else if (e.key === \"Home\") next = 0;\n else if (e.key === \"End\") next = values.length - 1;\n if (next === null) return;\n e.preventDefault();\n navigating.current = true;\n onChange(values[next]!);\n };\n\n return (\n <div\n ref={listRef}\n role=\"listbox\"\n aria-label={label}\n className=\"relative h-56 w-14 pointer-coarse:w-16 snap-y overflow-y-auto overscroll-contain border-l border-mari-border py-1 first:border-l-0 [scrollbar-width:thin]\"\n >\n {values.map((v, i) => (\n <div\n key={v}\n role=\"option\"\n tabIndex={i === index ? 0 : -1}\n aria-selected={i === index}\n onKeyDown={onKeyDown}\n onClick={() => onChange(v)}\n className={cn(\n \"mx-1 flex h-7 pointer-coarse:h-11 cursor-pointer snap-start items-center justify-center rounded-md text-sm tabular-nums outline-none\",\n \"focus-visible:outline-2 focus-visible:outline-mari-ring\",\n i === index ? \"bg-mari-primary-subtle font-medium text-mari-primary\" : \"hover:bg-mari-surface-alt\"\n )}\n >\n {pad(v)}\n </div>\n ))}\n {/* Son değer de en üste kayabilsin. */}\n <div aria-hidden className=\"h-48 pointer-coarse:h-[19rem]\" />\n </div>\n );\n}\n\nexport interface TimePanelProps {\n value: Date;\n onChange: (date: Date) => void;\n seconds: boolean;\n hourStep?: number;\n minuteStep?: number;\n secondStep?: number;\n takeFocus?: boolean;\n}\n\n/** Saat / dakika / (saniye) sütunları. Her sütun ayrı sekme durağı. */\nexport function TimePanel({ value, onChange, seconds, hourStep = 1, minuteStep = 1, secondStep = 1, takeFocus }: Readonly<TimePanelProps>) {\n const set = (h: number, m: number, s: number) => {\n const d = new Date(value);\n d.setHours(h, m, s, 0);\n onChange(d);\n };\n const h = snap(value.getHours(), hourStep);\n const m = snap(value.getMinutes(), minuteStep);\n const s = snap(value.getSeconds(), secondStep);\n return (\n <div className=\"flex\" role=\"group\" aria-label=\"Saat seçimi\">\n <Column label=\"Saat\" values={columnValues(23, hourStep)} value={h} onChange={(v) => set(v, m, s)} takeFocus={takeFocus} />\n <Column label=\"Dakika\" values={columnValues(59, minuteStep)} value={m} onChange={(v) => set(h, v, s)} />\n {seconds && <Column label=\"Saniye\" values={columnValues(59, secondStep)} value={s} onChange={(v) => set(h, m, v)} />}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useControllableState } from \"@mari-ui/core\";\nimport { formatDate, parseDate, startOfDay } from \"../lib/date\";\nimport type { DatePickerProps, DatePickerRangeProps, DatePickerSingleProps, DateRangeValue } from \"./types\";\nimport { defaultFormat, isDayDisabled, mergeDateTime, orderRange } from \"./utils\";\n\ntype Slot = 0 | 1;\ntype Values = (Date | null)[];\n\nconst toValues = (v: Date | null | DateRangeValue | undefined, range: boolean): Values | undefined => {\n if (v === undefined) return undefined;\n if (range) return v ? [...(v as DateRangeValue)] : [null, null];\n return [v as Date | null];\n};\n\n/**\n * DatePicker durumu. `values` kesin değer (onChange'e giden); panel açıkken\n * düzenlemeler `draft`a yazılır ve ancak kesinleşince (gün seçimi, \"Tamam\",\n * Enter, alan dışına çıkış) `values` olur. Escape/dışarı tıklama taslağı atar.\n * Her yuvanın (aralıkta 2) kendi metni var — yazılan geçerli metin taslağa geçer.\n */\nexport function usePickerState(props: DatePickerProps) {\n const range = props.range === true;\n const mode = props.mode ?? \"date\";\n const picker = mode === \"date\" ? (props.picker ?? \"date\") : \"date\";\n const format = props.format ?? defaultFormat(mode, picker);\n const locale = props.locale;\n const fmt = (d: Date | null) => (d ? formatDate(d, format, locale) : \"\");\n\n const [values, setValuesState] = useControllableState<Values>({\n value: toValues(props.value, range),\n defaultValue: toValues(props.defaultValue, range) ?? (range ? [null, null] : [null]),\n });\n const [open, setOpenState] = useControllableState<boolean>({ value: props.open, defaultValue: false, onChange: props.onOpenChange });\n const [draft, setDraft] = useState<Values>(values);\n const [texts, setTexts] = useState<string[]>(() => values.map(fmt));\n const [slot, setSlot] = useState<Slot>(0);\n const [hover, setHover] = useState<Date | null>(null);\n\n // Değer dışarıdan değişince (kontrollü) metinler eşitlensin — panel kapalıyken.\n const valuesKey = values.map((v) => v?.getTime() ?? \"\").join(\"|\");\n const [syncedKey, setSyncedKey] = useState(valuesKey);\n if (valuesKey !== syncedKey) {\n setSyncedKey(valuesKey);\n setTexts(values.map(fmt));\n if (!open) setDraft(values);\n }\n\n const isDisabled = (d: Date) => isDayDisabled(d, props.minDate, props.maxDate, props.disabledDate);\n\n const commit = (next: Values) => {\n const ordered = range ? orderRange(next[0] ?? null, next[1] ?? null) : next;\n setValuesState(ordered);\n setDraft(ordered);\n setTexts(ordered.map(fmt));\n if (range) (props as DatePickerRangeProps).onChange?.(ordered.every((v) => v === null) ? null : (ordered as DateRangeValue), [fmt(ordered[0]!), fmt(ordered[1]!)]);\n else (props as DatePickerSingleProps).onChange?.(ordered[0] ?? null, fmt(ordered[0] ?? null));\n };\n\n const setOpen = (next: boolean) => {\n if (next === open) return;\n if (next) setDraft(values);\n else {\n setHover(null);\n setTexts(values.map(fmt));\n }\n setOpenState(next);\n };\n\n const close = () => setOpen(false);\n\n /** Taslağın bir yuvasını değiştirir; metin de taslağı gösterir. */\n const setDraftSlot = (s: Slot, d: Date | null, fromText = false) => {\n const next = [...draft];\n next[s] = d;\n setDraft(next);\n if (!fromText) setTexts((t) => t.map((x, i) => (i === s ? fmt(d) : x)));\n return next;\n };\n\n /** Aralıkta bir yuva tamamlanınca: başlangıçtan sonra bitişe geç; bitişte (ikisi doluysa) kesinleştir. */\n const advance = (next: Values) => {\n if (range && slot === 0) {\n setSlot(1);\n // Yeni başlangıç eski bitişten sonraysa bitiş yeniden seçilsin.\n if (next[1] && next[0] && next[0].getTime() > next[1].getTime()) {\n setDraft([next[0], null]);\n setTexts((t) => [t[0] ?? \"\", \"\"]);\n }\n return;\n }\n if (range && !next[0]) {\n setSlot(0);\n return;\n }\n commit(next);\n close();\n };\n\n /** Takvimden gün/ay/yıl seçimi. Gün modunda hemen ilerler; saatli modda \"Tamam\" bekler. */\n const pickDate = (d: Date) => {\n if (mode === \"datetime\") {\n const base = draft[slot] ?? startOfDay(new Date());\n setDraftSlot(slot, mergeDateTime(d, base));\n return;\n }\n advance(setDraftSlot(slot, d));\n };\n\n const pickTime = (t: Date) => {\n const base = draft[slot] ?? startOfDay(new Date());\n setDraftSlot(slot, mode === \"time\" ? mergeDateTime(startOfDay(new Date()), t) : mergeDateTime(base, t));\n };\n\n const confirm = () => advance(draft);\n\n const pickNow = () => {\n const now = mode === \"date\" ? startOfDay(new Date()) : new Date();\n advance(setDraftSlot(slot, now));\n };\n\n /** Yazılan metin: geçerliyse taslağa (takvim de oraya gider). */\n const typeText = (s: Slot, text: string) => {\n setTexts((t) => t.map((x, i) => (i === s ? text : x)));\n const parsed = text.trim() ? parseDate(text, format, draft[s] ?? startOfDay(new Date())) : null;\n if (parsed && !isDisabled(parsed)) setDraftSlot(s, parsed, true);\n };\n\n /** Enter ya da alan dışı: yazılan geçerliyse kesinleştir, boşsa temizle, geçersizse geri al. */\n const commitText = (s: Slot) => {\n const text = texts[s] ?? \"\";\n if (!text.trim()) {\n const next = [...values];\n next[s] = null;\n if (values[s] !== null) commit(next);\n return;\n }\n const parsed = parseDate(text, format, values[s] ?? startOfDay(new Date()));\n if (!parsed || isDisabled(parsed)) {\n setTexts(values.map(fmt));\n return;\n }\n const next = [...values];\n next[s] = parsed;\n if (fmt(parsed) !== fmt(values[s] ?? null)) commit(next);\n else setTexts(values.map(fmt));\n };\n\n return {\n range,\n mode,\n picker,\n format,\n open,\n setOpen,\n close,\n values,\n draft,\n texts,\n slot,\n setSlot,\n hover,\n setHover,\n isDisabled,\n commit,\n pickDate,\n pickTime,\n pickNow,\n confirm,\n typeText,\n commitText,\n clear: () => commit(range ? [null, null] : [null]),\n };\n}\n\nexport type PickerState = ReturnType<typeof usePickerState>;\n","\"use client\";\n\nimport { DatePicker } from \"./DatePicker\";\nimport type { DatePickerProps, TimePickerProps } from \"./types\";\n\nexport type { TimePickerProps };\n\n/**\n * Faz 16.5 — TimePicker, DatePicker'ın saat modudur (16.0 kararı: tek motor,\n * iki isim). `range` ile saat aralığı (ör. çalışma saatleri).\n */\nexport function TimePicker(props: TimePickerProps) {\n return <DatePicker {...(props as DatePickerProps)} mode=\"time\" />;\n}\n"],"mappings":"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","names":["useEffect","useRef","useState","cn","useState","cn","useEffect","cn","jsx","jsxs","useEffect","cn","h","m","s","Fragment","jsx","jsxs","PickerPanel","useState","cn","useState","useState","next","Fragment","jsx","jsxs","cn","useRef","useEffect","useState","jsx"]}
|
|
1
|
+
{"version":3,"sources":["../src/date-picker/DatePicker.tsx","../src/date-picker/_components/PickerPanel.tsx","../src/calendar/_components/CalendarPanel.tsx","../src/date-picker/utils.ts","../src/date-picker/_components/TimePanel.tsx","../src/date-picker/usePickerState.ts","../src/date-picker/TimePicker.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useId, useRef, useState } from \"react\";\nimport { ArrowRightIcon, CalendarIcon, ClockIcon } from \"lucide-react\";\nimport { cn } from \"@mari-ui/core\";\nimport { ClearButton } from \"../input/_components/FieldAdornments\";\nimport { FIELD_BASE_CLASS, FIELD_DISABLED_CLASS, FIELD_MOBILE_TEXT_CLASS, getShapeClasses, getVariantClasses } from \"../input/utils\";\nimport { useFieldControl } from \"../lib/fieldContext\";\nimport { skeletonBoxProps } from \"../lib/skeleton\";\nimport { sizeClass, touchTargetClass } from \"../lib/sizeClasses\";\nimport { useFloatingPosition } from \"../lib/useFloatingPosition\";\nimport { PickerPanel } from \"./_components/PickerPanel\";\nimport type { DatePickerProps, DatePickerRangeProps } from \"./types\";\nimport { usePickerState, type PickerState } from \"./usePickerState\";\nimport { formatPlaceholder, isoValue } from \"./utils\";\n\nexport type { DatePickerProps };\n\nconst GAP_PX = 4;\n\ninterface SlotInputProps {\n state: PickerState;\n slot: 0 | 1;\n id?: string;\n label?: string;\n labelledBy?: string;\n describedBy?: string;\n placeholder: string;\n panelId: string;\n disabled: boolean;\n required?: boolean;\n invalid?: boolean;\n inputRef: (el: HTMLInputElement | null) => void;\n onOpenWithFocus: () => void;\n}\n\n/** Yazılabilir alan (her yuva için). Panel açıkken odak burada kalır; ↓ odağı panele taşır. */\nfunction SlotInput({ state, slot, id, label, labelledBy, describedBy, placeholder, panelId, disabled, required, invalid, inputRef, onOpenWithFocus }: Readonly<SlotInputProps>) {\n const active = state.open && state.slot === slot;\n return (\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n // APG \"Date Picker Combobox\": yazılabilir alan + açılır dialog.\n role=\"combobox\"\n inputMode={state.mode === \"time\" ? \"numeric\" : \"text\"}\n autoComplete=\"off\"\n aria-label={label}\n aria-labelledby={labelledBy}\n aria-describedby={describedBy}\n aria-haspopup=\"dialog\"\n aria-expanded={state.open}\n aria-controls={state.open ? panelId : undefined}\n aria-required={required || undefined}\n aria-invalid={invalid || undefined}\n disabled={disabled}\n placeholder={placeholder}\n value={state.texts[slot] ?? \"\"}\n onChange={(e) => {\n state.setSlot(slot);\n state.typeText(slot, e.target.value);\n state.setOpen(true);\n }}\n onFocus={() => state.open && state.setSlot(slot)}\n onClick={() => {\n state.setSlot(slot);\n state.setOpen(true);\n }}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\" || (e.key === \"ArrowDown\" && e.altKey)) {\n e.preventDefault();\n state.setSlot(slot);\n onOpenWithFocus();\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n state.commitText(slot);\n state.close();\n } else if (e.key === \"Escape\" && state.open) {\n e.preventDefault();\n e.stopPropagation();\n state.close();\n }\n }}\n className={cn(\n \"w-full min-w-0 flex-1 bg-transparent tabular-nums placeholder:text-mari-muted focus:outline-none disabled:cursor-not-allowed\",\n FIELD_MOBILE_TEXT_CLASS,\n state.range && \"border-b-2 border-transparent\",\n active && state.range && \"border-mari-primary\"\n )}\n />\n );\n}\n\n/** Değerin sığacağı genişlik: tek alan / aralık, tarih-saatte daha geniş. */\nfunction boxWidthClass({ range, mode }: PickerState): string {\n if (mode === \"datetime\") return range ? \"max-w-[26rem]\" : \"max-w-60\";\n return range ? \"max-w-80\" : \"max-w-52\";\n}\n\ntype ElRef<T> = React.RefObject<T | null>;\n\n/**\n * Dışarı tıklama taslağı atıp kapatır; paneldeyken Escape kapatıp alana\n * döner; seçimle kapanınca odak body'ye düştüyse alana geri verilir.\n */\nfunction usePickerDismiss(state: PickerState, anchorRef: ElRef<HTMLDivElement>, panelRef: ElRef<HTMLDivElement>, inputs: ElRef<(HTMLInputElement | null)[]>, resetFocusPanel: () => void) {\n const { open, slot, close } = state;\n const closeRef = useRef(close);\n closeRef.current = close;\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (e: PointerEvent) => {\n const t = e.target as Node;\n if (anchorRef.current?.contains(t) || panelRef.current?.contains(t)) return;\n closeRef.current();\n resetFocusPanel();\n };\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\" || !panelRef.current?.contains(document.activeElement)) return;\n e.preventDefault();\n closeRef.current();\n resetFocusPanel();\n inputs.current?.[slot]?.focus();\n };\n document.addEventListener(\"pointerdown\", onPointerDown);\n // Yakalama aşaması: Modal'ın (belge düzeyi) Escape dinleyicisinden ÖNCE işlenip `preventDefault` ile işaretlenir.\n document.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n document.removeEventListener(\"pointerdown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown, true);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- refler kararlı\n }, [open, slot]);\n\n const wasOpen = useRef(open);\n useEffect(() => {\n if (wasOpen.current && !open && document.activeElement === document.body) inputs.current?.[slot]?.focus();\n if (!open) resetFocusPanel();\n wasOpen.current = open;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, slot]);\n}\n\n/*\n * yapı ant.design DatePicker/RangePicker/TimePicker'dan; 16.0\n * kararıyla tek motor: `mode=\"date\" | \"time\" | \"datetime\"`, `picker`\n * (gün/ay/yıl), `range` (iki alan, gün modunda iki aylık panel, üzerine\n * gelince önizleme). Alan yazılabilir (biçim `format`, ayraçlar esnek);\n * takvim Calendar ile ortak (APG date grid). Bağımlılık yok.\n */\n/**\n * Erişilebilirlik: alan(lar) `aria-haspopup=\"dialog\"` + `aria-expanded`;\n * fareyle açılınca odak alanda kalır, ↓ odağı takvime (ya da saat\n * sütununa) taşır; Escape kapatır ve alana döner; Enter yazılanı uygular.\n * Panel `role=\"dialog\"`, adı işlevi (\"Tarih aralığı seç\").\n */\nexport function DatePicker(outerProps: DatePickerProps) {\n const props = useFieldControl(outerProps) as DatePickerProps;\n const {\n allowClear = true,\n clearLabel = \"Temizle\",\n disabled = false,\n size = \"md\",\n variant = \"outline\",\n shape = \"default\",\n color,\n placement = \"bottom-start\",\n id,\n name,\n required,\n className,\n skeleton = false,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n } = props;\n const state = usePickerState(props);\n const anchorRef = useRef<HTMLDivElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const inputs = useRef<(HTMLInputElement | null)[]>([]);\n const panelId = useId();\n const [focusPanel, setFocusPanel] = useState(false);\n const coords = useFloatingPosition(state.open, anchorRef, panelRef, { placement, gap: GAP_PX });\n usePickerDismiss(state, anchorRef, panelRef, inputs, () => setFocusPanel(false));\n\n // Genişlik iskeletle ORTAK — yüklenince kutu kaymasın.\n const geometry = cn(\"flex w-full items-center gap-2\", sizeClass[size], getShapeClasses(shape, variant), boxWidthClass(state));\n if (skeleton) return <div {...skeletonBoxProps(cn(geometry, className))} />;\n\n const rangeProps = props as DatePickerRangeProps;\n const basePlaceholder = formatPlaceholder(state.format);\n const placeholders: [string, string] = state.range ? (rangeProps.placeholder ?? [basePlaceholder, basePlaceholder]) : [(props.placeholder as string | undefined) ?? basePlaceholder, \"\"];\n const rangeLabels = rangeProps.rangeLabels ?? [\"Başlangıç\", \"Bitiş\"];\n const hasValue = state.values.some((v) => v !== null);\n const Icon = state.mode === \"time\" ? ClockIcon : CalendarIcon;\n\n /** Odak bileşenin (alanlar + panel) dışına çıkınca: yazılanı uygula, kapat. */\n const onFocusOut = (e: React.FocusEvent) => {\n const to = e.relatedTarget as Node | null;\n if (anchorRef.current?.contains(to) || panelRef.current?.contains(to)) return;\n state.commitText(state.slot);\n state.close();\n setFocusPanel(false);\n };\n\n const slotInput = (slot: 0 | 1) => (\n <SlotInput\n state={state}\n slot={slot}\n id={slot === 0 ? id : undefined}\n label={state.range ? rangeLabels[slot] : ariaLabel}\n labelledBy={state.range ? undefined : ariaLabelledBy}\n describedBy={ariaDescribedBy}\n placeholder={placeholders[slot]}\n panelId={panelId}\n disabled={disabled}\n required={required}\n invalid={color === \"error\"}\n inputRef={(el) => (inputs.current[slot] = el)}\n onOpenWithFocus={() => {\n setFocusPanel(true);\n state.setOpen(true);\n }}\n />\n );\n\n return (\n <>\n <div\n ref={anchorRef}\n role={state.range ? \"group\" : undefined}\n aria-labelledby={state.range ? ariaLabelledBy : undefined}\n aria-label={state.range ? ariaLabel : undefined}\n onBlur={onFocusOut}\n onMouseDown={(e) => {\n const t = e.target as HTMLElement;\n if (disabled || t.tagName === \"INPUT\" || t.closest(\"button\")) return;\n e.preventDefault();\n inputs.current[state.open ? state.slot : 0]?.focus();\n state.setOpen(!state.open);\n }}\n className={cn(\n geometry,\n \"group relative cursor-text\",\n touchTargetClass[size],\n FIELD_BASE_CLASS,\n getVariantClasses(variant, color),\n disabled && FIELD_DISABLED_CLASS,\n className\n )}\n >\n {slotInput(0)}\n {state.range && (\n <>\n <ArrowRightIcon aria-hidden size={14} className=\"shrink-0 text-mari-muted\" />\n {slotInput(1)}\n </>\n )}\n {allowClear && (\n <ClearButton\n visible={hasValue && !disabled}\n label={clearLabel}\n onClear={() => {\n state.clear();\n inputs.current[0]?.focus();\n }}\n />\n )}\n <Icon aria-hidden size={16} className=\"shrink-0 text-mari-muted\" />\n {name && state.values.map((v, i) => <input key={i} type=\"hidden\" name={name} value={isoValue(v, state.mode)} />)}\n </div>\n {state.open && (\n <PickerPanel\n ref={panelRef}\n id={panelId}\n coords={coords}\n state={state}\n props={props}\n takeFocus={focusPanel}\n onFocusOut={onFocusOut}\n />\n )}\n </>\n );\n}\n","\"use client\";\n\nimport React, { forwardRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@mari-ui/core\";\nimport { Button } from \"../../button\";\nimport { CalendarPanel } from \"../../calendar/_components/CalendarPanel\";\nimport { addMonths, isSameDay, isSameMonth, isSameYear, startOfDay, startOfMonth } from \"../../lib/date\";\nimport { elevationClass } from \"../../lib/elevationClass\";\nimport type { FloatingCoords } from \"../../lib/useFloatingPosition\";\nimport type { DatePickerPreset, DatePickerProps } from \"../types\";\nimport type { PickerState } from \"../usePickerState\";\nimport { rangePosition } from \"../utils\";\nimport { TimePanel } from \"./TimePanel\";\n\ninterface PickerPanelProps {\n id: string;\n coords: FloatingCoords | null;\n state: PickerState;\n props: DatePickerProps;\n /** Klavyeyle (↓) açıldıysa odak panele. */\n takeFocus: boolean;\n onFocusOut: (e: React.FocusEvent) => void;\n}\n\nconst panelLabel = (mode: string, range: boolean) => {\n if (mode === \"time\") return range ? \"Saat aralığı seç\" : \"Saat seç\";\n if (mode === \"datetime\") return range ? \"Tarih ve saat aralığı seç\" : \"Tarih ve saat seç\";\n return range ? \"Tarih aralığı seç\" : \"Tarih seç\";\n};\n\nfunction Presets({ presets, onPick }: Readonly<{ presets: DatePickerPreset<Date | [Date, Date]>[]; onPick: (v: Date | [Date, Date]) => void }>) {\n return (\n <ul aria-label=\"Hazır seçimler\" className=\"flex shrink-0 flex-row flex-wrap gap-1 border-b border-mari-border p-2 sm:w-36 sm:flex-col sm:border-r sm:border-b-0\">\n {presets.map((p, i) => (\n // Hazır seçimler sabit sırada.\n <li key={i}>\n <button\n type=\"button\"\n onClick={() => onPick(typeof p.value === \"function\" ? p.value() : p.value)}\n className=\"w-full rounded-md px-2 py-1 pointer-coarse:py-2.5 text-left text-sm text-mari-foreground outline-none hover:bg-mari-surface-alt focus-visible:outline-2 focus-visible:outline-mari-ring\"\n >\n {p.label}\n </button>\n </li>\n ))}\n </ul>\n );\n}\n\nfunction selectionChecker({ picker, draft, range }: PickerState) {\n return (d: Date) => {\n if (picker === \"month\") return draft.some((v) => isSameMonth(v, d));\n if (picker === \"year\") return draft.some((v) => isSameYear(v, d));\n return !range && isSameDay(draft[0], d);\n };\n}\n\nfunction rangeChecker({ range, picker, draft, slot, hover }: PickerState) {\n if (!range || picker !== \"date\") return undefined;\n return (d: Date) => rangePosition(d, draft[0] ?? null, draft[1] ?? null, slot === 1 && !draft[1] ? hover : null);\n}\n\nfunction Footer({ state, showNow, needsConfirm }: Readonly<{ state: PickerState; showNow: boolean; needsConfirm: boolean }>) {\n if (!showNow && !needsConfirm) return null;\n return (\n <div className=\"flex items-center justify-between gap-2 border-t border-mari-border px-3 py-2\">\n {showNow ? (\n <Button size=\"sm\" variant=\"ghost\" onClick={state.pickNow}>\n {state.mode === \"date\" ? \"Bugün\" : \"Şimdi\"}\n </Button>\n ) : (\n <span />\n )}\n {needsConfirm && (\n <Button size=\"sm\" onClick={state.confirm} disabled={!state.draft[state.slot]}>\n {state.range && state.slot === 0 ? \"Sonraki\" : \"Tamam\"}\n </Button>\n )}\n </div>\n );\n}\n\n/**\n * DatePicker paneli: (hazır seçimler) + takvim(ler) + (saat sütunları) +\n * alt çubuk (Bugün/Şimdi, Tamam). Aralık gün modunda iki ay yan yana.\n * `role=\"dialog\"` (modal değil); fareyle tıklama alanın odağını almaz.\n */\nexport const PickerPanel = forwardRef<HTMLDivElement, PickerPanelProps>(function PickerPanel({ id, coords, state, props, takeFocus, onFocusOut }, ref) {\n const { mode, picker, range, draft, slot } = state;\n const hasDate = mode !== \"time\";\n const hasTime = mode !== \"date\";\n const dual = range && mode === \"date\" && picker === \"date\";\n const current = draft[slot] ?? draft[slot === 0 ? 1 : 0] ?? startOfDay(new Date());\n const [view, setView] = useState(() => startOfMonth(current));\n const seconds = state.format.includes(\"ss\");\n const showNow = props.showNow ?? !range;\n const needsConfirm = hasTime;\n // Panel konumu ölçülene kadar `invisible` — görünmez öğeye odak verilemez, ölçümü bekle.\n const focusNow = takeFocus && coords !== null;\n\n if (typeof document === \"undefined\") return null;\n\n const isSelected = selectionChecker(state);\n const rangeOf = rangeChecker(state);\n\n const calendarCommon = {\n picker,\n isSelected,\n rangeOf,\n isDisabled: state.isDisabled,\n onSelect: state.pickDate,\n onHover: range ? state.setHover : undefined,\n weekStart: props.weekStart,\n locale: props.locale,\n showWeek: props.showWeek,\n };\n\n const presets = props.presets as DatePickerPreset<Date | [Date, Date]>[] | undefined;\n\n return createPortal(\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- yalnız alanın odağını korur / dışarı çıkışı izler\n <div\n ref={ref}\n id={id}\n role=\"dialog\"\n aria-label={panelLabel(mode, range)}\n onMouseDown={(e) => e.preventDefault()}\n onBlur={onFocusOut}\n className={cn(\n \"fixed z-mari-dropdown flex max-h-[calc(100vh-1rem)] max-w-[calc(100vw-1rem)] flex-col overflow-auto rounded-lg bg-mari-surface text-mari-foreground\",\n elevationClass.md,\n !coords && \"invisible\"\n )}\n style={{ top: coords?.top ?? 0, left: coords?.left ?? 0 }}\n >\n <div className=\"flex flex-col sm:flex-row\">\n {presets && presets.length > 0 && (\n <Presets\n presets={presets}\n onPick={(v) => {\n state.commit(Array.isArray(v) ? [...v] : [v]);\n state.close();\n }}\n />\n )}\n {hasDate && (\n <div className=\"flex flex-col gap-4 p-3 sm:flex-row\">\n {dual ? (\n <>\n {/* Dar ekranda tek ay (iki ay alt alta ekrana sığmıyor, alanın üstüne biniyordu); ikinci ay sm+. */}\n <CalendarPanel key=\"l\" {...calendarCommon} initialDate={view} viewDate={view} onViewDateChange={setView} hideNext=\"sm\" takeFocus={focusNow} />\n <div className=\"hidden sm:block\">\n <CalendarPanel key=\"r\" {...calendarCommon} initialDate={addMonths(view, 1)} viewDate={addMonths(view, 1)} onViewDateChange={(d) => setView(addMonths(d, -1))} hidePrev />\n </div>\n </>\n ) : (\n <CalendarPanel key={`s${slot}`} {...calendarCommon} initialDate={current} takeFocus={focusNow} />\n )}\n </div>\n )}\n {hasTime && (\n <div className={cn(\"p-2\", hasDate && \"border-t border-mari-border sm:border-t-0 sm:border-l\")}>\n <TimePanel\n value={current}\n onChange={state.pickTime}\n seconds={seconds}\n hourStep={props.hourStep}\n minuteStep={props.minuteStep}\n secondStep={props.secondStep}\n takeFocus={focusNow && !hasDate}\n />\n </div>\n )}\n </div>\n <Footer state={state} showNow={showNow} needsConfirm={needsConfirm} />\n </div>,\n document.body\n );\n});\n","\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport { ChevronLeftIcon, ChevronRightIcon, ChevronsLeftIcon, ChevronsRightIcon } from \"lucide-react\";\nimport { cn } from \"@mari-ui/core\";\nimport { addMonths, addYears, isSameMonth, isSameYear, monthNames, startOfMonth, type WeekStart } from \"../../lib/date\";\nimport { CellGrid, type GridCell } from \"./CellGrid\";\nimport { DayGrid, type RangePosition } from \"./DayGrid\";\n\nexport type PanelPicker = \"date\" | \"month\" | \"year\";\n\nexport interface CalendarPanelProps {\n /** Hangi düzeyde seçim yapılır. Varsayılan: `date`. */\n picker?: PanelPicker;\n /** Panelin açıldığı gün (seçili değer ya da bugün). */\n initialDate: Date;\n isSelected: (date: Date) => boolean;\n rangeOf?: (date: Date) => RangePosition | null;\n isDisabled: (date: Date) => boolean;\n onSelect: (date: Date) => void;\n onHover?: (date: Date | null) => void;\n weekStart?: WeekStart;\n locale?: string;\n showWeek?: boolean;\n takeFocus?: boolean;\n /** Görünen ay dışarıdan (aralıkta iki panel birlikte kayar). */\n viewDate?: Date;\n onViewDateChange?: (date: Date) => void;\n /**\n * Aralıkta: sol panel yalnız geri, sağ panel yalnız ileri oklarını gösterir.\n * `\"sm\"`: yalnız `sm` ve üstünde gizli (dar ekranda tek panel kalır, oklar gerekir).\n */\n hidePrev?: boolean;\n hideNext?: boolean | \"sm\";\n className?: string;\n}\n\nconst NAV_BUTTON = \"grid size-7 pointer-coarse:size-10 place-items-center rounded-md text-mari-muted outline-none hover:bg-mari-surface-alt hover:text-mari-foreground focus-visible:outline-2 focus-visible:outline-mari-ring\";\nconst TITLE_BUTTON = \"rounded-md px-1.5 py-0.5 pointer-coarse:py-2.5 font-medium outline-none hover:bg-mari-surface-alt hover:text-mari-primary focus-visible:outline-2 focus-visible:outline-mari-ring\";\n\nconst decadeStart = (year: number) => year - (year % 10);\n\nfunction monthCells(year: number, picker: PanelPicker, selected: (d: Date) => boolean, disabled: (d: Date) => boolean, locale?: string): GridCell[] {\n const short = monthNames(locale, \"short\");\n const long = monthNames(locale, \"long\");\n const now = new Date();\n return short.map((name, m) => {\n const first = new Date(year, m, 1);\n const days = new Date(year, m + 1, 0).getDate();\n // Ay seçiminde: ayın tüm günleri devre dışıysa ay da devre dışı.\n const allDisabled = picker === \"month\" && Array.from({ length: days }, (_, i) => new Date(year, m, i + 1)).every(disabled);\n return {\n key: String(m),\n label: name,\n fullLabel: `${long[m]} ${year}`,\n selected: picker === \"month\" ? selected(first) : false,\n current: isSameMonth(first, now),\n disabled: allDisabled,\n };\n });\n}\n\nfunction yearCells(year: number, picker: PanelPicker, selected: (d: Date) => boolean, disabled: (d: Date) => boolean): GridCell[] {\n const start = decadeStart(year) - 1;\n const now = new Date();\n return Array.from({ length: 12 }, (_, i) => {\n const y = start + i;\n const first = new Date(y, 0, 1);\n return {\n key: String(y),\n label: String(y),\n fullLabel: String(y),\n selected: picker === \"year\" ? selected(first) : false,\n current: isSameYear(first, now),\n disabled: picker === \"year\" && disabled(first) && disabled(new Date(y, 11, 31)),\n outside: i === 0 || i === 11,\n };\n });\n}\n\n/**\n * Kompakt takvim paneli: «/‹ başlık ›/» gezinmesi; başlıktaki ay/yıl düğmeleri\n * ay ve yıl görünümüne geçer. Görünen dönem `aria-live` ile duyurulur.\n */\nexport function CalendarPanel(props: Readonly<CalendarPanelProps>) {\n const { picker = \"date\", initialDate, isSelected, rangeOf, isDisabled, onSelect, onHover, weekStart = 1, locale, showWeek, takeFocus, hidePrev, hideNext, className } = props;\n const [mode, setMode] = useState<PanelPicker>(picker);\n const [innerView, setInnerView] = useState(() => startOfMonth(initialDate));\n const [focused, setFocused] = useState(initialDate);\n const view = props.viewDate ?? innerView;\n const setView = (d: Date) => {\n const next = startOfMonth(d);\n setInnerView(next);\n props.onViewDateChange?.(next);\n };\n const [focusGrid, setFocusGrid] = useState(!!takeFocus);\n useEffect(() => setMode(picker), [picker]);\n\n const moveFocus = (d: Date) => {\n setFocused(d);\n if (!isSameMonth(d, view)) setView(d);\n };\n\n const long = monthNames(locale, \"long\");\n const year = view.getFullYear();\n\n let title: React.ReactNode;\n let grid: React.ReactNode;\n if (mode === \"date\") {\n title = (\n <>\n <button type=\"button\" className={TITLE_BUTTON} aria-label={`Ay seç, ${long[view.getMonth()]}`} onClick={() => setMode(\"month\")}>\n {long[view.getMonth()]}\n </button>\n <button type=\"button\" className={TITLE_BUTTON} aria-label={`Yıl seç, ${year}`} onClick={() => setMode(\"year\")}>\n {year}\n </button>\n </>\n );\n grid = (\n <DayGrid\n view={view}\n focused={isSameMonth(focused, view) ? focused : view}\n onFocusChange={(d) => {\n setFocusGrid(true);\n moveFocus(d);\n }}\n isSelected={isSelected}\n rangeOf={rangeOf}\n isDisabled={isDisabled}\n onSelect={onSelect}\n onHover={onHover}\n weekStart={weekStart}\n locale={locale}\n showWeek={showWeek}\n label={`${long[view.getMonth()]} ${year}`}\n takeFocus={focusGrid || !!takeFocus}\n />\n );\n } else if (mode === \"month\") {\n const cells = monthCells(year, picker, isSelected, isDisabled, locale);\n title = (\n <button type=\"button\" className={TITLE_BUTTON} aria-label={`Yıl seç, ${year}`} onClick={() => setMode(\"year\")}>\n {year}\n </button>\n );\n grid = (\n <CellGrid\n cells={cells}\n focusedIndex={view.getMonth()}\n label={`${year} ayları`}\n takeFocus\n onFocusIndex={(i) => setView(new Date(year, i, 1))}\n onPage={(d) => setView(addYears(view, d))}\n onSelect={(i) => {\n const d = new Date(year, i, 1);\n if (picker === \"month\") onSelect(d);\n else {\n setView(d);\n setFocused(d);\n setMode(\"date\");\n }\n }}\n />\n );\n } else {\n const cells = yearCells(year, picker, isSelected, isDisabled);\n const start = decadeStart(year);\n title = <span className=\"px-1.5 font-medium\">{`${start}–${start + 9}`}</span>;\n grid = (\n <CellGrid\n cells={cells}\n focusedIndex={year - (start - 1)}\n label={`${start}–${start + 9} yılları`}\n takeFocus\n onFocusIndex={(i) => setView(new Date(start - 1 + i, view.getMonth(), 1))}\n onPage={(d) => setView(addYears(view, d * 10))}\n onSelect={(i) => {\n const d = new Date(start - 1 + i, view.getMonth(), 1);\n if (picker === \"year\") onSelect(d);\n else {\n setView(d);\n setMode(\"month\");\n }\n }}\n />\n );\n }\n\n const shift = (months: number) => {\n const next = mode === \"year\" ? addYears(view, Math.sign(months) * 10) : addMonths(view, months);\n setView(next);\n setFocused(addMonths(focused, next.getFullYear() * 12 + next.getMonth() - (view.getFullYear() * 12 + view.getMonth())));\n };\n\n return (\n <div className={cn(\"w-[17.5rem] max-w-full pointer-coarse:w-[19.25rem]\", className)}>\n <div className=\"mb-2 flex items-center gap-0.5\">\n {!hidePrev && (\n <>\n <button type=\"button\" className={NAV_BUTTON} aria-label={mode === \"year\" ? \"Önceki on yıl\" : \"Önceki yıl\"} onClick={() => shift(-12)}>\n <ChevronsLeftIcon aria-hidden size={16} />\n </button>\n {mode === \"date\" && (\n <button type=\"button\" className={NAV_BUTTON} aria-label=\"Önceki ay\" onClick={() => shift(-1)}>\n <ChevronLeftIcon aria-hidden size={16} />\n </button>\n )}\n </>\n )}\n <div aria-live=\"polite\" className=\"flex flex-1 items-center justify-center gap-0.5 text-sm\">\n {title}\n </div>\n {hideNext !== true && (\n <span className={cn(\"contents\", hideNext === \"sm\" && \"sm:hidden\")}>\n {mode === \"date\" && (\n <button type=\"button\" className={NAV_BUTTON} aria-label=\"Sonraki ay\" onClick={() => shift(1)}>\n <ChevronRightIcon aria-hidden size={16} />\n </button>\n )}\n <button type=\"button\" className={NAV_BUTTON} aria-label={mode === \"year\" ? \"Sonraki on yıl\" : \"Sonraki yıl\"} onClick={() => shift(12)}>\n <ChevronsRightIcon aria-hidden size={16} />\n </button>\n </span>\n )}\n </div>\n {grid}\n </div>\n );\n}\n","import { addDays, compareDay, isBetweenDays, isSameDay, isWithin, startOfDay } from \"../lib/date\";\nimport type { RangePosition } from \"../calendar/_components/DayGrid\";\nimport type { DatePickerMode, DatePickerPicker } from \"./types\";\n\n/** DatePicker'ın saf mantığı. */\n\nexport function defaultFormat(mode: DatePickerMode, picker: DatePickerPicker, seconds = false): string {\n const time = seconds ? \"HH:mm:ss\" : \"HH:mm\";\n if (mode === \"time\") return time;\n if (mode === \"datetime\") return `dd.MM.yyyy ${time}`;\n if (picker === \"month\") return \"MM.yyyy\";\n if (picker === \"year\") return \"yyyy\";\n return \"dd.MM.yyyy\";\n}\n\n/** Yer tutucu: biçimin Türkçe okunuşu (\"gg.aa.yyyy ss:dd\"). */\nconst PLACEHOLDER_TOKENS: Record<string, string> = { yyyy: \"yyyy\", MM: \"aa\", dd: \"gg\", HH: \"ss\", mm: \"dd\", ss: \"sn\" };\nexport function formatPlaceholder(format: string): string {\n return format.replace(/yyyy|MM|dd|HH|mm|ss/g, (t) => PLACEHOLDER_TOKENS[t]!);\n}\n\n/** Gizli form alanı için ISO metin. */\nexport function isoValue(d: Date | null, mode: DatePickerMode): string {\n if (!d) return \"\";\n const p = (n: number) => String(n).padStart(2, \"0\");\n const date = `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`;\n const time = `${p(d.getHours())}:${p(d.getMinutes())}`;\n if (mode === \"time\") return time;\n return mode === \"datetime\" ? `${date}T${time}` : date;\n}\n\n/** Tarihin gününü, saatin saat/dakika/saniyesini birleştirir. */\nexport const mergeDateTime = (date: Date, time: Date) =>\n new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds());\n\nexport function isDayDisabled(d: Date, min?: Date, max?: Date, disabledDate?: (d: Date) => boolean): boolean {\n return !isWithin(d, min, max) || !!disabledDate?.(d);\n}\n\n/** Saat sütunu değerleri: 0..max adımla. */\nexport const columnValues = (max: number, step = 1) => Array.from({ length: Math.ceil((max + 1) / step) }, (_, i) => i * step);\n\n/** Bir değerin sütundaki en yakın adıma yuvarlanmış hali (adım dışı değer listede görünmezdi). */\nexport const snap = (value: number, step = 1) => Math.floor(value / step) * step;\n\n/**\n * Aralık vurgusu: seçili uçlar ve (seçim sürerken) üzerine gelinen gün.\n * `[start, null]` + hover → start..hover önizlemesi.\n */\nexport function rangePosition(d: Date, start: Date | null, end: Date | null, hover: Date | null): RangePosition | null {\n const b = end ?? (start ? (hover ?? start) : null);\n const a = start ?? b;\n if (!a || !b) return null;\n const [lo, hi] = compareDay(a, b) <= 0 ? [a, b] : [b, a];\n if (isSameDay(lo, hi)) return isSameDay(d, lo) ? \"single\" : null;\n if (isSameDay(d, lo)) return \"start\";\n if (isSameDay(d, hi)) return \"end\";\n return isBetweenDays(d, lo, hi) ? \"middle\" : null;\n}\n\n/** Aralığı sıraya koyar (bitiş başlangıçtan önceyse yer değiştirir). */\nexport function orderRange(a: Date | null, b: Date | null): [Date | null, Date | null] {\n if (a && b && a.getTime() > b.getTime()) return [b, a];\n return [a, b];\n}\n\n/** Hazır aralık örnekleri için yardımcı: son N gün (bugün dahil). */\nexport const lastDays = (n: number): [Date, Date] => {\n const today = startOfDay(new Date());\n return [addDays(today, -(n - 1)), today];\n};\n","\"use client\";\n\nimport React, { useEffect, useRef } from \"react\";\nimport { cn } from \"@mari-ui/core\";\nimport { columnValues, snap } from \"../utils\";\n\ninterface ColumnProps {\n label: string;\n values: number[];\n value: number;\n onChange: (v: number) => void;\n takeFocus?: boolean;\n}\n\nconst pad = (n: number) => String(n).padStart(2, \"0\");\n\n/**\n * Tek sütun (saat, dakika ya da saniye): APG listbox, seçim odağı izler\n * (↑/↓, Home/End, PageUp/Down 5'er). Seçili değer sütunun en üstüne kayar.\n */\nfunction Column({ label, values, value, onChange, takeFocus }: Readonly<ColumnProps>) {\n const listRef = useRef<HTMLDivElement>(null);\n const navigating = useRef(false);\n const index = Math.max(0, values.indexOf(value));\n useEffect(() => {\n const list = listRef.current;\n const option = list?.children[index] as HTMLElement | undefined;\n if (!list || !option) return;\n list.scrollTo?.({ top: option.offsetTop - list.offsetTop, behavior: \"smooth\" });\n if (navigating.current || takeFocus) option.focus({ preventScroll: true });\n navigating.current = false;\n }, [index, takeFocus]);\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n const map: Record<string, number> = { ArrowDown: 1, ArrowUp: -1, PageDown: 5, PageUp: -5 };\n let next: number | null = null;\n if (e.key in map) next = Math.min(values.length - 1, Math.max(0, index + map[e.key]!));\n else if (e.key === \"Home\") next = 0;\n else if (e.key === \"End\") next = values.length - 1;\n if (next === null) return;\n e.preventDefault();\n navigating.current = true;\n onChange(values[next]!);\n };\n\n return (\n <div\n ref={listRef}\n role=\"listbox\"\n aria-label={label}\n className=\"relative h-56 w-14 pointer-coarse:w-16 snap-y overflow-y-auto overscroll-contain border-l border-mari-border py-1 first:border-l-0 [scrollbar-width:thin]\"\n >\n {values.map((v, i) => (\n <div\n key={v}\n role=\"option\"\n tabIndex={i === index ? 0 : -1}\n aria-selected={i === index}\n onKeyDown={onKeyDown}\n onClick={() => onChange(v)}\n className={cn(\n \"mx-1 flex h-7 pointer-coarse:h-11 cursor-pointer snap-start items-center justify-center rounded-md text-sm tabular-nums outline-none\",\n \"focus-visible:outline-2 focus-visible:outline-mari-ring\",\n i === index ? \"bg-mari-primary-subtle font-medium text-mari-primary\" : \"hover:bg-mari-surface-alt\"\n )}\n >\n {pad(v)}\n </div>\n ))}\n {/* Son değer de en üste kayabilsin. */}\n <div aria-hidden className=\"h-48 pointer-coarse:h-[19rem]\" />\n </div>\n );\n}\n\nexport interface TimePanelProps {\n value: Date;\n onChange: (date: Date) => void;\n seconds: boolean;\n hourStep?: number;\n minuteStep?: number;\n secondStep?: number;\n takeFocus?: boolean;\n}\n\n/** Saat / dakika / (saniye) sütunları. Her sütun ayrı sekme durağı. */\nexport function TimePanel({ value, onChange, seconds, hourStep = 1, minuteStep = 1, secondStep = 1, takeFocus }: Readonly<TimePanelProps>) {\n const set = (h: number, m: number, s: number) => {\n const d = new Date(value);\n d.setHours(h, m, s, 0);\n onChange(d);\n };\n const h = snap(value.getHours(), hourStep);\n const m = snap(value.getMinutes(), minuteStep);\n const s = snap(value.getSeconds(), secondStep);\n return (\n <div className=\"flex\" role=\"group\" aria-label=\"Saat seçimi\">\n <Column label=\"Saat\" values={columnValues(23, hourStep)} value={h} onChange={(v) => set(v, m, s)} takeFocus={takeFocus} />\n <Column label=\"Dakika\" values={columnValues(59, minuteStep)} value={m} onChange={(v) => set(h, v, s)} />\n {seconds && <Column label=\"Saniye\" values={columnValues(59, secondStep)} value={s} onChange={(v) => set(h, m, v)} />}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useControllableState } from \"@mari-ui/core\";\nimport { formatDate, parseDate, startOfDay } from \"../lib/date\";\nimport type { DatePickerProps, DatePickerRangeProps, DatePickerSingleProps, DateRangeValue } from \"./types\";\nimport { defaultFormat, isDayDisabled, mergeDateTime, orderRange } from \"./utils\";\n\ntype Slot = 0 | 1;\ntype Values = (Date | null)[];\n\nconst toValues = (v: Date | null | DateRangeValue | undefined, range: boolean): Values | undefined => {\n if (v === undefined) return undefined;\n if (range) return v ? [...(v as DateRangeValue)] : [null, null];\n return [v as Date | null];\n};\n\n/**\n * DatePicker durumu. `values` kesin değer (onChange'e giden); panel açıkken\n * düzenlemeler `draft`a yazılır ve ancak kesinleşince (gün seçimi, \"Tamam\",\n * Enter, alan dışına çıkış) `values` olur. Escape/dışarı tıklama taslağı atar.\n * Her yuvanın (aralıkta 2) kendi metni var — yazılan geçerli metin taslağa geçer.\n */\nexport function usePickerState(props: DatePickerProps) {\n const range = props.range === true;\n const mode = props.mode ?? \"date\";\n const picker = mode === \"date\" ? (props.picker ?? \"date\") : \"date\";\n const format = props.format ?? defaultFormat(mode, picker);\n const locale = props.locale;\n const fmt = (d: Date | null) => (d ? formatDate(d, format, locale) : \"\");\n\n const [values, setValuesState] = useControllableState<Values>({\n value: toValues(props.value, range),\n defaultValue: toValues(props.defaultValue, range) ?? (range ? [null, null] : [null]),\n });\n const [open, setOpenState] = useControllableState<boolean>({ value: props.open, defaultValue: false, onChange: props.onOpenChange });\n const [draft, setDraft] = useState<Values>(values);\n const [texts, setTexts] = useState<string[]>(() => values.map(fmt));\n const [slot, setSlot] = useState<Slot>(0);\n const [hover, setHover] = useState<Date | null>(null);\n\n // Değer dışarıdan değişince (kontrollü) metinler eşitlensin — panel kapalıyken.\n const valuesKey = values.map((v) => v?.getTime() ?? \"\").join(\"|\");\n const [syncedKey, setSyncedKey] = useState(valuesKey);\n if (valuesKey !== syncedKey) {\n setSyncedKey(valuesKey);\n setTexts(values.map(fmt));\n if (!open) setDraft(values);\n }\n\n const isDisabled = (d: Date) => isDayDisabled(d, props.minDate, props.maxDate, props.disabledDate);\n\n const commit = (next: Values) => {\n const ordered = range ? orderRange(next[0] ?? null, next[1] ?? null) : next;\n setValuesState(ordered);\n setDraft(ordered);\n setTexts(ordered.map(fmt));\n if (range) (props as DatePickerRangeProps).onChange?.(ordered.every((v) => v === null) ? null : (ordered as DateRangeValue), [fmt(ordered[0]!), fmt(ordered[1]!)]);\n else (props as DatePickerSingleProps).onChange?.(ordered[0] ?? null, fmt(ordered[0] ?? null));\n };\n\n const setOpen = (next: boolean) => {\n if (next === open) return;\n if (next) setDraft(values);\n else {\n setHover(null);\n setTexts(values.map(fmt));\n }\n setOpenState(next);\n };\n\n const close = () => setOpen(false);\n\n /** Taslağın bir yuvasını değiştirir; metin de taslağı gösterir. */\n const setDraftSlot = (s: Slot, d: Date | null, fromText = false) => {\n const next = [...draft];\n next[s] = d;\n setDraft(next);\n if (!fromText) setTexts((t) => t.map((x, i) => (i === s ? fmt(d) : x)));\n return next;\n };\n\n /** Aralıkta bir yuva tamamlanınca: başlangıçtan sonra bitişe geç; bitişte (ikisi doluysa) kesinleştir. */\n const advance = (next: Values) => {\n if (range && slot === 0) {\n setSlot(1);\n // Yeni başlangıç eski bitişten sonraysa bitiş yeniden seçilsin.\n if (next[1] && next[0] && next[0].getTime() > next[1].getTime()) {\n setDraft([next[0], null]);\n setTexts((t) => [t[0] ?? \"\", \"\"]);\n }\n return;\n }\n if (range && !next[0]) {\n setSlot(0);\n return;\n }\n commit(next);\n close();\n };\n\n /** Takvimden gün/ay/yıl seçimi. Gün modunda hemen ilerler; saatli modda \"Tamam\" bekler. */\n const pickDate = (d: Date) => {\n if (mode === \"datetime\") {\n const base = draft[slot] ?? startOfDay(new Date());\n setDraftSlot(slot, mergeDateTime(d, base));\n return;\n }\n advance(setDraftSlot(slot, d));\n };\n\n const pickTime = (t: Date) => {\n const base = draft[slot] ?? startOfDay(new Date());\n setDraftSlot(slot, mode === \"time\" ? mergeDateTime(startOfDay(new Date()), t) : mergeDateTime(base, t));\n };\n\n const confirm = () => advance(draft);\n\n const pickNow = () => {\n const now = mode === \"date\" ? startOfDay(new Date()) : new Date();\n advance(setDraftSlot(slot, now));\n };\n\n /** Yazılan metin: geçerliyse taslağa (takvim de oraya gider). */\n const typeText = (s: Slot, text: string) => {\n setTexts((t) => t.map((x, i) => (i === s ? text : x)));\n const parsed = text.trim() ? parseDate(text, format, draft[s] ?? startOfDay(new Date())) : null;\n if (parsed && !isDisabled(parsed)) setDraftSlot(s, parsed, true);\n };\n\n /** Enter ya da alan dışı: yazılan geçerliyse kesinleştir, boşsa temizle, geçersizse geri al. */\n const commitText = (s: Slot) => {\n const text = texts[s] ?? \"\";\n if (!text.trim()) {\n const next = [...values];\n next[s] = null;\n if (values[s] !== null) commit(next);\n return;\n }\n const parsed = parseDate(text, format, values[s] ?? startOfDay(new Date()));\n if (!parsed || isDisabled(parsed)) {\n setTexts(values.map(fmt));\n return;\n }\n const next = [...values];\n next[s] = parsed;\n if (fmt(parsed) !== fmt(values[s] ?? null)) commit(next);\n else setTexts(values.map(fmt));\n };\n\n return {\n range,\n mode,\n picker,\n format,\n open,\n setOpen,\n close,\n values,\n draft,\n texts,\n slot,\n setSlot,\n hover,\n setHover,\n isDisabled,\n commit,\n pickDate,\n pickTime,\n pickNow,\n confirm,\n typeText,\n commitText,\n clear: () => commit(range ? [null, null] : [null]),\n };\n}\n\nexport type PickerState = ReturnType<typeof usePickerState>;\n","\"use client\";\n\nimport { DatePicker } from \"./DatePicker\";\nimport type { DatePickerProps, TimePickerProps } from \"./types\";\n\nexport type { TimePickerProps };\n\n/**\n * TimePicker, DatePicker'ın saat modudur (16.0 kararı: tek motor,\n * iki isim). `range` ile saat aralığı (ör. çalışma saatleri).\n */\nexport function TimePicker(props: TimePickerProps) {\n return <DatePicker {...(props as DatePickerProps)} mode=\"time\" />;\n}\n"],"mappings":"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","names":["useEffect","useRef","useState","cn","useState","cn","useEffect","cn","jsx","jsxs","useEffect","cn","h","m","s","Fragment","jsx","jsxs","PickerPanel","useState","cn","useState","useState","next","Fragment","jsx","jsxs","cn","useRef","useEffect","useState","jsx"]}
|
package/dist/divider.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fontSizeClass
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-POBOJBNJ.js";
|
|
4
4
|
import {
|
|
5
5
|
skeletonBoxProps,
|
|
6
6
|
skeletonFill
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-VKN374SD.js";
|
|
8
8
|
|
|
9
9
|
// src/divider/Divider.tsx
|
|
10
10
|
import { cn as cn2 } from "@mari-ui/core";
|
package/dist/divider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/divider/Divider.tsx","../src/divider/utils.ts"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"@mari-ui/core\";\nimport { skeletonBoxProps, skeletonFill } from \"../lib/skeleton\";\nimport type { DividerProps } from \"./types\";\nimport { getBaseClass, getLabelClass, getLabelMarginStyle, getLineClass } from \"./utils\";\n\n/**\n * Hook yok, browser API yok — saf sunum. Eski kodda gereksiz yere\n * `\"use client\"` taşıyordu
|
|
1
|
+
{"version":3,"sources":["../src/divider/Divider.tsx","../src/divider/utils.ts"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"@mari-ui/core\";\nimport { skeletonBoxProps, skeletonFill } from \"../lib/skeleton\";\nimport type { DividerProps } from \"./types\";\nimport { getBaseClass, getLabelClass, getLabelMarginStyle, getLineClass } from \"./utils\";\n\n/**\n * Hook yok, browser API yok — saf sunum. Eski kodda gereksiz yere\n * `\"use client\"` taşıyordu; kaldırıldı.\n */\nexport function Divider({\n children,\n className,\n lineStyle = \"solid\",\n orientation = \"horizontal\",\n labelAlign = \"center\",\n labelMargin,\n plain = true,\n style,\n size,\n // Dikey divider varsayılan yüksekliği — `rem` (4K ekranlarda `px` kök\n // font'la ölçeklenmiyordu). Sayı verilirse `px` kabul edilir (kaçış).\n height = \"3rem\",\n skeleton = false,\n}: Readonly<DividerProps>) {\n const isHorizontal = orientation === \"horizontal\";\n const baseClass = getBaseClass(isHorizontal, size, className);\n const labelClass = getLabelClass(plain, isHorizontal);\n const marginStyle = getLabelMarginStyle(labelAlign, labelMargin, isHorizontal);\n\n // Çizgi stili (solid/dashed/dotted) DOĞRUDAN çizgiyi çizen elemana\n // uygulanır — `border-style` CSS'te KALITILMAZ, bu yüzden eskiden\n // kapsayıcıya konunca hep solid görünüyordu.\n const lineClass = cn(\"border-mari-border\", getLineClass(lineStyle));\n\n // İskelet: çizgi aynı yerde parıldayan ince bir çubuk; etiket varsa kendi\n // genişliğinde şeffaf yer tutucu — yüklenince satır kaymaz.\n if (skeleton) {\n const bar = cn(\"rounded-full\", skeletonFill(true));\n if (!isHorizontal) {\n return (\n <div aria-hidden className={baseClass} style={style}>\n <span className={cn(\"inline-block w-px\", bar)} style={{ height: typeof height === \"number\" ? `${height}px` : height }} />\n </div>\n );\n }\n return (\n <div aria-hidden className={baseClass} style={style}>\n <span className={cn(\"h-px flex-1\", bar)} />\n {children && (\n <>\n <span {...skeletonBoxProps(cn(\"mx-3 rounded-sm\", labelClass))}>{children}</span>\n <span className={cn(\"h-px flex-1\", bar)} />\n </>\n )}\n </div>\n );\n }\n\n if (!isHorizontal) {\n return (\n <div className={baseClass} style={style} role=\"separator\" aria-orientation=\"vertical\">\n <span\n className={cn(\"inline-block border-l\", lineClass)}\n style={{ height: typeof height === \"number\" ? `${height}px` : height }}\n />\n </div>\n );\n }\n\n if (!children) {\n return (\n <div className={baseClass} style={style} role=\"separator\">\n <span className={cn(\"flex-1 border-t\", lineClass)} />\n </div>\n );\n }\n\n // Etiketli yatay divider: etiketin iki yanındaki çizgi parçaları.\n // `labelAlign` etiketi bir kenara yaslamak için o kenardaki parçayı\n // kısaltır (`w-6` = 1.5rem), diğerini `flex-1` ile uzatır.\n const startLineClass = cn(\"border-t\", lineClass, labelAlign === \"start\" ? \"w-6 flex-none\" : \"min-w-6 flex-1\");\n const endLineClass = cn(\"border-t\", lineClass, labelAlign === \"end\" ? \"w-6 flex-none\" : \"min-w-6 flex-1\");\n\n return (\n <div className={baseClass} style={style} role=\"separator\">\n <span className={startLineClass} />\n <span className={labelClass} style={marginStyle}>\n {children}\n </span>\n <span className={endLineClass} />\n </div>\n );\n}\n","import type React from \"react\";\nimport { cn, type Size } from \"@mari-ui/core\";\nimport { fontSizeClass } from \"../lib/sizeClasses\";\nimport type { DividerLabelAlign, DividerLineStyle } from \"./types\";\n\nexport function getBaseClass(isHorizontal: boolean, size: Size | undefined, className?: string): string {\n return cn(\n \"flex\",\n // Divider'ın KENDİ varsayılan boşluğu var — yatayda dikey (`my-4`),\n // dikeyde yatay (`mx-3`) — böylece komşu içeriğe yapışmaz. `cn`\n // (twMerge) sayesinde tüketici `className`'iyle (`my-2`, `mx-0` …)\n // ezilebilir.\n isHorizontal ? \"w-full items-center my-4\" : \"h-full flex-col justify-center mx-3\",\n size && fontSizeClass[size],\n className\n );\n}\n\n/**\n * Çizgi stili class'ı — çizgiyi çizen elemana (kapsayıcıya DEĞİL) uygulanır.\n * `border-style` CSS'te `inherit` edilmez.\n */\nexport function getLineClass(lineStyle: DividerLineStyle | undefined): string {\n if (lineStyle === \"dashed\") return \"border-dashed\";\n if (lineStyle === \"dotted\") return \"border-dotted\";\n return \"border-solid\";\n}\n\nexport function getLabelClass(plain: boolean | undefined, isHorizontal: boolean): string {\n return cn(\n // Faz 15: `whitespace-nowrap` kaldırıldı — 375px'te uzun bir etiket\n // kapsayıcıdan taşıp yatay kaydırma üretiyordu. Artık etiket kırılır ve\n // ortalanır; çizgi parçaları `min-w-6` ile görünür kalır.\n isHorizontal ? \"min-w-0 px-3 text-center text-balance\" : \"py-2 whitespace-nowrap\",\n // \"text-muted-500\" -> gerçek bir token değildi (tema'da hiç yoktu, sessizce\n // no-op'tu). Nötr rolün `text` slotu bunun yerine geçiyor.\n plain ? \"text-mari-neutral\" : \"text-mari-foreground font-medium\"\n );\n}\n\nexport function getLabelMarginStyle(\n labelAlign: DividerLabelAlign | undefined,\n labelMargin: string | number | undefined,\n isHorizontal: boolean\n): React.CSSProperties {\n if (labelAlign === \"center\" || !labelMargin || !isHorizontal) return {};\n const marginValue = typeof labelMargin === \"number\" ? `${labelMargin}px` : labelMargin;\n return labelAlign === \"start\" ? { marginRight: marginValue } : { marginLeft: marginValue };\n}\n"],"mappings":"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","names":["cn","cn"]}
|
package/dist/drawer.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Drawer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FWSMUUZ5.js";
|
|
4
4
|
import "./chunk-KG6A32KX.js";
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-OYDG6C54.js";
|
|
6
|
+
import "./chunk-RMNV2CE2.js";
|
|
7
|
+
import "./chunk-TSFAAREV.js";
|
|
8
|
+
import "./chunk-6CSUVVFG.js";
|
|
9
|
+
import "./chunk-POBOJBNJ.js";
|
|
10
|
+
import "./chunk-VKN374SD.js";
|
|
11
11
|
export {
|
|
12
12
|
Drawer
|
|
13
13
|
};
|
package/dist/dropdown.js
CHANGED
|
@@ -5,13 +5,13 @@ import {
|
|
|
5
5
|
DropdownItem,
|
|
6
6
|
DropdownLabel,
|
|
7
7
|
DropdownTrigger
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-E5JTEQ4V.js";
|
|
9
|
+
import "./chunk-OAWUZIIN.js";
|
|
10
|
+
import "./chunk-GTNCXOUL.js";
|
|
11
|
+
import "./chunk-NYXU5EFE.js";
|
|
12
|
+
import "./chunk-MT4VH7QV.js";
|
|
13
|
+
import "./chunk-6AMBZXZJ.js";
|
|
14
|
+
import "./chunk-VKN374SD.js";
|
|
15
15
|
export {
|
|
16
16
|
Dropdown,
|
|
17
17
|
DropdownContent,
|
package/dist/empty.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Empty
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-JXD5DW6E.js";
|
|
4
|
+
import "./chunk-CVKAGR3D.js";
|
|
5
|
+
import "./chunk-POBOJBNJ.js";
|
|
6
|
+
import "./chunk-6AMBZXZJ.js";
|
|
7
|
+
import "./chunk-VKN374SD.js";
|
|
8
8
|
export {
|
|
9
9
|
Empty
|
|
10
10
|
};
|
package/dist/field.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
FieldContext
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-NPFMPRII.js";
|
|
6
6
|
import {
|
|
7
7
|
skeletonBoxProps
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VKN374SD.js";
|
|
9
9
|
|
|
10
10
|
// src/field/Field.tsx
|
|
11
11
|
import { useCallback, useId, useMemo, useState } from "react";
|
package/dist/field.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/field/Field.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useCallback, useId, useMemo, useState } from \"react\";\nimport { cn } from \"@mari-ui/core\";\nimport { FieldContext, type FieldContextValue } from \"../lib/fieldContext\";\nimport { skeletonBoxProps } from \"../lib/skeleton\";\nimport type { FieldProps } from \"./types\";\n\nexport type { FieldProps };\n\n
|
|
1
|
+
{"version":3,"sources":["../src/field/Field.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useCallback, useId, useMemo, useState } from \"react\";\nimport { cn } from \"@mari-ui/core\";\nimport { FieldContext, type FieldContextValue } from \"../lib/fieldContext\";\nimport { skeletonBoxProps } from \"../lib/skeleton\";\nimport type { FieldProps } from \"./types\";\n\nexport type { FieldProps };\n\n/*\n * Doğrulama YOK — kurallar/state tüketicinin (react-hook-form, zod…) işi;\n * Field yalnız sonucu gösterir. Eskiden her story (Drawer, Modal, Select,\n * InputNumber) kendi `Field` yardımcısını yazıyor, id'leri elle eşliyordu.\n */\n/**\n * Form alanının düzeni ve erişilebilirlik bağlantıları: etiket,\n * ipucu, hata, zorunlu işareti. Kendisi bir kontrol DEĞİL; içindeki kontrole\n * (context ile) id, `aria-describedby`, hata durumu (`color=\"error\"` +\n * `aria-invalid`), `required` ve `disabled` verir. Kontrole açıkça verilen\n * prop her zaman kazanır.\n *\n * Hata metni `aria-live=\"polite\"` bölgede: gönderimde ortaya çıkınca okunur.\n * Bölge hep DOM'da (sonradan eklenen canlı bölgeyi bazı ekran okuyucular\n * duyurmuyor); hata yokken boş.\n */\nexport function Field({ label, hint, error, required = false, disabled = false, layout = \"vertical\", htmlFor, className, skeleton = false, children }: Readonly<FieldProps>) {\n const autoId = useId();\n const [ownControlId, setControlId] = useState<string | undefined>();\n const [isGroup, setIsGroup] = useState(false);\n const markGroup = useCallback(() => setIsGroup(true), []);\n\n const controlId = ownControlId ?? htmlFor ?? `${autoId}-control`;\n const labelId = `${autoId}-label`;\n const hintId = `${autoId}-hint`;\n const errorId = `${autoId}-error`;\n const invalid = error !== undefined && error !== null && error !== false && error !== \"\";\n const showHint = !invalid && hint !== undefined && hint !== null;\n // Hata varken ipucu gizlenir; kontrol yalnız görünen metne bağlanır.\n let describedBy: string | undefined;\n if (invalid) describedBy = errorId;\n else if (showHint) describedBy = hintId;\n\n const context = useMemo<FieldContextValue>(\n () => ({ controlId, labelId, describedBy, invalid, required, disabled, markGroup, setControlId, skeleton }),\n [controlId, labelId, describedBy, invalid, required, disabled, markGroup, skeleton]\n );\n\n const horizontal = layout === \"horizontal\";\n // İskelette etiket/ipucu metni şeffaf bir blok olur — gerçek metinle aynı boyut, yüklenince kayma yok.\n const textSkeleton = (text: React.ReactNode) => (skeleton ? <span {...skeletonBoxProps(\"rounded-sm\")}>{text}</span> : text);\n const labelContent = (\n <>\n {textSkeleton(label)}\n {/* Zorunluluk kontrolün `required`ı ile okunur; yıldız yalnız görsel. */}\n {required && !skeleton && (\n <span aria-hidden className=\"ml-0.5 text-mari-error\">\n *\n </span>\n )}\n </>\n );\n // Yatayda etiket kontrolün İLK satırıyla hizalı (md kontrol yüksekliği 32px) — satırın (ipucu dahil) ortasına değil.\n const labelClass = cn(\"text-sm font-medium text-mari-foreground\", disabled && \"opacity-50\", horizontal && \"sm:flex sm:min-h-8 sm:items-center sm:self-start\");\n\n return (\n <FieldContext.Provider value={context}>\n <div className={cn(\"flex min-w-0 flex-col gap-1.5\", horizontal && \"sm:grid sm:grid-cols-[minmax(0,12rem)_minmax(0,1fr)] sm:gap-x-6 sm:gap-y-1.5\", className)}>\n {/* Grupta `<label for>` bağlanamaz — etiket grubun `aria-labelledby`si olur. */}\n {isGroup ? (\n <span id={labelId} className={labelClass}>\n {labelContent}\n </span>\n ) : (\n <label id={labelId} htmlFor={controlId} className={labelClass}>\n {labelContent}\n </label>\n )}\n {/* `gap` değil `mt`: boş canlı bölge (hata yokken) yükseklik ve boşluk kaplamasın — `display:none`\n olsaydı bazı ekran okuyucular bölgeyi izlemeyi bırakıp hatayı duyurmuyordu. */}\n {/* `items-start`: satır içi kontroller (Segmented, RadioGroup) kendi genişliğinde kalsın —\n gerilince Segmented'ın zemini tam genişliğe yayılıyordu. Tam genişlik isteyenler zaten `w-full`. */}\n <div className=\"flex min-w-0 flex-col items-start [&>*]:max-w-full\">\n {children}\n {showHint && (\n <p id={hintId} className=\"mt-1.5 text-xs text-mari-muted\">\n {textSkeleton(hint)}\n </p>\n )}\n <p id={errorId} aria-live=\"polite\" className=\"mt-1.5 text-xs text-mari-error empty:mt-0\">\n {invalid ? error : null}\n </p>\n </div>\n </div>\n </FieldContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;AAEA,SAAgB,aAAa,OAAO,SAAS,gBAAgB;AAC7D,SAAS,UAAU;AA+C2C,SAE1D,UAF0D,KAE1D,YAF0D;AAxBvD,SAAS,MAAM,EAAE,OAAO,MAAM,OAAO,WAAW,OAAO,WAAW,OAAO,SAAS,YAAY,SAAS,WAAW,WAAW,OAAO,SAAS,GAAyB;AAC3K,QAAM,SAAS,MAAM;AACrB,QAAM,CAAC,cAAc,YAAY,IAAI,SAA6B;AAClE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,YAAY,YAAY,MAAM,WAAW,IAAI,GAAG,CAAC,CAAC;AAExD,QAAM,YAAY,gBAAgB,WAAW,GAAG,MAAM;AACtD,QAAM,UAAU,GAAG,MAAM;AACzB,QAAM,SAAS,GAAG,MAAM;AACxB,QAAM,UAAU,GAAG,MAAM;AACzB,QAAM,UAAU,UAAU,UAAa,UAAU,QAAQ,UAAU,SAAS,UAAU;AACtF,QAAM,WAAW,CAAC,WAAW,SAAS,UAAa,SAAS;AAE5D,MAAI;AACJ,MAAI,QAAS,eAAc;AAAA,WAClB,SAAU,eAAc;AAEjC,QAAM,UAAU;AAAA,IACd,OAAO,EAAE,WAAW,SAAS,aAAa,SAAS,UAAU,UAAU,WAAW,cAAc,SAAS;AAAA,IACzG,CAAC,WAAW,SAAS,aAAa,SAAS,UAAU,UAAU,WAAW,QAAQ;AAAA,EACpF;AAEA,QAAM,aAAa,WAAW;AAE9B,QAAM,eAAe,CAAC,SAA2B,WAAW,oBAAC,UAAM,GAAG,iBAAiB,YAAY,GAAI,gBAAK,IAAU;AACtH,QAAM,eACJ,iCACG;AAAA,iBAAa,KAAK;AAAA,IAElB,YAAY,CAAC,YACZ,oBAAC,UAAK,eAAW,MAAC,WAAU,0BAAyB,eAErD;AAAA,KAEJ;AAGF,QAAM,aAAa,GAAG,4CAA4C,YAAY,cAAc,cAAc,kDAAkD;AAE5J,SACE,oBAAC,aAAa,UAAb,EAAsB,OAAO,SAC5B,+BAAC,SAAI,WAAW,GAAG,iCAAiC,cAAc,gFAAgF,SAAS,GAExJ;AAAA,cACC,oBAAC,UAAK,IAAI,SAAS,WAAW,YAC3B,wBACH,IAEA,oBAAC,WAAM,IAAI,SAAS,SAAS,WAAW,WAAW,YAChD,wBACH;AAAA,IAMF,qBAAC,SAAI,WAAU,sDACZ;AAAA;AAAA,MACA,YACC,oBAAC,OAAE,IAAI,QAAQ,WAAU,kCACtB,uBAAa,IAAI,GACpB;AAAA,MAEF,oBAAC,OAAE,IAAI,SAAS,aAAU,UAAS,WAAU,6CAC1C,oBAAU,QAAQ,MACrB;AAAA,OACF;AAAA,KACF,GACF;AAEJ;","names":[]}
|
package/dist/float-button.js
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
Tooltip
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-XWBJPA3D.js";
|
|
6
6
|
import {
|
|
7
7
|
Badge
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-TEMTIMAH.js";
|
|
9
|
+
import "./chunk-NYXU5EFE.js";
|
|
10
10
|
import {
|
|
11
11
|
elevationClass
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-MT4VH7QV.js";
|
|
13
13
|
import {
|
|
14
14
|
bgSolidClass,
|
|
15
15
|
bgSolidHoverClass,
|
|
16
16
|
textSolidContrastClass
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-6AMBZXZJ.js";
|
|
18
18
|
import {
|
|
19
19
|
skeletonBoxProps
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-VKN374SD.js";
|
|
21
21
|
|
|
22
22
|
// src/float-button/FloatButton.tsx
|
|
23
23
|
import { createContext, useContext } from "react";
|