@mitodl/smoot-design 0.0.0-0a23f44
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 +28 -0
- package/README.md +35 -0
- package/dist/bundles/aiDrawerManager.es.js +38832 -0
- package/dist/bundles/aiDrawerManager.es.js.map +1 -0
- package/dist/bundles/aiDrawerManager.umd.js +245 -0
- package/dist/bundles/aiDrawerManager.umd.js.map +1 -0
- package/dist/bundles/remoteTutorDrawer.es.js +38832 -0
- package/dist/bundles/remoteTutorDrawer.es.js.map +1 -0
- package/dist/bundles/remoteTutorDrawer.umd.js +245 -0
- package/dist/bundles/remoteTutorDrawer.umd.js.map +1 -0
- package/dist/cjs/VERSION.d.ts +12 -0
- package/dist/cjs/VERSION.js +15 -0
- package/dist/cjs/ai.d.ts +3 -0
- package/dist/cjs/ai.js +9 -0
- package/dist/cjs/bundles/AiDrawer/AiDrawer.d.ts +55 -0
- package/dist/cjs/bundles/AiDrawer/AiDrawer.js +262 -0
- package/dist/cjs/bundles/AiDrawer/AiDrawer.stories.d.ts +17 -0
- package/dist/cjs/bundles/AiDrawer/AiDrawer.stories.js +264 -0
- package/dist/cjs/bundles/AiDrawer/AiDrawerManager.d.ts +12 -0
- package/dist/cjs/bundles/AiDrawer/AiDrawerManager.js +51 -0
- package/dist/cjs/bundles/AiDrawer/AiDrawerManager.stories.d.ts +6 -0
- package/dist/cjs/bundles/AiDrawer/AiDrawerManager.stories.js +267 -0
- package/dist/cjs/bundles/AiDrawer/AiDrawerManager.test.d.ts +1 -0
- package/dist/cjs/bundles/AiDrawer/AiDrawerManager.test.js +245 -0
- package/dist/cjs/bundles/AiDrawer/FlashcardsScreen.d.ts +9 -0
- package/dist/cjs/bundles/AiDrawer/FlashcardsScreen.js +87 -0
- package/dist/cjs/bundles/aiDrawerManager.d.ts +6 -0
- package/dist/cjs/bundles/aiDrawerManager.js +44 -0
- package/dist/cjs/components/AiChat/AiChat.d.ts +5 -0
- package/dist/cjs/components/AiChat/AiChat.js +267 -0
- package/dist/cjs/components/AiChat/AiChat.stories.d.ts +17 -0
- package/dist/cjs/components/AiChat/AiChat.stories.js +194 -0
- package/dist/cjs/components/AiChat/AiChat.test.d.ts +1 -0
- package/dist/cjs/components/AiChat/AiChat.test.js +211 -0
- package/dist/cjs/components/AiChat/AiChatContext.d.ts +26 -0
- package/dist/cjs/components/AiChat/AiChatContext.js +106 -0
- package/dist/cjs/components/AiChat/AiChatContext.stories.d.ts +14 -0
- package/dist/cjs/components/AiChat/AiChatContext.stories.js +75 -0
- package/dist/cjs/components/AiChat/AiChatMarkdown.stories.d.ts +15 -0
- package/dist/cjs/components/AiChat/AiChatMarkdown.stories.js +282 -0
- package/dist/cjs/components/AiChat/ChatTitle.d.ts +8 -0
- package/dist/cjs/components/AiChat/ChatTitle.js +43 -0
- package/dist/cjs/components/AiChat/EllipsisIcon.d.ts +6 -0
- package/dist/cjs/components/AiChat/EllipsisIcon.js +17 -0
- package/dist/cjs/components/AiChat/EntryScreen.d.ts +11 -0
- package/dist/cjs/components/AiChat/EntryScreen.js +123 -0
- package/dist/cjs/components/AiChat/Markdown.d.ts +7 -0
- package/dist/cjs/components/AiChat/Markdown.js +14 -0
- package/dist/cjs/components/AiChat/TimLogo.d.ts +5 -0
- package/dist/cjs/components/AiChat/TimLogo.js +15 -0
- package/dist/cjs/components/AiChat/test-utils/api.d.ts +2 -0
- package/dist/cjs/components/AiChat/test-utils/api.js +164 -0
- package/dist/cjs/components/AiChat/types.d.ts +96 -0
- package/dist/cjs/components/AiChat/types.js +3 -0
- package/dist/cjs/components/AiChat/utils.d.ts +9 -0
- package/dist/cjs/components/AiChat/utils.js +41 -0
- package/dist/cjs/components/Alert/Alert.d.ts +15 -0
- package/dist/cjs/components/Alert/Alert.js +62 -0
- package/dist/cjs/components/Alert/Alert.stories.d.ts +8 -0
- package/dist/cjs/components/Alert/Alert.stories.js +53 -0
- package/dist/cjs/components/Button/ActionButton.d.ts +30 -0
- package/dist/cjs/components/Button/ActionButton.js +73 -0
- package/dist/cjs/components/Button/ActionButton.stories.d.ts +15 -0
- package/dist/cjs/components/Button/ActionButton.stories.js +113 -0
- package/dist/cjs/components/Button/Button.d.ts +58 -0
- package/dist/cjs/components/Button/Button.js +261 -0
- package/dist/cjs/components/Button/Button.stories.d.ts +18 -0
- package/dist/cjs/components/Button/Button.stories.js +148 -0
- package/dist/cjs/components/Button/Button.test.d.ts +1 -0
- package/dist/cjs/components/Button/Button.test.js +46 -0
- package/dist/cjs/components/Checkbox/Checkbox.d.ts +20 -0
- package/dist/cjs/components/Checkbox/Checkbox.js +85 -0
- package/dist/cjs/components/Checkbox/Checkbox.stories.d.ts +8 -0
- package/dist/cjs/components/Checkbox/Checkbox.stories.js +33 -0
- package/dist/cjs/components/CheckboxChoiceField/CheckboxChoiceField.d.ts +21 -0
- package/dist/cjs/components/CheckboxChoiceField/CheckboxChoiceField.js +43 -0
- package/dist/cjs/components/CheckboxChoiceField/CheckboxChoiceField.stories.d.ts +8 -0
- package/dist/cjs/components/CheckboxChoiceField/CheckboxChoiceField.stories.js +50 -0
- package/dist/cjs/components/CheckboxChoiceField/CheckboxChoiceField.test.d.ts +1 -0
- package/dist/cjs/components/CheckboxChoiceField/CheckboxChoiceField.test.js +52 -0
- package/dist/cjs/components/ImageAdapter/ImageAdapter.d.ts +23 -0
- package/dist/cjs/components/ImageAdapter/ImageAdapter.js +30 -0
- package/dist/cjs/components/Input/Input.d.ts +116 -0
- package/dist/cjs/components/Input/Input.js +237 -0
- package/dist/cjs/components/Input/Input.stories.d.ts +19 -0
- package/dist/cjs/components/Input/Input.stories.js +135 -0
- package/dist/cjs/components/Input/Input.test.d.ts +1 -0
- package/dist/cjs/components/Input/Input.test.js +32 -0
- package/dist/cjs/components/LinkAdapter/LinkAdapter.d.ts +23 -0
- package/dist/cjs/components/LinkAdapter/LinkAdapter.js +34 -0
- package/dist/cjs/components/RadioChoiceField/BooleanRadioChoiceField.stories.d.ts +6 -0
- package/dist/cjs/components/RadioChoiceField/BooleanRadioChoiceField.stories.js +47 -0
- package/dist/cjs/components/RadioChoiceField/RadioChoiceField.d.ts +45 -0
- package/dist/cjs/components/RadioChoiceField/RadioChoiceField.js +69 -0
- package/dist/cjs/components/RadioChoiceField/RadioChoiceField.stories.d.ts +6 -0
- package/dist/cjs/components/RadioChoiceField/RadioChoiceField.stories.js +55 -0
- package/dist/cjs/components/RadioChoiceField/RadioChoiceField.test.d.ts +1 -0
- package/dist/cjs/components/RadioChoiceField/RadioChoiceField.test.js +53 -0
- package/dist/cjs/components/ScrollSnap/ScrollSnap.d.ts +19 -0
- package/dist/cjs/components/ScrollSnap/ScrollSnap.js +59 -0
- package/dist/cjs/components/ScrollSnap/ScrollSnap.stories.d.ts +6 -0
- package/dist/cjs/components/ScrollSnap/ScrollSnap.stories.js +43 -0
- package/dist/cjs/components/ScrollSnap/useScrollSnap.d.ts +6 -0
- package/dist/cjs/components/ScrollSnap/useScrollSnap.js +36 -0
- package/dist/cjs/components/SrAnnouncer/SrAnnouncer.d.ts +25 -0
- package/dist/cjs/components/SrAnnouncer/SrAnnouncer.js +43 -0
- package/dist/cjs/components/SrAnnouncer/SrAnnouncer.stories.d.ts +6 -0
- package/dist/cjs/components/SrAnnouncer/SrAnnouncer.stories.js +44 -0
- package/dist/cjs/components/SrAnnouncer/SrAnnouncer.test.d.ts +1 -0
- package/dist/cjs/components/SrAnnouncer/SrAnnouncer.test.js +62 -0
- package/dist/cjs/components/TabButtons/TabButtonList.d.ts +25 -0
- package/dist/cjs/components/TabButtons/TabButtonList.js +97 -0
- package/dist/cjs/components/TabButtons/TabButtonList.stories.d.ts +24 -0
- package/dist/cjs/components/TabButtons/TabButtonList.stories.js +139 -0
- package/dist/cjs/components/TextField/TextField.d.ts +29 -0
- package/dist/cjs/components/TextField/TextField.js +33 -0
- package/dist/cjs/components/TextField/TextField.stories.d.ts +10 -0
- package/dist/cjs/components/TextField/TextField.stories.js +136 -0
- package/dist/cjs/components/TextField/TextField.test.d.ts +1 -0
- package/dist/cjs/components/TextField/TextField.test.js +77 -0
- package/dist/cjs/components/ThemeProvider/ThemeProvider.d.ts +21 -0
- package/dist/cjs/components/ThemeProvider/ThemeProvider.js +86 -0
- package/dist/cjs/components/ThemeProvider/ThemeProvider.stories.d.ts +63 -0
- package/dist/cjs/components/ThemeProvider/ThemeProvider.stories.js +102 -0
- package/dist/cjs/components/ThemeProvider/Typography.stories.d.ts +39 -0
- package/dist/cjs/components/ThemeProvider/Typography.stories.js +65 -0
- package/dist/cjs/components/ThemeProvider/breakpoints.d.ts +4 -0
- package/dist/cjs/components/ThemeProvider/breakpoints.js +19 -0
- package/dist/cjs/components/ThemeProvider/buttons.d.ts +7 -0
- package/dist/cjs/components/ThemeProvider/buttons.js +20 -0
- package/dist/cjs/components/ThemeProvider/chips.d.ts +3 -0
- package/dist/cjs/components/ThemeProvider/chips.js +154 -0
- package/dist/cjs/components/ThemeProvider/colors.d.ts +32 -0
- package/dist/cjs/components/ThemeProvider/colors.js +35 -0
- package/dist/cjs/components/ThemeProvider/typography.d.ts +18 -0
- package/dist/cjs/components/ThemeProvider/typography.js +173 -0
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.d.ts +24 -0
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js +33 -0
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.stories.d.ts +6 -0
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.stories.js +13 -0
- package/dist/cjs/components/internal/FormHelpers/FormHelpers.d.ts +39 -0
- package/dist/cjs/components/internal/FormHelpers/FormHelpers.js +78 -0
- package/dist/cjs/components/internal/FormHelpers/FormHelpers.test.d.ts +1 -0
- package/dist/cjs/components/internal/FormHelpers/FormHelpers.test.js +93 -0
- package/dist/cjs/index.d.ts +25 -0
- package/dist/cjs/index.js +44 -0
- package/dist/cjs/jest-setup.d.ts +1 -0
- package/dist/cjs/jest-setup.js +18 -0
- package/dist/cjs/jsdom-extended.d.ts +6 -0
- package/dist/cjs/jsdom-extended.js +14 -0
- package/dist/cjs/story-utils/index.d.ts +6 -0
- package/dist/cjs/story-utils/index.js +17 -0
- package/dist/cjs/utils/composeRefs.d.ts +7 -0
- package/dist/cjs/utils/composeRefs.js +20 -0
- package/dist/cjs/utils/composeRefs.test.d.ts +1 -0
- package/dist/cjs/utils/composeRefs.test.js +19 -0
- package/dist/cjs/utils/retryingFetch.d.ts +19 -0
- package/dist/cjs/utils/retryingFetch.js +98 -0
- package/dist/cjs/utils/retryingFetch.test.d.ts +1 -0
- package/dist/cjs/utils/retryingFetch.test.js +48 -0
- package/dist/cjs/utils/useDevCheckStable.d.ts +8 -0
- package/dist/cjs/utils/useDevCheckStable.js +29 -0
- package/dist/cjs/utils/useInterval.d.ts +7 -0
- package/dist/cjs/utils/useInterval.js +25 -0
- package/dist/esm/VERSION.d.ts +12 -0
- package/dist/esm/VERSION.js +12 -0
- package/dist/esm/ai.d.ts +3 -0
- package/dist/esm/ai.js +2 -0
- package/dist/esm/bundles/AiDrawer/AiDrawer.d.ts +55 -0
- package/dist/esm/bundles/AiDrawer/AiDrawer.js +259 -0
- package/dist/esm/bundles/AiDrawer/AiDrawer.stories.d.ts +17 -0
- package/dist/esm/bundles/AiDrawer/AiDrawer.stories.js +261 -0
- package/dist/esm/bundles/AiDrawer/AiDrawerManager.d.ts +12 -0
- package/dist/esm/bundles/AiDrawer/AiDrawerManager.js +48 -0
- package/dist/esm/bundles/AiDrawer/AiDrawerManager.stories.d.ts +6 -0
- package/dist/esm/bundles/AiDrawer/AiDrawerManager.stories.js +264 -0
- package/dist/esm/bundles/AiDrawer/AiDrawerManager.test.d.ts +1 -0
- package/dist/esm/bundles/AiDrawer/AiDrawerManager.test.js +243 -0
- package/dist/esm/bundles/AiDrawer/FlashcardsScreen.d.ts +9 -0
- package/dist/esm/bundles/AiDrawer/FlashcardsScreen.js +83 -0
- package/dist/esm/bundles/aiDrawerManager.d.ts +6 -0
- package/dist/esm/bundles/aiDrawerManager.js +41 -0
- package/dist/esm/components/AiChat/AiChat.d.ts +5 -0
- package/dist/esm/components/AiChat/AiChat.js +263 -0
- package/dist/esm/components/AiChat/AiChat.stories.d.ts +17 -0
- package/dist/esm/components/AiChat/AiChat.stories.js +191 -0
- package/dist/esm/components/AiChat/AiChat.test.d.ts +1 -0
- package/dist/esm/components/AiChat/AiChat.test.js +209 -0
- package/dist/esm/components/AiChat/AiChatContext.d.ts +26 -0
- package/dist/esm/components/AiChat/AiChatContext.js +102 -0
- package/dist/esm/components/AiChat/AiChatContext.stories.d.ts +14 -0
- package/dist/esm/components/AiChat/AiChatContext.stories.js +72 -0
- package/dist/esm/components/AiChat/AiChatMarkdown.stories.d.ts +15 -0
- package/dist/esm/components/AiChat/AiChatMarkdown.stories.js +279 -0
- package/dist/esm/components/AiChat/ChatTitle.d.ts +8 -0
- package/dist/esm/components/AiChat/ChatTitle.js +40 -0
- package/dist/esm/components/AiChat/EllipsisIcon.d.ts +6 -0
- package/dist/esm/components/AiChat/EllipsisIcon.js +15 -0
- package/dist/esm/components/AiChat/EntryScreen.d.ts +11 -0
- package/dist/esm/components/AiChat/EntryScreen.js +120 -0
- package/dist/esm/components/AiChat/Markdown.d.ts +7 -0
- package/dist/esm/components/AiChat/Markdown.js +12 -0
- package/dist/esm/components/AiChat/TimLogo.d.ts +5 -0
- package/dist/esm/components/AiChat/TimLogo.js +13 -0
- package/dist/esm/components/AiChat/test-utils/api.d.ts +2 -0
- package/dist/esm/components/AiChat/test-utils/api.js +161 -0
- package/dist/esm/components/AiChat/types.d.ts +96 -0
- package/dist/esm/components/AiChat/types.js +2 -0
- package/dist/esm/components/AiChat/utils.d.ts +9 -0
- package/dist/esm/components/AiChat/utils.js +38 -0
- package/dist/esm/components/Alert/Alert.d.ts +15 -0
- package/dist/esm/components/Alert/Alert.js +59 -0
- package/dist/esm/components/Alert/Alert.stories.d.ts +8 -0
- package/dist/esm/components/Alert/Alert.stories.js +50 -0
- package/dist/esm/components/Button/ActionButton.d.ts +30 -0
- package/dist/esm/components/Button/ActionButton.js +68 -0
- package/dist/esm/components/Button/ActionButton.stories.d.ts +15 -0
- package/dist/esm/components/Button/ActionButton.stories.js +110 -0
- package/dist/esm/components/Button/Button.d.ts +58 -0
- package/dist/esm/components/Button/Button.js +252 -0
- package/dist/esm/components/Button/Button.stories.d.ts +18 -0
- package/dist/esm/components/Button/Button.stories.js +145 -0
- package/dist/esm/components/Button/Button.test.d.ts +1 -0
- package/dist/esm/components/Button/Button.test.js +44 -0
- package/dist/esm/components/Checkbox/Checkbox.d.ts +20 -0
- package/dist/esm/components/Checkbox/Checkbox.js +81 -0
- package/dist/esm/components/Checkbox/Checkbox.stories.d.ts +8 -0
- package/dist/esm/components/Checkbox/Checkbox.stories.js +30 -0
- package/dist/esm/components/CheckboxChoiceField/CheckboxChoiceField.d.ts +21 -0
- package/dist/esm/components/CheckboxChoiceField/CheckboxChoiceField.js +40 -0
- package/dist/esm/components/CheckboxChoiceField/CheckboxChoiceField.stories.d.ts +8 -0
- package/dist/esm/components/CheckboxChoiceField/CheckboxChoiceField.stories.js +47 -0
- package/dist/esm/components/CheckboxChoiceField/CheckboxChoiceField.test.d.ts +1 -0
- package/dist/esm/components/CheckboxChoiceField/CheckboxChoiceField.test.js +50 -0
- package/dist/esm/components/ImageAdapter/ImageAdapter.d.ts +23 -0
- package/dist/esm/components/ImageAdapter/ImageAdapter.js +27 -0
- package/dist/esm/components/Input/Input.d.ts +116 -0
- package/dist/esm/components/Input/Input.js +232 -0
- package/dist/esm/components/Input/Input.stories.d.ts +19 -0
- package/dist/esm/components/Input/Input.stories.js +132 -0
- package/dist/esm/components/Input/Input.test.d.ts +1 -0
- package/dist/esm/components/Input/Input.test.js +30 -0
- package/dist/esm/components/LinkAdapter/LinkAdapter.d.ts +23 -0
- package/dist/esm/components/LinkAdapter/LinkAdapter.js +31 -0
- package/dist/esm/components/RadioChoiceField/BooleanRadioChoiceField.stories.d.ts +6 -0
- package/dist/esm/components/RadioChoiceField/BooleanRadioChoiceField.stories.js +44 -0
- package/dist/esm/components/RadioChoiceField/RadioChoiceField.d.ts +45 -0
- package/dist/esm/components/RadioChoiceField/RadioChoiceField.js +65 -0
- package/dist/esm/components/RadioChoiceField/RadioChoiceField.stories.d.ts +6 -0
- package/dist/esm/components/RadioChoiceField/RadioChoiceField.stories.js +52 -0
- package/dist/esm/components/RadioChoiceField/RadioChoiceField.test.d.ts +1 -0
- package/dist/esm/components/RadioChoiceField/RadioChoiceField.test.js +51 -0
- package/dist/esm/components/ScrollSnap/ScrollSnap.d.ts +19 -0
- package/dist/esm/components/ScrollSnap/ScrollSnap.js +56 -0
- package/dist/esm/components/ScrollSnap/ScrollSnap.stories.d.ts +6 -0
- package/dist/esm/components/ScrollSnap/ScrollSnap.stories.js +40 -0
- package/dist/esm/components/ScrollSnap/useScrollSnap.d.ts +6 -0
- package/dist/esm/components/ScrollSnap/useScrollSnap.js +33 -0
- package/dist/esm/components/SrAnnouncer/SrAnnouncer.d.ts +25 -0
- package/dist/esm/components/SrAnnouncer/SrAnnouncer.js +40 -0
- package/dist/esm/components/SrAnnouncer/SrAnnouncer.stories.d.ts +6 -0
- package/dist/esm/components/SrAnnouncer/SrAnnouncer.stories.js +41 -0
- package/dist/esm/components/SrAnnouncer/SrAnnouncer.test.d.ts +1 -0
- package/dist/esm/components/SrAnnouncer/SrAnnouncer.test.js +60 -0
- package/dist/esm/components/TabButtons/TabButtonList.d.ts +25 -0
- package/dist/esm/components/TabButtons/TabButtonList.js +92 -0
- package/dist/esm/components/TabButtons/TabButtonList.stories.d.ts +24 -0
- package/dist/esm/components/TabButtons/TabButtonList.stories.js +136 -0
- package/dist/esm/components/TextField/TextField.d.ts +29 -0
- package/dist/esm/components/TextField/TextField.js +30 -0
- package/dist/esm/components/TextField/TextField.stories.d.ts +10 -0
- package/dist/esm/components/TextField/TextField.stories.js +133 -0
- package/dist/esm/components/TextField/TextField.test.d.ts +1 -0
- package/dist/esm/components/TextField/TextField.test.js +75 -0
- package/dist/esm/components/ThemeProvider/ThemeProvider.d.ts +21 -0
- package/dist/esm/components/ThemeProvider/ThemeProvider.js +82 -0
- package/dist/esm/components/ThemeProvider/ThemeProvider.stories.d.ts +63 -0
- package/dist/esm/components/ThemeProvider/ThemeProvider.stories.js +99 -0
- package/dist/esm/components/ThemeProvider/Typography.stories.d.ts +39 -0
- package/dist/esm/components/ThemeProvider/Typography.stories.js +62 -0
- package/dist/esm/components/ThemeProvider/breakpoints.d.ts +4 -0
- package/dist/esm/components/ThemeProvider/breakpoints.js +15 -0
- package/dist/esm/components/ThemeProvider/buttons.d.ts +7 -0
- package/dist/esm/components/ThemeProvider/buttons.js +17 -0
- package/dist/esm/components/ThemeProvider/chips.d.ts +3 -0
- package/dist/esm/components/ThemeProvider/chips.js +151 -0
- package/dist/esm/components/ThemeProvider/colors.d.ts +32 -0
- package/dist/esm/components/ThemeProvider/colors.js +32 -0
- package/dist/esm/components/ThemeProvider/typography.d.ts +18 -0
- package/dist/esm/components/ThemeProvider/typography.js +167 -0
- package/dist/esm/components/VisuallyHidden/VisuallyHidden.d.ts +24 -0
- package/dist/esm/components/VisuallyHidden/VisuallyHidden.js +30 -0
- package/dist/esm/components/VisuallyHidden/VisuallyHidden.stories.d.ts +6 -0
- package/dist/esm/components/VisuallyHidden/VisuallyHidden.stories.js +10 -0
- package/dist/esm/components/internal/FormHelpers/FormHelpers.d.ts +39 -0
- package/dist/esm/components/internal/FormHelpers/FormHelpers.js +73 -0
- package/dist/esm/components/internal/FormHelpers/FormHelpers.test.d.ts +1 -0
- package/dist/esm/components/internal/FormHelpers/FormHelpers.test.js +91 -0
- package/dist/esm/index.d.ts +25 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/jest-setup.d.ts +1 -0
- package/dist/esm/jest-setup.js +16 -0
- package/dist/esm/jsdom-extended.d.ts +6 -0
- package/dist/esm/jsdom-extended.js +12 -0
- package/dist/esm/story-utils/index.d.ts +6 -0
- package/dist/esm/story-utils/index.js +13 -0
- package/dist/esm/utils/composeRefs.d.ts +7 -0
- package/dist/esm/utils/composeRefs.js +17 -0
- package/dist/esm/utils/composeRefs.test.d.ts +1 -0
- package/dist/esm/utils/composeRefs.test.js +17 -0
- package/dist/esm/utils/retryingFetch.d.ts +19 -0
- package/dist/esm/utils/retryingFetch.js +96 -0
- package/dist/esm/utils/retryingFetch.test.d.ts +1 -0
- package/dist/esm/utils/retryingFetch.test.js +46 -0
- package/dist/esm/utils/useDevCheckStable.d.ts +8 -0
- package/dist/esm/utils/useDevCheckStable.js +26 -0
- package/dist/esm/utils/useInterval.d.ts +7 -0
- package/dist/esm/utils/useInterval.js +22 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/type-augmentation/TypescriptDocs.mdx +17 -0
- package/dist/type-augmentation/imports.d.ts +3 -0
- package/dist/type-augmentation/index.d.ts +3 -0
- package/dist/type-augmentation/theme.d.ts +105 -0
- package/dist/type-augmentation/typography.d.ts +54 -0
- package/package.json +159 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { Theme } from "@mui/material/styles";
|
|
3
|
+
/**
|
|
4
|
+
* Base styles for child checkboxes.
|
|
5
|
+
*/
|
|
6
|
+
declare const childCheckboxStyles: (theme: Theme) => import("@emotion/react").SerializedStyles;
|
|
7
|
+
export type CheckboxProps = {
|
|
8
|
+
label?: string;
|
|
9
|
+
value?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
checked?: boolean;
|
|
12
|
+
onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
13
|
+
className?: string;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* A standalone checkbox. For several checkboxes together, use the `CheckboxChoiceField` component.
|
|
18
|
+
*/
|
|
19
|
+
declare const Checkbox: React.FC<CheckboxProps>;
|
|
20
|
+
export { Checkbox, childCheckboxStyles };
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.childCheckboxStyles = exports.Checkbox = void 0;
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const styled_1 = require("@emotion/styled");
|
|
6
|
+
const react_1 = require("@emotion/react");
|
|
7
|
+
// prettier-ignore
|
|
8
|
+
const hoverSprite = (theme) => (0, react_1.css) `
|
|
9
|
+
background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 0H17C17.5523 0 18 0.44772 18 1V17C18 17.5523 17.5523 18 17 18H1C0.44772 18 0 17.5523 0 17V1C0 0.44772 0.44772 0 1 0ZM2 2V16H16V2H2Z' fill='${encodeURIComponent(theme.custom.colors.silverGrayDark)}'/%3E%3C/svg%3E%0A");`;
|
|
10
|
+
// prettier-ignore
|
|
11
|
+
const checkedSprite = (theme) => (0, react_1.css) `
|
|
12
|
+
background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 0H17C17.5523 0 18 0.44772 18 1V17C18 17.5523 17.5523 18 17 18H1C0.44772 18 0 17.5523 0 17V1C0 0.44772 0.44772 0 1 0ZM8.0026 13L15.0737 5.92893L13.6595 4.51472L8.0026 10.1716L5.17421 7.3431L3.75999 8.7574L8.0026 13Z' fill='${encodeURIComponent(theme.custom.colors.red)}'/%3E%3C/svg%3E%0A");`;
|
|
13
|
+
/**
|
|
14
|
+
* Base styles for child checkboxes.
|
|
15
|
+
*/
|
|
16
|
+
// prettier-ignore
|
|
17
|
+
const childCheckboxStyles = (theme) => (0, react_1.css) `
|
|
18
|
+
input[type="checkbox"] {
|
|
19
|
+
margin-left: 0;
|
|
20
|
+
margin-right: 0;
|
|
21
|
+
height: 24px;
|
|
22
|
+
width: 24px;
|
|
23
|
+
appearance: none;
|
|
24
|
+
background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 0H17C17.5523 0 18 0.44772 18 1V17C18 17.5523 17.5523 18 17 18H1C0.44772 18 0 17.5523 0 17V1C0 0.44772 0.44772 0 1 0ZM2 2V16H16V2H2Z' fill='${encodeURIComponent(theme.custom.colors.silverGrayLight)}'/%3E%3C/svg%3E%0A");
|
|
25
|
+
background-repeat: no-repeat;
|
|
26
|
+
background-position: 3px 3px;
|
|
27
|
+
flex-shrink: 0;
|
|
28
|
+
cursor: pointer;
|
|
29
|
+
|
|
30
|
+
&:disabled {
|
|
31
|
+
cursor: not-allowed;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
input[type="checkbox"]:checked {
|
|
36
|
+
${checkedSprite(theme)}
|
|
37
|
+
+ .checkbox-label {
|
|
38
|
+
color: ${theme.custom.colors.darkGray2};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/*
|
|
43
|
+
* This also triggers when the label is hovered.
|
|
44
|
+
* See https://stackoverflow.com/a/9101344/2747370
|
|
45
|
+
*/
|
|
46
|
+
input[type="checkbox"]:hover:not(:disabled, :checked) {
|
|
47
|
+
${hoverSprite(theme)}
|
|
48
|
+
& + .checkbox-label {
|
|
49
|
+
color: ${theme.custom.colors.darkGray2};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
`;
|
|
53
|
+
exports.childCheckboxStyles = childCheckboxStyles;
|
|
54
|
+
const Container = styled_1.default.div(({ theme }) => [
|
|
55
|
+
{
|
|
56
|
+
height: 24,
|
|
57
|
+
label: Object.assign({ display: "flex", alignItems: "center", cursor: "pointer" }, theme.typography.body2),
|
|
58
|
+
'input[type="checkbox"] + .checkbox-label': Object.assign({ color: theme.custom.colors.silverGrayDark }, theme.typography.body2),
|
|
59
|
+
'input[type="checkbox"]:disabled + .checkbox-label': {
|
|
60
|
+
cursor: "not-allowed",
|
|
61
|
+
},
|
|
62
|
+
'label:has(input[type="checkbox"]:disabled)': {
|
|
63
|
+
cursor: "not-allowed",
|
|
64
|
+
},
|
|
65
|
+
'&& input[type="checkbox"]': {
|
|
66
|
+
margin: 0,
|
|
67
|
+
marginRight: 4,
|
|
68
|
+
// Help avoid focus outline from being cutoff
|
|
69
|
+
":focus-visible": {
|
|
70
|
+
outlineOffset: -1,
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
// Insert childCheckboxStyles and hoverSprite as additional css
|
|
75
|
+
childCheckboxStyles(theme),
|
|
76
|
+
]);
|
|
77
|
+
/**
|
|
78
|
+
* A standalone checkbox. For several checkboxes together, use the `CheckboxChoiceField` component.
|
|
79
|
+
*/
|
|
80
|
+
const Checkbox = ({ label, value, name, checked, onChange, className, disabled = false, }) => {
|
|
81
|
+
return (React.createElement(Container, { className: className }, label ? (React.createElement("label", null,
|
|
82
|
+
React.createElement("input", { type: "checkbox", name: name, value: value, checked: checked, onChange: onChange, disabled: disabled }),
|
|
83
|
+
React.createElement("span", { className: "checkbox-label" }, label))) : (React.createElement("input", { type: "checkbox", name: name, value: value, checked: checked, onChange: onChange, disabled: disabled }))));
|
|
84
|
+
};
|
|
85
|
+
exports.Checkbox = Checkbox;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { Checkbox } from "./Checkbox";
|
|
3
|
+
declare const meta: Meta<typeof Checkbox>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Checkbox>;
|
|
6
|
+
export declare const Simple: Story;
|
|
7
|
+
export declare const WithLabel: Story;
|
|
8
|
+
export declare const Disabled: Story;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Disabled = exports.WithLabel = exports.Simple = void 0;
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const Checkbox_1 = require("./Checkbox");
|
|
7
|
+
const StateWrapper = (props) => {
|
|
8
|
+
const [checked, setChecked] = (0, react_1.useState)(!!props.checked);
|
|
9
|
+
const handleChange = (event) => {
|
|
10
|
+
var _a;
|
|
11
|
+
setChecked(event.target.checked);
|
|
12
|
+
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, event);
|
|
13
|
+
};
|
|
14
|
+
return React.createElement(Checkbox_1.Checkbox, Object.assign({}, props, { checked: checked, onChange: handleChange }));
|
|
15
|
+
};
|
|
16
|
+
const meta = {
|
|
17
|
+
title: "smoot-design/Checkbox",
|
|
18
|
+
component: Checkbox_1.Checkbox,
|
|
19
|
+
render: (args) => React.createElement(StateWrapper, Object.assign({}, args)),
|
|
20
|
+
};
|
|
21
|
+
exports.default = meta;
|
|
22
|
+
exports.Simple = {};
|
|
23
|
+
exports.WithLabel = {
|
|
24
|
+
args: {
|
|
25
|
+
label: "Checkbox",
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
exports.Disabled = {
|
|
29
|
+
args: {
|
|
30
|
+
label: "Disabled",
|
|
31
|
+
disabled: true,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { CheckboxProps } from "../Checkbox/Checkbox";
|
|
3
|
+
type CheckboxChoice = Omit<CheckboxProps, "name" | "onChange" | "checked"> & {
|
|
4
|
+
value: string;
|
|
5
|
+
};
|
|
6
|
+
export type CheckboxChoiceFieldProps = {
|
|
7
|
+
label?: React.ReactNode;
|
|
8
|
+
value?: string[];
|
|
9
|
+
name?: string;
|
|
10
|
+
choices: CheckboxChoice[];
|
|
11
|
+
values?: string[];
|
|
12
|
+
onChange?: (event: React.ChangeEvent<HTMLInputElement>, values: string[]) => void;
|
|
13
|
+
className?: string;
|
|
14
|
+
vertical?: boolean;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Checkboxes grouped together as a fieldset with a label.
|
|
19
|
+
*/
|
|
20
|
+
declare const CheckboxChoiceField: React.FC<CheckboxChoiceFieldProps>;
|
|
21
|
+
export { CheckboxChoiceField };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CheckboxChoiceField = void 0;
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const Checkbox_1 = require("../Checkbox/Checkbox");
|
|
6
|
+
const FormControl_1 = require("@mui/material/FormControl");
|
|
7
|
+
const FormLabel_1 = require("@mui/material/FormLabel");
|
|
8
|
+
const styled_1 = require("@emotion/styled");
|
|
9
|
+
const Container = styled_1.default.div(({ theme }) => ({
|
|
10
|
+
display: "flex",
|
|
11
|
+
gap: "32px",
|
|
12
|
+
flexDirection: "row",
|
|
13
|
+
[theme.breakpoints.down("md")]: {
|
|
14
|
+
flexDirection: "column",
|
|
15
|
+
},
|
|
16
|
+
}));
|
|
17
|
+
const VerticalContainer = (0, styled_1.default)(Container)({
|
|
18
|
+
gap: "18px",
|
|
19
|
+
flexDirection: "column",
|
|
20
|
+
});
|
|
21
|
+
const Label = (0, styled_1.default)(FormLabel_1.default)(({ theme }) => (Object.assign({ marginTop: "0", marginBottom: "16px", width: "100%", color: theme.custom.colors.darkGray2 }, theme.typography.subtitle2))); // https://mui.com/material-ui/guides/typescript/?srsltid=AfmBOoo9kvRiALbxt4kAarRGiKaiJ7tbui5tstoL23DYscJPyk6UaTul#complications-with-the-component-prop
|
|
22
|
+
/**
|
|
23
|
+
* Checkboxes grouped together as a fieldset with a label.
|
|
24
|
+
*/
|
|
25
|
+
const CheckboxChoiceField = ({ label, name, choices, values, onChange, className, vertical = false, disabled = false, }) => {
|
|
26
|
+
const isChecked = (value) => {
|
|
27
|
+
if (values === undefined)
|
|
28
|
+
return undefined;
|
|
29
|
+
return values.includes(value);
|
|
30
|
+
};
|
|
31
|
+
const _Container = vertical ? VerticalContainer : Container;
|
|
32
|
+
const handleChange = (event) => {
|
|
33
|
+
const fieldset = event.target.closest("fieldset");
|
|
34
|
+
const checked = (fieldset === null || fieldset === void 0 ? void 0 : fieldset.querySelectorAll("input[type='checkbox']:checked")) || [];
|
|
35
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(event, Array.from(checked).map((input) => input.value));
|
|
36
|
+
};
|
|
37
|
+
return (React.createElement(FormControl_1.default, { component: "fieldset", sx: { width: "100%" }, className: className, disabled: disabled },
|
|
38
|
+
label && React.createElement(Label, { component: "legend" }, label),
|
|
39
|
+
React.createElement(_Container, null, choices.map((choice) => {
|
|
40
|
+
return (React.createElement(Checkbox_1.Checkbox, Object.assign({ key: choice.value, name: name, checked: isChecked(choice.value), onChange: handleChange, disabled: disabled }, choice)));
|
|
41
|
+
}))));
|
|
42
|
+
};
|
|
43
|
+
exports.CheckboxChoiceField = CheckboxChoiceField;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { CheckboxChoiceField } from "./CheckboxChoiceField";
|
|
3
|
+
declare const meta: Meta<typeof CheckboxChoiceField>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof CheckboxChoiceField>;
|
|
6
|
+
export declare const WithoutLabel: Story;
|
|
7
|
+
export declare const WithLabel: Story;
|
|
8
|
+
export declare const Disabled: Story;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Disabled = exports.WithLabel = exports.WithoutLabel = void 0;
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const CheckboxChoiceField_1 = require("./CheckboxChoiceField");
|
|
6
|
+
const Typography_1 = require("@mui/material/Typography");
|
|
7
|
+
const test_1 = require("@storybook/test");
|
|
8
|
+
const CHOICES = [
|
|
9
|
+
{ label: "Choice 1", value: "1" },
|
|
10
|
+
{ label: "Choice 2", value: "2" },
|
|
11
|
+
{ label: "Choice 3", value: "3", disabled: true },
|
|
12
|
+
{ label: "Choice 4", value: "4" },
|
|
13
|
+
];
|
|
14
|
+
const StateWrapper = (props) => {
|
|
15
|
+
var _a;
|
|
16
|
+
const [values, setValues] = React.useState((_a = props.value) !== null && _a !== void 0 ? _a : []);
|
|
17
|
+
const handleChange = (event, values) => {
|
|
18
|
+
(0, test_1.fn)()(event, values);
|
|
19
|
+
setValues(values);
|
|
20
|
+
};
|
|
21
|
+
return (React.createElement(React.Fragment, null,
|
|
22
|
+
React.createElement(CheckboxChoiceField_1.CheckboxChoiceField, Object.assign({}, props, { values: values, onChange: handleChange })),
|
|
23
|
+
React.createElement("br", null),
|
|
24
|
+
React.createElement("br", null),
|
|
25
|
+
React.createElement(Typography_1.default, { variant: "body1" },
|
|
26
|
+
"Selected: ", values === null || values === void 0 ? void 0 :
|
|
27
|
+
values.join(", "))));
|
|
28
|
+
};
|
|
29
|
+
const meta = {
|
|
30
|
+
title: "smoot-design/CheckboxChoiceField",
|
|
31
|
+
component: CheckboxChoiceField_1.CheckboxChoiceField,
|
|
32
|
+
render: (args) => React.createElement(StateWrapper, Object.assign({}, args)),
|
|
33
|
+
args: {
|
|
34
|
+
choices: CHOICES,
|
|
35
|
+
name: "checkbox-group",
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
exports.default = meta;
|
|
39
|
+
exports.WithoutLabel = {};
|
|
40
|
+
exports.WithLabel = {
|
|
41
|
+
args: {
|
|
42
|
+
label: "CheckboxChoiceField",
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
exports.Disabled = {
|
|
46
|
+
args: {
|
|
47
|
+
label: "CheckboxChoiceField disabled",
|
|
48
|
+
disabled: true,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const React = require("react");
|
|
13
|
+
const react_1 = require("@testing-library/react");
|
|
14
|
+
const user_event_1 = require("@testing-library/user-event");
|
|
15
|
+
const CheckboxChoiceField_1 = require("./CheckboxChoiceField");
|
|
16
|
+
const ThemeProvider_1 = require("../ThemeProvider/ThemeProvider");
|
|
17
|
+
describe("CheckboxChoiceField (Controlled)", () => {
|
|
18
|
+
// Test scenarios where a `values` prop is provided.
|
|
19
|
+
it("should call onChange with correct arguments when a checkbox is clicked", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
const handleChange = jest.fn();
|
|
21
|
+
const choices = [
|
|
22
|
+
{ label: "Option 1", value: "1" },
|
|
23
|
+
{ label: "Option 2", value: "2" },
|
|
24
|
+
{ label: "Option 3", value: "3" },
|
|
25
|
+
];
|
|
26
|
+
(0, react_1.render)(React.createElement(CheckboxChoiceField_1.CheckboxChoiceField, { name: "test-group", choices: choices, values: ["2"], onChange: handleChange }), { wrapper: ThemeProvider_1.ThemeProvider });
|
|
27
|
+
const checkbox3 = react_1.screen.getByRole("checkbox", { name: "Option 3" });
|
|
28
|
+
yield user_event_1.default.click(checkbox3);
|
|
29
|
+
expect(handleChange).toHaveBeenCalledTimes(1);
|
|
30
|
+
expect(handleChange).toHaveBeenCalledWith(expect.objectContaining({ target: checkbox3 }), ["2", "3"]);
|
|
31
|
+
}));
|
|
32
|
+
});
|
|
33
|
+
describe("CheckboxChoiceField (Uncontrolled)", () => {
|
|
34
|
+
// Test scenarios where a `values` prop is not provided.
|
|
35
|
+
it("should call onChange with correct arguments when a checkbox is clicked", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
36
|
+
const handleChange = jest.fn();
|
|
37
|
+
const choices = [
|
|
38
|
+
{ label: "Option 1", value: "1" },
|
|
39
|
+
{ label: "Option 2", value: "2" },
|
|
40
|
+
{ label: "Option 3", value: "3" },
|
|
41
|
+
];
|
|
42
|
+
(0, react_1.render)(React.createElement(CheckboxChoiceField_1.CheckboxChoiceField, { name: "test-group", choices: choices, onChange: handleChange }), { wrapper: ThemeProvider_1.ThemeProvider });
|
|
43
|
+
const checkbox2 = react_1.screen.getByRole("checkbox", { name: "Option 2" });
|
|
44
|
+
yield user_event_1.default.click(checkbox2);
|
|
45
|
+
expect(handleChange).toHaveBeenCalledTimes(1);
|
|
46
|
+
expect(handleChange).toHaveBeenCalledWith(expect.objectContaining({ target: checkbox2 }), ["2"]);
|
|
47
|
+
const checkbox3 = react_1.screen.getByRole("checkbox", { name: "Option 3" });
|
|
48
|
+
yield user_event_1.default.click(checkbox3);
|
|
49
|
+
expect(handleChange).toHaveBeenCalledTimes(2);
|
|
50
|
+
expect(handleChange).toHaveBeenCalledWith(expect.objectContaining({ target: checkbox3 }), ["2", "3"]);
|
|
51
|
+
}));
|
|
52
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* ImageAdapterPropsOverrides can be used with module augmentation to provide
|
|
4
|
+
* extra props to ButtonLink.
|
|
5
|
+
*
|
|
6
|
+
* For example, in a NextJS App, you might set `next/image` as your default
|
|
7
|
+
* image implementation, and use ImageAdapterPropsOverrides to provide
|
|
8
|
+
* `next/image`-specific props.
|
|
9
|
+
*/
|
|
10
|
+
interface ImageAdapterPropsOverrides {
|
|
11
|
+
}
|
|
12
|
+
type ImageAdapterProps = React.ComponentProps<"img"> & {
|
|
13
|
+
Component?: React.ElementType;
|
|
14
|
+
} & ImageAdapterPropsOverrides;
|
|
15
|
+
/**
|
|
16
|
+
* Overridable Image component.
|
|
17
|
+
* - If `Component` is provided, renders as `Component`
|
|
18
|
+
* - else, if `theme.custom.ImageAdapter` is provided, renders as `theme.custom.ImageAdapter`
|
|
19
|
+
* - else, renders as `img` tag
|
|
20
|
+
*/
|
|
21
|
+
declare const ImageAdapter: React.ForwardRefExoticComponent<Omit<ImageAdapterProps, "ref"> & React.RefAttributes<HTMLImageElement>>;
|
|
22
|
+
export { ImageAdapter };
|
|
23
|
+
export type { ImageAdapterPropsOverrides, ImageAdapterProps };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.ImageAdapter = void 0;
|
|
15
|
+
const React = require("react");
|
|
16
|
+
const react_1 = require("@emotion/react");
|
|
17
|
+
/**
|
|
18
|
+
* Overridable Image component.
|
|
19
|
+
* - If `Component` is provided, renders as `Component`
|
|
20
|
+
* - else, if `theme.custom.ImageAdapter` is provided, renders as `theme.custom.ImageAdapter`
|
|
21
|
+
* - else, renders as `img` tag
|
|
22
|
+
*/
|
|
23
|
+
const ImageAdapter = React.forwardRef(function ImageAdapter(_a, ref) {
|
|
24
|
+
var _b;
|
|
25
|
+
var { Component } = _a, props = __rest(_a, ["Component"]);
|
|
26
|
+
const theme = (0, react_1.useTheme)();
|
|
27
|
+
const ImgComponent = (_b = Component !== null && Component !== void 0 ? Component : theme.custom.ImgAdapter) !== null && _b !== void 0 ? _b : "img";
|
|
28
|
+
return React.createElement(ImgComponent, Object.assign({ ref: ref }, props));
|
|
29
|
+
});
|
|
30
|
+
exports.ImageAdapter = ImageAdapter;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { InputBaseProps } from "@mui/material/InputBase";
|
|
3
|
+
import type { Theme } from "@mui/material/styles";
|
|
4
|
+
type Size = "small" | "medium" | "large" | "chat" | "hero";
|
|
5
|
+
type CustomInputProps = {
|
|
6
|
+
/**
|
|
7
|
+
* If true, the input will display one size smaller at mobile breakpoint.
|
|
8
|
+
*/
|
|
9
|
+
responsive?: boolean;
|
|
10
|
+
};
|
|
11
|
+
type MuiDocOverride = {
|
|
12
|
+
size?: Size;
|
|
13
|
+
/**
|
|
14
|
+
* Slot for icon adornments.
|
|
15
|
+
*
|
|
16
|
+
* If the icon is a button, use `AdornmentButton` component.
|
|
17
|
+
*/
|
|
18
|
+
startAdornment?: React.ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* Slot for icon adornments.
|
|
21
|
+
*
|
|
22
|
+
* If the icon is a button, use `AdornmentButton` component.
|
|
23
|
+
*/
|
|
24
|
+
endAdornment?: React.ReactNode;
|
|
25
|
+
};
|
|
26
|
+
type InputProps = CustomInputProps & MuiDocOverride & Omit<InputBaseProps, "color" | keyof MuiDocOverride>;
|
|
27
|
+
/**
|
|
28
|
+
* Base styles for Input and Select components. Includes border, color, hover effects.
|
|
29
|
+
*/
|
|
30
|
+
declare const baseInputStyles: (theme: Theme) => {
|
|
31
|
+
backgroundColor: string;
|
|
32
|
+
color: string;
|
|
33
|
+
borderColor: string;
|
|
34
|
+
borderWidth: string;
|
|
35
|
+
borderStyle: string;
|
|
36
|
+
borderRadius: string;
|
|
37
|
+
overflow: string;
|
|
38
|
+
"&.Mui-disabled": {
|
|
39
|
+
backgroundColor: string;
|
|
40
|
+
};
|
|
41
|
+
"&:hover:not(.Mui-disabled):not(.Mui-focused)": {
|
|
42
|
+
borderColor: string;
|
|
43
|
+
};
|
|
44
|
+
"&.Mui-focused": {
|
|
45
|
+
/**
|
|
46
|
+
* When change border width, it affects either the elements outside of it or
|
|
47
|
+
* inside based on the border-box setting.
|
|
48
|
+
*
|
|
49
|
+
* Instead of changing the border width, we hide the border and change width
|
|
50
|
+
* using outline.
|
|
51
|
+
*/
|
|
52
|
+
borderColor: string;
|
|
53
|
+
outline: string;
|
|
54
|
+
outlineOffset: string;
|
|
55
|
+
};
|
|
56
|
+
"&.Mui-error": {
|
|
57
|
+
borderColor: string;
|
|
58
|
+
outlineColor: string;
|
|
59
|
+
};
|
|
60
|
+
"& input::placeholder, textarea::placeholder": {
|
|
61
|
+
color: string;
|
|
62
|
+
opacity: number;
|
|
63
|
+
};
|
|
64
|
+
"& input:placeholder-shown, textarea:placeholder-shown": {
|
|
65
|
+
textOverflow: string;
|
|
66
|
+
};
|
|
67
|
+
"& textarea": {
|
|
68
|
+
paddingTop: string;
|
|
69
|
+
paddingBottom: string;
|
|
70
|
+
};
|
|
71
|
+
"&.MuiInputBase-adornedStart": {
|
|
72
|
+
paddingLeft: string;
|
|
73
|
+
input: {
|
|
74
|
+
paddingLeft: string;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
"&.MuiInputBase-adornedEnd": {
|
|
78
|
+
paddingRight: string;
|
|
79
|
+
input: {
|
|
80
|
+
paddingRight: string;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Use `Input` for a visually unlabelled input field. If used, it should still
|
|
86
|
+
* have an accessible label, e.g., provided via `aria-label`.
|
|
87
|
+
* For a labeled input field, use `TextField`. instead.
|
|
88
|
+
*
|
|
89
|
+
* **Note:** This component is a styled version of MUI's `InputBase`. See
|
|
90
|
+
* MUI's documentation for full info.
|
|
91
|
+
*
|
|
92
|
+
* - [Smoot Design Input Documentation](https://mitodl.github.io/smoot-design/?path=/docs/smoot-design-input--docs)
|
|
93
|
+
* - [InputBase Documentation](https://mui.com/api/input-base/)
|
|
94
|
+
*/
|
|
95
|
+
declare const Input: React.FC<InputProps>;
|
|
96
|
+
declare const AdornmentButtonStyled: import("@emotion/styled").StyledComponent<{
|
|
97
|
+
theme?: import("@emotion/react").Theme;
|
|
98
|
+
as?: React.ElementType;
|
|
99
|
+
}, React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
100
|
+
type AdornmentButtonProps = React.ComponentProps<typeof AdornmentButtonStyled>;
|
|
101
|
+
/**
|
|
102
|
+
* Button to be used with `startAdornment` and `endAdornment` props on Input and
|
|
103
|
+
* TextField components. AdornmentButton takes care of positioning and other
|
|
104
|
+
* styling concerns.
|
|
105
|
+
*
|
|
106
|
+
* NOTES:
|
|
107
|
+
* - It is generally expected that the content of the AdornmentButton is a
|
|
108
|
+
* Remix Icon component. https://remixicon.com/
|
|
109
|
+
* - By default, the AdornmentButton calls `preventDefault` on `mouseDown`
|
|
110
|
+
* events. This prevents the button from stealing focus from the input on
|
|
111
|
+
* click. The button is still focusable via keyboard events. You can override
|
|
112
|
+
* this behavior by passing your own `onMouseDown` handler.
|
|
113
|
+
*/
|
|
114
|
+
declare const AdornmentButton: React.FC<AdornmentButtonProps>;
|
|
115
|
+
export { AdornmentButton, Input, baseInputStyles };
|
|
116
|
+
export type { InputProps, AdornmentButtonProps };
|