playbook_ui 4.14.0 → 4.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +2 -0
  3. data/app/pb_kits/playbook/data/menu.yml +2 -0
  4. data/app/pb_kits/playbook/index.js +4 -1
  5. data/app/pb_kits/playbook/packs/examples.js +2 -0
  6. data/app/pb_kits/playbook/packs/kits/pb_progress_step.js +2 -0
  7. data/app/pb_kits/playbook/pb_button/_button.jsx +9 -1
  8. data/app/pb_kits/playbook/pb_contact/_contact.jsx +1 -0
  9. data/app/pb_kits/playbook/pb_contact/contact.rb +2 -0
  10. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.html.erb +5 -0
  11. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.jsx +4 -0
  12. data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.html.erb +6 -0
  13. data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.jsx +5 -0
  14. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.jsx +2 -2
  15. data/app/pb_kits/playbook/pb_filter/Filter/CurrentFilters.jsx +56 -0
  16. data/app/pb_kits/playbook/pb_filter/Filter/FilterBackground.jsx +26 -0
  17. data/app/pb_kits/playbook/pb_filter/Filter/FilterDouble.jsx +58 -0
  18. data/app/pb_kits/playbook/pb_filter/Filter/FilterSingle.jsx +46 -0
  19. data/app/pb_kits/playbook/pb_filter/Filter/FiltersPopover.jsx +37 -0
  20. data/app/pb_kits/playbook/pb_filter/Filter/ResultsCount.jsx +34 -0
  21. data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.jsx +85 -0
  22. data/app/pb_kits/playbook/pb_filter/Filter/index.jsx +26 -0
  23. data/app/pb_kits/playbook/pb_filter/_filter.jsx +1 -222
  24. data/app/pb_kits/playbook/pb_filter/_filter.scss +16 -13
  25. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +34 -41
  26. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +13 -9
  27. data/app/pb_kits/playbook/pb_filter/docs/_filter_no_background.html.erb +69 -74
  28. data/app/pb_kits/playbook/pb_filter/docs/_filter_no_background.jsx +12 -9
  29. data/app/pb_kits/playbook/pb_filter/docs/_filter_only.html.erb +28 -35
  30. data/app/pb_kits/playbook/pb_filter/docs/_filter_only.jsx +5 -6
  31. data/app/pb_kits/playbook/pb_filter/docs/_filter_single.html.erb +35 -41
  32. data/app/pb_kits/playbook/pb_filter/docs/_filter_single.jsx +12 -10
  33. data/app/pb_kits/playbook/pb_filter/docs/_sort_only.html.erb +12 -18
  34. data/app/pb_kits/playbook/pb_filter/docs/_sort_only.jsx +14 -44
  35. data/app/pb_kits/playbook/pb_filter/templates/_default.html.erb +1 -1
  36. data/app/pb_kits/playbook/pb_layout/_layout.jsx +66 -14
  37. data/app/pb_kits/playbook/pb_layout/docs/_layout_colors.jsx +63 -0
  38. data/app/pb_kits/playbook/pb_layout/docs/_layout_sizes.jsx +87 -0
  39. data/app/pb_kits/playbook/pb_layout/docs/_layout_sizes_dark.jsx +92 -0
  40. data/app/pb_kits/playbook/pb_layout/docs/_layout_transparent.jsx +24 -0
  41. data/app/pb_kits/playbook/pb_layout/docs/example.yml +4 -1
  42. data/app/pb_kits/playbook/pb_layout/docs/index.js +4 -1
  43. data/app/pb_kits/playbook/pb_online_status/_online_status.jsx +31 -14
  44. data/app/pb_kits/playbook/pb_online_status/docs/_online_status_default.jsx +19 -0
  45. data/app/pb_kits/playbook/pb_online_status/docs/example.yml +3 -3
  46. data/app/pb_kits/playbook/pb_online_status/docs/index.js +1 -0
  47. data/app/pb_kits/playbook/pb_popover/_popover.jsx +2 -2
  48. data/app/pb_kits/playbook/pb_popover/docs/example.yml +0 -2
  49. data/app/pb_kits/playbook/pb_popover/docs/index.js +0 -1
  50. data/app/pb_kits/playbook/pb_progress_step/_progress_step.html.erb +6 -0
  51. data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +35 -0
  52. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +388 -0
  53. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.html.erb +23 -0
  54. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +44 -0
  55. data/app/pb_kits/playbook/pb_progress_step/docs/_description.md +1 -0
  56. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_dark.html.erb +8 -0
  57. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_dark.jsx +18 -0
  58. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.html.erb +33 -0
  59. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.jsx +39 -0
  60. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.html.erb +33 -0
  61. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.jsx +40 -0
  62. data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +12 -0
  63. data/app/pb_kits/playbook/pb_progress_step/docs/index.js +3 -0
  64. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +33 -0
  65. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +19 -0
  66. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_default.html.erb +1 -1
  67. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_default.jsx +1 -1
  68. data/app/pb_kits/playbook/pb_stat_change/stat_change.rb +1 -1
  69. data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +39 -14
  70. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +8 -0
  71. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +3 -3
  72. data/app/pb_kits/playbook/pb_timestamp/docs/index.js +1 -0
  73. data/app/pb_kits/playbook/pb_title_detail/_title_detail.jsx +47 -14
  74. data/app/pb_kits/playbook/pb_title_detail/docs/_title_detail_default.jsx +26 -0
  75. data/app/pb_kits/playbook/pb_title_detail/docs/example.yml +3 -3
  76. data/app/pb_kits/playbook/pb_title_detail/docs/index.js +1 -0
  77. data/app/pb_kits/playbook/pb_tooltip/_tooltip.html.erb +10 -0
  78. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +105 -0
  79. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +10 -0
  80. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +9 -0
  81. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +5 -0
  82. data/app/pb_kits/playbook/pb_tooltip/index.js +80 -0
  83. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +34 -0
  84. data/app/pb_kits/playbook/tokens/_colors.scss +4 -0
  85. data/app/pb_kits/playbook/vendor.js +3 -0
  86. data/lib/playbook/version.rb +1 -1
  87. metadata +41 -6
  88. data/app/pb_kits/playbook/pb_layout/_body.jsx +0 -26
  89. data/app/pb_kits/playbook/pb_layout/_sidebar.jsx +0 -26
  90. data/app/pb_kits/playbook/pb_layout/docs/_layout_default.jsx +0 -14
  91. data/app/pb_kits/playbook/pb_popover/docs/_popover_with_button.html.erb +0 -4
@@ -1,46 +1,40 @@
1
- <% 5.times do%>
2
- <br>
3
- <%end%>
4
-
5
- <%= pb_rails("filter", props: {
6
- id:"2",
7
- filters: [
8
- {name: "name", value: "John Wick"}
1
+ <%=
2
+ pb_rails("filter", props: {
3
+ id: "2",
4
+ filters: [
5
+ { name: "name", value: "John Wick" }
6
+ ],
7
+ sort_menu: [
8
+ { item: "Popularity", link: "?q[sorts]=managers_popularity+asc", active: true, direction: "desc" },
9
+ { item: "Mananger's Title", link: "?q[sorts]=managers_title+asc", active: false },
10
+ { item: "Manager's Name", link: "?q[sorts]=managers_name+asc", active: false },
9
11
  ],
10
- sort_menu: [
11
- {item:"Popularity", link:"#", active: true, direction:"desc"},
12
- {item:"Title", link:"#", active: false},
13
- {item:"Name", link:"#", active: false},
14
- ],
15
- results: 546,
16
- template: "single"
17
- }) do%>
18
- <%
19
- example_collection = [
20
- OpenStruct.new(name: "Alabama", value: 1),
21
- OpenStruct.new(name: "Alaska", value: 2),
22
- OpenStruct.new(name: "Arizona", value: 3),
23
- OpenStruct.new(name: "Arkansas", value: 4),
24
- OpenStruct.new(name: "California", value: 5),
25
- OpenStruct.new(name: "Colorado", value: 6),
26
- OpenStruct.new(name: "Connecticut", value: 7),
27
- OpenStruct.new(name: "Delaware", value: 8),
28
- OpenStruct.new(name: "Florida", value: 9),
29
- OpenStruct.new(name: "Georgia", value: 10),
30
- ]
12
+ results: 546,
13
+ template: "single"
14
+ }) do
31
15
  %>
16
+ <%
17
+ example_collection = [
18
+ OpenStruct.new(name: "Alabama", value: 1),
19
+ OpenStruct.new(name: "Alaska", value: 2),
20
+ OpenStruct.new(name: "Arizona", value: 3),
21
+ OpenStruct.new(name: "Arkansas", value: 4),
22
+ OpenStruct.new(name: "California", value: 5),
23
+ OpenStruct.new(name: "Colorado", value: 6),
24
+ OpenStruct.new(name: "Connecticut", value: 7),
25
+ OpenStruct.new(name: "Delaware", value: 8),
26
+ OpenStruct.new(name: "Florida", value: 9),
27
+ OpenStruct.new(name: "Georgia", value: 10),
28
+ ]
29
+ %>
32
30
 
33
- <%= pb_rails("form", props: { form_system_options: { scope: :example, method: :get } }) do |form| %>
34
- <%= form.text_field :example_text_field, props: { label: true } %>
35
- <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
31
+ <%= pb_rails("form", props: { form_system_options: { scope: :example, method: :get } }) do |form| %>
32
+ <%= form.text_field :example_text_field, props: { label: true } %>
33
+ <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true } %>
36
34
 
37
- <%= form.actions do |action| %>
38
- <%= action.submit props: { text: "Apply", data: { disable_with: "<i class='far fa-spinner fa-spin mr-3'></i>Searching...".html_safe },}%>
39
- <%= action.button props: { type: "reset", text: "Clear", variant: "secondary" } %>
35
+ <%= form.actions do |action| %>
36
+ <%= action.submit props: { text: "Apply", data: { disable_with: "<i class='far fa-spinner fa-spin mr-3'></i>Searching...".html_safe },}%>
37
+ <%= action.button props: { type: "reset", text: "Clear", variant: "secondary" } %>
38
+ <% end %>
40
39
  <% end %>
41
- <% end %>
42
-
43
- <% end %>
44
- <% 5.times do%>
45
- <br>
46
- <%end%>
40
+ <% end %>
@@ -11,16 +11,18 @@ const FilterSingle = () => {
11
11
  ]
12
12
  return (
13
13
  <Filter
14
- filters={[
15
- { name: 'Full Name', value: 'John Wick' },
16
- { name: 'Territory', value: 'San Francisco' },
17
- ]}
18
- sortMenu={[
19
- { item: 'Popularity', link: '#', active: true, direction: 'desc' },
20
- { item: 'Title', link: '#', active: false },
21
- { item: 'Name', link: '#', active: false },
22
- ]}
23
- template="single"
14
+ filters={{
15
+ 'Full Name': 'John Wick',
16
+ 'Territory': 'San Francisco',
17
+ }}
18
+ sortOptions={{
19
+ popularity: 'Popularity',
20
+ // eslint-disable-next-line
21
+ manager_title: 'Manager\'s Title',
22
+ // eslint-disable-next-line
23
+ manager_name: 'Manager\'s Name',
24
+ }}
25
+ sortValue={[{ name: 'popularity', dir: 'asc' }]}
24
26
  >
25
27
  <TextInput
26
28
  label="Full Name"
@@ -1,18 +1,12 @@
1
- <% 5.times do%>
2
- <br>
3
- <%end%>
4
-
5
- <%= pb_rails("filter", props: {
6
- id: "so",
7
- sort_menu: [
8
- {item:"Popularity", link:"#", active: true, direction:"desc"},
9
- {item:"Title", link:"#", active: false},
10
- {item:"Name", link:"#", active: false},
11
- ],
12
- template:"sort_only",
13
- background: false,
14
- }) do%>
15
- <% end %>
16
- <% 5.times do%>
17
- <br>
18
- <%end%>
1
+ <%=
2
+ pb_rails("filter", props: {
3
+ id: "so",
4
+ sort_menu: [
5
+ { item: "Popularity", link: "?q[sorts]=managers_popularity+asc", active: true, direction: "desc" },
6
+ { item: "Mananger's Title", link: "?q[sorts]=managers_title+asc", active: false },
7
+ { item: "Manager's Name", link: "?q[sorts]=managers_name+asc", active: false },
8
+ ],
9
+ template:"sort_only",
10
+ background: false,
11
+ })
12
+ %>
@@ -1,48 +1,18 @@
1
1
  import React from 'react'
2
- import { Button, Filter, Flex, Select, TextInput } from '../../'
2
+ import { Filter } from '../../'
3
3
 
4
- const SortOnly = () => {
5
- const options = [
6
- { value: 'USA' },
7
- { value: 'Canada' },
8
- { value: 'Brazil' },
9
- { value: 'Philippines' },
10
- { value: 'A Galaxy Far Far Away Like Really Far Away' },
11
- ]
12
- return (
13
- <Filter
14
- background={false}
15
- sortMenu={[
16
- { item: 'Popularity', link: '#', active: true, direction: 'desc' },
17
- { item: 'Title', link: '#', active: false },
18
- { item: 'Name', link: '#', active: false },
19
- ]}
20
- template="sort_only"
21
- >
22
- <TextInput
23
- label="Full Name"
24
- placeholder="Enter name"
25
- />
26
-
27
- <Select
28
- blankSelection="Select One..."
29
- label="Territory"
30
- name="location"
31
- options={options}
32
- />
33
- <Flex
34
- spacing="between"
35
- >
36
- <Button
37
- text="Apply"
38
- />
39
- <Button
40
- text="Clear"
41
- variant="secondary"
42
- />
43
- </Flex>
44
- </Filter>
45
- )
46
- }
4
+ const SortOnly = () => (
5
+ <Filter
6
+ background={false}
7
+ sortOptions={{
8
+ popularity: 'Popularity',
9
+ // eslint-disable-next-line
10
+ manager_title: 'Manager\'s Title',
11
+ // eslint-disable-next-line
12
+ manager_name: 'Manager\'s Name',
13
+ }}
14
+ sortValue={[{ name: 'manager_title', dir: 'desc' }]}
15
+ />
16
+ )
47
17
 
48
18
  export default SortOnly
@@ -13,7 +13,7 @@
13
13
  <%end%>
14
14
 
15
15
  <% if object.template != "filter_only"%>
16
- <%= pb_rails("popover", props: { close_on_click: "outside", trigger_element_id: "sort-button#{object.id}", tooltip_id: "sort-filter-btn-tooltip#{object.id}", position: 'bottom'}) do %>
16
+ <%= pb_rails("popover", props: {classname: "pb_filter_sort_menu", close_on_click: "outside", trigger_element_id: "sort-button#{object.id}", tooltip_id: "sort-filter-btn-tooltip#{object.id}", position: 'bottom'}) do %>
17
17
  <%= pb_rails("list") do %>
18
18
  <% object.sort_menu.each do |item| %>
19
19
  <%= pb_rails("list/item") do%> <%= pb_rails("button", props: {variant: "link" ,classname: "p-0", text: item[:item], link: item[:link]}) %><% end %>
@@ -2,56 +2,108 @@
2
2
 
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
-
6
5
  import {
7
6
  buildAriaProps,
8
7
  buildCss,
9
8
  buildDataProps,
10
9
  } from '../utilities/props'
11
10
 
12
- type LayoutProps = {
11
+ type LayoutPropTypes = {
13
12
  aria?: object,
14
- children?: Array<React.ReactChild>,
13
+ children?: Array<React.ReactNode> | React.ReactNode,
14
+ className?: String,
15
15
  collapse?: 'xs' | 'sm' | 'md' | 'lg' | 'xl',
16
16
  dark?: Boolean,
17
17
  data?: object,
18
18
  full?: Boolean,
19
19
  position?: 'left' | 'right',
20
20
  size?: 'xs' | 'sm' | 'md' | 'base' | 'lg' | 'xl',
21
+ variant?: 'light' | 'dark' | 'gradient',
21
22
  transparent?: Boolean
22
23
  }
23
24
 
25
+ type LayoutSideProps = {
26
+ children: Array<React.ReactNode> | React.ReactNode,
27
+ className?: String,
28
+ }
29
+
30
+ type LayoutBodyProps = {
31
+ children: Array<React.ReactNode> | React.ReactNode,
32
+ className?: String,
33
+ }
34
+
35
+ // Side component
36
+ const Side = ({
37
+ children,
38
+ className,
39
+ }: LayoutSideProps) => {
40
+ return (
41
+ <div className={classnames('layout_sidebar', className)}>
42
+ {children}
43
+ </div>
44
+ )
45
+ }
46
+
47
+ // Body component
48
+ const Body = ({
49
+ children,
50
+ className,
51
+ }: LayoutBodyProps) => {
52
+ return (
53
+ <div className={classnames('layout_body', className)}>
54
+ {children}
55
+ </div>
56
+ )
57
+ }
58
+
59
+ // Main componenet
24
60
  const Layout = ({
25
61
  aria = {},
26
62
  children,
63
+ className,
27
64
  collapse = 'md',
28
65
  dark = false,
29
66
  data = {},
30
67
  full = false,
31
68
  position = 'left',
69
+ size = 'md',
70
+ variant = 'light',
32
71
  transparent = false,
33
- size = 'base',
34
- }: LayoutProps) => {
72
+ }: LayoutPropTypes) => {
35
73
  const ariaProps = buildAriaProps(aria)
36
74
  const dataProps = buildDataProps(data)
37
- const classes = classnames(
38
- buildCss('layout', position, 'collapse', collapse),
39
- buildCss('pb_layout_kit', size, position, {
40
- 'dark': dark,
41
- 'transparent': transparent,
42
- 'full': full,
75
+ const layoutCss = buildCss('pb_layout_kit', `size_${size}`, position, variant, {
76
+ 'dark': dark,
77
+ 'transparent': transparent,
78
+ 'full': full,
79
+ })
80
+ const layoutCollapseCss = buildCss('layout', position, 'collapse', collapse)
81
+
82
+ const layoutChildren = typeof(children) === 'object' && children.length ? children : [children]
83
+
84
+ const subComponentTags = (tagName) => {
85
+ return layoutChildren.filter((c) => {
86
+ return c.type && c.type.displayName === tagName
87
+ }).map((child, i) => {
88
+ return React.cloneElement(child, { key: `${tagName.toLowerCase()}-${i}` })
43
89
  })
44
- )
90
+ }
91
+
92
+ const nonSideChildren = layoutChildren.filter((child) => !child.type || child.type.displayName !== 'Side')
45
93
 
46
94
  return (
47
95
  <div
48
96
  {...ariaProps}
49
97
  {...dataProps}
50
- className={classnames(classes)}
98
+ className={classnames(layoutCss, layoutCollapseCss, className)}
51
99
  >
52
- {children}
100
+ {subComponentTags('Side')}
101
+ {nonSideChildren}
53
102
  </div>
54
103
  )
55
104
  }
56
105
 
106
+ Layout.Side = Side
107
+ Layout.Body = Body
108
+
57
109
  export default Layout
@@ -0,0 +1,63 @@
1
+ import React from 'react'
2
+ import { Body, Layout } from '../../'
3
+
4
+ const LayoutColor = () => {
5
+ return (
6
+ <div>
7
+ <Layout
8
+ collapse="md"
9
+ position="left"
10
+ size="sm"
11
+ >
12
+ <Layout.Side>
13
+ {'Light'}
14
+ </Layout.Side>
15
+ <Layout.Body>
16
+ {'Body'}
17
+ </Layout.Body>
18
+ </Layout>
19
+
20
+ <br />
21
+ <br />
22
+
23
+ <Layout
24
+ collapse="md"
25
+ position="left"
26
+ size="sm"
27
+ variant="dark"
28
+ >
29
+ <Layout.Side>
30
+ <Body
31
+ dark
32
+ text="Dark"
33
+ />
34
+ </Layout.Side>
35
+ <Layout.Body>
36
+ {'Body'}
37
+ </Layout.Body>
38
+ </Layout>
39
+
40
+ <br />
41
+ <br />
42
+
43
+ <Layout
44
+ collapse="md"
45
+ position="left"
46
+ size="sm"
47
+ variant="gradient"
48
+ >
49
+ <Layout.Side>
50
+ <Body
51
+ dark
52
+ text="Gradient"
53
+ />
54
+ </Layout.Side>
55
+ <Layout.Body>
56
+ {'Body'}
57
+ </Layout.Body>
58
+ </Layout>
59
+ </div>
60
+ )
61
+ }
62
+
63
+ export default LayoutColor
@@ -0,0 +1,87 @@
1
+ import React from 'react'
2
+ import { Layout } from '../../'
3
+
4
+ const LayoutSizes = () => {
5
+ return (
6
+ <div>
7
+ <Layout
8
+ collapse="xs"
9
+ position="left"
10
+ size="xs"
11
+ >
12
+ <Layout.Side>
13
+ {'Side'}
14
+ </Layout.Side>
15
+ <Layout.Body>
16
+ {'Body'}
17
+ </Layout.Body>
18
+ </Layout>
19
+
20
+ <br />
21
+ <br />
22
+
23
+ <Layout
24
+ collapse="xs"
25
+ position="left"
26
+ size="sm"
27
+ >
28
+ <Layout.Side>
29
+ {'Side'}
30
+ </Layout.Side>
31
+ <Layout.Body>
32
+ {'Body'}
33
+ </Layout.Body>
34
+ </Layout>
35
+
36
+ <br />
37
+ <br />
38
+
39
+ <Layout
40
+ collapse="xs"
41
+ position="left"
42
+ size="md"
43
+ >
44
+ <Layout.Side>
45
+ {'Side'}
46
+ </Layout.Side>
47
+ <Layout.Body>
48
+ {'Body'}
49
+ </Layout.Body>
50
+ </Layout>
51
+
52
+ <br />
53
+ <br />
54
+
55
+ <Layout
56
+ collapse="xs"
57
+ position="left"
58
+ size="lg"
59
+ >
60
+ <Layout.Side>
61
+ {'Side'}
62
+ </Layout.Side>
63
+ <Layout.Body>
64
+ {'Body'}
65
+ </Layout.Body>
66
+ </Layout>
67
+
68
+ <br />
69
+ <br />
70
+
71
+ <Layout
72
+ collapse="xs"
73
+ position="left"
74
+ size="xl"
75
+ >
76
+ <Layout.Side>
77
+ {'Side'}
78
+ </Layout.Side>
79
+ <Layout.Body>
80
+ {'Body'}
81
+ </Layout.Body>
82
+ </Layout>
83
+ </div>
84
+ )
85
+ }
86
+
87
+ export default LayoutSizes
@@ -0,0 +1,92 @@
1
+ import React from 'react'
2
+ import { Layout } from '../../'
3
+
4
+ const LayoutSizesDark = () => {
5
+ return (
6
+ <div>
7
+ <Layout
8
+ collapse="xs"
9
+ position="left"
10
+ size="xs"
11
+ variant="dark"
12
+ >
13
+ <Layout.Side>
14
+ {'Side'}
15
+ </Layout.Side>
16
+ <Layout.Body>
17
+ {'Body'}
18
+ </Layout.Body>
19
+ </Layout>
20
+
21
+ <br />
22
+ <br />
23
+
24
+ <Layout
25
+ collapse="xs"
26
+ position="left"
27
+ size="sm"
28
+ variant="dark"
29
+ >
30
+ <Layout.Side>
31
+ {'Side'}
32
+ </Layout.Side>
33
+ <Layout.Body>
34
+ {'Body'}
35
+ </Layout.Body>
36
+ </Layout>
37
+
38
+ <br />
39
+ <br />
40
+
41
+ <Layout
42
+ collapse="xs"
43
+ position="left"
44
+ size="md"
45
+ variant="dark"
46
+ >
47
+ <Layout.Side>
48
+ {'Side'}
49
+ </Layout.Side>
50
+ <Layout.Body>
51
+ {'Body'}
52
+ </Layout.Body>
53
+ </Layout>
54
+
55
+ <br />
56
+ <br />
57
+
58
+ <Layout
59
+ collapse="xs"
60
+ position="left"
61
+ size="lg"
62
+ variant="dark"
63
+ >
64
+ <Layout.Side>
65
+ {'Side'}
66
+ </Layout.Side>
67
+ <Layout.Body>
68
+ {'Body'}
69
+ </Layout.Body>
70
+ </Layout>
71
+
72
+ <br />
73
+ <br />
74
+
75
+ <Layout
76
+ collapse="xs"
77
+ position="left"
78
+ size="xl"
79
+ variant="dark"
80
+ >
81
+ <Layout.Side>
82
+ {'Side'}
83
+ </Layout.Side>
84
+ <Layout.Body>
85
+ {'Body'}
86
+ </Layout.Body>
87
+ </Layout>
88
+ </div>
89
+ )
90
+ }
91
+
92
+ export default LayoutSizesDark
@@ -0,0 +1,24 @@
1
+ import React from 'react'
2
+ import { Layout } from '../../'
3
+
4
+ const LayoutTransparent = () => {
5
+ return (
6
+ <div>
7
+ <Layout
8
+ collapse="sm"
9
+ position="left"
10
+ size="xs"
11
+ transparent
12
+ >
13
+ <Layout.Side>
14
+ {'Side'}
15
+ </Layout.Side>
16
+ <Layout.Body>
17
+ {'Body'}
18
+ </Layout.Body>
19
+ </Layout>
20
+ </div>
21
+ )
22
+ }
23
+
24
+ export default LayoutTransparent
@@ -5,4 +5,7 @@ examples:
5
5
  - layout_sizes: Sizes
6
6
  - layout_sizes_dark: Sizes Dark
7
7
  react:
8
- - layout_default: Default
8
+ - layout_colors: Colors
9
+ - layout_transparent: Transparent
10
+ - layout_sizes: Sizes
11
+ - layout_sizes_dark: Sizes Dark
@@ -1 +1,4 @@
1
- export { default as LayoutDefault } from './_layout_default.jsx'
1
+ export { default as LayoutColors } from './_layout_colors.jsx'
2
+ export { default as LayoutTransparent } from './_layout_transparent.jsx'
3
+ export { default as LayoutSizes } from './_layout_sizes.jsx'
4
+ export { default as LayoutSizesDark } from './_layout_sizes_dark.jsx'
@@ -1,21 +1,38 @@
1
+ /* @flow */
2
+
1
3
  import React from 'react'
2
- import PropTypes from 'prop-types'
4
+ import classnames from 'classnames'
3
5
 
4
- const propTypes = {
5
- className: PropTypes.string,
6
- id: PropTypes.string,
7
- }
6
+ import {
7
+ buildDataProps,
8
+ } from '../utilities/props'
8
9
 
9
- class OnlineStatus extends React.Component {
10
- render() {
11
- return (
12
- <div className="pb_online_status">
13
- <span>{'ONLINE STATUS CONTENT'}</span>
14
- </div>
15
- )
16
- }
10
+ type OnlineStatusProps = {
11
+ className?: String,
12
+ data?: object,
13
+ id?: String,
14
+ status?: "online" | "offline" | "away",
17
15
  }
18
16
 
19
- OnlineStatus.propTypes = propTypes
17
+ const OnlineStatus = ({
18
+ id,
19
+ data = {},
20
+ className,
21
+ status = 'offline',
22
+ }: OnlineStatusProps) => {
23
+ const dataProps = buildDataProps(data)
24
+ const css = classnames([
25
+ `pb_online_status_kit_${status}`,
26
+ className,
27
+ ])
28
+
29
+ return (
30
+ <div
31
+ {...dataProps}
32
+ className={css}
33
+ id={id}
34
+ />
35
+ )
36
+ }
20
37
 
21
38
  export default OnlineStatus