@handijit/ui 0.0.0-stage → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +786 -2
- package/build/base.css +1 -0
- package/build/charts.cjs +2 -0
- package/build/charts.cjs.map +1 -0
- package/build/charts.css +1 -0
- package/build/charts.js +1866 -0
- package/build/charts.js.map +1 -0
- package/build/chat.cjs +4 -0
- package/build/chat.cjs.map +1 -0
- package/build/chat.css +1 -0
- package/build/chat.js +1121 -0
- package/build/chat.js.map +1 -0
- package/build/components/Accordion/index.cjs +2 -0
- package/build/components/Accordion/index.cjs.map +1 -0
- package/build/components/Accordion/index.d.ts +29 -0
- package/build/components/Accordion/index.js +42 -0
- package/build/components/Accordion/index.js.map +1 -0
- package/build/components/Accordion/style.css +1 -0
- package/build/components/Alert/index.cjs +2 -0
- package/build/components/Alert/index.cjs.map +1 -0
- package/build/components/Alert/index.d.ts +15 -0
- package/build/components/Alert/index.js +30 -0
- package/build/components/Alert/index.js.map +1 -0
- package/build/components/Alert/style.css +1 -0
- package/build/components/Avatar/index.cjs +2 -0
- package/build/components/Avatar/index.cjs.map +1 -0
- package/build/components/Avatar/index.d.ts +26 -0
- package/build/components/Avatar/index.js +57 -0
- package/build/components/Avatar/index.js.map +1 -0
- package/build/components/Avatar/style.css +1 -0
- package/build/components/Badge/index.cjs +2 -0
- package/build/components/Badge/index.cjs.map +1 -0
- package/build/components/Badge/index.d.ts +21 -0
- package/build/components/Badge/index.js +26 -0
- package/build/components/Badge/index.js.map +1 -0
- package/build/components/Badge/style.css +1 -0
- package/build/components/BottomSheet/index.cjs +2 -0
- package/build/components/BottomSheet/index.cjs.map +1 -0
- package/build/components/BottomSheet/index.d.ts +21 -0
- package/build/components/BottomSheet/index.js +85 -0
- package/build/components/BottomSheet/index.js.map +1 -0
- package/build/components/BottomSheet/style.css +1 -0
- package/build/components/Breadcrumb/index.cjs +2 -0
- package/build/components/Breadcrumb/index.cjs.map +1 -0
- package/build/components/Breadcrumb/index.d.ts +20 -0
- package/build/components/Breadcrumb/index.js +31 -0
- package/build/components/Breadcrumb/index.js.map +1 -0
- package/build/components/Breadcrumb/style.css +1 -0
- package/build/components/Button/index.cjs +2 -0
- package/build/components/Button/index.cjs.map +1 -0
- package/build/components/Button/index.d.ts +32 -0
- package/build/components/Button/index.js +88 -0
- package/build/components/Button/index.js.map +1 -0
- package/build/components/Button/style.css +1 -0
- package/build/components/Card/index.cjs +2 -0
- package/build/components/Card/index.cjs.map +1 -0
- package/build/components/Card/index.d.ts +51 -0
- package/build/components/Card/index.js +58 -0
- package/build/components/Card/index.js.map +1 -0
- package/build/components/Card/style.css +1 -0
- package/build/components/Carousel/index.cjs +2 -0
- package/build/components/Carousel/index.cjs.map +1 -0
- package/build/components/Carousel/index.d.ts +24 -0
- package/build/components/Carousel/index.js +111 -0
- package/build/components/Carousel/index.js.map +1 -0
- package/build/components/Carousel/style.css +1 -0
- package/build/components/Checkbox/index.cjs +2 -0
- package/build/components/Checkbox/index.cjs.map +1 -0
- package/build/components/Checkbox/index.d.ts +10 -0
- package/build/components/Checkbox/index.js +33 -0
- package/build/components/Checkbox/index.js.map +1 -0
- package/build/components/Checkbox/style.css +1 -0
- package/build/components/Chip/index.cjs +2 -0
- package/build/components/Chip/index.cjs.map +1 -0
- package/build/components/Chip/index.d.ts +27 -0
- package/build/components/Chip/index.js +67 -0
- package/build/components/Chip/index.js.map +1 -0
- package/build/components/Chip/style.css +1 -0
- package/build/components/ChipGroup/index.cjs +2 -0
- package/build/components/ChipGroup/index.cjs.map +1 -0
- package/build/components/ChipGroup/index.d.ts +34 -0
- package/build/components/ChipGroup/index.js +64 -0
- package/build/components/ChipGroup/index.js.map +1 -0
- package/build/components/ChipGroup/style.css +1 -0
- package/build/components/CodeBadge/index.cjs +2 -0
- package/build/components/CodeBadge/index.cjs.map +1 -0
- package/build/components/CodeBadge/index.d.ts +36 -0
- package/build/components/CodeBadge/index.js +62 -0
- package/build/components/CodeBadge/index.js.map +1 -0
- package/build/components/CodeBadge/style.css +1 -0
- package/build/components/Combobox/index.cjs +2 -0
- package/build/components/Combobox/index.cjs.map +1 -0
- package/build/components/Combobox/index.d.ts +6 -0
- package/build/components/Combobox/index.js +302 -0
- package/build/components/Combobox/index.js.map +1 -0
- package/build/components/Combobox/style.css +1 -0
- package/build/components/CommandPalette/index.cjs +2 -0
- package/build/components/CommandPalette/index.cjs.map +1 -0
- package/build/components/CommandPalette/index.d.ts +37 -0
- package/build/components/CommandPalette/index.js +181 -0
- package/build/components/CommandPalette/index.js.map +1 -0
- package/build/components/CommandPalette/style.css +1 -0
- package/build/components/ConfirmDialog/index.cjs +2 -0
- package/build/components/ConfirmDialog/index.cjs.map +1 -0
- package/build/components/ConfirmDialog/index.d.ts +34 -0
- package/build/components/ConfirmDialog/index.js +85 -0
- package/build/components/ConfirmDialog/index.js.map +1 -0
- package/build/components/CopyField/index.cjs +2 -0
- package/build/components/CopyField/index.cjs.map +1 -0
- package/build/components/CopyField/index.d.ts +20 -0
- package/build/components/CopyField/index.js +44 -0
- package/build/components/CopyField/index.js.map +1 -0
- package/build/components/CopyField/style.css +1 -0
- package/build/components/DataTable/index.cjs +2 -0
- package/build/components/DataTable/index.cjs.map +1 -0
- package/build/components/DataTable/index.d.ts +60 -0
- package/build/components/DataTable/index.js +109 -0
- package/build/components/DataTable/index.js.map +1 -0
- package/build/components/DataTable/style.css +1 -0
- package/build/components/DateField/index.cjs +2 -0
- package/build/components/DateField/index.cjs.map +1 -0
- package/build/components/DateField/index.d.ts +44 -0
- package/build/components/DateField/index.js +79 -0
- package/build/components/DateField/index.js.map +1 -0
- package/build/components/DateField/style.css +1 -0
- package/build/components/Directory/index.cjs +2 -0
- package/build/components/Directory/index.cjs.map +1 -0
- package/build/components/Directory/index.d.ts +51 -0
- package/build/components/Directory/index.js +46 -0
- package/build/components/Directory/index.js.map +1 -0
- package/build/components/Directory/style.css +1 -0
- package/build/components/Disclosure/index.cjs +2 -0
- package/build/components/Disclosure/index.cjs.map +1 -0
- package/build/components/Disclosure/index.d.ts +34 -0
- package/build/components/Disclosure/index.js +64 -0
- package/build/components/Disclosure/index.js.map +1 -0
- package/build/components/Disclosure/style.css +1 -0
- package/build/components/Divider/index.cjs +2 -0
- package/build/components/Divider/index.cjs.map +1 -0
- package/build/components/Divider/index.d.ts +10 -0
- package/build/components/Divider/index.js +24 -0
- package/build/components/Divider/index.js.map +1 -0
- package/build/components/Divider/style.css +1 -0
- package/build/components/Drawer/index.cjs +2 -0
- package/build/components/Drawer/index.cjs.map +1 -0
- package/build/components/Drawer/index.d.ts +22 -0
- package/build/components/Drawer/index.js +88 -0
- package/build/components/Drawer/index.js.map +1 -0
- package/build/components/Drawer/style.css +1 -0
- package/build/components/EmptyState/index.cjs +2 -0
- package/build/components/EmptyState/index.cjs.map +1 -0
- package/build/components/EmptyState/index.d.ts +19 -0
- package/build/components/EmptyState/index.js +35 -0
- package/build/components/EmptyState/index.js.map +1 -0
- package/build/components/EmptyState/style.css +1 -0
- package/build/components/Field/index.cjs +2 -0
- package/build/components/Field/index.cjs.map +1 -0
- package/build/components/Field/index.d.ts +31 -0
- package/build/components/Field/index.js +52 -0
- package/build/components/Field/index.js.map +1 -0
- package/build/components/Field/style.css +1 -0
- package/build/components/FileUpload/index.cjs +2 -0
- package/build/components/FileUpload/index.cjs.map +1 -0
- package/build/components/FileUpload/index.d.ts +42 -0
- package/build/components/FileUpload/index.js +145 -0
- package/build/components/FileUpload/index.js.map +1 -0
- package/build/components/FileUpload/style.css +1 -0
- package/build/components/FilterBar/index.cjs +2 -0
- package/build/components/FilterBar/index.cjs.map +1 -0
- package/build/components/FilterBar/index.d.ts +28 -0
- package/build/components/FilterBar/index.js +35 -0
- package/build/components/FilterBar/index.js.map +1 -0
- package/build/components/FilterBar/style.css +1 -0
- package/build/components/IconButton/index.cjs +2 -0
- package/build/components/IconButton/index.cjs.map +1 -0
- package/build/components/IconButton/index.d.ts +22 -0
- package/build/components/IconButton/index.js +61 -0
- package/build/components/IconButton/index.js.map +1 -0
- package/build/components/IconButton/style.css +1 -0
- package/build/components/Input/index.cjs +2 -0
- package/build/components/Input/index.cjs.map +1 -0
- package/build/components/Input/index.d.ts +15 -0
- package/build/components/Input/index.js +52 -0
- package/build/components/Input/index.js.map +1 -0
- package/build/components/Input/style.css +1 -0
- package/build/components/Kbd/index.cjs +2 -0
- package/build/components/Kbd/index.cjs.map +1 -0
- package/build/components/Kbd/index.d.ts +12 -0
- package/build/components/Kbd/index.js +13 -0
- package/build/components/Kbd/index.js.map +1 -0
- package/build/components/Kbd/style.css +1 -0
- package/build/components/Link/index.cjs +2 -0
- package/build/components/Link/index.cjs.map +1 -0
- package/build/components/Link/index.d.ts +5 -0
- package/build/components/Link/index.js +11 -0
- package/build/components/Link/index.js.map +1 -0
- package/build/components/Menu/index.cjs +2 -0
- package/build/components/Menu/index.cjs.map +1 -0
- package/build/components/Menu/index.d.ts +46 -0
- package/build/components/Menu/index.js +241 -0
- package/build/components/Menu/index.js.map +1 -0
- package/build/components/Menu/style.css +1 -0
- package/build/components/Modal/index.cjs +2 -0
- package/build/components/Modal/index.cjs.map +1 -0
- package/build/components/Modal/index.d.ts +28 -0
- package/build/components/Modal/index.js +92 -0
- package/build/components/Modal/index.js.map +1 -0
- package/build/components/Modal/style.css +1 -0
- package/build/components/PageHeader/index.cjs +2 -0
- package/build/components/PageHeader/index.cjs.map +1 -0
- package/build/components/PageHeader/index.d.ts +24 -0
- package/build/components/PageHeader/index.js +34 -0
- package/build/components/PageHeader/index.js.map +1 -0
- package/build/components/PageHeader/style.css +1 -0
- package/build/components/Pagination/index.cjs +2 -0
- package/build/components/Pagination/index.cjs.map +1 -0
- package/build/components/Pagination/index.d.ts +39 -0
- package/build/components/Pagination/index.js +128 -0
- package/build/components/Pagination/index.js.map +1 -0
- package/build/components/Pagination/style.css +1 -0
- package/build/components/Panel/index.cjs +2 -0
- package/build/components/Panel/index.cjs.map +1 -0
- package/build/components/Panel/index.d.ts +43 -0
- package/build/components/Panel/index.js +55 -0
- package/build/components/Panel/index.js.map +1 -0
- package/build/components/Panel/style.css +1 -0
- package/build/components/PasswordInput/index.cjs +2 -0
- package/build/components/PasswordInput/index.cjs.map +1 -0
- package/build/components/PasswordInput/index.d.ts +14 -0
- package/build/components/PasswordInput/index.js +40 -0
- package/build/components/PasswordInput/index.js.map +1 -0
- package/build/components/PasswordInput/style.css +1 -0
- package/build/components/Popover/index.cjs +2 -0
- package/build/components/Popover/index.cjs.map +1 -0
- package/build/components/Popover/index.d.ts +20 -0
- package/build/components/Popover/index.js +91 -0
- package/build/components/Popover/index.js.map +1 -0
- package/build/components/Popover/style.css +1 -0
- package/build/components/Price/index.cjs +2 -0
- package/build/components/Price/index.cjs.map +1 -0
- package/build/components/Price/index.d.ts +22 -0
- package/build/components/Price/index.js +46 -0
- package/build/components/Price/index.js.map +1 -0
- package/build/components/Price/style.css +1 -0
- package/build/components/Progress/index.cjs +2 -0
- package/build/components/Progress/index.cjs.map +1 -0
- package/build/components/Progress/index.d.ts +49 -0
- package/build/components/Progress/index.js +120 -0
- package/build/components/Progress/index.js.map +1 -0
- package/build/components/Progress/style.css +1 -0
- package/build/components/PromptDialog/index.cjs +2 -0
- package/build/components/PromptDialog/index.cjs.map +1 -0
- package/build/components/PromptDialog/index.d.ts +36 -0
- package/build/components/PromptDialog/index.js +119 -0
- package/build/components/PromptDialog/index.js.map +1 -0
- package/build/components/PromptDialog/style.css +1 -0
- package/build/components/QuantityStepper/index.cjs +2 -0
- package/build/components/QuantityStepper/index.cjs.map +1 -0
- package/build/components/QuantityStepper/index.d.ts +21 -0
- package/build/components/QuantityStepper/index.js +106 -0
- package/build/components/QuantityStepper/index.js.map +1 -0
- package/build/components/QuantityStepper/style.css +1 -0
- package/build/components/Radio/index.cjs +2 -0
- package/build/components/Radio/index.cjs.map +1 -0
- package/build/components/Radio/index.d.ts +12 -0
- package/build/components/Radio/index.js +35 -0
- package/build/components/Radio/index.js.map +1 -0
- package/build/components/Radio/style.css +1 -0
- package/build/components/RadioCard/index.cjs +2 -0
- package/build/components/RadioCard/index.cjs.map +1 -0
- package/build/components/RadioCard/index.d.ts +16 -0
- package/build/components/RadioCard/index.js +48 -0
- package/build/components/RadioCard/index.js.map +1 -0
- package/build/components/RadioCard/style.css +1 -0
- package/build/components/RangeSlider/index.cjs +2 -0
- package/build/components/RangeSlider/index.cjs.map +1 -0
- package/build/components/RangeSlider/index.d.ts +26 -0
- package/build/components/RangeSlider/index.js +102 -0
- package/build/components/RangeSlider/index.js.map +1 -0
- package/build/components/RangeSlider/style.css +1 -0
- package/build/components/Rating/index.cjs +2 -0
- package/build/components/Rating/index.cjs.map +1 -0
- package/build/components/Rating/index.d.ts +16 -0
- package/build/components/Rating/index.js +29 -0
- package/build/components/Rating/index.js.map +1 -0
- package/build/components/Rating/style.css +1 -0
- package/build/components/RatingInput/index.cjs +2 -0
- package/build/components/RatingInput/index.cjs.map +1 -0
- package/build/components/RatingInput/index.d.ts +21 -0
- package/build/components/RatingInput/index.js +75 -0
- package/build/components/RatingInput/index.js.map +1 -0
- package/build/components/RatingInput/style.css +1 -0
- package/build/components/ScrollArea/index.cjs +2 -0
- package/build/components/ScrollArea/index.cjs.map +1 -0
- package/build/components/ScrollArea/index.d.ts +23 -0
- package/build/components/ScrollArea/index.js +65 -0
- package/build/components/ScrollArea/index.js.map +1 -0
- package/build/components/ScrollArea/style.css +1 -0
- package/build/components/SectionHeader/index.cjs +2 -0
- package/build/components/SectionHeader/index.cjs.map +1 -0
- package/build/components/SectionHeader/index.d.ts +17 -0
- package/build/components/SectionHeader/index.js +25 -0
- package/build/components/SectionHeader/index.js.map +1 -0
- package/build/components/SectionHeader/style.css +1 -0
- package/build/components/SegmentedControl/index.cjs +2 -0
- package/build/components/SegmentedControl/index.cjs.map +1 -0
- package/build/components/SegmentedControl/index.d.ts +24 -0
- package/build/components/SegmentedControl/index.js +69 -0
- package/build/components/SegmentedControl/index.js.map +1 -0
- package/build/components/SegmentedControl/style.css +1 -0
- package/build/components/Select/index.cjs +2 -0
- package/build/components/Select/index.cjs.map +1 -0
- package/build/components/Select/index.d.ts +39 -0
- package/build/components/Select/index.js +179 -0
- package/build/components/Select/index.js.map +1 -0
- package/build/components/Select/style.css +1 -0
- package/build/components/Skeleton/index.cjs +2 -0
- package/build/components/Skeleton/index.cjs.map +1 -0
- package/build/components/Skeleton/index.d.ts +25 -0
- package/build/components/Skeleton/index.js +50 -0
- package/build/components/Skeleton/index.js.map +1 -0
- package/build/components/Skeleton/style.css +1 -0
- package/build/components/Spinner/index.cjs +2 -0
- package/build/components/Spinner/index.cjs.map +1 -0
- package/build/components/Spinner/index.d.ts +11 -0
- package/build/components/Spinner/index.js +15 -0
- package/build/components/Spinner/index.js.map +1 -0
- package/build/components/Spinner/style.css +1 -0
- package/build/components/Stat/index.cjs +2 -0
- package/build/components/Stat/index.cjs.map +1 -0
- package/build/components/Stat/index.d.ts +34 -0
- package/build/components/Stat/index.js +72 -0
- package/build/components/Stat/index.js.map +1 -0
- package/build/components/Stat/style.css +1 -0
- package/build/components/StatusDot/index.cjs +2 -0
- package/build/components/StatusDot/index.cjs.map +1 -0
- package/build/components/StatusDot/index.d.ts +23 -0
- package/build/components/StatusDot/index.js +23 -0
- package/build/components/StatusDot/index.js.map +1 -0
- package/build/components/StatusDot/style.css +1 -0
- package/build/components/Steps/index.cjs +2 -0
- package/build/components/Steps/index.cjs.map +1 -0
- package/build/components/Steps/index.d.ts +23 -0
- package/build/components/Steps/index.js +69 -0
- package/build/components/Steps/index.js.map +1 -0
- package/build/components/Steps/style.css +1 -0
- package/build/components/SummaryCard/index.cjs +2 -0
- package/build/components/SummaryCard/index.cjs.map +1 -0
- package/build/components/SummaryCard/index.d.ts +24 -0
- package/build/components/SummaryCard/index.js +33 -0
- package/build/components/SummaryCard/index.js.map +1 -0
- package/build/components/SummaryCard/style.css +1 -0
- package/build/components/Switch/index.cjs +2 -0
- package/build/components/Switch/index.cjs.map +1 -0
- package/build/components/Switch/index.d.ts +16 -0
- package/build/components/Switch/index.js +42 -0
- package/build/components/Switch/index.js.map +1 -0
- package/build/components/Switch/style.css +1 -0
- package/build/components/Table/index.cjs +2 -0
- package/build/components/Table/index.cjs.map +1 -0
- package/build/components/Table/index.d.ts +28 -0
- package/build/components/Table/index.js +58 -0
- package/build/components/Table/index.js.map +1 -0
- package/build/components/Table/style.css +1 -0
- package/build/components/TableCheckbox/index.cjs +2 -0
- package/build/components/TableCheckbox/index.cjs.map +1 -0
- package/build/components/TableCheckbox/index.d.ts +15 -0
- package/build/components/TableCheckbox/index.js +31 -0
- package/build/components/TableCheckbox/index.js.map +1 -0
- package/build/components/TableCheckbox/style.css +1 -0
- package/build/components/Tabs/index.cjs +2 -0
- package/build/components/Tabs/index.cjs.map +1 -0
- package/build/components/Tabs/index.d.ts +27 -0
- package/build/components/Tabs/index.js +102 -0
- package/build/components/Tabs/index.js.map +1 -0
- package/build/components/Tabs/style.css +1 -0
- package/build/components/TagInput/index.cjs +2 -0
- package/build/components/TagInput/index.cjs.map +1 -0
- package/build/components/TagInput/index.d.ts +25 -0
- package/build/components/TagInput/index.js +124 -0
- package/build/components/TagInput/index.js.map +1 -0
- package/build/components/TagInput/style.css +1 -0
- package/build/components/TextLink/index.cjs +2 -0
- package/build/components/TextLink/index.cjs.map +1 -0
- package/build/components/TextLink/index.d.ts +16 -0
- package/build/components/TextLink/index.js +32 -0
- package/build/components/TextLink/index.js.map +1 -0
- package/build/components/TextLink/style.css +1 -0
- package/build/components/Textarea/index.cjs +2 -0
- package/build/components/Textarea/index.cjs.map +1 -0
- package/build/components/Textarea/index.d.ts +20 -0
- package/build/components/Textarea/index.js +68 -0
- package/build/components/Textarea/index.js.map +1 -0
- package/build/components/Textarea/style.css +1 -0
- package/build/components/Tile/index.cjs +2 -0
- package/build/components/Tile/index.cjs.map +1 -0
- package/build/components/Tile/index.d.ts +19 -0
- package/build/components/Tile/index.js +24 -0
- package/build/components/Tile/index.js.map +1 -0
- package/build/components/Tile/style.css +1 -0
- package/build/components/Timeline/index.cjs +2 -0
- package/build/components/Timeline/index.cjs.map +1 -0
- package/build/components/Timeline/index.d.ts +24 -0
- package/build/components/Timeline/index.js +56 -0
- package/build/components/Timeline/index.js.map +1 -0
- package/build/components/Timeline/style.css +1 -0
- package/build/components/Toast/index.cjs +2 -0
- package/build/components/Toast/index.cjs.map +1 -0
- package/build/components/Toast/index.d.ts +43 -0
- package/build/components/Toast/index.js +136 -0
- package/build/components/Toast/index.js.map +1 -0
- package/build/components/Toast/style.css +1 -0
- package/build/components/ToastPortal/index.cjs +2 -0
- package/build/components/ToastPortal/index.cjs.map +1 -0
- package/build/components/ToastPortal/index.d.ts +8 -0
- package/build/components/ToastPortal/index.js +15 -0
- package/build/components/ToastPortal/index.js.map +1 -0
- package/build/components/Tooltip/index.cjs +2 -0
- package/build/components/Tooltip/index.cjs.map +1 -0
- package/build/components/Tooltip/index.d.ts +23 -0
- package/build/components/Tooltip/index.js +116 -0
- package/build/components/Tooltip/index.js.map +1 -0
- package/build/components/Tooltip/style.css +1 -0
- package/build/constants/breakpoint.constants.cjs +2 -0
- package/build/constants/breakpoint.constants.cjs.map +1 -0
- package/build/constants/breakpoint.constants.d.ts +13 -0
- package/build/constants/breakpoint.constants.js +11 -0
- package/build/constants/breakpoint.constants.js.map +1 -0
- package/build/constants/combobox.constants.cjs +2 -0
- package/build/constants/combobox.constants.cjs.map +1 -0
- package/build/constants/combobox.constants.d.ts +11 -0
- package/build/constants/combobox.constants.js +7 -0
- package/build/constants/combobox.constants.js.map +1 -0
- package/build/constants/scroll.constants.cjs +2 -0
- package/build/constants/scroll.constants.cjs.map +1 -0
- package/build/constants/scroll.constants.d.ts +7 -0
- package/build/constants/scroll.constants.js +5 -0
- package/build/constants/scroll.constants.js.map +1 -0
- package/build/enums/ui-size.enum.cjs +2 -0
- package/build/enums/ui-size.enum.cjs.map +1 -0
- package/build/enums/ui-size.enum.d.ts +12 -0
- package/build/enums/ui-size.enum.js +5 -0
- package/build/enums/ui-size.enum.js.map +1 -0
- package/build/enums/ui-variant.enum.cjs +2 -0
- package/build/enums/ui-variant.enum.cjs.map +1 -0
- package/build/enums/ui-variant.enum.d.ts +20 -0
- package/build/enums/ui-variant.enum.js +5 -0
- package/build/enums/ui-variant.enum.js.map +1 -0
- package/build/helpers/class-name.helper.cjs +2 -0
- package/build/helpers/class-name.helper.cjs.map +1 -0
- package/build/helpers/class-name.helper.d.ts +3 -0
- package/build/helpers/class-name.helper.js +10 -0
- package/build/helpers/class-name.helper.js.map +1 -0
- package/build/helpers/component.helper.cjs +2 -0
- package/build/helpers/component.helper.cjs.map +1 -0
- package/build/helpers/component.helper.d.ts +13 -0
- package/build/helpers/component.helper.js +5 -0
- package/build/helpers/component.helper.js.map +1 -0
- package/build/helpers/focus.helper.cjs +2 -0
- package/build/helpers/focus.helper.cjs.map +1 -0
- package/build/helpers/focus.helper.d.ts +42 -0
- package/build/helpers/focus.helper.js +65 -0
- package/build/helpers/focus.helper.js.map +1 -0
- package/build/helpers/label.helper.cjs +2 -0
- package/build/helpers/label.helper.cjs.map +1 -0
- package/build/helpers/label.helper.d.ts +11 -0
- package/build/helpers/label.helper.js +11 -0
- package/build/helpers/label.helper.js.map +1 -0
- package/build/helpers/portal.helper.cjs +2 -0
- package/build/helpers/portal.helper.cjs.map +1 -0
- package/build/helpers/portal.helper.d.ts +28 -0
- package/build/helpers/portal.helper.js +36 -0
- package/build/helpers/portal.helper.js.map +1 -0
- package/build/helpers/scroll.helper.cjs +2 -0
- package/build/helpers/scroll.helper.cjs.map +1 -0
- package/build/helpers/scroll.helper.d.ts +8 -0
- package/build/helpers/scroll.helper.js +11 -0
- package/build/helpers/scroll.helper.js.map +1 -0
- package/build/helpers/text.helper.cjs +2 -0
- package/build/helpers/text.helper.cjs.map +1 -0
- package/build/helpers/text.helper.d.ts +5 -0
- package/build/helpers/text.helper.js +6 -0
- package/build/helpers/text.helper.js.map +1 -0
- package/build/helpers/theme.helper.cjs +2 -0
- package/build/helpers/theme.helper.cjs.map +1 -0
- package/build/helpers/theme.helper.d.ts +18 -0
- package/build/helpers/theme.helper.js +37 -0
- package/build/helpers/theme.helper.js.map +1 -0
- package/build/hooks/useAnnounce.cjs +2 -0
- package/build/hooks/useAnnounce.cjs.map +1 -0
- package/build/hooks/useAnnounce.d.ts +4 -0
- package/build/hooks/useAnnounce.js +23 -0
- package/build/hooks/useAnnounce.js.map +1 -0
- package/build/hooks/useAsyncSearch.cjs +2 -0
- package/build/hooks/useAsyncSearch.cjs.map +1 -0
- package/build/hooks/useAsyncSearch.d.ts +11 -0
- package/build/hooks/useAsyncSearch.js +17 -0
- package/build/hooks/useAsyncSearch.js.map +1 -0
- package/build/hooks/useCopyFeedback.cjs +2 -0
- package/build/hooks/useCopyFeedback.cjs.map +1 -0
- package/build/hooks/useCopyFeedback.d.ts +10 -0
- package/build/hooks/useCopyFeedback.js +25 -0
- package/build/hooks/useCopyFeedback.js.map +1 -0
- package/build/hooks/useDismissOnEscape.cjs +2 -0
- package/build/hooks/useDismissOnEscape.cjs.map +1 -0
- package/build/hooks/useDismissOnEscape.d.ts +12 -0
- package/build/hooks/useDismissOnEscape.js +18 -0
- package/build/hooks/useDismissOnEscape.js.map +1 -0
- package/build/hooks/useListboxNavigation.cjs +2 -0
- package/build/hooks/useListboxNavigation.cjs.map +1 -0
- package/build/hooks/useListboxNavigation.d.ts +7 -0
- package/build/hooks/useListboxNavigation.js +53 -0
- package/build/hooks/useListboxNavigation.js.map +1 -0
- package/build/hooks/usePortalSurface.cjs +2 -0
- package/build/hooks/usePortalSurface.cjs.map +1 -0
- package/build/hooks/usePortalSurface.d.ts +25 -0
- package/build/hooks/usePortalSurface.js +19 -0
- package/build/hooks/usePortalSurface.js.map +1 -0
- package/build/hooks/usePositioning.cjs +2 -0
- package/build/hooks/usePositioning.cjs.map +1 -0
- package/build/hooks/usePositioning.d.ts +13 -0
- package/build/hooks/usePositioning.js +74 -0
- package/build/hooks/usePositioning.js.map +1 -0
- package/build/hooks/useScrollLock.cjs +2 -0
- package/build/hooks/useScrollLock.cjs.map +1 -0
- package/build/hooks/useScrollLock.d.ts +2 -0
- package/build/hooks/useScrollLock.js +34 -0
- package/build/hooks/useScrollLock.js.map +1 -0
- package/build/hooks/useSheetViewport.cjs +2 -0
- package/build/hooks/useSheetViewport.cjs.map +1 -0
- package/build/hooks/useSheetViewport.d.ts +6 -0
- package/build/hooks/useSheetViewport.js +29 -0
- package/build/hooks/useSheetViewport.js.map +1 -0
- package/build/hooks/useStickToBottom.cjs +2 -0
- package/build/hooks/useStickToBottom.cjs.map +1 -0
- package/build/hooks/useStickToBottom.d.ts +12 -0
- package/build/hooks/useStickToBottom.js +39 -0
- package/build/hooks/useStickToBottom.js.map +1 -0
- package/build/hooks/useUiTheme.cjs +2 -0
- package/build/hooks/useUiTheme.cjs.map +1 -0
- package/build/hooks/useUiTheme.d.ts +10 -0
- package/build/hooks/useUiTheme.js +42 -0
- package/build/hooks/useUiTheme.js.map +1 -0
- package/build/hooks/useUiTokens.cjs +2 -0
- package/build/hooks/useUiTokens.cjs.map +1 -0
- package/build/hooks/useUiTokens.d.ts +11 -0
- package/build/hooks/useUiTokens.js +36 -0
- package/build/hooks/useUiTokens.js.map +1 -0
- package/build/hooks/useVirtualList.cjs +2 -0
- package/build/hooks/useVirtualList.cjs.map +1 -0
- package/build/hooks/useVirtualList.d.ts +13 -0
- package/build/hooks/useVirtualList.js +41 -0
- package/build/hooks/useVirtualList.js.map +1 -0
- package/build/index.cjs +2 -0
- package/build/index.cjs.map +1 -0
- package/build/index.d.ts +93 -0
- package/build/index.js +199 -0
- package/build/index.js.map +1 -0
- package/build/scss/_index.scss +7 -0
- package/build/scss/_mixins.scss +828 -0
- package/build/scss/_variables.scss +243 -0
- package/build/styles/base.d.ts +0 -0
- package/build/styles.css +133 -0
- package/build/theme/UiProvider.cjs +2 -0
- package/build/theme/UiProvider.cjs.map +1 -0
- package/build/theme/UiProvider.d.ts +23 -0
- package/build/theme/UiProvider.js +12 -0
- package/build/theme/UiProvider.js.map +1 -0
- package/build/theme/UiThemeScript.cjs +2 -0
- package/build/theme/UiThemeScript.cjs.map +1 -0
- package/build/theme/UiThemeScript.d.ts +22 -0
- package/build/theme/UiThemeScript.js +8 -0
- package/build/theme/UiThemeScript.js.map +1 -0
- package/build/theme/context.cjs +2 -0
- package/build/theme/context.cjs.map +1 -0
- package/build/theme/context.d.ts +5 -0
- package/build/theme/context.js +8 -0
- package/build/theme/context.js.map +1 -0
- package/build/types/charts/AreaChart/index.d.ts +14 -0
- package/build/types/charts/BarChart/index.d.ts +16 -0
- package/build/types/charts/BoxPlot/index.d.ts +43 -0
- package/build/types/charts/ComposedChart/index.d.ts +16 -0
- package/build/types/charts/Heatmap/index.d.ts +30 -0
- package/build/types/charts/Histogram/index.d.ts +29 -0
- package/build/types/charts/LineChart/index.d.ts +14 -0
- package/build/types/charts/PieChart/index.d.ts +36 -0
- package/build/types/charts/RadarChart/index.d.ts +40 -0
- package/build/types/charts/ScatterPlot/index.d.ts +41 -0
- package/build/types/charts/core/CartesianChart.d.ts +43 -0
- package/build/types/charts/core/ChartFrame.d.ts +55 -0
- package/build/types/charts/core/axes.d.ts +37 -0
- package/build/types/charts/core/cartesian.d.ts +80 -0
- package/build/types/charts/core/format.d.ts +19 -0
- package/build/types/charts/core/margins.d.ts +9 -0
- package/build/types/charts/core/palette.d.ts +11 -0
- package/build/types/charts/core/path.d.ts +24 -0
- package/build/types/charts/core/scale.d.ts +40 -0
- package/build/types/charts/core/series.d.ts +11 -0
- package/build/types/charts/core/spatial.d.ts +12 -0
- package/build/types/charts/core/stats.d.ts +34 -0
- package/build/types/charts/core/types.d.ts +31 -0
- package/build/types/charts/core/useChartWidth.d.ts +7 -0
- package/build/types/charts/index.d.ts +21 -0
- package/build/types/chat/ActionList/index.d.ts +46 -0
- package/build/types/chat/AppBar/index.d.ts +21 -0
- package/build/types/chat/ChatMessage/index.d.ts +24 -0
- package/build/types/chat/ChatThread/index.d.ts +24 -0
- package/build/types/chat/Citation/index.d.ts +15 -0
- package/build/types/chat/CodeBlock/format.d.ts +7 -0
- package/build/types/chat/CodeBlock/grammars.d.ts +44 -0
- package/build/types/chat/CodeBlock/highlight.d.ts +22 -0
- package/build/types/chat/CodeBlock/index.d.ts +33 -0
- package/build/types/chat/DescriptionList/index.d.ts +16 -0
- package/build/types/chat/Legend/index.d.ts +21 -0
- package/build/types/chat/MessageActions/index.d.ts +21 -0
- package/build/types/chat/PromptInput/index.d.ts +47 -0
- package/build/types/chat/PromptSuggestions/index.d.ts +25 -0
- package/build/types/chat/Prose/index.d.ts +15 -0
- package/build/types/chat/ReasoningBlock/index.d.ts +24 -0
- package/build/types/chat/ReasoningText/index.d.ts +14 -0
- package/build/types/chat/SegmentBar/index.d.ts +46 -0
- package/build/types/chat/SourceList/index.d.ts +25 -0
- package/build/types/chat/TerminalOutput/index.d.ts +25 -0
- package/build/types/chat/ToolCall/index.d.ts +41 -0
- package/build/types/chat/index.d.ts +26 -0
- package/build/types/combobox.type.d.ts +49 -0
- package/build/types/common-element-props.type.d.ts +8 -0
- package/build/types/helpers/class-name.helper.d.ts +3 -0
- package/build/types/helpers/component.helper.d.ts +13 -0
- package/build/types/helpers/label.helper.d.ts +12 -0
- package/build/types/hook.type.d.ts +36 -0
- package/build/types/link.type.d.ts +14 -0
- package/build/types/positioning.type.d.ts +38 -0
- package/build/types/theme.type.d.ts +181 -0
- package/build/types/types/common-element-props.type.d.ts +8 -0
- package/build/types/types/link.type.d.ts +14 -0
- package/build/types/types/theme.type.d.ts +181 -0
- package/package.json +487 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-modal-3IDi9{border:none;padding:0;background:none;color:var(--hd-text);max-width:min(92vw,560px);width:100%;max-height:90dvh}.ui-modal--sm-A7WsS{max-width:min(92vw,440px)}.ui-modal--lg-z99Em{max-width:min(92vw,880px)}.ui-modal--xl-g3d6F{max-width:min(94vw,1040px)}.ui-modal-3IDi9{opacity:0;translate:0 6px;transition:opacity var(--hd-duration-fast) var(--hd-ease-standard),translate var(--hd-duration-fast) var(--hd-ease-standard),overlay var(--hd-duration-fast) allow-discrete,display var(--hd-duration-fast) allow-discrete}.ui-modal-3IDi9[open]{opacity:1;translate:0 0}@starting-style{.ui-modal-3IDi9[open]{opacity:0;translate:0 6px}}@media (prefers-reduced-motion: reduce){.ui-modal-3IDi9{transition:none}}.ui-modal-3IDi9::backdrop{opacity:0;transition:opacity var(--hd-duration-fast) var(--hd-ease-standard),overlay var(--hd-duration-fast) allow-discrete,display var(--hd-duration-fast) allow-discrete}.ui-modal-3IDi9[open]::backdrop{opacity:1}@starting-style{.ui-modal-3IDi9[open]::backdrop{opacity:0}}@media (prefers-reduced-motion: reduce){.ui-modal-3IDi9::backdrop{transition:none}}.ui-modal-3IDi9:focus-visible{outline:none}.ui-modal-3IDi9:focus-visible .ui-modal__panel--qLSz{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, -2px)}.ui-modal-3IDi9::backdrop{background-color:var(--hd-scrim);-webkit-backdrop-filter:blur(var(--ui-scrim-blur, 3px));backdrop-filter:blur(var(--ui-scrim-blur, 3px))}@media (max-width: 640px){.ui-modal-3IDi9,.ui-modal--sm-A7WsS,.ui-modal--lg-z99Em,.ui-modal--xl-g3d6F{max-width:none;width:100%;max-height:calc(92dvh - env(safe-area-inset-top,0px));margin:auto 0 0;margin-bottom:max(env(safe-area-inset-bottom,0px),var(--ui-sheet-inset-bottom, 0px))}.ui-modal-3IDi9:not([open]),.ui-modal-3IDi9[open]{opacity:0;translate:0 100%;transition:opacity var(--hd-duration-base) var(--hd-ease-standard),translate var(--hd-duration-base) var(--hd-ease-standard),overlay var(--hd-duration-base) allow-discrete,display var(--hd-duration-base) allow-discrete}.ui-modal-3IDi9:not([open])[open],.ui-modal-3IDi9[open][open]{opacity:1;translate:0 0}@starting-style{.ui-modal-3IDi9:not([open])[open],.ui-modal-3IDi9[open][open]{opacity:0;translate:0 100%}}}@media (max-width: 640px) and (prefers-reduced-motion: reduce){.ui-modal-3IDi9:not([open]),.ui-modal-3IDi9[open]{transition:none}}.ui-modal__panel--qLSz{display:flex;flex-direction:column;max-height:90dvh;background-color:var(--hd-bg-overlay);border:1px solid var(--hd-border);border-radius:var(--hd-radius-lg);box-shadow:var(--hd-shadow-3);overflow:hidden}@media (max-width: 640px){.ui-modal__panel--qLSz{max-height:92dvh;border-radius:var(--hd-radius-lg) var(--hd-radius-lg) 0 0;border-bottom:none}}.ui-modal__header-meWm6{display:flex;align-items:flex-start;gap:var(--hd-space-3);padding:var(--hd-space-4) var(--hd-space-5);border-bottom:1px solid var(--hd-border);flex-shrink:0}@media (max-width: 640px){.ui-modal__header-meWm6{padding:var(--hd-space-4);padding-left:max(var(--hd-space-4),env(safe-area-inset-left,0px));padding-right:max(var(--hd-space-4),env(safe-area-inset-right,0px))}}.ui-modal__icon-df2dd{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;border-radius:var(--hd-radius-sm);font-size:24px}.ui-modal__icon--neutral-QSL7c{background-color:var(--hd-bg-raised);border:1px solid var(--hd-border);color:var(--hd-text-2)}.ui-modal__icon--danger-6V90a{background-color:var(--hd-danger-bg);border:1px solid var(--hd-danger-line);color:var(--hd-danger-fg)}.ui-modal__icon--warning-a--FX{background-color:var(--hd-warning-bg);border:1px solid var(--hd-warning-line);color:var(--hd-warning-fg)}.ui-modal__icon--success-YWxZs{background-color:var(--hd-success-bg);border:1px solid var(--hd-success-line);color:var(--hd-success-fg)}.ui-modal__icon--info-WRLah{background-color:var(--hd-info-bg);border:1px solid var(--hd-info-line);color:var(--hd-info-fg)}.ui-modal__heading-PwDS8{display:flex;flex-direction:column;gap:var(--hd-space-1);flex:1;min-width:0;padding-top:2px}.ui-modal__title-80Sh6{font-family:var(--hd-font-display);font-size:var(--hd-type-h4-size);font-weight:var(--hd-type-h4-weight);font-stretch:var(--hd-type-h4-stretch);line-height:var(--hd-type-h4-line-height);letter-spacing:var(--hd-type-h4-letter-spacing);color:var(--hd-text);margin:0;text-wrap:balance}.ui-modal__description-fsCHI{font-size:var(--hd-type-small-size);line-height:var(--hd-type-body-line-height);color:var(--hd-text-2);margin:0;max-width:68ch}.ui-modal__close-vFPbw{flex-shrink:0;margin-top:-2px}.ui-modal__body-PDF12{padding:var(--hd-space-5);position:relative;overflow-y:auto;flex:1;scrollbar-width:thin;scrollbar-color:var(--hd-border-strong) transparent}.ui-modal__body-PDF12::-webkit-scrollbar{width:8px;height:8px}.ui-modal__body-PDF12::-webkit-scrollbar-track{background:transparent}.ui-modal__body-PDF12::-webkit-scrollbar-thumb{background-color:var(--hd-border-strong);border-radius:var(--hd-radius-pill);border:2px solid transparent;background-clip:content-box}.ui-modal__body-PDF12::-webkit-scrollbar-thumb:hover{background-color:var(--hd-text-3)}@media (max-width: 640px){.ui-modal__body-PDF12{padding:var(--hd-space-4);padding-left:max(var(--hd-space-4),env(safe-area-inset-left,0px));padding-right:max(var(--hd-space-4),env(safe-area-inset-right,0px))}.ui-modal__body-PDF12:last-child{padding-bottom:max(var(--hd-space-4),env(safe-area-inset-bottom,0px) - max(env(safe-area-inset-bottom,0px),var(--ui-sheet-inset-bottom, 0px)))}}.ui-modal__footer-CCCkx{display:flex;flex-wrap:wrap;align-items:center;gap:var(--hd-space-2);justify-content:flex-end;padding:var(--hd-space-4) var(--hd-space-5);border-top:1px solid var(--hd-border);background-color:var(--hd-bg-raised);flex-shrink:0}@media (max-width: 640px){.ui-modal__footer-CCCkx{padding:var(--hd-space-3) var(--hd-space-4);padding-left:max(var(--hd-space-4),env(safe-area-inset-left,0px));padding-right:max(var(--hd-space-4),env(safe-area-inset-right,0px));padding-bottom:max(var(--hd-space-3),env(safe-area-inset-bottom,0px) - max(env(safe-area-inset-bottom,0px),var(--ui-sheet-inset-bottom, 0px)));flex-direction:column-reverse}.ui-modal__footer-CCCkx>*{width:100%}}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),_=require("react"),m=require("../../helpers/class-name.helper.cjs"),a={default:{"header":"ui-header-yJwus","header__top":"ui-header__top-UK4si","header__breadcrumb":"ui-header__breadcrumb-A2j0i","header__text":"ui-header__text-HIo8U","header__eyebrow":"ui-header__eyebrow-dZ9Zc","header__titleRow":"ui-header__titleRow-KgDZj","header__title":"ui-header__title-s1giF","header__meta":"ui-header__meta-UxuaD","header__description":"ui-header__description-NXbbC","header__actions":"ui-header__actions-aShpt"}},o=({title:c,eyebrow:s,description:d,actions:l,breadcrumb:r,meta:t,children:i,as:h="h1",className:n,testId:u})=>e.jsxs("header",{className:m.cx(a.default.header,n),"data-testid":u,children:[r&&e.jsx("div",{className:a.default.header__breadcrumb,children:r}),e.jsxs("div",{className:a.default.header__top,children:[e.jsxs("div",{className:a.default.header__text,children:[s&&e.jsx("span",{className:a.default.header__eyebrow,children:s}),e.jsxs("div",{className:a.default.header__titleRow,children:[e.jsx(h,{className:a.default.header__title,children:c}),t&&e.jsx("span",{className:a.default.header__meta,children:t})]}),d&&e.jsx("p",{className:a.default.header__description,children:d})]}),l&&e.jsx("div",{className:a.default.header__actions,children:l})]}),i]}),x=_.memo(o);exports.default=x;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/PageHeader/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 /** Başlığın üstündeki küçük bağlam etiketi (\"HESABIM\", \"KATEGORİ\"). */\n eyebrow?: string;\n /** Bir cümlelik açıklama. 68ch ile sınırlı tutulur. */\n description?: ReactNode;\n /** Sağ tarafta duran eylemler. */\n actions?: ReactNode;\n /** Başlık satırının üstündeki kırıntı yolu. */\n breadcrumb?: ReactNode;\n /** Başlığın yanındaki sayaç (\"1.248 kayıt\"). */\n meta?: ReactNode;\n /** Başlık bloğunun altında duran ek içerik (filtre şeridi, sekmeler). */\n children?: ReactNode;\n /** `h1` sayfada bir kez bulunur; iç bölümler `h2` alır. */\n as?: 'h1' | 'h2';\n className?: string;\n testId?: string;\n};\n\n/** Sayfa başlığı — her ekranın aynı giriş bloğu. */\nconst PageHeader: FC<Props> = ({\n title,\n eyebrow,\n description,\n actions,\n breadcrumb,\n meta,\n children,\n as: Heading = 'h1',\n className,\n testId,\n}) => (\n <header className={cx(styles.header, className)} data-testid={testId}>\n {/*\n Yuva KENDI kutusunda: `header` bir dikey esnek kutu ve yuvanin cocugu\n dogrudan ona dustugunde `align-items: stretch` aliyordu. `Breadcrumb`\n zaten tam genislikte akan bir seritti, fark etmiyordu; icine bir dugme\n konunca (bir kayit formunun \"Geri\"si) dugme baslik genisligine yayilip\n ortalanmis metinle cikiyordu. Yuva artik icerigi kadar.\n */}\n {breadcrumb && <div className={styles.header__breadcrumb}>{breadcrumb}</div>}\n\n <div className={styles.header__top}>\n <div className={styles.header__text}>\n {eyebrow && <span className={styles.header__eyebrow}>{eyebrow}</span>}\n\n <div className={styles.header__titleRow}>\n <Heading className={styles.header__title}>{title}</Heading>\n {meta && <span className={styles.header__meta}>{meta}</span>}\n </div>\n\n {description && <p className={styles.header__description}>{description}</p>}\n </div>\n\n {actions && <div className={styles.header__actions}>{actions}</div>}\n </div>\n\n {children}\n </header>\n);\n\nexport default /*#__PURE__*/ memo(PageHeader) as typeof PageHeader;\n"],"names":["PageHeader","title","eyebrow","description","actions","breadcrumb","meta","children","Heading","className","testId","jsxs","cx","styles","jsx","index"],"mappings":"0PA2BMA,EAAwB,CAAC,CAC7B,MAAAC,EACA,QAAAC,EACA,YAAAC,EACA,QAAAC,EACA,WAAAC,EACA,KAAAC,EACA,SAAAC,EACA,GAAIC,EAAU,KACd,UAAAC,EACA,OAAAC,CACF,IACEC,OAAC,UAAO,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,OAAQJ,CAAS,EAAG,cAAaC,EAQ3D,SAAA,CAAAL,GAAcS,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,mBAAqB,SAAAR,EAAW,EAEtEM,EAAAA,KAAC,MAAA,CAAI,UAAWE,EAAAA,QAAO,YACrB,SAAA,CAAAF,EAAAA,KAAC,MAAA,CAAI,UAAWE,EAAAA,QAAO,aACpB,SAAA,CAAAX,GAAWY,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,gBAAkB,SAAAX,EAAQ,EAE9DS,EAAAA,KAAC,MAAA,CAAI,UAAWE,EAAAA,QAAO,iBACrB,SAAA,CAAAC,EAAAA,IAACN,EAAA,CAAQ,UAAWK,EAAAA,QAAO,cAAgB,SAAAZ,EAAM,EAChDK,GAAQQ,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,aAAe,SAAAP,CAAA,CAAK,CAAA,EACvD,EAECH,GAAeW,EAAAA,IAAC,IAAA,CAAE,UAAWD,EAAAA,QAAO,oBAAsB,SAAAV,CAAA,CAAY,CAAA,EACzE,EAECC,GAAWU,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,gBAAkB,SAAAT,CAAA,CAAQ,CAAA,EAC/D,EAECG,CAAA,EACH,EAGFQ,SAAkCf,CAAU"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
title: string;
|
|
4
|
+
/** Başlığın üstündeki küçük bağlam etiketi ("HESABIM", "KATEGORİ"). */
|
|
5
|
+
eyebrow?: string;
|
|
6
|
+
/** Bir cümlelik açıklama. 68ch ile sınırlı tutulur. */
|
|
7
|
+
description?: ReactNode;
|
|
8
|
+
/** Sağ tarafta duran eylemler. */
|
|
9
|
+
actions?: ReactNode;
|
|
10
|
+
/** Başlık satırının üstündeki kırıntı yolu. */
|
|
11
|
+
breadcrumb?: ReactNode;
|
|
12
|
+
/** Başlığın yanındaki sayaç ("1.248 kayıt"). */
|
|
13
|
+
meta?: ReactNode;
|
|
14
|
+
/** Başlık bloğunun altında duran ek içerik (filtre şeridi, sekmeler). */
|
|
15
|
+
children?: ReactNode;
|
|
16
|
+
/** `h1` sayfada bir kez bulunur; iç bölümler `h2` alır. */
|
|
17
|
+
as?: 'h1' | 'h2';
|
|
18
|
+
className?: string;
|
|
19
|
+
testId?: string;
|
|
20
|
+
};
|
|
21
|
+
/** Sayfa başlığı — her ekranın aynı giriş bloğu. */
|
|
22
|
+
declare const PageHeader: FC<Props>;
|
|
23
|
+
declare const _default: typeof PageHeader;
|
|
24
|
+
export default _default;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsxs as s, 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-yJwus","header__top":"ui-header__top-UK4si","header__breadcrumb":"ui-header__breadcrumb-A2j0i","header__text":"ui-header__text-HIo8U","header__eyebrow":"ui-header__eyebrow-dZ9Zc","header__titleRow":"ui-header__titleRow-KgDZj","header__title":"ui-header__title-s1giF","header__meta":"ui-header__meta-UxuaD","header__description":"ui-header__description-NXbbC","header__actions":"ui-header__actions-aShpt"};
|
|
5
|
+
const p = ({
|
|
6
|
+
title: h,
|
|
7
|
+
eyebrow: d,
|
|
8
|
+
description: r,
|
|
9
|
+
actions: l,
|
|
10
|
+
breadcrumb: c,
|
|
11
|
+
meta: i,
|
|
12
|
+
children: m,
|
|
13
|
+
as: t = "h1",
|
|
14
|
+
className: _,
|
|
15
|
+
testId: n
|
|
16
|
+
}) => /* @__PURE__ */ s("header", { className: N(e.header, _), "data-testid": n, children: [
|
|
17
|
+
c && /* @__PURE__ */ a("div", { className: e.header__breadcrumb, children: c }),
|
|
18
|
+
/* @__PURE__ */ s("div", { className: e.header__top, children: [
|
|
19
|
+
/* @__PURE__ */ s("div", { className: e.header__text, children: [
|
|
20
|
+
d && /* @__PURE__ */ a("span", { className: e.header__eyebrow, children: d }),
|
|
21
|
+
/* @__PURE__ */ s("div", { className: e.header__titleRow, children: [
|
|
22
|
+
/* @__PURE__ */ a(t, { className: e.header__title, children: h }),
|
|
23
|
+
i && /* @__PURE__ */ a("span", { className: e.header__meta, children: i })
|
|
24
|
+
] }),
|
|
25
|
+
r && /* @__PURE__ */ a("p", { className: e.header__description, children: r })
|
|
26
|
+
] }),
|
|
27
|
+
l && /* @__PURE__ */ a("div", { className: e.header__actions, children: l })
|
|
28
|
+
] }),
|
|
29
|
+
m
|
|
30
|
+
] }), g = /* @__PURE__ */ o(p);
|
|
31
|
+
export {
|
|
32
|
+
g as default
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/PageHeader/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 /** Başlığın üstündeki küçük bağlam etiketi (\"HESABIM\", \"KATEGORİ\"). */\n eyebrow?: string;\n /** Bir cümlelik açıklama. 68ch ile sınırlı tutulur. */\n description?: ReactNode;\n /** Sağ tarafta duran eylemler. */\n actions?: ReactNode;\n /** Başlık satırının üstündeki kırıntı yolu. */\n breadcrumb?: ReactNode;\n /** Başlığın yanındaki sayaç (\"1.248 kayıt\"). */\n meta?: ReactNode;\n /** Başlık bloğunun altında duran ek içerik (filtre şeridi, sekmeler). */\n children?: ReactNode;\n /** `h1` sayfada bir kez bulunur; iç bölümler `h2` alır. */\n as?: 'h1' | 'h2';\n className?: string;\n testId?: string;\n};\n\n/** Sayfa başlığı — her ekranın aynı giriş bloğu. */\nconst PageHeader: FC<Props> = ({\n title,\n eyebrow,\n description,\n actions,\n breadcrumb,\n meta,\n children,\n as: Heading = 'h1',\n className,\n testId,\n}) => (\n <header className={cx(styles.header, className)} data-testid={testId}>\n {/*\n Yuva KENDI kutusunda: `header` bir dikey esnek kutu ve yuvanin cocugu\n dogrudan ona dustugunde `align-items: stretch` aliyordu. `Breadcrumb`\n zaten tam genislikte akan bir seritti, fark etmiyordu; icine bir dugme\n konunca (bir kayit formunun \"Geri\"si) dugme baslik genisligine yayilip\n ortalanmis metinle cikiyordu. Yuva artik icerigi kadar.\n */}\n {breadcrumb && <div className={styles.header__breadcrumb}>{breadcrumb}</div>}\n\n <div className={styles.header__top}>\n <div className={styles.header__text}>\n {eyebrow && <span className={styles.header__eyebrow}>{eyebrow}</span>}\n\n <div className={styles.header__titleRow}>\n <Heading className={styles.header__title}>{title}</Heading>\n {meta && <span className={styles.header__meta}>{meta}</span>}\n </div>\n\n {description && <p className={styles.header__description}>{description}</p>}\n </div>\n\n {actions && <div className={styles.header__actions}>{actions}</div>}\n </div>\n\n {children}\n </header>\n);\n\nexport default /*#__PURE__*/ memo(PageHeader) as typeof PageHeader;\n"],"names":["PageHeader","title","eyebrow","description","actions","breadcrumb","meta","children","Heading","className","testId","jsxs","cx","styles","jsx","index"],"mappings":";;;;AA2BA,MAAMA,IAAwB,CAAC;AAAA,EAC7B,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,IAAIC,IAAU;AAAA,EACd,WAAAC;AAAA,EACA,QAAAC;AACF,MACE,gBAAAC,EAAC,YAAO,WAAWC,EAAGC,EAAO,QAAQJ,CAAS,GAAG,eAAaC,GAQ3D,UAAA;AAAA,EAAAL,KAAc,gBAAAS,EAAC,OAAA,EAAI,WAAWD,EAAO,oBAAqB,UAAAR,GAAW;AAAA,EAEtE,gBAAAM,EAAC,OAAA,EAAI,WAAWE,EAAO,aACrB,UAAA;AAAA,IAAA,gBAAAF,EAAC,OAAA,EAAI,WAAWE,EAAO,cACpB,UAAA;AAAA,MAAAX,KAAW,gBAAAY,EAAC,QAAA,EAAK,WAAWD,EAAO,iBAAkB,UAAAX,GAAQ;AAAA,MAE9D,gBAAAS,EAAC,OAAA,EAAI,WAAWE,EAAO,kBACrB,UAAA;AAAA,QAAA,gBAAAC,EAACN,GAAA,EAAQ,WAAWK,EAAO,eAAgB,UAAAZ,GAAM;AAAA,QAChDK,KAAQ,gBAAAQ,EAAC,QAAA,EAAK,WAAWD,EAAO,cAAe,UAAAP,EAAA,CAAK;AAAA,MAAA,GACvD;AAAA,MAECH,KAAe,gBAAAW,EAAC,KAAA,EAAE,WAAWD,EAAO,qBAAsB,UAAAV,EAAA,CAAY;AAAA,IAAA,GACzE;AAAA,IAECC,KAAW,gBAAAU,EAAC,OAAA,EAAI,WAAWD,EAAO,iBAAkB,UAAAT,EAAA,CAAQ;AAAA,EAAA,GAC/D;AAAA,EAECG;AAAA,GACH,GAGFQ,sBAAkCf,CAAU;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-header-yJwus{display:flex;flex-direction:column;gap:var(--hd-space-4)}@media (max-width: 640px){.ui-header-yJwus{gap:var(--hd-space-3)}}.ui-header__top-UK4si{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--hd-space-5);flex-wrap:wrap}.ui-header__breadcrumb-A2j0i{align-self:flex-start;max-inline-size:100%;min-inline-size:0}.ui-header__text-HIo8U{display:flex;flex-direction:column;gap:var(--hd-space-2);min-width:0;flex:1 1 auto}.ui-header__eyebrow-dZ9Zc{font-family:var(--hd-font-body);font-size:var(--hd-type-caption-size);font-weight:var(--hd-font-weight-semibold);letter-spacing:.045em;text-transform:uppercase;color:var(--hd-text-2)}.ui-header__titleRow-KgDZj{display:flex;align-items:baseline;gap:var(--hd-space-3);flex-wrap:wrap}.ui-header__title-s1giF{font-family:var(--hd-font-display);font-size:var(--hd-type-h2-size);font-weight:var(--hd-type-h2-weight);font-stretch:var(--hd-type-h2-stretch);line-height:var(--hd-type-h2-line-height);letter-spacing:var(--hd-type-h2-letter-spacing);color:var(--hd-text);text-wrap:balance;margin:0}.ui-header__meta-UxuaD{font-family:var(--hd-font-body);font-size:var(--hd-type-small-size);font-weight:var(--hd-font-weight-medium);color:var(--hd-text-2);font-variant-numeric:tabular-nums;white-space:nowrap}.ui-header__description-NXbbC{font-size:var(--hd-type-body-size);line-height:var(--hd-type-body-line-height);color:var(--hd-text-2);margin:0;max-width:68ch}.ui-header__actions-aShpt{display:flex;flex-wrap:wrap;align-items:center;gap:var(--hd-space-2);flex-shrink:0}@media (max-width: 640px){.ui-header__actions-aShpt{width:100%}.ui-header__actions-aShpt>*{flex:1 1 auto}}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),h=require("react"),K=require("react-bootstrap-icons"),m=require("../../helpers/class-name.helper.cjs"),q=require("../../helpers/label.helper.cjs"),D=require("../../helpers/scroll.helper.cjs"),F=require("../../hooks/useAnnounce.cjs"),W=require("../../theme/context.cjs"),B=require("../../enums/ui-size.enum.cjs"),G=require("../../enums/ui-variant.enum.cjs"),I=require("../Button/index.cjs"),O=require("../IconButton/index.cjs"),M=require("../Link/index.cjs"),c={default:{"pagination":"ui-pagination-K-L20","pagination__list":"ui-pagination__list--9HqC","pagination__arrow":"ui-pagination__arrow-XIgoX","pagination__page":"ui-pagination__page-TpoJM","pagination__page--active":"ui-pagination__page--active-XHeaz","pagination__gap":"ui-pagination__gap-qoDyI"}},U=(i,n)=>{if(n<=7)return Array.from({length:n},(r,a)=>a+1);const u=new Set([1,n,i]);i-1>1&&u.add(i-1),i+1<n&&u.add(i+1);const f=[...u].sort((r,a)=>r-a),d=[];return f.forEach((r,a)=>{a>0&&r-f[a-1]>1&&d.push("gap"),d.push(r)}),d},V=({page:i,totalPages:n,label:u,previousLabel:f,nextLabel:d,buildHref:r,onPageChange:a,linkProps:l,formatAnnouncement:x,scrollTo:R,className:T,testId:$})=>{var S,g,w;const{labels:s}=W.useUi(),j=F.default(),L=h.useRef(i);h.useEffect(()=>{L.current!==i&&(L.current=i,x&&j(x(i,n)))},[i,n,x,j]);const E=h.useMemo(()=>U(i,n),[i,n]);if(n<=1)return null;const N=e=>{R==="top"&&e!==i&&D.scrollWindowToTop()},b=e=>{a&&(a(e),N(e))},p=l==null?void 0:l.onClick,C=(e,o)=>{p==null||p(e),!(e.defaultPrevented||e.button!==0)&&(e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||N(o))},y=(e,o,_)=>{const A=e<1||e>n;return r&&!A?t.jsx(M.default,{href:r(e),className:c.default.pagination__arrow,"aria-label":o,...l,onClick:z=>C(z,e),children:_}):t.jsx(O.default,{className:c.default.pagination__arrow,icon:_,label:o,variant:"outline",disabled:A,onClick:()=>b(e)})};return t.jsxs("nav",{className:m.cx(c.default.pagination,T),"aria-label":q.resolveLabel("Pagination.label",u,(S=s==null?void 0:s.pagination)==null?void 0:S.label),"data-testid":$,children:[y(i-1,q.resolveLabel("Pagination.previousLabel",f,(g=s==null?void 0:s.pagination)==null?void 0:g.previous),t.jsx(K.CaretLeftFill,{"aria-hidden":!0})),t.jsx("ul",{className:c.default.pagination__list,children:E.map((e,o)=>e==="gap"?t.jsx("li",{className:c.default.pagination__gap,"aria-hidden":!0,children:"…"},`gap-${o}`):t.jsx("li",{children:r?t.jsx(M.default,{href:r(e),className:m.cx(c.default.pagination__page,e===i&&c.default["pagination__page--active"]),"aria-current":e===i?"page":void 0,...l,onClick:_=>C(_,e),children:e}):t.jsx(I.default,{variant:G.default.SECONDARY,size:B.default.SMALL,className:m.cx(c.default.pagination__page,e===i&&c.default["pagination__page--active"]),"aria-current":e===i?"page":void 0,onClick:()=>b(e),children:e})},e))}),y(i+1,q.resolveLabel("Pagination.nextLabel",d,(w=s==null?void 0:s.pagination)==null?void 0:w.next),t.jsx(K.CaretRightFill,{"aria-hidden":!0}))]})},Y=h.memo(V);exports.default=Y;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Pagination/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type MouseEvent, type ReactNode, memo, useEffect, useMemo, useRef } from 'react';\n\nimport { CaretLeftFill, CaretRightFill } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { scrollWindowToTop } from '../../helpers/scroll.helper';\nimport useAnnounce from '../../hooks/useAnnounce';\nimport { useUi } from '../../theme/context';\nimport UISize from '../../enums/ui-size.enum';\nimport UIVariant from '../../enums/ui-variant.enum';\nimport type { UiLinkExtraProps } from '../../types/link.type';\nimport Button from '../Button';\nimport IconButton from '../IconButton';\nimport UiLink from '../Link';\n\nimport styles from './index.module.scss';\n\ntype BaseProps = {\n page: number;\n totalPages: number;\n /** Gezinme bölgesinin erişilebilir adı. */\n label?: string;\n /** Verilmezse `labels.pagination.previous`. */\n previousLabel?: string;\n /** Verilmezse `labels.pagination.next`. */\n nextLabel?: string;\n /** Sayfa değiştiğinde ekran okuyucuya duyurulacak metin (\"3. sayfa · 1.248 sonuç\"). */\n formatAnnouncement?: (page: number, totalPages: number) => string;\n /**\n * Sayfa değiştiren bir tıklamadan sonra kaydırma. `'top'` verilirse pencere en üste alınır —\n * çağıran tarafta kaydırma kodu yazılmaz.\n */\n scrollTo?: 'top';\n className?: string;\n testId?: string;\n};\n\ntype LinkProps = BaseProps & {\n /** Sayfa numarasının adresini üretir. */\n buildHref: (page: number) => string;\n onPageChange?: never;\n /** Yönlendiriciye geçirilecek ek props (`{ scroll: false }` gibi). */\n linkProps?: UiLinkExtraProps;\n};\n\ntype ButtonProps = BaseProps & {\n /** Sayfa değişimi adres çubuğu YERİNE buraya bildirilir. */\n onPageChange: (page: number) => void;\n buildHref?: never;\n linkProps?: never;\n};\n\ntype Props = LinkProps | ButtonProps;\n\n/** Kenarlarda 1 ve son sayfa her zaman gorunur; arasi kisaltilir. */\nconst buildPageList = (page: number, totalPages: number): (number | 'gap')[] => {\n if (totalPages <= 7) return Array.from({ length: totalPages }, (_, index) => index + 1);\n\n const pages = new Set<number>([1, totalPages, page]);\n if (page - 1 > 1) pages.add(page - 1);\n if (page + 1 < totalPages) pages.add(page + 1);\n\n const sorted = [...pages].sort((left, right) => left - right);\n const pagesWithGaps: (number | 'gap')[] = [];\n\n sorted.forEach((value, index) => {\n if (index > 0 && value - sorted[index - 1] > 1) pagesWithGaps.push('gap');\n pagesWithGaps.push(value);\n });\n\n return pagesWithGaps;\n};\n\n/** Sayfalama. */\nconst Pagination: FC<Props> = ({\n page,\n totalPages,\n label,\n previousLabel,\n nextLabel,\n buildHref,\n onPageChange,\n linkProps,\n formatAnnouncement,\n scrollTo,\n className,\n testId,\n}) => {\n const { labels } = useUi();\n const announce = useAnnounce();\n\n /*\n * Sayfa DEGISTIGINDE duyurulur, ilk cizimde degil: acilista \"1. sayfa\" demek, kullanicinin\n * sormadigi bir soruyu cevaplamak ve ekran okuyucunun sayfa…\n */\n const previousPage = useRef(page);\n\n useEffect(() => {\n if (previousPage.current === page) return;\n previousPage.current = page;\n\n if (formatAnnouncement) announce(formatAnnouncement(page, totalPages));\n }, [page, totalPages, formatAnnouncement, announce]);\n const pages = useMemo(() => buildPageList(page, totalPages), [page, totalPages]);\n\n if (totalPages <= 1) return null;\n\n /*\n * Sayfa GERCEKTEN degistiyse kaydirilir: etkin sayfaya basmak icerigi degistirmiyor, oyleyse\n * gorunumu de degistirmemeli.\n */\n const scrollAfterChange = (target: number) => {\n if (scrollTo === 'top' && target !== page) scrollWindowToTop();\n };\n\n const goTo = (target: number) => {\n if (!onPageChange) return;\n\n onPageChange(target);\n scrollAfterChange(target);\n };\n\n const extraOnClick = linkProps?.onClick as\n ((event: MouseEvent<HTMLAnchorElement>) => void) | undefined;\n\n /*\n * Yeni sekmede acan tiklamada (orta tus, Ctrl/Cmd) MEVCUT sayfa yerinde kalir; onu basa almak\n * kullanicinin okudugu yeri elinden almak olurdu.\n */\n const handleLinkClick = (event: MouseEvent<HTMLAnchorElement>, target: number) => {\n extraOnClick?.(event);\n\n if (event.defaultPrevented || event.button !== 0) return;\n if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n\n scrollAfterChange(target);\n };\n\n /* Baglanti kipinde oklar da BAGLANTIDIR. */\n const renderArrow = (target: number, arrowLabel: string, icon: ReactNode) => {\n const isDisabled = target < 1 || target > totalPages;\n\n if (buildHref && !isDisabled)\n return (\n <UiLink\n href={buildHref(target)}\n className={styles.pagination__arrow}\n aria-label={arrowLabel}\n {...linkProps}\n onClick={event => handleLinkClick(event, target)}\n >\n {icon}\n </UiLink>\n );\n\n return (\n <IconButton\n className={styles.pagination__arrow}\n icon={icon}\n label={arrowLabel}\n variant=\"outline\"\n disabled={isDisabled}\n onClick={() => goTo(target)}\n />\n );\n };\n\n return (\n <nav\n className={cx(styles.pagination, className)}\n aria-label={resolveLabel('Pagination.label', label, labels?.pagination?.label)}\n data-testid={testId}\n >\n {renderArrow(\n page - 1,\n resolveLabel('Pagination.previousLabel', previousLabel, labels?.pagination?.previous),\n <CaretLeftFill aria-hidden />,\n )}\n\n <ul className={styles.pagination__list}>\n {pages.map((value, index) =>\n value === 'gap' ? (\n <li key={`gap-${index}`} className={styles.pagination__gap} aria-hidden>\n …\n </li>\n ) : (\n <li key={value}>\n {buildHref ? (\n <UiLink\n href={buildHref(value)}\n className={cx(\n styles.pagination__page,\n value === page && styles['pagination__page--active'],\n )}\n aria-current={value === page ? 'page' : undefined}\n {...linkProps}\n onClick={event => handleLinkClick(event, value)}\n >\n {value}\n </UiLink>\n ) : (\n <Button\n variant={UIVariant.SECONDARY}\n size={UISize.SMALL}\n className={cx(\n styles.pagination__page,\n value === page && styles['pagination__page--active'],\n )}\n aria-current={value === page ? 'page' : undefined}\n onClick={() => goTo(value)}\n >\n {value}\n </Button>\n )}\n </li>\n ),\n )}\n </ul>\n\n {renderArrow(\n page + 1,\n resolveLabel('Pagination.nextLabel', nextLabel, labels?.pagination?.next),\n <CaretRightFill aria-hidden />,\n )}\n </nav>\n );\n};\n\nexport default /*#__PURE__*/ memo(Pagination) as typeof Pagination;\n"],"names":["buildPageList","page","totalPages","_","index","pages","sorted","left","right","pagesWithGaps","value","Pagination","label","previousLabel","nextLabel","buildHref","onPageChange","linkProps","formatAnnouncement","scrollTo","className","testId","labels","useUi","announce","useAnnounce","previousPage","useRef","useEffect","useMemo","scrollAfterChange","target","scrollWindowToTop","goTo","extraOnClick","handleLinkClick","event","renderArrow","arrowLabel","icon","isDisabled","jsx","UiLink","styles","IconButton","jsxs","cx","resolveLabel","_a","_b","CaretLeftFill","Button","UIVariant","UISize","_c","CaretRightFill"],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { UiLinkExtraProps } from '../../types/link.type';
|
|
3
|
+
type BaseProps = {
|
|
4
|
+
page: number;
|
|
5
|
+
totalPages: number;
|
|
6
|
+
/** Gezinme bölgesinin erişilebilir adı. */
|
|
7
|
+
label?: string;
|
|
8
|
+
/** Verilmezse `labels.pagination.previous`. */
|
|
9
|
+
previousLabel?: string;
|
|
10
|
+
/** Verilmezse `labels.pagination.next`. */
|
|
11
|
+
nextLabel?: string;
|
|
12
|
+
/** Sayfa değiştiğinde ekran okuyucuya duyurulacak metin ("3. sayfa · 1.248 sonuç"). */
|
|
13
|
+
formatAnnouncement?: (page: number, totalPages: number) => string;
|
|
14
|
+
/**
|
|
15
|
+
* Sayfa değiştiren bir tıklamadan sonra kaydırma. `'top'` verilirse pencere en üste alınır —
|
|
16
|
+
* çağıran tarafta kaydırma kodu yazılmaz.
|
|
17
|
+
*/
|
|
18
|
+
scrollTo?: 'top';
|
|
19
|
+
className?: string;
|
|
20
|
+
testId?: string;
|
|
21
|
+
};
|
|
22
|
+
type LinkProps = BaseProps & {
|
|
23
|
+
/** Sayfa numarasının adresini üretir. */
|
|
24
|
+
buildHref: (page: number) => string;
|
|
25
|
+
onPageChange?: never;
|
|
26
|
+
/** Yönlendiriciye geçirilecek ek props (`{ scroll: false }` gibi). */
|
|
27
|
+
linkProps?: UiLinkExtraProps;
|
|
28
|
+
};
|
|
29
|
+
type ButtonProps = BaseProps & {
|
|
30
|
+
/** Sayfa değişimi adres çubuğu YERİNE buraya bildirilir. */
|
|
31
|
+
onPageChange: (page: number) => void;
|
|
32
|
+
buildHref?: never;
|
|
33
|
+
linkProps?: never;
|
|
34
|
+
};
|
|
35
|
+
type Props = LinkProps | ButtonProps;
|
|
36
|
+
/** Sayfalama. */
|
|
37
|
+
declare const Pagination: FC<Props>;
|
|
38
|
+
declare const _default: typeof Pagination;
|
|
39
|
+
export default _default;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as z, jsx as c } from "react/jsx-runtime";
|
|
3
|
+
import { memo as B, useRef as D, useEffect as F, useMemo as M } from "react";
|
|
4
|
+
import { CaretLeftFill as W, CaretRightFill as k } from "react-bootstrap-icons";
|
|
5
|
+
import { cx as _ } from "../../helpers/class-name.helper.js";
|
|
6
|
+
import { resolveLabel as C } from "../../helpers/label.helper.js";
|
|
7
|
+
import { scrollWindowToTop as G } from "../../helpers/scroll.helper.js";
|
|
8
|
+
import V from "../../hooks/useAnnounce.js";
|
|
9
|
+
import { useUi as Y } from "../../theme/context.js";
|
|
10
|
+
import $ from "../../enums/ui-size.enum.js";
|
|
11
|
+
import q from "../../enums/ui-variant.enum.js";
|
|
12
|
+
import J from "../Button/index.js";
|
|
13
|
+
import O from "../IconButton/index.js";
|
|
14
|
+
import g from "../Link/index.js";
|
|
15
|
+
const s = {"pagination":"ui-pagination-K-L20","pagination__list":"ui-pagination__list--9HqC","pagination__arrow":"ui-pagination__arrow-XIgoX","pagination__page":"ui-pagination__page-TpoJM","pagination__page--active":"ui-pagination__page--active-XHeaz","pagination__gap":"ui-pagination__gap-qoDyI"};
|
|
16
|
+
const Q = (r, n) => {
|
|
17
|
+
if (n <= 7) return Array.from({ length: n }, (o, t) => t + 1);
|
|
18
|
+
const m = /* @__PURE__ */ new Set([1, n, r]);
|
|
19
|
+
r - 1 > 1 && m.add(r - 1), r + 1 < n && m.add(r + 1);
|
|
20
|
+
const p = [...m].sort((o, t) => o - t), f = [];
|
|
21
|
+
return p.forEach((o, t) => {
|
|
22
|
+
t > 0 && o - p[t - 1] > 1 && f.push("gap"), f.push(o);
|
|
23
|
+
}), f;
|
|
24
|
+
}, X = ({
|
|
25
|
+
page: r,
|
|
26
|
+
totalPages: n,
|
|
27
|
+
label: m,
|
|
28
|
+
previousLabel: p,
|
|
29
|
+
nextLabel: f,
|
|
30
|
+
buildHref: o,
|
|
31
|
+
onPageChange: t,
|
|
32
|
+
linkProps: d,
|
|
33
|
+
formatAnnouncement: h,
|
|
34
|
+
scrollTo: E,
|
|
35
|
+
className: I,
|
|
36
|
+
testId: R
|
|
37
|
+
}) => {
|
|
38
|
+
var K, S, U;
|
|
39
|
+
const { labels: a } = Y(), L = V(), N = D(r);
|
|
40
|
+
F(() => {
|
|
41
|
+
N.current !== r && (N.current = r, h && L(h(r, n)));
|
|
42
|
+
}, [r, n, h, L]);
|
|
43
|
+
const T = M(() => Q(r, n), [r, n]);
|
|
44
|
+
if (n <= 1) return null;
|
|
45
|
+
const y = (i) => {
|
|
46
|
+
E === "top" && i !== r && G();
|
|
47
|
+
}, x = (i) => {
|
|
48
|
+
t && (t(i), y(i));
|
|
49
|
+
}, l = d == null ? void 0 : d.onClick, w = (i, e) => {
|
|
50
|
+
l == null || l(i), !(i.defaultPrevented || i.button !== 0) && (i.metaKey || i.ctrlKey || i.shiftKey || i.altKey || y(e));
|
|
51
|
+
}, A = (i, e, u) => {
|
|
52
|
+
const b = i < 1 || i > n;
|
|
53
|
+
return o && !b ? /* @__PURE__ */ c(
|
|
54
|
+
g,
|
|
55
|
+
{
|
|
56
|
+
href: o(i),
|
|
57
|
+
className: s.pagination__arrow,
|
|
58
|
+
"aria-label": e,
|
|
59
|
+
...d,
|
|
60
|
+
onClick: (j) => w(j, i),
|
|
61
|
+
children: u
|
|
62
|
+
}
|
|
63
|
+
) : /* @__PURE__ */ c(
|
|
64
|
+
O,
|
|
65
|
+
{
|
|
66
|
+
className: s.pagination__arrow,
|
|
67
|
+
icon: u,
|
|
68
|
+
label: e,
|
|
69
|
+
variant: "outline",
|
|
70
|
+
disabled: b,
|
|
71
|
+
onClick: () => x(i)
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
};
|
|
75
|
+
return /* @__PURE__ */ z(
|
|
76
|
+
"nav",
|
|
77
|
+
{
|
|
78
|
+
className: _(s.pagination, I),
|
|
79
|
+
"aria-label": C("Pagination.label", m, (K = a == null ? void 0 : a.pagination) == null ? void 0 : K.label),
|
|
80
|
+
"data-testid": R,
|
|
81
|
+
children: [
|
|
82
|
+
A(
|
|
83
|
+
r - 1,
|
|
84
|
+
C("Pagination.previousLabel", p, (S = a == null ? void 0 : a.pagination) == null ? void 0 : S.previous),
|
|
85
|
+
/* @__PURE__ */ c(W, { "aria-hidden": !0 })
|
|
86
|
+
),
|
|
87
|
+
/* @__PURE__ */ c("ul", { className: s.pagination__list, children: T.map(
|
|
88
|
+
(i, e) => i === "gap" ? /* @__PURE__ */ c("li", { className: s.pagination__gap, "aria-hidden": !0, children: "…" }, `gap-${e}`) : /* @__PURE__ */ c("li", { children: o ? /* @__PURE__ */ c(
|
|
89
|
+
g,
|
|
90
|
+
{
|
|
91
|
+
href: o(i),
|
|
92
|
+
className: _(
|
|
93
|
+
s.pagination__page,
|
|
94
|
+
i === r && s["pagination__page--active"]
|
|
95
|
+
),
|
|
96
|
+
"aria-current": i === r ? "page" : void 0,
|
|
97
|
+
...d,
|
|
98
|
+
onClick: (u) => w(u, i),
|
|
99
|
+
children: i
|
|
100
|
+
}
|
|
101
|
+
) : /* @__PURE__ */ c(
|
|
102
|
+
J,
|
|
103
|
+
{
|
|
104
|
+
variant: q.SECONDARY,
|
|
105
|
+
size: $.SMALL,
|
|
106
|
+
className: _(
|
|
107
|
+
s.pagination__page,
|
|
108
|
+
i === r && s["pagination__page--active"]
|
|
109
|
+
),
|
|
110
|
+
"aria-current": i === r ? "page" : void 0,
|
|
111
|
+
onClick: () => x(i),
|
|
112
|
+
children: i
|
|
113
|
+
}
|
|
114
|
+
) }, i)
|
|
115
|
+
) }),
|
|
116
|
+
A(
|
|
117
|
+
r + 1,
|
|
118
|
+
C("Pagination.nextLabel", f, (U = a == null ? void 0 : a.pagination) == null ? void 0 : U.next),
|
|
119
|
+
/* @__PURE__ */ c(k, { "aria-hidden": !0 })
|
|
120
|
+
)
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
}, fi = /* @__PURE__ */ B(X);
|
|
125
|
+
export {
|
|
126
|
+
fi as default
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Pagination/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type MouseEvent, type ReactNode, memo, useEffect, useMemo, useRef } from 'react';\n\nimport { CaretLeftFill, CaretRightFill } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { scrollWindowToTop } from '../../helpers/scroll.helper';\nimport useAnnounce from '../../hooks/useAnnounce';\nimport { useUi } from '../../theme/context';\nimport UISize from '../../enums/ui-size.enum';\nimport UIVariant from '../../enums/ui-variant.enum';\nimport type { UiLinkExtraProps } from '../../types/link.type';\nimport Button from '../Button';\nimport IconButton from '../IconButton';\nimport UiLink from '../Link';\n\nimport styles from './index.module.scss';\n\ntype BaseProps = {\n page: number;\n totalPages: number;\n /** Gezinme bölgesinin erişilebilir adı. */\n label?: string;\n /** Verilmezse `labels.pagination.previous`. */\n previousLabel?: string;\n /** Verilmezse `labels.pagination.next`. */\n nextLabel?: string;\n /** Sayfa değiştiğinde ekran okuyucuya duyurulacak metin (\"3. sayfa · 1.248 sonuç\"). */\n formatAnnouncement?: (page: number, totalPages: number) => string;\n /**\n * Sayfa değiştiren bir tıklamadan sonra kaydırma. `'top'` verilirse pencere en üste alınır —\n * çağıran tarafta kaydırma kodu yazılmaz.\n */\n scrollTo?: 'top';\n className?: string;\n testId?: string;\n};\n\ntype LinkProps = BaseProps & {\n /** Sayfa numarasının adresini üretir. */\n buildHref: (page: number) => string;\n onPageChange?: never;\n /** Yönlendiriciye geçirilecek ek props (`{ scroll: false }` gibi). */\n linkProps?: UiLinkExtraProps;\n};\n\ntype ButtonProps = BaseProps & {\n /** Sayfa değişimi adres çubuğu YERİNE buraya bildirilir. */\n onPageChange: (page: number) => void;\n buildHref?: never;\n linkProps?: never;\n};\n\ntype Props = LinkProps | ButtonProps;\n\n/** Kenarlarda 1 ve son sayfa her zaman gorunur; arasi kisaltilir. */\nconst buildPageList = (page: number, totalPages: number): (number | 'gap')[] => {\n if (totalPages <= 7) return Array.from({ length: totalPages }, (_, index) => index + 1);\n\n const pages = new Set<number>([1, totalPages, page]);\n if (page - 1 > 1) pages.add(page - 1);\n if (page + 1 < totalPages) pages.add(page + 1);\n\n const sorted = [...pages].sort((left, right) => left - right);\n const pagesWithGaps: (number | 'gap')[] = [];\n\n sorted.forEach((value, index) => {\n if (index > 0 && value - sorted[index - 1] > 1) pagesWithGaps.push('gap');\n pagesWithGaps.push(value);\n });\n\n return pagesWithGaps;\n};\n\n/** Sayfalama. */\nconst Pagination: FC<Props> = ({\n page,\n totalPages,\n label,\n previousLabel,\n nextLabel,\n buildHref,\n onPageChange,\n linkProps,\n formatAnnouncement,\n scrollTo,\n className,\n testId,\n}) => {\n const { labels } = useUi();\n const announce = useAnnounce();\n\n /*\n * Sayfa DEGISTIGINDE duyurulur, ilk cizimde degil: acilista \"1. sayfa\" demek, kullanicinin\n * sormadigi bir soruyu cevaplamak ve ekran okuyucunun sayfa…\n */\n const previousPage = useRef(page);\n\n useEffect(() => {\n if (previousPage.current === page) return;\n previousPage.current = page;\n\n if (formatAnnouncement) announce(formatAnnouncement(page, totalPages));\n }, [page, totalPages, formatAnnouncement, announce]);\n const pages = useMemo(() => buildPageList(page, totalPages), [page, totalPages]);\n\n if (totalPages <= 1) return null;\n\n /*\n * Sayfa GERCEKTEN degistiyse kaydirilir: etkin sayfaya basmak icerigi degistirmiyor, oyleyse\n * gorunumu de degistirmemeli.\n */\n const scrollAfterChange = (target: number) => {\n if (scrollTo === 'top' && target !== page) scrollWindowToTop();\n };\n\n const goTo = (target: number) => {\n if (!onPageChange) return;\n\n onPageChange(target);\n scrollAfterChange(target);\n };\n\n const extraOnClick = linkProps?.onClick as\n ((event: MouseEvent<HTMLAnchorElement>) => void) | undefined;\n\n /*\n * Yeni sekmede acan tiklamada (orta tus, Ctrl/Cmd) MEVCUT sayfa yerinde kalir; onu basa almak\n * kullanicinin okudugu yeri elinden almak olurdu.\n */\n const handleLinkClick = (event: MouseEvent<HTMLAnchorElement>, target: number) => {\n extraOnClick?.(event);\n\n if (event.defaultPrevented || event.button !== 0) return;\n if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n\n scrollAfterChange(target);\n };\n\n /* Baglanti kipinde oklar da BAGLANTIDIR. */\n const renderArrow = (target: number, arrowLabel: string, icon: ReactNode) => {\n const isDisabled = target < 1 || target > totalPages;\n\n if (buildHref && !isDisabled)\n return (\n <UiLink\n href={buildHref(target)}\n className={styles.pagination__arrow}\n aria-label={arrowLabel}\n {...linkProps}\n onClick={event => handleLinkClick(event, target)}\n >\n {icon}\n </UiLink>\n );\n\n return (\n <IconButton\n className={styles.pagination__arrow}\n icon={icon}\n label={arrowLabel}\n variant=\"outline\"\n disabled={isDisabled}\n onClick={() => goTo(target)}\n />\n );\n };\n\n return (\n <nav\n className={cx(styles.pagination, className)}\n aria-label={resolveLabel('Pagination.label', label, labels?.pagination?.label)}\n data-testid={testId}\n >\n {renderArrow(\n page - 1,\n resolveLabel('Pagination.previousLabel', previousLabel, labels?.pagination?.previous),\n <CaretLeftFill aria-hidden />,\n )}\n\n <ul className={styles.pagination__list}>\n {pages.map((value, index) =>\n value === 'gap' ? (\n <li key={`gap-${index}`} className={styles.pagination__gap} aria-hidden>\n …\n </li>\n ) : (\n <li key={value}>\n {buildHref ? (\n <UiLink\n href={buildHref(value)}\n className={cx(\n styles.pagination__page,\n value === page && styles['pagination__page--active'],\n )}\n aria-current={value === page ? 'page' : undefined}\n {...linkProps}\n onClick={event => handleLinkClick(event, value)}\n >\n {value}\n </UiLink>\n ) : (\n <Button\n variant={UIVariant.SECONDARY}\n size={UISize.SMALL}\n className={cx(\n styles.pagination__page,\n value === page && styles['pagination__page--active'],\n )}\n aria-current={value === page ? 'page' : undefined}\n onClick={() => goTo(value)}\n >\n {value}\n </Button>\n )}\n </li>\n ),\n )}\n </ul>\n\n {renderArrow(\n page + 1,\n resolveLabel('Pagination.nextLabel', nextLabel, labels?.pagination?.next),\n <CaretRightFill aria-hidden />,\n )}\n </nav>\n );\n};\n\nexport default /*#__PURE__*/ memo(Pagination) as typeof Pagination;\n"],"names":["buildPageList","page","totalPages","_","index","pages","sorted","left","right","pagesWithGaps","value","Pagination","label","previousLabel","nextLabel","buildHref","onPageChange","linkProps","formatAnnouncement","scrollTo","className","testId","labels","useUi","announce","useAnnounce","previousPage","useRef","useEffect","useMemo","scrollAfterChange","target","scrollWindowToTop","goTo","extraOnClick","handleLinkClick","event","renderArrow","arrowLabel","icon","isDisabled","jsx","UiLink","styles","IconButton","jsxs","cx","resolveLabel","_a","_b","CaretLeftFill","Button","UIVariant","UISize","_c","CaretRightFill"],"mappings":";;;;;;;;;;;;;;;AAyDA,MAAMA,IAAgB,CAACC,GAAcC,MAA2C;AAC9E,MAAIA,KAAc,EAAG,QAAO,MAAM,KAAK,EAAE,QAAQA,EAAA,GAAc,CAACC,GAAGC,MAAUA,IAAQ,CAAC;AAEtF,QAAMC,IAAQ,oBAAI,IAAY,CAAC,GAAGH,GAAYD,CAAI,CAAC;AACnD,EAAIA,IAAO,IAAI,KAAGI,EAAM,IAAIJ,IAAO,CAAC,GAChCA,IAAO,IAAIC,KAAYG,EAAM,IAAIJ,IAAO,CAAC;AAE7C,QAAMK,IAAS,CAAC,GAAGD,CAAK,EAAE,KAAK,CAACE,GAAMC,MAAUD,IAAOC,CAAK,GACtDC,IAAoC,CAAA;AAE1C,SAAAH,EAAO,QAAQ,CAACI,GAAON,MAAU;AAC/B,IAAIA,IAAQ,KAAKM,IAAQJ,EAAOF,IAAQ,CAAC,IAAI,KAAGK,EAAc,KAAK,KAAK,GACxEA,EAAc,KAAKC,CAAK;AAAA,EAC1B,CAAC,GAEMD;AACT,GAGME,IAAwB,CAAC;AAAA,EAC7B,MAAAV;AAAA,EACA,YAAAC;AAAA,EACA,OAAAU;AAAA,EACA,eAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACF,MAAM;;AACJ,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACbC,IAAWC,EAAA,GAMXC,IAAeC,EAAO1B,CAAI;AAEhC,EAAA2B,EAAU,MAAM;AACd,IAAIF,EAAa,YAAYzB,MAC7ByB,EAAa,UAAUzB,GAEnBiB,KAAoBM,EAASN,EAAmBjB,GAAMC,CAAU,CAAC;AAAA,EACvE,GAAG,CAACD,GAAMC,GAAYgB,GAAoBM,CAAQ,CAAC;AACnD,QAAMnB,IAAQwB,EAAQ,MAAM7B,EAAcC,GAAMC,CAAU,GAAG,CAACD,GAAMC,CAAU,CAAC;AAE/E,MAAIA,KAAc,EAAG,QAAO;AAM5B,QAAM4B,IAAoB,CAACC,MAAmB;AAC5C,IAAIZ,MAAa,SAASY,MAAW9B,KAAM+B,EAAA;AAAA,EAC7C,GAEMC,IAAO,CAACF,MAAmB;AAC/B,IAAKf,MAELA,EAAae,CAAM,GACnBD,EAAkBC,CAAM;AAAA,EAC1B,GAEMG,IAAejB,KAAA,gBAAAA,EAAW,SAO1BkB,IAAkB,CAACC,GAAsCL,MAAmB;AAGhF,IAFAG,KAAA,QAAAA,EAAeE,IAEX,EAAAA,EAAM,oBAAoBA,EAAM,WAAW,OAC3CA,EAAM,WAAWA,EAAM,WAAWA,EAAM,YAAYA,EAAM,UAE9DN,EAAkBC,CAAM;AAAA,EAC1B,GAGMM,IAAc,CAACN,GAAgBO,GAAoBC,MAAoB;AAC3E,UAAMC,IAAaT,IAAS,KAAKA,IAAS7B;AAE1C,WAAIa,KAAa,CAACyB,IAEd,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM3B,EAAUgB,CAAM;AAAA,QACtB,WAAWY,EAAO;AAAA,QAClB,cAAYL;AAAA,QACX,GAAGrB;AAAA,QACJ,SAAS,CAAAmB,MAASD,EAAgBC,GAAOL,CAAM;AAAA,QAE9C,UAAAQ;AAAA,MAAA;AAAA,IAAA,IAKL,gBAAAE;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,WAAWD,EAAO;AAAA,QAClB,MAAAJ;AAAA,QACA,OAAOD;AAAA,QACP,SAAQ;AAAA,QACR,UAAUE;AAAA,QACV,SAAS,MAAMP,EAAKF,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhC;AAEA,SACE,gBAAAc;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAGH,EAAO,YAAYvB,CAAS;AAAA,MAC1C,cAAY2B,EAAa,oBAAoBnC,IAAOoC,IAAA1B,KAAA,gBAAAA,EAAQ,eAAR,gBAAA0B,EAAoB,KAAK;AAAA,MAC7E,eAAa3B;AAAA,MAEZ,UAAA;AAAA,QAAAgB;AAAA,UACCpC,IAAO;AAAA,UACP8C,EAAa,4BAA4BlC,IAAeoC,IAAA3B,KAAA,gBAAAA,EAAQ,eAAR,gBAAA2B,EAAoB,QAAQ;AAAA,UACpF,gBAAAR,EAACS,GAAA,EAAc,eAAW,GAAA,CAAC;AAAA,QAAA;AAAA,QAG7B,gBAAAT,EAAC,MAAA,EAAG,WAAWE,EAAO,kBACnB,UAAAtC,EAAM;AAAA,UAAI,CAACK,GAAON,MACjBM,MAAU,QACR,gBAAA+B,EAAC,QAAwB,WAAWE,EAAO,iBAAiB,eAAW,IAAC,iBAA/D,OAAOvC,CAAK,EAErB,IAEA,gBAAAqC,EAAC,QACE,UAAA1B,IACC,gBAAA0B;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,MAAM3B,EAAUL,CAAK;AAAA,cACrB,WAAWoC;AAAA,gBACTH,EAAO;AAAA,gBACPjC,MAAUT,KAAQ0C,EAAO,0BAA0B;AAAA,cAAA;AAAA,cAErD,gBAAcjC,MAAUT,IAAO,SAAS;AAAA,cACvC,GAAGgB;AAAA,cACJ,SAAS,CAAAmB,MAASD,EAAgBC,GAAO1B,CAAK;AAAA,cAE7C,UAAAA;AAAA,YAAA;AAAA,UAAA,IAGH,gBAAA+B;AAAA,YAACU;AAAA,YAAA;AAAA,cACC,SAASC,EAAU;AAAA,cACnB,MAAMC,EAAO;AAAA,cACb,WAAWP;AAAA,gBACTH,EAAO;AAAA,gBACPjC,MAAUT,KAAQ0C,EAAO,0BAA0B;AAAA,cAAA;AAAA,cAErD,gBAAcjC,MAAUT,IAAO,SAAS;AAAA,cACxC,SAAS,MAAMgC,EAAKvB,CAAK;AAAA,cAExB,UAAAA;AAAA,YAAA;AAAA,UAAA,KAzBEA,CA4BT;AAAA,QAAA,GAGN;AAAA,QAEC2B;AAAA,UACCpC,IAAO;AAAA,UACP8C,EAAa,wBAAwBjC,IAAWwC,IAAAhC,KAAA,gBAAAA,EAAQ,eAAR,gBAAAgC,EAAoB,IAAI;AAAA,UACxE,gBAAAb,EAACc,GAAA,EAAe,eAAW,GAAA,CAAC;AAAA,QAAA;AAAA,MAC9B;AAAA,IAAA;AAAA,EAAA;AAGN,GAEAnD,uBAAkCO,CAAU;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";@layer ui{.ui-pagination-K-L20{display:flex;align-items:center;gap:var(--hd-space-1);flex-wrap:wrap;row-gap:var(--hd-space-1);justify-content:center;padding-block:var(--hd-space-5)}.ui-pagination__list--9HqC{display:flex;align-items:center;gap:var(--hd-space-1);flex-wrap:wrap;row-gap:var(--hd-space-1);justify-content:center;list-style:none;margin:0;padding:0}[dir=rtl] .ui-pagination__arrow-XIgoX svg{transform:scaleX(-1)}.ui-pagination__arrow-XIgoX,.ui-pagination__page-TpoJM{position:relative}.ui-pagination__arrow-XIgoX:after,.ui-pagination__page-TpoJM:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-pagination__arrow-XIgoX,.ui-pagination__page-TpoJM{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding-inline:var(--hd-space-2);font-family:var(--hd-font-display);font-size:var(--hd-type-small-size);font-weight:var(--hd-font-weight-semibold);font-variant-numeric:tabular-nums;color:var(--hd-text-2);background-color:var(--hd-bg-surface);border:1px solid var(--hd-border);border-radius:var(--hd-radius-sm);cursor:pointer;text-decoration:none;transition:border-color var(--hd-duration-fast) var(--hd-ease-standard),color var(--hd-duration-fast) var(--hd-ease-standard),background-color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-pagination__arrow-XIgoX:hover:not(:disabled),.ui-pagination__page-TpoJM:hover:not(:disabled){border-color:var(--hd-border-strong);color:var(--hd-text)}.ui-pagination__arrow-XIgoX:focus-visible,.ui-pagination__page-TpoJM:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, 2px)}@media (prefers-reduced-motion: reduce){.ui-pagination__arrow-XIgoX,.ui-pagination__page-TpoJM{transition:none}}.ui-pagination-K-L20 .ui-pagination__arrow-XIgoX,.ui-pagination-K-L20 .ui-pagination__page-TpoJM{width:auto;min-width:40px;height:40px;min-height:40px;padding:0;padding-inline:var(--hd-space-2);font-family:var(--hd-font-display);font-size:var(--hd-type-small-size);font-weight:var(--hd-font-weight-semibold);font-variant-numeric:tabular-nums;letter-spacing:normal;color:var(--hd-text-2);background-color:var(--hd-bg-surface);border:1px solid var(--hd-border);border-radius:var(--hd-radius-sm)}.ui-pagination-K-L20 .ui-pagination__arrow-XIgoX:hover:not(:disabled),.ui-pagination-K-L20 .ui-pagination__page-TpoJM:hover:not(:disabled){border-color:var(--hd-border-strong);background-color:var(--hd-bg-surface);color:var(--hd-text)}.ui-pagination-K-L20 .ui-pagination__arrow-XIgoX:disabled,.ui-pagination-K-L20 .ui-pagination__page-TpoJM:disabled{background-color:var(--hd-bg-raised);border-color:var(--hd-border);cursor:not-allowed;color:var(--hd-text-3)}@media (forced-colors: active){.ui-pagination-K-L20 .ui-pagination__arrow-XIgoX:disabled,.ui-pagination-K-L20 .ui-pagination__page-TpoJM:disabled{color:GrayText;border-color:GrayText}}.ui-pagination-K-L20 .ui-pagination__page--active-XHeaz{background-color:var(--hd-primary);border-color:var(--hd-primary);color:var(--hd-on-primary)}.ui-pagination-K-L20 .ui-pagination__page--active-XHeaz:hover:not(:disabled),.ui-pagination-K-L20 .ui-pagination__page--active-XHeaz:active:not(:disabled){background-color:var(--hd-primary-hover);border-color:var(--hd-primary-hover);color:var(--hd-on-primary)}.ui-pagination__gap-qoDyI{display:inline-flex;align-items:flex-end;justify-content:center;min-width:24px;height:40px;color:var(--hd-text-3);-webkit-user-select:none;user-select:none}@media (max-width: 640px){.ui-pagination-K-L20 .ui-pagination__arrow-XIgoX,.ui-pagination-K-L20 .ui-pagination__page-TpoJM,.ui-pagination__page-TpoJM{min-width:36px;padding-inline:var(--hd-space-1)}.ui-pagination__gap-qoDyI{min-width:16px}}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),t=require("react"),n=require("../../helpers/class-name.helper.cjs"),i=require("../../helpers/component.helper.cjs"),e={default:{"panel":"ui-panel-Sv-1m","panel__header":"ui-panel__header-ysexh","panel__heading":"ui-panel__heading-xLCsB","panel__icon":"ui-panel__icon--yPQT","panel__headingText":"ui-panel__headingText--XqxW","panel__title":"ui-panel__title-6-6uC","panel__description":"ui-panel__description-qXTSM","panel__actions":"ui-panel__actions-Ra-zy","panel__body":"ui-panel__body-lo5aX","panel__body--sm":"ui-panel__body--sm-6XP6W","panel__body--lg":"ui-panel__body--lg-RTK5B","panel__body--flush":"ui-panel__body--flush-iK75R","panel__footer":"ui-panel__footer-qLpR1","panel__footerInner":"ui-panel__footerInner-r6VQI","form":"ui-form-o9UqJ","form--2":"ui-form--2-HdwDc","row":"ui-row-vUGpa"}},h=({children:s,title:l,description:d,actions:c,icon:r,isFlush:m,gap:u="md",footer:o,as:_="section",className:f,bodyClassName:x,testId:p})=>a.jsxs(_,{className:n.cx(e.default.panel,f),"data-testid":p,children:[(l||c)&&a.jsxs("div",{className:e.default.panel__header,children:[a.jsxs("div",{className:e.default.panel__heading,children:[r&&a.jsx("span",{className:e.default.panel__icon,children:r}),a.jsxs("div",{className:e.default.panel__headingText,children:[l&&a.jsx("h2",{className:e.default.panel__title,children:l}),d&&a.jsx("p",{className:e.default.panel__description,children:d})]})]}),c&&a.jsx("div",{className:e.default.panel__actions,children:c})]}),a.jsx("div",{className:n.cx(e.default.panel__body,e.default[`panel__body--${u}`],m&&e.default["panel__body--flush"],x),children:s}),o&&a.jsx("div",{className:e.default.panel__footer,children:a.jsx("div",{className:e.default.panel__footerInner,children:o})})]}),j=i.named(t.memo(({children:s,columns:l=1,className:d})=>a.jsx("div",{className:n.cx(e.default.form,e.default[`form--${l}`],d),children:s})),"PanelForm"),N=i.named(t.memo(({children:s,className:l})=>a.jsx("div",{className:n.cx(e.default.row,l),children:s})),"PanelRow"),v=t.memo(h);exports.PanelForm=j;exports.PanelRow=N;exports.default=v;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Panel/index.tsx"],"sourcesContent":["import { type ElementType, type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n children: ReactNode;\n /** Panel başlığı. */\n title?: string;\n /** Başlık altındaki tek satırlık açıklama. */\n description?: ReactNode;\n /** Başlık şeridinin sağında duran eylemler. */\n actions?: ReactNode;\n /** Başlık şeridindeki ikon; başlığın solunda. */\n icon?: ReactNode;\n /** Gövde dolgusunu kaldırır: tablo ve tam genişlikte listeler için. */\n isFlush?: boolean;\n /** Gövde içindeki dikey aralık. */\n gap?: 'sm' | 'md' | 'lg';\n /** Dipte duran eylem şeridi (form kaydet, toplam). */\n footer?: ReactNode;\n as?: ElementType;\n className?: string;\n bodyClassName?: string;\n testId?: string;\n};\n\n/**\n * Panel — başlığı olan içerik kutusu.\n * @example <Panel title=\"Profil bilgileri\" description=\"Fatura bu bilgilerle kesilir\">…\n */\nconst Panel: FC<Props> = ({\n children,\n title,\n description,\n actions,\n icon,\n isFlush,\n gap = 'md',\n footer,\n as: Tag = 'section',\n className,\n bodyClassName,\n testId,\n}) => (\n <Tag className={cx(styles.panel, className)} data-testid={testId}>\n {(title || actions) && (\n <div className={styles.panel__header}>\n <div className={styles.panel__heading}>\n {icon && <span className={styles.panel__icon}>{icon}</span>}\n\n <div className={styles.panel__headingText}>\n {title && <h2 className={styles.panel__title}>{title}</h2>}\n {description && <p className={styles.panel__description}>{description}</p>}\n </div>\n </div>\n\n {actions && <div className={styles.panel__actions}>{actions}</div>}\n </div>\n )}\n\n <div\n className={cx(\n styles.panel__body,\n styles[`panel__body--${gap}`],\n isFlush && styles['panel__body--flush'],\n bodyClassName,\n )}\n >\n {children}\n </div>\n\n {/*\n Dip şeridi İKİ kutu: dış bant ile iç sütun.\n\n Bant panelin tamamını kaplamak zorunda — kendi zemini ve üst çizgisi\n var, daraltıldığında panelin dibinde yarım bir şerit kalır. Ama şeridin\n İÇERİĞİ, panelde bir {@link PanelForm} varsa onun sütununda bitmeli;\n genişlik kararını taşıyan tek kutu iç olan. Ölçüldü: form 97-662 px\n arasında dururken \"Sorgula\" düğmesi 1238 px'te, yani gönderdiği formdan\n 576 px uzakta çiziliyordu.\n */}\n {footer && (\n <div className={styles.panel__footer}>\n <div className={styles.panel__footerInner}>{footer}</div>\n </div>\n )}\n </Tag>\n);\n\ntype PanelFormProps = {\n children: ReactNode;\n /** Sütun sayısı. `2` dar ekranda kendiliğinden tek sütuna düşer. */\n columns?: 1 | 2;\n className?: string;\n};\n\n/** Panel içindeki form ızgarası. */\nexport const PanelForm: FC<PanelFormProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ children, columns = 1, className }) => (\n <div className={cx(styles.form, styles[`form--${columns}`], className)}>{children}</div>\n )),\n 'PanelForm',\n);\n\ntype PanelRowProps = {\n children: ReactNode;\n className?: string;\n};\n\n/** İki alanı yan yana koyan satır. */\nexport const PanelRow: FC<PanelRowProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ children, className }) => (\n <div className={cx(styles.row, className)}>{children}</div>\n )),\n 'PanelRow',\n);\n\nexport default /*#__PURE__*/ memo(Panel) as typeof Panel;\n"],"names":["Panel","children","title","description","actions","icon","isFlush","gap","footer","Tag","className","bodyClassName","testId","jsxs","cx","styles","jsx","PanelForm","named","memo","columns","PanelRow","index"],"mappings":"0SAiCMA,EAAmB,CAAC,CACxB,SAAAC,EACA,MAAAC,EACA,YAAAC,EACA,QAAAC,EACA,KAAAC,EACA,QAAAC,EACA,IAAAC,EAAM,KACN,OAAAC,EACA,GAAIC,EAAM,UACV,UAAAC,EACA,cAAAC,EACA,OAAAC,CACF,IACEC,OAACJ,GAAI,UAAWK,EAAAA,GAAGC,EAAAA,QAAO,MAAOL,CAAS,EAAG,cAAaE,EACtD,SAAA,EAAAV,GAASE,IACTS,OAAC,MAAA,CAAI,UAAWE,EAAAA,QAAO,cACrB,SAAA,CAAAF,EAAAA,KAAC,MAAA,CAAI,UAAWE,EAAAA,QAAO,eACpB,SAAA,CAAAV,GAAQW,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,YAAc,SAAAV,EAAK,EAEpDQ,EAAAA,KAAC,MAAA,CAAI,UAAWE,EAAAA,QAAO,mBACpB,SAAA,CAAAb,GAASc,EAAAA,IAAC,KAAA,CAAG,UAAWD,EAAAA,QAAO,aAAe,SAAAb,EAAM,EACpDC,GAAea,EAAAA,IAAC,IAAA,CAAE,UAAWD,EAAAA,QAAO,mBAAqB,SAAAZ,CAAA,CAAY,CAAA,CAAA,CACxE,CAAA,EACF,EAECC,GAAWY,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,eAAiB,SAAAX,CAAA,CAAQ,CAAA,EAC9D,EAGFY,EAAAA,IAAC,MAAA,CACC,UAAWF,EAAAA,GACTC,EAAAA,QAAO,YACPA,EAAAA,QAAO,gBAAgBR,CAAG,EAAE,EAC5BD,GAAWS,EAAAA,QAAO,oBAAoB,EACtCJ,CAAA,EAGD,SAAAV,CAAA,CAAA,EAaFO,GACCQ,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,cACrB,SAAAC,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,mBAAqB,SAAAP,CAAA,CAAO,CAAA,CACrD,CAAA,EAEJ,EAWWS,EAA8CC,EAAAA,MAC3CC,OAAK,CAAC,CAAE,SAAAlB,EAAU,QAAAmB,EAAU,EAAG,UAAAV,CAAA,IAC3CM,EAAAA,IAAC,MAAA,CAAI,UAAWF,EAAAA,GAAGC,EAAAA,QAAO,KAAMA,UAAO,SAASK,CAAO,EAAE,EAAGV,CAAS,EAAI,SAAAT,CAAA,CAAS,CACnF,EACD,WACF,EAQaoB,EAA4CH,EAAAA,MACzCC,EAAAA,KAAK,CAAC,CAAE,SAAAlB,EAAU,UAAAS,KAC9BM,EAAAA,IAAC,MAAA,CAAI,UAAWF,EAAAA,GAAGC,EAAAA,QAAO,IAAKL,CAAS,EAAI,SAAAT,EAAS,CACtD,EACD,UACF,EAEAqB,SAAkCtB,CAAK"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ElementType, FC, ReactNode } from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
/** Panel başlığı. */
|
|
5
|
+
title?: string;
|
|
6
|
+
/** Başlık altındaki tek satırlık açıklama. */
|
|
7
|
+
description?: ReactNode;
|
|
8
|
+
/** Başlık şeridinin sağında duran eylemler. */
|
|
9
|
+
actions?: ReactNode;
|
|
10
|
+
/** Başlık şeridindeki ikon; başlığın solunda. */
|
|
11
|
+
icon?: ReactNode;
|
|
12
|
+
/** Gövde dolgusunu kaldırır: tablo ve tam genişlikte listeler için. */
|
|
13
|
+
isFlush?: boolean;
|
|
14
|
+
/** Gövde içindeki dikey aralık. */
|
|
15
|
+
gap?: 'sm' | 'md' | 'lg';
|
|
16
|
+
/** Dipte duran eylem şeridi (form kaydet, toplam). */
|
|
17
|
+
footer?: ReactNode;
|
|
18
|
+
as?: ElementType;
|
|
19
|
+
className?: string;
|
|
20
|
+
bodyClassName?: string;
|
|
21
|
+
testId?: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Panel — başlığı olan içerik kutusu.
|
|
25
|
+
* @example <Panel title="Profil bilgileri" description="Fatura bu bilgilerle kesilir">…
|
|
26
|
+
*/
|
|
27
|
+
declare const Panel: FC<Props>;
|
|
28
|
+
type PanelFormProps = {
|
|
29
|
+
children: ReactNode;
|
|
30
|
+
/** Sütun sayısı. `2` dar ekranda kendiliğinden tek sütuna düşer. */
|
|
31
|
+
columns?: 1 | 2;
|
|
32
|
+
className?: string;
|
|
33
|
+
};
|
|
34
|
+
/** Panel içindeki form ızgarası. */
|
|
35
|
+
export declare const PanelForm: FC<PanelFormProps>;
|
|
36
|
+
type PanelRowProps = {
|
|
37
|
+
children: ReactNode;
|
|
38
|
+
className?: string;
|
|
39
|
+
};
|
|
40
|
+
/** İki alanı yan yana koyan satır. */
|
|
41
|
+
export declare const PanelRow: FC<PanelRowProps>;
|
|
42
|
+
declare const _default: typeof Panel;
|
|
43
|
+
export default _default;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsxs as d, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { memo as c } from "react";
|
|
3
|
+
import { cx as m } from "../../helpers/class-name.helper.js";
|
|
4
|
+
import { named as _ } from "../../helpers/component.helper.js";
|
|
5
|
+
const e = {"panel":"ui-panel-Sv-1m","panel__header":"ui-panel__header-ysexh","panel__heading":"ui-panel__heading-xLCsB","panel__icon":"ui-panel__icon--yPQT","panel__headingText":"ui-panel__headingText--XqxW","panel__title":"ui-panel__title-6-6uC","panel__description":"ui-panel__description-qXTSM","panel__actions":"ui-panel__actions-Ra-zy","panel__body":"ui-panel__body-lo5aX","panel__body--sm":"ui-panel__body--sm-6XP6W","panel__body--lg":"ui-panel__body--lg-RTK5B","panel__body--flush":"ui-panel__body--flush-iK75R","panel__footer":"ui-panel__footer-qLpR1","panel__footerInner":"ui-panel__footerInner-r6VQI","form":"ui-form-o9UqJ","form--2":"ui-form--2-HdwDc","row":"ui-row-vUGpa"};
|
|
6
|
+
const x = ({
|
|
7
|
+
children: s,
|
|
8
|
+
title: l,
|
|
9
|
+
description: n,
|
|
10
|
+
actions: r,
|
|
11
|
+
icon: o,
|
|
12
|
+
isFlush: p,
|
|
13
|
+
gap: h = "md",
|
|
14
|
+
footer: i,
|
|
15
|
+
as: t = "section",
|
|
16
|
+
className: N,
|
|
17
|
+
bodyClassName: f,
|
|
18
|
+
testId: v
|
|
19
|
+
}) => /* @__PURE__ */ d(t, { className: m(e.panel, N), "data-testid": v, children: [
|
|
20
|
+
(l || r) && /* @__PURE__ */ d("div", { className: e.panel__header, children: [
|
|
21
|
+
/* @__PURE__ */ d("div", { className: e.panel__heading, children: [
|
|
22
|
+
o && /* @__PURE__ */ a("span", { className: e.panel__icon, children: o }),
|
|
23
|
+
/* @__PURE__ */ d("div", { className: e.panel__headingText, children: [
|
|
24
|
+
l && /* @__PURE__ */ a("h2", { className: e.panel__title, children: l }),
|
|
25
|
+
n && /* @__PURE__ */ a("p", { className: e.panel__description, children: n })
|
|
26
|
+
] })
|
|
27
|
+
] }),
|
|
28
|
+
r && /* @__PURE__ */ a("div", { className: e.panel__actions, children: r })
|
|
29
|
+
] }),
|
|
30
|
+
/* @__PURE__ */ a(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
className: m(
|
|
34
|
+
e.panel__body,
|
|
35
|
+
e[`panel__body--${h}`],
|
|
36
|
+
p && e["panel__body--flush"],
|
|
37
|
+
f
|
|
38
|
+
),
|
|
39
|
+
children: s
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
i && /* @__PURE__ */ a("div", { className: e.panel__footer, children: /* @__PURE__ */ a("div", { className: e.panel__footerInner, children: i }) })
|
|
43
|
+
] }), j = /* @__PURE__ */ _(
|
|
44
|
+
/* @__PURE__ */ c(({ children: s, columns: l = 1, className: n }) => /* @__PURE__ */ a("div", { className: m(e.form, e[`form--${l}`], n), children: s })),
|
|
45
|
+
"PanelForm"
|
|
46
|
+
), u = /* @__PURE__ */ _(
|
|
47
|
+
/* @__PURE__ */ c(({ children: s, className: l }) => /* @__PURE__ */ a("div", { className: m(e.row, l), children: s })),
|
|
48
|
+
"PanelRow"
|
|
49
|
+
), F = /* @__PURE__ */ c(x);
|
|
50
|
+
export {
|
|
51
|
+
j as PanelForm,
|
|
52
|
+
u as PanelRow,
|
|
53
|
+
F as default
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Panel/index.tsx"],"sourcesContent":["import { type ElementType, type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n children: ReactNode;\n /** Panel başlığı. */\n title?: string;\n /** Başlık altındaki tek satırlık açıklama. */\n description?: ReactNode;\n /** Başlık şeridinin sağında duran eylemler. */\n actions?: ReactNode;\n /** Başlık şeridindeki ikon; başlığın solunda. */\n icon?: ReactNode;\n /** Gövde dolgusunu kaldırır: tablo ve tam genişlikte listeler için. */\n isFlush?: boolean;\n /** Gövde içindeki dikey aralık. */\n gap?: 'sm' | 'md' | 'lg';\n /** Dipte duran eylem şeridi (form kaydet, toplam). */\n footer?: ReactNode;\n as?: ElementType;\n className?: string;\n bodyClassName?: string;\n testId?: string;\n};\n\n/**\n * Panel — başlığı olan içerik kutusu.\n * @example <Panel title=\"Profil bilgileri\" description=\"Fatura bu bilgilerle kesilir\">…\n */\nconst Panel: FC<Props> = ({\n children,\n title,\n description,\n actions,\n icon,\n isFlush,\n gap = 'md',\n footer,\n as: Tag = 'section',\n className,\n bodyClassName,\n testId,\n}) => (\n <Tag className={cx(styles.panel, className)} data-testid={testId}>\n {(title || actions) && (\n <div className={styles.panel__header}>\n <div className={styles.panel__heading}>\n {icon && <span className={styles.panel__icon}>{icon}</span>}\n\n <div className={styles.panel__headingText}>\n {title && <h2 className={styles.panel__title}>{title}</h2>}\n {description && <p className={styles.panel__description}>{description}</p>}\n </div>\n </div>\n\n {actions && <div className={styles.panel__actions}>{actions}</div>}\n </div>\n )}\n\n <div\n className={cx(\n styles.panel__body,\n styles[`panel__body--${gap}`],\n isFlush && styles['panel__body--flush'],\n bodyClassName,\n )}\n >\n {children}\n </div>\n\n {/*\n Dip şeridi İKİ kutu: dış bant ile iç sütun.\n\n Bant panelin tamamını kaplamak zorunda — kendi zemini ve üst çizgisi\n var, daraltıldığında panelin dibinde yarım bir şerit kalır. Ama şeridin\n İÇERİĞİ, panelde bir {@link PanelForm} varsa onun sütununda bitmeli;\n genişlik kararını taşıyan tek kutu iç olan. Ölçüldü: form 97-662 px\n arasında dururken \"Sorgula\" düğmesi 1238 px'te, yani gönderdiği formdan\n 576 px uzakta çiziliyordu.\n */}\n {footer && (\n <div className={styles.panel__footer}>\n <div className={styles.panel__footerInner}>{footer}</div>\n </div>\n )}\n </Tag>\n);\n\ntype PanelFormProps = {\n children: ReactNode;\n /** Sütun sayısı. `2` dar ekranda kendiliğinden tek sütuna düşer. */\n columns?: 1 | 2;\n className?: string;\n};\n\n/** Panel içindeki form ızgarası. */\nexport const PanelForm: FC<PanelFormProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ children, columns = 1, className }) => (\n <div className={cx(styles.form, styles[`form--${columns}`], className)}>{children}</div>\n )),\n 'PanelForm',\n);\n\ntype PanelRowProps = {\n children: ReactNode;\n className?: string;\n};\n\n/** İki alanı yan yana koyan satır. */\nexport const PanelRow: FC<PanelRowProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ children, className }) => (\n <div className={cx(styles.row, className)}>{children}</div>\n )),\n 'PanelRow',\n);\n\nexport default /*#__PURE__*/ memo(Panel) as typeof Panel;\n"],"names":["Panel","children","title","description","actions","icon","isFlush","gap","footer","Tag","className","bodyClassName","testId","jsxs","cx","styles","jsx","PanelForm","named","memo","columns","PanelRow","index"],"mappings":";;;;;AAiCA,MAAMA,IAAmB,CAAC;AAAA,EACxB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,QAAAC;AAAA,EACA,IAAIC,IAAM;AAAA,EACV,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AACF,MACE,gBAAAC,EAACJ,KAAI,WAAWK,EAAGC,EAAO,OAAOL,CAAS,GAAG,eAAaE,GACtD,UAAA;AAAA,GAAAV,KAASE,MACT,gBAAAS,EAAC,OAAA,EAAI,WAAWE,EAAO,eACrB,UAAA;AAAA,IAAA,gBAAAF,EAAC,OAAA,EAAI,WAAWE,EAAO,gBACpB,UAAA;AAAA,MAAAV,KAAQ,gBAAAW,EAAC,QAAA,EAAK,WAAWD,EAAO,aAAc,UAAAV,GAAK;AAAA,MAEpD,gBAAAQ,EAAC,OAAA,EAAI,WAAWE,EAAO,oBACpB,UAAA;AAAA,QAAAb,KAAS,gBAAAc,EAAC,MAAA,EAAG,WAAWD,EAAO,cAAe,UAAAb,GAAM;AAAA,QACpDC,KAAe,gBAAAa,EAAC,KAAA,EAAE,WAAWD,EAAO,oBAAqB,UAAAZ,EAAA,CAAY;AAAA,MAAA,EAAA,CACxE;AAAA,IAAA,GACF;AAAA,IAECC,KAAW,gBAAAY,EAAC,OAAA,EAAI,WAAWD,EAAO,gBAAiB,UAAAX,EAAA,CAAQ;AAAA,EAAA,GAC9D;AAAA,EAGF,gBAAAY;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWF;AAAA,QACTC,EAAO;AAAA,QACPA,EAAO,gBAAgBR,CAAG,EAAE;AAAA,QAC5BD,KAAWS,EAAO,oBAAoB;AAAA,QACtCJ;AAAA,MAAA;AAAA,MAGD,UAAAV;AAAA,IAAA;AAAA,EAAA;AAAA,EAaFO,KACC,gBAAAQ,EAAC,OAAA,EAAI,WAAWD,EAAO,eACrB,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWD,EAAO,oBAAqB,UAAAP,EAAA,CAAO,EAAA,CACrD;AAAA,GAEJ,GAWWS,IAA8C,gBAAAC;AAAA,EAC3C,gBAAAC,EAAK,CAAC,EAAE,UAAAlB,GAAU,SAAAmB,IAAU,GAAG,WAAAV,EAAA,MAC3C,gBAAAM,EAAC,OAAA,EAAI,WAAWF,EAAGC,EAAO,MAAMA,EAAO,SAASK,CAAO,EAAE,GAAGV,CAAS,GAAI,UAAAT,EAAA,CAAS,CACnF;AAAA,EACD;AACF,GAQaoB,IAA4C,gBAAAH;AAAA,EACzC,gBAAAC,EAAK,CAAC,EAAE,UAAAlB,GAAU,WAAAS,QAC9B,gBAAAM,EAAC,OAAA,EAAI,WAAWF,EAAGC,EAAO,KAAKL,CAAS,GAAI,UAAAT,GAAS,CACtD;AAAA,EACD;AACF,GAEAqB,sBAAkCtB,CAAK;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-panel-Sv-1m{background-color:var(--hd-bg-surface);border:1px solid var(--hd-border);border-radius:var(--hd-radius-md);overflow:hidden}@media (max-width: 640px){.ui-panel-Sv-1m{border-radius:var(--hd-radius-sm)}}.ui-panel-Sv-1m{display:flex;flex-direction:column}.ui-panel__header-ysexh{display:flex;flex-wrap:wrap;align-items:center;gap:var(--hd-space-3);justify-content:space-between;padding:var(--hd-space-4) var(--hd-space-5);border-bottom:1px solid var(--hd-border);background-color:var(--hd-bg-surface)}@media (max-width: 640px){.ui-panel__header-ysexh{padding:var(--hd-space-3) var(--hd-space-4)}}.ui-panel__heading-xLCsB{display:flex;align-items:flex-start;gap:var(--hd-space-3);min-width:0}.ui-panel__icon--yPQT{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border-radius:var(--hd-radius-xs);background-color:var(--hd-bg-raised);color:var(--hd-text-2);font-size:var(--hd-type-body-size)}.ui-panel__headingText--XqxW{display:flex;flex-direction:column;gap:2px;min-width:0}.ui-panel__title-6-6uC{font-family:var(--hd-font-body);font-size:var(--hd-type-body-size);font-weight:var(--hd-font-weight-semibold);line-height:var(--hd-type-h4-line-height);letter-spacing:normal;color:var(--hd-text);margin:0}.ui-panel__description-qXTSM{font-size:var(--hd-type-caption-size);line-height:var(--hd-type-body-line-height);color:var(--hd-text-2);margin:0;max-width:68ch}.ui-panel__actions-Ra-zy{display:flex;flex-wrap:wrap;align-items:center;gap:var(--hd-space-2);flex-shrink:0}.ui-panel__body-lo5aX{display:flex;flex-direction:column;gap:var(--hd-space-4);padding:var(--hd-space-5)}@media (max-width: 640px){.ui-panel__body-lo5aX{padding:var(--hd-space-4)}}.ui-panel__body-lo5aX{flex:1}.ui-panel__body--sm-6XP6W{gap:var(--hd-space-3)}.ui-panel__body--lg-RTK5B{gap:var(--hd-space-5)}.ui-panel__body--flush-iK75R{padding:0;gap:0}.ui-panel__footer-qLpR1{padding:var(--hd-space-4) var(--hd-space-5);border-top:1px solid var(--hd-border);background-color:var(--hd-bg-raised)}@media (max-width: 640px){.ui-panel__footer-qLpR1{padding:var(--hd-space-3) var(--hd-space-4)}}.ui-panel__footerInner-r6VQI{display:flex;flex-wrap:wrap;align-items:center;gap:var(--hd-space-3);justify-content:flex-end}@media (max-width: 640px){.ui-panel__footerInner-r6VQI>*{flex:1 1 auto}}.ui-panel-Sv-1m:has(>.ui-panel__body-lo5aX .ui-form-o9UqJ) .ui-panel__footerInner-r6VQI{max-width:56ch;margin-inline-end:auto}.ui-panel-Sv-1m:has(>.ui-panel__body-lo5aX .ui-form--2-HdwDc) .ui-panel__footerInner-r6VQI{max-width:68ch}.ui-form-o9UqJ{display:grid;gap:var(--hd-space-4);max-width:56ch}.ui-form--2-HdwDc{grid-template-columns:1fr 1fr;max-width:68ch}@media (max-width: 640px){.ui-form--2-HdwDc{grid-template-columns:1fr}}.ui-row-vUGpa{display:grid;grid-template-columns:1fr 1fr;gap:var(--hd-space-4)}@media (max-width: 640px){.ui-row-vUGpa{grid-template-columns:1fr}}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),i=require("react"),o=require("react-bootstrap-icons"),w=require("../../helpers/component.helper.cjs"),a=require("../../helpers/label.helper.cjs"),x=require("../../theme/context.cjs"),h=require("../IconButton/index.cjs"),f=require("../Input/index.cjs"),r={default:{"password":"ui-password-viMea","password__field":"ui-password__field-WI1h1","password__toggle":"ui-password__toggle-O6R2a"}},q=({className:n,showLabel:l,hideLabel:d,...u})=>{const{labels:e}=x.useUi(),[t,c]=i.useState(!1),p=t?a.resolveLabel("PasswordInput.hideLabel",d,e==null?void 0:e.passwordHide):a.resolveLabel("PasswordInput.showLabel",l,e==null?void 0:e.passwordShow);return s.jsxs("span",{className:r.default.password,children:[s.jsx(f.default,{...u,className:`${r.default.password__field} ${n??""}`.trim(),type:t?"text":"password"}),s.jsx(h.default,{className:r.default.password__toggle,icon:t?s.jsx(o.EyeSlashFill,{"aria-hidden":!0}):s.jsx(o.EyeFill,{"aria-hidden":!0}),label:p,variant:"ghost",size:"sm",onClick:()=>c(m=>!m)})]})},_=i.memo(w.named(q,"PasswordInput"));exports.default=_;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/PasswordInput/index.tsx"],"sourcesContent":["'use client';\n\nimport { FC, InputHTMLAttributes, memo, useState } from 'react';\nimport { EyeFill, EyeSlashFill } from 'react-bootstrap-icons';\n\nimport { named } from '../../helpers/component.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport IconButton from '../IconButton';\nimport Input from '../Input';\n\nimport styles from './index.module.scss';\n\n/* `size`: `Input`ta artik olcu adi (`sm` / `md`); yerel karakter genisligi `Input`a gecemez. */\ntype Props = Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> & {\n /** Şifre gizliyken düğmenin erişilebilir adı. */\n showLabel?: string;\n /** Şifre görünürken düğmenin erişilebilir adı. */\n hideLabel?: string;\n};\n\n/**\n * Şifre girdisi — yanında göz düğmesi. iki tüketici uygulamada BİREBİR AYNI dosya\n * olarak duruyordu\n */\nconst PasswordInput: FC<Props> = ({ className, showLabel, hideLabel, ...rest }) => {\n const { labels } = useUi();\n const [isVisible, setIsVisible] = useState(false);\n\n const toggleLabel = isVisible\n ? resolveLabel('PasswordInput.hideLabel', hideLabel, labels?.passwordHide)\n : resolveLabel('PasswordInput.showLabel', showLabel, labels?.passwordShow);\n\n return (\n <span className={styles.password}>\n <Input\n {...rest}\n className={`${styles.password__field} ${className ?? ''}`.trim()}\n type={isVisible ? 'text' : 'password'}\n />\n\n <IconButton\n className={styles.password__toggle}\n icon={isVisible ? <EyeSlashFill aria-hidden /> : <EyeFill aria-hidden />}\n label={toggleLabel}\n variant=\"ghost\"\n size=\"sm\"\n /* `tabIndex` DUSURULMEZ: klavye kullanicisi de sifresini gorebilmeli. */\n onClick={() => setIsVisible(current => !current)}\n />\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(PasswordInput, 'PasswordInput'),\n) as typeof PasswordInput;\n"],"names":["PasswordInput","className","showLabel","hideLabel","rest","labels","useUi","isVisible","setIsVisible","useState","toggleLabel","resolveLabel","jsxs","styles","jsx","Input","IconButton","EyeSlashFill","EyeFill","current","index","memo","named"],"mappings":"+bAwBMA,EAA2B,CAAC,CAAE,UAAAC,EAAW,UAAAC,EAAW,UAAAC,EAAW,GAAGC,KAAW,CACjF,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EACb,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAS,EAAK,EAE1CC,EAAcH,EAChBI,eAAa,0BAA2BR,EAAWE,GAAA,YAAAA,EAAQ,YAAY,EACvEM,EAAAA,aAAa,0BAA2BT,EAAWG,GAAA,YAAAA,EAAQ,YAAY,EAE3E,OACEO,EAAAA,KAAC,OAAA,CAAK,UAAWC,EAAAA,QAAO,SACtB,SAAA,CAAAC,EAAAA,IAACC,EAAAA,QAAA,CACE,GAAGX,EACJ,UAAW,GAAGS,EAAAA,QAAO,eAAe,IAAIZ,GAAa,EAAE,GAAG,KAAA,EAC1D,KAAMM,EAAY,OAAS,UAAA,CAAA,EAG7BO,EAAAA,IAACE,EAAAA,QAAA,CACC,UAAWH,EAAAA,QAAO,iBAClB,KAAMN,EAAYO,EAAAA,IAACG,EAAAA,aAAA,CAAa,cAAW,GAAC,EAAKH,EAAAA,IAACI,EAAAA,QAAA,CAAQ,cAAW,EAAA,CAAC,EACtE,MAAOR,EACP,QAAQ,QACR,KAAK,KAEL,QAAS,IAAMF,EAAaW,GAAW,CAACA,CAAO,CAAA,CAAA,CACjD,EACF,CAEJ,EAEAC,EAA6BC,EAAAA,KACbC,EAAAA,MAAMtB,EAAe,eAAe,CACpD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FC, InputHTMLAttributes } from 'react';
|
|
2
|
+
type Props = Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> & {
|
|
3
|
+
/** Şifre gizliyken düğmenin erişilebilir adı. */
|
|
4
|
+
showLabel?: string;
|
|
5
|
+
/** Şifre görünürken düğmenin erişilebilir adı. */
|
|
6
|
+
hideLabel?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Şifre girdisi — yanında göz düğmesi. iki tüketici uygulamada BİREBİR AYNI dosya
|
|
10
|
+
* olarak duruyordu
|
|
11
|
+
*/
|
|
12
|
+
declare const PasswordInput: FC<Props>;
|
|
13
|
+
declare const _default: typeof PasswordInput;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as c, jsx as o } from "react/jsx-runtime";
|
|
3
|
+
import { memo as u, useState as f } from "react";
|
|
4
|
+
import { EyeSlashFill as w, EyeFill as h } from "react-bootstrap-icons";
|
|
5
|
+
import { named as I } from "../../helpers/component.helper.js";
|
|
6
|
+
import { resolveLabel as e } from "../../helpers/label.helper.js";
|
|
7
|
+
import { useUi as g } from "../../theme/context.js";
|
|
8
|
+
import x from "../IconButton/index.js";
|
|
9
|
+
import b from "../Input/index.js";
|
|
10
|
+
const t = {"password":"ui-password-viMea","password__field":"ui-password__field-WI1h1","password__toggle":"ui-password__toggle-O6R2a"};
|
|
11
|
+
const y = ({ className: i, showLabel: a, hideLabel: m, ...n }) => {
|
|
12
|
+
const { labels: s } = g(), [r, p] = f(!1), d = r ? e("PasswordInput.hideLabel", m, s == null ? void 0 : s.passwordHide) : e("PasswordInput.showLabel", a, s == null ? void 0 : s.passwordShow);
|
|
13
|
+
return /* @__PURE__ */ c("span", { className: t.password, children: [
|
|
14
|
+
/* @__PURE__ */ o(
|
|
15
|
+
b,
|
|
16
|
+
{
|
|
17
|
+
...n,
|
|
18
|
+
className: `${t.password__field} ${i ?? ""}`.trim(),
|
|
19
|
+
type: r ? "text" : "password"
|
|
20
|
+
}
|
|
21
|
+
),
|
|
22
|
+
/* @__PURE__ */ o(
|
|
23
|
+
x,
|
|
24
|
+
{
|
|
25
|
+
className: t.password__toggle,
|
|
26
|
+
icon: r ? /* @__PURE__ */ o(w, { "aria-hidden": !0 }) : /* @__PURE__ */ o(h, { "aria-hidden": !0 }),
|
|
27
|
+
label: d,
|
|
28
|
+
variant: "ghost",
|
|
29
|
+
size: "sm",
|
|
30
|
+
onClick: () => p((l) => !l)
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
] });
|
|
34
|
+
}, V = /* @__PURE__ */ u(
|
|
35
|
+
/* @__PURE__ */ I(y, "PasswordInput")
|
|
36
|
+
);
|
|
37
|
+
export {
|
|
38
|
+
V as default
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/PasswordInput/index.tsx"],"sourcesContent":["'use client';\n\nimport { FC, InputHTMLAttributes, memo, useState } from 'react';\nimport { EyeFill, EyeSlashFill } from 'react-bootstrap-icons';\n\nimport { named } from '../../helpers/component.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport IconButton from '../IconButton';\nimport Input from '../Input';\n\nimport styles from './index.module.scss';\n\n/* `size`: `Input`ta artik olcu adi (`sm` / `md`); yerel karakter genisligi `Input`a gecemez. */\ntype Props = Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> & {\n /** Şifre gizliyken düğmenin erişilebilir adı. */\n showLabel?: string;\n /** Şifre görünürken düğmenin erişilebilir adı. */\n hideLabel?: string;\n};\n\n/**\n * Şifre girdisi — yanında göz düğmesi. iki tüketici uygulamada BİREBİR AYNI dosya\n * olarak duruyordu\n */\nconst PasswordInput: FC<Props> = ({ className, showLabel, hideLabel, ...rest }) => {\n const { labels } = useUi();\n const [isVisible, setIsVisible] = useState(false);\n\n const toggleLabel = isVisible\n ? resolveLabel('PasswordInput.hideLabel', hideLabel, labels?.passwordHide)\n : resolveLabel('PasswordInput.showLabel', showLabel, labels?.passwordShow);\n\n return (\n <span className={styles.password}>\n <Input\n {...rest}\n className={`${styles.password__field} ${className ?? ''}`.trim()}\n type={isVisible ? 'text' : 'password'}\n />\n\n <IconButton\n className={styles.password__toggle}\n icon={isVisible ? <EyeSlashFill aria-hidden /> : <EyeFill aria-hidden />}\n label={toggleLabel}\n variant=\"ghost\"\n size=\"sm\"\n /* `tabIndex` DUSURULMEZ: klavye kullanicisi de sifresini gorebilmeli. */\n onClick={() => setIsVisible(current => !current)}\n />\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(PasswordInput, 'PasswordInput'),\n) as typeof PasswordInput;\n"],"names":["PasswordInput","className","showLabel","hideLabel","rest","labels","useUi","isVisible","setIsVisible","useState","toggleLabel","resolveLabel","jsxs","styles","jsx","Input","IconButton","EyeSlashFill","EyeFill","current","index","memo","named"],"mappings":";;;;;;;;;;AAwBA,MAAMA,IAA2B,CAAC,EAAE,WAAAC,GAAW,WAAAC,GAAW,WAAAC,GAAW,GAAGC,QAAW;AACjF,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACb,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAE1CC,IAAcH,IAChBI,EAAa,2BAA2BR,GAAWE,KAAA,gBAAAA,EAAQ,YAAY,IACvEM,EAAa,2BAA2BT,GAAWG,KAAA,gBAAAA,EAAQ,YAAY;AAE3E,SACE,gBAAAO,EAAC,QAAA,EAAK,WAAWC,EAAO,UACtB,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACE,GAAGX;AAAA,QACJ,WAAW,GAAGS,EAAO,eAAe,IAAIZ,KAAa,EAAE,GAAG,KAAA;AAAA,QAC1D,MAAMM,IAAY,SAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAG7B,gBAAAO;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,WAAWH,EAAO;AAAA,QAClB,MAAMN,IAAY,gBAAAO,EAACG,GAAA,EAAa,eAAW,IAAC,IAAK,gBAAAH,EAACI,GAAA,EAAQ,eAAW,GAAA,CAAC;AAAA,QACtE,OAAOR;AAAA,QACP,SAAQ;AAAA,QACR,MAAK;AAAA,QAEL,SAAS,MAAMF,EAAa,CAAAW,MAAW,CAACA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EACjD,GACF;AAEJ,GAEAC,IAA6B,gBAAAC;AAAA,EACb,gBAAAC,EAAMtB,GAAe,eAAe;AACpD;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-password-viMea{position:relative;display:block}.ui-password__field-WI1h1 input{padding-inline-end:var(--hd-space-12)}.ui-password__toggle-O6R2a{position:absolute;inset-inline-end:var(--hd-space-2);top:50%;transform:translateY(-50%);color:var(--hd-text-2)}.ui-password__toggle-O6R2a:hover{color:var(--hd-text)}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const v=require("react/jsx-runtime"),r=require("react"),T=require("react-dom"),g=require("../../helpers/class-name.helper.cjs"),L=require("../../helpers/component.helper.cjs"),N=require("../../hooks/useDismissOnEscape.cjs"),P=require("../../helpers/focus.helper.cjs"),B=require("../../hooks/usePortalSurface.cjs"),I=require("../../hooks/usePositioning.cjs"),_={default:{"popover":"ui-popover-VxgiK","popover--top":"ui-popover--top-OUYwo","popover--bottom":"ui-popover--bottom-Q1K4X","popover--left":"ui-popover--left-9Rsjx","popover--right":"ui-popover--right-0TJeo"}},O=({trigger:d,children:y,label:R,side:h="bottom",align:j="start",isOpen:b,onOpenChange:l,className:k,testId:S})=>{const q=r.useId(),o=r.useRef(null),u=r.useRef(null),i=r.useRef(null),[w,D]=r.useState(!1),f=b!==void 0,n=f?b:w,m=I.default(o,u,{side:h,align:j,isOpen:n}),a=B.default(n,o,u),s=r.useCallback(e=>{f||D(e),l==null||l(e)},[f,l]);r.useEffect(()=>{if(!n)return;i.current=P.captureFocus();const e=u.current;return e&&P.focusFirstMeaningful(e),()=>{var t;(t=i.current)==null||t.call(i),i.current=null}},[n]);const F=r.useCallback(()=>s(!1),[s]);if(N.default(n,F),r.useEffect(()=>{if(!n)return;const e=t=>{var x,E;const c=t.target;(x=u.current)!=null&&x.contains(c)||(E=o.current)!=null&&E.contains(c)||s(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[n,s]),!r.isValidElement(d))return null;const p=d.props,M=r.cloneElement(d,{ref:o,"aria-expanded":n,"aria-haspopup":"dialog","aria-controls":n?q:void 0,onClick:e=>{var t;(t=p.onClick)==null||t.call(p,e),s(!n)}});return v.jsxs(v.Fragment,{children:[M,n&&a.container&&T.createPortal(v.jsx("div",{ref:u,id:q,...a.attributes,role:"dialog","aria-label":R,className:g.cx(_.default.popover,_.default[`popover--${m.side}`],k),style:{...m.style,...a.style,visibility:m.isPositioned?"visible":"hidden"},"data-testid":S,onBlur:e=>{var c;const t=e.relatedTarget;t&&(e.currentTarget.contains(t)||(c=o.current)!=null&&c.contains(t)||t.closest('[role="listbox"],[role="menu"],[role="dialog"]')||s(!1))},children:y}),a.container)]})},U=r.memo(L.named(O,"Popover"));exports.default=U;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|