diff --git a/docs/api.md b/docs/api.md
index fcba98e..39d6e0f 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -101,4 +101,20 @@ export default props => {
}
```
+## `useTheme` Hook
+
+The `useTheme` hook returns the current [theme](theming.md).
+
+```jsx
+// example
+import React from 'react'
+import { useTheme } from '@mdx-deck/components'
+
+export default props => {
+ const theme = useTheme()
+
+ return
Hello
+}
+```
+
[provider component]: advanced.md#custom-provider-component
diff --git a/packages/components/src/AspectRatioSlide.js b/packages/components/src/AspectRatioSlide.js
index eabc6b7..2a7c71d 100644
--- a/packages/components/src/AspectRatioSlide.js
+++ b/packages/components/src/AspectRatioSlide.js
@@ -1,7 +1,7 @@
import React, { useContext } from 'react'
-import { ThemeContext } from '@emotion/core'
import styled from '@emotion/styled'
import FluidFontSize from './FluidFontSize'
+import useTheme from './useTheme'
const getPadding = ratio =>
ratio > 1 ? (1 / ratio) * 100 + '%' : ratio * 100 + '%'
@@ -36,7 +36,7 @@ const Inner = styled.div(
)
export default props => {
- const theme = useContext(ThemeContext)
+ const theme = useTheme()
if (!theme.aspectRatio) {
return <>{props.children}>
}
diff --git a/packages/components/src/index.js b/packages/components/src/index.js
index a2572d8..5ef846e 100644
--- a/packages/components/src/index.js
+++ b/packages/components/src/index.js
@@ -7,6 +7,7 @@ export { Steps } from './Steps'
export { Appear } from './Appear'
export { withContext, useDeck } from './context'
export { default as useSteps } from './useSteps'
+export { default as useTheme } from './useTheme'
export { Slide } from './Slide'
export { Zoom } from './Zoom'
diff --git a/packages/components/src/useTheme.js b/packages/components/src/useTheme.js
new file mode 100644
index 0000000..b50f02b
--- /dev/null
+++ b/packages/components/src/useTheme.js
@@ -0,0 +1,4 @@
+import { useContext } from 'react'
+import { ThemeContext } from '@emotion/core'
+
+export default () => useContext(ThemeContext)