@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,145 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as d, jsx as o } from "react/jsx-runtime";
|
|
3
|
+
import { memo as H, useId as L, useRef as J, useState as R } from "react";
|
|
4
|
+
import { CloudArrowUpFill as Q, ExclamationCircleFill as $, XLg as V } from "react-bootstrap-icons";
|
|
5
|
+
import { cx as f } from "../../helpers/class-name.helper.js";
|
|
6
|
+
import { named as W } from "../../helpers/component.helper.js";
|
|
7
|
+
import { resolveFormatter as h } from "../../helpers/label.helper.js";
|
|
8
|
+
import Z from "../../hooks/useAnnounce.js";
|
|
9
|
+
import y from "../IconButton/index.js";
|
|
10
|
+
import b from "../Progress/index.js";
|
|
11
|
+
import { useUi as ee } from "../../theme/context.js";
|
|
12
|
+
const a = {"upload":"ui-upload-v1pRY","upload__drop":"ui-upload__drop-OpNbO","upload__input":"ui-upload__input-Tcg9-","upload__drop--dragging":"ui-upload__drop--dragging-YztUx","upload__drop--invalid":"ui-upload__drop--invalid-JhwnL","upload__drop--disabled":"ui-upload__drop--disabled-zyfUv","upload__icon":"ui-upload__icon-KpMkq","upload__label":"ui-upload__label-M4HJb","upload__drag":"ui-upload__drag-ewSQw","upload__hint":"ui-upload__hint-MZRJ6","upload__error":"ui-upload__error-7GkCC","upload__list":"ui-upload__list-lbViQ","upload__file":"ui-upload__file-Znp1Q","upload__file--error":"ui-upload__file--error-wpbtA","upload__fileText":"ui-upload__fileText-EtJcs","upload__fileName":"ui-upload__fileName-ArF8-","upload__fileMeta":"ui-upload__fileMeta-i6sO1","upload__progress":"ui-upload__progress-JY2a5"};
|
|
13
|
+
const c = 1024, C = c * c, N = (l) => l < c ? `${l} B` : l < C ? `${Math.round(l / c)} KB` : `${(l / C).toFixed(1)} MB`, ae = ({
|
|
14
|
+
files: l,
|
|
15
|
+
onSelect: E,
|
|
16
|
+
onRemove: M,
|
|
17
|
+
label: P,
|
|
18
|
+
hint: u,
|
|
19
|
+
accept: T,
|
|
20
|
+
isMultiple: A,
|
|
21
|
+
maxSize: t,
|
|
22
|
+
removeLabel: K,
|
|
23
|
+
dropLabel: Y,
|
|
24
|
+
sizeErrorText: v,
|
|
25
|
+
isDisabled: s,
|
|
26
|
+
error: p,
|
|
27
|
+
children: k,
|
|
28
|
+
className: w,
|
|
29
|
+
testId: z
|
|
30
|
+
}) => {
|
|
31
|
+
const F = L(), U = L(), O = J(null), { labels: r } = ee(), B = Z(), [S, m] = R(!1), [X, q] = R([]), j = (e) => {
|
|
32
|
+
var D;
|
|
33
|
+
if (!e || e.length === 0) return;
|
|
34
|
+
const i = [...e], x = t === void 0 ? [] : i.filter((n) => n.size > t), _ = i.filter((n) => !x.includes(n)), g = x.map(
|
|
35
|
+
(n) => {
|
|
36
|
+
var I;
|
|
37
|
+
return v === void 0 ? h(
|
|
38
|
+
"FileUpload.tooLarge",
|
|
39
|
+
(I = r == null ? void 0 : r.fileUpload) == null ? void 0 : I.tooLarge,
|
|
40
|
+
n.name,
|
|
41
|
+
N(t ?? 0)
|
|
42
|
+
) : v.replace("{name}", n.name).replace("{max}", N(t ?? 0));
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
q(g), _.length > 0 && (E(_), B(h("FileUpload.added", (D = r == null ? void 0 : r.fileUpload) == null ? void 0 : D.added, _.length))), g.length > 0 && B(g.join(" "), "assertive");
|
|
46
|
+
}, G = (e) => {
|
|
47
|
+
e.preventDefault(), m(!1), !s && j(e.dataTransfer.files);
|
|
48
|
+
};
|
|
49
|
+
return /* @__PURE__ */ d("div", { className: f(a.upload, w), "data-testid": z, children: [
|
|
50
|
+
/* @__PURE__ */ d(
|
|
51
|
+
"label",
|
|
52
|
+
{
|
|
53
|
+
htmlFor: F,
|
|
54
|
+
className: f(
|
|
55
|
+
a.upload__drop,
|
|
56
|
+
S && a["upload__drop--dragging"],
|
|
57
|
+
s && a["upload__drop--disabled"],
|
|
58
|
+
p && a["upload__drop--invalid"]
|
|
59
|
+
),
|
|
60
|
+
onDragOver: (e) => {
|
|
61
|
+
e.preventDefault(), s || m(!0);
|
|
62
|
+
},
|
|
63
|
+
onDragLeave: () => m(!1),
|
|
64
|
+
onDrop: G,
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ o(Q, { "aria-hidden": !0, className: a.upload__icon }),
|
|
67
|
+
/* @__PURE__ */ o("span", { className: a.upload__label, children: P }),
|
|
68
|
+
/* @__PURE__ */ o("span", { className: a.upload__drag, children: Y }),
|
|
69
|
+
u && /* @__PURE__ */ o("span", { id: U, className: a.upload__hint, children: u }),
|
|
70
|
+
/* @__PURE__ */ o(
|
|
71
|
+
"input",
|
|
72
|
+
{
|
|
73
|
+
ref: O,
|
|
74
|
+
id: F,
|
|
75
|
+
type: "file",
|
|
76
|
+
className: a.upload__input,
|
|
77
|
+
accept: T,
|
|
78
|
+
multiple: A,
|
|
79
|
+
disabled: s,
|
|
80
|
+
"aria-describedby": u ? U : void 0,
|
|
81
|
+
"aria-invalid": p ? !0 : void 0,
|
|
82
|
+
onChange: (e) => {
|
|
83
|
+
j(e.target.files), e.target.value = "";
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
)
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
),
|
|
90
|
+
p && /* @__PURE__ */ d("p", { className: a.upload__error, role: "alert", children: [
|
|
91
|
+
/* @__PURE__ */ o($, { "aria-hidden": !0 }),
|
|
92
|
+
p
|
|
93
|
+
] }),
|
|
94
|
+
X.map((e) => /* @__PURE__ */ d("p", { className: a.upload__error, role: "alert", children: [
|
|
95
|
+
/* @__PURE__ */ o($, { "aria-hidden": !0 }),
|
|
96
|
+
e
|
|
97
|
+
] }, e)),
|
|
98
|
+
l.length > 0 && /* @__PURE__ */ o("ul", { className: a.upload__list, children: l.map((e) => {
|
|
99
|
+
var i;
|
|
100
|
+
return /* @__PURE__ */ d(
|
|
101
|
+
"li",
|
|
102
|
+
{
|
|
103
|
+
className: f(a.upload__file, e.error && a["upload__file--error"]),
|
|
104
|
+
children: [
|
|
105
|
+
/* @__PURE__ */ d("span", { className: a.upload__fileText, children: [
|
|
106
|
+
/* @__PURE__ */ o("span", { className: a.upload__fileName, children: e.name }),
|
|
107
|
+
/* @__PURE__ */ o("span", { className: a.upload__fileMeta, children: e.error ?? N(e.size) })
|
|
108
|
+
] }),
|
|
109
|
+
e.progress !== void 0 && /* @__PURE__ */ o(
|
|
110
|
+
b,
|
|
111
|
+
{
|
|
112
|
+
value: e.progress,
|
|
113
|
+
label: h(
|
|
114
|
+
"FileUpload.uploading",
|
|
115
|
+
(i = r == null ? void 0 : r.fileUpload) == null ? void 0 : i.uploading,
|
|
116
|
+
e.name
|
|
117
|
+
),
|
|
118
|
+
size: "sm",
|
|
119
|
+
className: a.upload__progress
|
|
120
|
+
}
|
|
121
|
+
),
|
|
122
|
+
/* @__PURE__ */ o(
|
|
123
|
+
y,
|
|
124
|
+
{
|
|
125
|
+
icon: /* @__PURE__ */ o(V, { "aria-hidden": !0 }),
|
|
126
|
+
label: `${e.name} — ${K}`,
|
|
127
|
+
variant: "ghost",
|
|
128
|
+
size: "sm",
|
|
129
|
+
onClick: () => M(e.id)
|
|
130
|
+
}
|
|
131
|
+
)
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
e.id
|
|
135
|
+
);
|
|
136
|
+
}) }),
|
|
137
|
+
k
|
|
138
|
+
] });
|
|
139
|
+
}, me = /* @__PURE__ */ H(
|
|
140
|
+
/* @__PURE__ */ W(ae, "FileUpload")
|
|
141
|
+
);
|
|
142
|
+
export {
|
|
143
|
+
me as default
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/FileUpload/index.tsx"],"sourcesContent":["'use client';\n\nimport { type DragEvent, memo, type ReactNode, useId, useRef, useState } from 'react';\n\nimport { CloudArrowUpFill, ExclamationCircleFill, XLg } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport { resolveFormatter } from '../../helpers/label.helper';\nimport useAnnounce from '../../hooks/useAnnounce';\nimport IconButton from '../IconButton';\nimport Progress from '../Progress';\n\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\nexport type UploadFile = {\n id: string;\n name: string;\n /** Bayt. */\n size: number;\n /** 0-100. `undefined` → yükleme başlamadı ya da bitti. */\n progress?: number;\n /** Bu dosyaya ait hata. */\n error?: string;\n};\n\ntype Props = {\n files: UploadFile[];\n /** Kullanıcı dosya seçtiğinde/bıraktığında çağrılır — DOĞRULANMIŞ liste. */\n onSelect: (files: File[]) => void;\n onRemove: (id: string) => void;\n /** Alanın görünür etiketi ve erişilebilir adı. */\n label: string;\n /** Etiketin altındaki kural cümlesi (\"PDF veya JPG, en fazla 5 MB\"). */\n hint?: string;\n /** `<input accept>` — tarayıcının dosya seçicisini süzer. */\n accept?: string;\n isMultiple?: boolean;\n /** Bayt. */\n maxSize?: number;\n /** Kaldırma düğmelerinin erişilebilir ad öneki (\"Kaldır\"). */\n removeLabel: string;\n /** Sürükle-bırak alanının içine yazılan çağrı (\"Dosyaları buraya bırakın\"). */\n dropLabel: string;\n /** Boyut aşıldığında yazılan hata; `{name}` ve `{max}` yerine konur. */\n sizeErrorText?: string;\n isDisabled?: boolean;\n /** Alanın tamamına ait hata (sunucu reddi). */\n error?: string;\n children?: ReactNode;\n className?: string;\n testId?: string;\n};\n\n/** İkili önek — dosya boyutu KB/MB olarak okunur. */\nconst BYTES_PER_KB = 1024;\nconst BYTES_PER_MB = BYTES_PER_KB * BYTES_PER_KB;\n\n/** Baytı okunur biçime çevirir. */\nconst formatSize = (bytes: number): string => {\n if (bytes < BYTES_PER_KB) return `${bytes} B`;\n if (bytes < BYTES_PER_MB) return `${Math.round(bytes / BYTES_PER_KB)} KB`;\n return `${(bytes / BYTES_PER_MB).toFixed(1)} MB`;\n};\n\n/** Dosya yükleme — sürükle-bırak ve düğme. */\nconst FileUpload = ({\n files,\n onSelect,\n onRemove,\n label,\n hint,\n accept,\n isMultiple,\n maxSize,\n removeLabel,\n dropLabel,\n sizeErrorText,\n isDisabled,\n error,\n children,\n className,\n testId,\n}: Props) => {\n const inputId = useId();\n const hintId = useId();\n const inputRef = useRef<HTMLInputElement>(null);\n const { labels } = useUi();\n const announce = useAnnounce();\n\n const [isDragging, setIsDragging] = useState(false);\n const [rejected, setRejected] = useState<string[]>([]);\n\n const handleFiles = (list: FileList | null) => {\n if (!list || list.length === 0) return;\n\n const incoming = [...list];\n const tooLarge = maxSize === undefined ? [] : incoming.filter(file => file.size > maxSize);\n const accepted = incoming.filter(file => !tooLarge.includes(file));\n\n /*\n * ⚠ METIN SABIT DEGIL. Bir donem varsayilan bir Turkce sablon (`'{name} çok büyük (en fazla\n * {max}).'`) prop varsayilaniydi ve kutuphanenin…\n */\n const messages = tooLarge.map(file =>\n sizeErrorText === undefined\n ? resolveFormatter(\n 'FileUpload.tooLarge',\n labels?.fileUpload?.tooLarge,\n file.name,\n formatSize(maxSize ?? 0),\n )\n : sizeErrorText.replace('{name}', file.name).replace('{max}', formatSize(maxSize ?? 0)),\n );\n setRejected(messages);\n\n if (accepted.length > 0) {\n onSelect(accepted);\n announce(resolveFormatter('FileUpload.added', labels?.fileUpload?.added, accepted.length));\n }\n\n /*\n * Reddedilen dosya ekranda YAZIYOR ama duyurulmali da: gormeyen kullanici icin sessizce dusen\n * bir dosya hic secilmemis demekti.\n */\n if (messages.length > 0) announce(messages.join(' '), 'assertive');\n };\n\n const handleDrop = (event: DragEvent<HTMLLabelElement>) => {\n event.preventDefault();\n setIsDragging(false);\n if (isDisabled) return;\n handleFiles(event.dataTransfer.files);\n };\n\n return (\n <div className={cx(styles.upload, className)} data-testid={testId}>\n {/*\n Sürükle-bırak alanı bir `<label>`: tıklama ve klavye YEREL girdiye\n yönleniyor. `onClick` ile `input.click()` çağırmak da çalışırdı ama\n ekran okuyucu alanı bir düğme olarak duyurmuyordu.\n */}\n <label\n htmlFor={inputId}\n className={cx(\n styles.upload__drop,\n isDragging && styles['upload__drop--dragging'],\n isDisabled && styles['upload__drop--disabled'],\n error && styles['upload__drop--invalid'],\n )}\n onDragOver={event => {\n event.preventDefault();\n if (!isDisabled) setIsDragging(true);\n }}\n onDragLeave={() => setIsDragging(false)}\n onDrop={handleDrop}\n >\n <CloudArrowUpFill aria-hidden className={styles.upload__icon} />\n\n <span className={styles.upload__label}>{label}</span>\n <span className={styles.upload__drag}>{dropLabel}</span>\n {hint && (\n <span id={hintId} className={styles.upload__hint}>\n {hint}\n </span>\n )}\n\n <input\n ref={inputRef}\n id={inputId}\n type=\"file\"\n className={styles.upload__input}\n accept={accept}\n multiple={isMultiple}\n disabled={isDisabled}\n aria-describedby={hint ? hintId : undefined}\n aria-invalid={error ? true : undefined}\n onChange={event => {\n handleFiles(event.target.files);\n /*\n * Deger SIFIRLANIR: ayni dosya ikinci kez secildiginde `change` olayi hic dusmuyor ve\n * kullanici \"hicbir sey olmadi\" saniyordu.\n */\n event.target.value = '';\n }}\n />\n </label>\n\n {error && (\n <p className={styles.upload__error} role=\"alert\">\n <ExclamationCircleFill aria-hidden />\n {error}\n </p>\n )}\n\n {rejected.map(message => (\n <p key={message} className={styles.upload__error} role=\"alert\">\n <ExclamationCircleFill aria-hidden />\n {message}\n </p>\n ))}\n\n {files.length > 0 && (\n <ul className={styles.upload__list}>\n {files.map(file => (\n <li\n key={file.id}\n className={cx(styles.upload__file, file.error && styles['upload__file--error'])}\n >\n <span className={styles.upload__fileText}>\n <span className={styles.upload__fileName}>{file.name}</span>\n <span className={styles.upload__fileMeta}>\n {file.error ?? formatSize(file.size)}\n </span>\n </span>\n\n {file.progress !== undefined && (\n <Progress\n value={file.progress}\n label={resolveFormatter(\n 'FileUpload.uploading',\n labels?.fileUpload?.uploading,\n file.name,\n )}\n size=\"sm\"\n className={styles.upload__progress}\n />\n )}\n\n <IconButton\n icon={<XLg aria-hidden />}\n /*\n * Ad dosya adini ICERIR: bir listede on bes dugme \"Kaldir\" diye okunuyor ve hangisi\n * oldugu belli olmuyordu.\n */\n label={`${file.name} — ${removeLabel}`}\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onRemove(file.id)}\n />\n </li>\n ))}\n </ul>\n )}\n\n {children}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(FileUpload, 'FileUpload'),\n) as typeof FileUpload;\n"],"names":["BYTES_PER_KB","BYTES_PER_MB","formatSize","bytes","FileUpload","files","onSelect","onRemove","label","hint","accept","isMultiple","maxSize","removeLabel","dropLabel","sizeErrorText","isDisabled","error","children","className","testId","inputId","useId","hintId","inputRef","useRef","labels","useUi","announce","useAnnounce","isDragging","setIsDragging","useState","rejected","setRejected","handleFiles","list","incoming","tooLarge","file","accepted","messages","resolveFormatter","_a","handleDrop","event","jsxs","cx","styles","jsx","CloudArrowUpFill","ExclamationCircleFill","message","Progress","IconButton","XLg","index","memo","named"],"mappings":";;;;;;;;;;;;AAwDA,MAAMA,IAAe,MACfC,IAAeD,IAAeA,GAG9BE,IAAa,CAACC,MACdA,IAAQH,IAAqB,GAAGG,CAAK,OACrCA,IAAQF,IAAqB,GAAG,KAAK,MAAME,IAAQH,CAAY,CAAC,QAC7D,IAAIG,IAAQF,GAAc,QAAQ,CAAC,CAAC,OAIvCG,KAAa,CAAC;AAAA,EAClB,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACF,MAAa;AACX,QAAMC,IAAUC,EAAA,GACVC,IAASD,EAAA,GACTE,IAAWC,EAAyB,IAAI,GACxC,EAAE,QAAAC,EAAA,IAAWC,GAAA,GACbC,IAAWC,EAAA,GAEX,CAACC,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAC5C,CAACC,GAAUC,CAAW,IAAIF,EAAmB,CAAA,CAAE,GAE/CG,IAAc,CAACC,MAA0B;;AAC7C,QAAI,CAACA,KAAQA,EAAK,WAAW,EAAG;AAEhC,UAAMC,IAAW,CAAC,GAAGD,CAAI,GACnBE,IAAW1B,MAAY,SAAY,KAAKyB,EAAS,OAAO,CAAAE,MAAQA,EAAK,OAAO3B,CAAO,GACnF4B,IAAWH,EAAS,OAAO,CAAAE,MAAQ,CAACD,EAAS,SAASC,CAAI,CAAC,GAM3DE,IAAWH,EAAS;AAAA,MAAI,CAAAC,MAAA;;AAC5B,eAAAxB,MAAkB,SACd2B;AAAA,UACE;AAAA,WACAC,IAAAjB,KAAA,gBAAAA,EAAQ,eAAR,gBAAAiB,EAAoB;AAAA,UACpBJ,EAAK;AAAA,UACLrC,EAAWU,KAAW,CAAC;AAAA,QAAA,IAEzBG,EAAc,QAAQ,UAAUwB,EAAK,IAAI,EAAE,QAAQ,SAASrC,EAAWU,KAAW,CAAC,CAAC;AAAA;AAAA,IAAA;AAE1F,IAAAsB,EAAYO,CAAQ,GAEhBD,EAAS,SAAS,MACpBlC,EAASkC,CAAQ,GACjBZ,EAASc,EAAiB,qBAAoBC,IAAAjB,KAAA,gBAAAA,EAAQ,eAAR,gBAAAiB,EAAoB,OAAOH,EAAS,MAAM,CAAC,IAOvFC,EAAS,SAAS,KAAGb,EAASa,EAAS,KAAK,GAAG,GAAG,WAAW;AAAA,EACnE,GAEMG,IAAa,CAACC,MAAuC;AAGzD,IAFAA,EAAM,eAAA,GACNd,EAAc,EAAK,GACf,CAAAf,KACJmB,EAAYU,EAAM,aAAa,KAAK;AAAA,EACtC;AAEA,SACE,gBAAAC,EAAC,SAAI,WAAWC,EAAGC,EAAO,QAAQ7B,CAAS,GAAG,eAAaC,GAMzD,UAAA;AAAA,IAAA,gBAAA0B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAASzB;AAAA,QACT,WAAW0B;AAAA,UACTC,EAAO;AAAA,UACPlB,KAAckB,EAAO,wBAAwB;AAAA,UAC7ChC,KAAcgC,EAAO,wBAAwB;AAAA,UAC7C/B,KAAS+B,EAAO,uBAAuB;AAAA,QAAA;AAAA,QAEzC,YAAY,CAAAH,MAAS;AACnB,UAAAA,EAAM,eAAA,GACD7B,KAAYe,EAAc,EAAI;AAAA,QACrC;AAAA,QACA,aAAa,MAAMA,EAAc,EAAK;AAAA,QACtC,QAAQa;AAAA,QAER,UAAA;AAAA,UAAA,gBAAAK,EAACC,GAAA,EAAiB,eAAW,IAAC,WAAWF,EAAO,cAAc;AAAA,UAE9D,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,eAAgB,UAAAxC,GAAM;AAAA,UAC9C,gBAAAyC,EAAC,QAAA,EAAK,WAAWD,EAAO,cAAe,UAAAlC,GAAU;AAAA,UAChDL,uBACE,QAAA,EAAK,IAAIc,GAAQ,WAAWyB,EAAO,cACjC,UAAAvC,EAAA,CACH;AAAA,UAGF,gBAAAwC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKzB;AAAA,cACL,IAAIH;AAAA,cACJ,MAAK;AAAA,cACL,WAAW2B,EAAO;AAAA,cAClB,QAAAtC;AAAA,cACA,UAAUC;AAAA,cACV,UAAUK;AAAA,cACV,oBAAkBP,IAAOc,IAAS;AAAA,cAClC,gBAAcN,IAAQ,KAAO;AAAA,cAC7B,UAAU,CAAA4B,MAAS;AACjB,gBAAAV,EAAYU,EAAM,OAAO,KAAK,GAK9BA,EAAM,OAAO,QAAQ;AAAA,cACvB;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,IAGD5B,KACC,gBAAA6B,EAAC,KAAA,EAAE,WAAWE,EAAO,eAAe,MAAK,SACvC,UAAA;AAAA,MAAA,gBAAAC,EAACE,GAAA,EAAsB,eAAW,GAAA,CAAC;AAAA,MAClClC;AAAA,IAAA,GACH;AAAA,IAGDgB,EAAS,IAAI,CAAAmB,MACZ,gBAAAN,EAAC,OAAgB,WAAWE,EAAO,eAAe,MAAK,SACrD,UAAA;AAAA,MAAA,gBAAAC,EAACE,GAAA,EAAsB,eAAW,GAAA,CAAC;AAAA,MAClCC;AAAA,IAAA,EAAA,GAFKA,CAGR,CACD;AAAA,IAEA/C,EAAM,SAAS,KACd,gBAAA4C,EAAC,MAAA,EAAG,WAAWD,EAAO,cACnB,UAAA3C,EAAM,IAAI,CAAAkC,MAAA;;AACT,6BAAAO;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAWC,EAAGC,EAAO,cAAcT,EAAK,SAASS,EAAO,qBAAqB,CAAC;AAAA,UAE9E,UAAA;AAAA,YAAA,gBAAAF,EAAC,QAAA,EAAK,WAAWE,EAAO,kBACtB,UAAA;AAAA,cAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,kBAAmB,YAAK,MAAK;AAAA,cACrD,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,kBACrB,YAAK,SAAS9C,EAAWqC,EAAK,IAAI,EAAA,CACrC;AAAA,YAAA,GACF;AAAA,YAECA,EAAK,aAAa,UACjB,gBAAAU;AAAA,cAACI;AAAA,cAAA;AAAA,gBACC,OAAOd,EAAK;AAAA,gBACZ,OAAOG;AAAA,kBACL;AAAA,mBACAC,IAAAjB,KAAA,gBAAAA,EAAQ,eAAR,gBAAAiB,EAAoB;AAAA,kBACpBJ,EAAK;AAAA,gBAAA;AAAA,gBAEP,MAAK;AAAA,gBACL,WAAWS,EAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAItB,gBAAAC;AAAA,cAACK;AAAA,cAAA;AAAA,gBACC,MAAM,gBAAAL,EAACM,GAAA,EAAI,eAAW,GAAA,CAAC;AAAA,gBAKvB,OAAO,GAAGhB,EAAK,IAAI,MAAM1B,CAAW;AAAA,gBACpC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,SAAS,MAAMN,EAASgC,EAAK,EAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UACjC;AAAA,QAAA;AAAA,QAjCKA,EAAK;AAAA,MAAA;AAAA,KAmCb,GACH;AAAA,IAGDrB;AAAA,EAAA,GACH;AAEJ,GAEAsC,KAA6B,gBAAAC;AAAA,EACb,gBAAAC,EAAMtD,IAAY,YAAY;AAC9C;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-upload-v1pRY{display:flex;flex-direction:column;gap:var(--hd-space-3)}.ui-upload__drop-OpNbO{display:flex;flex-direction:column;gap:var(--hd-space-1);align-items:center;text-align:center;padding:var(--hd-space-6) var(--hd-space-4);border:2px dashed var(--hd-border-strong);border-radius:var(--hd-radius-md);background-color:var(--hd-bg-raised);cursor:pointer;transition:border-color var(--hd-duration-fast) var(--hd-ease-standard),background-color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-upload__drop-OpNbO:hover{border-color:var(--hd-primary);background-color:var(--hd-primary-soft)}.ui-upload__drop-OpNbO:has(.ui-upload__input-Tcg9-:focus-visible){outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, 2px)}.ui-upload__drop--dragging-YztUx{border-style:solid;border-color:var(--hd-primary-line);background-color:var(--hd-primary-soft)}.ui-upload__drop--invalid-JhwnL{border-color:var(--hd-danger-solid)}.ui-upload__drop--disabled-zyfUv{background-color:var(--hd-bg-raised);border-color:var(--hd-border);cursor:not-allowed;color:var(--hd-text-3)}@media (forced-colors: active){.ui-upload__drop--disabled-zyfUv{color:GrayText;border-color:GrayText}}.ui-upload__drop--disabled-zyfUv:hover{border-color:var(--hd-border);background-color:var(--hd-bg-raised)}.ui-upload__drop--disabled-zyfUv .ui-upload__icon-KpMkq,.ui-upload__drop--disabled-zyfUv .ui-upload__label-M4HJb,.ui-upload__drop--disabled-zyfUv .ui-upload__drag-ewSQw,.ui-upload__drop--disabled-zyfUv .ui-upload__hint-MZRJ6{color:var(--hd-text-3)}@media (forced-colors: active){.ui-upload__drop--disabled-zyfUv .ui-upload__icon-KpMkq,.ui-upload__drop--disabled-zyfUv .ui-upload__label-M4HJb,.ui-upload__drop--disabled-zyfUv .ui-upload__drag-ewSQw,.ui-upload__drop--disabled-zyfUv .ui-upload__hint-MZRJ6{color:GrayText}}@media (prefers-reduced-motion: reduce){.ui-upload__drop-OpNbO{transition:none}}.ui-upload__input-Tcg9-{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-upload__icon-KpMkq{font-size:24px;color:var(--hd-text-2)}.ui-upload__label-M4HJb{font-size:var(--hd-type-small-size);font-weight:var(--hd-font-weight-semibold);color:var(--hd-text)}.ui-upload__drag-ewSQw{font-size:var(--hd-type-caption-size);color:var(--hd-text-2)}.ui-upload__hint-MZRJ6{font-size:var(--hd-type-caption-size);color:var(--hd-text-3)}.ui-upload__error-7GkCC{display:flex;align-items:flex-start;gap:var(--hd-space-2);margin:0;font-size:var(--hd-type-caption-size);color:var(--hd-danger-fg)}.ui-upload__error-7GkCC svg{flex-shrink:0;font-size:16px;margin-top:1px}.ui-upload__list-lbViQ{display:flex;flex-direction:column;gap:var(--hd-space-2);margin:0;padding:0;list-style:none}.ui-upload__file-Znp1Q{display:flex;align-items:center;gap:var(--hd-space-3);padding:var(--hd-space-2) var(--hd-space-3);border:1px solid var(--hd-border);border-radius:var(--hd-radius-sm);background-color:var(--hd-bg-surface)}.ui-upload__file--error-wpbtA{border-color:var(--hd-danger-line);background-color:var(--hd-danger-bg)}.ui-upload__fileText-EtJcs{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.ui-upload__fileName-ArF8-{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--hd-type-small-size);color:var(--hd-text)}.ui-upload__fileMeta-i6sO1{font-size:var(--hd-type-caption-size);color:var(--hd-text-2);font-variant-numeric:tabular-nums}.ui-upload__file--error-wpbtA .ui-upload__fileMeta-i6sO1{color:var(--hd-danger-fg)}.ui-upload__progress-JY2a5{flex:0 0 120px}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),s=require("react"),d=require("../../helpers/class-name.helper.cjs"),m=require("../../helpers/component.helper.cjs"),b=require("../../helpers/label.helper.cjs"),f=require("../../theme/context.cjs"),e={default:{"bar":"ui-bar-b4PP4","bar__hiddenSubmit":"ui-bar__hiddenSubmit-jeCyX","bar__actions":"ui-bar__actions-rG69L","field":"ui-field-f-rvu","field--wide":"ui-field--wide-FA5gf"}},x=({onSubmit:l,children:a,actions:t,label:n,className:u,testId:c})=>{const{labels:i}=f.useUi();return r.jsxs("form",{className:d.cx(e.default.bar,u),"aria-label":b.resolveLabel("FilterBar.label",n,i==null?void 0:i.filters),"data-testid":c,onSubmit:o=>{o.preventDefault(),l()},children:[a,r.jsx("button",{type:"submit",className:e.default.bar__hiddenSubmit,tabIndex:-1,"aria-hidden":!0}),t&&r.jsx("div",{className:e.default.bar__actions,children:t})]})},_=m.named(s.memo(({children:l,isWide:a,className:t})=>r.jsx("div",{className:d.cx(e.default.field,a&&e.default["field--wide"],t),children:l})),"FilterBarField"),F=s.memo(x);exports.FilterBarField=_;exports.default=F;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/FilterBar/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n /**\n * Filtreler uygulanır. `preventDefault` bileşenin işi; çağıran yalnızca durumunu günceller\n * (sayfayı 1'e almak + aramayı uygulamak gibi).\n */\n onSubmit: () => void;\n /** Alanlar — her biri FilterBarField içinde. */\n children: ReactNode;\n /** Şeridin sağ ucundaki eylemler (\"Uygula\" düğmesi gibi). */\n actions?: ReactNode;\n /** Şeridin erişilebilir adı. */\n label?: string;\n className?: string;\n testId?: string;\n};\n\n/** Filtre şeridi. */\nconst FilterBar: FC<Props> = ({ onSubmit, children, actions, label, className, testId }) => {\n const { labels } = useUi();\n\n return (\n <form\n className={cx(styles.bar, className)}\n aria-label={resolveLabel('FilterBar.label', label, labels?.filters)}\n data-testid={testId}\n onSubmit={event => {\n event.preventDefault();\n onSubmit();\n }}\n >\n {children}\n\n {/*\n Enter'ın yedeği. Görünmez ama tarayıcı için formun varsayılan gönderme\n düğmesi: `display: none` örtük gönderimi bozmaz. Görünür \"Uygula\" düğmesi\n `actions` ile ayrıca verilebilir; ikisi aynı submit olayına düşer.\n */}\n <button type=\"submit\" className={styles.bar__hiddenSubmit} tabIndex={-1} aria-hidden />\n\n {actions && <div className={styles.bar__actions}>{actions}</div>}\n </form>\n );\n};\n\ntype FieldProps = {\n children: ReactNode;\n /** Alan kalan genişliği doldurur (arama kutusu). */\n isWide?: boolean;\n className?: string;\n};\n\n/** Şerit içindeki tek alanın genişlik sözleşmesi. */\nexport const FilterBarField: FC<FieldProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ children, isWide, className }) => (\n <div className={cx(styles.field, isWide && styles['field--wide'], className)}>{children}</div>\n )),\n 'FilterBarField',\n);\n\nexport default /*#__PURE__*/ memo(FilterBar) as typeof FilterBar;\n"],"names":["FilterBar","onSubmit","children","actions","label","className","testId","labels","useUi","jsxs","cx","styles","resolveLabel","event","jsx","FilterBarField","named","memo","isWide","index"],"mappings":"wYA2BMA,EAAuB,CAAC,CAAE,SAAAC,EAAU,SAAAC,EAAU,QAAAC,EAAS,MAAAC,EAAO,UAAAC,EAAW,OAAAC,KAAa,CAC1F,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EAEnB,OACEC,EAAAA,KAAC,OAAA,CACC,UAAWC,EAAAA,GAAGC,UAAO,IAAKN,CAAS,EACnC,aAAYO,EAAAA,aAAa,kBAAmBR,EAAOG,GAAA,YAAAA,EAAQ,OAAO,EAClE,cAAaD,EACb,SAAUO,GAAS,CACjBA,EAAM,eAAA,EACNZ,EAAA,CACF,EAEC,SAAA,CAAAC,EAODY,EAAAA,IAAC,SAAA,CAAO,KAAK,SAAS,UAAWH,UAAO,kBAAmB,SAAU,GAAI,cAAW,EAAA,CAAC,EAEpFR,GAAWW,EAAAA,IAAC,MAAA,CAAI,UAAWH,EAAAA,QAAO,aAAe,SAAAR,CAAA,CAAQ,CAAA,CAAA,CAAA,CAGhE,EAUaY,EAA+CC,EAAAA,MAC5CC,OAAK,CAAC,CAAE,SAAAf,EAAU,OAAAgB,EAAQ,UAAAb,CAAA,UACrC,MAAA,CAAI,UAAWK,EAAAA,GAAGC,UAAO,MAAOO,GAAUP,EAAAA,QAAO,aAAa,EAAGN,CAAS,EAAI,SAAAH,EAAS,CACzF,EACD,gBACF,EAEAiB,SAAkCnB,CAAS"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
/**
|
|
4
|
+
* Filtreler uygulanır. `preventDefault` bileşenin işi; çağıran yalnızca durumunu günceller
|
|
5
|
+
* (sayfayı 1'e almak + aramayı uygulamak gibi).
|
|
6
|
+
*/
|
|
7
|
+
onSubmit: () => void;
|
|
8
|
+
/** Alanlar — her biri FilterBarField içinde. */
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
/** Şeridin sağ ucundaki eylemler ("Uygula" düğmesi gibi). */
|
|
11
|
+
actions?: ReactNode;
|
|
12
|
+
/** Şeridin erişilebilir adı. */
|
|
13
|
+
label?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
testId?: string;
|
|
16
|
+
};
|
|
17
|
+
/** Filtre şeridi. */
|
|
18
|
+
declare const FilterBar: FC<Props>;
|
|
19
|
+
type FieldProps = {
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
/** Alan kalan genişliği doldurur (arama kutusu). */
|
|
22
|
+
isWide?: boolean;
|
|
23
|
+
className?: string;
|
|
24
|
+
};
|
|
25
|
+
/** Şerit içindeki tek alanın genişlik sözleşmesi. */
|
|
26
|
+
export declare const FilterBarField: FC<FieldProps>;
|
|
27
|
+
declare const _default: typeof FilterBar;
|
|
28
|
+
export default _default;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as c, jsx as m } from "react/jsx-runtime";
|
|
3
|
+
import { memo as o } from "react";
|
|
4
|
+
import { cx as l } from "../../helpers/class-name.helper.js";
|
|
5
|
+
import { named as b } from "../../helpers/component.helper.js";
|
|
6
|
+
import { resolveLabel as p } from "../../helpers/label.helper.js";
|
|
7
|
+
import { useUi as u } from "../../theme/context.js";
|
|
8
|
+
const e = {"bar":"ui-bar-b4PP4","bar__hiddenSubmit":"ui-bar__hiddenSubmit-jeCyX","bar__actions":"ui-bar__actions-rG69L","field":"ui-field-f-rvu","field--wide":"ui-field--wide-FA5gf"};
|
|
9
|
+
const x = ({ onSubmit: t, children: i, actions: r, label: s, className: d, testId: n }) => {
|
|
10
|
+
const { labels: a } = u();
|
|
11
|
+
return /* @__PURE__ */ c(
|
|
12
|
+
"form",
|
|
13
|
+
{
|
|
14
|
+
className: l(e.bar, d),
|
|
15
|
+
"aria-label": p("FilterBar.label", s, a == null ? void 0 : a.filters),
|
|
16
|
+
"data-testid": n,
|
|
17
|
+
onSubmit: (f) => {
|
|
18
|
+
f.preventDefault(), t();
|
|
19
|
+
},
|
|
20
|
+
children: [
|
|
21
|
+
i,
|
|
22
|
+
/* @__PURE__ */ m("button", { type: "submit", className: e.bar__hiddenSubmit, tabIndex: -1, "aria-hidden": !0 }),
|
|
23
|
+
r && /* @__PURE__ */ m("div", { className: e.bar__actions, children: r })
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
}, y = /* @__PURE__ */ b(
|
|
28
|
+
/* @__PURE__ */ o(({ children: t, isWide: i, className: r }) => /* @__PURE__ */ m("div", { className: l(e.field, i && e["field--wide"], r), children: t })),
|
|
29
|
+
"FilterBarField"
|
|
30
|
+
), S = /* @__PURE__ */ o(x);
|
|
31
|
+
export {
|
|
32
|
+
y as FilterBarField,
|
|
33
|
+
S as default
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/FilterBar/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n /**\n * Filtreler uygulanır. `preventDefault` bileşenin işi; çağıran yalnızca durumunu günceller\n * (sayfayı 1'e almak + aramayı uygulamak gibi).\n */\n onSubmit: () => void;\n /** Alanlar — her biri FilterBarField içinde. */\n children: ReactNode;\n /** Şeridin sağ ucundaki eylemler (\"Uygula\" düğmesi gibi). */\n actions?: ReactNode;\n /** Şeridin erişilebilir adı. */\n label?: string;\n className?: string;\n testId?: string;\n};\n\n/** Filtre şeridi. */\nconst FilterBar: FC<Props> = ({ onSubmit, children, actions, label, className, testId }) => {\n const { labels } = useUi();\n\n return (\n <form\n className={cx(styles.bar, className)}\n aria-label={resolveLabel('FilterBar.label', label, labels?.filters)}\n data-testid={testId}\n onSubmit={event => {\n event.preventDefault();\n onSubmit();\n }}\n >\n {children}\n\n {/*\n Enter'ın yedeği. Görünmez ama tarayıcı için formun varsayılan gönderme\n düğmesi: `display: none` örtük gönderimi bozmaz. Görünür \"Uygula\" düğmesi\n `actions` ile ayrıca verilebilir; ikisi aynı submit olayına düşer.\n */}\n <button type=\"submit\" className={styles.bar__hiddenSubmit} tabIndex={-1} aria-hidden />\n\n {actions && <div className={styles.bar__actions}>{actions}</div>}\n </form>\n );\n};\n\ntype FieldProps = {\n children: ReactNode;\n /** Alan kalan genişliği doldurur (arama kutusu). */\n isWide?: boolean;\n className?: string;\n};\n\n/** Şerit içindeki tek alanın genişlik sözleşmesi. */\nexport const FilterBarField: FC<FieldProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ children, isWide, className }) => (\n <div className={cx(styles.field, isWide && styles['field--wide'], className)}>{children}</div>\n )),\n 'FilterBarField',\n);\n\nexport default /*#__PURE__*/ memo(FilterBar) as typeof FilterBar;\n"],"names":["FilterBar","onSubmit","children","actions","label","className","testId","labels","useUi","jsxs","cx","styles","resolveLabel","event","jsx","FilterBarField","named","memo","isWide","index"],"mappings":";;;;;;;;AA2BA,MAAMA,IAAuB,CAAC,EAAE,UAAAC,GAAU,UAAAC,GAAU,SAAAC,GAAS,OAAAC,GAAO,WAAAC,GAAW,QAAAC,QAAa;AAC1F,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA;AAEnB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAGC,EAAO,KAAKN,CAAS;AAAA,MACnC,cAAYO,EAAa,mBAAmBR,GAAOG,KAAA,gBAAAA,EAAQ,OAAO;AAAA,MAClE,eAAaD;AAAA,MACb,UAAU,CAAAO,MAAS;AACjB,QAAAA,EAAM,eAAA,GACNZ,EAAA;AAAA,MACF;AAAA,MAEC,UAAA;AAAA,QAAAC;AAAA,QAOD,gBAAAY,EAAC,UAAA,EAAO,MAAK,UAAS,WAAWH,EAAO,mBAAmB,UAAU,IAAI,eAAW,GAAA,CAAC;AAAA,QAEpFR,KAAW,gBAAAW,EAAC,OAAA,EAAI,WAAWH,EAAO,cAAe,UAAAR,EAAA,CAAQ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhE,GAUaY,IAA+C,gBAAAC;AAAA,EAC5C,gBAAAC,EAAK,CAAC,EAAE,UAAAf,GAAU,QAAAgB,GAAQ,WAAAb,EAAA,wBACrC,OAAA,EAAI,WAAWK,EAAGC,EAAO,OAAOO,KAAUP,EAAO,aAAa,GAAGN,CAAS,GAAI,UAAAH,GAAS,CACzF;AAAA,EACD;AACF,GAEAiB,sBAAkCnB,CAAS;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-bar-b4PP4{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--hd-space-3);background-color:var(--hd-bg-surface);border:1px solid var(--hd-border);border-radius:var(--hd-radius-sm);padding:var(--hd-space-3)}.ui-bar__hiddenSubmit-jeCyX{display:none}.ui-bar__actions-rG69L{display:flex;align-items:center;gap:var(--hd-space-2);margin-inline-start:auto}.ui-field-f-rvu{flex:0 1 220px;min-width:0;--ui-field-label-order: -2;--ui-field-message-order: -1}.ui-field--wide-FA5gf{flex:1 1 240px}@media (max-width: 640px){.ui-field-f-rvu,.ui-field--wide-FA5gf{flex-basis:100%}.ui-bar__actions-rG69L{width:100%}.ui-bar__actions-rG69L>*{flex:1 1 auto}}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),c=require("react"),q=require("../../helpers/class-name.helper.cjs"),I=require("../../helpers/component.helper.cjs"),_=require("../Link/index.cjs"),t={default:{"iconButton":"ui-iconButton-JdtwM","iconButton--inert":"ui-iconButton--inert-atNrh","iconButton--round":"ui-iconButton--round-RNv7S","iconButton--sm":"ui-iconButton--sm-wE6zE","iconButton--md":"ui-iconButton--md-iTNNS","iconButton--ghost":"ui-iconButton--ghost-w-8K3","iconButton--outline":"ui-iconButton--outline-vEhcY","iconButton--solid":"ui-iconButton--solid-NUszP","iconButton--accent":"ui-iconButton--accent-SDyQA","iconButton--danger":"ui-iconButton--danger-xKkEA"}},h=c.forwardRef(({icon:o,label:a,variant:l="ghost",size:s="md",shape:m="rounded",className:b,type:f="button",href:u,linkProps:x,testId:d,...e},B)=>{const i=q.cx(t.default.iconButton,t.default[`iconButton--${l}`],t.default[`iconButton--${s}`],m==="round"&&t.default["iconButton--round"],b),n=!!e.disabled;return u?r.jsx(_.default,{...e,href:u,className:i,"aria-label":a,"aria-disabled":n||void 0,tabIndex:n?-1:e.tabIndex,onClick:n?void 0:e.onClick,"data-testid":d,...x,children:o}):r.jsx("button",{ref:B,type:f,className:i,"aria-label":a,"data-testid":d,...e,children:o})}),j=c.memo(I.named(h,"IconButton"));exports.default=j;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/IconButton/index.tsx"],"sourcesContent":["import {\n type AnchorHTMLAttributes,\n type ButtonHTMLAttributes,\n forwardRef,\n memo,\n type MouseEventHandler,\n type ReactNode,\n} from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport type { UiLinkExtraProps } from '../../types/link.type';\nimport UiLink from '../Link';\n\nimport styles from './index.module.scss';\n\nexport type IconButtonVariant = 'ghost' | 'outline' | 'solid' | 'accent' | 'danger';\n\n/** Köşe biçimi. `round` tam daire — sohbet girdisindeki gönder / durdur gibi. Ölçü değişmez. */\nexport type IconButtonShape = 'rounded' | 'round';\n\ntype Props = ButtonHTMLAttributes<HTMLButtonElement> & {\n icon: ReactNode;\n /** Görsel etiketi olmayan düğmenin erişilebilir adı — ZORUNLU. */\n label: string;\n /** `accent` (coral) is for the conversion action only: download, try, subscribe. */\n variant?: IconButtonVariant;\n size?: 'sm' | 'md';\n shape?: IconButtonShape;\n /** Verilirse öğe bir bağlantı olarak çizilir. */\n href?: string;\n /** Yönlendiriciye geçirilecek ek props. */\n linkProps?: UiLinkExtraProps;\n testId?: string;\n};\n\n/** Yalnızca ikon taşıyan düğme. */\nconst IconButton = /*#__PURE__*/ forwardRef<HTMLButtonElement, Props>(\n (\n {\n icon,\n label,\n variant = 'ghost',\n size = 'md',\n shape = 'rounded',\n className,\n type = 'button',\n href,\n linkProps,\n testId,\n ...rest\n },\n ref,\n ) => {\n const classNames = cx(\n styles.iconButton,\n styles[`iconButton--${variant}`],\n styles[`iconButton--${size}`],\n shape === 'round' && styles['iconButton--round'],\n className,\n );\n\n /*\n * Onceki bicim yalnizca `href`/`className`/`aria-label`/`title`/`testId` iletiyordu\n * ⚠ BAGLANTI DALI DA `...rest` YAYAR — `Button` ile ayni ariza.\n */\n const isInert = Boolean(rest.disabled);\n\n if (href)\n return (\n <UiLink\n {...(rest as AnchorHTMLAttributes<HTMLAnchorElement>)}\n href={href}\n className={classNames}\n aria-label={label}\n aria-disabled={isInert || undefined}\n tabIndex={isInert ? -1 : rest.tabIndex}\n onClick={\n isInert\n ? undefined\n : (rest.onClick as unknown as MouseEventHandler<HTMLAnchorElement> | undefined)\n }\n data-testid={testId}\n {...linkProps}\n >\n {icon}\n </UiLink>\n );\n\n return (\n <button\n ref={ref}\n type={type}\n className={classNames}\n aria-label={label}\n data-testid={testId}\n {...rest}\n >\n {icon}\n </button>\n );\n },\n);\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(IconButton, 'IconButton'),\n) as typeof IconButton;\n"],"names":["IconButton","forwardRef","icon","label","variant","size","shape","className","type","href","linkProps","testId","rest","ref","classNames","cx","styles","isInert","jsx","UiLink","memo","named"],"mappings":"yUAqCMA,EAA2BC,EAAAA,WAC/B,CACE,CACE,KAAAC,EACA,MAAAC,EACA,QAAAC,EAAU,QACV,KAAAC,EAAO,KACP,MAAAC,EAAQ,UACR,UAAAC,EACA,KAAAC,EAAO,SACP,KAAAC,EACA,UAAAC,EACA,OAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAaC,EAAAA,GACjBC,EAAAA,QAAO,WACPA,EAAAA,QAAO,eAAeZ,CAAO,EAAE,EAC/BY,EAAAA,QAAO,eAAeX,CAAI,EAAE,EAC5BC,IAAU,SAAWU,EAAAA,QAAO,mBAAmB,EAC/CT,CAAA,EAOIU,EAAU,EAAQL,EAAK,SAE7B,OAAIH,EAEAS,EAAAA,IAACC,EAAAA,QAAA,CACE,GAAIP,EACL,KAAAH,EACA,UAAWK,EACX,aAAYX,EACZ,gBAAec,GAAW,OAC1B,SAAUA,EAAU,GAAKL,EAAK,SAC9B,QACEK,EACI,OACCL,EAAK,QAEZ,cAAaD,EACZ,GAAGD,EAEH,SAAAR,CAAA,CAAA,EAKLgB,EAAAA,IAAC,SAAA,CACC,IAAAL,EACA,KAAAL,EACA,UAAWM,EACX,aAAYX,EACZ,cAAaQ,EACZ,GAAGC,EAEH,SAAAV,CAAA,CAAA,CAGP,CACF,EAEAF,EAA6BoB,EAAAA,KACbC,EAAAA,MAAMrB,EAAY,YAAY,CAC9C"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ButtonHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import { UiLinkExtraProps } from '../../types/link.type';
|
|
3
|
+
export type IconButtonVariant = 'ghost' | 'outline' | 'solid' | 'accent' | 'danger';
|
|
4
|
+
/** Köşe biçimi. `round` tam daire — sohbet girdisindeki gönder / durdur gibi. Ölçü değişmez. */
|
|
5
|
+
export type IconButtonShape = 'rounded' | 'round';
|
|
6
|
+
/** Yalnızca ikon taşıyan düğme. */
|
|
7
|
+
declare const IconButton: import('react').ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
8
|
+
icon: ReactNode;
|
|
9
|
+
/** Görsel etiketi olmayan düğmenin erişilebilir adı — ZORUNLU. */
|
|
10
|
+
label: string;
|
|
11
|
+
/** `accent` (coral) is for the conversion action only: download, try, subscribe. */
|
|
12
|
+
variant?: IconButtonVariant;
|
|
13
|
+
size?: "sm" | "md";
|
|
14
|
+
shape?: IconButtonShape;
|
|
15
|
+
/** Verilirse öğe bir bağlantı olarak çizilir. */
|
|
16
|
+
href?: string;
|
|
17
|
+
/** Yönlendiriciye geçirilecek ek props. */
|
|
18
|
+
linkProps?: UiLinkExtraProps;
|
|
19
|
+
testId?: string;
|
|
20
|
+
} & import('react').RefAttributes<HTMLButtonElement>>;
|
|
21
|
+
declare const _default: typeof IconButton;
|
|
22
|
+
export default _default;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx as c } from "react/jsx-runtime";
|
|
2
|
+
import { memo as p, forwardRef as x } from "react";
|
|
3
|
+
import { cx as I } from "../../helpers/class-name.helper.js";
|
|
4
|
+
import { named as k } from "../../helpers/component.helper.js";
|
|
5
|
+
import N from "../Link/index.js";
|
|
6
|
+
const t = {"iconButton":"ui-iconButton-JdtwM","iconButton--inert":"ui-iconButton--inert-atNrh","iconButton--round":"ui-iconButton--round-RNv7S","iconButton--sm":"ui-iconButton--sm-wE6zE","iconButton--md":"ui-iconButton--md-iTNNS","iconButton--ghost":"ui-iconButton--ghost-w-8K3","iconButton--outline":"ui-iconButton--outline-vEhcY","iconButton--solid":"ui-iconButton--solid-NUszP","iconButton--accent":"ui-iconButton--accent-SDyQA","iconButton--danger":"ui-iconButton--danger-xKkEA"};
|
|
7
|
+
const $ = /* @__PURE__ */ x(
|
|
8
|
+
({
|
|
9
|
+
icon: a,
|
|
10
|
+
label: i,
|
|
11
|
+
variant: e = "ghost",
|
|
12
|
+
size: s = "md",
|
|
13
|
+
shape: u = "rounded",
|
|
14
|
+
className: l,
|
|
15
|
+
type: f = "button",
|
|
16
|
+
href: r,
|
|
17
|
+
linkProps: B,
|
|
18
|
+
testId: d,
|
|
19
|
+
...o
|
|
20
|
+
}, b) => {
|
|
21
|
+
const m = I(
|
|
22
|
+
t.iconButton,
|
|
23
|
+
t[`iconButton--${e}`],
|
|
24
|
+
t[`iconButton--${s}`],
|
|
25
|
+
u === "round" && t["iconButton--round"],
|
|
26
|
+
l
|
|
27
|
+
), n = !!o.disabled;
|
|
28
|
+
return r ? /* @__PURE__ */ c(
|
|
29
|
+
N,
|
|
30
|
+
{
|
|
31
|
+
...o,
|
|
32
|
+
href: r,
|
|
33
|
+
className: m,
|
|
34
|
+
"aria-label": i,
|
|
35
|
+
"aria-disabled": n || void 0,
|
|
36
|
+
tabIndex: n ? -1 : o.tabIndex,
|
|
37
|
+
onClick: n ? void 0 : o.onClick,
|
|
38
|
+
"data-testid": d,
|
|
39
|
+
...B,
|
|
40
|
+
children: a
|
|
41
|
+
}
|
|
42
|
+
) : /* @__PURE__ */ c(
|
|
43
|
+
"button",
|
|
44
|
+
{
|
|
45
|
+
ref: b,
|
|
46
|
+
type: f,
|
|
47
|
+
className: m,
|
|
48
|
+
"aria-label": i,
|
|
49
|
+
"data-testid": d,
|
|
50
|
+
...o,
|
|
51
|
+
children: a
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
), y = /* @__PURE__ */ p(
|
|
56
|
+
/* @__PURE__ */ k($, "IconButton")
|
|
57
|
+
);
|
|
58
|
+
export {
|
|
59
|
+
y as default
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/IconButton/index.tsx"],"sourcesContent":["import {\n type AnchorHTMLAttributes,\n type ButtonHTMLAttributes,\n forwardRef,\n memo,\n type MouseEventHandler,\n type ReactNode,\n} from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport type { UiLinkExtraProps } from '../../types/link.type';\nimport UiLink from '../Link';\n\nimport styles from './index.module.scss';\n\nexport type IconButtonVariant = 'ghost' | 'outline' | 'solid' | 'accent' | 'danger';\n\n/** Köşe biçimi. `round` tam daire — sohbet girdisindeki gönder / durdur gibi. Ölçü değişmez. */\nexport type IconButtonShape = 'rounded' | 'round';\n\ntype Props = ButtonHTMLAttributes<HTMLButtonElement> & {\n icon: ReactNode;\n /** Görsel etiketi olmayan düğmenin erişilebilir adı — ZORUNLU. */\n label: string;\n /** `accent` (coral) is for the conversion action only: download, try, subscribe. */\n variant?: IconButtonVariant;\n size?: 'sm' | 'md';\n shape?: IconButtonShape;\n /** Verilirse öğe bir bağlantı olarak çizilir. */\n href?: string;\n /** Yönlendiriciye geçirilecek ek props. */\n linkProps?: UiLinkExtraProps;\n testId?: string;\n};\n\n/** Yalnızca ikon taşıyan düğme. */\nconst IconButton = /*#__PURE__*/ forwardRef<HTMLButtonElement, Props>(\n (\n {\n icon,\n label,\n variant = 'ghost',\n size = 'md',\n shape = 'rounded',\n className,\n type = 'button',\n href,\n linkProps,\n testId,\n ...rest\n },\n ref,\n ) => {\n const classNames = cx(\n styles.iconButton,\n styles[`iconButton--${variant}`],\n styles[`iconButton--${size}`],\n shape === 'round' && styles['iconButton--round'],\n className,\n );\n\n /*\n * Onceki bicim yalnizca `href`/`className`/`aria-label`/`title`/`testId` iletiyordu\n * ⚠ BAGLANTI DALI DA `...rest` YAYAR — `Button` ile ayni ariza.\n */\n const isInert = Boolean(rest.disabled);\n\n if (href)\n return (\n <UiLink\n {...(rest as AnchorHTMLAttributes<HTMLAnchorElement>)}\n href={href}\n className={classNames}\n aria-label={label}\n aria-disabled={isInert || undefined}\n tabIndex={isInert ? -1 : rest.tabIndex}\n onClick={\n isInert\n ? undefined\n : (rest.onClick as unknown as MouseEventHandler<HTMLAnchorElement> | undefined)\n }\n data-testid={testId}\n {...linkProps}\n >\n {icon}\n </UiLink>\n );\n\n return (\n <button\n ref={ref}\n type={type}\n className={classNames}\n aria-label={label}\n data-testid={testId}\n {...rest}\n >\n {icon}\n </button>\n );\n },\n);\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(IconButton, 'IconButton'),\n) as typeof IconButton;\n"],"names":["IconButton","forwardRef","icon","label","variant","size","shape","className","type","href","linkProps","testId","rest","ref","classNames","cx","styles","isInert","jsx","UiLink","IconButton$1","memo","named"],"mappings":";;;;;;AAqCA,MAAMA,IAA2B,gBAAAC;AAAA,EAC/B,CACE;AAAA,IACE,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,WAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,MAAAC;AAAA,IACA,WAAAC;AAAA,IACA,QAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAaC;AAAA,MACjBC,EAAO;AAAA,MACPA,EAAO,eAAeZ,CAAO,EAAE;AAAA,MAC/BY,EAAO,eAAeX,CAAI,EAAE;AAAA,MAC5BC,MAAU,WAAWU,EAAO,mBAAmB;AAAA,MAC/CT;AAAA,IAAA,GAOIU,IAAU,EAAQL,EAAK;AAE7B,WAAIH,IAEA,gBAAAS;AAAA,MAACC;AAAA,MAAA;AAAA,QACE,GAAIP;AAAA,QACL,MAAAH;AAAA,QACA,WAAWK;AAAA,QACX,cAAYX;AAAA,QACZ,iBAAec,KAAW;AAAA,QAC1B,UAAUA,IAAU,KAAKL,EAAK;AAAA,QAC9B,SACEK,IACI,SACCL,EAAK;AAAA,QAEZ,eAAaD;AAAA,QACZ,GAAGD;AAAA,QAEH,UAAAR;AAAA,MAAA;AAAA,IAAA,IAKL,gBAAAgB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAL;AAAA,QACA,MAAAL;AAAA,QACA,WAAWM;AAAA,QACX,cAAYX;AAAA,QACZ,eAAaQ;AAAA,QACZ,GAAGC;AAAA,QAEH,UAAAV;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF,GAEAkB,IAA6B,gBAAAC;AAAA,EACb,gBAAAC,EAAMtB,GAAY,YAAY;AAC9C;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-iconButton-JdtwM{position:relative;display:inline-flex;text-decoration:none;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--hd-radius-sm);background:none;cursor:pointer;color:var(--hd-text-2);transition:background-color var(--hd-duration-fast) var(--hd-ease-standard),border-color var(--hd-duration-fast) var(--hd-ease-standard),color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-iconButton-JdtwM:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, 2px)}.ui-iconButton-JdtwM:disabled{cursor:not-allowed;color:var(--hd-text-3)}@media (prefers-reduced-motion: reduce){.ui-iconButton-JdtwM{transition:none}}.ui-iconButton-JdtwM{position:relative}.ui-iconButton-JdtwM:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-iconButton--inert-atNrh{pointer-events:none}.ui-iconButton--round-RNv7S{border-radius:var(--hd-radius-pill)}.ui-iconButton--sm-wE6zE{width:32px;height:32px;font-size:16px}.ui-iconButton--md-iTNNS{width:40px;height:40px;font-size:18px}.ui-iconButton--ghost-w-8K3:hover:not(:disabled){background-color:color-mix(in srgb,var(--hd-text) 8%,transparent);color:var(--hd-text)}.ui-iconButton--outline-vEhcY{border-color:var(--hd-border-strong);background-color:var(--hd-bg-surface)}.ui-iconButton--outline-vEhcY:hover:not(:disabled){border-color:var(--hd-text-3);color:var(--hd-text)}.ui-iconButton--outline-vEhcY:disabled{background-color:var(--hd-bg-raised);border-color:var(--hd-border)}.ui-iconButton--solid-NUszP{background-color:var(--hd-primary);border-color:var(--hd-primary);color:var(--hd-on-primary)}.ui-iconButton--solid-NUszP:hover:not(:disabled){background-color:var(--hd-primary-hover)}.ui-iconButton--solid-NUszP:disabled{background-color:var(--hd-bg-disabled);border-color:transparent;color:var(--hd-text-disabled)}.ui-iconButton--accent-SDyQA{background-color:var(--hd-accent);color:var(--hd-on-accent)}.ui-iconButton--accent-SDyQA:hover:not(:disabled){background-color:var(--hd-accent-hover)}.ui-iconButton--accent-SDyQA:active:not(:disabled){background-color:var(--hd-accent-active)}.ui-iconButton--accent-SDyQA:disabled{background-color:var(--hd-bg-disabled);color:var(--hd-text-disabled)}.ui-iconButton--danger-xKkEA{border-color:var(--hd-border-strong);background-color:var(--hd-bg-surface)}.ui-iconButton--danger-xKkEA:not(:disabled){color:var(--hd-danger-fg)}.ui-iconButton--danger-xKkEA:hover:not(:disabled){border-color:var(--hd-danger-solid);background-color:var(--hd-danger-bg)}}
|
|
@@ -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"),t=require("react"),w=require("../../helpers/class-name.helper.cjs"),N=require("../../helpers/component.helper.cjs"),e={default:{"wrapper":"ui-wrapper-IAI4E","wrapper__prefix":"ui-wrapper__prefix-XKDlV","wrapper__suffix":"ui-wrapper__suffix-lT35q","input":"ui-input-pIS2u","input--sm":"ui-input--sm-v1rrv","input--hasPrefix":"ui-input--hasPrefix-nsrWh","input--hasSuffix":"ui-input--hasSuffix-OrE5A","input--technical":"ui-input--technical---DCD"}},P=typeof window>"u"?()=>{}:t.useLayoutEffect,g=t.forwardRef(({prefix:o,suffix:a,isTechnical:R,size:y="md",className:v,testId:_,...b},j)=>{const f=t.useRef(null),c=t.useRef(null),l=t.useRef(null),n=!!o,u=!!a;return P(()=>{const i=f.current;if(!i)return;const d=[[c,"--ui-input-prefix-width"],[l,"--ui-input-suffix-width"]],p=()=>{var r;for(const[q,m]of d){const x=((r=q.current)==null?void 0:r.getBoundingClientRect().width)??0;x>0?i.style.setProperty(m,`${Math.ceil(x)}px`):i.style.removeProperty(m)}};if(p(),typeof ResizeObserver>"u")return;const h=new ResizeObserver(p);for(const[r]of d)r.current&&h.observe(r.current);return()=>h.disconnect()},[n,u]),s.jsxs("span",{ref:f,className:w.cx(e.default.wrapper,v),children:[n&&s.jsx("span",{ref:c,className:e.default.wrapper__prefix,"aria-hidden":!0,children:o}),s.jsx("input",{ref:j,className:w.cx(e.default.input,y==="sm"&&e.default["input--sm"],n&&e.default["input--hasPrefix"],u&&e.default["input--hasSuffix"],R&&e.default["input--technical"]),"data-testid":_,...b}),u&&s.jsx("span",{ref:l,className:e.default.wrapper__suffix,"aria-hidden":!0,children:a})]})}),I=t.memo(N.named(g,"Input"));exports.default=I;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Input/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n forwardRef,\n type InputHTMLAttributes,\n memo,\n type ReactNode,\n useLayoutEffect,\n useRef,\n} from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\n/*\n * `prefix` HTML'in RDFa nitelikleri arasinda yer alir ve React onu `string` olarak tanimlar.\n * `size` yerel ozellikte karakter genisligi (`number`); burada olcu adi — genislik CSS'ten gelir.\n */\ntype Props = Omit<InputHTMLAttributes<HTMLInputElement>, 'prefix' | 'size'> & {\n /** Solda gösterilen ikon veya ön ek (arama simgesi, para birimi). */\n prefix?: ReactNode;\n /** Sağda gösterilen ikon veya birim (göz simgesi, \"kg\"). */\n suffix?: ReactNode;\n /** Teknik veri: */\n isTechnical?: boolean;\n /** `sm` yoğun şeritler içindir (araç çubuğu, `Select size=\"sm\"` yanında); varsayılan form ölçüsü `md`. */\n size?: 'sm' | 'md';\n testId?: string;\n};\n\n/** `useLayoutEffect` sunucuda uyarı basar; orada etkisiz bir eşdeğer. */\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? () => {} : useLayoutEffect;\n\n/** Metin girdisi. */\nconst Input = /*#__PURE__*/ forwardRef<HTMLInputElement, Props>(\n ({ prefix, suffix, isTechnical, size = 'md', className, testId, ...rest }, ref) => {\n const wrapperRef = useRef<HTMLSpanElement>(null);\n const prefixRef = useRef<HTMLSpanElement>(null);\n const suffixRef = useRef<HTMLSpanElement>(null);\n /*\n * `Boolean(...)`: `prefix` bir `ReactNode` ve `0` da gecerli bir deger — `prefix &&`\n * ifadesi o durumda dize degil sayi donuyordu.\n */\n const hasPrefix = Boolean(prefix);\n const hasSuffix = Boolean(suffix);\n\n /*\n * Onek/sonekin genisligi olculup sarmalayiciya yazilir; girdinin ic payi buradan hesaplanir\n * (`--hasPrefix`). Boyamadan once olculur, icerik ya da yazi tipi degisince `ResizeObserver`\n * yeniden yazar. Olcum yokken (sunucu cizimi, jsdom) CSS ikon olcusunu varsayar.\n */\n useIsomorphicLayoutEffect(() => {\n const wrapper = wrapperRef.current;\n if (!wrapper) return undefined;\n const slots = [\n [prefixRef, '--ui-input-prefix-width'],\n [suffixRef, '--ui-input-suffix-width'],\n ] as const;\n const write = () => {\n for (const [slot, property] of slots) {\n const width = slot.current?.getBoundingClientRect().width ?? 0;\n if (width > 0) wrapper.style.setProperty(property, `${Math.ceil(width)}px`);\n else wrapper.style.removeProperty(property);\n }\n };\n write();\n if (typeof ResizeObserver === 'undefined') return undefined;\n const observer = new ResizeObserver(write);\n for (const [slot] of slots) if (slot.current) observer.observe(slot.current);\n return () => observer.disconnect();\n }, [hasPrefix, hasSuffix]);\n\n return (\n <span ref={wrapperRef} className={cx(styles.wrapper, className)}>\n {hasPrefix && (\n <span ref={prefixRef} className={styles.wrapper__prefix} aria-hidden>\n {prefix}\n </span>\n )}\n <input\n ref={ref}\n className={cx(\n styles.input,\n size === 'sm' && styles['input--sm'],\n hasPrefix && styles['input--hasPrefix'],\n hasSuffix && styles['input--hasSuffix'],\n isTechnical && styles['input--technical'],\n )}\n data-testid={testId}\n {...rest}\n />\n {hasSuffix && (\n <span ref={suffixRef} className={styles.wrapper__suffix} aria-hidden>\n {suffix}\n </span>\n )}\n </span>\n );\n },\n);\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Input, 'Input')) as typeof Input;\n"],"names":["useIsomorphicLayoutEffect","useLayoutEffect","Input","forwardRef","prefix","suffix","isTechnical","size","className","testId","rest","ref","wrapperRef","useRef","prefixRef","suffixRef","hasPrefix","hasSuffix","wrapper","slots","write","slot","property","width","_a","observer","jsxs","cx","styles","jsx","memo","named"],"mappings":"uTAgCMA,EAA4B,OAAO,OAAW,IAAc,IAAM,CAAC,EAAIC,EAAAA,gBAGvEC,EAAsBC,EAAAA,WAC1B,CAAC,CAAE,OAAAC,EAAQ,OAAAC,EAAQ,YAAAC,EAAa,KAAAC,EAAO,KAAM,UAAAC,EAAW,OAAAC,EAAQ,GAAGC,CAAA,EAAQC,IAAQ,CACjF,MAAMC,EAAaC,EAAAA,OAAwB,IAAI,EACzCC,EAAYD,EAAAA,OAAwB,IAAI,EACxCE,EAAYF,EAAAA,OAAwB,IAAI,EAKxCG,EAAY,EAAQZ,EACpBa,EAAY,EAAQZ,EAO1B,OAAAL,EAA0B,IAAM,CAC9B,MAAMkB,EAAUN,EAAW,QAC3B,GAAI,CAACM,EAAS,OACd,MAAMC,EAAQ,CACZ,CAACL,EAAW,yBAAyB,EACrC,CAACC,EAAW,yBAAyB,CAAA,EAEjCK,EAAQ,IAAM,OAClB,SAAW,CAACC,EAAMC,CAAQ,IAAKH,EAAO,CACpC,MAAMI,IAAQC,EAAAH,EAAK,UAAL,YAAAG,EAAc,wBAAwB,QAAS,EACzDD,EAAQ,EAAGL,EAAQ,MAAM,YAAYI,EAAU,GAAG,KAAK,KAAKC,CAAK,CAAC,IAAI,EACrEL,EAAQ,MAAM,eAAeI,CAAQ,CAC5C,CACF,EAEA,GADAF,EAAA,EACI,OAAO,eAAmB,IAAa,OAC3C,MAAMK,EAAW,IAAI,eAAeL,CAAK,EACzC,SAAW,CAACC,CAAI,IAAKF,EAAWE,EAAK,SAASI,EAAS,QAAQJ,EAAK,OAAO,EAC3E,MAAO,IAAMI,EAAS,WAAA,CACxB,EAAG,CAACT,EAAWC,CAAS,CAAC,EAGvBS,OAAC,QAAK,IAAKd,EAAY,UAAWe,EAAAA,GAAGC,UAAO,QAASpB,CAAS,EAC3D,SAAA,CAAAQ,GACCa,EAAAA,IAAC,QAAK,IAAKf,EAAW,UAAWc,EAAAA,QAAO,gBAAiB,cAAW,GACjE,SAAAxB,CAAA,CACH,EAEFyB,EAAAA,IAAC,QAAA,CACC,IAAAlB,EACA,UAAWgB,EAAAA,GACTC,EAAAA,QAAO,MACPrB,IAAS,MAAQqB,EAAAA,QAAO,WAAW,EACnCZ,GAAaY,EAAAA,QAAO,kBAAkB,EACtCX,GAAaW,EAAAA,QAAO,kBAAkB,EACtCtB,GAAesB,EAAAA,QAAO,kBAAkB,CAAA,EAE1C,cAAanB,EACZ,GAAGC,CAAA,CAAA,EAELO,GACCY,EAAAA,IAAC,OAAA,CAAK,IAAKd,EAAW,UAAWa,EAAAA,QAAO,gBAAiB,cAAW,GACjE,SAAAvB,CAAA,CACH,CAAA,EAEJ,CAEJ,CACF,EAEAH,EAA6B4B,OAAmBC,EAAAA,MAAM7B,EAAO,OAAO,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { InputHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/** Metin girdisi. */
|
|
3
|
+
declare const Input: import('react').ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "prefix"> & {
|
|
4
|
+
/** Solda gösterilen ikon veya ön ek (arama simgesi, para birimi). */
|
|
5
|
+
prefix?: ReactNode;
|
|
6
|
+
/** Sağda gösterilen ikon veya birim (göz simgesi, "kg"). */
|
|
7
|
+
suffix?: ReactNode;
|
|
8
|
+
/** Teknik veri: */
|
|
9
|
+
isTechnical?: boolean;
|
|
10
|
+
/** `sm` yoğun şeritler içindir (araç çubuğu, `Select size="sm"` yanında); varsayılan form ölçüsü `md`. */
|
|
11
|
+
size?: "sm" | "md";
|
|
12
|
+
testId?: string;
|
|
13
|
+
} & import('react').RefAttributes<HTMLInputElement>>;
|
|
14
|
+
declare const _default: typeof Input;
|
|
15
|
+
export default _default;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as _, jsx as o } from "react/jsx-runtime";
|
|
3
|
+
import { memo as B, forwardRef as g, useRef as i, useLayoutEffect as j } from "react";
|
|
4
|
+
import { cx as x } from "../../helpers/class-name.helper.js";
|
|
5
|
+
import { named as z } from "../../helpers/component.helper.js";
|
|
6
|
+
const e = {"wrapper":"ui-wrapper-IAI4E","wrapper__prefix":"ui-wrapper__prefix-XKDlV","wrapper__suffix":"ui-wrapper__suffix-lT35q","input":"ui-input-pIS2u","input--sm":"ui-input--sm-v1rrv","input--hasPrefix":"ui-input--hasPrefix-nsrWh","input--hasSuffix":"ui-input--hasSuffix-OrE5A","input--technical":"ui-input--technical---DCD"};
|
|
7
|
+
const E = typeof window > "u" ? () => {
|
|
8
|
+
} : j, L = /* @__PURE__ */ g(
|
|
9
|
+
({ prefix: f, suffix: p, isTechnical: y, size: R = "md", className: v, testId: b, ...I }, N) => {
|
|
10
|
+
const u = i(null), c = i(null), a = i(null), r = !!f, n = !!p;
|
|
11
|
+
return E(() => {
|
|
12
|
+
const s = u.current;
|
|
13
|
+
if (!s) return;
|
|
14
|
+
const l = [
|
|
15
|
+
[c, "--ui-input-prefix-width"],
|
|
16
|
+
[a, "--ui-input-suffix-width"]
|
|
17
|
+
], d = () => {
|
|
18
|
+
var t;
|
|
19
|
+
for (const [P, h] of l) {
|
|
20
|
+
const w = ((t = P.current) == null ? void 0 : t.getBoundingClientRect().width) ?? 0;
|
|
21
|
+
w > 0 ? s.style.setProperty(h, `${Math.ceil(w)}px`) : s.style.removeProperty(h);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
if (d(), typeof ResizeObserver > "u") return;
|
|
25
|
+
const m = new ResizeObserver(d);
|
|
26
|
+
for (const [t] of l) t.current && m.observe(t.current);
|
|
27
|
+
return () => m.disconnect();
|
|
28
|
+
}, [r, n]), /* @__PURE__ */ _("span", { ref: u, className: x(e.wrapper, v), children: [
|
|
29
|
+
r && /* @__PURE__ */ o("span", { ref: c, className: e.wrapper__prefix, "aria-hidden": !0, children: f }),
|
|
30
|
+
/* @__PURE__ */ o(
|
|
31
|
+
"input",
|
|
32
|
+
{
|
|
33
|
+
ref: N,
|
|
34
|
+
className: x(
|
|
35
|
+
e.input,
|
|
36
|
+
R === "sm" && e["input--sm"],
|
|
37
|
+
r && e["input--hasPrefix"],
|
|
38
|
+
n && e["input--hasSuffix"],
|
|
39
|
+
y && e["input--technical"]
|
|
40
|
+
),
|
|
41
|
+
"data-testid": b,
|
|
42
|
+
...I
|
|
43
|
+
}
|
|
44
|
+
),
|
|
45
|
+
n && /* @__PURE__ */ o("span", { ref: a, className: e.wrapper__suffix, "aria-hidden": !0, children: p })
|
|
46
|
+
] });
|
|
47
|
+
}
|
|
48
|
+
), k = /* @__PURE__ */ B(/* @__PURE__ */ z(L, "Input"));
|
|
49
|
+
export {
|
|
50
|
+
k as default
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Input/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n forwardRef,\n type InputHTMLAttributes,\n memo,\n type ReactNode,\n useLayoutEffect,\n useRef,\n} from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\n/*\n * `prefix` HTML'in RDFa nitelikleri arasinda yer alir ve React onu `string` olarak tanimlar.\n * `size` yerel ozellikte karakter genisligi (`number`); burada olcu adi — genislik CSS'ten gelir.\n */\ntype Props = Omit<InputHTMLAttributes<HTMLInputElement>, 'prefix' | 'size'> & {\n /** Solda gösterilen ikon veya ön ek (arama simgesi, para birimi). */\n prefix?: ReactNode;\n /** Sağda gösterilen ikon veya birim (göz simgesi, \"kg\"). */\n suffix?: ReactNode;\n /** Teknik veri: */\n isTechnical?: boolean;\n /** `sm` yoğun şeritler içindir (araç çubuğu, `Select size=\"sm\"` yanında); varsayılan form ölçüsü `md`. */\n size?: 'sm' | 'md';\n testId?: string;\n};\n\n/** `useLayoutEffect` sunucuda uyarı basar; orada etkisiz bir eşdeğer. */\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? () => {} : useLayoutEffect;\n\n/** Metin girdisi. */\nconst Input = /*#__PURE__*/ forwardRef<HTMLInputElement, Props>(\n ({ prefix, suffix, isTechnical, size = 'md', className, testId, ...rest }, ref) => {\n const wrapperRef = useRef<HTMLSpanElement>(null);\n const prefixRef = useRef<HTMLSpanElement>(null);\n const suffixRef = useRef<HTMLSpanElement>(null);\n /*\n * `Boolean(...)`: `prefix` bir `ReactNode` ve `0` da gecerli bir deger — `prefix &&`\n * ifadesi o durumda dize degil sayi donuyordu.\n */\n const hasPrefix = Boolean(prefix);\n const hasSuffix = Boolean(suffix);\n\n /*\n * Onek/sonekin genisligi olculup sarmalayiciya yazilir; girdinin ic payi buradan hesaplanir\n * (`--hasPrefix`). Boyamadan once olculur, icerik ya da yazi tipi degisince `ResizeObserver`\n * yeniden yazar. Olcum yokken (sunucu cizimi, jsdom) CSS ikon olcusunu varsayar.\n */\n useIsomorphicLayoutEffect(() => {\n const wrapper = wrapperRef.current;\n if (!wrapper) return undefined;\n const slots = [\n [prefixRef, '--ui-input-prefix-width'],\n [suffixRef, '--ui-input-suffix-width'],\n ] as const;\n const write = () => {\n for (const [slot, property] of slots) {\n const width = slot.current?.getBoundingClientRect().width ?? 0;\n if (width > 0) wrapper.style.setProperty(property, `${Math.ceil(width)}px`);\n else wrapper.style.removeProperty(property);\n }\n };\n write();\n if (typeof ResizeObserver === 'undefined') return undefined;\n const observer = new ResizeObserver(write);\n for (const [slot] of slots) if (slot.current) observer.observe(slot.current);\n return () => observer.disconnect();\n }, [hasPrefix, hasSuffix]);\n\n return (\n <span ref={wrapperRef} className={cx(styles.wrapper, className)}>\n {hasPrefix && (\n <span ref={prefixRef} className={styles.wrapper__prefix} aria-hidden>\n {prefix}\n </span>\n )}\n <input\n ref={ref}\n className={cx(\n styles.input,\n size === 'sm' && styles['input--sm'],\n hasPrefix && styles['input--hasPrefix'],\n hasSuffix && styles['input--hasSuffix'],\n isTechnical && styles['input--technical'],\n )}\n data-testid={testId}\n {...rest}\n />\n {hasSuffix && (\n <span ref={suffixRef} className={styles.wrapper__suffix} aria-hidden>\n {suffix}\n </span>\n )}\n </span>\n );\n },\n);\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Input, 'Input')) as typeof Input;\n"],"names":["useIsomorphicLayoutEffect","useLayoutEffect","Input","forwardRef","prefix","suffix","isTechnical","size","className","testId","rest","ref","wrapperRef","useRef","prefixRef","suffixRef","hasPrefix","hasSuffix","wrapper","slots","write","slot","property","width","_a","observer","jsxs","cx","styles","jsx","Input$1","memo","named"],"mappings":";;;;;;AAgCA,MAAMA,IAA4B,OAAO,SAAW,MAAc,MAAM;AAAC,IAAIC,GAGvEC,IAAsB,gBAAAC;AAAA,EAC1B,CAAC,EAAE,QAAAC,GAAQ,QAAAC,GAAQ,aAAAC,GAAa,MAAAC,IAAO,MAAM,WAAAC,GAAW,QAAAC,GAAQ,GAAGC,EAAA,GAAQC,MAAQ;AACjF,UAAMC,IAAaC,EAAwB,IAAI,GACzCC,IAAYD,EAAwB,IAAI,GACxCE,IAAYF,EAAwB,IAAI,GAKxCG,IAAY,EAAQZ,GACpBa,IAAY,EAAQZ;AAO1B,WAAAL,EAA0B,MAAM;AAC9B,YAAMkB,IAAUN,EAAW;AAC3B,UAAI,CAACM,EAAS;AACd,YAAMC,IAAQ;AAAA,QACZ,CAACL,GAAW,yBAAyB;AAAA,QACrC,CAACC,GAAW,yBAAyB;AAAA,MAAA,GAEjCK,IAAQ,MAAM;;AAClB,mBAAW,CAACC,GAAMC,CAAQ,KAAKH,GAAO;AACpC,gBAAMI,MAAQC,IAAAH,EAAK,YAAL,gBAAAG,EAAc,wBAAwB,UAAS;AAC7D,UAAID,IAAQ,IAAGL,EAAQ,MAAM,YAAYI,GAAU,GAAG,KAAK,KAAKC,CAAK,CAAC,IAAI,IACrEL,EAAQ,MAAM,eAAeI,CAAQ;AAAA,QAC5C;AAAA,MACF;AAEA,UADAF,EAAA,GACI,OAAO,iBAAmB,IAAa;AAC3C,YAAMK,IAAW,IAAI,eAAeL,CAAK;AACzC,iBAAW,CAACC,CAAI,KAAKF,EAAO,CAAIE,EAAK,WAASI,EAAS,QAAQJ,EAAK,OAAO;AAC3E,aAAO,MAAMI,EAAS,WAAA;AAAA,IACxB,GAAG,CAACT,GAAWC,CAAS,CAAC,GAGvB,gBAAAS,EAAC,UAAK,KAAKd,GAAY,WAAWe,EAAGC,EAAO,SAASpB,CAAS,GAC3D,UAAA;AAAA,MAAAQ,KACC,gBAAAa,EAAC,UAAK,KAAKf,GAAW,WAAWc,EAAO,iBAAiB,eAAW,IACjE,UAAAxB,EAAA,CACH;AAAA,MAEF,gBAAAyB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAlB;AAAA,UACA,WAAWgB;AAAA,YACTC,EAAO;AAAA,YACPrB,MAAS,QAAQqB,EAAO,WAAW;AAAA,YACnCZ,KAAaY,EAAO,kBAAkB;AAAA,YACtCX,KAAaW,EAAO,kBAAkB;AAAA,YACtCtB,KAAesB,EAAO,kBAAkB;AAAA,UAAA;AAAA,UAE1C,eAAanB;AAAA,UACZ,GAAGC;AAAA,QAAA;AAAA,MAAA;AAAA,MAELO,KACC,gBAAAY,EAAC,QAAA,EAAK,KAAKd,GAAW,WAAWa,EAAO,iBAAiB,eAAW,IACjE,UAAAvB,EAAA,CACH;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF,GAEAyB,IAA6B,gBAAAC,EAAmB,gBAAAC,EAAM9B,GAAO,OAAO,CAAC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";@layer ui{.ui-wrapper-IAI4E{position:relative;display:flex;align-items:center;width:100%}.ui-wrapper__prefix-XKDlV,.ui-wrapper__suffix-lT35q{position:absolute;display:flex;align-items:center;color:var(--hd-text-2);pointer-events:none;font-size:var(--hd-type-small-size)}.ui-wrapper__prefix-XKDlV{inset-inline-start:var(--hd-space-3)}.ui-wrapper__suffix-lT35q{inset-inline-end:var(--hd-space-3)}.ui-input-pIS2u{width:100%;font-family:var(--hd-font-body);font-size:var(--hd-type-body-size);line-height:var(--hd-type-h4-line-height);color:var(--hd-text);background-color:var(--hd-bg-surface);border:1px solid var(--hd-border-strong);border-radius:var(--hd-radius-sm);padding:var(--hd-space-2) var(--hd-space-3);min-height:40px}@media (max-width: 640px){.ui-input-pIS2u{min-height:44px;font-size:max(16px,var(--hd-type-body-size))}}@media (hover: none) and (pointer: coarse){.ui-input-pIS2u{min-height:44px;font-size:max(16px,var(--hd-type-body-size))}}.ui-input-pIS2u{transition:border-color var(--hd-duration-fast) var(--hd-ease-standard),box-shadow var(--hd-duration-fast) var(--hd-ease-standard)}.ui-input-pIS2u::placeholder{color:var(--ui-placeholder, var(--hd-text-3))}.ui-input-pIS2u:hover:not(:disabled):not([aria-invalid=true]){border-color:color-mix(in oklab,var(--hd-border-strong),var(--hd-text) 30%)}.ui-input-pIS2u:focus{outline:none;border-color:var(--hd-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--hd-focus) 32%,transparent)}.ui-input-pIS2u: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-input-pIS2u:disabled{color:GrayText;border-color:GrayText}}.ui-input-pIS2u[aria-invalid=true]{border-color:var(--hd-danger-solid)}.ui-input-pIS2u[aria-invalid=true]:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--hd-danger-solid) 28%,transparent)}@media (prefers-reduced-motion: reduce){.ui-input-pIS2u{transition:none}}.ui-input--sm-v1rrv{min-height:32px;padding-block:0;padding-inline:var(--hd-space-3);font-size:var(--hd-type-small-size)}@media (max-width: 640px){.ui-input--sm-v1rrv{min-height:32px;font-size:var(--hd-type-small-size);font-size:max(16px,var(--hd-type-body-size))}}@media (hover: none) and (pointer: coarse){.ui-input--sm-v1rrv{min-height:32px;font-size:var(--hd-type-small-size);font-size:max(16px,var(--hd-type-body-size))}}.ui-input--hasPrefix-nsrWh{padding-inline-start:calc(var(--hd-space-3) + var(--ui-input-prefix-width, 18px) + var(--hd-space-2))}.ui-input--hasSuffix-OrE5A{padding-inline-end:calc(var(--hd-space-3) + var(--ui-input-suffix-width, 18px) + var(--hd-space-2))}.ui-input--technical---DCD{font-family:var(--hd-font-mono);font-size:max(16px,var(--hd-type-body-size));letter-spacing:.02em;font-variant-numeric:tabular-nums;letter-spacing:.06em}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),c=require("react"),n=require("../../helpers/class-name.helper.cjs"),u=require("../../helpers/component.helper.cjs"),s={default:{"kbd":"ui-kbd-W9O6L","kbd__group":"ui-kbd__group-19TQs","kbd__joiner":"ui-kbd__joiner-If794","kbd__key":"ui-kbd__key-9B5fJ"}},o=({keys:d,className:l,...t})=>e.jsx("kbd",{className:n.cx(s.default.kbd,l),...t,children:d.map((r,a)=>e.jsxs("span",{className:s.default.kbd__group,children:[a>0&&e.jsx("span",{className:s.default.kbd__joiner,children:"+"}),e.jsx("kbd",{className:s.default.kbd__key,children:r})]},`${r}-${a}`))}),i=c.memo(u.named(o,"Kbd"));exports.default=i;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Kbd/index.tsx"],"sourcesContent":["import { type FC, type HTMLAttributes, memo } 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 = Omit<HTMLAttributes<HTMLElement>, 'children'> & {\n /** Basılacak tuşlar, sırayla: `['Shift', 'Enter']`. Tek tuş da bir dizi: `['⌘K']`. */\n keys: string[];\n};\n\n/**\n * Klavye kısayolu — `<kbd>` içinde her tuş kendi `<kbd>`si (HTML'in birleşik tuş deseni).\n * Ekran okuyucu \"Shift artı Enter\" diye okur; yalnızca görsel bir ipucuysa `aria-hidden` geçin.\n */\nconst Kbd: FC<Props> = ({ keys, className, ...rest }) => (\n <kbd className={cx(styles.kbd, className)} {...rest}>\n {keys.map((key, index) => (\n <span key={`${key}-${index}`} className={styles.kbd__group}>\n {index > 0 && <span className={styles.kbd__joiner}>+</span>}\n <kbd className={styles.kbd__key}>{key}</kbd>\n </span>\n ))}\n </kbd>\n);\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Kbd, 'Kbd')) as typeof Kbd;\n"],"names":["Kbd","keys","className","rest","jsx","cx","styles","key","index","jsxs","memo","named"],"mappings":"0SAgBMA,EAAiB,CAAC,CAAE,KAAAC,EAAM,UAAAC,EAAW,GAAGC,CAAA,IAC5CC,MAAC,MAAA,CAAI,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,IAAKJ,CAAS,EAAI,GAAGC,EAC5C,SAAAF,EAAK,IAAI,CAACM,EAAKC,IACdC,EAAAA,KAAC,OAAA,CAA6B,UAAWH,EAAAA,QAAO,WAC7C,SAAA,CAAAE,EAAQ,GAAKJ,EAAAA,IAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,YAAa,SAAA,IAAC,EACpDF,EAAAA,IAAC,MAAA,CAAI,UAAWE,EAAAA,QAAO,SAAW,SAAAC,CAAA,CAAI,CAAA,CAAA,EAF7B,GAAGA,CAAG,IAAIC,CAAK,EAG1B,CACD,EACH,EAGFR,EAA6BU,OAAmBC,EAAAA,MAAMX,EAAK,KAAK,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FC, HTMLAttributes } from 'react';
|
|
2
|
+
type Props = Omit<HTMLAttributes<HTMLElement>, 'children'> & {
|
|
3
|
+
/** Basılacak tuşlar, sırayla: `['Shift', 'Enter']`. Tek tuş da bir dizi: `['⌘K']`. */
|
|
4
|
+
keys: string[];
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Klavye kısayolu — `<kbd>` içinde her tuş kendi `<kbd>`si (HTML'in birleşik tuş deseni).
|
|
8
|
+
* Ekran okuyucu "Shift artı Enter" diye okur; yalnızca görsel bir ipucuysa `aria-hidden` geçin.
|
|
9
|
+
*/
|
|
10
|
+
declare const Kbd: FC<Props>;
|
|
11
|
+
declare const _default: typeof Kbd;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
2
|
+
import { memo as l } from "react";
|
|
3
|
+
import { cx as p } from "../../helpers/class-name.helper.js";
|
|
4
|
+
import { named as t } from "../../helpers/component.helper.js";
|
|
5
|
+
const m = {"kbd":"ui-kbd-W9O6L","kbd__group":"ui-kbd__group-19TQs","kbd__joiner":"ui-kbd__joiner-If794","kbd__key":"ui-kbd__key-9B5fJ"};
|
|
6
|
+
const b = ({ keys: a, className: d, ...e }) => /* @__PURE__ */ s("kbd", { className: p(m.kbd, d), ...e, children: a.map((r, o) => /* @__PURE__ */ c("span", { className: m.kbd__group, children: [
|
|
7
|
+
o > 0 && /* @__PURE__ */ s("span", { className: m.kbd__joiner, children: "+" }),
|
|
8
|
+
/* @__PURE__ */ s("kbd", { className: m.kbd__key, children: r })
|
|
9
|
+
] }, `${r}-${o}`)) }), h = /* @__PURE__ */ l(/* @__PURE__ */ t(b, "Kbd"));
|
|
10
|
+
export {
|
|
11
|
+
h as default
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Kbd/index.tsx"],"sourcesContent":["import { type FC, type HTMLAttributes, memo } 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 = Omit<HTMLAttributes<HTMLElement>, 'children'> & {\n /** Basılacak tuşlar, sırayla: `['Shift', 'Enter']`. Tek tuş da bir dizi: `['⌘K']`. */\n keys: string[];\n};\n\n/**\n * Klavye kısayolu — `<kbd>` içinde her tuş kendi `<kbd>`si (HTML'in birleşik tuş deseni).\n * Ekran okuyucu \"Shift artı Enter\" diye okur; yalnızca görsel bir ipucuysa `aria-hidden` geçin.\n */\nconst Kbd: FC<Props> = ({ keys, className, ...rest }) => (\n <kbd className={cx(styles.kbd, className)} {...rest}>\n {keys.map((key, index) => (\n <span key={`${key}-${index}`} className={styles.kbd__group}>\n {index > 0 && <span className={styles.kbd__joiner}>+</span>}\n <kbd className={styles.kbd__key}>{key}</kbd>\n </span>\n ))}\n </kbd>\n);\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Kbd, 'Kbd')) as typeof Kbd;\n"],"names":["Kbd","keys","className","rest","jsx","cx","styles","key","index","jsxs","Kbd$1","memo","named"],"mappings":";;;;;AAgBA,MAAMA,IAAiB,CAAC,EAAE,MAAAC,GAAM,WAAAC,GAAW,GAAGC,EAAA,MAC5C,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAGC,EAAO,KAAKJ,CAAS,GAAI,GAAGC,GAC5C,UAAAF,EAAK,IAAI,CAACM,GAAKC,MACd,gBAAAC,EAAC,QAAA,EAA6B,WAAWH,EAAO,YAC7C,UAAA;AAAA,EAAAE,IAAQ,KAAK,gBAAAJ,EAAC,QAAA,EAAK,WAAWE,EAAO,aAAa,UAAA,KAAC;AAAA,EACpD,gBAAAF,EAAC,OAAA,EAAI,WAAWE,EAAO,UAAW,UAAAC,EAAA,CAAI;AAAA,EAAA,GAF7B,GAAGA,CAAG,IAAIC,CAAK,EAG1B,CACD,GACH,GAGFE,IAA6B,gBAAAC,EAAmB,gBAAAC,EAAMZ,GAAK,KAAK,CAAC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-kbd-W9O6L{display:inline-flex;align-items:center;flex-shrink:0;font:inherit}.ui-kbd__group-19TQs{display:inline-flex;align-items:center}.ui-kbd__joiner-If794{padding-inline:2px;font-size:var(--hd-type-caption-size);color:var(--hd-text-3)}.ui-kbd__key-9B5fJ{font-family:var(--hd-font-mono);font-size:var(--hd-type-caption-size);letter-spacing:.02em;font-variant-numeric:tabular-nums;padding:2px var(--hd-space-1);border:1px solid var(--hd-border);border-radius:var(--hd-radius-xs);background-color:var(--hd-bg-raised);color:var(--hd-text-2)}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),u=require("../../theme/context.cjs"),i=({children:e,...t})=>{const{linkComponent:n}=u.useUi();return n?o.jsx(n,{...t,children:e}):o.jsx("a",{...t,children:e})};exports.default=i;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Link/index.tsx"],"sourcesContent":["'use client';\n\nimport type { AnchorHTMLAttributes, FC } from 'react';\n\nimport { useUi } from '../../theme/context';\nimport type { UiLinkProps } from '../../types/link.type';\n\n/** Kütüphanenin İÇ bağlantı öğesi. */\nconst UiLink: FC<UiLinkProps> = ({ children, ...rest }) => {\n const { linkComponent: LinkComponent } = useUi();\n\n if (LinkComponent) return <LinkComponent {...(rest as UiLinkProps)}>{children}</LinkComponent>;\n\n /*\n * Yonlendirici yoksa ham `<a>`. `rest` indeks imzasi tasiyor (yonlendiriciye ozgu props icin);\n * DOM'a giderken anchor sozlesmesine daraltilir\n */\n return <a {...(rest as AnchorHTMLAttributes<HTMLAnchorElement>)}>{children}</a>;\n};\n\nexport default UiLink;\n"],"names":["UiLink","children","rest","LinkComponent","useUi","jsx"],"mappings":"mMAOMA,EAA0B,CAAC,CAAE,SAAAC,EAAU,GAAGC,KAAW,CACzD,KAAM,CAAE,cAAeC,CAAA,EAAkBC,QAAA,EAEzC,OAAID,EAAsBE,MAACF,EAAA,CAAe,GAAID,EAAuB,SAAAD,EAAS,EAMvEI,EAAAA,IAAC,IAAA,CAAG,GAAIH,EAAmD,SAAAD,CAAA,CAAS,CAC7E"}
|