playbook_ui 14.25.0 → 15.0.0.pre.alpha.play1986inlineloadingsolidvariant10321

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 (249) 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/date.test.js +506 -0
  39. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +1 -1
  40. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +19 -0
  41. data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +1 -0
  42. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_inline_styles.scss +12 -12
  43. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_input_styles.scss +2 -2
  44. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_time_selection_styles.scss +6 -5
  45. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +29 -23
  46. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +1 -1
  47. data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.scss +1 -1
  48. data/app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.test.js +2 -2
  49. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.scss +66 -26
  50. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.rb +1 -1
  51. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.test.js +2 -2
  52. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +8 -15
  53. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +6 -7
  54. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.scss +17 -14
  55. data/app/pb_kits/playbook/pb_date_year_stacked/date_year_stacked.test.js +1 -1
  56. data/app/pb_kits/playbook/pb_detail/_detail.scss +86 -21
  57. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +330 -123
  58. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.html.erb +16 -2
  59. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.scss +10 -7
  60. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +1 -1
  61. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +1 -1
  62. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +6 -6
  63. data/app/pb_kits/playbook/pb_dropdown/index.js +3 -3
  64. data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +4 -4
  65. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +20 -9
  66. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +1 -1
  67. data/app/pb_kits/playbook/pb_filter/_filter.scss +8 -8
  68. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +65 -29
  69. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +1 -2
  70. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_props_swift.md +3 -2
  71. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.test.js +1 -1
  72. data/app/pb_kits/playbook/pb_flex/_flex.scss +106 -100
  73. data/app/pb_kits/playbook/pb_flex/_flex.tsx +38 -28
  74. data/app/pb_kits/playbook/pb_flex/_flex_item.scss +146 -51
  75. data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +19 -8
  76. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.html.erb +12 -1
  77. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.jsx +26 -1
  78. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_rails.md +11 -0
  79. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_react.md +11 -0
  80. data/app/pb_kits/playbook/pb_flex/flex.rb +22 -28
  81. data/app/pb_kits/playbook/pb_flex/flex_item.rb +6 -6
  82. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +1 -1
  83. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +381 -344
  84. data/app/pb_kits/playbook/pb_form_pill/_form_pill.test.jsx +4 -4
  85. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +8 -7
  86. data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +9 -2
  87. data/app/pb_kits/playbook/pb_gauge/_gauge.scss +5 -5
  88. data/app/pb_kits/playbook/pb_hashtag/_hashtag.scss +1 -1
  89. data/app/pb_kits/playbook/pb_highlight/_highlight.scss +1 -1
  90. data/app/pb_kits/playbook/pb_home_address_street/home_adress_street.test.js +2 -2
  91. data/app/pb_kits/playbook/pb_icon/_icon.scss +4 -0
  92. data/app/pb_kits/playbook/pb_icon_button/_icon_button.scss +4 -4
  93. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +40 -39
  94. data/app/pb_kits/playbook/pb_icon_circle/icon_circle.rb +1 -1
  95. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.test.js +1 -1
  96. data/app/pb_kits/playbook/pb_icon_value/_icon_value.scss +16 -15
  97. data/app/pb_kits/playbook/pb_image/_image.scss +41 -36
  98. data/app/pb_kits/playbook/pb_label_pill/_label_pill.scss +1 -1
  99. data/app/pb_kits/playbook/pb_label_value/_label_value.scss +3 -2
  100. data/app/pb_kits/playbook/pb_label_value/label_value.test.js +2 -2
  101. data/app/pb_kits/playbook/pb_layout/_layout.scss +336 -305
  102. data/app/pb_kits/playbook/pb_layout/_layout.tsx +14 -11
  103. data/app/pb_kits/playbook/pb_layout/item.rb +1 -7
  104. data/app/pb_kits/playbook/pb_layout/layout.rb +16 -25
  105. data/app/pb_kits/playbook/pb_layout/layout.test.js +3 -3
  106. data/app/pb_kits/playbook/pb_legend/_legend.scss +66 -16
  107. data/app/pb_kits/playbook/pb_legend/legend.test.js +1 -1
  108. data/app/pb_kits/playbook/pb_lightbox/lightbox.scss +4 -4
  109. data/app/pb_kits/playbook/pb_lightbox/lightbox.test.jsx +1 -1
  110. data/app/pb_kits/playbook/pb_link/_link.scss +113 -19
  111. data/app/pb_kits/playbook/pb_list/_list.scss +1 -1
  112. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.scss +13 -11
  113. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.tsx +3 -1
  114. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.html.erb +5 -0
  115. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.jsx +24 -0
  116. data/app/pb_kits/playbook/pb_loading_inline/docs/example.yml +2 -0
  117. data/app/pb_kits/playbook/pb_loading_inline/docs/index.js +1 -0
  118. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.html.erb +1 -1
  119. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +11 -0
  120. data/app/pb_kits/playbook/pb_map/_map.scss +1 -1
  121. data/app/pb_kits/playbook/pb_map/docs/_map_default.jsx +1 -1
  122. data/app/pb_kits/playbook/pb_map/docs/_map_with_custom_button.jsx +1 -1
  123. data/app/pb_kits/playbook/pb_map/docs/_map_with_plugin.jsx +1 -1
  124. data/app/pb_kits/playbook/pb_message/_message.scss +21 -16
  125. data/app/pb_kits/playbook/pb_message/_message.tsx +1 -0
  126. data/app/pb_kits/playbook/pb_message/_message_mixins.scss +5 -12
  127. data/app/pb_kits/playbook/pb_message/message.html.erb +1 -1
  128. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +6 -3
  129. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +16 -15
  130. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +1 -1
  131. data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +1 -1
  132. data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +1 -1
  133. data/app/pb_kits/playbook/pb_online_status/_online_status.scss +19 -15
  134. data/app/pb_kits/playbook/pb_online_status/_online_status.tsx +1 -1
  135. data/app/pb_kits/playbook/pb_online_status/online_status.rb +5 -4
  136. data/app/pb_kits/playbook/pb_online_status/online_status.test.js +2 -2
  137. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +1 -1
  138. data/app/pb_kits/playbook/pb_overlay/overlay.rb +1 -1
  139. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +5 -2
  140. data/app/pb_kits/playbook/pb_person/_person.scss +1 -1
  141. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +1 -1
  142. data/app/pb_kits/playbook/pb_pill/_pill.scss +23 -21
  143. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +15 -13
  144. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +108 -33
  145. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +1 -1
  146. data/app/pb_kits/playbook/pb_radio/_radio.scss +71 -52
  147. data/app/pb_kits/playbook/pb_radio/_radio.tsx +1 -1
  148. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +0 -3
  149. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +4 -4
  150. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +81 -70
  151. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +9 -1
  152. data/app/pb_kits/playbook/pb_section_separator/_section_separator_mixin.scss +1 -1
  153. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.jsx +3 -1
  154. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +7 -1
  155. data/app/pb_kits/playbook/pb_select/_select.scss +4 -4
  156. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +6 -2
  157. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.scss +17 -8
  158. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +39 -29
  159. data/app/pb_kits/playbook/pb_selectable_list/_item.tsx +2 -0
  160. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +8 -11
  161. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.test.js +2 -3
  162. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.html.erb +2 -2
  163. data/app/pb_kits/playbook/pb_source/_source.scss +8 -8
  164. data/app/pb_kits/playbook/pb_star_rating/_star_rating.scss +1 -1
  165. data/app/pb_kits/playbook/pb_star_rating/star_rating.test.js +1 -1
  166. data/app/pb_kits/playbook/pb_stat_value/_stat_value.scss +2 -2
  167. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +5 -5
  168. data/app/pb_kits/playbook/pb_text_input/text_input.rb +15 -0
  169. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +6 -6
  170. data/app/pb_kits/playbook/pb_time/_time.scss +44 -17
  171. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +44 -23
  172. data/app/pb_kits/playbook/pb_time_range_inline/time_range_inline.rb +1 -1
  173. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.scss +5 -8
  174. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +16 -10
  175. data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +1 -4
  176. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +1 -1
  177. data/app/pb_kits/playbook/pb_timestamp/timestamp.test.js +2 -2
  178. data/app/pb_kits/playbook/pb_title/_title.scss +44 -39
  179. data/app/pb_kits/playbook/pb_title/_title.tsx +17 -8
  180. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +2 -2
  181. data/app/pb_kits/playbook/pb_title/title.rb +20 -10
  182. data/app/pb_kits/playbook/pb_title/title.test.js +4 -4
  183. data/app/pb_kits/playbook/pb_title_count/_title_count.scss +19 -8
  184. data/app/pb_kits/playbook/pb_title_detail/_title_detail.scss +10 -11
  185. data/app/pb_kits/playbook/pb_toggle/_toggle.scss +4 -1
  186. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +3 -4
  187. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +1 -1
  188. data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +3 -3
  189. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +1 -1
  190. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +1 -1
  191. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.html.erb +1 -22
  192. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.jsx +1 -1
  193. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_without_pills.html.erb +2 -2
  194. data/app/pb_kits/playbook/pb_user/_user.scss +83 -33
  195. data/app/pb_kits/playbook/pb_user/docs/_user_props_table.md +14 -7
  196. data/app/pb_kits/playbook/pb_user/user.test.js +1 -1
  197. data/app/pb_kits/playbook/pb_user_badge/_user_badge.scss +23 -8
  198. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.scss +10 -10
  199. data/app/pb_kits/playbook/pb_weekday_stacked/weekday_stacked.test.jsx +3 -3
  200. data/app/pb_kits/playbook/utilities/_gap.scss +12 -24
  201. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +2 -0
  202. data/app/pb_kits/playbook/utilities/globalProps.ts +28 -4
  203. data/dist/chunks/{_line_graph-BvTZR440.js → _line_graph-CApw7aQD.js} +1 -1
  204. data/dist/chunks/_typeahead-J1_avqdO.js +6 -0
  205. data/dist/chunks/_weekday_stacked-BvW0QnF8.js +37 -0
  206. data/dist/chunks/{lib-DgtxnJqa.js → lib-CY5ZPzic.js} +2 -2
  207. data/dist/chunks/{pb_form_validation-_NsOWfBS.js → pb_form_validation-D3b0JKHH.js} +1 -1
  208. data/dist/chunks/vendor.js +1 -1
  209. data/dist/menu.yml +0 -6
  210. data/dist/playbook-doc.js +2 -2
  211. data/dist/playbook-rails-react-bindings.js +1 -1
  212. data/dist/playbook-rails.js +1 -1
  213. data/dist/playbook.css +1 -1
  214. data/lib/playbook/classnames.rb +2 -0
  215. data/lib/playbook/spacing.rb +53 -1
  216. data/lib/playbook/version.rb +2 -2
  217. metadata +12 -37
  218. data/app/pb_kits/playbook/pb_drawer/_close_icon.tsx +0 -25
  219. data/app/pb_kits/playbook/pb_drawer/_drawer.scss +0 -381
  220. data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +0 -231
  221. data/app/pb_kits/playbook/pb_drawer/_drawer_context.tsx +0 -3
  222. data/app/pb_kits/playbook/pb_drawer/context.ts +0 -11
  223. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +0 -8
  224. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.jsx +0 -41
  225. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +0 -33
  226. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +0 -78
  227. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +0 -3
  228. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +0 -26
  229. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +0 -20
  230. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.jsx +0 -59
  231. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +0 -24
  232. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +0 -61
  233. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.md +0 -24
  234. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +0 -21
  235. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +0 -54
  236. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +0 -1
  237. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +0 -49
  238. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.jsx +0 -99
  239. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +0 -20
  240. data/app/pb_kits/playbook/pb_drawer/docs/index.js +0 -7
  241. data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +0 -20
  242. data/app/pb_kits/playbook/pb_drawer/drawer.rb +0 -56
  243. data/app/pb_kits/playbook/pb_drawer/drawer.test.jsx +0 -81
  244. data/app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx +0 -60
  245. data/app/pb_kits/playbook/pb_drawer/hooks/useDrawerAnimation.tsx +0 -21
  246. data/app/pb_kits/playbook/pb_drawer/index.js +0 -257
  247. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.md +0 -9
  248. data/dist/chunks/_typeahead-BtNEotfH.js +0 -6
  249. data/dist/chunks/_weekday_stacked-qhZxDWNu.js +0 -37
@@ -1,107 +1,144 @@
1
1
  @import "card_mixin";
2
2
  @import "../utilities/colors";
3
+ @import "../tokens/border_radius";
3
4
 
4
- [class^=pb_card_kit] {
5
+ .pb_card_kit {
5
6
  @include pb_card;
6
7
  padding: $space_md;
7
8
 
8
- &[class*=_selected] {
9
- @include pb_card_selected;
9
+ .card_draggable_handle {
10
+ align-self: center;
11
+ color: $text_lt_light;
10
12
  }
13
+ }
11
14
 
12
- &.dark {
13
- @include pb_card_dark;
15
+ // Selected state
16
+ .pb_card_kit_selected {
17
+ @include pb_card_selected;
18
+ }
14
19
 
15
- &[class*=_selected] {
16
- @include pb_card_selected_dark;
17
- }
20
+ // Dark mode
21
+ .pb_card_kit.dark {
22
+ @include pb_card_dark;
23
+
24
+ &.pb_card_kit_selected {
25
+ @include pb_card_selected_dark;
18
26
  }
27
+ }
19
28
 
20
- &[class*=_border_none] {
21
- border-width: 0px;
22
- }
29
+ // Border styles
30
+ .pb_card_kit_border_none {
31
+ border-width: 0px;
32
+ }
23
33
 
24
- @function ends-with($string, $suffix) {
25
- $suffix-length: str-length($suffix);
26
- @if $suffix-length == 0 {
27
- @return true;
28
- }
29
- @return str-slice($string, -$suffix-length) == $suffix;
34
+ // Highlight styles
35
+ .pb_card_kit_highlight_top,
36
+ .pb_card_kit_highlight_side {
37
+ overflow: hidden;
38
+ }
39
+
40
+ @function ends-with($string, $suffix) {
41
+ $suffix-length: str-length($suffix);
42
+ @if $suffix-length == 0 {
43
+ @return true;
30
44
  }
45
+ @return str-slice($string, -$suffix-length) == $suffix;
46
+ }
31
47
 
32
- [class^=pb_card_header_kit] {
33
- flex-grow: 0;
34
- flex-shrink: 0;
35
- flex-basis: auto;
36
- min-height: 1px;
37
- padding: $space_sm;
38
- border: 0;
39
- border-radius: $pb_card_header_border_radius $pb_card_header_border_radius 0px 0px;
40
- @each $color_name, $color_value in $pb_card_header_colors {
41
- @if not ends-with($color_name, '_subtle') {
42
- &[class*="_#{$color_name}"] {
43
- @include pb_card_header_color($color_value);
44
- color: lightenText($color_value);
45
- }
46
- }
47
- }
48
- @each $color_name, $color_value in $pb_card_header_colors {
49
- @if ends-with($color_name, '_subtle') {
50
- &[class*="_#{$color_name}"] {
51
- @include pb_card_header_color($color_value);
52
- color: lightenText($color_value);
53
- }
54
- }
55
- }
56
- @each $color_name, $color_value in $pb_card_header_colors {
57
- &[class*=_#{$color_name}_striped] {
58
- @if ((type-of($color_value) == color)) {
59
- background: repeating-linear-gradient(
60
- 45deg,
61
- $color_value,
62
- $color_value 10px,
63
- lighten( $color_value, 5% ) 10px,
64
- lighten( $color_value, 5% ) 20px
65
- );
66
- }
67
- }
68
- }
69
- &[class*=_white] {
70
- border-bottom: 1px solid $border_light;
71
- }
48
+ // Highlight top variants
49
+ @each $color_name, $color_value in $pb_card_highlight_colors {
50
+ .pb_card_kit_highlight_top.pb_card_kit_highlight_#{$color_name}::before {
51
+ @include pb_card_highlight(100%, $pb_card_highlight_size, $color_value);
72
52
  }
53
+ }
73
54
 
74
- [class^=pb_card_body_kit] {
75
- flex-grow: 0;
76
- flex-shrink: 0;
77
- flex-basis: auto;
78
- min-height: 1px;
79
- border: 0;
80
- padding: $space_md;
55
+ // Highlight side variants
56
+ @each $color_name, $color_value in $pb_card_highlight_colors {
57
+ .pb_card_kit_highlight_side.pb_card_kit_highlight_#{$color_name}::before {
58
+ @include pb_card_highlight($pb_card_highlight_size, 100%, $color_value);
81
59
  }
60
+ }
82
61
 
83
- &[class*=_highlight] {
84
- overflow: hidden;
62
+ // Card Header
63
+ .pb_card_header_kit {
64
+ flex-grow: 0;
65
+ flex-shrink: 0;
66
+ flex-basis: auto;
67
+ min-height: 1px;
68
+ padding: $space_sm;
69
+ border: 0;
70
+ border-radius: $pb_card_header_border_radius $pb_card_header_border_radius 0px 0px;
71
+
72
+ // Inherit border radius from parent card
73
+ .pb_card_kit_border_radius_xs & {
74
+ border-radius: $border_radius_xs $border_radius_xs 0px 0px;
75
+ }
76
+ .pb_card_kit_border_radius_sm & {
77
+ border-radius: $border_radius_sm $border_radius_sm 0px 0px;
78
+ }
79
+ .pb_card_kit_border_radius_md & {
80
+ border-radius: $border_radius_md $border_radius_md 0px 0px;
81
+ }
82
+ .pb_card_kit_border_radius_lg & {
83
+ border-radius: $border_radius_lg $border_radius_lg 0px 0px;
84
+ }
85
+ .pb_card_kit_border_radius_xl & {
86
+ border-radius: $border_radius_xl $border_radius_xl 0px 0px;
85
87
  }
88
+ .pb_card_kit_border_radius_rounded & {
89
+ border-radius: $border_radius_rounded $border_radius_rounded 0px 0px;
90
+ }
91
+ .pb_card_kit_border_radius_none & {
92
+ border-radius: 0px;
93
+ }
94
+ }
86
95
 
87
- &[class*=_highlight_top] {
88
- @each $color_name, $color_value in $pb_card_highlight_colors {
89
- &[class*=_highlight_#{$color_name}]::before {
90
- @include pb_card_highlight(100%, $pb_card_highlight_size, $color_value);
91
- }
96
+ // Header colors (non-subtle)
97
+ @each $color_name, $color_value in $pb_card_header_colors {
98
+ @if not ends-with($color_name, '_subtle') {
99
+ .pb_card_header_kit_#{$color_name} {
100
+ @include pb_card_header_color($color_value);
101
+ color: lightenText($color_value);
92
102
  }
93
103
  }
104
+ }
94
105
 
95
- &[class*=_highlight_side] {
96
- @each $color_name, $color_value in $pb_card_highlight_colors {
97
- &[class*=_highlight_#{$color_name}]::before {
98
- @include pb_card_highlight($pb_card_highlight_size, 100%, $color_value);
99
- }
106
+ // Header colors (subtle)
107
+ @each $color_name, $color_value in $pb_card_header_colors {
108
+ @if ends-with($color_name, '_subtle') {
109
+ .pb_card_header_kit_#{$color_name} {
110
+ @include pb_card_header_color($color_value);
111
+ color: lightenText($color_value);
100
112
  }
101
113
  }
114
+ }
102
115
 
103
- .card_draggable_handle {
104
- align-self: center;
105
- color: $text_lt_light;
116
+ // Header striped patterns
117
+ @each $color_name, $color_value in $pb_card_header_colors {
118
+ .pb_card_header_kit_#{$color_name}_striped {
119
+ @if ((type-of($color_value) == color)) {
120
+ background: repeating-linear-gradient(
121
+ 45deg,
122
+ $color_value,
123
+ $color_value 10px,
124
+ lighten( $color_value, 5% ) 10px,
125
+ lighten( $color_value, 5% ) 20px
126
+ );
127
+ }
106
128
  }
107
129
  }
130
+
131
+ // White header special case
132
+ .pb_card_header_kit_white {
133
+ border-bottom: 1px solid $border_light;
134
+ }
135
+
136
+ // Card Body
137
+ .pb_card_body_kit {
138
+ flex-grow: 0;
139
+ flex-shrink: 0;
140
+ flex-basis: auto;
141
+ min-height: 1px;
142
+ border: 0;
143
+ padding: $space_md;
144
+ }
@@ -5,7 +5,7 @@ import { get } from '../utilities/object'
5
5
 
6
6
  import classnames from 'classnames'
7
7
 
8
- import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
8
+ import { buildAriaProps, buildDataProps, buildHtmlProps } from '../utilities/props'
9
9
  import { GlobalProps, globalProps, globalInlineProps } from '../utilities/globalProps'
10
10
  import type { ProductColors, CategoryColors, BackgroundColors, StatusColors } from '../types/colors'
11
11
 
@@ -54,7 +54,14 @@ type CardBodyProps = {
54
54
  // Header component
55
55
  const Header = (props: CardHeaderProps) => {
56
56
  const { children, className, headerColor = 'category_1', headerColorStriped = false } = props
57
- const headerCSS = buildCss('pb_card_header_kit', `${headerColor}`, headerColorStriped ? 'striped' : '')
57
+ const headerColorCSS = `pb_card_header_kit_${headerColor}`
58
+ const headerStripedCSS = headerColorStriped ? `pb_card_header_kit_${headerColor}_striped` : ''
59
+
60
+ const headerCSS = classnames(
61
+ 'pb_card_header_kit',
62
+ headerColorCSS,
63
+ headerStripedCSS
64
+ )
58
65
 
59
66
  const headerSpacing = globalProps(props)
60
67
 
@@ -69,11 +76,10 @@ const Header = (props: CardHeaderProps) => {
69
76
  // Body component
70
77
  const Body = (props: CardBodyProps) => {
71
78
  const { children, className } = props
72
- const bodyCSS = buildCss('pb_card_body_kit')
73
79
  const bodySpacing = globalProps(props)
74
80
 
75
81
  return (
76
- <div className={classnames(bodyCSS, bodySpacing, className)}>
82
+ <div className={classnames('pb_card_body_kit', bodySpacing, className)}>
77
83
  {children}
78
84
  </div>
79
85
  )
@@ -96,13 +102,22 @@ const Card = (props: CardPropTypes): React.ReactElement => {
96
102
  selected = false,
97
103
  tag = 'div',
98
104
  } = props
99
- const borderCSS = borderNone == true ? 'border_none' : ''
100
- const selectedCSS = selected == true ? 'selected' : 'deselected'
101
- const backgroundCSS = background == 'none' ? '' : `background_${background}`
102
- const cardCss = buildCss('pb_card_kit', selectedCSS, borderCSS, `border_radius_${borderRadius}`, backgroundCSS, {
103
- [`highlight_${highlight.position}`]: highlight.position,
104
- [`highlight_${highlight.color}`]: highlight.color,
105
- })
105
+ const borderCSS = borderNone == true ? 'pb_card_kit_border_none' : ''
106
+ const selectedCSS = selected == true ? 'pb_card_kit_selected' : ''
107
+ const backgroundCSS = background == 'none' ? '' : `pb_card_kit_background_${background}`
108
+ const borderRadiusCSS = borderRadius !== 'md' ? `pb_card_kit_border_radius_${borderRadius}` : ''
109
+ const highlightPositionCSS = highlight.position ? `pb_card_kit_highlight_${highlight.position}` : ''
110
+ const highlightColorCSS = highlight.color ? `pb_card_kit_highlight_${highlight.color}` : ''
111
+
112
+ const cardCss = classnames(
113
+ 'pb_card_kit', // Base class
114
+ selectedCSS,
115
+ borderCSS,
116
+ borderRadiusCSS,
117
+ backgroundCSS,
118
+ highlightPositionCSS,
119
+ highlightColorCSS
120
+ )
106
121
  const ariaProps: {[key: string]: string} = buildAriaProps(aria)
107
122
  const dataProps: {[key: string]: string} = buildDataProps(data)
108
123
  const htmlProps = buildHtmlProps(htmlOptions);
@@ -89,4 +89,4 @@ $pb_card_header_colors: map-merge(map-merge(map-merge($product_colors, $addition
89
89
 
90
90
  @mixin pb_card_header_color($header_color) {
91
91
  background: $header_color;
92
- }
92
+ }
@@ -29,13 +29,14 @@ module Playbook
29
29
  default: nil
30
30
 
31
31
  def classname
32
- generate_classname("pb_card_kit",
33
- selected_class,
34
- border_class,
35
- border_radius_class,
36
- background_class,
37
- highlight_position_class,
38
- highlight_color_class)
32
+ classes = ["pb_card_kit"]
33
+ classes << "pb_card_kit_selected" if selected
34
+ classes << "pb_card_kit_border_none" if border_none
35
+ classes << "pb_card_kit_border_radius_#{border_radius}" if border_radius != "md"
36
+ classes << "pb_card_kit_background_#{background}" if background != "none"
37
+ classes << "pb_card_kit_highlight_#{highlight[:position]}" if highlight[:position].present?
38
+ classes << "pb_card_kit_highlight_#{highlight[:color]}" if highlight[:color].present?
39
+ generate_classname(classes.compact.join(" "))
39
40
  end
40
41
 
41
42
  private
@@ -9,13 +9,17 @@ module Playbook
9
9
  default: false
10
10
 
11
11
  def classname
12
- generate_classname("pb_card_header_kit", header_color, color_striped_classname)
12
+ generate_classname("pb_card_header_kit", header_color_classname, color_striped_classname, separator: " ")
13
13
  end
14
14
 
15
15
  private
16
16
 
17
17
  def color_striped_classname
18
- header_color_striped ? "striped" : nil
18
+ header_color_striped ? "pb_card_header_kit_#{header_color}_striped" : nil
19
+ end
20
+
21
+ def header_color_classname
22
+ header_color ? "pb_card_header_kit_#{header_color}" : nil
19
23
  end
20
24
  end
21
25
  end
@@ -50,7 +50,7 @@
50
50
  <% end %>
51
51
 
52
52
  <%= pb_rails("card", props: { padding: "none", header: true, margin_bottom: "sm"}) do %>
53
- <%= pb_rails("card/card_header", props: { padding: "sm", header_color: "bg_dark" }) do %>
53
+ <%= pb_rails("card/card_header", props: { padding: "sm", header_color: "dark" }) do %>
54
54
  <%= pb_rails("body", props: { text: "Dark", dark: true }) %>
55
55
  <% end %>
56
56
  <%= pb_rails("card/card_body", props: { padding: "md" }) do %>
@@ -3,7 +3,16 @@
3
3
  @import "../tokens/positioning";
4
4
  $transition: $transition_cubic;
5
5
 
6
- [class^=pb_checkbox_kit] {
6
+ .pb_checkbox_kit,
7
+ .pb_checkbox_kit_on,
8
+ .pb_checkbox_kit_off,
9
+ .pb_checkbox_kit_checked,
10
+ .pb_checkbox_kit_error,
11
+ .pb_checkbox_kit_indeterminate,
12
+ .pb_checkbox_kit_checked_error,
13
+ .pb_checkbox_kit_checked_indeterminate,
14
+ .pb_checkbox_kit_error_indeterminate,
15
+ .pb_checkbox_kit_checked_error_indeterminate {
7
16
  cursor: pointer;
8
17
  display: inline-flex;
9
18
  vertical-align: middle;
@@ -159,4 +168,4 @@ $transition: $transition_cubic;
159
168
  border-color: $error;
160
169
  }
161
170
  }
162
- }
171
+ }
@@ -37,25 +37,25 @@ $pb_button_styles: (
37
37
  }
38
38
  }
39
39
 
40
- [class^=pb_circle_icon_button_kit] {
40
+ .pb_circle_icon_button_kit {
41
41
  @each $style in $pb_button_styles {
42
- [class^=pb_button_kit][class*=_#{$style}] {
42
+ .pb_button_kit.pb_button_#{$style} {
43
43
  @include pb_circle_icon_button;
44
44
  }
45
45
  }
46
46
  :first-child {
47
- &[class*=_link] {
47
+ &.pb_button_kit.pb_button_link {
48
48
  @include pb_circle_icon_button_active;
49
49
  }
50
- &.dark {
51
- &[class*=_link] {
50
+ &.dark {
51
+ &.pb_button_kit.pb_button_link {
52
52
  @include pb_circle_icon_button_active_dark;
53
53
  }
54
54
  }
55
55
  }
56
56
  &.size_small {
57
57
  @each $style in $pb_button_styles {
58
- [class^=pb_button_kit][class*=_#{$style}] {
58
+ .pb_button_kit.pb_button_#{$style} {
59
59
  width: 20px;
60
60
  height: 20px;
61
61
  min-height: 20px;
@@ -91,4 +91,4 @@ $pb_button_styles: (
91
91
  }
92
92
  }
93
93
  }
94
- }
94
+ }
@@ -26,7 +26,7 @@ test('passes loading prop to button', () => {
26
26
  )
27
27
 
28
28
  const kit = screen.getByTestId('loading-test')
29
- const button = kit.querySelector('.pb_button_kit_primary_inline_enabled_loading')
29
+ const button = kit.querySelector('.pb_button_kit.pb_button_primary.pb_button_inline.pb_button_enabled.pb_button_loading')
30
30
 
31
31
  expect(button).toBeInTheDocument()
32
32
  })
@@ -11,7 +11,7 @@ exports[`html structure is correct 1`] = `
11
11
  >
12
12
  <div>
13
13
  <div
14
- class="pb_flex_kit_orientation_row_justify_content_left_align_items_center_spacing_between"
14
+ class="pb_flex_kit pb_flex_kit_orientation_row pb_flex_kit_justify_content_left pb_flex_kit_align_items_center pb_flex_kit_spacing_between"
15
15
  >
16
16
  <div
17
17
  class="pb_flex_item_kit"
@@ -1,7 +1,7 @@
1
1
  @import "tokens/colors";
2
2
  @import "tokens/spacing";
3
3
 
4
- [class^=pb_collapsible_kit] {
4
+ .pb_collapsible_kit {
5
5
  padding: $space_md;
6
6
 
7
7
  .toggle-content {
@@ -28,10 +28,10 @@
28
28
  }
29
29
  }
30
30
 
31
- [class^=pb_collapsible_main_kit] {
31
+ .pb_collapsible_main_kit {
32
32
  padding: $space_md;
33
33
  }
34
34
 
35
- [class^=pb_collapsible_content_kit] {
35
+ .pb_collapsible_content_kit {
36
36
  padding: $space_md;
37
- }
37
+ }
@@ -52,7 +52,7 @@ test('passes text and tooltip props to button', () => {
52
52
  expect(content).toHaveTextContent("text")
53
53
 
54
54
  const kit = screen.getByTestId('text-test')
55
- const button = kit.querySelector('.pb_button_kit_primary_inline_enabled')
55
+ const button = kit.querySelector('.pb_button_kit.pb_button_primary.pb_button_inline.pb_button_enabled')
56
56
  expect(button).toBeInTheDocument()
57
57
 
58
58
  fireEvent.click(button)