playbook_ui 12.30.1 → 12.31.0.pre.alpha.datepickerdisableddatefix931

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +2 -0
  3. data/app/pb_kits/playbook/pb_badge/_badge.scss +5 -0
  4. data/app/pb_kits/playbook/pb_badge/_badge.tsx +1 -1
  5. data/app/pb_kits/playbook/pb_badge/badge.rb +1 -1
  6. data/app/pb_kits/playbook/pb_badge/badge.test.js +13 -0
  7. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.html.erb +12 -0
  8. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.jsx +25 -0
  9. data/app/pb_kits/playbook/pb_badge/docs/example.yml +2 -1
  10. data/app/pb_kits/playbook/pb_badge/docs/index.js +1 -0
  11. data/app/pb_kits/playbook/pb_button/docs/_button_hover.jsx +40 -0
  12. data/app/pb_kits/playbook/pb_button/docs/example.yml +1 -0
  13. data/app/pb_kits/playbook/pb_button/docs/index.js +1 -0
  14. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +37 -31
  15. data/app/pb_kits/playbook/pb_message/docs/_message_default.jsx +33 -45
  16. data/app/pb_kits/playbook/pb_message/docs/_message_hover.jsx +41 -0
  17. data/app/pb_kits/playbook/pb_message/docs/example.yml +1 -0
  18. data/app/pb_kits/playbook/pb_message/docs/index.js +2 -0
  19. data/app/pb_kits/playbook/pb_multi_level_select/_helper_functions.tsx +4 -1
  20. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +8 -3
  21. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb +76 -0
  22. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.jsx +88 -0
  23. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.md +5 -0
  24. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -0
  25. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +2 -1
  26. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +3 -0
  27. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +7 -0
  28. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +12 -7
  29. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.html.erb +14 -0
  30. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +30 -0
  31. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.md +3 -0
  32. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.html.erb +1 -0
  33. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.jsx +13 -0
  34. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.html.erb +1 -1
  35. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +1 -1
  36. data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +6 -3
  37. data/app/pb_kits/playbook/pb_section_separator/docs/index.js +2 -0
  38. data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +4 -2
  39. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +4 -1
  40. data/app/pb_kits/playbook/pb_title/_title.scss +18 -0
  41. data/app/pb_kits/playbook/pb_title/_title.tsx +20 -2
  42. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.html.erb +1 -0
  43. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.jsx +16 -0
  44. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.md +1 -0
  45. data/app/pb_kits/playbook/pb_title/docs/example.yml +2 -0
  46. data/app/pb_kits/playbook/pb_title/docs/index.js +1 -0
  47. data/app/pb_kits/playbook/pb_title/title.rb +21 -4
  48. data/app/pb_kits/playbook/pb_title/title.test.js +42 -29
  49. data/app/pb_kits/playbook/tokens/_scale.scss +9 -0
  50. data/app/pb_kits/playbook/tokens/exports/_scale.scss +13 -0
  51. data/app/pb_kits/playbook/utilities/_border_radius.scss +31 -0
  52. data/app/pb_kits/playbook/utilities/_colors.scss +3 -0
  53. data/app/pb_kits/playbook/utilities/_hover.scss +47 -0
  54. data/app/pb_kits/playbook/utilities/globalProps.ts +22 -2
  55. data/dist/playbook-rails.js +6 -6
  56. data/lib/playbook/version.rb +2 -2
  57. metadata +26 -7
@@ -0,0 +1,88 @@
1
+ import React from "react";
2
+ import MultiLevelSelect from "../_multi_level_select";
3
+
4
+ const treeData = [
5
+ {
6
+ label: "Power Home Remodeling",
7
+ value: "Power Home Remodeling",
8
+ id: "powerhome1",
9
+ expanded: true,
10
+ children: [
11
+ {
12
+ label: "People",
13
+ value: "People",
14
+ id: "people1",
15
+ children: [
16
+ {
17
+ label: "Talent Acquisition",
18
+ value: "Talent Acquisition",
19
+ id: "talent1",
20
+ },
21
+ {
22
+ label: "Business Affairs",
23
+ value: "Business Affairs",
24
+ id: "business1",
25
+ children: [
26
+ {
27
+ label: "Initiatives",
28
+ value: "Initiatives",
29
+ id: "initiative1",
30
+ },
31
+ {
32
+ label: "Learning & Development",
33
+ value: "Learning & Development",
34
+ id: "development1",
35
+ },
36
+ ],
37
+ },
38
+ {
39
+ label: "People Experience",
40
+ value: "People Experience",
41
+ id: "experience1",
42
+ },
43
+ ],
44
+ },
45
+ {
46
+ label: "Contact Center",
47
+ value: "Contact Center",
48
+ id: "contact1",
49
+ children: [
50
+ {
51
+ label: "Appointment Management",
52
+ value: "Appointment Management",
53
+ id: "appointment1",
54
+ },
55
+ {
56
+ label: "Customer Service",
57
+ value: "Customer Service",
58
+ id: "customer1",
59
+ },
60
+ {
61
+ label: "Energy",
62
+ value: "Energy",
63
+ id: "energy1",
64
+ },
65
+ ],
66
+ },
67
+ ],
68
+ },
69
+ ];
70
+
71
+ const MultiLevelSelectSelectedIds = (props) => {
72
+ return (
73
+ <div>
74
+ <MultiLevelSelect
75
+ id="multi-level-select-selected_ids"
76
+ onSelect={(selectedNodes) =>
77
+ console.log("Selected Items with Return All Selected Data", selectedNodes)
78
+ }
79
+ returnAllSelected
80
+ selectedIds={["energy1","talent1"]}
81
+ treeData={treeData}
82
+ {...props}
83
+ />
84
+ </div>
85
+ );
86
+ };
87
+
88
+ export default MultiLevelSelectSelectedIds;
@@ -0,0 +1,5 @@
1
+ `selected_ids` (Rails) / `selectedIds` (React) is an optional prop that accepts an array of ids that, if present, will mark the corresponding nodes on the treeData as checked on page load.
2
+
3
+ Items that include `checked:true` on the treeData itself will also be selected on page load, even without being passed to `selectedIds`.
4
+
5
+ When an item is marked as checked on page load by any means, the dropdown will expand to show the checked items for easier accessibility.
@@ -2,9 +2,11 @@ examples:
2
2
  rails:
3
3
  - multi_level_select_default: Default
4
4
  - multi_level_select_return_all_selected: Return All Selected
5
+ - multi_level_select_selected_ids: Selected Ids
5
6
  - multi_level_select_with_form: With Form
6
7
 
7
8
  react:
8
9
  - multi_level_select_default: Default
9
10
  - multi_level_select_return_all_selected: Return All Selected
11
+ - multi_level_select_selected_ids: Selected Ids
10
12
 
@@ -1,2 +1,3 @@
1
1
  export { default as MultiLevelSelectDefault } from './_multi_level_select_default.jsx'
2
- export { default as MultiLevelSelectReturnAllSelected } from './_multi_level_select_return_all_selected.jsx'
2
+ export { default as MultiLevelSelectReturnAllSelected } from './_multi_level_select_return_all_selected.jsx'
3
+ export { default as MultiLevelSelectSelectedIds } from "./_multi_level_select_selected_ids.jsx"
@@ -9,6 +9,8 @@ module Playbook
9
9
  default: []
10
10
  prop :return_all_selected, type: Playbook::Props::Boolean,
11
11
  default: false
12
+ prop :selected_ids, type: Playbook::Props::Array,
13
+ default: []
12
14
  prop :input_display, type: Playbook::Props::Enum,
13
15
  values: %w[pills none],
14
16
  default: "pills"
@@ -24,6 +26,7 @@ module Playbook
24
26
  name: name,
25
27
  treeData: tree_data,
26
28
  returnAllSelected: return_all_selected,
29
+ selectedIds: selected_ids,
27
30
  }
28
31
  end
29
32
  end
@@ -45,6 +45,13 @@ $section_colors_dark: (
45
45
  }
46
46
  }
47
47
 
48
+ &[class*=_dashed] {
49
+ &::before, &::after {
50
+ border: 1px dashed $border_light;
51
+ background: none;
52
+ }
53
+ }
54
+
48
55
  // Dark =========================
49
56
 
50
57
  &.dark {
@@ -8,10 +8,12 @@ import Caption from '../pb_caption/_caption'
8
8
 
9
9
  type SectionSeparatorProps = {
10
10
  aria?: { [key: string]: string; },
11
+ children?: React.ReactChild[] | React.ReactChild,
11
12
  className?: string,
12
13
  dark?: boolean,
13
14
  data?: { [key: string]: string; },
14
15
  id?: string,
16
+ lineStyle?: "solid" | "dashed",
15
17
  orientation?: "horizontal" | "vertical",
16
18
  text?: string,
17
19
  variant?: "card" | "background",
@@ -20,9 +22,11 @@ type SectionSeparatorProps = {
20
22
  const SectionSeparator = (props: SectionSeparatorProps) => {
21
23
  const {
22
24
  aria = {},
25
+ children,
23
26
  className,
24
27
  data = {},
25
28
  id,
29
+ lineStyle = 'solid',
26
30
  orientation = 'horizontal',
27
31
  text,
28
32
  dark = false,
@@ -30,21 +34,22 @@ const SectionSeparator = (props: SectionSeparatorProps) => {
30
34
  } = props
31
35
  const ariaProps = buildAriaProps(aria)
32
36
  const dataProps = buildDataProps(data)
33
- const classes = classnames(buildCss('pb_section_separator_kit', variant, orientation), globalProps(props), className)
37
+ const classes = classnames(buildCss('pb_section_separator_kit', variant, orientation, lineStyle === "dashed" ? lineStyle : ""), globalProps(props), className)
34
38
 
35
39
  return (
36
40
 
37
41
  <div
38
- {...ariaProps}
39
- {...dataProps}
40
- className={classes}
41
- id={id}
42
+ {...ariaProps}
43
+ {...dataProps}
44
+ className={classes}
45
+ id={id}
42
46
  >
43
47
  {
48
+ children && children ||
44
49
  text && (
45
50
  <span>
46
- <Caption text={text} dark={dark}/>
47
- </span>
51
+ <Caption text={text} dark={dark} />
52
+ </span>
48
53
  )
49
54
  }
50
55
  </div>
@@ -0,0 +1,14 @@
1
+ <%= pb_rails("section_separator", props: { line_style: "dashed" }) do %>
2
+ <%= pb_rails("card", props: {
3
+ border_radius: "rounded",
4
+ justify_content: "center",
5
+ padding: "none"
6
+ }) do %>
7
+ <%= pb_rails("caption", props: {
8
+ text: "TODAY",
9
+ size: "xs",
10
+ padding_left: "xs",
11
+ padding_right: "xs"
12
+ }) %>
13
+ <% end %>
14
+ <% end %>
@@ -0,0 +1,30 @@
1
+ import React from 'react'
2
+ import { SectionSeparator, Card, Caption } from '../../'
3
+
4
+ const children = (
5
+ <Card
6
+ borderRadius="rounded"
7
+ justifyContent="center"
8
+ padding="none"
9
+ >
10
+ <Caption
11
+ paddingLeft="xs"
12
+ paddingRight="xs"
13
+ size="xs"
14
+ text="TODAY"
15
+ />
16
+ </Card>
17
+ )
18
+
19
+ const SectionSeparatorChildren = (props) => {
20
+ return (
21
+ <SectionSeparator
22
+ {...props}
23
+ lineStyle='dashed'
24
+ >
25
+ {children}
26
+ </SectionSeparator>
27
+ )
28
+ }
29
+
30
+ export default SectionSeparatorChildren
@@ -0,0 +1,3 @@
1
+ Pass anything (including any of our kits) to the `children` prop to customize a separator's content.
2
+
3
+ **NOTE:** passing `children` overrides any content passed to `text`
@@ -0,0 +1 @@
1
+ <%= pb_rails("section_separator", props: { line_style: "dashed" }) %>
@@ -0,0 +1,13 @@
1
+ import React from 'react'
2
+ import { SectionSeparator } from '../../'
3
+
4
+ const SectionSeparatorDashed = (props) => {
5
+ return (
6
+ <SectionSeparator
7
+ {...props}
8
+ lineStyle='dashed'
9
+ />
10
+ )
11
+ }
12
+
13
+ export default SectionSeparatorDashed
@@ -1 +1 @@
1
- <%= pb_rails("section_separator", props: { text: "Title Separator" }) %>
1
+ <%= pb_rails("section_separator", props: { text: "Text Separator" }) %>
@@ -5,7 +5,7 @@ const SectionSeparatorText = (props) => {
5
5
  return (
6
6
  <SectionSeparator
7
7
  {...props}
8
- text="Title Separator"
8
+ text="Text Separator"
9
9
  />
10
10
  )
11
11
  }
@@ -1,12 +1,15 @@
1
1
  examples:
2
2
 
3
3
  rails:
4
- - section_separator_text: Text Separator
5
4
  - section_separator_line: Line Separator
5
+ - section_separator_dashed: Dashed Separator
6
+ - section_separator_text: Text Separator
6
7
  - section_separator_vertical: Vertical
7
-
8
+ - section_separator_children: Children
8
9
 
9
10
  react:
10
- - section_separator_text: Text Separator
11
11
  - section_separator_line: Line Separator
12
+ - section_separator_dashed: Dashed Separator
13
+ - section_separator_text: Text Separator
12
14
  - section_separator_vertical: Vertical
15
+ - section_separator_children: Children
@@ -1,3 +1,5 @@
1
1
  export { default as SectionSeparatorLine } from './_section_separator_line.jsx'
2
2
  export { default as SectionSeparatorText } from './_section_separator_text.jsx'
3
3
  export { default as SectionSeparatorVertical } from './_section_separator_vertical.jsx'
4
+ export { default as SectionSeparatorDashed } from './_section_separator_dashed.jsx'
5
+ export { default as SectionSeparatorChildren } from './_section_separator_children.jsx'
@@ -4,9 +4,11 @@
4
4
  data: object.data,
5
5
  class: object.classname) do %>
6
6
  <% if object.orientation === 'horizontal' %>
7
- <% if object.text %>
7
+ <% if content %>
8
+ <%= content %>
9
+ <% elsif object.text %>
8
10
  <span><%= pb_rails("caption", props: { text: object.text }) %></span>
9
- <%end%>
11
+ <% end %>
10
12
  <% end %>
11
13
  <% if object.orientation === 'vertical' %>
12
14
  <%= pb_rails("flex", props: { orientation: "column"}) do %>
@@ -12,9 +12,12 @@ module Playbook
12
12
  default: "horizontal"
13
13
  prop :dark, type: Playbook::Props::Boolean,
14
14
  default: false
15
+ prop :line_style, type: Playbook::Props::Enum,
16
+ values: %w[dashed solid],
17
+ default: "solid"
15
18
 
16
19
  def classname
17
- generate_classname("pb_section_separator_kit", variant, orientation)
20
+ generate_classname("pb_section_separator_kit", variant, orientation, line_style == "dashed" ? "dashed" : nil)
18
21
  end
19
22
 
20
23
  private
@@ -1,5 +1,6 @@
1
1
  @import "../tokens/titles";
2
2
  @import "../tokens/colors";
3
+ @import "../tokens/screen_sizes";
3
4
  @import './title_mixin';
4
5
 
5
6
  [class^=pb_title_kit]{
@@ -33,4 +34,21 @@
33
34
  &[class*=_thin] {
34
35
  @include pb_title_thin;
35
36
  }
37
+
38
+ @each $size, $size_value in $breakpoints_grid {
39
+ @each $title_size_value in [1, 2, 3, 4] {
40
+ $min_size: map-get($size_value, "min");
41
+ $max_size: map-get($size_value, "max");
42
+ &[class*=_#{$size}_#{$title_size_value}] {
43
+ @include break_on($min_size, $max_size) {
44
+ @if $title_size_value == 1 { @include pb_title_1; }
45
+ @else if $title_size_value == 2 { @include pb_title_2; }
46
+ @else if $title_size_value == 3 { @include pb_title_3; }
47
+ @else if $title_size_value == 4 { @include pb_title_4; }
48
+ @include title_colors;
49
+ @if $title_size_value != 4 { @include pb_title_bold; }
50
+ }
51
+ }
52
+ }
53
+ }
36
54
  }
@@ -3,6 +3,9 @@ import classnames from 'classnames'
3
3
  import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
4
4
  import { deprecatedProps, GlobalProps, globalProps } from '../utilities/globalProps'
5
5
 
6
+ type SizeType = 1 | 2 | 3 | 4 | "1" | "2" | "3" | "4"
7
+ type SizeResponsiveType = {[key: string]: SizeType}
8
+
6
9
  type TitleProps = {
7
10
  aria?: {[key: string]: string},
8
11
  bold?: boolean,
@@ -11,7 +14,7 @@ type TitleProps = {
11
14
  color?: "default" | "light" | "lighter" | "success" | "error" | "link",
12
15
  data?: {[key: string]: string},
13
16
  id?: string,
14
- size?: 1 | 2| 3| 4 | "1" | "2" | "3" | "4",
17
+ size?: SizeType | SizeResponsiveType,
15
18
  tag?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "div" | "span",
16
19
  text?: string,
17
20
  variant?: null | "link",
@@ -36,9 +39,24 @@ const Title = (props: TitleProps): React.ReactElement => {
36
39
  const ariaProps: {[key: string]: string | number} = buildAriaProps(aria)
37
40
  const dataProps: {[key: string]: string | number} = buildDataProps(data)
38
41
  const getBold = bold ? '' : 'thin'
42
+ const isSizeNumberOrString = typeof size === "number" || typeof size === "string"
43
+
44
+ const buildResponsiveSizeCss = () => {
45
+ let css = ''
46
+
47
+ if (!isSizeNumberOrString) {
48
+ Object.entries(size).forEach((sizeObj) => {
49
+ css += `pb_title_kit_${sizeObj[0]}_${sizeObj[1]} `
50
+ })
51
+ }
52
+
53
+ return css.trim()
54
+ }
55
+
39
56
  const classes = classnames(
40
- buildCss('pb_title_kit', `size_${size}`, variant, color, getBold),
57
+ buildCss('pb_title_kit', isSizeNumberOrString ? `size_${size}` : "", variant, color, getBold),
41
58
  globalProps(props),
59
+ buildResponsiveSizeCss(),
42
60
  className
43
61
  )
44
62
  const Tag: React.ReactElement | any = `${tag}`
@@ -0,0 +1 @@
1
+ <%= pb_rails("title", props: { text: "Responsive Title", tag: "h1", size: {xs: 3, sm: 2, md: 1} }) %>
@@ -0,0 +1,16 @@
1
+ import React from 'react'
2
+ import Title from '../_title'
3
+
4
+ const TitleResponsive = (props) => {
5
+ return (
6
+ <>
7
+ <Title
8
+ size={{xs: "3", sm: "2", md: "1"}}
9
+ text="Responsive Title"
10
+ {...props}
11
+ />
12
+ </>
13
+ )
14
+ }
15
+
16
+ export default TitleResponsive
@@ -0,0 +1 @@
1
+ The `size` prop supports responsive sizes. To use them, pass an object to the size prop containing your size values relative to responsive break points (show code below). To test this here, resize your browser window to responsively change this Title's size.
@@ -3,8 +3,10 @@ examples:
3
3
  - title_default: Default UI
4
4
  - title_light_weight: Light Weight UI
5
5
  - title_colors: Colors
6
+ - title_responsive: Responsive
6
7
 
7
8
  react:
8
9
  - title_default: Default UI
9
10
  - title_light_weight: Light Weight UI
10
11
  - title_colors: Colors
12
+ - title_responsive: Responsive
@@ -1,3 +1,4 @@
1
1
  export { default as TitleDefault } from './_title_default.jsx'
2
2
  export { default as TitleLightWeight } from './_title_light_weight.jsx'
3
3
  export { default as TitleColors } from './_title_colors.jsx'
4
+ export { default as TitleResponsive } from './_title_responsive.jsx'
@@ -6,9 +6,7 @@ module Playbook
6
6
  prop :color, type: Playbook::Props::Enum,
7
7
  values: [nil, "default", "light", "lighter", "success", "error", "link"],
8
8
  default: nil
9
- prop :size, type: Playbook::Props::Enum,
10
- values: [1, 2, 3, 4],
11
- default: 3
9
+ prop :size, default: 3
12
10
  prop :tag, type: Playbook::Props::Enum,
13
11
  values: %w[h1 h2 h3 h4 h5 h6 p div span],
14
12
  default: "h3"
@@ -20,12 +18,31 @@ module Playbook
20
18
  prop :bold, type: Playbook::Props::Boolean, default: true
21
19
 
22
20
  def classname
23
- generate_classname("pb_title_kit", size, variant, color, is_bold)
21
+ if is_size_responsive
22
+ generate_classname("pb_title_kit", variant, color, is_bold) + generate_responsive_size_classname
23
+ else
24
+ generate_classname("pb_title_kit", size, variant, color, is_bold)
25
+ end
24
26
  end
25
27
 
26
28
  def is_bold
27
29
  bold ? nil : "thin"
28
30
  end
31
+
32
+ def is_size_responsive
33
+ try(:size).is_a?(::Hash)
34
+ end
35
+
36
+ def generate_responsive_size_classname
37
+ css = ""
38
+ if is_size_responsive
39
+ size.each do |key, value|
40
+ css += " pb_title_kit_#{key}_#{value}"
41
+ end
42
+ end
43
+
44
+ css unless css.blank?
45
+ end
29
46
  end
30
47
  end
31
48
  end
@@ -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} {