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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) 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_card/_card.scss +0 -3
  15. data/app/pb_kits/playbook/pb_card/_card.tsx +6 -5
  16. data/app/pb_kits/playbook/pb_card/card.html.erb +3 -1
  17. data/app/pb_kits/playbook/pb_card/card.rb +96 -0
  18. data/app/pb_kits/playbook/pb_card/card_body.rb +1 -93
  19. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +0 -11
  20. data/app/pb_kits/playbook/pb_collapsible/_collapsible.tsx +3 -1
  21. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.tsx +3 -1
  22. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.tsx +3 -1
  23. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +1 -1
  24. data/app/pb_kits/playbook/pb_date/_date.tsx +7 -8
  25. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +45 -31
  26. data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.tsx +5 -3
  27. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.tsx +24 -21
  28. data/app/pb_kits/playbook/pb_date_time/_date_time.tsx +1 -1
  29. data/app/pb_kits/playbook/pb_date_time/dateTime.test.js +1 -1
  30. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.tsx +2 -2
  31. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js +1 -1
  32. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.tsx +6 -8
  33. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +0 -12
  34. data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_body.tsx +2 -2
  35. data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_footer.tsx +4 -1
  36. data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_header.tsx +2 -1
  37. data/app/pb_kits/playbook/pb_kit/dateTime.ts +139 -67
  38. data/app/pb_kits/playbook/pb_label_value/_label_value.tsx +52 -31
  39. data/app/pb_kits/playbook/pb_message/_message.tsx +25 -25
  40. data/app/pb_kits/playbook/pb_message/docs/_message_default.jsx +33 -45
  41. data/app/pb_kits/playbook/pb_message/docs/_message_hover.jsx +41 -0
  42. data/app/pb_kits/playbook/pb_message/docs/example.yml +1 -0
  43. data/app/pb_kits/playbook/pb_message/docs/index.js +2 -0
  44. data/app/pb_kits/playbook/pb_multi_level_select/_helper_functions.tsx +4 -1
  45. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +8 -3
  46. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb +76 -0
  47. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.jsx +88 -0
  48. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.md +5 -0
  49. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -0
  50. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +2 -1
  51. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +3 -0
  52. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +7 -0
  53. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +12 -7
  54. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.html.erb +14 -0
  55. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +30 -0
  56. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.md +3 -0
  57. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.html.erb +1 -0
  58. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.jsx +13 -0
  59. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.html.erb +1 -1
  60. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +1 -1
  61. data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +6 -3
  62. data/app/pb_kits/playbook/pb_section_separator/docs/index.js +2 -0
  63. data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +4 -2
  64. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +4 -1
  65. data/app/pb_kits/playbook/pb_time/_time.tsx +9 -11
  66. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.tsx +46 -49
  67. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.tsx +4 -6
  68. data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +13 -12
  69. data/app/pb_kits/playbook/pb_title/_title.scss +18 -0
  70. data/app/pb_kits/playbook/pb_title/_title.tsx +20 -2
  71. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.html.erb +1 -0
  72. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.jsx +16 -0
  73. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.md +1 -0
  74. data/app/pb_kits/playbook/pb_title/docs/example.yml +2 -0
  75. data/app/pb_kits/playbook/pb_title/docs/index.js +1 -0
  76. data/app/pb_kits/playbook/pb_title/title.rb +21 -4
  77. data/app/pb_kits/playbook/pb_title/title.test.js +42 -29
  78. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.tsx +8 -11
  79. data/app/pb_kits/playbook/tokens/_scale.scss +9 -0
  80. data/app/pb_kits/playbook/tokens/exports/_scale.scss +13 -0
  81. data/app/pb_kits/playbook/utilities/_border_radius.scss +31 -0
  82. data/app/pb_kits/playbook/utilities/_colors.scss +3 -0
  83. data/app/pb_kits/playbook/utilities/_hover.scss +47 -0
  84. data/app/pb_kits/playbook/utilities/globalProps.ts +22 -2
  85. data/dist/playbook-rails.js +7 -7
  86. data/lib/playbook/version.rb +2 -2
  87. metadata +21 -3
  88. data/app/pb_kits/playbook/pb_logistic/_logistic.jsx +0 -120
@@ -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,9 +1,9 @@
1
1
  import React from "react";
2
2
  import classnames from "classnames";
3
3
 
4
- import DateTime from "../pb_kit/dateTime";
5
4
  import { buildCss } from "../utilities/props";
6
5
  import { globalProps, GlobalProps } from "../utilities/globalProps";
6
+ import DateTime from '../pb_kit/dateTime';
7
7
 
8
8
  import Body from "../pb_body/_body";
9
9
  import Caption from "../pb_caption/_caption";
@@ -13,7 +13,7 @@ type TimeProps = {
13
13
  align?: "left" | "center" | "right";
14
14
  className?: string | string[];
15
15
  data?: string;
16
- date: string;
16
+ date: Date;
17
17
  dark?: boolean;
18
18
  id?: string;
19
19
  showIcon?: boolean;
@@ -41,8 +41,6 @@ const Time = (props: TimeProps) => {
41
41
  className
42
42
  );
43
43
 
44
- const dateTimestamp = new DateTime({ value: date, zone: timeZone });
45
-
46
44
  return (
47
45
  <div className={classes}>
48
46
  {showIcon && (
@@ -70,18 +68,18 @@ const Time = (props: TimeProps) => {
70
68
  )
71
69
  )}
72
70
 
73
- <time dateTime={date}>
71
+ <time dateTime={date.toString()}>
74
72
  <span>
75
73
  {unstyled
76
74
  ? (
77
75
  <>
78
76
  <span>
79
- {dateTimestamp.toTimeWithMeridian()}
77
+ {DateTime.toTimeWithMeridiem(date, timeZone)}
80
78
  </span>
81
79
  {" "}
82
80
  {showTimezone && (
83
81
  <span>
84
- {dateTimestamp.toTimezone()}
82
+ {DateTime.toTimeZone(date, timeZone)}
85
83
  </span>
86
84
  )}
87
85
  </>
@@ -92,13 +90,13 @@ const Time = (props: TimeProps) => {
92
90
  <Body
93
91
  className="pb_time"
94
92
  tag="span"
95
- text={dateTimestamp.toTimeWithMeridian()}
93
+ text={DateTime.toTimeWithMeridiem(date, timeZone)}
96
94
  />{" "}
97
95
  {showTimezone && (
98
96
  <Body
99
97
  color="light"
100
98
  tag="span"
101
- text={dateTimestamp.toTimezone()}
99
+ text={DateTime.toTimeZone(date, timeZone)}
102
100
  />
103
101
  )}
104
102
  </>
@@ -108,13 +106,13 @@ const Time = (props: TimeProps) => {
108
106
  <Caption
109
107
  color="light"
110
108
  tag="span"
111
- text={dateTimestamp.toTimeWithMeridian()}
109
+ text={DateTime.toTimeWithMeridiem(date, timeZone)}
112
110
  />{" "}
113
111
  {showTimezone && (
114
112
  <Caption
115
113
  color="light"
116
114
  tag="span"
117
- text={dateTimestamp.toTimezone()}
115
+ text={DateTime.toTimeZone(date, timeZone)}
118
116
  />
119
117
  )}
120
118
  </>
@@ -1,9 +1,9 @@
1
1
  import React from 'react'
2
2
  import classnames from 'classnames'
3
3
 
4
- import DateTime from '../pb_kit/dateTime'
5
4
  import { globalProps, GlobalProps } from '../utilities/globalProps'
6
5
  import { buildAriaProps, buildDataProps } from '../utilities/props'
6
+ import DateTime from '../pb_kit/dateTime';
7
7
 
8
8
  import Body from '../pb_body/_body'
9
9
  import Caption from '../pb_caption/_caption'
@@ -19,23 +19,20 @@ type TimeRangeInlineProps = {
19
19
  dark?: boolean,
20
20
  icon?: boolean,
21
21
  timezone?: boolean,
22
- startTime: string,
23
- endTime: string,
22
+ startTime: Date,
23
+ endTime: Date,
24
24
  } & GlobalProps
25
25
 
26
- const timezoneString = (dateValue: string) => {
27
- const date = new DateTime({ value: dateValue })
28
- return `${date.convertToTimezone()}`
26
+ const timezoneString = (dateValue: Date) => {
27
+ return `${DateTime.toTimeZone(dateValue)}`
29
28
  }
30
29
 
31
- const dateTimestamp = (dateValue: string) => {
32
- const date = new DateTime({ value: dateValue })
33
- return `${date.toHour()}:${date.toMinute()}${date.toMeridian()}`
30
+ const dateTimestamp = (dateValue: Date) => {
31
+ return `${DateTime.toHour(dateValue)}:${DateTime.toMinute(dateValue)}${DateTime.toMeridiem(dateValue)}`
34
32
  }
35
33
 
36
- const dateTimeIso = (dateValue: string) => {
37
- const date = new DateTime({ value: dateValue })
38
- return date.toIso()
34
+ const dateTimeIso = (dateValue: Date) => {
35
+ return DateTime.toIso(dateValue)
39
36
  }
40
37
 
41
38
  const TimeRangeInline = (props: TimeRangeInlineProps) => {
@@ -59,10 +56,10 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
59
56
  const separator = (
60
57
  <Body color="light">
61
58
  <Icon
62
- className="pb_time_range_inline_arrow"
63
- dark={dark}
64
- fixedWidth
65
- icon="long-arrow-right"
59
+ className="pb_time_range_inline_arrow"
60
+ dark={dark}
61
+ fixedWidth
62
+ icon="long-arrow-right"
66
63
  />
67
64
  </Body>
68
65
  )
@@ -71,16 +68,16 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
71
68
  return (
72
69
  icon &&
73
70
  <Body
74
- color="light"
75
- tag="span"
71
+ color="light"
72
+ tag="span"
76
73
  >
77
74
  <Icon
78
- className="pb_time_range_inline_icon"
79
- dark={dark}
80
- fixedWidth
81
- icon="clock"
82
- size={size}
83
- tag="span"
75
+ className="pb_time_range_inline_icon"
76
+ dark={dark}
77
+ fixedWidth
78
+ icon="clock"
79
+ size={size}
80
+ tag="span"
84
81
  />
85
82
  </Body>
86
83
  )
@@ -88,17 +85,17 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
88
85
 
89
86
  return (
90
87
  <div
91
- {...ariaProps}
92
- {...dataProps}
93
- className={classnames('pb_time_range_inline_kit_' + alignment, globalProps(props), className)}
94
- id={id}
88
+ {...ariaProps}
89
+ {...dataProps}
90
+ className={classnames('pb_time_range_inline_kit_' + alignment, globalProps(props), className)}
91
+ id={id}
95
92
  >
96
93
  <div className="pb_time_range_inline_wrapper">
97
94
  {size == 'xs' &&
98
95
  <>
99
96
  <Caption
100
- dark={dark}
101
- tag="span"
97
+ dark={dark}
98
+ tag="span"
102
99
  >
103
100
  {iconContent()}
104
101
  <time dateTime={dateTimeIso(startTime)}>
@@ -108,15 +105,15 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
108
105
  </time>
109
106
  </Caption>
110
107
  <Caption
111
- className="pb_time_range_inline_arrow"
112
- dark={dark}
113
- tag="span"
108
+ className="pb_time_range_inline_arrow"
109
+ dark={dark}
110
+ tag="span"
114
111
  >
115
112
  {separator}
116
113
  </Caption>
117
114
  <Caption
118
- dark={dark}
119
- tag="span"
115
+ dark={dark}
116
+ tag="span"
120
117
  >
121
118
  <time dateTime={dateTimeIso(endTime)}>
122
119
  {` ${dateTimestamp(
@@ -126,9 +123,9 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
126
123
  </Caption>
127
124
  {timezone &&
128
125
  <Caption
129
- className="pb_time_range_inline_timezone"
130
- dark={dark}
131
- tag="span"
126
+ className="pb_time_range_inline_timezone"
127
+ dark={dark}
128
+ tag="span"
132
129
  >
133
130
  {timezoneString(endTime)}
134
131
  </Caption>
@@ -138,8 +135,8 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
138
135
  {size == 'sm' &&
139
136
  <>
140
137
  <Body
141
- dark={dark}
142
- tag="span"
138
+ dark={dark}
139
+ tag="span"
143
140
  >
144
141
  {iconContent()}
145
142
  <time dateTime={dateTimeIso(startTime)}>
@@ -149,15 +146,15 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
149
146
  </time>
150
147
  </Body>
151
148
  <Body
152
- className="pb_time_range_inline_arrow"
153
- dark={dark}
154
- tag="span"
149
+ className="pb_time_range_inline_arrow"
150
+ dark={dark}
151
+ tag="span"
155
152
  >
156
153
  {separator}
157
154
  </Body>
158
155
  <Body
159
- dark={dark}
160
- tag="span"
156
+ dark={dark}
157
+ tag="span"
161
158
  >
162
159
  <time dateTime={dateTimeIso(endTime)}>
163
160
  {` ${dateTimestamp(
@@ -167,10 +164,10 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
167
164
  </Body>
168
165
  {timezone &&
169
166
  <Body
170
- className="pb_time_range_inline_timezone"
171
- color="light"
172
- dark={dark}
173
- tag="span"
167
+ className="pb_time_range_inline_timezone"
168
+ color="light"
169
+ dark={dark}
170
+ tag="span"
174
171
  >
175
172
  {timezoneString(endTime)}
176
173
  </Body>
@@ -1,9 +1,9 @@
1
1
  import React from 'react'
2
2
  import classnames from 'classnames'
3
3
 
4
- import DateTime from '../pb_kit/dateTime'
5
4
  import { buildCss, buildDataProps } from '../utilities/props'
6
5
  import { deprecatedProps, globalProps } from '../utilities/globalProps'
6
+ import DateTime from '../pb_kit/dateTime';
7
7
 
8
8
  import Body from '../pb_body/_body'
9
9
  import Caption from '../pb_caption/_caption'
@@ -13,7 +13,7 @@ type TimeStackedProps = {
13
13
  className?: string | string[],
14
14
  dark?: boolean,
15
15
  data?: { [key: string]: string },
16
- date?: string,
16
+ date?: Date,
17
17
  id?: string,
18
18
  time?: number | Date,
19
19
  timeZone?: string,
@@ -39,8 +39,6 @@ const TimeStackedDefault = (props: TimeStackedProps): React.ReactElement => {
39
39
  )
40
40
  const dataProps = buildDataProps(data)
41
41
 
42
- const dateTimestamp = new DateTime({ value: date ? date : new Date(time), zone: timeZone })
43
-
44
42
  return (
45
43
  <div
46
44
  className={classes}
@@ -52,13 +50,13 @@ const TimeStackedDefault = (props: TimeStackedProps): React.ReactElement => {
52
50
  dark={dark}
53
51
  >
54
52
  <time>
55
- {dateTimestamp.toTimeWithMeridian()}
53
+ {DateTime.toTimeWithMeridiem(date ? date : new Date(time), timeZone)}
56
54
  <Caption
57
55
  className="pb_time_stacked"
58
56
  color="light"
59
57
  dark={dark}
60
58
  tag="span"
61
- text={dateTimestamp.toTimezone()}
59
+ text={DateTime.toTimeZone(date ? date : new Date(time), timeZone)}
62
60
  />
63
61
  </time>
64
62
  </Body>
@@ -1,9 +1,10 @@
1
1
  import React from 'react'
2
2
  import classnames from 'classnames'
3
3
 
4
- import DateTime from '../pb_kit/dateTime'
5
4
  import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
6
5
  import { globalProps } from '../utilities/globalProps'
6
+ import DateTime from '../pb_kit/dateTime';
7
+
7
8
 
8
9
  import Caption from '../pb_caption/_caption'
9
10
 
@@ -14,7 +15,7 @@ type TimestampProps = {
14
15
  dark?: boolean,
15
16
  data?: string,
16
17
  text: string,
17
- timestamp: string,
18
+ timestamp: Date | string,
18
19
  timezone: string,
19
20
  id?: string,
20
21
  showDate?: boolean,
@@ -32,8 +33,8 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
32
33
  dark = false,
33
34
  data = {},
34
35
  text,
35
- timestamp,
36
36
  timezone,
37
+ timestamp,
37
38
  showDate = true,
38
39
  showUser = false,
39
40
  hideUpdated = false,
@@ -52,27 +53,27 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
52
53
  className
53
54
  )
54
55
 
56
+ const timeStamp = new Date(timestamp)
55
57
  const currentYear = new Date().getFullYear().toString()
56
- const dateTimestamp = new DateTime({ value: timestamp, zone: timezone })
57
- const dateDisplay = `${dateTimestamp.toMonth()} ${dateTimestamp.toDay()}`
58
+ const dateDisplay = `${DateTime.toMonth(timeStamp, timezone)} ${DateTime.toDay(timeStamp, timezone)}`
58
59
  const shouldShowUser = showUser == true && text.length > 0
59
60
  const shouldShowTimezone = showTimezone == true && timezone.length > 0
60
61
  const updatedText = hideUpdated ? "" : "Last updated"
61
62
  const userDisplay = shouldShowUser ? ` by ${text}` : ''
62
63
 
63
- let timeDisplay = `${dateTimestamp.toHour()}:${dateTimestamp.toMinute()}${dateTimestamp.toMeridian()}`
64
+ let timeDisplay = `${DateTime.toHour(timeStamp, timezone)}:${DateTime.toMinute(timeStamp, timezone)}${DateTime.toMeridiem(timeStamp, timezone)}`
64
65
 
65
66
  const fullTimeDisplay = () => {
66
67
  if (shouldShowTimezone) {
67
- timeDisplay = `${timeDisplay} ${dateTimestamp.toTimezone()}`
68
+ timeDisplay = `${timeDisplay} ${DateTime.toTimeZone(timeStamp, timezone)}`
68
69
  }
69
70
  return timeDisplay
70
71
  }
71
72
 
72
73
  const fullDateDisplay = () => {
73
- let fullDisplay = `${dateTimestamp.toMonth()} ${dateTimestamp.toDay()}`
74
- if (dateTimestamp.toYear() !== currentYear) {
75
- fullDisplay = `${fullDisplay}, ${dateTimestamp.toYear()}`
74
+ let fullDisplay = `${DateTime.toMonth(timeStamp, timezone)} ${DateTime.toDay(timeStamp, timezone)}`
75
+ if (DateTime.toYear(timeStamp, timezone).toString() !== currentYear) {
76
+ fullDisplay = `${fullDisplay}, ${DateTime.toYear(timeStamp, timezone)}`
76
77
  }
77
78
  return `${fullDisplay} ${' \u00b7 '} ${fullTimeDisplay()}`
78
79
  }
@@ -82,7 +83,7 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
82
83
  }
83
84
 
84
85
  const formatElapsedString = () => {
85
- return `${updatedText} ${userDisplay} ${dateTimestamp.value.fromNow()}`
86
+ return `${updatedText} ${userDisplay} ${DateTime.fromNow(timeStamp)}`
86
87
  }
87
88
 
88
89
  const captionText = () => {
@@ -92,7 +93,7 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
92
93
  case 'elapsed':
93
94
  return formatElapsedString()
94
95
  default:
95
- return showDate ? timestamp ? fullDateDisplay() : text : fullTimeDisplay()
96
+ return showDate ? timeStamp ? fullDateDisplay() : text : fullTimeDisplay()
96
97
  }
97
98
  }
98
99
 
@@ -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
  }