diff --git a/app.vue b/app.vue index 16c72fe1a9e..35c54d62e5c 100644 --- a/app.vue +++ b/app.vue @@ -24,11 +24,8 @@ href: "/favicon-192x192.png", }, ], - titleTemplate: (titleChunk) => { - return titleChunk && - titleChunk != "Kestra, Open Source Declarative Data Orchestration" - ? `${titleChunk}` - : "Kestra, Open Source Declarative Data Orchestration"; + titleTemplate: (titleChunk: string | undefined) => { + return titleChunk ?? "Kestra, Open Source Declarative Data Orchestration"; }, }); diff --git a/assets/styles/app.scss b/assets/styles/app.scss index 69890fe2d05..550bb3c4110 100644 --- a/assets/styles/app.scss +++ b/assets/styles/app.scss @@ -5,6 +5,10 @@ html { scroll-padding-top: var(--top-bar-height); } +pre { + color: white; +} + body { min-width: 320px; min-height: 100%; diff --git a/assets/styles/components/header.scss b/assets/styles/components/header.scss index 237f705c9df..fb7384472c7 100644 --- a/assets/styles/components/header.scss +++ b/assets/styles/components/header.scss @@ -335,6 +335,8 @@ nav { transform: translateY(0); max-height: 100%; width: 100vw; + background-color: $menu-bg; + transition: background-color 250ms ease-in-out; @keyframes chevron-in { 0% { @@ -363,16 +365,7 @@ nav { &.open { @supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { & { - background-color: $menu-bg; - transition: background-color 250ms ease-in-out; - } - } - - &.open { - @supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { - & { - background-color: $white; - } + background-color: $white; } } } diff --git a/assets/styles/docs.scss b/assets/styles/docs.scss index a7ded27e05e..f989cf741d7 100644 --- a/assets/styles/docs.scss +++ b/assets/styles/docs.scss @@ -196,6 +196,7 @@ $bd-gutter-x: 3rem; } .bd-content { + #{--bs-heading-color}: white; grid-area: content; min-width: 1px; // Fix width when bd-content contains a `
` https://github.com/twbs/bootstrap/issues/25410
 
@@ -235,7 +236,7 @@ $bd-gutter-x: 3rem;
 
         @media only screen and (max-width: 768px) {
             padding-bottom: 56.25%;
-            
+
             iframe {
                 width: 100%;
                 height: 100%;
@@ -292,14 +293,13 @@ $bd-gutter-x: 3rem;
     }
 
     code {
-        background: #161617;
         border: 1px solid #252526;
         border-radius: var(--bs-border-radius);
         color: #b9b9ba;
         padding: 0 .25rem;
     }
 
-    .code-block, .doc-alert {
+    .code-block, .doc-alert, .astro-code {
         background-color: $black-2;
         code {
             border: 0;
@@ -307,13 +307,123 @@ $bd-gutter-x: 3rem;
         }
     }
 
-    .code-block {
+    .code-block, .astro-code {
         code {
             padding: 0;
         }
     }
 
-    .doc-alert {
+    @import "../../assets/styles/_variable.scss";
+
+    .astro-code {
+        background-color: $black-2;
         border: $block-border;
+        padding: 1.25rem 1.5rem;
+        border-radius: var(--bs-border-radius-lg);
+        color: var(--bs-white);
+        position: relative;
+        margin-bottom: 1em;
+        overflow: hidden;
+        code .line {
+            white-space: pre-wrap;
+        }
+
+        .language {
+            font-size: 0.75rem;
+        }
+
+        .language, .copy {
+            color: var(--kestra-io-neutral-gray700) !important;
+            position: absolute;
+            top: 1.25rem;
+            right: 1.25rem;
+        }
+
+        .copy {
+            border: none;
+            background: none;
+
+            & .material-design-icon {
+                &, & * {
+                    height: 1.125rem !important;
+                    width: 1.125rem !important;
+                }
+            }
+        }
+
+        #copied-tooltip {
+            border-radius: $border-radius;
+            background: $gray-500;
+            padding: 4px 8px;
+            font-size: $font-size-xs;
+            margin-right: $popper-margin !important;
+
+            #arrow,
+            #arrow::before {
+                position: absolute;
+                width: 8px;
+                height: 8px;
+                background: inherit;
+            }
+
+            #arrow {
+                visibility: hidden;
+                right: -4px;
+            }
+
+            #arrow::before {
+                visibility: visible;
+                content: '';
+                transform: rotate(45deg);
+            }
+        }
+    }
+
+    .doc-alert {
+        border: 1px solid;
+        border-left-width: 5px !important;
+        padding: 1rem;
+        margin-bottom: 1rem;
+        border-radius: 0.25rem;
+
+        > * {
+            margin: 0;
+        }
+        &.alert-danger {
+            border-color: var(--ks-border-error);
+            color: var(--ks-content-error);
+            background-color: var(--ks-background-error);
+        }
+
+        &.alert-warning {
+            border-color: var(--ks-border-warning);
+            color: var(--ks-content-warning);
+            background-color: var(--ks-background-warning);
+        }
+
+        &.alert-info {
+            border-color: var(--ks-border-info);
+            color: var(--ks-content-info);
+            background-color: var(--ks-background-info);
+        }
+
+        &.alert-success {
+            border-color: var(--ks-border-success);
+            color: var(--ks-content-success);
+            background-color: var(--ks-background-success);
+        }
+    }
+
+    .ks-doc-next-link{
+        &:hover {
+            a, a:hover {
+                color: var(--bs-white) !important;
+            }
+        }
+
+        p {
+            display: inline;
+            margin-bottom: 0 !important;
+        }
     }
 }
\ No newline at end of file
diff --git a/astro.config.mjs b/astro.config.mjs
new file mode 100644
index 00000000000..367ef4b682c
--- /dev/null
+++ b/astro.config.mjs
@@ -0,0 +1,73 @@
+// @ts-check
+import { defineConfig } from 'astro/config';
+
+import * as path from 'path';
+import cloudflare from '@astrojs/cloudflare';
+import vue from '@astrojs/vue';
+import mdx from '@astrojs/mdx';
+import expressiveCode from 'astro-expressive-code';
+
+import remarkDirective from 'remark-directive';
+// @ts-expect-error no types provided by package
+import remarkLinkRewrite from 'remark-link-rewrite';
+import remarkCustomElements from './utils/remark-custom-elements/index.mjs';
+import generateId from './utils/generateId';
+
+const __dirname = path.dirname(new URL(import.meta.url).pathname.replace(/^\/([A-Za-z]:)/, '$1'));
+
+// https://astro.build/config
+export default defineConfig({
+  adapter: cloudflare({
+    imageService: 'cloudflare'
+  }),
+
+  integrations: [
+    vue({
+        appEntrypoint: './src/_main.ts'
+    }),
+    expressiveCode({
+        defaultProps: {
+            wrap: true,
+            overridesByLang: {
+                'bash,sh,zsh,shell': {
+                    frame: 'none',
+                }
+            }
+        }
+    }),
+    mdx()
+  ],
+  markdown: {
+    remarkPlugins: [
+      remarkDirective,
+      remarkCustomElements,
+      // when internal docs links we point to real files
+      // while in the docs generated we want to point to urls with generated ids
+      [remarkLinkRewrite, {
+        /** @param {string} url */
+        replacer(url) {
+          if (url.startsWith('.')) {
+              return generateId({entry: url})
+          }
+          return url;
+        }
+      }]
+    ]
+  },
+  vite: {
+    resolve:{
+        alias: {
+            "#mdc-imports": path.resolve(__dirname, "node_modules/@kestra-io/ui-libs/stub-mdc-imports.js"),
+            "#mdc-configs": path.resolve(__dirname, "node_modules/@kestra-io/ui-libs/stub-mdc-imports.js"),
+        },
+    },
+    css: {
+        preprocessorOptions: {
+            scss: {
+                // silence invasive bootstrap warnings
+                silenceDeprecations: ["color-functions", "global-builtin", "import"],
+            },
+        },
+    },
+  },
+});
\ No newline at end of file
diff --git a/components/ai/AiChatHeader.vue b/components/ai/AiChatHeader.vue
index e26a58007a2..6d131c15ffd 100644
--- a/components/ai/AiChatHeader.vue
+++ b/components/ai/AiChatHeader.vue
@@ -1,7 +1,7 @@
 
 
 
-
-
+
\ No newline at end of file
diff --git a/components/content/BigChildCardsRender.vue b/components/content/BigChildCardsRender.vue
new file mode 100644
index 00000000000..9d5e75d0929
--- /dev/null
+++ b/components/content/BigChildCardsRender.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
diff --git a/components/content/ChildCard.vue b/components/content/ChildCard.vue
index 66905abf246..7658daa86bd 100644
--- a/components/content/ChildCard.vue
+++ b/components/content/ChildCard.vue
@@ -57,12 +57,6 @@
         `ChildCardCurrentPage-${hash(currentPageSlug)}`,
         () => queryCollection(CollectionNames.docs).path(currentPageSlug).first()
     );
-
-    // if (currentPage == "/docs/faq") {
-    //   navigation.value = navigation.value.map(item => {
-    //     return { ...item, icon: item.icon ? item.icon : '/docs/icons/faq.svg'}
-    //   })
-    // }
 
 
 
\ No newline at end of file
+
\ No newline at end of file
diff --git a/components/content/WhatsNewRender.vue b/components/content/WhatsNewRender.vue
new file mode 100644
index 00000000000..7e43070e59f
--- /dev/null
+++ b/components/content/WhatsNewRender.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/components/docs/NavSideBar.vue b/components/docs/NavSideBar.vue
index 0c071d35592..7d516d14410 100644
--- a/components/docs/NavSideBar.vue
+++ b/components/docs/NavSideBar.vue
@@ -18,7 +18,7 @@
                     data-bs-toggle="modal"
                     data-bs-target="#search-ai-modal"
                 >
-                    Kestra AI
+                    Kestra AI
                     Ask Kestra AI
                 
             
@@ -61,6 +61,7 @@
   import Keyboard from "vue-material-design-icons/Keyboard.vue"
   import Menu from "vue-material-design-icons/Menu.vue"
   import RecursiveNavSidebar, { activeSlugInjectionKey, type NavigationItem } from "./RecursiveNavSidebar.vue";
+  import KSAIImg from "@assets/docs/icons/ks-ai.svg"
 
   const props = defineProps({
         type: {
@@ -235,8 +236,6 @@
                     font-size: calc($font-size-base * 0.62);
                 }
             }
-
-
         }
     }
 
diff --git a/components/docs/NavToc.vue b/components/docs/NavToc.vue
index a090c378be4..3c73afd1259 100644
--- a/components/docs/NavToc.vue
+++ b/components/docs/NavToc.vue
@@ -42,7 +42,7 @@
             
 
             
- +
@@ -51,6 +51,7 @@ + + \ No newline at end of file diff --git a/components/home/CTA.vue b/components/home/CTA.vue index 097b02a71dc..77dfb16783d 100644 --- a/components/home/CTA.vue +++ b/components/home/CTA.vue @@ -19,6 +19,9 @@ + \ No newline at end of file diff --git a/components/home/EnterpriseStories.vue b/components/home/EnterpriseStories.vue index 5f69af19557..13592acf144 100644 --- a/components/home/EnterpriseStories.vue +++ b/components/home/EnterpriseStories.vue @@ -18,9 +18,9 @@
-