playbook_ui 2.9.8 → 2.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +3 -0
  3. data/app/pb_kits/playbook/index.js +4 -0
  4. data/app/pb_kits/playbook/kits/pb_date_stacked.js +4 -0
  5. data/app/pb_kits/playbook/kits/pb_multiple_users.js +4 -0
  6. data/app/pb_kits/playbook/kits/pb_progress_pills.js +4 -0
  7. data/app/pb_kits/playbook/packs/examples.js +6 -0
  8. data/app/pb_kits/playbook/packs/kits.js +5 -0
  9. data/app/pb_kits/playbook/packs/site_styles/docs/_color_utilities.scss +1 -0
  10. data/app/pb_kits/playbook/pb_avatar/_avatar.jsx +21 -12
  11. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_default.jsx +5 -5
  12. data/app/pb_kits/playbook/pb_bar_graph/bar_graph.rb +1 -1
  13. data/app/pb_kits/playbook/pb_caption/caption.rb +0 -1
  14. data/app/pb_kits/playbook/pb_card/_card.jsx +18 -6
  15. data/app/pb_kits/playbook/pb_card/_card.scss +33 -0
  16. data/app/pb_kits/playbook/pb_card/card.rb +15 -1
  17. data/app/pb_kits/playbook/pb_card/docs/_card_highlight.html.erb +9 -0
  18. data/app/pb_kits/playbook/pb_card/docs/_card_highlight.jsx +20 -0
  19. data/app/pb_kits/playbook/pb_card/docs/example.yml +3 -0
  20. data/app/pb_kits/playbook/pb_card/docs/index.js +1 -0
  21. data/app/pb_kits/playbook/pb_contact/contact.rb +0 -1
  22. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.jsx +15 -33
  23. data/app/pb_kits/playbook/pb_dashboard_value/docs/_dashboard_value_align.jsx +12 -9
  24. data/app/pb_kits/playbook/pb_dashboard_value/docs/_dashboard_value_default.jsx +12 -9
  25. data/app/pb_kits/playbook/pb_date/date.rb +1 -1
  26. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.html.erb +13 -0
  27. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.jsx +83 -0
  28. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.scss +35 -0
  29. data/app/pb_kits/playbook/pb_date_stacked/date_stacked.rb +69 -0
  30. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.html.erb +21 -0
  31. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.jsx +33 -0
  32. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_dark.html.erb +5 -0
  33. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_dark.jsx +24 -0
  34. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.html.erb +5 -0
  35. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.jsx +18 -0
  36. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_not_current_year.html.erb +5 -0
  37. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_not_current_year.jsx +18 -0
  38. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_reverse.html.erb +5 -0
  39. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_reverse.jsx +18 -0
  40. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_sizes.html.erb +5 -0
  41. data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_sizes.jsx +19 -0
  42. data/app/pb_kits/playbook/pb_date_stacked/docs/example.yml +22 -0
  43. data/app/pb_kits/playbook/pb_date_stacked/docs/index.js +7 -0
  44. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +0 -1
  45. data/app/pb_kits/playbook/pb_kit/pb_date_time.rb +3 -1
  46. data/app/pb_kits/playbook/pb_layout/layout.rb +0 -1
  47. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +5 -5
  48. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.html.erb +14 -0
  49. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.jsx +69 -0
  50. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +50 -0
  51. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_default.html.erb +39 -0
  52. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_default.jsx +46 -0
  53. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_reverse.html.erb +41 -0
  54. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_reverse.jsx +50 -0
  55. data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +9 -0
  56. data/app/pb_kits/playbook/pb_multiple_users/docs/index.js +2 -0
  57. data/app/pb_kits/playbook/pb_multiple_users/multiple_users.rb +32 -0
  58. data/app/pb_kits/playbook/pb_online_status/online_status.rb +2 -2
  59. data/app/pb_kits/playbook/pb_person_contact/person_contact.rb +2 -2
  60. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.html.erb +19 -0
  61. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.jsx +51 -0
  62. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +42 -0
  63. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_dark.html.erb +1 -0
  64. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_dark.jsx +21 -0
  65. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb +1 -0
  66. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +18 -0
  67. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.html.erb +1 -0
  68. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.jsx +20 -0
  69. data/app/pb_kits/playbook/pb_progress_pills/docs/example.yml +12 -0
  70. data/app/pb_kits/playbook/pb_progress_pills/docs/index.js +3 -0
  71. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +49 -0
  72. data/app/pb_kits/playbook/pb_progress_simple/progress_simple.rb +3 -3
  73. data/app/pb_kits/playbook/pb_stat_change/stat_change.rb +5 -5
  74. data/app/pb_kits/playbook/pb_time/time.rb +2 -2
  75. data/app/pb_kits/playbook/pb_title_count/title_count.rb +2 -2
  76. data/app/pb_kits/playbook/pb_user/docs/_user_dark.html.erb +42 -0
  77. data/app/pb_kits/playbook/pb_user/docs/_user_text_only_dark.html.erb +19 -0
  78. data/app/pb_kits/playbook/tokens/_colors.scss +4 -0
  79. data/app/views/playbook/pages/utilities.html.slim +4 -4
  80. data/lib/playbook/version.rb +1 -1
  81. data/lib/tasks/pb_release.rake +0 -2
  82. metadata +49 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 886c7c99d455f10b2f169cfea7e6857d12ac0244e48243fbd5f6b7e16733af35
4
- data.tar.gz: eb575a0deb1435b1ff816112502ca54eeedd103103a31897e0cb33158ca842eb
3
+ metadata.gz: ce4e8884441a2a18b3dfb1d5e6ad3d39c1d62445cc103a084bd7963038763b47
4
+ data.tar.gz: 69d4ddeba0f3cabd308908ef4eee403fe705291f144ccf8238e78cb0e24aa29a
5
5
  SHA512:
6
- metadata.gz: eae3b21bc2932fd555f5a5368a4a01a49c9ea6ecf301d6c42dfdea4c93acedc00d8928513b3522dd995c0717c092b1109c5e8f69ae2169c142cc2d98eff0bdd0
7
- data.tar.gz: 167da2b15af3a4d20a5dbb4723520fca0ca393cad64ba6f57695633bb999f61ac0b6c6fe8738d5d8fab69f5a571ad3975fab8774743d8f878102144a6364d984
6
+ metadata.gz: cfe8e4dcc247ea4c4934ea29297a0c4daa3bebf2a456d2d064dee847f1028a10e262b6ccbeafcd986c5d9a1ac75550de632165c9ab53dfecf215fe90dccea9ad
7
+ data.tar.gz: 3bdad6a98ef95b44e8985100f9c9530a56e60dab89bc530a31b0db80e641631e93c7528787a57ef6ac3dfc44208b6a753fd05caaa7cfc2e55638f9786eb1c243
@@ -11,6 +11,7 @@
11
11
  @import 'pb_dashboard_value/dashboard_value';
12
12
  @import 'pb_date/date';
13
13
  @import 'pb_date_range_inline/date_range_inline';
14
+ @import 'pb_date_stacked/date_stacked';
14
15
  @import 'pb_date_year_stacked/date_year_stacked';
15
16
  @import 'pb_distribution_bar/distribution_bar';
16
17
  @import 'pb_fixed_confirmation_toast/fixed_confirmation_toast';
@@ -27,11 +28,13 @@
27
28
  @import 'pb_list/list';
28
29
  @import 'pb_loading_inline/loading_inline';
29
30
  @import 'pb_message/message';
31
+ @import 'pb_multiple_users/multiple_users';
30
32
  @import 'pb_nav/nav';
31
33
  @import 'pb_online_status/online_status';
32
34
  @import 'pb_person/person';
33
35
  @import 'pb_person_contact/person_contact';
34
36
  @import 'pb_pill/pill';
37
+ @import 'pb_progress_pills/progress_pills';
35
38
  @import 'pb_progress_simple/progress_simple';
36
39
  @import 'pb_section_separator/section_separator';
37
40
  @import 'pb_source/source';
@@ -28,11 +28,13 @@ import List from "./pb_list/_list.jsx"
28
28
  import ListItem from "./pb_list/_list_item.jsx"
29
29
  import LoadingInline from "./pb_loading_inline/_loading_inline.jsx"
30
30
  import Message from "./pb_message/_message.jsx"
31
+ import MultipleUsers from "./pb_multiple_users/_multiple_users.jsx"
31
32
  import Nav from "./pb_nav/_nav.jsx"
32
33
  import OnlineStatus from "./pb_online_status/_online_status.jsx"
33
34
  import Person from "./pb_person/_person.jsx"
34
35
  import PersonContact from "./pb_person_contact/_person_contact.jsx"
35
36
  import Pill from "./pb_pill/_pill.jsx"
37
+ import ProgressPills from "./pb_progress_pills/_progress_pills.jsx"
36
38
  import ProgressSimple from "./pb_progress_simple/_progress_simple.jsx"
37
39
  import SectionSeparator from "./pb_section_separator/_section_separator.jsx"
38
40
  import Source from "./pb_source/_source.jsx"
@@ -94,12 +96,14 @@ export {
94
96
  ListItem,
95
97
  LoadingInline,
96
98
  Message,
99
+ MultipleUsers,
97
100
  Nav,
98
101
  OnlineStatus,
99
102
  pbChart,
100
103
  Person,
101
104
  PersonContact,
102
105
  Pill,
106
+ ProgressPills,
103
107
  ProgressSimple,
104
108
  SectionSeparator,
105
109
  Source,
@@ -0,0 +1,4 @@
1
+ import DateStacked from "../pb_date_stacked/_date_stacked.jsx";
2
+
3
+ import WebpackerReact from "webpacker-react";
4
+ WebpackerReact.setup({ DateStacked });
@@ -0,0 +1,4 @@
1
+ import MultipleUsers from "../pb_multiple_users/_multiple_users.jsx";
2
+
3
+ import WebpackerReact from "webpacker-react";
4
+ WebpackerReact.setup({ MultipleUsers });
@@ -0,0 +1,4 @@
1
+ import ProgressPills from "../pb_progress_pills/_progress_pills.jsx";
2
+
3
+ import WebpackerReact from "webpacker-react";
4
+ WebpackerReact.setup({ ProgressPills });
@@ -25,6 +25,7 @@ import * as Currency from "pb_currency/docs";
25
25
  import * as DashboardValue from "pb_dashboard_value/docs";
26
26
  import * as Date from "pb_date/docs";
27
27
  import * as DateRangeInline from "pb_date_range_inline/docs";
28
+ import * as DateStacked from "pb_date_stacked/docs";
28
29
  import * as DateYearStacked from "pb_date_year_stacked/docs";
29
30
  import * as DistributionBar from "pb_distribution_bar/docs";
30
31
  import * as FixedConfirmationToast from "pb_fixed_confirmation_toast/docs";
@@ -41,11 +42,13 @@ import * as LineGraph from "pb_line_graph/docs";
41
42
  import * as list from "pb_list/docs";
42
43
  import * as LoadingInline from "pb_loading_inline/docs";
43
44
  import * as Message from "pb_message/docs";
45
+ import * as MultipleUsers from "pb_multiple_users/docs";
44
46
  import * as Nav from "pb_nav/docs";
45
47
  import * as OnlineStatus from "pb_online_status/docs";
46
48
  import * as Person from "pb_person/docs";
47
49
  import * as PersonContact from "pb_person_contact/docs";
48
50
  import * as Pill from "pb_pill/docs";
51
+ import * as ProgressPills from "pb_progress_pills/docs";
49
52
  import * as ProgressSimple from "pb_progress_simple/docs";
50
53
  import * as SectionSeparator from "pb_section_separator/docs";
51
54
  import * as Source from "pb_source/docs";
@@ -76,6 +79,7 @@ WebpackerReact.setup (Currency);
76
79
  WebpackerReact.setup (DashboardValue);
77
80
  WebpackerReact.setup (Date);
78
81
  WebpackerReact.setup (DateRangeInline);
82
+ WebpackerReact.setup (DateStacked);
79
83
  WebpackerReact.setup (DateYearStacked);
80
84
  WebpackerReact.setup (DistributionBar);
81
85
  WebpackerReact.setup (FixedConfirmationToast);
@@ -92,11 +96,13 @@ WebpackerReact.setup (LineGraph);
92
96
  WebpackerReact.setup (list);
93
97
  WebpackerReact.setup (LoadingInline);
94
98
  WebpackerReact.setup (Message);
99
+ WebpackerReact.setup (MultipleUsers);
95
100
  WebpackerReact.setup (Nav);
96
101
  WebpackerReact.setup (OnlineStatus);
97
102
  WebpackerReact.setup (Person);
98
103
  WebpackerReact.setup (PersonContact);
99
104
  WebpackerReact.setup (Pill);
105
+ WebpackerReact.setup (ProgressPills);
100
106
  WebpackerReact.setup (ProgressSimple);
101
107
  WebpackerReact.setup (SectionSeparator);
102
108
  WebpackerReact.setup (Source);
@@ -11,6 +11,7 @@ import "../kits/pb_currency.js";
11
11
  import "../kits/pb_dashboard_value.js";
12
12
  import "../kits/pb_date.js";
13
13
  import "../kits/pb_date_range_inline.js";
14
+ import "../kits/pb_date_stacked.js";
14
15
  import "../kits/pb_date_year_stacked.js";
15
16
  import "../kits/pb_distribution_bar.js";
16
17
  import "../kits/pb_fixed_confirmation_toast.js";
@@ -26,11 +27,13 @@ import "../kits/pb_layout.js";
26
27
  import "../kits/pb_line_graph.js";
27
28
  import "../kits/pb_loading_inline.js";
28
29
  import "../kits/pb_message.js";
30
+ import "../kits/pb_multiple_users.js";
29
31
  import "../kits/pb_nav.js";
30
32
  import "../kits/pb_online_status.js";
31
33
  import "../kits/pb_person.js";
32
34
  import "../kits/pb_person_contact.js";
33
35
  import "../kits/pb_pill.js";
36
+ import "../kits/pb_progress_pills.js";
34
37
  import "../kits/pb_progress_simple.js";
35
38
  import "../kits/pb_section_separator.js";
36
39
  import "../kits/pb_source.js";
@@ -47,3 +50,5 @@ import "../kits/pb_title_detail.js";
47
50
  import "../kits/pb_toggle.js";
48
51
  import "../kits/pb_user.js";
49
52
  import "../kits/pb_user_badge.js";
53
+
54
+
@@ -15,6 +15,7 @@
15
15
  @include doc-color($background_colors);
16
16
  @include doc-color($card_colors);
17
17
  @include doc-color($active_colors);
18
+ @include doc-color($action_colors);
18
19
  @include doc-color($hover_colors);
19
20
  @include doc-color($border_colors);
20
21
  @include doc-color($shadow_colors);
@@ -10,9 +10,9 @@ import { Image } from "../"
10
10
  type AvatarProps = {
11
11
  className?: String,
12
12
  name: String,
13
+ imageUrl: String,
13
14
  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl',
14
15
  status: 'online' | 'away',
15
- url: String,
16
16
  }
17
17
 
18
18
  const initials = function(name) {
@@ -21,11 +21,11 @@ const initials = function(name) {
21
21
  }
22
22
  }
23
23
 
24
- const image = function(url, name) {
25
- if (url) {
24
+ const image = function(imageUrl, name) {
25
+ if (imageUrl) {
26
26
  return (
27
27
  <Image alt={name}
28
- url={url}
28
+ url={imageUrl}
29
29
  />
30
30
  )
31
31
  }
@@ -38,10 +38,22 @@ const PbStatus = ({ size, status } : { size: String, status: String }) => (
38
38
  const Avatar = ({
39
39
  className,
40
40
  name=null,
41
+ imageUrl,
41
42
  size='md',
42
- status,
43
- url
43
+ status=null
44
44
  }: AvatarProps) => {
45
+
46
+ const statusDisplay = () => {
47
+ if(status !== null){
48
+ return (
49
+ <PbStatus
50
+ size={size}
51
+ status={status}
52
+ />
53
+ );
54
+ }
55
+ }
56
+
45
57
  const css = classnames([
46
58
  `pb_avatar_kit`,
47
59
  `avatar_${size}`,
@@ -52,16 +64,13 @@ const Avatar = ({
52
64
  <div className={css}
53
65
  data-initials={initials(name)}
54
66
  >
55
- <div
67
+ <div
56
68
  className="avatar_wrapper"
57
69
  data-initials={initials(name)}
58
70
  >
59
- {image(url, name)}
71
+ {image(imageUrl, name)}
60
72
  </div>
61
- <PbStatus
62
- size={size}
63
- status={status}
64
- />
73
+ {statusDisplay()}
65
74
  </div>
66
75
  )
67
76
  }
@@ -5,38 +5,38 @@ function AvatarDefault() {
5
5
  return (
6
6
  <div>
7
7
  <Avatar
8
+ imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
8
9
  name="Terry Johnson"
9
10
  size="xs"
10
11
  status="online"
11
- url="https://randomuser.me/api/portraits/men/44.jpg"
12
12
  />
13
13
  <br/>
14
14
  <Avatar
15
+ imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
15
16
  name="Terry Johnson"
16
17
  size="sm"
17
18
  status="online"
18
- url="https://randomuser.me/api/portraits/men/44.jpg"
19
19
  />
20
20
  <br/>
21
21
  <Avatar
22
+ imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
22
23
  name="Terry Johnson"
23
24
  size="md"
24
25
  status="away"
25
- url="https://randomuser.me/api/portraits/men/44.jpg"
26
26
  />
27
27
  <br/>
28
28
  <Avatar
29
+ imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
29
30
  name="Terry Johnson"
30
31
  size="lg"
31
32
  status="offline"
32
- url="https://randomuser.me/api/portraits/men/44.jpg"
33
33
  />
34
34
  <br/>
35
35
  <Avatar
36
+ imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
36
37
  name="Terry Johnson"
37
38
  size="xl"
38
39
  status="offline"
39
- url="https://randomuser.me/api/portraits/men/44.jpg"
40
40
  />
41
41
  </div>
42
42
  )
@@ -28,7 +28,7 @@ module Playbook
28
28
  title: title,
29
29
  subtitle: subtitle,
30
30
  axisTitle: axis_title,
31
- pointStart: point_start
31
+ pointStart: point_start,
32
32
  }.to_json.html_safe
33
33
  end
34
34
 
@@ -22,7 +22,6 @@ module Playbook
22
22
 
23
23
  private
24
24
 
25
-
26
25
  def dark_class
27
26
  dark ? "dark" : nil
28
27
  end
@@ -1,36 +1,48 @@
1
1
  /* @flow */
2
2
 
3
3
  import React from 'react'
4
+ import classnames from 'classnames'
4
5
 
5
6
  type CardPropTypes = {
6
7
  children: Array<React.ReactNode> | React.ReactNode,
8
+ className?: String,
9
+ highlight?: {
10
+ position?: String,
11
+ color?: String
12
+ },
7
13
  padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl',
8
14
  selected?: Boolean,
9
15
  shadow?: 'none' | 'shallow' | 'default' | 'deep' | 'deeper' | 'deepest',
10
16
  }
11
17
 
12
18
  const cardCSS = ({
19
+ highlight={},
13
20
  selected=false,
14
- shadow='none',
21
+ shadow='none'
15
22
  }: CardPropTypes) => {
16
- let css = ''
23
+ let css = 'pb_card_kit'
24
+ css += highlight.position ? `_highlight_${highlight.position}` : null
25
+ css += highlight.color ? `_highlight_${highlight.color}` : null
17
26
  css += selected ? '_selected' : '_deselected'
18
27
  css += `_shadow_${shadow}`
19
28
  return css
20
29
  }
21
30
 
22
31
  const bodyCSS = ({padding='md'}: CardPropTypes) => {
23
- let css = ''
32
+ let css = 'pb_card_body_kit'
24
33
  css += `_${padding}`
25
34
  return css
26
35
  }
27
36
 
28
37
  const Card = (props: CardPropTypes) => {
29
- const {children} = props
38
+ const {
39
+ children,
40
+ className
41
+ } = props
30
42
 
31
43
  return (
32
- <div className={`pb_card_kit${cardCSS(props)}`}>
33
- <div className={`pb_card_body_kit${bodyCSS(props)}`}>
44
+ <div className={classnames(cardCSS(props), className)}>
45
+ <div className={bodyCSS(props)}>
34
46
  { children }
35
47
  </div>
36
48
  </div>
@@ -6,6 +6,8 @@
6
6
 
7
7
  $pb_card_border_width: 1px;
8
8
  $pb_card_border_radius: $border_rad_heavier;
9
+ $pb_card_highlight_colors: map-merge($status_colors, $product_colors);
10
+ $pb_card_highlight_size: 4px;
9
11
 
10
12
  [class^=pb_card_kit] {
11
13
  position: relative;
@@ -29,4 +31,35 @@ $pb_card_border_radius: $border_rad_heavier;
29
31
  box-shadow: $shadow;
30
32
  }
31
33
  }
34
+
35
+ @mixin pb_card_highlight($width, $height, $background){
36
+ content: "";
37
+ position: absolute;
38
+ top: 0;
39
+ left: 0;
40
+ width: $width;
41
+ height: $height;
42
+ background: $background;
43
+ z-index: 10;
44
+ }
45
+
46
+ &[class*=_highlight] {
47
+ overflow: hidden;
48
+ }
49
+
50
+ &[class*=_highlight_side] {
51
+ @each $color_name, $color_value in $pb_card_highlight_colors {
52
+ &[class*=_highlight_#{$color_name}]::before {
53
+ @include pb_card_highlight(100%, $pb_card_highlight_size, $color_value);
54
+ }
55
+ }
56
+ }
57
+
58
+ &[class*=_highlight_top] {
59
+ @each $color_name, $color_value in $pb_card_highlight_colors {
60
+ &[class*=_highlight_#{$color_name}]::before {
61
+ @include pb_card_highlight($pb_card_highlight_size, 100%, $color_value);
62
+ }
63
+ }
64
+ }
32
65
  }
@@ -14,9 +14,15 @@ module Playbook
14
14
  prop :shadow, type: Playbook::Props::Enum,
15
15
  values: %w[none shallow default deep deeper deepest],
16
16
  default: "none"
17
+ prop :highlight, type: Playbook::Props::Hash,
18
+ default: {}
17
19
 
18
20
  def classname
19
- generate_classname("pb_card_kit", selected_class, shadow_class)
21
+ generate_classname("pb_card_kit",
22
+ selected_class,
23
+ shadow_class,
24
+ highlight_position_class,
25
+ highlight_color_class)
20
26
  end
21
27
 
22
28
  private
@@ -28,6 +34,14 @@ module Playbook
28
34
  def shadow_class
29
35
  shadow != "none" ? "shadow_#{shadow}" : nil
30
36
  end
37
+
38
+ def highlight_position_class
39
+ highlight[:position].present? ? "highlight_#{highlight[:position]}" : nil
40
+ end
41
+
42
+ def highlight_color_class
43
+ highlight[:color].present? ? "highlight_#{highlight[:color]}" : nil
44
+ end
31
45
  end
32
46
  end
33
47
  end
@@ -0,0 +1,9 @@
1
+ <%= pb_rails("card", props: {highlight: {position: "side", color:"windows"}}) do %>
2
+ Card content
3
+ <% end %>
4
+
5
+ <br>
6
+
7
+ <%= pb_rails("card", props: {highlight: {position: "top", color:"warning"}}) do %>
8
+ Card content
9
+ <% end %>
@@ -0,0 +1,20 @@
1
+ import React from 'react'
2
+ import {Card} from '../../'
3
+
4
+ function CardHighlight() {
5
+ return (
6
+ <div>
7
+ <Card highlight={{position: "side", color: "windows"}}>
8
+ {`Card content`}
9
+ </Card>
10
+
11
+ <br/>
12
+
13
+ <Card highlight={{position: "top", color: "warning"}}>
14
+ {`Card content`}
15
+ </Card>
16
+ </div>
17
+ )
18
+ }
19
+
20
+ export default CardHighlight