@handijit/ui 0.0.0-stage → 2.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 +786 -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 +1866 -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 +1121 -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 +21 -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 +13 -0
- package/build/constants/breakpoint.constants.js +11 -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 +12 -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 +2 -0
- package/build/helpers/theme.helper.cjs.map +1 -0
- package/build/helpers/theme.helper.d.ts +18 -0
- package/build/helpers/theme.helper.js +37 -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 +10 -0
- package/build/hooks/useUiTheme.js +42 -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 +36 -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 +93 -0
- package/build/index.js +199 -0
- package/build/index.js.map +1 -0
- package/build/scss/_index.scss +7 -0
- package/build/scss/_mixins.scss +828 -0
- package/build/scss/_variables.scss +243 -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 +23 -0
- package/build/theme/UiProvider.js +12 -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 +22 -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/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 +11 -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 +21 -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.type.d.ts +181 -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 +181 -0
- package/package.json +487 -4
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as s, jsxs as T } from "react/jsx-runtime";
|
|
3
|
+
import { memo as I, useState as h, useEffect as g, useCallback as N, useRef as C } from "react";
|
|
4
|
+
import { createPortal as E } from "react-dom";
|
|
5
|
+
import { XLg as F, XCircleFill as k, ExclamationTriangleFill as H, CheckCircleFill as P, InfoCircleFill as D } from "react-bootstrap-icons";
|
|
6
|
+
import { cx as x } from "../../helpers/class-name.helper.js";
|
|
7
|
+
import { named as R } from "../../helpers/component.helper.js";
|
|
8
|
+
import { resolveLabel as v } from "../../helpers/label.helper.js";
|
|
9
|
+
import y from "../../hooks/useDismissOnEscape.js";
|
|
10
|
+
import { useUi as M } from "../../theme/context.js";
|
|
11
|
+
import O from "../IconButton/index.js";
|
|
12
|
+
const a = {"hub":"ui-hub-JoqOf","toast":"ui-toast-U27Of","toast--info":"ui-toast--info-S1QJr","toast--success":"ui-toast--success-NUso7","toast--warning":"ui-toast--warning-7mi-S","toast--danger":"ui-toast--danger-IhFSz","toast__icon":"ui-toast__icon-p-rgI","toast__text":"ui-toast__text-rG4ji","toast__message":"ui-toast__message-s6S2-","toast__description":"ui-toast__description-0cYTx","toast__action":"ui-toast__action-fOXU5","toast__close":"ui-toast__close-QxSNP"};
|
|
13
|
+
const S = {
|
|
14
|
+
info: /* @__PURE__ */ s(D, { "aria-hidden": !0 }),
|
|
15
|
+
success: /* @__PURE__ */ s(P, { "aria-hidden": !0 }),
|
|
16
|
+
warning: /* @__PURE__ */ s(H, { "aria-hidden": !0 }),
|
|
17
|
+
danger: /* @__PURE__ */ s(k, { "aria-hidden": !0 })
|
|
18
|
+
}, U = {
|
|
19
|
+
info: 4e3,
|
|
20
|
+
success: 4e3,
|
|
21
|
+
warning: 6e3,
|
|
22
|
+
danger: 8e3
|
|
23
|
+
};
|
|
24
|
+
let L = 0;
|
|
25
|
+
const b = /* @__PURE__ */ new Set();
|
|
26
|
+
let c = [];
|
|
27
|
+
const w = () => b.forEach((t) => t(c)), _ = (t) => {
|
|
28
|
+
c = c.filter((e) => e.id !== t), w();
|
|
29
|
+
}, f = (t, e = {}) => {
|
|
30
|
+
L += 1;
|
|
31
|
+
const o = L;
|
|
32
|
+
return c = [...c, { ...e, id: o, message: t }].slice(-3), w(), o;
|
|
33
|
+
}, Y = {
|
|
34
|
+
show: f,
|
|
35
|
+
info: (t, e) => f(t, { ...e, tone: "info" }),
|
|
36
|
+
success: (t, e) => f(t, { ...e, tone: "success" }),
|
|
37
|
+
warning: (t, e) => f(t, { ...e, tone: "warning" }),
|
|
38
|
+
error: (t, e) => f(t, { ...e, tone: "danger" }),
|
|
39
|
+
dismiss: _,
|
|
40
|
+
/** Tümünü kapatır — sayfa geçişinde bayat bildirim taşınmasın. */
|
|
41
|
+
clear: () => {
|
|
42
|
+
c = [], w();
|
|
43
|
+
}
|
|
44
|
+
}, j = ({ toast: t, closeLabel: e, onDismiss: o }) => {
|
|
45
|
+
const n = t.tone ?? "info", i = t.duration ?? U[n], [l, u] = h(!1), d = C(i), p = C(0);
|
|
46
|
+
return g(() => {
|
|
47
|
+
if (i === 0 || l) return;
|
|
48
|
+
p.current = Date.now();
|
|
49
|
+
const m = window.setTimeout(() => o(t.id), d.current);
|
|
50
|
+
return () => {
|
|
51
|
+
window.clearTimeout(m), d.current = Math.max(0, d.current - (Date.now() - p.current));
|
|
52
|
+
};
|
|
53
|
+
}, [i, l, o, t.id]), /* @__PURE__ */ T(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
className: x(a.toast, a[`toast--${n}`]),
|
|
57
|
+
role: n === "danger" ? "alert" : "status",
|
|
58
|
+
onPointerEnter: () => u(!0),
|
|
59
|
+
onPointerLeave: () => u(!1),
|
|
60
|
+
onFocus: () => u(!0),
|
|
61
|
+
onBlur: () => u(!1),
|
|
62
|
+
children: [
|
|
63
|
+
/* @__PURE__ */ s("span", { className: a.toast__icon, "aria-hidden": !0, children: S[n] }),
|
|
64
|
+
/* @__PURE__ */ T("div", { className: a.toast__text, children: [
|
|
65
|
+
/* @__PURE__ */ s("span", { className: a.toast__message, children: t.message }),
|
|
66
|
+
t.description && /* @__PURE__ */ s("span", { className: a.toast__description, children: t.description })
|
|
67
|
+
] }),
|
|
68
|
+
t.action && /* @__PURE__ */ s(
|
|
69
|
+
"button",
|
|
70
|
+
{
|
|
71
|
+
type: "button",
|
|
72
|
+
className: a.toast__action,
|
|
73
|
+
onClick: () => {
|
|
74
|
+
var m;
|
|
75
|
+
(m = t.action) == null || m.onClick(), o(t.id);
|
|
76
|
+
},
|
|
77
|
+
children: t.action.label
|
|
78
|
+
}
|
|
79
|
+
),
|
|
80
|
+
/* @__PURE__ */ s(
|
|
81
|
+
O,
|
|
82
|
+
{
|
|
83
|
+
icon: /* @__PURE__ */ s(F, { "aria-hidden": !0 }),
|
|
84
|
+
label: e,
|
|
85
|
+
variant: "ghost",
|
|
86
|
+
size: "sm",
|
|
87
|
+
className: a.toast__close,
|
|
88
|
+
onClick: () => o(t.id)
|
|
89
|
+
}
|
|
90
|
+
)
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
}, A = ({ closeLabel: t, regionLabel: e, className: o }) => {
|
|
95
|
+
const { labels: n } = M(), [i, l] = h([]);
|
|
96
|
+
g(() => (b.add(l), l(c), () => {
|
|
97
|
+
b.delete(l);
|
|
98
|
+
}), []);
|
|
99
|
+
const u = N((r) => _(r), []), d = N(() => {
|
|
100
|
+
const r = i.at(-1);
|
|
101
|
+
r && _(r.id);
|
|
102
|
+
}, [i]);
|
|
103
|
+
y(i.length > 0, d);
|
|
104
|
+
const [p, m] = h(!1);
|
|
105
|
+
return g(() => m(!0), []), p ? E(
|
|
106
|
+
/*
|
|
107
|
+
* Bildirimin üzerindeki `role="status"`/`role="alert"` öğe DOM'a girdiği ANDA yaratılıyordu
|
|
108
|
+
* ⚠ CANLI BÖLGE YIĞININ KENDİSİNDE, tek tek bildirimlerde DEĞİL.
|
|
109
|
+
*/
|
|
110
|
+
/* @__PURE__ */ s(
|
|
111
|
+
"div",
|
|
112
|
+
{
|
|
113
|
+
className: x(a.hub, o),
|
|
114
|
+
role: "region",
|
|
115
|
+
"aria-label": v("ToastHub.regionLabel", e, n == null ? void 0 : n.notifications),
|
|
116
|
+
"aria-live": "polite",
|
|
117
|
+
"aria-relevant": "additions",
|
|
118
|
+
children: i.map((r) => /* @__PURE__ */ s(
|
|
119
|
+
j,
|
|
120
|
+
{
|
|
121
|
+
toast: r,
|
|
122
|
+
closeLabel: v("ToastHub.closeLabel", t, n == null ? void 0 : n.close),
|
|
123
|
+
onDismiss: u
|
|
124
|
+
},
|
|
125
|
+
r.id
|
|
126
|
+
))
|
|
127
|
+
}
|
|
128
|
+
),
|
|
129
|
+
document.body
|
|
130
|
+
) : null;
|
|
131
|
+
}, Z = /* @__PURE__ */ I(/* @__PURE__ */ R(A, "ToastHub"));
|
|
132
|
+
export {
|
|
133
|
+
Z as default,
|
|
134
|
+
Y as toast
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Toast/index.tsx"],"sourcesContent":["'use client';\n\nimport { memo, type ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n CheckCircleFill,\n ExclamationTriangleFill,\n InfoCircleFill,\n XCircleFill,\n XLg,\n} from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport useDismissOnEscape from '../../hooks/useDismissOnEscape';\nimport { useUi } from '../../theme/context';\nimport IconButton from '../IconButton';\n\nimport styles from './index.module.scss';\n\nexport type ToastTone = 'info' | 'success' | 'warning' | 'danger';\n\nexport type ToastOptions = {\n tone?: ToastTone;\n /** Görüntülenme süresi (ms). `0` → kendiliğinden kapanmaz. */\n duration?: number;\n /** Başlığın altındaki bir cümlelik ayrıntı. */\n description?: ReactNode;\n /** Bildirimin içindeki tek eylem (\"Geri al\"). */\n action?: { label: string; onClick: () => void };\n};\n\ntype ToastRecord = ToastOptions & { id: number; message: string };\n\n/** Ton başına ikon: renk TEK BAŞINA anlam taşımaz (WCAG 1.4.1). */\nconst ICONS: Record<ToastTone, ReactNode> = {\n info: <InfoCircleFill aria-hidden />,\n success: <CheckCircleFill aria-hidden />,\n warning: <ExclamationTriangleFill aria-hidden />,\n danger: <XCircleFill aria-hidden />,\n};\n\n/** Ton başına varsayılan süre. */\nconst DEFAULT_DURATION: Record<ToastTone, number> = {\n info: 4_000,\n success: 4_000,\n warning: 6_000,\n danger: 8_000,\n};\n\n/** Aynı anda ekranda duran en fazla bildirim. */\nconst MAX_VISIBLE = 3;\n\n/* YAYIN MERKEZI — modul duzeyinde, saglayicidan BAGIMSIZ. */\nlet counter = 0;\n/*\n * `new Set()` modul duzeyinde bir CAGRI ve acilama olmadan bundler onu yan etkili sayabilir — Faz\n * 0'da `memo()` cagrilarinda tam olarak bu olmustu.\n */\nconst listeners = /*#__PURE__*/ new Set<(toasts: ToastRecord[]) => void>();\nlet queue: ToastRecord[] = [];\n\nconst emit = () => listeners.forEach(listener => listener(queue));\n\nconst dismiss = (id: number) => {\n queue = queue.filter(item => item.id !== id);\n emit();\n};\n\nconst push = (message: string, options: ToastOptions = {}): number => {\n counter += 1;\n const id = counter;\n\n /*\n * SIRAYA ALMA: ekranda en fazla `MAX_VISIBLE` bildirim durur, fazlasi EN ESKIsini duserek yerini\n * alir.\n */\n queue = [...queue, { ...options, id, message }].slice(-MAX_VISIBLE);\n emit();\n\n return id;\n};\n\n/**\n * BİLDİRİM SÖZLEŞMESİ — süre, ikon ve renk kararları TEK YERDE.\n * @example toast.success('Adres kaydedildi'); toast.error('Kart reddedildi', { action: { label…\n */\nexport const toast = {\n show: push,\n info: (message: string, options?: ToastOptions) => push(message, { ...options, tone: 'info' }),\n success: (message: string, options?: ToastOptions) =>\n push(message, { ...options, tone: 'success' }),\n warning: (message: string, options?: ToastOptions) =>\n push(message, { ...options, tone: 'warning' }),\n error: (message: string, options?: ToastOptions) => push(message, { ...options, tone: 'danger' }),\n dismiss,\n /** Tümünü kapatır — sayfa geçişinde bayat bildirim taşınmasın. */\n clear: () => {\n queue = [];\n emit();\n },\n};\n\ntype ItemProps = {\n toast: ToastRecord;\n closeLabel: string;\n onDismiss: (id: number) => void;\n};\n\n/** Tek bir bildirim satırı; kendi zamanlayıcısını kendisi taşır. */\nconst ToastItem = ({ toast: record, closeLabel, onDismiss }: ItemProps) => {\n const tone = record.tone ?? 'info';\n const duration = record.duration ?? DEFAULT_DURATION[tone];\n\n const [isPaused, setIsPaused] = useState(false);\n const remainingRef = useRef(duration);\n const startedRef = useRef(0);\n\n useEffect(() => {\n if (duration === 0 || isPaused) return;\n\n startedRef.current = Date.now();\n const timer = window.setTimeout(() => onDismiss(record.id), remainingRef.current);\n\n return () => {\n window.clearTimeout(timer);\n /*\n * Kalan sure KORUNUR: imlec ayrilinca sayac bastan baslasaydi, uzerine bir kez gelinen\n * bildirim ekranda cok daha uzun kaliyordu.\n */\n remainingRef.current = Math.max(0, remainingRef.current - (Date.now() - startedRef.current));\n };\n }, [duration, isPaused, onDismiss, record.id]);\n\n return (\n <div\n className={cx(styles.toast, styles[`toast--${tone}`])}\n /*\n * `role=\"alert\"` YALNIZCA hatada: o rol `aria-live=\"assertive\"` demek ve kullanicinin okudugu\n * seyi BOLER.\n */\n role={tone === 'danger' ? 'alert' : 'status'}\n /*\n * Fare uzerindeyken sayac DURUR: kullanici bildirimi okuyor ya da icindeki eylemi tiklamaya\n * gidiyor.\n */\n onPointerEnter={() => setIsPaused(true)}\n onPointerLeave={() => setIsPaused(false)}\n /* Klavye odagi da duraklatir: */\n onFocus={() => setIsPaused(true)}\n onBlur={() => setIsPaused(false)}\n >\n <span className={styles.toast__icon} aria-hidden>\n {ICONS[tone]}\n </span>\n\n <div className={styles.toast__text}>\n <span className={styles.toast__message}>{record.message}</span>\n {record.description && (\n <span className={styles.toast__description}>{record.description}</span>\n )}\n </div>\n\n {record.action && (\n <button\n type=\"button\"\n className={styles.toast__action}\n onClick={() => {\n record.action?.onClick();\n onDismiss(record.id);\n }}\n >\n {record.action.label}\n </button>\n )}\n\n <IconButton\n icon={<XLg aria-hidden />}\n label={closeLabel}\n variant=\"ghost\"\n size=\"sm\"\n className={styles.toast__close}\n onClick={() => onDismiss(record.id)}\n />\n </div>\n );\n};\n\ntype HubProps = {\n /** Kapatma düğmelerinin erişilebilir adı. */\n closeLabel?: string;\n /**\n * Yığının erişilebilir adı (\"Bildirimler\").\n * ⚠ Yığın artık bir `role=\"region\"` ve canlı bölge; adsız bir bölge ekran okuyucuda yalnızca\n * \"bölge\" diye okunur.\n */\n regionLabel?: string;\n className?: string;\n};\n\n/** Bildirim yığını — uygulamada BİR KEZ çizilir. */\nconst ToastHub = ({ closeLabel, regionLabel, className }: HubProps) => {\n const { labels } = useUi();\n const [toasts, setToasts] = useState<ToastRecord[]>([]);\n\n useEffect(() => {\n listeners.add(setToasts);\n setToasts(queue);\n return () => {\n listeners.delete(setToasts);\n };\n }, []);\n\n const handleDismiss = useCallback((id: number) => dismiss(id), []);\n\n /*\n * Escape en YENI bildirimi kapatir: yigilmis bildirimleri tek tek kapatmanin klavyeyle tek yolu\n * buydu.\n */\n const dismissLatest = useCallback(() => {\n const latest = toasts.at(-1);\n if (latest) dismiss(latest.id);\n }, [toasts]);\n\n useDismissOnEscape(toasts.length > 0, dismissLatest);\n\n /* HIDRASYON: `isClient()` RENDER İÇİNDE OKUNAMAZ */\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => setIsMounted(true), []);\n\n if (!isMounted) return null;\n\n return createPortal(\n /*\n * Bildirimin üzerindeki `role=\"status\"`/`role=\"alert\"` öğe DOM'a girdiği ANDA yaratılıyordu\n * ⚠ CANLI BÖLGE YIĞININ KENDİSİNDE, tek tek bildirimlerde DEĞİL.\n */\n <div\n className={cx(styles.hub, className)}\n role=\"region\"\n aria-label={resolveLabel('ToastHub.regionLabel', regionLabel, labels?.notifications)}\n aria-live=\"polite\"\n aria-relevant=\"additions\"\n >\n {toasts.map(record => (\n <ToastItem\n key={record.id}\n toast={record}\n closeLabel={resolveLabel('ToastHub.closeLabel', closeLabel, labels?.close)}\n onDismiss={handleDismiss}\n />\n ))}\n </div>,\n document.body,\n );\n};\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(ToastHub, 'ToastHub')) as typeof ToastHub;\n"],"names":["ICONS","jsx","InfoCircleFill","CheckCircleFill","ExclamationTriangleFill","XCircleFill","DEFAULT_DURATION","counter","listeners","queue","emit","listener","dismiss","id","item","push","message","options","toast","ToastItem","record","closeLabel","onDismiss","tone","duration","isPaused","setIsPaused","useState","remainingRef","useRef","startedRef","useEffect","timer","jsxs","cx","styles","_a","IconButton","XLg","ToastHub","regionLabel","className","labels","useUi","toasts","setToasts","handleDismiss","useCallback","dismissLatest","latest","useDismissOnEscape","isMounted","setIsMounted","createPortal","resolveLabel","ToastHub$1","memo","named"],"mappings":";;;;;;;;;;;;AAoCA,MAAMA,IAAsC;AAAA,EAC1C,MAAM,gBAAAC,EAACC,GAAA,EAAe,eAAW,GAAA,CAAC;AAAA,EAClC,SAAS,gBAAAD,EAACE,GAAA,EAAgB,eAAW,GAAA,CAAC;AAAA,EACtC,SAAS,gBAAAF,EAACG,GAAA,EAAwB,eAAW,GAAA,CAAC;AAAA,EAC9C,QAAQ,gBAAAH,EAACI,GAAA,EAAY,eAAW,GAAA,CAAC;AACnC,GAGMC,IAA8C;AAAA,EAClD,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAMA,IAAIC,IAAU;AAKd,MAAMC,wBAA8B,IAAA;AACpC,IAAIC,IAAuB,CAAA;AAE3B,MAAMC,IAAO,MAAMF,EAAU,QAAQ,CAAAG,MAAYA,EAASF,CAAK,CAAC,GAE1DG,IAAU,CAACC,MAAe;AAC9B,EAAAJ,IAAQA,EAAM,OAAO,CAAAK,MAAQA,EAAK,OAAOD,CAAE,GAC3CH,EAAA;AACF,GAEMK,IAAO,CAACC,GAAiBC,IAAwB,OAAe;AACpE,EAAAV,KAAW;AACX,QAAMM,IAAKN;AAMX,SAAAE,IAAQ,CAAC,GAAGA,GAAO,EAAE,GAAGQ,GAAS,IAAAJ,GAAI,SAAAG,EAAA,CAAS,EAAE,MAAM,EAAY,GAClEN,EAAA,GAEOG;AACT,GAMaK,IAAQ;AAAA,EACnB,MAAMH;AAAA,EACN,MAAM,CAACC,GAAiBC,MAA2BF,EAAKC,GAAS,EAAE,GAAGC,GAAS,MAAM,QAAQ;AAAA,EAC7F,SAAS,CAACD,GAAiBC,MACzBF,EAAKC,GAAS,EAAE,GAAGC,GAAS,MAAM,WAAW;AAAA,EAC/C,SAAS,CAACD,GAAiBC,MACzBF,EAAKC,GAAS,EAAE,GAAGC,GAAS,MAAM,WAAW;AAAA,EAC/C,OAAO,CAACD,GAAiBC,MAA2BF,EAAKC,GAAS,EAAE,GAAGC,GAAS,MAAM,UAAU;AAAA,EAChG,SAAAL;AAAA;AAAA,EAEA,OAAO,MAAM;AACX,IAAAH,IAAQ,CAAA,GACRC,EAAA;AAAA,EACF;AACF,GASMS,IAAY,CAAC,EAAE,OAAOC,GAAQ,YAAAC,GAAY,WAAAC,QAA2B;AACzE,QAAMC,IAAOH,EAAO,QAAQ,QACtBI,IAAWJ,EAAO,YAAYd,EAAiBiB,CAAI,GAEnD,CAACE,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxCC,IAAeC,EAAOL,CAAQ,GAC9BM,IAAaD,EAAO,CAAC;AAE3B,SAAAE,EAAU,MAAM;AACd,QAAIP,MAAa,KAAKC,EAAU;AAEhC,IAAAK,EAAW,UAAU,KAAK,IAAA;AAC1B,UAAME,IAAQ,OAAO,WAAW,MAAMV,EAAUF,EAAO,EAAE,GAAGQ,EAAa,OAAO;AAEhF,WAAO,MAAM;AACX,aAAO,aAAaI,CAAK,GAKzBJ,EAAa,UAAU,KAAK,IAAI,GAAGA,EAAa,WAAW,KAAK,IAAA,IAAQE,EAAW,QAAQ;AAAA,IAC7F;AAAA,EACF,GAAG,CAACN,GAAUC,GAAUH,GAAWF,EAAO,EAAE,CAAC,GAG3C,gBAAAa;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAGC,EAAO,OAAOA,EAAO,UAAUZ,CAAI,EAAE,CAAC;AAAA,MAKpD,MAAMA,MAAS,WAAW,UAAU;AAAA,MAKpC,gBAAgB,MAAMG,EAAY,EAAI;AAAA,MACtC,gBAAgB,MAAMA,EAAY,EAAK;AAAA,MAEvC,SAAS,MAAMA,EAAY,EAAI;AAAA,MAC/B,QAAQ,MAAMA,EAAY,EAAK;AAAA,MAE/B,UAAA;AAAA,QAAA,gBAAAzB,EAAC,QAAA,EAAK,WAAWkC,EAAO,aAAa,eAAW,IAC7C,UAAAnC,EAAMuB,CAAI,EAAA,CACb;AAAA,QAEA,gBAAAU,EAAC,OAAA,EAAI,WAAWE,EAAO,aACrB,UAAA;AAAA,UAAA,gBAAAlC,EAAC,QAAA,EAAK,WAAWkC,EAAO,gBAAiB,YAAO,SAAQ;AAAA,UACvDf,EAAO,eACN,gBAAAnB,EAAC,QAAA,EAAK,WAAWkC,EAAO,oBAAqB,YAAO,YAAA,CAAY;AAAA,QAAA,GAEpE;AAAA,QAECf,EAAO,UACN,gBAAAnB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAWkC,EAAO;AAAA,YAClB,SAAS,MAAM;;AACb,eAAAC,IAAAhB,EAAO,WAAP,QAAAgB,EAAe,WACfd,EAAUF,EAAO,EAAE;AAAA,YACrB;AAAA,YAEC,YAAO,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAInB,gBAAAnB;AAAA,UAACoC;AAAA,UAAA;AAAA,YACC,MAAM,gBAAApC,EAACqC,GAAA,EAAI,eAAW,GAAA,CAAC;AAAA,YACvB,OAAOjB;AAAA,YACP,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,WAAWc,EAAO;AAAA,YAClB,SAAS,MAAMb,EAAUF,EAAO,EAAE;AAAA,UAAA;AAAA,QAAA;AAAA,MACpC;AAAA,IAAA;AAAA,EAAA;AAGN,GAeMmB,IAAW,CAAC,EAAE,YAAAlB,GAAY,aAAAmB,GAAa,WAAAC,QAA0B;AACrE,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACb,CAACC,GAAQC,CAAS,IAAIlB,EAAwB,CAAA,CAAE;AAEtD,EAAAI,EAAU,OACRvB,EAAU,IAAIqC,CAAS,GACvBA,EAAUpC,CAAK,GACR,MAAM;AACX,IAAAD,EAAU,OAAOqC,CAAS;AAAA,EAC5B,IACC,CAAA,CAAE;AAEL,QAAMC,IAAgBC,EAAY,CAAClC,MAAeD,EAAQC,CAAE,GAAG,EAAE,GAM3DmC,IAAgBD,EAAY,MAAM;AACtC,UAAME,IAASL,EAAO,GAAG,EAAE;AAC3B,IAAIK,KAAQrC,EAAQqC,EAAO,EAAE;AAAA,EAC/B,GAAG,CAACL,CAAM,CAAC;AAEX,EAAAM,EAAmBN,EAAO,SAAS,GAAGI,CAAa;AAGnD,QAAM,CAACG,GAAWC,CAAY,IAAIzB,EAAS,EAAK;AAIhD,SAFAI,EAAU,MAAMqB,EAAa,EAAI,GAAG,CAAA,CAAE,GAEjCD,IAEEE;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,gBAAApD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWiC,EAAGC,EAAO,KAAKM,CAAS;AAAA,QACnC,MAAK;AAAA,QACL,cAAYa,EAAa,wBAAwBd,GAAaE,KAAA,gBAAAA,EAAQ,aAAa;AAAA,QACnF,aAAU;AAAA,QACV,iBAAc;AAAA,QAEb,UAAAE,EAAO,IAAI,CAAAxB,MACV,gBAAAnB;AAAA,UAACkB;AAAA,UAAA;AAAA,YAEC,OAAOC;AAAA,YACP,YAAYkC,EAAa,uBAAuBjC,GAAYqB,KAAA,gBAAAA,EAAQ,KAAK;AAAA,YACzE,WAAWI;AAAA,UAAA;AAAA,UAHN1B,EAAO;AAAA,QAAA,CAKf;AAAA,MAAA;AAAA,IAAA;AAAA,IAEH,SAAS;AAAA,EAAA,IAvBY;AAyBzB,GAEAmC,IAA6B,gBAAAC,EAAmB,gBAAAC,EAAMlB,GAAU,UAAU,CAAC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-hub-JoqOf{position:fixed;inset-inline:0;bottom:0;z-index:var(--hd-z-toast);display:flex;flex-direction:column;align-items:center;gap:var(--hd-space-2);padding:var(--hd-space-4);pointer-events:none;padding-bottom:max(var(--hd-space-4),env(safe-area-inset-bottom,0px) - max(env(safe-area-inset-bottom,0px),var(--ui-sheet-inset-bottom, 0px)))}@media (min-width: 1025px){.ui-hub-JoqOf{align-items:flex-end}}.ui-toast-U27Of{display:flex;align-items:flex-start;gap:var(--hd-space-3);pointer-events:auto;width:100%;max-width:420px;padding:var(--hd-space-3);border-radius:var(--hd-radius-sm);background-color:var(--hd-bg-overlay);border:1px solid var(--hd-border);box-shadow:var(--hd-shadow-2);animation:var(--ui-anim-fade-in-up) var(--hd-duration-base) var(--hd-ease-standard)}@media (prefers-reduced-motion: reduce){.ui-toast-U27Of{animation:none}}.ui-toast--info-S1QJr{border-inline-start:3px solid var(--hd-primary)}.ui-toast--success-NUso7{border-inline-start:3px solid var(--hd-success-solid)}.ui-toast--warning-7mi-S{border-inline-start:3px solid var(--hd-warning-solid)}.ui-toast--danger-IhFSz{border-inline-start:3px solid var(--hd-danger-solid)}@media (forced-colors: active){.ui-toast-U27Of{border-color:CanvasText}}.ui-toast__icon-p-rgI{display:inline-flex;flex-shrink:0;font-size:18px;margin-top:1px}.ui-toast--info-S1QJr .ui-toast__icon-p-rgI{color:var(--hd-text)}.ui-toast--success-NUso7 .ui-toast__icon-p-rgI{color:var(--hd-success-solid)}.ui-toast--warning-7mi-S .ui-toast__icon-p-rgI{color:var(--hd-warning-solid)}.ui-toast--danger-IhFSz .ui-toast__icon-p-rgI{color:var(--hd-danger-solid)}.ui-toast__text-rG4ji{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.ui-toast__message-s6S2-{font-size:var(--hd-type-small-size);font-weight:var(--hd-font-weight-semibold);color:var(--hd-text)}.ui-toast__description-0cYTx{font-size:var(--hd-type-caption-size);color:var(--hd-text-2);line-height:var(--hd-type-body-line-height)}.ui-toast__action-fOXU5{position:relative}.ui-toast__action-fOXU5:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-toast__action-fOXU5{flex-shrink:0;padding:var(--hd-space-1) var(--hd-space-2);border:none;border-radius:var(--hd-radius-xs);background:none;cursor:pointer;font-family:var(--hd-font-body);font-size:var(--hd-type-caption-size);font-weight:var(--hd-font-weight-semibold);color:var(--hd-text);text-decoration:underline;text-underline-offset:3px}.ui-toast__action-fOXU5:hover{background-color:color-mix(in srgb,var(--hd-text) 8%,transparent)}.ui-toast__action-fOXU5:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, 1px)}.ui-toast__close-QxSNP{flex-shrink:0}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),e=require("react"),u=require("../../helpers/component.helper.cjs"),n=require("../Toast/index.cjs"),o=()=>{const[t,r]=e.useState(!1);return e.useEffect(()=>r(!0),[]),t?s.jsx(n.default,{}):null},i=e.memo(u.named(o,"ToastPortal"));exports.default=i;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/ToastPortal/index.tsx"],"sourcesContent":["'use client';\n\nimport { FC, memo, useEffect, useState } from 'react';\n\nimport { named } from '../../helpers/component.helper';\n\nimport ToastHub from '../Toast';\n\n/**\n * `ToastHub`ı montajdan SONRA çizen sarmalayıcı.\n * ⚠ SUNUCUDA ÇİZİLMEMESİ ŞART. `ToastHub` portal kullanıyor ve `document` olmadan çalışamaz\n */\nconst ToastPortal: FC = () => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => setIsMounted(true), []);\n\n if (!isMounted) return null;\n\n return <ToastHub />;\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(ToastPortal, 'ToastPortal'),\n) as typeof ToastPortal;\n"],"names":["ToastPortal","isMounted","setIsMounted","useState","useEffect","ToastHub","index","memo","named"],"mappings":"iQAWMA,EAAkB,IAAM,CAC5B,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAS,EAAK,EAIhD,OAFAC,EAAAA,UAAU,IAAMF,EAAa,EAAI,EAAG,CAAA,CAAE,EAEjCD,QAEGI,EAAAA,QAAA,EAAS,EAFM,IAGzB,EAEAC,EAA6BC,EAAAA,KACbC,EAAAA,MAAMR,EAAa,aAAa,CAChD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* `ToastHub`ı montajdan SONRA çizen sarmalayıcı.
|
|
4
|
+
* ⚠ SUNUCUDA ÇİZİLMEMESİ ŞART. `ToastHub` portal kullanıyor ve `document` olmadan çalışamaz
|
|
5
|
+
*/
|
|
6
|
+
declare const ToastPortal: FC;
|
|
7
|
+
declare const _default: typeof ToastPortal;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
3
|
+
import { memo as r, useState as s, useEffect as m } from "react";
|
|
4
|
+
import { named as n } from "../../helpers/component.helper.js";
|
|
5
|
+
import u from "../Toast/index.js";
|
|
6
|
+
const a = () => {
|
|
7
|
+
const [t, o] = s(!1);
|
|
8
|
+
return m(() => o(!0), []), t ? /* @__PURE__ */ e(u, {}) : null;
|
|
9
|
+
}, d = /* @__PURE__ */ r(
|
|
10
|
+
/* @__PURE__ */ n(a, "ToastPortal")
|
|
11
|
+
);
|
|
12
|
+
export {
|
|
13
|
+
d as default
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/ToastPortal/index.tsx"],"sourcesContent":["'use client';\n\nimport { FC, memo, useEffect, useState } from 'react';\n\nimport { named } from '../../helpers/component.helper';\n\nimport ToastHub from '../Toast';\n\n/**\n * `ToastHub`ı montajdan SONRA çizen sarmalayıcı.\n * ⚠ SUNUCUDA ÇİZİLMEMESİ ŞART. `ToastHub` portal kullanıyor ve `document` olmadan çalışamaz\n */\nconst ToastPortal: FC = () => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => setIsMounted(true), []);\n\n if (!isMounted) return null;\n\n return <ToastHub />;\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(ToastPortal, 'ToastPortal'),\n) as typeof ToastPortal;\n"],"names":["ToastPortal","isMounted","setIsMounted","useState","useEffect","ToastHub","index","memo","named"],"mappings":";;;;;AAWA,MAAMA,IAAkB,MAAM;AAC5B,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK;AAIhD,SAFAC,EAAU,MAAMF,EAAa,EAAI,GAAG,CAAA,CAAE,GAEjCD,sBAEGI,GAAA,EAAS,IAFM;AAGzB,GAEAC,IAA6B,gBAAAC;AAAA,EACb,gBAAAC,EAAMR,GAAa,aAAa;AAChD;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),t=require("react"),O=require("react-dom"),E=require("../../helpers/class-name.helper.cjs"),j=require("../../helpers/component.helper.cjs"),F=require("../../hooks/useDismissOnEscape.cjs"),k=require("../../hooks/usePortalSurface.cjs"),I=require("../../hooks/usePositioning.cjs"),f={default:{"tooltip":"ui-tooltip-RG1g1","tooltip__trigger":"ui-tooltip__trigger-nWZtO","bubble":"ui-bubble-bcBNk","bubble--top":"ui-bubble--top-uWSZy","bubble--bottom":"ui-bubble--bottom-jKokL","bubble--left":"ui-bubble--left-WK4EM","bubble--right":"ui-bubble--right-EQjUT"}},M=120,A=500,Y=300,B=({content:T,children:s,side:v,position:g,openDelay:D=Y,className:_})=>{const[n,p]=t.useState(!1),x=t.useId(),h=v??g??"top",c=t.useRef(null),b=t.useRef(null),a=t.useRef(0),o=t.useRef(0),q=t.useMemo(()=>{if(!t.isValidElement(s))return!1;const e=s.type,u=s.props;return u.tabIndex!==void 0?!0:u.disabled===!0||typeof e!="string"?!1:e==="a"?u.href!==void 0:["button","input","select","textarea"].includes(e)},[s]),[R,S]=t.useState(!1);t.useEffect(()=>{const e=c.current;e&&S(!!e.querySelector('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'))},[s]);const C=q||R,m=I.default(c,b,{side:h,align:"center",isOpen:n}),d=k.default(n,c,b),r=t.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=0},[]),P=t.useCallback(e=>{r(),a.current=window.setTimeout(()=>p(!0),e)},[r]),i=t.useCallback((e=M)=>{r(),a.current=window.setTimeout(()=>p(!1),e)},[r]);t.useEffect(()=>r,[r]),t.useEffect(()=>()=>{o.current&&window.clearTimeout(o.current)},[]);const L=t.useCallback(()=>i(0),[i]);F.default(n,L),t.useEffect(()=>{if(!n)return;const e=u=>{var y;u.pointerType!=="mouse"&&((y=c.current)!=null&&y.contains(u.target)||i(0))};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[n,i]);const w=()=>{o.current&&window.clearTimeout(o.current),o.current=0},N=e=>{e.pointerType!=="mouse"&&(o.current=window.setTimeout(()=>p(!0),A))};return l.jsxs(l.Fragment,{children:[l.jsx("span",{ref:c,className:E.cx(f.default.tooltip,_),tabIndex:C?void 0:0,onPointerEnter:e=>e.pointerType==="mouse"&&P(D),onPointerLeave:e=>{w(),e.pointerType==="mouse"&&i()},onPointerDown:N,onPointerUp:w,onPointerCancel:w,onFocus:()=>P(0),onBlur:()=>i(0),onContextMenu:e=>{(n||o.current)&&e.preventDefault()},children:l.jsx("span",{"aria-describedby":n?x:void 0,className:f.default.tooltip__trigger,children:s})}),n&&d.container&&O.createPortal(l.jsx("span",{ref:b,...d.attributes,id:x,role:"tooltip",className:E.cx(f.default.bubble,f.default[`bubble--${m.side}`]),style:{...m.style,...d.style,visibility:m.isPositioned?"visible":"hidden"},children:T}),d.container)]})},G=t.memo(j.named(B,"Tooltip"));exports.default=G;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n isValidElement,\n memo,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport useDismissOnEscape from '../../hooks/useDismissOnEscape';\nimport usePortalSurface from '../../hooks/usePortalSurface';\nimport usePositioning from '../../hooks/usePositioning';\n\nimport styles from './index.module.scss';\nimport type { PositionSide } from '@/types/positioning.type';\n\ntype Props = {\n /** Balonda gösterilecek açıklama. */\n content: ReactNode;\n /** Açıklamanın bağlandığı öğe — düğme, ikon, etiket. */\n children: ReactNode;\n /** Tercih edilen kenar. */\n side?: PositionSide;\n /** Açılma gecikmesi (ms). */\n openDelay?: number;\n /**\n * Ad değişti çünkü davranış değişti: `position` SABİT bir kenar yazıyordu ve balon oraya\n * sığmadığında görünüm alanının dışına taşıyordu. `side`…\n * @deprecated `side` kullanın.\n */\n position?: 'top' | 'bottom';\n className?: string;\n};\n\n/** Balonun kapanmadan önce beklediği süre — imlecin balona ulaşması için. */\nconst CLOSE_DELAY = 120;\n\n/** Dokunmatikte balonu açan basma süresi. */\nconst LONG_PRESS_DELAY = 500;\n\n/** İmleç öğenin üzerinde beklemeden balon açılmaz. */\nconst OPEN_DELAY = 300;\n\n/** İpucu balonu. */\nconst Tooltip = ({\n content,\n children,\n side,\n position,\n openDelay = OPEN_DELAY,\n className,\n}: Props) => {\n const [isOpen, setIsOpen] = useState(false);\n const id = useId();\n\n /* Eski prop bir surum boyunca calisir; `side` verilmisse o kazanir. */\n const resolvedSide: PositionSide = side ?? position ?? 'top';\n\n const anchorRef = useRef<HTMLSpanElement>(null);\n const bubbleRef = useRef<HTMLSpanElement>(null);\n const timerRef = useRef(0);\n const longPressRef = useRef(0);\n\n /*\n * Cocuk kendi basina odak alabiliyor mu — capaya `tabIndex` verilip verilmeyecegini bu belirler.\n */\n const staticallyFocusableChild = useMemo(() => {\n if (!isValidElement(children)) return false;\n const type = children.type;\n const props = children.props as { href?: unknown; tabIndex?: unknown; disabled?: unknown };\n\n if (props.tabIndex !== undefined) return true;\n if (props.disabled === true) return false;\n if (typeof type !== 'string') return false;\n if (type === 'a') return props.href !== undefined;\n\n return ['button', 'input', 'select', 'textarea'].includes(type);\n }, [children]);\n\n /*\n * `typeof type!== 'string'` her BILESENI \"odaklanamaz\" sayiyor; ui'nin her bileseni bir `memo`\n * NESNESI, yani `<Tooltip><Button/></Tooltip>` icin…\n * ⚠ STATIK KONTROL TEK BASINA YANLIS CEVAP VERIYORDU.\n */\n const [hasFocusableDescendant, setHasFocusableDescendant] = useState(false);\n\n useEffect(() => {\n const node = anchorRef.current;\n if (!node) return;\n\n setHasFocusableDescendant(\n Boolean(\n node.querySelector(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n ),\n ),\n );\n }, [children]);\n\n const hasFocusableChild = staticallyFocusableChild || hasFocusableDescendant;\n\n const positioning = usePositioning(anchorRef, bubbleRef, {\n side: resolvedSide,\n align: 'center',\n isOpen,\n });\n\n const portal = usePortalSurface(isOpen, anchorRef, bubbleRef);\n\n const clearTimer = useCallback(() => {\n if (timerRef.current) window.clearTimeout(timerRef.current);\n timerRef.current = 0;\n }, []);\n\n const open = useCallback(\n (delay: number) => {\n clearTimer();\n timerRef.current = window.setTimeout(() => setIsOpen(true), delay);\n },\n [clearTimer],\n );\n\n const close = useCallback(\n (delay: number = CLOSE_DELAY) => {\n clearTimer();\n timerRef.current = window.setTimeout(() => setIsOpen(false), delay);\n },\n [clearTimer],\n );\n\n useEffect(() => clearTimer, [clearTimer]);\n\n /*\n * ⚠ UZUN BASMA zamanlayıcısı AYRI temizlenir. `clearTimer` yalnızca açılış/ kapanış gecikmesini\n * iptal ediyor\n */\n useEffect(\n () => () => {\n if (longPressRef.current) window.clearTimeout(longPressRef.current);\n },\n [],\n );\n\n /*\n * Escape ANINDA kapatir: gecikme, ipucunu kapatmak icin bastigi tusun islemedigi izlenimi\n * veriyordu.\n */\n const closeNow = useCallback(() => close(0), [close]);\n useDismissOnEscape(isOpen, closeNow);\n\n /*\n * Dokunmatikte ekranin herhangi bir yerine dokunmak kapatir: balonun kendi kapatma yolu yok ve\n * `pointer-events: none` oldugu icin ona da dokunulamiyor.\n */\n useEffect(() => {\n if (!isOpen) return;\n\n const handlePointerDown = (event: globalThis.PointerEvent) => {\n if (event.pointerType === 'mouse') return;\n if (anchorRef.current?.contains(event.target as Node)) return;\n close(0);\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n return () => document.removeEventListener('pointerdown', handlePointerDown);\n }, [isOpen, close]);\n\n const cancelLongPress = () => {\n if (longPressRef.current) window.clearTimeout(longPressRef.current);\n longPressRef.current = 0;\n };\n\n const handlePointerDown = (event: ReactPointerEvent) => {\n if (event.pointerType === 'mouse') return;\n longPressRef.current = window.setTimeout(() => setIsOpen(true), LONG_PRESS_DELAY);\n };\n\n return (\n <>\n <span\n ref={anchorRef}\n className={cx(styles.tooltip, className)}\n /*\n * ⚠ CAPA ODAKLANABILIR OLMAK ZORUNDA. `onFocus`/`onBlur` zaten bagli ama ` ` varsayilan\n * olarak odak almiyor: cocuk kendisi odaklanabilir…\n * ⚠ Cocuk zaten odaklanabiliyorsa (dugme, baglanti) `tabIndex` KONULMAZ: aksi halde ayni\n * ipucu icin sekmede IKI durak olusur.\n */\n tabIndex={hasFocusableChild ? undefined : 0}\n onPointerEnter={event => event.pointerType === 'mouse' && open(openDelay)}\n onPointerLeave={event => {\n cancelLongPress();\n if (event.pointerType === 'mouse') close();\n }}\n onPointerDown={handlePointerDown}\n onPointerUp={cancelLongPress}\n onPointerCancel={cancelLongPress}\n onFocus={() => open(0)}\n onBlur={() => close(0)}\n onContextMenu={event => {\n if (isOpen || longPressRef.current) event.preventDefault();\n }}\n >\n <span aria-describedby={isOpen ? id : undefined} className={styles.tooltip__trigger}>\n {children}\n </span>\n </span>\n\n {/*\n Balon DOM'da yalnizca ACIKKEN: kapaliyken de birakip gizlemek, ekran\n okuyucunun onu `aria-describedby` olmadan da bulup okumasina yol\n aciyordu.\n */}\n {isOpen &&\n portal.container &&\n createPortal(\n <span\n ref={bubbleRef}\n /* ⚠ Modal içinden açıldığında üst katman ZORUNLU — `portal.helper`. */\n {...portal.attributes}\n id={id}\n role=\"tooltip\"\n className={cx(styles.bubble, styles[`bubble--${positioning.side}`])}\n style={{\n ...positioning.style,\n ...portal.style,\n /* Olculmeden cizilen balon bir kare boyunca sol ust kosede parliyordu. */\n visibility: positioning.isPositioned ? 'visible' : 'hidden',\n }}\n >\n {content}\n </span>,\n portal.container,\n )}\n </>\n );\n};\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Tooltip, 'Tooltip')) as typeof Tooltip;\n"],"names":["CLOSE_DELAY","LONG_PRESS_DELAY","OPEN_DELAY","Tooltip","content","children","side","position","openDelay","className","isOpen","setIsOpen","useState","id","useId","resolvedSide","anchorRef","useRef","bubbleRef","timerRef","longPressRef","staticallyFocusableChild","useMemo","isValidElement","type","props","hasFocusableDescendant","setHasFocusableDescendant","useEffect","node","hasFocusableChild","positioning","usePositioning","portal","usePortalSurface","clearTimer","useCallback","open","delay","close","closeNow","useDismissOnEscape","handlePointerDown","event","_a","cancelLongPress","jsxs","Fragment","jsx","cx","styles","createPortal","index","memo","named"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { PositionSide } from '../../types/positioning.type';
|
|
3
|
+
type Props = {
|
|
4
|
+
/** Balonda gösterilecek açıklama. */
|
|
5
|
+
content: ReactNode;
|
|
6
|
+
/** Açıklamanın bağlandığı öğe — düğme, ikon, etiket. */
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
/** Tercih edilen kenar. */
|
|
9
|
+
side?: PositionSide;
|
|
10
|
+
/** Açılma gecikmesi (ms). */
|
|
11
|
+
openDelay?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Ad değişti çünkü davranış değişti: `position` SABİT bir kenar yazıyordu ve balon oraya
|
|
14
|
+
* sığmadığında görünüm alanının dışına taşıyordu. `side`…
|
|
15
|
+
* @deprecated `side` kullanın.
|
|
16
|
+
*/
|
|
17
|
+
position?: 'top' | 'bottom';
|
|
18
|
+
className?: string;
|
|
19
|
+
};
|
|
20
|
+
/** İpucu balonu. */
|
|
21
|
+
declare const Tooltip: ({ content, children, side, position, openDelay, className, }: Props) => import("react").JSX.Element;
|
|
22
|
+
declare const _default: typeof Tooltip;
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as Y, Fragment as j, jsx as P } from "react/jsx-runtime";
|
|
3
|
+
import { memo as B, useState as v, useId as M, useRef as l, useMemo as k, isValidElement as q, useEffect as d, useCallback as p } from "react";
|
|
4
|
+
import { createPortal as G } from "react-dom";
|
|
5
|
+
import { cx as g } from "../../helpers/class-name.helper.js";
|
|
6
|
+
import { named as H } from "../../helpers/component.helper.js";
|
|
7
|
+
import U from "../../hooks/useDismissOnEscape.js";
|
|
8
|
+
import V from "../../hooks/usePortalSurface.js";
|
|
9
|
+
import $ from "../../hooks/usePositioning.js";
|
|
10
|
+
const f = {"tooltip":"ui-tooltip-RG1g1","tooltip__trigger":"ui-tooltip__trigger-nWZtO","bubble":"ui-bubble-bcBNk","bubble--top":"ui-bubble--top-uWSZy","bubble--bottom":"ui-bubble--bottom-jKokL","bubble--left":"ui-bubble--left-WK4EM","bubble--right":"ui-bubble--right-EQjUT"};
|
|
11
|
+
const z = 120, J = 500, K = 300, Q = ({
|
|
12
|
+
content: D,
|
|
13
|
+
children: o,
|
|
14
|
+
side: L,
|
|
15
|
+
position: h,
|
|
16
|
+
openDelay: S = K,
|
|
17
|
+
className: C
|
|
18
|
+
}) => {
|
|
19
|
+
const [t, m] = v(!1), T = M(), F = L ?? h ?? "top", c = l(null), b = l(null), a = l(0), n = l(0), N = k(() => {
|
|
20
|
+
if (!q(o)) return !1;
|
|
21
|
+
const e = o.type, i = o.props;
|
|
22
|
+
return i.tabIndex !== void 0 ? !0 : i.disabled === !0 || typeof e != "string" ? !1 : e === "a" ? i.href !== void 0 : ["button", "input", "select", "textarea"].includes(e);
|
|
23
|
+
}, [o]), [O, R] = v(!1);
|
|
24
|
+
d(() => {
|
|
25
|
+
const e = c.current;
|
|
26
|
+
e && R(
|
|
27
|
+
!!e.querySelector(
|
|
28
|
+
'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'
|
|
29
|
+
)
|
|
30
|
+
);
|
|
31
|
+
}, [o]);
|
|
32
|
+
const _ = N || O, w = $(c, b, {
|
|
33
|
+
side: F,
|
|
34
|
+
align: "center",
|
|
35
|
+
isOpen: t
|
|
36
|
+
}), u = V(t, c, b), r = p(() => {
|
|
37
|
+
a.current && window.clearTimeout(a.current), a.current = 0;
|
|
38
|
+
}, []), x = p(
|
|
39
|
+
(e) => {
|
|
40
|
+
r(), a.current = window.setTimeout(() => m(!0), e);
|
|
41
|
+
},
|
|
42
|
+
[r]
|
|
43
|
+
), s = p(
|
|
44
|
+
(e = z) => {
|
|
45
|
+
r(), a.current = window.setTimeout(() => m(!1), e);
|
|
46
|
+
},
|
|
47
|
+
[r]
|
|
48
|
+
);
|
|
49
|
+
d(() => r, [r]), d(
|
|
50
|
+
() => () => {
|
|
51
|
+
n.current && window.clearTimeout(n.current);
|
|
52
|
+
},
|
|
53
|
+
[]
|
|
54
|
+
);
|
|
55
|
+
const I = p(() => s(0), [s]);
|
|
56
|
+
U(t, I), d(() => {
|
|
57
|
+
if (!t) return;
|
|
58
|
+
const e = (i) => {
|
|
59
|
+
var E;
|
|
60
|
+
i.pointerType !== "mouse" && ((E = c.current) != null && E.contains(i.target) || s(0));
|
|
61
|
+
};
|
|
62
|
+
return document.addEventListener("pointerdown", e), () => document.removeEventListener("pointerdown", e);
|
|
63
|
+
}, [t, s]);
|
|
64
|
+
const y = () => {
|
|
65
|
+
n.current && window.clearTimeout(n.current), n.current = 0;
|
|
66
|
+
}, A = (e) => {
|
|
67
|
+
e.pointerType !== "mouse" && (n.current = window.setTimeout(() => m(!0), J));
|
|
68
|
+
};
|
|
69
|
+
return /* @__PURE__ */ Y(j, { children: [
|
|
70
|
+
/* @__PURE__ */ P(
|
|
71
|
+
"span",
|
|
72
|
+
{
|
|
73
|
+
ref: c,
|
|
74
|
+
className: g(f.tooltip, C),
|
|
75
|
+
tabIndex: _ ? void 0 : 0,
|
|
76
|
+
onPointerEnter: (e) => e.pointerType === "mouse" && x(S),
|
|
77
|
+
onPointerLeave: (e) => {
|
|
78
|
+
y(), e.pointerType === "mouse" && s();
|
|
79
|
+
},
|
|
80
|
+
onPointerDown: A,
|
|
81
|
+
onPointerUp: y,
|
|
82
|
+
onPointerCancel: y,
|
|
83
|
+
onFocus: () => x(0),
|
|
84
|
+
onBlur: () => s(0),
|
|
85
|
+
onContextMenu: (e) => {
|
|
86
|
+
(t || n.current) && e.preventDefault();
|
|
87
|
+
},
|
|
88
|
+
children: /* @__PURE__ */ P("span", { "aria-describedby": t ? T : void 0, className: f.tooltip__trigger, children: o })
|
|
89
|
+
}
|
|
90
|
+
),
|
|
91
|
+
t && u.container && G(
|
|
92
|
+
/* @__PURE__ */ P(
|
|
93
|
+
"span",
|
|
94
|
+
{
|
|
95
|
+
ref: b,
|
|
96
|
+
...u.attributes,
|
|
97
|
+
id: T,
|
|
98
|
+
role: "tooltip",
|
|
99
|
+
className: g(f.bubble, f[`bubble--${w.side}`]),
|
|
100
|
+
style: {
|
|
101
|
+
...w.style,
|
|
102
|
+
...u.style,
|
|
103
|
+
/* Olculmeden cizilen balon bir kare boyunca sol ust kosede parliyordu. */
|
|
104
|
+
visibility: w.isPositioned ? "visible" : "hidden"
|
|
105
|
+
},
|
|
106
|
+
children: D
|
|
107
|
+
}
|
|
108
|
+
),
|
|
109
|
+
u.container
|
|
110
|
+
)
|
|
111
|
+
] });
|
|
112
|
+
}, ie = /* @__PURE__ */ B(/* @__PURE__ */ H(Q, "Tooltip"));
|
|
113
|
+
export {
|
|
114
|
+
ie as default
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n isValidElement,\n memo,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport useDismissOnEscape from '../../hooks/useDismissOnEscape';\nimport usePortalSurface from '../../hooks/usePortalSurface';\nimport usePositioning from '../../hooks/usePositioning';\n\nimport styles from './index.module.scss';\nimport type { PositionSide } from '@/types/positioning.type';\n\ntype Props = {\n /** Balonda gösterilecek açıklama. */\n content: ReactNode;\n /** Açıklamanın bağlandığı öğe — düğme, ikon, etiket. */\n children: ReactNode;\n /** Tercih edilen kenar. */\n side?: PositionSide;\n /** Açılma gecikmesi (ms). */\n openDelay?: number;\n /**\n * Ad değişti çünkü davranış değişti: `position` SABİT bir kenar yazıyordu ve balon oraya\n * sığmadığında görünüm alanının dışına taşıyordu. `side`…\n * @deprecated `side` kullanın.\n */\n position?: 'top' | 'bottom';\n className?: string;\n};\n\n/** Balonun kapanmadan önce beklediği süre — imlecin balona ulaşması için. */\nconst CLOSE_DELAY = 120;\n\n/** Dokunmatikte balonu açan basma süresi. */\nconst LONG_PRESS_DELAY = 500;\n\n/** İmleç öğenin üzerinde beklemeden balon açılmaz. */\nconst OPEN_DELAY = 300;\n\n/** İpucu balonu. */\nconst Tooltip = ({\n content,\n children,\n side,\n position,\n openDelay = OPEN_DELAY,\n className,\n}: Props) => {\n const [isOpen, setIsOpen] = useState(false);\n const id = useId();\n\n /* Eski prop bir surum boyunca calisir; `side` verilmisse o kazanir. */\n const resolvedSide: PositionSide = side ?? position ?? 'top';\n\n const anchorRef = useRef<HTMLSpanElement>(null);\n const bubbleRef = useRef<HTMLSpanElement>(null);\n const timerRef = useRef(0);\n const longPressRef = useRef(0);\n\n /*\n * Cocuk kendi basina odak alabiliyor mu — capaya `tabIndex` verilip verilmeyecegini bu belirler.\n */\n const staticallyFocusableChild = useMemo(() => {\n if (!isValidElement(children)) return false;\n const type = children.type;\n const props = children.props as { href?: unknown; tabIndex?: unknown; disabled?: unknown };\n\n if (props.tabIndex !== undefined) return true;\n if (props.disabled === true) return false;\n if (typeof type !== 'string') return false;\n if (type === 'a') return props.href !== undefined;\n\n return ['button', 'input', 'select', 'textarea'].includes(type);\n }, [children]);\n\n /*\n * `typeof type!== 'string'` her BILESENI \"odaklanamaz\" sayiyor; ui'nin her bileseni bir `memo`\n * NESNESI, yani `<Tooltip><Button/></Tooltip>` icin…\n * ⚠ STATIK KONTROL TEK BASINA YANLIS CEVAP VERIYORDU.\n */\n const [hasFocusableDescendant, setHasFocusableDescendant] = useState(false);\n\n useEffect(() => {\n const node = anchorRef.current;\n if (!node) return;\n\n setHasFocusableDescendant(\n Boolean(\n node.querySelector(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n ),\n ),\n );\n }, [children]);\n\n const hasFocusableChild = staticallyFocusableChild || hasFocusableDescendant;\n\n const positioning = usePositioning(anchorRef, bubbleRef, {\n side: resolvedSide,\n align: 'center',\n isOpen,\n });\n\n const portal = usePortalSurface(isOpen, anchorRef, bubbleRef);\n\n const clearTimer = useCallback(() => {\n if (timerRef.current) window.clearTimeout(timerRef.current);\n timerRef.current = 0;\n }, []);\n\n const open = useCallback(\n (delay: number) => {\n clearTimer();\n timerRef.current = window.setTimeout(() => setIsOpen(true), delay);\n },\n [clearTimer],\n );\n\n const close = useCallback(\n (delay: number = CLOSE_DELAY) => {\n clearTimer();\n timerRef.current = window.setTimeout(() => setIsOpen(false), delay);\n },\n [clearTimer],\n );\n\n useEffect(() => clearTimer, [clearTimer]);\n\n /*\n * ⚠ UZUN BASMA zamanlayıcısı AYRI temizlenir. `clearTimer` yalnızca açılış/ kapanış gecikmesini\n * iptal ediyor\n */\n useEffect(\n () => () => {\n if (longPressRef.current) window.clearTimeout(longPressRef.current);\n },\n [],\n );\n\n /*\n * Escape ANINDA kapatir: gecikme, ipucunu kapatmak icin bastigi tusun islemedigi izlenimi\n * veriyordu.\n */\n const closeNow = useCallback(() => close(0), [close]);\n useDismissOnEscape(isOpen, closeNow);\n\n /*\n * Dokunmatikte ekranin herhangi bir yerine dokunmak kapatir: balonun kendi kapatma yolu yok ve\n * `pointer-events: none` oldugu icin ona da dokunulamiyor.\n */\n useEffect(() => {\n if (!isOpen) return;\n\n const handlePointerDown = (event: globalThis.PointerEvent) => {\n if (event.pointerType === 'mouse') return;\n if (anchorRef.current?.contains(event.target as Node)) return;\n close(0);\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n return () => document.removeEventListener('pointerdown', handlePointerDown);\n }, [isOpen, close]);\n\n const cancelLongPress = () => {\n if (longPressRef.current) window.clearTimeout(longPressRef.current);\n longPressRef.current = 0;\n };\n\n const handlePointerDown = (event: ReactPointerEvent) => {\n if (event.pointerType === 'mouse') return;\n longPressRef.current = window.setTimeout(() => setIsOpen(true), LONG_PRESS_DELAY);\n };\n\n return (\n <>\n <span\n ref={anchorRef}\n className={cx(styles.tooltip, className)}\n /*\n * ⚠ CAPA ODAKLANABILIR OLMAK ZORUNDA. `onFocus`/`onBlur` zaten bagli ama ` ` varsayilan\n * olarak odak almiyor: cocuk kendisi odaklanabilir…\n * ⚠ Cocuk zaten odaklanabiliyorsa (dugme, baglanti) `tabIndex` KONULMAZ: aksi halde ayni\n * ipucu icin sekmede IKI durak olusur.\n */\n tabIndex={hasFocusableChild ? undefined : 0}\n onPointerEnter={event => event.pointerType === 'mouse' && open(openDelay)}\n onPointerLeave={event => {\n cancelLongPress();\n if (event.pointerType === 'mouse') close();\n }}\n onPointerDown={handlePointerDown}\n onPointerUp={cancelLongPress}\n onPointerCancel={cancelLongPress}\n onFocus={() => open(0)}\n onBlur={() => close(0)}\n onContextMenu={event => {\n if (isOpen || longPressRef.current) event.preventDefault();\n }}\n >\n <span aria-describedby={isOpen ? id : undefined} className={styles.tooltip__trigger}>\n {children}\n </span>\n </span>\n\n {/*\n Balon DOM'da yalnizca ACIKKEN: kapaliyken de birakip gizlemek, ekran\n okuyucunun onu `aria-describedby` olmadan da bulup okumasina yol\n aciyordu.\n */}\n {isOpen &&\n portal.container &&\n createPortal(\n <span\n ref={bubbleRef}\n /* ⚠ Modal içinden açıldığında üst katman ZORUNLU — `portal.helper`. */\n {...portal.attributes}\n id={id}\n role=\"tooltip\"\n className={cx(styles.bubble, styles[`bubble--${positioning.side}`])}\n style={{\n ...positioning.style,\n ...portal.style,\n /* Olculmeden cizilen balon bir kare boyunca sol ust kosede parliyordu. */\n visibility: positioning.isPositioned ? 'visible' : 'hidden',\n }}\n >\n {content}\n </span>,\n portal.container,\n )}\n </>\n );\n};\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Tooltip, 'Tooltip')) as typeof Tooltip;\n"],"names":["CLOSE_DELAY","LONG_PRESS_DELAY","OPEN_DELAY","Tooltip","content","children","side","position","openDelay","className","isOpen","setIsOpen","useState","id","useId","resolvedSide","anchorRef","useRef","bubbleRef","timerRef","longPressRef","staticallyFocusableChild","useMemo","isValidElement","type","props","hasFocusableDescendant","setHasFocusableDescendant","useEffect","node","hasFocusableChild","positioning","usePositioning","portal","usePortalSurface","clearTimer","useCallback","open","delay","close","closeNow","useDismissOnEscape","handlePointerDown","event","_a","cancelLongPress","jsxs","Fragment","jsx","cx","styles","createPortal","index","memo","named"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-tooltip-RG1g1{display:inline-flex}.ui-tooltip__trigger-nWZtO{display:inline-flex;align-items:center}.ui-bubble-bcBNk{z-index:var(--hd-z-tooltip);pointer-events:none;width:max-content;max-width:min(280px,100vw - var(--hd-space-6));padding:var(--hd-space-2) var(--hd-space-3);border-radius:var(--hd-radius-xs);background-color:var(--hd-bg-overlay);border:1px solid var(--hd-border-strong);box-shadow:var(--hd-shadow-2);color:var(--hd-text);font-size:var(--hd-type-caption-size);font-weight:var(--hd-font-weight-regular);line-height:var(--hd-type-body-line-height);text-align:start}.ui-bubble--top-uWSZy{animation:var(--ui-anim-fade-in-up) var(--hd-duration-fast) var(--hd-ease-standard)}.ui-bubble--bottom-jKokL{animation:var(--ui-anim-fade-in-down) var(--hd-duration-fast) var(--hd-ease-standard)}.ui-bubble--left-WK4EM,.ui-bubble--right-EQjUT{animation:var(--ui-anim-fade-in) var(--hd-duration-fast) var(--hd-ease-standard)}@media (prefers-reduced-motion: reduce){.ui-bubble-bcBNk{animation:none}}@media (forced-colors: active){.ui-bubble-bcBNk{border-color:CanvasText}}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("@handijit/design"),T=E.breakpoints.sm,_=E.breakpoints.md,A=E.breakpoints.lg,t=`(min-width: ${A+1}px)`,B=`(min-width: ${T+1}px)`,I=`(max-width: ${T}px) and (pointer: coarse)`;exports.ABOVE_MOBILE_MEDIA_QUERY=B;exports.ABOVE_TABLET_MEDIA_QUERY=t;exports.MOBILE_BREAKPOINT=T;exports.SHEET_MEDIA_QUERY=I;exports.TABLET_BREAKPOINT=A;exports.TABLET_PORTRAIT_BREAKPOINT=_;
|
|
2
|
+
//# sourceMappingURL=breakpoint.constants.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoint.constants.cjs","sources":["../../src/constants/breakpoint.constants.ts"],"sourcesContent":["import { breakpoints } from '@handijit/design';\n\n/** Breakpoints — the values of `@handijit/design` (`$breakpoint-*` in `styles/_variables.scss`). */\nexport const MOBILE_BREAKPOINT = breakpoints.sm;\n\nexport const TABLET_PORTRAIT_BREAKPOINT = breakpoints.md;\n\nexport const TABLET_BREAKPOINT = breakpoints.lg;\n\n/** A sidebar is on screen above this width, so a filter panel is hidden there. */\nexport const ABOVE_TABLET_MEDIA_QUERY = `(min-width: ${TABLET_BREAKPOINT + 1}px)`;\n\nexport const ABOVE_MOBILE_MEDIA_QUERY = `(min-width: ${MOBILE_BREAKPOINT + 1}px)`;\n\n/**\n * When a select-like control opens a bottom sheet instead of a dropdown: a NARROW viewport on a\n * TOUCH device. A desktop window is never a sheet, however narrow — a pointer reaches a dropdown\n * next to the trigger faster than a sheet at the bottom edge of the window.\n */\nexport const SHEET_MEDIA_QUERY = `(max-width: ${MOBILE_BREAKPOINT}px) and (pointer: coarse)`;\n"],"names":["MOBILE_BREAKPOINT","breakpoints","TABLET_PORTRAIT_BREAKPOINT","TABLET_BREAKPOINT","ABOVE_TABLET_MEDIA_QUERY","ABOVE_MOBILE_MEDIA_QUERY","SHEET_MEDIA_QUERY"],"mappings":"oHAGaA,EAAoBC,EAAAA,YAAY,GAEhCC,EAA6BD,EAAAA,YAAY,GAEzCE,EAAoBF,EAAAA,YAAY,GAGhCG,EAA2B,eAAeD,EAAoB,CAAC,MAE/DE,EAA2B,eAAeL,EAAoB,CAAC,MAO/DM,EAAoB,eAAeN,CAAiB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Breakpoints — the values of `@handijit/design` (`$breakpoint-*` in `styles/_variables.scss`). */
|
|
2
|
+
export declare const MOBILE_BREAKPOINT: number;
|
|
3
|
+
export declare const TABLET_PORTRAIT_BREAKPOINT: number;
|
|
4
|
+
export declare const TABLET_BREAKPOINT: number;
|
|
5
|
+
/** A sidebar is on screen above this width, so a filter panel is hidden there. */
|
|
6
|
+
export declare const ABOVE_TABLET_MEDIA_QUERY: string;
|
|
7
|
+
export declare const ABOVE_MOBILE_MEDIA_QUERY: string;
|
|
8
|
+
/**
|
|
9
|
+
* When a select-like control opens a bottom sheet instead of a dropdown: a NARROW viewport on a
|
|
10
|
+
* TOUCH device. A desktop window is never a sheet, however narrow — a pointer reaches a dropdown
|
|
11
|
+
* next to the trigger faster than a sheet at the bottom edge of the window.
|
|
12
|
+
*/
|
|
13
|
+
export declare const SHEET_MEDIA_QUERY: string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { breakpoints as E } from "@handijit/design";
|
|
2
|
+
const t = E.sm, T = E.md, o = E.lg, _ = `(min-width: ${o + 1}px)`, n = `(min-width: ${t + 1}px)`, B = `(max-width: ${t}px) and (pointer: coarse)`;
|
|
3
|
+
export {
|
|
4
|
+
n as ABOVE_MOBILE_MEDIA_QUERY,
|
|
5
|
+
_ as ABOVE_TABLET_MEDIA_QUERY,
|
|
6
|
+
t as MOBILE_BREAKPOINT,
|
|
7
|
+
B as SHEET_MEDIA_QUERY,
|
|
8
|
+
o as TABLET_BREAKPOINT,
|
|
9
|
+
T as TABLET_PORTRAIT_BREAKPOINT
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=breakpoint.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoint.constants.js","sources":["../../src/constants/breakpoint.constants.ts"],"sourcesContent":["import { breakpoints } from '@handijit/design';\n\n/** Breakpoints — the values of `@handijit/design` (`$breakpoint-*` in `styles/_variables.scss`). */\nexport const MOBILE_BREAKPOINT = breakpoints.sm;\n\nexport const TABLET_PORTRAIT_BREAKPOINT = breakpoints.md;\n\nexport const TABLET_BREAKPOINT = breakpoints.lg;\n\n/** A sidebar is on screen above this width, so a filter panel is hidden there. */\nexport const ABOVE_TABLET_MEDIA_QUERY = `(min-width: ${TABLET_BREAKPOINT + 1}px)`;\n\nexport const ABOVE_MOBILE_MEDIA_QUERY = `(min-width: ${MOBILE_BREAKPOINT + 1}px)`;\n\n/**\n * When a select-like control opens a bottom sheet instead of a dropdown: a NARROW viewport on a\n * TOUCH device. A desktop window is never a sheet, however narrow — a pointer reaches a dropdown\n * next to the trigger faster than a sheet at the bottom edge of the window.\n */\nexport const SHEET_MEDIA_QUERY = `(max-width: ${MOBILE_BREAKPOINT}px) and (pointer: coarse)`;\n"],"names":["MOBILE_BREAKPOINT","breakpoints","TABLET_PORTRAIT_BREAKPOINT","TABLET_BREAKPOINT","ABOVE_TABLET_MEDIA_QUERY","ABOVE_MOBILE_MEDIA_QUERY","SHEET_MEDIA_QUERY"],"mappings":";AAGO,MAAMA,IAAoBC,EAAY,IAEhCC,IAA6BD,EAAY,IAEzCE,IAAoBF,EAAY,IAGhCG,IAA2B,eAAeD,IAAoB,CAAC,OAE/DE,IAA2B,eAAeL,IAAoB,CAAC,OAO/DM,IAAoB,eAAeN,CAAiB;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox.constants.cjs","sources":["../../src/constants/combobox.constants.ts"],"sourcesContent":["/** Aranabilir seçim kutusunun ölçüleri. */\n\n/** Sanallaştırmanın devreye girdiği eşik. */\nexport const VIRTUAL_THRESHOLD = 80;\n\n/** Seçenek satırının yüksekliği (`--sheet` dışında). */\nexport const OPTION_HEIGHT = 40;\n\n/**\n * Uzak arama tetiklenmeden önce beklenen süre — her tuşta istek atılmaz.\n * ⚠ `Tooltip.openDelay` da 300 ms ama İKİSİ AYNI ŞEY DEĞİL: biri ağ isteğini geciktirir, diğeri\n * balonun açılmasını.\n */\nexport const SEARCH_DEBOUNCE_MS = 300;\n"],"names":["VIRTUAL_THRESHOLD","OPTION_HEIGHT","SEARCH_DEBOUNCE_MS"],"mappings":"gFAGO,MAAMA,EAAoB,GAGpBC,EAAgB,GAOhBC,EAAqB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Aranabilir seçim kutusunun ölçüleri. */
|
|
2
|
+
/** Sanallaştırmanın devreye girdiği eşik. */
|
|
3
|
+
export declare const VIRTUAL_THRESHOLD = 80;
|
|
4
|
+
/** Seçenek satırının yüksekliği (`--sheet` dışında). */
|
|
5
|
+
export declare const OPTION_HEIGHT = 40;
|
|
6
|
+
/**
|
|
7
|
+
* Uzak arama tetiklenmeden önce beklenen süre — her tuşta istek atılmaz.
|
|
8
|
+
* ⚠ `Tooltip.openDelay` da 300 ms ama İKİSİ AYNI ŞEY DEĞİL: biri ağ isteğini geciktirir, diğeri
|
|
9
|
+
* balonun açılmasını.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SEARCH_DEBOUNCE_MS = 300;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox.constants.js","sources":["../../src/constants/combobox.constants.ts"],"sourcesContent":["/** Aranabilir seçim kutusunun ölçüleri. */\n\n/** Sanallaştırmanın devreye girdiği eşik. */\nexport const VIRTUAL_THRESHOLD = 80;\n\n/** Seçenek satırının yüksekliği (`--sheet` dışında). */\nexport const OPTION_HEIGHT = 40;\n\n/**\n * Uzak arama tetiklenmeden önce beklenen süre — her tuşta istek atılmaz.\n * ⚠ `Tooltip.openDelay` da 300 ms ama İKİSİ AYNI ŞEY DEĞİL: biri ağ isteğini geciktirir, diğeri\n * balonun açılmasını.\n */\nexport const SEARCH_DEBOUNCE_MS = 300;\n"],"names":["VIRTUAL_THRESHOLD","OPTION_HEIGHT","SEARCH_DEBOUNCE_MS"],"mappings":"AAGO,MAAMA,IAAoB,IAGpBC,IAAgB,IAOhBC,IAAqB;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll.constants.cjs","sources":["../../src/constants/scroll.constants.ts"],"sourcesContent":["/**\n * Sona YAPIŞIK sayılma payı (px). Kullanıcı bu kadar yukarıdaysa akış onu aşağı çekmeye devam eder;\n * daha yukarı kaydırdıysa okuduğu yerde bırakılır.\n * ⚠ 0 değil: akan içerik her karede birkaç piksel büyüyor ve kesirli yerleşimde kutu sona tam\n * oturmuyor — sıfır pay, kullanıcı hiç kaydırmadan \"bıraktı\" sayılıyordu.\n */\nexport const STICK_TO_END_THRESHOLD = 80;\n"],"names":["STICK_TO_END_THRESHOLD"],"mappings":"gFAMO,MAAMA,EAAyB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sona YAPIŞIK sayılma payı (px). Kullanıcı bu kadar yukarıdaysa akış onu aşağı çekmeye devam eder;
|
|
3
|
+
* daha yukarı kaydırdıysa okuduğu yerde bırakılır.
|
|
4
|
+
* ⚠ 0 değil: akan içerik her karede birkaç piksel büyüyor ve kesirli yerleşimde kutu sona tam
|
|
5
|
+
* oturmuyor — sıfır pay, kullanıcı hiç kaydırmadan "bıraktı" sayılıyordu.
|
|
6
|
+
*/
|
|
7
|
+
export declare const STICK_TO_END_THRESHOLD = 80;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll.constants.js","sources":["../../src/constants/scroll.constants.ts"],"sourcesContent":["/**\n * Sona YAPIŞIK sayılma payı (px). Kullanıcı bu kadar yukarıdaysa akış onu aşağı çekmeye devam eder;\n * daha yukarı kaydırdıysa okuduğu yerde bırakılır.\n * ⚠ 0 değil: akan içerik her karede birkaç piksel büyüyor ve kesirli yerleşimde kutu sona tam\n * oturmuyor — sıfır pay, kullanıcı hiç kaydırmadan \"bıraktı\" sayılıyordu.\n */\nexport const STICK_TO_END_THRESHOLD = 80;\n"],"names":["STICK_TO_END_THRESHOLD"],"mappings":"AAMO,MAAMA,IAAyB;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-size.enum.cjs","sources":["../../src/enums/ui-size.enum.ts"],"sourcesContent":["/** Size steps. */\nenum UISize {\n /** 28px tall — dense toolbars and the top band. The touch target stays 44px (`tap-target`). */\n XSMALL = 'XSMALL',\n /** 32px tall. */\n SMALL = 'SMALL',\n /** 40px tall. */\n MEDIUM = 'MEDIUM',\n /** 48px tall. */\n LARGE = 'LARGE',\n}\n\nexport default UISize;\n"],"names":["UISize"],"mappings":"4GACA,IAAKA,GAAAA,IAEHA,EAAA,OAAS,SAETA,EAAA,MAAQ,QAERA,EAAA,OAAS,SAETA,EAAA,MAAQ,QARLA,IAAAA,GAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Size steps. */
|
|
2
|
+
declare enum UISize {
|
|
3
|
+
/** 28px tall — dense toolbars and the top band. The touch target stays 44px (`tap-target`). */
|
|
4
|
+
XSMALL = "XSMALL",
|
|
5
|
+
/** 32px tall. */
|
|
6
|
+
SMALL = "SMALL",
|
|
7
|
+
/** 40px tall. */
|
|
8
|
+
MEDIUM = "MEDIUM",
|
|
9
|
+
/** 48px tall. */
|
|
10
|
+
LARGE = "LARGE"
|
|
11
|
+
}
|
|
12
|
+
export default UISize;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-size.enum.js","sources":["../../src/enums/ui-size.enum.ts"],"sourcesContent":["/** Size steps. */\nenum UISize {\n /** 28px tall — dense toolbars and the top band. The touch target stays 44px (`tap-target`). */\n XSMALL = 'XSMALL',\n /** 32px tall. */\n SMALL = 'SMALL',\n /** 40px tall. */\n MEDIUM = 'MEDIUM',\n /** 48px tall. */\n LARGE = 'LARGE',\n}\n\nexport default UISize;\n"],"names":["UISize"],"mappings":"AACA,IAAKA,sBAAAA,OAEHA,EAAA,SAAS,UAETA,EAAA,QAAQ,SAERA,EAAA,SAAS,UAETA,EAAA,QAAQ,SARLA,IAAAA,KAAA,CAAA,CAAA;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var N=(e=>(e.PRIMARY="PRIMARY",e.ACCENT="ACCENT",e.SECONDARY="SECONDARY",e.OUTLINE="OUTLINE",e.SOFT="SOFT",e.GHOST="GHOST",e.DANGER="DANGER",e.ON_BAND="ON_BAND",e))(N||{});exports.default=N;
|
|
2
|
+
//# sourceMappingURL=ui-variant.enum.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-variant.enum.cjs","sources":["../../src/enums/ui-variant.enum.ts"],"sourcesContent":["/** Button variants. */\nenum UIVariant {\n /** The one expected action of the screen: cobalt fill. One per screen. */\n PRIMARY = 'PRIMARY',\n /** The conversion action (download, try, subscribe): coral fill — and only that. */\n ACCENT = 'ACCENT',\n /** Neutral secondary action: grey border, body text (\"Cancel\"). */\n SECONDARY = 'SECONDARY',\n /** Cobalt frame — an encouraged navigation that is not the primary action (\"See all\"). */\n OUTLINE = 'OUTLINE',\n /** Neutral fill; a secondary action inside a card. */\n SOFT = 'SOFT',\n /** No surface: toolbar and inline secondary actions, in the link colour. */\n GHOST = 'GHOST',\n /** Destructive action: a delete confirmation. */\n DANGER = 'DANGER',\n /** An action on the brand band (deep cobalt in both themes). */\n ON_BAND = 'ON_BAND',\n}\n\nexport default UIVariant;\n"],"names":["UIVariant"],"mappings":"4GACA,IAAKA,GAAAA,IAEHA,EAAA,QAAU,UAEVA,EAAA,OAAS,SAETA,EAAA,UAAY,YAEZA,EAAA,QAAU,UAEVA,EAAA,KAAO,OAEPA,EAAA,MAAQ,QAERA,EAAA,OAAS,SAETA,EAAA,QAAU,UAhBPA,IAAAA,GAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Button variants. */
|
|
2
|
+
declare enum UIVariant {
|
|
3
|
+
/** The one expected action of the screen: cobalt fill. One per screen. */
|
|
4
|
+
PRIMARY = "PRIMARY",
|
|
5
|
+
/** The conversion action (download, try, subscribe): coral fill — and only that. */
|
|
6
|
+
ACCENT = "ACCENT",
|
|
7
|
+
/** Neutral secondary action: grey border, body text ("Cancel"). */
|
|
8
|
+
SECONDARY = "SECONDARY",
|
|
9
|
+
/** Cobalt frame — an encouraged navigation that is not the primary action ("See all"). */
|
|
10
|
+
OUTLINE = "OUTLINE",
|
|
11
|
+
/** Neutral fill; a secondary action inside a card. */
|
|
12
|
+
SOFT = "SOFT",
|
|
13
|
+
/** No surface: toolbar and inline secondary actions, in the link colour. */
|
|
14
|
+
GHOST = "GHOST",
|
|
15
|
+
/** Destructive action: a delete confirmation. */
|
|
16
|
+
DANGER = "DANGER",
|
|
17
|
+
/** An action on the brand band (deep cobalt in both themes). */
|
|
18
|
+
ON_BAND = "ON_BAND"
|
|
19
|
+
}
|
|
20
|
+
export default UIVariant;
|