diff --git a/UptimeSharp.Website/.editorconfig b/UptimeSharp.Website/.editorconfig new file mode 100644 index 0000000..97626d6 --- /dev/null +++ b/UptimeSharp.Website/.editorconfig @@ -0,0 +1,16 @@ +; This file is for unifying the coding style for different editors and IDEs +; editorconfig.org + +root = true + +; default settings for all files +[**] +end_of_line = crlf ; this is git standard, so it won't convert it anymore +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = false +indent_style = spaces +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.eot b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.eot new file mode 100644 index 0000000..8bf1074 Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.eot differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.otf b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.otf new file mode 100644 index 0000000..d3838af Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.otf differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.svg b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.svg new file mode 100644 index 0000000..394c10a --- /dev/null +++ b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.svg @@ -0,0 +1,2507 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.ttf b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.ttf new file mode 100644 index 0000000..d0a5aaa Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.ttf differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.woff b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.woff new file mode 100644 index 0000000..2f42f54 Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Italic-final.woff differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.eot b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.eot new file mode 100644 index 0000000..e1c18da Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.eot differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.otf b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.otf new file mode 100644 index 0000000..c6caa94 Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.otf differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.svg b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.svg new file mode 100644 index 0000000..177f9a6 --- /dev/null +++ b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.svg @@ -0,0 +1,2069 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.ttf b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.ttf new file mode 100644 index 0000000..7dbd048 Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.ttf differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.woff b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.woff new file mode 100644 index 0000000..c54e81d Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-Regular-final.woff differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.eot b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.eot new file mode 100644 index 0000000..75f0edd Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.eot differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.otf b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.otf new file mode 100644 index 0000000..db473cb Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.otf differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.svg b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.svg new file mode 100644 index 0000000..48ef076 --- /dev/null +++ b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.svg @@ -0,0 +1,2068 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.ttf b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.ttf new file mode 100644 index 0000000..7c7f9c9 Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.ttf differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.woff b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.woff new file mode 100644 index 0000000..afa8fc2 Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiBold-final.woff differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.eot b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.eot new file mode 100644 index 0000000..97fab3c Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.eot differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.otf b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.otf new file mode 100644 index 0000000..6542901 Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.otf differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.svg b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.svg new file mode 100644 index 0000000..2c6e3e9 --- /dev/null +++ b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.svg @@ -0,0 +1,2200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.ttf b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.ttf new file mode 100644 index 0000000..dc2222c Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.ttf differ diff --git a/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.woff b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.woff new file mode 100644 index 0000000..f30ba8e Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/SegoeUI-SemiLight-final.woff differ diff --git a/UptimeSharp.Website/Assets/Fonts/entypo.eot b/UptimeSharp.Website/Assets/Fonts/entypo.eot new file mode 100644 index 0000000..41f223e Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/entypo.eot differ diff --git a/UptimeSharp.Website/Assets/Fonts/entypo.svg b/UptimeSharp.Website/Assets/Fonts/entypo.svg new file mode 100644 index 0000000..86b3b30 --- /dev/null +++ b/UptimeSharp.Website/Assets/Fonts/entypo.svg @@ -0,0 +1,834 @@ + + + + +Created by FontForge 20110222 at Sun Nov 11 15:34:13 2012 + By Vitaly,,, +Copyright (C) 2012 by Daniel Bruce + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/UptimeSharp.Website/Assets/Fonts/entypo.ttf b/UptimeSharp.Website/Assets/Fonts/entypo.ttf new file mode 100644 index 0000000..331ea3a Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/entypo.ttf differ diff --git a/UptimeSharp.Website/Assets/Fonts/entypo.woff b/UptimeSharp.Website/Assets/Fonts/entypo.woff new file mode 100644 index 0000000..b0771de Binary files /dev/null and b/UptimeSharp.Website/Assets/Fonts/entypo.woff differ diff --git a/UptimeSharp.Website/Assets/Images/robot.png b/UptimeSharp.Website/Assets/Images/robot.png new file mode 100644 index 0000000..6aae6ec Binary files /dev/null and b/UptimeSharp.Website/Assets/Images/robot.png differ diff --git a/UptimeSharp.Website/Assets/Images/stripe.png b/UptimeSharp.Website/Assets/Images/stripe.png new file mode 100644 index 0000000..6734198 Binary files /dev/null and b/UptimeSharp.Website/Assets/Images/stripe.png differ diff --git a/UptimeSharp.Website/Assets/Images/uptimesharp.png b/UptimeSharp.Website/Assets/Images/uptimesharp.png new file mode 100644 index 0000000..9d19983 Binary files /dev/null and b/UptimeSharp.Website/Assets/Images/uptimesharp.png differ diff --git a/UptimeSharp.Website/Assets/Javascripts/analytics.js b/UptimeSharp.Website/Assets/Javascripts/analytics.js new file mode 100644 index 0000000..4096dd5 --- /dev/null +++ b/UptimeSharp.Website/Assets/Javascripts/analytics.js @@ -0,0 +1,8 @@ + + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-41313133-2', 'frontendplay.com'); + ga('send', 'pageview'); \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Javascripts/main.js b/UptimeSharp.Website/Assets/Javascripts/main.js new file mode 100644 index 0000000..56a5268 --- /dev/null +++ b/UptimeSharp.Website/Assets/Javascripts/main.js @@ -0,0 +1,59 @@ + + +(function () +{ + var anchors = document.querySelectorAll('.app-nav a'); + + if (window.location.hash.length > 1) + { + console.info(window.location.hash); + changePart.call(document.querySelector('a[data-id="' + window.location.hash.slice(1) + '"]')); + } + + + for (var i = anchors.length - 1; i >= 0; i--) + { + anchors[i].addEventListener('click', changePart, false); + } + + + function changePart(e) + { + + if (e) + { + e.preventDefault(); + } + + if (!this.getAttribute) + { + return; + } + + var id = this.getAttribute('data-id'); + var parts = document.querySelectorAll('div[data-part]'); + var isActive = false; + + for (var i = parts.length - 1; i >= 0; i--) + { + isActive = parts[i].getAttribute("data-part") === id; + + parts[i].style.display = isActive ? "block" : "none"; + + changeActiveClass(this); + } + + window.location.hash = id; + } + + + function changeActiveClass(el) + { + for (var i = anchors.length - 1; i >= 0; i--) + { + anchors[i].classList.remove('is-active'); + } + el.classList.add('is-active'); + } + +})(); \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Javascripts/prism.js b/UptimeSharp.Website/Assets/Javascripts/prism.js new file mode 100644 index 0000000..8929ba1 --- /dev/null +++ b/UptimeSharp.Website/Assets/Javascripts/prism.js @@ -0,0 +1,503 @@ + + +/* ********************************************** + Begin prism-core.js +********************************************** */ + +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * MIT license http://www.opensource.org/licenses/mit-license.php/ + * @author Lea Verou http://lea.verou.me + */ + +(function(){ + +// Private helper vars +var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i; + +var _ = self.Prism = { + util: { + type: function (o) { + return Object.prototype.toString.call(o).match(/\[object (\w+)\]/)[1]; + }, + + // Deep clone a language definition (e.g. to extend it) + clone: function (o) { + var type = _.util.type(o); + + switch (type) { + case 'Object': + var clone = {}; + + for (var key in o) { + if (o.hasOwnProperty(key)) { + clone[key] = _.util.clone(o[key]); + } + } + + return clone; + + case 'Array': + return o.slice(); + } + + return o; + } + }, + + languages: { + extend: function (id, redef) { + var lang = _.util.clone(_.languages[id]); + + for (var key in redef) { + lang[key] = redef[key]; + } + + return lang; + }, + + // Insert a token before another token in a language literal + insertBefore: function (inside, before, insert, root) { + root = root || _.languages; + var grammar = root[inside]; + var ret = {}; + + for (var token in grammar) { + + if (grammar.hasOwnProperty(token)) { + + if (token == before) { + + for (var newToken in insert) { + + if (insert.hasOwnProperty(newToken)) { + ret[newToken] = insert[newToken]; + } + } + } + + ret[token] = grammar[token]; + } + } + + return root[inside] = ret; + }, + + // Traverse a language definition with Depth First Search + DFS: function(o, callback) { + for (var i in o) { + callback.call(o, i, o[i]); + + if (_.util.type(o) === 'Object') { + _.languages.DFS(o[i], callback); + } + } + } + }, + + highlightAll: function(async, callback) { + var elements = document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'); + + for (var i=0, element; element = elements[i++];) { + _.highlightElement(element, async === true, callback); + } + }, + + highlightElement: function(element, async, callback) { + // Find language + var language, grammar, parent = element; + + while (parent && !lang.test(parent.className)) { + parent = parent.parentNode; + } + + if (parent) { + language = (parent.className.match(lang) || [,''])[1]; + grammar = _.languages[language]; + } + + if (!grammar) { + return; + } + + // Set language on the element, if not present + element.className = element.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; + + // Set language on the parent, for styling + parent = element.parentNode; + + if (/pre/i.test(parent.nodeName)) { + parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; + } + + var code = element.textContent; + + if(!code) { + return; + } + + code = code.replace(/&/g, '&').replace(//g, '>').replace(/\u00a0/g, ' '); + //console.time(code.slice(0,50)); + + var env = { + element: element, + language: language, + grammar: grammar, + code: code + }; + + _.hooks.run('before-highlight', env); + + if (async && self.Worker) { + var worker = new Worker(_.filename); + + worker.onmessage = function(evt) { + env.highlightedCode = Token.stringify(JSON.parse(evt.data)); + env.element.innerHTML = env.highlightedCode; + + callback && callback.call(env.element); + //console.timeEnd(code.slice(0,50)); + _.hooks.run('after-highlight', env); + }; + + worker.postMessage(JSON.stringify({ + language: env.language, + code: env.code + })); + } + else { + env.highlightedCode = _.highlight(env.code, env.grammar) + env.element.innerHTML = env.highlightedCode; + + callback && callback.call(element); + + _.hooks.run('after-highlight', env); + //console.timeEnd(code.slice(0,50)); + } + }, + + highlight: function (text, grammar) { + return Token.stringify(_.tokenize(text, grammar)); + }, + + tokenize: function(text, grammar) { + var Token = _.Token; + + var strarr = [text]; + + var rest = grammar.rest; + + if (rest) { + for (var token in rest) { + grammar[token] = rest[token]; + } + + delete grammar.rest; + } + + tokenloop: for (var token in grammar) { + if(!grammar.hasOwnProperty(token) || !grammar[token]) { + continue; + } + + var pattern = grammar[token], + inside = pattern.inside, + lookbehind = !!pattern.lookbehind || 0; + + pattern = pattern.pattern || pattern; + + for (var i=0; i text.length) { + // Something went terribly wrong, ABORT, ABORT! + break tokenloop; + } + + if (str instanceof Token) { + continue; + } + + pattern.lastIndex = 0; + + var match = pattern.exec(str); + if (match) { + if(lookbehind) { + lookbehind = match[1].length; + } + + var from = match.index - 1 + lookbehind, + match = match[0].slice(lookbehind), + len = match.length, + to = from + len, + before = str.slice(0, from + 1), + after = str.slice(to + 1); + + var args = [i, 1]; + + if (before) { + args.push(before); + } + + var wrapped = new Token(token, inside? _.tokenize(match, inside) : match); + + args.push(wrapped); + + if (after) { + args.push(after); + } + + Array.prototype.splice.apply(strarr, args); + } + } + } + + return strarr; + }, + + hooks: { + all: {}, + + add: function (name, callback) { + var hooks = _.hooks.all; + + hooks[name] = hooks[name] || []; + + hooks[name].push(callback); + }, + + run: function (name, env) { + var callbacks = _.hooks.all[name]; + + if (!callbacks || !callbacks.length) { + return; + } + + for (var i=0, callback; callback = callbacks[i++];) { + callback(env); + } + } + } +}; + +var Token = _.Token = function(type, content) { + this.type = type; + this.content = content; +}; + +Token.stringify = function(o) { + if (typeof o == 'string') { + return o; + } + + if (Object.prototype.toString.call(o) == '[object Array]') { + return o.map(Token.stringify).join(''); + } + + var env = { + type: o.type, + content: Token.stringify(o.content), + tag: 'span', + classes: ['token', o.type], + attributes: {} + }; + + if (env.type == 'comment') { + env.attributes['spellcheck'] = 'true'; + } + + _.hooks.run('wrap', env); + + var attributes = ''; + + for (var name in env.attributes) { + attributes += name + '="' + (env.attributes[name] || '') + '"'; + } + + return '<' + env.tag + ' class="' + env.classes.join(' ') + '" ' + attributes + '>' + env.content + ''; + +}; + +if (!self.document) { + // In worker + self.addEventListener('message', function(evt) { + var message = JSON.parse(evt.data), + lang = message.language, + code = message.code; + + self.postMessage(JSON.stringify(_.tokenize(code, _.languages[lang]))); + self.close(); + }, false); + + return; +} + +// Get current script and highlight +var script = document.getElementsByTagName('script'); + +script = script[script.length - 1]; + +if (script) { + _.filename = script.src; + + if (document.addEventListener && !script.hasAttribute('data-manual')) { + document.addEventListener('DOMContentLoaded', _.highlightAll); + } +} + +})(); + +/* ********************************************** + Begin prism-markup.js +********************************************** */ + +Prism.languages.markup = { + 'comment': /<!--[\w\W]*?--(>|>)/g, + 'prolog': /<\?.+?\?>/, + 'doctype': /<!DOCTYPE.+?>/, + 'cdata': /<!\[CDATA\[[\w\W]*?]]>/i, + 'tag': { + pattern: /<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/gi, + inside: { + 'tag': { + pattern: /^<\/?[\w:-]+/i, + inside: { + 'punctuation': /^<\/?/, + 'namespace': /^[\w-]+?:/ + } + }, + 'attr-value': { + pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi, + inside: { + 'punctuation': /=|>|"/g + } + }, + 'punctuation': /\/?>/g, + 'attr-name': { + pattern: /[\w:-]+/g, + inside: { + 'namespace': /^[\w-]+?:/ + } + } + + } + }, + 'entity': /&#?[\da-z]{1,8};/gi +}; + +// Plugin to make entity title show the real entity, idea by Roman Komarov +Prism.hooks.add('wrap', function(env) { + + if (env.type === 'entity') { + env.attributes['title'] = env.content.replace(/&/, '&'); + } +}); + +/* ********************************************** + Begin prism-css.js +********************************************** */ + +Prism.languages.css = { + 'comment': /\/\*[\w\W]*?\*\//g, + 'atrule': /@[\w-]+?(\s+[^;{]+)?(?=\s*{|\s*;)/gi, + 'url': /url\((["']?).*?\1\)/gi, + 'selector': /[^\{\}\s][^\{\}]*(?=\s*\{)/g, + 'property': /(\b|\B)[a-z-]+(?=\s*:)/ig, + 'string': /("|')(\\?.)*?\1/g, + 'important': /\B!important\b/gi, + 'ignore': /&(lt|gt|amp);/gi, + 'punctuation': /[\{\};:]/g +}; + +if (Prism.languages.markup) { + Prism.languages.insertBefore('markup', 'tag', { + 'style': { + pattern: /(<|<)style[\w\W]*?(>|>)[\w\W]*?(<|<)\/style(>|>)/ig, + inside: { + 'tag': { + pattern: /(<|<)style[\w\W]*?(>|>)|(<|<)\/style(>|>)/ig, + inside: Prism.languages.markup.tag.inside + }, + rest: Prism.languages.css + } + } + }); +} + +/* ********************************************** + Begin prism-clike.js +********************************************** */ + +Prism.languages.clike = { + 'comment': { + pattern: /(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/g, + lookbehind: true + }, + 'string': /("|')(\\?.)*?\1/g, + 'keyword': /\b(if|else|while|do|for|return|in|instanceof|function|new|try|catch|finally|null|break|continue)\b/g, + 'boolean': /\b(true|false)\b/g, + 'number': /\b-?(0x)?\d*\.?[\da-f]+\b/g, + 'operator': /[-+]{1,2}|!|=?<|=?>|={1,2}|(&){1,2}|\|?\||\?|\*|\//g, + 'ignore': /&(lt|gt|amp);/gi, + 'punctuation': /[{}[\];(),.:]/g +}; + +/* ********************************************** + Begin prism-javascript.js +********************************************** */ + +Prism.languages.javascript = Prism.languages.extend('clike', { + 'keyword': /\b(var|let|if|else|while|do|for|return|in|instanceof|function|new|with|typeof|try|catch|finally|null|break|continue)\b/g, + 'number': /\b(-?(0x)?\d*\.?[\da-f]+|NaN|-?Infinity)\b/g, +}); + +Prism.languages.insertBefore('javascript', 'keyword', { + 'regex': { + pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g, + lookbehind: true + } +}); + +if (Prism.languages.markup) { + Prism.languages.insertBefore('markup', 'tag', { + 'script': { + pattern: /(<|<)script[\w\W]*?(>|>)[\w\W]*?(<|<)\/script(>|>)/ig, + inside: { + 'tag': { + pattern: /(<|<)script[\w\W]*?(>|>)|(<|<)\/script(>|>)/ig, + inside: Prism.languages.markup.tag.inside + }, + rest: Prism.languages.javascript + } + } + }); +} + +/* ********************************************** + Begin prism-coffeescript.js +********************************************** */ + +Prism.languages.coffeescript = Prism.languages.extend('javascript', { + 'block-comment': /([#]{3}\s*\r?\n(.*\s*\r*\n*)\s*?\r?\n[#]{3})/g, + 'comment': /(\s|^)([#]{1}[^#^\r^\n]{2,}?(\r?\n|$))/g, + 'keyword': /\b(this|window|delete|class|extends|namespace|extend|ar|let|if|else|while|do|for|each|of|return|in|instanceof|new|with|typeof|try|catch|finally|null|undefined|break|continue)\b/g, +}); + +Prism.languages.insertBefore('coffeescript', 'keyword', { + 'function': { + pattern: /[a-z|A-z]+\s*[:|=]\s*(\([.|a-z\s|,|:|{|}|\"|\'|=]*\))?\s*->/gi, + inside: { + 'function-name': /[_?a-z-|A-Z-]+(\s*[:|=])| @[_?$?a-z-|A-Z-]+(\s*)| /g, + 'operator': /[-+]{1,2}|!|=?<|=?>|={1,2}|(&){1,2}|\|?\||\?|\*|\//g + } + }, + + 'class-name': { + pattern: /(class\s+)[a-z-]+[\.a-z]*\s/gi, + lookbehind: true + }, + + 'attr-name': /[_?a-z-|A-Z-]+(\s*:)| @[_?$?a-z-|A-Z-]+(\s*)| /g +}); diff --git a/UptimeSharp.Website/Assets/Stylesheets/Base/_all.scss b/UptimeSharp.Website/Assets/Stylesheets/Base/_all.scss new file mode 100644 index 0000000..30f7eff --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Base/_all.scss @@ -0,0 +1,3 @@ +@import "typography"; + +@import "buttons"; \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Base/_buttons.scss b/UptimeSharp.Website/Assets/Stylesheets/Base/_buttons.scss new file mode 100644 index 0000000..1083c5b --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Base/_buttons.scss @@ -0,0 +1,41 @@ + + +.button, a.button +{ + height: 36px; + line-height: 36px; + padding: 0 15px; + color: white; + text-transform: uppercase; + text-decoration: none; + font-size: 1.1em; + font-weight: 500; + + @extend %inlineBlock; + @extend %shortTransition; + + &:hover + { + background-color: lighten($primaryColor, 5%); + } + + i + { + margin-right: 10px; + } +} + +.big-button, a.big-button +{ + @extend .button; + + height: 50px; + line-height: 50px; + padding: 0 30px; + font-size: 1.3em; + + i + { + margin: 0 20px 0 -10px; + } +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Base/_typography.scss b/UptimeSharp.Website/Assets/Stylesheets/Base/_typography.scss new file mode 100644 index 0000000..1bc9c34 --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Base/_typography.scss @@ -0,0 +1,108 @@ + +// Segoe UI SemiLight +@include fontFace( 'SegoeUI', 'SegoeUI-SemiLight-final', 300, normal ); + + +// Segoe UI Regular +@include fontFace( 'SegoeUI', 'SegoeUI-Regular-final', 400, normal ); + + +// Segoe UI SemiBold +@include fontFace( 'SegoeUI', 'SegoeUI-SemiBold-final', 500, normal ); + + +// Segoe UI Italic +@include fontFace( 'SegoeUI', 'SegoeUI-Italic-final', 400, italic ); + + +// Entypo Icon Font +@include fontFace( 'entypo', 'entypo', 400, normal ); + + +%iconFont +{ + &:before + { + font-family: 'entypo', sans-serif; + font-weight: 400 !important; + font-style: normal !important; + display: inline; + width: auto; + height: auto; + line-height: auto; + vertical-align: baseline; + text-decoration: none; + } +} + +[class*="entypo-"] +{ + @extend %iconFont; +} + + +// default link style +// mainly used for paragraphs +a +{ + color: $primaryColor; + text-decoration: none; + @extend %shortTransition; +} + +.article a +{ + text-decoration: underline; + outline: 1px dotted transparent; + + &:link, &:hover, &:visited + { + outline: 1px dotted transparent; + } + &:hover + { + color: darken($primaryColor, 10%); + } + &:visited + { + color: desaturate($primaryColor, 20%); + } + &:focus + { + outline-color: desaturate($primaryColor, 20%); + } +} +.article +{ + h1, h2 + { + margin-top: 50px; + } + h3, h4 + { + margin-top: 20px; + } + h2 { font-size: 24px; } + h3 { font-size: 20px; } + h4 { font-weight: 500; font-size: 16px; } +} + + +// default style for headlines +h1, h2, h3, h4, h5, h6 +{ + margin: 0; + padding: 0; + font-weight: 300; + color: $textColor; + + i + { + margin-right: 10px; + } +} + +strong, b +{ + font-weight: 700 !important; +} diff --git a/UptimeSharp.Website/Assets/Stylesheets/Config/_all.scss b/UptimeSharp.Website/Assets/Stylesheets/Config/_all.scss new file mode 100644 index 0000000..e0ca2c7 --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Config/_all.scss @@ -0,0 +1,6 @@ + +@import "colors"; + +@import "placeholders"; + +@import "functions"; \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Config/_colors.scss b/UptimeSharp.Website/Assets/Stylesheets/Config/_colors.scss new file mode 100644 index 0000000..a01ceac --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Config/_colors.scss @@ -0,0 +1,12 @@ + +$primaryColor: #019764; + +$darkColor: #151515; + +$lightColor: #f8faf9; + +$midColor: #d9dcdc; + +$textColor: $darkColor; + +$secondaryColor: #f5b64c; \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Config/_functions.scss b/UptimeSharp.Website/Assets/Stylesheets/Config/_functions.scss new file mode 100644 index 0000000..aa3e83c --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Config/_functions.scss @@ -0,0 +1,7 @@ + +$em-base: 16px; + +@function emCalc($pxWidth) +{ + @return $pxWidth / $em-base * 1em; +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Config/_placeholders.scss b/UptimeSharp.Website/Assets/Stylesheets/Config/_placeholders.scss new file mode 100644 index 0000000..b31079c --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Config/_placeholders.scss @@ -0,0 +1,55 @@ + + +%shortTransition +{ + @include transition(all 0.3s ease-in-out); +} + +%antialiased +{ + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +%inlineBlock +{ + display: inline-block; + *display: block; + *zoom: 1; +} + + +%clearfix +{ + *zoom:1; + &:before, &:after + { + content: " "; + display: table; + } + &:after + { + clear: both; + } +} + +%resetLink +{ + &:link, &:hover, &:visited, &:focus + { + outline: 1px dotted transparent; + } + &:visited, &:hover + { + color: inherit; + } +} + + +// positioning +%center +{ + margin: 0 auto; + width: 100%; + position: relative; +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Interface/_all.scss b/UptimeSharp.Website/Assets/Stylesheets/Interface/_all.scss new file mode 100644 index 0000000..ab042bf --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Interface/_all.scss @@ -0,0 +1,4 @@ + +@import "main"; + +@import "side"; \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Interface/_main.scss b/UptimeSharp.Website/Assets/Stylesheets/Interface/_main.scss new file mode 100644 index 0000000..b83fbbf --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Interface/_main.scss @@ -0,0 +1,138 @@ +* +{ + @include box-sizing(border-box); +} + +$screen: "only screen"; +$small: "only screen and (max-width: 767px)"; + +html +{ + height: 100%; +} + +html, body +{ + font-size: 100%; +} + +body +{ + line-height: 1.3; + color: $textColor; + height: 100%; + width: 100%; + position: relative; + font-family: 'Segoe UI', Arial, sans-serif; + font-size: 14px; + background: $lightColor image-url('stripe.png') repeat-x top; + + + -webkit-text-size-adjust: none; + -ms-text-size-adjust: none; +} + +// Get rid of gap under images by making them display: inline-block; by default +img +{ + display: inline-block; + vertical-align: middle; + -ms-interpolation-mode: bicubic; +} + +// Grid Defaults to get images and embeds to work properly +img, object, embed +{ + max-width: 100%; + height: auto; +} + +object, embed +{ + height: 100%; +} + +.center +{ + text-align: center; +} + +.article +{ + color: darken($midColor, 40%); + padding-bottom: 50px; +} + +div[data-part] +{ + display: none; +} +div[data-part="gettingstarted"] +{ + display: block; +} + + +// app area +.app +{ + width: 860px; + max-width: 100%; + margin: 0 auto; + padding: 100px 20px 0; + position: relative; + + @extend %clearfix; + + @media #{$small} + { + padding-top: 40px; + } +} + +.app-main +{ + width: 500px; + max-width: 100%; + float: right; + + @media #{$small} + { + float: none; + } +} + +.app-nav +{ + $height: 50px; + @extend %clearfix; + + margin-bottom: 40px; + + a + { + background: darken($darkColor, 2%); + display: inline-block; + height: $height + 3; + line-height: $height; + padding: 0 15px; + color: white; + float: left; + cursor: pointer; + outline-color: transparent !important; + + &.is-active + { + background: darken($darkColor, 4%); + border-bottom: 3px solid $primaryColor; + } + &:first-child { border-radius: 4px 0 0 4px; } + &:last-child { border-radius: 0 4px 4px 0; } + + @media #{$small} + { + display: block; + float: none; + } + } +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Interface/_side.scss b/UptimeSharp.Website/Assets/Stylesheets/Interface/_side.scss new file mode 100644 index 0000000..7249b03 --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Interface/_side.scss @@ -0,0 +1,65 @@ + + +.app-side +{ + width: 280px; + float: left; + position: fixed; + + h1 + { + //margin-bottom: 10px; + } + + .robot + { + width: 30px; + display: inline-block; + vertical-align: middle; + margin-right: 10px; + } + + @media #{$small} + { + width: 100%; + float: none; + position: relative; + margin-bottom: 30px; + } +} + +.app-description +{ + margin: 10px 0 30px 0; + //color: $midColor; +} + +.app-nuget +{ + code + { + background: darken($lightColor, 4%); + border-radius: 4px; + padding: 10px 20px; + font-size: 12px; + } +} + +.app-social +{ + margin-top: 30px; + + a + { + width: 40px; + height: 40px; + font-size: 2em; + margin-right: 20px; + color: darken($lightColor, 15%); + + &:hover + { + color: $secondaryColor; + } + } +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Mixins/_all.scss b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_all.scss new file mode 100644 index 0000000..dbdb3bd --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_all.scss @@ -0,0 +1,14 @@ + +@import "fontface"; + +@import "icon"; + +@import "svg"; + +@import "respond"; + +@import "triangle"; + +@import "customAnimation"; + +@import "keyframes"; \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Mixins/_customanimation.scss b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_customanimation.scss new file mode 100644 index 0000000..e485b7e --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_customanimation.scss @@ -0,0 +1,9 @@ + +@mixin customAnimation($params) +{ + -webkit-animation: $params; + -moz-animation: $params; + -ms-animation: $params; + -o-animation: $params; + animation: $params; +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Mixins/_fontface.scss b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_fontface.scss new file mode 100644 index 0000000..09413fb --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_fontface.scss @@ -0,0 +1,29 @@ + +@mixin fontFace( $name, $filename, $weight: false, $style: false) +{ + @font-face + { + font-family: quote($name); + + src: font-url("#{$filename}.eot"); + src: font-url("#{$filename}.eot?#iefix") format("embedded-opentype"), + font-url("#{$filename}.woff") format("woff"), + font-url("#{$filename}.ttf") format("truetype"), + font-url('#{$filename}svg#fix') format('svg'); + + @if $weight + { + font-weight: $weight; + } + @if $style + { + font-style: $style; + } + } +} + +@mixin resetFontForFontsCom +{ + font-weight: 400 !important; + font-style: normal !important; +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Mixins/_icon.scss b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_icon.scss new file mode 100644 index 0000000..ea244b3 --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_icon.scss @@ -0,0 +1,11 @@ + +@mixin icon($type) +{ + @extend .entypo-#{$type}; + @extend %iconFont; + + &:before + { + @content; + } +} diff --git a/UptimeSharp.Website/Assets/Stylesheets/Mixins/_keyframes.scss b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_keyframes.scss new file mode 100644 index 0000000..468c1b9 --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_keyframes.scss @@ -0,0 +1,20 @@ + +// originally by bourbon: +// https://github.com/thoughtbot/bourbon/blob/master/app/assets/stylesheets/css3/_keyframes.scss + +// Adds keyframes blocks for supported prefixes, removing redundant prefixes in the block's content +@mixin keyframes($name) +{ + @-webkit-keyframes #{$name} { + @content; + } + @-moz-keyframes #{$name} { + @content; + } + @-o-keyframes #{$name} { + @content; + } + @keyframes #{$name} { + @content; + } +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Mixins/_respond.scss b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_respond.scss new file mode 100644 index 0000000..81693a8 --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_respond.scss @@ -0,0 +1,6 @@ + +@mixin respond($size) +{ + $query: "only screen and (max-width: #{$size})"; + @media #{$query} { @content; } +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Mixins/_svg.scss b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_svg.scss new file mode 100644 index 0000000..f074121 --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_svg.scss @@ -0,0 +1,15 @@ + +// svg with fallback +@mixin svg( $file ) +{ + .inlinesvg & + { + background: url('#{$svgPath}#{$file}.svg') no-repeat 0 0; + + > img + { + opacity: 0; + //visibility: hidden; + } + } +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Mixins/_triangle.scss b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_triangle.scss new file mode 100644 index 0000000..dea127e --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Mixins/_triangle.scss @@ -0,0 +1,34 @@ +@mixin triangle($triangle-size, $triangle-color, $triangle-direction) +{ + &:after + { + content: " "; + display: block; + width: 0; + height: 0; + border: inset $triangle-size; + + @if ($triangle-direction == top) + { + border-color: $triangle-color transparent transparent transparent; + border-top-style: solid; + } + @if ($triangle-direction == bottom) + { + border-color: transparent transparent $triangle-color transparent; + border-bottom-style: solid; + } + @if ($triangle-direction == left) + { + border-color: transparent transparent transparent $triangle-color; + border-left-style: solid; + } + @if ($triangle-direction == right) + { + border-color: transparent $triangle-color transparent transparent; + border-right-style: solid; + } + + @content; + } +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Modules/_all.scss b/UptimeSharp.Website/Assets/Stylesheets/Modules/_all.scss new file mode 100644 index 0000000..e69de29 diff --git a/UptimeSharp.Website/Assets/Stylesheets/Vendor/_all.scss b/UptimeSharp.Website/Assets/Stylesheets/Vendor/_all.scss new file mode 100644 index 0000000..6a4238b --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Vendor/_all.scss @@ -0,0 +1,5 @@ +@import "normalize"; + +@import "entypo"; + +@import "prism"; \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Vendor/_entypo.scss b/UptimeSharp.Website/Assets/Stylesheets/Vendor/_entypo.scss new file mode 100644 index 0000000..39d9257 --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Vendor/_entypo.scss @@ -0,0 +1,852 @@ +//.entypo-note:before { +// content:"\266a" +//} +//.entypo-note-beamed:before { +// content:"\266b" +//} +//.entypo-music:before { +// content:"\1f3b5" +//} +//.entypo-search:before { +// content:"\1f50d" +//} +//.entypo-flashlight:before { +// content:"\1f526" +//} +.entypo-mail:before { + content:"\2709" +} +.entypo-heart:before { + content:"\2665" +} +//.entypo-heart-empty:before { +// content:"\2661" +//} +//.entypo-star:before { +// content:"\2605" +//} +//.entypo-star-empty:before { +// content:"\2606" +//} +//.entypo-user:before { +// content:"\1f464" +//} +//.entypo-users:before { +// content:"\1f465" +//} +//.entypo-user-add:before { +// content:"\e700" +//} +//.entypo-video:before { +// content:"\1f3ac" +//} +//.entypo-picture:before { +// content:"\1f304" +//} +//.entypo-camera:before { +// content:"\1f4f7" +//} +//.entypo-layout:before { +// content:"\268f" +//} +//.entypo-menu:before { +// content:"\2630" +//} +.entypo-check:before { + content:"\2713" +} +.entypo-cancel:before { + content:"\2715" +} +//.entypo-cancel-circled:before { +// content:"\2716" +//} +//.entypo-cancel-squared:before { +// content:"\274e" +//} +//.entypo-plus:before { +// content:"\2b" +//} +//.entypo-plus-circled:before { +// content:"\2795" +//} +//.entypo-plus-squared:before { +// content:"\229e" +//} +//.entypo-minus:before { +// content:"\2d" +//} +//.entypo-minus-circled:before { +// content:"\2796" +//} +//.entypo-minus-squared:before { +// content:"\229f" +//} +//.entypo-help:before { +// content:"\2753" +//} +//.entypo-help-circled:before { +// content:"\e704" +//} +//.entypo-info:before { +// content:"\2139" +//} +//.entypo-info-circled:before { +// content:"\e705" +//} +//.entypo-back:before { +// content:"\1f519" +//} +//.entypo-home:before { +// content:"\2302" +//} +//.entypo-link:before { +// content:"\1f517" +//} +//.entypo-attach:before { +// content:"\1f4ce" +//} +//.entypo-lock:before { +// content:"\1f512" +//} +//.entypo-lock-open:before { +// content:"\1f513" +//} +//.entypo-eye:before { +// content:"\e70a" +//} +//.entypo-tag:before { +// content:"\e70c" +//} +//.entypo-bookmark:before { +// content:"\1f516" +//} +//.entypo-bookmarks:before { +// content:"\1f4d1" +//} +//.entypo-flag:before { +// content:"\2691" +//} +//.entypo-thumbs-up:before { +// content:"\1f44d" +//} +//.entypo-thumbs-down:before { +// content:"\1f44e" +//} +//.entypo-download:before { +// content:"\1f4e5" +//} +//.entypo-upload:before { +// content:"\1f4e4" +//} +//.entypo-upload-cloud:before { +// content:"\e711" +//} +//.entypo-reply:before { +// content:"\e712" +//} +//.entypo-reply-all:before { +// content:"\e713" +//} +//.entypo-forward:before { +// content:"\27a6" +//} +//.entypo-quote:before { +// content:"\275e" +//} +.entypo-code:before { + content:"\e714" +} +//.entypo-export:before { +// content:"\e715" +//} +//.entypo-pencil:before { +// content:"\270e" +//} +//.entypo-feather:before { +// content:"\2712" +//} +//.entypo-print:before { +// content:"\e716" +//} +//.entypo-retweet:before { +// content:"\e717" +//} +//.entypo-keyboard:before { +// content:"\2328" +//} +//.entypo-comment:before { +// content:"\e718" +//} +//.entypo-chat:before { +// content:"\e720" +//} +//.entypo-bell:before { +// content:"\1f514" +//} +//.entypo-attention:before { +// content:"\26a0" +//} +//.entypo-alert:before { +// content:"\1f4a5'" +//} +//.entypo-vcard:before { +// content:"\e722" +//} +//.entypo-address:before { +// content:"\e723" +//} +//.entypo-location:before { +// content:"\e724" +//} +//.entypo-map:before { +// content:"\e727" +//} +//.entypo-direction:before { +// content:"\27a2" +//} +//.entypo-compass:before { +// content:"\e728" +//} +//.entypo-cup:before { +// content:"\2615" +//} +//.entypo-trash:before { +// content:"\e729" +//} +//.entypo-doc:before { +// content:"\e730" +//} +//.entypo-docs:before { +// content:"\e736" +//} +//.entypo-doc-landscape:before { +// content:"\e737" +//} +//.entypo-doc-text:before { +// content:"\1f4c4" +//} +//.entypo-doc-text-inv:before { +// content:"\e731" +//} +//.entypo-newspaper:before { +// content:"\1f4f0" +//} +//.entypo-book-open:before { +// content:"\1f4d6" +//} +//.entypo-book:before { +// content:"\1f4d5" +//} +//.entypo-folder:before { +// content:"\1f4c1" +//} +//.entypo-archive:before { +// content:"\e738" +//} +//.entypo-box:before { +// content:"\1f4e6" +//} +//.entypo-rss:before { +// content:"\e73a" +//} +//.entypo-phone:before { +// content:"\e73a" +//} +//.entypo-cog:before { +// content:"\2699" +//} +//.entypo-tools:before { +// content:"\2692" +//} +//.entypo-share:before { +// content:"\e73c" +//} +//.entypo-shareable:before { +// content:"\e73e" +//} +//.entypo-basket:before { +// content:"\e73d" +//} +//.entypo-bag:before { +// content:"\1f45c'" +//} +//.entypo-calendar:before { +// content:"\1f4c5" +//} +//.entypo-login:before { +// content:"\e740" +//} +//.entypo-logout:before { +// content:"\e741" +//} +//.entypo-mic:before { +// content:"\1f3a4" +//} +//.entypo-mute:before { +// content:"\1f507" +//} +//.entypo-sound:before { +// content:"\1f50a" +//} +//.entypo-volume:before { +// content:"\e742" +//} +//.entypo-clock:before { +// content:"\1f554" +//} +//.entypo-hourglass:before { +// content:"\23f3" +//} +//.entypo-lamp:before { +// content:"\1f4a1" +//} +//.entypo-light-down:before { +// content:"\1f505" +//} +//.entypo-light-up:before { +// content:"\1f506" +//} +//.entypo-adjust:before { +// content:"\25d1" +//} +//.entypo-block:before { +// content:"\1f6ab" +//} +//.entypo-resize-full:before { +// content:"\e744" +//} +//.entypo-resize-small:before { +// content:"\e746" +//} +//.entypo-popup:before { +// content:"\e74c" +//} +//.entypo-publish:before { +// content:"\e74d" +//} +//.entypo-window:before { +// content:"\e74e" +//} +//.entypo-arrow-combo:before { +// content:"\e74f" +//} +//.entypo-down-circled:before { +// content:"\e758" +//} +//.entypo-left-circled:before { +// content:"\e759" +//} +//.entypo-right-circled:before { +// content:"\e75a" +//} +//.entypo-up-circled:before { +// content:"\e75b" +//} +.entypo-down-open:before { + content:"\e75c" +} +//.entypo-left-open:before { +// content:"\e75d" +//} +//.entypo-right-open:before { +// content:"\e75e" +//} +//.entypo-up-open:before { +// content:"\e75f" +//} +//.entypo-down-open-mini:before { +// content:"\e760" +//} +//.entypo-left-open-mini:before { +// content:"\e761" +//} +.entypo-right-open-mini:before { + content:"\e762" +} +//.entypo-up-open-mini:before { +// content:"\e763" +//} +//.entypo-down-open-big:before { +// content:"\e764" +//} +//.entypo-left-open-big:before { +// content:"\e765" +//} +.entypo-right-open-big:before { + content:"\e766" +} +//.entypo-up-open-big:before { +// content:"\e767" +//} +//.entypo-down:before { +// content:"\2b07" +//} +//.entypo-left:before { +// content:"\2b05" +//} +//.entypo-right:before { +// content:"\27a1" +//} +//.entypo-up:before { +// content:"\2b06" +//} +//.entypo-down-dir:before { +// content:"\25be" +//} +//.entypo-left-dir:before { +// content:"\25c2" +//} +//.entypo-right-dir:before { +// content:"\25b8" +//} +//.entypo-up-dir:before { +// content:"\25b4" +//} +//.entypo-down-bold:before { +// content:"\e4b0" +//} +//.entypo-left-bold:before { +// content:"\e4ad" +//} +//.entypo-right-bold:before { +// content:"\e4ae" +//} +//.entypo-up-bold:before { +// content:"\e4af" +//} +//.entypo-down-thin:before { +// content:"\2193" +//} +//.entypo-left-thin:before { +// content:"\2190" +//} +//.entypo-right-thin:before { +// content:"\2192" +//} +//.entypo-up-thin:before { +// content:"\2191" +//} +//.entypo-ccw:before { +// content:"\27f2" +//} +//.entypo-cw:before { +// content:"\27f3" +//} +//.entypo-arrows-ccw:before { +// content:"\1f504" +//} +//.entypo-level-down:before { +// content:"\21b3" +//} +//.entypo-level-up:before { +// content:"\21b0" +//} +//.entypo-shuffle:before { +// content:"\1f500" +//} +//.entypo-loop:before { +// content:"\1f501" +//} +//.entypo-switch:before { +// content:"\21c6" +//} +//.entypo-play:before { +// content:"\25b6" +//} +//.entypo-stop:before { +// content:"\25a0" +//} +//.entypo-pause:before { +// content:"\2389" +//} +//.entypo-record:before { +// content:"\26ab" +//} +//.entypo-to-end:before { +// content:"\23ed" +//} +//.entypo-to-start:before { +// content:"\23ee" +//} +//.entypo-fast-forward:before { +// content:"\23e9" +//} +//.entypo-fast-backward:before { +// content:"\23ea" +//} +//.entypo-progress-0:before { +// content:"\e768" +//} +//.entypo-progress-1:before { +// content:"\e769" +//} +//.entypo-progress-2:before { +// content:"\e76a" +//} +//.entypo-progress-3:before { +// content:"\e76b" +//} +//.entypo-target:before { +// content:"\1f3af" +//} +//.entypo-palette:before { +// content:"\1f3a8" +//} +//.entypo-list:before { +// content:"\e005" +//} +//.entypo-list-add:before { +// content:"\e003" +//} +//.entypo-signal:before { +// content:"\1f4f6" +//} +//.entypo-trophy:before { +// content:"\1f3c6" +//} +//.entypo-battery:before { +// content:"\1f50b" +//} +//.entypo-back-in-time:before { +// content:"\e771" +//} +//.entypo-monitor:before { +// content:"\1f4bb" +//} +//.entypo-mobile:before { +// content:"\1f4f1" +//} +//.entypo-network:before { +// content:"\e776" +//} +//.entypo-cd:before { +// content:"\1f4bf" +//} +//.entypo-inbox:before { +// content:"\e777" +//} +//.entypo-install:before { +// content:"\e778" +//} +//.entypo-globe:before { +// content:"\1f30e" +//} +//.entypo-cloud:before { +// content:"\2601" +//} +//.entypo-cloud-thunder:before { +// content:"\26c8" +//} +//.entypo-flash:before { +// content:"\26a1" +//} +//.entypo-moon:before { +// content:"\263d" +//} +//.entypo-flight:before { +// content:"\2708" +//} +//.entypo-paper-plane:before { +// content:"\e79b" +//} +//.entypo-leaf:before { +// content:"\1f342" +//} +//.entypo-lifebuoy:before { +// content:"\e788" +//} +//.entypo-mouse:before { +// content:"\e789" +//} +//.entypo-briefcase:before { +// content:"\1f4bc" +//} +//.entypo-suitcase:before { +// content:"\e78e" +//} +//.entypo-dot:before { +// content:"\e78b" +//} +//.entypo-dot-2:before { +// content:"\e78c" +//} +//.entypo-dot-3:before { +// content:"\e78d" +//} +//.entypo-brush:before { +// content:"\e79a" +//} +//.entypo-magnet:before { +// content:"\e7a1" +//} +//.entypo-infinity:before { +// content:"\221e" +//} +//.entypo-erase:before { +// content:"\232b" +//} +//.entypo-chart-pie:before { +// content:"\e751" +//} +//.entypo-chart-line:before { +// content:"\1f4c8" +//} +//.entypo-chart-bar:before { +// content:"\1f4ca" +//} +//.entypo-chart-area:before { +// content:"\1f53e" +//} +//.entypo-tape:before { +// content:"\2707" +//} +//.entypo-graduation-cap:before { +// content:"\1f393" +//} +//.entypo-language:before { +// content:"\e752" +//} +//.entypo-ticket:before { +// content:"\1f3ab" +//} +//.entypo-water:before { +// content:"\1f4a6" +//} +//.entypo-droplet:before { +// content:"\1f4a7" +//} +//.entypo-air:before { +// content:"\e753" +//} +//.entypo-credit-card:before { +// content:"\1f4b3" +//} +//.entypo-floppy:before { +// content:"\1f4be" +//} +//.entypo-clipboard:before { +// content:"\1f4cb" +//} +//.entypo-megaphone:before { +// content:"\1f4e3" +//} +//.entypo-database:before { +// content:"\e754" +//} +//.entypo-drive:before { +// content:"\e755" +//} +//.entypo-bucket:before { +// content:"\e756" +//} +//.entypo-thermometer:before { +// content:"\e757" +//} +//.entypo-key:before { +// content:"\1f511" +//} +//.entypo-flow-cascade:before { +// content:"\e790" +//} +//.entypo-flow-branch:before { +// content:"\e791" +//} +//.entypo-flow-tree:before { +// content:"\e792" +//} +//.entypo-flow-line:before { +// content:"\e793" +//} +//.entypo-flow-parallel:before { +// content:"\e794" +//} +//.entypo-rocket:before { +// content:"\1f680" +//} +//.entypo-gauge:before { +// content:"\e7a2" +//} +//.entypo-traffic-cone:before { +// content:"\e7a3" +//} +//.entypo-cc:before { +// content:"\e7a5" +//} +//.entypo-cc-by:before { +// content:"\e7a6" +//} +//.entypo-cc-nc:before { +// content:"\e7a7" +//} +//.entypo-cc-nc-eu:before { +// content:"\e7a8" +//} +//.entypo-cc-nc-jp:before { +// content:"\e7a9" +//} +//.entypo-cc-sa:before { +// content:"\e7aa" +//} +//.entypo-cc-nd:before { +// content:"\e7ab" +//} +//.entypo-cc-pd:before { +// content:"\e7ac" +//} +//.entypo-cc-zero:before { +// content:"\e7ad" +//} +//.entypo-cc-share:before { +// content:"\e7ae" +//} +//.entypo-cc-remix:before { +// content:"\e7af" +//} +.entypo-github:before { + content:"\f300" +} +//.entypo-github-circled:before { +// content:"\f301" +//} +//.entypo-flickr:before { +// content:"\f303" +//} +//.entypo-flickr-circled:before { +// content:"\f304" +//} +.entypo-vimeo:before { + content:"\f306" +} +//.entypo-vimeo-circled:before { +// content:"\f307" +//} +.entypo-twitter:before { + content:"\f309" +} +//.entypo-twitter-circled:before { +// content:"\f30a" +//} +.entypo-facebook:before { + content:"\f30c" +} +//.entypo-facebook-circled:before { +// content:"\f30d" +//} +//.entypo-facebook-squared:before { +// content:"\f30e" +//} +//.entypo-gplus:before { +// content:"\f30f" +//} +//.entypo-gplus-circled:before { +// content:"\f310" +//} +//.entypo-pinterest:before { +// content:"\f312" +//} +//.entypo-pinterest-circled:before { +// content:"\f313" +//} +//.entypo-tumblr:before { +// content:"\f315" +//} +//.entypo-tumblr-circled:before { +// content:"\f316" +//} +//.entypo-linkedin:before { +// content:"\f318" +//} +//.entypo-linkedin-circled:before { +// content:"\f319" +//} +//.entypo-dribbble:before { +// content:"\f31b" +//} +//.entypo-dribbble-circled:before { +// content:"\f31c" +//} +//.entypo-stumbleupon:before { +// content:"\f31e" +//} +//.entypo-stumbleupon-circled:before { +// content:"\f31f" +//} +//.entypo-lastfm:before { +// content:"\f321" +//} +//.entypo-lastfm-circled:before { +// content:"\f322" +//} +//.entypo-rdio:before { +// content:"\f324" +//} +//.entypo-rdio-circled:before { +// content:"\f325" +//} +//.entypo-spotify:before { +// content:"\f327" +//} +//.entypo-spotify-circled:before { +// content:"\f328" +//} +//.entypo-qq:before { +// content:"\f32a" +//} +//.entypo-instagrem:before { +// content:"\f32d" +//} +//.entypo-dropbox:before { +// content:"\f330" +//} +//.entypo-evernote:before { +// content:"\f333" +//} +//.entypo-flattr:before { +// content:"\f336" +//} +//.entypo-skype:before { +// content:"\f339" +//} +//.entypo-skype-circled:before { +// content:"\f33a" +//} +//.entypo-renren:before { +// content:"\f33c" +//} +//.entypo-sina-weibo:before { +// content:"\f33f" +//} +//.entypo-paypal:before { +// content:"\f342" +//} +//.entypo-picasa:before { +// content:"\f345" +//} +//.entypo-soundcloud:before { +// content:"\f348" +//} +//.entypo-mixi:before { +// content:"\f34b" +//} +//.entypo-behance:before { +// content:"\f34e" +//} +//.entypo-google-circles:before { +// content:"\f351" +//} +//.entypo-vkontakte:before { +// content:"\f354" +//} +//.entypo-smashing:before { +// content:"\f357" +//} +//.entypo-sweden:before { +// content:"\f601" +//} +//.entypo-db-shape:before { +// content:"\f600" +//} +//.entypo-logo-db:before { +// content:"\f603" +//} diff --git a/UptimeSharp.Website/Assets/Stylesheets/Vendor/_normalize.scss b/UptimeSharp.Website/Assets/Stylesheets/Vendor/_normalize.scss new file mode 100644 index 0000000..d1e1e2d --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Vendor/_normalize.scss @@ -0,0 +1,394 @@ +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined in IE 8/9. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +/** + * Correct `inline-block` display not defined in IE 8/9. + */ + +audio, +canvas, +video { + display: inline-block; +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/** + * Address `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari 5, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Correct font family set oddly in Safari 5 and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +/** + * Improve readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre-wrap; +} + +/** + * Set consistent quote types. + */ + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9. + */ + +img { + border: 0; +} + +/** + * Correct overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari 5. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * 1. Correct font family not being inherited in all browsers. + * 2. Correct font size not being inherited in all browsers. + * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. + */ + +button, +input, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * 1. Address box sizing set to `content-box` in IE 8/9. + * 2. Remove excess padding in IE 8/9. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * 1. Remove default vertical scrollbar in IE 8/9. + * 2. Improve readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/Vendor/_prism.scss b/UptimeSharp.Website/Assets/Stylesheets/Vendor/_prism.scss new file mode 100644 index 0000000..6580844 --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/Vendor/_prism.scss @@ -0,0 +1,108 @@ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: #151515; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + direction: ltr; + text-align: left; + //white-space: pre; + word-spacing: normal; + white-space: pre-wrap; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + border-radius: 4px; + font-size: 0.9em; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: darken(#f8faf9, 4%); +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number { + color: lighten(#905, 10%); +} + +.token.selector, +.token.attr-name, +.token.string { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #a67f59; +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + + +.token.regex, +.token.important { + color: #e90; +} + +.token.important { + font-weight: bold; +} + +.token.entity { + cursor: help; +} \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/Stylesheets/app.scss b/UptimeSharp.Website/Assets/Stylesheets/app.scss new file mode 100644 index 0000000..7cfcfdd --- /dev/null +++ b/UptimeSharp.Website/Assets/Stylesheets/app.scss @@ -0,0 +1,23 @@ +@charset "UTF-8"; + +// SASS framework +// http://compass-style.org/ +@import "compass"; + +// all vendor styles +@import "Vendor/all"; + +// custom mixins +@import "Mixins/all"; + +// configuration +@import "Config/all"; + +// general styles +@import "Base/all"; + +// this is the main layout +@import "Interface/all"; + +// modules +@import "Modules/all"; \ No newline at end of file diff --git a/UptimeSharp.Website/Assets/entypo.eot b/UptimeSharp.Website/Assets/entypo.eot new file mode 100644 index 0000000..41f223e Binary files /dev/null and b/UptimeSharp.Website/Assets/entypo.eot differ diff --git a/UptimeSharp.Website/Assets/entypo.svg b/UptimeSharp.Website/Assets/entypo.svg new file mode 100644 index 0000000..86b3b30 --- /dev/null +++ b/UptimeSharp.Website/Assets/entypo.svg @@ -0,0 +1,834 @@ + + + + +Created by FontForge 20110222 at Sun Nov 11 15:34:13 2012 + By Vitaly,,, +Copyright (C) 2012 by Daniel Bruce + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/UptimeSharp.Website/Assets/entypo.ttf b/UptimeSharp.Website/Assets/entypo.ttf new file mode 100644 index 0000000..331ea3a Binary files /dev/null and b/UptimeSharp.Website/Assets/entypo.ttf differ diff --git a/UptimeSharp.Website/Assets/entypo.woff b/UptimeSharp.Website/Assets/entypo.woff new file mode 100644 index 0000000..b0771de Binary files /dev/null and b/UptimeSharp.Website/Assets/entypo.woff differ diff --git a/UptimeSharp.Website/Gemfile b/UptimeSharp.Website/Gemfile new file mode 100644 index 0000000..7383b31 --- /dev/null +++ b/UptimeSharp.Website/Gemfile @@ -0,0 +1,5 @@ +source 'http://rubygems.org' + +gem 'sass' +gem 'compass', :require => 'sass' +gem 'zurb-foundation', '3.2.5' \ No newline at end of file diff --git a/UptimeSharp.Website/Gruntfile.js b/UptimeSharp.Website/Gruntfile.js new file mode 100644 index 0000000..d60af47 --- /dev/null +++ b/UptimeSharp.Website/Gruntfile.js @@ -0,0 +1,132 @@ + + +module.exports = function(grunt) +{ + 'use strict'; + + // configuration for grunt + grunt.initConfig({ + + // loads the package configuration file + pkg: grunt.file.readJSON('package.json'), + + + // concatenate files + concat: { + debug: { + src: [ 'Assets/Javascripts/**/*.js' ], + dest: 'Debug/app.js' + } + }, + + + // uglifier options + uglify: { + options: { + banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' + }, + debug: { + src: '<%= concat.debug.src %>', + dest: 'Release/app.js' + } + }, + + + // compile compass files + compass: { + debug: { + options: { + sassDir: 'Assets/Stylesheets', + cssDir: 'Debug', + imagesDir: 'Assets/Images', + fontDir: 'Assets/Fonts', + javascriptsDir: 'Assets/Javascripts', + outputStyle: 'expanded', + environment: 'development', + require: [ + 'zurb-foundation' + ] + } + }, + release: { + options: { + sassDir: 'Assets/Stylesheets', + cssDir: 'Release', + imagesDir: 'Assets/Images', + fontDir: 'Assets/Fonts', + javascriptsDir: 'Assets/Javascripts', + outputStyle: 'compressed', + environment: 'production', + require: [ + 'zurb-foundation' + ] + } + } + }, + + + // hint all the JS files + jshint: { + files: [], + options: { + globals: { + jQuery: true, + console: true, + module: true, + document: true + } + } + }, + + + // image optimization for dist + imagemin: { + release: { + options: { + optimizationLevel: 3 + }, + files: [] + } + }, + + + // watch file changes to automate tasks + watch: { + js: { + files: [ '<%= concat.debug.src %>' ], + tasks: [ 'concat' ] + }, + sass: { + files: [ '<%= compass.debug.options.sassDir %>/**/*.scss' ], + tasks: [ 'compass:debug' ] + } + } + }); + + + // load tasks + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-compass'); + grunt.loadNpmTasks('grunt-contrib-imagemin'); + grunt.loadNpmTasks('grunt-contrib-handlebars'); + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-datauri'); + + + // build task, which generates the development JS + grunt.registerTask('debug', [ + 'concat', + 'compass:debug' + ]); + + // distribution task + grunt.registerTask('release', [ + 'concat', + 'uglify', + 'compass:release' + ]); + +}; diff --git a/UptimeSharp.Website/Release/app.css b/UptimeSharp.Website/Release/app.css new file mode 100644 index 0000000..39f55a4 --- /dev/null +++ b/UptimeSharp.Website/Release/app.css @@ -0,0 +1 @@ +article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:0.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace, serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}.entypo-mail:before{content:"\2709"}.entypo-heart:before{content:"\2665"}.entypo-check:before{content:"\2713"}.entypo-cancel:before{content:"\2715"}.entypo-code:before{content:"\e714"}.entypo-down-open:before{content:"\e75c"}.entypo-right-open-mini:before{content:"\e762"}.entypo-right-open-big:before{content:"\e766"}.entypo-github:before{content:"\f300"}.entypo-vimeo:before{content:"\f306"}.entypo-twitter:before{content:"\f309"}.entypo-facebook:before{content:"\f30c"}code[class*="language-"],pre[class*="language-"]{color:#151515;font-family:Consolas, Monaco, 'Andale Mono', monospace;direction:ltr;text-align:left;word-spacing:normal;white-space:pre-wrap;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;border-radius:4px;font-size:0.9em}@media print{code[class*="language-"],pre[class*="language-"]{text-shadow:none}}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#ecf2ef}:not(pre)>code[class*="language-"]{padding:.1em;border-radius:.3em}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:slategray}.token.punctuation{color:#999}.namespace{opacity:.7}.token.property,.token.tag,.token.boolean,.token.number{color:#cc0071}.token.selector,.token.attr-name,.token.string{color:#690}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#a67f59}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.regex,.token.important{color:#e90}.token.important{font-weight:bold}.token.entity{cursor:help}a,.button,.big-button,a.button{-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;-o-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out}.button,.big-button,a.button{display:inline-block;*display:block;*zoom:1}.app,.app-nav{*zoom:1}.app:before,.app-nav:before,.app:after,.app-nav:after{content:" ";display:table}.app:after,.app-nav:after{clear:both}@font-face{font-family:"SegoeUI";src:url('/Assets/Fonts/SegoeUI-SemiLight-final.eot');src:url('/Assets/Fonts/SegoeUI-SemiLight-final.eot?#iefix') format("embedded-opentype"),url('/Assets/Fonts/SegoeUI-SemiLight-final.woff') format("woff"),url('/Assets/Fonts/SegoeUI-SemiLight-final.ttf') format("truetype"),url('/Assets/Fonts/SegoeUI-SemiLight-finalsvg#fix') format("svg");font-weight:300;font-style:normal}@font-face{font-family:"SegoeUI";src:url('/Assets/Fonts/SegoeUI-Regular-final.eot');src:url('/Assets/Fonts/SegoeUI-Regular-final.eot?#iefix') format("embedded-opentype"),url('/Assets/Fonts/SegoeUI-Regular-final.woff') format("woff"),url('/Assets/Fonts/SegoeUI-Regular-final.ttf') format("truetype"),url('/Assets/Fonts/SegoeUI-Regular-finalsvg#fix') format("svg");font-weight:400;font-style:normal}@font-face{font-family:"SegoeUI";src:url('/Assets/Fonts/SegoeUI-SemiBold-final.eot');src:url('/Assets/Fonts/SegoeUI-SemiBold-final.eot?#iefix') format("embedded-opentype"),url('/Assets/Fonts/SegoeUI-SemiBold-final.woff') format("woff"),url('/Assets/Fonts/SegoeUI-SemiBold-final.ttf') format("truetype"),url('/Assets/Fonts/SegoeUI-SemiBold-finalsvg#fix') format("svg");font-weight:500;font-style:normal}@font-face{font-family:"SegoeUI";src:url('/Assets/Fonts/SegoeUI-Italic-final.eot');src:url('/Assets/Fonts/SegoeUI-Italic-final.eot?#iefix') format("embedded-opentype"),url('/Assets/Fonts/SegoeUI-Italic-final.woff') format("woff"),url('/Assets/Fonts/SegoeUI-Italic-final.ttf') format("truetype"),url('/Assets/Fonts/SegoeUI-Italic-finalsvg#fix') format("svg");font-weight:400;font-style:italic}@font-face{font-family:"entypo";src:url('/Assets/Fonts/entypo.eot');src:url('/Assets/Fonts/entypo.eot?#iefix') format("embedded-opentype"),url('/Assets/Fonts/entypo.woff') format("woff"),url('/Assets/Fonts/entypo.ttf') format("truetype"),url('/Assets/Fonts/entyposvg#fix') format("svg");font-weight:400;font-style:normal}[class*="entypo-"]:before{font-family:'entypo', sans-serif;font-weight:400 !important;font-style:normal !important;display:inline;width:auto;height:auto;line-height:auto;vertical-align:baseline;text-decoration:none}a{color:#019764;text-decoration:none}.article a{text-decoration:underline;outline:1px dotted transparent}.article a:link,.article a:hover,.article a:visited{outline:1px dotted transparent}.article a:hover{color:#016442}.article a:visited{color:#10885f}.article a:focus{outline-color:#10885f}.article h1,.article h2{margin-top:50px}.article h3,.article h4{margin-top:20px}.article h2{font-size:24px}.article h3{font-size:20px}.article h4{font-weight:500;font-size:16px}h1,h2,h3,h4,h5,h6{margin:0;padding:0;font-weight:300;color:#151515}h1 i,h2 i,h3 i,h4 i,h5 i,h6 i{margin-right:10px}strong,b{font-weight:700 !important}.button,.big-button,a.big-button,a.button,a.big-button{height:36px;line-height:36px;padding:0 15px;color:white;text-transform:uppercase;text-decoration:none;font-size:1.1em;font-weight:500}.button:hover,.big-button:hover,a.button:hover,a.big-button:hover{background-color:#01b075}.button i,.big-button i,a.button i,a.big-button i{margin-right:10px}.big-button,a.big-button{height:50px;line-height:50px;padding:0 30px;font-size:1.3em}.big-button i,a.big-button i{margin:0 20px 0 -10px}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{height:100%}html,body{font-size:100%}body{line-height:1.3;color:#151515;height:100%;width:100%;position:relative;font-family:'Segoe UI', Arial, sans-serif;font-size:14px;background:#f8faf9 url('/Assets/Images/stripe.png?1377591693') repeat-x top;-webkit-text-size-adjust:none;-ms-text-size-adjust:none}img{display:inline-block;vertical-align:middle;-ms-interpolation-mode:bicubic}img,object,embed{max-width:100%;height:auto}object,embed{height:100%}.center{text-align:center}.article{color:#707979;padding-bottom:50px}div[data-part]{display:none}div[data-part="gettingstarted"]{display:block}.app{width:860px;max-width:100%;margin:0 auto;padding:100px 20px 0;position:relative}@media only screen and (max-width: 767px){.app{padding-top:40px}}.app-main{width:500px;max-width:100%;float:right}@media only screen and (max-width: 767px){.app-main{float:none}}.app-nav{margin-bottom:40px}.app-nav a{background:#101010;display:inline-block;height:53px;line-height:50px;padding:0 15px;color:white;float:left;cursor:pointer;outline-color:transparent !important}.app-nav a.is-active{background:#0b0b0b;border-bottom:3px solid #019764}.app-nav a:first-child{border-radius:4px 0 0 4px}.app-nav a:last-child{border-radius:0 4px 4px 0}@media only screen and (max-width: 767px){.app-nav a{display:block;float:none}}.app-side{width:280px;float:left;position:fixed}.app-side .robot{width:30px;display:inline-block;vertical-align:middle;margin-right:10px}@media only screen and (max-width: 767px){.app-side{width:100%;float:none;position:relative;margin-bottom:30px}}.app-description{margin:10px 0 30px 0}.app-nuget code{background:#ecf2ef;border-radius:4px;padding:10px 20px;font-size:12px}.app-social{margin-top:30px}.app-social a{width:40px;height:40px;font-size:2em;margin-right:20px;color:#cbdad3}.app-social a:hover{color:#f5b64c} diff --git a/UptimeSharp.Website/Release/app.js b/UptimeSharp.Website/Release/app.js new file mode 100644 index 0000000..d5f492b --- /dev/null +++ b/UptimeSharp.Website/Release/app.js @@ -0,0 +1,2 @@ +/*! wingsforlife 2013-08-27 */ +(function(e,t,a,n,r,i,s){e.GoogleAnalyticsObject=r,e[r]=e[r]||function(){(e[r].q=e[r].q||[]).push(arguments)},e[r].l=1*new Date,i=t.createElement(a),s=t.getElementsByTagName(a)[0],i.async=1,i.src=n,s.parentNode.insertBefore(i,s)})(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-41313133-2","frontendplay.com"),ga("send","pageview"),function(){function e(e){if(e&&e.preventDefault(),this.getAttribute){for(var a=this.getAttribute("data-id"),n=document.querySelectorAll("div[data-part]"),r=!1,i=n.length-1;i>=0;i--)r=n[i].getAttribute("data-part")===a,n[i].style.display=r?"block":"none",t(this);window.location.hash=a}}function t(e){for(var t=a.length-1;t>=0;t--)a[t].classList.remove("is-active");e.classList.add("is-active")}var a=document.querySelectorAll(".app-nav a");window.location.hash.length>1&&(console.info(window.location.hash),e.call(document.querySelector('a[data-id="'+window.location.hash.slice(1)+'"]')));for(var n=a.length-1;n>=0;n--)a[n].addEventListener("click",e,!1)}(),function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){var a=t.util.type(e);switch(a){case"Object":var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=t.util.clone(e[r]));return n;case"Array":return e.slice()}return e}},languages:{extend:function(e,a){var n=t.util.clone(t.languages[e]);for(var r in a)n[r]=a[r];return n},insertBefore:function(e,a,n,r){r=r||t.languages;var i=r[e],s={};for(var l in i)if(i.hasOwnProperty(l)){if(l==a)for(var o in n)n.hasOwnProperty(o)&&(s[o]=n[o]);s[l]=i[l]}return r[e]=s},DFS:function(e,a){for(var n in e)a.call(e,n,e[n]),"Object"===t.util.type(e)&&t.languages.DFS(e[n],a)}},highlightAll:function(e,a){for(var n,r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'),i=0;n=r[i++];)t.highlightElement(n,e===!0,a)},highlightElement:function(n,r,i){for(var s,l,o=n;o&&!e.test(o.className);)o=o.parentNode;if(o&&(s=(o.className.match(e)||[,""])[1],l=t.languages[s]),l){n.className=n.className.replace(e,"").replace(/\s+/g," ")+" language-"+s,o=n.parentNode,/pre/i.test(o.nodeName)&&(o.className=o.className.replace(e,"").replace(/\s+/g," ")+" language-"+s);var g=n.textContent;if(g){g=g.replace(/&/g,"&").replace(//g,">").replace(/\u00a0/g," ");var c={element:n,language:s,grammar:l,code:g};if(t.hooks.run("before-highlight",c),r&&self.Worker){var u=new Worker(t.filename);u.onmessage=function(e){c.highlightedCode=a.stringify(JSON.parse(e.data)),c.element.innerHTML=c.highlightedCode,i&&i.call(c.element),t.hooks.run("after-highlight",c)},u.postMessage(JSON.stringify({language:c.language,code:c.code}))}else c.highlightedCode=t.highlight(c.code,c.grammar),c.element.innerHTML=c.highlightedCode,i&&i.call(n),t.hooks.run("after-highlight",c)}}},highlight:function(e,n){return a.stringify(t.tokenize(e,n))},tokenize:function(e,a){var n=t.Token,r=[e],i=a.rest;if(i){for(var s in i)a[s]=i[s];delete a.rest}e:for(var s in a)if(a.hasOwnProperty(s)&&a[s]){var l=a[s],o=l.inside,g=!!l.lookbehind||0;l=l.pattern||l;for(var c=0;r.length>c;c++){var u=r[c];if(r.length>e.length)break e;if(!(u instanceof n)){l.lastIndex=0;var p=l.exec(u);if(p){g&&(g=p[1].length);var f=p.index-1+g,p=p[0].slice(g),d=p.length,m=f+d,h=u.slice(0,f+1),y=u.slice(m+1),w=[c,1];h&&w.push(h);var v=new n(s,o?t.tokenize(p,o):p);w.push(v),y&&w.push(y),Array.prototype.splice.apply(r,w)}}}}return r},hooks:{all:{},add:function(e,a){var n=t.hooks.all;n[e]=n[e]||[],n[e].push(a)},run:function(e,a){var n=t.hooks.all[e];if(n&&n.length)for(var r,i=0;r=n[i++];)r(a)}}},a=t.Token=function(e,t){this.type=e,this.content=t};if(a.stringify=function(e){if("string"==typeof e)return e;if("[object Array]"==Object.prototype.toString.call(e))return e.map(a.stringify).join("");var n={type:e.type,content:a.stringify(e.content),tag:"span",classes:["token",e.type],attributes:{}};"comment"==n.type&&(n.attributes.spellcheck="true"),t.hooks.run("wrap",n);var r="";for(var i in n.attributes)r+=i+'="'+(n.attributes[i]||"")+'"';return"<"+n.tag+' class="'+n.classes.join(" ")+'" '+r+">"+n.content+""},!self.document)return self.addEventListener("message",function(e){var a=JSON.parse(e.data),n=a.language,r=a.code;self.postMessage(JSON.stringify(t.tokenize(r,t.languages[n]))),self.close()},!1),void 0;var n=document.getElementsByTagName("script");n=n[n.length-1],n&&(t.filename=n.src,document.addEventListener&&!n.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll))}(),Prism.languages.markup={comment:/<!--[\w\W]*?--(>|>)/g,prolog:/<\?.+?\?>/,doctype:/<!DOCTYPE.+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/&#?[\da-z]{1,8};/gi},Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:/@[\w-]+?(\s+[^;{]+)?(?=\s*{|\s*;)/gi,url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\}]*(?=\s*\{)/g,property:/(\b|\B)[a-z-]+(?=\s*:)/gi,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,ignore:/&(lt|gt|amp);/gi,punctuation:/[\{\};:]/g},Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/(<|<)style[\w\W]*?(>|>)[\w\W]*?(<|<)\/style(>|>)/gi,inside:{tag:{pattern:/(<|<)style[\w\W]*?(>|>)|(<|<)\/style(>|>)/gi,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css}}}),Prism.languages.clike={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/g,lookbehind:!0},string:/("|')(\\?.)*?\1/g,keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,number:/\b-?(0x)?\d*\.?[\da-f]+\b/g,operator:/[-+]{1,2}|!|=?<|=?>|={1,2}|(&){1,2}|\|?\||\?|\*|\//g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g},Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(var|let|if|else|while|do|for|return|in|instanceof|function|new|with|typeof|try|catch|finally|null|break|continue)\b/g,number:/\b(-?(0x)?\d*\.?[\da-f]+|NaN|-?Infinity)\b/g}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<|<)script[\w\W]*?(>|>)[\w\W]*?(<|<)\/script(>|>)/gi,inside:{tag:{pattern:/(<|<)script[\w\W]*?(>|>)|(<|<)\/script(>|>)/gi,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}}),Prism.languages.coffeescript=Prism.languages.extend("javascript",{"block-comment":/([#]{3}\s*\r?\n(.*\s*\r*\n*)\s*?\r?\n[#]{3})/g,comment:/(\s|^)([#]{1}[^#^\r^\n]{2,}?(\r?\n|$))/g,keyword:/\b(this|window|delete|class|extends|namespace|extend|ar|let|if|else|while|do|for|each|of|return|in|instanceof|new|with|typeof|try|catch|finally|null|undefined|break|continue)\b/g}),Prism.languages.insertBefore("coffeescript","keyword",{"function":{pattern:/[a-z|A-z]+\s*[:|=]\s*(\([.|a-z\s|,|:|{|}|\"|\'|=]*\))?\s*->/gi,inside:{"function-name":/[_?a-z-|A-Z-]+(\s*[:|=])| @[_?$?a-z-|A-Z-]+(\s*)| /g,operator:/[-+]{1,2}|!|=?<|=?>|={1,2}|(&){1,2}|\|?\||\?|\*|\//g}},"class-name":{pattern:/(class\s+)[a-z-]+[\.a-z]*\s/gi,lookbehind:!0},"attr-name":/[_?a-z-|A-Z-]+(\s*:)| @[_?$?a-z-|A-Z-]+(\s*)| /g}); \ No newline at end of file diff --git a/UptimeSharp.Website/humans.txt b/UptimeSharp.Website/humans.txt new file mode 100644 index 0000000..9294266 --- /dev/null +++ b/UptimeSharp.Website/humans.txt @@ -0,0 +1,2 @@ +This page was created by cee. +http://ceecore.com \ No newline at end of file diff --git a/UptimeSharp.Website/index.html b/UptimeSharp.Website/index.html new file mode 100644 index 0000000..577e57b --- /dev/null +++ b/UptimeSharp.Website/index.html @@ -0,0 +1,229 @@ + + + + + UptimeSharp - C# assembly for accessing the UptimeRobot API + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+ +
+

Getting Started

+

UptimeSharp is a C#.NET class library that integrates the UptimeRobot API.

+

The wrapper consists of 2 parts:

+
    +
  • Get and modify monitors
  • +
  • Get and modify alert contacts
  • +
+

Install using NuGet

+
Install-Package UptimeSharp
+

nuget.org/packages/UptimeSharp

+

Usage Example

+

Get your API Key UptimeRobot (left section under "API Information")

+

Include the UptimeSharp namespace and it's associated models:

+
using UptimeSharp;
+using UptimeSharp.Models;
+

Initialize UptimeClient with:

+
UptimeClient _client = new UptimeClient("[YOUR_API_KEY]");
+

Do a simple request - e.g. get all your monitors:

+
_client.GetMonitors().ForEach(
+    item => Console.WriteLine(item.Name + " | " + item.Type)
+);
+

Which will output:

+
frontendplay | HTTP
+google | Keyword
+localhost | Ping
+...
+
+ +

Constructor

+
UptimeClient(string apiKey)
+

Get your API Key UptimeRobot (left section under "API Information")

+ +

Release History

+
    +
  • 2013-08-26 v0.1.1 Adding a Port monitor works now
  • +
  • 2013-08-25 v0.1.0 Monitor and Alert APIs
  • +
+

Dependencies

+ +

Contributors

+

+ + twitter/artistandsocial   Tobias Klika @ceee +

+

License

+

MIT License

+ +
+ + + +
+ +

Retrieve

+

Get list of all monitors:

+
List<Monitor> items = _client.GetMonitors();
+

Get monitors by ID - or a single monitor:

+
List<Monitor> items = _client.GetMonitors(new int[]{ 12891, 98711 });
+// or
+Monitor item = _client.GetMonitor(12891);
+

Provide additional params for more data:

+
List<Monitor> items = _client.GetMonitors(
+    monitorIDs: new int[]{ 12891, 98711 },
+    customUptimeRatio: new float[] { 7, 30, 45 },
+    showLog: true,
+    showAlerts: true
+);
+

monitorIDs: You can remove this parameter if you want to retrieve all monitors (default: null) +
+customUptimeRatio: the number of days to calculate the uptime ratio(s) for (default: null) +
+showLog: include log, if true (default: false) +
+showAlerts: include alerts, if true (default: true) +

+
+ + +
+ +

Add

+

Adds/creates a new monitor.

+
bool AddMonitor(
+    string name, 
+    string uri, 
+    Type type = Type.HTTP, 
+    Subtype subtype = Subtype.Unknown,
+    int? port = null, 
+    string keywordValue = null, 
+    KeywordType keywordType = KeywordType.Unknown,
+    int[] alerts = null, 
+    string HTTPUsername = null,
+    string HTTPPassword = null
+)
+

Example - Watch an SMTP Server:

+
bool isSuccess = _client.AddMonitor(
+    name: "cee",
+    uri: "127.0.0.1",
+    type: Type.Port,
+    subtype: Subtype.SMTP
+);
+

name: A friendly name for the new monitor +
+uri: The URI or IP to watch +
+type: The type of the monitor (see # Monitor Types) +
+subtype: The subtype of the monitor (only for Type.Port) (see # Monitor Types) +
+port: The port (only for Subtype.Custom) +
+keywordValue: The keyword value (for Type.Keyword) +
+keywordType: Type of the keyword (for Type.Keyword) +
+alerts: An ID list of existing alerts to notify +
+HTTPUsername: The HTTP username +
+HTTPPassword: The HTTP password

+

As you can see, a lot of these parameters are only available if you've specified the correct Type. +
+If you've selected Type.Port for example, UptimeSharp will ignore the keywordValue and keywordType parameters, even if you submitted valid ones.

+ +
+ +
+ +

Modify

+

In order to modify an existing monitor, just alter the properties of the Monitor instance and call the ModifyMonitor method:

+
// Monitor myMonitor = ...
+myMonitor.Name = "my new name :-)";
+bool isSuccess = _client.ModifyMonitor(myMonitor);
+

Important: It is not possible to alter the Type of a monitor after its creation! In case you want to do this, you have to delete the monitor and create a new one with the changed type.

+

Modify Alerts

+

Retrieve all alerts:

+
List<Alert> items = _client.GetAlerts();
+

Retrieve alerts by IDs:

+
List<Alert> items = _client.GetAlerts(new int[]{ 12897, 98711 });
+

Retrieve a specific alert:

+
Alert item = _client.GetAlert(12897);
+

Adds an alert (Due to UptimeRobot API limitations SMS and Twitter alert contact types are not supported yet):

+
bool isSuccess = _client.AddAlert(AlertType.Email, "uptimesharp@outlook.com");
+

Adds an alert from instance:

+
// Alert myAlert = ...
+bool isSuccess = _client.AddAlert(myAlert);
+

Deletes an alert:

+
bool isSuccess = _client.DeleteAlert(12897);
+

Deletes an alert from instance:

+
// Alert myAlert = ...
+bool isSuccess = _client.DeleteAlert(myAlert);
+ +
+ +
+

Delete

+

Delete a monitor by ID:

+
bool isSuccess = _client.DeleteMonitor(12891);
+

Delete a monitor by a Monitor instance:

+
// Monitor myMonitor = ...
+bool isSuccess = _client.DeleteMonitor(myMonitor);
+
+ +
+
+ +
+ + + + diff --git a/UptimeSharp.Website/package.json b/UptimeSharp.Website/package.json new file mode 100644 index 0000000..170513f --- /dev/null +++ b/UptimeSharp.Website/package.json @@ -0,0 +1,16 @@ +{ + "name": "wingsforlife", + "version": "0.1.0", + "devDependencies": { + "grunt": "~0.4.1", + "grunt-contrib-uglify": "~0.1.2", + "grunt-contrib-concat": "~0.1.3", + "grunt-contrib-jshint": "~0.2.0", + "grunt-contrib-watch": "~0.3.1", + "grunt-contrib-compass": "~0.1.3", + "grunt-contrib-imagemin": "~0.1.2", + "grunt-contrib-handlebars": "~0.5.5", + "grunt-contrib-copy": "~0.4.1", + "grunt-datauri": "~0.3.1" + } +} \ No newline at end of file diff --git a/UptimeSharp.Website/robots.txt b/UptimeSharp.Website/robots.txt new file mode 100644 index 0000000..6f27bb6 --- /dev/null +++ b/UptimeSharp.Website/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: \ No newline at end of file diff --git a/UptimeSharp.nuspec b/UptimeSharp.nuspec new file mode 100644 index 0000000..739e330 --- /dev/null +++ b/UptimeSharp.nuspec @@ -0,0 +1,40 @@ + + + + UptimeSharp + 0.1.1 + UptimeSharp + Tobias Klika + Tobias Klika + https://raw.github.com/ceee/UptimeSharp/master/LICENSE-MIT + http://uptimesharp.frontendplay.com + http://uptimesharp.frontendplay.com/Assets/Images/uptimesharp.png + false + Assembly for accessing the UptimeRobot API + en-US + + + + Copyright by cee, 2013 + UptimeSharp UptimeRobot Uptime Robot API Tobias Klika cee RestSharp + + + + + + + + + + + + + + + + + + + \ No newline at end of file