<div class="pb--doc-demo-row"> <%= pb_rails("selectable_card_icon", props: { icon: "chart-line", title_text: "Quarterly Report", body_text: "Export", input_id: 1, checked: true, }) %> <%= pb_rails("selectable_card_icon", props: { icon: "chart-pie", title_text: "Market Share", body_text: "Export", input_id: 2, }) %> <%= pb_rails("selectable_card_icon", props: { icon: "analytics", title_text: "Comprehensive", body_text: "Export", input_id: 3, disabled: true }) %> </div>
<div class="pb--doc-demo-row"> <%= pb_rails("selectable_card_icon", props: { icon: "hat-cowboy", title_text: "Cowboy", body_text: "Howdy partner.", input_id: 4, checked: true, checkmark: true }) %> <%= pb_rails("selectable_card_icon", props: { icon: "hat-wizard", title_text: "Wizard", body_text: "Poof, you're a sandwich.", input_id: 5, checkmark: true }) %> <%= pb_rails("selectable_card_icon", props: { icon: "hat-chef", title_text: "Chef", body_text: "Where is the lamb sauce?", input_id: 6, disabled: true, checkmark: true }) %> </div>
<div class="pb--doc-demo-row"> <%= pb_rails("selectable_card_icon", props: { icon: "car", title_text: "Car", input_id: 7, name: "select", multi: false, }) %> <%= pb_rails("selectable_card_icon", props: { icon: "bus", title_text: "Bus", input_id: 8, name: "select", multi: false, }) %> <%= pb_rails("selectable_card_icon", props: { icon: "subway", title_text: "Subway", input_id: 9, name: "select", multi: false, }) %> </div>
<div class="pb--doc-demo-row"> <%= pb_rails("selectable_card_icon", props: { icon: "chart-line", title_text: "Quarterly Report", body_text: "Export", input_id: "card-icon-id", checked: true, input_options: { class: "input-class", name: "overwriting-name", value: "overwriting-value", } }) %> </div>
When using custom icons it is important to introduce a "clean" SVG. In order to ensure these custom icons perform as intended within your kit(s), ensure these things have been modified from the original SVG markup:
Attributes must be React compatible e.g. xmlns:xlink should be xmlnsXlink and so on. There should be no hyphenated attributes and no semi-colons!.
Fill colors with regards to g or path nodes, e.g. fill="black", should be replaced with currentColor ala fill="currentColor". Your mileage may vary depending on the complexity of your SVG.
Pay attention to your custom icon's dimensions and viewBox attribute. It is best to use a viewBox="0 0 512 512" starting point when designing instead of trying to retrofit the viewbox afterwards!
You must source your own SVG into component/view you are working on. This can easily be done in programmatic and maintainable ways.
So long as you have a valid React <SVG> node, you can send it as the customIcon prop and the kit will take care of the rest.
Some Rails applications use only webpack(er) which means using image_url will be successful over image_path in most cases especially development where Webpack Dev Server is serving assets over HTTP. Rails applications still using Asset Pipeline may use image_path or image_url. Of course, YMMV depending on any custom configurations in your Rails application.
<div class="pb--doc-demo-row"> <% svg_url = "https://upload.wikimedia.org/wikipedia/commons/3/3b/Wrench_font_awesome.svg" %> <%= pb_rails("selectable_card_icon", props: { custom_icon: svg_url, title_text: "Customization", body_text: "Personalize everything", input_id: 1, checked: true, }) %> </div>
| Props | Type | Values |
|---|---|---|
align_content |
enum | responsive
|
start
end
center
spaceBetween
spaceAround
spaceEvenly
|
align_items |
enum | responsive
|
start
end
center
|
border_radius |
enum
|
none
xs
sm
md
lg
xl
rounded
|
cursor |
enum
|
auto
default
none
contextMenu
help
pointer
progress
wait
cell
|
dark |
boolean
|
true
false
|
flex |
enum | responsive
|
auto
initial
0
1
2
3
4
5
6
7
8
9
10
11
12
none
|
flex_direction |
enum | responsive
|
row
column
rowReverse
columnReverse
|
flex_wrap |
enum | responsive
|
wrap
nowrap
wrapReverse
|
justify_content |
enum | responsive
|
start
end
center
spaceBetween
spaceAround
spaceEvenly
|
line_height |
enum
|
loosest
looser
loose
normal
tight
tighter
tightest
|
margin_right |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin_left |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin_top |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin_bottom |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin_x |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin_y |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin |
array
|
none
xxs
xs
sm
md
lg
xl
|
width |
string
|
|
min_width |
string
|
|
max_width |
string
|
|
gap |
string | responsive
|
|
column_gap |
string | responsive
|
|
row_gap |
string | responsive
|
|
number_spacing |
enum
|
tabular
|
order |
enum | responsive
|
none
first
1
2
3
4
5
6
7
8
9
10
11
12
|
overflow_x |
enum
|
scroll
visible
hidden
auto
|
overflow_y |
enum
|
scroll
visible
hidden
auto
|
overflow |
enum
|
scroll
visible
hidden
auto
|
padding_right |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding_left |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding_top |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding_bottom |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding_x |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding_y |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding |
array
|
none
xxs
xs
sm
md
lg
xl
|
position |
enum
|
relative
absolute
fixed
sticky
static
|
shadow |
enum
|
none
deep
deeper
deepest
|
text_align |
enum | responsive
|
start
end
left
right
center
justify
justifyAll
matchParent
|
truncate |
enum
|
none
1
2
3
4
5
|
vertical_align |
enum | responsive
|
baseline
super
top
middle
bottom
sub
text-top
text-bottom
|
z_index |
enum | responsive
|
1
2
3
4
5
6
7
8
9
10
max
|
top |
enum | object
|
xxs
xs
sm
md
lg
xl
xxl
|
inset |
boolean
|
true
false
|
right |
enum | object
|
xxs
xs
sm
md
lg
xl
xxl
|
bottom |
enum | object
|
xxs
xs
sm
md
lg
xl
xxl
|
left |
enum | object
|
xxs
xs
sm
md
lg
xl
xxl
|
height |
string
|
|
max_height |
string
|
|
min_height |
string
|
|
hover |
object
|
|
group_hover |
boolean
|
true
false
|
| Props | Type | Values | Default |
|---|---|---|---|
checked |
boolean
|
true
false
|
false
|
checkmark |
boolean
|
true
false
|
false
|
custom_icon |
reactnode
|
||
disabled |
boolean
|
true
false
|
false
|
icon |
string
|
||
input_id |
string
|
||
multi |
boolean
|
true
false
|
true
|
name |
string
|
||
title_text |
string
|
||
body_text |
string
|
||
value |
string
|
||
on_change |
reactnode
|
||
input_options |
string
|