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.
- checksums.yaml +4 -4
- data/README.md +12 -0
- data/app/assets/images/clark.jpg +0 -0
- data/app/assets/images/giant.jpg +0 -0
- data/app/assets/images/pb-caret.svg +1 -0
- data/app/assets/images/pb-check.svg +11 -0
- data/app/assets/images/pb.logo.svg +28 -0
- data/app/controllers/playbook/application_controller.rb +13 -0
- data/app/controllers/playbook/guides_controller.rb +11 -0
- data/app/controllers/playbook/pages_controller.rb +79 -0
- data/app/controllers/playbook/samples_controller.rb +40 -0
- data/app/pb_kits/playbook/_playbook.scss +1 -0
- data/app/pb_kits/playbook/data/menu.yml +4 -2
- data/app/pb_kits/playbook/index.js +1 -4
- data/app/pb_kits/playbook/packs/application.js +55 -0
- data/app/pb_kits/playbook/packs/examples.js +176 -0
- data/app/pb_kits/playbook/packs/main.scss +12 -0
- data/app/pb_kits/playbook/packs/samples.js +19 -0
- data/app/pb_kits/playbook/packs/site_styles/_samples.scss +72 -0
- data/app/pb_kits/playbook/packs/site_styles/_scaffold.scss +43 -0
- data/app/pb_kits/playbook/packs/site_styles/_site-style.scss +135 -0
- data/app/pb_kits/playbook/packs/site_styles/docs/_all.scss +10 -0
- data/app/pb_kits/playbook/packs/site_styles/docs/_bg_light_doc_example.scss +7 -0
- data/app/pb_kits/playbook/packs/site_styles/docs/_code_snippet.scss +531 -0
- data/app/pb_kits/playbook/packs/site_styles/docs/_color_utilities.scss +92 -0
- data/app/pb_kits/playbook/packs/site_styles/docs/_flex_examples.scss +15 -0
- data/app/pb_kits/playbook/packs/site_styles/docs/_kit_doc.scss +190 -0
- data/app/pb_kits/playbook/packs/site_styles/docs/_kits_examples.scss +18 -0
- data/app/pb_kits/playbook/packs/site_styles/docs/_markdown.scss +82 -0
- data/app/pb_kits/playbook/packs/site_styles/docs/_spacing_tokens.scss +72 -0
- data/app/pb_kits/playbook/pb_badge/_badge.html.erb +1 -0
- data/app/pb_kits/playbook/pb_badge/_badge.jsx +17 -4
- data/app/pb_kits/playbook/pb_card/_card.jsx +4 -1
- data/app/pb_kits/playbook/pb_card/_card.scss +4 -0
- data/app/pb_kits/playbook/pb_card/card.rb +8 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_border_none.html.erb +7 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_border_none.jsx +14 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_border_none.md +1 -0
- data/app/pb_kits/playbook/pb_card/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_card/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_dashboard/pbChartsLightTheme.js +26 -0
- data/app/pb_kits/playbook/pb_filter/docs/_description.md +3 -0
- data/app/pb_kits/playbook/pb_filter/templates/_default.html.erb +1 -1
- data/app/pb_kits/playbook/pb_gauge/_gauge.html.erb +12 -0
- data/app/pb_kits/playbook/pb_gauge/_gauge.jsx +105 -0
- data/app/pb_kits/playbook/pb_gauge/_gauge.scss +11 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.html.erb +11 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx +17 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.html.erb +14 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.jsx +20 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.html.erb +15 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.jsx +23 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_live_data.jsx +25 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.html.erb +21 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.jsx +26 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.html.erb +33 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.jsx +42 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.html.erb +14 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.jsx +20 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.html.erb +29 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.jsx +29 -0
- data/app/pb_kits/playbook/pb_gauge/docs/example.yml +22 -0
- data/app/pb_kits/playbook/pb_gauge/docs/index.js +8 -0
- data/app/pb_kits/playbook/pb_gauge/gauge.rb +55 -0
- data/app/pb_kits/playbook/pb_layout/_footer.html.erb +6 -0
- data/app/pb_kits/playbook/pb_layout/_header.html.erb +6 -0
- data/app/pb_kits/playbook/pb_layout/_layout.jsx +33 -1
- data/app/pb_kits/playbook/pb_layout/_layout.scss +48 -3
- data/app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.html.erb +19 -0
- data/app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.jsx +54 -0
- data/app/pb_kits/playbook/pb_layout/docs/_layout_collection_detail.md +1 -0
- data/app/pb_kits/playbook/pb_layout/docs/_layout_content.html.erb +28 -0
- data/app/pb_kits/playbook/pb_layout/docs/_layout_content.jsx +42 -0
- data/app/pb_kits/playbook/pb_layout/docs/example.yml +6 -0
- data/app/pb_kits/playbook/pb_layout/docs/index.js +3 -0
- data/app/pb_kits/playbook/pb_layout/footer.rb +19 -0
- data/app/pb_kits/playbook/pb_layout/header.rb +19 -0
- data/app/pb_kits/playbook/pb_layout/layout.rb +9 -4
- data/app/pb_kits/playbook/pb_popover/_popover.html.erb +2 -2
- data/app/pb_kits/playbook/pb_popover/_popover.jsx +3 -3
- data/app/pb_kits/playbook/pb_popover/_popover.scss +25 -21
- data/app/pb_kits/playbook/pb_popover/index.js +6 -1
- data/app/pb_kits/playbook/pb_radio/_radio.scss +4 -0
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default.html.erb +1 -1
- data/app/pb_kits/playbook/plugins/pb_chart.js +71 -0
- data/app/views/layouts/playbook/_mobile_hamburger.html.erb +2 -0
- data/app/views/layouts/playbook/_nav.html.erb +13 -0
- data/app/views/layouts/playbook/_sidebar.html.erb +52 -0
- data/app/views/layouts/playbook/application.html.slim +22 -0
- data/app/views/layouts/playbook/fullscreen.html.slim +10 -0
- data/app/views/layouts/playbook/grid.html.slim +10 -0
- data/app/views/layouts/playbook/samples.html.erb +18 -0
- data/app/views/playbook/guides/create_kit.html.slim +16 -0
- data/app/views/playbook/guides/create_kit/_file_naming.html.md +2 -0
- data/app/views/playbook/guides/create_kit/_generator.html.md +6 -0
- data/app/views/playbook/guides/create_kit/_kit_examples.html.md +2 -0
- data/app/views/playbook/guides/create_kit/_kit_rails.html.md +2 -0
- data/app/views/playbook/guides/create_kit/_kit_react.html.md +2 -0
- data/app/views/playbook/guides/create_kit/_layout.html.md +2 -0
- data/app/views/playbook/guides/create_kit/_view_objects.html.md +2 -0
- data/app/views/playbook/guides/create_kit/_writing_sass.md +10 -0
- data/app/views/playbook/guides/use_nitro.html.slim +6 -0
- data/app/views/playbook/guides/use_nitro/_local.html.md +2 -0
- data/app/views/playbook/guides/use_nitro/_nitro_components.html.md +2 -0
- data/app/views/playbook/guides/use_nitro/_versions.html.md +2 -0
- data/app/views/playbook/pages/fullscreen.html.slim +10 -0
- data/app/views/playbook/pages/grid.html.slim +2 -0
- data/app/views/playbook/pages/home.html.slim +4 -0
- data/app/views/playbook/pages/kit_category_show.html.erb +14 -0
- data/app/views/playbook/pages/kit_show.html.erb +33 -0
- data/app/views/playbook/pages/kits.html.erb +12 -0
- data/app/views/playbook/pages/principals/_getting_started.html.md +30 -0
- data/app/views/playbook/pages/principles.html.slim +3 -0
- data/app/views/playbook/pages/tokens.html.slim +15 -0
- data/app/views/playbook/pages/tokens/_pb_doc_spacing.html.slim +17 -0
- data/app/views/playbook/pages/utilities.html.slim +116 -0
- data/app/views/playbook/pages/utilities/_pb_doc_color.html.slim +15 -0
- data/app/views/playbook/samples/dashboards/index.html.erb +81 -0
- data/app/views/playbook/samples/dashboards/index.jsx +130 -0
- data/app/views/playbook/samples/filter_table/index.html.erb +348 -0
- data/app/views/playbook/samples/filter_table/index.jsx +433 -0
- data/app/views/playbook/samples/registration/index.html.erb +316 -0
- data/app/views/playbook/samples/registration/index.jsx +476 -0
- data/app/views/playbook/samples/sample_show.html.erb +36 -0
- data/lib/playbook/version.rb +1 -1
- data/lib/tasks/pb_release.rake +0 -3
- metadata +100 -3
- 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,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
|
@@ -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-
|
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;
|