@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,15 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
3
|
+
import { memo as m } from "react";
|
|
4
|
+
import { cx as t } from "../../helpers/class-name.helper.js";
|
|
5
|
+
import { resolveLabel as p } from "../../helpers/label.helper.js";
|
|
6
|
+
import { useUi as l } from "../../theme/context.js";
|
|
7
|
+
const e = {"spinner":"ui-spinner-7pXwf","spinner__label":"ui-spinner__label-sZvSq","spinner--sm":"ui-spinner--sm-uI0wH","spinner--md":"ui-spinner--md--VmFK","spinner--lg":"ui-spinner--lg-K9k-Z"};
|
|
8
|
+
const a = ({ size: o = "md", label: s, className: i }) => {
|
|
9
|
+
const { labels: r } = l();
|
|
10
|
+
return /* @__PURE__ */ n("span", { className: t(e.spinner, e[`spinner--${o}`], i), role: "status", children: /* @__PURE__ */ n("span", { className: e.spinner__label, children: s ?? p("Spinner.label", r == null ? void 0 : r.loading) }) });
|
|
11
|
+
}, b = /* @__PURE__ */ m(a);
|
|
12
|
+
export {
|
|
13
|
+
b as default
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Spinner/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n size?: 'sm' | 'md' | 'lg';\n /** Ekran okuyucuya okunacak metin; görsel olarak gizli. */\n label?: string;\n className?: string;\n};\n\n/** Yükleme göstergesi. */\nconst Spinner: FC<Props> = ({ size = 'md', label, className }) => {\n const { labels } = useUi();\n\n return (\n <span className={cx(styles.spinner, styles[`spinner--${size}`], className)} role=\"status\">\n <span className={styles.spinner__label}>\n {label ?? resolveLabel('Spinner.label', labels?.loading)}\n </span>\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Spinner) as typeof Spinner;\n"],"names":["Spinner","size","label","className","labels","useUi","jsx","cx","styles","resolveLabel","Spinner$1"],"mappings":";;;;;;;AAiBA,MAAMA,IAAqB,CAAC,EAAE,MAAAC,IAAO,MAAM,OAAAC,GAAO,WAAAC,QAAgB;AAChE,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA;AAEnB,SACE,gBAAAC,EAAC,QAAA,EAAK,WAAWC,EAAGC,EAAO,SAASA,EAAO,YAAYP,CAAI,EAAE,GAAGE,CAAS,GAAG,MAAK,UAC/E,UAAA,gBAAAG,EAAC,QAAA,EAAK,WAAWE,EAAO,gBACrB,UAAAN,KAASO,EAAa,iBAAiBL,KAAA,gBAAAA,EAAQ,OAAO,EAAA,CACzD,EAAA,CACF;AAEJ,GAEAM,sBAAkCV,CAAO;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-spinner-7pXwf{display:inline-block;border-radius:var(--hd-radius-pill);border:2px solid var(--hd-border);border-top-color:var(--hd-primary);animation:var(--ui-anim-spin) .7s linear infinite}.ui-spinner__label-sZvSq{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-spinner--sm-uI0wH{width:14px;height:14px}.ui-spinner--md--VmFK{width:20px;height:20px}.ui-spinner--lg-K9k-Z{width:32px;height:32px;border-width:3px}@media (prefers-reduced-motion: reduce){.ui-spinner-7pXwf{animation:none;border-top-color:var(--hd-primary)}}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),v=require("react"),r=require("react-bootstrap-icons"),o=require("../../helpers/class-name.helper.cjs"),q=require("../../helpers/component.helper.cjs"),S=require("../../helpers/label.helper.cjs"),g=require("../../theme/context.cjs"),e={default:{"stat":"ui-stat-Xb7wp","stat--sm":"ui-stat--sm-XnK8p","stat--plain":"ui-stat--plain-N-3RC","stat__icon":"ui-stat__icon-MB8NU","stat--inline":"ui-stat--inline-IpE0J","stat__label":"ui-stat__label-kUX2m","stat__value":"ui-stat__value--6p13","stat__unit":"ui-stat__unit-mjHVk","stat__delta":"ui-stat__delta-YKpOu","stat__delta--positive":"ui-stat__delta--positive-1AUAM","stat__delta--negative":"ui-stat__delta--negative--WWEP","stat__description":"ui-stat__description-Yvw6J","stat__srOnly":"ui-stat__srOnly-YKebA"}},w={up:t.jsx(r.ArrowUpShort,{"aria-hidden":!0}),down:t.jsx(r.ArrowDownShort,{"aria-hidden":!0}),flat:t.jsx(r.DashLg,{"aria-hidden":!0})},_={up:"increase",down:"decrease",flat:"unchanged"},b=({label:h,value:f,unit:l,delta:n,trend:a,isUpPositive:p=!0,description:c,icon:d,variant:m="card",size:x="md",className:j,testId:N})=>{var u;const{labels:s}=g.useUi(),i=a==="flat"?void 0:a==="up"===p;return t.jsxs("div",{className:o.cx(e.default.stat,e.default[`stat--${x}`],e.default[`stat--${m}`],j),"data-testid":N,children:[d&&t.jsx("span",{className:e.default.stat__icon,"aria-hidden":!0,children:d}),t.jsx("span",{className:e.default.stat__label,children:h}),t.jsxs("span",{className:e.default.stat__value,children:[f,l&&t.jsx("span",{className:e.default.stat__unit,children:l})]}),n&&a&&t.jsxs("span",{className:o.cx(e.default.stat__delta,i===!0&&e.default["stat__delta--positive"],i===!1&&e.default["stat__delta--negative"]),children:[w[a],n,t.jsx("span",{className:e.default.stat__srOnly,children:S.resolveLabel(`Stat.${_[a]}`,(u=s==null?void 0:s.stat)==null?void 0:u[_[a]])})]}),c&&t.jsx("span",{className:e.default.stat__description,children:c})]})},D=v.memo(q.named(b,"Stat"));exports.default=D;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Stat/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo, type ReactNode } from 'react';\n\nimport { ArrowDownShort, ArrowUpShort, DashLg } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\n\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\n/** Değişimin yönü. `flat` \"değişmedi\" — yokluk DEĞİL. */\nexport type StatTrend = 'up' | 'down' | 'flat';\n\ntype Props = {\n /** Ölçülen şeyin adı (\"Bugünkü sipariş\"). */\n label: string;\n /** Değerin KENDİSİ — biçimlendirilmiş dize. */\n value: ReactNode;\n /** Değerin yanındaki birim (\"₺\", \"adet\"). */\n unit?: string;\n /** Değişim metni (\"%12\", \"+3\"). `trend` ile birlikte anlamlı. */\n delta?: string;\n /** Değişimin yönü. */\n trend?: StatTrend;\n /** Artış İYİ mi. */\n isUpPositive?: boolean;\n /** Değerin altındaki bir cümlelik bağlam (\"geçen haftaya göre\"). */\n description?: ReactNode;\n /** Sol üstte duran ikon madalyonu. */\n icon?: ReactNode;\n /**\n * `plain` KUTUYU kaldırır: zemin, kenarlık ve dolgu gider, yalnızca sayı kalır.\n * `inline` etiketi ve değeri TEK SATIRA dizer, değer teknik fontta — metrik satırı (\"Gecikme\n * 412 ms\"). Değişim ve açıklama bu kipte de çizilir, satırı uzatır.\n */\n variant?: 'card' | 'plain' | 'inline';\n size?: 'sm' | 'md';\n className?: string;\n testId?: string;\n};\n\nconst TREND_ICON: Record<StatTrend, ReactNode> = {\n up: <ArrowUpShort aria-hidden />,\n down: <ArrowDownShort aria-hidden />,\n flat: <DashLg aria-hidden />,\n};\n\n/* ⚠ YON METNI SR-ONLY ve SAGLAYICIDAN gelir. */\nconst TREND_KEY: Record<StatTrend, 'increase' | 'decrease' | 'unchanged'> = {\n up: 'increase',\n down: 'decrease',\n flat: 'unchanged',\n};\n\n/** Ölçüm kutusu (KPI). */\nconst Stat: FC<Props> = ({\n label,\n value,\n unit,\n delta,\n trend,\n isUpPositive = true,\n description,\n icon,\n variant = 'card',\n size = 'md',\n className,\n testId,\n}) => {\n const { labels } = useUi();\n\n /* Yonun IYI mi KOTU mu oldugu ayri bir karar: \"artis\" her zaman iyi degil. */\n const isPositive = trend === 'flat' ? undefined : (trend === 'up') === isUpPositive;\n\n return (\n /* `card` icin ayri bir sinif YOK: taban sinifin kendisi kart. */\n <div\n className={cx(styles.stat, styles[`stat--${size}`], styles[`stat--${variant}`], className)}\n data-testid={testId}\n >\n {icon && (\n <span className={styles.stat__icon} aria-hidden>\n {icon}\n </span>\n )}\n\n <span className={styles.stat__label}>{label}</span>\n\n <span className={styles.stat__value}>\n {value}\n {unit && <span className={styles.stat__unit}>{unit}</span>}\n </span>\n\n {delta && trend && (\n <span\n className={cx(\n styles.stat__delta,\n isPositive === true && styles['stat__delta--positive'],\n isPositive === false && styles['stat__delta--negative'],\n )}\n >\n {TREND_ICON[trend]}\n {delta}\n {/* Yon METIN olarak da okunur: ok ve renk ekran okuyucuya gecmiyor. */}\n <span className={styles.stat__srOnly}>\n {resolveLabel(`Stat.${TREND_KEY[trend]}`, labels?.stat?.[TREND_KEY[trend]])}\n </span>\n </span>\n )}\n\n {description && <span className={styles.stat__description}>{description}</span>}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Stat, 'Stat')) as typeof Stat;\n"],"names":["TREND_ICON","jsx","ArrowUpShort","ArrowDownShort","DashLg","TREND_KEY","Stat","label","value","unit","delta","trend","isUpPositive","description","icon","variant","size","className","testId","labels","useUi","isPositive","jsxs","cx","styles","_a","index","memo","named"],"mappings":"2aA4CMA,EAA2C,CAC/C,GAAIC,EAAAA,IAACC,EAAAA,aAAA,CAAa,cAAW,EAAA,CAAC,EAC9B,KAAMD,EAAAA,IAACE,EAAAA,eAAA,CAAe,cAAW,EAAA,CAAC,EAClC,KAAMF,EAAAA,IAACG,EAAAA,OAAA,CAAO,cAAW,EAAA,CAAC,CAC5B,EAGMC,EAAsE,CAC1E,GAAI,WACJ,KAAM,WACN,KAAM,WACR,EAGMC,EAAkB,CAAC,CACvB,MAAAC,EACA,MAAAC,EACA,KAAAC,EACA,MAAAC,EACA,MAAAC,EACA,aAAAC,EAAe,GACf,YAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,OACV,KAAAC,EAAO,KACP,UAAAC,EACA,OAAAC,CACF,IAAM,OACJ,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EAGbC,EAAaV,IAAU,OAAS,OAAaA,IAAU,OAAUC,EAEvE,OAEEU,EAAAA,KAAC,MAAA,CACC,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,KAAMA,EAAAA,QAAO,SAASR,CAAI,EAAE,EAAGQ,EAAAA,QAAO,SAAST,CAAO,EAAE,EAAGE,CAAS,EACzF,cAAaC,EAEZ,SAAA,CAAAJ,SACE,OAAA,CAAK,UAAWU,EAAAA,QAAO,WAAY,cAAW,GAC5C,SAAAV,CAAA,CACH,EAGFb,EAAAA,IAAC,OAAA,CAAK,UAAWuB,EAAAA,QAAO,YAAc,SAAAjB,EAAM,EAE5Ce,EAAAA,KAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,YACrB,SAAA,CAAAhB,EACAC,GAAQR,EAAAA,IAAC,OAAA,CAAK,UAAWuB,EAAAA,QAAO,WAAa,SAAAf,CAAA,CAAK,CAAA,EACrD,EAECC,GAASC,GACRW,EAAAA,KAAC,OAAA,CACC,UAAWC,EAAAA,GACTC,EAAAA,QAAO,YACPH,IAAe,IAAQG,EAAAA,QAAO,uBAAuB,EACrDH,IAAe,IAASG,EAAAA,QAAO,uBAAuB,CAAA,EAGvD,SAAA,CAAAxB,EAAWW,CAAK,EAChBD,QAEA,OAAA,CAAK,UAAWc,EAAAA,QAAO,aACrB,wBAAa,QAAQnB,EAAUM,CAAK,CAAC,IAAIc,EAAAN,GAAA,YAAAA,EAAQ,OAAR,YAAAM,EAAepB,EAAUM,CAAK,EAAE,CAAA,CAC5E,CAAA,CAAA,CAAA,EAIHE,GAAeZ,EAAAA,IAAC,OAAA,CAAK,UAAWuB,EAAAA,QAAO,kBAAoB,SAAAX,CAAA,CAAY,CAAA,CAAA,CAAA,CAG9E,EAEAa,EAA6BC,OAAmBC,EAAAA,MAAMtB,EAAM,MAAM,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
/** Değişimin yönü. `flat` "değişmedi" — yokluk DEĞİL. */
|
|
3
|
+
export type StatTrend = 'up' | 'down' | 'flat';
|
|
4
|
+
type Props = {
|
|
5
|
+
/** Ölçülen şeyin adı ("Bugünkü sipariş"). */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Değerin KENDİSİ — biçimlendirilmiş dize. */
|
|
8
|
+
value: ReactNode;
|
|
9
|
+
/** Değerin yanındaki birim ("₺", "adet"). */
|
|
10
|
+
unit?: string;
|
|
11
|
+
/** Değişim metni ("%12", "+3"). `trend` ile birlikte anlamlı. */
|
|
12
|
+
delta?: string;
|
|
13
|
+
/** Değişimin yönü. */
|
|
14
|
+
trend?: StatTrend;
|
|
15
|
+
/** Artış İYİ mi. */
|
|
16
|
+
isUpPositive?: boolean;
|
|
17
|
+
/** Değerin altındaki bir cümlelik bağlam ("geçen haftaya göre"). */
|
|
18
|
+
description?: ReactNode;
|
|
19
|
+
/** Sol üstte duran ikon madalyonu. */
|
|
20
|
+
icon?: ReactNode;
|
|
21
|
+
/**
|
|
22
|
+
* `plain` KUTUYU kaldırır: zemin, kenarlık ve dolgu gider, yalnızca sayı kalır.
|
|
23
|
+
* `inline` etiketi ve değeri TEK SATIRA dizer, değer teknik fontta — metrik satırı ("Gecikme
|
|
24
|
+
* 412 ms"). Değişim ve açıklama bu kipte de çizilir, satırı uzatır.
|
|
25
|
+
*/
|
|
26
|
+
variant?: 'card' | 'plain' | 'inline';
|
|
27
|
+
size?: 'sm' | 'md';
|
|
28
|
+
className?: string;
|
|
29
|
+
testId?: string;
|
|
30
|
+
};
|
|
31
|
+
/** Ölçüm kutusu (KPI). */
|
|
32
|
+
declare const Stat: FC<Props>;
|
|
33
|
+
declare const _default: typeof Stat;
|
|
34
|
+
export default _default;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as r, jsx as t } from "react/jsx-runtime";
|
|
3
|
+
import { memo as x } from "react";
|
|
4
|
+
import { DashLg as S, ArrowDownShort as D, ArrowUpShort as g } from "react-bootstrap-icons";
|
|
5
|
+
import { cx as d } from "../../helpers/class-name.helper.js";
|
|
6
|
+
import { named as E } from "../../helpers/component.helper.js";
|
|
7
|
+
import { resolveLabel as $ } from "../../helpers/label.helper.js";
|
|
8
|
+
import { useUi as j } from "../../theme/context.js";
|
|
9
|
+
const a = {"stat":"ui-stat-Xb7wp","stat--sm":"ui-stat--sm-XnK8p","stat--plain":"ui-stat--plain-N-3RC","stat__icon":"ui-stat__icon-MB8NU","stat--inline":"ui-stat--inline-IpE0J","stat__label":"ui-stat__label-kUX2m","stat__value":"ui-stat__value--6p13","stat__unit":"ui-stat__unit-mjHVk","stat__delta":"ui-stat__delta-YKpOu","stat__delta--positive":"ui-stat__delta--positive-1AUAM","stat__delta--negative":"ui-stat__delta--negative--WWEP","stat__description":"ui-stat__description-Yvw6J","stat__srOnly":"ui-stat__srOnly-YKebA"};
|
|
10
|
+
const y = {
|
|
11
|
+
up: /* @__PURE__ */ t(g, { "aria-hidden": !0 }),
|
|
12
|
+
down: /* @__PURE__ */ t(D, { "aria-hidden": !0 }),
|
|
13
|
+
flat: /* @__PURE__ */ t(S, { "aria-hidden": !0 })
|
|
14
|
+
}, p = {
|
|
15
|
+
up: "increase",
|
|
16
|
+
down: "decrease",
|
|
17
|
+
flat: "unchanged"
|
|
18
|
+
}, A = ({
|
|
19
|
+
label: _,
|
|
20
|
+
value: h,
|
|
21
|
+
unit: i,
|
|
22
|
+
delta: o,
|
|
23
|
+
trend: s,
|
|
24
|
+
isUpPositive: u = !0,
|
|
25
|
+
description: n,
|
|
26
|
+
icon: l,
|
|
27
|
+
variant: f = "card",
|
|
28
|
+
size: N = "md",
|
|
29
|
+
className: v,
|
|
30
|
+
testId: w
|
|
31
|
+
}) => {
|
|
32
|
+
var m;
|
|
33
|
+
const { labels: e } = j(), c = s === "flat" ? void 0 : s === "up" === u;
|
|
34
|
+
return (
|
|
35
|
+
/* `card` icin ayri bir sinif YOK: taban sinifin kendisi kart. */
|
|
36
|
+
/* @__PURE__ */ r(
|
|
37
|
+
"div",
|
|
38
|
+
{
|
|
39
|
+
className: d(a.stat, a[`stat--${N}`], a[`stat--${f}`], v),
|
|
40
|
+
"data-testid": w,
|
|
41
|
+
children: [
|
|
42
|
+
l && /* @__PURE__ */ t("span", { className: a.stat__icon, "aria-hidden": !0, children: l }),
|
|
43
|
+
/* @__PURE__ */ t("span", { className: a.stat__label, children: _ }),
|
|
44
|
+
/* @__PURE__ */ r("span", { className: a.stat__value, children: [
|
|
45
|
+
h,
|
|
46
|
+
i && /* @__PURE__ */ t("span", { className: a.stat__unit, children: i })
|
|
47
|
+
] }),
|
|
48
|
+
o && s && /* @__PURE__ */ r(
|
|
49
|
+
"span",
|
|
50
|
+
{
|
|
51
|
+
className: d(
|
|
52
|
+
a.stat__delta,
|
|
53
|
+
c === !0 && a["stat__delta--positive"],
|
|
54
|
+
c === !1 && a["stat__delta--negative"]
|
|
55
|
+
),
|
|
56
|
+
children: [
|
|
57
|
+
y[s],
|
|
58
|
+
o,
|
|
59
|
+
/* @__PURE__ */ t("span", { className: a.stat__srOnly, children: $(`Stat.${p[s]}`, (m = e == null ? void 0 : e.stat) == null ? void 0 : m[p[s]]) })
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
),
|
|
63
|
+
n && /* @__PURE__ */ t("span", { className: a.stat__description, children: n })
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
);
|
|
68
|
+
}, K = /* @__PURE__ */ x(/* @__PURE__ */ E(A, "Stat"));
|
|
69
|
+
export {
|
|
70
|
+
K as default
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Stat/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo, type ReactNode } from 'react';\n\nimport { ArrowDownShort, ArrowUpShort, DashLg } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\n\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\n/** Değişimin yönü. `flat` \"değişmedi\" — yokluk DEĞİL. */\nexport type StatTrend = 'up' | 'down' | 'flat';\n\ntype Props = {\n /** Ölçülen şeyin adı (\"Bugünkü sipariş\"). */\n label: string;\n /** Değerin KENDİSİ — biçimlendirilmiş dize. */\n value: ReactNode;\n /** Değerin yanındaki birim (\"₺\", \"adet\"). */\n unit?: string;\n /** Değişim metni (\"%12\", \"+3\"). `trend` ile birlikte anlamlı. */\n delta?: string;\n /** Değişimin yönü. */\n trend?: StatTrend;\n /** Artış İYİ mi. */\n isUpPositive?: boolean;\n /** Değerin altındaki bir cümlelik bağlam (\"geçen haftaya göre\"). */\n description?: ReactNode;\n /** Sol üstte duran ikon madalyonu. */\n icon?: ReactNode;\n /**\n * `plain` KUTUYU kaldırır: zemin, kenarlık ve dolgu gider, yalnızca sayı kalır.\n * `inline` etiketi ve değeri TEK SATIRA dizer, değer teknik fontta — metrik satırı (\"Gecikme\n * 412 ms\"). Değişim ve açıklama bu kipte de çizilir, satırı uzatır.\n */\n variant?: 'card' | 'plain' | 'inline';\n size?: 'sm' | 'md';\n className?: string;\n testId?: string;\n};\n\nconst TREND_ICON: Record<StatTrend, ReactNode> = {\n up: <ArrowUpShort aria-hidden />,\n down: <ArrowDownShort aria-hidden />,\n flat: <DashLg aria-hidden />,\n};\n\n/* ⚠ YON METNI SR-ONLY ve SAGLAYICIDAN gelir. */\nconst TREND_KEY: Record<StatTrend, 'increase' | 'decrease' | 'unchanged'> = {\n up: 'increase',\n down: 'decrease',\n flat: 'unchanged',\n};\n\n/** Ölçüm kutusu (KPI). */\nconst Stat: FC<Props> = ({\n label,\n value,\n unit,\n delta,\n trend,\n isUpPositive = true,\n description,\n icon,\n variant = 'card',\n size = 'md',\n className,\n testId,\n}) => {\n const { labels } = useUi();\n\n /* Yonun IYI mi KOTU mu oldugu ayri bir karar: \"artis\" her zaman iyi degil. */\n const isPositive = trend === 'flat' ? undefined : (trend === 'up') === isUpPositive;\n\n return (\n /* `card` icin ayri bir sinif YOK: taban sinifin kendisi kart. */\n <div\n className={cx(styles.stat, styles[`stat--${size}`], styles[`stat--${variant}`], className)}\n data-testid={testId}\n >\n {icon && (\n <span className={styles.stat__icon} aria-hidden>\n {icon}\n </span>\n )}\n\n <span className={styles.stat__label}>{label}</span>\n\n <span className={styles.stat__value}>\n {value}\n {unit && <span className={styles.stat__unit}>{unit}</span>}\n </span>\n\n {delta && trend && (\n <span\n className={cx(\n styles.stat__delta,\n isPositive === true && styles['stat__delta--positive'],\n isPositive === false && styles['stat__delta--negative'],\n )}\n >\n {TREND_ICON[trend]}\n {delta}\n {/* Yon METIN olarak da okunur: ok ve renk ekran okuyucuya gecmiyor. */}\n <span className={styles.stat__srOnly}>\n {resolveLabel(`Stat.${TREND_KEY[trend]}`, labels?.stat?.[TREND_KEY[trend]])}\n </span>\n </span>\n )}\n\n {description && <span className={styles.stat__description}>{description}</span>}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Stat, 'Stat')) as typeof Stat;\n"],"names":["TREND_ICON","jsx","ArrowUpShort","ArrowDownShort","DashLg","TREND_KEY","Stat","label","value","unit","delta","trend","isUpPositive","description","icon","variant","size","className","testId","labels","useUi","isPositive","jsxs","cx","styles","_a","index","memo","named"],"mappings":";;;;;;;;;AA4CA,MAAMA,IAA2C;AAAA,EAC/C,IAAI,gBAAAC,EAACC,GAAA,EAAa,eAAW,GAAA,CAAC;AAAA,EAC9B,MAAM,gBAAAD,EAACE,GAAA,EAAe,eAAW,GAAA,CAAC;AAAA,EAClC,MAAM,gBAAAF,EAACG,GAAA,EAAO,eAAW,GAAA,CAAC;AAC5B,GAGMC,IAAsE;AAAA,EAC1E,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,MAAM;AACR,GAGMC,IAAkB,CAAC;AAAA,EACvB,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,aAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,WAAAC;AAAA,EACA,QAAAC;AACF,MAAM;;AACJ,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GAGbC,IAAaV,MAAU,SAAS,SAAaA,MAAU,SAAUC;AAEvE;AAAA;AAAA,IAEE,gBAAAU;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAGC,EAAO,MAAMA,EAAO,SAASR,CAAI,EAAE,GAAGQ,EAAO,SAAST,CAAO,EAAE,GAAGE,CAAS;AAAA,QACzF,eAAaC;AAAA,QAEZ,UAAA;AAAA,UAAAJ,uBACE,QAAA,EAAK,WAAWU,EAAO,YAAY,eAAW,IAC5C,UAAAV,EAAA,CACH;AAAA,UAGF,gBAAAb,EAAC,QAAA,EAAK,WAAWuB,EAAO,aAAc,UAAAjB,GAAM;AAAA,UAE5C,gBAAAe,EAAC,QAAA,EAAK,WAAWE,EAAO,aACrB,UAAA;AAAA,YAAAhB;AAAA,YACAC,KAAQ,gBAAAR,EAAC,QAAA,EAAK,WAAWuB,EAAO,YAAa,UAAAf,EAAA,CAAK;AAAA,UAAA,GACrD;AAAA,UAECC,KAASC,KACR,gBAAAW;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWC;AAAA,gBACTC,EAAO;AAAA,gBACPH,MAAe,MAAQG,EAAO,uBAAuB;AAAA,gBACrDH,MAAe,MAASG,EAAO,uBAAuB;AAAA,cAAA;AAAA,cAGvD,UAAA;AAAA,gBAAAxB,EAAWW,CAAK;AAAA,gBAChBD;AAAA,kCAEA,QAAA,EAAK,WAAWc,EAAO,cACrB,YAAa,QAAQnB,EAAUM,CAAK,CAAC,KAAIc,IAAAN,KAAA,gBAAAA,EAAQ,SAAR,gBAAAM,EAAepB,EAAUM,CAAK,EAAE,EAAA,CAC5E;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAIHE,KAAe,gBAAAZ,EAAC,QAAA,EAAK,WAAWuB,EAAO,mBAAoB,UAAAX,EAAA,CAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA;AAG9E,GAEAa,IAA6B,gBAAAC,EAAmB,gBAAAC,EAAMtB,GAAM,MAAM,CAAC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-stat-Xb7wp{display:flex;flex-direction:column;gap:var(--hd-space-1);position:relative;padding:var(--hd-space-4);border:1px solid var(--hd-border);border-radius:var(--hd-radius-md);background-color:var(--hd-bg-surface)}.ui-stat--sm-XnK8p{padding:var(--hd-space-3)}.ui-stat--plain-N-3RC{padding:0;border:0;background:none}.ui-stat--plain-N-3RC .ui-stat__icon-MB8NU{inset-block-start:0;inset-inline-end:0}.ui-stat--inline-IpE0J{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:var(--hd-space-1) var(--hd-space-2);padding:0;border:0;background:none}.ui-stat--inline-IpE0J .ui-stat__icon-MB8NU{position:static;align-self:center;font-size:16px}.ui-stat--inline-IpE0J .ui-stat__label-kUX2m{padding-inline-end:0}.ui-stat--inline-IpE0J .ui-stat__value--6p13{font-family:var(--hd-font-mono);font-size:var(--hd-type-caption-size);letter-spacing:.02em;font-variant-numeric:tabular-nums;font-weight:var(--hd-font-weight-medium);letter-spacing:normal}.ui-stat--inline-IpE0J .ui-stat__unit-mjHVk{font-size:inherit}.ui-stat__icon-MB8NU{position:absolute;inset-block-start:var(--hd-space-3);inset-inline-end:var(--hd-space-3);display:inline-flex;font-size:20px;color:var(--hd-text-3)}.ui-stat__label-kUX2m{font-family:var(--ui-stat-label-font, inherit);font-size:var(--ui-stat-label-size, var(--hd-type-caption-size));font-weight:var(--ui-stat-label-weight, var(--hd-font-weight-medium));letter-spacing:var(--ui-stat-label-tracking, normal);text-transform:var(--ui-stat-label-transform, none);color:var(--hd-text-2);padding-inline-end:var(--hd-space-6)}.ui-stat__value--6p13{display:flex;align-items:baseline;gap:var(--hd-space-1);font-family:var(--ui-stat-value-font, var(--hd-font-display));font-size:var(--hd-type-h2-size);font-weight:var(--ui-stat-value-weight, var(--hd-font-weight-bold));line-height:var(--hd-type-h2-line-height);letter-spacing:var(--ui-stat-value-tracking, var(--hd-type-h2-letter-spacing));color:var(--hd-text);font-variant-numeric:tabular-nums}.ui-stat--sm-XnK8p .ui-stat__value--6p13{font-size:var(--hd-type-h3-size)}.ui-stat__unit-mjHVk{font-family:var(--ui-stat-unit-font, inherit);font-size:var(--ui-stat-unit-size, var(--hd-type-small-size));font-weight:var(--hd-font-weight-medium);color:var(--hd-text-2);letter-spacing:var(--ui-stat-unit-tracking, normal);text-transform:var(--ui-stat-unit-transform, none)}.ui-stat__delta-YKpOu{display:flex;align-items:center;gap:2px;align-self:flex-start;font-size:var(--hd-type-caption-size);font-weight:var(--hd-font-weight-semibold);font-variant-numeric:tabular-nums;color:var(--hd-text-2)}.ui-stat__delta-YKpOu svg{font-size:16px;flex-shrink:0}.ui-stat__delta--positive-1AUAM{color:var(--hd-success-fg)}.ui-stat__delta--negative--WWEP{color:var(--hd-danger-fg)}.ui-stat__description-Yvw6J{font-size:var(--hd-type-caption-size);color:var(--hd-text-3)}.ui-stat__srOnly-YKebA{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),d=require("react"),s=require("../../helpers/class-name.helper.cjs"),o=require("../../helpers/component.helper.cjs"),e={default:{"status":"ui-status-EcSH2","status__dot":"ui-status__dot-CeQ59","status__dot--neutral":"ui-status__dot--neutral-qUw4d","status__dot--success":"ui-status__dot--success-oOq-v","status__dot--warning":"ui-status__dot--warning-gYCr3","status__dot--danger":"ui-status__dot--danger-ijrpR","status__dot--pulsing":"ui-status__dot--pulsing-l97tj","status__label":"ui-status__label-UXRIa"}},c=({tone:a="neutral",label:u,isPulsing:l,className:n,testId:r})=>t.jsxs("span",{className:s.cx(e.default.status,n),"data-testid":r,children:[t.jsx("span",{"aria-hidden":!0,className:s.cx(e.default.status__dot,e.default[`status__dot--${a}`],l&&e.default["status__dot--pulsing"])}),t.jsx("span",{className:e.default.status__label,children:u})]}),i=d.memo(o.named(c,"StatusDot"));exports.default=i;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/StatusDot/index.tsx"],"sourcesContent":["import { type FC, 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\nexport type StatusDotTone = 'neutral' | 'success' | 'warning' | 'danger';\n\ntype Props = {\n tone?: StatusDotTone;\n /**\n * Durumun okunan adı (\"Bağlı\", \"Çalışıyor\"). ZORUNLU: nokta yalnızca renk ve renk tek başına\n * anlam taşıyamaz (WCAG 1.4.1). Görsel olarak gizli metin olarak yazılır.\n */\n label: string;\n /** Süren bir iş — \"çalışıyor\", \"bağlanıyor\". Azaltılmış harekette durur. */\n isPulsing?: boolean;\n className?: string;\n testId?: string;\n};\n\n/**\n * Durum noktası — bağlantı, araç çağrısı, meşguliyet.\n *\n * ⚠ Marka tonu YOK (`brand`): nokta bir durum taşır, marka yüzeyi değil. Süren iş `neutral` +\n * `isPulsing` ile anlatılır; yeşil yalnızca anlamsal başarıda (`success`).\n */\nconst StatusDot: FC<Props> = ({ tone = 'neutral', label, isPulsing, className, testId }) => (\n <span className={cx(styles.status, className)} data-testid={testId}>\n <span\n aria-hidden\n className={cx(\n styles.status__dot,\n styles[`status__dot--${tone}`],\n isPulsing && styles['status__dot--pulsing'],\n )}\n />\n <span className={styles.status__label}>{label}</span>\n </span>\n);\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(StatusDot, 'StatusDot')) as typeof StatusDot;\n"],"names":["StatusDot","tone","label","isPulsing","className","testId","jsxs","cx","styles","jsx","index","memo","named"],"mappings":"0SA4BMA,EAAuB,CAAC,CAAE,KAAAC,EAAO,UAAW,MAAAC,EAAO,UAAAC,EAAW,UAAAC,EAAW,OAAAC,CAAA,IAC7EC,EAAAA,KAAC,OAAA,CAAK,UAAWC,EAAAA,GAAGC,UAAO,OAAQJ,CAAS,EAAG,cAAaC,EAC1D,SAAA,CAAAI,EAAAA,IAAC,OAAA,CACC,cAAW,GACX,UAAWF,EAAAA,GACTC,EAAAA,QAAO,YACPA,EAAAA,QAAO,gBAAgBP,CAAI,EAAE,EAC7BE,GAAaK,EAAAA,QAAO,sBAAsB,CAAA,CAC5C,CAAA,EAEFC,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,cAAgB,SAAAN,CAAA,CAAM,CAAA,EAChD,EAGFQ,EAA6BC,OAAmBC,EAAAA,MAAMZ,EAAW,WAAW,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
export type StatusDotTone = 'neutral' | 'success' | 'warning' | 'danger';
|
|
3
|
+
type Props = {
|
|
4
|
+
tone?: StatusDotTone;
|
|
5
|
+
/**
|
|
6
|
+
* Durumun okunan adı ("Bağlı", "Çalışıyor"). ZORUNLU: nokta yalnızca renk ve renk tek başına
|
|
7
|
+
* anlam taşıyamaz (WCAG 1.4.1). Görsel olarak gizli metin olarak yazılır.
|
|
8
|
+
*/
|
|
9
|
+
label: string;
|
|
10
|
+
/** Süren bir iş — "çalışıyor", "bağlanıyor". Azaltılmış harekette durur. */
|
|
11
|
+
isPulsing?: boolean;
|
|
12
|
+
className?: string;
|
|
13
|
+
testId?: string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Durum noktası — bağlantı, araç çağrısı, meşguliyet.
|
|
17
|
+
*
|
|
18
|
+
* ⚠ Marka tonu YOK (`brand`): nokta bir durum taşır, marka yüzeyi değil. Süren iş `neutral` +
|
|
19
|
+
* `isPulsing` ile anlatılır; yeşil yalnızca anlamsal başarıda (`success`).
|
|
20
|
+
*/
|
|
21
|
+
declare const StatusDot: FC<Props>;
|
|
22
|
+
declare const _default: typeof StatusDot;
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsxs as i, jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import { memo as n } from "react";
|
|
3
|
+
import { cx as a } from "../../helpers/class-name.helper.js";
|
|
4
|
+
import { named as l } from "../../helpers/component.helper.js";
|
|
5
|
+
const t = {"status":"ui-status-EcSH2","status__dot":"ui-status__dot-CeQ59","status__dot--neutral":"ui-status__dot--neutral-qUw4d","status__dot--success":"ui-status__dot--success-oOq-v","status__dot--warning":"ui-status__dot--warning-gYCr3","status__dot--danger":"ui-status__dot--danger-ijrpR","status__dot--pulsing":"ui-status__dot--pulsing-l97tj","status__label":"ui-status__label-UXRIa"};
|
|
6
|
+
const u = ({ tone: o = "neutral", label: e, isPulsing: m, className: r, testId: d }) => /* @__PURE__ */ i("span", { className: a(t.status, r), "data-testid": d, children: [
|
|
7
|
+
/* @__PURE__ */ s(
|
|
8
|
+
"span",
|
|
9
|
+
{
|
|
10
|
+
"aria-hidden": !0,
|
|
11
|
+
className: a(
|
|
12
|
+
t.status__dot,
|
|
13
|
+
t[`status__dot--${o}`],
|
|
14
|
+
m && t["status__dot--pulsing"]
|
|
15
|
+
)
|
|
16
|
+
}
|
|
17
|
+
),
|
|
18
|
+
/* @__PURE__ */ s("span", { className: t.status__label, children: e })
|
|
19
|
+
] }), h = /* @__PURE__ */ n(/* @__PURE__ */ l(u, "StatusDot"));
|
|
20
|
+
export {
|
|
21
|
+
h as default
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/StatusDot/index.tsx"],"sourcesContent":["import { type FC, 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\nexport type StatusDotTone = 'neutral' | 'success' | 'warning' | 'danger';\n\ntype Props = {\n tone?: StatusDotTone;\n /**\n * Durumun okunan adı (\"Bağlı\", \"Çalışıyor\"). ZORUNLU: nokta yalnızca renk ve renk tek başına\n * anlam taşıyamaz (WCAG 1.4.1). Görsel olarak gizli metin olarak yazılır.\n */\n label: string;\n /** Süren bir iş — \"çalışıyor\", \"bağlanıyor\". Azaltılmış harekette durur. */\n isPulsing?: boolean;\n className?: string;\n testId?: string;\n};\n\n/**\n * Durum noktası — bağlantı, araç çağrısı, meşguliyet.\n *\n * ⚠ Marka tonu YOK (`brand`): nokta bir durum taşır, marka yüzeyi değil. Süren iş `neutral` +\n * `isPulsing` ile anlatılır; yeşil yalnızca anlamsal başarıda (`success`).\n */\nconst StatusDot: FC<Props> = ({ tone = 'neutral', label, isPulsing, className, testId }) => (\n <span className={cx(styles.status, className)} data-testid={testId}>\n <span\n aria-hidden\n className={cx(\n styles.status__dot,\n styles[`status__dot--${tone}`],\n isPulsing && styles['status__dot--pulsing'],\n )}\n />\n <span className={styles.status__label}>{label}</span>\n </span>\n);\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(StatusDot, 'StatusDot')) as typeof StatusDot;\n"],"names":["StatusDot","tone","label","isPulsing","className","testId","jsxs","cx","styles","jsx","index","memo","named"],"mappings":";;;;;AA4BA,MAAMA,IAAuB,CAAC,EAAE,MAAAC,IAAO,WAAW,OAAAC,GAAO,WAAAC,GAAW,WAAAC,GAAW,QAAAC,EAAA,MAC7E,gBAAAC,EAAC,QAAA,EAAK,WAAWC,EAAGC,EAAO,QAAQJ,CAAS,GAAG,eAAaC,GAC1D,UAAA;AAAA,EAAA,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAW;AAAA,MACX,WAAWF;AAAA,QACTC,EAAO;AAAA,QACPA,EAAO,gBAAgBP,CAAI,EAAE;AAAA,QAC7BE,KAAaK,EAAO,sBAAsB;AAAA,MAAA;AAAA,IAC5C;AAAA,EAAA;AAAA,EAEF,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,eAAgB,UAAAN,EAAA,CAAM;AAAA,GAChD,GAGFQ,IAA6B,gBAAAC,EAAmB,gBAAAC,EAAMZ,GAAW,WAAW,CAAC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-status-EcSH2{display:inline-flex;align-items:center;flex-shrink:0}.ui-status__dot-CeQ59{display:block;width:8px;height:8px;border-radius:var(--hd-radius-pill);background-color:currentColor}.ui-status__dot--neutral-qUw4d{color:var(--hd-text-2)}.ui-status__dot--success-oOq-v{color:var(--hd-success-fg)}.ui-status__dot--warning-gYCr3{color:var(--hd-warning-fg)}.ui-status__dot--danger-ijrpR{color:var(--hd-danger-fg)}.ui-status__dot--pulsing-l97tj{animation:var(--ui-anim-pulse) 1.6s var(--hd-ease-standard) infinite}@media (prefers-reduced-motion: reduce){.ui-status__dot--pulsing-l97tj{animation:none}}@media (forced-colors: active){.ui-status__dot-CeQ59{background-color:CanvasText;forced-color-adjust:none}}.ui-status__label-UXRIa{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),b=require("react"),x=require("react-bootstrap-icons"),d=require("../../helpers/class-name.helper.cjs"),N=require("../../helpers/component.helper.cjs"),q=require("../../helpers/label.helper.cjs"),g=require("../../theme/context.cjs"),s={default:{"steps":"ui-steps-ntge1","steps--horizontal":"ui-steps--horizontal-O-mkx","steps--vertical":"ui-steps--vertical-agfwo","steps--static":"ui-steps--static-t9EED","steps__label":"ui-steps__label-NSeFM","steps__item":"ui-steps__item-GrU1x","steps__button":"ui-steps__button-XBsnS","steps__marker":"ui-steps__marker-g-GLE","steps__item--done":"ui-steps__item--done-mvOuN","steps__item--current":"ui-steps__item--current-Qzlal","steps__text":"ui-steps__text-Mkpkh","steps__description":"ui-steps__description-bQuNT","steps__status":"ui-steps__status-wWJfP"}},v=(r,a)=>r<a?"done":r===a?"current":"upcoming",p={done:"completed",current:"current",upcoming:"upcoming"},y=({steps:r,currentIndex:a,onStepClick:n,label:m,orientation:_="horizontal",className:f,testId:h})=>{const{labels:l}=g.useUi();return e.jsx("ol",{className:d.cx(s.default.steps,s.default[`steps--${_}`],a===void 0&&s.default["steps--static"],f),"aria-label":m,"data-testid":h,children:r.map((c,o)=>{var i;const t=a===void 0?void 0:v(o,a),j=!!n&&t==="done",u=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:s.default.steps__marker,"aria-hidden":!0,children:t==="done"?e.jsx(x.CheckLg,{}):o+1}),e.jsxs("span",{className:s.default.steps__text,children:[e.jsx("span",{className:s.default.steps__label,children:c.label}),c.description&&e.jsx("span",{className:s.default.steps__description,children:c.description})]}),t&&e.jsx("span",{className:s.default.steps__status,children:q.resolveLabel(`Steps.${p[t]}`,(i=l==null?void 0:l.steps)==null?void 0:i[p[t]])})]});return e.jsx("li",{className:d.cx(s.default.steps__item,t&&s.default[`steps__item--${t}`]),"aria-current":t==="current"?"step":void 0,children:j?e.jsx("button",{type:"button",className:s.default.steps__button,onClick:()=>n==null?void 0:n(o),children:u}):e.jsx("span",{className:s.default.steps__button,children:u})},c.id)})})},T=b.memo(N.named(y,"Steps"));exports.default=T;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Steps/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo, type ReactNode } from 'react';\n\nimport { CheckLg } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\n\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\nexport type StepItem = {\n id: string;\n label: string;\n /** Etiketin altındaki bir cümlelik açıklama. */\n description?: ReactNode;\n};\n\ntype Props = {\n steps: StepItem[];\n /** Bulunulan adımın DİZİNİ (0 tabanlı). */\n currentIndex?: number;\n /** Bir adıma dönülebiliyorsa verilir. */\n onStepClick?: (index: number) => void;\n /** Akışın erişilebilir adı (\"Ödeme adımları\"). */\n label: string;\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n testId?: string;\n};\n\n/** Bir adımın durumu — üçü de görsel olarak AYRI çizilir. */\nconst statusOf = (index: number, currentIndex: number): 'done' | 'current' | 'upcoming' => {\n if (index < currentIndex) return 'done';\n if (index === currentIndex) return 'current';\n return 'upcoming';\n};\n\n/*\n * ⚠ DURUM METNI SR-ONLY ve SAGLAYICIDAN gelir; gorsel isaret (tik, dolu daire) ekran okuyucuya\n * hicbir sey soylemiyor.\n */\nconst STATUS_KEY: Record<'done' | 'current' | 'upcoming', 'completed' | 'current' | 'upcoming'> = {\n done: 'completed',\n current: 'current',\n upcoming: 'upcoming',\n};\n\n/** Adım göstergesi (stepper) — çok adımlı akışta NEREDE olunduğu. */\nconst Steps: FC<Props> = ({\n steps,\n currentIndex,\n onStepClick,\n label,\n orientation = 'horizontal',\n className,\n testId,\n}) => {\n const { labels } = useUi();\n\n return (\n <ol\n className={cx(\n styles.steps,\n styles[`steps--${orientation}`],\n currentIndex === undefined && styles['steps--static'],\n className,\n )}\n aria-label={label}\n data-testid={testId}\n >\n {steps.map((step, index) => {\n /* Statik listede durum kavrami YOK — hicbir adim \"bulunulan\" degil. */\n const status = currentIndex === undefined ? undefined : statusOf(index, currentIndex);\n /* Ileri atlamak YOK: atlanan adimin verisi toplanmadan devam edilemez. */\n const isClickable = Boolean(onStepClick) && status === 'done';\n\n const body = (\n <>\n <span className={styles.steps__marker} aria-hidden>\n {status === 'done' ? <CheckLg /> : index + 1}\n </span>\n\n <span className={styles.steps__text}>\n <span className={styles.steps__label}>{step.label}</span>\n {step.description && (\n <span className={styles.steps__description}>{step.description}</span>\n )}\n </span>\n\n {/* Durum METIN olarak da okunur: gorsel isaret ekran okuyucuya\n gecmiyor ve `aria-current` yalnizca bulunulan adimi soyluyor. */}\n {status && (\n <span className={styles.steps__status}>\n {resolveLabel(`Steps.${STATUS_KEY[status]}`, labels?.steps?.[STATUS_KEY[status]])}\n </span>\n )}\n </>\n );\n\n return (\n <li\n key={step.id}\n className={cx(styles.steps__item, status && styles[`steps__item--${status}`])}\n aria-current={status === 'current' ? 'step' : undefined}\n >\n {isClickable ? (\n <button\n type=\"button\"\n className={styles.steps__button}\n onClick={() => onStepClick?.(index)}\n >\n {body}\n </button>\n ) : (\n <span className={styles.steps__button}>{body}</span>\n )}\n </li>\n );\n })}\n </ol>\n );\n};\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Steps, 'Steps')) as typeof Steps;\n"],"names":["statusOf","index","currentIndex","STATUS_KEY","Steps","steps","onStepClick","label","orientation","className","testId","labels","useUi","jsx","cx","styles","step","status","isClickable","body","jsxs","Fragment","CheckLg","_a","memo","named"],"mappings":"2aAkCMA,EAAW,CAACC,EAAeC,IAC3BD,EAAQC,EAAqB,OAC7BD,IAAUC,EAAqB,UAC5B,WAOHC,EAA4F,CAChG,KAAM,YACN,QAAS,UACT,SAAU,UACZ,EAGMC,EAAmB,CAAC,CACxB,MAAAC,EACA,aAAAH,EACA,YAAAI,EACA,MAAAC,EACA,YAAAC,EAAc,aACd,UAAAC,EACA,OAAAC,CACF,IAAM,CACJ,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EAEnB,OACEC,EAAAA,IAAC,KAAA,CACC,UAAWC,EAAAA,GACTC,EAAAA,QAAO,MACPA,EAAAA,QAAO,UAAUP,CAAW,EAAE,EAC9BN,IAAiB,QAAaa,EAAAA,QAAO,eAAe,EACpDN,CAAA,EAEF,aAAYF,EACZ,cAAaG,EAEZ,SAAAL,EAAM,IAAI,CAACW,EAAMf,IAAU,OAE1B,MAAMgB,EAASf,IAAiB,OAAY,OAAYF,EAASC,EAAOC,CAAY,EAE9EgB,EAAc,EAAQZ,GAAgBW,IAAW,OAEjDE,EACJC,EAAAA,KAAAC,EAAAA,SAAA,CACE,SAAA,CAAAR,EAAAA,IAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,cAAe,cAAW,GAC/C,SAAAE,IAAW,OAASJ,EAAAA,IAACS,EAAAA,QAAA,CAAA,CAAQ,EAAKrB,EAAQ,EAC7C,EAEAmB,EAAAA,KAAC,OAAA,CAAK,UAAWL,EAAAA,QAAO,YACtB,SAAA,CAAAF,MAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,aAAe,WAAK,MAAM,EACjDC,EAAK,aACJH,MAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,mBAAqB,WAAK,WAAA,CAAY,CAAA,EAElE,EAICE,GACCJ,EAAAA,IAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,cACrB,wBAAa,SAASZ,EAAWc,CAAM,CAAC,IAAIM,EAAAZ,GAAA,YAAAA,EAAQ,QAAR,YAAAY,EAAgBpB,EAAWc,CAAM,EAAE,CAAA,CAClF,CAAA,EAEJ,EAGF,OACEJ,EAAAA,IAAC,KAAA,CAEC,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,YAAaE,GAAUF,EAAAA,QAAO,gBAAgBE,CAAM,EAAE,CAAC,EAC5E,eAAcA,IAAW,UAAY,OAAS,OAE7C,SAAAC,EACCL,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWE,EAAAA,QAAO,cAClB,QAAS,IAAMT,GAAA,YAAAA,EAAcL,GAE5B,SAAAkB,CAAA,CAAA,EAGHN,EAAAA,IAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,cAAgB,SAAAI,CAAA,CAAK,CAAA,EAb1CH,EAAK,EAAA,CAiBhB,CAAC,CAAA,CAAA,CAGP,EAEAf,EAA6BuB,OAAmBC,EAAAA,MAAMrB,EAAO,OAAO,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
export type StepItem = {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
/** Etiketin altındaki bir cümlelik açıklama. */
|
|
6
|
+
description?: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
type Props = {
|
|
9
|
+
steps: StepItem[];
|
|
10
|
+
/** Bulunulan adımın DİZİNİ (0 tabanlı). */
|
|
11
|
+
currentIndex?: number;
|
|
12
|
+
/** Bir adıma dönülebiliyorsa verilir. */
|
|
13
|
+
onStepClick?: (index: number) => void;
|
|
14
|
+
/** Akışın erişilebilir adı ("Ödeme adımları"). */
|
|
15
|
+
label: string;
|
|
16
|
+
orientation?: 'horizontal' | 'vertical';
|
|
17
|
+
className?: string;
|
|
18
|
+
testId?: string;
|
|
19
|
+
};
|
|
20
|
+
/** Adım göstergesi (stepper) — çok adımlı akışta NEREDE olunduğu. */
|
|
21
|
+
declare const Steps: FC<Props>;
|
|
22
|
+
declare const _default: typeof Steps;
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as t, jsxs as l, Fragment as g } from "react/jsx-runtime";
|
|
3
|
+
import { memo as v } from "react";
|
|
4
|
+
import { CheckLg as y } from "react-bootstrap-icons";
|
|
5
|
+
import { cx as d } from "../../helpers/class-name.helper.js";
|
|
6
|
+
import { named as $ } from "../../helpers/component.helper.js";
|
|
7
|
+
import { resolveLabel as j } from "../../helpers/label.helper.js";
|
|
8
|
+
import { useUi as L } from "../../theme/context.js";
|
|
9
|
+
const s = {"steps":"ui-steps-ntge1","steps--horizontal":"ui-steps--horizontal-O-mkx","steps--vertical":"ui-steps--vertical-agfwo","steps--static":"ui-steps--static-t9EED","steps__label":"ui-steps__label-NSeFM","steps__item":"ui-steps__item-GrU1x","steps__button":"ui-steps__button-XBsnS","steps__marker":"ui-steps__marker-g-GLE","steps__item--done":"ui-steps__item--done-mvOuN","steps__item--current":"ui-steps__item--current-Qzlal","steps__text":"ui-steps__text-Mkpkh","steps__description":"ui-steps__description-bQuNT","steps__status":"ui-steps__status-wWJfP"};
|
|
10
|
+
const T = (a, r) => a < r ? "done" : a === r ? "current" : "upcoming", u = {
|
|
11
|
+
done: "completed",
|
|
12
|
+
current: "current",
|
|
13
|
+
upcoming: "upcoming"
|
|
14
|
+
}, U = ({
|
|
15
|
+
steps: a,
|
|
16
|
+
currentIndex: r,
|
|
17
|
+
onStepClick: o,
|
|
18
|
+
label: _,
|
|
19
|
+
orientation: h = "horizontal",
|
|
20
|
+
className: f,
|
|
21
|
+
testId: b
|
|
22
|
+
}) => {
|
|
23
|
+
const { labels: n } = L();
|
|
24
|
+
return /* @__PURE__ */ t(
|
|
25
|
+
"ol",
|
|
26
|
+
{
|
|
27
|
+
className: d(
|
|
28
|
+
s.steps,
|
|
29
|
+
s[`steps--${h}`],
|
|
30
|
+
r === void 0 && s["steps--static"],
|
|
31
|
+
f
|
|
32
|
+
),
|
|
33
|
+
"aria-label": _,
|
|
34
|
+
"data-testid": b,
|
|
35
|
+
children: a.map((i, c) => {
|
|
36
|
+
var p;
|
|
37
|
+
const e = r === void 0 ? void 0 : T(c, r), N = !!o && e === "done", m = /* @__PURE__ */ l(g, { children: [
|
|
38
|
+
/* @__PURE__ */ t("span", { className: s.steps__marker, "aria-hidden": !0, children: e === "done" ? /* @__PURE__ */ t(y, {}) : c + 1 }),
|
|
39
|
+
/* @__PURE__ */ l("span", { className: s.steps__text, children: [
|
|
40
|
+
/* @__PURE__ */ t("span", { className: s.steps__label, children: i.label }),
|
|
41
|
+
i.description && /* @__PURE__ */ t("span", { className: s.steps__description, children: i.description })
|
|
42
|
+
] }),
|
|
43
|
+
e && /* @__PURE__ */ t("span", { className: s.steps__status, children: j(`Steps.${u[e]}`, (p = n == null ? void 0 : n.steps) == null ? void 0 : p[u[e]]) })
|
|
44
|
+
] });
|
|
45
|
+
return /* @__PURE__ */ t(
|
|
46
|
+
"li",
|
|
47
|
+
{
|
|
48
|
+
className: d(s.steps__item, e && s[`steps__item--${e}`]),
|
|
49
|
+
"aria-current": e === "current" ? "step" : void 0,
|
|
50
|
+
children: N ? /* @__PURE__ */ t(
|
|
51
|
+
"button",
|
|
52
|
+
{
|
|
53
|
+
type: "button",
|
|
54
|
+
className: s.steps__button,
|
|
55
|
+
onClick: () => o == null ? void 0 : o(c),
|
|
56
|
+
children: m
|
|
57
|
+
}
|
|
58
|
+
) : /* @__PURE__ */ t("span", { className: s.steps__button, children: m })
|
|
59
|
+
},
|
|
60
|
+
i.id
|
|
61
|
+
);
|
|
62
|
+
})
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
}, q = /* @__PURE__ */ v(/* @__PURE__ */ $(U, "Steps"));
|
|
66
|
+
export {
|
|
67
|
+
q as default
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Steps/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo, type ReactNode } from 'react';\n\nimport { CheckLg } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\n\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\nexport type StepItem = {\n id: string;\n label: string;\n /** Etiketin altındaki bir cümlelik açıklama. */\n description?: ReactNode;\n};\n\ntype Props = {\n steps: StepItem[];\n /** Bulunulan adımın DİZİNİ (0 tabanlı). */\n currentIndex?: number;\n /** Bir adıma dönülebiliyorsa verilir. */\n onStepClick?: (index: number) => void;\n /** Akışın erişilebilir adı (\"Ödeme adımları\"). */\n label: string;\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n testId?: string;\n};\n\n/** Bir adımın durumu — üçü de görsel olarak AYRI çizilir. */\nconst statusOf = (index: number, currentIndex: number): 'done' | 'current' | 'upcoming' => {\n if (index < currentIndex) return 'done';\n if (index === currentIndex) return 'current';\n return 'upcoming';\n};\n\n/*\n * ⚠ DURUM METNI SR-ONLY ve SAGLAYICIDAN gelir; gorsel isaret (tik, dolu daire) ekran okuyucuya\n * hicbir sey soylemiyor.\n */\nconst STATUS_KEY: Record<'done' | 'current' | 'upcoming', 'completed' | 'current' | 'upcoming'> = {\n done: 'completed',\n current: 'current',\n upcoming: 'upcoming',\n};\n\n/** Adım göstergesi (stepper) — çok adımlı akışta NEREDE olunduğu. */\nconst Steps: FC<Props> = ({\n steps,\n currentIndex,\n onStepClick,\n label,\n orientation = 'horizontal',\n className,\n testId,\n}) => {\n const { labels } = useUi();\n\n return (\n <ol\n className={cx(\n styles.steps,\n styles[`steps--${orientation}`],\n currentIndex === undefined && styles['steps--static'],\n className,\n )}\n aria-label={label}\n data-testid={testId}\n >\n {steps.map((step, index) => {\n /* Statik listede durum kavrami YOK — hicbir adim \"bulunulan\" degil. */\n const status = currentIndex === undefined ? undefined : statusOf(index, currentIndex);\n /* Ileri atlamak YOK: atlanan adimin verisi toplanmadan devam edilemez. */\n const isClickable = Boolean(onStepClick) && status === 'done';\n\n const body = (\n <>\n <span className={styles.steps__marker} aria-hidden>\n {status === 'done' ? <CheckLg /> : index + 1}\n </span>\n\n <span className={styles.steps__text}>\n <span className={styles.steps__label}>{step.label}</span>\n {step.description && (\n <span className={styles.steps__description}>{step.description}</span>\n )}\n </span>\n\n {/* Durum METIN olarak da okunur: gorsel isaret ekran okuyucuya\n gecmiyor ve `aria-current` yalnizca bulunulan adimi soyluyor. */}\n {status && (\n <span className={styles.steps__status}>\n {resolveLabel(`Steps.${STATUS_KEY[status]}`, labels?.steps?.[STATUS_KEY[status]])}\n </span>\n )}\n </>\n );\n\n return (\n <li\n key={step.id}\n className={cx(styles.steps__item, status && styles[`steps__item--${status}`])}\n aria-current={status === 'current' ? 'step' : undefined}\n >\n {isClickable ? (\n <button\n type=\"button\"\n className={styles.steps__button}\n onClick={() => onStepClick?.(index)}\n >\n {body}\n </button>\n ) : (\n <span className={styles.steps__button}>{body}</span>\n )}\n </li>\n );\n })}\n </ol>\n );\n};\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Steps, 'Steps')) as typeof Steps;\n"],"names":["statusOf","index","currentIndex","STATUS_KEY","Steps","steps","onStepClick","label","orientation","className","testId","labels","useUi","jsx","cx","styles","step","status","isClickable","body","jsxs","Fragment","CheckLg","_a","memo","named"],"mappings":";;;;;;;;;AAkCA,MAAMA,IAAW,CAACC,GAAeC,MAC3BD,IAAQC,IAAqB,SAC7BD,MAAUC,IAAqB,YAC5B,YAOHC,IAA4F;AAAA,EAChG,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU;AACZ,GAGMC,IAAmB,CAAC;AAAA,EACxB,OAAAC;AAAA,EACA,cAAAH;AAAA,EACA,aAAAI;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,WAAAC;AAAA,EACA,QAAAC;AACF,MAAM;AACJ,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA;AAEnB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTC,EAAO;AAAA,QACPA,EAAO,UAAUP,CAAW,EAAE;AAAA,QAC9BN,MAAiB,UAAaa,EAAO,eAAe;AAAA,QACpDN;AAAA,MAAA;AAAA,MAEF,cAAYF;AAAA,MACZ,eAAaG;AAAA,MAEZ,UAAAL,EAAM,IAAI,CAACW,GAAMf,MAAU;;AAE1B,cAAMgB,IAASf,MAAiB,SAAY,SAAYF,EAASC,GAAOC,CAAY,GAE9EgB,IAAc,EAAQZ,KAAgBW,MAAW,QAEjDE,IACJ,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAR,EAAC,QAAA,EAAK,WAAWE,EAAO,eAAe,eAAW,IAC/C,UAAAE,MAAW,SAAS,gBAAAJ,EAACS,GAAA,CAAA,CAAQ,IAAKrB,IAAQ,GAC7C;AAAA,UAEA,gBAAAmB,EAAC,QAAA,EAAK,WAAWL,EAAO,aACtB,UAAA;AAAA,YAAA,gBAAAF,EAAC,QAAA,EAAK,WAAWE,EAAO,cAAe,YAAK,OAAM;AAAA,YACjDC,EAAK,eACJ,gBAAAH,EAAC,QAAA,EAAK,WAAWE,EAAO,oBAAqB,YAAK,YAAA,CAAY;AAAA,UAAA,GAElE;AAAA,UAICE,KACC,gBAAAJ,EAAC,QAAA,EAAK,WAAWE,EAAO,eACrB,YAAa,SAASZ,EAAWc,CAAM,CAAC,KAAIM,IAAAZ,KAAA,gBAAAA,EAAQ,UAAR,gBAAAY,EAAgBpB,EAAWc,CAAM,EAAE,EAAA,CAClF;AAAA,QAAA,GAEJ;AAGF,eACE,gBAAAJ;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAWC,EAAGC,EAAO,aAAaE,KAAUF,EAAO,gBAAgBE,CAAM,EAAE,CAAC;AAAA,YAC5E,gBAAcA,MAAW,YAAY,SAAS;AAAA,YAE7C,UAAAC,IACC,gBAAAL;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAWE,EAAO;AAAA,gBAClB,SAAS,MAAMT,KAAA,gBAAAA,EAAcL;AAAA,gBAE5B,UAAAkB;AAAA,cAAA;AAAA,YAAA,IAGH,gBAAAN,EAAC,QAAA,EAAK,WAAWE,EAAO,eAAgB,UAAAI,EAAA,CAAK;AAAA,UAAA;AAAA,UAb1CH,EAAK;AAAA,QAAA;AAAA,MAiBhB,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP,GAEAf,IAA6B,gBAAAuB,EAAmB,gBAAAC,EAAMrB,GAAO,OAAO,CAAC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-steps-ntge1{display:flex;margin:0;padding:0;list-style:none}.ui-steps--horizontal-O-mkx{flex-direction:row;gap:var(--hd-space-2)}@media (max-width: 640px){.ui-steps--horizontal-O-mkx{flex-direction:column;gap:var(--hd-space-1)}}.ui-steps--vertical-agfwo{flex-direction:column;gap:var(--hd-space-1)}.ui-steps--static-t9EED .ui-steps__label-NSeFM{white-space:normal;overflow:visible;text-overflow:clip;color:var(--hd-text)}.ui-steps__item-GrU1x{display:flex;flex:1;min-width:0}.ui-steps--horizontal-O-mkx .ui-steps__item-GrU1x:not(:last-child):after{content:"";align-self:center;flex:1;height:1px;margin-inline:var(--hd-space-2);background-color:var(--hd-border)}@media (max-width: 640px){.ui-steps--horizontal-O-mkx .ui-steps__item-GrU1x:not(:last-child):after{display:none}}.ui-steps__button-XBsnS{display:flex;align-items:center;gap:var(--hd-space-3);flex:0 1 auto;min-width:0;padding:var(--hd-space-2);border:none;border-radius:var(--hd-radius-sm);background:none;text-align:start;font-family:var(--hd-font-body);color:inherit}button.ui-steps__button-XBsnS{background-color:transparent;transition:background-color var(--hd-duration-fast) var(--hd-ease-standard),translate var(--hd-duration-fast) var(--hd-ease-standard)}button.ui-steps__button-XBsnS:hover:not(:disabled):not([aria-disabled=true]){background-color:color-mix(in srgb,var(--hd-text) 8%,transparent)}button.ui-steps__button-XBsnS:active:not(:disabled):not([aria-disabled=true]){background-color:color-mix(in srgb,var(--hd-text) 14%,transparent);translate:0 1px}@media (prefers-reduced-motion: reduce){button.ui-steps__button-XBsnS{transition:none}button.ui-steps__button-XBsnS:active:not(:disabled):not([aria-disabled=true]){translate:none}}button.ui-steps__button-XBsnS{cursor:pointer}button.ui-steps__button-XBsnS:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, -1px)}.ui-steps__marker-g-GLE{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:28px;height:28px;border-radius:var(--hd-radius-pill);border:1px solid var(--hd-border-strong);background-color:var(--hd-bg-surface);color:var(--hd-text-2);font-size:var(--hd-type-caption-size);font-weight:var(--hd-font-weight-semibold);font-variant-numeric:tabular-nums}.ui-steps__item--done-mvOuN .ui-steps__marker-g-GLE{background-color:var(--hd-primary);border-color:var(--hd-primary);color:var(--hd-on-primary)}.ui-steps__item--current-Qzlal .ui-steps__marker-g-GLE{border-color:var(--hd-primary);box-shadow:inset 0 0 0 1px var(--hd-primary);color:var(--hd-text)}@media (forced-colors: active){.ui-steps__item--done-mvOuN .ui-steps__marker-g-GLE,.ui-steps__item--current-Qzlal .ui-steps__marker-g-GLE{background-color:Highlight;color:HighlightText;forced-color-adjust:none}}.ui-steps__text-Mkpkh{display:flex;flex-direction:column;gap:2px;min-width:0}.ui-steps__label-NSeFM{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--hd-type-small-size);font-weight:var(--hd-font-weight-medium);color:var(--hd-text-2)}.ui-steps__item--current-Qzlal .ui-steps__label-NSeFM{color:var(--hd-text);font-weight:var(--hd-font-weight-semibold)}.ui-steps__item--done-mvOuN .ui-steps__label-NSeFM{color:var(--hd-text)}.ui-steps__description-bQuNT{font-size:var(--hd-type-caption-size);color:var(--hd-text-3)}.ui-steps__status-wWJfP{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),o=require("react"),_=require("../../helpers/class-name.helper.cjs"),x=require("../../helpers/component.helper.cjs"),h=require("../Link/index.cjs"),a={default:{"card":"ui-card-wkzhi","card__media":"ui-card__media--Lm-v","card__content":"ui-card__content-8uHkm","card__title":"ui-card__title-1EwbD","card__link":"ui-card__link-mhY-M","card__description":"ui-card__description-3O0R7","card__meta":"ui-card__meta-Xzk4q"}},f=({title:c,href:t,description:r,meta:s,media:d,headingLevel:l=3,linkProps:n,className:i,testId:u})=>{const m=`h${l}`;return e.jsxs("article",{className:_.cx(a.default.card,i),"data-testid":u,children:[d&&e.jsx("span",{className:a.default.card__media,"aria-hidden":!0,children:d}),e.jsxs("div",{className:a.default.card__content,children:[e.jsx(m,{className:a.default.card__title,children:e.jsx(h.default,{href:t,className:a.default.card__link,...n,children:c})}),r&&e.jsx("p",{className:a.default.card__description,children:r}),s&&e.jsx("div",{className:a.default.card__meta,children:s})]})]})},j=o.memo(x.named(f,"SummaryCard"));exports.default=j;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/SummaryCard/index.tsx"],"sourcesContent":["import { type ElementType, type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport type { UiLinkExtraProps } from '../../types/link.type';\nimport UiLink from '../Link';\n\nimport styles from './index.module.scss';\n\nexport type SummaryCardHeadingLevel = 2 | 3 | 4;\n\ntype Props = {\n /** Kart başlığı — aynı zamanda bağlantı metni. */\n title: string;\n href: string;\n /** Başlığın altındaki 1-2 cümlelik özet. */\n description?: string;\n /** Alt meta satırı: rozetler, fiyat aralığı, sayaç. */\n meta?: ReactNode;\n /** Sol madalyon: ikon ya da küçük medya. */\n media?: ReactNode;\n /** Liste bağlamındaki başlık seviyesi. */\n headingLevel?: SummaryCardHeadingLevel;\n /** Yönlendiriciye geçirilecek ek props. */\n linkProps?: UiLinkExtraProps;\n className?: string;\n testId?: string;\n};\n\n/** Özet kartı — başlık + kısa açıklama + meta satırı taşıyan BAĞLANTILI kart. */\nconst SummaryCard: FC<Props> = ({\n title,\n href,\n description,\n meta,\n media,\n headingLevel = 3,\n linkProps,\n className,\n testId,\n}) => {\n const Heading = `h${headingLevel}` as ElementType;\n\n return (\n <article className={cx(styles.card, className)} data-testid={testId}>\n {media && (\n <span className={styles.card__media} aria-hidden>\n {media}\n </span>\n )}\n\n <div className={styles.card__content}>\n <Heading className={styles.card__title}>\n <UiLink href={href} className={styles.card__link} {...linkProps}>\n {title}\n </UiLink>\n </Heading>\n\n {description && <p className={styles.card__description}>{description}</p>}\n\n {meta && <div className={styles.card__meta}>{meta}</div>}\n </div>\n </article>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(SummaryCard, 'SummaryCard'),\n) as typeof SummaryCard;\n"],"names":["SummaryCard","title","href","description","meta","media","headingLevel","linkProps","className","testId","Heading","jsxs","cx","styles","jsx","UiLink","index","memo","named"],"mappings":"yUA8BMA,EAAyB,CAAC,CAC9B,MAAAC,EACA,KAAAC,EACA,YAAAC,EACA,KAAAC,EACA,MAAAC,EACA,aAAAC,EAAe,EACf,UAAAC,EACA,UAAAC,EACA,OAAAC,CACF,IAAM,CACJ,MAAMC,EAAU,IAAIJ,CAAY,GAEhC,OACEK,OAAC,WAAQ,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,KAAML,CAAS,EAAG,cAAaC,EAC1D,SAAA,CAAAJ,SACE,OAAA,CAAK,UAAWQ,EAAAA,QAAO,YAAa,cAAW,GAC7C,SAAAR,CAAA,CACH,EAGFM,EAAAA,KAAC,MAAA,CAAI,UAAWE,EAAAA,QAAO,cACrB,SAAA,CAAAC,EAAAA,IAACJ,EAAA,CAAQ,UAAWG,EAAAA,QAAO,YACzB,SAAAC,EAAAA,IAACC,EAAAA,QAAA,CAAO,KAAAb,EAAY,UAAWW,EAAAA,QAAO,WAAa,GAAGN,EACnD,WACH,EACF,EAECJ,GAAeW,EAAAA,IAAC,IAAA,CAAE,UAAWD,EAAAA,QAAO,kBAAoB,SAAAV,EAAY,EAEpEC,GAAQU,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,WAAa,SAAAT,CAAA,CAAK,CAAA,CAAA,CACpD,CAAA,EACF,CAEJ,EAEAY,EAA6BC,EAAAA,KACbC,EAAAA,MAAMlB,EAAa,aAAa,CAChD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
import { UiLinkExtraProps } from '../../types/link.type';
|
|
3
|
+
export type SummaryCardHeadingLevel = 2 | 3 | 4;
|
|
4
|
+
type Props = {
|
|
5
|
+
/** Kart başlığı — aynı zamanda bağlantı metni. */
|
|
6
|
+
title: string;
|
|
7
|
+
href: string;
|
|
8
|
+
/** Başlığın altındaki 1-2 cümlelik özet. */
|
|
9
|
+
description?: string;
|
|
10
|
+
/** Alt meta satırı: rozetler, fiyat aralığı, sayaç. */
|
|
11
|
+
meta?: ReactNode;
|
|
12
|
+
/** Sol madalyon: ikon ya da küçük medya. */
|
|
13
|
+
media?: ReactNode;
|
|
14
|
+
/** Liste bağlamındaki başlık seviyesi. */
|
|
15
|
+
headingLevel?: SummaryCardHeadingLevel;
|
|
16
|
+
/** Yönlendiriciye geçirilecek ek props. */
|
|
17
|
+
linkProps?: UiLinkExtraProps;
|
|
18
|
+
className?: string;
|
|
19
|
+
testId?: string;
|
|
20
|
+
};
|
|
21
|
+
/** Özet kartı — başlık + kısa açıklama + meta satırı taşıyan BAĞLANTILI kart. */
|
|
22
|
+
declare const SummaryCard: FC<Props>;
|
|
23
|
+
declare const _default: typeof SummaryCard;
|
|
24
|
+
export default _default;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsxs as m, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { memo as h } from "react";
|
|
3
|
+
import { cx as p } from "../../helpers/class-name.helper.js";
|
|
4
|
+
import { named as f } from "../../helpers/component.helper.js";
|
|
5
|
+
import N from "../Link/index.js";
|
|
6
|
+
const r = {"card":"ui-card-wkzhi","card__media":"ui-card__media--Lm-v","card__content":"ui-card__content-8uHkm","card__title":"ui-card__title-1EwbD","card__link":"ui-card__link-mhY-M","card__description":"ui-card__description-3O0R7","card__meta":"ui-card__meta-Xzk4q"};
|
|
7
|
+
const u = ({
|
|
8
|
+
title: i,
|
|
9
|
+
href: s,
|
|
10
|
+
description: e,
|
|
11
|
+
meta: c,
|
|
12
|
+
media: d,
|
|
13
|
+
headingLevel: t = 3,
|
|
14
|
+
linkProps: n,
|
|
15
|
+
className: l,
|
|
16
|
+
testId: o
|
|
17
|
+
}) => {
|
|
18
|
+
const _ = `h${t}`;
|
|
19
|
+
return /* @__PURE__ */ m("article", { className: p(r.card, l), "data-testid": o, children: [
|
|
20
|
+
d && /* @__PURE__ */ a("span", { className: r.card__media, "aria-hidden": !0, children: d }),
|
|
21
|
+
/* @__PURE__ */ m("div", { className: r.card__content, children: [
|
|
22
|
+
/* @__PURE__ */ a(_, { className: r.card__title, children: /* @__PURE__ */ a(N, { href: s, className: r.card__link, ...n, children: i }) }),
|
|
23
|
+
e && /* @__PURE__ */ a("p", { className: r.card__description, children: e }),
|
|
24
|
+
c && /* @__PURE__ */ a("div", { className: r.card__meta, children: c })
|
|
25
|
+
] })
|
|
26
|
+
] });
|
|
27
|
+
}, S = /* @__PURE__ */ h(
|
|
28
|
+
/* @__PURE__ */ f(u, "SummaryCard")
|
|
29
|
+
);
|
|
30
|
+
export {
|
|
31
|
+
S as default
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/SummaryCard/index.tsx"],"sourcesContent":["import { type ElementType, type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport type { UiLinkExtraProps } from '../../types/link.type';\nimport UiLink from '../Link';\n\nimport styles from './index.module.scss';\n\nexport type SummaryCardHeadingLevel = 2 | 3 | 4;\n\ntype Props = {\n /** Kart başlığı — aynı zamanda bağlantı metni. */\n title: string;\n href: string;\n /** Başlığın altındaki 1-2 cümlelik özet. */\n description?: string;\n /** Alt meta satırı: rozetler, fiyat aralığı, sayaç. */\n meta?: ReactNode;\n /** Sol madalyon: ikon ya da küçük medya. */\n media?: ReactNode;\n /** Liste bağlamındaki başlık seviyesi. */\n headingLevel?: SummaryCardHeadingLevel;\n /** Yönlendiriciye geçirilecek ek props. */\n linkProps?: UiLinkExtraProps;\n className?: string;\n testId?: string;\n};\n\n/** Özet kartı — başlık + kısa açıklama + meta satırı taşıyan BAĞLANTILI kart. */\nconst SummaryCard: FC<Props> = ({\n title,\n href,\n description,\n meta,\n media,\n headingLevel = 3,\n linkProps,\n className,\n testId,\n}) => {\n const Heading = `h${headingLevel}` as ElementType;\n\n return (\n <article className={cx(styles.card, className)} data-testid={testId}>\n {media && (\n <span className={styles.card__media} aria-hidden>\n {media}\n </span>\n )}\n\n <div className={styles.card__content}>\n <Heading className={styles.card__title}>\n <UiLink href={href} className={styles.card__link} {...linkProps}>\n {title}\n </UiLink>\n </Heading>\n\n {description && <p className={styles.card__description}>{description}</p>}\n\n {meta && <div className={styles.card__meta}>{meta}</div>}\n </div>\n </article>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(SummaryCard, 'SummaryCard'),\n) as typeof SummaryCard;\n"],"names":["SummaryCard","title","href","description","meta","media","headingLevel","linkProps","className","testId","Heading","jsxs","cx","styles","jsx","UiLink","index","memo","named"],"mappings":";;;;;;AA8BA,MAAMA,IAAyB,CAAC;AAAA,EAC9B,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACF,MAAM;AACJ,QAAMC,IAAU,IAAIJ,CAAY;AAEhC,SACE,gBAAAK,EAAC,aAAQ,WAAWC,EAAGC,EAAO,MAAML,CAAS,GAAG,eAAaC,GAC1D,UAAA;AAAA,IAAAJ,uBACE,QAAA,EAAK,WAAWQ,EAAO,aAAa,eAAW,IAC7C,UAAAR,EAAA,CACH;AAAA,IAGF,gBAAAM,EAAC,OAAA,EAAI,WAAWE,EAAO,eACrB,UAAA;AAAA,MAAA,gBAAAC,EAACJ,GAAA,EAAQ,WAAWG,EAAO,aACzB,UAAA,gBAAAC,EAACC,GAAA,EAAO,MAAAb,GAAY,WAAWW,EAAO,YAAa,GAAGN,GACnD,aACH,GACF;AAAA,MAECJ,KAAe,gBAAAW,EAAC,KAAA,EAAE,WAAWD,EAAO,mBAAoB,UAAAV,GAAY;AAAA,MAEpEC,KAAQ,gBAAAU,EAAC,OAAA,EAAI,WAAWD,EAAO,YAAa,UAAAT,EAAA,CAAK;AAAA,IAAA,EAAA,CACpD;AAAA,EAAA,GACF;AAEJ,GAEAY,IAA6B,gBAAAC;AAAA,EACb,gBAAAC,EAAMlB,GAAa,aAAa;AAChD;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer ui{.ui-card-wkzhi{background-color:var(--hd-bg-surface);border:1px solid var(--hd-border);border-radius:var(--hd-radius-md)}@media (max-width: 640px){.ui-card-wkzhi{border-radius:var(--hd-radius-sm)}}.ui-card-wkzhi{transition:border-color var(--hd-duration-fast) var(--hd-ease-standard),box-shadow var(--hd-duration-fast) var(--hd-ease-standard),transform var(--hd-duration-fast) var(--hd-ease-standard)}.ui-card-wkzhi:hover{border-color:var(--hd-border-strong);box-shadow:var(--hd-shadow-2);transform:translateY(-2px)}.ui-card-wkzhi:active{transform:translateY(0);box-shadow:var(--hd-shadow-1)}@media (prefers-reduced-motion: reduce){.ui-card-wkzhi{transition:none}.ui-card-wkzhi:hover,.ui-card-wkzhi:active{transform:none}}.ui-card-wkzhi{position:relative;display:flex;align-items:flex-start;gap:var(--hd-space-3);padding:var(--hd-space-4);height:100%}.ui-card__media--Lm-v{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;border-radius:var(--hd-radius-xs);background-color:var(--hd-bg-raised);color:var(--hd-text-2);font-size:18px}.ui-card__content-8uHkm{display:flex;flex-direction:column;gap:var(--hd-space-1);flex:1;min-width:0}.ui-card__title-1EwbD{font-size:var(--hd-type-body-size);font-weight:var(--hd-font-weight-semibold);line-height:var(--hd-type-h4-line-height)}.ui-card__link-mhY-M{color:var(--hd-text);text-decoration:none}.ui-card__link-mhY-M:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, 2px)}.ui-card__link-mhY-M:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--hd-radius-md)}.ui-card__description-3O0R7{font-size:var(--hd-type-small-size);line-height:var(--hd-type-body-line-height);color:var(--hd-text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ui-card__meta-Xzk4q{position:relative;z-index:var(--hd-z-sticky);display:flex;flex-wrap:wrap;align-items:center;gap:var(--hd-space-2)}}
|
|
@@ -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"),c=require("react"),m=require("../../helpers/class-name.helper.cjs"),x=require("../../helpers/component.helper.cjs"),e={default:{"switch":"ui-switch-KLH29","switch__input":"ui-switch__input-Q2UQ4","switch--labelFirst":"ui-switch--labelFirst-Grirk","switch__label":"ui-switch__label-gPZuO","switch__hint":"ui-switch__hint-NRuzC","switch__track":"ui-switch__track-3417m","switch__thumb":"ui-switch__thumb-1LHta","switch__text":"ui-switch__text-32uMY"}},f=c.forwardRef(({label:r,hint:t,isLabelFirst:n,className:u,id:o,testId:h,...l},_)=>{const b=c.useId(),a=o??b,i=`${a}-label`,d=`${a}-hint`;return s.jsxs("label",{className:m.cx(e.default.switch,n&&e.default["switch--labelFirst"],u),"data-testid":h,children:[s.jsx("input",{ref:_,type:"checkbox",role:"switch",id:a,className:e.default.switch__input,"aria-labelledby":i,"aria-describedby":t?d:l["aria-describedby"],...l}),s.jsx("span",{className:e.default.switch__track,"aria-hidden":!0,children:s.jsx("span",{className:e.default.switch__thumb})}),s.jsxs("span",{className:e.default.switch__text,children:[s.jsx("span",{id:i,className:e.default.switch__label,children:r}),t&&s.jsx("span",{id:d,className:e.default.switch__hint,children:t})]})]})}),p=c.memo(x.named(f,"Switch"));exports.default=p;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/Switch/index.tsx"],"sourcesContent":["'use client';\n\nimport { forwardRef, type InputHTMLAttributes, memo, type ReactNode, useId } 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<InputHTMLAttributes<HTMLInputElement>, 'type' | 'role'> & {\n /** Anahtarın görünür etiketi. */\n label: ReactNode;\n /** Etiketin altındaki açıklama; `aria-describedby` ile bağlanır. */\n hint?: string;\n /** Etiket anahtarın SOLUNDA durur — ayar listelerinin yaygın düzeni. */\n isLabelFirst?: boolean;\n testId?: string;\n};\n\n/**\n * Anahtar (switch) — anında uygulanan aç/kapa.\n * @example <Switch label=\"Kampanya bildirimleri\" hint=\"E-posta ile ayda en fazla iki…\n */\nconst Switch = forwardRef<HTMLInputElement, Props>(\n ({ label, hint, isLabelFirst, className, id, testId, ...rest }, ref) => {\n /*\n * Prop'un dokumani `aria-describedby` diyordu ama hicbir `id` uretilmiyor, metin yalnizca\n * sarmalayan `<label>`in icinde duruyordu\n * ⚠ IPUCU ERISILEBILIR ADA DEGIL ACIKLAMAYA BAGLANIR.\n */\n const generatedId = useId();\n const baseId = id ?? generatedId;\n const labelId = `${baseId}-label`;\n const hintId = `${baseId}-hint`;\n\n return (\n <label\n className={cx(styles.switch, isLabelFirst && styles['switch--labelFirst'], className)}\n data-testid={testId}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n /*\n * `role=\"switch\"` YEREL onay kutusunun UZERINE yazilir: davranis checkbox'tan gelir,\n * DUYURU switch olur.\n */\n role=\"switch\"\n id={baseId}\n className={styles.switch__input}\n aria-labelledby={labelId}\n aria-describedby={hint ? hintId : rest['aria-describedby']}\n {...rest}\n />\n\n {/* Kulbun tasiyicisi; gorsel durum tamamen CSS'te. */}\n <span className={styles.switch__track} aria-hidden>\n <span className={styles.switch__thumb} />\n </span>\n\n <span className={styles.switch__text}>\n <span id={labelId} className={styles.switch__label}>\n {label}\n </span>\n {hint && (\n <span id={hintId} className={styles.switch__hint}>\n {hint}\n </span>\n )}\n </span>\n </label>\n );\n },\n);\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Switch, 'Switch')) as typeof Switch;\n"],"names":["Switch","forwardRef","label","hint","isLabelFirst","className","id","testId","rest","ref","generatedId","useId","baseId","labelId","hintId","jsxs","cx","styles","jsx","index","memo","named"],"mappings":"uTAsBMA,EAASC,EAAAA,WACb,CAAC,CAAE,MAAAC,EAAO,KAAAC,EAAM,aAAAC,EAAc,UAAAC,EAAW,GAAAC,EAAI,OAAAC,EAAQ,GAAGC,CAAA,EAAQC,IAAQ,CAMtE,MAAMC,EAAcC,EAAAA,MAAA,EACdC,EAASN,GAAMI,EACfG,EAAU,GAAGD,CAAM,SACnBE,EAAS,GAAGF,CAAM,QAExB,OACEG,EAAAA,KAAC,QAAA,CACC,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,OAAQb,GAAgBa,UAAO,oBAAoB,EAAGZ,CAAS,EACpF,cAAaE,EAEb,SAAA,CAAAW,EAAAA,IAAC,QAAA,CACC,IAAAT,EACA,KAAK,WAKL,KAAK,SACL,GAAIG,EACJ,UAAWK,EAAAA,QAAO,cAClB,kBAAiBJ,EACjB,mBAAkBV,EAAOW,EAASN,EAAK,kBAAkB,EACxD,GAAGA,CAAA,CAAA,EAINU,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,cAAe,cAAW,GAChD,SAAAC,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,aAAA,CAAe,EACzC,EAEAF,EAAAA,KAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,aACtB,SAAA,CAAAC,MAAC,QAAK,GAAIL,EAAS,UAAWI,EAAAA,QAAO,cAClC,SAAAf,EACH,EACCC,SACE,OAAA,CAAK,GAAIW,EAAQ,UAAWG,UAAO,aACjC,SAAAd,CAAA,CACH,CAAA,CAAA,CAEJ,CAAA,CAAA,CAAA,CAGN,CACF,EAEAgB,EAA6BC,OAAmBC,EAAAA,MAAMrB,EAAQ,QAAQ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { InputHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Anahtar (switch) — anında uygulanan aç/kapa.
|
|
4
|
+
* @example <Switch label="Kampanya bildirimleri" hint="E-posta ile ayda en fazla iki…
|
|
5
|
+
*/
|
|
6
|
+
declare const Switch: import('react').ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "role"> & {
|
|
7
|
+
/** Anahtarın görünür etiketi. */
|
|
8
|
+
label: ReactNode;
|
|
9
|
+
/** Etiketin altındaki açıklama; `aria-describedby` ile bağlanır. */
|
|
10
|
+
hint?: string;
|
|
11
|
+
/** Etiket anahtarın SOLUNDA durur — ayar listelerinin yaygın düzeni. */
|
|
12
|
+
isLabelFirst?: boolean;
|
|
13
|
+
testId?: string;
|
|
14
|
+
} & import('react').RefAttributes<HTMLInputElement>>;
|
|
15
|
+
declare const _default: typeof Switch;
|
|
16
|
+
export default _default;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as l, jsx as e } from "react/jsx-runtime";
|
|
3
|
+
import { memo as w, forwardRef as _, useId as f } from "react";
|
|
4
|
+
import { cx as u } from "../../helpers/class-name.helper.js";
|
|
5
|
+
import { named as x } from "../../helpers/component.helper.js";
|
|
6
|
+
const s = {"switch":"ui-switch-KLH29","switch__input":"ui-switch__input-Q2UQ4","switch--labelFirst":"ui-switch--labelFirst-Grirk","switch__label":"ui-switch__label-gPZuO","switch__hint":"ui-switch__hint-NRuzC","switch__track":"ui-switch__track-3417m","switch__thumb":"ui-switch__thumb-1LHta","switch__text":"ui-switch__text-32uMY"};
|
|
7
|
+
const N = _(
|
|
8
|
+
({ label: d, hint: a, isLabelFirst: n, className: m, id: o, testId: h, ...i }, b) => {
|
|
9
|
+
const p = f(), t = o ?? p, c = `${t}-label`, r = `${t}-hint`;
|
|
10
|
+
return /* @__PURE__ */ l(
|
|
11
|
+
"label",
|
|
12
|
+
{
|
|
13
|
+
className: u(s.switch, n && s["switch--labelFirst"], m),
|
|
14
|
+
"data-testid": h,
|
|
15
|
+
children: [
|
|
16
|
+
/* @__PURE__ */ e(
|
|
17
|
+
"input",
|
|
18
|
+
{
|
|
19
|
+
ref: b,
|
|
20
|
+
type: "checkbox",
|
|
21
|
+
role: "switch",
|
|
22
|
+
id: t,
|
|
23
|
+
className: s.switch__input,
|
|
24
|
+
"aria-labelledby": c,
|
|
25
|
+
"aria-describedby": a ? r : i["aria-describedby"],
|
|
26
|
+
...i
|
|
27
|
+
}
|
|
28
|
+
),
|
|
29
|
+
/* @__PURE__ */ e("span", { className: s.switch__track, "aria-hidden": !0, children: /* @__PURE__ */ e("span", { className: s.switch__thumb }) }),
|
|
30
|
+
/* @__PURE__ */ l("span", { className: s.switch__text, children: [
|
|
31
|
+
/* @__PURE__ */ e("span", { id: c, className: s.switch__label, children: d }),
|
|
32
|
+
a && /* @__PURE__ */ e("span", { id: r, className: s.switch__hint, children: a })
|
|
33
|
+
] })
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
), $ = /* @__PURE__ */ w(/* @__PURE__ */ x(N, "Switch"));
|
|
39
|
+
export {
|
|
40
|
+
$ as default
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Switch/index.tsx"],"sourcesContent":["'use client';\n\nimport { forwardRef, type InputHTMLAttributes, memo, type ReactNode, useId } 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<InputHTMLAttributes<HTMLInputElement>, 'type' | 'role'> & {\n /** Anahtarın görünür etiketi. */\n label: ReactNode;\n /** Etiketin altındaki açıklama; `aria-describedby` ile bağlanır. */\n hint?: string;\n /** Etiket anahtarın SOLUNDA durur — ayar listelerinin yaygın düzeni. */\n isLabelFirst?: boolean;\n testId?: string;\n};\n\n/**\n * Anahtar (switch) — anında uygulanan aç/kapa.\n * @example <Switch label=\"Kampanya bildirimleri\" hint=\"E-posta ile ayda en fazla iki…\n */\nconst Switch = forwardRef<HTMLInputElement, Props>(\n ({ label, hint, isLabelFirst, className, id, testId, ...rest }, ref) => {\n /*\n * Prop'un dokumani `aria-describedby` diyordu ama hicbir `id` uretilmiyor, metin yalnizca\n * sarmalayan `<label>`in icinde duruyordu\n * ⚠ IPUCU ERISILEBILIR ADA DEGIL ACIKLAMAYA BAGLANIR.\n */\n const generatedId = useId();\n const baseId = id ?? generatedId;\n const labelId = `${baseId}-label`;\n const hintId = `${baseId}-hint`;\n\n return (\n <label\n className={cx(styles.switch, isLabelFirst && styles['switch--labelFirst'], className)}\n data-testid={testId}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n /*\n * `role=\"switch\"` YEREL onay kutusunun UZERINE yazilir: davranis checkbox'tan gelir,\n * DUYURU switch olur.\n */\n role=\"switch\"\n id={baseId}\n className={styles.switch__input}\n aria-labelledby={labelId}\n aria-describedby={hint ? hintId : rest['aria-describedby']}\n {...rest}\n />\n\n {/* Kulbun tasiyicisi; gorsel durum tamamen CSS'te. */}\n <span className={styles.switch__track} aria-hidden>\n <span className={styles.switch__thumb} />\n </span>\n\n <span className={styles.switch__text}>\n <span id={labelId} className={styles.switch__label}>\n {label}\n </span>\n {hint && (\n <span id={hintId} className={styles.switch__hint}>\n {hint}\n </span>\n )}\n </span>\n </label>\n );\n },\n);\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Switch, 'Switch')) as typeof Switch;\n"],"names":["Switch","forwardRef","label","hint","isLabelFirst","className","id","testId","rest","ref","generatedId","useId","baseId","labelId","hintId","jsxs","cx","styles","jsx","index","memo","named"],"mappings":";;;;;;AAsBA,MAAMA,IAASC;AAAA,EACb,CAAC,EAAE,OAAAC,GAAO,MAAAC,GAAM,cAAAC,GAAc,WAAAC,GAAW,IAAAC,GAAI,QAAAC,GAAQ,GAAGC,EAAA,GAAQC,MAAQ;AAMtE,UAAMC,IAAcC,EAAA,GACdC,IAASN,KAAMI,GACfG,IAAU,GAAGD,CAAM,UACnBE,IAAS,GAAGF,CAAM;AAExB,WACE,gBAAAG;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAGC,EAAO,QAAQb,KAAgBa,EAAO,oBAAoB,GAAGZ,CAAS;AAAA,QACpF,eAAaE;AAAA,QAEb,UAAA;AAAA,UAAA,gBAAAW;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAAT;AAAA,cACA,MAAK;AAAA,cAKL,MAAK;AAAA,cACL,IAAIG;AAAA,cACJ,WAAWK,EAAO;AAAA,cAClB,mBAAiBJ;AAAA,cACjB,oBAAkBV,IAAOW,IAASN,EAAK,kBAAkB;AAAA,cACxD,GAAGA;AAAA,YAAA;AAAA,UAAA;AAAA,UAIN,gBAAAU,EAAC,QAAA,EAAK,WAAWD,EAAO,eAAe,eAAW,IAChD,UAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,cAAA,CAAe,GACzC;AAAA,UAEA,gBAAAF,EAAC,QAAA,EAAK,WAAWE,EAAO,cACtB,UAAA;AAAA,YAAA,gBAAAC,EAAC,UAAK,IAAIL,GAAS,WAAWI,EAAO,eAClC,UAAAf,GACH;AAAA,YACCC,uBACE,QAAA,EAAK,IAAIW,GAAQ,WAAWG,EAAO,cACjC,UAAAd,EAAA,CACH;AAAA,UAAA,EAAA,CAEJ;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF,GAEAgB,IAA6B,gBAAAC,EAAmB,gBAAAC,EAAMrB,GAAQ,QAAQ,CAAC;"}
|