# 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: Document
description: Suggest document changes
title: "[Doc] "
labels: ["doc-required"]
body:
  - type: markdown
    attributes:
      value: |
        Thank you very much for your suggestion!

        For suggestions or help, please consider:
        1. [User Mail List](mailto:users@pulsar.apache.org) ([subscribe](mailto:users-subscribe@pulsar.apache.org));
        2. [Github Discussion](https://github.com/apache/pulsar/discussions).

        Otherwise, please answer the following questions before submitting a doc issue.
  - type: checkboxes
    attributes:
      label: Search before asking
      description: >
        Please search [issues](https://github.com/apache/pulsar/issues) to check if your issue has already been reported.
      options:
        - label: >
            I searched in the [issues](https://github.com/apache/pulsar/issues) and found nothing similar.
          required: true
  - type: textarea
    attributes:
      label: What issue do you find in Pulsar docs?
      description: For example, something missing, inaccurate, incomplete, hard to use/understand/find, etc.
    validations:
      required: true
  - type: textarea
    attributes:
      label: What is your suggestion?
      description: For example, add explanations, correct descriptions, delete information, etc.
    validations:
      required: true
  - type: textarea
    attributes:
      label: Any reference?
      description: (For example, website links, etc)?
  - type: checkboxes
    attributes:
      label: Are you willing to submit a PR?
      description: >
        We look forward to the community of developers or users helping improve Pulsar document together. If you are willing to submit a PR, please check the box.
      options:
        - label: I'm willing to submit a PR!
  - type: markdown
    attributes:
      value: "Thanks for completing our form!"
