playbook_ui 14.25.0.pre.alpha.dialogfix10277 → 14.25.0.pre.alpha.play1986inlineloadingsolidvariant9963

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +6 -6
  4. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +1 -1
  5. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +65 -60
  6. data/app/pb_kits/playbook/pb_avatar/avatar.test.js +1 -1
  7. data/app/pb_kits/playbook/pb_background/_background.scss +3 -3
  8. data/app/pb_kits/playbook/pb_badge/_badge.scss +29 -135
  9. data/app/pb_kits/playbook/pb_body/_body.scss +35 -108
  10. data/app/pb_kits/playbook/pb_body/_body_mixins.scss +1 -1
  11. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.scss +30 -17
  12. data/app/pb_kits/playbook/pb_button/_button.scss +31 -39
  13. data/app/pb_kits/playbook/pb_button/_button.tsx +12 -12
  14. data/app/pb_kits/playbook/pb_button/_button_mixins.scss +1 -1
  15. data/app/pb_kits/playbook/pb_button/button.rb +18 -11
  16. data/app/pb_kits/playbook/pb_button/button.test.js +3 -3
  17. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.scss +73 -82
  18. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_dark.scss +33 -32
  19. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_mixins.scss +1 -1
  20. data/app/pb_kits/playbook/pb_button_toolbar/button_toolbar.test.js +2 -2
  21. data/app/pb_kits/playbook/pb_caption/_caption.scss +17 -100
  22. data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +8 -1
  23. data/app/pb_kits/playbook/pb_card/_card.scss +79 -116
  24. data/app/pb_kits/playbook/pb_card/_card.tsx +11 -26
  25. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -1
  26. data/app/pb_kits/playbook/pb_card/card.rb +7 -8
  27. data/app/pb_kits/playbook/pb_card/card_header.rb +2 -6
  28. data/app/pb_kits/playbook/pb_card/docs/_card_header.html.erb +1 -1
  29. data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +2 -11
  30. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +7 -7
  31. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.test.js +1 -1
  32. data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +1 -1
  33. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +4 -4
  34. data/app/pb_kits/playbook/pb_copy_button/copy_button.test.jsx +1 -1
  35. data/app/pb_kits/playbook/pb_currency/_currency.scss +39 -124
  36. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.scss +6 -16
  37. data/app/pb_kits/playbook/pb_date/_date.scss +18 -16
  38. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +1 -1
  39. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_inline_styles.scss +12 -12
  40. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_input_styles.scss +2 -2
  41. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_time_selection_styles.scss +5 -6
  42. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +23 -29
  43. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +1 -1
  44. data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.scss +1 -1
  45. data/app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.test.js +2 -2
  46. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.scss +26 -66
  47. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.rb +1 -1
  48. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.test.js +2 -2
  49. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +15 -8
  50. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +7 -6
  51. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.scss +14 -17
  52. data/app/pb_kits/playbook/pb_date_year_stacked/date_year_stacked.test.js +1 -1
  53. data/app/pb_kits/playbook/pb_detail/_detail.scss +21 -86
  54. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +123 -330
  55. data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +7 -5
  56. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.html.erb +2 -16
  57. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.scss +7 -10
  58. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +1 -1
  59. data/app/pb_kits/playbook/pb_drawer/_close_icon.tsx +25 -0
  60. data/app/pb_kits/playbook/pb_drawer/_drawer.scss +381 -0
  61. data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +231 -0
  62. data/app/pb_kits/playbook/pb_drawer/_drawer_context.tsx +3 -0
  63. data/app/pb_kits/playbook/pb_drawer/context.ts +11 -0
  64. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +8 -0
  65. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.jsx +41 -0
  66. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +33 -0
  67. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +78 -0
  68. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +3 -0
  69. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +26 -0
  70. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +20 -0
  71. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.jsx +59 -0
  72. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +24 -0
  73. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +61 -0
  74. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.md +24 -0
  75. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +21 -0
  76. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +54 -0
  77. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +1 -0
  78. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +49 -0
  79. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.jsx +99 -0
  80. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +20 -0
  81. data/app/pb_kits/playbook/pb_drawer/docs/index.js +7 -0
  82. data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +20 -0
  83. data/app/pb_kits/playbook/pb_drawer/drawer.rb +56 -0
  84. data/app/pb_kits/playbook/pb_drawer/drawer.test.jsx +81 -0
  85. data/app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx +60 -0
  86. data/app/pb_kits/playbook/pb_drawer/hooks/useDrawerAnimation.tsx +21 -0
  87. data/app/pb_kits/playbook/pb_drawer/index.js +257 -0
  88. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +1 -1
  89. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +6 -6
  90. data/app/pb_kits/playbook/pb_dropdown/index.js +3 -3
  91. data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +4 -4
  92. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +9 -20
  93. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +1 -1
  94. data/app/pb_kits/playbook/pb_filter/_filter.scss +8 -8
  95. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +29 -65
  96. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +2 -1
  97. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.test.js +1 -1
  98. data/app/pb_kits/playbook/pb_flex/_flex.scss +100 -106
  99. data/app/pb_kits/playbook/pb_flex/_flex.tsx +25 -32
  100. data/app/pb_kits/playbook/pb_flex/_flex_item.scss +51 -146
  101. data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +8 -19
  102. data/app/pb_kits/playbook/pb_flex/flex.rb +16 -16
  103. data/app/pb_kits/playbook/pb_flex/flex_item.rb +6 -6
  104. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +1 -1
  105. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +344 -381
  106. data/app/pb_kits/playbook/pb_form_pill/_form_pill.test.jsx +4 -4
  107. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +7 -8
  108. data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +2 -9
  109. data/app/pb_kits/playbook/pb_gauge/_gauge.scss +5 -5
  110. data/app/pb_kits/playbook/pb_hashtag/_hashtag.scss +1 -1
  111. data/app/pb_kits/playbook/pb_highlight/_highlight.scss +1 -1
  112. data/app/pb_kits/playbook/pb_home_address_street/home_adress_street.test.js +2 -2
  113. data/app/pb_kits/playbook/pb_icon_button/_icon_button.scss +4 -4
  114. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +39 -40
  115. data/app/pb_kits/playbook/pb_icon_circle/icon_circle.rb +1 -1
  116. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.test.js +1 -1
  117. data/app/pb_kits/playbook/pb_icon_value/_icon_value.scss +15 -16
  118. data/app/pb_kits/playbook/pb_image/_image.scss +36 -41
  119. data/app/pb_kits/playbook/pb_label_pill/_label_pill.scss +1 -1
  120. data/app/pb_kits/playbook/pb_label_value/_label_value.scss +2 -3
  121. data/app/pb_kits/playbook/pb_label_value/label_value.test.js +2 -2
  122. data/app/pb_kits/playbook/pb_layout/_layout.scss +305 -336
  123. data/app/pb_kits/playbook/pb_layout/_layout.tsx +11 -14
  124. data/app/pb_kits/playbook/pb_layout/item.rb +7 -1
  125. data/app/pb_kits/playbook/pb_layout/layout.rb +25 -16
  126. data/app/pb_kits/playbook/pb_layout/layout.test.js +3 -3
  127. data/app/pb_kits/playbook/pb_legend/_legend.scss +16 -66
  128. data/app/pb_kits/playbook/pb_legend/legend.test.js +1 -1
  129. data/app/pb_kits/playbook/pb_lightbox/lightbox.scss +4 -4
  130. data/app/pb_kits/playbook/pb_lightbox/lightbox.test.jsx +1 -1
  131. data/app/pb_kits/playbook/pb_link/_link.scss +19 -113
  132. data/app/pb_kits/playbook/pb_list/_list.scss +1 -1
  133. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.scss +11 -13
  134. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.tsx +3 -1
  135. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.html.erb +5 -0
  136. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.jsx +24 -0
  137. data/app/pb_kits/playbook/pb_loading_inline/docs/example.yml +2 -0
  138. data/app/pb_kits/playbook/pb_loading_inline/docs/index.js +1 -0
  139. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.html.erb +1 -1
  140. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +11 -0
  141. data/app/pb_kits/playbook/pb_map/_map.scss +1 -1
  142. data/app/pb_kits/playbook/pb_map/docs/_map_default.jsx +1 -1
  143. data/app/pb_kits/playbook/pb_map/docs/_map_with_custom_button.jsx +1 -1
  144. data/app/pb_kits/playbook/pb_map/docs/_map_with_plugin.jsx +1 -1
  145. data/app/pb_kits/playbook/pb_message/_message.scss +16 -21
  146. data/app/pb_kits/playbook/pb_message/_message.tsx +0 -1
  147. data/app/pb_kits/playbook/pb_message/_message_mixins.scss +12 -5
  148. data/app/pb_kits/playbook/pb_message/message.html.erb +1 -1
  149. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +3 -6
  150. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +15 -16
  151. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +1 -1
  152. data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +1 -1
  153. data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +1 -1
  154. data/app/pb_kits/playbook/pb_online_status/_online_status.scss +15 -19
  155. data/app/pb_kits/playbook/pb_online_status/_online_status.tsx +1 -1
  156. data/app/pb_kits/playbook/pb_online_status/online_status.rb +4 -5
  157. data/app/pb_kits/playbook/pb_online_status/online_status.test.js +2 -2
  158. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +1 -1
  159. data/app/pb_kits/playbook/pb_overlay/overlay.rb +1 -1
  160. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +2 -5
  161. data/app/pb_kits/playbook/pb_person/_person.scss +1 -1
  162. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +1 -1
  163. data/app/pb_kits/playbook/pb_pill/_pill.scss +21 -23
  164. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +13 -15
  165. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +33 -108
  166. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +1 -1
  167. data/app/pb_kits/playbook/pb_radio/_radio.scss +52 -71
  168. data/app/pb_kits/playbook/pb_radio/_radio.tsx +1 -1
  169. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +3 -0
  170. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +4 -4
  171. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +70 -81
  172. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +1 -9
  173. data/app/pb_kits/playbook/pb_section_separator/_section_separator_mixin.scss +1 -1
  174. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.jsx +1 -3
  175. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +1 -7
  176. data/app/pb_kits/playbook/pb_select/_select.scss +4 -4
  177. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +2 -6
  178. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.scss +8 -17
  179. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +29 -39
  180. data/app/pb_kits/playbook/pb_selectable_list/_item.tsx +0 -2
  181. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +11 -8
  182. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.test.js +3 -2
  183. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.html.erb +2 -2
  184. data/app/pb_kits/playbook/pb_source/_source.scss +8 -8
  185. data/app/pb_kits/playbook/pb_star_rating/_star_rating.scss +1 -1
  186. data/app/pb_kits/playbook/pb_star_rating/star_rating.test.js +1 -1
  187. data/app/pb_kits/playbook/pb_stat_value/_stat_value.scss +2 -2
  188. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +5 -5
  189. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +6 -6
  190. data/app/pb_kits/playbook/pb_time/_time.scss +17 -44
  191. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +23 -44
  192. data/app/pb_kits/playbook/pb_time_range_inline/time_range_inline.rb +1 -1
  193. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.scss +8 -5
  194. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +10 -16
  195. data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +4 -1
  196. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +1 -1
  197. data/app/pb_kits/playbook/pb_timestamp/timestamp.test.js +2 -2
  198. data/app/pb_kits/playbook/pb_title/_title.scss +39 -44
  199. data/app/pb_kits/playbook/pb_title/_title.tsx +8 -17
  200. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +2 -2
  201. data/app/pb_kits/playbook/pb_title/title.rb +10 -20
  202. data/app/pb_kits/playbook/pb_title/title.test.js +4 -4
  203. data/app/pb_kits/playbook/pb_title_count/_title_count.scss +8 -19
  204. data/app/pb_kits/playbook/pb_title_detail/_title_detail.scss +11 -10
  205. data/app/pb_kits/playbook/pb_toggle/_toggle.scss +1 -4
  206. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +4 -3
  207. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +1 -1
  208. data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +3 -3
  209. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +1 -1
  210. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +1 -1
  211. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.html.erb +22 -1
  212. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.jsx +1 -1
  213. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_without_pills.html.erb +2 -2
  214. data/app/pb_kits/playbook/pb_user/_user.scss +33 -83
  215. data/app/pb_kits/playbook/pb_user/user.test.js +1 -1
  216. data/app/pb_kits/playbook/pb_user_badge/_user_badge.scss +8 -23
  217. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.scss +10 -10
  218. data/app/pb_kits/playbook/pb_weekday_stacked/weekday_stacked.test.jsx +3 -3
  219. data/dist/chunks/{_line_graph-CApw7aQD.js → _line_graph-CiVc-Cod.js} +1 -1
  220. data/dist/chunks/{_typeahead-J1_avqdO.js → _typeahead-BQnvz-Ks.js} +1 -1
  221. data/dist/chunks/_weekday_stacked-BkvHv3ZO.js +37 -0
  222. data/dist/chunks/vendor.js +1 -1
  223. data/dist/menu.yml +6 -0
  224. data/dist/playbook-doc.js +2 -2
  225. data/dist/playbook-rails-react-bindings.js +1 -1
  226. data/dist/playbook-rails.js +1 -1
  227. data/dist/playbook.css +1 -1
  228. data/lib/playbook/version.rb +1 -1
  229. metadata +36 -5
  230. data/dist/chunks/_weekday_stacked-Bugv1mOh.js +0 -37
@@ -11,13 +11,11 @@ $pb_button_sizes: (
11
11
  "lg": ($font_large - 2px),
12
12
  );
13
13
 
14
- // Base button class
15
- .pb_button_kit {
14
+ [class*=pb_button_kit]{
16
15
  @include pb_button;
17
-
18
- // Size variants
16
+ // Size =================
19
17
  @each $name, $size in $pb_button_sizes {
20
- &.pb_button_size_#{$name} {
18
+ &[class*=size_#{$name}] {
21
19
  font-size: $size;
22
20
  padding: $size / 2 $size * 2.42;
23
21
  @if $name == "sm" {
@@ -26,24 +24,17 @@ $pb_button_sizes: (
26
24
  }
27
25
  }
28
26
 
29
- // Variant styles
30
- &.pb_button_primary {
27
+ // Variants =================
28
+ &[class*=_primary] {
31
29
  @include pb_button_primary;
32
30
  }
33
-
34
- &.pb_button_secondary {
31
+ &[class*=_secondary] {
35
32
  @include pb_button_secondary;
36
33
  }
37
-
38
- &.pb_button_link {
34
+ &[class*=_link] {
39
35
  @include pb_button_link;
40
36
  }
41
-
42
- &.pb_button_danger {
43
- @include pb_button_danger;
44
- }
45
-
46
- &.pb_button_reaction {
37
+ &[class*=_reaction] {
47
38
  background-color: $card_light;
48
39
  min-width: 40px;
49
40
  border-radius: $border_radius_rounded;
@@ -58,51 +49,52 @@ $pb_button_sizes: (
58
49
  &:hover {
59
50
  background-color: $bg_light;
60
51
  }
61
- &.pb_button_active {
52
+ &.active {
62
53
  border-color:transparent;
63
54
  box-shadow: 0px 0px 0 2px $primary_action;
64
55
  &:hover {
65
56
  background-color: rgba($primary, 0.03);
66
57
  }
67
58
  }
68
-
69
- &.pb_button_reaction_default {
70
- padding: ($space_xxs + 1) ($space_sm - 4);
71
- color: $text_lt_lighter;
72
- }
73
59
  }
74
60
 
75
- // Block (full width) style
76
- &.pb_button_block {
61
+ &.reaction_default {
62
+ padding: ($space_xxs + 1) ($space_sm - 4);
63
+ color: $text_lt_lighter;
64
+ }
65
+
66
+ // Block ====================
67
+ &[class*=_block] {
77
68
  @include pb_button_block;
78
- width: 100% !important;
79
69
  }
80
70
 
81
- // Loading state
82
- &.pb_button_loading {
71
+ // Loading ==================
72
+ &[class*=_loading] {
83
73
  @include pb_button_loading(true);
84
74
  }
85
75
 
86
- // Disabled state
87
- &.pb_button_disabled {
76
+ // Danger ===================
77
+ &[class*=_danger] {
78
+ @include pb_button_danger;
79
+ }
80
+
81
+ // Disabled =================
82
+ &[class*=_disabled] {
88
83
  @include pb_button_disabled;
89
84
  }
90
85
 
91
- // Dark theme variants
92
- &.dark {
93
- &.pb_button_primary {
86
+ // Dark Variants =============
87
+ &.dark {
88
+ &[class*=_primary] {
94
89
  @include pb_button_primary_dark;
95
90
  }
96
-
97
- &.pb_button_secondary {
91
+ &[class*=_secondary] {
98
92
  @include pb_button_secondary_dark;
99
93
  }
100
-
101
- &.pb_button_link {
94
+ &[class*=_link] {
102
95
  @include pb_button_link_dark;
103
96
  }
104
-
105
- &.pb_button_disabled {
97
+ &[class*=_disabled] {
106
98
  @include pb_button_disabled_dark;
107
99
  }
108
100
  }
@@ -53,18 +53,18 @@ const buttonClassName = (props: ButtonPropTypes) => {
53
53
  size = null,
54
54
  } = props
55
55
 
56
- const classNames = ['pb_button_kit']
57
-
58
- if (variant) classNames.push(`pb_button_${variant}`)
59
- if (type) classNames.push(`pb_button_${type}`)
60
- if (fullWidth) classNames.push('pb_button_block')
61
- classNames.push(disabled ? 'pb_button_disabled' : 'pb_button_enabled')
62
- if (loading) classNames.push('pb_button_loading')
63
- if (size) classNames.push(`pb_button_size_${size}`)
64
- if (variant === 'reaction' && icon && !isValidEmoji(icon)) classNames.push('pb_button_reaction_default')
65
- if (variant === 'reaction' && highlight) classNames.push('pb_button_active')
66
-
67
- return classNames.join(' ')
56
+ let className = 'pb_button_kit'
57
+
58
+ className += `${variant !== null ? `_${variant}` : ''}`
59
+ className += `${type !== null ? `_${type}` : ''}`
60
+ className += `${fullWidth ? '_block' : ''}`
61
+ className += disabled ? '_disabled' : '_enabled'
62
+ className += loading ? '_loading' : ''
63
+ className += `${size !== null ? ` size_${size}` : ''}`
64
+ className += `${variant === 'reaction' && !isValidEmoji(icon) ? ` reaction_default` : ''}`
65
+ className += `${variant === 'reaction' && highlight ? ` active` : ''}`
66
+
67
+ return className
68
68
  }
69
69
  const spinnerIcon = getAllIcons()["spinner"]
70
70
 
@@ -233,4 +233,4 @@ $pb_button_border_width: 0px;
233
233
  $disabled_color: rgba($white, $opacity_5);
234
234
  @include pb_button_variant(rgba($slate, $opacity_5), $disabled_color);
235
235
  pointer-events: none;
236
- }
236
+ }
@@ -74,17 +74,8 @@ module Playbook
74
74
  end
75
75
 
76
76
  def classname
77
- class_names = ["pb_button_kit"]
78
- class_names << "pb_button_#{variant}" if variant
79
- class_names << "pb_button_#{full_width_class}"
80
- class_names << "pb_button_#{disabled_class}"
81
- class_names << "pb_button_loading" if loading
82
- class_names << "pb_button_size_#{size}" if size
83
- class_names << "pb_button_reaction_default" if variant === "reaction" && icon && !valid_emoji(icon)
84
- class_names << "pb_button_active" if variant === "reaction" && highlight
85
-
86
- class_names.join(" ")
87
- generate_classname(class_names.compact.join(" "), separator: " ")
77
+ button_class = generate_classname("pb_button_kit", variant, full_width_class, disabled_class, loading_class)
78
+ button_class + size_class + default_reaction_class + highlight_active
88
79
  end
89
80
 
90
81
  private
@@ -97,6 +88,22 @@ module Playbook
97
88
  full_width ? "block" : "inline"
98
89
  end
99
90
 
91
+ def loading_class
92
+ loading ? "loading" : nil
93
+ end
94
+
95
+ def size_class
96
+ size ? " size_#{size}" : ""
97
+ end
98
+
99
+ def default_reaction_class
100
+ variant === "reaction" && !object.valid_emoji(object.icon) ? " reaction_default" : ""
101
+ end
102
+
103
+ def highlight_active
104
+ variant === "reaction" && object.highlight ? " active" : ""
105
+ end
106
+
100
107
  def spinner_path
101
108
  "app/pb_kits/playbook/utilities/icons/spinner.svg"
102
109
  end
@@ -22,7 +22,7 @@ test('passes type, text, and value props to button', () => {
22
22
  const kit = screen.getByTestId('primary-test')
23
23
  const content = screen.getByText(text)
24
24
 
25
- expect(kit).toHaveClass('pb_button_kit pb_button_primary pb_button_inline pb_button_enabled')
25
+ expect(kit).toHaveClass('pb_button_kit_primary_inline_enabled')
26
26
  expect(kit).toHaveAttribute('type', htmlType)
27
27
  expect(kit).toHaveAttribute('value', value)
28
28
  expect(content).toHaveTextContent(text)
@@ -54,7 +54,7 @@ test('button with secondary variant', () => {
54
54
 
55
55
  const kit = screen.getByTestId('variant-test')
56
56
 
57
- expect(kit).toHaveClass('pb_button_kit pb_button_secondary pb_button_inline pb_button_enabled')
57
+ expect(kit).toHaveClass('pb_button_kit_secondary_inline_enabled')
58
58
  expect(kit).toHaveAttribute('type', 'button')
59
59
  })
60
60
 
@@ -98,7 +98,7 @@ test('size prop', () => {
98
98
 
99
99
  const kit = screen.getByTestId('size-test')
100
100
 
101
- expect(kit).toHaveClass('pb_button_kit pb_button_primary pb_button_inline pb_button_enabled pb_button_size_sm')
101
+ expect(kit).toHaveClass('pb_button_kit_primary_inline_enabled size_sm')
102
102
  })
103
103
 
104
104
  test('should render target prop', () => {
@@ -5,101 +5,92 @@
5
5
  @import "../tokens/colors";
6
6
  @import "../tokens/opacity";
7
7
 
8
- // Horizontal toolbars
9
- .pb_button_toolbar_kit_horizontal_primary,
10
- .pb_button_toolbar_kit_horizontal_secondary {
11
- display: inline-flex;
12
- flex-direction: row;
13
- align-items: center;
14
- justify-content: flex-start;
15
-
16
- & > .pb_button_kit {
17
- &:not(:last-child){
18
- border-bottom-right-radius: 0;
19
- border-top-right-radius: 0;
20
- border-right-width: 0;
21
- }
22
- &:not(:first-child){
23
- border-bottom-left-radius: 0;
24
- border-top-left-radius: 0;
25
- border-left-width: 0;
26
- }
27
- }
28
-
29
- & > .pb_button_kit:not(:first-child):hover::before,
30
- .pb_button_kit:hover + .pb_button_kit::before {
31
- opacity: 0
32
- }
33
- }
8
+ [class^=pb_button_toolbar]{
34
9
 
35
- .pb_button_toolbar_kit_horizontal_primary {
36
- & > .pb_button_kit:not(:first-child)::before {
37
- @include toolbar_border(false, $primary_border)
38
- }
39
- }
10
+ // Horizontal =============
40
11
 
41
- .pb_button_toolbar_kit_horizontal_secondary {
42
- & > .pb_button_kit:not(:first-child)::before {
43
- @include toolbar_border(false, $secondary_border)
44
- }
45
- }
46
-
47
- // Vertical toolbars
48
- .pb_button_toolbar_kit_vertical_primary,
49
- .pb_button_toolbar_kit_vertical_secondary {
50
- display: inline-flex;
51
- flex-direction: column;
52
- align-items: flex-start;
53
- justify-content: center;
54
-
55
- & > .pb_button_kit {
56
- display: block;
57
- flex-grow: 1;
58
- flex-shrink: 1;
59
- flex-basis: auto;
60
- width: 100%;
61
- &:not(:last-child){
62
- border-bottom-right-radius: 0;
63
- border-bottom-left-radius: 0;
64
- border-bottom-width: 0;
12
+ &[class*=_horizontal] {
13
+ display: inline-flex;
14
+ flex-direction: row;
15
+ align-items: center;
16
+ justify-content: flex-start;
17
+ & > [class^=pb_button] {
18
+ &:not(:last-child){
19
+ border-bottom-right-radius: 0;
20
+ border-top-right-radius: 0;
21
+ border-right-width: 0;
22
+ }
23
+ &:not(:first-child){
24
+ border-bottom-left-radius: 0;
25
+ border-top-left-radius: 0;
26
+ border-left-width: 0;
27
+ }
65
28
  }
66
- &:not(:first-child){
67
- border-top-right-radius: 0;
68
- border-top-left-radius: 0;
69
- border-top-width: 0;
29
+ &[class*=_primary] {
30
+ & > [class^=pb_button]:not(:first-child)::before {
31
+ @include toolbar_border(false, $primary_border)
32
+ }
70
33
  }
34
+ &[class*=_secondary] {
35
+ & > [class^=pb_button]:not(:first-child)::before {
36
+ @include toolbar_border(false, $secondary_border)
37
+ }
38
+ }
39
+ & > [class^=pb_button]:not(:first-child):hover::before,
40
+ [class^=pb_button]:hover + [class^=pb_button]::before {
41
+ opacity: 0
42
+ }
71
43
  }
72
-
73
- & > .pb_button_kit:not(:first-child):hover::before,
74
- .pb_button_kit:hover + .pb_button_kit::before {
75
- opacity: 0
76
- }
77
- }
78
44
 
79
- .pb_button_toolbar_kit_vertical_primary {
80
- & > .pb_button_kit:not(:first-child)::before {
81
- @include toolbar_border(true, $primary_border)
82
- }
83
- }
45
+ // Vertical =============
84
46
 
85
- .pb_button_toolbar_kit_vertical_secondary {
86
- & > .pb_button_kit:not(:first-child)::before {
87
- @include toolbar_border(true, $secondary_border)
47
+ &[class*=_vertical] {
48
+ display: inline-flex;
49
+ flex-direction: column;
50
+ align-items: flex-start;
51
+ justify-content: center;
52
+ & > [class^=pb_button] {
53
+ display: block;
54
+ flex-grow: 1;
55
+ flex-shrink: 1;
56
+ flex-basis: auto;
57
+ width: 100%;
58
+ &:not(:last-child){
59
+ border-bottom-right-radius: 0;
60
+ border-bottom-left-radius: 0;
61
+ border-bottom-width: 0;
62
+ }
63
+ &:not(:first-child){
64
+ border-top-right-radius: 0;
65
+ border-top-left-radius: 0;
66
+ border-top-width: 0;
67
+ }
68
+ }
69
+ &[class*=_primary] {
70
+ & > [class^=pb_button]:not(:first-child)::before {
71
+ @include toolbar_border(true, $primary_border)
72
+ }
73
+ }
74
+ &[class*=_secondary] {
75
+ & > [class^=pb_button]:not(:first-child)::before {
76
+ @include toolbar_border(true, $secondary_border)
77
+ }
78
+ }
79
+ & > [class^=pb_button]:not(:first-child):hover::before,
80
+ [class^=pb_button]:hover + [class^=pb_button]::before {
81
+ opacity: 0
82
+ }
88
83
  }
89
- }
90
84
 
91
- // Button hover styles for all toolbars
92
- .pb_button_toolbar_kit_horizontal_primary,
93
- .pb_button_toolbar_kit_horizontal_secondary,
94
- .pb_button_toolbar_kit_vertical_primary,
95
- .pb_button_toolbar_kit_vertical_secondary {
96
- & > .pb_button_kit {
85
+ // Hover =============
86
+
87
+ & > [class^=pb_button] {
97
88
  @media (hover:hover) {
98
89
  &:hover {
99
90
  background-color:darken($royal, 20%);
100
91
  }
101
92
  }
102
- &.pb_button_secondary {
93
+ &[class*=secondary] {
103
94
  @media (hover:hover) {
104
95
  &:hover {
105
96
  background-color:rgba($primary_action, $opacity_3)
@@ -107,4 +98,4 @@
107
98
  }
108
99
  }
109
100
  }
110
- }
101
+ }
@@ -2,50 +2,51 @@
2
2
  @import "../tokens/colors";
3
3
  @import "../tokens/opacity";
4
4
 
5
- // Dark theme - Vertical toolbars
6
- .pb_button_toolbar_kit_vertical_primary.dark {
7
- & > .pb_button_kit:not(:first-child)::before {
8
- @include toolbar_border(true, $primary_dark)
9
- }
10
- }
5
+ [class^=pb_button_toolbar]{
11
6
 
12
- .pb_button_toolbar_kit_vertical_secondary.dark {
13
- & > .pb_button_kit:not(:first-child)::before {
14
- @include toolbar_border(true, $secondary_dark)
15
- }
16
- }
7
+ // Vertical =============
17
8
 
18
- // Dark theme - Horizontal toolbars
19
- .pb_button_toolbar_kit_horizontal_primary.dark {
20
- & > .pb_button_kit:not(:first-child)::before {
21
- @include toolbar_border(false, $primary_dark)
9
+ &[class*=_vertical] {
10
+ &[class*=_primary].dark {
11
+ & > [class^=pb_button]:not(:first-child)::before {
12
+ @include toolbar_border(true, $primary_dark)
13
+ }
14
+ }
15
+ &[class*=_secondary].dark {
16
+ & > [class^=pb_button]:not(:first-child)::before {
17
+ @include toolbar_border(true, $secondary_dark)
18
+ }
19
+ }
22
20
  }
23
- }
24
21
 
25
- .pb_button_toolbar_kit_horizontal_secondary.dark {
26
- & > .pb_button_kit:not(:first-child)::before {
27
- @include toolbar_border(false, $secondary_dark)
28
- }
29
- }
22
+ // Horizontal =============
30
23
 
31
- // Dark theme hover effects
32
- .pb_button_toolbar_kit_horizontal_primary.dark,
33
- .pb_button_toolbar_kit_horizontal_secondary.dark,
34
- .pb_button_toolbar_kit_vertical_primary.dark,
35
- .pb_button_toolbar_kit_vertical_secondary.dark {
36
- & > .pb_button_kit:not(:first-child):hover::before,
37
- .pb_button_kit:hover + .pb_button_kit::before {
24
+ &[class*=_horizontal] {
25
+ &[class*=_primary].dark {
26
+ & > [class^=pb_button]:not(:first-child)::before {
27
+ @include toolbar_border(false, $primary_dark)
28
+ }
29
+ }
30
+ &[class*=_secondary].dark {
31
+ & > [class^=pb_button]:not(:first-child)::before {
32
+ @include toolbar_border(false, $secondary_dark)
33
+ }
34
+ }
35
+ }
36
+ & > [class^=pb_button]:not(:first-child):hover::before,
37
+ [class^=pb_button]:hover + [class^=pb_button]::before {
38
38
  opacity: 0
39
39
  }
40
40
 
41
- // Dark button hover styles
42
- .pb_button_kit.dark {
41
+ // Hover =============
42
+
43
+ [class^=pb_button].dark {
43
44
  @media (hover:hover) {
44
45
  &:hover {
45
46
  background-color:darken($royal, 20%);
46
47
  }
47
48
  }
48
- &.pb_button_secondary {
49
+ &[class*=secondary] {
49
50
  @media (hover:hover) {
50
51
  &:hover {
51
52
  background-color:rgba($primary_action, $opacity_3)
@@ -53,4 +54,4 @@
53
54
  }
54
55
  }
55
56
  }
56
- }
57
+ }
@@ -24,4 +24,4 @@ $secondary_dark: rgba($bg_dark, $opacity_2);
24
24
  position: relative;
25
25
  bottom: 0;
26
26
  display: block;
27
- }
27
+ }
@@ -20,7 +20,7 @@ test('default test', () => {
20
20
 
21
21
  expect(kit).toHaveClass('pb_button_toolbar_kit_horizontal_primary')
22
22
  expect(kit).toContainElement(child)
23
- expect(child).toHaveClass('pb_button_kit pb_button_primary pb_button_inline pb_button_enabled')
23
+ expect(child).toHaveClass('pb_button_kit_primary_inline_enabled')
24
24
  })
25
25
 
26
26
  test('variant and orientation props', () => {
@@ -42,5 +42,5 @@ test('variant and orientation props', () => {
42
42
  const child = screen.getByTestId('child-button')
43
43
 
44
44
  expect(kit).toHaveClass('pb_button_toolbar_kit_vertical_secondary')
45
- expect(child).toHaveClass('pb_button_kit pb_button_secondary pb_button_inline pb_button_enabled')
45
+ expect(child).toHaveClass('pb_button_kit_secondary_inline_enabled')
46
46
  })
@@ -1,115 +1,32 @@
1
1
  @import "../tokens/colors";
2
2
  @import "caption_mixin";
3
3
 
4
- // Base caption classes - all size combinations
5
- .pb_caption_kit,
6
- .pb_caption_kit_xs,
7
- .pb_caption_kit_sm,
8
- .pb_caption_kit_md,
9
- .pb_caption_kit_base,
10
- .pb_caption_kit_lg,
11
- .pb_caption_kit_xl {
4
+ [class^="pb_caption_kit"] {
12
5
  @include caption;
13
- }
14
-
15
- // Apply caption mixin to all size+color combinations too
16
- @each $color_name, $color_value in $pb_caption_colors {
17
- .pb_caption_kit_xs_#{$color_name},
18
- .pb_caption_kit_sm_#{$color_name},
19
- .pb_caption_kit_md_#{$color_name},
20
- .pb_caption_kit_base_#{$color_name},
21
- .pb_caption_kit_lg_#{$color_name},
22
- .pb_caption_kit_xl_#{$color_name} {
23
- @include caption;
6
+ &[class*="_link"] {
7
+ color: $primary;
24
8
  }
25
- }
26
9
 
27
- // Apply caption mixin to link variants too
28
- .pb_caption_kit_xs_link,
29
- .pb_caption_kit_sm_link,
30
- .pb_caption_kit_md_link,
31
- .pb_caption_kit_base_link,
32
- .pb_caption_kit_lg_link,
33
- .pb_caption_kit_xl_link {
34
- @include caption;
35
- }
36
-
37
- // Size-specific styles
38
- .pb_caption_kit_lg,
39
- .pb_caption_kit_lg_default,
40
- .pb_caption_kit_lg_light,
41
- .pb_caption_kit_lg_lighter,
42
- .pb_caption_kit_lg_success,
43
- .pb_caption_kit_lg_error,
44
- .pb_caption_kit_lg_link {
45
- @include caption_lg;
46
- }
47
-
48
- // Apply lg mixin to all lg color combinations
49
- @each $color_name, $color_value in $pb_caption_colors {
50
- .pb_caption_kit_lg_#{$color_name} {
10
+ &[class^="pb_caption_kit_lg"] {
51
11
  @include caption_lg;
52
12
  }
53
- }
54
13
 
55
- .pb_caption_kit_xs,
56
- .pb_caption_kit_xs_default,
57
- .pb_caption_kit_xs_light,
58
- .pb_caption_kit_xs_lighter,
59
- .pb_caption_kit_xs_success,
60
- .pb_caption_kit_xs_error,
61
- .pb_caption_kit_xs_link {
62
- @include caption_xs;
63
- }
64
-
65
- // Apply xs mixin to all xs color combinations
66
- @each $color_name, $color_value in $pb_caption_colors {
67
- .pb_caption_kit_xs_#{$color_name} {
14
+ &[class^="pb_caption_kit_xs"] {
68
15
  @include caption_xs;
69
16
  }
70
- }
71
-
72
- // Color variants - generate all size/color combinations
73
- @each $color_name, $color_value in $pb_caption_colors {
74
- .pb_caption_kit_xs_#{$color_name},
75
- .pb_caption_kit_sm_#{$color_name},
76
- .pb_caption_kit_md_#{$color_name},
77
- .pb_caption_kit_base_#{$color_name},
78
- .pb_caption_kit_lg_#{$color_name},
79
- .pb_caption_kit_xl_#{$color_name} {
80
- color: $color_value;
17
+
18
+ &[class*="link"] {
19
+ color: $primary;
81
20
  }
82
- }
83
21
 
84
- // Link variant (deprecated but still supported)
85
- .pb_caption_kit_xs_link,
86
- .pb_caption_kit_sm_link,
87
- .pb_caption_kit_md_link,
88
- .pb_caption_kit_base_link,
89
- .pb_caption_kit_lg_link,
90
- .pb_caption_kit_xl_link {
91
- color: $primary;
92
- }
93
-
94
- // Dark theme variants
95
- .pb_caption_kit.dark,
96
- .pb_caption_kit_xs.dark,
97
- .pb_caption_kit_sm.dark,
98
- .pb_caption_kit_md.dark,
99
- .pb_caption_kit_base.dark,
100
- .pb_caption_kit_lg.dark,
101
- .pb_caption_kit_xl.dark {
102
- @include caption_dark;
103
- }
22
+ @include pb_caption_kit_colors;
104
23
 
105
- // Dark theme color variants
106
- @each $color_name, $color_value in $pb_dark_caption_colors {
107
- .pb_caption_kit_xs_#{$color_name}.dark,
108
- .pb_caption_kit_sm_#{$color_name}.dark,
109
- .pb_caption_kit_md_#{$color_name}.dark,
110
- .pb_caption_kit_base_#{$color_name}.dark,
111
- .pb_caption_kit_lg_#{$color_name}.dark,
112
- .pb_caption_kit_xl_#{$color_name}.dark {
113
- color: $color_value;
24
+ &.dark {
25
+ @include caption_dark;
26
+ @each $name, $color in $pb_dark_caption_colors {
27
+ &[class*="_#{$name}"] {
28
+ color: $color;
29
+ }
30
+ }
114
31
  }
115
- }
32
+ }
@@ -44,4 +44,11 @@ $pb_dark_caption_colors: (
44
44
 
45
45
  @mixin caption_dark {
46
46
  color: $text_dk_light;
47
- }
47
+ }
48
+ @mixin pb_caption_kit_colors {
49
+ @each $name, $color in $pb_caption_colors {
50
+ &[class*="#{$name}"] {
51
+ color: $color
52
+ }
53
+ }
54
+ }