playbook_ui 5.1.0 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -0
  3. data/app/pb_kits/playbook/data/menu.yml +1 -0
  4. data/app/pb_kits/playbook/packs/site_styles/docs/_all.scss +1 -0
  5. data/app/pb_kits/playbook/packs/site_styles/docs/_bg_light_doc_example.scss +7 -0
  6. data/app/pb_kits/playbook/pb_badge/_badge.html.erb +1 -0
  7. data/app/pb_kits/playbook/pb_badge/_badge.jsx +17 -4
  8. data/app/pb_kits/playbook/pb_card/_card.jsx +4 -1
  9. data/app/pb_kits/playbook/pb_card/_card.scss +4 -0
  10. data/app/pb_kits/playbook/pb_card/card.rb +8 -1
  11. data/app/pb_kits/playbook/pb_card/docs/_card_border_none.html.erb +7 -0
  12. data/app/pb_kits/playbook/pb_card/docs/_card_border_none.jsx +14 -0
  13. data/app/pb_kits/playbook/pb_card/docs/_card_border_none.md +1 -0
  14. data/app/pb_kits/playbook/pb_card/docs/example.yml +2 -0
  15. data/app/pb_kits/playbook/pb_card/docs/index.js +1 -0
  16. data/app/pb_kits/playbook/pb_layout/_footer.html.erb +6 -0
  17. data/app/pb_kits/playbook/pb_layout/_header.html.erb +6 -0
  18. data/app/pb_kits/playbook/pb_layout/_layout.jsx +33 -1
  19. data/app/pb_kits/playbook/pb_layout/_layout.scss +48 -3
  20. data/app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.html.erb +19 -0
  21. data/app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.jsx +54 -0
  22. data/app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.md +1 -0
  23. data/app/pb_kits/playbook/pb_layout/docs/_layout_content.html.erb +28 -0
  24. data/app/pb_kits/playbook/pb_layout/docs/_layout_content.jsx +42 -0
  25. data/app/pb_kits/playbook/pb_layout/docs/example.yml +6 -0
  26. data/app/pb_kits/playbook/pb_layout/docs/index.js +3 -0
  27. data/app/pb_kits/playbook/pb_layout/footer.rb +19 -0
  28. data/app/pb_kits/playbook/pb_layout/header.rb +19 -0
  29. data/app/pb_kits/playbook/pb_layout/layout.rb +9 -4
  30. data/lib/playbook/version.rb +1 -1
  31. metadata +17 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a8d8c6c2c9c9023bc7a1d13726ffaa74f84a439c54e65c8df70e9602cb656e0
4
- data.tar.gz: 8ff522a820d3badc6bdebd77098e419be9de5079555463d3d3dbf1ac4b7fc064
3
+ metadata.gz: bd87d19dffeb68dba4372b1282cf12fcb1cace3acda84f7119a902fc205e7e1f
4
+ data.tar.gz: e5f41cf298f15483eb5299b27837c83cac6e74e265b446fe6ff819742ff18b48
5
5
  SHA512:
6
- metadata.gz: 67b570c8d5640065d08d15ecbdca7b2a5819f995083e13cf0dad71c78c9211d6eabbf7fe42c29ae643299ea3c039a230f3e7e4e476b0985e89fa4ea0a48a3f32
7
- data.tar.gz: 98b172e1ea8677e5e8a67605cff95f5f0e16117e993646a5eac811cda4fe0cf0808531e36605fc551f3a7862e43bc594e2bb2ac34108342508ec5c5fcfdbf8b7
6
+ metadata.gz: e7a8e97e476695635a7ca42bbbd831a20b9ff5e48665a7246b723ef2eacdd418864ba2dcec08b602e7fa35362fccf15685e56d91371442a3149ae2eef6d30615
7
+ data.tar.gz: 6d58ee0d87a24bdf4912e774c4f0ea33480be6007ba5ffd8cd6f2145bd4b27bbbf233a5288f691a3635f445944eccd0f4196c098cfd6e24e7396ed0580999ecc
data/README.md CHANGED
@@ -52,3 +52,15 @@ See [docs/upgrade-guide](./docs/upgrade-guide)
52
52
  * [Using a Kit within a Kit](https://github.com/powerhome/playbook/wiki/Using-a-Kit-within-a-Kit)
53
53
  * [Understanding Rails Kit HTML Wrapper](https://github.com/powerhome/playbook/wiki/Understanding-Rails-Kit-HTML-Wrapper)
54
54
  * [Kit Stylesheet](https://github.com/powerhome/playbook/wiki/Kit-Stylesheet)
55
+
56
+ ### Testing Playbook Kits Locally
57
+
58
+ #### Testing React Kits locally
59
+ 1. Inside of your Playbook repository, run `yarn link`.
60
+ 2. Inside of the directory you want to test with playbook, run `yarn link playbook-ui`.
61
+ 3. Run `yarn hmr` in your directory you want to test with playbook, and hard refresh (command + shift + R) your browser.
62
+ 4. Test all the things!
63
+ 5. When finished, inside of the directory you want to test with playbook, run `yarn unlink playbook-ui`.
64
+ 6. Inside of your Playbook repository, run `yarn unlink`.
65
+
66
+ Keep in mind: Styles are brought in from playbook through the rails gem, so you will not be able to test scss updates with yarn linking.
@@ -91,3 +91,4 @@ kits:
91
91
  - title_detail
92
92
  - weekday_stacked
93
93
  - user
94
+ - user_badge
@@ -2,6 +2,7 @@
2
2
  @import "flex_examples";
3
3
  @import "code_snippet";
4
4
  @import "kit_doc";
5
+ @import "bg_light_doc_example";
5
6
 
6
7
  @import "color_utilities";
7
8
  @import "spacing_tokens";
@@ -0,0 +1,7 @@
1
+ @import "../../../tokens/colors";
2
+ @import "../../../tokens/spacing";
3
+
4
+ .bg-light-doc-example {
5
+ background: $bg_light;
6
+ padding: $space_lg;
7
+ }
@@ -1,4 +1,5 @@
1
1
  <%= content_tag(:div,
2
+ aria: object.aria,
2
3
  id: object.id,
3
4
  data: object.data,
4
5
  class: object.classname) do %>
@@ -2,26 +2,37 @@
2
2
 
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
- import { buildCss } from '../utilities/props'
6
5
  import { spacing } from '../utilities/spacing.js'
7
6
 
7
+ import {
8
+ buildAriaProps,
9
+ buildCss,
10
+ buildDataProps,
11
+ } from '../utilities/props'
12
+
8
13
  type BadgeProps = {
14
+ aria?: object,
9
15
  className?: String,
10
16
  dark?: Boolean,
17
+ data?: object,
11
18
  id?: String,
12
- text?: String,
13
- variant?: "success" | "warning" | "error" | "info" | "neutral",
14
19
  rounded?: Boolean,
20
+ text?: String,
21
+ variant?: "error" | "info" | "neutral" | "primary" | "success" | "warning",
15
22
  }
16
23
  const Badge = (props: BadgeProps) => {
17
24
  const {
25
+ aria = {},
18
26
  className,
19
27
  dark = false,
28
+ data = {},
20
29
  id,
30
+ rounded = false,
21
31
  text,
22
32
  variant = 'neutral',
23
- rounded = false,
24
33
  } = props
34
+ const ariaProps = buildAriaProps(aria)
35
+ const dataProps = buildDataProps(data)
25
36
  const css = classnames(
26
37
  className,
27
38
  buildCss('pb_badge_kit', variant, {
@@ -33,6 +44,8 @@ const Badge = (props: BadgeProps) => {
33
44
 
34
45
  return (
35
46
  <div
47
+ {...ariaProps}
48
+ {...dataProps}
36
49
  className={css}
37
50
  id={id}
38
51
  >
@@ -16,6 +16,7 @@ type CardPropTypes = {
16
16
  selected?: Boolean,
17
17
  shadow?: "none" | "deep" | "deeper" | "deepest",
18
18
  dark?: Boolean,
19
+ borderNone?: Boolean,
19
20
  }
20
21
 
21
22
  type CardHeaderProps = {
@@ -62,9 +63,11 @@ const Card = (props: CardPropTypes) => {
62
63
  highlight = {},
63
64
  selected = false,
64
65
  shadow = 'none',
66
+ borderNone = false,
65
67
  } = props
66
68
  const bodyCSS = buildCss('pb_card_body_kit')
67
- const cardCss = buildCss('pb_card_kit', `shadow_${shadow}`, {
69
+ const borderCSS = borderNone == true ? 'border_none' : ''
70
+ const cardCss = buildCss('pb_card_kit', `shadow_${shadow}`, `${borderCSS}`, {
68
71
  dark: dark,
69
72
  selected,
70
73
  deselected: !selected,
@@ -16,6 +16,10 @@
16
16
  }
17
17
  }
18
18
 
19
+ &[class*=_border_none] {
20
+ border-width: 0px;
21
+ }
22
+
19
23
  [class^=pb_card_header_kit] {
20
24
  flex-grow: 0;
21
25
  flex-shrink: 0;
@@ -15,6 +15,8 @@ module Playbook
15
15
  default: {}
16
16
  prop :dark, type: Playbook::Props::Boolean,
17
17
  default: false
18
+ prop :border_none, type: Playbook::Props::Boolean,
19
+ default: false
18
20
 
19
21
  def classname
20
22
  generate_classname("pb_card_kit",
@@ -22,7 +24,8 @@ module Playbook
22
24
  shadow_class,
23
25
  highlight_position_class,
24
26
  highlight_color_class,
25
- dark_class)
27
+ dark_class,
28
+ border_class)
26
29
  end
27
30
 
28
31
  def body_padding
@@ -55,6 +58,10 @@ module Playbook
55
58
  def dark_class
56
59
  dark ? "dark" : nil
57
60
  end
61
+
62
+ def border_class
63
+ border_none == true ? "border_none" : nil
64
+ end
58
65
  end
59
66
  end
60
67
  end
@@ -0,0 +1,7 @@
1
+ <div class="bg-light-doc-example">
2
+
3
+ <%= pb_rails("card", props: { border_none: true }) do %>
4
+ Card content
5
+ <% end %>
6
+
7
+ </div>
@@ -0,0 +1,14 @@
1
+ import React from 'react'
2
+ import Card from '../_card.jsx'
3
+
4
+ const CardBorderNone = () => {
5
+ return (
6
+ <div className="bg-light-doc-example">
7
+
8
+ <Card borderNone>{'Card content'}</Card>
9
+
10
+ </div>
11
+ )
12
+ }
13
+
14
+ export default CardBorderNone
@@ -0,0 +1 @@
1
+ Remove card border <b>only</b> for dashboard cards.
@@ -9,6 +9,7 @@ examples:
9
9
  - card_shadow: Shadow Size
10
10
  - card_content: Content Size
11
11
  - card_separator: Separator Card
12
+ - card_border_none: No Border
12
13
  react:
13
14
  - card_light: Default
14
15
  - card_dark: Dark Cards
@@ -19,3 +20,4 @@ examples:
19
20
  - card_shadow: Shadow Size
20
21
  - card_content: Content Size
21
22
  - card_separator: Separator Card
23
+ - card_border_none: No Border
@@ -7,3 +7,4 @@ export { default as CardShadow } from './_card_shadow.jsx'
7
7
  export { default as CardContent } from './_card_content.jsx'
8
8
  export { default as CardSeparator } from './_card_separator.jsx'
9
9
  export { default as CardDark } from './_card_dark.jsx'
10
+ export { default as CardBorderNone } from './_card_border_none.jsx'
@@ -0,0 +1,6 @@
1
+ <%= content_tag(object.tag,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname) do %>
5
+ <%= capture(&object.children) %>
6
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <%= content_tag(object.tag,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname) do %>
5
+ <%= capture(&object.children) %>
6
+ <% end %>
@@ -19,7 +19,7 @@ type LayoutPropTypes = {
19
19
  size?: "xs" | "sm" | "md" | "base" | "lg" | "xl",
20
20
  variant?: "light" | "dark" | "gradient",
21
21
  transparent?: Boolean,
22
- layout?: "sidebar" | "collection" | "kanban",
22
+ layout?: "sidebar" | "collection" | "kanban" | "content",
23
23
  }
24
24
 
25
25
  type LayoutSideProps = {
@@ -32,6 +32,16 @@ type LayoutBodyProps = {
32
32
  className?: String,
33
33
  }
34
34
 
35
+ type LayoutHeaderProps = {
36
+ children: Array<React.ReactNode> | React.ReactNode,
37
+ className?: String,
38
+ }
39
+
40
+ type LayoutFooterProps = {
41
+ children: Array<React.ReactNode> | React.ReactNode,
42
+ className?: String,
43
+ }
44
+
35
45
  // Side component
36
46
  const Side = (props: LayoutSideProps) => {
37
47
  const { children, className } = props
@@ -52,6 +62,26 @@ const Body = (props: LayoutBodyProps) => {
52
62
  )
53
63
  }
54
64
 
65
+ // Header component
66
+ const Header = (props: LayoutHeaderProps) => {
67
+ const { children, className } = props
68
+ return (
69
+ <div className={classnames('layout_header', className, spacing(props))}>
70
+ {children}
71
+ </div>
72
+ )
73
+ }
74
+
75
+ // Footer component
76
+ const Footer = (props: LayoutFooterProps) => {
77
+ const { children, className } = props
78
+ return (
79
+ <div className={classnames('layout_footer', className, spacing(props))}>
80
+ {children}
81
+ </div>
82
+ )
83
+ }
84
+
55
85
  // Main componenet
56
86
 
57
87
  const Layout = (props: LayoutPropTypes) => {
@@ -129,5 +159,7 @@ const Layout = (props: LayoutPropTypes) => {
129
159
 
130
160
  Layout.Side = Side
131
161
  Layout.Body = Body
162
+ Layout.Header = Header
163
+ Layout.Footer = Footer
132
164
 
133
165
  export default Layout
@@ -17,7 +17,7 @@ $card-border-radius: $border_rad_lightest;
17
17
  &[class*=_collection]{
18
18
  div.layout_body{
19
19
  display: grid;
20
- grid-template-rows: 1fr;
20
+ grid-auto-rows: max-content;
21
21
  grid-column-gap: $space_sm;
22
22
  grid-row-gap: $space_sm;
23
23
  grid-template-columns: repeat(4, 1fr);
@@ -28,8 +28,24 @@ $card-border-radius: $border_rad_lightest;
28
28
  @media screen and (max-width: $screen-xs-min) {
29
29
  grid-template-columns: repeat(1, 1fr);
30
30
  }
31
- }
32
-
31
+ }
32
+ }
33
+
34
+ &[class*=_collection_detail]{
35
+ display: grid;
36
+ width: 100%;
37
+ height: 100%;
38
+ grid-template-areas:
39
+ "side-bar collection";
40
+ grid-template-columns: .25fr 1fr;
41
+ grid-column-gap: $space_sm;
42
+
43
+ @media screen and (max-width: $screen-md-min) {
44
+ grid-template-areas: "side-bar"
45
+ "collection";
46
+ grid-template-columns: 1fr;
47
+ grid-row-gap: $space_sm;
48
+ }
33
49
  }
34
50
 
35
51
  &[class*=_kanban]{
@@ -61,6 +77,35 @@ $card-border-radius: $border_rad_lightest;
61
77
  }
62
78
  }
63
79
 
80
+ &[class*=_content]{
81
+ display: grid;
82
+ grid-template-columns: repeat(5, 1fr);
83
+ grid-template-rows: .5fr repeat(3, 1fr) .5fr;
84
+ grid-column-gap: 0px;
85
+ grid-row-gap: 0px;
86
+ grid-template-areas:
87
+ "h h h h h"
88
+ "s b b b b"
89
+ "s b b b b"
90
+ "s b b b b"
91
+ "s f f f f";
92
+ div.layout_header{
93
+ grid-area: h;
94
+ padding-bottom: $space_sm;
95
+ }
96
+ div.layout_sidebar{
97
+ grid-area: s;
98
+ padding-right: $space_sm;
99
+ }
100
+ div.layout_body{
101
+ grid-area: b;
102
+ }
103
+ div.layout_footer{
104
+ grid-area: f;
105
+ padding-top: $space_sm;
106
+ }
107
+ }
108
+
64
109
  // For future release as of 6/18/2020
65
110
  &[class*=_kanban_responsive] {
66
111
  display: grid;
@@ -0,0 +1,19 @@
1
+ <%= pb_rails("layout", props: {position: "left", size: "sm", collapse: "md", layout: "collection_detail" }) do %>
2
+ <%= pb_rails("layout/sidebar") do %>
3
+ <%= pb_rails("card", props: { margin_right: "md", padding: "none" }) do %>
4
+ <%= pb_rails("nav", props: {title: "Menu", link: "#", padding_top:"md" }) do %>
5
+ <%= pb_rails("nav/item", props: { text: "Photos", link: "#" }) %>
6
+ <%= pb_rails("nav/item", props: { text: "Music", link: "#" }) %>
7
+ <%= pb_rails("nav/item", props: { text: "Video", link: "#", active: true }) %>
8
+ <%= pb_rails("nav/item", props: { text: "Files", link: "#" }) %>
9
+ <% end %>
10
+ <% end %>
11
+ <% end %>
12
+
13
+ <%= pb_rails("layout/body") do %>
14
+ <% 25.times do %>
15
+ <%= pb_rails("card") do %> Card content <% end %>
16
+ <% end %>
17
+
18
+ <% end %>
19
+ <% end %>
@@ -0,0 +1,54 @@
1
+ import React from 'react'
2
+ import { Card, Layout, Nav, NavItem } from '../../'
3
+ const Cards = ({ n }) => {
4
+ const cards = []
5
+ for (let i = 0; i < n; ++i) {
6
+ cards.push(<Card>{'Card content'}</Card>)
7
+ }
8
+ return (cards)
9
+ }
10
+
11
+ const LayoutCollectionDetail = () => {
12
+ return (
13
+ <div>
14
+ <Layout
15
+ layout="collection_detail"
16
+ >
17
+ <Card padding="none">
18
+ {
19
+ <Nav
20
+ link="#"
21
+ marginTop="sm"
22
+ orientation="vertical"
23
+ title="Menu"
24
+ >
25
+ <NavItem
26
+ link="#"
27
+ text="Photos"
28
+ />
29
+ <NavItem
30
+ link="#"
31
+ text="Music"
32
+ />
33
+ <NavItem
34
+ active
35
+ link="#"
36
+ text="Video"
37
+ />
38
+ <NavItem
39
+ link="#"
40
+ text="Files"
41
+ />
42
+ </Nav>
43
+ }
44
+ </Card>
45
+
46
+ <Layout.Body>
47
+ <Cards n={16} />
48
+ </Layout.Body>
49
+ </Layout>
50
+ </div>
51
+ )
52
+ }
53
+
54
+ export default LayoutCollectionDetail
@@ -0,0 +1 @@
1
+ The left element on Collection Detail can be used for things such as navigation or secondary content to the element on the right. The right content can be used the same way that you would use Collection. The element on the right should be the primary focus and can be used for repeating elements such as cards.
@@ -0,0 +1,28 @@
1
+ <%= pb_rails("layout", props: {layout: "content" }) do %>
2
+ <%= pb_rails("layout/header") do %>
3
+ <%= pb_rails("card") do %>
4
+ Header
5
+ <% end %>
6
+ <% end %>
7
+ <%= pb_rails("layout/sidebar") do %>
8
+ <%= pb_rails("card") do %>
9
+ Sidebar
10
+ <br><br>
11
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec iaculis, risus a fringilla luctus, sapien eros sodales ex, quis molestie est nulla non turpis. Vestibulum aliquet at ipsum eget posuere. Morbi sed laoreet erat. Sed commodo posuere lectus, at porta nulla ornare a. Suspendisse quam est, sollicitudin ut enim sit amet, commodo placerat enim. Donec laoreet metus ac mauris pellentesque mattis.
12
+ <% end %>
13
+ <% end %>
14
+ <%= pb_rails("layout/body") do %>
15
+ <%= pb_rails("card") do %>
16
+ Body
17
+ <br><br>
18
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec iaculis, risus a fringilla luctus, sapien eros sodales ex, quis molestie est nulla non turpis. Vestibulum aliquet at ipsum eget posuere. Morbi sed laoreet erat. Sed commodo posuere lectus, at porta nulla ornare a. Suspendisse quam est, sollicitudin ut enim sit amet, commodo placerat enim. Donec laoreet metus ac mauris pellentesque mattis. Pellentesque luctus vel mauris non aliquam. Mauris hendrerit mattis porttitor. Curabitur vehicula justo non ex consectetur commodo. Quisque posuere aliquet quam. Maecenas malesuada magna mauris, ac tempor metus euismod at.
19
+ <br><br>
20
+ Cras ornare fermentum magna mollis efficitur. Sed vitae nulla vel purus ultrices mollis. Maecenas id nulla id libero faucibus feugiat quis sit amet turpis. In commodo pellentesque risus at fringilla. Integer non interdum leo, non commodo ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut mi augue, dignissim at orci vel, egestas aliquam mi. Proin finibus aliquet tempor. Integer cursus, ex quis gravida rhoncus, nisi elit viverra ipsum, non efficitur est ex ac tortor. Praesent vitae odio massa.
21
+ <% end %>
22
+ <% end %>
23
+ <%= pb_rails("layout/footer") do %>
24
+ <%= pb_rails("card") do %>
25
+ Footer
26
+ <% end %>
27
+ <% end %>
28
+ <% end %>
@@ -0,0 +1,42 @@
1
+ import React from 'react'
2
+ import { Card, Layout } from '../../'
3
+
4
+ const LayoutContent = () => {
5
+ return (
6
+ <div>
7
+ <Layout layout="content">
8
+ <Layout.Header>
9
+ <Card>
10
+ {'Header'}
11
+ </Card>
12
+ </Layout.Header>
13
+ <Layout.Side>
14
+ <Card>
15
+ {'Sidebar'}
16
+ <br />
17
+ <br />
18
+ {'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec iaculis, risus a fringilla luctus, sapien eros sodales ex, quis molestie est nulla non turpis. Vestibulum aliquet at ipsum eget posuere. Morbi sed laoreet erat. Sed commodo posuere lectus, at porta nulla ornare a. Suspendisse quam est, sollicitudin ut enim sit amet, commodo placerat enim. Donec laoreet metus ac mauris pellentesque mattis.'}
19
+ </Card>
20
+ </Layout.Side>
21
+ <Layout.Body>
22
+ <Card>
23
+ {'Body'}
24
+ <br />
25
+ <br />
26
+ {'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec iaculis, risus a fringilla luctus, sapien eros sodales ex, quis molestie est nulla non turpis. Vestibulum aliquet at ipsum eget posuere. Morbi sed laoreet erat. Sed commodo posuere lectus, at porta nulla ornare a. Suspendisse quam est, sollicitudin ut enim sit amet, commodo placerat enim. Donec laoreet metus ac mauris pellentesque mattis. Pellentesque luctus vel mauris non aliquam. Mauris hendrerit mattis porttitor. Curabitur vehicula justo non ex consectetur commodo. Quisque posuere aliquet quam. Maecenas malesuada magna mauris, ac tempor metus euismod at.'}
27
+ <br />
28
+ <br />
29
+ {'Cras ornare fermentum magna mollis efficitur. Sed vitae nulla vel purus ultrices mollis. Maecenas id nulla id libero faucibus feugiat quis sit amet turpis. In commodo pellentesque risus at fringilla. Integer non interdum leo, non commodo ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut mi augue, dignissim at orci vel, egestas aliquam mi. Proin finibus aliquet tempor. Integer cursus, ex quis gravida rhoncus, nisi elit viverra ipsum, non efficitur est ex ac tortor. Praesent vitae odio massa.'}
30
+ </Card>
31
+ </Layout.Body>
32
+ <Layout.Footer>
33
+ <Card>
34
+ {'Footer'}
35
+ </Card>
36
+ </Layout.Footer>
37
+ </Layout>
38
+ </div>
39
+ )
40
+ }
41
+
42
+ export default LayoutContent
@@ -5,7 +5,10 @@ examples:
5
5
  - layout_sizes: Sizes
6
6
  - layout_sizes_dark: Sizes Dark
7
7
  - layout_collection: Collection Layout
8
+ - layout_collection_detail: Collection Detail Layout
8
9
  - layout_kanban: Kanban Layout
10
+ - layout_content: Content Layout
11
+
9
12
 
10
13
  react:
11
14
  - layout_colors: Colors
@@ -13,4 +16,7 @@ examples:
13
16
  - layout_sizes: Sizes
14
17
  - layout_sizes_dark: Sizes Dark
15
18
  - layout_collection: Collection Layout
19
+ - layout_collection_detail: Collection Detail Layout
16
20
  - layout_kanban: Kanban Layout
21
+ - layout_content: Content Layout
22
+
@@ -5,3 +5,6 @@ export { default as LayoutSizesDark } from './_layout_sizes_dark.jsx'
5
5
  export { default as LayoutCollection } from './_layout_collection.jsx'
6
6
  export { default as LayoutKanban } from './_layout_kanban.jsx'
7
7
  export { default as LayoutKanbanResponsive } from './_layout_kanban_responsive.jsx'
8
+ export { default as LayoutCollectionDetail } from './_layout_collection_detail.jsx'
9
+ export { default as LayoutContent } from './_layout_content.jsx'
10
+
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbLayout
5
+ class Footer
6
+ include Playbook::Props
7
+
8
+ partial "pb_layout/footer"
9
+
10
+ prop :tag, type: Playbook::Props::Enum,
11
+ values: %w[ul li span div],
12
+ default: "div"
13
+
14
+ def classname
15
+ generate_classname("layout_footer")
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbLayout
5
+ class Header
6
+ include Playbook::Props
7
+
8
+ partial "pb_layout/header"
9
+
10
+ prop :tag, type: Playbook::Props::Enum,
11
+ values: %w[ul li span div],
12
+ default: "div"
13
+
14
+ def classname
15
+ generate_classname("layout_header")
16
+ end
17
+ end
18
+ end
19
+ end
@@ -19,12 +19,13 @@ module Playbook
19
19
  default: "md"
20
20
  prop :transparent, type: Playbook::Props::Boolean, default: false
21
21
  prop :variant, type: Playbook::Props::Enum,
22
- values: %w[light dark gradient],
23
- default: "light"
22
+ values: %w[light dark gradient],
23
+ default: "light"
24
24
  prop :layout, type: Playbook::Props::Enum,
25
- values: %w[sidebar collection kanban],
25
+ values: %w[sidebar collection collection_detail kanban content],
26
26
  default: "sidebar"
27
27
 
28
+
28
29
  prop :responsive, type: Playbook::Props::Boolean, default: false
29
30
 
30
31
  def classname
@@ -33,6 +34,10 @@ module Playbook
33
34
  generate_classname("pb_layout_kit", layout)
34
35
  when "kanban"
35
36
  generate_classname("pb_layout_kit", layout, responsive_class)
37
+ when "collection_detail"
38
+ generate_classname("pb_layout_kit", layout )
39
+ when "content"
40
+ generate_classname("pb_layout_kit", layout)
36
41
  else
37
42
  first_class = generate_classname("pb_layout_kit_sidebar","size_#{size}", position, variant, transparent_class)
38
43
  [first_class, full_class, collapse_class].reject(&:empty?).join(" ")
@@ -58,4 +63,4 @@ module Playbook
58
63
  end
59
64
  end
60
65
  end
61
- end
66
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- VERSION = "5.1.0"
4
+ VERSION = "5.3.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-06-26 00:00:00.000000000 Z
12
+ date: 2020-07-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -411,6 +411,7 @@ files:
411
411
  - app/pb_kits/playbook/packs/site_styles/_scaffold.scss
412
412
  - app/pb_kits/playbook/packs/site_styles/_site-style.scss
413
413
  - app/pb_kits/playbook/packs/site_styles/docs/_all.scss
414
+ - app/pb_kits/playbook/packs/site_styles/docs/_bg_light_doc_example.scss
414
415
  - app/pb_kits/playbook/packs/site_styles/docs/_code_snippet.scss
415
416
  - app/pb_kits/playbook/packs/site_styles/docs/_color_utilities.scss
416
417
  - app/pb_kits/playbook/packs/site_styles/docs/_flex_examples.scss
@@ -543,6 +544,9 @@ files:
543
544
  - app/pb_kits/playbook/pb_card/card_header.rb
544
545
  - app/pb_kits/playbook/pb_card/child_kits/_card_body.html.erb
545
546
  - app/pb_kits/playbook/pb_card/child_kits/_card_header.html.erb
547
+ - app/pb_kits/playbook/pb_card/docs/_card_border_none.html.erb
548
+ - app/pb_kits/playbook/pb_card/docs/_card_border_none.jsx
549
+ - app/pb_kits/playbook/pb_card/docs/_card_border_none.md
546
550
  - app/pb_kits/playbook/pb_card/docs/_card_content.html.erb
547
551
  - app/pb_kits/playbook/pb_card/docs/_card_content.jsx
548
552
  - app/pb_kits/playbook/pb_card/docs/_card_dark.html.erb
@@ -977,6 +981,8 @@ files:
977
981
  - app/pb_kits/playbook/pb_label_value/label_value.rb
978
982
  - app/pb_kits/playbook/pb_layout/_body.html.erb
979
983
  - app/pb_kits/playbook/pb_layout/_column.html.erb
984
+ - app/pb_kits/playbook/pb_layout/_footer.html.erb
985
+ - app/pb_kits/playbook/pb_layout/_header.html.erb
980
986
  - app/pb_kits/playbook/pb_layout/_layout.html.erb
981
987
  - app/pb_kits/playbook/pb_layout/_layout.jsx
982
988
  - app/pb_kits/playbook/pb_layout/_layout.scss
@@ -986,8 +992,13 @@ files:
986
992
  - app/pb_kits/playbook/pb_layout/docs/_description.md
987
993
  - app/pb_kits/playbook/pb_layout/docs/_layout_collection.html.erb
988
994
  - app/pb_kits/playbook/pb_layout/docs/_layout_collection.jsx
995
+ - app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.html.erb
996
+ - app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.jsx
997
+ - app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.md
989
998
  - app/pb_kits/playbook/pb_layout/docs/_layout_colors.html.erb
990
999
  - app/pb_kits/playbook/pb_layout/docs/_layout_colors.jsx
1000
+ - app/pb_kits/playbook/pb_layout/docs/_layout_content.html.erb
1001
+ - app/pb_kits/playbook/pb_layout/docs/_layout_content.jsx
991
1002
  - app/pb_kits/playbook/pb_layout/docs/_layout_kanban.html.erb
992
1003
  - app/pb_kits/playbook/pb_layout/docs/_layout_kanban.jsx
993
1004
  - app/pb_kits/playbook/pb_layout/docs/_layout_kanban_responsive.html.erb
@@ -1000,6 +1011,8 @@ files:
1000
1011
  - app/pb_kits/playbook/pb_layout/docs/_layout_transparent.jsx
1001
1012
  - app/pb_kits/playbook/pb_layout/docs/example.yml
1002
1013
  - app/pb_kits/playbook/pb_layout/docs/index.js
1014
+ - app/pb_kits/playbook/pb_layout/footer.rb
1015
+ - app/pb_kits/playbook/pb_layout/header.rb
1003
1016
  - app/pb_kits/playbook/pb_layout/layout.rb
1004
1017
  - app/pb_kits/playbook/pb_layout/sidebar.rb
1005
1018
  - app/pb_kits/playbook/pb_legend/_legend.html.erb
@@ -1804,7 +1817,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1804
1817
  - !ruby/object:Gem::Version
1805
1818
  version: '0'
1806
1819
  requirements: []
1807
- rubygems_version: 3.1.4
1820
+ rubyforge_project:
1821
+ rubygems_version: 2.7.3
1808
1822
  signing_key:
1809
1823
  specification_version: 4
1810
1824
  summary: Playbook Design System