@handijit/ui 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +872 -2
- package/build/base.css +1 -0
- package/build/charts.cjs +2 -0
- package/build/charts.cjs.map +1 -0
- package/build/charts.css +1 -0
- package/build/charts.js +1865 -0
- package/build/charts.js.map +1 -0
- package/build/chat.cjs +4 -0
- package/build/chat.cjs.map +1 -0
- package/build/chat.css +1 -0
- package/build/chat.js +1120 -0
- package/build/chat.js.map +1 -0
- package/build/components/Accordion/index.cjs +2 -0
- package/build/components/Accordion/index.cjs.map +1 -0
- package/build/components/Accordion/index.d.ts +29 -0
- package/build/components/Accordion/index.js +42 -0
- package/build/components/Accordion/index.js.map +1 -0
- package/build/components/Accordion/style.css +1 -0
- package/build/components/Alert/index.cjs +2 -0
- package/build/components/Alert/index.cjs.map +1 -0
- package/build/components/Alert/index.d.ts +15 -0
- package/build/components/Alert/index.js +30 -0
- package/build/components/Alert/index.js.map +1 -0
- package/build/components/Alert/style.css +1 -0
- package/build/components/Avatar/index.cjs +2 -0
- package/build/components/Avatar/index.cjs.map +1 -0
- package/build/components/Avatar/index.d.ts +26 -0
- package/build/components/Avatar/index.js +57 -0
- package/build/components/Avatar/index.js.map +1 -0
- package/build/components/Avatar/style.css +1 -0
- package/build/components/Badge/index.cjs +2 -0
- package/build/components/Badge/index.cjs.map +1 -0
- package/build/components/Badge/index.d.ts +26 -0
- package/build/components/Badge/index.js +26 -0
- package/build/components/Badge/index.js.map +1 -0
- package/build/components/Badge/style.css +1 -0
- package/build/components/BottomSheet/index.cjs +2 -0
- package/build/components/BottomSheet/index.cjs.map +1 -0
- package/build/components/BottomSheet/index.d.ts +21 -0
- package/build/components/BottomSheet/index.js +85 -0
- package/build/components/BottomSheet/index.js.map +1 -0
- package/build/components/BottomSheet/style.css +1 -0
- package/build/components/Breadcrumb/index.cjs +2 -0
- package/build/components/Breadcrumb/index.cjs.map +1 -0
- package/build/components/Breadcrumb/index.d.ts +20 -0
- package/build/components/Breadcrumb/index.js +31 -0
- package/build/components/Breadcrumb/index.js.map +1 -0
- package/build/components/Breadcrumb/style.css +1 -0
- package/build/components/Button/index.cjs +2 -0
- package/build/components/Button/index.cjs.map +1 -0
- package/build/components/Button/index.d.ts +32 -0
- package/build/components/Button/index.js +88 -0
- package/build/components/Button/index.js.map +1 -0
- package/build/components/Button/style.css +1 -0
- package/build/components/Card/index.cjs +2 -0
- package/build/components/Card/index.cjs.map +1 -0
- package/build/components/Card/index.d.ts +51 -0
- package/build/components/Card/index.js +58 -0
- package/build/components/Card/index.js.map +1 -0
- package/build/components/Card/style.css +1 -0
- package/build/components/Carousel/index.cjs +2 -0
- package/build/components/Carousel/index.cjs.map +1 -0
- package/build/components/Carousel/index.d.ts +24 -0
- package/build/components/Carousel/index.js +111 -0
- package/build/components/Carousel/index.js.map +1 -0
- package/build/components/Carousel/style.css +1 -0
- package/build/components/Checkbox/index.cjs +2 -0
- package/build/components/Checkbox/index.cjs.map +1 -0
- package/build/components/Checkbox/index.d.ts +10 -0
- package/build/components/Checkbox/index.js +33 -0
- package/build/components/Checkbox/index.js.map +1 -0
- package/build/components/Checkbox/style.css +1 -0
- package/build/components/Chip/index.cjs +2 -0
- package/build/components/Chip/index.cjs.map +1 -0
- package/build/components/Chip/index.d.ts +27 -0
- package/build/components/Chip/index.js +67 -0
- package/build/components/Chip/index.js.map +1 -0
- package/build/components/Chip/style.css +1 -0
- package/build/components/ChipGroup/index.cjs +2 -0
- package/build/components/ChipGroup/index.cjs.map +1 -0
- package/build/components/ChipGroup/index.d.ts +34 -0
- package/build/components/ChipGroup/index.js +64 -0
- package/build/components/ChipGroup/index.js.map +1 -0
- package/build/components/ChipGroup/style.css +1 -0
- package/build/components/CodeBadge/index.cjs +2 -0
- package/build/components/CodeBadge/index.cjs.map +1 -0
- package/build/components/CodeBadge/index.d.ts +36 -0
- package/build/components/CodeBadge/index.js +62 -0
- package/build/components/CodeBadge/index.js.map +1 -0
- package/build/components/CodeBadge/style.css +1 -0
- package/build/components/Combobox/index.cjs +2 -0
- package/build/components/Combobox/index.cjs.map +1 -0
- package/build/components/Combobox/index.d.ts +6 -0
- package/build/components/Combobox/index.js +302 -0
- package/build/components/Combobox/index.js.map +1 -0
- package/build/components/Combobox/style.css +1 -0
- package/build/components/CommandPalette/index.cjs +2 -0
- package/build/components/CommandPalette/index.cjs.map +1 -0
- package/build/components/CommandPalette/index.d.ts +37 -0
- package/build/components/CommandPalette/index.js +181 -0
- package/build/components/CommandPalette/index.js.map +1 -0
- package/build/components/CommandPalette/style.css +1 -0
- package/build/components/ConfirmDialog/index.cjs +2 -0
- package/build/components/ConfirmDialog/index.cjs.map +1 -0
- package/build/components/ConfirmDialog/index.d.ts +34 -0
- package/build/components/ConfirmDialog/index.js +85 -0
- package/build/components/ConfirmDialog/index.js.map +1 -0
- package/build/components/CopyField/index.cjs +2 -0
- package/build/components/CopyField/index.cjs.map +1 -0
- package/build/components/CopyField/index.d.ts +20 -0
- package/build/components/CopyField/index.js +44 -0
- package/build/components/CopyField/index.js.map +1 -0
- package/build/components/CopyField/style.css +1 -0
- package/build/components/DataTable/index.cjs +2 -0
- package/build/components/DataTable/index.cjs.map +1 -0
- package/build/components/DataTable/index.d.ts +60 -0
- package/build/components/DataTable/index.js +109 -0
- package/build/components/DataTable/index.js.map +1 -0
- package/build/components/DataTable/style.css +1 -0
- package/build/components/DateField/index.cjs +2 -0
- package/build/components/DateField/index.cjs.map +1 -0
- package/build/components/DateField/index.d.ts +44 -0
- package/build/components/DateField/index.js +79 -0
- package/build/components/DateField/index.js.map +1 -0
- package/build/components/DateField/style.css +1 -0
- package/build/components/Directory/index.cjs +2 -0
- package/build/components/Directory/index.cjs.map +1 -0
- package/build/components/Directory/index.d.ts +51 -0
- package/build/components/Directory/index.js +46 -0
- package/build/components/Directory/index.js.map +1 -0
- package/build/components/Directory/style.css +1 -0
- package/build/components/Disclosure/index.cjs +2 -0
- package/build/components/Disclosure/index.cjs.map +1 -0
- package/build/components/Disclosure/index.d.ts +34 -0
- package/build/components/Disclosure/index.js +64 -0
- package/build/components/Disclosure/index.js.map +1 -0
- package/build/components/Disclosure/style.css +1 -0
- package/build/components/Divider/index.cjs +2 -0
- package/build/components/Divider/index.cjs.map +1 -0
- package/build/components/Divider/index.d.ts +10 -0
- package/build/components/Divider/index.js +24 -0
- package/build/components/Divider/index.js.map +1 -0
- package/build/components/Divider/style.css +1 -0
- package/build/components/Drawer/index.cjs +2 -0
- package/build/components/Drawer/index.cjs.map +1 -0
- package/build/components/Drawer/index.d.ts +22 -0
- package/build/components/Drawer/index.js +88 -0
- package/build/components/Drawer/index.js.map +1 -0
- package/build/components/Drawer/style.css +1 -0
- package/build/components/EmptyState/index.cjs +2 -0
- package/build/components/EmptyState/index.cjs.map +1 -0
- package/build/components/EmptyState/index.d.ts +19 -0
- package/build/components/EmptyState/index.js +35 -0
- package/build/components/EmptyState/index.js.map +1 -0
- package/build/components/EmptyState/style.css +1 -0
- package/build/components/Field/index.cjs +2 -0
- package/build/components/Field/index.cjs.map +1 -0
- package/build/components/Field/index.d.ts +31 -0
- package/build/components/Field/index.js +52 -0
- package/build/components/Field/index.js.map +1 -0
- package/build/components/Field/style.css +1 -0
- package/build/components/FileUpload/index.cjs +2 -0
- package/build/components/FileUpload/index.cjs.map +1 -0
- package/build/components/FileUpload/index.d.ts +42 -0
- package/build/components/FileUpload/index.js +145 -0
- package/build/components/FileUpload/index.js.map +1 -0
- package/build/components/FileUpload/style.css +1 -0
- package/build/components/FilterBar/index.cjs +2 -0
- package/build/components/FilterBar/index.cjs.map +1 -0
- package/build/components/FilterBar/index.d.ts +28 -0
- package/build/components/FilterBar/index.js +35 -0
- package/build/components/FilterBar/index.js.map +1 -0
- package/build/components/FilterBar/style.css +1 -0
- package/build/components/IconButton/index.cjs +2 -0
- package/build/components/IconButton/index.cjs.map +1 -0
- package/build/components/IconButton/index.d.ts +22 -0
- package/build/components/IconButton/index.js +61 -0
- package/build/components/IconButton/index.js.map +1 -0
- package/build/components/IconButton/style.css +1 -0
- package/build/components/Input/index.cjs +2 -0
- package/build/components/Input/index.cjs.map +1 -0
- package/build/components/Input/index.d.ts +15 -0
- package/build/components/Input/index.js +52 -0
- package/build/components/Input/index.js.map +1 -0
- package/build/components/Input/style.css +1 -0
- package/build/components/Kbd/index.cjs +2 -0
- package/build/components/Kbd/index.cjs.map +1 -0
- package/build/components/Kbd/index.d.ts +12 -0
- package/build/components/Kbd/index.js +13 -0
- package/build/components/Kbd/index.js.map +1 -0
- package/build/components/Kbd/style.css +1 -0
- package/build/components/Link/index.cjs +2 -0
- package/build/components/Link/index.cjs.map +1 -0
- package/build/components/Link/index.d.ts +5 -0
- package/build/components/Link/index.js +11 -0
- package/build/components/Link/index.js.map +1 -0
- package/build/components/Menu/index.cjs +2 -0
- package/build/components/Menu/index.cjs.map +1 -0
- package/build/components/Menu/index.d.ts +46 -0
- package/build/components/Menu/index.js +241 -0
- package/build/components/Menu/index.js.map +1 -0
- package/build/components/Menu/style.css +1 -0
- package/build/components/Modal/index.cjs +2 -0
- package/build/components/Modal/index.cjs.map +1 -0
- package/build/components/Modal/index.d.ts +28 -0
- package/build/components/Modal/index.js +92 -0
- package/build/components/Modal/index.js.map +1 -0
- package/build/components/Modal/style.css +1 -0
- package/build/components/PageHeader/index.cjs +2 -0
- package/build/components/PageHeader/index.cjs.map +1 -0
- package/build/components/PageHeader/index.d.ts +24 -0
- package/build/components/PageHeader/index.js +34 -0
- package/build/components/PageHeader/index.js.map +1 -0
- package/build/components/PageHeader/style.css +1 -0
- package/build/components/Pagination/index.cjs +2 -0
- package/build/components/Pagination/index.cjs.map +1 -0
- package/build/components/Pagination/index.d.ts +39 -0
- package/build/components/Pagination/index.js +128 -0
- package/build/components/Pagination/index.js.map +1 -0
- package/build/components/Pagination/style.css +1 -0
- package/build/components/Panel/index.cjs +2 -0
- package/build/components/Panel/index.cjs.map +1 -0
- package/build/components/Panel/index.d.ts +43 -0
- package/build/components/Panel/index.js +55 -0
- package/build/components/Panel/index.js.map +1 -0
- package/build/components/Panel/style.css +1 -0
- package/build/components/PasswordInput/index.cjs +2 -0
- package/build/components/PasswordInput/index.cjs.map +1 -0
- package/build/components/PasswordInput/index.d.ts +14 -0
- package/build/components/PasswordInput/index.js +40 -0
- package/build/components/PasswordInput/index.js.map +1 -0
- package/build/components/PasswordInput/style.css +1 -0
- package/build/components/Popover/index.cjs +2 -0
- package/build/components/Popover/index.cjs.map +1 -0
- package/build/components/Popover/index.d.ts +20 -0
- package/build/components/Popover/index.js +91 -0
- package/build/components/Popover/index.js.map +1 -0
- package/build/components/Popover/style.css +1 -0
- package/build/components/Price/index.cjs +2 -0
- package/build/components/Price/index.cjs.map +1 -0
- package/build/components/Price/index.d.ts +22 -0
- package/build/components/Price/index.js +46 -0
- package/build/components/Price/index.js.map +1 -0
- package/build/components/Price/style.css +1 -0
- package/build/components/Progress/index.cjs +2 -0
- package/build/components/Progress/index.cjs.map +1 -0
- package/build/components/Progress/index.d.ts +49 -0
- package/build/components/Progress/index.js +120 -0
- package/build/components/Progress/index.js.map +1 -0
- package/build/components/Progress/style.css +1 -0
- package/build/components/PromptDialog/index.cjs +2 -0
- package/build/components/PromptDialog/index.cjs.map +1 -0
- package/build/components/PromptDialog/index.d.ts +36 -0
- package/build/components/PromptDialog/index.js +119 -0
- package/build/components/PromptDialog/index.js.map +1 -0
- package/build/components/PromptDialog/style.css +1 -0
- package/build/components/QuantityStepper/index.cjs +2 -0
- package/build/components/QuantityStepper/index.cjs.map +1 -0
- package/build/components/QuantityStepper/index.d.ts +21 -0
- package/build/components/QuantityStepper/index.js +106 -0
- package/build/components/QuantityStepper/index.js.map +1 -0
- package/build/components/QuantityStepper/style.css +1 -0
- package/build/components/Radio/index.cjs +2 -0
- package/build/components/Radio/index.cjs.map +1 -0
- package/build/components/Radio/index.d.ts +12 -0
- package/build/components/Radio/index.js +35 -0
- package/build/components/Radio/index.js.map +1 -0
- package/build/components/Radio/style.css +1 -0
- package/build/components/RadioCard/index.cjs +2 -0
- package/build/components/RadioCard/index.cjs.map +1 -0
- package/build/components/RadioCard/index.d.ts +16 -0
- package/build/components/RadioCard/index.js +48 -0
- package/build/components/RadioCard/index.js.map +1 -0
- package/build/components/RadioCard/style.css +1 -0
- package/build/components/RangeSlider/index.cjs +2 -0
- package/build/components/RangeSlider/index.cjs.map +1 -0
- package/build/components/RangeSlider/index.d.ts +26 -0
- package/build/components/RangeSlider/index.js +102 -0
- package/build/components/RangeSlider/index.js.map +1 -0
- package/build/components/RangeSlider/style.css +1 -0
- package/build/components/Rating/index.cjs +2 -0
- package/build/components/Rating/index.cjs.map +1 -0
- package/build/components/Rating/index.d.ts +16 -0
- package/build/components/Rating/index.js +29 -0
- package/build/components/Rating/index.js.map +1 -0
- package/build/components/Rating/style.css +1 -0
- package/build/components/RatingInput/index.cjs +2 -0
- package/build/components/RatingInput/index.cjs.map +1 -0
- package/build/components/RatingInput/index.d.ts +21 -0
- package/build/components/RatingInput/index.js +75 -0
- package/build/components/RatingInput/index.js.map +1 -0
- package/build/components/RatingInput/style.css +1 -0
- package/build/components/ScrollArea/index.cjs +2 -0
- package/build/components/ScrollArea/index.cjs.map +1 -0
- package/build/components/ScrollArea/index.d.ts +23 -0
- package/build/components/ScrollArea/index.js +65 -0
- package/build/components/ScrollArea/index.js.map +1 -0
- package/build/components/ScrollArea/style.css +1 -0
- package/build/components/SectionHeader/index.cjs +2 -0
- package/build/components/SectionHeader/index.cjs.map +1 -0
- package/build/components/SectionHeader/index.d.ts +17 -0
- package/build/components/SectionHeader/index.js +25 -0
- package/build/components/SectionHeader/index.js.map +1 -0
- package/build/components/SectionHeader/style.css +1 -0
- package/build/components/SegmentedControl/index.cjs +2 -0
- package/build/components/SegmentedControl/index.cjs.map +1 -0
- package/build/components/SegmentedControl/index.d.ts +24 -0
- package/build/components/SegmentedControl/index.js +69 -0
- package/build/components/SegmentedControl/index.js.map +1 -0
- package/build/components/SegmentedControl/style.css +1 -0
- package/build/components/Select/index.cjs +2 -0
- package/build/components/Select/index.cjs.map +1 -0
- package/build/components/Select/index.d.ts +39 -0
- package/build/components/Select/index.js +179 -0
- package/build/components/Select/index.js.map +1 -0
- package/build/components/Select/style.css +1 -0
- package/build/components/Skeleton/index.cjs +2 -0
- package/build/components/Skeleton/index.cjs.map +1 -0
- package/build/components/Skeleton/index.d.ts +25 -0
- package/build/components/Skeleton/index.js +50 -0
- package/build/components/Skeleton/index.js.map +1 -0
- package/build/components/Skeleton/style.css +1 -0
- package/build/components/Spinner/index.cjs +2 -0
- package/build/components/Spinner/index.cjs.map +1 -0
- package/build/components/Spinner/index.d.ts +11 -0
- package/build/components/Spinner/index.js +15 -0
- package/build/components/Spinner/index.js.map +1 -0
- package/build/components/Spinner/style.css +1 -0
- package/build/components/Stat/index.cjs +2 -0
- package/build/components/Stat/index.cjs.map +1 -0
- package/build/components/Stat/index.d.ts +34 -0
- package/build/components/Stat/index.js +72 -0
- package/build/components/Stat/index.js.map +1 -0
- package/build/components/Stat/style.css +1 -0
- package/build/components/StatusDot/index.cjs +2 -0
- package/build/components/StatusDot/index.cjs.map +1 -0
- package/build/components/StatusDot/index.d.ts +23 -0
- package/build/components/StatusDot/index.js +23 -0
- package/build/components/StatusDot/index.js.map +1 -0
- package/build/components/StatusDot/style.css +1 -0
- package/build/components/Steps/index.cjs +2 -0
- package/build/components/Steps/index.cjs.map +1 -0
- package/build/components/Steps/index.d.ts +23 -0
- package/build/components/Steps/index.js +69 -0
- package/build/components/Steps/index.js.map +1 -0
- package/build/components/Steps/style.css +1 -0
- package/build/components/SummaryCard/index.cjs +2 -0
- package/build/components/SummaryCard/index.cjs.map +1 -0
- package/build/components/SummaryCard/index.d.ts +24 -0
- package/build/components/SummaryCard/index.js +33 -0
- package/build/components/SummaryCard/index.js.map +1 -0
- package/build/components/SummaryCard/style.css +1 -0
- package/build/components/Switch/index.cjs +2 -0
- package/build/components/Switch/index.cjs.map +1 -0
- package/build/components/Switch/index.d.ts +16 -0
- package/build/components/Switch/index.js +42 -0
- package/build/components/Switch/index.js.map +1 -0
- package/build/components/Switch/style.css +1 -0
- package/build/components/Table/index.cjs +2 -0
- package/build/components/Table/index.cjs.map +1 -0
- package/build/components/Table/index.d.ts +28 -0
- package/build/components/Table/index.js +58 -0
- package/build/components/Table/index.js.map +1 -0
- package/build/components/Table/style.css +1 -0
- package/build/components/TableCheckbox/index.cjs +2 -0
- package/build/components/TableCheckbox/index.cjs.map +1 -0
- package/build/components/TableCheckbox/index.d.ts +15 -0
- package/build/components/TableCheckbox/index.js +31 -0
- package/build/components/TableCheckbox/index.js.map +1 -0
- package/build/components/TableCheckbox/style.css +1 -0
- package/build/components/Tabs/index.cjs +2 -0
- package/build/components/Tabs/index.cjs.map +1 -0
- package/build/components/Tabs/index.d.ts +27 -0
- package/build/components/Tabs/index.js +102 -0
- package/build/components/Tabs/index.js.map +1 -0
- package/build/components/Tabs/style.css +1 -0
- package/build/components/TagInput/index.cjs +2 -0
- package/build/components/TagInput/index.cjs.map +1 -0
- package/build/components/TagInput/index.d.ts +25 -0
- package/build/components/TagInput/index.js +124 -0
- package/build/components/TagInput/index.js.map +1 -0
- package/build/components/TagInput/style.css +1 -0
- package/build/components/TextLink/index.cjs +2 -0
- package/build/components/TextLink/index.cjs.map +1 -0
- package/build/components/TextLink/index.d.ts +16 -0
- package/build/components/TextLink/index.js +32 -0
- package/build/components/TextLink/index.js.map +1 -0
- package/build/components/TextLink/style.css +1 -0
- package/build/components/Textarea/index.cjs +2 -0
- package/build/components/Textarea/index.cjs.map +1 -0
- package/build/components/Textarea/index.d.ts +20 -0
- package/build/components/Textarea/index.js +68 -0
- package/build/components/Textarea/index.js.map +1 -0
- package/build/components/Textarea/style.css +1 -0
- package/build/components/Tile/index.cjs +2 -0
- package/build/components/Tile/index.cjs.map +1 -0
- package/build/components/Tile/index.d.ts +19 -0
- package/build/components/Tile/index.js +24 -0
- package/build/components/Tile/index.js.map +1 -0
- package/build/components/Tile/style.css +1 -0
- package/build/components/Timeline/index.cjs +2 -0
- package/build/components/Timeline/index.cjs.map +1 -0
- package/build/components/Timeline/index.d.ts +24 -0
- package/build/components/Timeline/index.js +56 -0
- package/build/components/Timeline/index.js.map +1 -0
- package/build/components/Timeline/style.css +1 -0
- package/build/components/Toast/index.cjs +2 -0
- package/build/components/Toast/index.cjs.map +1 -0
- package/build/components/Toast/index.d.ts +43 -0
- package/build/components/Toast/index.js +136 -0
- package/build/components/Toast/index.js.map +1 -0
- package/build/components/Toast/style.css +1 -0
- package/build/components/ToastPortal/index.cjs +2 -0
- package/build/components/ToastPortal/index.cjs.map +1 -0
- package/build/components/ToastPortal/index.d.ts +8 -0
- package/build/components/ToastPortal/index.js +15 -0
- package/build/components/ToastPortal/index.js.map +1 -0
- package/build/components/Tooltip/index.cjs +2 -0
- package/build/components/Tooltip/index.cjs.map +1 -0
- package/build/components/Tooltip/index.d.ts +23 -0
- package/build/components/Tooltip/index.js +116 -0
- package/build/components/Tooltip/index.js.map +1 -0
- package/build/components/Tooltip/style.css +1 -0
- package/build/constants/breakpoint.constants.cjs +2 -0
- package/build/constants/breakpoint.constants.cjs.map +1 -0
- package/build/constants/breakpoint.constants.d.ts +8 -0
- package/build/constants/breakpoint.constants.js +9 -0
- package/build/constants/breakpoint.constants.js.map +1 -0
- package/build/constants/combobox.constants.cjs +2 -0
- package/build/constants/combobox.constants.cjs.map +1 -0
- package/build/constants/combobox.constants.d.ts +11 -0
- package/build/constants/combobox.constants.js +7 -0
- package/build/constants/combobox.constants.js.map +1 -0
- package/build/constants/scroll.constants.cjs +2 -0
- package/build/constants/scroll.constants.cjs.map +1 -0
- package/build/constants/scroll.constants.d.ts +7 -0
- package/build/constants/scroll.constants.js +5 -0
- package/build/constants/scroll.constants.js.map +1 -0
- package/build/enums/ui-size.enum.cjs +2 -0
- package/build/enums/ui-size.enum.cjs.map +1 -0
- package/build/enums/ui-size.enum.d.ts +9 -0
- package/build/enums/ui-size.enum.js +5 -0
- package/build/enums/ui-size.enum.js.map +1 -0
- package/build/enums/ui-variant.enum.cjs +2 -0
- package/build/enums/ui-variant.enum.cjs.map +1 -0
- package/build/enums/ui-variant.enum.d.ts +20 -0
- package/build/enums/ui-variant.enum.js +5 -0
- package/build/enums/ui-variant.enum.js.map +1 -0
- package/build/helpers/class-name.helper.cjs +2 -0
- package/build/helpers/class-name.helper.cjs.map +1 -0
- package/build/helpers/class-name.helper.d.ts +3 -0
- package/build/helpers/class-name.helper.js +10 -0
- package/build/helpers/class-name.helper.js.map +1 -0
- package/build/helpers/component.helper.cjs +2 -0
- package/build/helpers/component.helper.cjs.map +1 -0
- package/build/helpers/component.helper.d.ts +13 -0
- package/build/helpers/component.helper.js +5 -0
- package/build/helpers/component.helper.js.map +1 -0
- package/build/helpers/focus.helper.cjs +2 -0
- package/build/helpers/focus.helper.cjs.map +1 -0
- package/build/helpers/focus.helper.d.ts +42 -0
- package/build/helpers/focus.helper.js +65 -0
- package/build/helpers/focus.helper.js.map +1 -0
- package/build/helpers/label.helper.cjs +2 -0
- package/build/helpers/label.helper.cjs.map +1 -0
- package/build/helpers/label.helper.d.ts +11 -0
- package/build/helpers/label.helper.js +11 -0
- package/build/helpers/label.helper.js.map +1 -0
- package/build/helpers/portal.helper.cjs +2 -0
- package/build/helpers/portal.helper.cjs.map +1 -0
- package/build/helpers/portal.helper.d.ts +28 -0
- package/build/helpers/portal.helper.js +36 -0
- package/build/helpers/portal.helper.js.map +1 -0
- package/build/helpers/scroll.helper.cjs +2 -0
- package/build/helpers/scroll.helper.cjs.map +1 -0
- package/build/helpers/scroll.helper.d.ts +8 -0
- package/build/helpers/scroll.helper.js +11 -0
- package/build/helpers/scroll.helper.js.map +1 -0
- package/build/helpers/text.helper.cjs +2 -0
- package/build/helpers/text.helper.cjs.map +1 -0
- package/build/helpers/text.helper.d.ts +5 -0
- package/build/helpers/text.helper.js +6 -0
- package/build/helpers/text.helper.js.map +1 -0
- package/build/helpers/theme.helper.cjs +24 -0
- package/build/helpers/theme.helper.cjs.map +1 -0
- package/build/helpers/theme.helper.d.ts +49 -0
- package/build/helpers/theme.helper.js +75 -0
- package/build/helpers/theme.helper.js.map +1 -0
- package/build/hooks/useAnnounce.cjs +2 -0
- package/build/hooks/useAnnounce.cjs.map +1 -0
- package/build/hooks/useAnnounce.d.ts +4 -0
- package/build/hooks/useAnnounce.js +23 -0
- package/build/hooks/useAnnounce.js.map +1 -0
- package/build/hooks/useAsyncSearch.cjs +2 -0
- package/build/hooks/useAsyncSearch.cjs.map +1 -0
- package/build/hooks/useAsyncSearch.d.ts +11 -0
- package/build/hooks/useAsyncSearch.js +17 -0
- package/build/hooks/useAsyncSearch.js.map +1 -0
- package/build/hooks/useCopyFeedback.cjs +2 -0
- package/build/hooks/useCopyFeedback.cjs.map +1 -0
- package/build/hooks/useCopyFeedback.d.ts +10 -0
- package/build/hooks/useCopyFeedback.js +25 -0
- package/build/hooks/useCopyFeedback.js.map +1 -0
- package/build/hooks/useDismissOnEscape.cjs +2 -0
- package/build/hooks/useDismissOnEscape.cjs.map +1 -0
- package/build/hooks/useDismissOnEscape.d.ts +12 -0
- package/build/hooks/useDismissOnEscape.js +18 -0
- package/build/hooks/useDismissOnEscape.js.map +1 -0
- package/build/hooks/useListboxNavigation.cjs +2 -0
- package/build/hooks/useListboxNavigation.cjs.map +1 -0
- package/build/hooks/useListboxNavigation.d.ts +7 -0
- package/build/hooks/useListboxNavigation.js +53 -0
- package/build/hooks/useListboxNavigation.js.map +1 -0
- package/build/hooks/usePortalSurface.cjs +2 -0
- package/build/hooks/usePortalSurface.cjs.map +1 -0
- package/build/hooks/usePortalSurface.d.ts +25 -0
- package/build/hooks/usePortalSurface.js +19 -0
- package/build/hooks/usePortalSurface.js.map +1 -0
- package/build/hooks/usePositioning.cjs +2 -0
- package/build/hooks/usePositioning.cjs.map +1 -0
- package/build/hooks/usePositioning.d.ts +13 -0
- package/build/hooks/usePositioning.js +74 -0
- package/build/hooks/usePositioning.js.map +1 -0
- package/build/hooks/useScrollLock.cjs +2 -0
- package/build/hooks/useScrollLock.cjs.map +1 -0
- package/build/hooks/useScrollLock.d.ts +2 -0
- package/build/hooks/useScrollLock.js +34 -0
- package/build/hooks/useScrollLock.js.map +1 -0
- package/build/hooks/useSheetViewport.cjs +2 -0
- package/build/hooks/useSheetViewport.cjs.map +1 -0
- package/build/hooks/useSheetViewport.d.ts +6 -0
- package/build/hooks/useSheetViewport.js +29 -0
- package/build/hooks/useSheetViewport.js.map +1 -0
- package/build/hooks/useStickToBottom.cjs +2 -0
- package/build/hooks/useStickToBottom.cjs.map +1 -0
- package/build/hooks/useStickToBottom.d.ts +12 -0
- package/build/hooks/useStickToBottom.js +39 -0
- package/build/hooks/useStickToBottom.js.map +1 -0
- package/build/hooks/useUiTheme.cjs +2 -0
- package/build/hooks/useUiTheme.cjs.map +1 -0
- package/build/hooks/useUiTheme.d.ts +7 -0
- package/build/hooks/useUiTheme.js +36 -0
- package/build/hooks/useUiTheme.js.map +1 -0
- package/build/hooks/useUiTokens.cjs +2 -0
- package/build/hooks/useUiTokens.cjs.map +1 -0
- package/build/hooks/useUiTokens.d.ts +11 -0
- package/build/hooks/useUiTokens.js +39 -0
- package/build/hooks/useUiTokens.js.map +1 -0
- package/build/hooks/useVirtualList.cjs +2 -0
- package/build/hooks/useVirtualList.cjs.map +1 -0
- package/build/hooks/useVirtualList.d.ts +13 -0
- package/build/hooks/useVirtualList.js +41 -0
- package/build/hooks/useVirtualList.js.map +1 -0
- package/build/index.cjs +2 -0
- package/build/index.cjs.map +1 -0
- package/build/index.d.ts +95 -0
- package/build/index.js +207 -0
- package/build/index.js.map +1 -0
- package/build/scss/_colors.generated.scss +119 -0
- package/build/scss/_index.scss +6 -0
- package/build/scss/_metrics.generated.scss +49 -0
- package/build/scss/_mixins.scss +710 -0
- package/build/scss/_variables.scss +51 -0
- package/build/styles/base.d.ts +0 -0
- package/build/styles.css +133 -0
- package/build/theme/UiProvider.cjs +2 -0
- package/build/theme/UiProvider.cjs.map +1 -0
- package/build/theme/UiProvider.d.ts +22 -0
- package/build/theme/UiProvider.js +30 -0
- package/build/theme/UiProvider.js.map +1 -0
- package/build/theme/UiThemeScript.cjs +2 -0
- package/build/theme/UiThemeScript.cjs.map +1 -0
- package/build/theme/UiThemeScript.d.ts +19 -0
- package/build/theme/UiThemeScript.js +8 -0
- package/build/theme/UiThemeScript.js.map +1 -0
- package/build/theme/context.cjs +2 -0
- package/build/theme/context.cjs.map +1 -0
- package/build/theme/context.d.ts +5 -0
- package/build/theme/context.js +8 -0
- package/build/theme/context.js.map +1 -0
- package/build/theme/initUi.cjs +2 -0
- package/build/theme/initUi.cjs.map +1 -0
- package/build/theme/initUi.d.ts +7 -0
- package/build/theme/initUi.js +10 -0
- package/build/theme/initUi.js.map +1 -0
- package/build/theme/palette.cjs +2 -0
- package/build/theme/palette.cjs.map +1 -0
- package/build/theme/palette.d.ts +219 -0
- package/build/theme/palette.js +148 -0
- package/build/theme/palette.js.map +1 -0
- package/build/theme/tokens.cjs +2 -0
- package/build/theme/tokens.cjs.map +1 -0
- package/build/theme/tokens.d.ts +225 -0
- package/build/theme/tokens.js +384 -0
- package/build/theme/tokens.js.map +1 -0
- package/build/types/charts/AreaChart/index.d.ts +14 -0
- package/build/types/charts/BarChart/index.d.ts +16 -0
- package/build/types/charts/BoxPlot/index.d.ts +43 -0
- package/build/types/charts/ComposedChart/index.d.ts +16 -0
- package/build/types/charts/Heatmap/index.d.ts +30 -0
- package/build/types/charts/Histogram/index.d.ts +29 -0
- package/build/types/charts/LineChart/index.d.ts +14 -0
- package/build/types/charts/PieChart/index.d.ts +36 -0
- package/build/types/charts/RadarChart/index.d.ts +40 -0
- package/build/types/charts/ScatterPlot/index.d.ts +41 -0
- package/build/types/charts/core/CartesianChart.d.ts +43 -0
- package/build/types/charts/core/ChartFrame.d.ts +55 -0
- package/build/types/charts/core/axes.d.ts +37 -0
- package/build/types/charts/core/cartesian.d.ts +80 -0
- package/build/types/charts/core/format.d.ts +19 -0
- package/build/types/charts/core/margins.d.ts +9 -0
- package/build/types/charts/core/palette.d.ts +13 -0
- package/build/types/charts/core/path.d.ts +24 -0
- package/build/types/charts/core/scale.d.ts +40 -0
- package/build/types/charts/core/series.d.ts +11 -0
- package/build/types/charts/core/spatial.d.ts +12 -0
- package/build/types/charts/core/stats.d.ts +34 -0
- package/build/types/charts/core/types.d.ts +31 -0
- package/build/types/charts/core/useChartWidth.d.ts +7 -0
- package/build/types/charts/index.d.ts +21 -0
- package/build/types/chat/ActionList/index.d.ts +46 -0
- package/build/types/chat/AppBar/index.d.ts +21 -0
- package/build/types/chat/ChatMessage/index.d.ts +24 -0
- package/build/types/chat/ChatThread/index.d.ts +24 -0
- package/build/types/chat/Citation/index.d.ts +15 -0
- package/build/types/chat/CodeBlock/format.d.ts +7 -0
- package/build/types/chat/CodeBlock/grammars.d.ts +44 -0
- package/build/types/chat/CodeBlock/highlight.d.ts +22 -0
- package/build/types/chat/CodeBlock/index.d.ts +33 -0
- package/build/types/chat/DescriptionList/index.d.ts +16 -0
- package/build/types/chat/Legend/index.d.ts +20 -0
- package/build/types/chat/MessageActions/index.d.ts +21 -0
- package/build/types/chat/PromptInput/index.d.ts +47 -0
- package/build/types/chat/PromptSuggestions/index.d.ts +25 -0
- package/build/types/chat/Prose/index.d.ts +15 -0
- package/build/types/chat/ReasoningBlock/index.d.ts +24 -0
- package/build/types/chat/ReasoningText/index.d.ts +14 -0
- package/build/types/chat/SegmentBar/index.d.ts +46 -0
- package/build/types/chat/SourceList/index.d.ts +25 -0
- package/build/types/chat/TerminalOutput/index.d.ts +25 -0
- package/build/types/chat/ToolCall/index.d.ts +41 -0
- package/build/types/chat/index.d.ts +26 -0
- package/build/types/combobox.type.d.ts +49 -0
- package/build/types/common-element-props.type.d.ts +8 -0
- package/build/types/helpers/class-name.helper.d.ts +3 -0
- package/build/types/helpers/component.helper.d.ts +13 -0
- package/build/types/helpers/label.helper.d.ts +12 -0
- package/build/types/hook.type.d.ts +36 -0
- package/build/types/link.type.d.ts +14 -0
- package/build/types/positioning.type.d.ts +38 -0
- package/build/types/theme/palette.d.ts +219 -0
- package/build/types/theme/tokens.d.ts +225 -0
- package/build/types/theme.type.d.ts +223 -0
- package/build/types/types/common-element-props.type.d.ts +8 -0
- package/build/types/types/link.type.d.ts +14 -0
- package/build/types/types/theme.type.d.ts +223 -0
- package/package.json +487 -4
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect as i } from "react";
|
|
3
|
+
let e = 0, o = null;
|
|
4
|
+
const r = () => {
|
|
5
|
+
if (typeof navigator > "u") return !1;
|
|
6
|
+
const t = navigator.userAgent;
|
|
7
|
+
return /iP(hone|ad|od)/.test(t) ? !0 : /Macintosh/.test(t) && navigator.maxTouchPoints > 1;
|
|
8
|
+
}, d = () => {
|
|
9
|
+
if (e += 1, e > 1) return;
|
|
10
|
+
const { body: t, style: n } = { body: document.body, style: document.documentElement.style }, l = window.scrollY;
|
|
11
|
+
o = {
|
|
12
|
+
overflow: t.style.overflow,
|
|
13
|
+
position: t.style.position,
|
|
14
|
+
top: t.style.top,
|
|
15
|
+
width: t.style.width,
|
|
16
|
+
paddingRight: t.style.paddingRight,
|
|
17
|
+
scrollY: l
|
|
18
|
+
};
|
|
19
|
+
const s = window.innerWidth - document.documentElement.clientWidth;
|
|
20
|
+
s > 0 && (t.style.paddingRight = `${s}px`), n.setProperty("scrollbar-gutter", "stable"), t.style.overflow = "hidden", r() && (t.style.position = "fixed", t.style.top = `${-l}px`, t.style.width = "100%");
|
|
21
|
+
}, c = () => {
|
|
22
|
+
if (e = Math.max(0, e - 1), e > 0 || !o) return;
|
|
23
|
+
const { body: t } = document, { scrollY: n } = o;
|
|
24
|
+
t.style.overflow = o.overflow, t.style.position = o.position, t.style.top = o.top, t.style.width = o.width, t.style.paddingRight = o.paddingRight, document.documentElement.style.removeProperty("scrollbar-gutter"), o = null, window.scrollTo(0, n);
|
|
25
|
+
}, y = (t = !0) => {
|
|
26
|
+
i(() => {
|
|
27
|
+
if (t)
|
|
28
|
+
return d(), c;
|
|
29
|
+
}, [t]);
|
|
30
|
+
};
|
|
31
|
+
export {
|
|
32
|
+
y as default
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=useScrollLock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScrollLock.js","sources":["../../src/hooks/useScrollLock.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\n\n/**\n * SAYFA KAYDIRMA KİLİDİ — sayaçlı, tek yerde.\n * @param isLocked Kilit bu örnek için etkin mi.\n */\n\n/* Kac tane acik panel var. */\nlet lockCount = 0;\n\n/** Kilit yazılmadan önceki hâl — SON kapanışta buradan geri yüklenir. */\nlet previous: {\n overflow: string;\n position: string;\n top: string;\n width: string;\n paddingRight: string;\n scrollY: number;\n} | null = null;\n\n/**\n * iOS Safari mi? `userAgent` üzerinden Apple dokunmatik cihazı testi hem kaldırılmamış hem daha\n * dar: iPadOS 13+ masaüstü UA'sı gönderdiği için…\n * ⚠ `navigator.platform` KULLANILMAZ — spesifikasyondan KALDIRILDI ve tarayıcılar onu\n * dondurulmuş/uydurma değerlerle döndürüyor.\n */\nconst isIOS = (): boolean => {\n if (typeof navigator === 'undefined') return false;\n\n const ua = navigator.userAgent;\n if (/iP(hone|ad|od)/.test(ua)) return true;\n\n /* iPadOS 13+ kendini masaüstü Safari gibi tanıtıyor. */\n return /Macintosh/.test(ua) && navigator.maxTouchPoints > 1;\n};\n\nconst lock = (): void => {\n lockCount += 1;\n if (lockCount > 1) return;\n\n const { body, style: rootStyle } = { body: document.body, style: document.documentElement.style };\n const scrollY = window.scrollY;\n\n previous = {\n overflow: body.style.overflow,\n position: body.style.position,\n top: body.style.top,\n width: body.style.width,\n paddingRight: body.style.paddingRight,\n scrollY,\n };\n\n /* Cubugun genisligi: `scrollbar-gutter` desteklenmiyorsa dolgu olarak yazilir. */\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n if (scrollbarWidth > 0) body.style.paddingRight = `${scrollbarWidth}px`;\n\n rootStyle.setProperty('scrollbar-gutter', 'stable');\n body.style.overflow = 'hidden';\n\n if (isIOS()) {\n body.style.position = 'fixed';\n body.style.top = `${-scrollY}px`;\n body.style.width = '100%';\n }\n};\n\nconst unlock = (): void => {\n lockCount = Math.max(0, lockCount - 1);\n if (lockCount > 0 || !previous) return;\n\n const { body } = document;\n const { scrollY } = previous;\n\n body.style.overflow = previous.overflow;\n body.style.position = previous.position;\n body.style.top = previous.top;\n body.style.width = previous.width;\n body.style.paddingRight = previous.paddingRight;\n document.documentElement.style.removeProperty('scrollbar-gutter');\n\n previous = null;\n\n /*\n * Govde sabitlenmisken kaydirma konumu sifirlaniyor; geri yazilmazsa kullanici pencereyi\n * kapattiginda sayfanin en basina duser.\n */\n window.scrollTo(0, scrollY);\n};\n\nconst useScrollLock = (isLocked = true): void => {\n useEffect(() => {\n if (!isLocked) return;\n\n lock();\n return unlock;\n }, [isLocked]);\n};\n\nexport default useScrollLock;\n"],"names":["lockCount","previous","isIOS","ua","lock","body","rootStyle","scrollY","scrollbarWidth","unlock","useScrollLock","isLocked","useEffect"],"mappings":";;AASA,IAAIA,IAAY,GAGZC,IAOO;AAQX,MAAMC,IAAQ,MAAe;AAC3B,MAAI,OAAO,YAAc,IAAa,QAAO;AAE7C,QAAMC,IAAK,UAAU;AACrB,SAAI,iBAAiB,KAAKA,CAAE,IAAU,KAG/B,YAAY,KAAKA,CAAE,KAAK,UAAU,iBAAiB;AAC5D,GAEMC,IAAO,MAAY;AAEvB,MADAJ,KAAa,GACTA,IAAY,EAAG;AAEnB,QAAM,EAAE,MAAAK,GAAM,OAAOC,EAAA,IAAc,EAAE,MAAM,SAAS,MAAM,OAAO,SAAS,gBAAgB,MAAA,GACpFC,IAAU,OAAO;AAEvB,EAAAN,IAAW;AAAA,IACT,UAAUI,EAAK,MAAM;AAAA,IACrB,UAAUA,EAAK,MAAM;AAAA,IACrB,KAAKA,EAAK,MAAM;AAAA,IAChB,OAAOA,EAAK,MAAM;AAAA,IAClB,cAAcA,EAAK,MAAM;AAAA,IACzB,SAAAE;AAAA,EAAA;AAIF,QAAMC,IAAiB,OAAO,aAAa,SAAS,gBAAgB;AACpE,EAAIA,IAAiB,MAAGH,EAAK,MAAM,eAAe,GAAGG,CAAc,OAEnEF,EAAU,YAAY,oBAAoB,QAAQ,GAClDD,EAAK,MAAM,WAAW,UAElBH,QACFG,EAAK,MAAM,WAAW,SACtBA,EAAK,MAAM,MAAM,GAAG,CAACE,CAAO,MAC5BF,EAAK,MAAM,QAAQ;AAEvB,GAEMI,IAAS,MAAY;AAEzB,MADAT,IAAY,KAAK,IAAI,GAAGA,IAAY,CAAC,GACjCA,IAAY,KAAK,CAACC,EAAU;AAEhC,QAAM,EAAE,MAAAI,MAAS,UACX,EAAE,SAAAE,MAAYN;AAEpB,EAAAI,EAAK,MAAM,WAAWJ,EAAS,UAC/BI,EAAK,MAAM,WAAWJ,EAAS,UAC/BI,EAAK,MAAM,MAAMJ,EAAS,KAC1BI,EAAK,MAAM,QAAQJ,EAAS,OAC5BI,EAAK,MAAM,eAAeJ,EAAS,cACnC,SAAS,gBAAgB,MAAM,eAAe,kBAAkB,GAEhEA,IAAW,MAMX,OAAO,SAAS,GAAGM,CAAO;AAC5B,GAEMG,IAAgB,CAACC,IAAW,OAAe;AAC/C,EAAAC,EAAU,MAAM;AACd,QAAKD;AAEL,aAAAP,EAAA,GACOK;AAAA,EACT,GAAG,CAACE,CAAQ,CAAC;AACf;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react"),u="--ui-sheet-height",c="--ui-sheet-inset-bottom";let o=0,r=0;const l=240,d=()=>{const e=window.visualViewport;if(!e||e.height<l)return;const t=window.innerHeight-e.height-e.offsetTop,i=document.documentElement;i.style.setProperty(c,`${Math.max(0,Math.round(t))}px`),i.style.setProperty(u,`${Math.round(e.height)}px`)},n=()=>{r||(r=window.requestAnimationFrame(()=>{r=0,d()}))},s=()=>{r&&(window.cancelAnimationFrame(r),r=0)},m=(e=!0)=>{a.useEffect(()=>{if(!e)return;const t=window.visualViewport;if(t)return o+=1,o===1&&(t.addEventListener("resize",n),t.addEventListener("scroll",n),window.addEventListener("orientationchange",n)),s(),d(),()=>{o-=1,!(o>0)&&(t.removeEventListener("resize",n),t.removeEventListener("scroll",n),window.removeEventListener("orientationchange",n),s(),document.documentElement.style.removeProperty(c),document.documentElement.style.removeProperty(u))}},[e])};exports.default=m;
|
|
2
|
+
//# sourceMappingURL=useSheetViewport.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSheetViewport.cjs","sources":["../../src/hooks/useSheetViewport.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\n\n/** Panelin kaplayabilecegi en fazla yukseklik — GORUNEN alanin yuksekligi. */\nconst HEIGHT_VAR = '--ui-sheet-height';\n\n/** Panelin dibinin, yerlesim gorunum alaninin dibinden ne kadar yukarida duracagi. */\nconst INSET_VAR = '--ui-sheet-inset-bottom';\n\n/* Tek olcum, tek dinleyici. */\nlet openCount = 0;\nlet frame = 0;\n\n/** Gorsel gorunum alanini olcup CSS degiskenlerine yazar. */\n/** MAKUL EN KÜÇÜK GÖRÜNÜM ALANI. */\nconst MIN_VIEWPORT_HEIGHT = 240;\n\nconst measure = () => {\n const viewport = window.visualViewport;\n if (!viewport) return;\n\n /* ABSURT OLCUM YAZILMAZ. */\n if (viewport.height < MIN_VIEWPORT_HEIGHT) return;\n\n const covered = window.innerHeight - viewport.height - viewport.offsetTop;\n const root = document.documentElement;\n\n root.style.setProperty(INSET_VAR, `${Math.max(0, Math.round(covered))}px`);\n root.style.setProperty(HEIGHT_VAR, `${Math.round(viewport.height)}px`);\n};\n\n/**\n * Kare başına bir ölçüm: klavye açılırken `resize` ve `scroll` ard arda düşüyor ve her ölçüm bir\n * yerleşim okuması.\n */\nconst schedule = () => {\n if (frame) return;\n frame = window.requestAnimationFrame(() => {\n frame = 0;\n measure();\n });\n};\n\n/** Bekleyen kareyi iptal eder ve bayrağı serbest bırakır. */\nconst cancelScheduled = () => {\n if (!frame) return;\n window.cancelAnimationFrame(frame);\n frame = 0;\n};\n\n/**\n * Alt sayfayi gorunen alana yaslar.\n * @param isActive Panel acik mi.\n */\nconst useSheetViewport = (isActive = true) => {\n useEffect(() => {\n if (!isActive) return;\n\n const viewport = window.visualViewport;\n if (!viewport) return;\n\n openCount += 1;\n\n if (openCount === 1) {\n viewport.addEventListener('resize', schedule);\n viewport.addEventListener('scroll', schedule);\n window.addEventListener('orientationchange', schedule);\n }\n\n /* Bekleyen kare IPTAL edilir ve olcum SENKRON yapilir. */\n cancelScheduled();\n measure();\n\n return () => {\n openCount -= 1;\n if (openCount > 0) return;\n\n viewport.removeEventListener('resize', schedule);\n viewport.removeEventListener('scroll', schedule);\n window.removeEventListener('orientationchange', schedule);\n\n cancelScheduled();\n\n /*\n * Degiskenler SILINIR, sifirlanmaz: yedek deger CSS'te (`var(…, 0px)` / `var(…, 100dvh)`) ve\n * panel kapaliyken dogru olan o.\n */\n document.documentElement.style.removeProperty(INSET_VAR);\n document.documentElement.style.removeProperty(HEIGHT_VAR);\n };\n }, [isActive]);\n};\n\nexport default useSheetViewport;\n"],"names":["HEIGHT_VAR","INSET_VAR","openCount","frame","MIN_VIEWPORT_HEIGHT","measure","viewport","covered","root","schedule","cancelScheduled","useSheetViewport","isActive","useEffect"],"mappings":"kJAIMA,EAAa,oBAGbC,EAAY,0BAGlB,IAAIC,EAAY,EACZC,EAAQ,EAIZ,MAAMC,EAAsB,IAEtBC,EAAU,IAAM,CACpB,MAAMC,EAAW,OAAO,eAIxB,GAHI,CAACA,GAGDA,EAAS,OAASF,EAAqB,OAE3C,MAAMG,EAAU,OAAO,YAAcD,EAAS,OAASA,EAAS,UAC1DE,EAAO,SAAS,gBAEtBA,EAAK,MAAM,YAAYP,EAAW,GAAG,KAAK,IAAI,EAAG,KAAK,MAAMM,CAAO,CAAC,CAAC,IAAI,EACzEC,EAAK,MAAM,YAAYR,EAAY,GAAG,KAAK,MAAMM,EAAS,MAAM,CAAC,IAAI,CACvE,EAMMG,EAAW,IAAM,CACjBN,IACJA,EAAQ,OAAO,sBAAsB,IAAM,CACzCA,EAAQ,EACRE,EAAA,CACF,CAAC,EACH,EAGMK,EAAkB,IAAM,CACvBP,IACL,OAAO,qBAAqBA,CAAK,EACjCA,EAAQ,EACV,EAMMQ,EAAmB,CAACC,EAAW,KAAS,CAC5CC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACD,EAAU,OAEf,MAAMN,EAAW,OAAO,eACxB,GAAKA,EAEL,OAAAJ,GAAa,EAETA,IAAc,IAChBI,EAAS,iBAAiB,SAAUG,CAAQ,EAC5CH,EAAS,iBAAiB,SAAUG,CAAQ,EAC5C,OAAO,iBAAiB,oBAAqBA,CAAQ,GAIvDC,EAAA,EACAL,EAAA,EAEO,IAAM,CACXH,GAAa,EACT,EAAAA,EAAY,KAEhBI,EAAS,oBAAoB,SAAUG,CAAQ,EAC/CH,EAAS,oBAAoB,SAAUG,CAAQ,EAC/C,OAAO,oBAAoB,oBAAqBA,CAAQ,EAExDC,EAAA,EAMA,SAAS,gBAAgB,MAAM,eAAeT,CAAS,EACvD,SAAS,gBAAgB,MAAM,eAAeD,CAAU,EAC1D,CACF,EAAG,CAACY,CAAQ,CAAC,CACf"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect as m } from "react";
|
|
3
|
+
const u = "--ui-sheet-height", c = "--ui-sheet-inset-bottom";
|
|
4
|
+
let r = 0, o = 0;
|
|
5
|
+
const a = 240, d = () => {
|
|
6
|
+
const e = window.visualViewport;
|
|
7
|
+
if (!e || e.height < a) return;
|
|
8
|
+
const t = window.innerHeight - e.height - e.offsetTop, i = document.documentElement;
|
|
9
|
+
i.style.setProperty(c, `${Math.max(0, Math.round(t))}px`), i.style.setProperty(u, `${Math.round(e.height)}px`);
|
|
10
|
+
}, n = () => {
|
|
11
|
+
o || (o = window.requestAnimationFrame(() => {
|
|
12
|
+
o = 0, d();
|
|
13
|
+
}));
|
|
14
|
+
}, s = () => {
|
|
15
|
+
o && (window.cancelAnimationFrame(o), o = 0);
|
|
16
|
+
}, h = (e = !0) => {
|
|
17
|
+
m(() => {
|
|
18
|
+
if (!e) return;
|
|
19
|
+
const t = window.visualViewport;
|
|
20
|
+
if (t)
|
|
21
|
+
return r += 1, r === 1 && (t.addEventListener("resize", n), t.addEventListener("scroll", n), window.addEventListener("orientationchange", n)), s(), d(), () => {
|
|
22
|
+
r -= 1, !(r > 0) && (t.removeEventListener("resize", n), t.removeEventListener("scroll", n), window.removeEventListener("orientationchange", n), s(), document.documentElement.style.removeProperty(c), document.documentElement.style.removeProperty(u));
|
|
23
|
+
};
|
|
24
|
+
}, [e]);
|
|
25
|
+
};
|
|
26
|
+
export {
|
|
27
|
+
h as default
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=useSheetViewport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSheetViewport.js","sources":["../../src/hooks/useSheetViewport.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\n\n/** Panelin kaplayabilecegi en fazla yukseklik — GORUNEN alanin yuksekligi. */\nconst HEIGHT_VAR = '--ui-sheet-height';\n\n/** Panelin dibinin, yerlesim gorunum alaninin dibinden ne kadar yukarida duracagi. */\nconst INSET_VAR = '--ui-sheet-inset-bottom';\n\n/* Tek olcum, tek dinleyici. */\nlet openCount = 0;\nlet frame = 0;\n\n/** Gorsel gorunum alanini olcup CSS degiskenlerine yazar. */\n/** MAKUL EN KÜÇÜK GÖRÜNÜM ALANI. */\nconst MIN_VIEWPORT_HEIGHT = 240;\n\nconst measure = () => {\n const viewport = window.visualViewport;\n if (!viewport) return;\n\n /* ABSURT OLCUM YAZILMAZ. */\n if (viewport.height < MIN_VIEWPORT_HEIGHT) return;\n\n const covered = window.innerHeight - viewport.height - viewport.offsetTop;\n const root = document.documentElement;\n\n root.style.setProperty(INSET_VAR, `${Math.max(0, Math.round(covered))}px`);\n root.style.setProperty(HEIGHT_VAR, `${Math.round(viewport.height)}px`);\n};\n\n/**\n * Kare başına bir ölçüm: klavye açılırken `resize` ve `scroll` ard arda düşüyor ve her ölçüm bir\n * yerleşim okuması.\n */\nconst schedule = () => {\n if (frame) return;\n frame = window.requestAnimationFrame(() => {\n frame = 0;\n measure();\n });\n};\n\n/** Bekleyen kareyi iptal eder ve bayrağı serbest bırakır. */\nconst cancelScheduled = () => {\n if (!frame) return;\n window.cancelAnimationFrame(frame);\n frame = 0;\n};\n\n/**\n * Alt sayfayi gorunen alana yaslar.\n * @param isActive Panel acik mi.\n */\nconst useSheetViewport = (isActive = true) => {\n useEffect(() => {\n if (!isActive) return;\n\n const viewport = window.visualViewport;\n if (!viewport) return;\n\n openCount += 1;\n\n if (openCount === 1) {\n viewport.addEventListener('resize', schedule);\n viewport.addEventListener('scroll', schedule);\n window.addEventListener('orientationchange', schedule);\n }\n\n /* Bekleyen kare IPTAL edilir ve olcum SENKRON yapilir. */\n cancelScheduled();\n measure();\n\n return () => {\n openCount -= 1;\n if (openCount > 0) return;\n\n viewport.removeEventListener('resize', schedule);\n viewport.removeEventListener('scroll', schedule);\n window.removeEventListener('orientationchange', schedule);\n\n cancelScheduled();\n\n /*\n * Degiskenler SILINIR, sifirlanmaz: yedek deger CSS'te (`var(…, 0px)` / `var(…, 100dvh)`) ve\n * panel kapaliyken dogru olan o.\n */\n document.documentElement.style.removeProperty(INSET_VAR);\n document.documentElement.style.removeProperty(HEIGHT_VAR);\n };\n }, [isActive]);\n};\n\nexport default useSheetViewport;\n"],"names":["HEIGHT_VAR","INSET_VAR","openCount","frame","MIN_VIEWPORT_HEIGHT","measure","viewport","covered","root","schedule","cancelScheduled","useSheetViewport","isActive","useEffect"],"mappings":";;AAIA,MAAMA,IAAa,qBAGbC,IAAY;AAGlB,IAAIC,IAAY,GACZC,IAAQ;AAIZ,MAAMC,IAAsB,KAEtBC,IAAU,MAAM;AACpB,QAAMC,IAAW,OAAO;AAIxB,MAHI,CAACA,KAGDA,EAAS,SAASF,EAAqB;AAE3C,QAAMG,IAAU,OAAO,cAAcD,EAAS,SAASA,EAAS,WAC1DE,IAAO,SAAS;AAEtB,EAAAA,EAAK,MAAM,YAAYP,GAAW,GAAG,KAAK,IAAI,GAAG,KAAK,MAAMM,CAAO,CAAC,CAAC,IAAI,GACzEC,EAAK,MAAM,YAAYR,GAAY,GAAG,KAAK,MAAMM,EAAS,MAAM,CAAC,IAAI;AACvE,GAMMG,IAAW,MAAM;AACrB,EAAIN,MACJA,IAAQ,OAAO,sBAAsB,MAAM;AACzC,IAAAA,IAAQ,GACRE,EAAA;AAAA,EACF,CAAC;AACH,GAGMK,IAAkB,MAAM;AAC5B,EAAKP,MACL,OAAO,qBAAqBA,CAAK,GACjCA,IAAQ;AACV,GAMMQ,IAAmB,CAACC,IAAW,OAAS;AAC5C,EAAAC,EAAU,MAAM;AACd,QAAI,CAACD,EAAU;AAEf,UAAMN,IAAW,OAAO;AACxB,QAAKA;AAEL,aAAAJ,KAAa,GAETA,MAAc,MAChBI,EAAS,iBAAiB,UAAUG,CAAQ,GAC5CH,EAAS,iBAAiB,UAAUG,CAAQ,GAC5C,OAAO,iBAAiB,qBAAqBA,CAAQ,IAIvDC,EAAA,GACAL,EAAA,GAEO,MAAM;AAEX,QADAH,KAAa,GACT,EAAAA,IAAY,OAEhBI,EAAS,oBAAoB,UAAUG,CAAQ,GAC/CH,EAAS,oBAAoB,UAAUG,CAAQ,GAC/C,OAAO,oBAAoB,qBAAqBA,CAAQ,GAExDC,EAAA,GAMA,SAAS,gBAAgB,MAAM,eAAeT,CAAS,GACvD,SAAS,gBAAgB,MAAM,eAAeD,CAAU;AAAA,MAC1D;AAAA,EACF,GAAG,CAACY,CAAQ,CAAC;AACf;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react"),h=require("../constants/scroll.constants.cjs"),b=t=>t.scrollHeight-t.scrollTop-t.clientHeight,T=()=>{var t;return((t=window.matchMedia)==null?void 0:t.call(window,"(prefers-reduced-motion: reduce)").matches)??!1},E=(t,c=!0)=>{const o=s.useRef(!0),[d,u]=s.useState(!0),n=s.useCallback(()=>{const e=t.current;e&&o.current&&(e.scrollTop=e.scrollHeight)},[t]);s.useEffect(()=>{const e=t.current;if(!c||!e)return;const l=()=>{const a=b(e)<h.STICK_TO_END_THRESHOLD;o.current=a,u(a)};n(),e.addEventListener("scroll",l,{passive:!0});const i=new MutationObserver(n);i.observe(e,{childList:!0,subtree:!0,characterData:!0});const r=typeof ResizeObserver>"u"?null:new ResizeObserver(n);return r==null||r.observe(e),()=>{e.removeEventListener("scroll",l),i.disconnect(),r==null||r.disconnect()}},[c,t,n]);const v=s.useCallback(()=>{const e=t.current;e&&(o.current=!0,u(!0),e.scrollTo({top:e.scrollHeight,behavior:T()?"instant":"smooth"}))},[t]);return{isAtEnd:d,scrollToEnd:v}};exports.default=E;
|
|
2
|
+
//# sourceMappingURL=useStickToBottom.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStickToBottom.cjs","sources":["../../src/hooks/useStickToBottom.ts"],"sourcesContent":["'use client';\n\nimport { type RefObject, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { STICK_TO_END_THRESHOLD } from '../constants/scroll.constants';\nimport type { StickToBottom } from '@/types/hook.type';\n\nconst distanceToEnd = (node: HTMLElement): number =>\n node.scrollHeight - node.scrollTop - node.clientHeight;\n\nconst prefersReducedMotion = (): boolean =>\n window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n\n/**\n * Kaydırma kutusunu SONA yapışık tutar — kullanıcı yukarı kaydırana kadar. Akan bir yanıt, canlı\n * terminal çıktısı, büyüyen akıl yürütme metni.\n * İçerik değişimini (`MutationObserver`: yeni satır, akan metin) ve kutunun kendi boyunu\n * (`ResizeObserver`: ekran klavyesi açılınca) izler; render'da yerleşim okumaz.\n * @param isEnabled `false` iken hiçbir şey izlenmez.\n * @example const { isAtEnd, scrollToEnd } = useStickToBottom(listRef);\n */\nconst useStickToBottom = (ref: RefObject<HTMLElement | null>, isEnabled = true): StickToBottom => {\n const isPinned = useRef(true);\n const [isAtEnd, setIsAtEnd] = useState(true);\n\n const stick = useCallback(() => {\n const node = ref.current;\n if (node && isPinned.current) node.scrollTop = node.scrollHeight;\n }, [ref]);\n\n useEffect(() => {\n const node = ref.current;\n if (!isEnabled || !node) return;\n\n const handleScroll = () => {\n const atEnd = distanceToEnd(node) < STICK_TO_END_THRESHOLD;\n isPinned.current = atEnd;\n setIsAtEnd(atEnd);\n };\n\n stick();\n node.addEventListener('scroll', handleScroll, { passive: true });\n\n const mutations = new MutationObserver(stick);\n mutations.observe(node, { childList: true, subtree: true, characterData: true });\n\n const resize = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(stick);\n resize?.observe(node);\n\n return () => {\n node.removeEventListener('scroll', handleScroll);\n mutations.disconnect();\n resize?.disconnect();\n };\n }, [isEnabled, ref, stick]);\n\n /* \"En yeniye in\": yeniden yapışır. Azaltılmış harekette ANİ. */\n const scrollToEnd = useCallback(() => {\n const node = ref.current;\n if (!node) return;\n\n isPinned.current = true;\n setIsAtEnd(true);\n node.scrollTo({\n top: node.scrollHeight,\n behavior: prefersReducedMotion() ? 'instant' : 'smooth',\n });\n }, [ref]);\n\n return { isAtEnd, scrollToEnd };\n};\n\nexport default useStickToBottom;\n"],"names":["distanceToEnd","node","prefersReducedMotion","_a","useStickToBottom","ref","isEnabled","isPinned","useRef","isAtEnd","setIsAtEnd","useState","stick","useCallback","useEffect","handleScroll","atEnd","STICK_TO_END_THRESHOLD","mutations","resize","scrollToEnd"],"mappings":"iMAMMA,EAAiBC,GACrBA,EAAK,aAAeA,EAAK,UAAYA,EAAK,aAEtCC,EAAuB,IAAA,OAC3B,QAAAC,EAAA,OAAO,aAAP,YAAAA,EAAA,YAAoB,oCAAoC,UAAW,IAU/DC,EAAmB,CAACC,EAAoCC,EAAY,KAAwB,CAChG,MAAMC,EAAWC,EAAAA,OAAO,EAAI,EACtB,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAI,EAErCC,EAAQC,EAAAA,YAAY,IAAM,CAC9B,MAAMZ,EAAOI,EAAI,QACbJ,GAAQM,EAAS,UAASN,EAAK,UAAYA,EAAK,aACtD,EAAG,CAACI,CAAG,CAAC,EAERS,EAAAA,UAAU,IAAM,CACd,MAAMb,EAAOI,EAAI,QACjB,GAAI,CAACC,GAAa,CAACL,EAAM,OAEzB,MAAMc,EAAe,IAAM,CACzB,MAAMC,EAAQhB,EAAcC,CAAI,EAAIgB,EAAAA,uBACpCV,EAAS,QAAUS,EACnBN,EAAWM,CAAK,CAClB,EAEAJ,EAAA,EACAX,EAAK,iBAAiB,SAAUc,EAAc,CAAE,QAAS,GAAM,EAE/D,MAAMG,EAAY,IAAI,iBAAiBN,CAAK,EAC5CM,EAAU,QAAQjB,EAAM,CAAE,UAAW,GAAM,QAAS,GAAM,cAAe,GAAM,EAE/E,MAAMkB,EAAS,OAAO,eAAmB,IAAc,KAAO,IAAI,eAAeP,CAAK,EACtF,OAAAO,GAAA,MAAAA,EAAQ,QAAQlB,GAET,IAAM,CACXA,EAAK,oBAAoB,SAAUc,CAAY,EAC/CG,EAAU,WAAA,EACVC,GAAA,MAAAA,EAAQ,YACV,CACF,EAAG,CAACb,EAAWD,EAAKO,CAAK,CAAC,EAG1B,MAAMQ,EAAcP,EAAAA,YAAY,IAAM,CACpC,MAAMZ,EAAOI,EAAI,QACZJ,IAELM,EAAS,QAAU,GACnBG,EAAW,EAAI,EACfT,EAAK,SAAS,CACZ,IAAKA,EAAK,aACV,SAAUC,EAAA,EAAyB,UAAY,QAAA,CAChD,EACH,EAAG,CAACG,CAAG,CAAC,EAER,MAAO,CAAE,QAAAI,EAAS,YAAAW,CAAA,CACpB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
import { StickToBottom } from '../types/hook.type';
|
|
3
|
+
/**
|
|
4
|
+
* Kaydırma kutusunu SONA yapışık tutar — kullanıcı yukarı kaydırana kadar. Akan bir yanıt, canlı
|
|
5
|
+
* terminal çıktısı, büyüyen akıl yürütme metni.
|
|
6
|
+
* İçerik değişimini (`MutationObserver`: yeni satır, akan metin) ve kutunun kendi boyunu
|
|
7
|
+
* (`ResizeObserver`: ekran klavyesi açılınca) izler; render'da yerleşim okumaz.
|
|
8
|
+
* @param isEnabled `false` iken hiçbir şey izlenmez.
|
|
9
|
+
* @example const { isAtEnd, scrollToEnd } = useStickToBottom(listRef);
|
|
10
|
+
*/
|
|
11
|
+
declare const useStickToBottom: (ref: RefObject<HTMLElement | null>, isEnabled?: boolean) => StickToBottom;
|
|
12
|
+
export default useStickToBottom;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useRef as m, useState as p, useCallback as d, useEffect as v } from "react";
|
|
3
|
+
import { STICK_TO_END_THRESHOLD as f } from "../constants/scroll.constants.js";
|
|
4
|
+
const E = (e) => e.scrollHeight - e.scrollTop - e.clientHeight, T = () => {
|
|
5
|
+
var e;
|
|
6
|
+
return ((e = window.matchMedia) == null ? void 0 : e.call(window, "(prefers-reduced-motion: reduce)").matches) ?? !1;
|
|
7
|
+
}, O = (e, s = !0) => {
|
|
8
|
+
const o = m(!0), [a, c] = p(!0), n = d(() => {
|
|
9
|
+
const t = e.current;
|
|
10
|
+
t && o.current && (t.scrollTop = t.scrollHeight);
|
|
11
|
+
}, [e]);
|
|
12
|
+
v(() => {
|
|
13
|
+
const t = e.current;
|
|
14
|
+
if (!s || !t) return;
|
|
15
|
+
const u = () => {
|
|
16
|
+
const l = E(t) < f;
|
|
17
|
+
o.current = l, c(l);
|
|
18
|
+
};
|
|
19
|
+
n(), t.addEventListener("scroll", u, { passive: !0 });
|
|
20
|
+
const i = new MutationObserver(n);
|
|
21
|
+
i.observe(t, { childList: !0, subtree: !0, characterData: !0 });
|
|
22
|
+
const r = typeof ResizeObserver > "u" ? null : new ResizeObserver(n);
|
|
23
|
+
return r == null || r.observe(t), () => {
|
|
24
|
+
t.removeEventListener("scroll", u), i.disconnect(), r == null || r.disconnect();
|
|
25
|
+
};
|
|
26
|
+
}, [s, e, n]);
|
|
27
|
+
const h = d(() => {
|
|
28
|
+
const t = e.current;
|
|
29
|
+
t && (o.current = !0, c(!0), t.scrollTo({
|
|
30
|
+
top: t.scrollHeight,
|
|
31
|
+
behavior: T() ? "instant" : "smooth"
|
|
32
|
+
}));
|
|
33
|
+
}, [e]);
|
|
34
|
+
return { isAtEnd: a, scrollToEnd: h };
|
|
35
|
+
};
|
|
36
|
+
export {
|
|
37
|
+
O as default
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=useStickToBottom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStickToBottom.js","sources":["../../src/hooks/useStickToBottom.ts"],"sourcesContent":["'use client';\n\nimport { type RefObject, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { STICK_TO_END_THRESHOLD } from '../constants/scroll.constants';\nimport type { StickToBottom } from '@/types/hook.type';\n\nconst distanceToEnd = (node: HTMLElement): number =>\n node.scrollHeight - node.scrollTop - node.clientHeight;\n\nconst prefersReducedMotion = (): boolean =>\n window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n\n/**\n * Kaydırma kutusunu SONA yapışık tutar — kullanıcı yukarı kaydırana kadar. Akan bir yanıt, canlı\n * terminal çıktısı, büyüyen akıl yürütme metni.\n * İçerik değişimini (`MutationObserver`: yeni satır, akan metin) ve kutunun kendi boyunu\n * (`ResizeObserver`: ekran klavyesi açılınca) izler; render'da yerleşim okumaz.\n * @param isEnabled `false` iken hiçbir şey izlenmez.\n * @example const { isAtEnd, scrollToEnd } = useStickToBottom(listRef);\n */\nconst useStickToBottom = (ref: RefObject<HTMLElement | null>, isEnabled = true): StickToBottom => {\n const isPinned = useRef(true);\n const [isAtEnd, setIsAtEnd] = useState(true);\n\n const stick = useCallback(() => {\n const node = ref.current;\n if (node && isPinned.current) node.scrollTop = node.scrollHeight;\n }, [ref]);\n\n useEffect(() => {\n const node = ref.current;\n if (!isEnabled || !node) return;\n\n const handleScroll = () => {\n const atEnd = distanceToEnd(node) < STICK_TO_END_THRESHOLD;\n isPinned.current = atEnd;\n setIsAtEnd(atEnd);\n };\n\n stick();\n node.addEventListener('scroll', handleScroll, { passive: true });\n\n const mutations = new MutationObserver(stick);\n mutations.observe(node, { childList: true, subtree: true, characterData: true });\n\n const resize = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(stick);\n resize?.observe(node);\n\n return () => {\n node.removeEventListener('scroll', handleScroll);\n mutations.disconnect();\n resize?.disconnect();\n };\n }, [isEnabled, ref, stick]);\n\n /* \"En yeniye in\": yeniden yapışır. Azaltılmış harekette ANİ. */\n const scrollToEnd = useCallback(() => {\n const node = ref.current;\n if (!node) return;\n\n isPinned.current = true;\n setIsAtEnd(true);\n node.scrollTo({\n top: node.scrollHeight,\n behavior: prefersReducedMotion() ? 'instant' : 'smooth',\n });\n }, [ref]);\n\n return { isAtEnd, scrollToEnd };\n};\n\nexport default useStickToBottom;\n"],"names":["distanceToEnd","node","prefersReducedMotion","_a","useStickToBottom","ref","isEnabled","isPinned","useRef","isAtEnd","setIsAtEnd","useState","stick","useCallback","useEffect","handleScroll","atEnd","STICK_TO_END_THRESHOLD","mutations","resize","scrollToEnd"],"mappings":";;;AAMA,MAAMA,IAAgB,CAACC,MACrBA,EAAK,eAAeA,EAAK,YAAYA,EAAK,cAEtCC,IAAuB,MAAA;;AAC3B,WAAAC,IAAA,OAAO,eAAP,gBAAAA,EAAA,aAAoB,oCAAoC,YAAW;AAAA,GAU/DC,IAAmB,CAACC,GAAoCC,IAAY,OAAwB;AAChG,QAAMC,IAAWC,EAAO,EAAI,GACtB,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAI,GAErCC,IAAQC,EAAY,MAAM;AAC9B,UAAMZ,IAAOI,EAAI;AACjB,IAAIJ,KAAQM,EAAS,YAASN,EAAK,YAAYA,EAAK;AAAA,EACtD,GAAG,CAACI,CAAG,CAAC;AAER,EAAAS,EAAU,MAAM;AACd,UAAMb,IAAOI,EAAI;AACjB,QAAI,CAACC,KAAa,CAACL,EAAM;AAEzB,UAAMc,IAAe,MAAM;AACzB,YAAMC,IAAQhB,EAAcC,CAAI,IAAIgB;AACpC,MAAAV,EAAS,UAAUS,GACnBN,EAAWM,CAAK;AAAA,IAClB;AAEA,IAAAJ,EAAA,GACAX,EAAK,iBAAiB,UAAUc,GAAc,EAAE,SAAS,IAAM;AAE/D,UAAMG,IAAY,IAAI,iBAAiBN,CAAK;AAC5C,IAAAM,EAAU,QAAQjB,GAAM,EAAE,WAAW,IAAM,SAAS,IAAM,eAAe,IAAM;AAE/E,UAAMkB,IAAS,OAAO,iBAAmB,MAAc,OAAO,IAAI,eAAeP,CAAK;AACtF,WAAAO,KAAA,QAAAA,EAAQ,QAAQlB,IAET,MAAM;AACX,MAAAA,EAAK,oBAAoB,UAAUc,CAAY,GAC/CG,EAAU,WAAA,GACVC,KAAA,QAAAA,EAAQ;AAAA,IACV;AAAA,EACF,GAAG,CAACb,GAAWD,GAAKO,CAAK,CAAC;AAG1B,QAAMQ,IAAcP,EAAY,MAAM;AACpC,UAAMZ,IAAOI,EAAI;AACjB,IAAKJ,MAELM,EAAS,UAAU,IACnBG,EAAW,EAAI,GACfT,EAAK,SAAS;AAAA,MACZ,KAAKA,EAAK;AAAA,MACV,UAAUC,EAAA,IAAyB,YAAY;AAAA,IAAA,CAChD;AAAA,EACH,GAAG,CAACG,CAAG,CAAC;AAER,SAAO,EAAE,SAAAI,GAAS,aAAAW,EAAA;AACpB;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react"),c=require("@handijit/utils"),n=require("../helpers/theme.helper.cjs"),m=()=>{var e;return c.isClient()&&((e=window.matchMedia)!=null&&e.call(window,"(prefers-color-scheme: dark)").matches)?"dark":"light"},S=()=>{if(!c.isClient())return"system";const e=document.documentElement.getAttribute(n.THEME_ATTRIBUTE);return e==="dark"||e==="light"?e:"system"},T=()=>{const[e,o]=s.useState("light"),[l,u]=s.useState("light"),[d,h]=s.useState(!1);s.useEffect(()=>{o(S()),u(m()),h(!0)},[]),s.useEffect(()=>{if(!c.isClient()||!window.matchMedia)return;const r=window.matchMedia("(prefers-color-scheme: dark)"),t=()=>u(m());return r.addEventListener("change",t),()=>r.removeEventListener("change",t)},[]);const i=e==="system"?l:e,a=s.useCallback(r=>{if(!c.isClient())return;const t=document.documentElement;t.classList.add(n.THEME_SWITCHING_CLASS),r==="system"?t.removeAttribute(n.THEME_ATTRIBUTE):t.setAttribute(n.THEME_ATTRIBUTE,r),o(r),window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>t.classList.remove(n.THEME_SWITCHING_CLASS))})},[]),E=s.useCallback(()=>a(i==="dark"?"light":"dark"),[i,a]);return{scheme:i,preference:e,setScheme:a,toggle:E,isReady:d}};exports.default=T;
|
|
2
|
+
//# sourceMappingURL=useUiTheme.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUiTheme.cjs","sources":["../../src/hooks/useUiTheme.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { isClient } from '@handijit/utils';\n\nimport { THEME_ATTRIBUTE, THEME_SWITCHING_CLASS } from '../helpers/theme.helper';\nimport type { UiColorPreference, UiColorScheme, UiThemeState } from '@/types/theme.type';\n\n/** Sistem tercihini okur. */\nconst readSystemScheme = (): UiColorScheme =>\n isClient() && window.matchMedia?.('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n\n/** `<html>` üzerindeki AÇIK seçim; öznitelik yoksa `system`. */\nconst readPreference = (): UiColorPreference => {\n if (!isClient()) return 'system';\n\n const attribute = document.documentElement.getAttribute(THEME_ATTRIBUTE);\n return attribute === 'dark' || attribute === 'light' ? attribute : 'system';\n};\n\n/**\n * Açık/koyu seçimini okur ve değiştirir.\n * @example const { scheme, toggle, isReady } = useUiTheme();\n */\nconst useUiTheme = (): UiThemeState => {\n /*\n * Ilk deger SABIT 'light': sunucuda `document` yok ve istemcideki gercek degeri ilk render'da\n * okumak hidrasyon uyusmazligi uretiyordu (sunucu \"light\"…\n */\n const [preference, setPreferenceState] = useState<UiColorPreference>('light');\n const [systemScheme, setSystemScheme] = useState<UiColorScheme>('light');\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n setPreferenceState(readPreference());\n setSystemScheme(readSystemScheme());\n setIsReady(true);\n }, []);\n\n /* Sistem tercihi HER ZAMAN izlenir, `preference` ne olursa olsun. */\n useEffect(() => {\n if (!isClient() || !window.matchMedia) return;\n\n const query = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = () => setSystemScheme(readSystemScheme());\n\n query.addEventListener('change', handleChange);\n return () => query.removeEventListener('change', handleChange);\n }, []);\n\n const scheme: UiColorScheme = preference === 'system' ? systemScheme : preference;\n\n const setScheme = useCallback((next: UiColorPreference) => {\n if (!isClient()) return;\n\n const root = document.documentElement;\n\n root.classList.add(THEME_SWITCHING_CLASS);\n\n /*\n * `system` bir DEGER degil, degerin YOKLUGU: oznitelik silinir ve `_tokens.generated.scss`\n * icindeki `:not([data-ui-theme])` sorgusu devreye girer.…\n */\n if (next === 'system') root.removeAttribute(THEME_ATTRIBUTE);\n else root.setAttribute(THEME_ATTRIBUTE, next);\n\n setPreferenceState(next);\n\n /* Sinif BIR SONRAKI karede kaldirilir. */\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => root.classList.remove(THEME_SWITCHING_CLASS));\n });\n }, []);\n\n const toggle = useCallback(\n () => setScheme(scheme === 'dark' ? 'light' : 'dark'),\n [scheme, setScheme],\n );\n\n return { scheme, preference, setScheme, toggle, isReady };\n};\n\nexport default useUiTheme;\n"],"names":["readSystemScheme","isClient","_a","readPreference","attribute","THEME_ATTRIBUTE","useUiTheme","preference","setPreferenceState","useState","systemScheme","setSystemScheme","isReady","setIsReady","useEffect","query","handleChange","scheme","setScheme","useCallback","next","root","THEME_SWITCHING_CLASS","toggle"],"mappings":"wNASMA,EAAmB,IAAA,OACvBC,OAAAA,EAAAA,SAAA,KAAcC,EAAA,OAAO,aAAP,MAAAA,EAAA,YAAoB,gCAAgC,SAAU,OAAS,SAGjFC,EAAiB,IAAyB,CAC9C,GAAI,CAACF,EAAAA,SAAA,EAAY,MAAO,SAExB,MAAMG,EAAY,SAAS,gBAAgB,aAAaC,EAAAA,eAAe,EACvE,OAAOD,IAAc,QAAUA,IAAc,QAAUA,EAAY,QACrE,EAMME,EAAa,IAAoB,CAKrC,KAAM,CAACC,EAAYC,CAAkB,EAAIC,EAAAA,SAA4B,OAAO,EACtE,CAACC,EAAcC,CAAe,EAAIF,EAAAA,SAAwB,OAAO,EACjE,CAACG,EAASC,CAAU,EAAIJ,EAAAA,SAAS,EAAK,EAE5CK,EAAAA,UAAU,IAAM,CACdN,EAAmBL,GAAgB,EACnCQ,EAAgBX,GAAkB,EAClCa,EAAW,EAAI,CACjB,EAAG,CAAA,CAAE,EAGLC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACb,EAAAA,SAAA,GAAc,CAAC,OAAO,WAAY,OAEvC,MAAMc,EAAQ,OAAO,WAAW,8BAA8B,EACxDC,EAAe,IAAML,EAAgBX,GAAkB,EAE7D,OAAAe,EAAM,iBAAiB,SAAUC,CAAY,EACtC,IAAMD,EAAM,oBAAoB,SAAUC,CAAY,CAC/D,EAAG,CAAA,CAAE,EAEL,MAAMC,EAAwBV,IAAe,SAAWG,EAAeH,EAEjEW,EAAYC,cAAaC,GAA4B,CACzD,GAAI,CAACnB,EAAAA,WAAY,OAEjB,MAAMoB,EAAO,SAAS,gBAEtBA,EAAK,UAAU,IAAIC,uBAAqB,EAMpCF,IAAS,SAAUC,EAAK,gBAAgBhB,EAAAA,eAAe,EACtDgB,EAAK,aAAahB,EAAAA,gBAAiBe,CAAI,EAE5CZ,EAAmBY,CAAI,EAGvB,OAAO,sBAAsB,IAAM,CACjC,OAAO,sBAAsB,IAAMC,EAAK,UAAU,OAAOC,EAAAA,qBAAqB,CAAC,CACjF,CAAC,CACH,EAAG,CAAA,CAAE,EAECC,EAASJ,EAAAA,YACb,IAAMD,EAAUD,IAAW,OAAS,QAAU,MAAM,EACpD,CAACA,EAAQC,CAAS,CAAA,EAGpB,MAAO,CAAE,OAAAD,EAAQ,WAAAV,EAAY,UAAAW,EAAW,OAAAK,EAAQ,QAAAX,CAAA,CAClD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState as c, useEffect as d, useCallback as u } from "react";
|
|
3
|
+
import { isClient as r } from "@handijit/utils";
|
|
4
|
+
import { THEME_SWITCHING_CLASS as h, THEME_ATTRIBUTE as m } from "../helpers/theme.helper.js";
|
|
5
|
+
const l = () => {
|
|
6
|
+
var e;
|
|
7
|
+
return r() && ((e = window.matchMedia) != null && e.call(window, "(prefers-color-scheme: dark)").matches) ? "dark" : "light";
|
|
8
|
+
}, y = () => {
|
|
9
|
+
if (!r()) return "system";
|
|
10
|
+
const e = document.documentElement.getAttribute(m);
|
|
11
|
+
return e === "dark" || e === "light" ? e : "system";
|
|
12
|
+
}, A = () => {
|
|
13
|
+
const [e, a] = c("light"), [f, i] = c("light"), [g, S] = c(!1);
|
|
14
|
+
d(() => {
|
|
15
|
+
a(y()), i(l()), S(!0);
|
|
16
|
+
}, []), d(() => {
|
|
17
|
+
if (!r() || !window.matchMedia) return;
|
|
18
|
+
const s = window.matchMedia("(prefers-color-scheme: dark)"), t = () => i(l());
|
|
19
|
+
return s.addEventListener("change", t), () => s.removeEventListener("change", t);
|
|
20
|
+
}, []);
|
|
21
|
+
const n = e === "system" ? f : e, o = u((s) => {
|
|
22
|
+
if (!r()) return;
|
|
23
|
+
const t = document.documentElement;
|
|
24
|
+
t.classList.add(h), s === "system" ? t.removeAttribute(m) : t.setAttribute(m, s), a(s), window.requestAnimationFrame(() => {
|
|
25
|
+
window.requestAnimationFrame(() => t.classList.remove(h));
|
|
26
|
+
});
|
|
27
|
+
}, []), w = u(
|
|
28
|
+
() => o(n === "dark" ? "light" : "dark"),
|
|
29
|
+
[n, o]
|
|
30
|
+
);
|
|
31
|
+
return { scheme: n, preference: e, setScheme: o, toggle: w, isReady: g };
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
A as default
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=useUiTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUiTheme.js","sources":["../../src/hooks/useUiTheme.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { isClient } from '@handijit/utils';\n\nimport { THEME_ATTRIBUTE, THEME_SWITCHING_CLASS } from '../helpers/theme.helper';\nimport type { UiColorPreference, UiColorScheme, UiThemeState } from '@/types/theme.type';\n\n/** Sistem tercihini okur. */\nconst readSystemScheme = (): UiColorScheme =>\n isClient() && window.matchMedia?.('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n\n/** `<html>` üzerindeki AÇIK seçim; öznitelik yoksa `system`. */\nconst readPreference = (): UiColorPreference => {\n if (!isClient()) return 'system';\n\n const attribute = document.documentElement.getAttribute(THEME_ATTRIBUTE);\n return attribute === 'dark' || attribute === 'light' ? attribute : 'system';\n};\n\n/**\n * Açık/koyu seçimini okur ve değiştirir.\n * @example const { scheme, toggle, isReady } = useUiTheme();\n */\nconst useUiTheme = (): UiThemeState => {\n /*\n * Ilk deger SABIT 'light': sunucuda `document` yok ve istemcideki gercek degeri ilk render'da\n * okumak hidrasyon uyusmazligi uretiyordu (sunucu \"light\"…\n */\n const [preference, setPreferenceState] = useState<UiColorPreference>('light');\n const [systemScheme, setSystemScheme] = useState<UiColorScheme>('light');\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n setPreferenceState(readPreference());\n setSystemScheme(readSystemScheme());\n setIsReady(true);\n }, []);\n\n /* Sistem tercihi HER ZAMAN izlenir, `preference` ne olursa olsun. */\n useEffect(() => {\n if (!isClient() || !window.matchMedia) return;\n\n const query = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = () => setSystemScheme(readSystemScheme());\n\n query.addEventListener('change', handleChange);\n return () => query.removeEventListener('change', handleChange);\n }, []);\n\n const scheme: UiColorScheme = preference === 'system' ? systemScheme : preference;\n\n const setScheme = useCallback((next: UiColorPreference) => {\n if (!isClient()) return;\n\n const root = document.documentElement;\n\n root.classList.add(THEME_SWITCHING_CLASS);\n\n /*\n * `system` bir DEGER degil, degerin YOKLUGU: oznitelik silinir ve `_tokens.generated.scss`\n * icindeki `:not([data-ui-theme])` sorgusu devreye girer.…\n */\n if (next === 'system') root.removeAttribute(THEME_ATTRIBUTE);\n else root.setAttribute(THEME_ATTRIBUTE, next);\n\n setPreferenceState(next);\n\n /* Sinif BIR SONRAKI karede kaldirilir. */\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => root.classList.remove(THEME_SWITCHING_CLASS));\n });\n }, []);\n\n const toggle = useCallback(\n () => setScheme(scheme === 'dark' ? 'light' : 'dark'),\n [scheme, setScheme],\n );\n\n return { scheme, preference, setScheme, toggle, isReady };\n};\n\nexport default useUiTheme;\n"],"names":["readSystemScheme","isClient","_a","readPreference","attribute","THEME_ATTRIBUTE","useUiTheme","preference","setPreferenceState","useState","systemScheme","setSystemScheme","isReady","setIsReady","useEffect","query","handleChange","scheme","setScheme","useCallback","next","root","THEME_SWITCHING_CLASS","toggle"],"mappings":";;;;AASA,MAAMA,IAAmB,MAAA;;AACvB,SAAAC,EAAA,OAAcC,IAAA,OAAO,eAAP,QAAAA,EAAA,aAAoB,gCAAgC,WAAU,SAAS;AAAA,GAGjFC,IAAiB,MAAyB;AAC9C,MAAI,CAACF,EAAA,EAAY,QAAO;AAExB,QAAMG,IAAY,SAAS,gBAAgB,aAAaC,CAAe;AACvE,SAAOD,MAAc,UAAUA,MAAc,UAAUA,IAAY;AACrE,GAMME,IAAa,MAAoB;AAKrC,QAAM,CAACC,GAAYC,CAAkB,IAAIC,EAA4B,OAAO,GACtE,CAACC,GAAcC,CAAe,IAAIF,EAAwB,OAAO,GACjE,CAACG,GAASC,CAAU,IAAIJ,EAAS,EAAK;AAE5C,EAAAK,EAAU,MAAM;AACd,IAAAN,EAAmBL,GAAgB,GACnCQ,EAAgBX,GAAkB,GAClCa,EAAW,EAAI;AAAA,EACjB,GAAG,CAAA,CAAE,GAGLC,EAAU,MAAM;AACd,QAAI,CAACb,EAAA,KAAc,CAAC,OAAO,WAAY;AAEvC,UAAMc,IAAQ,OAAO,WAAW,8BAA8B,GACxDC,IAAe,MAAML,EAAgBX,GAAkB;AAE7D,WAAAe,EAAM,iBAAiB,UAAUC,CAAY,GACtC,MAAMD,EAAM,oBAAoB,UAAUC,CAAY;AAAA,EAC/D,GAAG,CAAA,CAAE;AAEL,QAAMC,IAAwBV,MAAe,WAAWG,IAAeH,GAEjEW,IAAYC,EAAY,CAACC,MAA4B;AACzD,QAAI,CAACnB,IAAY;AAEjB,UAAMoB,IAAO,SAAS;AAEtB,IAAAA,EAAK,UAAU,IAAIC,CAAqB,GAMpCF,MAAS,WAAUC,EAAK,gBAAgBhB,CAAe,IACtDgB,EAAK,aAAahB,GAAiBe,CAAI,GAE5CZ,EAAmBY,CAAI,GAGvB,OAAO,sBAAsB,MAAM;AACjC,aAAO,sBAAsB,MAAMC,EAAK,UAAU,OAAOC,CAAqB,CAAC;AAAA,IACjF,CAAC;AAAA,EACH,GAAG,CAAA,CAAE,GAECC,IAASJ;AAAA,IACb,MAAMD,EAAUD,MAAW,SAAS,UAAU,MAAM;AAAA,IACpD,CAACA,GAAQC,CAAS;AAAA,EAAA;AAGpB,SAAO,EAAE,QAAAD,GAAQ,YAAAV,GAAY,WAAAW,GAAW,QAAAK,GAAQ,SAAAX,EAAA;AAClD;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const m=require("react"),v=require("@handijit/utils"),i=require("../helpers/theme.helper.cjs"),g=require("../theme/context.cjs"),E="currentColor",T=e=>{const r=getComputedStyle(document.documentElement);return Object.fromEntries(e.map(t=>[t,r.getPropertyValue(`${i.TOKEN_PREFIX}${t}`).trim()||E]))},f=(e,r)=>Object.keys(e).every(t=>e[t]===r[t]),p=e=>{const r=e.join("|"),{theme:t}=g.useUi(),[b,h]=m.useState(()=>Object.fromEntries(e.map(s=>[s,E])));return m.useEffect(()=>{var a;if(!v.isClient())return;const s=r.split("|"),o=()=>h(u=>{const d=T(s);return f(u,d)&&Object.keys(u).length===s.length?u:d});o();const c=new MutationObserver(o);c.observe(document.documentElement,{attributes:!0,attributeFilter:[i.THEME_ATTRIBUTE,"style"]}),c.observe(document.head,{childList:!0});const l=document.getElementById(i.THEME_STYLE_ID);l&&c.observe(l,{characterData:!0,childList:!0,subtree:!0});const n=(a=window.matchMedia)==null?void 0:a.call(window,"(prefers-color-scheme: dark)");return n==null||n.addEventListener("change",o),()=>{c.disconnect(),n==null||n.removeEventListener("change",o)}},[r,t]),b};exports.default=p;
|
|
2
|
+
//# sourceMappingURL=useUiTokens.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUiTokens.cjs","sources":["../../src/hooks/useUiTokens.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nimport { isClient } from '@handijit/utils';\n\nimport { THEME_ATTRIBUTE, THEME_STYLE_ID, TOKEN_PREFIX } from '../helpers/theme.helper';\nimport { useUi } from '../theme/context';\nimport type { UiToken } from '@/types/theme.type';\n\n/** Sunucuda ve ilk karede dönen değer: çizim kütüphaneleri boş dizeyi siyah boyuyor. */\nconst FALLBACK = 'currentColor';\n\nconst read = <TName extends UiToken>(names: readonly TName[]): Record<TName, string> => {\n const style = getComputedStyle(document.documentElement);\n\n return Object.fromEntries(\n names.map(name => [name, style.getPropertyValue(`${TOKEN_PREFIX}${name}`).trim() || FALLBACK]),\n ) as Record<TName, string>;\n};\n\nconst isSame = (first: Record<string, string>, second: Record<string, string>): boolean =>\n Object.keys(first).every(key => first[key] === second[key]);\n\n/**\n * Token'ların ÇÖZÜLMÜŞ değerleri — CSS değişkeni okuyamayan çizim kütüphaneleri için (recharts\n * `stroke`/`fill` prop'ları `var(--…)` kabul etmiyor).\n * Tema değiştiğinde (açık seçim, sistem tercihi, `UiProvider` ya da `initUi` ezmesi)\n * yeniden çizer.\n * ⚠ Sunucu çıktısında ve hidrasyondan önceki ilk karede her değer `currentColor`.\n * @example const colors = useUiTokens(['series-1', 'series-2', 'border']);\n */\nconst useUiTokens = <TName extends UiToken>(names: readonly TName[]): Record<TName, string> => {\n /* Dizi her render'da yeni nesne olabilir; abonelik ADLARA bağlanır, kimliğe değil. */\n const key = names.join('|');\n /*\n * Sağlayıcının ezmesi ağaçtaki `<style>`da; tema ilk kez verildiğinde o etiket `<head>`e değil\n * ağaca eklenir ve aşağıdaki gözlemci onu görmez. Bağlamdaki tema nesnesi yalnızca İÇERİK\n * değişince yenilenir (sağlayıcının `themeKey`i).\n */\n const { theme } = useUi();\n\n const [values, setValues] = useState(\n () => Object.fromEntries(names.map(name => [name, FALLBACK])) as Record<TName, string>,\n );\n\n useEffect(() => {\n if (!isClient()) return;\n\n const list = key.split('|') as TName[];\n const update = () =>\n setValues(previous => {\n const next = read(list);\n return isSame(previous, next) && Object.keys(previous).length === list.length\n ? previous\n : next;\n });\n\n update();\n\n /* Açık seçim ve satır içi ezme `<html>`de; `initUi` ezmesi `<head>`deki tek `<style>`da. */\n const observer = new MutationObserver(update);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [THEME_ATTRIBUTE, 'style'],\n });\n observer.observe(document.head, { childList: true });\n\n const overrides = document.getElementById(THEME_STYLE_ID);\n if (overrides)\n observer.observe(overrides, { characterData: true, childList: true, subtree: true });\n\n const query = window.matchMedia?.('(prefers-color-scheme: dark)');\n query?.addEventListener('change', update);\n\n return () => {\n observer.disconnect();\n query?.removeEventListener('change', update);\n };\n }, [key, theme]);\n\n return values;\n};\n\nexport default useUiTokens;\n"],"names":["FALLBACK","read","names","style","name","TOKEN_PREFIX","isSame","first","second","key","useUiTokens","theme","useUi","values","setValues","useState","useEffect","isClient","list","update","previous","next","observer","THEME_ATTRIBUTE","overrides","THEME_STYLE_ID","query","_a"],"mappings":"0PAUMA,EAAW,eAEXC,EAA+BC,GAAmD,CACtF,MAAMC,EAAQ,iBAAiB,SAAS,eAAe,EAEvD,OAAO,OAAO,YACZD,EAAM,IAAIE,GAAQ,CAACA,EAAMD,EAAM,iBAAiB,GAAGE,EAAAA,YAAY,GAAGD,CAAI,EAAE,EAAE,KAAA,GAAUJ,CAAQ,CAAC,CAAA,CAEjG,EAEMM,EAAS,CAACC,EAA+BC,IAC7C,OAAO,KAAKD,CAAK,EAAE,SAAaA,EAAME,CAAG,IAAMD,EAAOC,CAAG,CAAC,EAUtDC,EAAsCR,GAAmD,CAE7F,MAAMO,EAAMP,EAAM,KAAK,GAAG,EAMpB,CAAE,MAAAS,CAAA,EAAUC,QAAA,EAEZ,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAC1B,IAAM,OAAO,YAAYb,EAAM,OAAY,CAACE,EAAMJ,CAAQ,CAAC,CAAC,CAAA,EAG9DgB,OAAAA,EAAAA,UAAU,IAAM,OACd,GAAI,CAACC,EAAAA,WAAY,OAEjB,MAAMC,EAAOT,EAAI,MAAM,GAAG,EACpBU,EAAS,IACbL,EAAUM,GAAY,CACpB,MAAMC,EAAOpB,EAAKiB,CAAI,EACtB,OAAOZ,EAAOc,EAAUC,CAAI,GAAK,OAAO,KAAKD,CAAQ,EAAE,SAAWF,EAAK,OACnEE,EACAC,CACN,CAAC,EAEHF,EAAA,EAGA,MAAMG,EAAW,IAAI,iBAAiBH,CAAM,EAC5CG,EAAS,QAAQ,SAAS,gBAAiB,CACzC,WAAY,GACZ,gBAAiB,CAACC,EAAAA,gBAAiB,OAAO,CAAA,CAC3C,EACDD,EAAS,QAAQ,SAAS,KAAM,CAAE,UAAW,GAAM,EAEnD,MAAME,EAAY,SAAS,eAAeC,gBAAc,EACpDD,GACFF,EAAS,QAAQE,EAAW,CAAE,cAAe,GAAM,UAAW,GAAM,QAAS,GAAM,EAErF,MAAME,GAAQC,EAAA,OAAO,aAAP,YAAAA,EAAA,YAAoB,gCAClC,OAAAD,GAAA,MAAAA,EAAO,iBAAiB,SAAUP,GAE3B,IAAM,CACXG,EAAS,WAAA,EACTI,GAAA,MAAAA,EAAO,oBAAoB,SAAUP,EACvC,CACF,EAAG,CAACV,EAAKE,CAAK,CAAC,EAERE,CACT"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UiToken } from '../types/theme.type';
|
|
2
|
+
/**
|
|
3
|
+
* Token'ların ÇÖZÜLMÜŞ değerleri — CSS değişkeni okuyamayan çizim kütüphaneleri için (recharts
|
|
4
|
+
* `stroke`/`fill` prop'ları `var(--…)` kabul etmiyor).
|
|
5
|
+
* Tema değiştiğinde (açık seçim, sistem tercihi, `UiProvider` ya da `initUi` ezmesi)
|
|
6
|
+
* yeniden çizer.
|
|
7
|
+
* ⚠ Sunucu çıktısında ve hidrasyondan önceki ilk karede her değer `currentColor`.
|
|
8
|
+
* @example const colors = useUiTokens(['series-1', 'series-2', 'border']);
|
|
9
|
+
*/
|
|
10
|
+
declare const useUiTokens: <TName extends UiToken>(names: readonly TName[]) => Record<TName, string>;
|
|
11
|
+
export default useUiTokens;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState as b, useEffect as f } from "react";
|
|
3
|
+
import { isClient as h } from "@handijit/utils";
|
|
4
|
+
import { THEME_ATTRIBUTE as p, THEME_STYLE_ID as v, TOKEN_PREFIX as T } from "../helpers/theme.helper.js";
|
|
5
|
+
import { useUi as g } from "../theme/context.js";
|
|
6
|
+
const d = "currentColor", L = (e) => {
|
|
7
|
+
const r = getComputedStyle(document.documentElement);
|
|
8
|
+
return Object.fromEntries(
|
|
9
|
+
e.map((t) => [t, r.getPropertyValue(`${T}${t}`).trim() || d])
|
|
10
|
+
);
|
|
11
|
+
}, O = (e, r) => Object.keys(e).every((t) => e[t] === r[t]), I = (e) => {
|
|
12
|
+
const r = e.join("|"), { theme: t } = g(), [l, E] = b(
|
|
13
|
+
() => Object.fromEntries(e.map((o) => [o, d]))
|
|
14
|
+
);
|
|
15
|
+
return f(() => {
|
|
16
|
+
var m;
|
|
17
|
+
if (!h()) return;
|
|
18
|
+
const o = r.split("|"), s = () => E((i) => {
|
|
19
|
+
const a = L(o);
|
|
20
|
+
return O(i, a) && Object.keys(i).length === o.length ? i : a;
|
|
21
|
+
});
|
|
22
|
+
s();
|
|
23
|
+
const c = new MutationObserver(s);
|
|
24
|
+
c.observe(document.documentElement, {
|
|
25
|
+
attributes: !0,
|
|
26
|
+
attributeFilter: [p, "style"]
|
|
27
|
+
}), c.observe(document.head, { childList: !0 });
|
|
28
|
+
const u = document.getElementById(v);
|
|
29
|
+
u && c.observe(u, { characterData: !0, childList: !0, subtree: !0 });
|
|
30
|
+
const n = (m = window.matchMedia) == null ? void 0 : m.call(window, "(prefers-color-scheme: dark)");
|
|
31
|
+
return n == null || n.addEventListener("change", s), () => {
|
|
32
|
+
c.disconnect(), n == null || n.removeEventListener("change", s);
|
|
33
|
+
};
|
|
34
|
+
}, [r, t]), l;
|
|
35
|
+
};
|
|
36
|
+
export {
|
|
37
|
+
I as default
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=useUiTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUiTokens.js","sources":["../../src/hooks/useUiTokens.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nimport { isClient } from '@handijit/utils';\n\nimport { THEME_ATTRIBUTE, THEME_STYLE_ID, TOKEN_PREFIX } from '../helpers/theme.helper';\nimport { useUi } from '../theme/context';\nimport type { UiToken } from '@/types/theme.type';\n\n/** Sunucuda ve ilk karede dönen değer: çizim kütüphaneleri boş dizeyi siyah boyuyor. */\nconst FALLBACK = 'currentColor';\n\nconst read = <TName extends UiToken>(names: readonly TName[]): Record<TName, string> => {\n const style = getComputedStyle(document.documentElement);\n\n return Object.fromEntries(\n names.map(name => [name, style.getPropertyValue(`${TOKEN_PREFIX}${name}`).trim() || FALLBACK]),\n ) as Record<TName, string>;\n};\n\nconst isSame = (first: Record<string, string>, second: Record<string, string>): boolean =>\n Object.keys(first).every(key => first[key] === second[key]);\n\n/**\n * Token'ların ÇÖZÜLMÜŞ değerleri — CSS değişkeni okuyamayan çizim kütüphaneleri için (recharts\n * `stroke`/`fill` prop'ları `var(--…)` kabul etmiyor).\n * Tema değiştiğinde (açık seçim, sistem tercihi, `UiProvider` ya da `initUi` ezmesi)\n * yeniden çizer.\n * ⚠ Sunucu çıktısında ve hidrasyondan önceki ilk karede her değer `currentColor`.\n * @example const colors = useUiTokens(['series-1', 'series-2', 'border']);\n */\nconst useUiTokens = <TName extends UiToken>(names: readonly TName[]): Record<TName, string> => {\n /* Dizi her render'da yeni nesne olabilir; abonelik ADLARA bağlanır, kimliğe değil. */\n const key = names.join('|');\n /*\n * Sağlayıcının ezmesi ağaçtaki `<style>`da; tema ilk kez verildiğinde o etiket `<head>`e değil\n * ağaca eklenir ve aşağıdaki gözlemci onu görmez. Bağlamdaki tema nesnesi yalnızca İÇERİK\n * değişince yenilenir (sağlayıcının `themeKey`i).\n */\n const { theme } = useUi();\n\n const [values, setValues] = useState(\n () => Object.fromEntries(names.map(name => [name, FALLBACK])) as Record<TName, string>,\n );\n\n useEffect(() => {\n if (!isClient()) return;\n\n const list = key.split('|') as TName[];\n const update = () =>\n setValues(previous => {\n const next = read(list);\n return isSame(previous, next) && Object.keys(previous).length === list.length\n ? previous\n : next;\n });\n\n update();\n\n /* Açık seçim ve satır içi ezme `<html>`de; `initUi` ezmesi `<head>`deki tek `<style>`da. */\n const observer = new MutationObserver(update);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [THEME_ATTRIBUTE, 'style'],\n });\n observer.observe(document.head, { childList: true });\n\n const overrides = document.getElementById(THEME_STYLE_ID);\n if (overrides)\n observer.observe(overrides, { characterData: true, childList: true, subtree: true });\n\n const query = window.matchMedia?.('(prefers-color-scheme: dark)');\n query?.addEventListener('change', update);\n\n return () => {\n observer.disconnect();\n query?.removeEventListener('change', update);\n };\n }, [key, theme]);\n\n return values;\n};\n\nexport default useUiTokens;\n"],"names":["FALLBACK","read","names","style","name","TOKEN_PREFIX","isSame","first","second","key","useUiTokens","theme","useUi","values","setValues","useState","useEffect","isClient","list","update","previous","next","observer","THEME_ATTRIBUTE","overrides","THEME_STYLE_ID","query","_a"],"mappings":";;;;;AAUA,MAAMA,IAAW,gBAEXC,IAAO,CAAwBC,MAAmD;AACtF,QAAMC,IAAQ,iBAAiB,SAAS,eAAe;AAEvD,SAAO,OAAO;AAAA,IACZD,EAAM,IAAI,CAAAE,MAAQ,CAACA,GAAMD,EAAM,iBAAiB,GAAGE,CAAY,GAAGD,CAAI,EAAE,EAAE,KAAA,KAAUJ,CAAQ,CAAC;AAAA,EAAA;AAEjG,GAEMM,IAAS,CAACC,GAA+BC,MAC7C,OAAO,KAAKD,CAAK,EAAE,MAAM,OAAOA,EAAME,CAAG,MAAMD,EAAOC,CAAG,CAAC,GAUtDC,IAAc,CAAwBR,MAAmD;AAE7F,QAAMO,IAAMP,EAAM,KAAK,GAAG,GAMpB,EAAE,OAAAS,EAAA,IAAUC,EAAA,GAEZ,CAACC,GAAQC,CAAS,IAAIC;AAAA,IAC1B,MAAM,OAAO,YAAYb,EAAM,IAAI,OAAQ,CAACE,GAAMJ,CAAQ,CAAC,CAAC;AAAA,EAAA;AAG9D,SAAAgB,EAAU,MAAM;;AACd,QAAI,CAACC,IAAY;AAEjB,UAAMC,IAAOT,EAAI,MAAM,GAAG,GACpBU,IAAS,MACbL,EAAU,CAAAM,MAAY;AACpB,YAAMC,IAAOpB,EAAKiB,CAAI;AACtB,aAAOZ,EAAOc,GAAUC,CAAI,KAAK,OAAO,KAAKD,CAAQ,EAAE,WAAWF,EAAK,SACnEE,IACAC;AAAA,IACN,CAAC;AAEH,IAAAF,EAAA;AAGA,UAAMG,IAAW,IAAI,iBAAiBH,CAAM;AAC5C,IAAAG,EAAS,QAAQ,SAAS,iBAAiB;AAAA,MACzC,YAAY;AAAA,MACZ,iBAAiB,CAACC,GAAiB,OAAO;AAAA,IAAA,CAC3C,GACDD,EAAS,QAAQ,SAAS,MAAM,EAAE,WAAW,IAAM;AAEnD,UAAME,IAAY,SAAS,eAAeC,CAAc;AACxD,IAAID,KACFF,EAAS,QAAQE,GAAW,EAAE,eAAe,IAAM,WAAW,IAAM,SAAS,IAAM;AAErF,UAAME,KAAQC,IAAA,OAAO,eAAP,gBAAAA,EAAA,aAAoB;AAClC,WAAAD,KAAA,QAAAA,EAAO,iBAAiB,UAAUP,IAE3B,MAAM;AACX,MAAAG,EAAS,WAAA,GACTI,KAAA,QAAAA,EAAO,oBAAoB,UAAUP;AAAA,IACvC;AAAA,EACF,GAAG,CAACV,GAAKE,CAAK,CAAC,GAERE;AACT;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("react"),M=40,p=6,E=(l,{rowHeight:n=M,overscan:u=p,isEnabled:a=!0}={})=>{const f=c.useRef(null),[d,T]=c.useState({start:0,end:l,totalHeight:l*n,offset:0}),o=c.useCallback(()=>{const e=f.current,t=!a||!e||e.clientHeight===0?{start:0,end:l,totalHeight:l*n,offset:0}:(()=>{const s=Math.ceil(e.clientHeight/n),r=Math.floor(e.scrollTop/n),i=Math.max(0,r-u),m=Math.min(l,r+s+u);return{start:i,end:m,totalHeight:l*n,offset:i*n}})();T(s=>s.start===t.start&&s.end===t.end&&s.totalHeight===t.totalHeight&&s.offset===t.offset?s:t)},[l,a,u,n]);c.useEffect(o),c.useEffect(()=>{const e=f.current;if(!e)return;e.addEventListener("scroll",o,{passive:!0});const t=typeof ResizeObserver>"u"?null:new ResizeObserver(o);return t==null||t.observe(e),()=>{e.removeEventListener("scroll",o),t==null||t.disconnect()}},[o]);const R=c.useCallback(e=>{const t=f.current;if(!t||!a)return;const s=e*n,r=s+n;s<t.scrollTop?t.scrollTop=s:r>t.scrollTop+t.clientHeight&&(t.scrollTop=r-t.clientHeight)},[a,n]);return{scrollRef:f,range:d,scrollToIndex:R,measure:o}};exports.default=E;
|
|
2
|
+
//# sourceMappingURL=useVirtualList.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualList.cjs","sources":["../../src/hooks/useVirtualList.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { VirtualRange } from '@/types/hook.type';\n\n/**\n * Ölçüm gelmediğinde varsayılan satır yüksekliği.\n * ⚠ `constants/combobox.constants.ts` içindeki `OPTION_HEIGHT` ile aynı sayı ama AYNI ŞEY DEĞİL: bu\n * jenerik bir varsayılan, o bir bileşenin…\n */\nconst DEFAULT_ROW_HEIGHT = 40;\n\n/** Görünen pencerenin altında ve üstünde fazladan çizilen satır. */\nconst DEFAULT_OVERSCAN = 6;\n\n/** SANALLAŞTIRMA — yalnızca görünen satırları çiz. */\nconst useVirtualList = (\n count: number,\n { rowHeight = DEFAULT_ROW_HEIGHT, overscan = DEFAULT_OVERSCAN, isEnabled = true } = {},\n) => {\n const scrollRef = useRef<HTMLElement | null>(null);\n const [range, setRange] = useState<VirtualRange>({\n start: 0,\n end: count,\n totalHeight: count * rowHeight,\n offset: 0,\n });\n\n const measure = useCallback(() => {\n const node = scrollRef.current;\n\n /* KAPALIYKEN VE OLCUM YOKKEN TAM LISTE. */\n const next =\n !isEnabled || !node || node.clientHeight === 0\n ? { start: 0, end: count, totalHeight: count * rowHeight, offset: 0 }\n : (() => {\n const visibleCount = Math.ceil(node.clientHeight / rowHeight);\n const first = Math.floor(node.scrollTop / rowHeight);\n\n const start = Math.max(0, first - overscan);\n const end = Math.min(count, first + visibleCount + overscan);\n\n return { start, end, totalHeight: count * rowHeight, offset: start * rowHeight };\n })();\n\n /* DEGISMEDIYSE AYNI NESNE geri verilir. */\n setRange(prev =>\n prev.start === next.start &&\n prev.end === next.end &&\n prev.totalHeight === next.totalHeight &&\n prev.offset === next.offset\n ? prev\n : next,\n );\n }, [count, isEnabled, overscan, rowHeight]);\n\n /* OLCUM HER BOYAMADAN SONRA — BAGIMLILIK LISTESI YOK */\n useEffect(measure);\n\n useEffect(() => {\n const node = scrollRef.current;\n if (!node) return;\n\n node.addEventListener('scroll', measure, { passive: true });\n\n const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(measure);\n observer?.observe(node);\n\n return () => {\n node.removeEventListener('scroll', measure);\n observer?.disconnect();\n };\n }, [measure]);\n\n /** Verilen dizini görünür alana getirir. */\n const scrollToIndex = useCallback(\n (index: number) => {\n const node = scrollRef.current;\n if (!node || !isEnabled) return;\n\n const top = index * rowHeight;\n const bottom = top + rowHeight;\n\n if (top < node.scrollTop) node.scrollTop = top;\n else if (bottom > node.scrollTop + node.clientHeight)\n node.scrollTop = bottom - node.clientHeight;\n },\n [isEnabled, rowHeight],\n );\n\n return { scrollRef, range, scrollToIndex, measure };\n};\n\nexport default useVirtualList;\n"],"names":["DEFAULT_ROW_HEIGHT","DEFAULT_OVERSCAN","useVirtualList","count","rowHeight","overscan","isEnabled","scrollRef","useRef","range","setRange","useState","measure","useCallback","node","next","visibleCount","first","start","end","prev","useEffect","observer","scrollToIndex","index","top","bottom"],"mappings":"kJASMA,EAAqB,GAGrBC,EAAmB,EAGnBC,EAAiB,CACrBC,EACA,CAAE,UAAAC,EAAYJ,EAAoB,SAAAK,EAAWJ,EAAkB,UAAAK,EAAY,EAAA,EAAS,KACjF,CACH,MAAMC,EAAYC,EAAAA,OAA2B,IAAI,EAC3C,CAACC,EAAOC,CAAQ,EAAIC,WAAuB,CAC/C,MAAO,EACP,IAAKR,EACL,YAAaA,EAAQC,EACrB,OAAQ,CAAA,CACT,EAEKQ,EAAUC,EAAAA,YAAY,IAAM,CAChC,MAAMC,EAAOP,EAAU,QAGjBQ,EACJ,CAACT,GAAa,CAACQ,GAAQA,EAAK,eAAiB,EACzC,CAAE,MAAO,EAAG,IAAKX,EAAO,YAAaA,EAAQC,EAAW,OAAQ,CAAA,GAC/D,IAAM,CACL,MAAMY,EAAe,KAAK,KAAKF,EAAK,aAAeV,CAAS,EACtDa,EAAQ,KAAK,MAAMH,EAAK,UAAYV,CAAS,EAE7Cc,EAAQ,KAAK,IAAI,EAAGD,EAAQZ,CAAQ,EACpCc,EAAM,KAAK,IAAIhB,EAAOc,EAAQD,EAAeX,CAAQ,EAE3D,MAAO,CAAE,MAAAa,EAAO,IAAAC,EAAK,YAAahB,EAAQC,EAAW,OAAQc,EAAQd,CAAA,CACvE,GAAA,EAGNM,KACEU,EAAK,QAAUL,EAAK,OACpBK,EAAK,MAAQL,EAAK,KAClBK,EAAK,cAAgBL,EAAK,aAC1BK,EAAK,SAAWL,EAAK,OACjBK,EACAL,CAAA,CAER,EAAG,CAACZ,EAAOG,EAAWD,EAAUD,CAAS,CAAC,EAG1CiB,EAAAA,UAAUT,CAAO,EAEjBS,EAAAA,UAAU,IAAM,CACd,MAAMP,EAAOP,EAAU,QACvB,GAAI,CAACO,EAAM,OAEXA,EAAK,iBAAiB,SAAUF,EAAS,CAAE,QAAS,GAAM,EAE1D,MAAMU,EAAW,OAAO,eAAmB,IAAc,KAAO,IAAI,eAAeV,CAAO,EAC1F,OAAAU,GAAA,MAAAA,EAAU,QAAQR,GAEX,IAAM,CACXA,EAAK,oBAAoB,SAAUF,CAAO,EAC1CU,GAAA,MAAAA,EAAU,YACZ,CACF,EAAG,CAACV,CAAO,CAAC,EAGZ,MAAMW,EAAgBV,EAAAA,YACnBW,GAAkB,CACjB,MAAMV,EAAOP,EAAU,QACvB,GAAI,CAACO,GAAQ,CAACR,EAAW,OAEzB,MAAMmB,EAAMD,EAAQpB,EACdsB,EAASD,EAAMrB,EAEjBqB,EAAMX,EAAK,UAAWA,EAAK,UAAYW,EAClCC,EAASZ,EAAK,UAAYA,EAAK,eACtCA,EAAK,UAAYY,EAASZ,EAAK,aACnC,EACA,CAACR,EAAWF,CAAS,CAAA,EAGvB,MAAO,CAAE,UAAAG,EAAW,MAAAE,EAAO,cAAAc,EAAe,QAAAX,CAAA,CAC5C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { VirtualRange } from '../types/hook.type';
|
|
2
|
+
/** SANALLAŞTIRMA — yalnızca görünen satırları çiz. */
|
|
3
|
+
declare const useVirtualList: (count: number, { rowHeight, overscan, isEnabled }?: {
|
|
4
|
+
rowHeight?: number | undefined;
|
|
5
|
+
overscan?: number | undefined;
|
|
6
|
+
isEnabled?: boolean | undefined;
|
|
7
|
+
}) => {
|
|
8
|
+
scrollRef: import('react').RefObject<HTMLElement | null>;
|
|
9
|
+
range: VirtualRange;
|
|
10
|
+
scrollToIndex: (index: number) => void;
|
|
11
|
+
measure: () => void;
|
|
12
|
+
};
|
|
13
|
+
export default useVirtualList;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useRef as L, useState as h, useCallback as u, useEffect as d } from "react";
|
|
3
|
+
const x = 40, E = 6, O = (o, { rowHeight: n = x, overscan: a = E, isEnabled: r = !0 } = {}) => {
|
|
4
|
+
const f = L(null), [T, m] = h({
|
|
5
|
+
start: 0,
|
|
6
|
+
end: o,
|
|
7
|
+
totalHeight: o * n,
|
|
8
|
+
offset: 0
|
|
9
|
+
}), l = u(() => {
|
|
10
|
+
const e = f.current, t = !r || !e || e.clientHeight === 0 ? { start: 0, end: o, totalHeight: o * n, offset: 0 } : (() => {
|
|
11
|
+
const s = Math.ceil(e.clientHeight / n), c = Math.floor(e.scrollTop / n), i = Math.max(0, c - a), p = Math.min(o, c + s + a);
|
|
12
|
+
return { start: i, end: p, totalHeight: o * n, offset: i * n };
|
|
13
|
+
})();
|
|
14
|
+
m(
|
|
15
|
+
(s) => s.start === t.start && s.end === t.end && s.totalHeight === t.totalHeight && s.offset === t.offset ? s : t
|
|
16
|
+
);
|
|
17
|
+
}, [o, r, a, n]);
|
|
18
|
+
d(l), d(() => {
|
|
19
|
+
const e = f.current;
|
|
20
|
+
if (!e) return;
|
|
21
|
+
e.addEventListener("scroll", l, { passive: !0 });
|
|
22
|
+
const t = typeof ResizeObserver > "u" ? null : new ResizeObserver(l);
|
|
23
|
+
return t == null || t.observe(e), () => {
|
|
24
|
+
e.removeEventListener("scroll", l), t == null || t.disconnect();
|
|
25
|
+
};
|
|
26
|
+
}, [l]);
|
|
27
|
+
const R = u(
|
|
28
|
+
(e) => {
|
|
29
|
+
const t = f.current;
|
|
30
|
+
if (!t || !r) return;
|
|
31
|
+
const s = e * n, c = s + n;
|
|
32
|
+
s < t.scrollTop ? t.scrollTop = s : c > t.scrollTop + t.clientHeight && (t.scrollTop = c - t.clientHeight);
|
|
33
|
+
},
|
|
34
|
+
[r, n]
|
|
35
|
+
);
|
|
36
|
+
return { scrollRef: f, range: T, scrollToIndex: R, measure: l };
|
|
37
|
+
};
|
|
38
|
+
export {
|
|
39
|
+
O as default
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=useVirtualList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualList.js","sources":["../../src/hooks/useVirtualList.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { VirtualRange } from '@/types/hook.type';\n\n/**\n * Ölçüm gelmediğinde varsayılan satır yüksekliği.\n * ⚠ `constants/combobox.constants.ts` içindeki `OPTION_HEIGHT` ile aynı sayı ama AYNI ŞEY DEĞİL: bu\n * jenerik bir varsayılan, o bir bileşenin…\n */\nconst DEFAULT_ROW_HEIGHT = 40;\n\n/** Görünen pencerenin altında ve üstünde fazladan çizilen satır. */\nconst DEFAULT_OVERSCAN = 6;\n\n/** SANALLAŞTIRMA — yalnızca görünen satırları çiz. */\nconst useVirtualList = (\n count: number,\n { rowHeight = DEFAULT_ROW_HEIGHT, overscan = DEFAULT_OVERSCAN, isEnabled = true } = {},\n) => {\n const scrollRef = useRef<HTMLElement | null>(null);\n const [range, setRange] = useState<VirtualRange>({\n start: 0,\n end: count,\n totalHeight: count * rowHeight,\n offset: 0,\n });\n\n const measure = useCallback(() => {\n const node = scrollRef.current;\n\n /* KAPALIYKEN VE OLCUM YOKKEN TAM LISTE. */\n const next =\n !isEnabled || !node || node.clientHeight === 0\n ? { start: 0, end: count, totalHeight: count * rowHeight, offset: 0 }\n : (() => {\n const visibleCount = Math.ceil(node.clientHeight / rowHeight);\n const first = Math.floor(node.scrollTop / rowHeight);\n\n const start = Math.max(0, first - overscan);\n const end = Math.min(count, first + visibleCount + overscan);\n\n return { start, end, totalHeight: count * rowHeight, offset: start * rowHeight };\n })();\n\n /* DEGISMEDIYSE AYNI NESNE geri verilir. */\n setRange(prev =>\n prev.start === next.start &&\n prev.end === next.end &&\n prev.totalHeight === next.totalHeight &&\n prev.offset === next.offset\n ? prev\n : next,\n );\n }, [count, isEnabled, overscan, rowHeight]);\n\n /* OLCUM HER BOYAMADAN SONRA — BAGIMLILIK LISTESI YOK */\n useEffect(measure);\n\n useEffect(() => {\n const node = scrollRef.current;\n if (!node) return;\n\n node.addEventListener('scroll', measure, { passive: true });\n\n const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(measure);\n observer?.observe(node);\n\n return () => {\n node.removeEventListener('scroll', measure);\n observer?.disconnect();\n };\n }, [measure]);\n\n /** Verilen dizini görünür alana getirir. */\n const scrollToIndex = useCallback(\n (index: number) => {\n const node = scrollRef.current;\n if (!node || !isEnabled) return;\n\n const top = index * rowHeight;\n const bottom = top + rowHeight;\n\n if (top < node.scrollTop) node.scrollTop = top;\n else if (bottom > node.scrollTop + node.clientHeight)\n node.scrollTop = bottom - node.clientHeight;\n },\n [isEnabled, rowHeight],\n );\n\n return { scrollRef, range, scrollToIndex, measure };\n};\n\nexport default useVirtualList;\n"],"names":["DEFAULT_ROW_HEIGHT","DEFAULT_OVERSCAN","useVirtualList","count","rowHeight","overscan","isEnabled","scrollRef","useRef","range","setRange","useState","measure","useCallback","node","next","visibleCount","first","start","end","prev","useEffect","observer","scrollToIndex","index","top","bottom"],"mappings":";;AASA,MAAMA,IAAqB,IAGrBC,IAAmB,GAGnBC,IAAiB,CACrBC,GACA,EAAE,WAAAC,IAAYJ,GAAoB,UAAAK,IAAWJ,GAAkB,WAAAK,IAAY,GAAA,IAAS,OACjF;AACH,QAAMC,IAAYC,EAA2B,IAAI,GAC3C,CAACC,GAAOC,CAAQ,IAAIC,EAAuB;AAAA,IAC/C,OAAO;AAAA,IACP,KAAKR;AAAA,IACL,aAAaA,IAAQC;AAAA,IACrB,QAAQ;AAAA,EAAA,CACT,GAEKQ,IAAUC,EAAY,MAAM;AAChC,UAAMC,IAAOP,EAAU,SAGjBQ,IACJ,CAACT,KAAa,CAACQ,KAAQA,EAAK,iBAAiB,IACzC,EAAE,OAAO,GAAG,KAAKX,GAAO,aAAaA,IAAQC,GAAW,QAAQ,EAAA,KAC/D,MAAM;AACL,YAAMY,IAAe,KAAK,KAAKF,EAAK,eAAeV,CAAS,GACtDa,IAAQ,KAAK,MAAMH,EAAK,YAAYV,CAAS,GAE7Cc,IAAQ,KAAK,IAAI,GAAGD,IAAQZ,CAAQ,GACpCc,IAAM,KAAK,IAAIhB,GAAOc,IAAQD,IAAeX,CAAQ;AAE3D,aAAO,EAAE,OAAAa,GAAO,KAAAC,GAAK,aAAahB,IAAQC,GAAW,QAAQc,IAAQd,EAAA;AAAA,IACvE,GAAA;AAGN,IAAAM;AAAA,MAAS,OACPU,EAAK,UAAUL,EAAK,SACpBK,EAAK,QAAQL,EAAK,OAClBK,EAAK,gBAAgBL,EAAK,eAC1BK,EAAK,WAAWL,EAAK,SACjBK,IACAL;AAAA,IAAA;AAAA,EAER,GAAG,CAACZ,GAAOG,GAAWD,GAAUD,CAAS,CAAC;AAG1C,EAAAiB,EAAUT,CAAO,GAEjBS,EAAU,MAAM;AACd,UAAMP,IAAOP,EAAU;AACvB,QAAI,CAACO,EAAM;AAEX,IAAAA,EAAK,iBAAiB,UAAUF,GAAS,EAAE,SAAS,IAAM;AAE1D,UAAMU,IAAW,OAAO,iBAAmB,MAAc,OAAO,IAAI,eAAeV,CAAO;AAC1F,WAAAU,KAAA,QAAAA,EAAU,QAAQR,IAEX,MAAM;AACX,MAAAA,EAAK,oBAAoB,UAAUF,CAAO,GAC1CU,KAAA,QAAAA,EAAU;AAAA,IACZ;AAAA,EACF,GAAG,CAACV,CAAO,CAAC;AAGZ,QAAMW,IAAgBV;AAAA,IACpB,CAACW,MAAkB;AACjB,YAAMV,IAAOP,EAAU;AACvB,UAAI,CAACO,KAAQ,CAACR,EAAW;AAEzB,YAAMmB,IAAMD,IAAQpB,GACdsB,IAASD,IAAMrB;AAErB,MAAIqB,IAAMX,EAAK,YAAWA,EAAK,YAAYW,IAClCC,IAASZ,EAAK,YAAYA,EAAK,iBACtCA,EAAK,YAAYY,IAASZ,EAAK;AAAA,IACnC;AAAA,IACA,CAACR,GAAWF,CAAS;AAAA,EAAA;AAGvB,SAAO,EAAE,WAAAG,GAAW,OAAAE,GAAO,eAAAc,GAAe,SAAAX,EAAA;AAC5C;"}
|
package/build/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("./theme/UiProvider.cjs"),$=require("./theme/initUi.cjs"),E=require("./theme/UiThemeScript.cjs"),S=require("./theme/context.cjs"),e=require("./theme/tokens.cjs"),r=require("./helpers/theme.helper.cjs"),_=require("./helpers/focus.helper.cjs"),A=require("./hooks/useAnnounce.cjs"),C=require("./hooks/useUiTheme.cjs"),B=require("./hooks/useUiTokens.cjs"),R=require("./hooks/useStickToBottom.cjs"),m=require("./hooks/useListboxNavigation.cjs"),I=require("./hooks/usePositioning.cjs"),p=require("./hooks/useVirtualList.cjs"),D=require("./enums/ui-variant.enum.cjs"),P=require("./enums/ui-size.enum.cjs"),t=require("./constants/breakpoint.constants.cjs"),d=require("./helpers/text.helper.cjs"),O=require("./components/Button/index.cjs"),h=require("./components/IconButton/index.cjs"),M=require("./components/TextLink/index.cjs"),U=require("./components/Tooltip/index.cjs"),a=require("./components/Menu/index.cjs"),b=require("./components/Popover/index.cjs"),g=require("./components/Chip/index.cjs"),y=require("./components/ChipGroup/index.cjs"),L=require("./components/Combobox/index.cjs"),k=require("./components/SegmentedControl/index.cjs"),F=require("./components/Select/index.cjs"),N=require("./components/Checkbox/index.cjs"),v=require("./components/Switch/index.cjs"),w=require("./components/Radio/index.cjs"),H=require("./components/RadioCard/index.cjs"),K=require("./components/RangeSlider/index.cjs"),V=require("./components/RatingInput/index.cjs"),Y=require("./components/QuantityStepper/index.cjs"),G=require("./components/TableCheckbox/index.cjs"),Q=require("./components/Input/index.cjs"),z=require("./components/PasswordInput/index.cjs"),J=require("./components/TagInput/index.cjs"),j=require("./components/Textarea/index.cjs"),l=require("./components/DateField/index.cjs"),W=require("./components/Field/index.cjs"),X=require("./components/FileUpload/index.cjs"),Z=require("./components/Alert/index.cjs"),ee=require("./components/Avatar/index.cjs"),re=require("./components/Badge/index.cjs"),te=require("./components/Breadcrumb/index.cjs"),i=require("./components/Card/index.cjs"),ie=require("./components/Carousel/index.cjs"),ne=require("./components/CodeBadge/index.cjs"),ue=require("./components/Kbd/index.cjs"),oe=require("./components/StatusDot/index.cjs"),de=require("./components/CopyField/index.cjs"),ae=require("./components/Divider/index.cjs"),n=require("./components/Directory/index.cjs"),le=require("./components/EmptyState/index.cjs"),se=require("./components/PageHeader/index.cjs"),o=require("./components/Panel/index.cjs"),ce=require("./components/Price/index.cjs"),Te=require("./components/Rating/index.cjs"),fe=require("./components/SectionHeader/index.cjs"),qe=require("./components/ScrollArea/index.cjs"),u=require("./components/Skeleton/index.cjs"),xe=require("./components/Stat/index.cjs"),$e=require("./components/SummaryCard/index.cjs"),s=require("./components/Progress/index.cjs"),Ee=require("./components/Spinner/index.cjs"),c=require("./components/Toast/index.cjs"),Se=require("./components/ToastPortal/index.cjs"),_e=require("./components/Accordion/index.cjs"),Ae=require("./components/Disclosure/index.cjs"),Ce=require("./components/Steps/index.cjs"),Be=require("./components/Tabs/index.cjs"),Re=require("./components/Tile/index.cjs"),me=require("./components/Timeline/index.cjs"),Ie=require("./components/BottomSheet/index.cjs"),pe=require("./components/Modal/index.cjs"),De=require("./components/CommandPalette/index.cjs"),Pe=require("./components/ConfirmDialog/index.cjs"),Oe=require("./components/Drawer/index.cjs"),he=require("./components/PromptDialog/index.cjs"),T=require("./components/Table/index.cjs"),f=require("./components/DataTable/index.cjs"),q=require("./components/FilterBar/index.cjs"),Me=require("./components/Pagination/index.cjs");exports.UiProvider=x.default;exports.initUi=$.default;exports.UiThemeScript=E.default;exports.useUi=S.useUi;exports.COMPACT_DENSITY=e.COMPACT_DENSITY;exports.DARK_THEME=e.DARK_THEME;exports.DEFAULT_FONTS=e.DEFAULT_FONTS;exports.LIGHT_THEME=e.LIGHT_THEME;exports.METRIC_TOKENS=e.METRIC_TOKENS;exports.DENSITY_ATTRIBUTE=r.DENSITY_ATTRIBUTE;exports.THEME_ATTRIBUTE=r.THEME_ATTRIBUTE;exports.applyThemeConfig=r.applyThemeConfig;exports.buildThemeCss=r.buildThemeCss;exports.resolveTokens=r.resolveTokens;exports.hasOpenSurface=_.hasOpenSurface;exports.useAnnounce=A.default;exports.useUiTheme=C.default;exports.useUiTokens=B.default;exports.useStickToBottom=R.default;exports.useListboxNavigation=m.default;exports.usePositioning=I.default;exports.useVirtualList=p.default;exports.UIVariant=D.default;exports.UISize=P.default;exports.ABOVE_MOBILE_MEDIA_QUERY=t.ABOVE_MOBILE_MEDIA_QUERY;exports.ABOVE_TABLET_MEDIA_QUERY=t.ABOVE_TABLET_MEDIA_QUERY;exports.MOBILE_BREAKPOINT=t.MOBILE_BREAKPOINT;exports.TABLET_BREAKPOINT=t.TABLET_BREAKPOINT;exports.TABLET_PORTRAIT_BREAKPOINT=t.TABLET_PORTRAIT_BREAKPOINT;exports.matchesSearch=d.matchesSearch;exports.normalizeSearchTerm=d.normalizeSearchTerm;exports.Button=O.default;exports.IconButton=h.default;exports.TextLink=M.default;exports.Tooltip=U.default;exports.ContextMenu=a.ContextMenu;exports.Menu=a.default;exports.Popover=b.default;exports.Chip=g.default;exports.ChipGroup=y.default;exports.Combobox=L.default;exports.SegmentedControl=k.default;exports.Select=F.default;exports.Checkbox=N.default;exports.Switch=v.default;exports.Radio=w.default;exports.RadioCard=H.default;exports.RangeSlider=K.default;exports.RatingInput=V.default;exports.QuantityStepper=Y.default;exports.TableCheckbox=G.default;exports.Input=Q.default;exports.PasswordInput=z.default;exports.TagInput=J.default;exports.Textarea=j.default;exports.DateField=l.default;exports.DateRange=l.DateRange;exports.Field=W.default;exports.FileUpload=X.default;exports.Alert=Z.default;exports.Avatar=ee.default;exports.Badge=re.default;exports.Breadcrumb=te.default;exports.Card=i.default;exports.CardBody=i.CardBody;exports.CardFooter=i.CardFooter;exports.CardMedia=i.CardMedia;exports.CardOverlay=i.CardOverlay;exports.Carousel=ie.default;exports.CodeBadge=ne.default;exports.Kbd=ue.default;exports.StatusDot=oe.default;exports.CopyField=de.default;exports.Divider=ae.default;exports.Directory=n.default;exports.DirectoryGroup=n.DirectoryGroup;exports.DirectoryJump=n.DirectoryJump;exports.DirectoryRow=n.DirectoryRow;exports.EmptyState=le.default;exports.PageHeader=se.default;exports.Panel=o.default;exports.PanelForm=o.PanelForm;exports.PanelRow=o.PanelRow;exports.Price=ce.default;exports.Rating=Te.default;exports.SectionHeader=fe.default;exports.ScrollArea=qe.default;exports.Skeleton=u.default;exports.SkeletonCard=u.SkeletonCard;exports.SkeletonRows=u.SkeletonRows;exports.SkeletonTable=u.SkeletonTable;exports.Stat=xe.default;exports.SummaryCard=$e.default;exports.Progress=s.default;exports.ProgressCircle=s.ProgressCircle;exports.Spinner=Ee.default;exports.ToastHub=c.default;exports.toast=c.toast;exports.ToastPortal=Se.default;exports.Accordion=_e.default;exports.Disclosure=Ae.default;exports.Steps=Ce.default;exports.Tabs=Be.default;exports.Tile=Re.default;exports.Timeline=me.default;exports.BottomSheet=Ie.default;exports.Modal=pe.default;exports.CommandPalette=De.default;exports.ConfirmDialog=Pe.default;exports.Drawer=Oe.default;exports.PromptDialog=he.default;exports.Table=T.default;exports.TableScroller=T.TableScroller;exports.DataTable=f.default;exports.DataTableRow=f.DataTableRow;exports.FilterBar=q.default;exports.FilterBarField=q.FilterBarField;exports.Pagination=Me.default;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @handijit/ui — açık genel API. Dışa verilen her ad bir SÖZLEŞMEDİR: bir sonraki büyük sürüme
|
|
3
|
+
* kadar kaldırılmaz ve davranışı sessizce değişmez.
|
|
4
|
+
*/
|
|
5
|
+
export { default as UiProvider } from './theme/UiProvider';
|
|
6
|
+
export { default as initUi } from './theme/initUi';
|
|
7
|
+
export { default as UiThemeScript } from './theme/UiThemeScript';
|
|
8
|
+
export { useUi } from './theme/context';
|
|
9
|
+
export { COMPACT_DENSITY, DARK_THEME, DEFAULT_FONTS, LIGHT_THEME, METRIC_TOKENS, } from './theme/tokens';
|
|
10
|
+
export { applyThemeConfig, buildThemeCss, DENSITY_ATTRIBUTE, resolveTokens, THEME_ATTRIBUTE, } from './helpers/theme.helper';
|
|
11
|
+
export { hasOpenSurface } from './helpers/focus.helper';
|
|
12
|
+
export { default as useAnnounce } from './hooks/useAnnounce';
|
|
13
|
+
export { default as useUiTheme } from './hooks/useUiTheme';
|
|
14
|
+
export { default as useUiTokens } from './hooks/useUiTokens';
|
|
15
|
+
export { default as useStickToBottom } from './hooks/useStickToBottom';
|
|
16
|
+
export { default as useListboxNavigation, type ListboxNavigation, } from './hooks/useListboxNavigation';
|
|
17
|
+
export { default as usePositioning } from './hooks/usePositioning';
|
|
18
|
+
export { default as useVirtualList } from './hooks/useVirtualList';
|
|
19
|
+
export { default as UIVariant } from './enums/ui-variant.enum';
|
|
20
|
+
export { default as UISize } from './enums/ui-size.enum';
|
|
21
|
+
export type { CommonElementProps } from './types/common-element-props.type';
|
|
22
|
+
export type { UiLinkComponent, UiLinkExtraProps, UiLinkProps } from './types/link.type';
|
|
23
|
+
export { ABOVE_MOBILE_MEDIA_QUERY, ABOVE_TABLET_MEDIA_QUERY, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, TABLET_PORTRAIT_BREAKPOINT, } from './constants/breakpoint.constants';
|
|
24
|
+
export { matchesSearch, normalizeSearchTerm } from './helpers/text.helper';
|
|
25
|
+
export { default as Button } from './components/Button';
|
|
26
|
+
export { default as IconButton, type IconButtonVariant } from './components/IconButton';
|
|
27
|
+
export { default as TextLink } from './components/TextLink';
|
|
28
|
+
export { default as Tooltip } from './components/Tooltip';
|
|
29
|
+
export { ContextMenu, default as Menu, type MenuItem } from './components/Menu';
|
|
30
|
+
export { default as Popover } from './components/Popover';
|
|
31
|
+
export { default as Chip, type ChipSize } from './components/Chip';
|
|
32
|
+
export { default as ChipGroup, type ChipOption } from './components/ChipGroup';
|
|
33
|
+
export { default as Combobox, type ComboboxLabels, type ComboboxOption, } from './components/Combobox';
|
|
34
|
+
export { default as SegmentedControl, type SegmentOption } from './components/SegmentedControl';
|
|
35
|
+
export { default as Select, type SelectOption } from './components/Select';
|
|
36
|
+
export { default as Checkbox } from './components/Checkbox';
|
|
37
|
+
export { default as Switch } from './components/Switch';
|
|
38
|
+
export { default as Radio } from './components/Radio';
|
|
39
|
+
export { default as RadioCard } from './components/RadioCard';
|
|
40
|
+
export { default as RangeSlider, type RangeValue } from './components/RangeSlider';
|
|
41
|
+
export { default as RatingInput, type RatingLabels } from './components/RatingInput';
|
|
42
|
+
export { default as QuantityStepper } from './components/QuantityStepper';
|
|
43
|
+
export { default as TableCheckbox } from './components/TableCheckbox';
|
|
44
|
+
export { default as Input } from './components/Input';
|
|
45
|
+
export { default as PasswordInput } from './components/PasswordInput';
|
|
46
|
+
export { default as TagInput } from './components/TagInput';
|
|
47
|
+
export { default as Textarea } from './components/Textarea';
|
|
48
|
+
export { default as DateField, DateRange, type DateRangeValue } from './components/DateField';
|
|
49
|
+
export { default as Field, type FieldChildProps } from './components/Field';
|
|
50
|
+
export { default as FileUpload, type UploadFile } from './components/FileUpload';
|
|
51
|
+
export { default as Alert, type AlertTone } from './components/Alert';
|
|
52
|
+
export { default as Avatar } from './components/Avatar';
|
|
53
|
+
export { default as Badge, type BadgeTone, type BadgeVariant } from './components/Badge';
|
|
54
|
+
export { default as Breadcrumb, type Crumb } from './components/Breadcrumb';
|
|
55
|
+
export { default as Card, CardBody, CardFooter, CardMedia, type CardMediaFit, CardOverlay, } from './components/Card';
|
|
56
|
+
export { default as Carousel } from './components/Carousel';
|
|
57
|
+
export { default as CodeBadge, type CodeBadgeSize } from './components/CodeBadge';
|
|
58
|
+
export { default as Kbd } from './components/Kbd';
|
|
59
|
+
export { default as StatusDot, type StatusDotTone } from './components/StatusDot';
|
|
60
|
+
export { default as CopyField } from './components/CopyField';
|
|
61
|
+
export { default as Divider } from './components/Divider';
|
|
62
|
+
export { default as Directory, DirectoryGroup, DirectoryJump, DirectoryRow, } from './components/Directory';
|
|
63
|
+
export { default as EmptyState } from './components/EmptyState';
|
|
64
|
+
export { default as PageHeader } from './components/PageHeader';
|
|
65
|
+
export { default as Panel, PanelForm, PanelRow } from './components/Panel';
|
|
66
|
+
export { default as Price } from './components/Price';
|
|
67
|
+
export { default as Rating } from './components/Rating';
|
|
68
|
+
export { default as SectionHeader } from './components/SectionHeader';
|
|
69
|
+
export { default as ScrollArea } from './components/ScrollArea';
|
|
70
|
+
export { default as Skeleton, SkeletonCard, SkeletonRows, SkeletonTable, } from './components/Skeleton';
|
|
71
|
+
export { default as Stat, type StatTrend } from './components/Stat';
|
|
72
|
+
export { default as SummaryCard, type SummaryCardHeadingLevel } from './components/SummaryCard';
|
|
73
|
+
export { default as Progress, ProgressCircle } from './components/Progress';
|
|
74
|
+
export { default as Spinner } from './components/Spinner';
|
|
75
|
+
export { default as ToastHub, toast, type ToastOptions, type ToastTone } from './components/Toast';
|
|
76
|
+
export { default as ToastPortal } from './components/ToastPortal';
|
|
77
|
+
export { default as Accordion, type AccordionItem } from './components/Accordion';
|
|
78
|
+
export { default as Disclosure, type DisclosureVariant } from './components/Disclosure';
|
|
79
|
+
export { default as Steps, type StepItem } from './components/Steps';
|
|
80
|
+
export { default as Tabs, type TabItem } from './components/Tabs';
|
|
81
|
+
export { default as Tile } from './components/Tile';
|
|
82
|
+
export { default as Timeline, type TimelineEvent, type TimelineStatus, } from './components/Timeline';
|
|
83
|
+
export { default as BottomSheet } from './components/BottomSheet';
|
|
84
|
+
export { default as Modal, type ModalTone } from './components/Modal';
|
|
85
|
+
export { default as CommandPalette, type CommandItem } from './components/CommandPalette';
|
|
86
|
+
export { default as ConfirmDialog, type ConfirmKind } from './components/ConfirmDialog';
|
|
87
|
+
export { default as Drawer } from './components/Drawer';
|
|
88
|
+
export { default as PromptDialog } from './components/PromptDialog';
|
|
89
|
+
export { default as Table, TableScroller } from './components/Table';
|
|
90
|
+
export { default as DataTable, DataTableRow, type DataTableColumn } from './components/DataTable';
|
|
91
|
+
export { default as FilterBar, FilterBarField } from './components/FilterBar';
|
|
92
|
+
export { default as Pagination } from './components/Pagination';
|
|
93
|
+
export type { AnnouncePoliteness, ListboxNavigationOptions, VirtualRange } from './types/hook.type';
|
|
94
|
+
export type { PositionAlign, PositionSide, PositioningOptions, PositioningState, } from './types/positioning.type';
|
|
95
|
+
export type { UiColorPreference, UiColorScheme, UiContextValue, UiDensity, UiFonts, UiLabels, UiMetricToken, UiMetrics, UiResolvedTokens, UiThemeConfig, UiThemeTokens, UiToken, InitUiOptions, } from './types/theme.type';
|