apphouse
Version:
Component library for React that uses observable state management and theme-able components.
42 lines (36 loc) • 1.08 kB
text/typescript
import React from 'react';
import { AppBase } from '../app/AppBase';
import { Route } from '../app/routing/route.interface';
import { ApphouseTheme } from '../styles/defaults/themes.interface';
import { FeedbackType } from '../models/Feedback';
export interface IApphouseThemeProvider {
theme?: ApphouseTheme;
mode?: 'light' | 'dark' | 'custom' | string;
children?: React.ReactNode;
}
export interface ApphouseContentWrapperProps {
app: AppBase;
children: React.ReactNode;
}
/**
* Interface for the store with base
*/
export type IStoreWithBase<T> = T & {
uuid: string;
app: AppBase;
theme: ApphouseTheme;
path: string;
open: (path?: string, title?: string, callback?: () => void) => void;
openPopup: (popup: JSX.Element) => void;
routes: Route[];
closePopup: (popupId?: string) => void;
alert: (feedback: FeedbackType) => void;
};
export type Routes<T> = (appStore: IStoreWithBase<T>) => {
[key: string]: unknown;
};
export interface IApphouseProvider<T> {
children: React.ReactNode;
store?: IStoreWithBase<T>;
routes?: Routes<T>;
}