playbook_ui 13.13.0 → 13.14.0.pre.alpha.PLAY1109bugdisplaypropblocksfontcolor1784

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/index.js +13 -1
  3. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +0 -1
  4. data/app/pb_kits/playbook/pb_contact/docs/_contact_default_swift.md +14 -0
  5. data/app/pb_kits/playbook/pb_contact/docs/_contact_props_swift.md +6 -0
  6. data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail_swift.md +14 -0
  7. data/app/pb_kits/playbook/pb_contact/docs/example.yml +6 -0
  8. data/app/pb_kits/playbook/pb_date/docs/_date_alignment_swift.md +11 -0
  9. data/app/pb_kits/playbook/pb_date/docs/_date_default_swift.md +16 -0
  10. data/app/pb_kits/playbook/pb_date/docs/_date_props_swift.md +8 -0
  11. data/app/pb_kits/playbook/pb_date/docs/_date_unstyled_swift.md +11 -0
  12. data/app/pb_kits/playbook/pb_date/docs/_date_variants_swift.md +14 -0
  13. data/app/pb_kits/playbook/pb_date/docs/example.yml +7 -0
  14. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +3 -0
  15. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +3 -0
  16. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +11 -10
  17. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_custom.html.erb +29 -0
  18. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_custom.jsx +34 -0
  19. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_custom.md +7 -0
  20. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_custom_override.html.erb +28 -0
  21. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_custom_override.jsx +34 -0
  22. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_custom_override.md +1 -0
  23. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_react.jsx +2 -2
  24. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +4 -0
  25. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +2 -0
  26. data/app/pb_kits/playbook/pb_date_picker/plugins/quickPick.tsx +69 -3
  27. data/app/pb_kits/playbook/pb_detail/_detail.scss +2 -2
  28. data/app/pb_kits/playbook/pb_detail/_detail.tsx +2 -2
  29. data/app/pb_kits/playbook/pb_detail/detail.rb +1 -1
  30. data/app/pb_kits/playbook/pb_detail/detail.test.jsx +2 -2
  31. data/app/pb_kits/playbook/pb_enhanced_element/element_observer.ts +1 -1
  32. data/app/pb_kits/playbook/pb_enhanced_element/index.ts +1 -1
  33. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default_swift.md +18 -0
  34. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis_swift.md +34 -0
  35. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_link_swift.md +18 -0
  36. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_modified_swift.md +13 -0
  37. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_props_swift.md +14 -0
  38. data/app/pb_kits/playbook/pb_home_address_street/docs/example.yml +6 -0
  39. data/app/pb_kits/playbook/pb_person/docs/_person_default_swift.md +8 -0
  40. data/app/pb_kits/playbook/pb_person/docs/_person_props_swift.md +5 -0
  41. data/app/pb_kits/playbook/pb_person/docs/example.yml +4 -0
  42. data/app/pb_kits/playbook/pb_star_rating/_star_rating.scss +105 -53
  43. data/app/pb_kits/playbook/pb_star_rating/_star_rating.tsx +184 -62
  44. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_background_options.html.erb +2 -0
  45. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_background_options.jsx +25 -0
  46. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_color_options.html.erb +3 -0
  47. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_color_options.jsx +31 -0
  48. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_default.html.erb +6 -8
  49. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_default.jsx +19 -6
  50. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_hide.html.erb +4 -1
  51. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_hide.jsx +30 -5
  52. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_number_config.html.erb +6 -0
  53. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_number_config.jsx +58 -0
  54. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_size_options.html.erb +16 -0
  55. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_size_options.jsx +60 -0
  56. data/app/pb_kits/playbook/pb_star_rating/docs/example.yml +12 -5
  57. data/app/pb_kits/playbook/pb_star_rating/docs/index.js +8 -0
  58. data/app/pb_kits/playbook/pb_star_rating/star_rating.html.erb +54 -26
  59. data/app/pb_kits/playbook/pb_star_rating/star_rating.rb +86 -6
  60. data/app/pb_kits/playbook/pb_star_rating/star_rating.test.js +34 -34
  61. data/app/pb_kits/playbook/pb_star_rating/stars/primary_star.svg +3 -0
  62. data/app/pb_kits/playbook/pb_star_rating/stars/star_outline.svg +3 -0
  63. data/app/pb_kits/playbook/pb_star_rating/stars/subtle_dark_star.svg +3 -0
  64. data/app/pb_kits/playbook/pb_star_rating/stars/subtle_star.svg +3 -0
  65. data/app/pb_kits/playbook/pb_star_rating/stars/yellow_star.svg +3 -0
  66. data/app/pb_kits/playbook/pb_user/docs/_user_horizontal_swift.md +37 -0
  67. data/app/pb_kits/playbook/pb_user/docs/_user_props_table.md +10 -0
  68. data/app/pb_kits/playbook/pb_user/docs/_user_size_swift.md +35 -0
  69. data/app/pb_kits/playbook/pb_user/docs/_user_text_only_swift.md +27 -0
  70. data/app/pb_kits/playbook/pb_user/docs/_user_vertical_size_swift.md +35 -0
  71. data/app/pb_kits/playbook/pb_user/docs/example.yml +7 -0
  72. data/dist/menu.yml +240 -168
  73. data/dist/playbook-rails.js +6 -6
  74. data/lib/playbook/version.rb +2 -2
  75. metadata +46 -7
@@ -4,25 +4,38 @@ import StarRating from '../_star_rating'
4
4
 
5
5
  const StarRatingDefault = (props) => (
6
6
  <>
7
- <StarRating />
7
+ <StarRating
8
+ paddingBottom="xs"
9
+ {...props}
10
+ />
8
11
 
9
- <br />
10
12
 
11
13
  <StarRating
12
- rating={3}
14
+ paddingBottom="xs"
15
+ rating={0.9}
13
16
  {...props}
14
17
  />
15
18
 
16
- <br />
17
-
18
19
  <StarRating
20
+ paddingBottom="xs"
19
21
  rating={1.5}
20
22
  {...props}
21
23
  />
22
24
 
23
- <br />
25
+ <StarRating
26
+ paddingBottom="xs"
27
+ rating={3}
28
+ {...props}
29
+ />
30
+
31
+ <StarRating
32
+ paddingBottom="xs"
33
+ rating={4.2}
34
+ {...props}
35
+ />
24
36
 
25
37
  <StarRating
38
+ paddingBottom="xs"
26
39
  rating={5}
27
40
  {...props}
28
41
  />
@@ -1 +1,4 @@
1
- <%= pb_rails("star_rating", props: { rating: 3.5, hide_rating: true }) %>
1
+ <%= pb_rails("star_rating", props: { rating: 3, padding_bottom: "xs" }) %>
2
+ <%= pb_rails("star_rating", props: { rating: 2.8, layout_option: "number", padding_bottom: "xs" }) %>
3
+ <%= pb_rails("star_rating", props: { rating: 3, layout_option: "number", padding_bottom: "xs" }) %>
4
+ <%= pb_rails("star_rating", props: { rating: 1, layout_option: "onestar", padding_bottom: "xs" }) %>
@@ -3,13 +3,38 @@ import React from 'react'
3
3
  import StarRating from '../_star_rating'
4
4
 
5
5
  const StarRatingHide = (props) => (
6
+ <>
6
7
 
7
- <StarRating
8
- hideRating
9
- rating={3.5}
10
- {...props}
11
- />
8
+ <StarRating
9
+ paddingBottom="xs"
10
+ rating={3}
11
+ {...props}
12
+ />
12
13
 
14
+
15
+ <StarRating
16
+ layoutOption={"number"}
17
+ paddingBottom="xs"
18
+ rating={2.8}
19
+ {...props}
20
+ />
21
+
22
+
23
+ <StarRating
24
+ layoutOption={"number"}
25
+ paddingBottom="xs"
26
+ rating={3}
27
+ {...props}
28
+ />
29
+
30
+ <StarRating
31
+ layoutOption={"onestar"}
32
+ paddingBottom="xs"
33
+ rating={3}
34
+ {...props}
35
+ />
36
+
37
+ </>
13
38
  )
14
39
 
15
40
  export default StarRatingHide
@@ -0,0 +1,6 @@
1
+ <%= pb_rails("star_rating", props: { rating: 3, denominator: 3, padding_bottom: "xs" }) %>
2
+ <%= pb_rails("star_rating", props: { rating: 3, denominator: 4, padding_bottom: "xs" }) %>
3
+ <%= pb_rails("star_rating", props: { rating: 3, padding_bottom: "xs" }) %>
4
+ <%= pb_rails("star_rating", props: { rating: 3, denominator: 6, padding_bottom: "xs" }) %>
5
+ <%= pb_rails("star_rating", props: { rating: 3, denominator: 7, padding_bottom: "xs" }) %>
6
+ <%= pb_rails("star_rating", props: { rating: 3, denominator: 8, padding_bottom: "xs" }) %>
@@ -0,0 +1,58 @@
1
+ import React from 'react'
2
+
3
+ import StarRating from '../_star_rating'
4
+
5
+ const StarRatingNumberConfig = (props) => (
6
+ <>
7
+
8
+ <StarRating
9
+ denominator={3}
10
+ paddingBottom="xs"
11
+ rating={3}
12
+ {...props}
13
+ />
14
+
15
+
16
+ <StarRating
17
+ denominator={4}
18
+ paddingBottom="xs"
19
+ rating={3}
20
+ {...props}
21
+ />
22
+
23
+
24
+ <StarRating
25
+ denominator={5}
26
+ paddingBottom="xs"
27
+ rating={3}
28
+ {...props}
29
+ />
30
+
31
+
32
+ <StarRating
33
+ denominator={6}
34
+ paddingBottom="xs"
35
+ rating={3}
36
+ {...props}
37
+ />
38
+
39
+
40
+ <StarRating
41
+ denominator={7}
42
+ paddingBottom="xs"
43
+ rating={3}
44
+ {...props}
45
+ />
46
+
47
+
48
+ <StarRating
49
+ denominator={8}
50
+ paddingBottom="xs"
51
+ rating={3}
52
+ {...props}
53
+ />
54
+
55
+ </>
56
+ )
57
+
58
+ export default StarRatingNumberConfig
@@ -0,0 +1,16 @@
1
+ <%= pb_rails("star_rating", props: { rating: 3, size: "xs", padding_bottom: "xs" }) %>
2
+
3
+
4
+ <%= pb_rails("star_rating", props: { rating: 3, size: "sm", padding_bottom: "xs" }) %>
5
+
6
+
7
+ <%= pb_rails("star_rating", props: { rating: 3, size: "md", padding_bottom: "xs" }) %>
8
+
9
+
10
+ <%= pb_rails("star_rating", props: { rating: 3, size: "lg", padding_bottom: "xs" }) %>
11
+
12
+
13
+ <%= pb_rails("star_rating", props: { rating: 3, size: "lg", layout_option: "number", padding_bottom: "xs" }) %>
14
+
15
+
16
+ <%= pb_rails("star_rating", props: { rating: 3, size: "lg", layout_option: "onestar", padding_bottom: "xs" }) %>
@@ -0,0 +1,60 @@
1
+ import React from 'react'
2
+
3
+ import StarRating from '../_star_rating'
4
+
5
+ const StarRatingSizeOptions = (props) => (
6
+ <>
7
+
8
+ <StarRating
9
+ paddingBottom="xs"
10
+ rating={3}
11
+ size="xs"
12
+ {...props}
13
+ />
14
+
15
+
16
+ <StarRating
17
+ paddingBottom="xs"
18
+ rating={3}
19
+ size="sm"
20
+ {...props}
21
+ />
22
+
23
+
24
+ <StarRating
25
+ paddingBottom="xs"
26
+ rating={3}
27
+ size="md"
28
+ {...props}
29
+ />
30
+
31
+
32
+ <StarRating
33
+ paddingBottom="xs"
34
+ rating={3}
35
+ size="lg"
36
+ {...props}
37
+ />
38
+
39
+
40
+ <StarRating
41
+ layoutOption="number"
42
+ paddingBottom="xs"
43
+ rating={3}
44
+ size="lg"
45
+ {...props}
46
+ />
47
+
48
+
49
+ <StarRating
50
+ layoutOption="onestar"
51
+ paddingBottom="xs"
52
+ rating={3}
53
+ size="lg"
54
+ {...props}
55
+ />
56
+
57
+ </>
58
+ )
59
+
60
+ export default StarRatingSizeOptions
@@ -1,9 +1,16 @@
1
1
  examples:
2
-
3
2
  rails:
4
- - star_rating_default: Default
5
- - star_rating_hide: Hide Rating Value
3
+ - star_rating_default: Default
4
+ - star_rating_color_options: Color Options
5
+ - star_rating_background_options: Background Options
6
+ - star_rating_hide: Layout Options
7
+ - star_rating_number_config: Number Config
8
+ - star_rating_size_options: Size Options
6
9
 
7
10
  react:
8
- - star_rating_default: Default
9
- - star_rating_hide: Hide Rating Value
11
+ - star_rating_default: Default
12
+ - star_rating_color_options: Color Options
13
+ - star_rating_background_options: Background Options
14
+ - star_rating_hide: Layout Options
15
+ - star_rating_number_config: Number Config
16
+ - star_rating_size_options: Size Options
@@ -1,3 +1,11 @@
1
1
  export { default as StarRatingDefault } from './_star_rating_default.jsx'
2
2
 
3
+ export { default as StarRatingColorOptions } from './_star_rating_color_options.jsx'
4
+
5
+ export { default as StarRatingBackgroundOptions } from './_star_rating_background_options.jsx'
6
+
3
7
  export { default as StarRatingHide } from './_star_rating_hide.jsx'
8
+
9
+ export { default as StarRatingNumberConfig } from './_star_rating_number_config.jsx'
10
+
11
+ export { default as StarRatingSizeOptions } from './_star_rating_size_options.jsx'
@@ -1,31 +1,59 @@
1
1
  <%= content_tag(:div,
2
- id: object.id,
3
- data: object.data,
4
- class: object.classname) do %>
5
- <%# Rating value %>
6
- <% if !object.hide_rating %>
7
- <%= content_tag(:div, object.rating, class: "pb_star_rating_number") %>
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname) do %>
5
+ <% if layout_option == "number" %>
6
+ <% case object.size %>
7
+ <% when "xs", "sm" %>
8
+ <%= pb_rails("caption", props: { text: object.one_decimal_rating,
9
+ size: "xs",
10
+ classname: "pb_star_rating_number_#{size}",
11
+ dark: dark,
12
+ padding_right: "xxs" }) %>
13
+ <% when "md" %>
14
+ <%= pb_rails("body", props: { text: object.one_decimal_rating,
15
+ dark: dark,
16
+ color: "light",
17
+ classname: "pb_star_rating_number_#{size}",
18
+ padding_right: "xxs" }) %>
19
+ <% when "lg" %>
20
+ <%= pb_rails("title", props: { text: object.one_decimal_rating,
21
+ size: 2,
22
+ dark: dark,
23
+ color: "light",
24
+ bold: false,
25
+ classname: "pb_star_rating_number_#{size}",
26
+ padding_right: "sm" }) %>
8
27
  <% end %>
9
-
10
- <%= content_tag(:div, class: "pb_star_rating_wrapper") do %>
11
- <%# Gold stars generated by rating value %>
12
- <%= content_tag(:div, class: "pb_star_rating_highlight") do %>
13
- <% object.star_count.times do %>
14
- <%= pb_rails("icon", props: { icon: "star" }) %>
15
- <% end %>
16
- <% unless object.star_full %>
17
- <%= pb_rails("icon", props: { icon: "star-half" }) %>
18
- <% end %>
19
- <% end %>
20
-
21
- <%# Grey background stars as base %>
22
- <%= content_tag(:div, class: "pb_star_rating_base") do %>
23
- <%= pb_rails("icon", props: { icon: "star" }) %>
24
- <%= pb_rails("icon", props: { icon: "star" }) %>
25
- <%= pb_rails("icon", props: { icon: "star" }) %>
26
- <%= pb_rails("icon", props: { icon: "star" }) %>
27
- <%= pb_rails("icon", props: { icon: "star" }) %>
28
+ <% end %>
29
+ <%= pb_rails("flex", props: { }) do %>
30
+ <% object.star_count.times do %>
31
+ <%= pb_rails("icon", props: { classname: "#{star_color} pb_star_#{size}" , custom_icon: Playbook::Engine.root.join(star_svg_path) } ) %>
32
+ <% end %>
33
+ <% object.empty_stars.times do %>
34
+ <%= pb_rails("icon", props: { classname: "#{background_star_color} pb_star_#{size}", custom_icon: Playbook::Engine.root.join(background_star_path) } ) %>
35
+ <% end %>
36
+ <% end %>
37
+ <% if layout_option == "onestar" %>
38
+ <%= content_tag(:div, class: "pb_star_rating_number_#{size}") do %>
39
+ <% case object.size %>
40
+ <% when "xs", "sm" %>
41
+ <%= pb_rails("caption", props: { text: "#{object.rating} of #{object.denominator}",
42
+ size: "xs",
43
+ dark: dark,
44
+ padding_left: "xxs" }) %>
45
+ <% when "md" %>
46
+ <%= pb_rails("body", props: { text: "#{object.rating} of #{object.denominator}",
47
+ dark: dark,
48
+ color: "light",
49
+ padding_left: "xxs" }) %>
50
+ <% when "lg" %>
51
+ <%= pb_rails("title", props: { text: "#{object.rating} of #{object.denominator}",
52
+ size: 2,
53
+ color: "light",
54
+ bold: false,
55
+ dark: dark }) %>
28
56
  <% end %>
29
-
30
57
  <% end %>
58
+ <% end %>
31
59
  <% end %>
@@ -3,18 +3,98 @@
3
3
  module Playbook
4
4
  module PbStarRating
5
5
  class StarRating < Playbook::KitBase
6
- prop :hide_rating, type: Playbook::Props::Boolean,
7
- default: false
8
-
9
6
  prop :rating, type: Playbook::Props::Numeric,
10
7
  default: 0
11
8
 
9
+ prop :denominator, type: Playbook::Props::Numeric,
10
+ default: 5
11
+
12
+ prop :layout_option, type: Playbook::Props::Enum,
13
+ values: %w[default onestar number],
14
+ default: "default"
15
+
16
+ prop :color_option, type: Playbook::Props::Enum,
17
+ values: %w[yellow primary subtle],
18
+ default: "yellow"
19
+
20
+ prop :size, type: Playbook::Props::Enum,
21
+ values: %w[xs sm md lg],
22
+ default: "sm"
23
+
24
+ prop :background_type, type: Playbook::Props::Enum,
25
+ values: %w[fill outline],
26
+ default: "fill"
27
+
28
+ def one_decimal_rating
29
+ rating.to_f.round(1)
30
+ end
31
+
12
32
  def star_count
13
- rating.floor
33
+ rating.round > denominator_style ? denominator_style : rating.round
34
+ end
35
+
36
+ def denominator_style
37
+ layout_option == "onestar" ? 1 : denominator
38
+ end
39
+
40
+ def empty_stars
41
+ (denominator_style - star_count).negative? ? 0 : denominator_style - star_count
42
+ end
43
+
44
+ def star_color
45
+ case color_option
46
+ when "yellow"
47
+ "yellow_star"
48
+ when "primary"
49
+ "primary_star"
50
+ when "subtle"
51
+ dark ? "suble_star_dark" : "suble_star_light"
52
+ end
53
+ end
54
+
55
+ def background_star_color
56
+ if background_type === "outline"
57
+ dark ? "outline_empty_star_dark" : "outline_empty_star_light"
58
+ else
59
+ dark ? "empty_star_dark" : "empty_star_light"
60
+ end
61
+ end
62
+
63
+ def svg_size
64
+ sizes = { "xs": "pb_star_xs",
65
+ "sm": "pb_star_sm",
66
+ "md": "pb_star_md",
67
+ "lg": "pb_star_lg" }
68
+ sizes[size.to_sym]
69
+ end
70
+
71
+ def svg_class
72
+ "pb_star_#{size}"
73
+ end
74
+
75
+ def background_star_path
76
+ if background_type === "outline"
77
+ "app/pb_kits/playbook/pb_star_rating/stars/star_outline.svg"
78
+ else
79
+ "app/pb_kits/playbook/pb_star_rating/stars/yellow_star.svg"
80
+ end
14
81
  end
15
82
 
16
- def star_full
17
- (rating.to_f % 1).zero?
83
+ def star_svg_path
84
+ case color_option
85
+ when "yellow"
86
+ "app/pb_kits/playbook/pb_star_rating/stars/yellow_star.svg"
87
+ when "primary"
88
+ "app/pb_kits/playbook/pb_star_rating/stars/primary_star.svg"
89
+ when "subtle"
90
+ if dark == true
91
+ "app/pb_kits/playbook/pb_star_rating/stars/subtle_dark_star.svg"
92
+ else
93
+ "app/pb_kits/playbook/pb_star_rating/stars/subtle_star.svg"
94
+ end
95
+ else
96
+ "app/pb_kits/playbook/pb_star_rating/stars/primary_star.svg"
97
+ end
18
98
  end
19
99
 
20
100
  def classname
@@ -1,24 +1,22 @@
1
- import React from "react";
2
- import { render, screen } from "../utilities/test-utils";
1
+ import React from "react"
2
+ import { render, screen } from "../utilities/test-utils"
3
3
 
4
- import StarRating from "./_star_rating";
4
+ import StarRating from "./_star_rating"
5
5
 
6
- const testId = "star-rating-kit";
6
+ const testId = "star-rating-kit"
7
7
 
8
8
  describe("Star Rating Kit", () => {
9
9
  test("Expects to have correct classname", () => {
10
10
  render(
11
11
  <StarRating
12
12
  data={{ testid: testId }}
13
- rating={2}
14
13
  />
15
- );
16
-
14
+ )
17
15
 
18
- const kit = screen.getByTestId(testId);
19
- expect(kit).toHaveClass("pb_star_rating_kit");
16
+ const kit = screen.getByTestId(testId)
17
+ expect(kit.className).toBe("pb_star_rating_kit")
20
18
 
21
- });
19
+ })
22
20
 
23
21
  test('should render aria-label', () => {
24
22
  render(
@@ -27,45 +25,47 @@ describe("Star Rating Kit", () => {
27
25
  data={{ testid: testId }}
28
26
  rating={2}
29
27
  />
30
- );
28
+ )
31
29
 
32
30
  const kit = screen.getByTestId(testId)
33
31
  expect(kit).toHaveAttribute('aria-label', testId)
34
- });
32
+ })
35
33
 
36
- test("Displays two highlighted stars", () => {
34
+ test("Displays correct denominator", () => {
37
35
  render(
38
36
  <StarRating
39
37
  data={{ testid: testId }}
38
+ denominator={4}
40
39
  rating={2}
40
+ size="xs"
41
41
  />
42
- );
43
-
42
+ )
44
43
 
45
- const kit = screen.getByTestId(testId);
46
- const highlight = kit.querySelector(".pb_star_rating_highlight");
47
- const stars = highlight.querySelectorAll(".far.fa-star");
48
- const count = stars.length;
44
+ const kit = screen.getByTestId(testId)
45
+ const highlight = kit.querySelector(".star_flex_area")
46
+ const stars = highlight.querySelectorAll(".pb_star_xs")
47
+ const count = stars.length
49
48
 
50
- expect(count).toBe(2);
51
- });
49
+ expect(count).toBe(4)
50
+ })
52
51
 
53
- test("Displays three highlighted stars and a half star", () => {
52
+ test("Uses correct size", () => {
54
53
  render(
55
54
  <StarRating
56
55
  data={{ testid: testId }}
57
- rating={3.5}
56
+ layoutOption="number"
57
+ rating={2}
58
+ size="lg"
58
59
  />
59
- );
60
+ )
60
61
 
61
- const kit = screen.getByTestId(testId);
62
- const highlight = kit.querySelector(".pb_star_rating_highlight");
63
- const stars = highlight.querySelectorAll(".far.fa-star");
64
- const halfStars = highlight.querySelectorAll(".far.fa-star-half");
65
- const starCount = stars.length;
66
- const halfStarCount = halfStars.length;
62
+ const kit = screen.getByTestId(testId)
63
+ const highlight = kit.querySelector(".star_flex_area")
64
+ const title = kit.querySelector(".pb_star_rating_number_lg")
65
+ const stars = highlight.querySelectorAll(".pb_star_lg")
66
+ const count = stars.length
67
67
 
68
- expect(starCount).toBe(3);
69
- expect(halfStarCount).toBe(1);
70
- });
71
- });
68
+ expect(title.className).toBe("pb_title_kit_size_2_light_thin pr_sm pb_star_rating_number_lg")
69
+ expect(count).toBe(5)
70
+ })
71
+ })
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fillRule="evenodd" clipRule="evenodd" d="M9.86015 0.4371C9.73527 0.187329 9.4855 0 9.17328 0C8.89229 0 8.64252 0.187329 8.51763 0.4371L6.36335 4.83932L1.58647 5.55742C1.30547 5.58864 1.08692 5.80719 0.99326 6.05696C0.899595 6.33795 0.962038 6.61895 1.18059 6.8375L4.64617 10.2719L3.80319 15.1112C3.77197 15.3922 3.89685 15.7044 4.11541 15.8605C4.36518 16.0166 4.64617 16.0478 4.89594 15.9229L9.17328 13.6126L13.4506 15.9229C13.7004 16.0478 14.0126 16.0166 14.2624 15.8605C14.4809 15.7044 14.6058 15.3922 14.5434 15.1112L13.7316 10.2719L17.1972 6.8375C17.4157 6.61895 17.4782 6.33795 17.3845 6.05696C17.2909 5.80719 17.0723 5.58864 16.7913 5.55742L12.0144 4.83932L9.86015 0.4371Z" fill="#0056CF"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M5.91323 5.33377L6.17269 5.29477L6.28801 5.0591L8.44116 0.659187C8.49971 0.543364 8.59517 0.5 8.64884 0.5C8.74499 0.5 8.83506 0.555009 8.88775 0.659235L11.0409 5.0591L11.1562 5.29477L11.4157 5.33377L16.1925 6.05186L16.2021 6.0533L16.2117 6.05436C16.2359 6.05706 16.2671 6.06847 16.3024 6.09973C16.3374 6.13062 16.3686 6.17476 16.3886 6.22412C16.4186 6.32162 16.401 6.40181 16.3198 6.48332C16.3196 6.48353 16.3194 6.48374 16.3192 6.48395L12.8552 9.91671L12.6712 10.0991L12.7141 10.3546L13.5258 15.1939L13.528 15.2068L13.5308 15.2196C13.5488 15.3004 13.5074 15.402 13.4567 15.4462C13.3391 15.5132 13.2227 15.5096 13.1546 15.4781L8.88646 13.1726L8.64884 13.0443L8.41121 13.1726L4.14274 15.4782C4.07877 15.5083 3.99031 15.5147 3.87267 15.4466C3.82302 15.4033 3.76655 15.2914 3.77463 15.1781L4.61431 10.3577L4.65911 10.1005L4.47368 9.91671L1.0097 6.48394C1.00947 6.48372 1.00925 6.4835 1.00903 6.48327C0.927878 6.40178 0.91031 6.3216 0.94026 6.22412C0.960274 6.17476 0.99154 6.13062 1.02646 6.09973C1.0618 6.06847 1.09296 6.05706 1.11724 6.05436L1.12682 6.0533L1.13635 6.05186L5.91323 5.33377Z" stroke="#C1CDD6"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path class="" fillRule="evenodd" clipRule="evenodd" d="M9.86015 0.4371C9.73527 0.187329 9.4855 0 9.17328 0C8.89229 0 8.64252 0.187329 8.51763 0.4371L6.36335 4.83932L1.58647 5.55742C1.30547 5.58864 1.08692 5.80719 0.99326 6.05696C0.899595 6.33795 0.962038 6.61895 1.18059 6.8375L4.64617 10.2719L3.80319 15.1112C3.77197 15.3922 3.89685 15.7044 4.11541 15.8605C4.36518 16.0166 4.64617 16.0478 4.89594 15.9229L9.17328 13.6126L13.4506 15.9229C13.7004 16.0478 14.0126 16.0166 14.2624 15.8605C14.4809 15.7044 14.6058 15.3922 14.5434 15.1112L13.7316 10.2719L17.1972 6.8375C17.4157 6.61895 17.4782 6.33795 17.3845 6.05696C17.2909 5.80719 17.0723 5.58864 16.7913 5.55742L12.0144 4.83932L9.86015 0.4371Z" fill="#F9BB00"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fillRule="evenodd" clipRule="evenodd" d="M9.86015 0.4371C9.73527 0.187329 9.4855 0 9.17328 0C8.89229 0 8.64252 0.187329 8.51763 0.4371L6.36335 4.83932L1.58647 5.55742C1.30547 5.58864 1.08692 5.80719 0.99326 6.05696C0.899595 6.33795 0.962038 6.61895 1.18059 6.8375L4.64617 10.2719L3.80319 15.1112C3.77197 15.3922 3.89685 15.7044 4.11541 15.8605C4.36518 16.0166 4.64617 16.0478 4.89594 15.9229L9.17328 13.6126L13.4506 15.9229C13.7004 16.0478 14.0126 16.0166 14.2624 15.8605C14.4809 15.7044 14.6058 15.3922 14.5434 15.1112L13.7316 10.2719L17.1972 6.8375C17.4157 6.61895 17.4782 6.33795 17.3845 6.05696C17.2909 5.80719 17.0723 5.58864 16.7913 5.55742L12.0144 4.83932L9.86015 0.4371Z" fill="#F9BB00"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fillRule="evenodd" clipRule="evenodd" d="M9.86015 0.4371C9.73527 0.187329 9.4855 0 9.17328 0C8.89229 0 8.64252 0.187329 8.51763 0.4371L6.36335 4.83932L1.58647 5.55742C1.30547 5.58864 1.08692 5.80719 0.99326 6.05696C0.899595 6.33795 0.962038 6.61895 1.18059 6.8375L4.64617 10.2719L3.80319 15.1112C3.77197 15.3922 3.89685 15.7044 4.11541 15.8605C4.36518 16.0166 4.64617 16.0478 4.89594 15.9229L9.17328 13.6126L13.4506 15.9229C13.7004 16.0478 14.0126 16.0166 14.2624 15.8605C14.4809 15.7044 14.6058 15.3922 14.5434 15.1112L13.7316 10.2719L17.1972 6.8375C17.4157 6.61895 17.4782 6.33795 17.3845 6.05696C17.2909 5.80719 17.0723 5.58864 16.7913 5.55742L12.0144 4.83932L9.86015 0.4371Z" />
3
+ </svg>
@@ -0,0 +1,37 @@
1
+ ![user-horizontal](https://github.com/powerhome/playbook/assets/92755007/63680051-6a88-4ae7-bffd-74d8e9b3a805)
2
+
3
+ ```swift
4
+
5
+ let img = Image("andrew", bundle: .module)
6
+ let name = "Andrew K"
7
+ let title = "Rebels Developer"
8
+
9
+ VStack(alignment: .leading, spacing: Spacing.small) {
10
+ PBUser(
11
+ name: name,
12
+ image: img,
13
+ territory: "PHL",
14
+ title: title
15
+ )
16
+
17
+ PBUser(
18
+ name: name,
19
+ territory: "PHL",
20
+ title: title
21
+ )
22
+
23
+ PBUser(
24
+ name: name,
25
+ image: img,
26
+ size: .small,
27
+ title: title
28
+ )
29
+
30
+ PBUser(
31
+ name: name,
32
+ image: img,
33
+ size: .small
34
+ )
35
+ }
36
+
37
+ ```
@@ -0,0 +1,10 @@
1
+ ### Props
2
+ | Name | Type | Description | Default | Values |
3
+ | --- | ----------- | --------- | --------- | --------- |
4
+ | **name** | `String` | Sets the User's name | | |
5
+ | **displayAvatar** | `Bool` | Displays the User's avatar | `true` | `true` `false` |
6
+ | **image** | `Image` | Sets image for the avatar | | |
7
+ | **orientation** | `Orientation` | Changes the orientation of the User | `.horizontal` | `.horizontal` `.verticle` |
8
+ | **size** | `UserAvatarSize` | Changes the size of the User | `.medium` | `.small` `.medium` `.large` |
9
+ | **territory** | `String` | Adds the User's territory | | |
10
+ | **title** | `String` | Adds a title | | |