<?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 xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:tr="http://myfaces.apache.org/trinidad"
                template="/pages/componentDemo.xhtml">

    <ui:define name="demoContent">

        <tr:outputText value="Type 'cat' to see an error message"/>
        <tr:spacer height="10"/>

        <tr:panelFormLayout rows="8" labelAlignment="top">
            <tr:outputLabel for="luky_no" value="Luky number"/>
            <tr:message for="luky_no" messageType="info"
                        inlineStyle="background-color:#F6F4F0; border: 1px solid #BBB1AA"/>
            <tr:inputText id="luky_no" simple="true" label="Luky No">
                <f:converter converterId="javax.faces.BigInteger"/>
            </tr:inputText>
            <tr:commandButton text="Submit"/>
        </tr:panelFormLayout>

    </ui:define>
</ui:composition>
