playbook_ui 2.9.8 → 2.9.9

Sign up to get free protection for your applications and to get access to all the features.
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