If you want to use case class, you need to put the case object in the companion object of Size (equivalent to static visibility)
package views.helper.button
abstract sealed class Size(identifier: Option[String])
{
def this(identifier: String) = this( Some( identifier ) )
override def toString: String = identifier match
{
case Some( identifier ) => "btn-" + identifier
case _ => ""
}
}
object Size {
case object Mini extends Size( "mini" )
case object Small extends Size( "small" )
case object Default extends Size( None )
case object Large extends Size( "normal" )
}