playbook_ui 14.25.0.pre.alpha.PLAY2369textinputautocompleteprop9970 → 14.25.0.pre.alpha.PLAY2369textinputautocompleteprop10269

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 (226) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +0 -1
  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 +60 -65
  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 +135 -29
  9. data/app/pb_kits/playbook/pb_body/_body.scss +108 -35
  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 +17 -30
  12. data/app/pb_kits/playbook/pb_button/_button.scss +39 -31
  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 +11 -18
  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 +82 -73
  18. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_dark.scss +32 -33
  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 +100 -17
  22. data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +1 -8
  23. data/app/pb_kits/playbook/pb_card/_card.scss +116 -79
  24. data/app/pb_kits/playbook/pb_card/_card.tsx +26 -11
  25. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -1
  26. data/app/pb_kits/playbook/pb_card/card.rb +8 -7
  27. data/app/pb_kits/playbook/pb_card/card_header.rb +6 -2
  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 +11 -2
  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 +124 -39
  36. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.scss +16 -6
  37. data/app/pb_kits/playbook/pb_date/_date.scss +16 -18
  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 +6 -5
  42. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +29 -23
  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 +66 -26
  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 +8 -15
  50. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +6 -7
  51. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.scss +17 -14
  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 +86 -21
  54. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +330 -123
  55. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.html.erb +16 -2
  56. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.scss +10 -7
  57. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +1 -1
  58. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +1 -1
  59. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +6 -6
  60. data/app/pb_kits/playbook/pb_dropdown/index.js +3 -3
  61. data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +4 -4
  62. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +20 -9
  63. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +1 -1
  64. data/app/pb_kits/playbook/pb_filter/_filter.scss +8 -8
  65. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +65 -29
  66. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +1 -2
  67. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.test.js +1 -1
  68. data/app/pb_kits/playbook/pb_flex/_flex.scss +106 -100
  69. data/app/pb_kits/playbook/pb_flex/_flex.tsx +32 -25
  70. data/app/pb_kits/playbook/pb_flex/_flex_item.scss +146 -51
  71. data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +19 -8
  72. data/app/pb_kits/playbook/pb_flex/flex.rb +16 -16
  73. data/app/pb_kits/playbook/pb_flex/flex_item.rb +6 -6
  74. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +1 -1
  75. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +381 -344
  76. data/app/pb_kits/playbook/pb_form_pill/_form_pill.test.jsx +4 -4
  77. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +8 -7
  78. data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +9 -2
  79. data/app/pb_kits/playbook/pb_gauge/_gauge.scss +5 -5
  80. data/app/pb_kits/playbook/pb_hashtag/_hashtag.scss +1 -1
  81. data/app/pb_kits/playbook/pb_highlight/_highlight.scss +1 -1
  82. data/app/pb_kits/playbook/pb_home_address_street/home_adress_street.test.js +2 -2
  83. data/app/pb_kits/playbook/pb_icon_button/_icon_button.scss +4 -4
  84. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +40 -39
  85. data/app/pb_kits/playbook/pb_icon_circle/icon_circle.rb +1 -1
  86. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.test.js +1 -1
  87. data/app/pb_kits/playbook/pb_icon_value/_icon_value.scss +16 -15
  88. data/app/pb_kits/playbook/pb_image/_image.scss +41 -36
  89. data/app/pb_kits/playbook/pb_label_pill/_label_pill.scss +1 -1
  90. data/app/pb_kits/playbook/pb_label_value/_label_value.scss +3 -2
  91. data/app/pb_kits/playbook/pb_label_value/label_value.test.js +2 -2
  92. data/app/pb_kits/playbook/pb_layout/_layout.scss +336 -305
  93. data/app/pb_kits/playbook/pb_layout/_layout.tsx +14 -11
  94. data/app/pb_kits/playbook/pb_layout/item.rb +1 -7
  95. data/app/pb_kits/playbook/pb_layout/layout.rb +16 -25
  96. data/app/pb_kits/playbook/pb_layout/layout.test.js +3 -3
  97. data/app/pb_kits/playbook/pb_legend/_legend.scss +66 -16
  98. data/app/pb_kits/playbook/pb_legend/legend.test.js +1 -1
  99. data/app/pb_kits/playbook/pb_lightbox/lightbox.scss +4 -4
  100. data/app/pb_kits/playbook/pb_lightbox/lightbox.test.jsx +1 -1
  101. data/app/pb_kits/playbook/pb_link/_link.scss +113 -19
  102. data/app/pb_kits/playbook/pb_list/_list.scss +1 -1
  103. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.scss +13 -11
  104. data/app/pb_kits/playbook/pb_map/_map.scss +1 -1
  105. data/app/pb_kits/playbook/pb_map/docs/_map_default.jsx +1 -1
  106. data/app/pb_kits/playbook/pb_map/docs/_map_with_custom_button.jsx +1 -1
  107. data/app/pb_kits/playbook/pb_map/docs/_map_with_plugin.jsx +1 -1
  108. data/app/pb_kits/playbook/pb_message/_message.scss +21 -16
  109. data/app/pb_kits/playbook/pb_message/_message.tsx +1 -0
  110. data/app/pb_kits/playbook/pb_message/_message_mixins.scss +5 -12
  111. data/app/pb_kits/playbook/pb_message/message.html.erb +1 -1
  112. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +6 -3
  113. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +16 -15
  114. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +1 -1
  115. data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +1 -1
  116. data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +1 -1
  117. data/app/pb_kits/playbook/pb_online_status/_online_status.scss +19 -15
  118. data/app/pb_kits/playbook/pb_online_status/_online_status.tsx +1 -1
  119. data/app/pb_kits/playbook/pb_online_status/online_status.rb +5 -4
  120. data/app/pb_kits/playbook/pb_online_status/online_status.test.js +2 -2
  121. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +1 -1
  122. data/app/pb_kits/playbook/pb_overlay/overlay.rb +1 -1
  123. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +5 -2
  124. data/app/pb_kits/playbook/pb_person/_person.scss +1 -1
  125. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +1 -1
  126. data/app/pb_kits/playbook/pb_pill/_pill.scss +23 -21
  127. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +15 -13
  128. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +108 -33
  129. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +1 -1
  130. data/app/pb_kits/playbook/pb_radio/_radio.scss +71 -52
  131. data/app/pb_kits/playbook/pb_radio/_radio.tsx +1 -1
  132. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +0 -3
  133. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +4 -4
  134. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +81 -70
  135. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +9 -1
  136. data/app/pb_kits/playbook/pb_section_separator/_section_separator_mixin.scss +1 -1
  137. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.jsx +3 -1
  138. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +7 -1
  139. data/app/pb_kits/playbook/pb_select/_select.scss +4 -4
  140. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +6 -2
  141. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.scss +17 -8
  142. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +39 -29
  143. data/app/pb_kits/playbook/pb_selectable_list/_item.tsx +2 -0
  144. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +8 -11
  145. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.test.js +2 -3
  146. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.html.erb +2 -2
  147. data/app/pb_kits/playbook/pb_source/_source.scss +8 -8
  148. data/app/pb_kits/playbook/pb_star_rating/_star_rating.scss +1 -1
  149. data/app/pb_kits/playbook/pb_star_rating/star_rating.test.js +1 -1
  150. data/app/pb_kits/playbook/pb_stat_value/_stat_value.scss +2 -2
  151. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +5 -5
  152. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.html.erb +41 -0
  153. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.jsx +80 -0
  154. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.md +1 -0
  155. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +3 -0
  156. data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
  157. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +6 -6
  158. data/app/pb_kits/playbook/pb_time/_time.scss +44 -17
  159. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +44 -23
  160. data/app/pb_kits/playbook/pb_time_range_inline/time_range_inline.rb +1 -1
  161. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.scss +5 -8
  162. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +16 -10
  163. data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +1 -4
  164. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +1 -1
  165. data/app/pb_kits/playbook/pb_timestamp/timestamp.test.js +2 -2
  166. data/app/pb_kits/playbook/pb_title/_title.scss +44 -39
  167. data/app/pb_kits/playbook/pb_title/_title.tsx +17 -8
  168. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +2 -2
  169. data/app/pb_kits/playbook/pb_title/title.rb +20 -10
  170. data/app/pb_kits/playbook/pb_title/title.test.js +4 -4
  171. data/app/pb_kits/playbook/pb_title_count/_title_count.scss +19 -8
  172. data/app/pb_kits/playbook/pb_title_detail/_title_detail.scss +10 -11
  173. data/app/pb_kits/playbook/pb_toggle/_toggle.scss +4 -1
  174. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +3 -4
  175. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +1 -1
  176. data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +3 -3
  177. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +1 -1
  178. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +1 -1
  179. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.html.erb +1 -22
  180. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.jsx +1 -1
  181. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_without_pills.html.erb +2 -2
  182. data/app/pb_kits/playbook/pb_user/_user.scss +83 -33
  183. data/app/pb_kits/playbook/pb_user/user.test.js +1 -1
  184. data/app/pb_kits/playbook/pb_user_badge/_user_badge.scss +23 -8
  185. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.scss +10 -10
  186. data/app/pb_kits/playbook/pb_weekday_stacked/weekday_stacked.test.jsx +3 -3
  187. data/dist/chunks/{_line_graph-QVm2TVXJ.js → _line_graph-CTpWU06n.js} +1 -1
  188. data/dist/chunks/{_typeahead-DENY2KW9.js → _typeahead-DmVCLhQz.js} +1 -1
  189. data/dist/chunks/{_weekday_stacked-DOM5KkBF.js → _weekday_stacked-DvnT8mDi.js} +2 -2
  190. data/dist/chunks/vendor.js +1 -1
  191. data/dist/menu.yml +0 -6
  192. data/dist/playbook-doc.js +2 -2
  193. data/dist/playbook-rails-react-bindings.js +1 -1
  194. data/dist/playbook-rails.js +1 -1
  195. data/dist/playbook.css +1 -1
  196. data/lib/playbook/version.rb +1 -1
  197. metadata +8 -34
  198. data/app/pb_kits/playbook/pb_drawer/_close_icon.tsx +0 -25
  199. data/app/pb_kits/playbook/pb_drawer/_drawer.scss +0 -381
  200. data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +0 -231
  201. data/app/pb_kits/playbook/pb_drawer/_drawer_context.tsx +0 -3
  202. data/app/pb_kits/playbook/pb_drawer/context.ts +0 -11
  203. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +0 -8
  204. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.jsx +0 -41
  205. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +0 -33
  206. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +0 -78
  207. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +0 -3
  208. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +0 -26
  209. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +0 -20
  210. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.jsx +0 -59
  211. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +0 -24
  212. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +0 -61
  213. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.md +0 -24
  214. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +0 -21
  215. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +0 -54
  216. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +0 -1
  217. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +0 -49
  218. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.jsx +0 -99
  219. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +0 -20
  220. data/app/pb_kits/playbook/pb_drawer/docs/index.js +0 -7
  221. data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +0 -20
  222. data/app/pb_kits/playbook/pb_drawer/drawer.rb +0 -56
  223. data/app/pb_kits/playbook/pb_drawer/drawer.test.jsx +0 -81
  224. data/app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx +0 -60
  225. data/app/pb_kits/playbook/pb_drawer/hooks/useDrawerAnimation.tsx +0 -21
  226. data/app/pb_kits/playbook/pb_drawer/index.js +0 -257
@@ -11,11 +11,13 @@ $pb_button_sizes: (
11
11
  "lg": ($font_large - 2px),
12
12
  );
13
13
 
14
- [class*=pb_button_kit]{
14
+ // Base button class
15
+ .pb_button_kit {
15
16
  @include pb_button;
16
- // Size =================
17
+
18
+ // Size variants
17
19
  @each $name, $size in $pb_button_sizes {
18
- &[class*=size_#{$name}] {
20
+ &.pb_button_size_#{$name} {
19
21
  font-size: $size;
20
22
  padding: $size / 2 $size * 2.42;
21
23
  @if $name == "sm" {
@@ -24,17 +26,24 @@ $pb_button_sizes: (
24
26
  }
25
27
  }
26
28
 
27
- // Variants =================
28
- &[class*=_primary] {
29
+ // Variant styles
30
+ &.pb_button_primary {
29
31
  @include pb_button_primary;
30
32
  }
31
- &[class*=_secondary] {
33
+
34
+ &.pb_button_secondary {
32
35
  @include pb_button_secondary;
33
36
  }
34
- &[class*=_link] {
37
+
38
+ &.pb_button_link {
35
39
  @include pb_button_link;
36
40
  }
37
- &[class*=_reaction] {
41
+
42
+ &.pb_button_danger {
43
+ @include pb_button_danger;
44
+ }
45
+
46
+ &.pb_button_reaction {
38
47
  background-color: $card_light;
39
48
  min-width: 40px;
40
49
  border-radius: $border_radius_rounded;
@@ -49,52 +58,51 @@ $pb_button_sizes: (
49
58
  &:hover {
50
59
  background-color: $bg_light;
51
60
  }
52
- &.active {
61
+ &.pb_button_active {
53
62
  border-color:transparent;
54
63
  box-shadow: 0px 0px 0 2px $primary_action;
55
64
  &:hover {
56
65
  background-color: rgba($primary, 0.03);
57
66
  }
58
67
  }
68
+
69
+ &.pb_button_reaction_default {
70
+ padding: ($space_xxs + 1) ($space_sm - 4);
71
+ color: $text_lt_lighter;
72
+ }
59
73
  }
60
74
 
61
- &.reaction_default {
62
- padding: ($space_xxs + 1) ($space_sm - 4);
63
- color: $text_lt_lighter;
64
- }
65
-
66
- // Block ====================
67
- &[class*=_block] {
75
+ // Block (full width) style
76
+ &.pb_button_block {
68
77
  @include pb_button_block;
78
+ width: 100% !important;
69
79
  }
70
80
 
71
- // Loading ==================
72
- &[class*=_loading] {
81
+ // Loading state
82
+ &.pb_button_loading {
73
83
  @include pb_button_loading(true);
74
84
  }
75
85
 
76
- // Danger ===================
77
- &[class*=_danger] {
78
- @include pb_button_danger;
79
- }
80
-
81
- // Disabled =================
82
- &[class*=_disabled] {
86
+ // Disabled state
87
+ &.pb_button_disabled {
83
88
  @include pb_button_disabled;
84
89
  }
85
90
 
86
- // Dark Variants =============
87
- &.dark {
88
- &[class*=_primary] {
91
+ // Dark theme variants
92
+ &.dark {
93
+ &.pb_button_primary {
89
94
  @include pb_button_primary_dark;
90
95
  }
91
- &[class*=_secondary] {
96
+
97
+ &.pb_button_secondary {
92
98
  @include pb_button_secondary_dark;
93
99
  }
94
- &[class*=_link] {
100
+
101
+ &.pb_button_link {
95
102
  @include pb_button_link_dark;
96
103
  }
97
- &[class*=_disabled] {
104
+
105
+ &.pb_button_disabled {
98
106
  @include pb_button_disabled_dark;
99
107
  }
100
108
  }
@@ -53,18 +53,18 @@ const buttonClassName = (props: ButtonPropTypes) => {
53
53
  size = null,
54
54
  } = props
55
55
 
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
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(' ')
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,8 +74,17 @@ module Playbook
74
74
  end
75
75
 
76
76
  def classname
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
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: " ")
79
88
  end
80
89
 
81
90
  private
@@ -88,22 +97,6 @@ module Playbook
88
97
  full_width ? "block" : "inline"
89
98
  end
90
99
 
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
-
107
100
  def spinner_path
108
101
  "app/pb_kits/playbook/utilities/icons/spinner.svg"
109
102
  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_primary_inline_enabled')
25
+ expect(kit).toHaveClass('pb_button_kit pb_button_primary pb_button_inline pb_button_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_secondary_inline_enabled')
57
+ expect(kit).toHaveClass('pb_button_kit pb_button_secondary pb_button_inline pb_button_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_primary_inline_enabled size_sm')
101
+ expect(kit).toHaveClass('pb_button_kit pb_button_primary pb_button_inline pb_button_enabled pb_button_size_sm')
102
102
  })
103
103
 
104
104
  test('should render target prop', () => {
@@ -5,92 +5,101 @@
5
5
  @import "../tokens/colors";
6
6
  @import "../tokens/opacity";
7
7
 
8
- [class^=pb_button_toolbar]{
9
-
10
- // Horizontal =============
11
-
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
- }
28
- }
29
- &[class*=_primary] {
30
- & > [class^=pb_button]:not(:first-child)::before {
31
- @include toolbar_border(false, $primary_border)
32
- }
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;
33
21
  }
34
- &[class*=_secondary] {
35
- & > [class^=pb_button]:not(:first-child)::before {
36
- @include toolbar_border(false, $secondary_border)
37
- }
22
+ &:not(:first-child){
23
+ border-bottom-left-radius: 0;
24
+ border-top-left-radius: 0;
25
+ border-left-width: 0;
38
26
  }
39
- & > [class^=pb_button]:not(:first-child):hover::before,
40
- [class^=pb_button]:hover + [class^=pb_button]::before {
41
- opacity: 0
42
- }
43
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
+ }
44
34
 
45
- // Vertical =============
35
+ .pb_button_toolbar_kit_horizontal_primary {
36
+ & > .pb_button_kit:not(:first-child)::before {
37
+ @include toolbar_border(false, $primary_border)
38
+ }
39
+ }
46
40
 
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
- }
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;
78
65
  }
79
- & > [class^=pb_button]:not(:first-child):hover::before,
80
- [class^=pb_button]:hover + [class^=pb_button]::before {
81
- opacity: 0
66
+ &:not(:first-child){
67
+ border-top-right-radius: 0;
68
+ border-top-left-radius: 0;
69
+ border-top-width: 0;
82
70
  }
83
71
  }
84
-
85
- // Hover =============
86
72
 
87
- & > [class^=pb_button] {
73
+ & > .pb_button_kit:not(:first-child):hover::before,
74
+ .pb_button_kit:hover + .pb_button_kit::before {
75
+ opacity: 0
76
+ }
77
+ }
78
+
79
+ .pb_button_toolbar_kit_vertical_primary {
80
+ & > .pb_button_kit:not(:first-child)::before {
81
+ @include toolbar_border(true, $primary_border)
82
+ }
83
+ }
84
+
85
+ .pb_button_toolbar_kit_vertical_secondary {
86
+ & > .pb_button_kit:not(:first-child)::before {
87
+ @include toolbar_border(true, $secondary_border)
88
+ }
89
+ }
90
+
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 {
88
97
  @media (hover:hover) {
89
98
  &:hover {
90
99
  background-color:darken($royal, 20%);
91
100
  }
92
101
  }
93
- &[class*=secondary] {
102
+ &.pb_button_secondary {
94
103
  @media (hover:hover) {
95
104
  &:hover {
96
105
  background-color:rgba($primary_action, $opacity_3)
@@ -98,4 +107,4 @@
98
107
  }
99
108
  }
100
109
  }
101
- }
110
+ }
@@ -2,51 +2,50 @@
2
2
  @import "../tokens/colors";
3
3
  @import "../tokens/opacity";
4
4
 
5
- [class^=pb_button_toolbar]{
6
-
7
- // Vertical =============
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
+ }
8
11
 
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
- }
12
+ .pb_button_toolbar_kit_vertical_secondary.dark {
13
+ & > .pb_button_kit:not(:first-child)::before {
14
+ @include toolbar_border(true, $secondary_dark)
20
15
  }
16
+ }
21
17
 
22
- // Horizontal =============
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)
22
+ }
23
+ }
23
24
 
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
- }
25
+ .pb_button_toolbar_kit_horizontal_secondary.dark {
26
+ & > .pb_button_kit:not(:first-child)::before {
27
+ @include toolbar_border(false, $secondary_dark)
35
28
  }
36
- & > [class^=pb_button]:not(:first-child):hover::before,
37
- [class^=pb_button]:hover + [class^=pb_button]::before {
29
+ }
30
+
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 {
38
38
  opacity: 0
39
39
  }
40
40
 
41
- // Hover =============
42
-
43
- [class^=pb_button].dark {
41
+ // Dark button hover styles
42
+ .pb_button_kit.dark {
44
43
  @media (hover:hover) {
45
44
  &:hover {
46
45
  background-color:darken($royal, 20%);
47
46
  }
48
47
  }
49
- &[class*=secondary] {
48
+ &.pb_button_secondary {
50
49
  @media (hover:hover) {
51
50
  &:hover {
52
51
  background-color:rgba($primary_action, $opacity_3)
@@ -54,4 +53,4 @@
54
53
  }
55
54
  }
56
55
  }
57
- }
56
+ }
@@ -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_primary_inline_enabled')
23
+ expect(child).toHaveClass('pb_button_kit pb_button_primary pb_button_inline pb_button_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_secondary_inline_enabled')
45
+ expect(child).toHaveClass('pb_button_kit pb_button_secondary pb_button_inline pb_button_enabled')
46
46
  })
@@ -1,32 +1,115 @@
1
1
  @import "../tokens/colors";
2
2
  @import "caption_mixin";
3
3
 
4
- [class^="pb_caption_kit"] {
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 {
5
12
  @include caption;
6
- &[class*="_link"] {
7
- color: $primary;
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;
8
24
  }
25
+ }
9
26
 
10
- &[class^="pb_caption_kit_lg"] {
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} {
11
51
  @include caption_lg;
12
52
  }
53
+ }
13
54
 
14
- &[class^="pb_caption_kit_xs"] {
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} {
15
68
  @include caption_xs;
16
69
  }
17
-
18
- &[class*="link"] {
19
- color: $primary;
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;
20
81
  }
82
+ }
21
83
 
22
- @include pb_caption_kit_colors;
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
+ }
23
93
 
24
- &.dark {
25
- @include caption_dark;
26
- @each $name, $color in $pb_dark_caption_colors {
27
- &[class*="_#{$name}"] {
28
- color: $color;
29
- }
30
- }
31
- }
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;
32
103
  }
104
+
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;
114
+ }
115
+ }
@@ -44,11 +44,4 @@ $pb_dark_caption_colors: (
44
44
 
45
45
  @mixin caption_dark {
46
46
  color: $text_dk_light;
47
- }
48
- @mixin pb_caption_kit_colors {
49
- @each $name, $color in $pb_caption_colors {
50
- &[class*="#{$name}"] {
51
- color: $color
52
- }
53
- }
54
- }
47
+ }