playbook_ui 14.25.0 → 15.0.0

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 (240) 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_map/_map.scss +1 -1
  114. data/app/pb_kits/playbook/pb_map/docs/_map_default.jsx +1 -1
  115. data/app/pb_kits/playbook/pb_map/docs/_map_with_custom_button.jsx +1 -1
  116. data/app/pb_kits/playbook/pb_map/docs/_map_with_plugin.jsx +1 -1
  117. data/app/pb_kits/playbook/pb_message/_message.scss +21 -16
  118. data/app/pb_kits/playbook/pb_message/_message.tsx +1 -0
  119. data/app/pb_kits/playbook/pb_message/_message_mixins.scss +5 -12
  120. data/app/pb_kits/playbook/pb_message/message.html.erb +1 -1
  121. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +6 -3
  122. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +16 -15
  123. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +1 -1
  124. data/app/pb_kits/playbook/pb_nav/_bold_mixin.scss +1 -1
  125. data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +1 -1
  126. data/app/pb_kits/playbook/pb_online_status/_online_status.scss +19 -15
  127. data/app/pb_kits/playbook/pb_online_status/_online_status.tsx +1 -1
  128. data/app/pb_kits/playbook/pb_online_status/online_status.rb +5 -4
  129. data/app/pb_kits/playbook/pb_online_status/online_status.test.js +2 -2
  130. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +1 -1
  131. data/app/pb_kits/playbook/pb_overlay/overlay.rb +1 -1
  132. data/app/pb_kits/playbook/pb_passphrase/_passphrase.scss +5 -2
  133. data/app/pb_kits/playbook/pb_person/_person.scss +1 -1
  134. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +1 -1
  135. data/app/pb_kits/playbook/pb_pill/_pill.scss +23 -21
  136. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +15 -13
  137. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss +108 -33
  138. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +1 -1
  139. data/app/pb_kits/playbook/pb_radio/_radio.scss +71 -52
  140. data/app/pb_kits/playbook/pb_radio/_radio.tsx +1 -1
  141. data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +0 -3
  142. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +4 -4
  143. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +81 -70
  144. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +9 -1
  145. data/app/pb_kits/playbook/pb_section_separator/_section_separator_mixin.scss +1 -1
  146. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.jsx +3 -1
  147. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +7 -1
  148. data/app/pb_kits/playbook/pb_select/_select.scss +4 -4
  149. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +6 -2
  150. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.scss +17 -8
  151. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +39 -29
  152. data/app/pb_kits/playbook/pb_selectable_list/_item.tsx +2 -0
  153. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +8 -11
  154. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.test.js +2 -3
  155. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.html.erb +2 -2
  156. data/app/pb_kits/playbook/pb_source/_source.scss +8 -8
  157. data/app/pb_kits/playbook/pb_star_rating/_star_rating.scss +1 -1
  158. data/app/pb_kits/playbook/pb_star_rating/star_rating.test.js +1 -1
  159. data/app/pb_kits/playbook/pb_stat_value/_stat_value.scss +2 -2
  160. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +5 -5
  161. data/app/pb_kits/playbook/pb_text_input/text_input.rb +15 -0
  162. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +6 -6
  163. data/app/pb_kits/playbook/pb_time/_time.scss +44 -17
  164. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +44 -23
  165. data/app/pb_kits/playbook/pb_time_range_inline/time_range_inline.rb +1 -1
  166. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.scss +5 -8
  167. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +16 -10
  168. data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +1 -4
  169. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +1 -1
  170. data/app/pb_kits/playbook/pb_timestamp/timestamp.test.js +2 -2
  171. data/app/pb_kits/playbook/pb_title/_title.scss +44 -39
  172. data/app/pb_kits/playbook/pb_title/_title.tsx +17 -8
  173. data/app/pb_kits/playbook/pb_title/_title_mixin.scss +2 -2
  174. data/app/pb_kits/playbook/pb_title/title.rb +20 -10
  175. data/app/pb_kits/playbook/pb_title/title.test.js +4 -4
  176. data/app/pb_kits/playbook/pb_title_count/_title_count.scss +19 -8
  177. data/app/pb_kits/playbook/pb_title_detail/_title_detail.scss +10 -11
  178. data/app/pb_kits/playbook/pb_toggle/_toggle.scss +4 -1
  179. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +3 -4
  180. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +1 -1
  181. data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +3 -3
  182. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +1 -1
  183. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +1 -1
  184. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.html.erb +1 -22
  185. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.jsx +1 -1
  186. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_without_pills.html.erb +2 -2
  187. data/app/pb_kits/playbook/pb_user/_user.scss +83 -33
  188. data/app/pb_kits/playbook/pb_user/docs/_user_props_table.md +14 -7
  189. data/app/pb_kits/playbook/pb_user/user.test.js +1 -1
  190. data/app/pb_kits/playbook/pb_user_badge/_user_badge.scss +23 -8
  191. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.scss +10 -10
  192. data/app/pb_kits/playbook/pb_weekday_stacked/weekday_stacked.test.jsx +3 -3
  193. data/app/pb_kits/playbook/utilities/_gap.scss +12 -24
  194. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +2 -0
  195. data/app/pb_kits/playbook/utilities/globalProps.ts +28 -4
  196. data/dist/chunks/{_line_graph-BvTZR440.js → _line_graph-CIyKqNGy.js} +1 -1
  197. data/dist/chunks/_typeahead-B-mDRLxH.js +6 -0
  198. data/dist/chunks/_weekday_stacked-B_lp1Spt.js +37 -0
  199. data/dist/chunks/vendor.js +1 -1
  200. data/dist/menu.yml +0 -6
  201. data/dist/playbook-doc.js +2 -2
  202. data/dist/playbook-rails-react-bindings.js +1 -1
  203. data/dist/playbook-rails.js +1 -1
  204. data/dist/playbook.css +1 -1
  205. data/lib/playbook/classnames.rb +2 -0
  206. data/lib/playbook/spacing.rb +53 -1
  207. data/lib/playbook/version.rb +2 -2
  208. metadata +8 -35
  209. data/app/pb_kits/playbook/pb_drawer/_close_icon.tsx +0 -25
  210. data/app/pb_kits/playbook/pb_drawer/_drawer.scss +0 -381
  211. data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +0 -231
  212. data/app/pb_kits/playbook/pb_drawer/_drawer_context.tsx +0 -3
  213. data/app/pb_kits/playbook/pb_drawer/context.ts +0 -11
  214. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +0 -8
  215. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.jsx +0 -41
  216. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +0 -33
  217. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +0 -78
  218. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +0 -3
  219. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +0 -26
  220. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +0 -20
  221. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.jsx +0 -59
  222. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +0 -24
  223. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +0 -61
  224. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.md +0 -24
  225. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +0 -21
  226. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +0 -54
  227. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +0 -1
  228. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +0 -49
  229. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.jsx +0 -99
  230. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +0 -20
  231. data/app/pb_kits/playbook/pb_drawer/docs/index.js +0 -7
  232. data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +0 -20
  233. data/app/pb_kits/playbook/pb_drawer/drawer.rb +0 -56
  234. data/app/pb_kits/playbook/pb_drawer/drawer.test.jsx +0 -81
  235. data/app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx +0 -60
  236. data/app/pb_kits/playbook/pb_drawer/hooks/useDrawerAnimation.tsx +0 -21
  237. data/app/pb_kits/playbook/pb_drawer/index.js +0 -257
  238. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.md +0 -9
  239. data/dist/chunks/_typeahead-BtNEotfH.js +0 -6
  240. data/dist/chunks/_weekday_stacked-qhZxDWNu.js +0 -37
@@ -22,7 +22,7 @@ type LayoutPropTypes = {
22
22
  size?: "xs" | "sm" | "md" | "base" | "lg" | "xl",
23
23
  variant?: "light" | "dark" | "gradient",
24
24
  transparent?: boolean,
25
- layout?: "sidebar" | "collection" | "kanban" | "content" | "masonry" | "bracket",
25
+ layout?: "sidebar" | "collection" | "collection_detail" | "kanban" | "content" | "masonry" | "bracket",
26
26
  } & GlobalProps
27
27
 
28
28
  type LayoutSideProps = {
@@ -81,11 +81,10 @@ const Body = (props: LayoutBodyProps) => {
81
81
  // Item component
82
82
  const Item = (props: LayoutItemProps) => {
83
83
  const { children, className, size = 'sm' } = props
84
- const sizeClass = `size_${size}`
85
84
  const dynamicInlineProps = globalInlineProps(props)
86
85
  return (
87
86
  <div
88
- className={classnames('layout_item', sizeClass, globalProps(props), className)}
87
+ className={classnames('layout_item', `layout_item_size_${size}`, globalProps(props), className)}
89
88
  style={dynamicInlineProps}
90
89
  >
91
90
  {children}
@@ -144,20 +143,24 @@ const Layout = (props: LayoutPropTypes) => {
144
143
  const htmlProps = buildHtmlProps(htmlOptions)
145
144
 
146
145
  const layoutCss =
147
- (layout == 'collection' || layout == 'bracket')
146
+ (layout == 'collection' || layout == 'bracket' || layout == 'collection_detail' || layout == 'content' || layout == 'masonry')
148
147
  ? `pb_layout_kit_${layout}`
149
148
  : layout == 'kanban'
150
149
  ? `pb_layout_kit_${layout}${responsiveClass}`
151
- : buildCss(`pb_layout_kit_${layout}`, `size_${size}`, position, variant, {
152
- dark: dark,
153
- transparent: transparent,
154
- full: full,
155
- })
150
+ : classnames(
151
+ 'pb_layout_kit_sidebar',
152
+ `pb_layout_kit_sidebar_size_${size}_${position}_${variant}`,
153
+ {
154
+ 'pb_layout_kit_sidebar_dark': dark,
155
+ 'pb_layout_kit_sidebar_transparent': transparent,
156
+ 'pb_layout_kit_sidebar_full': full,
157
+ }
158
+ )
156
159
 
157
160
  const layoutCollapseCss =
158
- (layout == 'collection' || layout == 'kanban' || layout == 'bracket')
161
+ (layout == 'collection' || layout == 'collection_detail' || layout == 'content' || layout == 'masonry' || layout == 'kanban' || layout == 'bracket')
159
162
  ? ''
160
- : buildCss('layout', position, 'collapse', collapse)
163
+ : `layout_${position}_collapse_${collapse}`
161
164
 
162
165
  const layoutChildren = React.Children.toArray(children)
163
166
 
@@ -8,13 +8,7 @@ module Playbook
8
8
  default: "sm"
9
9
 
10
10
  def classname
11
- generate_classname("layout_item") + size_class
12
- end
13
-
14
- private
15
-
16
- def size_class
17
- " size_#{size}"
11
+ generate_classname("layout_item") + " layout_item_size_#{size}"
18
12
  end
19
13
  end
20
14
  end
@@ -25,38 +25,29 @@ module Playbook
25
25
  def classname
26
26
  case layout
27
27
  when "collection"
28
- generate_classname("pb_layout_kit", layout)
28
+ generate_classname("pb_layout_kit_collection")
29
29
  when "kanban"
30
- generate_classname("pb_layout_kit", layout, responsive_class)
30
+ classes = ["pb_layout_kit_kanban"]
31
+ classes << "pb_layout_kit_kanban_responsive" if responsive
32
+ generate_classname(classes.join(" "))
31
33
  when "collection_detail"
32
- generate_classname("pb_layout_kit", layout)
34
+ generate_classname("pb_layout_kit_collection_detail")
33
35
  when "content"
34
- generate_classname("pb_layout_kit", layout)
36
+ generate_classname("pb_layout_kit_content")
35
37
  when "masonry"
36
- generate_classname("pb_layout_kit", layout)
38
+ generate_classname("pb_layout_kit_masonry")
37
39
  else
38
- first_class = generate_classname("pb_layout_kit_sidebar", "size_#{size}", position, variant, transparent_class)
39
- [first_class, full_class, collapse_class].reject(&:empty?).join(" ")
40
+ # Sidebar layout
41
+ classes = [
42
+ "pb_layout_kit_sidebar",
43
+ "pb_layout_kit_sidebar_size_#{size}_#{position}_#{variant}",
44
+ ]
45
+ classes << "pb_layout_kit_sidebar_transparent" if transparent
46
+ classes << "pb_layout_kit_sidebar_full" if full
47
+ classes << "layout_#{position}_collapse_#{collapse}"
48
+ generate_classname(classes.join(" "))
40
49
  end
41
50
  end
42
-
43
- private
44
-
45
- def responsive_class
46
- responsive ? "responsive" : ""
47
- end
48
-
49
- def full_class
50
- full ? "full" : ""
51
- end
52
-
53
- def transparent_class
54
- transparent ? "transparent" : nil
55
- end
56
-
57
- def collapse_class
58
- "layout_#{position}_collapse_#{collapse}"
59
- end
60
51
  end
61
52
  end
62
53
  end
@@ -68,11 +68,11 @@ test("render all layout variants", () => {
68
68
  },
69
69
  {
70
70
  layout: "collection_detail",
71
- expected: "pb_layout_kit_collection_detail_size_md_left_light",
71
+ expected: "pb_layout_kit_collection_detail",
72
72
  },
73
73
  {
74
74
  layout: "content",
75
- expected: "pb_layout_kit_content_size_md_left_light",
75
+ expected: "pb_layout_kit_content",
76
76
  },
77
77
  {
78
78
  layout: "kanban",
@@ -80,7 +80,7 @@ test("render all layout variants", () => {
80
80
  },
81
81
  {
82
82
  layout: "masonry",
83
- expected: "pb_layout_kit_masonry_size_md_left_light",
83
+ expected: "pb_layout_kit_masonry",
84
84
  },
85
85
  {
86
86
  layout: "bracket",
@@ -9,26 +9,76 @@
9
9
  background: $color;
10
10
  }
11
11
 
12
- @mixin indicator-colors($colors-list) {
13
- @each $name, $color in $colors-list {
14
- &[class*=#{$name}] {
15
- .pb_legend_indicator_circle {
16
- @include pb_button($color);
17
- }
12
+ // Base class for custom colors (no color suffix)
13
+ .pb_legend_kit {
14
+ .pb_legend_indicator_circle_custom {
15
+ display: inline-block;
16
+ width: 10px;
17
+ height: 10px;
18
+ border-radius: 5px;
19
+ }
20
+ }
21
+
22
+ // Data colors
23
+ @each $name, $color in $data_colors {
24
+ .pb_legend_kit_#{$name} {
25
+ .pb_legend_indicator_circle {
26
+ @include pb_button($color);
27
+ }
28
+
29
+ .pb_legend_indicator_circle_custom {
30
+ display: inline-block;
31
+ width: 10px;
32
+ height: 10px;
33
+ border-radius: 5px;
18
34
  }
19
35
  }
20
36
  }
21
37
 
22
- [class^=pb_legend_kit] {
23
- @include indicator-colors($data_colors);
24
- @include indicator-colors($status_colors);
25
- @include indicator-colors($product_colors);
26
- @include indicator-colors($category_colors);
38
+ // Status colors
39
+ @each $name, $color in $status_colors {
40
+ .pb_legend_kit_#{$name} {
41
+ .pb_legend_indicator_circle {
42
+ @include pb_button($color);
43
+ }
44
+
45
+ .pb_legend_indicator_circle_custom {
46
+ display: inline-block;
47
+ width: 10px;
48
+ height: 10px;
49
+ border-radius: 5px;
50
+ }
51
+ }
52
+ }
27
53
 
28
- .pb_legend_indicator_circle_custom {
29
- display: inline-block;
30
- width: 10px;
31
- height: 10px;
32
- border-radius: 5px;
54
+ // Product colors
55
+ @each $name, $color in $product_colors {
56
+ .pb_legend_kit_#{$name} {
57
+ .pb_legend_indicator_circle {
58
+ @include pb_button($color);
59
+ }
60
+
61
+ .pb_legend_indicator_circle_custom {
62
+ display: inline-block;
63
+ width: 10px;
64
+ height: 10px;
65
+ border-radius: 5px;
66
+ }
33
67
  }
34
68
  }
69
+
70
+ // Category colors
71
+ @each $name, $color in $category_colors {
72
+ .pb_legend_kit_#{$name} {
73
+ .pb_legend_indicator_circle {
74
+ @include pb_button($color);
75
+ }
76
+
77
+ .pb_legend_indicator_circle_custom {
78
+ display: inline-block;
79
+ width: 10px;
80
+ height: 10px;
81
+ border-radius: 5px;
82
+ }
83
+ }
84
+ }
@@ -39,7 +39,7 @@ test('prefixText prop renders', () => {
39
39
  )
40
40
 
41
41
  const kit = screen.getByTestId('primary-test')
42
- const prefix = kit.querySelector(".pb_title_kit_size_4")
42
+ const prefix = kit.querySelector(".pb_title_kit.pb_title_4")
43
43
  expect(prefix).toBeInTheDocument()
44
44
  })
45
45
 
@@ -66,18 +66,18 @@ $lightbox-z-index-floor: $z_10 !default;
66
66
  width: 100%;
67
67
  z-index: $lightbox-z-index-floor + 1;
68
68
 
69
- [class^="react-transform-wrapper"] {
69
+ .react-transform-wrapper {
70
70
  flex-shrink: 0;
71
71
  width: 100%;
72
72
  height: 100%;
73
73
  }
74
74
 
75
- [class^="react-transform-content"] {
75
+ .react-transform-content {
76
76
  width: 100%;
77
77
  height: 100%;
78
78
  }
79
79
 
80
- [class^="react-transform-component"] {
80
+ .react-transform-component {
81
81
  width: 100%;
82
82
  height: 100%;
83
83
  img {
@@ -164,4 +164,4 @@ $lightbox-z-index-floor: $z_10 !default;
164
164
  align-items: center;
165
165
  background-color: white;
166
166
  box-shadow: 0 0 6px white;
167
- }
167
+ }
@@ -113,7 +113,7 @@ test('Closes on close button', async () => {
113
113
  )
114
114
 
115
115
  const kit = screen.getByTestId(testId)
116
- const closeIcon = kit.getElementsByClassName('pb_button_kit_link_inline_enabled')[0]
116
+ const closeIcon = kit.querySelector('.pb_button_kit.pb_button_link.pb_button_inline.pb_button_enabled')
117
117
 
118
118
  fireEvent(
119
119
  closeIcon,
@@ -3,7 +3,8 @@
3
3
  @import "../tokens/typography";
4
4
  @import "../tokens/border_radius";
5
5
 
6
- [class^=pb_link_kit]{
6
+ // Base styles
7
+ .pb_link_kit {
7
8
  @include pb_link($primary);
8
9
  &:hover {
9
10
  color: $text_lt_default;
@@ -25,42 +26,135 @@
25
26
  color: $text_dk_default;
26
27
  }
27
28
  }
28
- @each $color_name, $color_value in $pb_link_colors {
29
- &[class*=_#{"" + $color_name}] {
30
- @include pb_link($color_value);
29
+ }
31
30
 
31
+ // Color variants
32
+ @each $color_name, $color_value in $pb_link_colors {
33
+ @if $color_name != "default" {
34
+ .pb_link_kit_#{$color_name} {
35
+ @include pb_link($color_value);
32
36
  &:hover {
33
37
  color: map-get($pb_link_hover_colors, $color_name);
34
38
  }
35
-
36
39
  &:visited {
37
40
  color: darken($primary_action, 10%);
38
41
  }
42
+ &:focus {
43
+ outline: none;
44
+ }
45
+ &:focus-visible {
46
+ border-radius: $border_rad_light;
47
+ outline: 1px solid $primary;
48
+ outline-offset: 2px;
49
+ }
39
50
  }
40
51
  }
52
+ }
41
53
 
42
- @each $dark_color_name, $dark_color_value in $pb_dark_link_colors{
43
- &[class*=_#{$dark_color_name}][class*=dark]{
44
- @include pb_link($dark_color_value);
45
-
54
+ // Dark mode color variants
55
+ @each $dark_color_name, $dark_color_value in $pb_dark_link_colors {
56
+ .pb_link_kit_#{$dark_color_name}.dark {
57
+ @include pb_link($dark_color_value);
58
+ &:hover {
59
+ color: map-get($pb_dark_link_hover_colors, $dark_color_name);
60
+ }
61
+ &:visited {
62
+ color: darken($primary_action, 10%);
63
+ }
64
+ }
65
+ }
66
+
67
+ // Underline modifier
68
+ .pb_link_kit_underline,
69
+ .pb_link_kit_body_underline,
70
+ .pb_link_kit_muted_underline,
71
+ .pb_link_kit_destructive_underline,
72
+ .pb_link_kit_underline_disabled,
73
+ .pb_link_kit_body_underline_disabled,
74
+ .pb_link_kit_muted_underline_disabled,
75
+ .pb_link_kit_destructive_underline_disabled {
76
+ text-decoration: underline;
77
+ }
78
+
79
+ // Disabled modifier
80
+ .pb_link_kit_disabled,
81
+ .pb_link_kit_body_disabled,
82
+ .pb_link_kit_muted_disabled,
83
+ .pb_link_kit_destructive_disabled,
84
+ .pb_link_kit_underline_disabled,
85
+ .pb_link_kit_body_underline_disabled,
86
+ .pb_link_kit_muted_underline_disabled,
87
+ .pb_link_kit_destructive_underline_disabled {
88
+ pointer-events: none;
89
+ cursor: default;
90
+ color: $text_lt_lighter;
91
+ }
92
+
93
+ // Color + underline combinations
94
+ @each $color_name, $color_value in $pb_link_colors {
95
+ @if $color_name != "default" {
96
+ .pb_link_kit_#{$color_name}_underline {
97
+ @include pb_link($color_value);
46
98
  &:hover {
47
- color: map-get($pb_dark_link_hover_colors, $dark_color_name);
99
+ color: map-get($pb_link_hover_colors, $color_name);
48
100
  }
49
-
50
101
  &:visited {
51
102
  color: darken($primary_action, 10%);
52
103
  }
104
+ &:focus {
105
+ outline: none;
106
+ }
107
+ &:focus-visible {
108
+ border-radius: $border_rad_light;
109
+ outline: 1px solid $primary;
110
+ outline-offset: 2px;
111
+ }
53
112
  }
54
113
  }
114
+ }
55
115
 
56
- &[class*=_underline] {
57
- text-decoration: underline;
116
+ // Color + disabled combinations
117
+ @each $color_name, $color_value in $pb_link_colors {
118
+ @if $color_name != "default" {
119
+ .pb_link_kit_#{$color_name}_disabled {
120
+ @include pb_link($color_value);
121
+ &:hover {
122
+ color: map-get($pb_link_hover_colors, $color_name);
123
+ }
124
+ &:visited {
125
+ color: darken($primary_action, 10%);
126
+ }
127
+ &:focus {
128
+ outline: none;
129
+ }
130
+ &:focus-visible {
131
+ border-radius: $border_rad_light;
132
+ outline: 1px solid $primary;
133
+ outline-offset: 2px;
134
+ }
135
+ }
58
136
  }
137
+ }
59
138
 
60
- &[class*=_disabled] {
61
- pointer-events: none;
62
- cursor: default;
63
- color: $text_lt_lighter;
139
+ // Color + underline + disabled combinations
140
+ @each $color_name, $color_value in $pb_link_colors {
141
+ @if $color_name != "default" {
142
+ .pb_link_kit_#{$color_name}_underline_disabled {
143
+ @include pb_link($color_value);
144
+ &:hover {
145
+ color: map-get($pb_link_hover_colors, $color_name);
146
+ }
147
+ &:visited {
148
+ color: darken($primary_action, 10%);
149
+ }
150
+ &:focus {
151
+ outline: none;
152
+ }
153
+ &:focus-visible {
154
+ border-radius: $border_rad_light;
155
+ outline: 1px solid $primary;
156
+ outline-offset: 2px;
157
+ }
158
+ }
64
159
  }
65
-
66
- }
160
+ }
@@ -28,4 +28,4 @@
28
28
  &[class*=_layout_right] li {
29
29
  @include pb_list_layout_right;
30
30
  }
31
- }
31
+ }
@@ -1,19 +1,21 @@
1
1
  @import "../pb_body/body";
2
2
  @import "../pb_icon/icon";
3
3
 
4
- [class^=pb_loading_inline_kit] {
4
+ .pb_loading_inline_kit_left,
5
+ .pb_loading_inline_kit_center,
6
+ .pb_loading_inline_kit_right {
5
7
  display: flex;
6
8
  align-items: baseline;
9
+ }
7
10
 
8
- &[class*=_center] {
9
- justify-content: center;
10
- }
11
-
12
- &[class*=_left] {
13
- justify-content: flex-start;
14
- }
11
+ .pb_loading_inline_kit_center {
12
+ justify-content: center;
13
+ }
15
14
 
16
- &[class*=_right] {
17
- justify-content: flex-end;
18
- }
15
+ .pb_loading_inline_kit_left {
16
+ justify-content: flex-start;
19
17
  }
18
+
19
+ .pb_loading_inline_kit_right {
20
+ justify-content: flex-end;
21
+ }
@@ -4,7 +4,7 @@
4
4
  @import "../tokens/border_radius";
5
5
  @import "./_pb_map_button_mixin.scss";
6
6
 
7
- [class*="pb_map"] {
7
+ .pb_map {
8
8
  .pb_map-custom-button {
9
9
  @include pb_map_button;
10
10
  position: relative;
@@ -26,7 +26,7 @@ const MapDefault = (props) => {
26
26
  new maplibregl.Marker({
27
27
  color: mapTheme.marker,
28
28
  }).setLngLat(defaultPosition)
29
- .setPopup(new maplibregl.Popup({closeButton: false}).setHTML(`<h4 class="pb_title_kit_size_4">Hello World!</h4>`)) // add popup
29
+ .setPopup(new maplibregl.Popup({closeButton: false}).setHTML(`<h4 class="pb_title_kit pb_title_4">Hello World!</h4>`)) // add popup
30
30
  .addTo(map);
31
31
 
32
32
  // disable map zoom when using scroll
@@ -29,7 +29,7 @@ const MapWithCustomButton = (props) => {
29
29
  new maplibregl.Marker({
30
30
  color: mapTheme.marker,
31
31
  }).setLngLat(defaultPosition)
32
- .setPopup(new maplibregl.Popup({closeButton: false}).setHTML(`<h4 class="pb_title_kit_size_4">Hello World!</h4>`)) // add popup
32
+ .setPopup(new maplibregl.Popup({closeButton: false}).setHTML(`<h4 class="pb_title_kit pb_title_4">Hello World!</h4>`)) // add popup
33
33
  .addTo(map);
34
34
 
35
35
  // disable map zoom when using scroll
@@ -26,7 +26,7 @@ const MapWithPlugin = (props) => {
26
26
  new maplibregl.Marker({
27
27
  color: mapTheme.marker,
28
28
  }).setLngLat(defaultPosition)
29
- .setPopup(new maplibregl.Popup({className: 'map_popup', closeButton: false}).setHTML(`<h4 class="pb_title_kit_size_4">Hello World!</h4>`)) // add popup
29
+ .setPopup(new maplibregl.Popup({closeButton: false}).setHTML(`<h4 class="pb_title_kit pb_title_4">Hello World!</h4>`)) // add popup
30
30
  .addTo(map);
31
31
 
32
32
  //add maplibre default zoom controls
@@ -7,21 +7,26 @@
7
7
  $mention_bg_color_yellow: rgba(249, 187, 0, 0.2);
8
8
  $mention_bg_color_blue: #e5eefa;
9
9
 
10
- [class^=pb_message_kit] {
11
- @include pb_message;
10
+ .pb_message_kit {
11
+ @include pb_message(false);
12
+ }
13
+
14
+ .pb_message_kit_avatar {
15
+ @include pb_message(true);
16
+ }
12
17
 
13
- [class^=pb_message_mention] {
14
- border-radius: $space_xxs;
15
- color: $primary;
16
- display: inline;
17
- padding: $space_xxs;
18
-
19
- &[class*=_user] {
20
- background-color: $mention_bg_color_blue;
21
- }
22
-
23
- &[class*=_self] {
24
- background-color: $mention_bg_color_yellow;
25
- }
26
- }
18
+ .pb_message_mention_user,
19
+ .pb_message_mention_self {
20
+ border-radius: $space_xxs;
21
+ color: $primary;
22
+ display: inline;
23
+ padding: $space_xxs;
27
24
  }
25
+
26
+ .pb_message_mention_user {
27
+ background-color: $mention_bg_color_blue;
28
+ }
29
+
30
+ .pb_message_mention_self {
31
+ background-color: $mention_bg_color_yellow;
32
+ }
@@ -84,6 +84,7 @@ const Message = (props: MessageProps) => {
84
84
  <Flex
85
85
  justify={alignTimestamp === 'left' ? 'none' : 'between'}
86
86
  orientation="row"
87
+ width="100%"
87
88
  >
88
89
  {label &&
89
90
  <Title
@@ -1,19 +1,18 @@
1
1
  @import "../tokens/spacing";
2
2
 
3
- @mixin pb_message {
3
+ @mixin pb_message($with_avatar: false) {
4
4
  display: flex;
5
5
  justify-content: flex-start;
6
6
 
7
7
  .content_wrapper {
8
8
  width: 100%;
9
9
  font-size: $font_base - 1;
10
-
11
- .pull-left {
10
+ @if $with_avatar {
12
11
  margin-left: $space-xs;
13
12
  }
14
13
 
15
- [class^=pb_flex_] {
16
- width: 100%;
14
+ .pull-left {
15
+ margin-left: $space-xs;
17
16
  }
18
17
 
19
18
  .message_text {
@@ -25,12 +24,6 @@
25
24
  }
26
25
  }
27
26
 
28
- &[class*=_avatar] {
29
- .content_wrapper {
30
- margin-left: $space-xs;
31
- }
32
- }
33
-
34
27
  .pb_message_body {
35
28
  font-size: 15px;
36
29
  }
@@ -48,4 +41,4 @@
48
41
  display: none;
49
42
  }
50
43
  }
51
- }
44
+ }
@@ -9,7 +9,7 @@
9
9
  }) %>
10
10
  <% end %>
11
11
  <div class="content_wrapper">
12
- <%= pb_rails("flex", props: { orientation: "row", justify: object.align_timestamp == "left" ? "none" : "between" }) do %>
12
+ <%= pb_rails("flex", props: { orientation: "row", justify: object.align_timestamp == "left" ? "none" : "between", width:"100%" }) do %>
13
13
  <% if object.label.present? %>
14
14
  <%= pb_rails("title", props: {
15
15
  size: 4,
@@ -16,7 +16,7 @@
16
16
  border-color: $error;
17
17
  }
18
18
  }
19
- [class*=pb_body_kit_negative] {
19
+ .pb_body_kit_negative {
20
20
  margin-top: $space_xxs;
21
21
  }
22
22
  }
@@ -85,7 +85,10 @@
85
85
  .pb_checkbox_kit {
86
86
  align-items: center;
87
87
  }
88
- .pb_button_kit_link_inline_enabled {
88
+ .pb_button_kit,
89
+ .pb_button_link,
90
+ .pb_button_inline,
91
+ .pb_button_enabled {
89
92
  color: $charcoal;
90
93
  &:hover {
91
94
  color: $primary;
@@ -110,7 +113,7 @@
110
113
  border-color: $error_dark;
111
114
  }
112
115
  }
113
- [class*=pb_body_kit_negative] {
116
+ .pb_body_kit_negative {
114
117
  color: $error_dark;
115
118
  }
116
119
  }