#
# 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.

## default values for properties
## override as needed; optional ones are commented out

## Product

product.name=Brooklyn
product.favicon=brooklyn-shared/img/brooklyn-favicon.ico
banner=(c) 2018- Apache Software Foundation. Released under the Apache Software License.

# logos can have custom html but typically it is easiest just to change the img
product.logo.html=brooklyn-shared/partials/logo-img.html
product.logo.img=brooklyn-shared/img/brooklyn-logo.png
# should be provided in normal variant (above) for use on white bg
# and light variant (below) for use on dark background ensuring high-contrast
product.logo.light.html=brooklyn-shared/partials/logo-img-light.html
product.logo.light.img=brooklyn-shared/img/brooklyn-logo.png

# Custom text

hero.heading=Apache Brooklyn
hero.subheading=Model, Deploy, Manage: Application Control

## Custom partials

partials.footer=brooklyn-shared/partials/brooklyn-footer.html
partials.header_hero=brooklyn-shared/partials/brooklyn-header-hero.html

## Config

# set an identifier if there is JS code which wants to do something custom
# (evaluating brand['brand-identifier'] in JS or @{brand-identifier} is less)
brand-identifier=custom
