playbook_ui 5.2.0.pre.alpha3 → 5.3.0.pre.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -0
  3. data/app/assets/images/clark.jpg +0 -0
  4. data/app/assets/images/giant.jpg +0 -0
  5. data/app/assets/images/pb-caret.svg +1 -0
  6. data/app/assets/images/pb-check.svg +11 -0
  7. data/app/assets/images/pb.logo.svg +28 -0
  8. data/app/controllers/playbook/application_controller.rb +13 -0
  9. data/app/controllers/playbook/guides_controller.rb +11 -0
  10. data/app/controllers/playbook/pages_controller.rb +79 -0
  11. data/app/controllers/playbook/samples_controller.rb +40 -0
  12. data/app/pb_kits/playbook/_playbook.scss +1 -0
  13. data/app/pb_kits/playbook/data/menu.yml +4 -2
  14. data/app/pb_kits/playbook/index.js +1 -4
  15. data/app/pb_kits/playbook/packs/application.js +55 -0
  16. data/app/pb_kits/playbook/packs/examples.js +176 -0
  17. data/app/pb_kits/playbook/packs/main.scss +12 -0
  18. data/app/pb_kits/playbook/packs/samples.js +19 -0
  19. data/app/pb_kits/playbook/packs/site_styles/_samples.scss +72 -0
  20. data/app/pb_kits/playbook/packs/site_styles/_scaffold.scss +43 -0
  21. data/app/pb_kits/playbook/packs/site_styles/_site-style.scss +135 -0
  22. data/app/pb_kits/playbook/packs/site_styles/docs/_all.scss +10 -0
  23. data/app/pb_kits/playbook/packs/site_styles/docs/_bg_light_doc_example.scss +7 -0
  24. data/app/pb_kits/playbook/packs/site_styles/docs/_code_snippet.scss +531 -0
  25. data/app/pb_kits/playbook/packs/site_styles/docs/_color_utilities.scss +92 -0
  26. data/app/pb_kits/playbook/packs/site_styles/docs/_flex_examples.scss +15 -0
  27. data/app/pb_kits/playbook/packs/site_styles/docs/_kit_doc.scss +190 -0
  28. data/app/pb_kits/playbook/packs/site_styles/docs/_kits_examples.scss +18 -0
  29. data/app/pb_kits/playbook/packs/site_styles/docs/_markdown.scss +82 -0
  30. data/app/pb_kits/playbook/packs/site_styles/docs/_spacing_tokens.scss +72 -0
  31. data/app/pb_kits/playbook/pb_badge/_badge.html.erb +1 -0
  32. data/app/pb_kits/playbook/pb_badge/_badge.jsx +17 -4
  33. data/app/pb_kits/playbook/pb_card/_card.jsx +4 -1
  34. data/app/pb_kits/playbook/pb_card/_card.scss +4 -0
  35. data/app/pb_kits/playbook/pb_card/card.rb +8 -1
  36. data/app/pb_kits/playbook/pb_card/docs/_card_border_none.html.erb +7 -0
  37. data/app/pb_kits/playbook/pb_card/docs/_card_border_none.jsx +14 -0
  38. data/app/pb_kits/playbook/pb_card/docs/_card_border_none.md +1 -0
  39. data/app/pb_kits/playbook/pb_card/docs/example.yml +2 -0
  40. data/app/pb_kits/playbook/pb_card/docs/index.js +1 -0
  41. data/app/pb_kits/playbook/pb_dashboard/pbChartsLightTheme.js +26 -0
  42. data/app/pb_kits/playbook/pb_filter/docs/_description.md +3 -0
  43. data/app/pb_kits/playbook/pb_filter/templates/_default.html.erb +1 -1
  44. data/app/pb_kits/playbook/pb_gauge/_gauge.html.erb +12 -0
  45. data/app/pb_kits/playbook/pb_gauge/_gauge.jsx +105 -0
  46. data/app/pb_kits/playbook/pb_gauge/_gauge.scss +11 -0
  47. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.html.erb +11 -0
  48. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx +17 -0
  49. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.html.erb +14 -0
  50. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.jsx +20 -0
  51. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.html.erb +15 -0
  52. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.jsx +23 -0
  53. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_live_data.jsx +25 -0
  54. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.html.erb +21 -0
  55. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.jsx +26 -0
  56. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.html.erb +33 -0
  57. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.jsx +42 -0
  58. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.html.erb +14 -0
  59. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.jsx +20 -0
  60. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.html.erb +29 -0
  61. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.jsx +29 -0
  62. data/app/pb_kits/playbook/pb_gauge/docs/example.yml +22 -0
  63. data/app/pb_kits/playbook/pb_gauge/docs/index.js +8 -0
  64. data/app/pb_kits/playbook/pb_gauge/gauge.rb +55 -0
  65. data/app/pb_kits/playbook/pb_layout/_footer.html.erb +6 -0
  66. data/app/pb_kits/playbook/pb_layout/_header.html.erb +6 -0
  67. data/app/pb_kits/playbook/pb_layout/_layout.jsx +33 -1
  68. data/app/pb_kits/playbook/pb_layout/_layout.scss +48 -3
  69. data/app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.html.erb +19 -0
  70. data/app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.jsx +54 -0
  71. data/app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.md +1 -0
  72. data/app/pb_kits/playbook/pb_layout/docs/_layout_content.html.erb +28 -0
  73. data/app/pb_kits/playbook/pb_layout/docs/_layout_content.jsx +42 -0
  74. data/app/pb_kits/playbook/pb_layout/docs/example.yml +6 -0
  75. data/app/pb_kits/playbook/pb_layout/docs/index.js +3 -0
  76. data/app/pb_kits/playbook/pb_layout/footer.rb +19 -0
  77. data/app/pb_kits/playbook/pb_layout/header.rb +19 -0
  78. data/app/pb_kits/playbook/pb_layout/layout.rb +9 -4
  79. data/app/pb_kits/playbook/pb_popover/_popover.html.erb +2 -2
  80. data/app/pb_kits/playbook/pb_popover/_popover.jsx +3 -3
  81. data/app/pb_kits/playbook/pb_popover/_popover.scss +25 -21
  82. data/app/pb_kits/playbook/pb_popover/index.js +6 -1
  83. data/app/pb_kits/playbook/pb_radio/_radio.scss +4 -0
  84. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default.html.erb +1 -1
  85. data/app/pb_kits/playbook/plugins/pb_chart.js +71 -0
  86. data/app/views/layouts/playbook/_mobile_hamburger.html.erb +2 -0
  87. data/app/views/layouts/playbook/_nav.html.erb +13 -0
  88. data/app/views/layouts/playbook/_sidebar.html.erb +52 -0
  89. data/app/views/layouts/playbook/application.html.slim +22 -0
  90. data/app/views/layouts/playbook/fullscreen.html.slim +10 -0
  91. data/app/views/layouts/playbook/grid.html.slim +10 -0
  92. data/app/views/layouts/playbook/samples.html.erb +18 -0
  93. data/app/views/playbook/guides/create_kit.html.slim +16 -0
  94. data/app/views/playbook/guides/create_kit/_file_naming.html.md +2 -0
  95. data/app/views/playbook/guides/create_kit/_generator.html.md +6 -0
  96. data/app/views/playbook/guides/create_kit/_kit_examples.html.md +2 -0
  97. data/app/views/playbook/guides/create_kit/_kit_rails.html.md +2 -0
  98. data/app/views/playbook/guides/create_kit/_kit_react.html.md +2 -0
  99. data/app/views/playbook/guides/create_kit/_layout.html.md +2 -0
  100. data/app/views/playbook/guides/create_kit/_view_objects.html.md +2 -0
  101. data/app/views/playbook/guides/create_kit/_writing_sass.md +10 -0
  102. data/app/views/playbook/guides/use_nitro.html.slim +6 -0
  103. data/app/views/playbook/guides/use_nitro/_local.html.md +2 -0
  104. data/app/views/playbook/guides/use_nitro/_nitro_components.html.md +2 -0
  105. data/app/views/playbook/guides/use_nitro/_versions.html.md +2 -0
  106. data/app/views/playbook/pages/fullscreen.html.slim +10 -0
  107. data/app/views/playbook/pages/grid.html.slim +2 -0
  108. data/app/views/playbook/pages/home.html.slim +4 -0
  109. data/app/views/playbook/pages/kit_category_show.html.erb +14 -0
  110. data/app/views/playbook/pages/kit_show.html.erb +33 -0
  111. data/app/views/playbook/pages/kits.html.erb +12 -0
  112. data/app/views/playbook/pages/principals/_getting_started.html.md +30 -0
  113. data/app/views/playbook/pages/principles.html.slim +3 -0
  114. data/app/views/playbook/pages/tokens.html.slim +15 -0
  115. data/app/views/playbook/pages/tokens/_pb_doc_spacing.html.slim +17 -0
  116. data/app/views/playbook/pages/utilities.html.slim +116 -0
  117. data/app/views/playbook/pages/utilities/_pb_doc_color.html.slim +15 -0
  118. data/app/views/playbook/samples/dashboards/index.html.erb +81 -0
  119. data/app/views/playbook/samples/dashboards/index.jsx +130 -0
  120. data/app/views/playbook/samples/filter_table/index.html.erb +348 -0
  121. data/app/views/playbook/samples/filter_table/index.jsx +433 -0
  122. data/app/views/playbook/samples/registration/index.html.erb +316 -0
  123. data/app/views/playbook/samples/registration/index.jsx +476 -0
  124. data/app/views/playbook/samples/sample_show.html.erb +36 -0
  125. data/lib/playbook/version.rb +1 -1
  126. data/lib/tasks/pb_release.rake +0 -3
  127. metadata +100 -3
  128. data/app/pb_kits/playbook/tokens/index.scss +0 -12
@@ -0,0 +1,25 @@
1
+ import React, { useState } from 'react'
2
+ import { Button, Gauge } from '../../'
3
+
4
+ const GaugeLiveData = () => {
5
+ const [value, setValue] = useState(50)
6
+
7
+ const updateState = () => {
8
+ setValue(Math.floor(Math.random() * 100))
9
+ }
10
+
11
+ return (
12
+ <div>
13
+ <Button
14
+ onClick={updateState}
15
+ text="Update State"
16
+ />
17
+ <Gauge
18
+ chartData={[{ name: 'Name', value: value }]}
19
+ id="gauge-live-data"
20
+ />
21
+ </div>
22
+ )
23
+ }
24
+
25
+ export default GaugeLiveData
@@ -0,0 +1,21 @@
1
+ <%= pb_rails("title", props: {
2
+ text: "Min defaults to 0, Max to 100.",
3
+ tag: "h3",
4
+ size: 3
5
+ }) %>
6
+
7
+ <% data = [
8
+ {
9
+ name: 'Rating',
10
+ value: 4.5,
11
+ }
12
+ ]%>
13
+
14
+ <%= pb_rails("gauge", props: {
15
+ id: "gauge-min-max",
16
+ chart_data: data,
17
+ min: 0,
18
+ max: 5,
19
+ show_labels: true,
20
+ title: "Product Rating"
21
+ }) %>
@@ -0,0 +1,26 @@
1
+ import React from 'react'
2
+ import { Gauge, Title } from '../../'
3
+
4
+ const data = [{
5
+ name: 'Rating', value: 4.5,
6
+ }]
7
+
8
+ const GaugeMinMax = () => (
9
+ <div>
10
+ <Title
11
+ size={3}
12
+ tag="h3"
13
+ text="Min defaults to 0, Max to 100."
14
+ />
15
+ <Gauge
16
+ chartData={data}
17
+ id="gauge-min-max"
18
+ max={5}
19
+ min={0}
20
+ showLabels
21
+ title="Product Rating"
22
+ />
23
+ </div>
24
+ )
25
+
26
+ export default GaugeMinMax
@@ -0,0 +1,33 @@
1
+ <%= pb_rails("title", props: {
2
+ text: "Gauge resizes dynamically to fit whatever element it's placed within.",
3
+ tag: "h3",
4
+ size: 3
5
+ }) %>
6
+
7
+
8
+ <%= pb_rails("flex", props: {wrap: true}) do %>
9
+ <%= pb_rails("flex/flex_item", props: {fixed_size: "400px"}) do %>
10
+ <%= pb_rails("gauge", props: {
11
+ id: "gauge-sizing4",
12
+ chart_data: [{ name: "Name", value: 100 }],
13
+ }) %>
14
+ <% end %>
15
+ <%= pb_rails("flex/flex_item", props: {fixed_size: "300px"}) do %>
16
+ <%= pb_rails("gauge", props: {
17
+ id: "gauge-sizing3",
18
+ chart_data: [{ name: "Name", value: 75 }],
19
+ }) %>
20
+ <% end %>
21
+ <%= pb_rails("flex/flex_item", props: {fixed_size: "200px"}) do %>
22
+ <%= pb_rails("gauge", props: {
23
+ id: "gauge-sizing2",
24
+ chart_data: [{ name: "Name", value: 50 }],
25
+ }) %>
26
+ <% end %>
27
+ <%= pb_rails("flex/flex_item", props: {fixed_size: "125px"}) do %>
28
+ <%= pb_rails("gauge", props: {
29
+ id: "gauge-sizing1",
30
+ chart_data: [{ name: "Name", value: 25 }],
31
+ }) %>
32
+ <% end %>
33
+ <% end %>
@@ -0,0 +1,42 @@
1
+ import React from 'react'
2
+ import { Flex, FlexItem, Gauge, Title } from '../../'
3
+
4
+ const GaugeSizing = () => (
5
+ <div>
6
+ <Title
7
+ size={3}
8
+ tag="h3"
9
+ text="Gauge resizes dynamically to fit whatever element it's placed within."
10
+ />
11
+ <Flex
12
+ wrap
13
+ >
14
+ <FlexItem fixedSize="400px">
15
+ <Gauge
16
+ chartData={[ { name: 'Point1', value: 100 } ]}
17
+ id="gauge-sizing4"
18
+ />
19
+ </FlexItem>
20
+ <FlexItem fixedSize="300px">
21
+ <Gauge
22
+ chartData={[ { name: 'Point1', value: 75 } ]}
23
+ id="gauge-sizing3"
24
+ />
25
+ </FlexItem>
26
+ <FlexItem fixedSize="200px">
27
+ <Gauge
28
+ chartData={[ { name: 'Point1', value: 50 } ]}
29
+ id="gauge-sizing2"
30
+ />
31
+ </FlexItem>
32
+ <FlexItem fixedSize="125px">
33
+ <Gauge
34
+ chartData={[ { name: 'Point1', value: 25 } ]}
35
+ id="gauge-sizing1"
36
+ />
37
+ </FlexItem>
38
+ </Flex>
39
+ </div>
40
+ )
41
+
42
+ export default GaugeSizing
@@ -0,0 +1,14 @@
1
+ <% data = [
2
+ {
3
+ name: 'Score',
4
+ value: 780,
5
+ }
6
+ ]%>
7
+
8
+ <%= pb_rails("gauge", props: {
9
+ id: "gauge-title",
10
+ chart_data: data,
11
+ min: 300,
12
+ max: 850,
13
+ title: "Credit Score",
14
+ }) %>
@@ -0,0 +1,20 @@
1
+ import React from 'react'
2
+ import { Gauge } from '../../'
3
+
4
+ const data = [
5
+ { name: 'Score', value: 780 },
6
+ ]
7
+
8
+ const GaugeTitle = () => (
9
+ <div>
10
+ <Gauge
11
+ chartData={data}
12
+ id="gauge-title"
13
+ max={850}
14
+ min={300}
15
+ title="Credit Score"
16
+ />
17
+ </div>
18
+ )
19
+
20
+ export default GaugeTitle
@@ -0,0 +1,29 @@
1
+ <% data1 = [
2
+ {
3
+ name: 'Data Used',
4
+ value: 32,
5
+ }
6
+ ]%>
7
+
8
+ <%= pb_rails("gauge", props: {
9
+ id: "gauge-units1",
10
+ chart_data: data1,
11
+ title: "Data Usage",
12
+ suffix: "GB"
13
+ }) %>
14
+
15
+ <% data2 = [
16
+ {
17
+ name: 'Sales to Date',
18
+ value: 65,
19
+ }
20
+ ]%>
21
+
22
+ <%= pb_rails("gauge", props: {
23
+ id: "gauge-units2",
24
+ chart_data: data2,
25
+ title: "Sales Goal",
26
+ prefix: "$",
27
+ suffix: "k",
28
+
29
+ }) %>
@@ -0,0 +1,29 @@
1
+ import React from 'react'
2
+ import { Gauge } from '../../'
3
+
4
+ const data1 = [
5
+ { name: 'Data Used', value: 32 },
6
+ ]
7
+ const data2 = [
8
+ { name: 'Sales to Date', value: 65 },
9
+ ]
10
+
11
+ const GaugeUnits = () => (
12
+ <div>
13
+ <Gauge
14
+ chartData={data1}
15
+ id="gauge-units1"
16
+ suffix="GB"
17
+ title="Data Usage"
18
+ />
19
+ <Gauge
20
+ chartData={data2}
21
+ id="gauge-units2"
22
+ prefix="$"
23
+ suffix="k"
24
+ title="Sales Goal"
25
+ />
26
+ </div>
27
+ )
28
+
29
+ export default GaugeUnits
@@ -0,0 +1,22 @@
1
+ examples:
2
+
3
+ rails:
4
+ - gauge_default: Default
5
+ - gauge_title: Title
6
+ - gauge_units: Units
7
+ - gauge_full_circle: Full Circle
8
+ - gauge_min_max: Min Max Labels
9
+ - gauge_sizing: Sizing
10
+ - gauge_height: Height
11
+
12
+
13
+ react:
14
+ - gauge_default: Default
15
+ - gauge_title: Title
16
+ - gauge_units: Units
17
+ - gauge_full_circle: Full Circle
18
+ - gauge_min_max: Min Max Labels
19
+ - gauge_sizing: Sizing
20
+ - gauge_height: Height
21
+ - gauge_live_data: Live Data
22
+
@@ -0,0 +1,8 @@
1
+ export { default as GaugeDefault } from './_gauge_default.jsx'
2
+ export { default as GaugeFullCircle } from './_gauge_full_circle.jsx'
3
+ export { default as GaugeHeight } from './_gauge_height.jsx'
4
+ export { default as GaugeMinMax } from './_gauge_min_max.jsx'
5
+ export { default as GaugeSizing } from './_gauge_sizing.jsx'
6
+ export { default as GaugeTitle } from './_gauge_title.jsx'
7
+ export { default as GaugeUnits } from './_gauge_units.jsx'
8
+ export { default as GaugeLiveData } from './_gauge_live_data.jsx'
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbGauge
5
+ class Gauge
6
+ include Playbook::Props
7
+
8
+ partial "pb_gauge/gauge"
9
+
10
+ prop :chart_data, type: Playbook::Props::Array,
11
+ default: [{ name: "Name", value: 0 }]
12
+ prop :style, type: Playbook::Props::Enum,
13
+ values: %w[solidgauge],
14
+ default: "solidgauge"
15
+ prop :title, type: Playbook::Props::String, default: ""
16
+ prop :prefix, type: Playbook::Props::String, default: ""
17
+ prop :suffix, type: Playbook::Props::String, default: ""
18
+ prop :height, type: Playbook::Props::String, default: nil
19
+ prop :tooltip_html, default: '<span style="font-weight: bold; color:{point.color};">●</span>
20
+ {point.name}: ' + '<b>{point.y}
21
+ </b>'
22
+ prop :full_circle, type: Playbook::Props::Boolean, default: false
23
+ prop :show_labels, type: Playbook::Props::Boolean, default: false
24
+ prop :min, type: Playbook::Props::Numeric, default: 0
25
+ prop :max, type: Playbook::Props::Numeric, default: 100
26
+
27
+ def chart_data_formatted
28
+ chart_data.map { |hash| hash[:y] = hash.delete :value }
29
+ chart_data
30
+ end
31
+
32
+ def chart_options
33
+ {
34
+ id: id,
35
+ chartData: chart_data_formatted,
36
+ circumference: full_circle ? [0, 360] : [-100, 100],
37
+ height: height,
38
+ min: min,
39
+ max: max,
40
+ title: title,
41
+ suffix: suffix,
42
+ prefix: prefix,
43
+ showLabels: show_labels,
44
+ style: style,
45
+ tooltipHtml: tooltip_html,
46
+ type: "gauge",
47
+ }.to_json.html_safe
48
+ end
49
+
50
+ def classname
51
+ generate_classname("pb_gauge_kit")
52
+ end
53
+ end
54
+ end
55
+ 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 %>
@@ -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;