playbook_ui 13.34.1 → 14.0.0.pre.alpha.PLAY14113475

Sign up to get free protection for your applications and to get access to all the features.
Files changed (466) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +17 -17
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +5 -2
  4. data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableBody.tsx +24 -20
  5. data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableHeader.tsx +17 -12
  6. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +86 -1
  7. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +5 -1
  8. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +31 -1
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail.jsx +1 -1
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_default.jsx +1 -1
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_expanded_control.jsx +1 -1
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.jsx +1 -1
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_loading.jsx +2 -2
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_responsive.jsx +67 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_responsive.md +1 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort.jsx +1 -1
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_control.jsx +1 -1
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_subrow_headers.jsx +1 -1
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_options.jsx +1 -1
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.jsx +1 -1
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -0
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -1
  23. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +0 -30
  24. data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +19 -1
  25. data/app/pb_kits/playbook/pb_avatar/avatar.rb +44 -1
  26. data/app/pb_kits/playbook/pb_avatar/avatar.test.js +17 -0
  27. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_badge_component_overlay.jsx +1 -1
  28. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_circle_icon_component_overlay.jsx +1 -1
  29. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_default.jsx +1 -1
  30. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_monogram.jsx +1 -1
  31. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_no_image.jsx +1 -1
  32. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_status.jsx +1 -1
  33. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.scss +3 -3
  34. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.tsx +0 -2
  35. data/app/pb_kits/playbook/pb_background/_background.tsx +13 -7
  36. data/app/pb_kits/playbook/pb_background/docs/_background_category.jsx +2 -2
  37. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx +1 -1
  38. data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +2 -2
  39. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +1 -1
  40. data/app/pb_kits/playbook/pb_background/docs/_background_size.jsx +1 -1
  41. data/app/pb_kits/playbook/pb_background/docs/_background_status.jsx +2 -2
  42. data/app/pb_kits/playbook/pb_background/docs/_background_status_subtle.jsx +2 -2
  43. data/app/pb_kits/playbook/pb_background/docs/_background_white.jsx +1 -1
  44. data/app/pb_kits/playbook/pb_badge/_badge.scss +8 -2
  45. data/app/pb_kits/playbook/pb_badge/_badge.tsx +4 -2
  46. data/app/pb_kits/playbook/pb_badge/badge.rb +1 -1
  47. data/app/pb_kits/playbook/pb_badge/badge.test.js +17 -11
  48. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.html.erb +13 -0
  49. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.jsx +31 -12
  50. data/app/pb_kits/playbook/pb_bar_graph/barGraphSettings.js +1 -1
  51. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend.jsx +1 -1
  52. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_non_clickable.jsx +1 -1
  53. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.jsx +1 -1
  54. data/app/pb_kits/playbook/pb_body/_body.scss +1 -1
  55. data/app/pb_kits/playbook/pb_body/docs/_body_articles.jsx +1 -1
  56. data/app/pb_kits/playbook/pb_body/docs/_body_block.jsx +1 -1
  57. data/app/pb_kits/playbook/pb_body/docs/_body_light.jsx +1 -1
  58. data/app/pb_kits/playbook/pb_body/docs/_body_styled.jsx +1 -1
  59. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumb_item.tsx +0 -2
  60. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.scss +1 -1
  61. data/app/pb_kits/playbook/pb_bread_crumbs/bread_crumbs.test.js +1 -1
  62. data/app/pb_kits/playbook/pb_bread_crumbs/docs/_bread_crumbs_default.jsx +1 -1
  63. data/app/pb_kits/playbook/pb_button/docs/_button_accessibility.jsx +1 -1
  64. data/app/pb_kits/playbook/pb_button/docs/_button_block_content.jsx +1 -1
  65. data/app/pb_kits/playbook/pb_button/docs/_button_default.jsx +1 -1
  66. data/app/pb_kits/playbook/pb_button/docs/_button_form.jsx +1 -1
  67. data/app/pb_kits/playbook/pb_button/docs/_button_full_width.jsx +1 -1
  68. data/app/pb_kits/playbook/pb_button/docs/_button_hover.jsx +1 -1
  69. data/app/pb_kits/playbook/pb_button/docs/_button_icon_options.jsx +1 -1
  70. data/app/pb_kits/playbook/pb_button/docs/_button_link.jsx +1 -1
  71. data/app/pb_kits/playbook/pb_button/docs/_button_loading.jsx +1 -1
  72. data/app/pb_kits/playbook/pb_button/docs/_button_reaction.jsx +1 -1
  73. data/app/pb_kits/playbook/pb_button/docs/_button_size.jsx +1 -1
  74. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.tsx +0 -2
  75. data/app/pb_kits/playbook/pb_button_toolbar/button_toolbar.test.js +1 -1
  76. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_default.jsx +1 -1
  77. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_secondary.jsx +1 -1
  78. data/app/pb_kits/playbook/pb_caption/docs/_caption_block.jsx +1 -1
  79. data/app/pb_kits/playbook/pb_caption/docs/_caption_colors.jsx +1 -1
  80. data/app/pb_kits/playbook/pb_caption/docs/_caption_light.jsx +1 -1
  81. data/app/pb_kits/playbook/pb_card/_card.scss +1 -1
  82. data/app/pb_kits/playbook/pb_card/docs/_card_background.jsx +1 -1
  83. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_error.jsx +1 -1
  84. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.jsx +1 -1
  85. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +1 -1
  86. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +3 -3
  87. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_click.jsx +1 -1
  88. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_color.jsx +1 -1
  89. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_custom_main.jsx +1 -1
  90. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_custom_main_with_icon.jsx +1 -1
  91. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +1 -1
  92. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_icons.jsx +1 -1
  93. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_size.jsx +1 -1
  94. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_state.jsx +1 -1
  95. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.jsx +1 -1
  96. data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.jsx +1 -1
  97. data/app/pb_kits/playbook/pb_currency/docs/_currency_unstyled.jsx +1 -1
  98. data/app/pb_kits/playbook/pb_dashboard/commonSettings.js +2 -2
  99. data/app/pb_kits/playbook/pb_dashboard/pbChartsColorsHelper.ts +1 -1
  100. data/app/pb_kits/playbook/pb_dashboard/pbChartsDarkTheme.ts +2 -2
  101. data/app/pb_kits/playbook/pb_dashboard/pbChartsLightTheme.ts +2 -2
  102. data/app/pb_kits/playbook/pb_dashboard_value/dashboardValueSettings.ts +2 -2
  103. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +1 -1
  104. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +2 -2
  105. data/app/pb_kits/playbook/pb_date/docs/_date_unstyled.jsx +1 -1
  106. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +1 -1
  107. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_on_change.jsx +1 -1
  108. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_on_close.jsx +1 -1
  109. data/app/pb_kits/playbook/pb_date_picker/docs/_description.md +3 -1
  110. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_input_styles.scss +1 -1
  111. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_overrides.scss +2 -4
  112. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +4 -4
  113. data/app/pb_kits/playbook/pb_date_range_stacked/docs/_date_range_stacked_default.jsx +1 -1
  114. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +4 -4
  115. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js +1 -2
  116. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_default.jsx +1 -1
  117. data/app/pb_kits/playbook/pb_detail/docs/_detail_bold.jsx +1 -1
  118. data/app/pb_kits/playbook/pb_detail/docs/_detail_colors.jsx +1 -1
  119. data/app/pb_kits/playbook/pb_detail/docs/_detail_default.jsx +1 -1
  120. data/app/pb_kits/playbook/pb_detail/docs/_detail_styled.jsx +1 -1
  121. data/app/pb_kits/playbook/pb_dialog/dialog.test.jsx +1 -1
  122. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.jsx +1 -1
  123. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_default.jsx +1 -1
  124. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height.jsx +1 -1
  125. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height_placement.jsx +1 -1
  126. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_scrollable.jsx +1 -1
  127. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_separators.jsx +1 -3
  128. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_should_close_on_overlay.jsx +1 -1
  129. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_sizes.jsx +1 -2
  130. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_stacked_alert.jsx +1 -1
  131. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_status.jsx +30 -29
  132. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_default.jsx +1 -1
  133. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers.jsx +1 -1
  134. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards.jsx +1 -1
  135. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list.jsx +1 -1
  136. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list.jsx +1 -1
  137. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +1 -1
  138. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +1 -1
  139. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection.jsx +1 -1
  140. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.jsx +1 -1
  141. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_value.jsx +1 -1
  142. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_error.jsx +1 -1
  143. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subcomponent_structure.jsx +1 -1
  144. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +1 -1
  145. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.jsx +1 -1
  146. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.jsx +1 -1
  147. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_options.jsx +1 -1
  148. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_padding.jsx +1 -1
  149. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_trigger.jsx +1 -1
  150. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_external_control.jsx +1 -1
  151. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_hook.jsx +1 -1
  152. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.jsx +1 -1
  153. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +1 -1
  154. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_accept.jsx +2 -3
  155. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_custom_description.jsx +2 -3
  156. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_custom_message.jsx +2 -3
  157. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_default.jsx +2 -3
  158. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_max_size.jsx +3 -4
  159. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +1 -1
  160. data/app/pb_kits/playbook/pb_filter/docs/_filter_max_height.jsx +1 -1
  161. data/app/pb_kits/playbook/pb_filter/docs/_filter_max_width.jsx +1 -1
  162. data/app/pb_kits/playbook/pb_filter/docs/_filter_no_background.jsx +1 -1
  163. data/app/pb_kits/playbook/pb_filter/docs/_filter_no_sort.jsx +1 -1
  164. data/app/pb_kits/playbook/pb_filter/docs/_filter_only.jsx +1 -1
  165. data/app/pb_kits/playbook/pb_filter/docs/_filter_placement.jsx +1 -1
  166. data/app/pb_kits/playbook/pb_filter/filter.test.js +1 -1
  167. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +1 -1
  168. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.test.js +1 -1
  169. data/app/pb_kits/playbook/pb_flex/docs/_flex_align.jsx +1 -1
  170. data/app/pb_kits/playbook/pb_flex/docs/_flex_default.jsx +1 -1
  171. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.jsx +1 -1
  172. data/app/pb_kits/playbook/pb_flex/docs/_flex_inline.jsx +1 -1
  173. data/app/pb_kits/playbook/pb_flex/docs/_flex_item_align_self.jsx +1 -1
  174. data/app/pb_kits/playbook/pb_flex/docs/_flex_item_example.jsx +1 -1
  175. data/app/pb_kits/playbook/pb_flex/docs/_flex_justify.jsx +1 -1
  176. data/app/pb_kits/playbook/pb_flex/docs/_flex_reverse.jsx +1 -1
  177. data/app/pb_kits/playbook/pb_flex/docs/_flex_spacing.jsx +1 -1
  178. data/app/pb_kits/playbook/pb_flex/docs/_flex_wrap.jsx +1 -1
  179. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
  180. data/app/pb_kits/playbook/pb_form_group/form_group.test.js +1 -1
  181. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +5 -5
  182. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +0 -1
  183. data/app/pb_kits/playbook/pb_gauge/_gauge.tsx +2 -2
  184. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx +1 -1
  185. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex.jsx +1 -1
  186. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx +1 -1
  187. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_disable_animation.jsx +1 -1
  188. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.jsx +1 -1
  189. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.jsx +1 -1
  190. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_live_data.jsx +1 -1
  191. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.jsx +1 -1
  192. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.jsx +1 -1
  193. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.jsx +1 -1
  194. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.jsx +1 -1
  195. data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_default.jsx +1 -1
  196. data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_link.jsx +1 -1
  197. data/app/pb_kits/playbook/pb_hashtag/hashtag.test.js +1 -1
  198. data/app/pb_kits/playbook/pb_home_address_street/home_adress_street.test.js +1 -1
  199. data/app/pb_kits/playbook/pb_icon/_icon.tsx +3 -0
  200. data/app/pb_kits/playbook/pb_icon/docs/_icon_custom.jsx +1 -1
  201. data/app/pb_kits/playbook/pb_icon/icon.rb +2 -0
  202. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +2 -2
  203. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.tsx +2 -1
  204. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_sizes.jsx +1 -1
  205. data/app/pb_kits/playbook/pb_icon_circle/icon_circle.rb +2 -2
  206. data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.scss +0 -11
  207. data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.tsx +3 -2
  208. data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_color.html.erb +1 -0
  209. data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_color.jsx +1 -1
  210. data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_default.jsx +1 -1
  211. data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_sizes.jsx +1 -1
  212. data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_vertical.jsx +1 -1
  213. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.rb +2 -2
  214. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.test.js +5 -4
  215. data/app/pb_kits/playbook/pb_label_value/_label_value.scss +1 -1
  216. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_default.jsx +1 -1
  217. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details.jsx +1 -1
  218. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details_examples.jsx +1 -1
  219. data/app/pb_kits/playbook/pb_layout/layout.test.js +1 -1
  220. data/app/pb_kits/playbook/pb_legend/docs/_legend_colors.jsx +1 -1
  221. data/app/pb_kits/playbook/pb_legend/docs/_legend_custom_colors.jsx +1 -1
  222. data/app/pb_kits/playbook/pb_legend/docs/_legend_prefix.jsx +1 -1
  223. data/app/pb_kits/playbook/pb_lightbox/Carousel/Slide.tsx +0 -2
  224. data/app/pb_kits/playbook/pb_lightbox/Carousel/Slides.tsx +0 -2
  225. data/app/pb_kits/playbook/pb_lightbox/Carousel/index.tsx +0 -1
  226. data/app/pb_kits/playbook/pb_lightbox/Header/_lightbox_header.tsx +0 -1
  227. data/app/pb_kits/playbook/pb_lightbox/docs/_lightbox_compound_component.jsx +1 -3
  228. data/app/pb_kits/playbook/pb_lightbox/docs/_lightbox_current_photo.jsx +1 -3
  229. data/app/pb_kits/playbook/pb_lightbox/docs/_lightbox_custom_header.jsx +1 -3
  230. data/app/pb_kits/playbook/pb_lightbox/docs/_lightbox_default.jsx +1 -3
  231. data/app/pb_kits/playbook/pb_lightbox/docs/_lightbox_multiple.jsx +1 -3
  232. data/app/pb_kits/playbook/pb_lightbox/lightbox.test.jsx +1 -1
  233. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend.jsx +1 -1
  234. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_nonclickable.jsx +1 -1
  235. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.jsx +1 -1
  236. data/app/pb_kits/playbook/pb_line_graph/lineGraphSettings.js +1 -1
  237. data/app/pb_kits/playbook/pb_map/docs/_map_default.jsx +1 -1
  238. data/app/pb_kits/playbook/pb_map/docs/_map_with_custom_button.jsx +1 -1
  239. data/app/pb_kits/playbook/pb_map/docs/_map_with_plugin.jsx +1 -1
  240. data/app/pb_kits/playbook/pb_map/map.test.jsx +1 -1
  241. data/app/pb_kits/playbook/pb_map/pbMapTheme.ts +1 -1
  242. data/app/pb_kits/playbook/pb_message/_message.tsx +0 -2
  243. data/app/pb_kits/playbook/pb_message/_message_mixins.scss +1 -1
  244. data/app/pb_kits/playbook/pb_message/docs/_message_timestamp.jsx +1 -1
  245. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.test.jsx +1 -1
  246. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +1 -1
  247. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.tsx +0 -2
  248. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_default.jsx +1 -1
  249. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_reverse.jsx +1 -1
  250. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_size.jsx +1 -1
  251. data/app/pb_kits/playbook/pb_nav/_horizontal_nav.scss +1 -1
  252. data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav.jsx +1 -1
  253. data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_custom.jsx +1 -1
  254. data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_item_spacing.jsx +1 -1
  255. data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_with_all_options.jsx +1 -1
  256. data/app/pb_kits/playbook/pb_nav/docs/_nav_with_font_control.jsx +1 -1
  257. data/app/pb_kits/playbook/pb_online_status/_online_status.scss +52 -5
  258. data/app/pb_kits/playbook/pb_online_status/_online_status.tsx +6 -1
  259. data/app/pb_kits/playbook/pb_online_status/docs/_online_status_no_border.html.erb +1 -0
  260. data/app/pb_kits/playbook/pb_online_status/docs/_online_status_no_border.jsx +14 -0
  261. data/app/pb_kits/playbook/pb_online_status/docs/_online_status_size.html.erb +3 -0
  262. data/app/pb_kits/playbook/pb_online_status/docs/_online_status_size.jsx +25 -0
  263. data/app/pb_kits/playbook/pb_online_status/docs/example.yml +6 -2
  264. data/app/pb_kits/playbook/pb_online_status/docs/index.js +2 -0
  265. data/app/pb_kits/playbook/pb_online_status/online_status.rb +11 -1
  266. data/app/pb_kits/playbook/pb_online_status/online_status.test.js +31 -0
  267. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_default.jsx +1 -1
  268. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_multi_directional.jsx +1 -1
  269. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_toggle.html.erb +61 -0
  270. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_toggle.jsx +70 -0
  271. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_toggle.md +1 -0
  272. data/app/pb_kits/playbook/pb_overlay/docs/example.yml +4 -2
  273. data/app/pb_kits/playbook/pb_overlay/docs/index.js +1 -0
  274. data/app/pb_kits/playbook/pb_overlay/overlay.test.jsx +1 -1
  275. data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_percentage.tsx +1 -1
  276. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +3 -3
  277. data/app/pb_kits/playbook/pb_passphrase/_passphrase.tsx +0 -2
  278. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.jsx +1 -1
  279. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.jsx +1 -1
  280. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_confirmation.jsx +1 -1
  281. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +1 -1
  282. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.jsx +1 -1
  283. data/app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx +1 -1
  284. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +2 -1
  285. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +0 -1
  286. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_access_input_element.jsx +1 -1
  287. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_clear_field.jsx +1 -1
  288. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_default.jsx +1 -1
  289. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_initial_country.jsx +1 -1
  290. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_only_countries.jsx +1 -1
  291. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_preferred_countries.jsx +1 -1
  292. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.jsx +1 -1
  293. data/app/pb_kits/playbook/pb_pill/_pill.scss +2 -2
  294. data/app/pb_kits/playbook/pb_popover/_popover.tsx +2 -2
  295. data/app/pb_kits/playbook/pb_popover/docs/_popover_actionable_content.jsx +1 -1
  296. data/app/pb_kits/playbook/pb_popover/docs/_popover_close.jsx +1 -1
  297. data/app/pb_kits/playbook/pb_popover/docs/_popover_default.jsx +1 -1
  298. data/app/pb_kits/playbook/pb_popover/docs/_popover_list.jsx +1 -1
  299. data/app/pb_kits/playbook/pb_popover/docs/_popover_scroll_height.jsx +1 -1
  300. data/app/pb_kits/playbook/pb_popover/docs/_popover_z_index.jsx +1 -1
  301. data/app/pb_kits/playbook/pb_popover/popover.test.js +1 -1
  302. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +2 -2
  303. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_align.jsx +1 -1
  304. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_default.jsx +1 -1
  305. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_flex.jsx +1 -1
  306. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_muted.jsx +1 -1
  307. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_value.jsx +1 -1
  308. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_variants.jsx +1 -1
  309. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_width.jsx +1 -1
  310. data/app/pb_kits/playbook/pb_radio/docs/_radio_alignment.jsx +1 -1
  311. data/app/pb_kits/playbook/pb_radio/docs/_radio_error.jsx +1 -1
  312. data/app/pb_kits/playbook/pb_rich_text_editor/_dedupe_trix_toolbar.js +6 -0
  313. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +2 -2
  314. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +9 -8
  315. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_default.jsx +1 -1
  316. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.jsx +1 -1
  317. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.jsx +1 -1
  318. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.jsx +1 -1
  319. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.jsx +1 -1
  320. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_more_extensions.jsx +1 -1
  321. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.jsx +5 -4
  322. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.jsx +1 -1
  323. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.jsx +1 -1
  324. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.jsx +1 -1
  325. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.jsx +1 -1
  326. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_disabled.jsx +1 -1
  327. data/app/pb_kits/playbook/pb_rich_text_editor/types.d.ts +1 -0
  328. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +1 -1
  329. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.jsx +1 -1
  330. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_line.jsx +1 -1
  331. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +1 -1
  332. data/app/pb_kits/playbook/pb_select/_select.scss +1 -1
  333. data/app/pb_kits/playbook/pb_select/docs/_select_error.jsx +1 -1
  334. data/app/pb_kits/playbook/pb_select/docs/_select_inline.jsx +1 -1
  335. data/app/pb_kits/playbook/pb_select/docs/_select_inline_compact.jsx +1 -1
  336. data/app/pb_kits/playbook/pb_select/docs/_select_inline_show_arrow.jsx +1 -1
  337. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +4 -4
  338. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.tsx +0 -2
  339. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_error.jsx +1 -1
  340. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.test.js +1 -1
  341. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.tsx +0 -1
  342. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.jsx +1 -1
  343. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.jsx +1 -1
  344. data/app/pb_kits/playbook/pb_star_rating/_star_rating.scss +83 -6
  345. data/app/pb_kits/playbook/pb_star_rating/docs/example.yml +3 -1
  346. data/app/pb_kits/playbook/pb_star_rating/index.js +73 -4
  347. data/app/pb_kits/playbook/pb_star_rating/star_rating.html.erb +1 -1
  348. data/app/pb_kits/playbook/pb_star_rating/star_rating.rb +2 -2
  349. data/app/pb_kits/playbook/pb_star_rating/stars/utils.tsx +5 -1
  350. data/app/pb_kits/playbook/pb_star_rating/subcomponents/_star_rating_interactive.tsx +50 -21
  351. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_default.jsx +1 -1
  352. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_unit.jsx +1 -1
  353. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_unit_two.jsx +1 -1
  354. data/app/pb_kits/playbook/pb_table/_table.tsx +1 -1
  355. data/app/pb_kits/playbook/pb_table/index.ts +4 -4
  356. data/app/pb_kits/playbook/pb_table/subcomponents/_table_body.tsx +1 -1
  357. data/app/pb_kits/playbook/pb_table/subcomponents/_table_cell.tsx +1 -1
  358. data/app/pb_kits/playbook/pb_table/subcomponents/_table_head.tsx +1 -1
  359. data/app/pb_kits/playbook/pb_table/subcomponents/_table_header.tsx +1 -1
  360. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +1 -1
  361. data/app/pb_kits/playbook/pb_table/table.test.js +2 -0
  362. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +1 -1
  363. data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +1 -1
  364. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.jsx +4 -4
  365. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +1 -1
  366. data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +45 -27
  367. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.jsx +1 -1
  368. data/app/pb_kits/playbook/pb_textarea/{index.tsx → index.ts} +3 -3
  369. data/app/pb_kits/playbook/pb_time/_time.tsx +3 -3
  370. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +4 -4
  371. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.tsx +1 -1
  372. data/app/pb_kits/playbook/pb_time_range_inline/docs/_time_range_inline_default.jsx +1 -1
  373. data/app/pb_kits/playbook/pb_timeline/_item.tsx +1 -1
  374. data/app/pb_kits/playbook/pb_timeline/_timeline.scss +2 -2
  375. data/app/pb_kits/playbook/pb_timeline/_timeline.tsx +1 -1
  376. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.jsx +1 -1
  377. data/app/pb_kits/playbook/pb_title_count/_title_count.tsx +0 -1
  378. data/app/pb_kits/playbook/pb_title_detail/_title_detail.tsx +10 -10
  379. data/app/pb_kits/playbook/pb_toggle/_toggle.scss +5 -5
  380. data/app/pb_kits/playbook/pb_toggle/_toggle.tsx +1 -1
  381. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_custom.jsx +1 -3
  382. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_custom_radio.jsx +1 -3
  383. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_default.jsx +1 -3
  384. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_disabled.jsx +1 -3
  385. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_name.jsx +1 -3
  386. data/app/pb_kits/playbook/pb_tooltip/_tooltip.tsx +2 -2
  387. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default_react.jsx +1 -3
  388. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay.jsx +1 -3
  389. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_icon.jsx +1 -3
  390. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_interaction.jsx +1 -3
  391. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_margin.jsx +1 -3
  392. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_show_tooltip_react.jsx +1 -3
  393. data/app/pb_kits/playbook/pb_tooltip/tooltip.test.jsx +1 -1
  394. data/app/pb_kits/playbook/pb_treemap_chart/_treemap_chart.tsx +1 -2
  395. data/app/pb_kits/playbook/pb_treemap_chart/treemapChart.test.js +2 -0
  396. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +2 -2
  397. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_async_createable.jsx +1 -3
  398. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_createable.jsx +1 -3
  399. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_custom_menu_list.jsx +1 -1
  400. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default.jsx +0 -2
  401. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_error_state.jsx +0 -2
  402. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_inline.jsx +0 -2
  403. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_multi_kit.html.erb +1 -1
  404. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_multi_kit.jsx +0 -2
  405. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_highlight.jsx +4 -5
  406. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +1 -3
  407. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.jsx +18 -21
  408. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_custom_options.jsx +21 -31
  409. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.jsx +20 -23
  410. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +1 -0
  411. data/app/pb_kits/playbook/pb_user/_user.tsx +1 -1
  412. data/app/pb_kits/playbook/pb_user/docs/_user_block_content_subtitle_react.jsx +1 -1
  413. data/app/pb_kits/playbook/pb_user/docs/_user_default.jsx +1 -1
  414. data/app/pb_kits/playbook/pb_user/docs/_user_size.jsx +1 -1
  415. data/app/pb_kits/playbook/pb_user/docs/_user_subtitle.jsx +1 -1
  416. data/app/pb_kits/playbook/pb_user/docs/_user_text_only.jsx +1 -1
  417. data/app/pb_kits/playbook/pb_user/docs/_user_vertical_size.jsx +1 -1
  418. data/app/pb_kits/playbook/pb_user/docs/_user_with_territory.jsx +1 -1
  419. data/app/pb_kits/playbook/pb_user_badge/_user_badge.tsx +6 -6
  420. data/app/pb_kits/playbook/pb_user_badge/badges/million-dollar.tsx +236 -235
  421. data/app/pb_kits/playbook/pb_user_badge/badges/veteran.tsx +1 -1
  422. data/app/pb_kits/playbook/pb_walkthrough/_walkthrough.tsx +68 -63
  423. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_continuous.jsx +1 -1
  424. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_default.jsx +1 -1
  425. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_multi_beacon.jsx +1 -1
  426. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_no_beacon.jsx +1 -1
  427. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_no_overlay.jsx +1 -1
  428. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_styled.jsx +1 -1
  429. data/app/pb_kits/playbook/pb_walkthrough/walkthrough.test.jsx +1 -1
  430. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.tsx +3 -4
  431. data/app/pb_kits/playbook/tokens/exports/{_border_radius.scss → _border_radius.module.scss} +0 -0
  432. data/app/pb_kits/playbook/tokens/exports/{_colors.scss → _colors.module.scss} +1 -1
  433. data/app/pb_kits/playbook/tokens/exports/{_line_height.scss → _line_height.module.scss} +0 -0
  434. data/app/pb_kits/playbook/tokens/exports/{_opacity.scss → _opacity.module.scss} +0 -0
  435. data/app/pb_kits/playbook/tokens/exports/{_positioning.scss → _positioning.module.scss} +0 -0
  436. data/app/pb_kits/playbook/tokens/exports/{_screen_sizes.scss → _screen_sizes.module.scss} +0 -0
  437. data/app/pb_kits/playbook/tokens/exports/{_shadows.scss → _shadows.module.scss} +0 -0
  438. data/app/pb_kits/playbook/tokens/exports/{_spacing.scss → _spacing.module.scss} +0 -0
  439. data/app/pb_kits/playbook/tokens/exports/{_typography.scss → _typography.module.scss} +0 -0
  440. data/app/pb_kits/playbook/tokens/exports/exports.d.ts +1 -0
  441. data/app/pb_kits/playbook/utilities/_hover.scss +5 -5
  442. data/app/pb_kits/playbook/utilities/_line_height.scss +1 -1
  443. data/app/pb_kits/playbook/utilities/_positioning.scss +26 -15
  444. data/app/pb_kits/playbook/utilities/_shadow.scss +1 -1
  445. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +50 -0
  446. data/app/pb_kits/playbook/utilities/text.ts +3 -1
  447. data/dist/chunks/_typeahead-eBLGedV-.js +22 -0
  448. data/dist/chunks/_weekday_stacked-Bw_5qEUW.js +45 -0
  449. data/dist/chunks/lazysizes-B7xYodB-.js +1 -0
  450. data/dist/chunks/lib-BE0Z3F7x.js +16 -0
  451. data/dist/chunks/pb_form_validation-TzZQ0Flx.js +1 -0
  452. data/dist/chunks/vendor.js +1 -0
  453. data/dist/playbook-doc.js +1 -0
  454. data/dist/playbook-rails-react-bindings.js +1 -0
  455. data/dist/playbook-rails.js +1 -59
  456. data/dist/playbook.css +4 -0
  457. data/dist/reset.css +1 -1
  458. data/lib/playbook/engine.rb +2 -0
  459. data/lib/playbook/version.rb +2 -2
  460. metadata +38 -21
  461. data/app/pb_kits/playbook/index.js +0 -151
  462. data/app/pb_kits/playbook/pb_online_status/_online_status_mixins.scss +0 -32
  463. data/app/pb_kits/playbook/playbook-doc.js +0 -215
  464. data/app/pb_kits/playbook/playbook-rails-react-bindings.js +0 -45
  465. data/app/pb_kits/playbook/playbook-rails.js +0 -51
  466. /data/app/pb_kits/playbook/tokens/exports/{_scale.scss → _scale.module.scss} +0 -0
@@ -14,6 +14,29 @@ export default class PbStarRating extends PbEnhancedElement {
14
14
  this.updateStarColors(clickedStarId);
15
15
  this.updateHiddenInputValue(clickedStarId);
16
16
  });
17
+
18
+ document.querySelectorAll(STAR_RATING_SELECTOR).forEach(star => {
19
+ star.addEventListener("mouseenter", (event) => {
20
+ const hoveredStarId = event.currentTarget.id
21
+ this.updateStarHoverColors(hoveredStarId);
22
+ })
23
+
24
+ star.addEventListener("mouseleave", () => {
25
+ this.removeStarHoverColors();
26
+ })
27
+
28
+ star.addEventListener("keydown", (event) => {
29
+ if (event.key === 'Enter' || event.key === ' ') {
30
+ event.preventDefault();
31
+ this.handleStarClick(star.id);
32
+ }
33
+ })
34
+ })
35
+ }
36
+
37
+ handleStarClick(starId) {
38
+ this.updateStarColors(starId);
39
+ this.updateHiddenInputValue(starId);
17
40
  }
18
41
 
19
42
  updateStarColors(clickedStarId) {
@@ -27,16 +50,21 @@ export default class PbStarRating extends PbEnhancedElement {
27
50
  if (starId <= clickedStarId) {
28
51
  if (star.classList.contains("yellow_star")) {
29
52
  icon.classList.add("yellow-star-selected");
30
- } else if (star.classList.contains("primary_star")) {
53
+ } else if (star.classList.contains("primary_star_light")) {
31
54
  icon.classList.add("primary-star-selected");
32
- } else if (star.classList.contains("suble_star_light")) {
33
- icon.classList.add("suble-star-selected");
55
+ } else if (star.classList.contains("primary_star_dark")) {
56
+ icon.classList.add("primary-star-selected");
57
+ } else if (star.classList.contains("subtle_star_light")) {
58
+ icon.classList.add("subtle-star-selected");
59
+ } else if (star.classList.contains("subtle_star_dark")) {
60
+ icon.classList.add("subtle-star-selected");
34
61
  } else {
35
62
  icon.classList.add("yellow-star-selected");
36
63
  }
37
64
  } else {
38
- icon.classList.remove("yellow-star-selected", "primary-star-selected", "suble-star-selected");
65
+ icon.classList.remove("yellow-star-selected", "primary-star-selected", "subtle-star-selected");
39
66
  }
67
+ icon.classList.remove("star-hovered");
40
68
  }
41
69
  });
42
70
  }
@@ -47,4 +75,45 @@ export default class PbStarRating extends PbEnhancedElement {
47
75
  hiddenInput.value = value;
48
76
  }
49
77
  }
78
+
79
+ updateStarHoverColors(hoveredStarId) {
80
+ const allStars = document.querySelectorAll(STAR_RATING_SELECTOR);
81
+
82
+ allStars.forEach(star => {
83
+ const starId = star.id;
84
+ const icon = star.querySelector(".interactive-star-icon");
85
+
86
+ if (icon) {
87
+ if (starId <= hoveredStarId) {
88
+ if (!icon.classList.contains("yellow-star-selected") &&
89
+ !icon.classList.contains("primary-star-selected") &&
90
+ !icon.classList.contains("subtle-star-selected")) {
91
+ icon.classList.add("star-hovered");
92
+ }
93
+ } else {
94
+ icon.classList.remove("star-hovered");
95
+ }
96
+ }
97
+ });
98
+ }
99
+
100
+
101
+ removeStarHoverColors() {
102
+ const allStars = document.querySelectorAll(STAR_RATING_SELECTOR);
103
+
104
+ allStars.forEach(star => {
105
+ const icon = star.querySelector(".interactive-star-icon");
106
+ if (icon) {
107
+ if (!icon.classList.contains("yellow-star-selected") &&
108
+ !icon.classList.contains("primary-star-selected") &&
109
+ !icon.classList.contains("subtle-star-selected")) {
110
+ icon.classList.remove("star-hovered");
111
+ }
112
+ }
113
+ });
114
+ }
115
+
116
+ isStarSelected() {
117
+ return document.querySelectorAll(".yellow-star-selected, .primary-star-selected, .subtle-star-selected").length > 0;
118
+ }
50
119
  }
@@ -47,7 +47,7 @@
47
47
  <%= pb_rails("flex", props: { orientation: "row" }) do %>
48
48
  <% object.denominator.times do |index| %>
49
49
  <div data-pb-star-rating id="<%= index + 1 %>" class="<%= star_color %>">
50
- <%= pb_rails("icon", props: { classname: "#{background_star_color} pb_star_#{size} interactive-star-icon", custom_icon: Playbook::Engine.root.join(background_star_path)} ) %>
50
+ <%= pb_rails("icon", props: { classname: "#{background_star_color} pb_star_#{size} interactive-star-icon", custom_icon: Playbook::Engine.root.join(background_star_path), tabindex: 0 } ) %>
51
51
  </div>
52
52
  <% end %>
53
53
  <% end %>
@@ -52,9 +52,9 @@ module Playbook
52
52
  when "yellow"
53
53
  "yellow_star"
54
54
  when "primary"
55
- "primary_star"
55
+ dark ? "primary_star_dark" : "primary_star_light"
56
56
  when "subtle"
57
- dark ? "suble_star_dark" : "suble_star_light"
57
+ dark ? "subtle_star_dark" : "subtle_star_light"
58
58
  end
59
59
  end
60
60
 
@@ -53,7 +53,11 @@ const starOutline = (
53
53
  )
54
54
 
55
55
  export const getStarIconObject = (backgroundType: string, color: string, dark: boolean, size: string) => {
56
- const colorClassName = color === "subtle" ? (dark ? "suble_star_dark" : "suble_star_light") : `${color}_star`
56
+ const colorClassName = color === "subtle"
57
+ ? (dark ? "suble_star_dark" : "suble_star_light")
58
+ : color === "primary"
59
+ ? (dark ? "primary_star_dark" : "primary_star_light")
60
+ : `${color}_star`
57
61
  const backgroundClassName = backgroundType === "outline" ? (dark ? "outline_empty_star_dark" : "outline_empty_star_light") : (dark ? "empty_star_dark" : "empty_star_light")
58
62
 
59
63
  return {
@@ -23,40 +23,69 @@ const StarRatingInteractive = (props: StarRatingInteractiveProps) => {
23
23
  size,
24
24
  } = props
25
25
  const [interactiveStarValue, setInteractiveStarValue] = useState(0)
26
+ const [hoverStarValue, setHoverStarValue] = useState<number | null>(null)
26
27
  const starIcon = getStarIconObject(backgroundType, colorOption, dark, size)
27
28
 
28
29
  const handleOnClick = (interactiveStarValue: number) => {
29
30
  setInteractiveStarValue(interactiveStarValue)
30
31
  onClick && onClick(interactiveStarValue)
31
32
  }
33
+ const handleMouseEnter = (value: number) => {
34
+ setHoverStarValue(value);
35
+ }
36
+ const handleMouseLeave = () => {
37
+ setHoverStarValue(null);
38
+ }
39
+ const handleOnKeyDown = (event: React.KeyboardEvent<HTMLDivElement>, starIndex: number) => {
40
+ if (event.key === 'Enter' || event.key === ' ') {
41
+ event.preventDefault()
42
+ handleOnClick(starIndex)
43
+ }
44
+ }
32
45
 
33
46
  return (
34
47
  <Flex className="star_flex_area">
35
- {[...Array(denominator)].map((_, index) => (
36
- <React.Fragment key={index}>
37
- {index + 1 <= interactiveStarValue && (
48
+ {[...Array(denominator)].map((_, index) => {
49
+ const starIndex = index + 1
50
+ const isFilled = starIndex <= interactiveStarValue
51
+ const isHovered = hoverStarValue !== null && starIndex > interactiveStarValue && starIndex <= hoverStarValue
52
+
53
+ const baseClass = dark
54
+ ? starIcon[backgroundType].className.replace("empty_star_light", "empty_star_dark")
55
+ : starIcon[backgroundType].className
56
+
57
+ let starClass = baseClass
58
+ if (isFilled) {
59
+ starClass = starClass.replace(/(empty_star_light|empty_star_dark)/, '')
60
+ starClass += ` ${starIcon[colorOption].className}`
61
+ }
62
+ if (isHovered) {
63
+ starClass += " star-hovered"
64
+ }
65
+ if (isFilled && starIndex === interactiveStarValue) {
66
+ starClass += " star-selected"
67
+ }
68
+
69
+ return (
70
+ <div
71
+ key={index}
72
+ onKeyDown={(event) => handleOnKeyDown(event, starIndex)}
73
+ >
38
74
  <Icon
39
- className={starIcon[colorOption].className}
75
+ className={starClass.trim()}
40
76
  cursor="pointer"
41
- customIcon={starIcon[colorOption].icon as unknown as { [key: string]: SVGElement }}
42
- htmlOptions={{ onClick: () => handleOnClick(index + 1) }}
77
+ customIcon={starIcon[backgroundType].icon as unknown as { [key: string]: SVGElement }}
78
+ htmlOptions={{
79
+ onClick: () => handleOnClick(starIndex),
80
+ onMouseEnter: () => handleMouseEnter(starIndex),
81
+ onMouseLeave: () => handleMouseLeave(),
82
+ }}
43
83
  icon=""
84
+ tabIndex={0}
44
85
  />
45
- )}
46
-
47
- {index + 1 > interactiveStarValue && (
48
- <React.Fragment key={index}>
49
- <Icon
50
- className={starIcon[backgroundType].className}
51
- cursor="pointer"
52
- customIcon={starIcon[backgroundType].icon as unknown as { [key: string]: SVGElement }}
53
- htmlOptions={{ onClick: () => handleOnClick(index + 1) }}
54
- icon=""
55
- />
56
- </React.Fragment>
57
- )}
58
- </React.Fragment>
59
- ))}
86
+ </div>
87
+ );
88
+ })}
60
89
  </Flex>
61
90
  )
62
91
  }
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { StatChange } from '../../'
2
+ import { StatChange } from 'playbook-ui'
3
3
 
4
4
  const StatChangeDefault = (props) => {
5
5
  return (
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { StatChange } from '../../'
2
+ import { StatChange } from 'playbook-ui'
3
3
 
4
4
  const StatChangeUnit = (props) => {
5
5
  return (
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { StatChange } from '../../'
2
+ import { StatChange } from 'playbook-ui'
3
3
 
4
4
  const StatChangeUnitTwo = (props) => {
5
5
  return (
@@ -33,7 +33,7 @@ type TableProps = {
33
33
  verticalBorder?: boolean,
34
34
  } & GlobalProps
35
35
 
36
- const Table = (props: TableProps) => {
36
+ const Table = (props: TableProps): React.ReactElement => {
37
37
  const {
38
38
  aria = {},
39
39
  children,
@@ -1,19 +1,19 @@
1
1
  import PbEnhancedElement from '../pb_enhanced_element'
2
2
 
3
3
  export default class PbTable extends PbEnhancedElement {
4
- static get selector() {
4
+ static get selector(): string {
5
5
  return '.table-responsive-collapse'
6
6
  }
7
7
 
8
- connect() {
8
+ connect(): void {
9
9
  const tables = document.querySelectorAll('.table-responsive-collapse');
10
10
 
11
11
  // Each Table
12
12
  [].forEach.call(tables, (table: HTMLTableElement) => {
13
13
  // Header Titles
14
- let headers: string[] = [];
14
+ const headers: string[] = [];
15
15
  [].forEach.call(table.querySelectorAll('th'), (header: HTMLTableCellElement) => {
16
- let colSpan = header.colSpan
16
+ const colSpan = header.colSpan
17
17
  for (let i = 0; i < colSpan; i++) {
18
18
  headers.push(header.textContent.replace(/\r?\n|\r/, ''));
19
19
  }
@@ -17,7 +17,7 @@ type TableBodyPropTypes = {
17
17
  tag?: "table" | "div";
18
18
  };
19
19
 
20
- const TableBody = (props: TableBodyPropTypes) => {
20
+ const TableBody = (props: TableBodyPropTypes): React.ReactElement => {
21
21
  const {
22
22
  aria = {},
23
23
  children,
@@ -18,7 +18,7 @@ type TableCellPropTypes = {
18
18
  text?: string
19
19
  };
20
20
 
21
- const TableCell = (props: TableCellPropTypes) => {
21
+ const TableCell = (props: TableCellPropTypes): React.ReactElement => {
22
22
  const {
23
23
  aria = {},
24
24
  children,
@@ -17,7 +17,7 @@ type TableHeadPropTypes = {
17
17
  tag?: "table" | "div";
18
18
  };
19
19
 
20
- const TableHead = (props: TableHeadPropTypes) => {
20
+ const TableHead = (props: TableHeadPropTypes): React.ReactElement => {
21
21
  const {
22
22
  aria = {},
23
23
  children,
@@ -18,7 +18,7 @@ type TableHeaderPropTypes = {
18
18
  text?: string;
19
19
  };
20
20
 
21
- const TableHeader = (props: TableHeaderPropTypes) => {
21
+ const TableHeader = (props: TableHeaderPropTypes): React.ReactElement => {
22
22
  const {
23
23
  aria = {},
24
24
  children,
@@ -19,7 +19,7 @@ type TableRowPropTypes = {
19
19
  tag?: "table" | "div";
20
20
  };
21
21
 
22
- const TableRow = (props: TableRowPropTypes) => {
22
+ const TableRow = (props: TableRowPropTypes): React.ReactElement => {
23
23
  const {
24
24
  aria = {},
25
25
  children,
@@ -1,3 +1,5 @@
1
+ /* eslint-disable react/no-multi-comp */
2
+
1
3
  import React from "react";
2
4
  import { ensureAccessible, renderKit, render, screen } from "../utilities/test-utils"
3
5
 
@@ -101,7 +101,7 @@
101
101
  &.error {
102
102
  .text_input_wrapper {
103
103
  [class*="pb_body_kit"] {
104
- margin-top: $space_xs / 2;
104
+ margin-top: calc($space_xs / 2);
105
105
  }
106
106
  input,
107
107
  .text_input {
@@ -107,7 +107,7 @@ const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement>
107
107
  required={required}
108
108
  type={type}
109
109
  value={value}
110
- />)
110
+ />)
111
111
  )
112
112
 
113
113
  const addOnInput = (
@@ -5,12 +5,12 @@ import TextInput from '../../pb_text_input/_text_input'
5
5
  import Title from '../../pb_title/_title'
6
6
 
7
7
  const TextInputDefault = (props) => {
8
+ const [firstName, setFirstName] = useState('')
8
9
  const handleOnChangeFirstName = ({ target }) => {
9
10
  setFirstName(target.value)
10
11
  }
11
12
  const ref = React.createRef()
12
13
 
13
- const [firstName, setFirstName] = useState('')
14
14
  const [formFields, setFormFields] = useState({
15
15
  firstName: 'Jane',
16
16
  lastName: 'Doe',
@@ -92,9 +92,9 @@ const TextInputDefault = (props) => {
92
92
  {...props}
93
93
  />
94
94
 
95
- <If condition={firstName !== ''}>
96
- {`First name is: ${firstName}`}
97
- </If>
95
+ {firstName !== '' && (
96
+ <React.Fragment>{`First name is: ${firstName}`}</React.Fragment>
97
+ )}
98
98
  </div>
99
99
  )
100
100
  }
@@ -60,7 +60,7 @@
60
60
 
61
61
  &.error {
62
62
  [class*=pb_body_kit] {
63
- margin-top: $space_xs / 2;
63
+ margin-top: calc($space_xs / 2);
64
64
  }
65
65
  textarea {
66
66
  border-color: $error;
@@ -52,14 +52,15 @@ const Textarea = ({
52
52
  label,
53
53
  maxCharacters,
54
54
  name,
55
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
55
56
  onChange = () => {},
56
57
  placeholder,
57
58
  required,
58
59
  rows = 4,
59
60
  value,
60
61
  ...props
61
- }: TextareaProps, ref: any) => {
62
- ref = useRef<HTMLTextAreaElement>(null)
62
+ }: TextareaProps) => {
63
+ const ref = useRef<HTMLTextAreaElement>(null)
63
64
  useEffect(() => {
64
65
  if (ref.current && resize === 'auto') {
65
66
  PbTextarea.addMatch(ref.current)
@@ -71,58 +72,75 @@ const Textarea = ({
71
72
  const resizeClass = `resize_${resize}`
72
73
  const classes = classnames('pb_textarea_kit', errorClass, inlineClass, resizeClass, globalProps(props), className)
73
74
  const noCount = typeof characterCount !== 'undefined'
74
- const ariaProps: {[key: string]: any} = buildAriaProps(aria)
75
- const dataProps: {[key: string]: any} = buildDataProps(data)
75
+ const ariaProps: {[key: string]: string} = buildAriaProps(aria)
76
+ const dataProps: {[key: string]: string} = buildDataProps(data)
76
77
  const htmlProps = buildHtmlProps(htmlOptions)
77
- const characterCounter = () => {
78
- return maxCharacters && characterCount ? `${checkIfZero(characterCount)} / ${maxCharacters}` : `${checkIfZero(characterCount)}`
79
- }
80
-
81
78
  const checkIfZero = (characterCount: string | number) => {
82
79
  return characterCount == 0 ? characterCount.toString() : characterCount
83
80
  }
81
+ const characterCounter = () => {
82
+ return maxCharacters && characterCount ? `${checkIfZero(characterCount)} / ${maxCharacters}` : `${checkIfZero(characterCount)}`
83
+ }
84
84
 
85
85
  return (
86
86
  <div
87
- {...ariaProps}
88
- {...dataProps}
89
- {...htmlProps}
90
- className={classes}
87
+ {...ariaProps}
88
+ {...dataProps}
89
+ {...htmlProps}
90
+ className={classes}
91
91
  >
92
92
  <Caption text={label} />
93
93
  {children || (
94
94
  <textarea
95
- className="pb_textarea_kit"
96
- disabled={disabled}
97
- name={name}
98
- onChange={onChange}
99
- placeholder={placeholder}
100
- ref={ref}
101
- required={required}
102
- rows={rows}
103
- value={value}
104
- {...props}
95
+ className="pb_textarea_kit"
96
+ disabled={disabled}
97
+ name={name}
98
+ onChange={onChange}
99
+ placeholder={placeholder}
100
+ ref={ref}
101
+ required={required}
102
+ rows={rows}
103
+ value={value}
104
+ {...props}
105
105
  />
106
106
  )}
107
107
 
108
108
  {error ? (
109
109
  <>
110
110
  {characterCount ? (
111
- <Flex spacing="between" vertical="center">
111
+ <Flex
112
+ spacing="between"
113
+ vertical="center"
114
+ >
112
115
  <FlexItem>
113
- <Body margin="none" status="negative" text={error} />
116
+ <Body
117
+ margin="none"
118
+ status="negative"
119
+ text={error}
120
+ />
114
121
  </FlexItem>
115
122
  <FlexItem>
116
- <Caption margin="none" size="xs" text={characterCounter()} />
123
+ <Caption
124
+ margin="none"
125
+ size="xs"
126
+ text={characterCounter()}
127
+ />
117
128
  </FlexItem>
118
129
  </Flex>
119
130
  ) : (
120
- <Body status="negative" text={error} />
131
+ <Body
132
+ status="negative"
133
+ text={error}
134
+ />
121
135
  )}
122
136
  </>
123
137
  ) : (
124
138
  noCount && (
125
- <Caption margin="none" size="xs" text={characterCounter()} />
139
+ <Caption
140
+ margin="none"
141
+ size="xs"
142
+ text={characterCounter()}
143
+ />
126
144
  )
127
145
  )}
128
146
  </div>
@@ -1,5 +1,5 @@
1
1
  import React, {useState} from 'react'
2
- import { Textarea } from '../..'
2
+ import { Textarea } from 'playbook-ui'
3
3
 
4
4
  const TextareaError = (props) => {
5
5
  const [value, setValue] = useState('default value text')
@@ -3,16 +3,16 @@ import PbEnhancedElement from '../pb_enhanced_element'
3
3
  export default class PbTextarea extends PbEnhancedElement {
4
4
  style: {[key: string]: string}
5
5
  scrollHeight: string
6
- static get selector() {
6
+ static get selector(): string {
7
7
  return '.resize_auto textarea'
8
8
  }
9
9
 
10
- onInput() {
10
+ onInput(): void {
11
11
  this.style.height = 'auto'
12
12
  this.style.height = (this.scrollHeight) + 'px'
13
13
  }
14
14
 
15
- connect() {
15
+ connect(): void {
16
16
  this.element.setAttribute('style', 'height:' + (this.element.scrollHeight) + 'px;overflow-y:hidden;')
17
17
  this.element.addEventListener('input', this.onInput, false)
18
18
  }
@@ -24,7 +24,7 @@ type TimeProps = {
24
24
  unstyled?: boolean;
25
25
  } & GlobalProps
26
26
 
27
- const Time = (props: TimeProps) => {
27
+ const Time = (props: TimeProps): React.ReactElement => {
28
28
  const {
29
29
  align,
30
30
  className,
@@ -47,8 +47,8 @@ const Time = (props: TimeProps) => {
47
47
 
48
48
  return (
49
49
  <div
50
- {...htmlProps}
51
- className={classes}
50
+ {...htmlProps}
51
+ className={classes}
52
52
  >
53
53
  {showIcon && (
54
54
  unstyled
@@ -22,14 +22,14 @@
22
22
  display: flex;
23
23
  align-items: center;
24
24
  [class*=pb_time_range_inline_arrow] {
25
- margin-left: $space_xs/2;
26
- margin-right: $space_xs/2;
25
+ margin-left: calc($space_xs/2);
26
+ margin-right: calc($space_xs/2);
27
27
  }
28
28
  [class*=pb_time_range_inline_timezone] {
29
- margin-left: $space_xs/2;
29
+ margin-left: calc($space_xs/2);
30
30
  }
31
31
  [class*=pb_time_range_inline_icon] {
32
- margin-right: $space_xs/2;
32
+ margin-right: calc($space_xs/2);
33
33
  }
34
34
  }
35
35
  }
@@ -36,7 +36,7 @@ const dateTimeIso = (dateValue: Date) => {
36
36
  return DateTime.toIso(dateValue)
37
37
  }
38
38
 
39
- const TimeRangeInline = (props: TimeRangeInlineProps) => {
39
+ const TimeRangeInline = (props: TimeRangeInlineProps): React.ReactElement => {
40
40
  const {
41
41
  aria = {},
42
42
  className,
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { TimeRangeInline } from '../../'
2
+ import { TimeRangeInline } from 'playbook-ui'
3
3
 
4
4
  const TimeRangeInlineDefault = (props) => (
5
5
  <div>
@@ -26,7 +26,7 @@ const TimelineItem = ({
26
26
  iconColor = 'default',
27
27
  lineStyle = 'solid',
28
28
  ...props
29
- }: ItemProps) => {
29
+ }: ItemProps): React.ReactElement => {
30
30
  const timelineItemCss = buildCss('pb_timeline_item_kit', lineStyle)
31
31
 
32
32
  const htmlProps = buildHtmlProps(htmlOptions)
@@ -4,9 +4,9 @@
4
4
  @import "../tokens/typography";
5
5
 
6
6
  $connector_width: 2px;
7
- $icon_margin: $space_xs/2;
7
+ $icon_margin: calc($space_xs/2);
8
8
  $icon_height: 28px;
9
- $height_from_top: $icon_height/2 - $connector_width/2;
9
+ $height_from_top: calc($icon_height/2) - calc($connector_width/2);
10
10
 
11
11
  @mixin pb_timeline_line_solid($width, $height, $margin) {
12
12
  width: $width;
@@ -27,7 +27,7 @@ const Timeline = ({
27
27
  orientation = 'horizontal',
28
28
  showDate = false,
29
29
  ...props
30
- }: TimelineProps) => {
30
+ }: TimelineProps): React.ReactElement => {
31
31
  const ariaProps = buildAriaProps(aria)
32
32
  const dataProps = buildDataProps(data)
33
33
  const htmlProps = buildHtmlProps(htmlOptions)
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { Caption, Timestamp, Title } from '../../'
2
+ import { Caption, Timestamp, Title } from 'playbook-ui'
3
3
 
4
4
  const TimestampUnstyled = (props) => {
5
5
  return (