Compare commits

...

30 Commits

Author SHA1 Message Date
d12147716d 1.0.74 2024-06-27 12:20:10 +02:00
363cf32325 fix(core): Updated font loading strategy in index.html for improved performance 2024-06-27 12:20:09 +02:00
7e704483d0 1.0.73 2024-06-26 20:30:22 +02:00
ee54e62eab fix(documentation): Update project description and keywords in package.json and npmextra.json. Refactored documentation in readme.md. 2024-06-26 20:30:22 +02:00
3eeb971188 1.0.72 2024-06-26 20:28:10 +02:00
d2243d2376 fix(core): Fixed incorrect import paths and updated configurations for package publication. 2024-06-26 20:28:09 +02:00
94685bf46e 1.0.71 2023-01-05 13:38:10 +01:00
96ebe6b42d fix(core): update 2023-01-05 13:38:10 +01:00
f51a5cef57 1.0.70 2023-01-05 13:37:29 +01:00
d69a7f530b fix(core): update 2023-01-05 13:37:28 +01:00
484741e052 1.0.69 2022-03-24 18:38:09 +01:00
45ea020ec8 fix(core): update 2022-03-24 18:38:08 +01:00
efdde110a0 1.0.68 2022-03-24 16:10:03 +01:00
134dd0414f fix(core): update 2022-03-24 16:10:03 +01:00
53e3ba4672 1.0.67 2022-03-24 16:07:15 +01:00
609e176aab fix(core): update 2022-03-24 16:07:15 +01:00
617a3f307c 1.0.66 2021-09-27 14:53:41 +02:00
a577418132 fix(core): update 2021-09-27 14:53:41 +02:00
c969da7362 1.0.65 2021-09-27 13:11:35 +02:00
fd6427da1e fix(core): update 2021-09-27 13:11:34 +02:00
ad178bfec3 1.0.64 2021-09-27 02:49:49 +02:00
22db7a50de fix(core): update 2021-09-27 02:49:49 +02:00
f010f1e32b 1.0.63 2021-09-27 02:40:49 +02:00
1e24a6a671 fix(core): update 2021-09-27 02:40:49 +02:00
69583a90ad 1.0.62 2021-09-27 00:49:30 +02:00
efb2e53e0c fix(core): update 2021-09-27 00:49:30 +02:00
fe38765d2f 1.0.61 2021-09-27 00:45:18 +02:00
1903687a46 fix(core): update 2021-09-27 00:45:17 +02:00
78811a2879 1.0.60 2021-09-24 13:53:07 +02:00
b6eef831c6 fix(core): update 2021-09-24 13:53:07 +02:00
26 changed files with 5423 additions and 11820 deletions

View File

@ -1,143 +0,0 @@
# gitzone ci_default_private
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
cache:
paths:
- .npmci_cache/
key: '$CI_BUILD_STAGE'
stages:
- security
- test
- release
- metadata
# ====================
# security stage
# ====================
mirror:
stage: security
script:
- npmci git mirror
only:
- tags
tags:
- lossless
- docker
- notpriv
auditProductionDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --production --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=prod --production
tags:
- lossless
- docker
auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=dev
tags:
- lossless
- docker
allow_failure: true
# ====================
# test stage
# ====================
testStable:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- lossless
- docker
- notpriv
testBuild:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- lossless
- docker
- notpriv
release:
stage: release
script:
- npmci node install stable
- npmci npm publish
only:
- tags
tags:
- lossless
- docker
- notpriv
# ====================
# metadata stage
# ====================
codequality:
stage: metadata
allow_failure: true
only:
- tags
script:
- npmci command npm install -g tslint typescript
- npmci npm prepare
- npmci npm install
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
tags:
- lossless
- docker
- priv
trigger:
stage: metadata
script:
- npmci trigger
only:
- tags
tags:
- lossless
- docker
- notpriv
pages:
stage: metadata
script:
- npmci node install lts
- npmci command npm install -g @gitzone/tsdoc
- npmci npm prepare
- npmci npm install
- npmci command tsdoc
tags:
- lossless
- docker
- notpriv
only:
- tags
artifacts:
expire_in: 1 week
paths:
- public
allow_failure: true

24
.vscode/launch.json vendored
View File

@ -2,28 +2,10 @@
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"name": "current file", "command": "npm test",
"type": "node", "name": "Run npm test",
"request": "launch", "request": "launch",
"args": [ "type": "node-terminal"
"${relativeFile}"
],
"runtimeArgs": ["-r", "@gitzone/tsrun"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"internalConsoleOptions": "openOnSessionStart"
},
{
"name": "test.ts",
"type": "node",
"request": "launch",
"args": [
"test/test.ts"
],
"runtimeArgs": ["-r", "@gitzone/tsrun"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"internalConsoleOptions": "openOnSessionStart"
} }
] ]
} }

58
changelog.md Normal file
View File

@ -0,0 +1,58 @@
# Changelog
## 2024-06-27 - 1.0.74 - fix(core)
Updated font loading strategy in index.html for improved performance
- Replaced multiple font loading links with a single assetbroker link.
- Removed redundant preconnect and stylesheet links for fonts.
## 2024-06-26 - 1.0.73 - fix(documentation)
Update project description and keywords in package.json and npmextra.json. Refactored documentation in readme.md.
- Updated project description and keywords within package.json and npmextra.json to ensure alignment.
- Enhanced readme.md with detailed setup, installation and usage instructions including examples for importing and using components.
## 2024-06-26 - 1.0.72 - fix(core)
Fixed incorrect import paths and updated configurations for package publication.
- Fixed import paths for various dependencies in TypeScript files.
- Updated npm package name and scope in package.json.
- Deleted .gitlab-ci.yml file.
- Adjusted tsconfig.json for ESModule compatibility.
- Adjusted npmextra.json for correct repository and license information.
- Updated documentation links in readme.md.
## 2023-01-05 - 1.0.69 to 1.0.71 - core
Multiple updates.
- fix(core): update
## 2022-03-24 - 1.0.67 to 1.0.69 - core
Multiple updates.
- fix(core): update
## 2021-09-27 - 1.0.60 to 1.0.66 - core
Multiple updates.
- fix(core): update
## 2021-09-24 - 1.0.59 to 1.0.60 - core
Fixes and updates.
- fix(core): update
## 2021-09-23 - 1.0.58 to 1.0.59 - core
Fixes and updates.
- fix(core): update
## 2020-11-29 - 1.0.57 to 1.0.58 - core
Fixes and updates.
- fix(core): update
## 2020-09-19 - 1.0.55 to 1.0.57 - core
Fixes and updates.
- fix(core): update

View File

@ -1,5 +1,5 @@
<!--gitzone element--> <!--gitzone element-->
<!-- made by Lossless GmbH --> <!-- made by Task Venture Capital GmbH -->
<!-- checkout https://maintainedby.lossless.com for awesome OpenSource projects --> <!-- checkout https://maintainedby.lossless.com for awesome OpenSource projects -->
<html lang="en"> <html lang="en">
<head> <head>
@ -10,6 +10,10 @@
/> />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--Lets load standard fonts-->
<link rel="preconnect" href="https://assetbroker.lossless.one/" crossorigin>
<link rel="stylesheet" href="https://assetbroker.lossless.one/fonts/fonts.css">
<style> <style>
body { body {
margin: 0px; margin: 0px;
@ -17,7 +21,7 @@
} }
</style> </style>
<script src="./index.ts"></script> <script type="module" src="/bundle.js"></script>
</head> </head>
<body> <body>
</body> </body>

View File

@ -1,10 +1,10 @@
// dees tools // dees tools
import * as deesWccTools from '@designestate/dees-wcctools'; import * as deesWccTools from '@design.estate/dees-wcctools';
import * as deesDomTools from '@designestate/dees-domtools'; import * as deesDomTools from '@design.estate/dees-domtools';
// elements and pages // elements and pages
import * as elements from '../ts_web/elements'; import * as elements from '../ts_web/elements/index.js';
import * as pages from '../ts_web/pages'; import * as pages from '../ts_web/pages/index.js';
deesWccTools.setupWccTools(elements as any, pages); deesWccTools.setupWccTools(elements as any, pages);
deesDomTools.elementBasic.setup(); deesDomTools.elementBasic.setup();

View File

@ -2,17 +2,32 @@
"gitzone": { "gitzone": {
"projectType": "wcc", "projectType": "wcc",
"module": { "module": {
"githost": "gitlab.com", "githost": "code.foss.global",
"gitscope": "uptimelink/private", "gitscope": "uptime.link",
"gitrepo": "catalog", "gitrepo": "statuspage",
"shortDescription": "a catalog with webcomponents for uptimelink dashboard", "description": "A catalog of web components for the UptimeLink dashboard.",
"npmPackagename": "@uptimelink_private/catalog", "npmPackagename": "@uptime.link/statuspage",
"license": "UNLICENSED", "license": "MIT",
"projectDomain": "uptime.link" "projectDomain": "uptime.link",
"keywords": [
"web components",
"uptimelink",
"dashboard",
"status monitoring",
"typescript",
"incidents",
"status",
"performance",
"uptime",
"frontend",
"UI",
"catalog"
]
} }
}, },
"npmci": { "npmci": {
"npmGlobalTools": [], "npmGlobalTools": [],
"npmAccessLevel": "private" "npmAccessLevel": "private",
"npmRegistryUrl": "verdaccio.lossless.one"
} }
} }

11448
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,33 +1,33 @@
{ {
"name": "@uptimelink_private/catalog", "name": "@uptime.link/statuspage",
"version": "1.0.59", "version": "1.0.74",
"private": false, "private": false,
"description": "a catalog with webcomponents for uptimelink dashboard", "description": "A catalog of web components for the UptimeLink dashboard.",
"main": "dist_ts_web/index.js", "main": "dist_ts_web/index.js",
"typings": "dist_ts_web/index.d.ts", "typings": "dist_ts_web/index.d.ts",
"type": "module",
"scripts": { "scripts": {
"test": "npm run build", "test": "npm run build",
"build": "tsbuild element && tsbundle element --production", "build": "tsbuild tsfolders --allowimplicitany && tsbundle element --production",
"watch": "tswatch element" "watch": "tswatch element",
"buildDocs": "tsdoc"
}, },
"author": "Lossless GmbH", "author": "Lossless GmbH",
"license": "UNLICENSED", "license": "UNLICENSED",
"dependencies": { "dependencies": {
"@designestate/dees-domtools": "^1.0.85", "@design.estate/dees-domtools": "^2.0.1",
"@designestate/dees-element": "^1.0.10", "@design.estate/dees-element": "^2.0.4",
"@designestate/dees-wcctools": "^1.0.54", "@design.estate/dees-wcctools": "^1.0.73",
"@gitzone/tsrun": "^1.2.12", "@uptime.link/interfaces": "^2.0.21"
"@losslessone_private/loint-pubapi": "^1.0.10",
"@pushrocks/smartexpress": "^3.0.100",
"typescript": "^4.2.3"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.24", "@git.zone/tsbuild": "^2.1.61",
"@gitzone/tsbundle": "^1.0.80", "@git.zone/tsbundle": "^2.0.7",
"@gitzone/tswatch": "^1.0.52", "@git.zone/tsrun": "^1.2.39",
"@pushrocks/projectinfo": "^4.0.5", "@git.zone/tswatch": "^2.0.5",
"tslint": "^6.1.3", "@push.rocks/projectinfo": "^5.0.1",
"tslint-config-prettier": "^1.17.0" "@push.rocks/smartenv": "^5.0.0",
"@types/node": "^18.11.18"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",
@ -43,5 +43,19 @@
], ],
"browserslist": [ "browserslist": [
"last 1 Chrome versions" "last 1 Chrome versions"
],
"keywords": [
"web components",
"uptimelink",
"dashboard",
"status monitoring",
"typescript",
"incidents",
"status",
"performance",
"uptime",
"frontend",
"UI",
"catalog"
] ]
} }

4741
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

0
readme.hints.md Normal file
View File

221
readme.md
View File

@ -1,34 +1,205 @@
# @uptimelink/private/catalog # @uptime.link/statuspage
a catalog with webcomponents for uptimelink dashboard a catalog with webcomponents for uptimelink dashboard
## Availabililty and Links ## Install
* [npmjs.org (npm package)](https://www.npmjs.com/package/@uptimelink_private/catalog)
* [gitlab.com (source)](https://gitlab.com/uptimelink/private/catalog)
* [github.com (source mirror)](https://github.com/uptimelink/private/catalog)
* [docs (typedoc)](https://uptimelink/private.gitlab.io/catalog/)
## Status for master To install the `@uptime.link/statuspage` module, you can use npm. Make sure you have Node.js and npm installed, then run:
Status Category | Status Badge ```sh
-- | -- npm install @uptime.link/statuspage
GitLab Pipelines | [![pipeline status](https://gitlab.com/uptimelink/private/catalog/badges/master/pipeline.svg)](https://lossless.cloud) ```
GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/uptimelink/private/catalog/badges/master/coverage.svg)](https://lossless.cloud)
npm | [![npm downloads per month](https://badgen.net/npm/dy/@uptimelink_private/catalog)](https://lossless.cloud)
Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/uptimelink/private/catalog)](https://lossless.cloud)
TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud)
node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud)
PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@uptimelink_private/catalog)](https://lossless.cloud)
PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@uptimelink_private/catalog)](https://lossless.cloud)
BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@uptimelink_private/catalog)](https://lossless.cloud)
Platform support | [![Supports Windows 10](https://badgen.net/badge/supports%20Windows%2010/yes/green?icon=windows)](https://lossless.cloud) [![Supports Mac OS X](https://badgen.net/badge/supports%20Mac%20OS%20X/yes/green?icon=apple)](https://lossless.cloud)
## Usage ## Usage
Use TypeScript for best in class intellisense The `@uptime.link/statuspage` module provides a collection of web components to build a comprehensive status page for Uptime.link dashboards. This includes headers, status bars, asset selectors, status details, incident lists, and more.
For further information read the linked docs at the top of this readme.
> UNLICENSED licensed | **&copy;** [Lossless GmbH](https://lossless.gmbh) Heres a detailed guide on how to use each component in your TypeScript project with ESM syntax. We will walk through creating a complete status page using the provided components.
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
[![repo-footer](https://lossless.gitlab.io/publicrelations/repofooter.svg)](https://maintainedby.lossless.com) ### Step-by-Step Example
1. **Setup Your Project:**
Ensure you have a TypeScript project setup. Here's a minimal `tsconfig.json` to get started:
```json
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "node",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true
}
}
```
2. **Import Components:**
Create an `index.ts` file, and import the components you need:
```typescript
import './elements/index.js';
import { page1 } from './pages/index.js';
```
3. **Creating a Status Page:**
Here, we'll create a simple status page using the imported components. We'll create individual components like headers, status bars, footers, etc., and combine them into a single page.
### UplStatuspageHeader
```typescript
import { UplStatuspageHeader } from './elements/upl-statuspage-header.js';
const header: UplStatuspageHeader = document.createElement('upl-statuspage-header');
header.pageTitle = "Uptime Link Status Page";
document.body.appendChild(header);
```
### UplStatuspageStatusbar
```typescript
import { UplStatuspageStatusbar } from './elements/upl-statuspage-statusbar.js';
const statusBar: UplStatuspageStatusbar = document.createElement('upl-statuspage-statusbar');
document.body.appendChild(statusBar);
```
### UplStatuspageAssetsselector
```typescript
import { UplStatuspageAssetsselector } from './elements/upl-statuspage-assetsselector.js';
const assetsSelector: UplStatuspageAssetsselector = document.createElement('upl-statuspage-assetsselector');
document.body.appendChild(assetsSelector);
```
### UplStatuspageStatusdetails
```typescript
import { UplStatuspageStatusdetails } from './elements/upl-statuspage-statusdetails.js';
const statusDetails: UplStatuspageStatusdetails = document.createElement('upl-statuspage-statusdetails');
document.body.appendChild(statusDetails);
```
### UplStatuspageStatusmonth
```typescript
import { UplStatuspageStatusmonth } from './elements/upl-statuspage-statusmonth.js';
const statusMonth: UplStatuspageStatusmonth = document.createElement('upl-statuspage-statusmonth');
document.body.appendChild(statusMonth);
```
### UplStatuspageIncidents
```typescript
import { UplStatuspageIncidents } from './elements/upl-statuspage-incidents.js';
import { uplInterfaces } from './plugins.js';
const incidents: UplStatuspageIncidents = document.createElement('upl-statuspage-incidents');
incidents.currentIncidences = [
// Example incident data
{
id: "incident1",
title: "Server Outage",
description: "There was an outage on the main server.",
status: "resolved",
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString()
}
] as uplInterfaces.IIncident[];
incidents.pastIncidences = [
// Example past incident data
{
id: "incident2",
title: "Database Maintenance",
description: "Scheduled maintenance on the database.",
status: "completed",
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString()
}
] as uplInterfaces.IIncident[];
document.body.appendChild(incidents);
```
### UplStatuspageFooter
```typescript
import { UplStatuspageFooter } from './elements/upl-statuspage-footer.js';
const footer: UplStatuspageFooter = document.createElement('upl-statuspage-footer');
footer.legalInfo = "https://example.com/legal";
document.body.appendChild(footer);
```
### Full Example
Heres how you can put it all together to create a full status page:
```typescript
import './elements/index.js';
import { page1 } from './pages/index.js';
import { UplStatuspageHeader } from './elements/upl-statuspage-header.js';
import { UplStatuspageStatusbar } from './elements/upl-statuspage-statusbar.js';
import { UplStatuspageAssetsselector } from './elements/upl-statuspage-assetsselector.js';
import { UplStatuspageStatusdetails } from './elements/upl-statuspage-statusdetails.js';
import { UplStatuspageStatusmonth } from './elements/upl-statuspage-statusmonth.js';
import { UplStatuspageIncidents } from './elements/upl-statuspage-incidents.js';
import { UplStatuspageFooter } from './elements/upl-statuspage-footer.js';
import { uplInterfaces } from './plugins.js';
const header: UplStatuspageHeader = document.createElement('upl-statuspage-header');
header.pageTitle = "Uptime Link Status Page";
document.body.appendChild(header);
const statusBar: UplStatuspageStatusbar = document.createElement('upl-statuspage-statusbar');
document.body.appendChild(statusBar);
const assetsSelector: UplStatuspageAssetsselector = document.createElement('upl-statuspage-assetsselector');
document.body.appendChild(assetsSelector);
const statusDetails: UplStatuspageStatusdetails = document.createElement('upl-statuspage-statusdetails');
document.body.appendChild(statusDetails);
const statusMonth: UplStatuspageStatusmonth = document.createElement('upl-statuspage-statusmonth');
document.body.appendChild(statusMonth);
const incidents: UplStatuspageIncidents = document.createElement('upl-statuspage-incidents');
incidents.currentIncidences = [
{
id: "incident1",
title: "Server Outage",
description: "There was an outage on the main server.",
status: "resolved",
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString()
}
] as uplInterfaces.IIncident[];
incidents.pastIncidences = [
{
id: "incident2",
title: "Database Maintenance",
description: "Scheduled maintenance on the database.",
status: "completed",
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString()
}
] as uplInterfaces.IIncident[];
document.body.appendChild(incidents);
const footer: UplStatuspageFooter = document.createElement('upl-statuspage-footer');
footer.legalInfo = "https://example.com/legal";
document.body.appendChild(footer);
```
This example uses all the components provided by `@uptime.link/statuspage` to create a functional status page. Modify the data, styles, and structure to suit your requirements.
undefined

View File

@ -0,0 +1,8 @@
/**
* autocreated commitinfo by @push.rocks/commitinfo
*/
export const commitinfo = {
name: '@uptime.link/statuspage',
version: '1.0.74',
description: 'A catalog of web components for the UptimeLink dashboard.'
}

View File

@ -1,5 +1,7 @@
export * from './upl-statuspage-assetsselector'; export * from './upl-statuspage-assetsselector.js';
export * from './upl-statuspage-header'; export * from './upl-statuspage-footer.js';
export * from './upl-statuspage-statusbar'; export * from './upl-statuspage-header.js';
export * from './upl-statuspage-statusdetails'; export * from './upl-statuspage-incidents.js';
export * from './upl-statuspage-statusmonth'; export * from './upl-statuspage-statusbar.js';
export * from './upl-statuspage-statusdetails.js';
export * from './upl-statuspage-statusmonth.js';

View File

@ -1,6 +1,6 @@
import { customElement, DeesElement, html, TemplateResult } from '@designestate/dees-element'; import { customElement, DeesElement, html, type TemplateResult } from '@design.estate/dees-element';
import * as domtools from '@designestate/dees-domtools'; import * as domtools from '@design.estate/dees-domtools';
@customElement('uplinternal-miniheading') @customElement('uplinternal-miniheading')
export class UplinternalMiniheading extends DeesElement { export class UplinternalMiniheading extends DeesElement {
@ -10,7 +10,7 @@ export class UplinternalMiniheading extends DeesElement {
<style> <style>
:host { :host {
display: block; display: block;
font-family: Roboto Mono; font-family: Inter;
} }
h5 { h5 {

View File

@ -3,11 +3,13 @@ import {
property, property,
html, html,
customElement, customElement,
TemplateResult, type TemplateResult,
} from '@designestate/dees-element'; cssManager,
import * as domtools from '@designestate/dees-domtools'; css,
} from '@design.estate/dees-element';
import * as domtools from '@design.estate/dees-domtools';
import './internal/uplinternal-miniheading'; import './internal/uplinternal-miniheading.js';
declare global { declare global {
interface HTMLElementTagNameMap { interface HTMLElementTagNameMap {
@ -25,15 +27,14 @@ export class UplStatuspageAssetsselector extends DeesElement {
super(); super();
} }
public render(): TemplateResult { public static styles = [
return html` cssManager.defaultStyles,
${domtools.elementBasic.styles} css`
<style> :host {
:host {
padding: 0px 0px 15px 0px; padding: 0px 0px 15px 0px;
display: block; display: block;
background: #222222; background: ${cssManager.bdTheme('#eeeeeb', '#222222')};
font-family: Roboto Mono; font-family: Inter;
color: #fff; color: #fff;
} }
@ -43,8 +44,15 @@ export class UplStatuspageAssetsselector extends DeesElement {
text-align: center; text-align: center;
height: 50px; height: 50px;
border-radius: 3px; border-radius: 3px;
background: #404040; background: ${cssManager.bdTheme('#ffffff', '#333333')};;
} }
`,
]
public render(): TemplateResult {
return html`
<style>
</style> </style>
<uplinternal-miniheading>Monitored Assets</uplinternal-miniheading> <uplinternal-miniheading>Monitored Assets</uplinternal-miniheading>
<div class="mainbox"> <div class="mainbox">

View File

@ -0,0 +1,72 @@
import { DeesElement, property, html, customElement, type TemplateResult, css, cssManager } from '@design.estate/dees-element';
import * as domtools from '@design.estate/dees-domtools';
declare global {
interface HTMLElementTagNameMap {
'upl-statuspage-footer': UplStatuspageFooter;
}
}
@customElement('upl-statuspage-footer')
export class UplStatuspageFooter extends DeesElement {
// STATIC
public static demo = () => html`
<upl-statuspage-footer></upl-statuspage-footer>
`;
// INSTANCE
@property()
public legalInfo: string = "https://lossless.gmbh";
@property({
type: Boolean
})
public whitelabel = false;
constructor() {
super();
}
public static styles = [
domtools.elementBasic.staticStyles,
css`
:host {
display: block;
background: ${cssManager.bdTheme('#ffffff', '#000000')};
font-family: Inter;
color: ${cssManager.bdTheme('#333333', '#ffffff')};
}
.mainbox {
max-width: 900px;
margin: auto;
padding-top: 20px;
padding-bottom: 20px;
}
`
]
public render(): TemplateResult {
return html`
${domtools.elementBasic.styles}
<style></style>
<div class="mainbox">
Hi there
</div>
`;
}
public dispatchReportNewIncident() {
this.dispatchEvent(new CustomEvent('reportNewIncident', {
}))
}
public dispatchStatusSubscribe() {
this.dispatchEvent(new CustomEvent('statusSubscribe', {
}))
}
}

View File

@ -1,5 +1,5 @@
import { DeesElement, property, html, customElement, TemplateResult } from '@designestate/dees-element'; import { DeesElement, property, html, customElement, type TemplateResult, css, cssManager } from '@design.estate/dees-element';
import * as domtools from '@designestate/dees-domtools'; import * as domtools from '@design.estate/dees-domtools';
declare global { declare global {
interface HTMLElementTagNameMap { interface HTMLElementTagNameMap {
@ -9,25 +9,28 @@ declare global {
@customElement('upl-statuspage-header') @customElement('upl-statuspage-header')
export class UplStatuspageHeader extends DeesElement { export class UplStatuspageHeader extends DeesElement {
// STATIC
public static demo = () => html` public static demo = () => html`
<upl-statuspage-header></upl-statuspage-header> <upl-statuspage-header></upl-statuspage-header>
`; `;
// INSTANCE
@property()
public pageTitle: string = "Statuspage Title";
constructor() { constructor() {
super(); super();
} }
public render(): TemplateResult { public static styles = [
return html` domtools.elementBasic.staticStyles,
${domtools.elementBasic.styles} css`
<style> :host {
:host {
display: block; display: block;
background: #222222; background: ${cssManager.bdTheme('#eeeeeb', '#222222')};
font-family: Roboto Mono; font-family: Inter;
color: #fff; color: ${cssManager.bdTheme('#333333', '#ffffff')};
} }
.mainbox { .mainbox {
@ -42,9 +45,10 @@ export class UplStatuspageHeader extends DeesElement {
} }
.mainbox .actions .actionButton { .mainbox .actions .actionButton {
background: rgba(255,255,255, 0); background: ${cssManager.bdTheme('#00000000', '#ffffff00')};
font-size: 12px; font-size: 12px;
border: 1px solid #CCC; border: 1px solid ${cssManager.bdTheme('#333', '#CCC')};
padding: 6px 10px 7px 10px; padding: 6px 10px 7px 10px;
margin-left: 10px; margin-left: 10px;
border-radius: 3px; border-radius: 3px;
@ -53,15 +57,15 @@ export class UplStatuspageHeader extends DeesElement {
} }
.mainbox .actions .actionButton:hover { .mainbox .actions .actionButton:hover {
background: #efefef; background: ${cssManager.bdTheme('#333333', '#efefef')};
border: 1px solid #efefef; border: 1px solid ${cssManager.bdTheme('#333333', '#efefef')};
color: #333333; color: ${cssManager.bdTheme('#fff', '#333333')};
} }
h1 { h1 {
margin: 0px; margin: 0px;
text-align: center; text-align: center;
font-weight: 300; font-weight: 600;
font-size: 35px; font-size: 35px;
} }
@ -69,18 +73,38 @@ export class UplStatuspageHeader extends DeesElement {
margin: 0px; margin: 0px;
margin-top: 10px; margin-top: 10px;
text-align: center; text-align: center;
font-weight: 300; font-weight: 600;
font-size: 18px; font-size: 18px;
} }
`
]
public render(): TemplateResult {
return html`
${domtools.elementBasic.styles}
<style>
</style> </style>
<div class="mainbox"> <div class="mainbox">
<div class="actions"> <div class="actions">
<div class="actionButton">report new incident</div> <div class="actionButton" @click=${this.dispatchReportNewIncident}>report new incident</div>
<div class="actionButton">subscribe</div> <div class="actionButton" @click=${this.dispatchStatusSubscribe}>subscribe</div>
</div> </div>
<h1>status.lossless.network</h1> <h1>${this.pageTitle}</h1>
<h2>STATUS BOARD</h2> <h2>STATUS BOARD</h2>
</div> </div>
`; `;
} }
public dispatchReportNewIncident() {
this.dispatchEvent(new CustomEvent('reportNewIncident', {
}))
}
public dispatchStatusSubscribe() {
this.dispatchEvent(new CustomEvent('statusSubscribe', {
}))
}
} }

View File

@ -0,0 +1,90 @@
import * as plugins from '../plugins.js';
import {
DeesElement,
property,
html,
customElement,
type TemplateResult,
css,
cssManager,
} from '@design.estate/dees-element';
declare global {
interface HTMLElementTagNameMap {
'upl-statuspage-incidents': UplStatuspageIncidents;
}
}
@customElement('upl-statuspage-incidents')
export class UplStatuspageIncidents extends DeesElement {
// STATIC
public static demo = () => html` <upl-statuspage-incidents></upl-statuspage-incidents> `;
// INSTANCE
@property({
type: Array,
})
public currentIncidences: plugins.uplInterfaces.data.IIncident[] = [];
@property({
type: Array,
})
public pastIncidences: plugins.uplInterfaces.data.IIncident[] = [];
@property({
type: Boolean,
})
public whitelabel = false;
constructor() {
super();
}
public static styles = [
plugins.domtools.elementBasic.staticStyles,
css`
:host {
display: block;
background: ${cssManager.bdTheme('#eeeeeb', '#222222')};
font-family: Inter;
color: ${cssManager.bdTheme('#333333', '#ffffff')};
}
.mainbox {
max-width: 900px;
margin: auto;
}
.noIncidentBox {
background: ${cssManager.bdTheme('#ffffff', '#333333')};;
padding: 10px;
margin-bottom: 15px;
border-radius: 3px;
}
`,
];
public render(): TemplateResult {
return html`
<style></style>
<div class="mainbox">
<uplinternal-miniheading> Current Incidents </uplinternal-miniheading>
${this.currentIncidences.length
? html``
: html` <div class="noIncidentBox">No incidents ongoing.</div> `}
<uplinternal-miniheading> Past Incidents </uplinternal-miniheading>
${this.pastIncidences.length
? html``
: html` <div class="noIncidentBox">No past incidents in the last 90 days.</div> `}
</div>
`;
}
public dispatchReportNewIncident() {
this.dispatchEvent(new CustomEvent('reportNewIncident', {}));
}
public dispatchStatusSubscribe() {
this.dispatchEvent(new CustomEvent('statusSubscribe', {}));
}
}

View File

@ -1,5 +1,5 @@
import { DeesElement, property, html, customElement, TemplateResult } from '@designestate/dees-element'; import { DeesElement, property, html, customElement, type TemplateResult, cssManager, css } from '@design.estate/dees-element';
import * as domtools from '@designestate/dees-domtools'; import * as domtools from '@design.estate/dees-domtools';
declare global { declare global {
interface HTMLElementTagNameMap { interface HTMLElementTagNameMap {
@ -13,21 +13,18 @@ export class UplStatuspageStatusbar extends DeesElement {
<upl-statuspage-statusbar></upl-statuspage-statusbar> <upl-statuspage-statusbar></upl-statuspage-statusbar>
`; `;
constructor() { constructor() {
super(); super();
} }
public render(): TemplateResult { public static styles = [
return html` cssManager.defaultStyles,
${domtools.elementBasic.styles} css`
<style> :host {
:host {
padding: 20px 0px 15px 0px; padding: 20px 0px 15px 0px;
display: block; display: block;
background: #222222; background: ${cssManager.bdTheme('#eeeeeb', '#222222')};;
font-family: Roboto Mono; font-family: Inter;
color: #fff; color: #fff;
} }
@ -39,8 +36,12 @@ export class UplStatuspageStatusbar extends DeesElement {
line-height: 50px; line-height: 50px;
border-radius: 3px; border-radius: 3px;
} }
`,
]
public render(): TemplateResult {
return html`
<style>
</style> </style>
<div class="mainbox"> <div class="mainbox">
Everything is working normally! Everything is working normally!

View File

@ -1,7 +1,15 @@
import { DeesElement, property, html, customElement, TemplateResult } from '@designestate/dees-element'; import * as plugins from '../plugins.js';
import * as domtools from '@designestate/dees-domtools'; import {
DeesElement,
property,
html,
customElement,
type TemplateResult,
css,
cssManager,
} from '@design.estate/dees-element';
import './internal/uplinternal-miniheading'; import './internal/uplinternal-miniheading.js';
declare global { declare global {
interface HTMLElementTagNameMap { interface HTMLElementTagNameMap {
@ -11,60 +19,62 @@ declare global {
@customElement('upl-statuspage-statusdetails') @customElement('upl-statuspage-statusdetails')
export class UplStatuspageStatusdetails extends DeesElement { export class UplStatuspageStatusdetails extends DeesElement {
public static demo = () => html` public static demo = () => html` <upl-statuspage-statusdetails></upl-statuspage-statusdetails> `;
<upl-statuspage-statusdetails></upl-statuspage-statusdetails>
`;
constructor() { constructor() {
super(); super();
} }
public static styles = [
plugins.domtools.elementBasic.staticStyles,
css`
:host {
position: relative;
padding: 0px 0px 15px 0px;
display: block;
background: ${cssManager.bdTheme('#eeeeeb', '#222222')};;
font-family: Inter;
color: #fff;
}
.mainbox {
margin: auto;
max-width: 900px;
text-align: right;
background: ${cssManager.bdTheme('#ffffff', '#333333')};;
line-height: 50px;
border-radius: 3px;
}
.mainbox .barContainer {
position: relative;
display: flex;
padding: 6px;
overflow: hidden;
}
.mainbox .barContainer .bar {
margin: 4px;
width: 11px;
border-radius: 3px;
height: 40px;
background: #2deb51;
}
.timeIndicator {
position: absolute;
width: 11px;
height: 11px;
background: #FF9800;
top: 56px;
left: 400px;
transform: rotate(45deg);
}
`,
];
public render(): TemplateResult { public render(): TemplateResult {
return html` return html`
${domtools.elementBasic.styles} <style></style>
<style>
:host {
position: relative;
padding: 0px 0px 15px 0px;
display: block;
background: #222222;
font-family: Roboto Mono;
color: #fff;
}
.mainbox {
margin: auto;
max-width: 900px;
text-align: right;
background: #404040;
line-height: 50px;
border-radius: 3px;
}
.mainbox .barContainer {
display: flex;
padding: 10px 6px;
}
.mainbox .barContainer .bar {
margin: 4px;
width: 11px;
border-radius: 3px;
height: 40px;
background: #2DEB51;
}
.timeIndicator {
position: absolute;
width: 11px;
height: 11px;
background: #fff;
top: 90px;
left: 600px;
transform: rotate(45deg);
}
</style>
<uplinternal-miniheading>Yesterday & Today</uplinternal-miniheading> <uplinternal-miniheading>Yesterday & Today</uplinternal-miniheading>
<div class="mainbox"> <div class="mainbox">
<div class="barContainer"> <div class="barContainer">
@ -77,8 +87,8 @@ export class UplStatuspageStatusdetails extends DeesElement {
} }
return returnArray; return returnArray;
})()} })()}
<div class="timeIndicator"></div>
</div> </div>
<div class="timeIndicator"></div>
</div> </div>
`; `;
} }

View File

@ -3,11 +3,13 @@ import {
property, property,
html, html,
customElement, customElement,
TemplateResult, type TemplateResult,
} from '@designestate/dees-element'; css,
import * as domtools from '@designestate/dees-domtools'; cssManager
} from '@design.estate/dees-element';
import * as domtools from '@design.estate/dees-domtools';
import './internal/uplinternal-miniheading'; import './internal/uplinternal-miniheading.js';
declare global { declare global {
interface HTMLElementTagNameMap { interface HTMLElementTagNameMap {
@ -23,16 +25,15 @@ export class UplStatuspageStatusmonth extends DeesElement {
super(); super();
} }
public render(): TemplateResult { public static styles = [
return html` domtools.elementBasic.staticStyles,
${domtools.elementBasic.styles} css`
<style> :host {
:host {
position: relative; position: relative;
padding: 0px 0px 15px 0px; padding: 0px 0px 15px 0px;
display: block; display: block;
background: #222222; background: ${cssManager.bdTheme('#eeeeeb', '#222222')};;
font-family: Roboto Mono; font-family: Inter;
color: #fff; color: #fff;
} }
@ -45,7 +46,7 @@ export class UplStatuspageStatusmonth extends DeesElement {
} }
.statusMonth { .statusMonth {
background: #404040; background: ${cssManager.bdTheme('#ffffff', '#333333')};;
min-height: 20px; min-height: 20px;
display: grid; display: grid;
padding: 10px; padding: 10px;
@ -60,7 +61,12 @@ export class UplStatuspageStatusmonth extends DeesElement {
background: #2deb51; background: #2deb51;
border-radius: 3px; border-radius: 3px;
} }
</style> `
]
public render(): TemplateResult {
return html`
<style></style>
<uplinternal-miniheading>Last 150 days</uplinternal-miniheading> <uplinternal-miniheading>Last 150 days</uplinternal-miniheading>
<div class="mainbox"> <div class="mainbox">
<div class="statusMonth"> <div class="statusMonth">

View File

@ -1 +1 @@
export * from './elements/index'; export * from './elements/index.js';

7
ts_web/plugins.ts Normal file
View File

@ -0,0 +1,7 @@
import * as domtools from '@design.estate/dees-domtools';
import * as uplInterfaces from '@uptime.link/interfaces';
export {
domtools,
uplInterfaces
}

View File

@ -1,16 +0,0 @@
{
"compilerOptions": {
"target": "es2017",
"module": "es2015",
"moduleResolution": "node",
"lib": ["es2017", "dom"],
"declaration": true,
"inlineSources": true,
"inlineSourceMap": true,
"noUnusedLocals": true,
"noFallthroughCasesInSwitch": true,
"outDir": "dist/",
"skipLibCheck": true,
"experimentalDecorators": true
}
}

14
tsconfig.json Normal file
View File

@ -0,0 +1,14 @@
{
"compilerOptions": {
"experimentalDecorators": true,
"useDefineForClassFields": false,
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"esModuleInterop": true,
"verbatimModuleSyntax": true
},
"exclude": [
"dist_*/**/*.d.ts"
]
}

View File

@ -1,17 +0,0 @@
{
"extends": ["tslint:latest", "tslint-config-prettier"],
"rules": {
"semicolon": [true, "always"],
"no-console": false,
"ordered-imports": false,
"object-literal-sort-keys": false,
"member-ordering": {
"options":{
"order": [
"static-method"
]
}
}
},
"defaultSeverity": "warning"
}