playbook_ui 6.3.1 → 6.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/packs/site_styles/docs/_kit_doc.scss +0 -1
  3. data/app/pb_kits/playbook/pb_button/_button_mixins.scss +31 -17
  4. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.scss +16 -8
  5. data/app/pb_kits/playbook/pb_caption/_caption.jsx +3 -1
  6. data/app/pb_kits/playbook/pb_caption/_caption.scss +3 -0
  7. data/app/pb_kits/playbook/pb_caption/caption.rb +4 -1
  8. data/app/pb_kits/playbook/pb_caption/docs/_caption_variants.html.erb +1 -0
  9. data/app/pb_kits/playbook/pb_caption/docs/_caption_variants.jsx +16 -0
  10. data/app/pb_kits/playbook/pb_caption/docs/_caption_variants.md +3 -0
  11. data/app/pb_kits/playbook/pb_caption/docs/example.yml +2 -0
  12. data/app/pb_kits/playbook/pb_caption/docs/index.js +1 -0
  13. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -0
  14. data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +12 -6
  15. data/app/pb_kits/playbook/pb_date/_date.html.erb +32 -8
  16. data/app/pb_kits/playbook/pb_date/_date.jsx +76 -67
  17. data/app/pb_kits/playbook/pb_date/_date.scss +25 -0
  18. data/app/pb_kits/playbook/pb_date/date.rb +20 -11
  19. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +24 -0
  20. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +32 -0
  21. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +1 -9
  22. data/app/pb_kits/playbook/pb_date/docs/_date_default_react.jsx +20 -0
  23. data/app/pb_kits/playbook/pb_date/docs/_date_default_react.md +3 -0
  24. data/app/pb_kits/playbook/pb_date/docs/_date_timezone.html.erb +51 -0
  25. data/app/pb_kits/playbook/pb_date/docs/_date_timezone.md +6 -0
  26. data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +27 -0
  27. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +39 -0
  28. data/app/pb_kits/playbook/pb_date/docs/_description.md +2 -0
  29. data/app/pb_kits/playbook/pb_date/docs/example.yml +6 -2
  30. data/app/pb_kits/playbook/pb_date/docs/index.js +3 -1
  31. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_dark.jsx +1 -1
  32. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.jsx +1 -1
  33. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +5 -2
  34. data/app/pb_kits/playbook/pb_icon/docs/_icon_default_dark.html.erb +3 -1
  35. data/app/pb_kits/playbook/pb_icon/docs/_icon_default_dark.jsx +7 -5
  36. data/app/pb_kits/playbook/pb_nav/_horizontal_nav.scss +6 -4
  37. data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +18 -14
  38. data/app/pb_kits/playbook/pb_radio/_radio.scss +9 -4
  39. data/app/pb_kits/playbook/pb_select/_select.scss +8 -4
  40. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +6 -3
  41. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +35 -37
  42. data/app/pb_kits/playbook/pb_table/styles/_hover.scss +15 -12
  43. data/app/pb_kits/playbook/pb_table/styles/_mobile.scss +6 -4
  44. data/app/pb_kits/playbook/pb_table/styles/_table-dark.scss +6 -4
  45. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +4 -4
  46. data/app/pb_kits/playbook/pb_time/_time.jsx +7 -5
  47. data/app/pb_kits/playbook/pb_time/docs/_time_dark.jsx +0 -2
  48. data/app/pb_kits/playbook/pb_time/docs/_time_default.jsx +1 -3
  49. data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.jsx +0 -3
  50. data/app/pb_kits/playbook/pb_time/docs/_time_timezone.jsx +59 -0
  51. data/app/pb_kits/playbook/pb_time/docs/_time_timezone.md +11 -0
  52. data/app/pb_kits/playbook/pb_time/docs/example.yml +1 -0
  53. data/app/pb_kits/playbook/pb_time/docs/index.js +1 -0
  54. data/app/pb_kits/playbook/pb_title/_title.jsx +1 -1
  55. data/app/pb_kits/playbook/pb_title/_title.scss +5 -5
  56. data/app/pb_kits/playbook/pb_title/docs/_title_variants.html.erb +1 -0
  57. data/app/pb_kits/playbook/pb_title/docs/_title_variants.jsx +17 -0
  58. data/app/pb_kits/playbook/pb_title/docs/_title_variants.md +3 -0
  59. data/app/pb_kits/playbook/pb_title/docs/example.yml +2 -0
  60. data/app/pb_kits/playbook/pb_title/docs/index.js +1 -0
  61. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +4 -2
  62. data/lib/playbook/version.rb +1 -1
  63. metadata +17 -2
  64. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +0 -28
@@ -5,6 +5,7 @@
5
5
 
6
6
  [class^=pb_radio_kit] {
7
7
  display: inline-flex;
8
+ cursor: pointer;
8
9
 
9
10
  .pb_radio_button {
10
11
  width: 22px;
@@ -18,8 +19,10 @@
18
19
  transition-timing-function: $easeIn;
19
20
  }
20
21
 
21
- &:hover .pb_radio_button {
22
- border-color: $primary_action;
22
+ @media (hover:hover) {
23
+ &:hover .pb_radio_button {
24
+ border-color: $primary_action;
25
+ }
23
26
  }
24
27
 
25
28
  input {
@@ -37,8 +40,10 @@
37
40
  border: 6px solid $primary;
38
41
  }
39
42
 
40
- &:hover .pb_radio_button {
41
- border-color: $primary_action;
43
+ @media (hover:hover) {
44
+ &:hover .pb_radio_button {
45
+ border-color: $primary_action;
46
+ }
42
47
  }
43
48
  &.error {
44
49
  > .pb_radio_button {
@@ -12,8 +12,10 @@
12
12
  cursor: pointer;
13
13
  box-shadow: inset 0 -11px 20px rgba($primary, 0.05);
14
14
  padding-right: $space_lg;
15
- &:hover, &:active, &:focus {
16
- background-color: $focus_input_light;
15
+ @media (hover:hover) {
16
+ &:hover, &:active, &:focus {
17
+ background-color: $focus_input_light;
18
+ }
17
19
  }
18
20
  &:disabled ~ .pb_select_kit_caret {
19
21
  opacity: 0.5;
@@ -60,8 +62,10 @@
60
62
  @include pb_title_dark;
61
63
  background: $focus_input_dark;
62
64
  box-shadow: inset 0 -11px 20px rgba($white, 0.05);
63
- &:hover, &:active, &:focus {
64
- background-color: tint($focus_input_dark, 5%);
65
+ @media (hover:hover) {
66
+ &:hover, &:active, &:focus {
67
+ background-color: tint($focus_input_dark, 5%);
68
+ }
65
69
  }
66
70
  text-shadow: 0 0 0 $text_dk_default;
67
71
  }
@@ -18,9 +18,11 @@ $pb_selectable_card_border: 2px;
18
18
  padding: $space_sm + 1;
19
19
  cursor: pointer;
20
20
 
21
- &:hover {
22
- box-shadow: $shadow-deep;
23
- border-color: $slate;
21
+ @media (hover:hover) {
22
+ &:hover {
23
+ box-shadow: $shadow-deep;
24
+ border-color: $slate;
25
+ }
24
26
  }
25
27
 
26
28
  .pb_selectable_card_circle {
@@ -66,6 +68,7 @@ $pb_selectable_card_border: 2px;
66
68
  }
67
69
 
68
70
  &.dark {
71
+ color: $white;
69
72
  label {
70
73
  @include pb_card_dark;
71
74
  background: transparent;
@@ -1,82 +1,80 @@
1
+ @import "../tokens/transition";
2
+
1
3
  [class^=pb_selectable_icon] {
2
4
 
3
- text-align: center;
4
- cursor: pointer;
5
+ text-align: center;
6
+ cursor: pointer;
7
+ transition: all $transition_short ease;
8
+ @media (hover:hover) {
9
+ &:hover * {
10
+ transition: all $transition_short ease;
11
+ transform: translateY(-2px);
12
+ }
13
+ }
5
14
 
6
- :hover * {
7
- filter: drop-shadow(0 0 8px rgba($shadow, 0.25));
8
- transition-duration: $transition_short;
9
- transition-timing-function: $easeIn;
10
- }
15
+ * {
16
+ cursor: pointer;
17
+ }
11
18
 
12
- * {
13
- cursor: pointer;
14
- }
19
+ h4 {
20
+ margin-top: $space_xs !important;
21
+ user-select: none;
22
+ transition: color $transition_short ease;
23
+ }
15
24
 
16
- h4 {
17
- margin-top: $space_xs !important;
18
- user-select: none;
19
- }
25
+ label {
26
+ transition: color $transition_short ease;
27
+ }
20
28
 
21
- &[class*=_disabled] {
29
+ &[class*=_disabled] {
22
30
  opacity: $opacity_6;
23
31
  cursor: not-allowed;
24
-
25
32
  * {
26
- cursor: not-allowed;
33
+ cursor: not-allowed;
27
34
  }
28
35
  }
29
36
 
30
- input[type="checkbox"],
31
- input[type="radio"] {
37
+ input[type="checkbox"],
38
+ input[type="radio"] {
32
39
  -webkit-appearance: none;
33
40
  -moz-appearance: none;
34
41
  display: none;
35
42
  appearance: none;
36
-
37
- transition-property: color;
38
- transition-duration: $transition_short;
43
+ transition: color $transition_short ease;
39
44
 
40
45
  &:checked ~ label * {
41
- transition-timing-function: $easeIn;
46
+ transition: color $transition_short ease;
42
47
  color: $primary;
43
48
  }
44
49
 
45
50
  &:not(:checked) ~ label {
46
- transition-timing-function: $easeOut;
51
+ transition: color $transition_short ease;
47
52
  color: $slate;
48
53
 
49
- h4 {
50
- transition-delay: .15s;
51
- }
52
54
  }
53
55
  }
54
56
 
55
57
 
56
- &.dark {
57
-
58
+ &.dark {
58
59
  input[type="checkbox"],
59
60
  input[type="radio"] {
60
61
  -webkit-appearance: none;
61
62
  -moz-appearance: none;
62
63
  display: none;
63
64
  appearance: none;
64
-
65
- transition-property: color;
66
- transition-duration: $transition_short;
67
-
68
-
65
+ transition: color $transition_short ease;
66
+
69
67
  &:checked ~ label * {
70
- transition-timing-function: $easeIn;
68
+ transition: color $transition_short ease;
71
69
  color: $active_dark !important;
72
70
  }
73
71
 
74
72
  &:not(:checked) ~ label {
75
- transition-timing-function: $easeOut;
73
+ transition: color $transition_short ease;
76
74
  color: $text_dk_lighter;
77
75
 
78
76
  h4 {
79
- transition-delay: .15s;
77
+ transition: color $transition_short ease;
80
78
  color: $text_dk_default;
81
79
  }
82
80
  }
@@ -19,14 +19,16 @@ $transition-speed: 0.2s;
19
19
  transition: all $transition-speed ease;
20
20
  }
21
21
 
22
- &:hover {
23
- box-shadow: 0 2px 10px 0 rgba($slate, $opacity-6);
22
+ @media (hover:hover) {
23
+ &:hover {
24
+ box-shadow: 0 2px 10px 0 rgba($slate, $opacity-6);
24
25
 
25
- td {
26
- background: $white;
27
- border-color: darken($border_light, 10%);
28
- border-top-width: 1px;
29
- border-top-color: transparent;
26
+ td {
27
+ background: $white;
28
+ border-color: darken($border_light, 10%);
29
+ border-top-width: 1px;
30
+ border-top-color: transparent;
31
+ }
30
32
  }
31
33
  }
32
34
  }
@@ -38,11 +40,12 @@ $transition-speed: 0.2s;
38
40
  border-top-color: $border_light;
39
41
  border-top-width: 1px;
40
42
  }
41
-
42
- &:hover {
43
- td {
44
- border-top-width: 1px;
45
- border-top-color: $border_light;
43
+ @media (hover:hover) {
44
+ &:hover {
45
+ td {
46
+ border-top-width: 1px;
47
+ border-top-color: $border_light;
48
+ }
46
49
  }
47
50
  }
48
51
  }
@@ -91,10 +91,12 @@
91
91
  }
92
92
  }
93
93
  }
94
- &:hover {
95
- tbody {
96
- tr {
97
- box-shadow: 0 0 0 $white !important;
94
+ @media (hover:hover) {
95
+ &:hover {
96
+ tbody {
97
+ tr {
98
+ box-shadow: 0 0 0 $white !important;
99
+ }
98
100
  }
99
101
  }
100
102
  }
@@ -42,10 +42,12 @@ $table-dark-card-bg: $bg_dark;
42
42
  &:not(.no-hover) {
43
43
  tbody {
44
44
  tr {
45
- &:hover {
46
- td {
47
- border-color: $border_dark !important;
48
- background: $bg_dark;
45
+ @media (hover:hover) {
46
+ &:hover {
47
+ td {
48
+ border-color: $border_dark !important;
49
+ background: $bg_dark;
50
+ }
49
51
  }
50
52
  }
51
53
  }
@@ -17,7 +17,7 @@
17
17
  @include pb_body_light;
18
18
  }
19
19
 
20
- > input:first-child {
20
+ input {
21
21
  @include pb_textarea_light;
22
22
  @include pb_title_4;
23
23
  overflow: hidden;
@@ -38,7 +38,7 @@
38
38
  @include pb_body_light_dark;
39
39
  }
40
40
 
41
- > input:first-child {
41
+ input {
42
42
  @include pb_textarea_dark;
43
43
  @include pb_title_4;
44
44
  @include pb_title_dark;
@@ -54,7 +54,7 @@
54
54
 
55
55
  &.error {
56
56
  .text_input_wrapper {
57
- > input:first-child {
57
+ input {
58
58
  border-color: $error_dark;
59
59
  }
60
60
  }
@@ -66,7 +66,7 @@
66
66
  [class*=pb_body_kit] {
67
67
  margin-top: $space_xs / 2;
68
68
  }
69
- > input:first-child {
69
+ input {
70
70
  border-color: $error;
71
71
  }
72
72
  }
@@ -10,24 +10,24 @@ import { globalProps } from '../utilities/globalProps.js'
10
10
  import { Body, Icon, Title } from '../'
11
11
 
12
12
  type TimeProps = {
13
- align?: 'left" | "center' | 'right',
13
+ align?: 'left' | 'center' | 'right',
14
14
  className?: string | array<string>,
15
15
  data?: string,
16
16
  date: string,
17
17
  id?: string,
18
- showTimezone?: boolean,
19
18
  size?: 'lg' | 'sm' | 'xs',
19
+ timeZone?: string,
20
20
  }
21
21
 
22
22
  const Time = (props: TimeProps) => {
23
- const { align, className, date, showTimezone, size } = props
23
+ const { align, className, date, size, timeZone } = props
24
24
  const classes = classnames(
25
25
  className,
26
26
  buildCss('pb_time_kit', align, size),
27
27
  globalProps(props)
28
28
  )
29
29
 
30
- const dateTimestamp = new DateTime({ value: date })
30
+ const dateTimestamp = new DateTime({ value: date, zone: timeZone })
31
31
 
32
32
  return (
33
33
  <div className={classes}>
@@ -53,7 +53,9 @@ const Time = (props: TimeProps) => {
53
53
  text={dateTimestamp.toTimeWithMeridian()}
54
54
  />
55
55
  </If>
56
- { showTimezone && <span className="pb_time_timezone">{dateTimestamp.toTimezone()}</span> }
56
+ <If condition={timeZone !== undefined}>
57
+ <span className="pb_time_timezone">{dateTimestamp.toTimezone()}</span>
58
+ </If>
57
59
  </span>
58
60
  </time>
59
61
  </span>
@@ -12,14 +12,12 @@ const TimeDark = () => {
12
12
  <Time
13
13
  dark
14
14
  date={new Date()}
15
- showTimezone
16
15
  size="lg"
17
16
  />
18
17
  <br />
19
18
  <Time
20
19
  dark
21
20
  date={new Date()}
22
- showTimezone
23
21
  />
24
22
  </div>
25
23
  )
@@ -6,19 +6,17 @@ const TimeDefault = () => {
6
6
  <div>
7
7
  <Time
8
8
  date={new Date()}
9
- showTimezone
10
9
  size="lg"
10
+ timeZone="America/New_York"
11
11
  />
12
12
  <br />
13
13
  <Time
14
14
  date={new Date().getTime()}
15
- showTimezone
16
15
  size="sm"
17
16
  />
18
17
  <br />
19
18
  <Time
20
19
  date="2012-08-02T09:49:29Z"
21
- showTimezone
22
20
  size="xs"
23
21
  />
24
22
  </div>
@@ -6,7 +6,6 @@ const TimeStamp = () => {
6
6
  <div>
7
7
  <Time
8
8
  date={new Date()}
9
- showTimezone
10
9
  size="sm"
11
10
  />
12
11
 
@@ -14,7 +13,6 @@ const TimeStamp = () => {
14
13
 
15
14
  <Time
16
15
  date={new Date().getTime()}
17
- showTimezone
18
16
  size="sm"
19
17
  />
20
18
 
@@ -22,7 +20,6 @@ const TimeStamp = () => {
22
20
 
23
21
  <Time
24
22
  date="2012-08-02T15:49:29Z"
25
- showTimezone
26
23
  size="sm"
27
24
  />
28
25
  </div>
@@ -0,0 +1,59 @@
1
+ import React from 'react'
2
+ import Time from '../_time.jsx'
3
+
4
+ const TimeTimeZone = () => {
5
+ const zones = {
6
+ east: 'America/New_York',
7
+ central: 'America/Chicago',
8
+ mountain: 'America/Denver',
9
+ west: 'America/Los_Angeles',
10
+ asia: 'Asia/Tokyo',
11
+ }
12
+ return (
13
+ <div>
14
+ <h4>{'East Coast'}</h4>
15
+ <Time
16
+ date={new Date().toLocaleString('en-US', { timeZone: zones.east })}
17
+ size="lg"
18
+ timeZone={zones.east}
19
+ />
20
+ <br />
21
+ <br />
22
+ <h4>{'Central'}</h4>
23
+ <Time
24
+ date={new Date().toLocaleString('en-US', { timeZone: zones.central })}
25
+ size="sm"
26
+ timeZone={zones.central}
27
+ />
28
+ <br />
29
+ <br />
30
+ <h4>{'Mountain'}</h4>
31
+ <Time
32
+ date={new Date().toLocaleString('en-US', { timeZone: zones.mountain })}
33
+ size="sm"
34
+ timeZone={zones.mountain}
35
+ />
36
+
37
+ <br />
38
+ <br />
39
+ <h4>{'West Coast'}</h4>
40
+ <Time
41
+ date={new Date().toLocaleString('en-US', { timeZone: zones.west })}
42
+ size="sm"
43
+ timeZone={zones.west}
44
+ />
45
+
46
+ <br />
47
+ <br />
48
+ <h4>{'Tokyo, Japan'}</h4>
49
+ <Time
50
+ date={new Date('2012-08-02T09:49:29Z').toLocaleString('en-US', { timeZone: zones.asia })}
51
+ size="sm"
52
+ timeZone={zones.asia}
53
+ />
54
+
55
+ </div>
56
+ )
57
+ }
58
+
59
+ export default TimeTimeZone