playbook_ui 12.30.1.pre.alpha.play846responsivespacingglobalpropsneedsdefault924 → 12.31.0.pre.alpha.customiconsfa928

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +2 -0
  3. data/app/pb_kits/playbook/custom-icons.js +355 -0
  4. data/app/pb_kits/playbook/index.js +2 -1
  5. data/app/pb_kits/playbook/pb_badge/_badge.scss +5 -0
  6. data/app/pb_kits/playbook/pb_badge/_badge.tsx +1 -1
  7. data/app/pb_kits/playbook/pb_badge/badge.rb +1 -1
  8. data/app/pb_kits/playbook/pb_badge/badge.test.js +13 -0
  9. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.html.erb +12 -0
  10. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.jsx +25 -0
  11. data/app/pb_kits/playbook/pb_badge/docs/example.yml +2 -1
  12. data/app/pb_kits/playbook/pb_badge/docs/index.js +1 -0
  13. data/app/pb_kits/playbook/pb_button/docs/_button_hover.jsx +40 -0
  14. data/app/pb_kits/playbook/pb_button/docs/example.yml +1 -0
  15. data/app/pb_kits/playbook/pb_button/docs/index.js +1 -0
  16. data/app/pb_kits/playbook/pb_card/_card.scss +0 -3
  17. data/app/pb_kits/playbook/pb_card/_card.tsx +6 -5
  18. data/app/pb_kits/playbook/pb_card/card.html.erb +3 -1
  19. data/app/pb_kits/playbook/pb_card/card.rb +96 -0
  20. data/app/pb_kits/playbook/pb_card/card_body.rb +1 -93
  21. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +0 -11
  22. data/app/pb_kits/playbook/pb_collapsible/_collapsible.tsx +3 -1
  23. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.tsx +3 -1
  24. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.tsx +3 -1
  25. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +1 -1
  26. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +0 -12
  27. data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_body.tsx +2 -2
  28. data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_footer.tsx +4 -1
  29. data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_header.tsx +2 -1
  30. data/app/pb_kits/playbook/pb_icon/_icon.tsx +9 -3
  31. data/app/pb_kits/playbook/pb_icon/icon.rb +8 -2
  32. data/app/pb_kits/playbook/pb_message/docs/_message_default.jsx +33 -45
  33. data/app/pb_kits/playbook/pb_message/docs/_message_hover.jsx +41 -0
  34. data/app/pb_kits/playbook/pb_message/docs/example.yml +1 -0
  35. data/app/pb_kits/playbook/pb_message/docs/index.js +2 -0
  36. data/app/pb_kits/playbook/pb_multi_level_select/_helper_functions.tsx +4 -1
  37. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +8 -3
  38. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb +76 -0
  39. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.jsx +88 -0
  40. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.md +5 -0
  41. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -0
  42. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +2 -1
  43. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +3 -0
  44. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +7 -0
  45. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +12 -7
  46. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.html.erb +14 -0
  47. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +30 -0
  48. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.md +3 -0
  49. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.html.erb +1 -0
  50. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.jsx +13 -0
  51. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.html.erb +1 -1
  52. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +1 -1
  53. data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +6 -3
  54. data/app/pb_kits/playbook/pb_section_separator/docs/index.js +2 -0
  55. data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +4 -2
  56. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +4 -1
  57. data/app/pb_kits/playbook/pb_title/_title.scss +18 -0
  58. data/app/pb_kits/playbook/pb_title/_title.tsx +20 -2
  59. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.html.erb +1 -0
  60. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.jsx +16 -0
  61. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.md +1 -0
  62. data/app/pb_kits/playbook/pb_title/docs/example.yml +2 -0
  63. data/app/pb_kits/playbook/pb_title/docs/index.js +1 -0
  64. data/app/pb_kits/playbook/pb_title/title.rb +21 -4
  65. data/app/pb_kits/playbook/pb_title/title.test.js +42 -29
  66. data/app/pb_kits/playbook/tokens/_scale.scss +9 -0
  67. data/app/pb_kits/playbook/tokens/exports/_scale.scss +13 -0
  68. data/app/pb_kits/playbook/utilities/_border_radius.scss +31 -0
  69. data/app/pb_kits/playbook/utilities/_colors.scss +3 -0
  70. data/app/pb_kits/playbook/utilities/_hover.scss +47 -0
  71. data/app/pb_kits/playbook/utilities/globalProps.ts +22 -2
  72. data/dist/playbook-rails.js +7 -7
  73. data/lib/playbook/version.rb +2 -2
  74. metadata +22 -2
@@ -4,39 +4,52 @@ import { render, screen } from '../utilities/test-utils'
4
4
  import Title from './_title'
5
5
 
6
6
  test('returns namespaced class name', () => {
7
- render(
8
- <Title
9
- data={{ testid: 'primary-test' }}
10
- text="Test colors"
11
- />
12
- )
13
-
14
- const kit = screen.getByTestId('primary-test')
15
- expect(kit).toHaveClass('pb_title_kit_size_3')
7
+ render(
8
+ <Title
9
+ data={{ testid: 'primary-test' }}
10
+ text="Test colors"
11
+ />
12
+ )
13
+
14
+ const kit = screen.getByTestId('primary-test')
15
+ expect(kit).toHaveClass('pb_title_kit_size_3')
16
16
  })
17
17
 
18
18
  test('with thin font weight', () => {
19
- render(
20
- <Title
21
- bold={false}
22
- data={{ testid: 'primary-test' }}
23
- text="Test thin font weight"
24
- />
25
- )
26
-
27
- const kit = screen.getByTestId('primary-test')
28
- expect(kit).toHaveClass('pb_title_kit_size_3_thin')
19
+ render(
20
+ <Title
21
+ bold={false}
22
+ data={{ testid: 'primary-test' }}
23
+ text="Test thin font weight"
24
+ />
25
+ )
26
+
27
+ const kit = screen.getByTestId('primary-test')
28
+ expect(kit).toHaveClass('pb_title_kit_size_3_thin')
29
29
  })
30
30
 
31
31
  test('with colors', () => {
32
- render(
33
- <Title
34
- color="success"
35
- data={{ testid: 'primary-test' }}
36
- text="Test colors"
37
- />
38
- )
39
-
40
- const kit = screen.getByTestId('primary-test')
41
- expect(kit).toHaveClass('pb_title_kit_size_3_success')
32
+ render(
33
+ <Title
34
+ color="success"
35
+ data={{ testid: 'primary-test' }}
36
+ text="Test colors"
37
+ />
38
+ )
39
+
40
+ const kit = screen.getByTestId('primary-test')
41
+ expect(kit).toHaveClass('pb_title_kit_size_3_success')
42
+ })
43
+
44
+ test('with responsive title', () => {
45
+ render(
46
+ <Title
47
+ data={{ testid: 'primary-test' }}
48
+ size={{ xs: "3", sm: "2", md: "1" }}
49
+ text="Responsive Title"
50
+ />
51
+ )
52
+
53
+ const kit = screen.getByTestId('primary-test')
54
+ expect(kit).toHaveClass('pb_title_kit pb_title_kit_xs_3 pb_title_kit_sm_2 pb_title_kit_md_1')
42
55
  })
@@ -0,0 +1,9 @@
1
+
2
+ $scale_sm: scale(1.05);
3
+ $scale_md: scale(1.1);
4
+ $scale_lg: scale(1.15);
5
+ $scales: (
6
+ scale_sm: $scale_sm,
7
+ scale_md: $scale_md,
8
+ scale_lg: $scale_lg,
9
+ );
@@ -0,0 +1,13 @@
1
+ @import "../scale";
2
+
3
+ :export {
4
+ @mixin export-hover-scale-classes($scales-list) {
5
+ @each $name, $scale in $scales-list {
6
+ .hover_#{$name}:hover {
7
+ transform: $scale;
8
+ }
9
+ }
10
+ }
11
+
12
+ @include export-hover-scale-classes($scales);
13
+ }
@@ -0,0 +1,31 @@
1
+ @import "../tokens/exports/border_radius";
2
+
3
+ $transition-speed: 0.2s;
4
+
5
+ .border_radius {
6
+ @mixin border-example {
7
+ transition: background-color $transition-speed ease, height $transition-speed ease;
8
+ }
9
+
10
+ &_rounded {
11
+ border-radius: $border_radius_rounded;
12
+ }
13
+ &_xl {
14
+ border-radius: $border_radius_xl;
15
+ }
16
+ &_lg {
17
+ border-radius: $border_radius_lg;
18
+ }
19
+ &_md {
20
+ border-radius: $border_radius_md;
21
+ }
22
+ &_sm {
23
+ border-radius: $border_radius_sm;
24
+ }
25
+ &_xs {
26
+ border-radius: $border_radius_xs;
27
+ }
28
+ &_none {
29
+ border-radius: $border_radius_none;
30
+ }
31
+ }
@@ -1,5 +1,7 @@
1
1
  // Color Helper Utilities
2
2
 
3
+ $transition-speed: 0.2s;
4
+
3
5
  @function shade($color, $percentage) {
4
6
  @return mix($charcoal, $color, $percentage);
5
7
  }
@@ -27,6 +29,7 @@
27
29
  }
28
30
  }
29
31
 
32
+
30
33
  @mixin text-color($colors-list) {
31
34
  @each $name, $color in $colors-list {
32
35
  .#{$name} {
@@ -0,0 +1,47 @@
1
+ @import "../tokens/exports/scale";
2
+
3
+ @mixin hover-color-classes($colors-list) {
4
+ @each $name, $color in $colors-list {
5
+ .bg-hover-#{$name}:hover {
6
+ background-color: $color !important;
7
+ transition: background-color $transition-speed ease;
8
+ }
9
+ }
10
+ }
11
+
12
+ @mixin hover-shadow-classes($shadows-list) {
13
+ @each $name, $shadow in $shadows-list {
14
+ .hover_#{$name}:hover {
15
+ box-shadow: $shadow;
16
+ transition: box-shadow $transition-speed ease;
17
+ }
18
+ }
19
+ }
20
+
21
+ @mixin hover-scale-classes($scales-list) {
22
+ @each $name, $scale in $scales-list {
23
+ .hover_#{$name}:hover {
24
+ transform: $scale;
25
+ transition: transform $transition-speed ease;
26
+ }
27
+ }
28
+ }
29
+
30
+
31
+ @include hover-scale-classes($scales);
32
+ @include hover-shadow-classes($box_shadows);
33
+ @include hover-color-classes($product_colors);
34
+ @include hover-color-classes($status_colors);
35
+ @include hover-color-classes($data_colors);
36
+ @include hover-color-classes($shadow_colors);
37
+ @include hover-color-classes($colors);
38
+ @include hover-color-classes($interface_colors);
39
+ @include hover-color-classes($main_colors);
40
+ @include hover-color-classes($background_colors);
41
+ @include hover-color-classes($card_colors);
42
+ @include hover-color-classes($active_colors);
43
+ @include hover-color-classes($action_colors);
44
+ @include hover-color-classes($hover_colors);
45
+ @include hover-color-classes($border_colors);
46
+ @include hover-color-classes($text_colors);
47
+ @include hover-color-classes($category_colors);
@@ -60,6 +60,11 @@ type FlexWrap = {
60
60
  flexWrap?: "wrap" | "nowrap" | "wrapReverse"
61
61
  }
62
62
 
63
+ type Hover = Shadow & {
64
+ background?: string,
65
+ scale?: "sm" | "md" | "lg"
66
+ }
67
+
63
68
  type JustifyContent = {
64
69
  justifyContent?: Alignment & Space
65
70
  }
@@ -125,7 +130,7 @@ export type GlobalProps = AlignContent & AlignItems & AlignSelf &
125
130
  BorderRadius & Cursor & Dark & Display & DisplaySizes & Flex & FlexDirection &
126
131
  FlexGrow & FlexShrink & FlexWrap & JustifyContent & JustifySelf &
127
132
  LineHeight & Margin & MaxWidth & NumberSpacing & Order & Padding &
128
- Position & Shadow & ZIndex
133
+ Position & Shadow & ZIndex & { hover?: string };
129
134
 
130
135
  const getResponsivePropClasses = (prop: {[key: string]: string}, classPrefix: string) => {
131
136
  const keys: string[] = Object.keys(prop)
@@ -137,6 +142,16 @@ const getResponsivePropClasses = (prop: {[key: string]: string}, classPrefix: st
137
142
 
138
143
  // Prop categories
139
144
  const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} = {
145
+
146
+ hoverProps: ({ hover }: { hover?: Hover }) => {
147
+ let css = '';
148
+ if (!hover) return css;
149
+ css += hover.shadow ? `hover_shadow_${hover.shadow} ` : '';
150
+ css += hover.background ? `bg-hover-${hover.background } ` : '';
151
+ css += hover.scale ? `hover_scale_${hover.scale} ` : '';
152
+ return css;
153
+ },
154
+
140
155
  spacingProps: ({
141
156
  marginRight,
142
157
  marginLeft,
@@ -214,7 +229,11 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
214
229
  });
215
230
  return css.trim();
216
231
  },
217
-
232
+ borderRadiusProps: ({ borderRadius }: BorderRadius) => {
233
+ let css = ''
234
+ css += borderRadius ? `border_radius_${borderRadius} ` : ''
235
+ return css
236
+ },
218
237
  darkProps: ({ dark }: Dark) => dark ? 'dark' : '',
219
238
  numberSpacingProps: ({ numberSpacing }: NumberSpacing) => {
220
239
  let css = ''
@@ -369,6 +388,7 @@ export const globalProps = (props: GlobalProps, defaultProps: DefaultProps = {})
369
388
  }).filter((value) => value?.length > 0).join(" ")
370
389
  }
371
390
 
391
+
372
392
  export const deprecatedProps = (kit: string, props: string[] = []): void => {
373
393
  if (process.env.NODE_ENV === 'development') {
374
394
  /* eslint no-console: ["error", { allow: ["warn", "error"] }] */