playbook_ui 11.11.0.pre.alpha.renderer1 → 11.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/index.js +1 -0
  3. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.jsx +21 -1
  4. data/app/pb_kits/playbook/pb_bar_graph/bar_graph.rb +17 -1
  5. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.html.erb +62 -0
  6. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.jsx +86 -0
  7. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.md +17 -0
  8. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +2 -0
  9. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +1 -0
  10. data/app/pb_kits/playbook/pb_button/_button.scss +6 -0
  11. data/app/pb_kits/playbook/pb_button/docs/_button_default.html.erb +4 -4
  12. data/app/pb_kits/playbook/pb_button/docs/_button_default.jsx +18 -17
  13. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.jsx +15 -0
  14. data/app/pb_kits/playbook/pb_circle_chart/circle_chart.rb +16 -0
  15. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.html.erb +86 -0
  16. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +114 -0
  17. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.md +17 -0
  18. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +2 -0
  19. data/app/pb_kits/playbook/pb_circle_chart/docs/index.js +1 -0
  20. data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +50 -50
  21. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_time.jsx +1 -0
  22. data/app/pb_kits/playbook/pb_date_picker/plugins/timeSelect.ts +89 -89
  23. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_time_selection_styles.scss +15 -0
  24. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +6 -1
  25. data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +7 -1
  26. data/app/pb_kits/playbook/pb_dialog/dialog.rb +1 -1
  27. data/app/pb_kits/playbook/pb_dialog/dialogHelper.js +16 -11
  28. data/app/pb_kits/playbook/pb_dialog/dialog_footer.html.erb +1 -1
  29. data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +1 -1
  30. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.md +3 -1
  31. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_default.md +3 -0
  32. data/app/pb_kits/playbook/pb_icon/_icon.tsx +3 -1
  33. data/app/pb_kits/playbook/pb_icon/icon.rb +8 -1
  34. data/app/pb_kits/playbook/pb_icon/icon.test.js +155 -0
  35. data/app/pb_kits/playbook/pb_legend/{_legend.jsx → _legend.tsx} +6 -6
  36. data/app/pb_kits/playbook/pb_legend/legend.test.js +29 -0
  37. data/app/pb_kits/playbook/pb_line_graph/_line_graph.jsx +20 -0
  38. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.html.erb +62 -0
  39. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.jsx +83 -0
  40. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.md +17 -0
  41. data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +2 -0
  42. data/app/pb_kits/playbook/pb_line_graph/docs/index.js +1 -0
  43. data/app/pb_kits/playbook/pb_line_graph/line_graph.rb +17 -1
  44. data/app/pb_kits/playbook/pb_radio/_radio.scss +1 -1
  45. data/app/pb_kits/playbook/pb_title/_title.scss +5 -0
  46. data/app/pb_kits/playbook/pb_title/_title.tsx +4 -1
  47. data/app/pb_kits/playbook/pb_title/docs/{_title_light.html.erb → _title_default.html.erb} +3 -3
  48. data/app/pb_kits/playbook/pb_title/docs/{_title_light.jsx → _title_default.jsx} +14 -14
  49. data/app/pb_kits/playbook/pb_title/docs/{_title_light.md → _title_default.md} +0 -0
  50. data/app/pb_kits/playbook/pb_title/docs/_title_light_weight.html.erb +1 -0
  51. data/app/pb_kits/playbook/pb_title/docs/_title_light_weight.jsx +19 -0
  52. data/app/pb_kits/playbook/pb_title/docs/_title_light_weight.md +4 -0
  53. data/app/pb_kits/playbook/pb_title/docs/example.yml +4 -2
  54. data/app/pb_kits/playbook/pb_title/docs/index.js +2 -1
  55. data/app/pb_kits/playbook/pb_title/title.rb +6 -1
  56. data/app/pb_kits/playbook/pb_title/title.test.js +13 -0
  57. data/app/pb_kits/playbook/plugins/pb_chart.js +13 -0
  58. data/app/pb_kits/playbook/tokens/_titles.scss +10 -1
  59. data/app/pb_kits/playbook/tokens/_typography.scss +2 -2
  60. data/lib/playbook/version.rb +1 -1
  61. metadata +22 -8
@@ -0,0 +1,155 @@
1
+ import React from 'react'
2
+ import { render, screen, cleanup } from '../utilities/test-utils'
3
+
4
+ import Icon from './_icon'
5
+
6
+ const testId = "icon-kit"
7
+
8
+ describe("Icon Kit", () => {
9
+ test("renders Icon classname", () => {
10
+ render(
11
+ <Icon
12
+ data={{ testid: testId }}
13
+ fixedWidth
14
+ icon="user"
15
+ />
16
+ )
17
+
18
+ const kit = screen.getByTestId(testId)
19
+ expect(kit).toHaveClass("fa-user pb_icon_kit fa-fw far")
20
+ })
21
+
22
+ test("renders rotate prop", () => {[
23
+ "90", "180", "270"].forEach((rotateProp)=> {
24
+ render(
25
+ <Icon
26
+ data={{ testid: testId }}
27
+ fixedWidth
28
+ icon="user"
29
+ rotation={rotateProp}
30
+ />
31
+ )
32
+
33
+ const kit = screen.getByTestId(testId)
34
+ expect(kit).toHaveClass(`fa-user pb_icon_kit fa-fw fa-rotate-${rotateProp} far`)
35
+
36
+ cleanup()
37
+ })
38
+ })
39
+
40
+ test("renders flip prop", () => {
41
+ render(
42
+ <Icon
43
+ data={{ testid: testId }}
44
+ fixedWidth
45
+ flip="horizontal"
46
+ icon="user"
47
+ />
48
+ )
49
+
50
+ const kit = screen.getByTestId(testId)
51
+ expect(kit).toHaveClass("fa-user pb_icon_kit fa-fw fa-flip-horizontal far")
52
+ })
53
+
54
+
55
+ test("renders spinning icon", () => {
56
+ render(
57
+ <Icon
58
+ data={{ testid: testId }}
59
+ fixedWidth
60
+ icon="spinner"
61
+ spin
62
+ />
63
+ )
64
+
65
+ const kit = screen.getByTestId(testId)
66
+ expect(kit).toHaveClass("fa-spinner pb_icon_kit fa-fw fa-spin far")
67
+ })
68
+
69
+ test("renders pull icon", () => {
70
+ render(
71
+ <Icon
72
+ data={{ testid: testId }}
73
+ fixedWidth
74
+ icon="arrow-left"
75
+ pull="left"
76
+ />
77
+ )
78
+
79
+ const kit = screen.getByTestId(testId)
80
+ expect(kit).toHaveClass("fa-arrow-left pb_icon_kit fa-fw fa-pull-left far")
81
+ })
82
+
83
+ test("renders pull icon", () => {
84
+ render(
85
+ <Icon
86
+ data={{ testid: testId }}
87
+ fixedWidth
88
+ icon="arrow-left"
89
+ pull="left"
90
+ />
91
+ )
92
+
93
+ const kit = screen.getByTestId(testId)
94
+ expect(kit).toHaveClass("fa-arrow-left pb_icon_kit fa-fw fa-pull-left far")
95
+ })
96
+
97
+ test("renders border around icon", () => {
98
+ render(
99
+ <Icon
100
+ border
101
+ data={{ testid: testId }}
102
+ fixedWidth
103
+ icon="user"
104
+ />
105
+ )
106
+
107
+ const kit = screen.getByTestId(testId)
108
+ expect(kit).toHaveClass("fa-user pb_icon_kit fa-border fa-fw far")
109
+ })
110
+
111
+ test("renders size prop", () => {
112
+ ["lg",
113
+ "sm",
114
+ "xs",
115
+ "1x",
116
+ "2x",
117
+ "3x",
118
+ "4x",
119
+ "5x",
120
+ "6x",
121
+ "7x",
122
+ "8x",
123
+ "9x",
124
+ "10x"].forEach(
125
+ (sizeProp) => {
126
+ render(
127
+ <Icon
128
+ data={{ testid: testId }}
129
+ icon="user"
130
+ size={sizeProp}
131
+ />
132
+ )
133
+
134
+ const kit = screen.getByTestId(testId)
135
+ expect(kit).toHaveClass(`pb_icon_kit fa-user fa-fw fa-${sizeProp} far`)
136
+
137
+ cleanup()
138
+ })
139
+ })
140
+
141
+ test("renders fontStyle prop", () => {
142
+ render(
143
+ <Icon
144
+ data={{ testid: testId }}
145
+ fixedWidth
146
+ fontStyle="fas"
147
+ icon="user"
148
+ />
149
+ )
150
+
151
+ const kit = screen.getByTestId(testId)
152
+ expect(kit).toHaveClass("fa-user pb_icon_kit fa-fw fas")
153
+ })
154
+
155
+ })
@@ -1,5 +1,3 @@
1
- /* @flow */
2
-
3
1
  import React from 'react'
4
2
  import classnames from 'classnames'
5
3
 
@@ -10,7 +8,7 @@ import Body from '../pb_body/_body'
10
8
  import Title from '../pb_title/_title'
11
9
 
12
10
  type LegendProps = {
13
- aria?: object,
11
+ aria?: { [key: string]: string },
14
12
  className?: string,
15
13
  color?: string,
16
14
  dark?: boolean,
@@ -59,14 +57,16 @@ const Legend = (props: LegendProps) => {
59
57
  <span className={`${customColor ? "pb_legend_indicator_circle_custom" : "pb_legend_indicator_circle"}`}
60
58
  style={customColorStyle}
61
59
  />
62
- <If condition={prefixText}>
63
- <Title
60
+ {
61
+ prefixText && (
62
+ <Title
64
63
  dark={dark}
65
64
  size={4}
66
65
  tag="span"
67
66
  text={` ${prefixText} `}
68
67
  />
69
- </If>
68
+ )
69
+ }
70
70
  {` ${text} `}
71
71
  </Body>
72
72
  </div>
@@ -27,3 +27,32 @@ test('color prop', () => {
27
27
  const kit = screen.getByTestId('primary-test')
28
28
  expect(kit).toHaveClass('pb_legend_kit_category_17')
29
29
  })
30
+
31
+ test('prefixText prop renders', () => {
32
+ render(
33
+ <Legend
34
+ color="category_17"
35
+ data={{ testid: 'primary-test' }}
36
+ prefixText="10"
37
+ text="Test colors"
38
+ />
39
+ )
40
+
41
+ const kit = screen.getByTestId('primary-test')
42
+ const prefix = kit.querySelector(".pb_title_kit_size_4")
43
+ expect(prefix).toBeInTheDocument()
44
+ })
45
+
46
+ test('Color prop renders with custom HEX value', () => {
47
+ render(
48
+ <Legend
49
+ color="#dc418a"
50
+ data={{ testid: 'primary-test' }}
51
+ text="Test colors"
52
+ />
53
+ )
54
+
55
+ const kit = screen.getByTestId('primary-test')
56
+ const circle = kit.querySelector(".pb_legend_indicator_circle_custom")
57
+ expect(circle).toHaveStyle('background: rgb(220, 65, 138);')
58
+ })
@@ -7,6 +7,7 @@ import { globalProps } from '../utilities/globalProps'
7
7
  import pbChart from '../plugins/pb_chart'
8
8
 
9
9
  type LineGraphProps = {
10
+ align?: "left" | "right" | "center",
10
11
  axisTitle?: string,
11
12
  dark?: Boolean,
12
13
  xAxisCategories: array,
@@ -27,20 +28,30 @@ type LineGraphProps = {
27
28
  toggleLegendClick?: boolean,
28
29
  height?: string,
29
30
  colors: array,
31
+ layout?: "horizontal" | "vertical" | "proximate",
32
+ verticalAlign?: "top" | "middle" | "bottom",
33
+ x?: number,
34
+ y?: number,
30
35
  }
31
36
 
32
37
  export default class LineGraph extends React.Component<LineGraphProps> {
33
38
  static defaultProps = {
39
+ align: "center",
34
40
  className: 'pb_bar_graph',
35
41
  dark: false,
36
42
  gradient: false,
37
43
  type: 'line',
38
44
  legend: false,
39
45
  toggleLegendClick: true,
46
+ layout: "horizontal",
47
+ verticalAlign: "bottom",
48
+ x: 0,
49
+ y: 0,
40
50
  }
41
51
 
42
52
  componentDidMount() {
43
53
  const {
54
+ align,
44
55
  axisTitle,
45
56
  dark,
46
57
  xAxisCategories,
@@ -57,9 +68,14 @@ export default class LineGraph extends React.Component<LineGraphProps> {
57
68
  toggleLegendClick,
58
69
  height,
59
70
  colors = [],
71
+ layout,
72
+ verticalAlign,
73
+ x,
74
+ y,
60
75
  } = this.props
61
76
 
62
77
  new pbChart(`.${className}`, {
78
+ align,
63
79
  axisTitle: axisTitle,
64
80
  chartData: chartData,
65
81
  colors: colors,
@@ -75,6 +91,10 @@ export default class LineGraph extends React.Component<LineGraphProps> {
75
91
  legend: legend,
76
92
  toggleLegendClick: toggleLegendClick,
77
93
  height: height,
94
+ layout,
95
+ verticalAlign,
96
+ x,
97
+ y,
78
98
  })
79
99
  }
80
100
 
@@ -0,0 +1,62 @@
1
+ <% data = [{
2
+ name: 'Installation',
3
+ data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175]
4
+ }, {
5
+ name: 'Manufacturing',
6
+ data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434]
7
+ }, {
8
+ name: 'Sales & Distribution',
9
+ data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387]
10
+ }, {
11
+ name: 'Project Development',
12
+ data: [nil, nil, 7988, 12169, 15112, 22452, 34400, 34227]
13
+ }, {
14
+ name: 'Other',
15
+ data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111]
16
+ }] %>
17
+
18
+ <%= pb_rails("title", props: {size: 4, text: "align | vertical_align", padding_top: "sm", padding_bottom: "sm"})%>
19
+
20
+ <%= pb_rails("line_graph", props: {
21
+ id: "legend-position-line",
22
+ gradient: false,
23
+ chart_data: data,
24
+ x_axis_categories:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug'],
25
+ title: 'Alignment of Legend',
26
+ axis_title: 'Number of Employees',
27
+ legend: true,
28
+ align: 'right',
29
+ vertical_align: 'top',
30
+ padding_bottom: "sm",
31
+ }) %>
32
+
33
+ <%= pb_rails("title", props: {size: 4, text: "layout", padding_top: "sm", padding_bottom: "sm"})%>
34
+
35
+ <%= pb_rails("line_graph", props: {
36
+ id: "legend-position-line-1",
37
+ gradient: false,
38
+ chart_data: data,
39
+ x_axis_categories:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug'],
40
+ title: 'Layout of Legend',
41
+ axis_title: 'Number of Employees',
42
+ legend: true,
43
+ layout: 'vertical',
44
+ padding_top: "sm",
45
+ padding_bottom: "sm",
46
+ }) %>
47
+
48
+ <%= pb_rails("title", props: {size: 4, text: "x | y", padding_top: "sm", padding_bottom: "sm"})%>
49
+
50
+ <%= pb_rails("line_graph", props: {
51
+ id: "legend-position-line-2",
52
+ gradient: false,
53
+ chart_data: data,
54
+ x_axis_categories:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug'],
55
+ title: 'Offset of Legend',
56
+ axis_title: 'Number of Employees',
57
+ legend: true,
58
+ layout: "vertical",
59
+ x: 100,
60
+ y: 10,
61
+ padding_top: "sm",
62
+ }) %>
@@ -0,0 +1,83 @@
1
+ import React from 'react'
2
+ import { LineGraph, Title } from '../..'
3
+
4
+ const data = [{
5
+ name: 'Installation',
6
+ data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],
7
+ }, {
8
+ name: 'Manufacturing',
9
+ data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434],
10
+ }, {
11
+ name: 'Sales & Distribution',
12
+ data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387],
13
+ }, {
14
+ name: 'Project Development',
15
+ data: [null, null, 7988, 12169, 15112, 22452, 34400, 34227],
16
+ }, {
17
+ name: 'Other',
18
+ data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],
19
+ }]
20
+
21
+ const LineGraphLegendPosition = (props) => (
22
+ <div>
23
+ <Title
24
+ paddingBottom="sm"
25
+ paddingTop="sm"
26
+ size={4}
27
+ tag="h4"
28
+ text="align | verticalAlign"
29
+ />
30
+ <LineGraph
31
+ align='right'
32
+ axisTitle="Number of Employees"
33
+ chartData={data}
34
+ id="legend-position-line"
35
+ legend
36
+ title="Alignment of Legend"
37
+ verticalAlign="top"
38
+ xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']}
39
+ yAxisMin={0}
40
+ {...props}
41
+ />
42
+ <Title
43
+ paddingBottom="sm"
44
+ paddingTop="sm"
45
+ size={4}
46
+ tag="h4"
47
+ text="layout"
48
+ />
49
+ <LineGraph
50
+ axisTitle="Number of Employees"
51
+ chartData={data}
52
+ id="legend-position-line-1"
53
+ layout="vertical"
54
+ legend
55
+ title="Layout of Legend"
56
+ xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']}
57
+ yAxisMin={0}
58
+ {...props}
59
+ />
60
+ <Title
61
+ paddingBottom="sm"
62
+ paddingTop="sm"
63
+ size={4}
64
+ tag="h4"
65
+ text="x | y"
66
+ />
67
+ <LineGraph
68
+ axisTitle="Number of Employees"
69
+ chartData={data}
70
+ id="legend-position-line-2"
71
+ layout="vertical"
72
+ legend
73
+ title="Offset of Legend"
74
+ x={100}
75
+ xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']}
76
+ y={10}
77
+ yAxisMin={0}
78
+ {...props}
79
+ />
80
+ </div>
81
+ )
82
+
83
+ export default LineGraphLegendPosition
@@ -0,0 +1,17 @@
1
+ ##### Prop
2
+
3
+ `align` **Type**: String | **Values**: left | center | right (defaults to center)
4
+ `verticalAlign` **Type**: String | **Values**: top | middle | bottom (defaults middle)
5
+ `layout` **Type**: String | **Values**: horizontal | vertical | proximate (defaults to horizontal)
6
+ `x` **Type**: Number (defaults to 0)
7
+ `y` **Type**: Number (defaults to 0)
8
+
9
+ -
10
+
11
+ - `layout` determines the position of the legend items
12
+ `layout: proximate` will place the legend items as close as possible to the graphs they're representing. It will also determine whether to place the legend above/below or on the side of the plot area, if the legend is in a corner.
13
+
14
+ - `x` offsets the legend relative to its horizontal alignmnet. Negative x moves it to the left, positive x moves it to the right
15
+
16
+
17
+ - `y` offsets the legend relative to its vertical alignmnet. Negative y moves it up, positive y moves it down.
@@ -3,6 +3,7 @@ examples:
3
3
  rails:
4
4
  - line_graph_default: Default
5
5
  - line_graph_legend: Legend
6
+ - line_graph_legend_position: Legend Position
6
7
  - line_graph_legend_nonclickable: Legend Nonclickable
7
8
  - line_graph_height: Height
8
9
  - line_graph_colors: Color Overrides
@@ -11,6 +12,7 @@ examples:
11
12
  react:
12
13
  - line_graph_default: Default
13
14
  - line_graph_legend: Legend
15
+ - line_graph_legend_position: Legend Position
14
16
  - line_graph_legend_nonclickable: Legend Nonclickable
15
17
  - line_graph_height: Height
16
18
  - line_graph_colors: Color Overrides
@@ -1,5 +1,6 @@
1
1
  export { default as LineGraphDefault } from './_line_graph_default.jsx'
2
2
  export { default as LineGraphLegend } from './_line_graph_legend.jsx'
3
+ export { default as LineGraphLegendPosition } from './_line_graph_legend_position.jsx'
3
4
  export { default as LineGraphLegendNonclickable } from './_line_graph_legend_nonclickable.jsx'
4
5
  export { default as LineGraphHeight } from './_line_graph_height.jsx'
5
6
  export { default as LineGraphColors } from './_line_graph_colors.jsx'
@@ -3,6 +3,9 @@
3
3
  module Playbook
4
4
  module PbLineGraph
5
5
  class LineGraph < Playbook::KitBase
6
+ prop :align, type: Playbook::Props::Enum,
7
+ values: %w[left right center],
8
+ default: "center"
6
9
  prop :axis_title
7
10
  prop :chart_data, type: Playbook::Props::Array,
8
11
  default: []
@@ -22,6 +25,14 @@ module Playbook
22
25
  prop :height
23
26
  prop :colors, type: Playbook::Props::Array,
24
27
  default: []
28
+ prop :layout, type: Playbook::Props::Enum,
29
+ values: %w[horizontal vertical proximate],
30
+ default: "horizontal"
31
+ prop :vertical_align, type: Playbook::Props::Enum,
32
+ values: %w[top middle bottom],
33
+ default: "bottom"
34
+ prop :x, type: Playbook::Props::Numeric
35
+ prop :y, type: Playbook::Props::Numeric
25
36
 
26
37
  def chart_type
27
38
  gradient ? "area" : "line"
@@ -29,13 +40,14 @@ module Playbook
29
40
 
30
41
  def chart_options
31
42
  {
43
+ align: align,
32
44
  id: id,
33
45
  className: classname,
34
46
  chartData: chart_data,
35
47
  dark: dark ? "dark" : "",
36
48
  type: chart_type,
37
49
  title: title,
38
- subtitle: subtitle,
50
+ subTitle: subtitle,
39
51
  axisTitle: axis_title,
40
52
  pointStart: point_start,
41
53
  xAxisCategories: x_axis_categories,
@@ -45,6 +57,10 @@ module Playbook
45
57
  toggleLegendClick: toggle_legend_click,
46
58
  height: height,
47
59
  colors: colors,
60
+ layout: layout,
61
+ verticalAlign: vertical_align,
62
+ x: x,
63
+ y: y,
48
64
  }
49
65
  end
50
66
 
@@ -40,7 +40,7 @@
40
40
  }
41
41
  }
42
42
 
43
- &.vertical {
43
+ &[class*=vertical] {
44
44
  flex-direction: column;
45
45
  align-items: center;
46
46
  .pb_radio_button {
@@ -6,6 +6,7 @@
6
6
  &[class*=_1] {
7
7
  @include pb_title_1;
8
8
  @include title_colors;
9
+ @include pb_title_bold;
9
10
  }
10
11
 
11
12
  &[class*=_2] {
@@ -26,4 +27,8 @@
26
27
  &.dark {
27
28
  @include pb_title_dark;
28
29
  }
30
+
31
+ &[class*=_thin] {
32
+ @include pb_title_thin;
33
+ }
29
34
  }
@@ -5,6 +5,7 @@ import { deprecatedProps, GlobalProps, globalProps } from '../utilities/globalPr
5
5
 
6
6
  type TitleProps = {
7
7
  aria?: {[key: string]: string},
8
+ bold?: boolean,
8
9
  children?: React.ReactChild[] | React.ReactChild,
9
10
  className?: string,
10
11
  color?: "default" | "light" | "lighter" | "success" | "error" | "link",
@@ -20,6 +21,7 @@ const Title = (props: TitleProps): React.ReactElement => {
20
21
  if (props.variant) deprecatedProps('Title', ['variant']) //variant prop is deprecated, use color instead
21
22
  const {
22
23
  aria = {},
24
+ bold = true,
23
25
  children,
24
26
  className,
25
27
  color,
@@ -33,8 +35,9 @@ const Title = (props: TitleProps): React.ReactElement => {
33
35
 
34
36
  const ariaProps: {[key: string]: string | number} = buildAriaProps(aria)
35
37
  const dataProps: {[key: string]: string | number} = buildDataProps(data)
38
+ const getBold = bold ? '' : 'thin'
36
39
  const classes = classnames(
37
- buildCss('pb_title_kit', `size_${size}`, variant, color),
40
+ buildCss('pb_title_kit', `size_${size}`, variant, color, getBold),
38
41
  globalProps(props),
39
42
  className,
40
43
  )
@@ -5,7 +5,7 @@
5
5
 
6
6
  <br/>
7
7
 
8
- <%= pb_rails("title", props: { text: "Title 4", tag: "h4", size: 4 }) %>
9
- <%= pb_rails("title", props: { text: "Title 3", tag: "h3", size: 3 }) %>
10
- <%= pb_rails("title", props: { text: "Title 2", tag: "h2", size: 2 }) %>
11
8
  <%= pb_rails("title", props: { text: "Title 1", tag: "h1", size: 1 }) %>
9
+ <%= pb_rails("title", props: { text: "Title 2", tag: "h2", size: 2 }) %>
10
+ <%= pb_rails("title", props: { text: "Title 3", tag: "h3", size: 3 }) %>
11
+ <%= pb_rails("title", props: { text: "Title 4", tag: "h4", size: 4 }) %>
@@ -2,7 +2,7 @@ import React from 'react'
2
2
 
3
3
  import Title from '../_title'
4
4
 
5
- const TitleLight = (props) => {
5
+ const TitleDefault = (props) => {
6
6
  return (
7
7
  <div>
8
8
  <Title
@@ -11,15 +11,9 @@ const TitleLight = (props) => {
11
11
  />
12
12
  <br />
13
13
  <Title
14
- size={4}
15
- tag="h4"
16
- text="Title 4"
17
- {...props}
18
- />
19
- <Title
20
- size={3}
21
- tag="h3"
22
- text="Title 3"
14
+ size={1}
15
+ tag="h1"
16
+ text="Title 1"
23
17
  {...props}
24
18
  />
25
19
  <Title
@@ -29,13 +23,19 @@ const TitleLight = (props) => {
29
23
  {...props}
30
24
  />
31
25
  <Title
32
- size={1}
33
- tag="h1"
34
- text="Title 1"
26
+ size={3}
27
+ tag="h3"
28
+ text="Title 3"
29
+ {...props}
30
+ />
31
+ <Title
32
+ size={4}
33
+ tag="h4"
34
+ text="Title 4"
35
35
  {...props}
36
36
  />
37
37
  </div>
38
38
  )
39
39
  }
40
40
 
41
- export default TitleLight
41
+ export default TitleDefault
@@ -0,0 +1 @@
1
+ <%= pb_rails("title", props: { text: "Title 1", tag: "h1", size: 1, bold: false }) %>
@@ -0,0 +1,19 @@
1
+ import React from 'react'
2
+
3
+ import Title from '../_title'
4
+
5
+ const TitleLightWeight = (props) => {
6
+ return (
7
+ <div>
8
+ <Title
9
+ bold={false}
10
+ size={1}
11
+ tag="h1"
12
+ text="Title 1"
13
+ {...props}
14
+ />
15
+ </div>
16
+ )
17
+ }
18
+
19
+ export default TitleLightWeight
@@ -0,0 +1,4 @@
1
+ ##### Prop
2
+ Title `size 1` will use `font-weight: 700` by default, if you want a lighter font weight, use the `bold` prop set to `false`.
3
+ Title `size 2` & `size 3` uses a light font weight by default and will not accept a bold font weight.
4
+ Title `size 4` uses a heavy font weight by default and will not accept a lighter font weight.