playbook_ui 3.0.1 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -0
  3. data/app/pb_kits/playbook/index.js +60 -126
  4. data/app/pb_kits/playbook/kits/pb_avatar.js +3 -3
  5. data/app/pb_kits/playbook/kits/pb_badge.js +3 -3
  6. data/app/pb_kits/playbook/kits/pb_bar_graph.js +3 -3
  7. data/app/pb_kits/playbook/kits/pb_body.js +3 -3
  8. data/app/pb_kits/playbook/kits/pb_button.js +3 -3
  9. data/app/pb_kits/playbook/kits/pb_caption.js +3 -3
  10. data/app/pb_kits/playbook/kits/pb_card.js +3 -3
  11. data/app/pb_kits/playbook/kits/pb_checkbox.js +3 -3
  12. data/app/pb_kits/playbook/kits/pb_circle_icon_button.js +3 -3
  13. data/app/pb_kits/playbook/kits/pb_contact.js +3 -3
  14. data/app/pb_kits/playbook/kits/pb_currency.js +3 -3
  15. data/app/pb_kits/playbook/kits/pb_dashboard_value.js +3 -3
  16. data/app/pb_kits/playbook/kits/pb_date.js +3 -3
  17. data/app/pb_kits/playbook/kits/pb_date_range_inline.js +3 -3
  18. data/app/pb_kits/playbook/kits/pb_date_stacked.js +3 -3
  19. data/app/pb_kits/playbook/kits/pb_date_year_stacked.js +3 -3
  20. data/app/pb_kits/playbook/kits/pb_distribution_bar.js +3 -3
  21. data/app/pb_kits/playbook/kits/pb_fixed_confirmation_toast.js +3 -3
  22. data/app/pb_kits/playbook/kits/pb_hashtag.js +3 -3
  23. data/app/pb_kits/playbook/kits/pb_home_address_street.js +3 -3
  24. data/app/pb_kits/playbook/kits/pb_icon.js +3 -3
  25. data/app/pb_kits/playbook/kits/pb_icon_circle.js +3 -3
  26. data/app/pb_kits/playbook/kits/pb_icon_value.js +3 -3
  27. data/app/pb_kits/playbook/kits/pb_image.js +3 -4
  28. data/app/pb_kits/playbook/kits/pb_label_pill.js +3 -3
  29. data/app/pb_kits/playbook/kits/pb_label_value.js +3 -3
  30. data/app/pb_kits/playbook/kits/pb_layout.js +3 -3
  31. data/app/pb_kits/playbook/kits/pb_line_graph.js +3 -3
  32. data/app/pb_kits/playbook/kits/pb_list.js +3 -3
  33. data/app/pb_kits/playbook/kits/pb_loading_inline.js +3 -3
  34. data/app/pb_kits/playbook/kits/pb_message.js +3 -3
  35. data/app/pb_kits/playbook/kits/pb_multiple_users.js +3 -3
  36. data/app/pb_kits/playbook/kits/pb_nav.js +3 -3
  37. data/app/pb_kits/playbook/kits/pb_online_status.js +3 -3
  38. data/app/pb_kits/playbook/kits/pb_person.js +3 -3
  39. data/app/pb_kits/playbook/kits/pb_person_contact.js +3 -3
  40. data/app/pb_kits/playbook/kits/pb_pill.js +3 -3
  41. data/app/pb_kits/playbook/kits/pb_progress_pills.js +3 -3
  42. data/app/pb_kits/playbook/kits/pb_progress_simple.js +3 -3
  43. data/app/pb_kits/playbook/kits/pb_section_separator.js +3 -3
  44. data/app/pb_kits/playbook/kits/pb_select.js +3 -3
  45. data/app/pb_kits/playbook/kits/pb_selectable_card.js +3 -3
  46. data/app/pb_kits/playbook/kits/pb_source.js +3 -3
  47. data/app/pb_kits/playbook/kits/pb_star_rating.js +3 -3
  48. data/app/pb_kits/playbook/kits/pb_stat_change.js +3 -3
  49. data/app/pb_kits/playbook/kits/pb_stat_value.js +3 -3
  50. data/app/pb_kits/playbook/kits/pb_table.js +3 -3
  51. data/app/pb_kits/playbook/kits/pb_text_input.js +3 -3
  52. data/app/pb_kits/playbook/kits/pb_textarea.js +3 -3
  53. data/app/pb_kits/playbook/kits/pb_time.js +3 -3
  54. data/app/pb_kits/playbook/kits/pb_timestamp.js +3 -3
  55. data/app/pb_kits/playbook/kits/pb_title.js +3 -3
  56. data/app/pb_kits/playbook/kits/pb_title_count.js +3 -3
  57. data/app/pb_kits/playbook/kits/pb_title_detail.js +3 -3
  58. data/app/pb_kits/playbook/kits/pb_toggle.js +3 -3
  59. data/app/pb_kits/playbook/kits/pb_user.js +3 -3
  60. data/app/pb_kits/playbook/kits/pb_user_badge.js +3 -3
  61. data/app/pb_kits/playbook/packs/application.js +12 -10
  62. data/app/pb_kits/playbook/packs/examples.js +115 -115
  63. data/app/pb_kits/playbook/packs/kits.js +56 -56
  64. data/app/pb_kits/playbook/packs/site_styles/_site-style.scss +4 -1
  65. data/app/pb_kits/playbook/pb_card/_card.jsx +2 -2
  66. data/app/pb_kits/playbook/pb_card/docs/_card_separator.html.erb +19 -0
  67. data/app/pb_kits/playbook/pb_card/docs/_card_separator.jsx +22 -0
  68. data/app/pb_kits/playbook/pb_card/docs/example.yml +2 -1
  69. data/app/pb_kits/playbook/pb_card/docs/index.js +7 -6
  70. data/app/pb_kits/playbook/pb_contact/contact.rb +1 -1
  71. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
  72. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +3 -1
  73. data/app/pb_kits/playbook/pb_form/form_builder.rb +8 -7
  74. data/app/pb_kits/playbook/pb_form/form_builder/{text_input_builder.rb → form_field_builder.rb} +3 -3
  75. data/app/pb_kits/playbook/pb_nav/_horizontal_nav.scss +0 -1
  76. data/app/pb_kits/playbook/pb_nav/_item.jsx +25 -28
  77. data/app/pb_kits/playbook/pb_nav/_nav.jsx +23 -24
  78. data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +0 -2
  79. data/app/pb_kits/playbook/pb_nav/docs/_block_nav.jsx +15 -0
  80. data/app/pb_kits/playbook/pb_nav/docs/{_block_no_title.html.erb → _block_no_title_nav.html.erb} +0 -0
  81. data/app/pb_kits/playbook/pb_nav/docs/_block_no_title_nav.jsx +15 -0
  82. data/app/pb_kits/playbook/pb_nav/docs/_default_nav.jsx +8 -4
  83. data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav.jsx +15 -0
  84. data/app/pb_kits/playbook/pb_nav/docs/example.yml +5 -1
  85. data/app/pb_kits/playbook/pb_nav/docs/index.js +3 -0
  86. data/app/pb_kits/playbook/pb_person_contact/_person_contact.html.erb +20 -19
  87. data/app/pb_kits/playbook/pb_person_contact/_person_contact.scss +4 -0
  88. data/app/pb_kits/playbook/pb_person_contact/docs/_person_contact_with_wrong_numbers.html.erb +21 -0
  89. data/app/pb_kits/playbook/pb_person_contact/docs/example.yml +1 -2
  90. data/app/pb_kits/playbook/pb_person_contact/person_contact.rb +2 -2
  91. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_dark.html.erb +3 -3
  92. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_dark.jsx +3 -3
  93. data/app/pb_kits/playbook/pb_text_input/_text_input.html.erb +2 -2
  94. data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +4 -2
  95. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +31 -41
  96. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_dark.html.erb +5 -0
  97. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_dark.jsx +78 -0
  98. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +3 -0
  99. data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
  100. data/app/pb_kits/playbook/pb_text_input/text_input.rb +9 -1
  101. data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +11 -1
  102. data/app/pb_kits/playbook/pb_textarea/_textarea_mixin.scss +11 -0
  103. data/app/pb_kits/playbook/plugins/pb_chart_plugin.js +10 -10
  104. data/app/pb_kits/playbook/utilities/props.js +2 -2
  105. data/app/pb_kits/playbook/utilities/text.js +6 -13
  106. data/app/pb_kits/playbook/vendor.js +2 -2
  107. data/lib/generators/kit/kit_generator.rb +2 -2
  108. data/lib/generators/kit/templates/kit_example_react.erb.tt +7 -9
  109. data/lib/generators/kit/templates/kit_js.erb.tt +1 -1
  110. data/lib/generators/kit/templates/kit_jsx.erb.tt +29 -11
  111. data/lib/generators/kit/templates/kit_pack.erb.tt +3 -3
  112. data/lib/generators/kit/templates/kit_ruby_spec.erb.tt +0 -1
  113. data/lib/playbook/version.rb +1 -1
  114. data/lib/tasks/pb_release.rake +33 -22
  115. metadata +12 -4
@@ -0,0 +1,15 @@
1
+ import React from 'react'
2
+ import {Nav} from '../../'
3
+ import NavItem from '../_item.jsx'
4
+
5
+ function BlockNoTitleNav() {
6
+ return (
7
+ <Nav link='#' orientation='vertical'>
8
+ <NavItem link='#' active={true}>{`Active Nav Item using text prop`}</NavItem>
9
+ <NavItem link='#'>{`Nav Item using text prop`}</NavItem>
10
+ <NavItem link='#'>{`Nav Item using text prop`}</NavItem>
11
+ </Nav>
12
+ )
13
+ }
14
+
15
+ export default BlockNoTitleNav;
@@ -1,10 +1,14 @@
1
- import React from "react"
2
- import {Nav} from "../../"
3
- import NavItem from "../_item.jsx"
1
+ import React from 'react'
2
+ import {Nav} from '../../'
3
+ import NavItem from '../_item.jsx'
4
4
 
5
5
  function DefaultNav() {
6
6
  return (
7
- <h1>{`Coming Soon...`}</h1>
7
+ <Nav title='Title example' link='#' orientation='vertical'>
8
+ <NavItem text='Active Nav Item using text prop' link='#' active={true}/>
9
+ <NavItem text='Nav Item using text prop' link='#' />
10
+ <NavItem text='Nav Item using text prop' link='#' />
11
+ </Nav>
8
12
  )
9
13
  }
10
14
 
@@ -0,0 +1,15 @@
1
+ import React from 'react'
2
+ import {Nav} from '../../'
3
+ import NavItem from '../_item.jsx'
4
+
5
+ function HorizontalNav() {
6
+ return (
7
+ <Nav title='Title example' link='#' orientation='horizontal'>
8
+ <NavItem text='Active Nav Item using text prop' link='#' active={true}/>
9
+ <NavItem text='Nav Item using text prop' link='#' />
10
+ <NavItem text='Nav Item using text prop' link='#' />
11
+ </Nav>
12
+ )
13
+ }
14
+
15
+ export default HorizontalNav;
@@ -3,6 +3,10 @@ examples:
3
3
  - default_nav: Default
4
4
  - horizontal_nav: Horizontal Nav
5
5
  - block_nav: Block
6
- - block_no_title: Without Title
6
+ - block_no_title_nav: Without Title
7
7
  react:
8
8
  - default_nav: Default
9
+ - horizontal_nav: Horizontal Nav
10
+ - block_nav: Block Nav
11
+ - block_no_title_nav: Without Title
12
+
@@ -1 +1,4 @@
1
1
  export {default as DefaultNav} from './_default_nav.jsx';
2
+ export {default as HorizontalNav} from './_horizontal_nav.jsx';
3
+ export {default as BlockNav} from './_block_nav.jsx';
4
+ export {default as BlockNoTitleNav} from './_block_no_title_nav.jsx';
@@ -1,25 +1,26 @@
1
1
  <%= content_tag(:div,
2
- id: object.id,
3
- data: object.data,
4
- class: object.classname) do %>
5
- <%= pb_rails("person", props: {
6
- first_name: object.first_name,
7
- last_name: object.last_name,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname) do %>
5
+ <%= pb_rails("person", props: {
6
+ first_name: object.first_name,
7
+ last_name: object.last_name,
8
+ }) %>
9
+ <% object.valid_contacts.each do |contact| %>
10
+ <%= pb_rails("contact", props: {
11
+ contact_type: contact[:contact_type],
12
+ contact_value: contact[:contact_value],
13
+ contact_detail: contact[:contact_detail],
8
14
  }) %>
9
- <% object.contacts.each do |contact| %>
15
+ <% end %>
16
+ <% if object.wrong_contacts.present? %>
17
+ <%= pb_rails("caption", props: { classname: "wrong_numbers", text: "wrong number" }) %>
18
+
19
+ <% object.wrong_contacts.each do |wrong_number| %>
10
20
  <%= pb_rails("contact", props: {
11
- contact_type: contact[:contact_type],
12
- contact_value: contact[:contact_value],
13
- contact_detail: contact[:contact_detail],
21
+ contact_type: wrong_number[:contact_type],
22
+ contact_value: wrong_number[:contact_value],
14
23
  }) %>
15
24
  <% end %>
16
- <% unless object.wrong_contacts.empty? %>
17
- <%= pb_rails("caption", props: { text: "wrong number" })%>
18
- <% end %>
19
- <% object.wrong_contacts.each do |wrong_number| %>
20
- <%= pb_rails("contact", props: {
21
- contact_type: wrong_number[:contact_type],
22
- contact_value: wrong_number[:contact_value],
23
- }) %>
24
- <% end %>
25
+ <% end %>
25
26
  <% end %>
@@ -9,3 +9,7 @@
9
9
  flex-direction: column;
10
10
  margin-bottom: $space_xs;
11
11
  }
12
+
13
+ .wrong_numbers {
14
+ padding-top: $space_xs
15
+ }
@@ -0,0 +1,21 @@
1
+ <%= pb_rails("person_contact", props: {
2
+ first_name: "Pauline",
3
+ last_name: "Smith",
4
+ contacts: [
5
+ {
6
+ contact_type: "email",
7
+ contact_value: "email@example.com",
8
+ },
9
+ {
10
+ contact_value: 5555555555
11
+ },
12
+ {
13
+ contact_type: "wrong-phone",
14
+ contact_value: "3245627482",
15
+ },
16
+ {
17
+ contact_type: "phone",
18
+ contact_value: "3048615385",
19
+ },
20
+ ]
21
+ }) %>
@@ -4,8 +4,7 @@ examples:
4
4
  - person_contact_default: Default
5
5
  - person_contact_multiple: Multiple People
6
6
  - person_contact_with_detail: With Detail
7
-
8
-
7
+ - person_contact_with_wrong_numbers: With Wrong Numbers
9
8
 
10
9
  react:
11
10
  - person_contact_default: Default
@@ -12,11 +12,11 @@ module Playbook
12
12
  prop :last_name
13
13
 
14
14
  def wrong_contacts
15
- contacts.select { |contact| contact[:contact_type] == "wrong number" }
15
+ contacts.select { |contact| contact[:contact_type] == "wrong-phone" }
16
16
  end
17
17
 
18
18
  def valid_contacts
19
- contacts.reject { |contact| contact[:contact_type] == "wrong number" }
19
+ contacts.reject { |contact| contact[:contact_type] == "wrong-phone" }
20
20
  end
21
21
 
22
22
  def classname
@@ -33,9 +33,9 @@
33
33
  <% end %>
34
34
 
35
35
  <%= pb_rails("selectable_card", props: {
36
- input_id: "unselected_dark",
37
- name: "unselected_dark",
38
- value: "unselected_dark",
36
+ input_id: "disabled_dark",
37
+ name: "disabled_dark",
38
+ value: "disabled_dark",
39
39
  disabled: true,
40
40
  dark: true
41
41
  }) do %>
@@ -52,9 +52,9 @@ class SelectableCardDark extends React.Component {
52
52
 
53
53
  <SelectableCard
54
54
  dark
55
- inputId="unselected_dark"
56
- name="unselected_dark"
57
- value="unselected_dark"
55
+ inputId="disabled_dark"
56
+ name="disabled_dark"
57
+ value="disabled_dark"
58
58
  disabled={true}
59
59
  onChange={this.handleSelect}>
60
60
  {'Unselected'}
@@ -1,12 +1,12 @@
1
1
  <%= content_tag(:div,
2
2
  class: object.classname) do %>
3
3
  <% if object.label.present? %>
4
- <%= pb_rails("caption", props: {text: object.label}) %>
4
+ <%= pb_rails("caption", props: { text: object.label, dark: object.dark, classname: "pb_text_input_kit_label" }) %>
5
5
  <% end %>
6
6
  <%= content_tag(:div,
7
7
  class: "text_input_wrapper") do %>
8
8
  <% if object.children.present? %>
9
- <% instance_exec &object.children %>
9
+ <% capture(&object.children) %>
10
10
  <% else %>
11
11
  <%= tag(:input,
12
12
  id: object.id,
@@ -7,6 +7,7 @@ import {Caption} from '../'
7
7
 
8
8
  const propTypes = {
9
9
  className: PropTypes.string,
10
+ dark: PropTypes.bool,
10
11
  name: PropTypes.string,
11
12
  label: PropTypes.string,
12
13
  onChange: PropTypes.func,
@@ -27,6 +28,7 @@ class TextInput extends React.Component {
27
28
  render() {
28
29
  const {
29
30
  className,
31
+ dark,
30
32
  name,
31
33
  label,
32
34
  onChange = () => {},
@@ -36,13 +38,13 @@ class TextInput extends React.Component {
36
38
  } = this.props
37
39
 
38
40
  const css = classnames([
39
- `pb_text_input_kit`,
41
+ `pb_text_input_kit${dark === true ? '_dark' : ''}`,
40
42
  className,
41
43
  ])
42
44
 
43
45
  return (
44
46
  <div className={css}>
45
- <Caption text={label} />
47
+ <Caption text={label} dark={dark} />
46
48
  <div className='text_input_wrapper'>
47
49
  <input className='text_input'
48
50
  name={name}
@@ -1,57 +1,47 @@
1
- @import "../tokens/border_radius";
2
- @import "../tokens/colors";
3
- @import "../tokens/spacing";
4
- @import "../tokens/typography";
1
+ @import "../pb_textarea/textarea_mixin";
2
+ @import "../pb_body/body_mixins";
5
3
 
6
- .pb_text_input_kit {
7
- margin: 8px;
4
+ [class^=pb_text_input_kit] {
5
+ .pb_text_input_kit_label {
6
+ margin-bottom: $space_xs;
7
+ display: block;
8
+ }
8
9
 
9
10
  .text_input_wrapper {
10
- margin-bottom: 1rem;
11
+ margin-bottom: $space_sm;
12
+ display: block;
13
+
14
+ input::placeholder {
15
+ @include pb_body_light;
16
+ }
11
17
 
12
18
  > input:first-child {
13
- border: 1px solid $border-light;
14
- border-radius: $border-rad-light;
15
- display: block;
16
- width: 100%;
17
- color: $text_lt_default;
18
- background: $white;
19
+ @include pb_textarea_light;
20
+ overflow: hidden;
19
21
  padding: $space_xs $space_sm;
20
- transition: 0.2s all;
21
- outline: none;
22
- font-size: $font_small;
23
- margin: 0.1rem 0 0;
24
-
25
- &:focus {
26
- border-color: $primary-action;
27
- }
28
-
29
- &::-webkit-input-placeholder {
30
- color: $text_lt_lighter;
31
- opacity: 1;
32
- }
22
+ }
33
23
 
34
- &:-ms-input-placeholder {
35
- color: $text_lt_lighter;
36
- opacity: 1;
37
- }
24
+ input:focus {
25
+ @include pb_textarea_focus;
26
+ }
27
+ }
38
28
 
39
- &::-ms-input-placeholder {
40
- color: $text_lt_lighter;
41
- opacity: 1;
42
- }
29
+ &[class*=_dark] {
30
+ .text_input_wrapper {
31
+ margin-bottom: 1rem;
43
32
 
44
- &::placeholder {
45
- color: $text_lt_lighter;
46
- opacity: 1;
33
+ input::placeholder {
34
+ @include pb_body_light_dark;
47
35
  }
48
36
 
49
- &:-ms-input-placeholder {
50
- color: $text_lt_lighter;
37
+ > input:first-child {
38
+ @include pb_textarea_dark;
39
+ overflow: hidden;
40
+ padding: $space_xs $space_sm;
51
41
  }
52
42
 
53
- &::-ms-input-placeholder {
54
- color: $text_lt_lighter;
43
+ input:focus {
44
+ @include pb_textarea_focus_dark;
55
45
  }
56
46
  }
57
47
  }
@@ -0,0 +1,5 @@
1
+ <%= pb_rails("text_input", props: { label: "First Name", placeholder: "Enter first name", value: "Timothy Wenhold", dark: true }) %>
2
+ <%= pb_rails("text_input", props: { label: "Last Name", placeholder: "Enter last name", dark: true }) %>
3
+ <%= pb_rails("text_input", props: { label: "Phone Number", type: "phone", placeholder: "Enter phone number", dark: true }) %>
4
+ <%= pb_rails("text_input", props: { label: "Email Address", type: "email", placeholder: "Enter email address", dark: true }) %>
5
+ <%= pb_rails("text_input", props: { label: "Zip Code", type: "number", placeholder: "Enter zip code", dark: true }) %>
@@ -0,0 +1,78 @@
1
+ import React from "react"
2
+ import {
3
+ Caption,
4
+ TextInput,
5
+ Title,
6
+ } from "../../"
7
+
8
+ class TextInputDark extends React.Component {
9
+ state = {
10
+ firstName: ""
11
+ }
12
+
13
+ render() {
14
+ const handleOnChange = ({target}) => this.setState({firstName: target.value})
15
+
16
+ const {
17
+ firstName,
18
+ } = this.state
19
+
20
+ return (
21
+ <div>
22
+ <TextInput
23
+ label="First Name"
24
+ placeholder="Enter first name"
25
+ value="Timothy Wenhold"
26
+ dark
27
+ />
28
+ <TextInput
29
+ label="Last Name"
30
+ placeholder="Enter last name"
31
+ dark
32
+ />
33
+ <TextInput
34
+ label="Phone Number"
35
+ placeholder="Enter phone number"
36
+ type="phone"
37
+ dark
38
+ />
39
+ <TextInput
40
+ label="Email Address"
41
+ placeholder="Enter email address"
42
+ type="email"
43
+ dark
44
+ />
45
+ <TextInput
46
+ label="Zip Code"
47
+ placeholder="Enter zip code"
48
+ type="number"
49
+ dark
50
+ />
51
+
52
+ <br/>
53
+ <br/>
54
+
55
+ <Title dark>{`Event Handler Props`}</Title>
56
+
57
+ <br/>
58
+ <Caption>{`onChange`}</Caption>
59
+
60
+ <br/>
61
+
62
+ <TextInput
63
+ label="First Name"
64
+ onChange={handleOnChange}
65
+ placeholder="Enter first name"
66
+ value={firstName}
67
+ dark
68
+ />
69
+
70
+ <If condition={firstName !== ""}>
71
+ {`First name is: ${firstName}`}
72
+ </If>
73
+ </div>
74
+ )
75
+ }
76
+ }
77
+
78
+ export default TextInputDark
@@ -1,5 +1,8 @@
1
1
  examples:
2
2
  rails:
3
3
  - text_input_default: Default
4
+ - text_input_dark: Dark
4
5
  react:
5
6
  - text_input_default: Default
7
+ - text_input_dark: Dark
8
+
@@ -1 +1,2 @@
1
1
  export {default as TextInputDefault} from './_text_input_default.jsx';
2
+ export {default as TextInputDark} from './_text_input_dark.jsx';
@@ -7,6 +7,8 @@ module Playbook
7
7
 
8
8
  partial "pb_text_input/text_input"
9
9
 
10
+ prop :dark, type: Playbook::Props::Boolean,
11
+ default: false
10
12
  prop :label
11
13
  prop :name
12
14
  prop :placeholder
@@ -14,7 +16,13 @@ module Playbook
14
16
  prop :type, default: "text"
15
17
 
16
18
  def classname
17
- generate_classname("pb_text_input_kit")
19
+ generate_classname("pb_text_input_kit", dark_class)
20
+ end
21
+
22
+ private
23
+
24
+ def dark_class
25
+ dark ? "dark" : nil
18
26
  end
19
27
  end
20
28
  end