diff --git a/assets/icons/logo.png b/assets/icons/logo.png new file mode 100644 index 00000000..92fced3e Binary files /dev/null and b/assets/icons/logo.png differ diff --git a/assets/scss/_nav.scss b/assets/scss/_nav.scss new file mode 100644 index 00000000..6a0428b6 --- /dev/null +++ b/assets/scss/_nav.scss @@ -0,0 +1,218 @@ +// +// Main navbar +// + +.td-navbar-cover { + background: $primary; + + @include media-breakpoint-up(md) { + background: transparent !important; + + .nav-link { + text-shadow: 1px 1px 2px $dark; + } + + } + + &.navbar-bg-onscroll .nav-link { + text-shadow: none; + } +} + +.navbar-bg-onscroll { + background: $primary !important; + opacity: inherit; +} + +.td-navbar { + background: #212121; + min-height: 4rem; + margin: 0; + z-index: 32; + + @include media-breakpoint-up(md) { + position: fixed; + top: 0; + width: 100%; + } + + + .navbar-brand { + text-transform: none; + text-align: middle; + + .nav-link { + display: inline-block; + margin-right: -30px; + } + + svg { + display: inline-block; + margin: 0 10px; + height: 30px; + } + } + + .nav-link { + text-transform: none; + font-weight: $font-weight-bold; + } + + .td-search-input { + border: none; + color: $navbar-dark-color; + @include placeholder { + color: $navbar-dark-color; + } + } + + .dropdown { + min-width: 100px; + } + + @include media-breakpoint-down(md) { + padding-right: .5rem; + padding-left: .75rem; + + .td-navbar-nav-scroll { + max-width: 100%; + height: 2.5rem; + margin-top: .25rem; + overflow: hidden; + font-size: .875rem; + + .nav-link { + padding-right: .25rem; + padding-left: 0; + } + + .navbar-nav { + padding-bottom: 2rem; + overflow-x: auto; + white-space: nowrap; + -webkit-overflow-scrolling: touch; + + } + } + } +} + +// Icons +#main_navbar { + li i { + padding-right: 0.5em; + + &:before { + display: inline-block; + text-align: center; + min-width: 1em; + } + } + .alert { + background-color: inherit; + padding:0; + color: $secondary; + border: 0; + font-weight: inherit; + + &:before { + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + content: "\f0d9"; + padding-left: 0.5em; + padding-right: 0.5em; + } + } +} + +// Foldable sidebar menu +nav.foldable-nav { + + td-section-nav { + position: relative; + } + + td-section-nav label { + margin-bottom: 0; + width: 100%; + } + + .td-sidebar-nav__section, .with-child ul { + list-style: none; + padding: 0; + margin: 0; + } + + .ul-1 > li { + padding-left: 1.5em; + } + + ul.foldable { + max-height: 0; + overflow: hidden; + transition: max-height 0.5s cubic-bezier(0, 1, 0, 1); + } + + input:checked ~ ul.foldable { + max-height: 100000vmax; + transition: max-height 1s ease-in-out; + } + + input[type=checkbox] { display: none; } + + .with-child, .without-child { + position: relative; + padding-left: 1.5em; + } + + .ul-1 .with-child > label:before { + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + font-family: "Font Awesome 5 Free"; font-weight: 900; content: "\f0da"; + position: absolute; + left: 0.1em; + padding-left: 0.4em; + padding-right: 0.4em; + font-size: 1em; + color: $gray-900; + transition: all 0.5s; + &:hover{ + transform: rotate(90deg); + } + } + + .ul-1 .with-child > input:checked ~ label:before { + color: $primary; + transform: rotate(90deg); + transition: transform 0.5s; + } + + .with-child ul { margin-top: 0.1em; } + +} + +@media (hover: hover) and (pointer: fine) { + + nav.foldable-nav { + + .ul-1 .with-child > label:hover:before { + color: $primary; + transform: rotate(30deg); + transition: transform 0.5s; + } + + .ul-1 .with-child > input:checked ~ label:hover:before { + color: $primary; + transform: rotate(60deg) !important; + transition: transform 0.5s; + } + } +} diff --git a/assets/scss/_sidebar-toc.scss b/assets/scss/_sidebar-toc.scss new file mode 100644 index 00000000..ff6fc52c --- /dev/null +++ b/assets/scss/_sidebar-toc.scss @@ -0,0 +1,65 @@ +// +// Right side toc +// +.td-sidebar-toc { + border-left: 1px solid $border-color; + + @supports (position: sticky) { + position: sticky; + top: 4rem; + height: calc(100vh - 4rem); + overflow-y: auto; + } + + order: 2; + padding-top: 0.75rem; + padding-bottom: 1.5rem; + vertical-align: top; + +} + +.td-page-meta { + a { + display: block; + font-weight: $font-weight-medium; + } +} + +.td-toc { + padding-top: 5px; + margin-top: 10px; + border-top: 1px solid $black; + + a { + display: block; + font-weight: $font-weight-medium; + padding-bottom: .25rem; + } + + li { + list-style: none; + display: block; + } + + li li { + margin-left: 0.5rem; + } + + #TableOfContents { + // Hugo's ToC is a mouthful, this can be used to style the top level h2 entries. + > ul > li > ul > li > a {} + + a { + color: $gray-600; + + &:hover { + color: $blue; + text-decoration: none; + } + } + } + + ul { + padding-left: 0; + } +} diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss new file mode 100644 index 00000000..78520674 --- /dev/null +++ b/assets/scss/_styles_project.scss @@ -0,0 +1,2 @@ +.td-page-meta--child { display: none !important; } +.td-page-meta--project-issue { display: none !important; } \ No newline at end of file diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss index aa8d4160..de6c519b 100644 --- a/assets/scss/_variables_project.scss +++ b/assets/scss/_variables_project.scss @@ -8,7 +8,7 @@ Add styles or override variables from the theme here. body { font-family: "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif !important; - font-weight:300 !important; + font-weight:500 !important; } $display1-weight: 500 !default; @@ -34,7 +34,7 @@ ul, ol { } .navbar-brand { - color: #048273 !important + color: #008489 !important } .navbar-bg-onscroll { @@ -119,8 +119,8 @@ input[type="search"]::placeholder { .hero { padding: 20px 0px 25px 0px; color: white; - background: rgb(33,39,73); - background: linear-gradient(130deg, #473782 50%, #2c2c62 70%); + background: rgb(65, 127, 143); + background: linear-gradient(130deg, #4487a1 50%, #0188a3 70%); margin-left: -15px; margin-right: -15px; position: relative; @@ -150,7 +150,7 @@ input[type="search"]::placeholder { width: 60vw; height: 60vw; display: block; - background: linear-gradient(90deg, rgba(42,24,102,1) 59%, rgba(44,44,98,1) 70%); + background: linear-gradient(90deg, rgb(0, 129, 155) 59%, rgba(0,145,193,1) 70%); position: absolute; left: -20vw; top: -20vw; @@ -163,7 +163,7 @@ input[type="search"]::placeholder { width: 20vw; height: 100vw; display: block; - background: linear-gradient(-74deg, #2c2c62 50%, #3f3479 70%); + background: linear-gradient(-74deg, #007e97 50%, #0091c1 70%); position: absolute; left: 55vw; bottom: -40vw; @@ -190,11 +190,11 @@ input[type="search"]::placeholder { // } .hero-big { - background: rgb(112, 85, 255); + background: rgb(0,145,193); background: linear-gradient( 140deg, - rgba(112, 85, 255, 1) 0%, - rgba(140, 61, 180, 1) 100% + rgba(0,145,193, 1) 0%, + rgba(0,94,113, 1) 100% ); padding: 12px 38px; border: none; @@ -206,14 +206,14 @@ input[type="search"]::placeholder { align-items: center; font-size: 22px; - font-weight: 400; + font-weight: 600; color: white; margin: 10px 0px 40px 0px; } .hero-mid { - background: rgb(112, 85, 255); - background: linear-gradient(140deg,rgba(112, 85, 255, 1) 0%, rgba(140, 61, 180, 1) 100%); + background: rgb(0,145,193); + background: linear-gradient(140deg,rgba(0,145,193, 1) 0%, rgba(0,94,113, 1) 100%); padding: 16px 30px; border-radius: 4px; border: none; @@ -222,7 +222,7 @@ input[type="search"]::placeholder { justify-content: center; align-items: center; font-size: 18px; - font-weight: 400; + font-weight: 600; color: white; margin: 30px 0px 10px 0px; &:hover { @@ -247,7 +247,7 @@ input[type="search"]::placeholder { border-bottom: 1px solid transparent; &:hover { color: #fff !important; - border-bottom: 1px solid #E361FD; + border-bottom: 1px solid #00b1f7; } } } @@ -273,7 +273,7 @@ input[type="search"]::placeholder { .section-text { color: #5a5b75; - font-weight: 400; + font-weight: 600; margin: 12px 0px; font-size: 18px; } @@ -441,7 +441,7 @@ input[type="search"]::placeholder { text-transform: uppercase; border-radius: 5px; color: #5a5b75; - font-weight: 400; + font-weight: 600; font-size: 16px; } @@ -461,20 +461,20 @@ input[type="search"]::placeholder { background: white; padding: 12px 22px; border-radius: 4px; - border: 1px solid #8147d2; + border: 1px solid #00b1f7; display: flex; flex-direction: row; justify-content: center; align-items: center; font-size: 18px; - font-weight: 400; - color: #8147d2; + font-weight: 600; + color: #00b1f7; margin: 30px 0px 10px 0px; font-weight: 700; &:hover { - background: #7055ff; - background: linear-gradient(140deg, #7055ff 0%, #8c3db4 100%); + background: #55d7ff; + background: linear-gradient(140deg, #55d7ff 0%, #3d98b4 100%); color: #fff; box-shadow: 0 3px 7px #b7b7b7; } @@ -516,7 +516,7 @@ input[type="search"]::placeholder { } .text-highlight { - color: #8147d2; + color: #00b1f7; } .community-cards .row { diff --git a/config.toml b/config.toml index 904aaafc..89d62ede 100644 --- a/config.toml +++ b/config.toml @@ -20,7 +20,7 @@ tag = "tags" [params.taxonomy] # set taxonomyCloud = [] to hide taxonomy clouds -taxonomyCloud = [] +taxonomyCloud = ["tags", "categories"] # If used, must have same lang as taxonomyCloud taxonomyCloudTitle = ["Tag Cloud", "Categories", "Authors"] @@ -74,14 +74,14 @@ id = "" [languages.en] description = "Guidelines for when Developing AL for Microsoft Dynamics 365 Business Central" languageName = "English" -title = "alguidelines.dev" +title = "alguidelines.dev - Business Central Design Patterns" # Weight used for sorting. weight = 1 # Everything below this are Site Params [params] -copyright = "Copyright © 2020 alguidelines.dev Project" +copyright = "alguidelines.dev Project" github_repo = "https://github.com/microsoft/alguidelines" github_project_repo = "https://github.com/microsoft/alguidelines" privacy_policy = "" @@ -200,9 +200,9 @@ url = "/docs/" pre = "" weight = 10 [[menu.main]] -name = "Blog" -url = "/blog/" -pre = "" +name = "Discussions" +url = "https://github.com/microsoft/alguidelines/discussions/" +pre = "" weight = 11 [[menu.main]] name = "GitHub" diff --git a/content/_index.md b/content/_index.md index 3f301535..1f0e8a85 100644 --- a/content/_index.md +++ b/content/_index.md @@ -11,22 +11,18 @@ images: ["images/og-image-fission.png"]
- Fission is a framework for serverless functions on Kubernetes. + A "Design Pattern" is a software design template to solve common development needs.
- Write short-lived functions in any language, and map them to HTTP - requests (or other event triggers). + This site is community run and Microsoft endorsed.
-- Deploy functions instantly with one command. There are no containers - to build, and no Docker registries to manage. -
-- Fission lets developers run code functions easily, while automating - the menial work of configuring Kubernetes micro-services concepts - behind the scenes. Just write your code functions and Fission will - make it run on Kubernetes. + By using consistent patterns and best practices, code is far more reusable across diverse projects.
- Fission is open source under the Apache license. Fission works on a - Kubernetes cluster anywhere: on your laptop, in any public cloud, or - in a private data-center. Write your application with the - flexibility of deploying it anywhere. + If all code uses design patterns and best practices, it's simpler for new team members to ensure + that code is correct, as well as making it easier to jump into a project.
- Fission is extensible to any programming language (Python, NodeJS, - Go, C#, PHP are supported today). It abstracts away containers by - default, but you can build your own containers if you need to. -
-- Fission is open source under the Apache License. It works on a - Kubernetes cluster anywhere: in your private datacenter, in a public - cloud, or on your laptop. -
-- Fission maintains a configurable pool of containers, so your - functions have very low cold-start latencies, typically ~100msec. -
-- Declarative specifications give the developer the capability to - define a function once and then deploy it anywhere. Fission - resources (functions, triggers etc.) can be checked into source - control, and the application can be recreated from them. -
-- Fission aims for operational simplicity by incorporating logs - directly into the CLI, via integration with Fluentd. It also - integrates with Prometheus for metrics tracking and dashboard - visibility. -
-- Fission integrates with Istio, which is an open platform to connect, - manage and secure micro-services. With Istio, users also get the - ability to monitor function usage and trace request latency through - dashboards. -
-- Fission is extensible to any programming language of your choice. - Python, NodeJS, Go, C#, PHP are supported today, but you can build - your own custom containers if you need to. -
-- Fission provides autoscaling for functions based on CPU usage. In - the future, custom metrics will be also supported for scaling - functions. You can set the initial and maximum CPU for a function - and target CPU at which autoscaling will be triggered. + Many design patterns and best practices are also heavily focused on ensuring compliance with + the latest performance recommendations to get the most out of every system.
- Create API backends for web and mobile apps without managing servers. - Just write functions, and map them to HTTP routes. Fission takes care - of the rest: deployment, routing, scalability, availability. Use - Kubernetes service discovery and networking to interoperate with - other services, like Redis, Postgres, Etcd etc. -
-
- - Webhooks are a popular way to integrate with third-party services. - Slack provides webhooks that are triggered by certain words or - messages; GitHub provides webhooks triggered by events in Git - repositories. Fission is a great place to implement webhooks: just - write the code, map it to a URL, and point the webhook at that URL. -
-
- - By subscribing to Kubernetes watches, you can write custom automation - for your Kubernetes infrastructure. Fission’s integration with - Kubernetes watches allows you to monitor resources such as Pods and - Services, and execute arbitrary functions when the watched set of - resources change. -
-
- - Get started with Serverless on Kubernetes in 5 minutes! Learn how - to set up Fission, its key concepts, how to create and invoke a - function, monitor its performance, and more. + In the world of interfaces, it is important to preserve (certain) events over multiple implementation of the interface.
- + + +Slack
+- Join the Fission community to engage with the fission team, - interact with other users, and contribute ideas and feedback. + Join the BC Community to engage with other BC Professionals.
GitHub
+- Dive into the code and learn more about Fission. Submit PRs + Dive into the code. Submit PRs and collaborate with other like-minded contributors.
- Follow us @fissionio to stay up - to date with Fission news. + Chat about this with the #bcalhelp hashtag.
- Follow us @fissionio to stay up - to date with Fission news. + Chat about this with the #bcalhelp hashtag.