playbook_ui 7.3.0.pre.alpha2 → 7.3.0.pre.alpha3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (326) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -2
  3. data/app/controllers/playbook/application_controller.rb +0 -2
  4. data/app/pb_kits/playbook/_playbook.scss +1 -0
  5. data/app/pb_kits/playbook/data/menu.yml +4 -3
  6. data/app/pb_kits/playbook/index.js +5 -1
  7. data/app/pb_kits/playbook/pb_avatar/_avatar.jsx +5 -1
  8. data/app/pb_kits/playbook/pb_badge/_badge.jsx +4 -2
  9. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.html.erb +1 -12
  10. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.jsx +1 -1
  11. data/app/pb_kits/playbook/pb_bar_graph/bar_graph.rb +3 -2
  12. data/app/pb_kits/playbook/pb_body/body.rb +1 -1
  13. data/app/pb_kits/playbook/pb_button/_button.jsx +5 -1
  14. data/app/pb_kits/playbook/pb_button/_button_mixins.scss +1 -0
  15. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.jsx +7 -3
  16. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.scss +82 -90
  17. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_dark.scss +57 -0
  18. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_mixins.scss +27 -0
  19. data/app/pb_kits/playbook/pb_button_toolbar/button_toolbar.rb +4 -2
  20. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_default.html.erb +17 -7
  21. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_default.jsx +32 -9
  22. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_secondary.html.erb +18 -7
  23. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_secondary.jsx +37 -9
  24. data/app/pb_kits/playbook/pb_button_toolbar/docs/example.yml +3 -7
  25. data/app/pb_kits/playbook/pb_button_toolbar/docs/index.js +0 -2
  26. data/app/pb_kits/playbook/pb_caption/_caption.html.erb +7 -5
  27. data/app/pb_kits/playbook/pb_caption/_caption.jsx +2 -2
  28. data/app/pb_kits/playbook/pb_caption/docs/_caption_block.html.erb +11 -0
  29. data/app/pb_kits/playbook/pb_caption/docs/_caption_block.jsx +28 -0
  30. data/app/pb_kits/playbook/pb_caption/docs/example.yml +2 -0
  31. data/app/pb_kits/playbook/pb_caption/docs/index.js +1 -0
  32. data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +5 -2
  33. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +3 -1
  34. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_options.html.erb +10 -0
  35. data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +1 -0
  36. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.jsx +1 -1
  37. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.jsx +5 -1
  38. data/app/pb_kits/playbook/pb_contact/_contact.jsx +5 -1
  39. data/app/pb_kits/playbook/pb_currency/_currency.jsx +5 -1
  40. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.jsx +5 -1
  41. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +1 -2
  42. data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +3 -5
  43. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +3 -2
  44. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +37 -31
  45. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.html.erb +1 -2
  46. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.jsx +1 -2
  47. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.md +1 -0
  48. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.html.erb +4 -0
  49. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.jsx +4 -0
  50. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.html.erb +9 -9
  51. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.jsx +8 -8
  52. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.md +3 -1
  53. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_on_change.jsx +34 -0
  54. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_on_change.md +3 -0
  55. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.html.erb +1 -0
  56. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.jsx +1 -0
  57. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +1 -4
  58. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +1 -2
  59. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.html.erb +8 -14
  60. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.jsx +122 -39
  61. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +33 -2
  62. data/app/pb_kits/playbook/pb_date_range_inline/date_range_inline.rb +44 -9
  63. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.html.erb +14 -1
  64. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.jsx +45 -1
  65. data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.jsx +5 -1
  66. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.jsx +2 -2
  67. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.jsx +5 -1
  68. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.html.erb +1 -8
  69. data/app/pb_kits/playbook/pb_distribution_bar/distribution_bar.rb +7 -0
  70. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.html.erb +3 -2
  71. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.jsx +31 -17
  72. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +10 -0
  73. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_close.html.erb +21 -0
  74. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_close.jsx +38 -0
  75. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_default.html.erb +2 -1
  76. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_default.jsx +1 -2
  77. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line.html.erb +1 -1
  78. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line.jsx +1 -1
  79. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line_dark.html.erb +1 -1
  80. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line_dark.jsx +1 -1
  81. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +2 -0
  82. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/index.js +1 -0
  83. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +7 -1
  84. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/index.js +18 -0
  85. data/app/pb_kits/playbook/pb_flex/_flex.jsx +2 -2
  86. data/app/pb_kits/playbook/pb_flex/_flex_item.jsx +1 -1
  87. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +10 -2
  88. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  89. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +3 -3
  90. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +3 -3
  91. data/app/pb_kits/playbook/pb_form/form_builder/checkbox_field.rb +7 -2
  92. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +1 -0
  93. data/app/pb_kits/playbook/pb_form_pill/_form_pill.jsx +3 -2
  94. data/app/pb_kits/playbook/pb_gauge/_gauge.jsx +2 -2
  95. data/app/pb_kits/playbook/pb_highlight/_highlight.jsx +1 -1
  96. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.jsx +2 -2
  97. data/app/pb_kits/playbook/pb_icon/_icon.jsx +2 -2
  98. data/app/pb_kits/playbook/pb_icon_value/_icon_value.jsx +5 -1
  99. data/app/pb_kits/playbook/pb_image/_image.jsx +5 -1
  100. data/app/pb_kits/playbook/pb_label_pill/_label_pill.jsx +5 -1
  101. data/app/pb_kits/playbook/pb_layout/_layout.jsx +4 -4
  102. data/app/pb_kits/playbook/pb_line_graph/_line_graph.html.erb +1 -13
  103. data/app/pb_kits/playbook/pb_line_graph/_line_graph.jsx +1 -1
  104. data/app/pb_kits/playbook/pb_line_graph/line_graph.rb +3 -2
  105. data/app/pb_kits/playbook/pb_list/_list.jsx +3 -2
  106. data/app/pb_kits/playbook/pb_list/_list_item.jsx +3 -2
  107. data/app/pb_kits/playbook/pb_logistic/_logistic.jsx +5 -1
  108. data/app/pb_kits/playbook/pb_message/_message.jsx +5 -1
  109. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.jsx +5 -2
  110. data/app/pb_kits/playbook/pb_nav/_item.html.erb +3 -0
  111. data/app/pb_kits/playbook/pb_nav/_item.jsx +14 -1
  112. data/app/pb_kits/playbook/pb_nav/_nav.jsx +5 -2
  113. data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +22 -3
  114. data/app/pb_kits/playbook/pb_nav/docs/_borderless_nav.html.erb +6 -0
  115. data/app/pb_kits/playbook/pb_nav/docs/_borderless_nav.jsx +29 -0
  116. data/app/pb_kits/playbook/pb_nav/docs/_with_img_nav.html.erb +7 -0
  117. data/app/pb_kits/playbook/pb_nav/docs/_with_img_nav.jsx +42 -0
  118. data/app/pb_kits/playbook/pb_nav/docs/_with_img_nav.md +1 -0
  119. data/app/pb_kits/playbook/pb_nav/docs/example.yml +5 -0
  120. data/app/pb_kits/playbook/pb_nav/docs/index.js +2 -0
  121. data/app/pb_kits/playbook/pb_nav/item.rb +1 -0
  122. data/app/pb_kits/playbook/pb_nav/nav.rb +6 -1
  123. data/app/pb_kits/playbook/pb_person/_person.jsx +5 -1
  124. data/app/pb_kits/playbook/pb_person_contact/_person_contact.jsx +12 -7
  125. data/app/pb_kits/playbook/pb_person_contact/docs/_person_contact_with_wrong_numbers.jsx +1 -0
  126. data/app/pb_kits/playbook/pb_pill/_pill.scss +1 -0
  127. data/app/pb_kits/playbook/pb_popover/_popover.jsx +5 -1
  128. data/app/pb_kits/playbook/pb_popover/_popover.scss +6 -4
  129. data/app/pb_kits/playbook/pb_popover/index.js +3 -1
  130. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.jsx +4 -4
  131. data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +4 -1
  132. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +168 -33
  133. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.html.erb +3 -1
  134. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +10 -8
  135. data/app/pb_kits/playbook/pb_progress_step/docs/_description.md +1 -1
  136. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.html.erb +14 -16
  137. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.jsx +6 -3
  138. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker.html.erb +17 -1
  139. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker.jsx +17 -1
  140. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.jsx +10 -3
  141. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +11 -1
  142. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +1 -1
  143. data/app/pb_kits/playbook/pb_radio/_radio.html.erb +1 -1
  144. data/app/pb_kits/playbook/pb_radio/docs/_radio_options.html.erb +9 -0
  145. data/app/pb_kits/playbook/pb_radio/docs/example.yml +1 -0
  146. data/app/pb_kits/playbook/pb_radio/radio.rb +2 -4
  147. data/app/pb_kits/playbook/pb_section_separator/_section_separator.jsx +1 -3
  148. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +26 -47
  149. data/app/pb_kits/playbook/pb_section_separator/_section_separator_mixin.scss +32 -0
  150. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_line.jsx +6 -2
  151. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +2 -1
  152. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text_background.jsx +2 -1
  153. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_vertical.jsx +9 -3
  154. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +1 -1
  155. data/app/pb_kits/playbook/pb_select/_select.scss +1 -1
  156. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.html.erb +4 -4
  157. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_options.html.erb +16 -0
  158. data/app/pb_kits/playbook/pb_selectable_card/docs/example.yml +3 -2
  159. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.rb +16 -9
  160. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.html.erb +3 -2
  161. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_options.html.erb +16 -0
  162. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/example.yml +4 -3
  163. data/app/pb_kits/playbook/pb_selectable_card_icon/selectable_card_icon.rb +3 -0
  164. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.html.erb +3 -3
  165. data/app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_options.html.erb +15 -0
  166. data/app/pb_kits/playbook/pb_selectable_icon/docs/example.yml +3 -2
  167. data/app/pb_kits/playbook/pb_selectable_icon/selectable_icon.rb +10 -0
  168. data/app/pb_kits/playbook/pb_stat_change/_stat_change.jsx +2 -2
  169. data/app/pb_kits/playbook/pb_stat_value/_stat_value.jsx +3 -3
  170. data/app/pb_kits/playbook/pb_stat_value/docs/_stat_value_default.jsx +6 -1
  171. data/app/pb_kits/playbook/pb_table/_table.jsx +2 -2
  172. data/app/pb_kits/playbook/pb_table/docs/_table_action_middle.html.erb +34 -0
  173. data/app/pb_kits/playbook/pb_table/docs/_table_action_middle.jsx +68 -0
  174. data/app/pb_kits/playbook/pb_table/docs/_table_action_middle.md +2 -0
  175. data/app/pb_kits/playbook/pb_table/docs/_table_icon_buttons.html.erb +61 -0
  176. data/app/pb_kits/playbook/pb_table/docs/_table_icon_buttons.jsx +89 -0
  177. data/app/pb_kits/playbook/pb_table/docs/_table_icon_buttons.md +1 -0
  178. data/app/pb_kits/playbook/pb_table/docs/_table_one_action.html.erb +34 -0
  179. data/app/pb_kits/playbook/pb_table/docs/_table_one_action.jsx +68 -0
  180. data/app/pb_kits/playbook/pb_table/docs/_table_one_action.md +2 -0
  181. data/app/pb_kits/playbook/pb_table/docs/_table_two_actions.html.erb +43 -0
  182. data/app/pb_kits/playbook/pb_table/docs/_table_two_actions.jsx +80 -0
  183. data/app/pb_kits/playbook/pb_table/docs/_table_two_actions.md +1 -0
  184. data/app/pb_kits/playbook/pb_table/docs/_table_two_plus_actions.html.erb +34 -0
  185. data/app/pb_kits/playbook/pb_table/docs/_table_two_plus_actions.jsx +63 -0
  186. data/app/pb_kits/playbook/pb_table/docs/_table_two_plus_actions.md +1 -0
  187. data/app/pb_kits/playbook/pb_table/docs/example.yml +12 -0
  188. data/app/pb_kits/playbook/pb_table/docs/index.js +6 -0
  189. data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +1 -1
  190. data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +1 -1
  191. data/app/pb_kits/playbook/pb_time/_time.html.erb +17 -20
  192. data/app/pb_kits/playbook/pb_time/_time.jsx +42 -29
  193. data/app/pb_kits/playbook/pb_time/_time.scss +4 -24
  194. data/app/pb_kits/playbook/pb_time/docs/_time_align.jsx +4 -1
  195. data/app/pb_kits/playbook/pb_time/docs/_time_default.html.erb +11 -11
  196. data/app/pb_kits/playbook/pb_time/docs/_time_default.jsx +13 -1
  197. data/app/pb_kits/playbook/pb_time/docs/_time_sizes.jsx +4 -1
  198. data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.jsx +3 -1
  199. data/app/pb_kits/playbook/pb_time/docs/_time_timezone.html.erb +2 -1
  200. data/app/pb_kits/playbook/pb_time/docs/_time_timezone.jsx +7 -2
  201. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.jsx +1 -1
  202. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +5 -5
  203. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.jsx +3 -3
  204. data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +1 -1
  205. data/app/pb_kits/playbook/pb_title/_title.jsx +5 -1
  206. data/app/pb_kits/playbook/pb_title_count/_title_count.jsx +5 -1
  207. data/app/pb_kits/playbook/pb_title_detail/_title_detail.jsx +5 -5
  208. data/app/pb_kits/playbook/pb_toggle/_toggle.jsx +3 -3
  209. data/app/pb_kits/playbook/pb_toggle/_toggle.scss +41 -43
  210. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_options.html.erb +10 -0
  211. data/app/pb_kits/playbook/pb_toggle/docs/example.yml +1 -2
  212. data/app/pb_kits/playbook/pb_toggle/docs/index.js +0 -1
  213. data/app/pb_kits/playbook/pb_toggle/toggle.rb +5 -2
  214. data/app/pb_kits/playbook/pb_typeahead/_typeahead.html.erb +24 -20
  215. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +19 -1
  216. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +8 -1
  217. data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +21 -13
  218. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default.html.erb +4 -3
  219. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_context_dark.html.erb +1 -1
  220. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +25 -0
  221. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +0 -3
  222. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.md +8 -0
  223. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.html.erb +30 -0
  224. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.md +11 -0
  225. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.html.erb +25 -0
  226. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.jsx +0 -3
  227. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.md +1 -0
  228. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +3 -0
  229. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +24 -1
  230. data/app/pb_kits/playbook/pb_user_badge/_user_badge.jsx +5 -2
  231. data/app/pb_kits/playbook/props.rb +1 -1
  232. data/app/pb_kits/playbook/props/base.rb +6 -4
  233. data/app/pb_kits/playbook/react_rails_kits.js +6 -0
  234. data/app/pb_kits/playbook/tokens/_colors.scss +22 -23
  235. data/app/pb_kits/playbook/tokens/_typography.scss +4 -4
  236. data/app/pb_kits/playbook/tokens/index.scss +11 -0
  237. data/app/pb_kits/playbook/vendor.js +8 -0
  238. data/lib/playbook/engine.rb +1 -0
  239. data/lib/playbook/version.rb +1 -1
  240. metadata +47 -88
  241. data/app/controllers/playbook/guides_controller.rb +0 -11
  242. data/app/controllers/playbook/pages_controller.rb +0 -99
  243. data/app/controllers/playbook/samples_controller.rb +0 -40
  244. data/app/pb_kits/playbook/packs/application.js +0 -55
  245. data/app/pb_kits/playbook/packs/examples.js +0 -182
  246. data/app/pb_kits/playbook/packs/main.scss +0 -12
  247. data/app/pb_kits/playbook/packs/samples.js +0 -21
  248. data/app/pb_kits/playbook/packs/site_styles/_samples.scss +0 -72
  249. data/app/pb_kits/playbook/packs/site_styles/_scaffold.scss +0 -43
  250. data/app/pb_kits/playbook/packs/site_styles/_site-style.scss +0 -146
  251. data/app/pb_kits/playbook/packs/site_styles/docs/_all.scss +0 -10
  252. data/app/pb_kits/playbook/packs/site_styles/docs/_bg_light_doc_example.scss +0 -7
  253. data/app/pb_kits/playbook/packs/site_styles/docs/_code_snippet.scss +0 -531
  254. data/app/pb_kits/playbook/packs/site_styles/docs/_color_utilities.scss +0 -92
  255. data/app/pb_kits/playbook/packs/site_styles/docs/_flex_examples.scss +0 -15
  256. data/app/pb_kits/playbook/packs/site_styles/docs/_kit_doc.scss +0 -148
  257. data/app/pb_kits/playbook/packs/site_styles/docs/_kits_examples.scss +0 -15
  258. data/app/pb_kits/playbook/packs/site_styles/docs/_markdown.scss +0 -88
  259. data/app/pb_kits/playbook/packs/site_styles/docs/_spacing_tokens.scss +0 -72
  260. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_vertical.html.erb +0 -11
  261. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_vertical.jsx +0 -29
  262. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_vertical_secondary.html.erb +0 -11
  263. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_vertical_secondary.jsx +0 -34
  264. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.html.erb +0 -4
  265. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.jsx +0 -13
  266. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.md +0 -1
  267. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dark.html.erb +0 -4
  268. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dark.jsx +0 -13
  269. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_size.html.erb +0 -11
  270. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_size.jsx +0 -44
  271. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_summary.jsx +0 -45
  272. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_summary.jsx +0 -27
  273. data/app/views/layouts/playbook/_mobile_hamburger.html.erb +0 -2
  274. data/app/views/layouts/playbook/_nav.html.erb +0 -37
  275. data/app/views/layouts/playbook/_sidebar.html.erb +0 -51
  276. data/app/views/layouts/playbook/application.html.erb +0 -26
  277. data/app/views/layouts/playbook/fullscreen.html.slim +0 -10
  278. data/app/views/layouts/playbook/grid.html.slim +0 -10
  279. data/app/views/layouts/playbook/samples.html.erb +0 -19
  280. data/app/views/playbook/guides/create_kit.html.slim +0 -16
  281. data/app/views/playbook/guides/create_kit/_file_naming.html.md +0 -2
  282. data/app/views/playbook/guides/create_kit/_generator.html.md +0 -6
  283. data/app/views/playbook/guides/create_kit/_kit_examples.html.md +0 -2
  284. data/app/views/playbook/guides/create_kit/_kit_rails.html.md +0 -2
  285. data/app/views/playbook/guides/create_kit/_kit_react.html.md +0 -2
  286. data/app/views/playbook/guides/create_kit/_layout.html.md +0 -2
  287. data/app/views/playbook/guides/create_kit/_view_objects.html.md +0 -2
  288. data/app/views/playbook/guides/create_kit/_writing_sass.md +0 -10
  289. data/app/views/playbook/guides/use_nitro.html.slim +0 -6
  290. data/app/views/playbook/guides/use_nitro/_local.html.md +0 -2
  291. data/app/views/playbook/guides/use_nitro/_nitro_components.html.md +0 -2
  292. data/app/views/playbook/guides/use_nitro/_versions.html.md +0 -2
  293. data/app/views/playbook/pages/fullscreen.html.slim +0 -10
  294. data/app/views/playbook/pages/grid.html.slim +0 -2
  295. data/app/views/playbook/pages/home.html.slim +0 -4
  296. data/app/views/playbook/pages/kit_category_show.html.erb +0 -14
  297. data/app/views/playbook/pages/kit_show.html.erb +0 -33
  298. data/app/views/playbook/pages/kits.html.erb +0 -12
  299. data/app/views/playbook/pages/principals/_getting_started.html.md +0 -30
  300. data/app/views/playbook/pages/principles.html.slim +0 -3
  301. data/app/views/playbook/pages/tokens.html.slim +0 -15
  302. data/app/views/playbook/pages/tokens/_pb_doc_spacing.html.slim +0 -61
  303. data/app/views/playbook/pages/utilities.html.slim +0 -116
  304. data/app/views/playbook/pages/utilities/_pb_doc_color.html.slim +0 -15
  305. data/app/views/playbook/samples/collection_detail/index.html.erb +0 -169
  306. data/app/views/playbook/samples/collection_detail/index.jsx +0 -372
  307. data/app/views/playbook/samples/dashboards/index.html.erb +0 -81
  308. data/app/views/playbook/samples/dashboards/index.jsx +0 -130
  309. data/app/views/playbook/samples/filter_table/index.html.erb +0 -348
  310. data/app/views/playbook/samples/filter_table/index.jsx +0 -433
  311. data/app/views/playbook/samples/registration/index.html.erb +0 -316
  312. data/app/views/playbook/samples/registration/index.jsx +0 -476
  313. data/app/views/playbook/samples/sample_show.html.erb +0 -36
  314. data/lib/generators/kit/USAGE +0 -5
  315. data/lib/generators/kit/kit_generator.rb +0 -95
  316. data/lib/generators/kit/templates/kit_example_rails.erb.tt +0 -1
  317. data/lib/generators/kit/templates/kit_example_react.erb.tt +0 -10
  318. data/lib/generators/kit/templates/kit_example_yml.erb.tt +0 -9
  319. data/lib/generators/kit/templates/kit_html.erb.tt +0 -7
  320. data/lib/generators/kit/templates/kit_js.erb.tt +0 -1
  321. data/lib/generators/kit/templates/kit_jsx.erb.tt +0 -68
  322. data/lib/generators/kit/templates/kit_ruby.erb.tt +0 -11
  323. data/lib/generators/kit/templates/kit_ruby_spec.erb.tt +0 -11
  324. data/lib/generators/kit/templates/kit_scss.erb +0 -3
  325. data/lib/tasks/pb_release.rake +0 -77
  326. data/lib/tasks/playbook_tasks.rake +0 -26
@@ -46,7 +46,7 @@ type LayoutFooterProps = {
46
46
  const Side = (props: LayoutSideProps) => {
47
47
  const { children, className } = props
48
48
  return (
49
- <div className={classnames('layout_sidebar', className, globalProps(props))}>
49
+ <div className={classnames('layout_sidebar', globalProps(props), className)}>
50
50
  {children}
51
51
  </div>
52
52
  )
@@ -56,7 +56,7 @@ const Side = (props: LayoutSideProps) => {
56
56
  const Body = (props: LayoutBodyProps) => {
57
57
  const { children, className } = props
58
58
  return (
59
- <div className={classnames('layout_body', className, globalProps(props))}>
59
+ <div className={classnames('layout_body', globalProps(props), className)}>
60
60
  {children}
61
61
  </div>
62
62
  )
@@ -66,7 +66,7 @@ const Body = (props: LayoutBodyProps) => {
66
66
  const Header = (props: LayoutHeaderProps) => {
67
67
  const { children, className } = props
68
68
  return (
69
- <div className={classnames('layout_header', className, globalProps(props))}>
69
+ <div className={classnames('layout_header', globalProps(props), className)}>
70
70
  {children}
71
71
  </div>
72
72
  )
@@ -76,7 +76,7 @@ const Header = (props: LayoutHeaderProps) => {
76
76
  const Footer = (props: LayoutFooterProps) => {
77
77
  const { children, className } = props
78
78
  return (
79
- <div className={classnames('layout_footer', className, globalProps(props))}>
79
+ <div className={classnames('layout_footer', globalProps(props), className)}>
80
80
  {children}
81
81
  </div>
82
82
  )
@@ -1,13 +1 @@
1
- <%= content_tag(:div, "",
2
- aria: object.aria,
3
- id: object.id,
4
- data: object.data,
5
- class: object.classname
6
- ) %>
7
- <% content_for :pb_js do %>
8
- <%= javascript_tag do %>
9
- window.addEventListener('DOMContentLoaded', function() {
10
- new pbChart('.selector', <%= object.chart_options %>)
11
- })
12
- <% end %>
13
- <% end %>
1
+ <%= react_component('LineGraph', object.chart_options) %>
@@ -77,7 +77,7 @@ export default class LineGraph extends React.Component<LineGraphProps> {
77
77
 
78
78
  return (
79
79
  <div
80
- className={classnames(className, globalProps(this.props))}
80
+ className={classnames(globalProps(this.props), className)}
81
81
  id={id}
82
82
  />
83
83
  )
@@ -16,7 +16,7 @@ module Playbook
16
16
  prop :subtitle
17
17
  prop :title
18
18
  prop :x_axis_categories, type: Playbook::Props::Array,
19
- default:[]
19
+ default: []
20
20
  prop :y_axis_min, type: Playbook::Props::Numeric
21
21
  prop :y_axis_max, type: Playbook::Props::Numeric
22
22
  prop :legend, type: Playbook::Props::Boolean,
@@ -32,6 +32,7 @@ module Playbook
32
32
  def chart_options
33
33
  {
34
34
  id: id,
35
+ className: classname,
35
36
  chartData: chart_data,
36
37
  type: chart_type,
37
38
  title: title,
@@ -44,7 +45,7 @@ module Playbook
44
45
  legend: legend,
45
46
  toggleLegendClick: toggle_legend_click,
46
47
  height: height,
47
- }.to_json.html_safe
48
+ }
48
49
  end
49
50
 
50
51
  def classname
@@ -52,8 +52,9 @@ const List = (props: ListProps) => {
52
52
  borderless: borderless,
53
53
  ordered: ordered,
54
54
  xpadding: xpadding,
55
- }), className,
56
- globalProps(props)
55
+ }),
56
+ globalProps(props),
57
+ className
57
58
  )
58
59
 
59
60
  return (
@@ -27,8 +27,9 @@ const ListItem = (props: ListItemProps) => {
27
27
  const ariaProps = buildAriaProps(aria)
28
28
  const dataProps = buildDataProps(data)
29
29
  const classes = classnames(
30
- buildCss('pb_item_kit'), className,
31
- globalProps(props)
30
+ buildCss('pb_item_kit'),
31
+ globalProps(props),
32
+ className
32
33
  )
33
34
 
34
35
  return (
@@ -40,7 +40,11 @@ const Logistic = (props: LogisticProps) => {
40
40
  const ariaProps = buildAriaProps(aria)
41
41
  const dataProps = buildDataProps(data)
42
42
  const formattedDate = new DateTime({ value: date })
43
- const classes = classnames(buildCss('pb_logistic_kit', { dark: dark }), className, globalProps(props))
43
+ const classes = classnames(
44
+ buildCss('pb_logistic_kit', { dark }),
45
+ globalProps(props),
46
+ className
47
+ )
44
48
 
45
49
  return (
46
50
  <div
@@ -39,7 +39,11 @@ const Message = (props: MessageProps) => {
39
39
  ? 'pb_message_kit_avatar'
40
40
  : 'pb_message_kit'
41
41
 
42
- const classes = classnames(buildCss(baseClassName), className, globalProps(props))
42
+ const classes = classnames(
43
+ buildCss(baseClassName),
44
+ globalProps(props),
45
+ className
46
+ )
43
47
 
44
48
  return (
45
49
  <div
@@ -36,8 +36,11 @@ const MultipleUsers = (props: MultipleUsersProps) => {
36
36
  const reverseClass = reverse === true ? 'reverse' : ''
37
37
  const ariaProps = buildAriaProps(aria)
38
38
  const dataProps = buildDataProps(data)
39
- const classes = classnames(buildCss('pb_multiple_users_kit', reverseClass),
40
- className, globalProps(props))
39
+ const classes = classnames(
40
+ buildCss('pb_multiple_users_kit', reverseClass),
41
+ globalProps(props),
42
+ className
43
+ )
41
44
 
42
45
  return (
43
46
  <div
@@ -5,6 +5,9 @@
5
5
  id: object.id) do %>
6
6
  <%= content_tag(object.tag,
7
7
  object.link ? object.link_options : object.options) do %>
8
+ <% if object.image_url %>
9
+ <%= pb_rails("image", props: { url: object.image_url, classname: "pb_nav_img_wrapper" }) %>
10
+ <% end %>
8
11
  <% if object.icon_left %>
9
12
  <%= pb_rails("icon", props: { icon: object.icon_left, classname: "pb_nav_list_item_icon_left", fixed_width: true}) %>
10
13
  <% end %>
@@ -2,7 +2,7 @@
2
2
 
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
- import { Icon } from '../'
5
+ import { Icon, Image } from '../'
6
6
  import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
7
7
  import { globalProps } from '../utilities/globalProps.js'
8
8
 
@@ -15,6 +15,7 @@ type NavItemProps = {
15
15
  iconLeft: string,
16
16
  iconRight: string,
17
17
  id?: string,
18
+ imageUrl: String,
18
19
  link: string,
19
20
  onClick?: EventHandler,
20
21
  text: string,
@@ -30,6 +31,7 @@ const NavItem = (props: NavItemProps) => {
30
31
  iconLeft,
31
32
  iconRight,
32
33
  id,
34
+ imageUrl,
33
35
  link,
34
36
  onClick = () => {},
35
37
  text = '',
@@ -53,6 +55,17 @@ const NavItem = (props: NavItemProps) => {
53
55
  href={link}
54
56
  onClick={onClick}
55
57
  >
58
+ <If condition={imageUrl}>
59
+ <div
60
+ className="pb_nav_list_item_icon_section"
61
+ key={imageUrl}
62
+ >
63
+ <Image
64
+ className="pb_nav_img_wrapper"
65
+ url={imageUrl}
66
+ />
67
+ </div>
68
+ </If>
56
69
  <If condition={iconLeft}>
57
70
  <div
58
71
  className="pb_nav_list_item_icon_section"
@@ -8,6 +8,7 @@ import { globalProps } from '../utilities/globalProps.js'
8
8
 
9
9
  type NavProps = {
10
10
  aria?: object,
11
+ borderless?: boolean,
11
12
  children?: React.Node,
12
13
  className?: string | array<string>,
13
14
  data?: object,
@@ -22,6 +23,7 @@ type NavProps = {
22
23
  const Nav = (props: NavProps) => {
23
24
  const {
24
25
  aria = {},
26
+ borderless = false,
25
27
  children,
26
28
  className,
27
29
  data = {},
@@ -39,9 +41,10 @@ const Nav = (props: NavProps) => {
39
41
  const cardCss = classnames(
40
42
  buildCss('pb_nav_list', variant, orientation, {
41
43
  highlight: highlight,
44
+ borderless: borderless,
42
45
  }),
43
- className,
44
- globalProps(props)
46
+ globalProps(props),
47
+ className
45
48
  )
46
49
 
47
50
  return (
@@ -40,7 +40,7 @@ $selector: ".pb_nav_list";
40
40
  text-decoration: none;
41
41
  display: flex;
42
42
  align-items: center;
43
- padding: $space_sm $space_md $space_sm ($space_md - 3px);
43
+ padding: $space_sm $space_sm $space_sm ($space_sm - 3px);
44
44
  border: 0 solid transparent;
45
45
  border-width: 0 0 0 3px;
46
46
  transition-property: color, border-color, background-color;
@@ -59,7 +59,7 @@ $selector: ".pb_nav_list";
59
59
  }
60
60
  [class*=_icon_left] {
61
61
  font-size: $font_large;
62
- margin-right: $space_sm;
62
+ margin-right: $space_xs;
63
63
  color: $text_lt_lighter;
64
64
  }
65
65
  [class*=_icon_right] {
@@ -69,10 +69,14 @@ $selector: ".pb_nav_list";
69
69
  }
70
70
  [class*=_text] {
71
71
  font-size: $font_base;
72
- font-weight: $bold;
73
72
  color: $text_lt_default;
74
73
  flex: 1;
75
74
  }
75
+ [class*=_img_left] {
76
+ margin-right: $space_xs;
77
+ height: 20px;
78
+ width: 25px;
79
+ }
76
80
  }
77
81
  &:last-child {
78
82
  border-bottom: 0;
@@ -167,4 +171,19 @@ $selector: ".pb_nav_list";
167
171
  }
168
172
  }
169
173
 
174
+ //Borderless
175
+ &[class*=_borderless] {
176
+ [class*=pb_nav_list_kit_item] {
177
+ list-style: none;
178
+ border-bottom: 0;
179
+ }
180
+ }
181
+
182
+ }
183
+
184
+ //Image Wrapper
185
+ .pb_nav_img_wrapper {
186
+ width: 24px;
187
+ height: 24px;
188
+ margin-right: $space_xs;
170
189
  }
@@ -0,0 +1,6 @@
1
+ <%= pb_rails("nav", props: {borderless: true}) do %>
2
+ <%= pb_rails("nav/item", props: { text: "Photos", link: "#" }) %>
3
+ <%= pb_rails("nav/item", props: { text: "Music", link: "#" }) %>
4
+ <%= pb_rails("nav/item", props: { text: "Video", link: "#", active: true }) %>
5
+ <%= pb_rails("nav/item", props: { text: "Files", link: "#" }) %>
6
+ <% end %>
@@ -0,0 +1,29 @@
1
+ import React from 'react'
2
+ import { Nav } from '../../'
3
+ import NavItem from '../_item.jsx'
4
+
5
+ const BorderlessNav = () => {
6
+ return (
7
+ <Nav borderless>
8
+ <NavItem
9
+ active
10
+ link="#"
11
+ text="All Categories"
12
+ />
13
+ <NavItem
14
+ link="#"
15
+ text="Food"
16
+ />
17
+ <NavItem
18
+ link="#"
19
+ text="Digital"
20
+ />
21
+ <NavItem
22
+ link="#"
23
+ text="Design Art"
24
+ />
25
+ </Nav>
26
+ )
27
+ }
28
+
29
+ export default BorderlessNav
@@ -0,0 +1,7 @@
1
+ <%= pb_rails("nav", props: {title: "Browse", link: "#"}) do %>
2
+ <%= pb_rails("nav/item", props: { image_url: "https://upload.wikimedia.org/wikipedia/commons/0/00/Apple_News_icon_%28macOS%29.png", text: "News Feed" }) %>
3
+ <%= pb_rails("nav/item", props: { image_url: "https://p7.hiclipart.com/preview/928/339/723/messages-iphone-apple-imessage-iphone-thumbnail.jpg", link: "#", text: "Messages", active: true }) %>
4
+ <%= pb_rails("nav/item", props: { image_url: "https://www.clipartmax.com/png/middle/103-1038653_circle-icons-calendar-svg-event-icon.png", icon_right: "angle-down", link: "#", text: "Events" }) %>
5
+ <%= pb_rails("nav/item", props: { image_url: "https://www.pngitem.com/pimgs/m/228-2289227_find-friends-icon-png-image-iphone-find-my.png", link: "#", text: "Friends" }) %>
6
+ <%= pb_rails("nav/item", props: { image_url: "https://img.favpng.com/18/5/20/blue-human-behavior-silhouette-area-communication-png-favpng-wLT3QYknSwc68uu9GAUHGS5FY_t.jpg", icon_right: "angle-down", link: "#", text: "Groups" }) %>
7
+ <% end %>
@@ -0,0 +1,42 @@
1
+ import React from 'react'
2
+ import { Nav } from '../../'
3
+ import NavItem from '../_item.jsx'
4
+
5
+ const WithImageNav = () => {
6
+ return (
7
+ <Nav
8
+ link="#"
9
+ title="Browse"
10
+ >
11
+ <NavItem
12
+ imageUrl="https://upload.wikimedia.org/wikipedia/commons/0/00/Apple_News_icon_%28macOS%29.png"
13
+ text="News Feed"
14
+ />
15
+ <NavItem
16
+ active
17
+ imageUrl="https://p7.hiclipart.com/preview/928/339/723/messages-iphone-apple-imessage-iphone-thumbnail.jpg"
18
+ link="#"
19
+ text="Messages"
20
+ />
21
+ <NavItem
22
+ iconRight="angle-down"
23
+ imageUrl="https://www.clipartmax.com/png/middle/103-1038653_circle-icons-calendar-svg-event-icon.png"
24
+ link="#"
25
+ text="Events"
26
+ />
27
+ <NavItem
28
+ imageUrl="https://www.pngitem.com/pimgs/m/228-2289227_find-friends-icon-png-image-iphone-find-my.png"
29
+ link="#"
30
+ text="Friends"
31
+ />
32
+ <NavItem
33
+ iconRight="angle-down"
34
+ imageUrl="https://img.favpng.com/18/5/20/blue-human-behavior-silhouette-area-communication-png-favpng-wLT3QYknSwc68uu9GAUHGS5FY_t.jpg"
35
+ link="#"
36
+ text="Groups"
37
+ />
38
+ </Nav>
39
+ )
40
+ }
41
+
42
+ export default WithImageNav
@@ -0,0 +1 @@
1
+ Icon used needs to be square. Icon size is 24px by 24px.
@@ -2,7 +2,9 @@ examples:
2
2
  rails:
3
3
  - default_nav: Default
4
4
  - with_icons_nav: With Icons
5
+ - with_img_nav: With Custom Icon
5
6
  - no_highlight_nav: No Highlight
7
+ - borderless_nav: No Borders
6
8
  - subtle_nav: Subtle Variant
7
9
  - subtle_with_icons_nav: Subtle With Icons
8
10
  - subtle_no_highlight_nav: Subtle No Highlight
@@ -13,10 +15,13 @@ examples:
13
15
  react:
14
16
  - default_nav: Default
15
17
  - with_icons_nav: With Icons
18
+ - with_img_nav: With Custom Icon
16
19
  - no_highlight_nav: No Highlight
20
+ - borderless_nav: No Borders
17
21
  - subtle_nav: Subtle Variant
18
22
  - subtle_with_icons_nav: Subtle With Icons
19
23
  - subtle_no_highlight_nav: Subtle No Highlight
20
24
  - horizontal_nav: Horizontal Nav
21
25
  - block_nav: Block
22
26
  - block_no_title_nav: Without Title
27
+
@@ -3,7 +3,9 @@ export { default as HorizontalNav } from './_horizontal_nav.jsx'
3
3
  export { default as BlockNav } from './_block_nav.jsx'
4
4
  export { default as BlockNoTitleNav } from './_block_no_title_nav.jsx'
5
5
  export { default as NoHighlightNav } from './_no_highlight_nav.jsx'
6
+ export { default as BorderlessNav } from './_borderless_nav.jsx'
6
7
  export { default as SubtleNav } from './_subtle_nav.jsx'
7
8
  export { default as SubtleNoHighlightNav } from './_subtle_no_highlight_nav.jsx'
8
9
  export { default as WithIconsNav } from './_with_icons_nav.jsx'
9
10
  export { default as SubtleWithIconsNav } from './_subtle_with_icons_nav.jsx'
11
+ export { default as WithImgNav } from './_with_img_nav.jsx'
@@ -12,6 +12,7 @@ module Playbook
12
12
  prop :text
13
13
  prop :icon_left
14
14
  prop :icon_right
15
+ prop :image_url
15
16
 
16
17
  def classname
17
18
  generate_classname("pb_nav_list_kit_item", active_class)
@@ -17,14 +17,19 @@ module Playbook
17
17
  values: %w[normal subtle],
18
18
  default: "normal"
19
19
  prop :highlight, type: Playbook::Props::Boolean, default: true
20
+ prop :borderless, type: Playbook::Props::Boolean, default: false
20
21
 
21
22
  def classname
22
- generate_classname("pb_nav_list", variant, orientation, highlight_class)
23
+ generate_classname("pb_nav_list", variant, orientation, highlight_class, borderless_class)
23
24
  end
24
25
 
25
26
  def highlight_class
26
27
  highlight ? "highlight" : nil
27
28
  end
29
+
30
+ def borderless_class
31
+ borderless ? "borderless" : nil
32
+ end
28
33
  end
29
34
  end
30
35
  end