<?xml version="1.0" encoding="UTF-8"?>

<!--
 * 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.
-->

<ui:composition template="/main.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:tc="http://myfaces.apache.org/tobago/component"
                xmlns:ui="http://java.sun.com/jsf/facelets">

  <p>Commands are ways to execute actions after clicked by a user.</p>

  <tc:section label="Link">
    <pre><code class="language-markup">&lt;tc:link label="Apache Website" link="https://www.apache.org"/></code></pre>
    <tc:link label="Apache Website" link="https://www.apache.org"/>
  </tc:section>

  <tc:section label="Button">
    <pre><code class="language-markup">&lt;tc:button label="Submit"/></code></pre>
    <tc:button label="Submit"/>
  </tc:section>

  <tc:section label="Buttons">
    <pre><code class="language-markup">&lt;tc:buttons>
  &lt;tc:button label="Left" omit="true"/>
  &lt;tc:button label="Center" omit="true"/>
  &lt;tc:button label="Right" omit="true"/>
&lt;/tc:buttons></code></pre>
    <tc:buttons>
      <tc:button label="Left" omit="true"/>
      <tc:button label="Center" omit="true"/>
      <tc:button label="Right" omit="true"/>
    </tc:buttons>
  </tc:section>

  <tc:section label="Links">
    <pre><code class="language-markup">&lt;tc:links>
  &lt;tc:link label="Apache Website" link="https://www.apache.org"/>
  &lt;tc:link label="Wikipedia" link="https://en.wikipedia.org/wiki/Apache_Software_Foundation"/>
&lt;/tc:links></code></pre>
    <tc:links>
      <tc:link label="Apache Website" link="https://www.apache.org"/>
      <tc:link label="Wikipedia" link="https://en.wikipedia.org/wiki/Apache_Software_Foundation"/>
    </tc:links>
  </tc:section>
</ui:composition>
