mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-05 13:02:54 +00:00
feat: add about config
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
// tslint:disable-next-line:no-implicit-dependencies
|
||||
import {Polygon} from 'geojson';
|
||||
import {SCTranslations} from '../general/i18n';
|
||||
import {SCMap} from '../general/map';
|
||||
import {SCLanguageSetting, SCSetting, SCUserGroupSetting} from '../things/setting';
|
||||
|
||||
/**
|
||||
@@ -80,6 +81,13 @@ export interface SCAppConfigurationMenuCategory {
|
||||
* An app configuration
|
||||
*/
|
||||
export interface SCAppConfiguration {
|
||||
/**
|
||||
* The about page
|
||||
*
|
||||
* Mapping route -> page config
|
||||
*/
|
||||
aboutPages: SCMap<SCAboutPage>;
|
||||
|
||||
/**
|
||||
* Polygon that encapsulates the main campus
|
||||
*/
|
||||
@@ -174,3 +182,147 @@ export interface SCAppConfigurationMenuCategoryTranslationName {
|
||||
*/
|
||||
name: string;
|
||||
}
|
||||
|
||||
export enum SCAboutPageContentType {
|
||||
SECTION = 'section',
|
||||
ROUTER_LINK = 'router link',
|
||||
TABLE = 'table',
|
||||
MARKDOWN = 'markdown',
|
||||
}
|
||||
|
||||
export interface SCAboutPageTranslationTitle {
|
||||
/**
|
||||
* Translation of the title
|
||||
*/
|
||||
title: string;
|
||||
}
|
||||
|
||||
export interface SCAboutPageTranslationValue {
|
||||
/**
|
||||
* Translation of the value
|
||||
*/
|
||||
value: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* A (mostly) self-contained section, akin to markdown `# Title`
|
||||
*/
|
||||
export interface SCAboutPageSection {
|
||||
/**
|
||||
* If the section should be contained in a card
|
||||
*/
|
||||
card?: true;
|
||||
|
||||
/**
|
||||
* The content of the section
|
||||
*/
|
||||
content: SCAboutPageContent;
|
||||
|
||||
/**
|
||||
* The title of the section
|
||||
*/
|
||||
title: string;
|
||||
|
||||
/**
|
||||
* Translations
|
||||
*/
|
||||
translations: SCTranslations<SCAboutPageTranslationTitle>;
|
||||
|
||||
/**
|
||||
* Type
|
||||
*/
|
||||
type: SCAboutPageContentType.SECTION;
|
||||
}
|
||||
|
||||
/**
|
||||
* A router link that can lead to a new page
|
||||
*
|
||||
* For external links, prefer markdown `[destination](link)`
|
||||
*/
|
||||
export interface SCAboutPageRouterLink {
|
||||
/**
|
||||
* Icon of the destination
|
||||
*/
|
||||
icon?: string;
|
||||
|
||||
/**
|
||||
* Router link
|
||||
*/
|
||||
link: string;
|
||||
|
||||
/**
|
||||
* Title of the destination
|
||||
*/
|
||||
title: string;
|
||||
|
||||
/**
|
||||
* Translations
|
||||
*/
|
||||
translations: SCTranslations<SCAboutPageTranslationTitle>;
|
||||
|
||||
/**
|
||||
* Type
|
||||
*/
|
||||
type: SCAboutPageContentType.ROUTER_LINK;
|
||||
}
|
||||
|
||||
/**
|
||||
* A simple table element
|
||||
*/
|
||||
export interface SCAboutPageTable {
|
||||
/**
|
||||
* Rows of the table
|
||||
*/
|
||||
rows: SCAboutPageContent[][];
|
||||
|
||||
/**
|
||||
* Type
|
||||
*/
|
||||
type: SCAboutPageContentType.TABLE;
|
||||
}
|
||||
|
||||
/**
|
||||
* A markdown element
|
||||
*/
|
||||
export interface SCAboutPageMarkdown {
|
||||
/**
|
||||
* Translations
|
||||
*/
|
||||
translations: SCTranslations<SCAboutPageTranslationValue>;
|
||||
|
||||
/**
|
||||
* Type
|
||||
*/
|
||||
type: SCAboutPageContentType.MARKDOWN;
|
||||
|
||||
/**
|
||||
* Value (Markdown)
|
||||
*/
|
||||
value: string;
|
||||
}
|
||||
|
||||
export type SCAboutPageContent =
|
||||
| SCAboutPageMarkdown
|
||||
| SCAboutPageTable
|
||||
| SCAboutPageSection
|
||||
| SCAboutPageRouterLink;
|
||||
|
||||
/**
|
||||
* Root of the about page
|
||||
*/
|
||||
export interface SCAboutPage {
|
||||
/**
|
||||
* Content of the page
|
||||
*/
|
||||
content: SCAboutPageContent[];
|
||||
|
||||
/**
|
||||
* Header (title) of the page
|
||||
*/
|
||||
title: string;
|
||||
|
||||
/**
|
||||
* Translations
|
||||
*/
|
||||
translations: SCTranslations<SCAboutPageTranslationTitle>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user