@12-apps/ui 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components-catalog.md +806 -0
- package/components-guidelines.md +347 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/eslint.config.js +77 -0
- package/package.json +247 -0
- package/src/__tests__/package-wiring.test.ts +37 -0
- package/src/__tests__/setup.ts +1 -0
- package/src/__tests__/social-login-button.test.tsx +186 -0
- package/src/__tests__/user-avatar.test.tsx +195 -0
- package/src/button.tsx +22 -0
- package/src/components/command/__tests__/command.test.tsx +112 -0
- package/src/components/data-display/Alert/Alert.md +209 -0
- package/src/components/data-display/Alert/Alert.stories.tsx +561 -0
- package/src/components/data-display/Alert/Alert.test.stories.tsx +709 -0
- package/src/components/data-display/Alert/Alert.tsx +449 -0
- package/src/components/data-display/Alert/Alert.types.ts +79 -0
- package/src/components/data-display/Alert/index.ts +2 -0
- package/src/components/data-display/AlertDialog/AlertDialog.md +408 -0
- package/src/components/data-display/AlertDialog/AlertDialog.stories.tsx +360 -0
- package/src/components/data-display/AlertDialog/AlertDialog.test.stories.tsx +753 -0
- package/src/components/data-display/AlertDialog/AlertDialog.tsx +273 -0
- package/src/components/data-display/AlertDialog/AlertDialog.types.ts +74 -0
- package/src/components/data-display/AlertDialog/index.ts +2 -0
- package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.stories.tsx +230 -0
- package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.test.stories.tsx +270 -0
- package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.tsx +116 -0
- package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.types.ts +70 -0
- package/src/components/data-display/AsyncStateContainer/index.ts +2 -0
- package/src/components/data-display/Avatar/Avatar.md +568 -0
- package/src/components/data-display/Avatar/Avatar.stories.tsx +718 -0
- package/src/components/data-display/Avatar/Avatar.test.stories.tsx +820 -0
- package/src/components/data-display/Avatar/Avatar.tsx +507 -0
- package/src/components/data-display/Avatar/Avatar.types.ts +88 -0
- package/src/components/data-display/Avatar/index.ts +2 -0
- package/src/components/data-display/Badge/Badge.md +469 -0
- package/src/components/data-display/Badge/Badge.stories.tsx +1136 -0
- package/src/components/data-display/Badge/Badge.test.stories.tsx +1193 -0
- package/src/components/data-display/Badge/Badge.tsx +606 -0
- package/src/components/data-display/Badge/Badge.types.ts +118 -0
- package/src/components/data-display/Badge/index.ts +2 -0
- package/src/components/data-display/Banner/Banner.stories.tsx +524 -0
- package/src/components/data-display/Banner/Banner.test.stories.tsx +503 -0
- package/src/components/data-display/Banner/Banner.tsx +350 -0
- package/src/components/data-display/Banner/Banner.types.ts +41 -0
- package/src/components/data-display/Banner/banner.md +141 -0
- package/src/components/data-display/Banner/index.ts +2 -0
- package/src/components/data-display/Carousel/Carousel.md +815 -0
- package/src/components/data-display/Carousel/Carousel.stories.tsx +607 -0
- package/src/components/data-display/Carousel/Carousel.test.stories.tsx +691 -0
- package/src/components/data-display/Carousel/Carousel.tsx +765 -0
- package/src/components/data-display/Carousel/Carousel.types.ts +79 -0
- package/src/components/data-display/Carousel/index.ts +8 -0
- package/src/components/data-display/Chart/Chart.md +352 -0
- package/src/components/data-display/Chart/Chart.stories.tsx +568 -0
- package/src/components/data-display/Chart/Chart.test.stories.tsx +174 -0
- package/src/components/data-display/Chart/Chart.tsx +520 -0
- package/src/components/data-display/Chart/Chart.types.ts +65 -0
- package/src/components/data-display/Chart/index.ts +2 -0
- package/src/components/data-display/Chip/Chip.stories.tsx +251 -0
- package/src/components/data-display/Chip/Chip.test.stories.tsx +263 -0
- package/src/components/data-display/Chip/Chip.tsx +134 -0
- package/src/components/data-display/Chip/Chip.types.ts +51 -0
- package/src/components/data-display/Chip/chip.md +395 -0
- package/src/components/data-display/Chip/index.ts +2 -0
- package/src/components/data-display/DataGrid/DataGrid.md +602 -0
- package/src/components/data-display/DataGrid/DataGrid.stories.tsx +515 -0
- package/src/components/data-display/DataGrid/DataGrid.test.stories.tsx +659 -0
- package/src/components/data-display/DataGrid/DataGrid.tsx +743 -0
- package/src/components/data-display/DataGrid/DataGrid.types.ts +171 -0
- package/src/components/data-display/DataGrid/index.ts +21 -0
- package/src/components/data-display/DateTimeDisplay/DateTimeDisplay.tsx +197 -0
- package/src/components/data-display/DateTimeDisplay/DateTimeDisplay.types.ts +46 -0
- package/src/components/data-display/DateTimeDisplay/index.ts +2 -0
- package/src/components/data-display/DescriptionItem/DescriptionItem.md +226 -0
- package/src/components/data-display/DescriptionItem/DescriptionItem.stories.tsx +254 -0
- package/src/components/data-display/DescriptionItem/DescriptionItem.tsx +100 -0
- package/src/components/data-display/DescriptionItem/DescriptionItem.types.ts +1 -0
- package/src/components/data-display/DescriptionItem/index.ts +2 -0
- package/src/components/data-display/EmptyState/EmptyState.md +265 -0
- package/src/components/data-display/EmptyState/EmptyState.stories.tsx +282 -0
- package/src/components/data-display/EmptyState/EmptyState.test.stories.tsx +441 -0
- package/src/components/data-display/EmptyState/EmptyState.tsx +180 -0
- package/src/components/data-display/EmptyState/EmptyState.types.ts +31 -0
- package/src/components/data-display/EmptyState/index.ts +2 -0
- package/src/components/data-display/ErrorState/ErrorState.stories.tsx +110 -0
- package/src/components/data-display/ErrorState/ErrorState.test.stories.tsx +133 -0
- package/src/components/data-display/ErrorState/ErrorState.tsx +118 -0
- package/src/components/data-display/ErrorState/ErrorState.types.ts +45 -0
- package/src/components/data-display/ErrorState/index.ts +2 -0
- package/src/components/data-display/HoverCard/HoverCard.md +389 -0
- package/src/components/data-display/HoverCard/HoverCard.stories.tsx +648 -0
- package/src/components/data-display/HoverCard/HoverCard.test.stories.tsx +929 -0
- package/src/components/data-display/HoverCard/HoverCard.tsx +657 -0
- package/src/components/data-display/HoverCard/HoverCard.types.ts +116 -0
- package/src/components/data-display/HoverCard/index.ts +2 -0
- package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.md +532 -0
- package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.stories.tsx +411 -0
- package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.tsx +245 -0
- package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.types.ts +64 -0
- package/src/components/data-display/InteractiveTooltip/index.ts +2 -0
- package/src/components/data-display/LazyImage/LazyImage.md +356 -0
- package/src/components/data-display/LazyImage/LazyImage.stories.tsx +387 -0
- package/src/components/data-display/LazyImage/LazyImage.tsx +323 -0
- package/src/components/data-display/LazyImage/LazyImage.types.ts +205 -0
- package/src/components/data-display/LazyImage/index.ts +2 -0
- package/src/components/data-display/Lightbox/Lightbox.stories.tsx +315 -0
- package/src/components/data-display/Lightbox/Lightbox.test.stories.tsx +605 -0
- package/src/components/data-display/Lightbox/Lightbox.tsx +666 -0
- package/src/components/data-display/Lightbox/Lightbox.types.ts +49 -0
- package/src/components/data-display/Lightbox/index.ts +2 -0
- package/src/components/data-display/Lightbox/lightbox.md +298 -0
- package/src/components/data-display/LoadingState/LoadingState.stories.tsx +124 -0
- package/src/components/data-display/LoadingState/LoadingState.test.stories.tsx +99 -0
- package/src/components/data-display/LoadingState/LoadingState.tsx +103 -0
- package/src/components/data-display/LoadingState/LoadingState.types.ts +37 -0
- package/src/components/data-display/LoadingState/index.ts +2 -0
- package/src/components/data-display/MapPreview/MapPreview.md +154 -0
- package/src/components/data-display/MapPreview/MapPreview.stories.tsx +458 -0
- package/src/components/data-display/MapPreview/MapPreview.test.stories.tsx +390 -0
- package/src/components/data-display/MapPreview/MapPreview.tsx +922 -0
- package/src/components/data-display/MapPreview/MapPreview.types.ts +56 -0
- package/src/components/data-display/MapPreview/index.ts +2 -0
- package/src/components/data-display/Popover/Popover.md +245 -0
- package/src/components/data-display/Popover/Popover.stories.tsx +295 -0
- package/src/components/data-display/Popover/Popover.test.stories.tsx +1168 -0
- package/src/components/data-display/Popover/Popover.tsx +132 -0
- package/src/components/data-display/Popover/Popover.types.ts +33 -0
- package/src/components/data-display/Popover/index.ts +2 -0
- package/src/components/data-display/Progress/Progress.md +450 -0
- package/src/components/data-display/Progress/Progress.stories.tsx +481 -0
- package/src/components/data-display/Progress/Progress.test.stories.tsx +2070 -0
- package/src/components/data-display/Progress/Progress.tsx +332 -0
- package/src/components/data-display/Progress/Progress.types.ts +61 -0
- package/src/components/data-display/Progress/index.ts +2 -0
- package/src/components/data-display/SectionOnboarding/SectionOnboarding.md +108 -0
- package/src/components/data-display/SectionOnboarding/SectionOnboarding.stories.tsx +160 -0
- package/src/components/data-display/SectionOnboarding/SectionOnboarding.test.stories.tsx +190 -0
- package/src/components/data-display/SectionOnboarding/SectionOnboarding.tsx +224 -0
- package/src/components/data-display/SectionOnboarding/SectionOnboarding.types.ts +101 -0
- package/src/components/data-display/SectionOnboarding/index.ts +7 -0
- package/src/components/data-display/Sheet/Sheet.md +475 -0
- package/src/components/data-display/Sheet/Sheet.stories.tsx +883 -0
- package/src/components/data-display/Sheet/Sheet.test.stories.tsx +1101 -0
- package/src/components/data-display/Sheet/Sheet.tsx +978 -0
- package/src/components/data-display/Sheet/Sheet.types.ts +93 -0
- package/src/components/data-display/Sheet/index.ts +8 -0
- package/src/components/data-display/Stepper/Stepper.md +542 -0
- package/src/components/data-display/Stepper/Stepper.stories.tsx +540 -0
- package/src/components/data-display/Stepper/Stepper.test.stories.tsx +607 -0
- package/src/components/data-display/Stepper/Stepper.tsx +328 -0
- package/src/components/data-display/Stepper/Stepper.types.ts +97 -0
- package/src/components/data-display/Stepper/index.ts +2 -0
- package/src/components/data-display/Table/Table.md +243 -0
- package/src/components/data-display/Table/Table.stories.tsx +801 -0
- package/src/components/data-display/Table/Table.test.stories.tsx +369 -0
- package/src/components/data-display/Table/Table.tsx +831 -0
- package/src/components/data-display/Table/Table.types.ts +335 -0
- package/src/components/data-display/Table/index.ts +2 -0
- package/src/components/data-display/Timeline/Timeline.md +201 -0
- package/src/components/data-display/Timeline/Timeline.stories.tsx +444 -0
- package/src/components/data-display/Timeline/Timeline.test.stories.tsx +944 -0
- package/src/components/data-display/Timeline/Timeline.tsx +348 -0
- package/src/components/data-display/Timeline/Timeline.types.ts +26 -0
- package/src/components/data-display/Timeline/index.ts +2 -0
- package/src/components/data-display/TimingDiagram/TimingDiagram.md +162 -0
- package/src/components/data-display/TimingDiagram/TimingDiagram.stories.tsx +475 -0
- package/src/components/data-display/TimingDiagram/TimingDiagram.test.stories.tsx +734 -0
- package/src/components/data-display/TimingDiagram/TimingDiagram.tsx +399 -0
- package/src/components/data-display/TimingDiagram/TimingDiagram.types.ts +19 -0
- package/src/components/data-display/TimingDiagram/index.ts +2 -0
- package/src/components/data-display/Tooltip/Tooltip.md +397 -0
- package/src/components/data-display/Tooltip/Tooltip.stories.tsx +465 -0
- package/src/components/data-display/Tooltip/Tooltip.test.stories.tsx +1168 -0
- package/src/components/data-display/Tooltip/Tooltip.tsx +161 -0
- package/src/components/data-display/Tooltip/Tooltip.types.ts +33 -0
- package/src/components/data-display/Tooltip/index.ts +2 -0
- package/src/components/data-display/index.ts +29 -0
- package/src/components/feedback/Dialog/Dialog.md +527 -0
- package/src/components/feedback/Dialog/Dialog.stories.tsx +833 -0
- package/src/components/feedback/Dialog/Dialog.styles.ts +171 -0
- package/src/components/feedback/Dialog/Dialog.test.stories.tsx +955 -0
- package/src/components/feedback/Dialog/Dialog.tsx +256 -0
- package/src/components/feedback/Dialog/Dialog.types.ts +46 -0
- package/src/components/feedback/Dialog/index.ts +9 -0
- package/src/components/feedback/Modal/Modal.md +629 -0
- package/src/components/feedback/Modal/Modal.stories.tsx +765 -0
- package/src/components/feedback/Modal/Modal.test.stories.tsx +251 -0
- package/src/components/feedback/Modal/Modal.tsx +279 -0
- package/src/components/feedback/Modal/Modal.types.ts +26 -0
- package/src/components/feedback/Modal/index.ts +7 -0
- package/src/components/feedback/Sonner/Sonner.stories.tsx +698 -0
- package/src/components/feedback/Sonner/Sonner.test.stories.tsx +896 -0
- package/src/components/feedback/Sonner/Sonner.tsx +493 -0
- package/src/components/feedback/Sonner/Sonner.types.ts +65 -0
- package/src/components/feedback/Sonner/index.ts +8 -0
- package/src/components/feedback/StackedModal/StackedModal.md +273 -0
- package/src/components/feedback/StackedModal/StackedModal.stories.tsx +1785 -0
- package/src/components/feedback/StackedModal/StackedModal.test.stories.tsx +975 -0
- package/src/components/feedback/StackedModal/StackedModal.tsx +664 -0
- package/src/components/feedback/StackedModal/StackedModal.types.ts +70 -0
- package/src/components/feedback/StackedModal/index.ts +11 -0
- package/src/components/feedback/Toast/Toast.md +547 -0
- package/src/components/feedback/Toast/Toast.stories.tsx +548 -0
- package/src/components/feedback/Toast/Toast.test.stories.tsx +834 -0
- package/src/components/feedback/Toast/Toast.tsx +279 -0
- package/src/components/feedback/Toast/Toast.types.ts +59 -0
- package/src/components/feedback/Toast/index.ts +8 -0
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.md +610 -0
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.stories.tsx +691 -0
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.test.stories.tsx +634 -0
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +554 -0
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.types.ts +30 -0
- package/src/components/feedback/TutorialOverlay/index.ts +2 -0
- package/src/components/feedback/index.ts +6 -0
- package/src/components/form/AddressAutocomplete/AddressAutocomplete.md +633 -0
- package/src/components/form/AddressAutocomplete/AddressAutocomplete.stories.tsx +663 -0
- package/src/components/form/AddressAutocomplete/AddressAutocomplete.test.stories.tsx +723 -0
- package/src/components/form/AddressAutocomplete/AddressAutocomplete.tsx +836 -0
- package/src/components/form/AddressAutocomplete/AddressAutocomplete.types.ts +37 -0
- package/src/components/form/AddressAutocomplete/index.ts +2 -0
- package/src/components/form/Autocomplete/Autocomplete.helpers.ts +115 -0
- package/src/components/form/Autocomplete/Autocomplete.keys.ts +134 -0
- package/src/components/form/Autocomplete/Autocomplete.parts.tsx +337 -0
- package/src/components/form/Autocomplete/Autocomplete.stories.tsx +715 -0
- package/src/components/form/Autocomplete/Autocomplete.test.stories.tsx +825 -0
- package/src/components/form/Autocomplete/Autocomplete.tsx +166 -0
- package/src/components/form/Autocomplete/Autocomplete.types.ts +116 -0
- package/src/components/form/Autocomplete/autocomplete.md +789 -0
- package/src/components/form/Autocomplete/index.ts +8 -0
- package/src/components/form/Autocomplete/useAutocomplete.ts +311 -0
- package/src/components/form/Button/Button.md +411 -0
- package/src/components/form/Button/Button.stories.tsx +362 -0
- package/src/components/form/Button/Button.test.stories.tsx +603 -0
- package/src/components/form/Button/Button.tsx +326 -0
- package/src/components/form/Button/Button.types.ts +74 -0
- package/src/components/form/Button/index.ts +2 -0
- package/src/components/form/Calendar/Calendar.md +807 -0
- package/src/components/form/Calendar/Calendar.stories.tsx +349 -0
- package/src/components/form/Calendar/Calendar.test.stories.tsx +465 -0
- package/src/components/form/Calendar/Calendar.tsx +571 -0
- package/src/components/form/Calendar/Calendar.types.ts +81 -0
- package/src/components/form/Calendar/index.ts +11 -0
- package/src/components/form/Checkbox/Checkbox.md +200 -0
- package/src/components/form/Checkbox/Checkbox.stories.tsx +265 -0
- package/src/components/form/Checkbox/Checkbox.test.stories.tsx +181 -0
- package/src/components/form/Checkbox/Checkbox.tsx +170 -0
- package/src/components/form/Checkbox/Checkbox.types.ts +20 -0
- package/src/components/form/Checkbox/index.ts +2 -0
- package/src/components/form/CodeEditor/CodeEditor.md +350 -0
- package/src/components/form/CodeEditor/CodeEditor.stories.tsx +871 -0
- package/src/components/form/CodeEditor/CodeEditor.test.stories.tsx +575 -0
- package/src/components/form/CodeEditor/CodeEditor.tsx +415 -0
- package/src/components/form/CodeEditor/CodeEditor.types.ts +38 -0
- package/src/components/form/CodeEditor/index.ts +2 -0
- package/src/components/form/Command/Command.md +468 -0
- package/src/components/form/Command/Command.stories.tsx +580 -0
- package/src/components/form/Command/Command.test.stories.tsx +215 -0
- package/src/components/form/Command/Command.tsx +545 -0
- package/src/components/form/Command/Command.types.ts +116 -0
- package/src/components/form/Command/index.ts +12 -0
- package/src/components/form/CreatableSelect/CreatableSelect.md +114 -0
- package/src/components/form/CreatableSelect/CreatableSelect.stories.tsx +112 -0
- package/src/components/form/CreatableSelect/CreatableSelect.test.stories.tsx +134 -0
- package/src/components/form/CreatableSelect/CreatableSelect.tsx +149 -0
- package/src/components/form/CreatableSelect/CreatableSelect.types.ts +37 -0
- package/src/components/form/CreatableSelect/index.ts +2 -0
- package/src/components/form/Form/Form.md +325 -0
- package/src/components/form/Form/Form.stories.tsx +687 -0
- package/src/components/form/Form/Form.test.stories.tsx +601 -0
- package/src/components/form/Form/Form.tsx +136 -0
- package/src/components/form/Form/Form.types.ts +42 -0
- package/src/components/form/Form/index.ts +8 -0
- package/src/components/form/Input/Input.md +252 -0
- package/src/components/form/Input/Input.stories.tsx +256 -0
- package/src/components/form/Input/Input.test.stories.tsx +1184 -0
- package/src/components/form/Input/Input.tsx +263 -0
- package/src/components/form/Input/Input.types.ts +24 -0
- package/src/components/form/Input/index.ts +2 -0
- package/src/components/form/InputOTP/InputOTP.md +419 -0
- package/src/components/form/InputOTP/InputOTP.stories.tsx +774 -0
- package/src/components/form/InputOTP/InputOTP.test.stories.tsx +596 -0
- package/src/components/form/InputOTP/InputOTP.tsx +231 -0
- package/src/components/form/InputOTP/InputOTP.types.ts +68 -0
- package/src/components/form/InputOTP/index.ts +2 -0
- package/src/components/form/Label/Label.md +426 -0
- package/src/components/form/Label/Label.stories.tsx +473 -0
- package/src/components/form/Label/Label.test.stories.tsx +909 -0
- package/src/components/form/Label/Label.tsx +367 -0
- package/src/components/form/Label/Label.types.ts +35 -0
- package/src/components/form/Label/index.ts +2 -0
- package/src/components/form/Menubar/Menubar.md +275 -0
- package/src/components/form/Menubar/Menubar.stories.tsx +472 -0
- package/src/components/form/Menubar/Menubar.test.stories.tsx +588 -0
- package/src/components/form/Menubar/Menubar.tsx +467 -0
- package/src/components/form/Menubar/Menubar.types.ts +71 -0
- package/src/components/form/Menubar/index.ts +8 -0
- package/src/components/form/PasswordStrength/PasswordStrength.md +139 -0
- package/src/components/form/PasswordStrength/PasswordStrength.stories.tsx +562 -0
- package/src/components/form/PasswordStrength/PasswordStrength.test.stories.tsx +327 -0
- package/src/components/form/PasswordStrength/PasswordStrength.tsx +419 -0
- package/src/components/form/PasswordStrength/PasswordStrength.types.ts +18 -0
- package/src/components/form/PasswordStrength/index.ts +2 -0
- package/src/components/form/PhoneInput/PhoneInput.md +578 -0
- package/src/components/form/PhoneInput/PhoneInput.stories.tsx +495 -0
- package/src/components/form/PhoneInput/PhoneInput.test.stories.tsx +666 -0
- package/src/components/form/PhoneInput/PhoneInput.tsx +376 -0
- package/src/components/form/PhoneInput/PhoneInput.types.ts +25 -0
- package/src/components/form/PhoneInput/index.ts +2 -0
- package/src/components/form/RadioGroup/RadioGroup.md +477 -0
- package/src/components/form/RadioGroup/RadioGroup.stories.tsx +518 -0
- package/src/components/form/RadioGroup/RadioGroup.test.stories.tsx +685 -0
- package/src/components/form/RadioGroup/RadioGroup.tsx +664 -0
- package/src/components/form/RadioGroup/RadioGroup.types.ts +82 -0
- package/src/components/form/RadioGroup/index.ts +2 -0
- package/src/components/form/RichTextEditor/RichTextEditor.md +710 -0
- package/src/components/form/RichTextEditor/RichTextEditor.stories.tsx +261 -0
- package/src/components/form/RichTextEditor/RichTextEditor.test.stories.tsx +498 -0
- package/src/components/form/RichTextEditor/RichTextEditor.tsx +468 -0
- package/src/components/form/RichTextEditor/RichTextEditor.types.ts +72 -0
- package/src/components/form/RichTextEditor/index.ts +2 -0
- package/src/components/form/SearchPalette/SearchPalette.md +69 -0
- package/src/components/form/SearchPalette/SearchPalette.parts.tsx +358 -0
- package/src/components/form/SearchPalette/SearchPalette.stories.tsx +135 -0
- package/src/components/form/SearchPalette/SearchPalette.tsx +141 -0
- package/src/components/form/SearchPalette/SearchPalette.types.ts +82 -0
- package/src/components/form/SearchPalette/index.ts +7 -0
- package/src/components/form/Select/Select.md +254 -0
- package/src/components/form/Select/Select.stories.tsx +364 -0
- package/src/components/form/Select/Select.test.stories.tsx +977 -0
- package/src/components/form/Select/Select.tsx +239 -0
- package/src/components/form/Select/Select.types.ts +57 -0
- package/src/components/form/Select/index.ts +2 -0
- package/src/components/form/Slider/Slider.md +326 -0
- package/src/components/form/Slider/Slider.stories.tsx +418 -0
- package/src/components/form/Slider/Slider.test.stories.tsx +1044 -0
- package/src/components/form/Slider/Slider.tsx +374 -0
- package/src/components/form/Slider/Slider.types.ts +113 -0
- package/src/components/form/Slider/index.ts +2 -0
- package/src/components/form/Switch/Switch.md +565 -0
- package/src/components/form/Switch/Switch.stories.tsx +697 -0
- package/src/components/form/Switch/Switch.test.stories.tsx +597 -0
- package/src/components/form/Switch/Switch.tsx +578 -0
- package/src/components/form/Switch/Switch.types.ts +130 -0
- package/src/components/form/Switch/index.ts +2 -0
- package/src/components/form/Textarea/Textarea.stories.tsx +473 -0
- package/src/components/form/Textarea/Textarea.test.stories.tsx +708 -0
- package/src/components/form/Textarea/Textarea.tsx +678 -0
- package/src/components/form/Textarea/Textarea.types.ts +84 -0
- package/src/components/form/Textarea/index.ts +2 -0
- package/src/components/form/Toggle/Toggle.md +234 -0
- package/src/components/form/Toggle/Toggle.stories.tsx +638 -0
- package/src/components/form/Toggle/Toggle.test.stories.tsx +1167 -0
- package/src/components/form/Toggle/Toggle.tsx +265 -0
- package/src/components/form/Toggle/Toggle.types.ts +79 -0
- package/src/components/form/Toggle/index.ts +2 -0
- package/src/components/form/ToggleGroup/ToggleGroup.md +329 -0
- package/src/components/form/ToggleGroup/ToggleGroup.stories.tsx +617 -0
- package/src/components/form/ToggleGroup/ToggleGroup.test.stories.tsx +918 -0
- package/src/components/form/ToggleGroup/ToggleGroup.tsx +129 -0
- package/src/components/form/ToggleGroup/ToggleGroup.types.ts +53 -0
- package/src/components/form/ToggleGroup/index.ts +2 -0
- package/src/components/form/UploadButton/UploadButton.md +44 -0
- package/src/components/form/UploadButton/UploadButton.stories.tsx +366 -0
- package/src/components/form/UploadButton/UploadButton.test.stories.tsx +454 -0
- package/src/components/form/UploadButton/UploadButton.tsx +312 -0
- package/src/components/form/UploadButton/UploadButton.types.ts +58 -0
- package/src/components/form/UploadButton/index.ts +2 -0
- package/src/components/form/index.ts +25 -0
- package/src/components/form/total-form/Fields/SelectField.tsx +57 -0
- package/src/components/form/total-form/Fields/TextField.tsx +58 -0
- package/src/components/form/total-form/Fields/index.ts +4 -0
- package/src/components/form/total-form/FormContainer.tsx +104 -0
- package/src/components/form/total-form/FormContext.tsx +38 -0
- package/src/components/form/total-form/FormErrorSnackbar.tsx +35 -0
- package/src/components/form/total-form/SubmitButton.tsx +27 -0
- package/src/components/form/total-form/index.ts +12 -0
- package/src/components/form/total-form/total-form.test.tsx +97 -0
- package/src/components/index.ts +7 -0
- package/src/components/layout/Accordion/Accordion.md +725 -0
- package/src/components/layout/Accordion/Accordion.stories.tsx +690 -0
- package/src/components/layout/Accordion/Accordion.test.stories.tsx +1362 -0
- package/src/components/layout/Accordion/Accordion.tsx +242 -0
- package/src/components/layout/Accordion/Accordion.types.ts +32 -0
- package/src/components/layout/Accordion/index.ts +8 -0
- package/src/components/layout/Card/Card.md +533 -0
- package/src/components/layout/Card/Card.stories.tsx +593 -0
- package/src/components/layout/Card/Card.test.stories.tsx +1134 -0
- package/src/components/layout/Card/Card.tsx +404 -0
- package/src/components/layout/Card/Card.types.ts +57 -0
- package/src/components/layout/Card/index.ts +8 -0
- package/src/components/layout/Collapsible/Collapsible.md +135 -0
- package/src/components/layout/Collapsible/Collapsible.stories.tsx +180 -0
- package/src/components/layout/Collapsible/Collapsible.test.stories.tsx +304 -0
- package/src/components/layout/Collapsible/Collapsible.tsx +198 -0
- package/src/components/layout/Collapsible/Collapsible.types.ts +35 -0
- package/src/components/layout/Collapsible/index.ts +6 -0
- package/src/components/layout/Container/Container.md +420 -0
- package/src/components/layout/Container/Container.stories.tsx +557 -0
- package/src/components/layout/Container/Container.test.stories.tsx +750 -0
- package/src/components/layout/Container/Container.tsx +72 -0
- package/src/components/layout/Container/Container.types.ts +11 -0
- package/src/components/layout/Container/index.ts +2 -0
- package/src/components/layout/ContentToolbar/ColumnsMenu.tsx +99 -0
- package/src/components/layout/ContentToolbar/ContentToolbar.md +75 -0
- package/src/components/layout/ContentToolbar/ContentToolbar.stories.tsx +129 -0
- package/src/components/layout/ContentToolbar/ContentToolbar.test.stories.tsx +251 -0
- package/src/components/layout/ContentToolbar/ContentToolbar.tsx +108 -0
- package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +229 -0
- package/src/components/layout/ContentToolbar/FilterTrigger.tsx +71 -0
- package/src/components/layout/ContentToolbar/MultiSelectDropdown.tsx +297 -0
- package/src/components/layout/ContentToolbar/SavedViewsMenu.tsx +334 -0
- package/src/components/layout/ContentToolbar/SortByDropdown.tsx +213 -0
- package/src/components/layout/ContentToolbar/ViewSelector.tsx +98 -0
- package/src/components/layout/ContentToolbar/__tests__/ColumnsMenu.test.tsx +39 -0
- package/src/components/layout/ContentToolbar/__tests__/MultiSelectDropdown.test.tsx +110 -0
- package/src/components/layout/ContentToolbar/__tests__/SavedViewsMenu.test.tsx +99 -0
- package/src/components/layout/ContentToolbar/index.ts +24 -0
- package/src/components/layout/ContentToolbar/tests.md +42 -0
- package/src/components/layout/ContentToolbar/track.md +41 -0
- package/src/components/layout/Dashboard/Dashboard.md +71 -0
- package/src/components/layout/Dashboard/Dashboard.stories.tsx +104 -0
- package/src/components/layout/Dashboard/Dashboard.test.stories.tsx +164 -0
- package/src/components/layout/Dashboard/Dashboard.tsx +297 -0
- package/src/components/layout/Dashboard/Dashboard.types.ts +157 -0
- package/src/components/layout/Dashboard/DashboardContext.tsx +47 -0
- package/src/components/layout/Dashboard/DashboardParts.tsx +216 -0
- package/src/components/layout/Dashboard/index.ts +18 -0
- package/src/components/layout/Dashboard/tests.md +46 -0
- package/src/components/layout/Dashboard/track.md +50 -0
- package/src/components/layout/Drawer/Drawer.md +479 -0
- package/src/components/layout/Drawer/Drawer.stories.tsx +660 -0
- package/src/components/layout/Drawer/Drawer.test.stories.tsx +1339 -0
- package/src/components/layout/Drawer/Drawer.tsx +150 -0
- package/src/components/layout/Drawer/Drawer.types.ts +34 -0
- package/src/components/layout/Drawer/index.ts +2 -0
- package/src/components/layout/Resizable/Resizable.md +308 -0
- package/src/components/layout/Resizable/Resizable.stories.tsx +1039 -0
- package/src/components/layout/Resizable/Resizable.test.stories.tsx +750 -0
- package/src/components/layout/Resizable/Resizable.tsx +190 -0
- package/src/components/layout/Resizable/Resizable.types.ts +34 -0
- package/src/components/layout/Resizable/index.ts +2 -0
- package/src/components/layout/ScrollArea/ScrollArea.md +122 -0
- package/src/components/layout/ScrollArea/ScrollArea.stories.tsx +651 -0
- package/src/components/layout/ScrollArea/ScrollArea.test.stories.tsx +619 -0
- package/src/components/layout/ScrollArea/ScrollArea.tsx +449 -0
- package/src/components/layout/ScrollArea/ScrollArea.types.ts +80 -0
- package/src/components/layout/ScrollArea/index.ts +7 -0
- package/src/components/layout/Separator/Separator.stories.tsx +563 -0
- package/src/components/layout/Separator/Separator.test.stories.tsx +527 -0
- package/src/components/layout/Separator/Separator.tsx +187 -0
- package/src/components/layout/Separator/Separator.types.ts +17 -0
- package/src/components/layout/Separator/index.ts +2 -0
- package/src/components/layout/SettingsLayout/SettingsLayout.md +139 -0
- package/src/components/layout/SettingsLayout/SettingsLayout.parts.tsx +357 -0
- package/src/components/layout/SettingsLayout/SettingsLayout.stories.tsx +194 -0
- package/src/components/layout/SettingsLayout/SettingsLayout.test.stories.tsx +175 -0
- package/src/components/layout/SettingsLayout/SettingsLayout.tsx +69 -0
- package/src/components/layout/SettingsLayout/SettingsLayout.types.ts +61 -0
- package/src/components/layout/SettingsLayout/index.ts +6 -0
- package/src/components/layout/Sidebar/Sidebar.md +367 -0
- package/src/components/layout/Sidebar/Sidebar.stories.tsx +611 -0
- package/src/components/layout/Sidebar/Sidebar.test.stories.tsx +1326 -0
- package/src/components/layout/Sidebar/Sidebar.tsx +131 -0
- package/src/components/layout/Sidebar/Sidebar.types.ts +30 -0
- package/src/components/layout/Sidebar/index.ts +7 -0
- package/src/components/layout/Skeleton/Skeleton.md +240 -0
- package/src/components/layout/Skeleton/Skeleton.stories.tsx +689 -0
- package/src/components/layout/Skeleton/Skeleton.test.stories.tsx +521 -0
- package/src/components/layout/Skeleton/Skeleton.tsx +166 -0
- package/src/components/layout/Skeleton/Skeleton.types.ts +19 -0
- package/src/components/layout/Skeleton/index.ts +2 -0
- package/src/components/layout/Spacer/Spacer.md +84 -0
- package/src/components/layout/Spacer/Spacer.stories.tsx +502 -0
- package/src/components/layout/Spacer/Spacer.test.stories.tsx +472 -0
- package/src/components/layout/Spacer/Spacer.tsx +68 -0
- package/src/components/layout/Spacer/Spacer.types.ts +12 -0
- package/src/components/layout/Spacer/index.ts +2 -0
- package/src/components/layout/TableFilter/TableFilter.md +55 -0
- package/src/components/layout/TableFilter/TableFilter.stories.tsx +82 -0
- package/src/components/layout/TableFilter/TableFilter.test.stories.tsx +87 -0
- package/src/components/layout/TableFilter/TableFilter.tsx +383 -0
- package/src/components/layout/TableFilter/TableFilter.types.ts +87 -0
- package/src/components/layout/TableFilter/TableFilterContext.tsx +29 -0
- package/src/components/layout/TableFilter/index.ts +15 -0
- package/src/components/layout/TableFilter/tests.md +37 -0
- package/src/components/layout/TableFilter/track.md +36 -0
- package/src/components/layout/index.ts +14 -0
- package/src/components/navigation/Breadcrumbs/Breadcrumbs.md +558 -0
- package/src/components/navigation/Breadcrumbs/Breadcrumbs.stories.tsx +640 -0
- package/src/components/navigation/Breadcrumbs/Breadcrumbs.test.stories.tsx +1007 -0
- package/src/components/navigation/Breadcrumbs/Breadcrumbs.tsx +516 -0
- package/src/components/navigation/Breadcrumbs/Breadcrumbs.types.ts +132 -0
- package/src/components/navigation/Breadcrumbs/index.ts +2 -0
- package/src/components/navigation/CommandPalette/CommandPalette.md +201 -0
- package/src/components/navigation/CommandPalette/CommandPalette.stories.tsx +384 -0
- package/src/components/navigation/CommandPalette/CommandPalette.test.stories.tsx +437 -0
- package/src/components/navigation/CommandPalette/CommandPalette.tsx +434 -0
- package/src/components/navigation/CommandPalette/CommandPalette.types.ts +25 -0
- package/src/components/navigation/CommandPalette/index.ts +2 -0
- package/src/components/navigation/ContextMenu/ContextMenu.md +535 -0
- package/src/components/navigation/ContextMenu/ContextMenu.stories.tsx +611 -0
- package/src/components/navigation/ContextMenu/ContextMenu.test.stories.tsx +850 -0
- package/src/components/navigation/ContextMenu/ContextMenu.tsx +254 -0
- package/src/components/navigation/ContextMenu/ContextMenu.types.ts +96 -0
- package/src/components/navigation/ContextMenu/index.ts +2 -0
- package/src/components/navigation/DropdownMenu/DropdownMenu.md +514 -0
- package/src/components/navigation/DropdownMenu/DropdownMenu.stories.tsx +580 -0
- package/src/components/navigation/DropdownMenu/DropdownMenu.test.stories.tsx +660 -0
- package/src/components/navigation/DropdownMenu/DropdownMenu.tsx +305 -0
- package/src/components/navigation/DropdownMenu/DropdownMenu.types.ts +116 -0
- package/src/components/navigation/DropdownMenu/index.ts +2 -0
- package/src/components/navigation/NavigationMenu/NavigationMenu.md +580 -0
- package/src/components/navigation/NavigationMenu/NavigationMenu.tsx +874 -0
- package/src/components/navigation/NavigationMenu/NavigationMenu.types.ts +135 -0
- package/src/components/navigation/NavigationMenu/index.ts +2 -0
- package/src/components/navigation/NavigationMenu/stories/NavigationMenu.stories.tsx +518 -0
- package/src/components/navigation/NavigationMenu/stories/NavigationMenu.test.stories.tsx +931 -0
- package/src/components/navigation/NavigationMenu/stories/NavigationMenuHorizontal.stories.tsx +503 -0
- package/src/components/navigation/NavigationMenu/stories/NavigationMenuVertical.stories.tsx +455 -0
- package/src/components/navigation/Pagination/Pagination.md +699 -0
- package/src/components/navigation/Pagination/Pagination.stories.tsx +604 -0
- package/src/components/navigation/Pagination/Pagination.test.stories.tsx +520 -0
- package/src/components/navigation/Pagination/Pagination.tsx +356 -0
- package/src/components/navigation/Pagination/Pagination.types.ts +129 -0
- package/src/components/navigation/Pagination/index.ts +2 -0
- package/src/components/navigation/Tabs/Tabs.md +774 -0
- package/src/components/navigation/Tabs/Tabs.stories.tsx +1006 -0
- package/src/components/navigation/Tabs/Tabs.test.stories.tsx +1225 -0
- package/src/components/navigation/Tabs/Tabs.tsx +433 -0
- package/src/components/navigation/Tabs/Tabs.types.ts +239 -0
- package/src/components/navigation/Tabs/index.ts +2 -0
- package/src/components/navigation/index.ts +7 -0
- package/src/components/typography/Blockquote/Blockquote.md +130 -0
- package/src/components/typography/Blockquote/Blockquote.stories.tsx +359 -0
- package/src/components/typography/Blockquote/Blockquote.test.stories.tsx +432 -0
- package/src/components/typography/Blockquote/Blockquote.tsx +166 -0
- package/src/components/typography/Blockquote/Blockquote.types.ts +11 -0
- package/src/components/typography/Blockquote/index.ts +2 -0
- package/src/components/typography/Code/Code.md +182 -0
- package/src/components/typography/Code/Code.stories.tsx +686 -0
- package/src/components/typography/Code/Code.test.stories.tsx +703 -0
- package/src/components/typography/Code/Code.tsx +228 -0
- package/src/components/typography/Code/Code.types.ts +12 -0
- package/src/components/typography/Code/index.ts +2 -0
- package/src/components/typography/Heading/Heading.md +143 -0
- package/src/components/typography/Heading/Heading.stories.tsx +451 -0
- package/src/components/typography/Heading/Heading.test.stories.tsx +830 -0
- package/src/components/typography/Heading/Heading.tsx +178 -0
- package/src/components/typography/Heading/Heading.types.ts +11 -0
- package/src/components/typography/Heading/index.ts +2 -0
- package/src/components/typography/Paragraph/Paragraph.md +80 -0
- package/src/components/typography/Paragraph/Paragraph.stories.tsx +280 -0
- package/src/components/typography/Paragraph/Paragraph.test.stories.tsx +238 -0
- package/src/components/typography/Paragraph/Paragraph.tsx +99 -0
- package/src/components/typography/Paragraph/Paragraph.types.ts +10 -0
- package/src/components/typography/Paragraph/index.ts +2 -0
- package/src/components/typography/Text/Text.md +129 -0
- package/src/components/typography/Text/Text.stories.tsx +359 -0
- package/src/components/typography/Text/Text.test.stories.tsx +762 -0
- package/src/components/typography/Text/Text.tsx +159 -0
- package/src/components/typography/Text/Text.types.ts +15 -0
- package/src/components/typography/Text/index.ts +2 -0
- package/src/components/typography/index.ts +5 -0
- package/src/components/utility/AnimatedIcon/AnimatedIcon.md +359 -0
- package/src/components/utility/AnimatedIcon/AnimatedIcon.stories.tsx +947 -0
- package/src/components/utility/AnimatedIcon/AnimatedIcon.test.stories.tsx +596 -0
- package/src/components/utility/AnimatedIcon/AnimatedIcon.tsx +595 -0
- package/src/components/utility/AnimatedIcon/AnimatedIcon.types.ts +98 -0
- package/src/components/utility/AnimatedIcon/index.ts +2 -0
- package/src/components/utility/AspectRatio/AspectRatio.md +200 -0
- package/src/components/utility/AspectRatio/AspectRatio.stories.tsx +414 -0
- package/src/components/utility/AspectRatio/AspectRatio.test.stories.tsx +859 -0
- package/src/components/utility/AspectRatio/AspectRatio.tsx +76 -0
- package/src/components/utility/AspectRatio/AspectRatio.types.ts +13 -0
- package/src/components/utility/AspectRatio/index.ts +2 -0
- package/src/components/utility/InfiniteScroll/InfiniteScroll.md +531 -0
- package/src/components/utility/InfiniteScroll/InfiniteScroll.stories.tsx +620 -0
- package/src/components/utility/InfiniteScroll/InfiniteScroll.test.stories.tsx +358 -0
- package/src/components/utility/InfiniteScroll/InfiniteScroll.tsx +204 -0
- package/src/components/utility/InfiniteScroll/InfiniteScroll.types.ts +39 -0
- package/src/components/utility/InfiniteScroll/index.ts +6 -0
- package/src/components/utility/Portal/Portal.button-container.example.tsx +99 -0
- package/src/components/utility/Portal/Portal.md +593 -0
- package/src/components/utility/Portal/Portal.stories.tsx +340 -0
- package/src/components/utility/Portal/Portal.test.stories.tsx +2086 -0
- package/src/components/utility/Portal/Portal.tsx +39 -0
- package/src/components/utility/Portal/Portal.types.ts +7 -0
- package/src/components/utility/Portal/index.ts +2 -0
- package/src/components/utility/Transition/Transition.md +684 -0
- package/src/components/utility/Transition/Transition.stories.tsx +493 -0
- package/src/components/utility/Transition/Transition.test.stories.tsx +854 -0
- package/src/components/utility/Transition/Transition.tsx +140 -0
- package/src/components/utility/Transition/Transition.types.ts +14 -0
- package/src/components/utility/Transition/index.ts +6 -0
- package/src/components/utility/VirtualList/VirtualList.md +520 -0
- package/src/components/utility/VirtualList/VirtualList.stories.tsx +1073 -0
- package/src/components/utility/VirtualList/VirtualList.test.stories.tsx +1074 -0
- package/src/components/utility/VirtualList/VirtualList.tsx +369 -0
- package/src/components/utility/VirtualList/VirtualList.types.ts +56 -0
- package/src/components/utility/VirtualList/index.ts +7 -0
- package/src/components/utility/WorkflowStep/WorkflowStep.md +187 -0
- package/src/components/utility/WorkflowStep/WorkflowStep.stories.tsx +433 -0
- package/src/components/utility/WorkflowStep/WorkflowStep.test.stories.tsx +364 -0
- package/src/components/utility/WorkflowStep/WorkflowStep.tsx +506 -0
- package/src/components/utility/WorkflowStep/WorkflowStep.types.ts +133 -0
- package/src/components/utility/WorkflowStep/index.ts +13 -0
- package/src/components/utility/index.ts +7 -0
- package/src/index.ts +17 -0
- package/src/mui/AppBar.ts +2 -0
- package/src/mui/Box.ts +2 -0
- package/src/mui/CssBaseline.ts +2 -0
- package/src/mui/FormControl.ts +2 -0
- package/src/mui/FormControlLabel.ts +2 -0
- package/src/mui/Grid2.ts +2 -0
- package/src/mui/InputLabel.ts +2 -0
- package/src/mui/List.ts +2 -0
- package/src/mui/ListItem.ts +2 -0
- package/src/mui/ListItemButton.ts +2 -0
- package/src/mui/ListItemText.ts +2 -0
- package/src/mui/Stack.ts +2 -0
- package/src/mui/SvgIcon.ts +2 -0
- package/src/mui/Toolbar.ts +2 -0
- package/src/mui/styles.ts +2 -0
- package/src/mui/useMediaQuery.ts +1 -0
- package/src/social-login-button.tsx +199 -0
- package/src/user-avatar.tsx +102 -0
- package/src/utils/cn.ts +9 -0
- package/src/utils/index.ts +1 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export interface MapMarker {
|
|
2
|
+
position: { lat: number; lng: number };
|
|
3
|
+
title?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
icon?: string;
|
|
6
|
+
onClick?: () => void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface HeatmapPoint {
|
|
10
|
+
lat: number;
|
|
11
|
+
lng: number;
|
|
12
|
+
weight: number;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface MapPreviewProps {
|
|
16
|
+
/** Map center coordinates */
|
|
17
|
+
center?: { lat: number; lng: number };
|
|
18
|
+
/** Legacy coordinates prop (use center instead) */
|
|
19
|
+
coordinates?: { lat: number; lng: number };
|
|
20
|
+
/** Array of markers to display */
|
|
21
|
+
markers?: MapMarker[];
|
|
22
|
+
/** Single marker (use markers array instead) */
|
|
23
|
+
marker?: boolean;
|
|
24
|
+
/** Map height */
|
|
25
|
+
height?: string;
|
|
26
|
+
/** Enable user interaction */
|
|
27
|
+
interactive?: boolean;
|
|
28
|
+
/** Initial zoom level */
|
|
29
|
+
zoom?: number;
|
|
30
|
+
/** Google Maps API key */
|
|
31
|
+
googleMapsApiKey?: string;
|
|
32
|
+
/** Map display type */
|
|
33
|
+
mapType?: 'roadmap' | 'satellite' | 'hybrid' | 'terrain';
|
|
34
|
+
/** Map style variant */
|
|
35
|
+
variant?: 'default' | 'glass' | 'satellite' | 'dark';
|
|
36
|
+
/** Show map controls */
|
|
37
|
+
showControls?: boolean;
|
|
38
|
+
/** Show search functionality */
|
|
39
|
+
showSearch?: boolean;
|
|
40
|
+
/** Search placeholder text */
|
|
41
|
+
searchPlaceholder?: string;
|
|
42
|
+
/** Enable route display */
|
|
43
|
+
showRoute?: boolean;
|
|
44
|
+
/** Route line color */
|
|
45
|
+
routeColor?: string;
|
|
46
|
+
/** Heatmap data points */
|
|
47
|
+
heatmapData?: HeatmapPoint[];
|
|
48
|
+
/** Show heatmap overlay */
|
|
49
|
+
showHeatmap?: boolean;
|
|
50
|
+
/** Enable smooth animations */
|
|
51
|
+
animated?: boolean;
|
|
52
|
+
/** Callback when marker is dragged */
|
|
53
|
+
onMarkerDrag?: (coords: { lat: number; lng: number }) => void;
|
|
54
|
+
/** Callback when map is clicked */
|
|
55
|
+
onMapClick?: (lat: number, lng: number) => void;
|
|
56
|
+
}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# Popover
|
|
2
|
+
|
|
3
|
+
A flexible popover component built on top of Material-UI's Popover, providing enhanced styling variants and interactive effects.
|
|
4
|
+
|
|
5
|
+
## Props
|
|
6
|
+
|
|
7
|
+
### `variant` (optional)
|
|
8
|
+
|
|
9
|
+
- **Type:** `'default' | 'glass' | 'arrow'`
|
|
10
|
+
- **Default:** `'default'`
|
|
11
|
+
- **Description:** The visual variant of the popover
|
|
12
|
+
- `default`: Standard popover with solid background and shadow
|
|
13
|
+
- `glass`: Glassmorphism effect with backdrop blur and transparency
|
|
14
|
+
- `arrow`: Enhanced popover with stronger shadows (intended for arrow variants)
|
|
15
|
+
|
|
16
|
+
### `glow` (optional)
|
|
17
|
+
|
|
18
|
+
- **Type:** `boolean`
|
|
19
|
+
- **Default:** `false`
|
|
20
|
+
- **Description:** Whether the popover should have a glowing effect using the primary theme color
|
|
21
|
+
|
|
22
|
+
### `pulse` (optional)
|
|
23
|
+
|
|
24
|
+
- **Type:** `boolean`
|
|
25
|
+
- **Default:** `false`
|
|
26
|
+
- **Description:** Whether the popover should have a subtle pulse animation effect
|
|
27
|
+
|
|
28
|
+
### `arrow` (optional)
|
|
29
|
+
|
|
30
|
+
- **Type:** `boolean`
|
|
31
|
+
- **Default:** `false`
|
|
32
|
+
- **Description:** Whether to show an arrow pointing to the anchor (currently defined in types but not implemented in component)
|
|
33
|
+
|
|
34
|
+
### `maxWidth` (optional)
|
|
35
|
+
|
|
36
|
+
- **Type:** `number`
|
|
37
|
+
- **Default:** `400`
|
|
38
|
+
- **Description:** Maximum width of the popover in pixels
|
|
39
|
+
|
|
40
|
+
### Inherited Props
|
|
41
|
+
|
|
42
|
+
All other props from Material-UI's `PopoverProps` are supported, including:
|
|
43
|
+
|
|
44
|
+
- `open`: Controls whether the popover is open
|
|
45
|
+
- `anchorEl`: The element the popover is anchored to
|
|
46
|
+
- `onClose`: Callback fired when the popover requests to be closed
|
|
47
|
+
- `anchorOrigin`: The anchor point on the anchor element
|
|
48
|
+
- `transformOrigin`: The transform origin point on the popover
|
|
49
|
+
|
|
50
|
+
## Usage Examples
|
|
51
|
+
|
|
52
|
+
### Basic Popover
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
<Popover open={open} anchorEl={anchorEl} onClose={handleClose}>
|
|
56
|
+
<Typography sx={{ p: 2 }}>Basic popover content</Typography>
|
|
57
|
+
</Popover>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Glass Effect Popover
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
<Popover variant="glass" open={open} anchorEl={anchorEl} onClose={handleClose}>
|
|
64
|
+
<Typography sx={{ p: 2 }}>Glass effect popover</Typography>
|
|
65
|
+
</Popover>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Popover with Glow Effect
|
|
69
|
+
|
|
70
|
+
```tsx
|
|
71
|
+
<Popover glow open={open} anchorEl={anchorEl} onClose={handleClose}>
|
|
72
|
+
<Typography sx={{ p: 2 }}>Glowing popover</Typography>
|
|
73
|
+
</Popover>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Animated Popover
|
|
77
|
+
|
|
78
|
+
```tsx
|
|
79
|
+
<Popover pulse open={open} anchorEl={anchorEl} onClose={handleClose}>
|
|
80
|
+
<Typography sx={{ p: 2 }}>Pulsing popover</Typography>
|
|
81
|
+
</Popover>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Accessibility Notes
|
|
85
|
+
|
|
86
|
+
- The component inherits all accessibility features from Material-UI's Popover
|
|
87
|
+
- Proper focus management is handled automatically
|
|
88
|
+
- Escape key closes the popover by default
|
|
89
|
+
- Screen readers can navigate the content properly
|
|
90
|
+
- ARIA attributes are applied automatically
|
|
91
|
+
|
|
92
|
+
## Best Practices
|
|
93
|
+
|
|
94
|
+
1. **Positioning**: Use appropriate `anchorOrigin` and `transformOrigin` props to ensure the popover appears in the optimal location
|
|
95
|
+
2. **Content**: Keep popover content concise and focused on the primary action or information
|
|
96
|
+
3. **Interactive Elements**: Ensure interactive elements within the popover are keyboard accessible
|
|
97
|
+
4. **Mobile**: Consider the mobile experience - popovers should adapt well to smaller screens
|
|
98
|
+
5. **Performance**: Use the `glow` and `pulse` effects sparingly as they involve CSS animations and filters
|
|
99
|
+
|
|
100
|
+
## Testing
|
|
101
|
+
|
|
102
|
+
The Popover component includes test IDs for reliable testing. Use the `dataTestId` prop to provide custom test identifiers.
|
|
103
|
+
|
|
104
|
+
### Test IDs
|
|
105
|
+
|
|
106
|
+
| Element | Test ID Pattern | Default Test ID |
|
|
107
|
+
|---------|----------------|-----------------|
|
|
108
|
+
| Popover container | `{dataTestId}` or default | `popover-content` |
|
|
109
|
+
|
|
110
|
+
### Testing Best Practices
|
|
111
|
+
|
|
112
|
+
1. **Visibility Testing**: Always verify the popover is visible before interacting with its content
|
|
113
|
+
2. **Anchor Testing**: Test that the popover is properly positioned relative to its anchor element
|
|
114
|
+
3. **Close Behavior**: Test that clicking outside, pressing Escape, and any close buttons properly close the popover
|
|
115
|
+
4. **Accessibility**: Verify focus management and keyboard navigation work correctly
|
|
116
|
+
5. **Content Testing**: Test all interactive elements within the popover content
|
|
117
|
+
|
|
118
|
+
### Common Test Scenarios
|
|
119
|
+
|
|
120
|
+
#### Testing Popover Visibility
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
import { render, screen } from '@testing-library/react';
|
|
124
|
+
import { Popover } from './Popover';
|
|
125
|
+
|
|
126
|
+
test('shows popover when open', () => {
|
|
127
|
+
const anchorEl = document.createElement('div');
|
|
128
|
+
render(
|
|
129
|
+
<Popover open={true} anchorEl={anchorEl} dataTestId="user-popover">
|
|
130
|
+
<div>Popover content</div>
|
|
131
|
+
</Popover>
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
expect(screen.getByTestId('user-popover')).toBeInTheDocument();
|
|
135
|
+
expect(screen.getByText('Popover content')).toBeVisible();
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
#### Testing Popover Close Behavior
|
|
140
|
+
|
|
141
|
+
```tsx
|
|
142
|
+
import { render, screen } from '@testing-library/react';
|
|
143
|
+
import userEvent from '@testing-library/user-event';
|
|
144
|
+
import { Popover } from './Popover';
|
|
145
|
+
|
|
146
|
+
test('closes popover when clicking outside', async () => {
|
|
147
|
+
const user = userEvent.setup();
|
|
148
|
+
const handleClose = jest.fn();
|
|
149
|
+
const anchorEl = document.createElement('div');
|
|
150
|
+
|
|
151
|
+
render(
|
|
152
|
+
<Popover open={true} anchorEl={anchorEl} onClose={handleClose} dataTestId="info-popover">
|
|
153
|
+
<div>Information</div>
|
|
154
|
+
</Popover>
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
// Click outside the popover
|
|
158
|
+
await user.click(document.body);
|
|
159
|
+
|
|
160
|
+
expect(handleClose).toHaveBeenCalled();
|
|
161
|
+
});
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
#### Testing Popover Variants
|
|
165
|
+
|
|
166
|
+
```tsx
|
|
167
|
+
import { render, screen } from '@testing-library/react';
|
|
168
|
+
import { Popover } from './Popover';
|
|
169
|
+
|
|
170
|
+
test('applies glass variant styling', () => {
|
|
171
|
+
const anchorEl = document.createElement('div');
|
|
172
|
+
render(
|
|
173
|
+
<Popover open={true} anchorEl={anchorEl} variant="glass" dataTestId="glass-popover">
|
|
174
|
+
<div>Content</div>
|
|
175
|
+
</Popover>
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
const popover = screen.getByTestId('glass-popover');
|
|
179
|
+
expect(popover).toBeInTheDocument();
|
|
180
|
+
// Additional style assertions can be added
|
|
181
|
+
});
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
#### Testing Popover with Custom Content
|
|
185
|
+
|
|
186
|
+
```tsx
|
|
187
|
+
import { render, screen } from '@testing-library/react';
|
|
188
|
+
import userEvent from '@testing-library/user-event';
|
|
189
|
+
import { Popover } from './Popover';
|
|
190
|
+
|
|
191
|
+
test('interacts with popover content', async () => {
|
|
192
|
+
const user = userEvent.setup();
|
|
193
|
+
const handleAction = jest.fn();
|
|
194
|
+
const anchorEl = document.createElement('div');
|
|
195
|
+
|
|
196
|
+
render(
|
|
197
|
+
<Popover open={true} anchorEl={anchorEl} dataTestId="action-popover">
|
|
198
|
+
<button onClick={handleAction}>Action Button</button>
|
|
199
|
+
</Popover>
|
|
200
|
+
);
|
|
201
|
+
|
|
202
|
+
const button = screen.getByRole('button', { name: 'Action Button' });
|
|
203
|
+
await user.click(button);
|
|
204
|
+
|
|
205
|
+
expect(handleAction).toHaveBeenCalled();
|
|
206
|
+
});
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
#### Testing Popover Effects
|
|
210
|
+
|
|
211
|
+
```tsx
|
|
212
|
+
import { render, screen } from '@testing-library/react';
|
|
213
|
+
import { Popover } from './Popover';
|
|
214
|
+
|
|
215
|
+
test('applies glow effect', () => {
|
|
216
|
+
const anchorEl = document.createElement('div');
|
|
217
|
+
render(
|
|
218
|
+
<Popover open={true} anchorEl={anchorEl} glow dataTestId="glow-popover">
|
|
219
|
+
<div>Glowing content</div>
|
|
220
|
+
</Popover>
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
expect(screen.getByTestId('glow-popover')).toBeInTheDocument();
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
test('applies pulse animation', () => {
|
|
227
|
+
const anchorEl = document.createElement('div');
|
|
228
|
+
render(
|
|
229
|
+
<Popover open={true} anchorEl={anchorEl} pulse dataTestId="pulse-popover">
|
|
230
|
+
<div>Pulsing content</div>
|
|
231
|
+
</Popover>
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
expect(screen.getByTestId('pulse-popover')).toBeInTheDocument();
|
|
235
|
+
});
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Integration Testing Notes
|
|
239
|
+
|
|
240
|
+
When testing components that use Popover:
|
|
241
|
+
|
|
242
|
+
1. **Mock Anchor Elements**: Always provide valid anchor elements for testing
|
|
243
|
+
2. **Portal Testing**: Remember that popovers render in a portal, so use appropriate queries
|
|
244
|
+
3. **Async Behavior**: Account for any transition/animation delays when testing visibility
|
|
245
|
+
4. **Cleanup**: Ensure popovers are properly cleaned up between tests to avoid state leakage
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { Button, List, ListItem, ListItemText,Stack, Typography } from '@mui/material';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
|
|
5
|
+
import { Popover } from './Popover';
|
|
6
|
+
|
|
7
|
+
const meta: Meta<typeof Popover> = {
|
|
8
|
+
title: 'DataDisplay/Popover',
|
|
9
|
+
component: Popover,
|
|
10
|
+
parameters: {
|
|
11
|
+
layout: 'centered',
|
|
12
|
+
},
|
|
13
|
+
tags: ['autodocs', 'component:Popover'],
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export default meta;
|
|
17
|
+
type Story = StoryObj<typeof meta>;
|
|
18
|
+
|
|
19
|
+
// Wrapper for interactive stories
|
|
20
|
+
const PopoverDemo = ({
|
|
21
|
+
children,
|
|
22
|
+
...props
|
|
23
|
+
}: {
|
|
24
|
+
children?: React.ReactNode;
|
|
25
|
+
[key: string]: unknown;
|
|
26
|
+
}) => {
|
|
27
|
+
const [anchorEl, setAnchorEl] = React.useState<HTMLButtonElement | null>(null);
|
|
28
|
+
const open = Boolean(anchorEl);
|
|
29
|
+
|
|
30
|
+
const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
|
31
|
+
setAnchorEl(event.currentTarget);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const handleClose = () => {
|
|
35
|
+
setAnchorEl(null);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<>
|
|
40
|
+
<Button variant="contained" onClick={handleClick}>
|
|
41
|
+
Open Popover
|
|
42
|
+
</Button>
|
|
43
|
+
<Popover
|
|
44
|
+
open={open}
|
|
45
|
+
anchorEl={anchorEl}
|
|
46
|
+
onClose={handleClose}
|
|
47
|
+
anchorOrigin={{
|
|
48
|
+
vertical: 'bottom',
|
|
49
|
+
horizontal: 'left',
|
|
50
|
+
}}
|
|
51
|
+
{...props}
|
|
52
|
+
>
|
|
53
|
+
{children}
|
|
54
|
+
</Popover>
|
|
55
|
+
</>
|
|
56
|
+
);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export const Default: Story = {
|
|
60
|
+
render: () => (
|
|
61
|
+
<PopoverDemo>
|
|
62
|
+
<Typography sx={{ p: 2 }}>This is a basic popover content.</Typography>
|
|
63
|
+
</PopoverDemo>
|
|
64
|
+
),
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export const Variants: Story = {
|
|
68
|
+
render: () => (
|
|
69
|
+
<Stack direction="row" spacing={2}>
|
|
70
|
+
<PopoverDemo variant="default">
|
|
71
|
+
<Typography sx={{ p: 2 }}>Default variant</Typography>
|
|
72
|
+
</PopoverDemo>
|
|
73
|
+
<PopoverDemo variant="glass">
|
|
74
|
+
<Typography sx={{ p: 2 }}>Glass variant</Typography>
|
|
75
|
+
</PopoverDemo>
|
|
76
|
+
<PopoverDemo variant="arrow">
|
|
77
|
+
<Typography sx={{ p: 2 }}>Arrow variant</Typography>
|
|
78
|
+
</PopoverDemo>
|
|
79
|
+
</Stack>
|
|
80
|
+
),
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export const WithEffects: Story = {
|
|
84
|
+
render: () => (
|
|
85
|
+
<Stack direction="row" spacing={2}>
|
|
86
|
+
<PopoverDemo glow>
|
|
87
|
+
<Typography sx={{ p: 2 }}>Glow effect</Typography>
|
|
88
|
+
</PopoverDemo>
|
|
89
|
+
<PopoverDemo pulse>
|
|
90
|
+
<Typography sx={{ p: 2 }}>Pulse effect</Typography>
|
|
91
|
+
</PopoverDemo>
|
|
92
|
+
</Stack>
|
|
93
|
+
),
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export const ComplexContent: Story = {
|
|
97
|
+
render: () => (
|
|
98
|
+
<PopoverDemo variant="glass" maxWidth={300}>
|
|
99
|
+
<div style={{ padding: 16 }}>
|
|
100
|
+
<Typography variant="h6" gutterBottom>
|
|
101
|
+
Menu Options
|
|
102
|
+
</Typography>
|
|
103
|
+
<List dense>
|
|
104
|
+
<ListItem button>
|
|
105
|
+
<ListItemText primary="Profile Settings" />
|
|
106
|
+
</ListItem>
|
|
107
|
+
<ListItem button>
|
|
108
|
+
<ListItemText primary="Account Security" />
|
|
109
|
+
</ListItem>
|
|
110
|
+
<ListItem button>
|
|
111
|
+
<ListItemText primary="Notifications" />
|
|
112
|
+
</ListItem>
|
|
113
|
+
<ListItem button>
|
|
114
|
+
<ListItemText primary="Sign Out" />
|
|
115
|
+
</ListItem>
|
|
116
|
+
</List>
|
|
117
|
+
</div>
|
|
118
|
+
</PopoverDemo>
|
|
119
|
+
),
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export const GlassEffect: Story = {
|
|
123
|
+
render: () => (
|
|
124
|
+
<PopoverDemo variant="glass" glow>
|
|
125
|
+
<Typography sx={{ p: 3 }}>Glass morphism with glow effect</Typography>
|
|
126
|
+
</PopoverDemo>
|
|
127
|
+
),
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
export const WithArrow: Story = {
|
|
131
|
+
render: () => (
|
|
132
|
+
<PopoverDemo variant="arrow">
|
|
133
|
+
<Typography sx={{ p: 2 }}>Popover with arrow pointing to anchor</Typography>
|
|
134
|
+
</PopoverDemo>
|
|
135
|
+
),
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
export const DifferentSizes: Story = {
|
|
139
|
+
render: () => (
|
|
140
|
+
<Stack direction="row" spacing={2}>
|
|
141
|
+
<PopoverDemo maxWidth={200}>
|
|
142
|
+
<Typography sx={{ p: 2 }}>Small popover (200px max)</Typography>
|
|
143
|
+
</PopoverDemo>
|
|
144
|
+
<PopoverDemo maxWidth={400}>
|
|
145
|
+
<Typography sx={{ p: 2 }}>Medium popover (400px max)</Typography>
|
|
146
|
+
</PopoverDemo>
|
|
147
|
+
<PopoverDemo maxWidth={600}>
|
|
148
|
+
<Typography sx={{ p: 2 }}>Large popover (600px max)</Typography>
|
|
149
|
+
</PopoverDemo>
|
|
150
|
+
</Stack>
|
|
151
|
+
),
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
export const CombinedEffects: Story = {
|
|
155
|
+
render: () => (
|
|
156
|
+
<PopoverDemo variant="glass" glow pulse>
|
|
157
|
+
<Typography sx={{ p: 3 }}>Combined glass, glow, and pulse effects</Typography>
|
|
158
|
+
</PopoverDemo>
|
|
159
|
+
),
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export const EmptyState: Story = {
|
|
163
|
+
render: () => (
|
|
164
|
+
<PopoverDemo>
|
|
165
|
+
<div style={{ padding: 24, textAlign: 'center' }}>
|
|
166
|
+
<Typography color="text.secondary">No content available</Typography>
|
|
167
|
+
</div>
|
|
168
|
+
</PopoverDemo>
|
|
169
|
+
),
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
export const LoadingState: Story = {
|
|
173
|
+
render: () => (
|
|
174
|
+
<PopoverDemo>
|
|
175
|
+
<div style={{ padding: 24, textAlign: 'center' }}>
|
|
176
|
+
<Typography>Loading...</Typography>
|
|
177
|
+
</div>
|
|
178
|
+
</PopoverDemo>
|
|
179
|
+
),
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
export const ErrorState: Story = {
|
|
183
|
+
render: () => (
|
|
184
|
+
<PopoverDemo>
|
|
185
|
+
<div style={{ padding: 24, textAlign: 'center' }}>
|
|
186
|
+
<Typography color="error">Error loading content</Typography>
|
|
187
|
+
</div>
|
|
188
|
+
</PopoverDemo>
|
|
189
|
+
),
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
// Required story exports for validation
|
|
193
|
+
export const AllVariants: Story = {
|
|
194
|
+
render: () => (
|
|
195
|
+
<Stack direction="column" spacing={4} alignItems="center">
|
|
196
|
+
<PopoverDemo variant="default">
|
|
197
|
+
<Typography sx={{ p: 2 }}>Default variant</Typography>
|
|
198
|
+
</PopoverDemo>
|
|
199
|
+
<PopoverDemo variant="glass">
|
|
200
|
+
<Typography sx={{ p: 2 }}>Glass variant with translucent effect</Typography>
|
|
201
|
+
</PopoverDemo>
|
|
202
|
+
<PopoverDemo variant="arrow">
|
|
203
|
+
<Typography sx={{ p: 2 }}>Arrow variant pointing to anchor</Typography>
|
|
204
|
+
</PopoverDemo>
|
|
205
|
+
</Stack>
|
|
206
|
+
),
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
export const AllSizes: Story = {
|
|
210
|
+
render: () => (
|
|
211
|
+
<Stack direction="column" spacing={4} alignItems="center">
|
|
212
|
+
<PopoverDemo maxWidth={150}>
|
|
213
|
+
<Typography sx={{ p: 2 }}>Extra small (150px)</Typography>
|
|
214
|
+
</PopoverDemo>
|
|
215
|
+
<PopoverDemo maxWidth={250}>
|
|
216
|
+
<Typography sx={{ p: 2 }}>Small (250px)</Typography>
|
|
217
|
+
</PopoverDemo>
|
|
218
|
+
<PopoverDemo maxWidth={400}>
|
|
219
|
+
<Typography sx={{ p: 2 }}>Medium (400px)</Typography>
|
|
220
|
+
</PopoverDemo>
|
|
221
|
+
<PopoverDemo maxWidth={600}>
|
|
222
|
+
<Typography sx={{ p: 3 }}>Large (600px)</Typography>
|
|
223
|
+
</PopoverDemo>
|
|
224
|
+
<PopoverDemo maxWidth={800}>
|
|
225
|
+
<Typography sx={{ p: 4 }}>Extra large (800px)</Typography>
|
|
226
|
+
</PopoverDemo>
|
|
227
|
+
</Stack>
|
|
228
|
+
),
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
export const AllStates: Story = {
|
|
232
|
+
render: () => (
|
|
233
|
+
<Stack direction="column" spacing={4} alignItems="center">
|
|
234
|
+
<PopoverDemo>
|
|
235
|
+
<Typography sx={{ p: 2 }}>Normal state</Typography>
|
|
236
|
+
</PopoverDemo>
|
|
237
|
+
<PopoverDemo>
|
|
238
|
+
<div style={{ padding: 24, textAlign: 'center' }}>
|
|
239
|
+
<Typography>Loading...</Typography>
|
|
240
|
+
</div>
|
|
241
|
+
</PopoverDemo>
|
|
242
|
+
<PopoverDemo>
|
|
243
|
+
<div style={{ padding: 24, textAlign: 'center' }}>
|
|
244
|
+
<Typography color="error">Error state</Typography>
|
|
245
|
+
</div>
|
|
246
|
+
</PopoverDemo>
|
|
247
|
+
<PopoverDemo>
|
|
248
|
+
<div style={{ padding: 24, textAlign: 'center' }}>
|
|
249
|
+
<Typography color="text.secondary">Empty state</Typography>
|
|
250
|
+
</div>
|
|
251
|
+
</PopoverDemo>
|
|
252
|
+
</Stack>
|
|
253
|
+
),
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
export const InteractiveStates: Story = {
|
|
257
|
+
render: () => (
|
|
258
|
+
<Stack direction="row" spacing={4} alignItems="center">
|
|
259
|
+
<PopoverDemo>
|
|
260
|
+
<Typography sx={{ p: 2 }}>Hover over me</Typography>
|
|
261
|
+
</PopoverDemo>
|
|
262
|
+
<PopoverDemo variant="glass" glow>
|
|
263
|
+
<Typography sx={{ p: 2 }}>Glass with glow on hover</Typography>
|
|
264
|
+
</PopoverDemo>
|
|
265
|
+
<PopoverDemo variant="arrow" pulse>
|
|
266
|
+
<Typography sx={{ p: 2 }}>Arrow with pulse effect</Typography>
|
|
267
|
+
</PopoverDemo>
|
|
268
|
+
</Stack>
|
|
269
|
+
),
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
export const Responsive: Story = {
|
|
273
|
+
parameters: {
|
|
274
|
+
viewport: {
|
|
275
|
+
viewports: {
|
|
276
|
+
mobile: { name: 'Mobile', styles: { width: '375px', height: '667px' } },
|
|
277
|
+
tablet: { name: 'Tablet', styles: { width: '768px', height: '1024px' } },
|
|
278
|
+
desktop: { name: 'Desktop', styles: { width: '1280px', height: '720px' } },
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
render: () => (
|
|
283
|
+
<PopoverDemo variant="glass" glow>
|
|
284
|
+
<div style={{ padding: 24 }}>
|
|
285
|
+
<Typography variant="h6" gutterBottom>
|
|
286
|
+
Responsive Popover
|
|
287
|
+
</Typography>
|
|
288
|
+
<Typography paragraph>This popover adapts to different screen sizes.</Typography>
|
|
289
|
+
<Typography variant="body2" color="text.secondary">
|
|
290
|
+
Try switching viewport sizes to see responsive behavior.
|
|
291
|
+
</Typography>
|
|
292
|
+
</div>
|
|
293
|
+
</PopoverDemo>
|
|
294
|
+
),
|
|
295
|
+
};
|