@handijit/ui 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +872 -2
- package/build/base.css +1 -0
- package/build/charts.cjs +2 -0
- package/build/charts.cjs.map +1 -0
- package/build/charts.css +1 -0
- package/build/charts.js +1865 -0
- package/build/charts.js.map +1 -0
- package/build/chat.cjs +4 -0
- package/build/chat.cjs.map +1 -0
- package/build/chat.css +1 -0
- package/build/chat.js +1120 -0
- package/build/chat.js.map +1 -0
- package/build/components/Accordion/index.cjs +2 -0
- package/build/components/Accordion/index.cjs.map +1 -0
- package/build/components/Accordion/index.d.ts +29 -0
- package/build/components/Accordion/index.js +42 -0
- package/build/components/Accordion/index.js.map +1 -0
- package/build/components/Accordion/style.css +1 -0
- package/build/components/Alert/index.cjs +2 -0
- package/build/components/Alert/index.cjs.map +1 -0
- package/build/components/Alert/index.d.ts +15 -0
- package/build/components/Alert/index.js +30 -0
- package/build/components/Alert/index.js.map +1 -0
- package/build/components/Alert/style.css +1 -0
- package/build/components/Avatar/index.cjs +2 -0
- package/build/components/Avatar/index.cjs.map +1 -0
- package/build/components/Avatar/index.d.ts +26 -0
- package/build/components/Avatar/index.js +57 -0
- package/build/components/Avatar/index.js.map +1 -0
- package/build/components/Avatar/style.css +1 -0
- package/build/components/Badge/index.cjs +2 -0
- package/build/components/Badge/index.cjs.map +1 -0
- package/build/components/Badge/index.d.ts +26 -0
- package/build/components/Badge/index.js +26 -0
- package/build/components/Badge/index.js.map +1 -0
- package/build/components/Badge/style.css +1 -0
- package/build/components/BottomSheet/index.cjs +2 -0
- package/build/components/BottomSheet/index.cjs.map +1 -0
- package/build/components/BottomSheet/index.d.ts +21 -0
- package/build/components/BottomSheet/index.js +85 -0
- package/build/components/BottomSheet/index.js.map +1 -0
- package/build/components/BottomSheet/style.css +1 -0
- package/build/components/Breadcrumb/index.cjs +2 -0
- package/build/components/Breadcrumb/index.cjs.map +1 -0
- package/build/components/Breadcrumb/index.d.ts +20 -0
- package/build/components/Breadcrumb/index.js +31 -0
- package/build/components/Breadcrumb/index.js.map +1 -0
- package/build/components/Breadcrumb/style.css +1 -0
- package/build/components/Button/index.cjs +2 -0
- package/build/components/Button/index.cjs.map +1 -0
- package/build/components/Button/index.d.ts +32 -0
- package/build/components/Button/index.js +88 -0
- package/build/components/Button/index.js.map +1 -0
- package/build/components/Button/style.css +1 -0
- package/build/components/Card/index.cjs +2 -0
- package/build/components/Card/index.cjs.map +1 -0
- package/build/components/Card/index.d.ts +51 -0
- package/build/components/Card/index.js +58 -0
- package/build/components/Card/index.js.map +1 -0
- package/build/components/Card/style.css +1 -0
- package/build/components/Carousel/index.cjs +2 -0
- package/build/components/Carousel/index.cjs.map +1 -0
- package/build/components/Carousel/index.d.ts +24 -0
- package/build/components/Carousel/index.js +111 -0
- package/build/components/Carousel/index.js.map +1 -0
- package/build/components/Carousel/style.css +1 -0
- package/build/components/Checkbox/index.cjs +2 -0
- package/build/components/Checkbox/index.cjs.map +1 -0
- package/build/components/Checkbox/index.d.ts +10 -0
- package/build/components/Checkbox/index.js +33 -0
- package/build/components/Checkbox/index.js.map +1 -0
- package/build/components/Checkbox/style.css +1 -0
- package/build/components/Chip/index.cjs +2 -0
- package/build/components/Chip/index.cjs.map +1 -0
- package/build/components/Chip/index.d.ts +27 -0
- package/build/components/Chip/index.js +67 -0
- package/build/components/Chip/index.js.map +1 -0
- package/build/components/Chip/style.css +1 -0
- package/build/components/ChipGroup/index.cjs +2 -0
- package/build/components/ChipGroup/index.cjs.map +1 -0
- package/build/components/ChipGroup/index.d.ts +34 -0
- package/build/components/ChipGroup/index.js +64 -0
- package/build/components/ChipGroup/index.js.map +1 -0
- package/build/components/ChipGroup/style.css +1 -0
- package/build/components/CodeBadge/index.cjs +2 -0
- package/build/components/CodeBadge/index.cjs.map +1 -0
- package/build/components/CodeBadge/index.d.ts +36 -0
- package/build/components/CodeBadge/index.js +62 -0
- package/build/components/CodeBadge/index.js.map +1 -0
- package/build/components/CodeBadge/style.css +1 -0
- package/build/components/Combobox/index.cjs +2 -0
- package/build/components/Combobox/index.cjs.map +1 -0
- package/build/components/Combobox/index.d.ts +6 -0
- package/build/components/Combobox/index.js +302 -0
- package/build/components/Combobox/index.js.map +1 -0
- package/build/components/Combobox/style.css +1 -0
- package/build/components/CommandPalette/index.cjs +2 -0
- package/build/components/CommandPalette/index.cjs.map +1 -0
- package/build/components/CommandPalette/index.d.ts +37 -0
- package/build/components/CommandPalette/index.js +181 -0
- package/build/components/CommandPalette/index.js.map +1 -0
- package/build/components/CommandPalette/style.css +1 -0
- package/build/components/ConfirmDialog/index.cjs +2 -0
- package/build/components/ConfirmDialog/index.cjs.map +1 -0
- package/build/components/ConfirmDialog/index.d.ts +34 -0
- package/build/components/ConfirmDialog/index.js +85 -0
- package/build/components/ConfirmDialog/index.js.map +1 -0
- package/build/components/CopyField/index.cjs +2 -0
- package/build/components/CopyField/index.cjs.map +1 -0
- package/build/components/CopyField/index.d.ts +20 -0
- package/build/components/CopyField/index.js +44 -0
- package/build/components/CopyField/index.js.map +1 -0
- package/build/components/CopyField/style.css +1 -0
- package/build/components/DataTable/index.cjs +2 -0
- package/build/components/DataTable/index.cjs.map +1 -0
- package/build/components/DataTable/index.d.ts +60 -0
- package/build/components/DataTable/index.js +109 -0
- package/build/components/DataTable/index.js.map +1 -0
- package/build/components/DataTable/style.css +1 -0
- package/build/components/DateField/index.cjs +2 -0
- package/build/components/DateField/index.cjs.map +1 -0
- package/build/components/DateField/index.d.ts +44 -0
- package/build/components/DateField/index.js +79 -0
- package/build/components/DateField/index.js.map +1 -0
- package/build/components/DateField/style.css +1 -0
- package/build/components/Directory/index.cjs +2 -0
- package/build/components/Directory/index.cjs.map +1 -0
- package/build/components/Directory/index.d.ts +51 -0
- package/build/components/Directory/index.js +46 -0
- package/build/components/Directory/index.js.map +1 -0
- package/build/components/Directory/style.css +1 -0
- package/build/components/Disclosure/index.cjs +2 -0
- package/build/components/Disclosure/index.cjs.map +1 -0
- package/build/components/Disclosure/index.d.ts +34 -0
- package/build/components/Disclosure/index.js +64 -0
- package/build/components/Disclosure/index.js.map +1 -0
- package/build/components/Disclosure/style.css +1 -0
- package/build/components/Divider/index.cjs +2 -0
- package/build/components/Divider/index.cjs.map +1 -0
- package/build/components/Divider/index.d.ts +10 -0
- package/build/components/Divider/index.js +24 -0
- package/build/components/Divider/index.js.map +1 -0
- package/build/components/Divider/style.css +1 -0
- package/build/components/Drawer/index.cjs +2 -0
- package/build/components/Drawer/index.cjs.map +1 -0
- package/build/components/Drawer/index.d.ts +22 -0
- package/build/components/Drawer/index.js +88 -0
- package/build/components/Drawer/index.js.map +1 -0
- package/build/components/Drawer/style.css +1 -0
- package/build/components/EmptyState/index.cjs +2 -0
- package/build/components/EmptyState/index.cjs.map +1 -0
- package/build/components/EmptyState/index.d.ts +19 -0
- package/build/components/EmptyState/index.js +35 -0
- package/build/components/EmptyState/index.js.map +1 -0
- package/build/components/EmptyState/style.css +1 -0
- package/build/components/Field/index.cjs +2 -0
- package/build/components/Field/index.cjs.map +1 -0
- package/build/components/Field/index.d.ts +31 -0
- package/build/components/Field/index.js +52 -0
- package/build/components/Field/index.js.map +1 -0
- package/build/components/Field/style.css +1 -0
- package/build/components/FileUpload/index.cjs +2 -0
- package/build/components/FileUpload/index.cjs.map +1 -0
- package/build/components/FileUpload/index.d.ts +42 -0
- package/build/components/FileUpload/index.js +145 -0
- package/build/components/FileUpload/index.js.map +1 -0
- package/build/components/FileUpload/style.css +1 -0
- package/build/components/FilterBar/index.cjs +2 -0
- package/build/components/FilterBar/index.cjs.map +1 -0
- package/build/components/FilterBar/index.d.ts +28 -0
- package/build/components/FilterBar/index.js +35 -0
- package/build/components/FilterBar/index.js.map +1 -0
- package/build/components/FilterBar/style.css +1 -0
- package/build/components/IconButton/index.cjs +2 -0
- package/build/components/IconButton/index.cjs.map +1 -0
- package/build/components/IconButton/index.d.ts +22 -0
- package/build/components/IconButton/index.js +61 -0
- package/build/components/IconButton/index.js.map +1 -0
- package/build/components/IconButton/style.css +1 -0
- package/build/components/Input/index.cjs +2 -0
- package/build/components/Input/index.cjs.map +1 -0
- package/build/components/Input/index.d.ts +15 -0
- package/build/components/Input/index.js +52 -0
- package/build/components/Input/index.js.map +1 -0
- package/build/components/Input/style.css +1 -0
- package/build/components/Kbd/index.cjs +2 -0
- package/build/components/Kbd/index.cjs.map +1 -0
- package/build/components/Kbd/index.d.ts +12 -0
- package/build/components/Kbd/index.js +13 -0
- package/build/components/Kbd/index.js.map +1 -0
- package/build/components/Kbd/style.css +1 -0
- package/build/components/Link/index.cjs +2 -0
- package/build/components/Link/index.cjs.map +1 -0
- package/build/components/Link/index.d.ts +5 -0
- package/build/components/Link/index.js +11 -0
- package/build/components/Link/index.js.map +1 -0
- package/build/components/Menu/index.cjs +2 -0
- package/build/components/Menu/index.cjs.map +1 -0
- package/build/components/Menu/index.d.ts +46 -0
- package/build/components/Menu/index.js +241 -0
- package/build/components/Menu/index.js.map +1 -0
- package/build/components/Menu/style.css +1 -0
- package/build/components/Modal/index.cjs +2 -0
- package/build/components/Modal/index.cjs.map +1 -0
- package/build/components/Modal/index.d.ts +28 -0
- package/build/components/Modal/index.js +92 -0
- package/build/components/Modal/index.js.map +1 -0
- package/build/components/Modal/style.css +1 -0
- package/build/components/PageHeader/index.cjs +2 -0
- package/build/components/PageHeader/index.cjs.map +1 -0
- package/build/components/PageHeader/index.d.ts +24 -0
- package/build/components/PageHeader/index.js +34 -0
- package/build/components/PageHeader/index.js.map +1 -0
- package/build/components/PageHeader/style.css +1 -0
- package/build/components/Pagination/index.cjs +2 -0
- package/build/components/Pagination/index.cjs.map +1 -0
- package/build/components/Pagination/index.d.ts +39 -0
- package/build/components/Pagination/index.js +128 -0
- package/build/components/Pagination/index.js.map +1 -0
- package/build/components/Pagination/style.css +1 -0
- package/build/components/Panel/index.cjs +2 -0
- package/build/components/Panel/index.cjs.map +1 -0
- package/build/components/Panel/index.d.ts +43 -0
- package/build/components/Panel/index.js +55 -0
- package/build/components/Panel/index.js.map +1 -0
- package/build/components/Panel/style.css +1 -0
- package/build/components/PasswordInput/index.cjs +2 -0
- package/build/components/PasswordInput/index.cjs.map +1 -0
- package/build/components/PasswordInput/index.d.ts +14 -0
- package/build/components/PasswordInput/index.js +40 -0
- package/build/components/PasswordInput/index.js.map +1 -0
- package/build/components/PasswordInput/style.css +1 -0
- package/build/components/Popover/index.cjs +2 -0
- package/build/components/Popover/index.cjs.map +1 -0
- package/build/components/Popover/index.d.ts +20 -0
- package/build/components/Popover/index.js +91 -0
- package/build/components/Popover/index.js.map +1 -0
- package/build/components/Popover/style.css +1 -0
- package/build/components/Price/index.cjs +2 -0
- package/build/components/Price/index.cjs.map +1 -0
- package/build/components/Price/index.d.ts +22 -0
- package/build/components/Price/index.js +46 -0
- package/build/components/Price/index.js.map +1 -0
- package/build/components/Price/style.css +1 -0
- package/build/components/Progress/index.cjs +2 -0
- package/build/components/Progress/index.cjs.map +1 -0
- package/build/components/Progress/index.d.ts +49 -0
- package/build/components/Progress/index.js +120 -0
- package/build/components/Progress/index.js.map +1 -0
- package/build/components/Progress/style.css +1 -0
- package/build/components/PromptDialog/index.cjs +2 -0
- package/build/components/PromptDialog/index.cjs.map +1 -0
- package/build/components/PromptDialog/index.d.ts +36 -0
- package/build/components/PromptDialog/index.js +119 -0
- package/build/components/PromptDialog/index.js.map +1 -0
- package/build/components/PromptDialog/style.css +1 -0
- package/build/components/QuantityStepper/index.cjs +2 -0
- package/build/components/QuantityStepper/index.cjs.map +1 -0
- package/build/components/QuantityStepper/index.d.ts +21 -0
- package/build/components/QuantityStepper/index.js +106 -0
- package/build/components/QuantityStepper/index.js.map +1 -0
- package/build/components/QuantityStepper/style.css +1 -0
- package/build/components/Radio/index.cjs +2 -0
- package/build/components/Radio/index.cjs.map +1 -0
- package/build/components/Radio/index.d.ts +12 -0
- package/build/components/Radio/index.js +35 -0
- package/build/components/Radio/index.js.map +1 -0
- package/build/components/Radio/style.css +1 -0
- package/build/components/RadioCard/index.cjs +2 -0
- package/build/components/RadioCard/index.cjs.map +1 -0
- package/build/components/RadioCard/index.d.ts +16 -0
- package/build/components/RadioCard/index.js +48 -0
- package/build/components/RadioCard/index.js.map +1 -0
- package/build/components/RadioCard/style.css +1 -0
- package/build/components/RangeSlider/index.cjs +2 -0
- package/build/components/RangeSlider/index.cjs.map +1 -0
- package/build/components/RangeSlider/index.d.ts +26 -0
- package/build/components/RangeSlider/index.js +102 -0
- package/build/components/RangeSlider/index.js.map +1 -0
- package/build/components/RangeSlider/style.css +1 -0
- package/build/components/Rating/index.cjs +2 -0
- package/build/components/Rating/index.cjs.map +1 -0
- package/build/components/Rating/index.d.ts +16 -0
- package/build/components/Rating/index.js +29 -0
- package/build/components/Rating/index.js.map +1 -0
- package/build/components/Rating/style.css +1 -0
- package/build/components/RatingInput/index.cjs +2 -0
- package/build/components/RatingInput/index.cjs.map +1 -0
- package/build/components/RatingInput/index.d.ts +21 -0
- package/build/components/RatingInput/index.js +75 -0
- package/build/components/RatingInput/index.js.map +1 -0
- package/build/components/RatingInput/style.css +1 -0
- package/build/components/ScrollArea/index.cjs +2 -0
- package/build/components/ScrollArea/index.cjs.map +1 -0
- package/build/components/ScrollArea/index.d.ts +23 -0
- package/build/components/ScrollArea/index.js +65 -0
- package/build/components/ScrollArea/index.js.map +1 -0
- package/build/components/ScrollArea/style.css +1 -0
- package/build/components/SectionHeader/index.cjs +2 -0
- package/build/components/SectionHeader/index.cjs.map +1 -0
- package/build/components/SectionHeader/index.d.ts +17 -0
- package/build/components/SectionHeader/index.js +25 -0
- package/build/components/SectionHeader/index.js.map +1 -0
- package/build/components/SectionHeader/style.css +1 -0
- package/build/components/SegmentedControl/index.cjs +2 -0
- package/build/components/SegmentedControl/index.cjs.map +1 -0
- package/build/components/SegmentedControl/index.d.ts +24 -0
- package/build/components/SegmentedControl/index.js +69 -0
- package/build/components/SegmentedControl/index.js.map +1 -0
- package/build/components/SegmentedControl/style.css +1 -0
- package/build/components/Select/index.cjs +2 -0
- package/build/components/Select/index.cjs.map +1 -0
- package/build/components/Select/index.d.ts +39 -0
- package/build/components/Select/index.js +179 -0
- package/build/components/Select/index.js.map +1 -0
- package/build/components/Select/style.css +1 -0
- package/build/components/Skeleton/index.cjs +2 -0
- package/build/components/Skeleton/index.cjs.map +1 -0
- package/build/components/Skeleton/index.d.ts +25 -0
- package/build/components/Skeleton/index.js +50 -0
- package/build/components/Skeleton/index.js.map +1 -0
- package/build/components/Skeleton/style.css +1 -0
- package/build/components/Spinner/index.cjs +2 -0
- package/build/components/Spinner/index.cjs.map +1 -0
- package/build/components/Spinner/index.d.ts +11 -0
- package/build/components/Spinner/index.js +15 -0
- package/build/components/Spinner/index.js.map +1 -0
- package/build/components/Spinner/style.css +1 -0
- package/build/components/Stat/index.cjs +2 -0
- package/build/components/Stat/index.cjs.map +1 -0
- package/build/components/Stat/index.d.ts +34 -0
- package/build/components/Stat/index.js +72 -0
- package/build/components/Stat/index.js.map +1 -0
- package/build/components/Stat/style.css +1 -0
- package/build/components/StatusDot/index.cjs +2 -0
- package/build/components/StatusDot/index.cjs.map +1 -0
- package/build/components/StatusDot/index.d.ts +23 -0
- package/build/components/StatusDot/index.js +23 -0
- package/build/components/StatusDot/index.js.map +1 -0
- package/build/components/StatusDot/style.css +1 -0
- package/build/components/Steps/index.cjs +2 -0
- package/build/components/Steps/index.cjs.map +1 -0
- package/build/components/Steps/index.d.ts +23 -0
- package/build/components/Steps/index.js +69 -0
- package/build/components/Steps/index.js.map +1 -0
- package/build/components/Steps/style.css +1 -0
- package/build/components/SummaryCard/index.cjs +2 -0
- package/build/components/SummaryCard/index.cjs.map +1 -0
- package/build/components/SummaryCard/index.d.ts +24 -0
- package/build/components/SummaryCard/index.js +33 -0
- package/build/components/SummaryCard/index.js.map +1 -0
- package/build/components/SummaryCard/style.css +1 -0
- package/build/components/Switch/index.cjs +2 -0
- package/build/components/Switch/index.cjs.map +1 -0
- package/build/components/Switch/index.d.ts +16 -0
- package/build/components/Switch/index.js +42 -0
- package/build/components/Switch/index.js.map +1 -0
- package/build/components/Switch/style.css +1 -0
- package/build/components/Table/index.cjs +2 -0
- package/build/components/Table/index.cjs.map +1 -0
- package/build/components/Table/index.d.ts +28 -0
- package/build/components/Table/index.js +58 -0
- package/build/components/Table/index.js.map +1 -0
- package/build/components/Table/style.css +1 -0
- package/build/components/TableCheckbox/index.cjs +2 -0
- package/build/components/TableCheckbox/index.cjs.map +1 -0
- package/build/components/TableCheckbox/index.d.ts +15 -0
- package/build/components/TableCheckbox/index.js +31 -0
- package/build/components/TableCheckbox/index.js.map +1 -0
- package/build/components/TableCheckbox/style.css +1 -0
- package/build/components/Tabs/index.cjs +2 -0
- package/build/components/Tabs/index.cjs.map +1 -0
- package/build/components/Tabs/index.d.ts +27 -0
- package/build/components/Tabs/index.js +102 -0
- package/build/components/Tabs/index.js.map +1 -0
- package/build/components/Tabs/style.css +1 -0
- package/build/components/TagInput/index.cjs +2 -0
- package/build/components/TagInput/index.cjs.map +1 -0
- package/build/components/TagInput/index.d.ts +25 -0
- package/build/components/TagInput/index.js +124 -0
- package/build/components/TagInput/index.js.map +1 -0
- package/build/components/TagInput/style.css +1 -0
- package/build/components/TextLink/index.cjs +2 -0
- package/build/components/TextLink/index.cjs.map +1 -0
- package/build/components/TextLink/index.d.ts +16 -0
- package/build/components/TextLink/index.js +32 -0
- package/build/components/TextLink/index.js.map +1 -0
- package/build/components/TextLink/style.css +1 -0
- package/build/components/Textarea/index.cjs +2 -0
- package/build/components/Textarea/index.cjs.map +1 -0
- package/build/components/Textarea/index.d.ts +20 -0
- package/build/components/Textarea/index.js +68 -0
- package/build/components/Textarea/index.js.map +1 -0
- package/build/components/Textarea/style.css +1 -0
- package/build/components/Tile/index.cjs +2 -0
- package/build/components/Tile/index.cjs.map +1 -0
- package/build/components/Tile/index.d.ts +19 -0
- package/build/components/Tile/index.js +24 -0
- package/build/components/Tile/index.js.map +1 -0
- package/build/components/Tile/style.css +1 -0
- package/build/components/Timeline/index.cjs +2 -0
- package/build/components/Timeline/index.cjs.map +1 -0
- package/build/components/Timeline/index.d.ts +24 -0
- package/build/components/Timeline/index.js +56 -0
- package/build/components/Timeline/index.js.map +1 -0
- package/build/components/Timeline/style.css +1 -0
- package/build/components/Toast/index.cjs +2 -0
- package/build/components/Toast/index.cjs.map +1 -0
- package/build/components/Toast/index.d.ts +43 -0
- package/build/components/Toast/index.js +136 -0
- package/build/components/Toast/index.js.map +1 -0
- package/build/components/Toast/style.css +1 -0
- package/build/components/ToastPortal/index.cjs +2 -0
- package/build/components/ToastPortal/index.cjs.map +1 -0
- package/build/components/ToastPortal/index.d.ts +8 -0
- package/build/components/ToastPortal/index.js +15 -0
- package/build/components/ToastPortal/index.js.map +1 -0
- package/build/components/Tooltip/index.cjs +2 -0
- package/build/components/Tooltip/index.cjs.map +1 -0
- package/build/components/Tooltip/index.d.ts +23 -0
- package/build/components/Tooltip/index.js +116 -0
- package/build/components/Tooltip/index.js.map +1 -0
- package/build/components/Tooltip/style.css +1 -0
- package/build/constants/breakpoint.constants.cjs +2 -0
- package/build/constants/breakpoint.constants.cjs.map +1 -0
- package/build/constants/breakpoint.constants.d.ts +8 -0
- package/build/constants/breakpoint.constants.js +9 -0
- package/build/constants/breakpoint.constants.js.map +1 -0
- package/build/constants/combobox.constants.cjs +2 -0
- package/build/constants/combobox.constants.cjs.map +1 -0
- package/build/constants/combobox.constants.d.ts +11 -0
- package/build/constants/combobox.constants.js +7 -0
- package/build/constants/combobox.constants.js.map +1 -0
- package/build/constants/scroll.constants.cjs +2 -0
- package/build/constants/scroll.constants.cjs.map +1 -0
- package/build/constants/scroll.constants.d.ts +7 -0
- package/build/constants/scroll.constants.js +5 -0
- package/build/constants/scroll.constants.js.map +1 -0
- package/build/enums/ui-size.enum.cjs +2 -0
- package/build/enums/ui-size.enum.cjs.map +1 -0
- package/build/enums/ui-size.enum.d.ts +9 -0
- package/build/enums/ui-size.enum.js +5 -0
- package/build/enums/ui-size.enum.js.map +1 -0
- package/build/enums/ui-variant.enum.cjs +2 -0
- package/build/enums/ui-variant.enum.cjs.map +1 -0
- package/build/enums/ui-variant.enum.d.ts +20 -0
- package/build/enums/ui-variant.enum.js +5 -0
- package/build/enums/ui-variant.enum.js.map +1 -0
- package/build/helpers/class-name.helper.cjs +2 -0
- package/build/helpers/class-name.helper.cjs.map +1 -0
- package/build/helpers/class-name.helper.d.ts +3 -0
- package/build/helpers/class-name.helper.js +10 -0
- package/build/helpers/class-name.helper.js.map +1 -0
- package/build/helpers/component.helper.cjs +2 -0
- package/build/helpers/component.helper.cjs.map +1 -0
- package/build/helpers/component.helper.d.ts +13 -0
- package/build/helpers/component.helper.js +5 -0
- package/build/helpers/component.helper.js.map +1 -0
- package/build/helpers/focus.helper.cjs +2 -0
- package/build/helpers/focus.helper.cjs.map +1 -0
- package/build/helpers/focus.helper.d.ts +42 -0
- package/build/helpers/focus.helper.js +65 -0
- package/build/helpers/focus.helper.js.map +1 -0
- package/build/helpers/label.helper.cjs +2 -0
- package/build/helpers/label.helper.cjs.map +1 -0
- package/build/helpers/label.helper.d.ts +11 -0
- package/build/helpers/label.helper.js +11 -0
- package/build/helpers/label.helper.js.map +1 -0
- package/build/helpers/portal.helper.cjs +2 -0
- package/build/helpers/portal.helper.cjs.map +1 -0
- package/build/helpers/portal.helper.d.ts +28 -0
- package/build/helpers/portal.helper.js +36 -0
- package/build/helpers/portal.helper.js.map +1 -0
- package/build/helpers/scroll.helper.cjs +2 -0
- package/build/helpers/scroll.helper.cjs.map +1 -0
- package/build/helpers/scroll.helper.d.ts +8 -0
- package/build/helpers/scroll.helper.js +11 -0
- package/build/helpers/scroll.helper.js.map +1 -0
- package/build/helpers/text.helper.cjs +2 -0
- package/build/helpers/text.helper.cjs.map +1 -0
- package/build/helpers/text.helper.d.ts +5 -0
- package/build/helpers/text.helper.js +6 -0
- package/build/helpers/text.helper.js.map +1 -0
- package/build/helpers/theme.helper.cjs +24 -0
- package/build/helpers/theme.helper.cjs.map +1 -0
- package/build/helpers/theme.helper.d.ts +49 -0
- package/build/helpers/theme.helper.js +75 -0
- package/build/helpers/theme.helper.js.map +1 -0
- package/build/hooks/useAnnounce.cjs +2 -0
- package/build/hooks/useAnnounce.cjs.map +1 -0
- package/build/hooks/useAnnounce.d.ts +4 -0
- package/build/hooks/useAnnounce.js +23 -0
- package/build/hooks/useAnnounce.js.map +1 -0
- package/build/hooks/useAsyncSearch.cjs +2 -0
- package/build/hooks/useAsyncSearch.cjs.map +1 -0
- package/build/hooks/useAsyncSearch.d.ts +11 -0
- package/build/hooks/useAsyncSearch.js +17 -0
- package/build/hooks/useAsyncSearch.js.map +1 -0
- package/build/hooks/useCopyFeedback.cjs +2 -0
- package/build/hooks/useCopyFeedback.cjs.map +1 -0
- package/build/hooks/useCopyFeedback.d.ts +10 -0
- package/build/hooks/useCopyFeedback.js +25 -0
- package/build/hooks/useCopyFeedback.js.map +1 -0
- package/build/hooks/useDismissOnEscape.cjs +2 -0
- package/build/hooks/useDismissOnEscape.cjs.map +1 -0
- package/build/hooks/useDismissOnEscape.d.ts +12 -0
- package/build/hooks/useDismissOnEscape.js +18 -0
- package/build/hooks/useDismissOnEscape.js.map +1 -0
- package/build/hooks/useListboxNavigation.cjs +2 -0
- package/build/hooks/useListboxNavigation.cjs.map +1 -0
- package/build/hooks/useListboxNavigation.d.ts +7 -0
- package/build/hooks/useListboxNavigation.js +53 -0
- package/build/hooks/useListboxNavigation.js.map +1 -0
- package/build/hooks/usePortalSurface.cjs +2 -0
- package/build/hooks/usePortalSurface.cjs.map +1 -0
- package/build/hooks/usePortalSurface.d.ts +25 -0
- package/build/hooks/usePortalSurface.js +19 -0
- package/build/hooks/usePortalSurface.js.map +1 -0
- package/build/hooks/usePositioning.cjs +2 -0
- package/build/hooks/usePositioning.cjs.map +1 -0
- package/build/hooks/usePositioning.d.ts +13 -0
- package/build/hooks/usePositioning.js +74 -0
- package/build/hooks/usePositioning.js.map +1 -0
- package/build/hooks/useScrollLock.cjs +2 -0
- package/build/hooks/useScrollLock.cjs.map +1 -0
- package/build/hooks/useScrollLock.d.ts +2 -0
- package/build/hooks/useScrollLock.js +34 -0
- package/build/hooks/useScrollLock.js.map +1 -0
- package/build/hooks/useSheetViewport.cjs +2 -0
- package/build/hooks/useSheetViewport.cjs.map +1 -0
- package/build/hooks/useSheetViewport.d.ts +6 -0
- package/build/hooks/useSheetViewport.js +29 -0
- package/build/hooks/useSheetViewport.js.map +1 -0
- package/build/hooks/useStickToBottom.cjs +2 -0
- package/build/hooks/useStickToBottom.cjs.map +1 -0
- package/build/hooks/useStickToBottom.d.ts +12 -0
- package/build/hooks/useStickToBottom.js +39 -0
- package/build/hooks/useStickToBottom.js.map +1 -0
- package/build/hooks/useUiTheme.cjs +2 -0
- package/build/hooks/useUiTheme.cjs.map +1 -0
- package/build/hooks/useUiTheme.d.ts +7 -0
- package/build/hooks/useUiTheme.js +36 -0
- package/build/hooks/useUiTheme.js.map +1 -0
- package/build/hooks/useUiTokens.cjs +2 -0
- package/build/hooks/useUiTokens.cjs.map +1 -0
- package/build/hooks/useUiTokens.d.ts +11 -0
- package/build/hooks/useUiTokens.js +39 -0
- package/build/hooks/useUiTokens.js.map +1 -0
- package/build/hooks/useVirtualList.cjs +2 -0
- package/build/hooks/useVirtualList.cjs.map +1 -0
- package/build/hooks/useVirtualList.d.ts +13 -0
- package/build/hooks/useVirtualList.js +41 -0
- package/build/hooks/useVirtualList.js.map +1 -0
- package/build/index.cjs +2 -0
- package/build/index.cjs.map +1 -0
- package/build/index.d.ts +95 -0
- package/build/index.js +207 -0
- package/build/index.js.map +1 -0
- package/build/scss/_colors.generated.scss +119 -0
- package/build/scss/_index.scss +6 -0
- package/build/scss/_metrics.generated.scss +49 -0
- package/build/scss/_mixins.scss +710 -0
- package/build/scss/_variables.scss +51 -0
- package/build/styles/base.d.ts +0 -0
- package/build/styles.css +133 -0
- package/build/theme/UiProvider.cjs +2 -0
- package/build/theme/UiProvider.cjs.map +1 -0
- package/build/theme/UiProvider.d.ts +22 -0
- package/build/theme/UiProvider.js +30 -0
- package/build/theme/UiProvider.js.map +1 -0
- package/build/theme/UiThemeScript.cjs +2 -0
- package/build/theme/UiThemeScript.cjs.map +1 -0
- package/build/theme/UiThemeScript.d.ts +19 -0
- package/build/theme/UiThemeScript.js +8 -0
- package/build/theme/UiThemeScript.js.map +1 -0
- package/build/theme/context.cjs +2 -0
- package/build/theme/context.cjs.map +1 -0
- package/build/theme/context.d.ts +5 -0
- package/build/theme/context.js +8 -0
- package/build/theme/context.js.map +1 -0
- package/build/theme/initUi.cjs +2 -0
- package/build/theme/initUi.cjs.map +1 -0
- package/build/theme/initUi.d.ts +7 -0
- package/build/theme/initUi.js +10 -0
- package/build/theme/initUi.js.map +1 -0
- package/build/theme/palette.cjs +2 -0
- package/build/theme/palette.cjs.map +1 -0
- package/build/theme/palette.d.ts +219 -0
- package/build/theme/palette.js +148 -0
- package/build/theme/palette.js.map +1 -0
- package/build/theme/tokens.cjs +2 -0
- package/build/theme/tokens.cjs.map +1 -0
- package/build/theme/tokens.d.ts +225 -0
- package/build/theme/tokens.js +384 -0
- package/build/theme/tokens.js.map +1 -0
- package/build/types/charts/AreaChart/index.d.ts +14 -0
- package/build/types/charts/BarChart/index.d.ts +16 -0
- package/build/types/charts/BoxPlot/index.d.ts +43 -0
- package/build/types/charts/ComposedChart/index.d.ts +16 -0
- package/build/types/charts/Heatmap/index.d.ts +30 -0
- package/build/types/charts/Histogram/index.d.ts +29 -0
- package/build/types/charts/LineChart/index.d.ts +14 -0
- package/build/types/charts/PieChart/index.d.ts +36 -0
- package/build/types/charts/RadarChart/index.d.ts +40 -0
- package/build/types/charts/ScatterPlot/index.d.ts +41 -0
- package/build/types/charts/core/CartesianChart.d.ts +43 -0
- package/build/types/charts/core/ChartFrame.d.ts +55 -0
- package/build/types/charts/core/axes.d.ts +37 -0
- package/build/types/charts/core/cartesian.d.ts +80 -0
- package/build/types/charts/core/format.d.ts +19 -0
- package/build/types/charts/core/margins.d.ts +9 -0
- package/build/types/charts/core/palette.d.ts +13 -0
- package/build/types/charts/core/path.d.ts +24 -0
- package/build/types/charts/core/scale.d.ts +40 -0
- package/build/types/charts/core/series.d.ts +11 -0
- package/build/types/charts/core/spatial.d.ts +12 -0
- package/build/types/charts/core/stats.d.ts +34 -0
- package/build/types/charts/core/types.d.ts +31 -0
- package/build/types/charts/core/useChartWidth.d.ts +7 -0
- package/build/types/charts/index.d.ts +21 -0
- package/build/types/chat/ActionList/index.d.ts +46 -0
- package/build/types/chat/AppBar/index.d.ts +21 -0
- package/build/types/chat/ChatMessage/index.d.ts +24 -0
- package/build/types/chat/ChatThread/index.d.ts +24 -0
- package/build/types/chat/Citation/index.d.ts +15 -0
- package/build/types/chat/CodeBlock/format.d.ts +7 -0
- package/build/types/chat/CodeBlock/grammars.d.ts +44 -0
- package/build/types/chat/CodeBlock/highlight.d.ts +22 -0
- package/build/types/chat/CodeBlock/index.d.ts +33 -0
- package/build/types/chat/DescriptionList/index.d.ts +16 -0
- package/build/types/chat/Legend/index.d.ts +20 -0
- package/build/types/chat/MessageActions/index.d.ts +21 -0
- package/build/types/chat/PromptInput/index.d.ts +47 -0
- package/build/types/chat/PromptSuggestions/index.d.ts +25 -0
- package/build/types/chat/Prose/index.d.ts +15 -0
- package/build/types/chat/ReasoningBlock/index.d.ts +24 -0
- package/build/types/chat/ReasoningText/index.d.ts +14 -0
- package/build/types/chat/SegmentBar/index.d.ts +46 -0
- package/build/types/chat/SourceList/index.d.ts +25 -0
- package/build/types/chat/TerminalOutput/index.d.ts +25 -0
- package/build/types/chat/ToolCall/index.d.ts +41 -0
- package/build/types/chat/index.d.ts +26 -0
- package/build/types/combobox.type.d.ts +49 -0
- package/build/types/common-element-props.type.d.ts +8 -0
- package/build/types/helpers/class-name.helper.d.ts +3 -0
- package/build/types/helpers/component.helper.d.ts +13 -0
- package/build/types/helpers/label.helper.d.ts +12 -0
- package/build/types/hook.type.d.ts +36 -0
- package/build/types/link.type.d.ts +14 -0
- package/build/types/positioning.type.d.ts +38 -0
- package/build/types/theme/palette.d.ts +219 -0
- package/build/types/theme/tokens.d.ts +225 -0
- package/build/types/theme.type.d.ts +223 -0
- package/build/types/types/common-element-props.type.d.ts +8 -0
- package/build/types/types/link.type.d.ts +14 -0
- package/build/types/types/theme.type.d.ts +223 -0
- package/package.json +487 -4
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as h, jsx as n } from "react/jsx-runtime";
|
|
3
|
+
import { memo as K, useCallback as m } from "react";
|
|
4
|
+
import { normalize as $ } from "@handijit/utils";
|
|
5
|
+
import { cx as M } from "../../helpers/class-name.helper.js";
|
|
6
|
+
import { resolveLabel as f } from "../../helpers/label.helper.js";
|
|
7
|
+
import { useUi as H } from "../../theme/context.js";
|
|
8
|
+
const e = {"range":"ui-range-RpDPh","range--disabled":"ui-range--disabled-13hlc","range__readout":"ui-range__readout-itDMd","range__fill":"ui-range__fill-VXMCE","range__input":"ui-range__input-TAN2I","range__separator":"ui-range__separator-u-ZJX","range__track":"ui-range__track-bCh5Y","range__bounds":"ui-range__bounds-GIhFd"};
|
|
9
|
+
const O = ({
|
|
10
|
+
min: t,
|
|
11
|
+
max: c,
|
|
12
|
+
step: N = 1,
|
|
13
|
+
value: w,
|
|
14
|
+
onChange: d,
|
|
15
|
+
onCommit: o,
|
|
16
|
+
formatValue: i = String,
|
|
17
|
+
label: u,
|
|
18
|
+
minLabel: L,
|
|
19
|
+
maxLabel: U,
|
|
20
|
+
isDisabled: _,
|
|
21
|
+
className: P,
|
|
22
|
+
testId: S
|
|
23
|
+
}) => {
|
|
24
|
+
var y, b;
|
|
25
|
+
const { labels: l } = H(), z = f("RangeSlider.minLabel", L, (y = l == null ? void 0 : l.range) == null ? void 0 : y.min), R = f("RangeSlider.maxLabel", U, (b = l == null ? void 0 : l.range) == null ? void 0 : b.max), [a, r] = w, j = m(
|
|
26
|
+
(s) => d([Math.min(s, r), r]),
|
|
27
|
+
[r, d]
|
|
28
|
+
), k = m(
|
|
29
|
+
(s) => d([a, Math.max(s, a)]),
|
|
30
|
+
[a, d]
|
|
31
|
+
), g = m(() => o == null ? void 0 : o([a, r]), [a, r, o]), p = c - t, v = p === 0 ? 0 : $(a - t, p), I = p === 0 ? 0 : $(r - t, p), x = v > 50;
|
|
32
|
+
return /* @__PURE__ */ h(
|
|
33
|
+
"div",
|
|
34
|
+
{
|
|
35
|
+
className: M(e.range, _ && e["range--disabled"], P),
|
|
36
|
+
role: "group",
|
|
37
|
+
"aria-label": u,
|
|
38
|
+
"data-testid": S,
|
|
39
|
+
children: [
|
|
40
|
+
/* @__PURE__ */ h("div", { className: e.range__readout, children: [
|
|
41
|
+
/* @__PURE__ */ n("span", { className: e.range__value, children: i(a) }),
|
|
42
|
+
/* @__PURE__ */ n("span", { className: e.range__separator, "aria-hidden": !0, children: "—" }),
|
|
43
|
+
/* @__PURE__ */ n("span", { className: e.range__value, children: i(r) })
|
|
44
|
+
] }),
|
|
45
|
+
/* @__PURE__ */ h("div", { className: e.range__track, children: [
|
|
46
|
+
/* @__PURE__ */ n(
|
|
47
|
+
"span",
|
|
48
|
+
{
|
|
49
|
+
className: e.range__fill,
|
|
50
|
+
style: { left: `${v}%`, right: `${100 - I}%` },
|
|
51
|
+
"aria-hidden": !0
|
|
52
|
+
}
|
|
53
|
+
),
|
|
54
|
+
/* @__PURE__ */ n(
|
|
55
|
+
"input",
|
|
56
|
+
{
|
|
57
|
+
type: "range",
|
|
58
|
+
className: e.range__input,
|
|
59
|
+
style: { zIndex: x ? 4 : 3 },
|
|
60
|
+
min: t,
|
|
61
|
+
max: c,
|
|
62
|
+
step: N,
|
|
63
|
+
value: a,
|
|
64
|
+
disabled: _,
|
|
65
|
+
"aria-label": `${u} — ${z}`,
|
|
66
|
+
"aria-valuetext": i(a),
|
|
67
|
+
onChange: (s) => j(Number(s.target.value)),
|
|
68
|
+
onPointerUp: g,
|
|
69
|
+
onKeyUp: g
|
|
70
|
+
}
|
|
71
|
+
),
|
|
72
|
+
/* @__PURE__ */ n(
|
|
73
|
+
"input",
|
|
74
|
+
{
|
|
75
|
+
type: "range",
|
|
76
|
+
className: e.range__input,
|
|
77
|
+
style: { zIndex: x ? 3 : 4 },
|
|
78
|
+
min: t,
|
|
79
|
+
max: c,
|
|
80
|
+
step: N,
|
|
81
|
+
value: r,
|
|
82
|
+
disabled: _,
|
|
83
|
+
"aria-label": `${u} — ${R}`,
|
|
84
|
+
"aria-valuetext": i(r),
|
|
85
|
+
onChange: (s) => k(Number(s.target.value)),
|
|
86
|
+
onPointerUp: g,
|
|
87
|
+
onKeyUp: g
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
] }),
|
|
91
|
+
/* @__PURE__ */ h("div", { className: e.range__bounds, "aria-hidden": !0, children: [
|
|
92
|
+
/* @__PURE__ */ n("span", { children: i(t) }),
|
|
93
|
+
/* @__PURE__ */ n("span", { children: i(c) })
|
|
94
|
+
] })
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
}, J = /* @__PURE__ */ K(O);
|
|
99
|
+
export {
|
|
100
|
+
J as default
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/RangeSlider/index.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useCallback } from 'react';\n\nimport { normalize } from '@handijit/utils';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\nexport type RangeValue = [number, number];\n\ntype Props = {\n min: number;\n max: number;\n step?: number;\n value: RangeValue;\n /** Sürükleme sürerken her adımda çağrılır — ekrandaki değeri günceller. */\n onChange: (value: RangeValue) => void;\n /** Sürükleme bittiğinde çağrılır. */\n onCommit?: (value: RangeValue) => void;\n /** Ham sayıyı okunur metne çevirir (\"125000\" → \"1.250 TL\"). */\n formatValue?: (value: number) => string;\n /** Grubun erişilebilir adı (\"Fiyat aralığı\"). */\n label: string;\n /** Alt kulbun erişilebilir ad eki. */\n minLabel?: string;\n /** Üst kulbun erişilebilir ad eki. */\n maxLabel?: string;\n isDisabled?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Çift kulplu aralık kaydırıcı. */\nconst RangeSlider = ({\n min,\n max,\n step = 1,\n value,\n onChange,\n onCommit,\n formatValue = String,\n label,\n minLabel,\n maxLabel,\n isDisabled,\n className,\n testId,\n}: Props) => {\n const { labels } = useUi();\n const lowName = resolveLabel('RangeSlider.minLabel', minLabel, labels?.range?.min);\n const highName = resolveLabel('RangeSlider.maxLabel', maxLabel, labels?.range?.max);\n const [low, high] = value;\n\n const handleLowChange = useCallback(\n (raw: number) => onChange([Math.min(raw, high), high]),\n [high, onChange],\n );\n\n const handleHighChange = useCallback(\n (raw: number) => onChange([low, Math.max(raw, low)]),\n [low, onChange],\n );\n\n const commit = useCallback(() => onCommit?.([low, high]), [low, high, onCommit]);\n\n /*\n * `normalize` yuzdeyi verir ve 100'de kirpar; olcek sifir genislikte oldugunda (min === max) 0\n * doner.\n */\n const span = max - min;\n const lowPercent = span === 0 ? 0 : normalize(low - min, span);\n const highPercent = span === 0 ? 0 : normalize(high - min, span);\n\n /* Iki kulp ust uste geldiginde hangisinin tutulacagi belirsizlesir. */\n const isLowOnTop = lowPercent > 50;\n\n return (\n <div\n className={cx(styles.range, isDisabled && styles['range--disabled'], className)}\n role=\"group\"\n aria-label={label}\n data-testid={testId}\n >\n <div className={styles.range__readout}>\n <span className={styles.range__value}>{formatValue(low)}</span>\n <span className={styles.range__separator} aria-hidden>\n —\n </span>\n <span className={styles.range__value}>{formatValue(high)}</span>\n </div>\n\n <div className={styles.range__track}>\n {/* Secili aralik: kullanicinin nerede durdugunu tek bakista gosterir. */}\n <span\n className={styles.range__fill}\n style={{ left: `${lowPercent}%`, right: `${100 - highPercent}%` }}\n aria-hidden\n />\n\n <input\n type=\"range\"\n className={styles.range__input}\n style={{ zIndex: isLowOnTop ? 4 : 3 }}\n min={min}\n max={max}\n step={step}\n value={low}\n disabled={isDisabled}\n aria-label={`${label} — ${lowName}`}\n aria-valuetext={formatValue(low)}\n onChange={event => handleLowChange(Number(event.target.value))}\n onPointerUp={commit}\n onKeyUp={commit}\n />\n\n <input\n type=\"range\"\n className={styles.range__input}\n style={{ zIndex: isLowOnTop ? 3 : 4 }}\n min={min}\n max={max}\n step={step}\n value={high}\n disabled={isDisabled}\n aria-label={`${label} — ${highName}`}\n aria-valuetext={formatValue(high)}\n onChange={event => handleHighChange(Number(event.target.value))}\n onPointerUp={commit}\n onKeyUp={commit}\n />\n </div>\n\n {/* Olcegin uclari: kullanici kendi araligini baglama oturtabilmeli. */}\n <div className={styles.range__bounds} aria-hidden>\n <span>{formatValue(min)}</span>\n <span>{formatValue(max)}</span>\n </div>\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(RangeSlider) as typeof RangeSlider;\n"],"names":["RangeSlider","min","max","step","value","onChange","onCommit","formatValue","label","minLabel","maxLabel","isDisabled","className","testId","labels","useUi","lowName","resolveLabel","_a","highName","_b","low","high","handleLowChange","useCallback","raw","handleHighChange","commit","span","lowPercent","normalize","highPercent","isLowOnTop","jsxs","cx","styles","jsx","event","index"],"mappings":";;;;;;;;AAoCA,MAAMA,IAAc,CAAC;AAAA,EACnB,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACF,MAAa;;AACX,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACbC,IAAUC,EAAa,wBAAwBR,IAAUS,IAAAJ,KAAA,gBAAAA,EAAQ,UAAR,gBAAAI,EAAe,GAAG,GAC3EC,IAAWF,EAAa,wBAAwBP,IAAUU,IAAAN,KAAA,gBAAAA,EAAQ,UAAR,gBAAAM,EAAe,GAAG,GAC5E,CAACC,GAAKC,CAAI,IAAIlB,GAEdmB,IAAkBC;AAAA,IACtB,CAACC,MAAgBpB,EAAS,CAAC,KAAK,IAAIoB,GAAKH,CAAI,GAAGA,CAAI,CAAC;AAAA,IACrD,CAACA,GAAMjB,CAAQ;AAAA,EAAA,GAGXqB,IAAmBF;AAAA,IACvB,CAACC,MAAgBpB,EAAS,CAACgB,GAAK,KAAK,IAAII,GAAKJ,CAAG,CAAC,CAAC;AAAA,IACnD,CAACA,GAAKhB,CAAQ;AAAA,EAAA,GAGVsB,IAASH,EAAY,MAAMlB,KAAA,gBAAAA,EAAW,CAACe,GAAKC,CAAI,IAAI,CAACD,GAAKC,GAAMhB,CAAQ,CAAC,GAMzEsB,IAAO1B,IAAMD,GACb4B,IAAaD,MAAS,IAAI,IAAIE,EAAUT,IAAMpB,GAAK2B,CAAI,GACvDG,IAAcH,MAAS,IAAI,IAAIE,EAAUR,IAAOrB,GAAK2B,CAAI,GAGzDI,IAAaH,IAAa;AAEhC,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAGC,EAAO,OAAOxB,KAAcwB,EAAO,iBAAiB,GAAGvB,CAAS;AAAA,MAC9E,MAAK;AAAA,MACL,cAAYJ;AAAA,MACZ,eAAaK;AAAA,MAEb,UAAA;AAAA,QAAA,gBAAAoB,EAAC,OAAA,EAAI,WAAWE,EAAO,gBACrB,UAAA;AAAA,UAAA,gBAAAC,EAAC,UAAK,WAAWD,EAAO,cAAe,UAAA5B,EAAYc,CAAG,GAAE;AAAA,4BACvD,QAAA,EAAK,WAAWc,EAAO,kBAAkB,eAAW,IAAC,UAAA,KAEtD;AAAA,4BACC,QAAA,EAAK,WAAWA,EAAO,cAAe,UAAA5B,EAAYe,CAAI,EAAA,CAAE;AAAA,QAAA,GAC3D;AAAA,QAEA,gBAAAW,EAAC,OAAA,EAAI,WAAWE,EAAO,cAErB,UAAA;AAAA,UAAA,gBAAAC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWD,EAAO;AAAA,cAClB,OAAO,EAAE,MAAM,GAAGN,CAAU,KAAK,OAAO,GAAG,MAAME,CAAW,IAAA;AAAA,cAC5D,eAAW;AAAA,YAAA;AAAA,UAAA;AAAA,UAGb,gBAAAK;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWD,EAAO;AAAA,cAClB,OAAO,EAAE,QAAQH,IAAa,IAAI,EAAA;AAAA,cAClC,KAAA/B;AAAA,cACA,KAAAC;AAAA,cACA,MAAAC;AAAA,cACA,OAAOkB;AAAA,cACP,UAAUV;AAAA,cACV,cAAY,GAAGH,CAAK,MAAMQ,CAAO;AAAA,cACjC,kBAAgBT,EAAYc,CAAG;AAAA,cAC/B,UAAU,CAAAgB,MAASd,EAAgB,OAAOc,EAAM,OAAO,KAAK,CAAC;AAAA,cAC7D,aAAaV;AAAA,cACb,SAASA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGX,gBAAAS;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWD,EAAO;AAAA,cAClB,OAAO,EAAE,QAAQH,IAAa,IAAI,EAAA;AAAA,cAClC,KAAA/B;AAAA,cACA,KAAAC;AAAA,cACA,MAAAC;AAAA,cACA,OAAOmB;AAAA,cACP,UAAUX;AAAA,cACV,cAAY,GAAGH,CAAK,MAAMW,CAAQ;AAAA,cAClC,kBAAgBZ,EAAYe,CAAI;AAAA,cAChC,UAAU,CAAAe,MAASX,EAAiB,OAAOW,EAAM,OAAO,KAAK,CAAC;AAAA,cAC9D,aAAaV;AAAA,cACb,SAASA;AAAA,YAAA;AAAA,UAAA;AAAA,QACX,GACF;AAAA,0BAGC,OAAA,EAAI,WAAWQ,EAAO,eAAe,eAAW,IAC/C,UAAA;AAAA,UAAA,gBAAAC,EAAC,QAAA,EAAM,UAAA7B,EAAYN,CAAG,EAAA,CAAE;AAAA,UACxB,gBAAAmC,EAAC,QAAA,EAAM,UAAA7B,EAAYL,CAAG,EAAA,CAAE;AAAA,QAAA,EAAA,CAC1B;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GAEAoC,sBAAkCtC,CAAW;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-range-RpDPh{display:flex;flex-direction:column;gap:var(--ui-space-2)}.ui-range--disabled-13hlc{pointer-events:none}.ui-range--disabled-13hlc .ui-range__readout-itDMd{color:var(--ui-text-3)}@media (forced-colors: active){.ui-range--disabled-13hlc .ui-range__readout-itDMd{color:GrayText}}.ui-range--disabled-13hlc .ui-range__fill-VXMCE{background-color:var(--ui-action-soft)}.ui-range--disabled-13hlc .ui-range__input-TAN2I::-webkit-slider-thumb{background-color:var(--ui-surface-2);border-color:var(--ui-action-soft);box-shadow:none}.ui-range--disabled-13hlc .ui-range__input-TAN2I::-moz-range-thumb{background-color:var(--ui-surface-2);border-color:var(--ui-action-soft);box-shadow:none}.ui-range__readout-itDMd{display:flex;align-items:center;gap:var(--ui-space-2);justify-content:center;font-family:var(--ui-font-heading);font-size:var(--ui-font-size-sm);font-weight:600;color:var(--ui-text);font-variant-numeric:tabular-nums}.ui-range__separator-u-ZJX{color:var(--ui-text-3);font-weight:400}.ui-range__track-bCh5Y{position:relative;height:32px;display:flex;align-items:center}.ui-range__track-bCh5Y:before{content:"";position:absolute;inset-inline:0;height:4px;border-radius:var(--ui-radius-pill);background-color:var(--ui-surface-3)}.ui-range__fill-VXMCE{position:absolute;height:4px;border-radius:var(--ui-radius-pill);background-color:var(--ui-selected)}.ui-range__input-TAN2I{position:absolute;inset-inline-start:0;width:100%;height:32px;margin:0;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;pointer-events:none}.ui-range__input-TAN2I::-webkit-slider-runnable-track{height:4px;background:transparent}.ui-range__input-TAN2I::-moz-range-track{height:4px;background:transparent}.ui-range__input-TAN2I::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;pointer-events:auto;width:20px;height:20px;margin-top:-8px;border-radius:var(--ui-radius-pill);background-color:var(--ui-surface);border:2px solid var(--ui-selected);box-shadow:var(--ui-shadow-sm);cursor:grab;transition:transform var(--ui-duration-fast) var(--ui-ease-out),box-shadow var(--ui-duration-fast) var(--ui-ease-out)}.ui-range__input-TAN2I::-moz-range-thumb{pointer-events:auto;width:20px;height:20px;border-radius:var(--ui-radius-pill);background-color:var(--ui-surface);border:2px solid var(--ui-selected);box-shadow:var(--ui-shadow-sm);cursor:grab;transition:transform var(--ui-duration-fast) var(--ui-ease-out),box-shadow var(--ui-duration-fast) var(--ui-ease-out)}.ui-range__input-TAN2I:hover::-webkit-slider-thumb{transform:scale(1.1)}.ui-range__input-TAN2I:hover::-moz-range-thumb{transform:scale(1.1)}.ui-range__input-TAN2I:active::-webkit-slider-thumb{cursor:grabbing;box-shadow:var(--ui-ring)}.ui-range__input-TAN2I:active::-moz-range-thumb{cursor:grabbing;box-shadow:var(--ui-ring)}.ui-range__input-TAN2I:focus{outline:none}.ui-range__input-TAN2I:focus-visible::-webkit-slider-thumb{box-shadow:var(--ui-ring);border-color:var(--ui-selected-active)}.ui-range__input-TAN2I:focus-visible::-moz-range-thumb{box-shadow:var(--ui-ring);border-color:var(--ui-selected-active)}@media (prefers-reduced-motion: reduce){.ui-range__input-TAN2I::-webkit-slider-thumb,.ui-range__input-TAN2I::-moz-range-thumb{transition:none}}.ui-range__bounds-GIhFd{display:flex;align-items:center;gap:var(--ui-space-2);justify-content:space-between;font-size:var(--ui-font-size-2xs);color:var(--ui-text-3);font-variant-numeric:tabular-nums}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),f=require("react"),g=require("@handijit/utils"),n=require("react-bootstrap-icons"),h=require("../../helpers/class-name.helper.cjs"),p=require("../../helpers/label.helper.cjs"),j=require("../../theme/context.cjs"),r={default:{"rating":"ui-rating-94dke","rating__stars":"ui-rating__stars-QkpVU","rating__empty":"ui-rating__empty-Wf6-K","rating__count":"ui-rating__count-pIoEs","rating__srOnly":"ui-rating__srOnly-E9h0d","rating--sm":"ui-rating--sm-AtY7U","rating--md":"ui-rating--md-Q0nxN"}},x=({value:i,count:s,srLabel:o,size:d="sm",className:m,testId:_})=>{var u;const{labels:a}=j.useUi(),l=Math.round(i*2)/2;return e.jsxs("span",{className:h.cx(r.default.rating,r.default[`rating--${d}`],m),"data-testid":_,children:[e.jsx("span",{className:r.default.rating__stars,"aria-hidden":!0,children:Array.from({length:5},(N,t)=>{const c=t+1;return l>=c?e.jsx(n.StarFill,{},t):l>=c-.5?e.jsx(n.StarHalf,{},t):e.jsx(n.StarFill,{className:r.default.rating__empty},t)})}),e.jsx("span",{className:r.default.rating__srOnly,children:o??p.resolveFormatter("Rating.srLabel",(u=a==null?void 0:a.rating)==null?void 0:u.srLabel,i,s)}),g.isDefined(s)&&e.jsxs("span",{className:r.default.rating__count,"aria-hidden":!0,children:["(",s,")"]})]})},q=f.memo(x);exports.default=q;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Rating/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo } from 'react';\n\nimport { isDefined } from '@handijit/utils';\n\nimport { StarFill, StarHalf } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveFormatter } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n /** 0–5 arası puan. */\n value: number;\n /** Değerlendirme sayısı; verilirse yıldızların yanında gösterilir. */\n count?: number;\n /** Ekran okuyucuya okunan metin. */\n srLabel?: string;\n size?: 'sm' | 'md';\n className?: string;\n testId?: string;\n};\n\n/** Yıldız puanı — salt gösterim. */\nconst Rating: FC<Props> = ({ value, count, srLabel, size = 'sm', className, testId }) => {\n const { labels } = useUi();\n const rounded = Math.round(value * 2) / 2;\n\n return (\n <span className={cx(styles.rating, styles[`rating--${size}`], className)} data-testid={testId}>\n {/*\n * BOS YILDIZ DA DOLU — farkı renk taşır (`rating__empty`), çizgi değil.\n *\n * <p>İçi boş yıldız yalnızca bir konturdur: dolu komşusunun yanında\n * \"eksik çizilmiş\" gibi durur ve küçük boyda kontur tek piksele inip\n * kayboluyordu. Aynı gövde + soluk ton, beş yıldızın silüetini bozmadan\n * doluluğu okutur.\n */}\n <span className={styles.rating__stars} aria-hidden>\n {Array.from({ length: 5 }, (_, index) => {\n const position = index + 1;\n if (rounded >= position) return <StarFill key={index} />;\n if (rounded >= position - 0.5) return <StarHalf key={index} />;\n return <StarFill key={index} className={styles.rating__empty} />;\n })}\n </span>\n\n <span className={styles.rating__srOnly}>\n {srLabel ?? resolveFormatter('Rating.srLabel', labels?.rating?.srLabel, value, count)}\n </span>\n\n {isDefined(count) && (\n <span className={styles.rating__count} aria-hidden>\n ({count})\n </span>\n )}\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Rating) as typeof Rating;\n"],"names":["Rating","value","count","srLabel","size","className","testId","labels","useUi","rounded","jsxs","cx","styles","jsx","_","index","position","StarFill","StarHalf","resolveFormatter","_a","isDefined"],"mappings":"wZA0BMA,EAAoB,CAAC,CAAE,MAAAC,EAAO,MAAAC,EAAO,QAAAC,EAAS,KAAAC,EAAO,KAAM,UAAAC,EAAW,OAAAC,KAAa,OACvF,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EACbC,EAAU,KAAK,MAAMR,EAAQ,CAAC,EAAI,EAExC,OACES,EAAAA,KAAC,OAAA,CAAK,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,OAAQA,EAAAA,QAAO,WAAWR,CAAI,EAAE,EAAGC,CAAS,EAAG,cAAaC,EASrF,SAAA,CAAAO,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,cAAe,cAAW,GAC/C,SAAA,MAAM,KAAK,CAAE,OAAQ,CAAA,EAAK,CAACE,EAAGC,IAAU,CACvC,MAAMC,EAAWD,EAAQ,EACzB,OAAIN,GAAWO,EAAiBH,EAAAA,IAACI,EAAAA,YAAcF,CAAO,EAClDN,GAAWO,EAAW,GAAYH,EAAAA,IAACK,EAAAA,YAAcH,CAAO,EACrDF,EAAAA,IAACI,EAAAA,SAAA,CAAqB,UAAWL,EAAAA,QAAO,eAAzBG,CAAwC,CAChE,CAAC,CAAA,CACH,EAEAF,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,eACrB,SAAAT,GAAWgB,EAAAA,iBAAiB,kBAAkBC,EAAAb,GAAA,YAAAA,EAAQ,SAAR,YAAAa,EAAgB,QAASnB,EAAOC,CAAK,EACtF,EAECmB,EAAAA,UAAUnB,CAAK,GACdQ,EAAAA,KAAC,QAAK,UAAWE,EAAAA,QAAO,cAAe,cAAW,GAAC,SAAA,CAAA,IAC/CV,EAAM,GAAA,CAAA,CACV,CAAA,EAEJ,CAEJ,EAEAa,SAAkCf,CAAM"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
/** 0–5 arası puan. */
|
|
4
|
+
value: number;
|
|
5
|
+
/** Değerlendirme sayısı; verilirse yıldızların yanında gösterilir. */
|
|
6
|
+
count?: number;
|
|
7
|
+
/** Ekran okuyucuya okunan metin. */
|
|
8
|
+
srLabel?: string;
|
|
9
|
+
size?: 'sm' | 'md';
|
|
10
|
+
className?: string;
|
|
11
|
+
testId?: string;
|
|
12
|
+
};
|
|
13
|
+
/** Yıldız puanı — salt gösterim. */
|
|
14
|
+
declare const Rating: FC<Props>;
|
|
15
|
+
declare const _default: typeof Rating;
|
|
16
|
+
export default _default;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as l, jsx as t } from "react/jsx-runtime";
|
|
3
|
+
import { memo as u } from "react";
|
|
4
|
+
import { isDefined as _ } from "@handijit/utils";
|
|
5
|
+
import { StarFill as c, StarHalf as h } from "react-bootstrap-icons";
|
|
6
|
+
import { cx as N } from "../../helpers/class-name.helper.js";
|
|
7
|
+
import { resolveFormatter as y } from "../../helpers/label.helper.js";
|
|
8
|
+
import { useUi as j } from "../../theme/context.js";
|
|
9
|
+
const r = {"rating":"ui-rating-94dke","rating__stars":"ui-rating__stars-QkpVU","rating__empty":"ui-rating__empty-Wf6-K","rating__count":"ui-rating__count-pIoEs","rating__srOnly":"ui-rating__srOnly-E9h0d","rating--sm":"ui-rating--sm-AtY7U","rating--md":"ui-rating--md-Q0nxN"};
|
|
10
|
+
const x = ({ value: n, count: s, srLabel: p, size: f = "sm", className: d, testId: g }) => {
|
|
11
|
+
var o;
|
|
12
|
+
const { labels: i } = j(), e = Math.round(n * 2) / 2;
|
|
13
|
+
return /* @__PURE__ */ l("span", { className: N(r.rating, r[`rating--${f}`], d), "data-testid": g, children: [
|
|
14
|
+
/* @__PURE__ */ t("span", { className: r.rating__stars, "aria-hidden": !0, children: Array.from({ length: 5 }, (F, a) => {
|
|
15
|
+
const m = a + 1;
|
|
16
|
+
return e >= m ? /* @__PURE__ */ t(c, {}, a) : e >= m - 0.5 ? /* @__PURE__ */ t(h, {}, a) : /* @__PURE__ */ t(c, { className: r.rating__empty }, a);
|
|
17
|
+
}) }),
|
|
18
|
+
/* @__PURE__ */ t("span", { className: r.rating__srOnly, children: p ?? y("Rating.srLabel", (o = i == null ? void 0 : i.rating) == null ? void 0 : o.srLabel, n, s) }),
|
|
19
|
+
_(s) && /* @__PURE__ */ l("span", { className: r.rating__count, "aria-hidden": !0, children: [
|
|
20
|
+
"(",
|
|
21
|
+
s,
|
|
22
|
+
")"
|
|
23
|
+
] })
|
|
24
|
+
] });
|
|
25
|
+
}, O = /* @__PURE__ */ u(x);
|
|
26
|
+
export {
|
|
27
|
+
O as default
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Rating/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo } from 'react';\n\nimport { isDefined } from '@handijit/utils';\n\nimport { StarFill, StarHalf } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveFormatter } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n /** 0–5 arası puan. */\n value: number;\n /** Değerlendirme sayısı; verilirse yıldızların yanında gösterilir. */\n count?: number;\n /** Ekran okuyucuya okunan metin. */\n srLabel?: string;\n size?: 'sm' | 'md';\n className?: string;\n testId?: string;\n};\n\n/** Yıldız puanı — salt gösterim. */\nconst Rating: FC<Props> = ({ value, count, srLabel, size = 'sm', className, testId }) => {\n const { labels } = useUi();\n const rounded = Math.round(value * 2) / 2;\n\n return (\n <span className={cx(styles.rating, styles[`rating--${size}`], className)} data-testid={testId}>\n {/*\n * BOS YILDIZ DA DOLU — farkı renk taşır (`rating__empty`), çizgi değil.\n *\n * <p>İçi boş yıldız yalnızca bir konturdur: dolu komşusunun yanında\n * \"eksik çizilmiş\" gibi durur ve küçük boyda kontur tek piksele inip\n * kayboluyordu. Aynı gövde + soluk ton, beş yıldızın silüetini bozmadan\n * doluluğu okutur.\n */}\n <span className={styles.rating__stars} aria-hidden>\n {Array.from({ length: 5 }, (_, index) => {\n const position = index + 1;\n if (rounded >= position) return <StarFill key={index} />;\n if (rounded >= position - 0.5) return <StarHalf key={index} />;\n return <StarFill key={index} className={styles.rating__empty} />;\n })}\n </span>\n\n <span className={styles.rating__srOnly}>\n {srLabel ?? resolveFormatter('Rating.srLabel', labels?.rating?.srLabel, value, count)}\n </span>\n\n {isDefined(count) && (\n <span className={styles.rating__count} aria-hidden>\n ({count})\n </span>\n )}\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Rating) as typeof Rating;\n"],"names":["Rating","value","count","srLabel","size","className","testId","labels","useUi","rounded","jsxs","cx","styles","jsx","_","index","position","StarFill","StarHalf","resolveFormatter","_a","isDefined"],"mappings":";;;;;;;;;AA0BA,MAAMA,IAAoB,CAAC,EAAE,OAAAC,GAAO,OAAAC,GAAO,SAAAC,GAAS,MAAAC,IAAO,MAAM,WAAAC,GAAW,QAAAC,QAAa;;AACvF,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACbC,IAAU,KAAK,MAAMR,IAAQ,CAAC,IAAI;AAExC,SACE,gBAAAS,EAAC,QAAA,EAAK,WAAWC,EAAGC,EAAO,QAAQA,EAAO,WAAWR,CAAI,EAAE,GAAGC,CAAS,GAAG,eAAaC,GASrF,UAAA;AAAA,IAAA,gBAAAO,EAAC,QAAA,EAAK,WAAWD,EAAO,eAAe,eAAW,IAC/C,UAAA,MAAM,KAAK,EAAE,QAAQ,EAAA,GAAK,CAACE,GAAGC,MAAU;AACvC,YAAMC,IAAWD,IAAQ;AACzB,aAAIN,KAAWO,IAAiB,gBAAAH,EAACI,OAAcF,CAAO,IAClDN,KAAWO,IAAW,MAAY,gBAAAH,EAACK,OAAcH,CAAO,IACrD,gBAAAF,EAACI,GAAA,EAAqB,WAAWL,EAAO,iBAAzBG,CAAwC;AAAA,IAChE,CAAC,EAAA,CACH;AAAA,IAEA,gBAAAF,EAAC,QAAA,EAAK,WAAWD,EAAO,gBACrB,UAAAT,KAAWgB,EAAiB,mBAAkBC,IAAAb,KAAA,gBAAAA,EAAQ,WAAR,gBAAAa,EAAgB,SAASnB,GAAOC,CAAK,GACtF;AAAA,IAECmB,EAAUnB,CAAK,KACd,gBAAAQ,EAAC,UAAK,WAAWE,EAAO,eAAe,eAAW,IAAC,UAAA;AAAA,MAAA;AAAA,MAC/CV;AAAA,MAAM;AAAA,IAAA,EAAA,CACV;AAAA,EAAA,GAEJ;AAEJ,GAEAa,sBAAkCf,CAAM;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-rating-94dke{display:inline-flex;align-items:center;gap:var(--ui-space-2)}.ui-rating__stars-QkpVU{display:inline-flex;gap:1px;color:var(--ui-star)}.ui-rating__empty-Wf6-K{color:var(--ui-border-strong)}.ui-rating__count-pIoEs{font-size:var(--ui-font-size-xs);color:var(--ui-text-2);font-variant-numeric:tabular-nums}.ui-rating__srOnly-E9h0d{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-rating--sm-AtY7U .ui-rating__stars-QkpVU{font-size:var(--ui-icon-sm)}.ui-rating--md-Q0nxN .ui-rating__stars-QkpVU{font-size:var(--ui-icon-md)}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),i=require("react"),q=require("react-bootstrap-icons"),_=require("../../helpers/class-name.helper.cjs"),v=require("../../helpers/label.helper.cjs"),S=require("../../theme/context.cjs"),e={default:{"rating":"ui-rating-neNnF","rating--disabled":"ui-rating--disabled-ZKjHa","rating__legend":"ui-rating__legend-uYvFS","rating__caption":"ui-rating__caption-13KFX","rating__star--filled":"ui-rating__star--filled-L3AkT","rating__star":"ui-rating__star-BANFJ","rating__stars":"ui-rating__stars-vJFLk","rating__input":"ui-rating__input-s2iiO","rating__srOnly":"ui-rating__srOnly-iSCoz"}},I=[1,2,3,4,5],M=({value:l,onChange:g,label:m,ratingLabels:f,formatStarCount:h,isDisabled:u,className:x,testId:p})=>{var o;const{labels:a}=S.useUi(),s=f??((o=a==null?void 0:a.rating)==null?void 0:o.scale),j=i.useId(),[N,d]=i.useState(null),r=N??l;return n.jsxs("fieldset",{className:_.cx(e.default.rating,u&&e.default["rating--disabled"],x),disabled:u,"data-testid":p,children:[n.jsx("legend",{className:e.default.rating__legend,children:m}),n.jsx("div",{className:e.default.rating__stars,onMouseLeave:()=>d(null),children:I.map(t=>{var c;return n.jsxs("label",{className:_.cx(e.default.rating__star,r!==null&&t<=r&&e.default["rating__star--filled"]),onMouseEnter:()=>d(t),children:[n.jsx("input",{type:"radio",name:j,value:t,checked:l===t,onChange:()=>g(t),className:e.default.rating__input}),n.jsx(q.StarFill,{"aria-hidden":!0}),n.jsxs("span",{className:e.default.rating__srOnly,children:[v.resolveFormatter("RatingInput.formatStarCount",h??((c=a==null?void 0:a.rating)==null?void 0:c.starCount),t)," ","— ",(s==null?void 0:s[t])??""]})]},t)})}),r!==null&&n.jsx("span",{className:e.default.rating__caption,"aria-hidden":!0,children:(s==null?void 0:s[r])??""})]})},R=i.memo(M);exports.default=R;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/RatingInput/index.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useId, useState } from 'react';\n\nimport { StarFill } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveFormatter } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\n/** Beş puanın her birinin ne anlama geldiği. */\nexport type RatingLabels = Record<1 | 2 | 3 | 4 | 5, string>;\n\ntype Props = {\n value: number | null;\n onChange: (value: number) => void;\n /** Grubun erişilebilir adı (\"Ürün puanı\"). */\n label: string;\n /**\n * Puan açıklamaları. Hem ekran okuyucuya okunur hem de seçildiğinde yıldızların altında yazar.\n */\n ratingLabels?: RatingLabels;\n /** Ekran okuyucuda yıldız sayısını okuyan biçimlendirici (\"4 yıldız\"). */\n formatStarCount?: (star: number) => string;\n isDisabled?: boolean;\n className?: string;\n testId?: string;\n};\n\nconst STARS = [1, 2, 3, 4, 5] as const;\n\n/** Yıldızla puan girişi. */\nconst RatingInput = ({\n value,\n onChange,\n label,\n ratingLabels,\n formatStarCount,\n isDisabled,\n className,\n testId,\n}: Props) => {\n const { labels } = useUi();\n const scale = ratingLabels ?? labels?.rating?.scale;\n const name = useId();\n const [hovered, setHovered] = useState<number | null>(null);\n\n // Fare yildizlarin uzerindeyken onizleme gosterilir; ayrilinca gercek secime doner.\n const shown = hovered ?? value;\n\n return (\n <fieldset\n className={cx(styles.rating, isDisabled && styles['rating--disabled'], className)}\n disabled={isDisabled}\n data-testid={testId}\n >\n <legend className={styles.rating__legend}>{label}</legend>\n\n <div className={styles.rating__stars} onMouseLeave={() => setHovered(null)}>\n {STARS.map(star => (\n <label\n key={star}\n className={cx(\n styles.rating__star,\n shown !== null && star <= shown && styles['rating__star--filled'],\n )}\n onMouseEnter={() => setHovered(star)}\n >\n <input\n type=\"radio\"\n name={name}\n value={star}\n checked={value === star}\n onChange={() => onChange(star)}\n className={styles.rating__input}\n />\n <StarFill aria-hidden />\n <span className={styles.rating__srOnly}>\n {resolveFormatter(\n 'RatingInput.formatStarCount',\n formatStarCount ?? labels?.rating?.starCount,\n star,\n )}{' '}\n — {scale?.[star] ?? ''}\n </span>\n </label>\n ))}\n </div>\n\n {/* Secim metni: `aria-hidden` cunku ayni bilgi radyonun etiketinde var. */}\n {shown !== null && (\n <span className={styles.rating__caption} aria-hidden>\n {scale?.[shown as 1 | 2 | 3 | 4 | 5] ?? ''}\n </span>\n )}\n </fieldset>\n );\n};\n\nexport default /*#__PURE__*/ memo(RatingInput) as typeof RatingInput;\n"],"names":["STARS","RatingInput","value","onChange","label","ratingLabels","formatStarCount","isDisabled","className","testId","labels","useUi","scale","_a","name","useId","hovered","setHovered","useState","shown","jsxs","cx","styles","jsx","star","StarFill","resolveFormatter","index"],"mappings":"2XA8BMA,EAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,CAAC,EAGtBC,EAAc,CAAC,CACnB,MAAAC,EACA,SAAAC,EACA,MAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,WAAAC,EACA,UAAAC,EACA,OAAAC,CACF,IAAa,OACX,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EACbC,EAAQP,KAAgBQ,EAAAH,GAAA,YAAAA,EAAQ,SAAR,YAAAG,EAAgB,OACxCC,EAAOC,EAAAA,MAAA,EACP,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAwB,IAAI,EAGpDC,EAAQH,GAAWd,EAEzB,OACEkB,EAAAA,KAAC,WAAA,CACC,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,OAAQf,GAAce,UAAO,kBAAkB,EAAGd,CAAS,EAChF,SAAUD,EACV,cAAaE,EAEb,SAAA,CAAAc,EAAAA,IAAC,SAAA,CAAO,UAAWD,EAAAA,QAAO,eAAiB,SAAAlB,EAAM,EAEjDmB,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,cAAe,aAAc,IAAML,EAAW,IAAI,EACtE,SAAAjB,EAAM,IAAIwB,GAAA,OACTJ,OAAAA,EAAAA,KAAC,QAAA,CAEC,UAAWC,EAAAA,GACTC,EAAAA,QAAO,aACPH,IAAU,MAAQK,GAAQL,GAASG,EAAAA,QAAO,sBAAsB,CAAA,EAElE,aAAc,IAAML,EAAWO,CAAI,EAEnC,SAAA,CAAAD,EAAAA,IAAC,QAAA,CACC,KAAK,QACL,KAAAT,EACA,MAAOU,EACP,QAAStB,IAAUsB,EACnB,SAAU,IAAMrB,EAASqB,CAAI,EAC7B,UAAWF,EAAAA,QAAO,aAAA,CAAA,EAEpBC,EAAAA,IAACE,EAAAA,SAAA,CAAS,cAAW,EAAA,CAAC,EACtBL,EAAAA,KAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,eACrB,SAAA,CAAAI,EAAAA,iBACC,8BACApB,KAAmBO,EAAAH,GAAA,YAAAA,EAAQ,SAAR,YAAAG,EAAgB,WACnCW,CAAA,EACC,IAAI,MACJZ,GAAA,YAAAA,EAAQY,KAAS,EAAA,CAAA,CACtB,CAAA,CAAA,EAvBKA,CAAA,EAyBR,EACH,EAGCL,IAAU,MACTI,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,gBAAiB,cAAW,GACjD,UAAAV,GAAA,YAAAA,EAAQO,KAA+B,EAAA,CAC1C,CAAA,CAAA,CAAA,CAIR,EAEAQ,SAAkC1B,CAAW"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Beş puanın her birinin ne anlama geldiği. */
|
|
2
|
+
export type RatingLabels = Record<1 | 2 | 3 | 4 | 5, string>;
|
|
3
|
+
type Props = {
|
|
4
|
+
value: number | null;
|
|
5
|
+
onChange: (value: number) => void;
|
|
6
|
+
/** Grubun erişilebilir adı ("Ürün puanı"). */
|
|
7
|
+
label: string;
|
|
8
|
+
/**
|
|
9
|
+
* Puan açıklamaları. Hem ekran okuyucuya okunur hem de seçildiğinde yıldızların altında yazar.
|
|
10
|
+
*/
|
|
11
|
+
ratingLabels?: RatingLabels;
|
|
12
|
+
/** Ekran okuyucuda yıldız sayısını okuyan biçimlendirici ("4 yıldız"). */
|
|
13
|
+
formatStarCount?: (star: number) => string;
|
|
14
|
+
isDisabled?: boolean;
|
|
15
|
+
className?: string;
|
|
16
|
+
testId?: string;
|
|
17
|
+
};
|
|
18
|
+
/** Yıldızla puan girişi. */
|
|
19
|
+
declare const RatingInput: ({ value, onChange, label, ratingLabels, formatStarCount, isDisabled, className, testId, }: Props) => import("react").JSX.Element;
|
|
20
|
+
declare const _default: typeof RatingInput;
|
|
21
|
+
export default _default;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as o, jsx as a } from "react/jsx-runtime";
|
|
3
|
+
import { memo as S, useId as y, useState as C } from "react";
|
|
4
|
+
import { StarFill as I } from "react-bootstrap-icons";
|
|
5
|
+
import { cx as u } from "../../helpers/class-name.helper.js";
|
|
6
|
+
import { resolveFormatter as R } from "../../helpers/label.helper.js";
|
|
7
|
+
import { useUi as j } from "../../theme/context.js";
|
|
8
|
+
const n = {"rating":"ui-rating-neNnF","rating--disabled":"ui-rating--disabled-ZKjHa","rating__legend":"ui-rating__legend-uYvFS","rating__caption":"ui-rating__caption-13KFX","rating__star--filled":"ui-rating__star--filled-L3AkT","rating__star":"ui-rating__star-BANFJ","rating__stars":"ui-rating__stars-vJFLk","rating__input":"ui-rating__input-s2iiO","rating__srOnly":"ui-rating__srOnly-iSCoz"};
|
|
9
|
+
const F = [1, 2, 3, 4, 5], M = ({
|
|
10
|
+
value: s,
|
|
11
|
+
onChange: p,
|
|
12
|
+
label: g,
|
|
13
|
+
ratingLabels: _,
|
|
14
|
+
formatStarCount: h,
|
|
15
|
+
isDisabled: l,
|
|
16
|
+
className: f,
|
|
17
|
+
testId: N
|
|
18
|
+
}) => {
|
|
19
|
+
var m;
|
|
20
|
+
const { labels: e } = j(), r = _ ?? ((m = e == null ? void 0 : e.rating) == null ? void 0 : m.scale), v = y(), [x, d] = C(null), i = x ?? s;
|
|
21
|
+
return /* @__PURE__ */ o(
|
|
22
|
+
"fieldset",
|
|
23
|
+
{
|
|
24
|
+
className: u(n.rating, l && n["rating--disabled"], f),
|
|
25
|
+
disabled: l,
|
|
26
|
+
"data-testid": N,
|
|
27
|
+
children: [
|
|
28
|
+
/* @__PURE__ */ a("legend", { className: n.rating__legend, children: g }),
|
|
29
|
+
/* @__PURE__ */ a("div", { className: n.rating__stars, onMouseLeave: () => d(null), children: F.map((t) => {
|
|
30
|
+
var c;
|
|
31
|
+
return /* @__PURE__ */ o(
|
|
32
|
+
"label",
|
|
33
|
+
{
|
|
34
|
+
className: u(
|
|
35
|
+
n.rating__star,
|
|
36
|
+
i !== null && t <= i && n["rating__star--filled"]
|
|
37
|
+
),
|
|
38
|
+
onMouseEnter: () => d(t),
|
|
39
|
+
children: [
|
|
40
|
+
/* @__PURE__ */ a(
|
|
41
|
+
"input",
|
|
42
|
+
{
|
|
43
|
+
type: "radio",
|
|
44
|
+
name: v,
|
|
45
|
+
value: t,
|
|
46
|
+
checked: s === t,
|
|
47
|
+
onChange: () => p(t),
|
|
48
|
+
className: n.rating__input
|
|
49
|
+
}
|
|
50
|
+
),
|
|
51
|
+
/* @__PURE__ */ a(I, { "aria-hidden": !0 }),
|
|
52
|
+
/* @__PURE__ */ o("span", { className: n.rating__srOnly, children: [
|
|
53
|
+
R(
|
|
54
|
+
"RatingInput.formatStarCount",
|
|
55
|
+
h ?? ((c = e == null ? void 0 : e.rating) == null ? void 0 : c.starCount),
|
|
56
|
+
t
|
|
57
|
+
),
|
|
58
|
+
" ",
|
|
59
|
+
"— ",
|
|
60
|
+
(r == null ? void 0 : r[t]) ?? ""
|
|
61
|
+
] })
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
t
|
|
65
|
+
);
|
|
66
|
+
}) }),
|
|
67
|
+
i !== null && /* @__PURE__ */ a("span", { className: n.rating__caption, "aria-hidden": !0, children: (r == null ? void 0 : r[i]) ?? "" })
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
}, T = /* @__PURE__ */ S(M);
|
|
72
|
+
export {
|
|
73
|
+
T as default
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/RatingInput/index.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useId, useState } from 'react';\n\nimport { StarFill } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveFormatter } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\n/** Beş puanın her birinin ne anlama geldiği. */\nexport type RatingLabels = Record<1 | 2 | 3 | 4 | 5, string>;\n\ntype Props = {\n value: number | null;\n onChange: (value: number) => void;\n /** Grubun erişilebilir adı (\"Ürün puanı\"). */\n label: string;\n /**\n * Puan açıklamaları. Hem ekran okuyucuya okunur hem de seçildiğinde yıldızların altında yazar.\n */\n ratingLabels?: RatingLabels;\n /** Ekran okuyucuda yıldız sayısını okuyan biçimlendirici (\"4 yıldız\"). */\n formatStarCount?: (star: number) => string;\n isDisabled?: boolean;\n className?: string;\n testId?: string;\n};\n\nconst STARS = [1, 2, 3, 4, 5] as const;\n\n/** Yıldızla puan girişi. */\nconst RatingInput = ({\n value,\n onChange,\n label,\n ratingLabels,\n formatStarCount,\n isDisabled,\n className,\n testId,\n}: Props) => {\n const { labels } = useUi();\n const scale = ratingLabels ?? labels?.rating?.scale;\n const name = useId();\n const [hovered, setHovered] = useState<number | null>(null);\n\n // Fare yildizlarin uzerindeyken onizleme gosterilir; ayrilinca gercek secime doner.\n const shown = hovered ?? value;\n\n return (\n <fieldset\n className={cx(styles.rating, isDisabled && styles['rating--disabled'], className)}\n disabled={isDisabled}\n data-testid={testId}\n >\n <legend className={styles.rating__legend}>{label}</legend>\n\n <div className={styles.rating__stars} onMouseLeave={() => setHovered(null)}>\n {STARS.map(star => (\n <label\n key={star}\n className={cx(\n styles.rating__star,\n shown !== null && star <= shown && styles['rating__star--filled'],\n )}\n onMouseEnter={() => setHovered(star)}\n >\n <input\n type=\"radio\"\n name={name}\n value={star}\n checked={value === star}\n onChange={() => onChange(star)}\n className={styles.rating__input}\n />\n <StarFill aria-hidden />\n <span className={styles.rating__srOnly}>\n {resolveFormatter(\n 'RatingInput.formatStarCount',\n formatStarCount ?? labels?.rating?.starCount,\n star,\n )}{' '}\n — {scale?.[star] ?? ''}\n </span>\n </label>\n ))}\n </div>\n\n {/* Secim metni: `aria-hidden` cunku ayni bilgi radyonun etiketinde var. */}\n {shown !== null && (\n <span className={styles.rating__caption} aria-hidden>\n {scale?.[shown as 1 | 2 | 3 | 4 | 5] ?? ''}\n </span>\n )}\n </fieldset>\n );\n};\n\nexport default /*#__PURE__*/ memo(RatingInput) as typeof RatingInput;\n"],"names":["STARS","RatingInput","value","onChange","label","ratingLabels","formatStarCount","isDisabled","className","testId","labels","useUi","scale","_a","name","useId","hovered","setHovered","useState","shown","jsxs","cx","styles","jsx","star","StarFill","resolveFormatter","index"],"mappings":";;;;;;;;AA8BA,MAAMA,IAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAGtBC,IAAc,CAAC;AAAA,EACnB,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACF,MAAa;;AACX,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACbC,IAAQP,OAAgBQ,IAAAH,KAAA,gBAAAA,EAAQ,WAAR,gBAAAG,EAAgB,QACxCC,IAAOC,EAAA,GACP,CAACC,GAASC,CAAU,IAAIC,EAAwB,IAAI,GAGpDC,IAAQH,KAAWd;AAEzB,SACE,gBAAAkB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAGC,EAAO,QAAQf,KAAce,EAAO,kBAAkB,GAAGd,CAAS;AAAA,MAChF,UAAUD;AAAA,MACV,eAAaE;AAAA,MAEb,UAAA;AAAA,QAAA,gBAAAc,EAAC,UAAA,EAAO,WAAWD,EAAO,gBAAiB,UAAAlB,GAAM;AAAA,QAEjD,gBAAAmB,EAAC,OAAA,EAAI,WAAWD,EAAO,eAAe,cAAc,MAAML,EAAW,IAAI,GACtE,UAAAjB,EAAM,IAAI,CAAAwB,MAAA;;AACT,iCAAAJ;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWC;AAAA,gBACTC,EAAO;AAAA,gBACPH,MAAU,QAAQK,KAAQL,KAASG,EAAO,sBAAsB;AAAA,cAAA;AAAA,cAElE,cAAc,MAAML,EAAWO,CAAI;AAAA,cAEnC,UAAA;AAAA,gBAAA,gBAAAD;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,MAAAT;AAAA,oBACA,OAAOU;AAAA,oBACP,SAAStB,MAAUsB;AAAA,oBACnB,UAAU,MAAMrB,EAASqB,CAAI;AAAA,oBAC7B,WAAWF,EAAO;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEpB,gBAAAC,EAACE,GAAA,EAAS,eAAW,GAAA,CAAC;AAAA,gBACtB,gBAAAL,EAAC,QAAA,EAAK,WAAWE,EAAO,gBACrB,UAAA;AAAA,kBAAAI;AAAA,oBACC;AAAA,oBACApB,OAAmBO,IAAAH,KAAA,gBAAAA,EAAQ,WAAR,gBAAAG,EAAgB;AAAA,oBACnCW;AAAA,kBAAA;AAAA,kBACC;AAAA,kBAAI;AAAA,mBACJZ,KAAA,gBAAAA,EAAQY,OAAS;AAAA,gBAAA,EAAA,CACtB;AAAA,cAAA;AAAA,YAAA;AAAA,YAvBKA;AAAA,UAAA;AAAA,SAyBR,GACH;AAAA,QAGCL,MAAU,QACT,gBAAAI,EAAC,QAAA,EAAK,WAAWD,EAAO,iBAAiB,eAAW,IACjD,WAAAV,KAAA,gBAAAA,EAAQO,OAA+B,GAAA,CAC1C;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR,GAEAQ,sBAAkC1B,CAAW;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-rating-neNnF{border:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--ui-space-2)}.ui-rating--disabled-ZKjHa .ui-rating__legend-uYvFS,.ui-rating--disabled-ZKjHa .ui-rating__caption-13KFX,.ui-rating--disabled-ZKjHa .ui-rating__star--filled-L3AkT{color:var(--ui-text-3)}@media (forced-colors: active){.ui-rating--disabled-ZKjHa .ui-rating__legend-uYvFS,.ui-rating--disabled-ZKjHa .ui-rating__caption-13KFX,.ui-rating--disabled-ZKjHa .ui-rating__star--filled-L3AkT{color:GrayText}}.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ{cursor:not-allowed}@media (forced-colors: active){.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ{color:GrayText}}.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ:hover{transform:none}.ui-rating__legend-uYvFS{padding:0;font-size:var(--ui-font-size-sm);font-weight:500;color:var(--ui-text-2)}.ui-rating__stars-vJFLk{display:flex;gap:var(--ui-space-1)}.ui-rating__star-BANFJ{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;font-size:var(--ui-icon-xl);color:var(--ui-border);cursor:pointer;transition:color var(--ui-duration-fast) var(--ui-ease-out),transform var(--ui-duration-fast) var(--ui-ease-out)}.ui-rating__star-BANFJ:hover{transform:scale(1.1)}.ui-rating__star--filled-L3AkT{color:var(--ui-star)}.ui-rating__star-BANFJ:focus-within{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, 2px);border-radius:var(--ui-radius-sm)}@media (prefers-reduced-motion: reduce){.ui-rating__star-BANFJ{transition:none}.ui-rating__star-BANFJ:hover{transform:none}}.ui-rating__input-s2iiO,.ui-rating__srOnly-iSCoz{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-rating__caption-13KFX{font-size:var(--ui-font-size-sm);font-weight:500;color:var(--ui-text);min-height:1.4em}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const R=require("react/jsx-runtime"),o=require("react"),_=require("../../helpers/class-name.helper.cjs"),H=require("../../helpers/component.helper.cjs"),W=require("../../hooks/useStickToBottom.cjs"),d={default:{"scrollArea":"ui-scrollArea-Ly-yT","scrollArea--vertical":"ui-scrollArea--vertical-2ujC7","scrollArea--horizontal":"ui-scrollArea--horizontal-e9pu-","scrollArea--both":"ui-scrollArea--both-lv-8W","scrollArea--fade":"ui-scrollArea--fade-01Bbm"}},j=({children:u,label:m,axis:t="vertical",maxHeight:f,hasFade:l,isFollowingEnd:S=!1,className:g,testId:z})=>{const n=o.useRef(null);W.default(n,S&&t!=="horizontal");const[c,p]=o.useState(!1),[v,q]=o.useState({start:!1,end:!1});return o.useEffect(()=>{const e=n.current;if(!e||typeof ResizeObserver>"u")return;const r=()=>{const s=e.scrollHeight>e.clientHeight,h=e.scrollWidth>e.clientWidth;p(t==="horizontal"?h:t==="vertical"?s:s||h);const a=t==="horizontal",A=a?e.clientWidth:e.clientHeight,E=a?e.scrollWidth:e.scrollHeight,b=Math.abs(a?e.scrollLeft:e.scrollTop);q({start:b>1,end:b+A<E-1})};r();const i=new ResizeObserver(r);i.observe(e);for(const s of e.children)i.observe(s);return e.addEventListener("scroll",r,{passive:!0}),()=>{i.disconnect(),e.removeEventListener("scroll",r)}},[t,u]),R.jsx("div",{ref:n,className:_.cx(d.default.scrollArea,d.default[`scrollArea--${t}`],l&&d.default["scrollArea--fade"],g),style:f===void 0?void 0:{maxBlockSize:f},"data-fade-start":l&&v.start?"":void 0,"data-fade-end":l&&v.end?"":void 0,tabIndex:c?0:void 0,role:c?"region":void 0,"aria-label":c?m:void 0,"data-testid":z,children:u})},y=o.memo(H.named(j,"ScrollArea"));exports.default=y;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/ScrollArea/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type ReactNode, memo, useEffect, useRef, useState } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport useStickToBottom from '../../hooks/useStickToBottom';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n children: ReactNode;\n /** Kaydırılabilir bölgenin erişilebilir adı. */\n label: string;\n /** Kaydırma yönü. `both` iki eksende de kaydırır. */\n axis?: 'vertical' | 'horizontal' | 'both';\n /** En fazla yükseklik — dikey kaydırmada zorunlu, yoksa kutu uzar gider. */\n maxHeight?: number | string;\n /** Kenarlarda içeriğin devam ettiğini gösteren solma. */\n hasFade?: boolean;\n /**\n * SONA yapışık kalır — içerik büyüdükçe aşağı iner, kullanıcı yukarı kaydırınca bırakır, sona\n * dönünce yeniden yapışır (akan akıl yürütme, canlı terminal çıktısı). Yalnızca dikey eksende.\n */\n isFollowingEnd?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Kaydırma kutusu — klavyeyle erişilebilir kaydırma bölgesi. */\nconst ScrollArea: FC<Props> = ({\n children,\n label,\n axis = 'vertical',\n maxHeight,\n hasFade,\n isFollowingEnd = false,\n className,\n testId,\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n useStickToBottom(ref, isFollowingEnd && axis !== 'horizontal');\n const [isScrollable, setIsScrollable] = useState(false);\n /* Solmanin HANGI ucta cizilecegi: yalnizca o yonde gizli icerik varken. */\n const [hiddenEdges, setHiddenEdges] = useState({ start: false, end: false });\n\n /* TASMA OLCULUR, varsayilmaz. */\n useEffect(() => {\n const node = ref.current;\n if (!node || typeof ResizeObserver === 'undefined') return;\n\n const measure = () => {\n const vertical = node.scrollHeight > node.clientHeight;\n const horizontal = node.scrollWidth > node.clientWidth;\n setIsScrollable(\n axis === 'horizontal'\n ? horizontal\n : axis === 'vertical'\n ? vertical\n : vertical || horizontal,\n );\n\n /* Solma tek eksende cizilir (`--fade` kurali `both`u kapsamiyor). */\n const isRow = axis === 'horizontal';\n const size = isRow ? node.clientWidth : node.clientHeight;\n const total = isRow ? node.scrollWidth : node.scrollHeight;\n /* RTL'de `scrollLeft` negatif olabiliyor; onemli olan UZAKLIK. */\n const offset = Math.abs(isRow ? node.scrollLeft : node.scrollTop);\n\n /* 1 px pay: kesirli yerlesimde `offset + size` toplami tam oturmuyor. */\n setHiddenEdges({ start: offset > 1, end: offset + size < total - 1 });\n };\n\n measure();\n\n /* Icerik DE kutu DA degisebiliyor: ikisi de izleniyor. */\n const observer = new ResizeObserver(measure);\n observer.observe(node);\n for (const child of node.children) observer.observe(child);\n\n /* Kaydirma ucu degistiriyor; dinleyici `passive` — olcum cizimi bloklamaz. */\n node.addEventListener('scroll', measure, { passive: true });\n\n return () => {\n observer.disconnect();\n node.removeEventListener('scroll', measure);\n };\n }, [axis, children]);\n\n return (\n <div\n ref={ref}\n className={cx(\n styles.scrollArea,\n styles[`scrollArea--${axis}`],\n hasFade && styles['scrollArea--fade'],\n className,\n )}\n style={maxHeight === undefined ? undefined : { maxBlockSize: maxHeight }}\n /* Solma UC BASINA ve YALNIZCA gizli icerik varken. */\n data-fade-start={hasFade && hiddenEdges.start ? '' : undefined}\n data-fade-end={hasFade && hiddenEdges.end ? '' : undefined}\n /*\n * Bolge YALNIZCA kaydirilabilirken odaklanabilir ve yalnizca o zaman bir ROL tasiyor:\n * sigmayan bir kutu bir \"bolge\" degil, siradan bir sarmalayici.\n */\n tabIndex={isScrollable ? 0 : undefined}\n role={isScrollable ? 'region' : undefined}\n aria-label={isScrollable ? label : undefined}\n data-testid={testId}\n >\n {children}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(ScrollArea, 'ScrollArea'),\n) as typeof ScrollArea;\n"],"names":["ScrollArea","children","label","axis","maxHeight","hasFade","isFollowingEnd","className","testId","ref","useRef","useStickToBottom","isScrollable","setIsScrollable","useState","hiddenEdges","setHiddenEdges","useEffect","node","measure","vertical","horizontal","isRow","size","total","offset","observer","child","jsx","cx","styles","index","memo","named"],"mappings":"qWA6BMA,EAAwB,CAAC,CAC7B,SAAAC,EACA,MAAAC,EACA,KAAAC,EAAO,WACP,UAAAC,EACA,QAAAC,EACA,eAAAC,EAAiB,GACjB,UAAAC,EACA,OAAAC,CACF,IAAM,CACJ,MAAMC,EAAMC,EAAAA,OAAuB,IAAI,EACvCC,EAAAA,QAAiBF,EAAKH,GAAkBH,IAAS,YAAY,EAC7D,KAAM,CAACS,EAAcC,CAAe,EAAIC,EAAAA,SAAS,EAAK,EAEhD,CAACC,EAAaC,CAAc,EAAIF,EAAAA,SAAS,CAAE,MAAO,GAAO,IAAK,GAAO,EAG3EG,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAOT,EAAI,QACjB,GAAI,CAACS,GAAQ,OAAO,eAAmB,IAAa,OAEpD,MAAMC,EAAU,IAAM,CACpB,MAAMC,EAAWF,EAAK,aAAeA,EAAK,aACpCG,EAAaH,EAAK,YAAcA,EAAK,YAC3CL,EACEV,IAAS,aACLkB,EACAlB,IAAS,WACPiB,EACAA,GAAYC,CAAA,EAIpB,MAAMC,EAAQnB,IAAS,aACjBoB,EAAOD,EAAQJ,EAAK,YAAcA,EAAK,aACvCM,EAAQF,EAAQJ,EAAK,YAAcA,EAAK,aAExCO,EAAS,KAAK,IAAIH,EAAQJ,EAAK,WAAaA,EAAK,SAAS,EAGhEF,EAAe,CAAE,MAAOS,EAAS,EAAG,IAAKA,EAASF,EAAOC,EAAQ,EAAG,CACtE,EAEAL,EAAA,EAGA,MAAMO,EAAW,IAAI,eAAeP,CAAO,EAC3CO,EAAS,QAAQR,CAAI,EACrB,UAAWS,KAAST,EAAK,SAAUQ,EAAS,QAAQC,CAAK,EAGzD,OAAAT,EAAK,iBAAiB,SAAUC,EAAS,CAAE,QAAS,GAAM,EAEnD,IAAM,CACXO,EAAS,WAAA,EACTR,EAAK,oBAAoB,SAAUC,CAAO,CAC5C,CACF,EAAG,CAAChB,EAAMF,CAAQ,CAAC,EAGjB2B,EAAAA,IAAC,MAAA,CACC,IAAAnB,EACA,UAAWoB,EAAAA,GACTC,EAAAA,QAAO,WACPA,EAAAA,QAAO,eAAe3B,CAAI,EAAE,EAC5BE,GAAWyB,EAAAA,QAAO,kBAAkB,EACpCvB,CAAA,EAEF,MAAOH,IAAc,OAAY,OAAY,CAAE,aAAcA,CAAA,EAE7D,kBAAiBC,GAAWU,EAAY,MAAQ,GAAK,OACrD,gBAAeV,GAAWU,EAAY,IAAM,GAAK,OAKjD,SAAUH,EAAe,EAAI,OAC7B,KAAMA,EAAe,SAAW,OAChC,aAAYA,EAAeV,EAAQ,OACnC,cAAaM,EAEZ,SAAAP,CAAA,CAAA,CAGP,EAEA8B,EAA6BC,EAAAA,KACbC,EAAAA,MAAMjC,EAAY,YAAY,CAC9C"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
/** Kaydırılabilir bölgenin erişilebilir adı. */
|
|
5
|
+
label: string;
|
|
6
|
+
/** Kaydırma yönü. `both` iki eksende de kaydırır. */
|
|
7
|
+
axis?: 'vertical' | 'horizontal' | 'both';
|
|
8
|
+
/** En fazla yükseklik — dikey kaydırmada zorunlu, yoksa kutu uzar gider. */
|
|
9
|
+
maxHeight?: number | string;
|
|
10
|
+
/** Kenarlarda içeriğin devam ettiğini gösteren solma. */
|
|
11
|
+
hasFade?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* SONA yapışık kalır — içerik büyüdükçe aşağı iner, kullanıcı yukarı kaydırınca bırakır, sona
|
|
14
|
+
* dönünce yeniden yapışır (akan akıl yürütme, canlı terminal çıktısı). Yalnızca dikey eksende.
|
|
15
|
+
*/
|
|
16
|
+
isFollowingEnd?: boolean;
|
|
17
|
+
className?: string;
|
|
18
|
+
testId?: string;
|
|
19
|
+
};
|
|
20
|
+
/** Kaydırma kutusu — klavyeyle erişilebilir kaydırma bölgesi. */
|
|
21
|
+
declare const ScrollArea: FC<Props>;
|
|
22
|
+
declare const _default: typeof ScrollArea;
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as R } from "react/jsx-runtime";
|
|
3
|
+
import { memo as W, useRef as y, useState as h, useEffect as L } from "react";
|
|
4
|
+
import { cx as k } from "../../helpers/class-name.helper.js";
|
|
5
|
+
import { named as w } from "../../helpers/component.helper.js";
|
|
6
|
+
import B from "../../hooks/useStickToBottom.js";
|
|
7
|
+
const a = {"scrollArea":"ui-scrollArea-Ly-yT","scrollArea--vertical":"ui-scrollArea--vertical-2ujC7","scrollArea--horizontal":"ui-scrollArea--horizontal-e9pu-","scrollArea--both":"ui-scrollArea--both-lv-8W","scrollArea--fade":"ui-scrollArea--fade-01Bbm"};
|
|
8
|
+
const I = ({
|
|
9
|
+
children: d,
|
|
10
|
+
label: b,
|
|
11
|
+
axis: t = "vertical",
|
|
12
|
+
maxHeight: f,
|
|
13
|
+
hasFade: s,
|
|
14
|
+
isFollowingEnd: p = !1,
|
|
15
|
+
className: z,
|
|
16
|
+
testId: S
|
|
17
|
+
}) => {
|
|
18
|
+
const l = y(null);
|
|
19
|
+
B(l, p && t !== "horizontal");
|
|
20
|
+
const [n, g] = h(!1), [v, A] = h({ start: !1, end: !1 });
|
|
21
|
+
return L(() => {
|
|
22
|
+
const e = l.current;
|
|
23
|
+
if (!e || typeof ResizeObserver > "u") return;
|
|
24
|
+
const o = () => {
|
|
25
|
+
const r = e.scrollHeight > e.clientHeight, m = e.scrollWidth > e.clientWidth;
|
|
26
|
+
g(
|
|
27
|
+
t === "horizontal" ? m : t === "vertical" ? r : r || m
|
|
28
|
+
);
|
|
29
|
+
const c = t === "horizontal", E = c ? e.clientWidth : e.clientHeight, H = c ? e.scrollWidth : e.scrollHeight, u = Math.abs(c ? e.scrollLeft : e.scrollTop);
|
|
30
|
+
A({ start: u > 1, end: u + E < H - 1 });
|
|
31
|
+
};
|
|
32
|
+
o();
|
|
33
|
+
const i = new ResizeObserver(o);
|
|
34
|
+
i.observe(e);
|
|
35
|
+
for (const r of e.children) i.observe(r);
|
|
36
|
+
return e.addEventListener("scroll", o, { passive: !0 }), () => {
|
|
37
|
+
i.disconnect(), e.removeEventListener("scroll", o);
|
|
38
|
+
};
|
|
39
|
+
}, [t, d]), /* @__PURE__ */ R(
|
|
40
|
+
"div",
|
|
41
|
+
{
|
|
42
|
+
ref: l,
|
|
43
|
+
className: k(
|
|
44
|
+
a.scrollArea,
|
|
45
|
+
a[`scrollArea--${t}`],
|
|
46
|
+
s && a["scrollArea--fade"],
|
|
47
|
+
z
|
|
48
|
+
),
|
|
49
|
+
style: f === void 0 ? void 0 : { maxBlockSize: f },
|
|
50
|
+
"data-fade-start": s && v.start ? "" : void 0,
|
|
51
|
+
"data-fade-end": s && v.end ? "" : void 0,
|
|
52
|
+
tabIndex: n ? 0 : void 0,
|
|
53
|
+
role: n ? "region" : void 0,
|
|
54
|
+
"aria-label": n ? b : void 0,
|
|
55
|
+
"data-testid": S,
|
|
56
|
+
children: d
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
}, q = /* @__PURE__ */ W(
|
|
60
|
+
/* @__PURE__ */ w(I, "ScrollArea")
|
|
61
|
+
);
|
|
62
|
+
export {
|
|
63
|
+
q as default
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/ScrollArea/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type ReactNode, memo, useEffect, useRef, useState } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport useStickToBottom from '../../hooks/useStickToBottom';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n children: ReactNode;\n /** Kaydırılabilir bölgenin erişilebilir adı. */\n label: string;\n /** Kaydırma yönü. `both` iki eksende de kaydırır. */\n axis?: 'vertical' | 'horizontal' | 'both';\n /** En fazla yükseklik — dikey kaydırmada zorunlu, yoksa kutu uzar gider. */\n maxHeight?: number | string;\n /** Kenarlarda içeriğin devam ettiğini gösteren solma. */\n hasFade?: boolean;\n /**\n * SONA yapışık kalır — içerik büyüdükçe aşağı iner, kullanıcı yukarı kaydırınca bırakır, sona\n * dönünce yeniden yapışır (akan akıl yürütme, canlı terminal çıktısı). Yalnızca dikey eksende.\n */\n isFollowingEnd?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Kaydırma kutusu — klavyeyle erişilebilir kaydırma bölgesi. */\nconst ScrollArea: FC<Props> = ({\n children,\n label,\n axis = 'vertical',\n maxHeight,\n hasFade,\n isFollowingEnd = false,\n className,\n testId,\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n useStickToBottom(ref, isFollowingEnd && axis !== 'horizontal');\n const [isScrollable, setIsScrollable] = useState(false);\n /* Solmanin HANGI ucta cizilecegi: yalnizca o yonde gizli icerik varken. */\n const [hiddenEdges, setHiddenEdges] = useState({ start: false, end: false });\n\n /* TASMA OLCULUR, varsayilmaz. */\n useEffect(() => {\n const node = ref.current;\n if (!node || typeof ResizeObserver === 'undefined') return;\n\n const measure = () => {\n const vertical = node.scrollHeight > node.clientHeight;\n const horizontal = node.scrollWidth > node.clientWidth;\n setIsScrollable(\n axis === 'horizontal'\n ? horizontal\n : axis === 'vertical'\n ? vertical\n : vertical || horizontal,\n );\n\n /* Solma tek eksende cizilir (`--fade` kurali `both`u kapsamiyor). */\n const isRow = axis === 'horizontal';\n const size = isRow ? node.clientWidth : node.clientHeight;\n const total = isRow ? node.scrollWidth : node.scrollHeight;\n /* RTL'de `scrollLeft` negatif olabiliyor; onemli olan UZAKLIK. */\n const offset = Math.abs(isRow ? node.scrollLeft : node.scrollTop);\n\n /* 1 px pay: kesirli yerlesimde `offset + size` toplami tam oturmuyor. */\n setHiddenEdges({ start: offset > 1, end: offset + size < total - 1 });\n };\n\n measure();\n\n /* Icerik DE kutu DA degisebiliyor: ikisi de izleniyor. */\n const observer = new ResizeObserver(measure);\n observer.observe(node);\n for (const child of node.children) observer.observe(child);\n\n /* Kaydirma ucu degistiriyor; dinleyici `passive` — olcum cizimi bloklamaz. */\n node.addEventListener('scroll', measure, { passive: true });\n\n return () => {\n observer.disconnect();\n node.removeEventListener('scroll', measure);\n };\n }, [axis, children]);\n\n return (\n <div\n ref={ref}\n className={cx(\n styles.scrollArea,\n styles[`scrollArea--${axis}`],\n hasFade && styles['scrollArea--fade'],\n className,\n )}\n style={maxHeight === undefined ? undefined : { maxBlockSize: maxHeight }}\n /* Solma UC BASINA ve YALNIZCA gizli icerik varken. */\n data-fade-start={hasFade && hiddenEdges.start ? '' : undefined}\n data-fade-end={hasFade && hiddenEdges.end ? '' : undefined}\n /*\n * Bolge YALNIZCA kaydirilabilirken odaklanabilir ve yalnizca o zaman bir ROL tasiyor:\n * sigmayan bir kutu bir \"bolge\" degil, siradan bir sarmalayici.\n */\n tabIndex={isScrollable ? 0 : undefined}\n role={isScrollable ? 'region' : undefined}\n aria-label={isScrollable ? label : undefined}\n data-testid={testId}\n >\n {children}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(ScrollArea, 'ScrollArea'),\n) as typeof ScrollArea;\n"],"names":["ScrollArea","children","label","axis","maxHeight","hasFade","isFollowingEnd","className","testId","ref","useRef","useStickToBottom","isScrollable","setIsScrollable","useState","hiddenEdges","setHiddenEdges","useEffect","node","measure","vertical","horizontal","isRow","size","total","offset","observer","child","jsx","cx","styles","index","memo","named"],"mappings":";;;;;;;AA6BA,MAAMA,IAAwB,CAAC;AAAA,EAC7B,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,WAAAC;AAAA,EACA,QAAAC;AACF,MAAM;AACJ,QAAMC,IAAMC,EAAuB,IAAI;AACvC,EAAAC,EAAiBF,GAAKH,KAAkBH,MAAS,YAAY;AAC7D,QAAM,CAACS,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAEhD,CAACC,GAAaC,CAAc,IAAIF,EAAS,EAAE,OAAO,IAAO,KAAK,IAAO;AAG3E,SAAAG,EAAU,MAAM;AACd,UAAMC,IAAOT,EAAI;AACjB,QAAI,CAACS,KAAQ,OAAO,iBAAmB,IAAa;AAEpD,UAAMC,IAAU,MAAM;AACpB,YAAMC,IAAWF,EAAK,eAAeA,EAAK,cACpCG,IAAaH,EAAK,cAAcA,EAAK;AAC3C,MAAAL;AAAA,QACEV,MAAS,eACLkB,IACAlB,MAAS,aACPiB,IACAA,KAAYC;AAAA,MAAA;AAIpB,YAAMC,IAAQnB,MAAS,cACjBoB,IAAOD,IAAQJ,EAAK,cAAcA,EAAK,cACvCM,IAAQF,IAAQJ,EAAK,cAAcA,EAAK,cAExCO,IAAS,KAAK,IAAIH,IAAQJ,EAAK,aAAaA,EAAK,SAAS;AAGhE,MAAAF,EAAe,EAAE,OAAOS,IAAS,GAAG,KAAKA,IAASF,IAAOC,IAAQ,GAAG;AAAA,IACtE;AAEA,IAAAL,EAAA;AAGA,UAAMO,IAAW,IAAI,eAAeP,CAAO;AAC3C,IAAAO,EAAS,QAAQR,CAAI;AACrB,eAAWS,KAAST,EAAK,SAAU,CAAAQ,EAAS,QAAQC,CAAK;AAGzD,WAAAT,EAAK,iBAAiB,UAAUC,GAAS,EAAE,SAAS,IAAM,GAEnD,MAAM;AACX,MAAAO,EAAS,WAAA,GACTR,EAAK,oBAAoB,UAAUC,CAAO;AAAA,IAC5C;AAAA,EACF,GAAG,CAAChB,GAAMF,CAAQ,CAAC,GAGjB,gBAAA2B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAnB;AAAA,MACA,WAAWoB;AAAA,QACTC,EAAO;AAAA,QACPA,EAAO,eAAe3B,CAAI,EAAE;AAAA,QAC5BE,KAAWyB,EAAO,kBAAkB;AAAA,QACpCvB;AAAA,MAAA;AAAA,MAEF,OAAOH,MAAc,SAAY,SAAY,EAAE,cAAcA,EAAA;AAAA,MAE7D,mBAAiBC,KAAWU,EAAY,QAAQ,KAAK;AAAA,MACrD,iBAAeV,KAAWU,EAAY,MAAM,KAAK;AAAA,MAKjD,UAAUH,IAAe,IAAI;AAAA,MAC7B,MAAMA,IAAe,WAAW;AAAA,MAChC,cAAYA,IAAeV,IAAQ;AAAA,MACnC,eAAaM;AAAA,MAEZ,UAAAP;AAAA,IAAA;AAAA,EAAA;AAGP,GAEA8B,IAA6B,gBAAAC;AAAA,EACb,gBAAAC,EAAMjC,GAAY,YAAY;AAC9C;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-scrollArea-Ly-yT{scrollbar-width:thin;scrollbar-color:var(--ui-border-strong) transparent}.ui-scrollArea-Ly-yT::-webkit-scrollbar{width:8px;height:8px}.ui-scrollArea-Ly-yT::-webkit-scrollbar-track{background:transparent}.ui-scrollArea-Ly-yT::-webkit-scrollbar-thumb{background-color:var(--ui-border-strong);border-radius:var(--ui-radius-pill);border:2px solid transparent;background-clip:content-box}.ui-scrollArea-Ly-yT::-webkit-scrollbar-thumb:hover{background-color:var(--ui-text-3)}.ui-scrollArea-Ly-yT{position:relative;overscroll-behavior:contain}.ui-scrollArea--vertical-2ujC7{overflow-y:auto;overflow-x:hidden}.ui-scrollArea--horizontal-e9pu-{overflow-x:auto;overflow-y:hidden}.ui-scrollArea--both-lv-8W{overflow:auto}.ui-scrollArea-Ly-yT:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, -2px)}.ui-scrollArea--fade-01Bbm{--ui-scroll-fade-start: 0px;--ui-scroll-fade-end: 0px}.ui-scrollArea--fade-01Bbm[data-fade-start]{--ui-scroll-fade-start: var(--ui-space-4)}.ui-scrollArea--fade-01Bbm[data-fade-end]{--ui-scroll-fade-end: var(--ui-space-4)}.ui-scrollArea--fade-01Bbm.ui-scrollArea--vertical-2ujC7{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%)}.ui-scrollArea--fade-01Bbm.ui-scrollArea--horizontal-e9pu-{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%)}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),n=require("react"),h=require("../../helpers/class-name.helper.cjs"),e={default:{"header":"ui-header-a08Jh","header__text":"ui-header__text-ArJkA","header__overline":"ui-header__overline-X5Epo","header__title":"ui-header__title-nQQQJ","header__description":"ui-header__description-08oCr","header__action":"ui-header__action-xsxQF","header--sm":"ui-header--sm-mIJWZ","header--lg":"ui-header--lg-QBLIz"}},o=({title:r,description:s,overline:d,action:t,as:l="h2",size:c="md",className:i,testId:u})=>a.jsxs("header",{className:h.cx(e.default.header,e.default[`header--${c}`],i),"data-testid":u,children:[a.jsxs("div",{className:e.default.header__text,children:[d&&a.jsx("span",{className:e.default.header__overline,children:d}),a.jsx(l,{className:e.default.header__title,children:r}),s&&a.jsx("p",{className:e.default.header__description,children:s})]}),t&&a.jsx("div",{className:e.default.header__action,children:t})]}),_=n.memo(o);exports.default=_;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/SectionHeader/index.tsx"],"sourcesContent":["import { type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n title: string;\n description?: string;\n /** Üstte gösterilen küçük büyük-harf etiket. */\n overline?: string;\n /** Sağda gösterilen eylem (\"Tümünü gör\"). */\n action?: ReactNode;\n as?: 'h1' | 'h2' | 'h3';\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n testId?: string;\n};\n\n/** Bölüm başlığı. */\nconst SectionHeader: FC<Props> = ({\n title,\n description,\n overline,\n action,\n as: Heading = 'h2',\n size = 'md',\n className,\n testId,\n}) => (\n <header className={cx(styles.header, styles[`header--${size}`], className)} data-testid={testId}>\n <div className={styles.header__text}>\n {overline && <span className={styles.header__overline}>{overline}</span>}\n <Heading className={styles.header__title}>{title}</Heading>\n {description && <p className={styles.header__description}>{description}</p>}\n </div>\n\n {action && <div className={styles.header__action}>{action}</div>}\n </header>\n);\n\nexport default /*#__PURE__*/ memo(SectionHeader) as typeof SectionHeader;\n"],"names":["SectionHeader","title","description","overline","action","Heading","size","className","testId","jsxs","cx","styles","jsx","index"],"mappings":"0PAoBMA,EAA2B,CAAC,CAChC,MAAAC,EACA,YAAAC,EACA,SAAAC,EACA,OAAAC,EACA,GAAIC,EAAU,KACd,KAAAC,EAAO,KACP,UAAAC,EACA,OAAAC,CACF,IACEC,EAAAA,KAAC,SAAA,CAAO,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,OAAQA,EAAAA,QAAO,WAAWL,CAAI,EAAE,EAAGC,CAAS,EAAG,cAAaC,EACvF,SAAA,CAAAC,EAAAA,KAAC,MAAA,CAAI,UAAWE,EAAAA,QAAO,aACpB,SAAA,CAAAR,GAAYS,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,iBAAmB,SAAAR,EAAS,EACjES,EAAAA,IAACP,EAAA,CAAQ,UAAWM,EAAAA,QAAO,cAAgB,SAAAV,EAAM,EAChDC,GAAeU,EAAAA,IAAC,IAAA,CAAE,UAAWD,EAAAA,QAAO,oBAAsB,SAAAT,CAAA,CAAY,CAAA,EACzE,EAECE,GAAUQ,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,eAAiB,SAAAP,CAAA,CAAO,CAAA,EAC5D,EAGFS,SAAkCb,CAAa"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
title: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
/** Üstte gösterilen küçük büyük-harf etiket. */
|
|
6
|
+
overline?: string;
|
|
7
|
+
/** Sağda gösterilen eylem ("Tümünü gör"). */
|
|
8
|
+
action?: ReactNode;
|
|
9
|
+
as?: 'h1' | 'h2' | 'h3';
|
|
10
|
+
size?: 'sm' | 'md' | 'lg';
|
|
11
|
+
className?: string;
|
|
12
|
+
testId?: string;
|
|
13
|
+
};
|
|
14
|
+
/** Bölüm başlığı. */
|
|
15
|
+
declare const SectionHeader: FC<Props>;
|
|
16
|
+
declare const _default: typeof SectionHeader;
|
|
17
|
+
export default _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsxs as m, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { memo as o } from "react";
|
|
3
|
+
import { cx as n } from "../../helpers/class-name.helper.js";
|
|
4
|
+
const e = {"header":"ui-header-a08Jh","header__text":"ui-header__text-ArJkA","header__overline":"ui-header__overline-X5Epo","header__title":"ui-header__title-nQQQJ","header__description":"ui-header__description-08oCr","header__action":"ui-header__action-xsxQF","header--sm":"ui-header--sm-mIJWZ","header--lg":"ui-header--lg-QBLIz"};
|
|
5
|
+
const _ = ({
|
|
6
|
+
title: t,
|
|
7
|
+
description: r,
|
|
8
|
+
overline: s,
|
|
9
|
+
action: d,
|
|
10
|
+
as: c = "h2",
|
|
11
|
+
size: i = "md",
|
|
12
|
+
className: h,
|
|
13
|
+
testId: l
|
|
14
|
+
}) => /* @__PURE__ */ m("header", { className: n(e.header, e[`header--${i}`], h), "data-testid": l, children: [
|
|
15
|
+
/* @__PURE__ */ m("div", { className: e.header__text, children: [
|
|
16
|
+
s && /* @__PURE__ */ a("span", { className: e.header__overline, children: s }),
|
|
17
|
+
/* @__PURE__ */ a(c, { className: e.header__title, children: t }),
|
|
18
|
+
r && /* @__PURE__ */ a("p", { className: e.header__description, children: r })
|
|
19
|
+
] }),
|
|
20
|
+
d && /* @__PURE__ */ a("div", { className: e.header__action, children: d })
|
|
21
|
+
] }), j = /* @__PURE__ */ o(_);
|
|
22
|
+
export {
|
|
23
|
+
j as default
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/SectionHeader/index.tsx"],"sourcesContent":["import { type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n title: string;\n description?: string;\n /** Üstte gösterilen küçük büyük-harf etiket. */\n overline?: string;\n /** Sağda gösterilen eylem (\"Tümünü gör\"). */\n action?: ReactNode;\n as?: 'h1' | 'h2' | 'h3';\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n testId?: string;\n};\n\n/** Bölüm başlığı. */\nconst SectionHeader: FC<Props> = ({\n title,\n description,\n overline,\n action,\n as: Heading = 'h2',\n size = 'md',\n className,\n testId,\n}) => (\n <header className={cx(styles.header, styles[`header--${size}`], className)} data-testid={testId}>\n <div className={styles.header__text}>\n {overline && <span className={styles.header__overline}>{overline}</span>}\n <Heading className={styles.header__title}>{title}</Heading>\n {description && <p className={styles.header__description}>{description}</p>}\n </div>\n\n {action && <div className={styles.header__action}>{action}</div>}\n </header>\n);\n\nexport default /*#__PURE__*/ memo(SectionHeader) as typeof SectionHeader;\n"],"names":["SectionHeader","title","description","overline","action","Heading","size","className","testId","jsxs","cx","styles","jsx","index"],"mappings":";;;;AAoBA,MAAMA,IAA2B,CAAC;AAAA,EAChC,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,IAAIC,IAAU;AAAA,EACd,MAAAC,IAAO;AAAA,EACP,WAAAC;AAAA,EACA,QAAAC;AACF,MACE,gBAAAC,EAAC,UAAA,EAAO,WAAWC,EAAGC,EAAO,QAAQA,EAAO,WAAWL,CAAI,EAAE,GAAGC,CAAS,GAAG,eAAaC,GACvF,UAAA;AAAA,EAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWE,EAAO,cACpB,UAAA;AAAA,IAAAR,KAAY,gBAAAS,EAAC,QAAA,EAAK,WAAWD,EAAO,kBAAmB,UAAAR,GAAS;AAAA,IACjE,gBAAAS,EAACP,GAAA,EAAQ,WAAWM,EAAO,eAAgB,UAAAV,GAAM;AAAA,IAChDC,KAAe,gBAAAU,EAAC,KAAA,EAAE,WAAWD,EAAO,qBAAsB,UAAAT,EAAA,CAAY;AAAA,EAAA,GACzE;AAAA,EAECE,KAAU,gBAAAQ,EAAC,OAAA,EAAI,WAAWD,EAAO,gBAAiB,UAAAP,EAAA,CAAO;AAAA,GAC5D,GAGFS,sBAAkCb,CAAa;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-header-a08Jh{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--ui-space-4);flex-wrap:wrap}.ui-header__text-ArJkA{display:flex;flex-direction:column;gap:var(--ui-space-1);min-width:0}.ui-header__overline-X5Epo{font-family:var(--ui-font-body);font-size:var(--ui-font-size-2xs);font-weight:600;letter-spacing:.045em;text-transform:uppercase;color:var(--ui-text-2)}.ui-header__title-nQQQJ{font-size:var(--ui-font-size-xl);font-weight:600;line-height:var(--ui-leading-tight);color:var(--ui-text);font-family:var(--ui-font-heading);letter-spacing:-.011em;margin:0}.ui-header__description-08oCr{font-size:var(--ui-font-size-sm);color:var(--ui-text-2);line-height:var(--ui-leading-normal);max-width:68ch;margin:0}.ui-header__action-xsxQF{flex-shrink:0}.ui-header--sm-mIJWZ .ui-header__title-nQQQJ{font-size:var(--ui-font-size-lg)}.ui-header--lg-QBLIz .ui-header__title-nQQQJ{font-size:var(--ui-font-size-2xl)}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),g=require("react"),b=require("../../helpers/class-name.helper.cjs"),S=require("../../helpers/component.helper.cjs"),t={default:{"segmented":"ui-segmented-qo2Bw","segmented--sm":"ui-segmented--sm-7tUry","segmented--md":"ui-segmented--md-PiSqt","segmented__item":"ui-segmented__item-mqRNZ","segmented__item--selected":"ui-segmented__item--selected-r7CLj","segmented__icon":"ui-segmented__icon-C9CT-","segmented__label":"ui-segmented__label-NVXBv"}},j=({options:n,value:d,onChange:u,label:_,isIconOnly:c,size:h="md",className:x,testId:v})=>{const i=g.useRef(null),y=e=>{var m,f;const l=e.key==="ArrowRight"||e.key==="ArrowDown"?1:e.key==="ArrowLeft"||e.key==="ArrowUp"?-1:0;if(l===0)return;e.preventDefault();const r=n.filter(s=>!s.isDisabled);if(r.length===0)return;const w=r.findIndex(s=>s.value===d),o=r[(w+l+r.length)%r.length];u(o.value),(f=(m=i.current)==null?void 0:m.querySelector(`[data-value="${o.value}"]`))==null||f.focus({preventScroll:!0})};return a.jsx("div",{ref:i,role:"radiogroup","aria-label":_,className:b.cx(t.default.segmented,t.default[`segmented--${h}`],x),"data-testid":v,onKeyDown:y,children:n.map(e=>{const l=e.value===d;return a.jsxs("button",{type:"button",role:"radio","aria-checked":l,"aria-label":c?e.label:void 0,"data-value":e.value,disabled:e.isDisabled,tabIndex:l?0:-1,className:b.cx(t.default.segmented__item,l&&t.default["segmented__item--selected"]),onClick:()=>!l&&u(e.value),children:[e.icon&&a.jsx("span",{className:t.default.segmented__icon,"aria-hidden":!0,children:e.icon}),!c&&a.jsx("span",{className:t.default.segmented__label,children:e.label})]},e.value)})})},k=g.memo(S.named(j,"SegmentedControl"));exports.default=k;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/SegmentedControl/index.tsx"],"sourcesContent":["'use client';\n\nimport { type KeyboardEvent, memo, type ReactNode, useRef } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\nexport type SegmentOption<T extends string = string> = {\n value: T;\n label: string;\n /** Yalnızca ikon gösterilecekse `label` erişilebilir ad olarak kalır. */\n icon?: ReactNode;\n isDisabled?: boolean;\n};\n\ntype Props<T extends string> = {\n options: SegmentOption<T>[];\n value: T;\n onChange: (value: T) => void;\n /** Grubun erişilebilir adı (\"Görünüm\"). */\n label: string;\n /** Etiketler gizlenir, yalnızca ikon çizilir. `label` yine okunur. */\n isIconOnly?: boolean;\n size?: 'sm' | 'md';\n className?: string;\n testId?: string;\n};\n\n/** Bölmeli denetim — görünüm değiştirme. */\nconst SegmentedControl = <T extends string>({\n options,\n value,\n onChange,\n label,\n isIconOnly,\n size = 'md',\n className,\n testId,\n}: Props<T>) => {\n const listRef = useRef<HTMLDivElement>(null);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offset =\n event.key === 'ArrowRight' || event.key === 'ArrowDown'\n ? 1\n : event.key === 'ArrowLeft' || event.key === 'ArrowUp'\n ? -1\n : 0;\n\n if (offset === 0) return;\n event.preventDefault();\n\n const enabled = options.filter(option => !option.isDisabled);\n if (enabled.length === 0) return;\n\n const current = enabled.findIndex(option => option.value === value);\n const next = enabled[(current + offset + enabled.length) % enabled.length];\n\n onChange(next.value);\n listRef.current\n ?.querySelector<HTMLButtonElement>(`[data-value=\"${next.value}\"]`)\n ?.focus({ preventScroll: true });\n };\n\n return (\n <div\n ref={listRef}\n role=\"radiogroup\"\n aria-label={label}\n className={cx(styles.segmented, styles[`segmented--${size}`], className)}\n data-testid={testId}\n onKeyDown={handleKeyDown}\n >\n {options.map(option => {\n const isSelected = option.value === value;\n\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={isSelected}\n aria-label={isIconOnly ? option.label : undefined}\n data-value={option.value}\n disabled={option.isDisabled}\n /* Donen `tabindex`: grup Tab sirasinda TEK durak. */\n tabIndex={isSelected ? 0 : -1}\n className={cx(\n styles.segmented__item,\n isSelected && styles['segmented__item--selected'],\n )}\n /*\n * Secili ogeye ikinci kez basmak HICBIR SEY yapmaz: gorunum anahtarinda \"hicbiri\" diye\n * bir hal yok. `ChipGroup`ta ayni hareket secimi kaldiriyor ve iki…\n */\n onClick={() => !isSelected && onChange(option.value)}\n >\n {option.icon && (\n <span className={styles.segmented__icon} aria-hidden>\n {option.icon}\n </span>\n )}\n {!isIconOnly && <span className={styles.segmented__label}>{option.label}</span>}\n </button>\n );\n })}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(SegmentedControl, 'SegmentedControl'),\n) as typeof SegmentedControl;\n"],"names":["SegmentedControl","options","value","onChange","label","isIconOnly","size","className","testId","listRef","useRef","handleKeyDown","event","offset","enabled","option","current","next","_b","_a","jsx","cx","styles","isSelected","jsxs","index","memo","named"],"mappings":"uTA8BMA,EAAmB,CAAmB,CAC1C,QAAAC,EACA,MAAAC,EACA,SAAAC,EACA,MAAAC,EACA,WAAAC,EACA,KAAAC,EAAO,KACP,UAAAC,EACA,OAAAC,CACF,IAAgB,CACd,MAAMC,EAAUC,EAAAA,OAAuB,IAAI,EAErCC,EAAiBC,GAAyC,SAC9D,MAAMC,EACJD,EAAM,MAAQ,cAAgBA,EAAM,MAAQ,YACxC,EACAA,EAAM,MAAQ,aAAeA,EAAM,MAAQ,UACzC,GACA,EAER,GAAIC,IAAW,EAAG,OAClBD,EAAM,eAAA,EAEN,MAAME,EAAUb,EAAQ,OAAOc,GAAU,CAACA,EAAO,UAAU,EAC3D,GAAID,EAAQ,SAAW,EAAG,OAE1B,MAAME,EAAUF,EAAQ,UAAUC,GAAUA,EAAO,QAAUb,CAAK,EAC5De,EAAOH,GAASE,EAAUH,EAASC,EAAQ,QAAUA,EAAQ,MAAM,EAEzEX,EAASc,EAAK,KAAK,GACnBC,GAAAC,EAAAV,EAAQ,UAAR,YAAAU,EACI,cAAiC,gBAAgBF,EAAK,KAAK,QAD/D,MAAAC,EAEI,MAAM,CAAE,cAAe,EAAA,EAC7B,EAEA,OACEE,EAAAA,IAAC,MAAA,CACC,IAAKX,EACL,KAAK,aACL,aAAYL,EACZ,UAAWiB,EAAAA,GAAGC,EAAAA,QAAO,UAAWA,EAAAA,QAAO,cAAchB,CAAI,EAAE,EAAGC,CAAS,EACvE,cAAaC,EACb,UAAWG,EAEV,SAAAV,EAAQ,IAAIc,GAAU,CACrB,MAAMQ,EAAaR,EAAO,QAAUb,EAEpC,OACEsB,EAAAA,KAAC,SAAA,CAEC,KAAK,SACL,KAAK,QACL,eAAcD,EACd,aAAYlB,EAAaU,EAAO,MAAQ,OACxC,aAAYA,EAAO,MACnB,SAAUA,EAAO,WAEjB,SAAUQ,EAAa,EAAI,GAC3B,UAAWF,EAAAA,GACTC,EAAAA,QAAO,gBACPC,GAAcD,EAAAA,QAAO,2BAA2B,CAAA,EAMlD,QAAS,IAAM,CAACC,GAAcpB,EAASY,EAAO,KAAK,EAElD,SAAA,CAAAA,EAAO,YACL,OAAA,CAAK,UAAWO,EAAAA,QAAO,gBAAiB,cAAW,GACjD,SAAAP,EAAO,IAAA,CACV,EAED,CAACV,GAAce,MAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,iBAAmB,WAAO,KAAA,CAAM,CAAA,CAAA,EAxBnEP,EAAO,KAAA,CA2BlB,CAAC,CAAA,CAAA,CAGP,EAEAU,EAA6BC,EAAAA,KACbC,EAAAA,MAAM3B,EAAkB,kBAAkB,CAC1D"}
|