= React.ComponentClass (Component: React.ComponentClass ): StyledComponentClass => {
+/**
+ * The `styled` function is a High Order Function which is used to apply style `mapping`s on components.
+ *
+ * To be styled, source component class should have static `styledComponentName` property which defines
+ * corresponding component name in `mapping`. (e.g 'Button' for `Button` class).
+ *
+ * Passes following props to `Component` when it is rendered:
+ *
+ * @property {string} appearance - Determines style appearance of component. Default is provided by mapping.
+ * @property {ThemeType} theme - Determines theme used to style component.
+ * @property {StyleType} themedStyle - Determines component style for it's current state.
+ * @property {(interaction: Interaction[]) => void} - Determines function
+ * for dispatching current state of component. This is designed to be used as style request function.
+ * Calls component re-render if style for requested state differ from current.
+ *
+ * @param {React.ComponentClass} Component - Determines class of component to be styled.
+ *
+ * @example Declaring Styled Component
+ *
+ * ```
+ * import {
+ * styled,
+ * StyledComponentProps,
+ * Interaction,
+ * } from '@kitten/theme';
+ *
+ * type StyledButtonProps = ButtonProps & StyledComponentProps;
+ *
+ * class Button extends React.Component (Component: React.ComponentClass ): StyledComponentClass => {
// @ts-ignore
if (!Component.styledComponentName) {
diff --git a/src/framework/theme/theme/themeConsumer.component.tsx b/src/framework/theme/theme/themeConsumer.component.tsx
index f52625ee9..7779dd348 100644
--- a/src/framework/theme/theme/themeConsumer.component.tsx
+++ b/src/framework/theme/theme/themeConsumer.component.tsx
@@ -8,9 +8,9 @@ import React from 'react';
import hoistNonReactStatics from 'hoist-non-react-statics';
import { ThemeContext } from './themeContext';
import {
- ThemeType,
- ThemedStyleType,
StyleSheetType,
+ ThemedStyleType,
+ ThemeType,
} from './type';
interface PrivateProps = React.ComponentClass = React.ComponentClass (Component: React.ComponentClass ,
- createStyles?: CreateStylesFunction): ThemedComponentClass => {
+/**
+ * The `withStyles` function is a High Order Function which is used to create themed style for non-styled component.
+ * Basically used when need to use `theme` variables somewhere.
+ *
+ * Passes following props to `Component` when it is rendered:
+ *
+ * @property {ThemeType} theme - Determines theme used to style component.
+ * @property {StyleType} themedStyle - Determines component style for it's current state.
+ *
+ * @param {React.ComponentClass} Component - Determines class of component to be themed
+ * @param {(theme: ThemeType) => any} createStyles - Determines arrow function used to create styles
+ *
+ * @example Declaring Themed Component
+ *
+ * ```
+ * import {
+ * withStyles,
+ * ThemedComponentProps,
+ * } from '@kitten/theme';
+ *
+ * type ThemedButtonProps = ButtonProps & ThemedComponentProps;
+ *
+ * class Button extends React.Component (Component: React.ComponentClass ,
+ createStyles?: CreateStylesFunction): ThemedComponentClass => {
type WrappingProps = PrivateProps