#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: camel-quarkus
title: Camel Quarkus
version: 3.0.x
nav:
- modules/ROOT/nav.adoc
asciidoc:
  attributes:
    requires: "'util=camel-website-util,quarkus=xref:js/quarkus.js'"

    # Project versions
    camel-version: 4.0.0-M3 # replace ${camel.version}
    camel-docs-version: ""
    quarkus-version: 3.1.0.Final # replace ${quarkus.version}
    graalvm-version: 22.3.2 # replace ${graalvm.version}
    graalvm-docs-version: 22.3
    min-maven-version: 3.8.2 # replace ${min-maven-version}
    target-maven-version: 3.9.1 # replace ${target-maven-version}

    # Attributes used in xrefs to other Antora components
    cq-camel-components: components
    doc-link-icon-lock: "icon:lock"
    quarkus-examples-version: latest

    # Toggle whether some page elements are rendered
    doc-show-badges: true # Whether JVM / Native badges are rendered
    doc-show-advanced-features: true # Whether documentation relating to advanced features is rendered
    doc-show-user-guide-link: true # Whether the user guide link is rendered in component extensions
    doc-show-extra-content: false # Whether additional content hosted in external AsciiDoc files should be loaded via an include:: directive

    # External URLs
    link-camel-quarkus-source: https://github.com/apache/camel-quarkus/tree/main
    link-quarkus-code-generator: code.quarkus.io
    link-quarkus-cxf-doc: https://quarkiverse.github.io/quarkiverse-docs/quarkus-cxf/dev
    link-quarkus-cxf-source: https://github.com/quarkiverse/quarkus-cxf/tree/main
    
    # Misc
    javaxOrJakartaPackagePrefix: jakarta # this can be switched to javax in older branches

    # Project name
    project-name: "Camel Quarkus"
