playbook_ui 10.17.0 → 10.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +2 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_colors.md +1 -1
- data/app/pb_kits/playbook/pb_button/_button.jsx +3 -3
- data/app/pb_kits/playbook/pb_button/_button.scss +17 -0
- data/app/pb_kits/playbook/pb_button/button.rb +6 -3
- data/app/pb_kits/playbook/pb_button/button.test.js +13 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_size.html.erb +3 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_size.jsx +26 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_size.md +1 -0
- data/app/pb_kits/playbook/pb_button/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_button/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_background.html.erb +1 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_content.html.erb +3 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_content.jsx +9 -2
- data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.md +2 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.md +3 -1
- data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js +13 -4
- data/app/pb_kits/playbook/pb_gauge/_gauge.jsx +3 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.html.erb +12 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx +19 -0
- data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.md +2 -0
- data/app/pb_kits/playbook/pb_gauge/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_gauge/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_gauge/gauge.rb +2 -0
- data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +2 -2
- data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.html.erb +1 -1
- data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.jsx +1 -1
- data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.md +1 -0
- data/app/pb_kits/playbook/pb_icon_circle/icon_circle.rb +1 -1
- data/app/pb_kits/playbook/pb_image/_image.jsx +4 -1
- data/app/pb_kits/playbook/pb_image/_image.scss +24 -8
- data/app/pb_kits/playbook/pb_image/docs/_transition_image.html.erb +54 -0
- data/app/pb_kits/playbook/pb_image/docs/_transition_image.jsx +77 -0
- data/app/pb_kits/playbook/pb_image/docs/_transition_image.md +1 -0
- data/app/pb_kits/playbook/pb_image/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_image/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_image/image.html.erb +1 -1
- data/app/pb_kits/playbook/pb_image/image.rb +8 -1
- data/app/pb_kits/playbook/pb_image/image.test.js +9 -4
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors.md +1 -1
- data/app/pb_kits/playbook/pb_title/docs/_title_light.html.erb +4 -1
- data/app/pb_kits/playbook/pb_title/title.html.erb +4 -2
- data/app/pb_kits/playbook/plugins/pb_chart.js +13 -22
- data/app/pb_kits/playbook/tokens/_colors.scss +3 -1
- data/app/pb_kits/playbook/utilities/_cursor.scss +3 -0
- data/app/pb_kits/playbook/utilities/_display.scss +23 -0
- data/app/pb_kits/playbook/utilities/globalProps.js +13 -1
- data/lib/playbook/classnames.rb +2 -0
- data/lib/playbook/cursor.rb +29 -0
- data/lib/playbook/display.rb +29 -0
- data/lib/playbook/engine.rb +0 -1
- data/lib/playbook/kit_base.rb +4 -0
- data/lib/playbook/version.rb +1 -1
- data/lib/playbook.rb +2 -0
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6fbbfa10d2162c02d5c0e145411bc6c425b6c9d637e058797da617ac6249270
|
4
|
+
data.tar.gz: 2649996be5ab0d966b38f542b8db7a23b6d095a1043f8d93e1cf68fed3dfda29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c512fa4a05695fbecddb4cc4e1c2df8b79b8021b18bc2676ed3ca9c4844a9fa6b0ca81182b73ce0db194ee8ea083cc4e65db8db98ef3a42d554b2017a98e4d0b
|
7
|
+
data.tar.gz: 18405cbcd539c6c0f6b17be09fe5362711a2c63bc93450d0534758c1fd48f34c8f04cef485ce333292f9d62fa9d4e475fc8534bbd095a314443886326b70a98c
|
@@ -93,7 +93,9 @@
|
|
93
93
|
@import 'pb_walkthrough/walkthrough';
|
94
94
|
@import 'pb_weekday_stacked/weekday_stacked';
|
95
95
|
@import './utilities/spacing';
|
96
|
+
@import './utilities/cursor';
|
96
97
|
@import './utilities/max_width';
|
97
98
|
@import './utilities/positioning';
|
98
99
|
@import './utilities/number_spacing';
|
99
100
|
@import './utilities/shadow';
|
101
|
+
@import './utilities/display';
|
@@ -1,2 +1,2 @@
|
|
1
1
|
Custom data `colors` allow for color customization to match the needs of business requirements.
|
2
|
-
Pass the prop colors and use desired values `data-1 | data-2 | data-3 | data-4 | data-5 | data-6 | data-7 | data-8` in an array.
|
2
|
+
Pass the prop colors and use desired values `data-1 | data-2 | data-3 | data-4 | data-5 | data-6 | data-7 | data-8` in an array. Hex colors are also available `eg: #CA0095`
|
@@ -22,7 +22,7 @@ type ButtonPropTypes = {
|
|
22
22
|
loading?: boolean,
|
23
23
|
newWindow?: boolean,
|
24
24
|
onClick?: EventHandler,
|
25
|
-
size
|
25
|
+
size?: 'sm' | 'md' | 'lg',
|
26
26
|
text?: string,
|
27
27
|
type: 'inline' | null,
|
28
28
|
htmlType: string | 'button',
|
@@ -36,16 +36,16 @@ const buttonClassName = (props: ButtonPropTypes) => {
|
|
36
36
|
disabled = false,
|
37
37
|
fullWidth = false,
|
38
38
|
loading = false,
|
39
|
-
size = null,
|
40
39
|
type = 'inline',
|
41
40
|
variant = 'primary',
|
41
|
+
size = null,
|
42
42
|
} = props
|
43
43
|
|
44
44
|
let className = 'pb_button_kit'
|
45
45
|
|
46
|
+
className += `${size !== null ? `_${size}` : ''}`
|
46
47
|
className += `${variant !== null ? `_${variant}` : ''}`
|
47
48
|
className += `${type !== null ? `_${type}` : ''}`
|
48
|
-
className += `${size !== null ? `_${size}` : ''}`
|
49
49
|
className += `${fullWidth ? '_block' : ''}`
|
50
50
|
className += disabled ? '_disabled' : '_enabled'
|
51
51
|
className += loading ? '_loading' : ''
|
@@ -1,7 +1,24 @@
|
|
1
1
|
@import "./button_mixins";
|
2
2
|
|
3
|
+
$pb_button_sizes: (
|
4
|
+
"sm": 0.75rem,
|
5
|
+
"md": 0.875rem,
|
6
|
+
"lg": 1.125rem,
|
7
|
+
);
|
8
|
+
|
3
9
|
[class^=pb_button_kit]{
|
4
10
|
@include pb_button;
|
11
|
+
// Size =================
|
12
|
+
@each $name, $size in $pb_button_sizes {
|
13
|
+
&[class*=_#{$name}] {
|
14
|
+
font-size: $size;
|
15
|
+
padding: calc(#{$size} / 2) calc(#{$size} * 2.42) !important;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
&[class*=_sm] {
|
19
|
+
min-height: 0;
|
20
|
+
}
|
21
|
+
|
5
22
|
// Variants =================
|
6
23
|
&[class*=_primary] {
|
7
24
|
@include pb_button_primary;
|
@@ -18,6 +18,9 @@ module Playbook
|
|
18
18
|
prop :text
|
19
19
|
prop :type
|
20
20
|
prop :value
|
21
|
+
prop :size, type: Playbook::Props::Enum,
|
22
|
+
values: ["sm", "md", "lg", nil],
|
23
|
+
default: nil
|
21
24
|
|
22
25
|
def options
|
23
26
|
{
|
@@ -44,12 +47,12 @@ module Playbook
|
|
44
47
|
link ? "a" : "button"
|
45
48
|
end
|
46
49
|
|
47
|
-
private
|
48
|
-
|
49
50
|
def classname
|
50
|
-
generate_classname("pb_button_kit", variant, full_width_class, disabled_class, loading_class)
|
51
|
+
generate_classname("pb_button_kit", size, variant, full_width_class, disabled_class, loading_class)
|
51
52
|
end
|
52
53
|
|
54
|
+
private
|
55
|
+
|
53
56
|
def disabled_class
|
54
57
|
disabled ? "disabled" : "enabled"
|
55
58
|
end
|
@@ -89,3 +89,16 @@ test('click event', async () => {
|
|
89
89
|
|
90
90
|
expect(screen.getByText('clicked button!')).toBeInTheDocument()
|
91
91
|
})
|
92
|
+
|
93
|
+
test('size prop', () => {
|
94
|
+
render(
|
95
|
+
<Button
|
96
|
+
data={{ testid: 'size-test' }}
|
97
|
+
size="sm"
|
98
|
+
/>
|
99
|
+
)
|
100
|
+
|
101
|
+
const kit = screen.getByTestId('size-test')
|
102
|
+
|
103
|
+
expect(kit).toHaveClass('pb_button_kit_sm_primary_inline_enabled')
|
104
|
+
})
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { Button } from '../../'
|
3
|
+
|
4
|
+
const ButtonSize = (props) => (
|
5
|
+
<div>
|
6
|
+
<Button
|
7
|
+
size="sm"
|
8
|
+
text="Button sm size"
|
9
|
+
{...props}
|
10
|
+
/>
|
11
|
+
{' '}
|
12
|
+
<Button
|
13
|
+
size="md"
|
14
|
+
text="Button md size"
|
15
|
+
{...props}
|
16
|
+
/>
|
17
|
+
{' '}
|
18
|
+
<Button
|
19
|
+
size="lg"
|
20
|
+
text="Button lg size"
|
21
|
+
{...props}
|
22
|
+
/>
|
23
|
+
</div>
|
24
|
+
)
|
25
|
+
|
26
|
+
export default ButtonSize
|
@@ -0,0 +1 @@
|
|
1
|
+
By default button has the `md` size style, even if you don't explicitly pass a size prop.
|
@@ -7,6 +7,7 @@ examples:
|
|
7
7
|
- button_block_content: Button Block Content
|
8
8
|
- button_accessibility: Button Accessibility Options
|
9
9
|
- button_options: Button Additional Options
|
10
|
+
- button_size: Button Size
|
10
11
|
react:
|
11
12
|
- button_default: Button Variants
|
12
13
|
- button_full_width: Button Full Width
|
@@ -15,3 +16,4 @@ examples:
|
|
15
16
|
- button_block_content: Button Block Content
|
16
17
|
- button_accessibility: Button Accessibility Options
|
17
18
|
- button_options: Button Additional Options (onClick)
|
19
|
+
- button_size: Button Size
|
@@ -5,3 +5,4 @@ export { default as ButtonLoading } from './_button_loading.jsx'
|
|
5
5
|
export { default as ButtonBlockContent } from './_button_block_content.jsx'
|
6
6
|
export { default as ButtonAccessibility } from './_button_accessibility.jsx'
|
7
7
|
export { default as ButtonOptions } from './_button_options.jsx'
|
8
|
+
export { default as ButtonSize } from './_button_size.jsx'
|
@@ -5,9 +5,16 @@ import Card from '../_card'
|
|
5
5
|
const CardContent = (props) => {
|
6
6
|
return (
|
7
7
|
<div>
|
8
|
-
<Card
|
8
|
+
<Card
|
9
|
+
cursor="pointer"
|
10
|
+
{...props}
|
11
|
+
>
|
12
|
+
{'Card content'}
|
13
|
+
</Card>
|
9
14
|
<br />
|
10
|
-
<Card
|
15
|
+
<Card
|
16
|
+
{...props}
|
17
|
+
>
|
11
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.
|
12
19
|
|
13
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.`}
|
@@ -1,3 +1,5 @@
|
|
1
1
|
The `defaultDate`/`default_date` prop has a null or empty string value by default. You can pass an ISO date string (preferred rails method) or date object (preferred JS method) if you want a default value on page load. Use Ruby UTC DateTime objects and convert them to ISO date strings with `DateTime.now.utc.iso8601`.
|
2
2
|
|
3
|
-
If you use a Date object without UTC time standardization the Date Picker kit may misinterpret that date as yesterdays date (consequence of timezone differentials and the Javascript Date Object constructor). See [this GitHub issue for more information](https://github.com/powerhome/playbook/issues/1167) and the anti-pattern examples below.
|
3
|
+
If you use a Date object without UTC time standardization the Date Picker kit may misinterpret that date as yesterdays date (consequence of timezone differentials and the Javascript Date Object constructor). See [this GitHub issue for more information](https://github.com/powerhome/playbook/issues/1167) and the anti-pattern examples below.
|
4
|
+
|
5
|
+
|
@@ -2,10 +2,19 @@ import { ensureAccessible, renderKit } from '../utilities/test-utils'
|
|
2
2
|
import { DateTimeStacked } from '../'
|
3
3
|
|
4
4
|
/* eslint-disable jsx-control-statements/jsx-jcs-no-undef */
|
5
|
+
const currentDate = new Date()
|
6
|
+
|
7
|
+
const datetime = new Date('Wed Mar 31 2021 12:00:00 GMT-0500'),
|
8
|
+
monthName = datetime.toLocaleString('en-US', { month: 'short' }),
|
9
|
+
day = datetime.getDate(),
|
10
|
+
fullYear = datetime.getFullYear(),
|
11
|
+
optionalYear = currentDate.getFullYear() !== fullYear ? fullYear : ''
|
12
|
+
|
13
|
+
const monthDayYear = `${monthName}${day}${optionalYear}`
|
5
14
|
|
6
15
|
const props = {
|
7
16
|
data: { testid: 'datetimestacked' },
|
8
|
-
datetime
|
17
|
+
datetime,
|
9
18
|
}
|
10
19
|
|
11
20
|
test('Kit renders date time', () => {
|
@@ -19,17 +28,17 @@ it('Should be accessible', async () => {
|
|
19
28
|
|
20
29
|
test('renders time in default timezone', () => {
|
21
30
|
const kit = renderKit(DateTimeStacked, props)
|
22
|
-
expect(kit).toHaveTextContent(
|
31
|
+
expect(kit).toHaveTextContent(`${monthDayYear}1:00pEDT`)
|
23
32
|
})
|
24
33
|
|
25
34
|
test('renders time in timezone', () => {
|
26
35
|
props.timeZone = 'Asia/Tokyo'
|
27
36
|
const kit = renderKit(DateTimeStacked, props)
|
28
|
-
expect(kit).toHaveTextContent(
|
37
|
+
expect(kit).toHaveTextContent(`${monthDayYear}2:00aJST`)
|
29
38
|
})
|
30
39
|
|
31
40
|
test('renders time in timezone', () => {
|
32
41
|
props.timeZone = 'America/Denver'
|
33
42
|
const kit = renderKit(DateTimeStacked, props)
|
34
|
-
expect(kit).toHaveTextContent(
|
43
|
+
expect(kit).toHaveTextContent(`${monthDayYear}11:00aMDT`)
|
35
44
|
})
|
@@ -25,6 +25,7 @@ type GaugeProps = {
|
|
25
25
|
suffix: string,
|
26
26
|
title: string,
|
27
27
|
tooltipHtml: string,
|
28
|
+
colors: array,
|
28
29
|
}
|
29
30
|
|
30
31
|
const Gauge = (props: GaugeProps) => {
|
@@ -45,6 +46,7 @@ const Gauge = (props: GaugeProps) => {
|
|
45
46
|
suffix = '',
|
46
47
|
title = '',
|
47
48
|
tooltipHtml = '<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: ' + '<b>{point.y}</b>',
|
49
|
+
colors = [],
|
48
50
|
} = props
|
49
51
|
|
50
52
|
const ariaProps = buildAriaProps(aria)
|
@@ -76,6 +78,7 @@ const Gauge = (props: GaugeProps) => {
|
|
76
78
|
style: style,
|
77
79
|
tooltipHtml: tooltipHtml,
|
78
80
|
type: 'gauge',
|
81
|
+
colors: colors,
|
79
82
|
})
|
80
83
|
}, [])
|
81
84
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { Gauge } from '../../'
|
3
|
+
|
4
|
+
const data = [
|
5
|
+
{ name: 'Name', value: 67 },
|
6
|
+
]
|
7
|
+
|
8
|
+
const GaugeColors = (props) => (
|
9
|
+
<div>
|
10
|
+
<Gauge
|
11
|
+
chartData={data}
|
12
|
+
id="gauge-colors"
|
13
|
+
{...props}
|
14
|
+
colors={['data-7']}
|
15
|
+
/>
|
16
|
+
</div>
|
17
|
+
)
|
18
|
+
|
19
|
+
export default GaugeColors
|
@@ -9,6 +9,7 @@ examples:
|
|
9
9
|
- gauge_min_max: Min Max Labels
|
10
10
|
- gauge_sizing: Sizing
|
11
11
|
- gauge_height: Height
|
12
|
+
- gauge_colors: Color Overrides
|
12
13
|
|
13
14
|
|
14
15
|
react:
|
@@ -21,3 +22,4 @@ examples:
|
|
21
22
|
- gauge_sizing: Sizing
|
22
23
|
- gauge_height: Height
|
23
24
|
- gauge_live_data: Live Data
|
25
|
+
- gauge_colors: Color Overrides
|
@@ -7,3 +7,4 @@ export { default as GaugeSizing } from './_gauge_sizing.jsx'
|
|
7
7
|
export { default as GaugeTitle } from './_gauge_title.jsx'
|
8
8
|
export { default as GaugeUnits } from './_gauge_units.jsx'
|
9
9
|
export { default as GaugeLiveData } from './_gauge_live_data.jsx'
|
10
|
+
export { default as GaugeColors } from './_gauge_colors.jsx'
|
@@ -20,6 +20,7 @@ module Playbook
|
|
20
20
|
prop :disable_animation, type: Playbook::Props::Boolean, default: false
|
21
21
|
prop :min, type: Playbook::Props::Numeric, default: 0
|
22
22
|
prop :max, type: Playbook::Props::Numeric, default: 100
|
23
|
+
prop :colors, type: Playbook::Props::Array, default: []
|
23
24
|
|
24
25
|
def chart_data_formatted
|
25
26
|
chart_data.map { |hash| hash[:y] = hash.delete :value }
|
@@ -42,6 +43,7 @@ module Playbook
|
|
42
43
|
style: style,
|
43
44
|
tooltipHtml: tooltip_html,
|
44
45
|
type: "gauge",
|
46
|
+
colors: colors,
|
45
47
|
}.to_json.html_safe
|
46
48
|
end
|
47
49
|
|
@@ -52,9 +52,9 @@ $pb_icon_circle_sizes: (
|
|
52
52
|
@each $color_name, $color_value in $colors {
|
53
53
|
&[class*=_#{$color_name}] {
|
54
54
|
color: $color_value;
|
55
|
-
background: rgba(mix($bg_dark, $color_value, 10%), $
|
55
|
+
background: rgba(mix($bg_dark, $color_value, 10%), $opacity_1);
|
56
56
|
&.dark {
|
57
|
-
background: rgba(mix($bg_dark, $color_value, 10%), $
|
57
|
+
background: rgba(mix($bg_dark, $color_value, 10%), $opacity_2);
|
58
58
|
}
|
59
59
|
}
|
60
60
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
Customize your icon circle by passing one of our seven base colors to the `variant` prop: `royal` `orange` `purple` `teal` `red` `yellow` `green`
|
@@ -8,7 +8,7 @@ module Playbook
|
|
8
8
|
values: %w[xs sm md base lg xl],
|
9
9
|
default: "md"
|
10
10
|
prop :variant, type: Playbook::Props::Enum,
|
11
|
-
values: %w[default royal
|
11
|
+
values: %w[default royal orange purple teal red yellow green],
|
12
12
|
default: "default"
|
13
13
|
|
14
14
|
def classname
|
@@ -14,6 +14,7 @@ type ImageProps = {
|
|
14
14
|
onError?: () => {},
|
15
15
|
size: "xs" | "sm" | "md" | "lg" | "xl",
|
16
16
|
rounded?: boolean,
|
17
|
+
transition: "blur" | "fade" | "scale",
|
17
18
|
url: string,
|
18
19
|
}
|
19
20
|
|
@@ -27,6 +28,7 @@ const Image = (props: ImageProps) => {
|
|
27
28
|
onError = null,
|
28
29
|
rounded = false,
|
29
30
|
size = '',
|
31
|
+
transition = 'fade',
|
30
32
|
url = '',
|
31
33
|
} = props
|
32
34
|
|
@@ -34,7 +36,7 @@ const Image = (props: ImageProps) => {
|
|
34
36
|
const classes = classnames(
|
35
37
|
buildCss('pb_image_kit', size),
|
36
38
|
'lazyload',
|
37
|
-
|
39
|
+
transition,
|
38
40
|
{ rounded },
|
39
41
|
globalProps(props),
|
40
42
|
className
|
@@ -53,6 +55,7 @@ const Image = (props: ImageProps) => {
|
|
53
55
|
onError={onError}
|
54
56
|
rounded={+rounded}
|
55
57
|
src={url}
|
58
|
+
transition={transition}
|
56
59
|
/>
|
57
60
|
</div>
|
58
61
|
)
|
@@ -28,15 +28,31 @@ $image-sizes: (
|
|
28
28
|
border-radius: $border-rad-heaviest;
|
29
29
|
}
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
&.fade {
|
32
|
+
opacity: 0;
|
33
|
+
&.lazyloaded {
|
34
|
+
opacity: 1;
|
35
|
+
transition: opacity 300ms ease-in;
|
36
|
+
}
|
35
37
|
}
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
|
39
|
+
&.blur {
|
40
|
+
filter: blur(5px);
|
41
|
+
&.lazyloaded {
|
42
|
+
-webkit-filter: blur(0);
|
43
|
+
filter: blur(0);
|
44
|
+
transition: filter 300ms ease-in;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
&.scale {
|
49
|
+
opacity: 0;
|
50
|
+
transform: scale(0.9);
|
51
|
+
&.lazyloaded {
|
52
|
+
opacity: 1;
|
53
|
+
transform: scale(1);
|
54
|
+
transition: 700ms ease-in;
|
55
|
+
}
|
40
56
|
}
|
41
57
|
}
|
42
58
|
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<%= pb_rails("flex") do %>
|
2
|
+
<%= pb_rails("flex/flex_item", props: {fixed_size: "250px"}) do %>
|
3
|
+
<%= pb_rails("select", props: {
|
4
|
+
id: "transition-dropdown",
|
5
|
+
label: "",
|
6
|
+
blank_selection: "Select a Transition...",
|
7
|
+
options: [
|
8
|
+
{
|
9
|
+
value: 'fade',
|
10
|
+
},
|
11
|
+
{
|
12
|
+
value: 'blur',
|
13
|
+
},
|
14
|
+
{
|
15
|
+
value: 'scale',
|
16
|
+
},
|
17
|
+
]
|
18
|
+
}) %>
|
19
|
+
<% end %>
|
20
|
+
<%= pb_rails("flex/flex_item") do %>
|
21
|
+
<%= pb_rails("button", props: {classname: "button", text: "Load Image", margin_left: "sm", margin_top: "xs", disabled: true }) %>
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
<%= pb_rails("image", props: { classname: "transition-image", alt: "picture of a misty forest", url: "", on_error: "this.style.display = 'none'" }) %>
|
25
|
+
|
26
|
+
<script>
|
27
|
+
window.addEventListener('DOMContentLoaded', () => {
|
28
|
+
const button = document.querySelector(".button")
|
29
|
+
const transitionDropdown = document.querySelector("#transition-dropdown")
|
30
|
+
var option = ''
|
31
|
+
|
32
|
+
transitionDropdown.addEventListener('change', function() {
|
33
|
+
if (this.value === '') {
|
34
|
+
button.className = button.className + ' _disabled'
|
35
|
+
} else {
|
36
|
+
button.removeAttribute("disabled");
|
37
|
+
button.className = button.className.replace(/\_disabled/gi, '')
|
38
|
+
option = this.value
|
39
|
+
}
|
40
|
+
});
|
41
|
+
|
42
|
+
const updateTransition = (transition) => {
|
43
|
+
const imageTransition = document.querySelector('.transition-image')
|
44
|
+
imageTransition.removeAttribute("style")
|
45
|
+
imageTransition.classList.remove("fade", "blur", "scale", "lazyloaded")
|
46
|
+
imageTransition.classList.add(transition, "lazyload")
|
47
|
+
imageTransition.src = "https://unsplash.it/500/400/?image=634"
|
48
|
+
}
|
49
|
+
|
50
|
+
button.addEventListener('click', function() {
|
51
|
+
updateTransition(option)
|
52
|
+
})
|
53
|
+
});
|
54
|
+
</script>
|
@@ -0,0 +1,77 @@
|
|
1
|
+
import React, { useState } from 'react'
|
2
|
+
|
3
|
+
import Image from '../_image'
|
4
|
+
import Select from '../../pb_select/_select'
|
5
|
+
import FlexItem from '../../pb_flex/_flex_item'
|
6
|
+
import Flex from '../../pb_flex/_flex'
|
7
|
+
import Button from '../../pb_button/_button'
|
8
|
+
|
9
|
+
const TransitionImage = (props) => {
|
10
|
+
const [transition, setTransition] = useState('')
|
11
|
+
const [apply, setApply] = useState({
|
12
|
+
url: '',
|
13
|
+
transition: '',
|
14
|
+
})
|
15
|
+
|
16
|
+
const loadImage = () => {
|
17
|
+
document.querySelector('.image').classList.remove(transition, 'lazyloaded')
|
18
|
+
setApply({
|
19
|
+
url: 'https://unsplash.it/500/400/?image=634',
|
20
|
+
transition: transition,
|
21
|
+
},
|
22
|
+
document.querySelector('.image').classList.add(transition, 'lazyload')
|
23
|
+
)
|
24
|
+
}
|
25
|
+
|
26
|
+
const handleTransition = ({ target }) => {
|
27
|
+
setTransition(target.value)
|
28
|
+
}
|
29
|
+
|
30
|
+
const options = [
|
31
|
+
{
|
32
|
+
value: 'fade',
|
33
|
+
},
|
34
|
+
{
|
35
|
+
value: 'blur',
|
36
|
+
},
|
37
|
+
{
|
38
|
+
value: 'scale',
|
39
|
+
},
|
40
|
+
]
|
41
|
+
|
42
|
+
return (
|
43
|
+
<>
|
44
|
+
<Flex>
|
45
|
+
<FlexItem fixedSize="250px">
|
46
|
+
<Select
|
47
|
+
blankSelection="Select a Transition..."
|
48
|
+
label=""
|
49
|
+
onChange={handleTransition}
|
50
|
+
options={options}
|
51
|
+
{...props}
|
52
|
+
/>
|
53
|
+
</FlexItem>
|
54
|
+
<FlexItem>
|
55
|
+
<Button
|
56
|
+
disabled={transition === '' ? true : false}
|
57
|
+
marginLeft="sm"
|
58
|
+
onClick={loadImage}
|
59
|
+
text="Load Image"
|
60
|
+
{...props}
|
61
|
+
/>
|
62
|
+
</FlexItem>
|
63
|
+
</Flex>
|
64
|
+
<div style={{ display: apply.url === '' ? 'none' : 'block' }}>
|
65
|
+
<Image
|
66
|
+
alt="picture of a misty forest"
|
67
|
+
className="image"
|
68
|
+
transition={apply.transition}
|
69
|
+
url={apply.url}
|
70
|
+
{...props}
|
71
|
+
/>
|
72
|
+
</div>
|
73
|
+
</>
|
74
|
+
)
|
75
|
+
}
|
76
|
+
|
77
|
+
export default TransitionImage
|
@@ -0,0 +1 @@
|
|
1
|
+
To add a transition, simply use the `transition` prop and one of the three string options `"fade"`, `"blur"`, or `"scale"`.
|
@@ -3,7 +3,9 @@ examples:
|
|
3
3
|
- default_image: Default
|
4
4
|
- rounded_image: Rounded
|
5
5
|
- custom_error_image: Error Handling
|
6
|
+
- transition_image: Transition
|
6
7
|
react:
|
7
8
|
- default_image: Default
|
8
9
|
- rounded_image: Rounded
|
9
10
|
- custom_error_image: Error Handling
|
11
|
+
- transition_image: Transition
|
@@ -11,10 +11,13 @@ module Playbook
|
|
11
11
|
prop :size, type: Playbook::Props::Enum,
|
12
12
|
values: %w[xs sm md lg xl none],
|
13
13
|
default: "none"
|
14
|
+
prop :transition, type: Playbook::Props::Enum,
|
15
|
+
values: %w[blur fade scale none],
|
16
|
+
default: "fade"
|
14
17
|
prop :url
|
15
18
|
|
16
19
|
def classname
|
17
|
-
generate_classname("pb_image_kit#{size_class} lazyload
|
20
|
+
generate_classname("pb_image_kit#{size_class} #{transition_class} lazyload") + rounded_class
|
18
21
|
end
|
19
22
|
|
20
23
|
private
|
@@ -26,6 +29,10 @@ module Playbook
|
|
26
29
|
def size_class
|
27
30
|
size == "none" ? nil : "_#{size}"
|
28
31
|
end
|
32
|
+
|
33
|
+
def transition_class
|
34
|
+
transition == "none" ? nil : transition
|
35
|
+
end
|
29
36
|
end
|
30
37
|
end
|
31
38
|
end
|
@@ -7,6 +7,7 @@ const props = {
|
|
7
7
|
data: { testid: 'avatar' },
|
8
8
|
size: null,
|
9
9
|
url: 'https://unsplash.it/500/400/?image=634',
|
10
|
+
transition: 'blur',
|
10
11
|
}
|
11
12
|
|
12
13
|
it('Should be accessible', async () => {
|
@@ -20,16 +21,20 @@ test('alt attribute', () => {
|
|
20
21
|
|
21
22
|
test('default classname', () => {
|
22
23
|
const kit = renderKit(Image, props)
|
23
|
-
expect(kit).toHaveClass('pb_image_kit lazyload
|
24
|
+
expect(kit).toHaveClass('pb_image_kit lazyload')
|
24
25
|
})
|
25
26
|
|
26
27
|
test('size = xs', () => {
|
27
28
|
const kit = renderKit(Image, props, { size: 'xs' })
|
28
|
-
expect(kit).toHaveClass('pb_image_kit_xs lazyload
|
29
|
+
expect(kit).toHaveClass('pb_image_kit_xs lazyload')
|
30
|
+
})
|
31
|
+
|
32
|
+
test('transition = blur', () => {
|
33
|
+
const kit = renderKit(Image, props, { transition: 'blur' })
|
34
|
+
expect(kit).toHaveClass('pb_image_kit lazyload blur')
|
29
35
|
})
|
30
36
|
|
31
37
|
test('rounded = true', () => {
|
32
38
|
const kit = renderKit(Image, props, { rounded: true })
|
33
|
-
expect(kit).toHaveClass('pb_image_kit lazyload
|
39
|
+
expect(kit).toHaveClass('pb_image_kit lazyload rounded')
|
34
40
|
})
|
35
|
-
|
@@ -1,2 +1,2 @@
|
|
1
1
|
Custom data colors allow for color customization to match the needs of business requirements.
|
2
|
-
Pass the prop `colors` and use desired values `data-1 | data-2 | data-3 | data-4 | data-5 | data-6 | data-7 | data-8` in an array.
|
2
|
+
Pass the prop `colors` and use desired values `data-1 | data-2 | data-3 | data-4 | data-5 | data-6 | data-7 | data-8` in an array. Hex colors are also available `eg: #CA0095`
|
@@ -10,25 +10,14 @@ import solidGauge from 'highcharts/modules/solid-gauge'
|
|
10
10
|
pie(Highcharts)
|
11
11
|
|
12
12
|
// Map Data Color String Props to our SCSS Variables
|
13
|
+
|
13
14
|
const mapColors = (array) => {
|
15
|
+
const regex = /(data)\-[1-8]/ //eslint-disable-line
|
16
|
+
|
14
17
|
const newArray = array.map((item) => {
|
15
|
-
return item
|
16
|
-
? `${colors.
|
17
|
-
: item
|
18
|
-
? `${colors.data_2}`
|
19
|
-
: item == 'data-3'
|
20
|
-
? `${colors.data_3}`
|
21
|
-
: item == 'data-4'
|
22
|
-
? `${colors.data_4}`
|
23
|
-
: item == 'data-5'
|
24
|
-
? `${colors.data_5}`
|
25
|
-
: item == 'data-6'
|
26
|
-
? `${colors.data_6}`
|
27
|
-
: item == 'data-7'
|
28
|
-
? `${colors.data_7}`
|
29
|
-
: item == 'data-8'
|
30
|
-
? `${colors.data_8}`
|
31
|
-
: ''
|
18
|
+
return regex.test(item)
|
19
|
+
? `${colors[`data_${item[item.length - 1]}`]}`
|
20
|
+
: item
|
32
21
|
})
|
33
22
|
return newArray
|
34
23
|
}
|
@@ -72,13 +61,13 @@ class pbChart {
|
|
72
61
|
if (this.options.type == 'variablepie' || this.options.type == 'pie'){
|
73
62
|
this.setupPieChart(options)
|
74
63
|
} else if (this.options.type == 'gauge') {
|
75
|
-
this.setupGauge()
|
64
|
+
this.setupGauge(options)
|
76
65
|
} else {
|
77
66
|
this.setupChart(options)
|
78
67
|
}
|
79
68
|
}
|
80
69
|
|
81
|
-
setupGauge() {
|
70
|
+
setupGauge(options) {
|
82
71
|
highchartsMore(Highcharts)
|
83
72
|
solidGauge(Highcharts)
|
84
73
|
Highcharts.setOptions(highchartsTheme)
|
@@ -128,19 +117,21 @@ class pbChart {
|
|
128
117
|
pointFormat: this.defaults.tooltipHtml,
|
129
118
|
followPointer: true,
|
130
119
|
},
|
120
|
+
colors: options.colors !== undefined && options.colors.length > 0 ? mapColors(options.colors) : highchartsTheme.colors,
|
131
121
|
plotOptions: {
|
132
122
|
series: {
|
133
123
|
animation: !this.defaults.disableAnimation,
|
134
124
|
},
|
135
125
|
solidgauge: {
|
126
|
+
borderColor: options.colors !== undefined && options.colors.length === 1 ? mapColors(options.colors).join() : highchartsTheme.colors[0],
|
136
127
|
dataLabels: {
|
137
128
|
format: `<span class="prefix">${this.defaults.prefix}</span>` +
|
138
129
|
'<span class="fix">{y:,f}</span>' +
|
139
130
|
`<span class="suffix">${this.defaults.suffix}</span>`,
|
140
|
-
},
|
141
|
-
},
|
131
|
+
} },
|
142
132
|
},
|
143
|
-
}
|
133
|
+
},
|
134
|
+
)
|
144
135
|
document.querySelectorAll('.gauge-pane').forEach((pane) => pane.setAttribute('stroke-linejoin', 'round'))
|
145
136
|
if (document.querySelector('.prefix')) {
|
146
137
|
document.querySelectorAll('.prefix').forEach((prefix) => prefix.setAttribute('y', '28'))
|
@@ -12,6 +12,7 @@ $red: #FF2229;
|
|
12
12
|
$yellow: #F9BB00;
|
13
13
|
$green: #00CA74;
|
14
14
|
$orange: #FD804C;
|
15
|
+
$default: #93a8b8;
|
15
16
|
$colors: (
|
16
17
|
royal: $royal,
|
17
18
|
purple: $purple,
|
@@ -19,7 +20,8 @@ $colors: (
|
|
19
20
|
red: $red,
|
20
21
|
yellow: $yellow,
|
21
22
|
green: $green,
|
22
|
-
orange: $orange
|
23
|
+
orange: $orange,
|
24
|
+
default: $default,
|
23
25
|
);
|
24
26
|
|
25
27
|
/* Specialty Gradient -----------------*/
|
@@ -0,0 +1,23 @@
|
|
1
|
+
.display_block {
|
2
|
+
display: block;
|
3
|
+
}
|
4
|
+
|
5
|
+
.display_inline_block {
|
6
|
+
display: inline-block;
|
7
|
+
}
|
8
|
+
|
9
|
+
.display_inline {
|
10
|
+
display: inline;
|
11
|
+
}
|
12
|
+
|
13
|
+
.display_flex {
|
14
|
+
display: flex;
|
15
|
+
}
|
16
|
+
|
17
|
+
.display_inline_flex {
|
18
|
+
display: inline-flex;
|
19
|
+
}
|
20
|
+
|
21
|
+
.display_hidden {
|
22
|
+
display: none;
|
23
|
+
}
|
@@ -63,10 +63,22 @@ const shadowProps = ({ shadow }) => {
|
|
63
63
|
return css
|
64
64
|
}
|
65
65
|
|
66
|
+
const displayProps = ({ display }) => {
|
67
|
+
let css = ''
|
68
|
+
css += display ? `display_${display} ` : ''
|
69
|
+
return css
|
70
|
+
}
|
71
|
+
|
72
|
+
const cursorProps = ({ cursor }) => {
|
73
|
+
let css = ''
|
74
|
+
css += cursor ? `cursor_${cursor} ` : ''
|
75
|
+
return css
|
76
|
+
}
|
77
|
+
|
66
78
|
// All Exported as a single function
|
67
79
|
export const globalProps = (props, defaultProps = {}) => {
|
68
80
|
const allProps = { ...props, ...defaultProps }
|
69
|
-
return spacingProps(allProps) + darkProps(allProps) + maxWidthProps(allProps) + zIndexProps(allProps) + numberSpacingProps(allProps) + shadowProps(allProps)
|
81
|
+
return spacingProps(allProps) + darkProps(allProps) + maxWidthProps(allProps) + zIndexProps(allProps) + numberSpacingProps(allProps) + shadowProps(allProps) + displayProps(allProps) + cursorProps(allProps)
|
70
82
|
}
|
71
83
|
|
72
84
|
export const deprecatedProps = (kit, props = []) => {
|
data/lib/playbook/classnames.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module Cursor
|
5
|
+
def self.included(base)
|
6
|
+
base.prop :cursor
|
7
|
+
end
|
8
|
+
|
9
|
+
def cursor_props
|
10
|
+
selected_props = cursor_options.keys.select { |sk| try(sk) }
|
11
|
+
return nil unless selected_props.present?
|
12
|
+
|
13
|
+
selected_props.map do |k|
|
14
|
+
cursor_value = send(k)
|
15
|
+
"cursor_#{cursor_value}" if cursor_values.include? cursor_value
|
16
|
+
end.compact.join(" ")
|
17
|
+
end
|
18
|
+
|
19
|
+
def cursor_options
|
20
|
+
{
|
21
|
+
cursor: "cursor",
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def cursor_values
|
26
|
+
%w[pointer]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module Display
|
5
|
+
def self.included(base)
|
6
|
+
base.prop :display
|
7
|
+
end
|
8
|
+
|
9
|
+
def display_props
|
10
|
+
selected_props = display_options.keys.select { |sk| try(sk) }
|
11
|
+
return nil unless selected_props.present?
|
12
|
+
|
13
|
+
selected_props.map do |k|
|
14
|
+
display_value = send(k)
|
15
|
+
"display_#{display_value}" if display_values.include? display_value
|
16
|
+
end.compact.join(" ")
|
17
|
+
end
|
18
|
+
|
19
|
+
def display_options
|
20
|
+
{
|
21
|
+
display: "display",
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def display_values
|
26
|
+
%w[block inline_block inline flex inline_flex hidden]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/playbook/engine.rb
CHANGED
data/lib/playbook/kit_base.rb
CHANGED
@@ -5,6 +5,8 @@ require "playbook/spacing"
|
|
5
5
|
require "playbook/z_index"
|
6
6
|
require "playbook/number_spacing"
|
7
7
|
require "playbook/shadow"
|
8
|
+
require "playbook/display"
|
9
|
+
require "playbook/cursor"
|
8
10
|
|
9
11
|
module Playbook
|
10
12
|
class KitBase < ViewComponent::Base
|
@@ -15,6 +17,8 @@ module Playbook
|
|
15
17
|
include Playbook::ZIndex
|
16
18
|
include Playbook::NumberSpacing
|
17
19
|
include Playbook::Shadow
|
20
|
+
include Playbook::Display
|
21
|
+
include Playbook::Cursor
|
18
22
|
|
19
23
|
prop :id
|
20
24
|
prop :data, type: Playbook::Props::Hash, default: {}
|
data/lib/playbook/version.rb
CHANGED
data/lib/playbook.rb
CHANGED
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: 10.
|
4
|
+
version: 10.18.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:
|
12
|
+
date: 2022-01-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -101,14 +101,14 @@ dependencies:
|
|
101
101
|
requirements:
|
102
102
|
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '2.
|
104
|
+
version: '2.47'
|
105
105
|
type: :runtime
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
109
|
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '2.
|
111
|
+
version: '2.47'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
113
|
name: webpacker-react
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
@@ -424,6 +424,9 @@ files:
|
|
424
424
|
- app/pb_kits/playbook/pb_button/docs/_button_loading.md
|
425
425
|
- app/pb_kits/playbook/pb_button/docs/_button_options.html.erb
|
426
426
|
- app/pb_kits/playbook/pb_button/docs/_button_options.jsx
|
427
|
+
- app/pb_kits/playbook/pb_button/docs/_button_size.html.erb
|
428
|
+
- app/pb_kits/playbook/pb_button/docs/_button_size.jsx
|
429
|
+
- app/pb_kits/playbook/pb_button/docs/_button_size.md
|
427
430
|
- app/pb_kits/playbook/pb_button/docs/_footer.md
|
428
431
|
- app/pb_kits/playbook/pb_button/docs/example.yml
|
429
432
|
- app/pb_kits/playbook/pb_button/docs/index.js
|
@@ -528,6 +531,7 @@ files:
|
|
528
531
|
- app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.jsx
|
529
532
|
- app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.html.erb
|
530
533
|
- app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.jsx
|
534
|
+
- app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.md
|
531
535
|
- app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.html.erb
|
532
536
|
- app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.jsx
|
533
537
|
- app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_inner_sizes.html.erb
|
@@ -940,6 +944,9 @@ files:
|
|
940
944
|
- app/pb_kits/playbook/pb_form_pill/form_pill.rb
|
941
945
|
- app/pb_kits/playbook/pb_gauge/_gauge.jsx
|
942
946
|
- app/pb_kits/playbook/pb_gauge/_gauge.scss
|
947
|
+
- app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.html.erb
|
948
|
+
- app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx
|
949
|
+
- app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.md
|
943
950
|
- app/pb_kits/playbook/pb_gauge/docs/_gauge_default.html.erb
|
944
951
|
- app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx
|
945
952
|
- app/pb_kits/playbook/pb_gauge/docs/_gauge_disable_animation.html.erb
|
@@ -1034,6 +1041,7 @@ files:
|
|
1034
1041
|
- app/pb_kits/playbook/pb_icon_circle/docs/_footer.md
|
1035
1042
|
- app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.html.erb
|
1036
1043
|
- app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.jsx
|
1044
|
+
- app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.md
|
1037
1045
|
- app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_default.html.erb
|
1038
1046
|
- app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_default.jsx
|
1039
1047
|
- app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_sizes.html.erb
|
@@ -1076,6 +1084,9 @@ files:
|
|
1076
1084
|
- app/pb_kits/playbook/pb_image/docs/_description.md
|
1077
1085
|
- app/pb_kits/playbook/pb_image/docs/_rounded_image.html.erb
|
1078
1086
|
- app/pb_kits/playbook/pb_image/docs/_rounded_image.jsx
|
1087
|
+
- app/pb_kits/playbook/pb_image/docs/_transition_image.html.erb
|
1088
|
+
- app/pb_kits/playbook/pb_image/docs/_transition_image.jsx
|
1089
|
+
- app/pb_kits/playbook/pb_image/docs/_transition_image.md
|
1079
1090
|
- app/pb_kits/playbook/pb_image/docs/example.yml
|
1080
1091
|
- app/pb_kits/playbook/pb_image/docs/index.js
|
1081
1092
|
- app/pb_kits/playbook/pb_image/image.html.erb
|
@@ -2033,6 +2044,8 @@ files:
|
|
2033
2044
|
- app/pb_kits/playbook/types.js
|
2034
2045
|
- app/pb_kits/playbook/utilities/_background_colors.scss
|
2035
2046
|
- app/pb_kits/playbook/utilities/_colors.scss
|
2047
|
+
- app/pb_kits/playbook/utilities/_cursor.scss
|
2048
|
+
- app/pb_kits/playbook/utilities/_display.scss
|
2036
2049
|
- app/pb_kits/playbook/utilities/_max_width.scss
|
2037
2050
|
- app/pb_kits/playbook/utilities/_number_spacing.scss
|
2038
2051
|
- app/pb_kits/playbook/utilities/_positioning.scss
|
@@ -2047,6 +2060,8 @@ files:
|
|
2047
2060
|
- fonts/regular-min.js
|
2048
2061
|
- lib/playbook.rb
|
2049
2062
|
- lib/playbook/classnames.rb
|
2063
|
+
- lib/playbook/cursor.rb
|
2064
|
+
- lib/playbook/display.rb
|
2050
2065
|
- lib/playbook/engine.rb
|
2051
2066
|
- lib/playbook/forms.rb
|
2052
2067
|
- lib/playbook/forms/builder.rb
|