playbook_ui 14.25.0.pre.alpha.testingcss9713 → 14.25.0.pre.alpha.testingcss9751

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 (169) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_avatar/avatar.test.js +1 -1
  3. data/app/pb_kits/playbook/pb_badge/_badge.scss +120 -12
  4. data/app/pb_kits/playbook/pb_body/_body.scss +108 -35
  5. data/app/pb_kits/playbook/pb_body/_body_mixins.scss +1 -1
  6. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.scss +16 -29
  7. data/app/pb_kits/playbook/pb_button/_button.scss +39 -31
  8. data/app/pb_kits/playbook/pb_button/_button.tsx +12 -12
  9. data/app/pb_kits/playbook/pb_button/_button_mixins.scss +2 -2
  10. data/app/pb_kits/playbook/pb_button/button.rb +11 -18
  11. data/app/pb_kits/playbook/pb_button/button.test.js +3 -3
  12. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.scss +82 -73
  13. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_dark.scss +32 -33
  14. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_mixins.scss +1 -1
  15. data/app/pb_kits/playbook/pb_button_toolbar/button_toolbar.test.js +2 -2
  16. data/app/pb_kits/playbook/pb_caption/_caption.scss +100 -17
  17. data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +1 -8
  18. data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +11 -2
  19. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +6 -6
  20. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.test.js +1 -1
  21. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +1 -1
  22. data/app/pb_kits/playbook/pb_copy_button/copy_button.test.jsx +19 -19
  23. data/app/pb_kits/playbook/pb_currency/_currency.scss +118 -33
  24. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.scss +16 -6
  25. data/app/pb_kits/playbook/pb_date/_date.scss +14 -16
  26. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_inline_styles.scss +10 -10
  27. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +25 -19
  28. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +1 -1
  29. data/app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.test.js +2 -2
  30. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.scss +66 -26
  31. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.test.js +2 -2
  32. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +5 -12
  33. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss +2 -3
  34. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.scss +17 -14
  35. data/app/pb_kits/playbook/pb_date_year_stacked/date_year_stacked.test.js +1 -1
  36. data/app/pb_kits/playbook/pb_detail/_detail.scss +86 -21
  37. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +463 -65
  38. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.html.erb +16 -2
  39. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.scss +10 -7
  40. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +2 -2
  41. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +6 -6
  42. data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +4 -4
  43. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +20 -9
  44. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +1 -1
  45. data/app/pb_kits/playbook/pb_filter/_filter.scss +3 -3
  46. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +65 -29
  47. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +1 -2
  48. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.test.js +1 -1
  49. data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +1 -1
  50. data/app/pb_kits/playbook/pb_form_group/_error_state_mixin.scss +1 -1
  51. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +48 -48
  52. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +381 -344
  53. data/app/pb_kits/playbook/pb_form_pill/_form_pill.test.jsx +4 -4
  54. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +8 -7
  55. data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +9 -2
  56. data/app/pb_kits/playbook/pb_home_address_street/home_adress_street.test.js +2 -2
  57. data/app/pb_kits/playbook/pb_icon_button/_icon_button.scss +4 -4
  58. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +40 -39
  59. data/app/pb_kits/playbook/pb_icon_circle/icon_circle.rb +1 -1
  60. data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.scss +15 -15
  61. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.test.js +1 -1
  62. data/app/pb_kits/playbook/pb_icon_value/_icon_value.scss +16 -15
  63. data/app/pb_kits/playbook/pb_image/_image.scss +41 -36
  64. data/app/pb_kits/playbook/pb_label_value/_label_value.scss +3 -2
  65. data/app/pb_kits/playbook/pb_label_value/label_value.test.js +2 -2
  66. data/app/pb_kits/playbook/pb_legend/_legend.scss +66 -16
  67. data/app/pb_kits/playbook/pb_legend/legend.test.js +1 -1
  68. data/app/pb_kits/playbook/pb_lightbox/lightbox.scss +4 -4
  69. data/app/pb_kits/playbook/pb_lightbox/lightbox.test.jsx +1 -1
  70. data/app/pb_kits/playbook/pb_link/_link.scss +113 -19
  71. data/app/pb_kits/playbook/pb_list/_list.scss +9 -9
  72. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.scss +13 -11
  73. data/app/pb_kits/playbook/pb_map/_map.scss +1 -1
  74. data/app/pb_kits/playbook/pb_map/docs/_map_default.jsx +1 -1
  75. data/app/pb_kits/playbook/pb_map/docs/_map_with_custom_button.jsx +1 -1
  76. data/app/pb_kits/playbook/pb_map/docs/_map_with_plugin.jsx +1 -1
  77. data/app/pb_kits/playbook/pb_message/_message.scss +20 -15
  78. data/app/pb_kits/playbook/pb_message/_message.tsx +1 -0
  79. data/app/pb_kits/playbook/pb_message/_message_mixins.scss +5 -12
  80. data/app/pb_kits/playbook/pb_message/message.html.erb +1 -1
  81. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +4 -1
  82. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +16 -15
  83. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +10 -10
  84. data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +9 -9
  85. data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +1 -1
  86. data/app/pb_kits/playbook/pb_online_status/_online_status.scss +19 -15
  87. data/app/pb_kits/playbook/pb_online_status/_online_status.tsx +1 -1
  88. data/app/pb_kits/playbook/pb_online_status/online_status.rb +5 -4
  89. data/app/pb_kits/playbook/pb_online_status/online_status.test.js +2 -2
  90. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +1 -1
  91. data/app/pb_kits/playbook/pb_overlay/overlay.rb +1 -1
  92. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +5 -2
  93. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +1 -1
  94. data/app/pb_kits/playbook/pb_pill/_pill.scss +23 -21
  95. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +12 -10
  96. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +106 -31
  97. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +37 -37
  98. data/app/pb_kits/playbook/pb_radio/_radio.scss +71 -52
  99. data/app/pb_kits/playbook/pb_radio/_radio.tsx +1 -1
  100. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +0 -3
  101. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +80 -69
  102. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +9 -1
  103. data/app/pb_kits/playbook/pb_section_separator/_section_separator_mixin.scss +1 -1
  104. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.jsx +3 -1
  105. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +7 -1
  106. data/app/pb_kits/playbook/pb_select/_select.scss +2 -2
  107. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +6 -2
  108. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.scss +13 -4
  109. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +39 -29
  110. data/app/pb_kits/playbook/pb_selectable_list/_item.tsx +2 -0
  111. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +8 -11
  112. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.test.js +24 -25
  113. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.html.erb +2 -2
  114. data/app/pb_kits/playbook/pb_source/_source.scss +5 -5
  115. data/app/pb_kits/playbook/pb_star_rating/star_rating.test.js +1 -1
  116. data/app/pb_kits/playbook/pb_stat_value/_stat_value.scss +1 -1
  117. data/app/pb_kits/playbook/pb_table/styles/_alignment.scss +1 -1
  118. data/app/pb_kits/playbook/pb_table/styles/_content.scss +1 -1
  119. data/app/pb_kits/playbook/pb_table/styles/_desktop_collapse.scss +1 -1
  120. data/app/pb_kits/playbook/pb_table/styles/_headers.scss +1 -1
  121. data/app/pb_kits/playbook/pb_table/styles/_hover.scss +1 -1
  122. data/app/pb_kits/playbook/pb_table/styles/_mobile.scss +1 -1
  123. data/app/pb_kits/playbook/pb_table/styles/_mobile_collapse.scss +1 -1
  124. data/app/pb_kits/playbook/pb_table/styles/_outer_padding.scss +1 -1
  125. data/app/pb_kits/playbook/pb_table/styles/_reset.scss +1 -1
  126. data/app/pb_kits/playbook/pb_table/styles/_scroll.scss +12 -12
  127. data/app/pb_kits/playbook/pb_table/styles/_side_highlight.scss +2 -2
  128. data/app/pb_kits/playbook/pb_table/styles/_single-line.scss +1 -1
  129. data/app/pb_kits/playbook/pb_table/styles/_striped.scss +1 -1
  130. data/app/pb_kits/playbook/pb_table/styles/_structure.scss +1 -1
  131. data/app/pb_kits/playbook/pb_table/styles/_table-card.scss +1 -1
  132. data/app/pb_kits/playbook/pb_table/styles/_table-dark.scss +2 -2
  133. data/app/pb_kits/playbook/pb_table/styles/_table_header.scss +4 -4
  134. data/app/pb_kits/playbook/pb_table/styles/_tablet_collapse.scss +1 -1
  135. data/app/pb_kits/playbook/pb_table/styles/_vertical_border.scss +1 -1
  136. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +4 -4
  137. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +5 -5
  138. data/app/pb_kits/playbook/pb_time/_time.scss +43 -16
  139. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +14 -14
  140. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.scss +5 -8
  141. data/app/pb_kits/playbook/pb_timeline/_timeline.scss +41 -41
  142. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +4 -4
  143. data/app/pb_kits/playbook/pb_title/_title.scss +41 -38
  144. data/app/pb_kits/playbook/pb_title/_title.tsx +17 -8
  145. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +2 -2
  146. data/app/pb_kits/playbook/pb_title/title.rb +20 -10
  147. data/app/pb_kits/playbook/pb_title/title.test.js +4 -4
  148. data/app/pb_kits/playbook/pb_title_count/_title_count.scss +19 -8
  149. data/app/pb_kits/playbook/pb_title_detail/_title_detail.scss +10 -11
  150. data/app/pb_kits/playbook/pb_toggle/_toggle.scss +1 -1
  151. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +1 -1
  152. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +10 -10
  153. data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +3 -3
  154. data/app/pb_kits/playbook/pb_user/_user.scss +13 -13
  155. data/app/pb_kits/playbook/pb_user/user.test.js +1 -1
  156. data/app/pb_kits/playbook/pb_user_badge/_user_badge.scss +23 -8
  157. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.scss +10 -10
  158. data/app/pb_kits/playbook/pb_weekday_stacked/weekday_stacked.test.jsx +3 -3
  159. data/dist/chunks/{_line_graph-0Y0wuiB9.js → _line_graph-Dv_ODxW3.js} +1 -1
  160. data/dist/chunks/_typeahead-CD5RAaaP.js +6 -0
  161. data/dist/chunks/{_weekday_stacked-Dblcf2V8.js → _weekday_stacked-Bv6tOPKC.js} +2 -2
  162. data/dist/chunks/vendor.js +1 -1
  163. data/dist/playbook-doc.js +2 -2
  164. data/dist/playbook-rails-react-bindings.js +1 -1
  165. data/dist/playbook-rails.js +1 -1
  166. data/dist/playbook.css +1 -1
  167. data/lib/playbook/version.rb +1 -1
  168. metadata +5 -5
  169. data/dist/chunks/_typeahead-B2gV75O0.js +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2a873701f9e753bc22244e5376181533f04e356faf4fd5354ae2d9f74b8e0b62
4
- data.tar.gz: e28e187057987616399ad70443bd140ec820d540029f4e908dd20f96925e66dc
3
+ metadata.gz: 230cb771b16126875e87e626e53cd633a26cbe4b65e0e9100405e72dd53a4f87
4
+ data.tar.gz: 7f513c46accbd0f95a5092ce5f1c60ca2cdec020e413407bfae0ec11ba0d5574
5
5
  SHA512:
6
- metadata.gz: cba91cdf4269a6eaec42164bdd9697f797324df9b0d83c1c43023f78e593c513fc0121b436753b0249f1c3b3329161029aa693133fc8a8191d27992fc7f30751
7
- data.tar.gz: 4f7f3707abef52dc9a6c0d3663496edf35e5e482c216e97e1c851dec6e279515b4574f6bbead99047c23c19ef3da1688e565a647e779bf54ab7bfd9f98218449
6
+ metadata.gz: 24028e6570bc44e5665a2f6dd2c4b034fbc2dc6fc0d28fa664714540893c344e1246b013d9ee78fb281d503e76440879ceeecdb90c794986b658c03e07b3b2d9
7
+ data.tar.gz: 889ea6030813ab4ad291437fb20841beb46eb742c46fed355f74b730ed14f76c1c36bac0004c489c54b6b839806d9fc1de0122b6129d8720160ee58a76017c52
@@ -103,7 +103,7 @@ test('renders with online status', () => {
103
103
  );
104
104
 
105
105
  const onlineStatusAvatar = screen.getByTestId(testId);
106
- const onlineStatus = onlineStatusAvatar.querySelector('.pb_online_status_kit_online_size_md')
106
+ const onlineStatus = onlineStatusAvatar.querySelector('.pb_online_status_kit')
107
107
  expect(onlineStatus).toBeInTheDocument();
108
108
  });
109
109
 
@@ -4,9 +4,17 @@
4
4
  @import "../tokens/spacing";
5
5
  @import "../tokens/typography";
6
6
 
7
- $pb_badge_height_rounded: 16px;
7
+ // Base badge class and all variants
8
+ .pb_badge_kit,
9
+ .pb_badge_kit_rounded,
10
+ .pb_badge_kit_notification,
11
+ .pb_badge_kit_notification_rounded,
12
+ .pb_badge_kit_notification_error,
13
+ .pb_badge_kit_notification_error_rounded,
14
+ .pb_badge_kit_success_sm,
15
+ .pb_badge_kit_success_sm_rounded {
16
+ $pb_badge_height_rounded: 16px;
8
17
 
9
- .pb_badge_kit {
10
18
  display: inline-flex;
11
19
  align-items: center;
12
20
  justify-content: center;
@@ -23,39 +31,139 @@ $pb_badge_height_rounded: 16px;
23
31
  }
24
32
  }
25
33
 
34
+ // Add base styles to all status color variants too
35
+ @each $color_name, $color_value in $status_colors {
36
+ .pb_badge_kit_#{$color_name},
37
+ .pb_badge_kit_#{$color_name}_rounded {
38
+ display: inline-flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ border-radius: $border_rad_light;
42
+ padding: 0 $space_xs/2;
43
+ border-width: 1px;
44
+ border-color: $card_light;
45
+ white-space: nowrap;
46
+
47
+ span {
48
+ display: inline-block;
49
+ font-size: $font_smaller - 1;
50
+ font-weight: $bolder;
51
+ }
52
+ }
53
+ }
54
+
55
+ // Generate all status color variants (with and without rounded)
26
56
  @each $color_name, $color_value in $status_colors {
27
57
  .pb_badge_kit_#{$color_name} {
28
58
  background: rgba($color_value, $opacity_1);
29
59
  color: map-get($status_color_text, $color_name);
30
60
  }
31
-
32
- .pb_badge_kit_#{$color_name}.dark {
33
- background: rgba(mix($bg_dark, $color_value, 10%), $opacity_2);
34
- color: map-get($status_color_text_dark, $color_name);
61
+
62
+ .pb_badge_kit_#{$color_name}_rounded {
63
+ background: rgba($color_value, $opacity_1);
64
+ color: map-get($status_color_text, $color_name);
65
+ height: 16px !important;
66
+ min-height: 16px !important;
67
+ min-width: 16px !important;
68
+ border-radius: 8px !important;
35
69
  }
36
70
  }
37
71
 
72
+ // Special success_sm variant (since component maps "success" to "success_sm")
73
+ .pb_badge_kit_success_sm {
74
+ background: rgba(map-get($status_colors, "success"), $opacity_1);
75
+ color: map-get($status_color_text, "success");
76
+ }
77
+
78
+ .pb_badge_kit_success_sm_rounded {
79
+ background: rgba(map-get($status_colors, "success"), $opacity_1);
80
+ color: map-get($status_color_text, "success");
81
+ height: 16px !important;
82
+ min-height: 16px !important;
83
+ min-width: 16px !important;
84
+ border-radius: 8px !important;
85
+ }
86
+
87
+ // Rounded variant (base)
38
88
  .pb_badge_kit_rounded {
39
- height: $pb_badge_height_rounded;
40
- min-height: $pb_badge_height_rounded;
41
- min-width: $pb_badge_height_rounded;
42
- border-radius: $pb_badge_height_rounded / 2;
89
+ height: 16px !important;
90
+ min-height: 16px !important;
91
+ min-width: 16px !important;
92
+ border-radius: 8px !important;
43
93
  }
44
94
 
95
+ // Notification variants
45
96
  .pb_badge_kit_notification {
46
97
  background: $primary;
47
98
  color: $white;
48
99
  }
49
100
 
101
+ .pb_badge_kit_notification_rounded {
102
+ background: $primary;
103
+ color: $white;
104
+ height: 16px !important;
105
+ min-height: 16px !important;
106
+ min-width: 16px !important;
107
+ border-radius: 8px !important;
108
+ }
109
+
50
110
  .pb_badge_kit_notification_error {
51
111
  background: $error;
112
+ color: $white;
113
+ }
114
+
115
+ .pb_badge_kit_notification_error_rounded {
116
+ background: $error;
117
+ color: $white;
118
+ height: 16px !important;
119
+ min-height: 16px !important;
120
+ min-width: 16px !important;
121
+ border-radius: 8px !important;
122
+ }
123
+
124
+ // Dark theme variants
125
+ @each $color_name, $color_value in $status_colors {
126
+ .pb_badge_kit_#{$color_name}.dark {
127
+ border-width: 0;
128
+ background: rgba(mix($bg_dark, $color_value, 10%), $opacity_2);
129
+ color: map-get($status_color_text_dark, $color_name);
130
+ }
131
+
132
+ .pb_badge_kit_#{$color_name}_rounded.dark {
133
+ border-width: 0;
134
+ background: rgba(mix($bg_dark, $color_value, 10%), $opacity_2);
135
+ color: map-get($status_color_text_dark, $color_name);
136
+ }
137
+ }
138
+
139
+ .pb_badge_kit_success_sm.dark {
140
+ border-width: 0;
141
+ background: rgba(mix($bg_dark, map-get($status_colors, "success"), 10%), $opacity_2);
142
+ color: map-get($status_color_text_dark, "success");
143
+ }
144
+
145
+ .pb_badge_kit_success_sm_rounded.dark {
146
+ border-width: 0;
147
+ background: rgba(mix($bg_dark, map-get($status_colors, "success"), 10%), $opacity_2);
148
+ color: map-get($status_color_text_dark, "success");
149
+ }
150
+
151
+ .pb_badge_kit_notification.dark {
152
+ border-width: 0;
153
+ }
154
+
155
+ .pb_badge_kit_notification_rounded.dark {
156
+ border-width: 0;
52
157
  }
53
158
 
54
159
  .pb_badge_kit_notification_error.dark {
160
+ border-width: 0;
55
161
  background: $error_dark;
56
162
  color: $white;
57
163
  }
58
164
 
59
- .pb_badge_kit.dark {
165
+ .pb_badge_kit_notification_error_rounded.dark {
60
166
  border-width: 0;
61
- }
167
+ background: $error_dark;
168
+ color: $white;
169
+ }
@@ -1,23 +1,37 @@
1
1
  @import "./body_mixins";
2
2
  @import "../tokens/titles";
3
3
 
4
- [class^="pb_body_kit"] {
4
+ // Base body styles for all variants
5
+ .pb_body_kit,
6
+ .pb_body_kit_default,
7
+ .pb_body_kit_light,
8
+ .pb_body_kit_lighter,
9
+ .pb_body_kit_link,
10
+ .pb_body_kit_success,
11
+ .pb_body_kit_error,
12
+ .pb_body_kit_neutral,
13
+ .pb_body_kit_positive,
14
+ .pb_body_kit_negative,
15
+ .pb_body_kit_default_neutral,
16
+ .pb_body_kit_default_positive,
17
+ .pb_body_kit_default_negative,
18
+ .pb_body_kit_light_neutral,
19
+ .pb_body_kit_light_positive,
20
+ .pb_body_kit_light_negative,
21
+ .pb_body_kit_lighter_neutral,
22
+ .pb_body_kit_lighter_positive,
23
+ .pb_body_kit_lighter_negative,
24
+ .pb_body_kit_link_neutral,
25
+ .pb_body_kit_link_positive,
26
+ .pb_body_kit_link_negative,
27
+ .pb_body_kit_success_neutral,
28
+ .pb_body_kit_success_positive,
29
+ .pb_body_kit_success_negative,
30
+ .pb_body_kit_error_neutral,
31
+ .pb_body_kit_error_positive,
32
+ .pb_body_kit_error_negative {
5
33
  @include pb_body($text_lt_default);
6
- @each $color_name, $color_value in $pb_body_colors {
7
- &[class*=_#{"" + $color_name}] {
8
- @include pb_body($color_value);
9
- }
10
- @each $status_name, $status_value in $pb_body_status {
11
- &[class*="_default_#{$status_name}"] {
12
- @include pb_body($status_value);
13
- }
14
- }
15
- }
16
- @each $dark_color_name, $dark_color_value in $pb_dark_body_colors {
17
- &[class*="_#{$dark_color_name}"][class*="dark"] {
18
- @include pb_body($dark_color_value);
19
- }
20
- }
34
+
21
35
  b,
22
36
  strong {
23
37
  font-weight: $bold;
@@ -39,27 +53,86 @@
39
53
  font-size: $font_smaller;
40
54
  letter-spacing: $lspace_loose;
41
55
  }
56
+ }
42
57
 
43
- @each $status_name, $status_value in $pb_body_status {
44
- &[class*="#{$status_name}"] {
45
- @include pb_body($status_value);
46
- }
58
+ // Color variants
59
+ @each $color_name, $color_value in $pb_body_colors {
60
+ .pb_body_kit_#{$color_name},
61
+ .pb_body_kit_#{$color_name}_neutral,
62
+ .pb_body_kit_#{$color_name}_positive,
63
+ .pb_body_kit_#{$color_name}_negative {
64
+ @include pb_body($color_value);
47
65
  }
66
+ }
48
67
 
49
- &[class*="dark"] {
50
- a {
51
- color: $active_dark;
52
- }
53
- @include pb_body_dark();
54
- @each $dark_color_name, $dark_color_value in $pb_dark_body_colors {
55
- &[class*="_#{$dark_color_name}"][class*="dark"] {
56
- @include pb_body($dark_color_value);
57
- }
58
- }
59
- @each $status_name, $status_value in $pb_dark_body_status {
60
- &[class*="_#{$status_name}"] {
61
- @include pb_body($status_value);
62
- }
63
- }
68
+ // Status variants
69
+ @each $status_name, $status_value in $pb_body_status {
70
+ .pb_body_kit_#{$status_name},
71
+ .pb_body_kit_default_#{$status_name},
72
+ .pb_body_kit_light_#{$status_name},
73
+ .pb_body_kit_lighter_#{$status_name},
74
+ .pb_body_kit_link_#{$status_name},
75
+ .pb_body_kit_success_#{$status_name},
76
+ .pb_body_kit_error_#{$status_name} {
77
+ @include pb_body($status_value);
78
+ }
79
+ }
80
+
81
+ // Dark theme base
82
+ .pb_body_kit.dark,
83
+ .pb_body_kit_default.dark,
84
+ .pb_body_kit_light.dark,
85
+ .pb_body_kit_lighter.dark,
86
+ .pb_body_kit_link.dark,
87
+ .pb_body_kit_success.dark,
88
+ .pb_body_kit_error.dark,
89
+ .pb_body_kit_neutral.dark,
90
+ .pb_body_kit_positive.dark,
91
+ .pb_body_kit_negative.dark,
92
+ .pb_body_kit_default_neutral.dark,
93
+ .pb_body_kit_default_positive.dark,
94
+ .pb_body_kit_default_negative.dark,
95
+ .pb_body_kit_light_neutral.dark,
96
+ .pb_body_kit_light_positive.dark,
97
+ .pb_body_kit_light_negative.dark,
98
+ .pb_body_kit_lighter_neutral.dark,
99
+ .pb_body_kit_lighter_positive.dark,
100
+ .pb_body_kit_lighter_negative.dark,
101
+ .pb_body_kit_link_neutral.dark,
102
+ .pb_body_kit_link_positive.dark,
103
+ .pb_body_kit_link_negative.dark,
104
+ .pb_body_kit_success_neutral.dark,
105
+ .pb_body_kit_success_positive.dark,
106
+ .pb_body_kit_success_negative.dark,
107
+ .pb_body_kit_error_neutral.dark,
108
+ .pb_body_kit_error_positive.dark,
109
+ .pb_body_kit_error_negative.dark {
110
+ @include pb_body_dark();
111
+
112
+ a {
113
+ color: $active_dark;
64
114
  }
65
115
  }
116
+
117
+ // Dark color variants
118
+ @each $dark_color_name, $dark_color_value in $pb_dark_body_colors {
119
+ .pb_body_kit_#{$dark_color_name}.dark,
120
+ .pb_body_kit_#{$dark_color_name}_neutral.dark,
121
+ .pb_body_kit_#{$dark_color_name}_positive.dark,
122
+ .pb_body_kit_#{$dark_color_name}_negative.dark {
123
+ @include pb_body($dark_color_value);
124
+ }
125
+ }
126
+
127
+ // Dark status variants
128
+ @each $status_name, $status_value in $pb_dark_body_status {
129
+ .pb_body_kit_#{$status_name}.dark,
130
+ .pb_body_kit_default_#{$status_name}.dark,
131
+ .pb_body_kit_light_#{$status_name}.dark,
132
+ .pb_body_kit_lighter_#{$status_name}.dark,
133
+ .pb_body_kit_link_#{$status_name}.dark,
134
+ .pb_body_kit_success_#{$status_name}.dark,
135
+ .pb_body_kit_error_#{$status_name}.dark {
136
+ @include pb_body($status_value);
137
+ }
138
+ }
@@ -74,4 +74,4 @@ $pb_dark_body_status: (
74
74
 
75
75
  @mixin pb_body_positive {
76
76
  @include pb_body($success);
77
- }
77
+ }
@@ -14,35 +14,22 @@
14
14
  svg {
15
15
  margin-right: 8px;
16
16
  }
17
- .pb_bread_crumb_item {
18
- display: flex;
19
- flex-direction: row;
20
- align-items: center;
21
-
22
- }
23
- .pb_bread_crumb_item_kit {
24
- display: flex;
25
- flex-direction: row;
26
- align-items: center;
27
- }
28
- .pb_bread_crumb_item_kit:not(:last-child):after {
29
- content: '/';
30
- padding-left: 8px;
31
- padding-right: 8px;
32
- }
33
-
34
- @each $color_name, $color_value in $status_colors {
35
- &[class*=_#{$color_name}] {
36
- background: rgba($color_value, $opacity_1);
37
- color: map-get($status_color_text, $color_name);
38
- }
17
+
18
+ .pb_bread_crumb_item {
19
+ display: flex;
20
+ flex-direction: row;
21
+ align-items: center;
39
22
  }
40
-
41
- &.dark {
42
- @each $color_name, $color_value in $status_colors {
43
- &[class*=_#{$color_name}] {
44
- background: rgba(mix($bg_dark, $color_value, 10%), $opacity_2);
45
- }
46
- }
23
+
24
+ .pb_bread_crumb_item_kit {
25
+ display: flex;
26
+ flex-direction: row;
27
+ align-items: center;
28
+ }
29
+
30
+ .pb_bread_crumb_item_kit:not(:last-child):after {
31
+ content: '/';
32
+ padding-left: 8px;
33
+ padding-right: 8px;
47
34
  }
48
35
  }
@@ -11,11 +11,13 @@ $pb_button_sizes: (
11
11
  "lg": ($font_large - 2px),
12
12
  );
13
13
 
14
- .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
- &._primary {
29
+ // Variant styles
30
+ &.pb_button_primary {
29
31
  @include pb_button_primary;
30
32
  }
31
- &._secondary {
33
+
34
+ &.pb_button_secondary {
32
35
  @include pb_button_secondary;
33
36
  }
34
- &._link {
37
+
38
+ &.pb_button_link {
35
39
  @include pb_button_link;
36
40
  }
37
- &._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
- &._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
- &._loading {
81
+ // Loading state
82
+ &.pb_button_loading {
73
83
  @include pb_button_loading(true);
74
84
  }
75
85
 
76
- // Danger ===================
77
- &._danger {
78
- @include pb_button_danger;
79
- }
80
-
81
- // Disabled =================
82
- &._disabled {
86
+ // Disabled state
87
+ &.pb_button_disabled {
83
88
  @include pb_button_disabled;
84
89
  }
85
90
 
86
- // Dark Variants =============
87
- &.dark {
88
- &._primary {
91
+ // Dark theme variants
92
+ &.dark {
93
+ &.pb_button_primary {
89
94
  @include pb_button_primary_dark;
90
95
  }
91
- &._secondary {
96
+
97
+ &.pb_button_secondary {
92
98
  @include pb_button_secondary_dark;
93
99
  }
94
- &._link {
100
+
101
+ &.pb_button_link {
95
102
  @include pb_button_link_dark;
96
103
  }
97
- &._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
 
@@ -52,7 +52,7 @@ $pb_button_border_width: 0px;
52
52
 
53
53
  @include focus;
54
54
 
55
- &.dark {
55
+ &[class*=dark] {
56
56
  @include focus-dark
57
57
  }
58
58
 
@@ -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', () => {