playbook_ui 9.16.0 → 9.17.0.pre.decouple.website2
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.
- checksums.yaml +4 -4
- data/Rakefile +5 -9
- data/app/pb_kits/playbook/_reset.scss +42 -0
- data/app/pb_kits/playbook/index.js +97 -97
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_header_styles.scss +2 -1
- data/app/pb_kits/playbook/pb_enhanced_element/index.js +2 -1
- data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +2 -2
- data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.jsx +10 -8
- data/app/pb_kits/playbook/pb_select/_select.scss +1 -1
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +1 -1
- data/app/pb_kits/playbook/pb_textarea/_textarea.scss +3 -3
- data/app/pb_kits/playbook/pb_title/_title.scss +1 -1
- data/app/pb_kits/playbook/pb_title/_title_mixin.scss +1 -40
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +14 -15
- data/app/pb_kits/playbook/playbook-doc.js +195 -0
- data/app/pb_kits/playbook/playbook-rails-react-bindings.js +35 -0
- data/app/pb_kits/playbook/{vendor.js → playbook-rails.js} +1 -5
- data/app/pb_kits/playbook/tokens/_colors.scss +4 -0
- data/app/pb_kits/playbook/tokens/_titles.scss +38 -0
- data/app/pb_kits/playbook/utilities/_colors.scss +0 -4
- data/lib/playbook.rb +1 -15
- data/lib/playbook/engine.rb +11 -21
- data/lib/playbook/props/nested_props.rb +1 -1
- data/lib/playbook/version.rb +2 -2
- metadata +20 -135
- data/app/assets/images/clark.jpg +0 -0
- data/app/assets/images/full_page_samples.svg +0 -7
- data/app/assets/images/giant.jpg +0 -0
- data/app/assets/images/github-brands.svg +0 -1
- data/app/assets/images/landing-background.svg +0 -36
- data/app/assets/images/landing-image.svg +0 -203
- data/app/assets/images/pb-caret.svg +0 -1
- data/app/assets/images/pb-check.svg +0 -11
- data/app/assets/images/pb-logo.svg +0 -28
- data/app/assets/images/pb-white-logo.svg +0 -15
- data/app/assets/images/pb.logo.svg +0 -28
- data/app/pb_kits/playbook/react_rails_kits.js +0 -13
- data/app/pb_kits/playbook/utilities/accessibility.js +0 -22
@@ -4,7 +4,7 @@ import React from 'react'
|
|
4
4
|
import Select from 'react-select'
|
5
5
|
import AsyncSelect from 'react-select/async'
|
6
6
|
import CreateableSelect from 'react-select/creatable'
|
7
|
-
import { get } from 'lodash'
|
7
|
+
import { get, isString, uniqueId } from 'lodash'
|
8
8
|
import { globalProps } from '../utilities/globalProps.js'
|
9
9
|
import classnames from 'classnames'
|
10
10
|
|
@@ -26,23 +26,24 @@ import { noop } from '../utilities/props'
|
|
26
26
|
* @prop {string} label - the text for the optional typeahead input label
|
27
27
|
*/
|
28
28
|
|
29
|
-
type
|
29
|
+
type TypeaheadProps = {
|
30
|
+
id?: string,
|
30
31
|
async?: boolean,
|
31
32
|
createable?: boolean,
|
32
33
|
dark?: boolean,
|
33
34
|
label?: string,
|
34
|
-
loadOptions?:
|
35
|
-
getOptionLabel?: () => any,
|
36
|
-
getOptionValue?: () => any,
|
35
|
+
loadOptions?: string,
|
36
|
+
getOptionLabel?: string | (() => any),
|
37
|
+
getOptionValue?: string | (() => any),
|
37
38
|
name?: string,
|
38
39
|
}
|
39
40
|
|
40
41
|
/**
|
41
42
|
* @constant {React.ReactComponent} Typeahead
|
42
|
-
* @param {
|
43
|
+
* @param {TypeaheadProps} props - props as described at https://react-select.com/props
|
43
44
|
*/
|
44
45
|
|
45
|
-
const Typeahead = (props:
|
46
|
+
const Typeahead = ({ loadOptions = noop, getOptionLabel, id, getOptionValue, createable, async, ...props }: TypeaheadProps) => {
|
46
47
|
const selectProps = {
|
47
48
|
cacheOptions: true,
|
48
49
|
components: {
|
@@ -56,8 +57,11 @@ const Typeahead = (props: Props) => {
|
|
56
57
|
Placeholder,
|
57
58
|
ValueContainer,
|
58
59
|
},
|
60
|
+
loadOptions: isString(loadOptions) ? get(window, loadOptions) : loadOptions,
|
61
|
+
getOptionLabel: isString(getOptionLabel) ? get(window, getOptionLabel) : getOptionLabel,
|
62
|
+
getOptionValue: isString(getOptionValue) ? get(window, getOptionValue) : getOptionValue,
|
59
63
|
defaultOptions: true,
|
60
|
-
id:
|
64
|
+
id: id || uniqueId(),
|
61
65
|
inline: false,
|
62
66
|
isClearable: true,
|
63
67
|
isSearchable: true,
|
@@ -68,14 +72,9 @@ const Typeahead = (props: Props) => {
|
|
68
72
|
...props,
|
69
73
|
}
|
70
74
|
|
71
|
-
|
72
|
-
if (typeof(props.getOptionLabel) === 'string') selectProps.getOptionLabel = get(window, props.getOptionLabel)
|
73
|
-
if (typeof(props.getOptionValue) === 'string') selectProps.getOptionValue = get(window, props.getOptionValue)
|
75
|
+
const Tag = createable ? CreateableSelect : (async ? AsyncSelect : Select)
|
74
76
|
|
75
|
-
|
76
|
-
if (props.createable) Tag = CreateableSelect
|
77
|
-
|
78
|
-
const handleOnChange = (data, { action, option, removedValue }) => {
|
77
|
+
const handleOnChange = (_data, { action, option, removedValue }) => {
|
79
78
|
if (action === 'select-option') {
|
80
79
|
if (selectProps.onMultiValueClick) selectProps.onMultiValueClick(option)
|
81
80
|
const multiValueClearEvent = new CustomEvent(`pb-typeahead-kit-${selectProps.id}-result-option-select`, { detail: option })
|
@@ -0,0 +1,195 @@
|
|
1
|
+
// !!! IMPORTANT: This file is autogenerated. Please do not edit.!!!
|
2
|
+
import WebpackerReact from 'webpacker-react'
|
3
|
+
import ujs from 'webpacker-react/ujs'
|
4
|
+
|
5
|
+
// KIT EXAMPLES
|
6
|
+
import 'pb_form/pb_form_validation'
|
7
|
+
import * as Avatar from 'pb_avatar/docs'
|
8
|
+
import * as AvatarActionButton from 'pb_avatar_action_button/docs'
|
9
|
+
import * as Background from 'pb_background/docs'
|
10
|
+
import * as Badge from 'pb_badge/docs'
|
11
|
+
import * as BarGraphDocs from 'pb_bar_graph/docs'
|
12
|
+
import * as Body from 'pb_body/docs'
|
13
|
+
import * as BreadCrumbs from 'pb_bread_crumbs/docs'
|
14
|
+
import * as Button from 'pb_button/docs'
|
15
|
+
import * as ButtonToolbar from 'pb_button_toolbar/docs'
|
16
|
+
import * as Caption from 'pb_caption/docs'
|
17
|
+
import * as Card from 'pb_card/docs'
|
18
|
+
import * as Checkbox from 'pb_checkbox/docs'
|
19
|
+
import * as CircleChart from 'pb_circle_chart/docs'
|
20
|
+
import * as CircleIconButton from 'pb_circle_icon_button/docs'
|
21
|
+
import * as Collapsible from 'pb_collapsible/docs'
|
22
|
+
import * as Contact from 'pb_contact/docs'
|
23
|
+
import * as Currency from 'pb_currency/docs'
|
24
|
+
import * as DashboardValue from 'pb_dashboard_value/docs'
|
25
|
+
import * as Date from 'pb_date/docs'
|
26
|
+
import * as DatePicker from 'pb_date_picker/docs'
|
27
|
+
import * as DateRangeInline from 'pb_date_range_inline/docs'
|
28
|
+
import * as DateRangeStacked from 'pb_date_range_stacked/docs'
|
29
|
+
import * as DateStacked from 'pb_date_stacked/docs'
|
30
|
+
import * as DateTime from 'pb_date_time/docs'
|
31
|
+
import * as DateTimeStacked from 'pb_date_time_stacked/docs'
|
32
|
+
import * as DateYearStacked from 'pb_date_year_stacked/docs'
|
33
|
+
import * as Dialog from 'pb_dialog/docs'
|
34
|
+
import * as DistributionBarDocs from 'pb_distribution_bar/docs'
|
35
|
+
import * as FileUpload from 'pb_file_upload/docs'
|
36
|
+
import * as Filter from 'pb_filter/docs'
|
37
|
+
import * as FixedConfirmationToast from 'pb_fixed_confirmation_toast/docs'
|
38
|
+
import * as Flex from 'pb_flex/docs'
|
39
|
+
import * as FormGroup from 'pb_form_group/docs'
|
40
|
+
import * as FormPill from 'pb_form_pill/docs'
|
41
|
+
import * as Gauge from 'pb_gauge/docs'
|
42
|
+
import * as Hashtag from 'pb_hashtag/docs'
|
43
|
+
import * as Highlight from 'pb_highlight/docs'
|
44
|
+
import * as HomeAddressStreet from 'pb_home_address_street/docs'
|
45
|
+
import * as Icon from 'pb_icon/docs'
|
46
|
+
import * as IconCircle from 'pb_icon_circle/docs'
|
47
|
+
import * as IconStatValue from 'pb_icon_stat_value/docs'
|
48
|
+
import * as IconValue from 'pb_icon_value/docs'
|
49
|
+
import * as Image from 'pb_image/docs'
|
50
|
+
import * as LabelPill from 'pb_label_pill/docs'
|
51
|
+
import * as LabelValue from 'pb_label_value/docs'
|
52
|
+
import * as Layout from 'pb_layout/docs'
|
53
|
+
import * as LegendDocs from 'pb_legend/docs'
|
54
|
+
import * as LineGraphDocs from 'pb_line_graph/docs'
|
55
|
+
import * as List from 'pb_list/docs'
|
56
|
+
import * as LoadingInline from 'pb_loading_inline/docs'
|
57
|
+
import * as Message from 'pb_message/docs'
|
58
|
+
import * as MultipleUsers from 'pb_multiple_users/docs'
|
59
|
+
import * as MultipleUsersStacked from 'pb_multiple_users_stacked/docs'
|
60
|
+
import * as Nav from 'pb_nav/docs'
|
61
|
+
import * as OnlineStatus from 'pb_online_status/docs'
|
62
|
+
import * as Passphrase from 'pb_passphrase/docs'
|
63
|
+
import * as PbReactPopover from 'pb_popover/docs'
|
64
|
+
import * as Person from 'pb_person/docs'
|
65
|
+
import * as PersonContact from 'pb_person_contact/docs'
|
66
|
+
import * as Pill from 'pb_pill/docs'
|
67
|
+
import * as ProgressPills from 'pb_progress_pills/docs'
|
68
|
+
import * as ProgressSimple from 'pb_progress_simple/docs'
|
69
|
+
import * as ProgressStep from 'pb_progress_step/docs'
|
70
|
+
import * as Radio from 'pb_radio/docs'
|
71
|
+
import * as RichTextEditor from 'pb_rich_text_editor/docs'
|
72
|
+
import * as SectionSeparator from 'pb_section_separator/docs'
|
73
|
+
import * as Select from 'pb_select/docs'
|
74
|
+
import * as SelectableCard from 'pb_selectable_card/docs'
|
75
|
+
import * as SelectableCardIcon from 'pb_selectable_card_icon/docs'
|
76
|
+
import * as SelectableIcon from 'pb_selectable_icon/docs'
|
77
|
+
import * as SelectableList from 'pb_selectable_list/docs'
|
78
|
+
import * as Source from 'pb_source/docs'
|
79
|
+
import * as StarRating from 'pb_star_rating/docs'
|
80
|
+
import * as StatChange from 'pb_stat_change/docs'
|
81
|
+
import * as StatValue from 'pb_stat_value/docs'
|
82
|
+
import * as Table from 'pb_table/docs'
|
83
|
+
import * as TextInput from 'pb_text_input/docs'
|
84
|
+
import * as Textarea from 'pb_textarea/docs'
|
85
|
+
import * as Time from 'pb_time/docs'
|
86
|
+
import * as TimeRangeInline from 'pb_time_range_inline/docs'
|
87
|
+
import * as TimeStacked from 'pb_time_stacked/docs'
|
88
|
+
import * as Timeline from 'pb_timeline/docs'
|
89
|
+
import * as Timestamp from 'pb_timestamp/docs'
|
90
|
+
import * as Title from 'pb_title/docs'
|
91
|
+
import * as TitleCount from 'pb_title_count/docs'
|
92
|
+
import * as TitleDetail from 'pb_title_detail/docs'
|
93
|
+
import * as Toggle from 'pb_toggle/docs'
|
94
|
+
import * as Typeahead from 'pb_typeahead/docs'
|
95
|
+
import * as User from 'pb_user/docs'
|
96
|
+
import * as UserBadge from 'pb_user_badge/docs'
|
97
|
+
import * as WeekdayStacked from 'pb_weekday_stacked/docs'
|
98
|
+
|
99
|
+
WebpackerReact.registerComponents({
|
100
|
+
...Avatar,
|
101
|
+
...AvatarActionButton,
|
102
|
+
...Background,
|
103
|
+
...Badge,
|
104
|
+
...BarGraphDocs,
|
105
|
+
...Body,
|
106
|
+
...BreadCrumbs,
|
107
|
+
...Button,
|
108
|
+
...ButtonToolbar,
|
109
|
+
...Caption,
|
110
|
+
...Card,
|
111
|
+
...Checkbox,
|
112
|
+
...CircleChart,
|
113
|
+
...CircleIconButton,
|
114
|
+
...Collapsible,
|
115
|
+
...Contact,
|
116
|
+
...Currency,
|
117
|
+
...DashboardValue,
|
118
|
+
...Date,
|
119
|
+
...DatePicker,
|
120
|
+
...DateRangeInline,
|
121
|
+
...DateRangeStacked,
|
122
|
+
...DateStacked,
|
123
|
+
...DateTime,
|
124
|
+
...DateTimeStacked,
|
125
|
+
...DateYearStacked,
|
126
|
+
...Dialog,
|
127
|
+
...DistributionBarDocs,
|
128
|
+
...FileUpload,
|
129
|
+
...Filter,
|
130
|
+
...FixedConfirmationToast,
|
131
|
+
...Flex,
|
132
|
+
...FormGroup,
|
133
|
+
...FormPill,
|
134
|
+
...Gauge,
|
135
|
+
...Hashtag,
|
136
|
+
...Highlight,
|
137
|
+
...HomeAddressStreet,
|
138
|
+
...Icon,
|
139
|
+
...IconCircle,
|
140
|
+
...IconStatValue,
|
141
|
+
...IconValue,
|
142
|
+
...Image,
|
143
|
+
...LabelPill,
|
144
|
+
...LabelValue,
|
145
|
+
...Layout,
|
146
|
+
...LegendDocs,
|
147
|
+
...LineGraphDocs,
|
148
|
+
...List,
|
149
|
+
...LoadingInline,
|
150
|
+
...Message,
|
151
|
+
...MultipleUsers,
|
152
|
+
...MultipleUsersStacked,
|
153
|
+
...Nav,
|
154
|
+
...OnlineStatus,
|
155
|
+
...Passphrase,
|
156
|
+
...PbReactPopover,
|
157
|
+
...Person,
|
158
|
+
...PersonContact,
|
159
|
+
...Pill,
|
160
|
+
...ProgressPills,
|
161
|
+
...ProgressSimple,
|
162
|
+
...ProgressStep,
|
163
|
+
...Radio,
|
164
|
+
...RichTextEditor,
|
165
|
+
...SectionSeparator,
|
166
|
+
...Select,
|
167
|
+
...SelectableCard,
|
168
|
+
...SelectableCardIcon,
|
169
|
+
...SelectableIcon,
|
170
|
+
...SelectableList,
|
171
|
+
...Source,
|
172
|
+
...StarRating,
|
173
|
+
...StatChange,
|
174
|
+
...StatValue,
|
175
|
+
...Table,
|
176
|
+
...TextInput,
|
177
|
+
...Textarea,
|
178
|
+
...Time,
|
179
|
+
...TimeRangeInline,
|
180
|
+
...TimeStacked,
|
181
|
+
...Timeline,
|
182
|
+
...Timestamp,
|
183
|
+
...Title,
|
184
|
+
...TitleCount,
|
185
|
+
...TitleDetail,
|
186
|
+
...Toggle,
|
187
|
+
...Typeahead,
|
188
|
+
...User,
|
189
|
+
...UserBadge,
|
190
|
+
...WeekdayStacked,
|
191
|
+
})
|
192
|
+
ujs.setup(
|
193
|
+
() => WebpackerReact.mountComponents(),
|
194
|
+
() => WebpackerReact.unmountComponents()
|
195
|
+
)
|
@@ -0,0 +1,35 @@
|
|
1
|
+
// React-Rendered Rails Kit Exports =====
|
2
|
+
|
3
|
+
import WebpackerReact from 'webpacker-react'
|
4
|
+
import ujs from 'webpacker-react/ujs'
|
5
|
+
|
6
|
+
import BarGraph from './pb_bar_graph/_bar_graph'
|
7
|
+
import Dialog from './pb_dialog/_dialog'
|
8
|
+
import DialogBody from './pb_dialog/child_kits/_dialog_body'
|
9
|
+
import DialogFooter from './pb_dialog/child_kits/_dialog_footer'
|
10
|
+
import DialogHeader from './pb_dialog/child_kits/_dialog_header'
|
11
|
+
import DistributionBar from './pb_distribution_bar/_distribution_bar'
|
12
|
+
import Legend from './pb_legend/_legend'
|
13
|
+
import LineGraph from './pb_line_graph/_line_graph'
|
14
|
+
import Passphrase from './pb_passphrase/_passphrase'
|
15
|
+
import RichTextEditor from './pb_rich_text_editor/_rich_text_editor'
|
16
|
+
import Typeahead from './pb_typeahead/_typeahead'
|
17
|
+
|
18
|
+
WebpackerReact.registerComponents({
|
19
|
+
BarGraph,
|
20
|
+
Dialog,
|
21
|
+
DialogBody,
|
22
|
+
DialogFooter,
|
23
|
+
DialogHeader,
|
24
|
+
DistributionBar,
|
25
|
+
Legend,
|
26
|
+
LineGraph,
|
27
|
+
Passphrase,
|
28
|
+
RichTextEditor,
|
29
|
+
Typeahead,
|
30
|
+
})
|
31
|
+
|
32
|
+
ujs.setup(
|
33
|
+
() => WebpackerReact.mountComponents(),
|
34
|
+
() => WebpackerReact.unmountComponents()
|
35
|
+
)
|
@@ -35,9 +35,5 @@ PbTextarea.start()
|
|
35
35
|
|
36
36
|
import 'flatpickr'
|
37
37
|
|
38
|
-
import 'trix'
|
39
|
-
|
40
38
|
// React-Rendered Rails Kits =====
|
41
|
-
import
|
42
|
-
import * as ReactRailsPBKits from './react_rails_kits.js'
|
43
|
-
WebpackerReact.setup({ ...ReactRailsPBKits })
|
39
|
+
import './playbook-rails-react-bindings'
|
@@ -243,6 +243,10 @@ $category_colors: (
|
|
243
243
|
|
244
244
|
$transparent: transparent;
|
245
245
|
|
246
|
+
@function tint($color, $percentage) {
|
247
|
+
@return mix($white, $color, $percentage);
|
248
|
+
}
|
249
|
+
|
246
250
|
@mixin gradient($start: $gradient_start, $end: $gradient_end) {
|
247
251
|
background: $start;
|
248
252
|
background: -moz-linear-gradient(-45deg, $start 0%, $end 100%);
|
@@ -0,0 +1,38 @@
|
|
1
|
+
@import "./colors";
|
2
|
+
@import "./typography";
|
3
|
+
@import "./line_height";
|
4
|
+
|
5
|
+
@mixin pb_title(
|
6
|
+
$fontSize: $heading_1,
|
7
|
+
$fontWeight: $lighter,
|
8
|
+
$lineHeight: $lh_tighter
|
9
|
+
){
|
10
|
+
font-size: $fontSize;
|
11
|
+
letter-spacing: $lspace_tight;
|
12
|
+
font-weight: $fontWeight;
|
13
|
+
color: $text_lt_default;
|
14
|
+
margin: 0;
|
15
|
+
line-height: $lineHeight;
|
16
|
+
font-family: $font_family_base;
|
17
|
+
}
|
18
|
+
|
19
|
+
@mixin pb_title_1 {
|
20
|
+
@include pb_title($heading_1);
|
21
|
+
letter-spacing: -0.03em;
|
22
|
+
}
|
23
|
+
|
24
|
+
@mixin pb_title_2 {
|
25
|
+
@include pb_title($heading_2, $lighter, 0.96);
|
26
|
+
}
|
27
|
+
|
28
|
+
@mixin pb_title_3 {
|
29
|
+
@include pb_title($heading_3);
|
30
|
+
}
|
31
|
+
|
32
|
+
@mixin pb_title_4 {
|
33
|
+
@include pb_title($heading_4, $bolder);
|
34
|
+
}
|
35
|
+
|
36
|
+
@mixin pb_title_dark {
|
37
|
+
color: $text_dk_default;
|
38
|
+
}
|
data/lib/playbook.rb
CHANGED
@@ -1,13 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "sassc-rails"
|
4
|
-
require "slim-rails"
|
5
|
-
require "webpacker"
|
6
|
-
require "webpacker/react"
|
7
|
-
require "view_component/engine"
|
8
|
-
|
9
3
|
require "playbook/version"
|
10
|
-
|
4
|
+
require "playbook/engine"
|
11
5
|
require "playbook/props"
|
12
6
|
require "playbook/forms"
|
13
7
|
require "playbook/pb_forms_helper"
|
@@ -16,7 +10,6 @@ require "playbook/pb_doc_helper"
|
|
16
10
|
require "playbook/kit_base"
|
17
11
|
require "playbook/kit_resolver"
|
18
12
|
require "playbook/markdown"
|
19
|
-
require "playbook/engine" if defined?(Rails)
|
20
13
|
|
21
14
|
module Playbook
|
22
15
|
ROOT_PATH = Pathname.new(File.join(__dir__, ".."))
|
@@ -26,13 +19,6 @@ module Playbook
|
|
26
19
|
|
27
20
|
module_function
|
28
21
|
|
29
|
-
def webpacker
|
30
|
-
@webpacker ||= ::Webpacker::Instance.new(
|
31
|
-
root_path: ROOT_PATH,
|
32
|
-
config_path: ROOT_PATH.join("config/webpacker.yml")
|
33
|
-
)
|
34
|
-
end
|
35
|
-
|
36
22
|
def kit_path(kit, *args)
|
37
23
|
Playbook::Engine.root.join("app/pb_kits/playbook/pb_#{kit}", *args)
|
38
24
|
end
|
data/lib/playbook/engine.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
4
|
-
require "
|
3
|
+
require "action_view/railtie"
|
4
|
+
require "view_component/engine"
|
5
|
+
require "webpacker/react"
|
5
6
|
|
6
7
|
module Playbook
|
7
8
|
class Engine < ::Rails::Engine
|
@@ -13,26 +14,15 @@ module Playbook
|
|
13
14
|
|
14
15
|
config.view_component.render_monkey_patch_enabled = false
|
15
16
|
|
16
|
-
config.assets
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
config.sass.load_paths << Playbook::Engine.root.join("app/pb_kits/playbook")
|
22
|
-
|
23
|
-
initializer "webpacker.proxy" do |app|
|
24
|
-
insert_middleware = begin
|
25
|
-
Playbook.webpacker.config.dev_server.present?
|
26
|
-
rescue
|
27
|
-
nil
|
28
|
-
end
|
29
|
-
next unless insert_middleware
|
17
|
+
if config.respond_to?(:assets)
|
18
|
+
config.assets.paths ||= []
|
19
|
+
config.assets.paths << Playbook::Engine.root.join("fonts")
|
20
|
+
config.assets.paths << Playbook::Engine.root.join("app/pb_kits/playbook/pb_*")
|
21
|
+
end
|
30
22
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
webpacker: Playbook.webpacker
|
35
|
-
)
|
23
|
+
if config.respond_to?(:sass)
|
24
|
+
config.sass.load_paths ||= []
|
25
|
+
config.sass.load_paths << Playbook::Engine.root.join("app/pb_kits/playbook")
|
36
26
|
end
|
37
27
|
end
|
38
28
|
end
|