shared/src/main/scala/purecss/generic/PureCssGeneric.scala
author Tomas Zeman <tzeman@volny.cz>
Thu, 14 Dec 2017 14:25:16 +0100
changeset 7 bc895714797d
parent 5 f877b4b6fa7d
child 8 d1da6ba32afa
permissions -rw-r--r--
PureButtons

/*
 * Copyright 2017 Tomas Zeman <tzeman@volny.cz>
 *
 * Licensed 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.
 */
package purecss.generic

import scala.language.implicitConversions
import scalatags.generic.Bundle

class PureCssGeneric[Builder, Output <: FragT, FragT](
  val bun: Bundle[Builder, Output, FragT]) {

  import bun.all._

  type A = PureAlert[Builder, Output, FragT]
  type B = PureButtons[Builder, Output, FragT]
  type C = PureCls[Builder, Output, FragT]

  implicit val bundle: Bundle[Builder, Output, FragT] = bun

  implicit def cls2mod(v: C): Modifier = v()
  implicit def alert2cls(a: A#Alert): C = a.toCls
  implicit def alert2mod(a: A#Alert): Modifier = a.toCls.apply()
  implicit def btn2cls(b: B#Button): C = b.toCls
  implicit def btn2mod(b: B#Button): Modifier = b.toCls.apply()

  private def pc(c: String): C = PureCls(c)

  // grid
  val pure_g: C = pc("pure-g")
  val pure_u_1: C = pc("pure-u-1")

  // 5ths-based
  val pure_u_1_5: C = pc("pure-u-1-5")
  val pure_u_2_5: C = pc("pure-u-2-5")
  val pure_u_3_5: C = pc("pure-u-3-5")
  val pure_u_4_5: C = pc("pure-u-4-5")

  // 24ths-based
  val pure_u_1_24: C = pc("pure-u-1-24")
  val pure_u_1_12: C = pc("pure-u-1-12")
  val pure_u_2_24: C = pc("pure-u-2-24")
  val pure_u_3_24: C = pc("pure-u-3-24")
  val pure_u_1_8: C = pc("pure-u-1-8")
  val pure_u_4_24: C = pc("pure-u-4-24")
  val pure_u_1_6: C = pc("pure-u-1-6")
  val pure_u_5_24: C = pc("pure-u-5-24")
  val pure_u_1_4: C = pc("pure-u-1-4")
  val pure_u_6_24: C = pc("pure-u-6-24")
  val pure_u_7_24: C = pc("pure-u-7-24")
  val pure_u_1_3: C = pc("pure-u-1-3")
  val pure_u_8_24: C = pc("pure-u-8-24")
  val pure_u_3_8: C = pc("pure-u-3-8")
  val pure_u_9_24: C = pc("pure-u-9-24")
  val pure_u_5_12: C = pc("pure-u-5-12")
  val pure_u_10_24: C = pc("pure-u-10-24")
  val pure_u_11_24: C = pc("pure-u-11-24")
  val pure_u_1_2: C = pc("pure-u-1-2")
  val pure_u_13_24: C = pc("pure-u-13-24")
  val pure_u_7_12: C = pc("pure-u-7-12")
  val pure_u_14_24: C = pc("pure-u-14-24")
  val pure_u_5_8: C = pc("pure-u-5-8")
  val pure_u_15_24: C = pc("pure-u-15-24")
  val pure_u_2_3: C = pc("pure-u-2-3")
  val pure_u_16_24: C = pc("pure-u-16-24")
  val pure_u_17_24: C = pc("pure-u-17-24")
  val pure_u_3_4: C = pc("pure-u-3-4")
  val pure_u_18_24: C = pc("pure-u-18-24")
  val pure_u_19_24: C = pc("pure-u-19-24")
  val pure_u_5_6: C = pc("pure-u-5-6")
  val pure_u_20_24: C = pc("pure-u-20-24")
  val pure_u_7_8: C = pc("pure-u-7-8")
  val pure_u_21_24: C = pc("pure-u-21-24")
  val pure_u_11_12: C = pc("pure-u-11-12")
  val pure_u_22_24: C = pc("pure-u-22-24")
  val pure_u_23_24: C = pc("pure-u-23-24")

  // generic
  val pull_right: C = pc("pull-right")
  val pure_img: C = pc("pure-img")

  // tables
  val pure_table: C = pc("pure-table")
  val pure_table_bordered: C = pc("pure-table-bordered")
  val pure_table_horizontal: C = pc("pure-table-horizontal")
  val pure_table_striped: C = pc("pure-table-striped")

  // alerts
  val pure_alert: C = pc("pure-alert")
  val pure_alert_error: C = pc("pure-alert-error")
  val pure_alert_warning: C = pc("pure-alert-warning")
  val pure_alert_success: C = pc("pure-alert-success")

  // forms
  val pure_form: C = pc("pure-form")
  val pure_form_stacked: C = pc("pure-form-stacked")
  val pure_form_aligned: C = pc("pure-form-aligned")
  val pure_group: C = pc("pure-group")

  // inputs
  val pure_input_1: C = pc("pure-input-1")
  val pure_input_1_5: C = pc("pure-input-1-5")
  val pure_input_2_5: C = pc("pure-input-2-5")
  val pure_input_3_5: C = pc("pure-input-3-5")
  val pure_input_4_5: C = pc("pure-input-4-5")
  val pure_input_1_24: C = pc("pure-input-1-24")
  val pure_input_1_12: C = pc("pure-input-1-12")
  val pure_input_2_24: C = pc("pure-input-2-24")
  val pure_input_3_24: C = pc("pure-input-3-24")
  val pure_input_1_8: C = pc("pure-input-1-8")
  val pure_input_4_24: C = pc("pure-input-4-24")
  val pure_input_1_6: C = pc("pure-input-1-6")
  val pure_input_5_24: C = pc("pure-input-5-24")
  val pure_input_1_4: C = pc("pure-input-1-4")
  val pure_input_6_24: C = pc("pure-input-6-24")
  val pure_input_7_24: C = pc("pure-input-7-24")
  val pure_input_1_3: C = pc("pure-input-1-3")
  val pure_input_8_24: C = pc("pure-input-8-24")
  val pure_input_3_8: C = pc("pure-input-3-8")
  val pure_input_9_24: C = pc("pure-input-9-24")
  val pure_input_5_12: C = pc("pure-input-5-12")
  val pure_input_10_24: C = pc("pure-input-10-24")
  val pure_input_11_24: C = pc("pure-input-11-24")
  val pure_input_1_2: C = pc("pure-input-1-2")
  val pure_input_13_24: C = pc("pure-input-13-24")
  val pure_input_7_12: C = pc("pure-input-7-12")
  val pure_input_14_24: C = pc("pure-input-14-24")
  val pure_input_5_8: C = pc("pure-input-5-8")
  val pure_input_15_24: C = pc("pure-input-15-24")
  val pure_input_2_3: C = pc("pure-input-2-3")
  val pure_input_16_24: C = pc("pure-input-16-24")
  val pure_input_17_24: C = pc("pure-input-17-24")
  val pure_input_3_4: C = pc("pure-input-3-4")
  val pure_input_18_24: C = pc("pure-input-18-24")
  val pure_input_19_24: C = pc("pure-input-19-24")
  val pure_input_5_6: C = pc("pure-input-5-6")
  val pure_input_20_24: C = pc("pure-input-20-24")
  val pure_input_7_8: C = pc("pure-input-7-8")
  val pure_input_21_24: C = pc("pure-input-21-24")
  val pure_input_11_12: C = pc("pure-input-11-12")
  val pure_input_22_24: C = pc("pure-input-22-24")
  val pure_input_23_24: C = pc("pure-input-23-24")
  val pure_input_rounded: C = pc("pure-input-rounded")
  val pure_checkbox: C = pc("pure-checkbox")
  val pure_radio: C = pc("pure-radio")

  // buttons
  val pure_button: C = pc("pure-button")
  val pure_button_disabled: C = pc("pure-button-disabled")
  val pure_button_active: C = pc("pure-button-active")
  val pure_button_primary: C = pc("pure-button-primary")
  val pure_button_secondary: C = pc("pure-button-secondary")
  val pure_button_success: C = pc("pure-button-success")
  val pure_button_error: C = pc("pure-button-error")
  val pure_button_warning: C = pc("pure-button-warning")
  val pure_button_small: C = pc("pure-button-small")
  val pure_button_large: C = pc("pure-button-large")
  val pure_button_group: C = pc("pure-button-group")

  object pureButtons extends PureButtons(this)
  val pureButton: B#Button = pureButtons.Button()

  // menus
  val pure_menu: C = pc("pure-menu")
  val pure_menu_heading: C = pc("pure-menu-heading")
  val pure_menu_list: C = pc("pure-menu-list")
  val pure_menu_item: C = pc("pure-menu-item")
  val pure_menu_horizontal: C = pc("pure-menu-horizontal")
  val pure_menu_link: C = pc("pure-menu-link")
  val pure_menu_selected: C = pc("pure-menu-selected")
  val pure_menu_disabled: C = pc("pure-menu-disabled")
  val pure_menu_allow_hower: C = pc("pure-menu-allow-hover")
  val pure_menu_has_children: C = pc("pure-menu-has-children")
  val pure_menu_scrollable: C = pc("pure-menu-scrollable")

}