playbook_ui 2.9.0 → 2.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/helpers/playbook/pb_doc_helper.rb +5 -1
  4. data/app/pb_kits/playbook/index.js +73 -0
  5. data/app/pb_kits/playbook/packs/examples.js +24 -0
  6. data/app/pb_kits/playbook/packs/kits.js +8 -0
  7. data/app/pb_kits/playbook/packs/pb_badge.js +4 -0
  8. data/app/pb_kits/playbook/packs/pb_checkbox.js +4 -0
  9. data/app/pb_kits/playbook/packs/pb_date_range_inline.js +4 -0
  10. data/app/pb_kits/playbook/packs/pb_date_year_stacked.js +4 -0
  11. data/app/pb_kits/playbook/packs/pb_distribution_bar.js +4 -0
  12. data/app/pb_kits/playbook/packs/pb_fixed_confirmation_toast.js +4 -0
  13. data/app/pb_kits/playbook/packs/pb_home_address_street.js +4 -0
  14. data/app/pb_kits/playbook/packs/pb_loading_inline.js +4 -0
  15. data/app/pb_kits/playbook/packs/site_styles/_kit_style_index.scss +8 -0
  16. data/app/pb_kits/playbook/pb_badge/_badge.html.erb +6 -0
  17. data/app/pb_kits/playbook/pb_badge/_badge.jsx +34 -0
  18. data/app/pb_kits/playbook/pb_badge/_badge.scss +37 -0
  19. data/app/pb_kits/playbook/pb_badge/badge.rb +65 -0
  20. data/app/pb_kits/playbook/pb_badge/docs/_badge_colors.html.erb +107 -0
  21. data/app/pb_kits/playbook/pb_badge/docs/_badge_colors.jsx +82 -0
  22. data/app/pb_kits/playbook/pb_badge/docs/_badge_default.html.erb +16 -0
  23. data/app/pb_kits/playbook/pb_badge/docs/_badge_default.jsx +20 -0
  24. data/app/pb_kits/playbook/pb_badge/docs/_badge_rounded.html.erb +19 -0
  25. data/app/pb_kits/playbook/pb_badge/docs/_badge_rounded.jsx +20 -0
  26. data/app/pb_kits/playbook/pb_badge/docs/example.yml +10 -0
  27. data/app/pb_kits/playbook/pb_badge/docs/index.js +3 -0
  28. data/app/pb_kits/playbook/pb_caption/_caption.html.erb +1 -1
  29. data/app/pb_kits/playbook/pb_caption/_caption.scss +2 -2
  30. data/app/pb_kits/playbook/pb_caption/caption.rb +24 -56
  31. data/app/pb_kits/playbook/pb_checkbox/_checkbox.html.erb +10 -0
  32. data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +42 -0
  33. data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +66 -0
  34. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +94 -0
  35. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_dark.html.erb +1 -0
  36. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_default.html.erb +1 -0
  37. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_default.jsx +17 -0
  38. data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +8 -0
  39. data/app/pb_kits/playbook/pb_checkbox/docs/index.js +1 -0
  40. data/app/pb_kits/playbook/pb_date/date.rb +14 -23
  41. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +3 -3
  42. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.html.erb +22 -0
  43. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.jsx +54 -0
  44. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +3 -0
  45. data/app/pb_kits/playbook/pb_date_range_inline/date_range_inline.rb +55 -0
  46. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.html.erb +1 -0
  47. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.jsx +12 -0
  48. data/app/pb_kits/playbook/pb_date_range_inline/docs/example.yml +9 -0
  49. data/app/pb_kits/playbook/pb_date_range_inline/docs/index.js +1 -0
  50. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.html.erb +7 -0
  51. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.jsx +51 -0
  52. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.scss +17 -0
  53. data/app/pb_kits/playbook/pb_date_year_stacked/date_year_stacked.rb +75 -0
  54. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_dark.html.erb +5 -0
  55. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_dark.jsx +14 -0
  56. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_default.html.erb +5 -0
  57. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_default.jsx +14 -0
  58. data/app/pb_kits/playbook/pb_date_year_stacked/docs/example.yml +9 -0
  59. data/app/pb_kits/playbook/pb_date_year_stacked/docs/index.js +2 -0
  60. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.html.erb +8 -0
  61. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.jsx +52 -0
  62. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.scss +31 -0
  63. data/app/pb_kits/playbook/pb_distribution_bar/distribution_bar.rb +56 -0
  64. data/app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_default.html.erb +9 -0
  65. data/app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_default.jsx +24 -0
  66. data/app/pb_kits/playbook/pb_distribution_bar/docs/example.yml +9 -0
  67. data/app/pb_kits/playbook/pb_distribution_bar/docs/index.js +1 -0
  68. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.html.erb +7 -0
  69. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.jsx +58 -0
  70. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +27 -0
  71. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_default.html.erb +18 -0
  72. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_default.jsx +26 -0
  73. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +9 -0
  74. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/index.js +1 -0
  75. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +74 -0
  76. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.html.erb +25 -0
  77. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.jsx +64 -0
  78. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.scss +20 -0
  79. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_dark.html.erb +9 -0
  80. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_dark.jsx +18 -0
  81. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default.html.erb +8 -0
  82. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default.jsx +17 -0
  83. data/app/pb_kits/playbook/pb_home_address_street/docs/example.yml +11 -0
  84. data/app/pb_kits/playbook/pb_home_address_street/docs/index.js +2 -0
  85. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +80 -0
  86. data/app/pb_kits/playbook/pb_kit/dateTime.js +45 -0
  87. data/app/pb_kits/playbook/pb_kit/pb_date_time.rb +68 -0
  88. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.html.erb +6 -0
  89. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.jsx +31 -0
  90. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.scss +19 -0
  91. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_dark.html.erb +13 -0
  92. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_dark.jsx +14 -0
  93. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_light.html.erb +9 -0
  94. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_light.jsx +14 -0
  95. data/app/pb_kits/playbook/pb_loading_inline/docs/example.yml +11 -0
  96. data/app/pb_kits/playbook/pb_loading_inline/docs/index.js +2 -0
  97. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +67 -0
  98. data/app/pb_kits/playbook/pb_time/docs/_time_default.html.erb +3 -3
  99. data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.html.erb +3 -3
  100. data/app/pb_kits/playbook/pb_time/time.rb +16 -29
  101. data/app/pb_kits/playbook/pb_toggle/toggle.rb +2 -0
  102. data/app/pb_kits/playbook/props.rb +45 -0
  103. data/app/pb_kits/playbook/props/base.rb +27 -0
  104. data/app/pb_kits/playbook/props/boolean.rb +11 -0
  105. data/app/pb_kits/playbook/props/enum.rb +16 -0
  106. data/app/pb_kits/playbook/props/hash.rb +11 -0
  107. data/app/pb_kits/playbook/props/string.rb +8 -0
  108. data/app/pb_kits/playbook/tokens/_colors.scss +2 -1
  109. data/app/pb_kits/playbook/tokens/_transition.scss +1 -0
  110. data/lib/playbook/engine.rb +0 -1
  111. data/lib/playbook/version.rb +1 -1
  112. metadata +148 -22
  113. data/app/pb_kits/playbook/packs/index.js +0 -67
  114. data/lib/tasks/db.rake +0 -10
  115. data/stories/basic.js +0 -18
  116. data/stories/complex.js +0 -15
  117. data/stories/form.js +0 -2
  118. data/stories/index.js +0 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b6c7dc11c38335138d659f925a534eb976a2c612f3ae5bc19577640e1cfc3ea
4
- data.tar.gz: 19b251b77226a249bb7da7eb923ee198fa00b53d2e44e14d4f7f84e6102b401a
3
+ metadata.gz: 11ec65aa572925990ddc23d8c9521e99045750e0f967ef7732d54f003eaca22d
4
+ data.tar.gz: 1474fe089227a407b0cd6aebf4ca91d76796f82f8a8b9ee0dc6e959c446c2cbb
5
5
  SHA512:
6
- metadata.gz: 89441d84f686920f6ed1d833b8b06e4324ff3af6de03ab9cd4b68c4e2a7b22c30719bb238ed183e65388e662d1b8e3e498e92d7c3f4647bfda3e79b18fda1874
7
- data.tar.gz: 2720ae93d19c177cec30a544edc3b649ed9b593a52f805eb11263bcf2eef997d4eba36f1e0af7688a816f82c28273ac96ec34f7e6df80ce190750cc77f5d6ca1
6
+ metadata.gz: aaf2117516558be2dd79460a31c6068cf974dfa16b6a79dffd8c685181e3988aa7628778b38c3427782df349b7c41d5881808a328da83256e6c781ee3c076b50
7
+ data.tar.gz: ca26c3f6b7ed8c8a822068661c7169c739ac26c8b9e2a129588db90e9787bd07883d2e9cd4faaee6cdf78458a298c322feb951cb09a28afede5ba3d109c40f3a
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Playbook Design System
2
2
 
3
- Playbook is the first design system built for both Rails & React interfaces. Inspired by [Velocity](https://www.invisionapp.com/inside-design/design-resources/design-system-dashboard-ui-kit/), Playbook takes a modern design approach, and applies it in a way that makes it easy to support bleeding edge, or legacy systems. Playbook is built & maintained by the User Experience & Developemnt teams at Power Home Remodeling, the largest home remodeler in the US.
3
+ Playbook is the first design system built for both Rails & React interfaces. Inspired by [Velocity](https://www.invisionapp.com/inside-design/design-resources/design-system-dashboard-ui-kit/), Playbook takes a modern design approach, and applies it in a way that makes it easy to support bleeding edge, or legacy systems. Playbook is built & maintained by the User Experience & Development teams at Power Home Remodeling, the largest home remodeler in the US.
4
4
 
5
5
  ## Requirements
6
6
 
@@ -34,7 +34,11 @@ module Playbook
34
34
 
35
35
  def pb_kit_api(kit)
36
36
  kit_class_obj = get_class_name(kit)
37
- @kit_api = kit_class_obj.instance_method(:initialize).parameters.map(&:last)
37
+ @kit_api = if kit_class_obj < Playbook::PbKit::Base
38
+ kit_class_obj.instance_method(:initialize).parameters.map(&:last)
39
+ else
40
+ kit_class_obj.props.keys
41
+ end
38
42
  render partial: "playbook/config/pb_kit_api"
39
43
  end
40
44
 
@@ -0,0 +1,73 @@
1
+ // React Component JSX Imports from the React Kits
2
+ import Avatar from "./pb_avatar/_avatar.jsx"
3
+ import BarGraph from "./pb_bar_graph/_bar_graph.jsx"
4
+ import Body from "./pb_body/_body.jsx"
5
+ import Button from "./pb_button/_button.jsx"
6
+ import Caption from "./pb_caption/_caption.jsx"
7
+ import Card from "./pb_card/_card.jsx"
8
+ import DashboardValue from "./pb_dashboard_value/_dashboard_value.jsx"
9
+ import DateYearStacked from "./pb_date_year_stacked/_date_year_stacked.jsx"
10
+ import DateRangeInline from "./pb_date_range_inline/_date_range_inline.jsx"
11
+ import DistributionBar from "./pb_distribution_bar/_distribution_bar.jsx"
12
+ import Icon from "./pb_icon/_icon.jsx"
13
+ import Image from "./pb_image/_image.jsx"
14
+ import Input from "./pb_input/_input.jsx"
15
+ import LabelValue from "./pb_label_value/_label_value.jsx"
16
+ import Layout from "./pb_layout/_layout.jsx"
17
+ import LineGraph from "./pb_line_graph/_line_graph.jsx"
18
+ import List from "./pb_list/_list.jsx"
19
+ import Message from "./pb_message/_message.jsx"
20
+ import OnlineStatus from "./pb_online_status/_online_status.jsx"
21
+ import Table from "./pb_table/_table.jsx"
22
+ import TimeStamp from "./pb_timestamp/_timestamp.jsx"
23
+ import Title from "./pb_title/_title.jsx"
24
+ import User from "./pb_user/_user.jsx"
25
+ import VerticalNav from "./pb_vertical_nav/_vertical_nav.jsx"
26
+ import Pill from "./pb_pill/_pill.jsx"
27
+ import Currency from "./pb_currency/_currency.jsx"
28
+ import Toggle from "./pb_toggle/_toggle.jsx"
29
+
30
+ // Dashboard Settings
31
+ import commonSettings from "./pb_dashboard/commonSettings"
32
+ import lineGraphSettings from "./pb_line_graph/lineGraphSettings"
33
+ import barGraphSettings from "./pb_bar_graph/barGraphSettings"
34
+ import dashboardValueSettings from "./pb_dashboard_value/dashboardValueSettings"
35
+
36
+ // Other JS/Plugins
37
+ import pbChart from "./plugins/pb_chart_plugin"
38
+
39
+ // All Exports for Consumption in Nitro
40
+ export {
41
+ Avatar,
42
+ BarGraph,
43
+ Body,
44
+ Button,
45
+ Caption,
46
+ Card,
47
+ DashboardValue,
48
+ DateYearStacked,
49
+ DateRangeInline,
50
+ DistributionBar,
51
+ Icon,
52
+ Image,
53
+ Input,
54
+ LabelValue,
55
+ Layout,
56
+ LineGraph,
57
+ List,
58
+ Message,
59
+ OnlineStatus,
60
+ Table,
61
+ TimeStamp,
62
+ Title,
63
+ User,
64
+ VerticalNav,
65
+ Pill,
66
+ Currency,
67
+ Toggle,
68
+ commonSettings,
69
+ lineGraphSettings,
70
+ barGraphSettings,
71
+ dashboardValueSettings,
72
+ pbChart,
73
+ }
@@ -128,3 +128,27 @@ WebpackerReact.setup (SectionSeparator);
128
128
 
129
129
  import * as Currency from "pb_currency/docs";
130
130
  WebpackerReact.setup (Currency);
131
+
132
+ import * as FixedConfirmationToast from "pb_fixed_confirmation_toast/docs";
133
+ WebpackerReact.setup (FixedConfirmationToast);
134
+
135
+ import * as LoadingInline from "pb_loading_inline/docs";
136
+ WebpackerReact.setup (LoadingInline);
137
+
138
+ import * as Checkbox from "pb_checkbox/docs";
139
+ WebpackerReact.setup (Checkbox);
140
+
141
+ import * as HomeAddressStreet from "pb_home_address_street/docs";
142
+ WebpackerReact.setup (HomeAddressStreet);
143
+
144
+ import * as Badge from "pb_badge/docs";
145
+ WebpackerReact.setup (Badge);
146
+
147
+ import * as DateYearStacked from "pb_date_year_stacked/docs";
148
+ WebpackerReact.setup (DateYearStacked);
149
+
150
+ import * as DateRangeInline from "pb_date_range_inline/docs";
151
+ WebpackerReact.setup (DateRangeInline);
152
+
153
+ import * as DistributionBar from "pb_distribution_bar/docs";
154
+ WebpackerReact.setup (DistributionBar);
@@ -38,3 +38,11 @@ import "./pb_stat_value.js";
38
38
  import "./pb_stat_change.js";
39
39
  import "./pb_section_separator.js";
40
40
  import "./pb_currency.js";
41
+ import "./pb_fixed_confirmation_toast.js";
42
+ import "./pb_loading_inline.js";
43
+ import "./pb_checkbox.js";
44
+ import "./pb_home_address_street.js";
45
+ import "./pb_badge.js";
46
+ import "./pb_date_year_stacked.js";
47
+ import "./pb_date_range_inline.js";
48
+ import "./pb_distribution_bar.js";
@@ -0,0 +1,4 @@
1
+ import Badge from "pb_badge/_badge.jsx";
2
+
3
+ import WebpackerReact from "webpacker-react";
4
+ WebpackerReact.setup({ Badge });
@@ -0,0 +1,4 @@
1
+ import Checkbox from "pb_checkbox/_checkbox.jsx";
2
+ import WebpackerReact from "webpacker-react";
3
+
4
+ WebpackerReact.setup({ Checkbox });
@@ -0,0 +1,4 @@
1
+ import DateRangeInline from "pb_date_range_inline/_date_range_inline.jsx";
2
+
3
+ import WebpackerReact from "webpacker-react";
4
+ WebpackerReact.setup({ DateRangeInline });
@@ -0,0 +1,4 @@
1
+ import DateYearStacked from "pb_date_year_stacked/_date_year_stacked.jsx";
2
+
3
+ import WebpackerReact from "webpacker-react";
4
+ WebpackerReact.setup({ DateYearStacked });
@@ -0,0 +1,4 @@
1
+ import DistributionBar from "pb_distribution_bar/_distribution_bar.jsx";
2
+
3
+ import WebpackerReact from "webpacker-react";
4
+ WebpackerReact.setup({ DistributionBar });
@@ -0,0 +1,4 @@
1
+ import FixedConfirmationToast from "pb_fixed_confirmation_toast/_fixed_confirmation_toast.jsx";
2
+
3
+ import WebpackerReact from "webpacker-react";
4
+ WebpackerReact.setup({ FixedConfirmationToast });
@@ -0,0 +1,4 @@
1
+ import HomeAddressStreet from "pb_home_address_street/_home_address_street.jsx";
2
+
3
+ import WebpackerReact from "webpacker-react";
4
+ WebpackerReact.setup({ HomeAddressStreet });
@@ -0,0 +1,4 @@
1
+ import LoadingInline from "pb_loading_inline/_loading_inline.jsx";
2
+
3
+ import WebpackerReact from "webpacker-react";
4
+ WebpackerReact.setup({ LoadingInline });
@@ -39,3 +39,11 @@
39
39
  @import '../../pb_stat_change/stat_change';
40
40
  @import '../../pb_section_separator/section_separator';
41
41
  @import '../../pb_currency/currency';
42
+ @import '../../pb_fixed_confirmation_toast/fixed_confirmation_toast';
43
+ @import '../../pb_loading_inline/loading_inline';
44
+ @import '../../pb_home_address_street/home_address_street';
45
+ @import '../../pb_badge/badge';
46
+ @import '../../pb_checkbox/checkbox';
47
+ @import '../../pb_date_year_stacked/date_year_stacked';
48
+ @import '../../pb_date_range_inline/date_range_inline';
49
+ @import '../../pb_distribution_bar/distribution_bar';
@@ -0,0 +1,6 @@
1
+ <%= content_tag(:div,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname(object.kit_class)) do %>
5
+ <span><%= object.text %></span>
6
+ <% end %>
@@ -0,0 +1,34 @@
1
+ /* @flow */
2
+ /*eslint-disable react/no-multi-comp, flowtype/space-before-type-colon */
3
+
4
+ import React from 'react'
5
+ import classnames from 'classnames'
6
+
7
+ type BadgeProps = {
8
+ className?: String,
9
+ id?: String,
10
+ text?: String,
11
+ variant?: 'success' | 'warning' | 'error' | 'info' | 'neutral',
12
+ rounded?: Boolean
13
+ }
14
+ const Badge = ({
15
+ className,
16
+ id,
17
+ text,
18
+ variant = 'neutral',
19
+ rounded = false
20
+ }: BadgeProps) => {
21
+ const roundedValue = rounded == true ? "rounded" : ""
22
+ const css = classnames([
23
+ `pb_badge_kit_${variant}_${roundedValue}`,
24
+ className,
25
+ ])
26
+
27
+ return (
28
+ <div id={id} className={css}>
29
+ <span>{text}</span>
30
+ </div>
31
+ )
32
+ }
33
+
34
+ export default Badge
@@ -0,0 +1,37 @@
1
+ @import "../tokens/border_radius";
2
+ @import "../tokens/colors";
3
+ @import "../tokens/opacity";
4
+ @import "../tokens/spacing";
5
+ @import "../tokens/typography";
6
+
7
+ [class^=pb_badge_kit] {
8
+ $pb_badge_height: 18px;
9
+
10
+ display: inline-flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ border-radius: $border_rad_light;
14
+ padding: 0 $space_xs / 2;
15
+ border: 1px solid $white;
16
+
17
+ span {
18
+ transform: translateY(1px);
19
+ display: inline-block;
20
+ font-size: $font_smaller - 2;
21
+ font-weight: $boldest;
22
+ }
23
+
24
+ @each $color_name, $color_value in $status_colors {
25
+ &[class*=_#{$color_name}] {
26
+ background: rgba($color_value, $opacity-1);
27
+ color: $color_value;
28
+ }
29
+ }
30
+
31
+ &[class*="rounded"] {
32
+ height: $pb_badge_height;
33
+ min-height: $pb_badge_height;
34
+ min-width: $pb_badge_height;
35
+ border-radius: $pb_badge_height / 2;
36
+ }
37
+ }
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbBadge
5
+ class Badge < Playbook::PbKit::Base
6
+ PROPS = %i[
7
+ configured_classname
8
+ configured_data
9
+ configured_id
10
+ configured_text
11
+ configured_variant
12
+ configured_rounded
13
+ ].freeze
14
+
15
+ def initialize(classname: default_configuration,
16
+ data: default_configuration,
17
+ id: default_configuration,
18
+ text: default_configuration,
19
+ variant: default_configuration,
20
+ rounded: default_configuration)
21
+ self.configured_classname = classname
22
+ self.configured_data = data
23
+ self.configured_id = id
24
+ self.configured_text = text
25
+ self.configured_variant = variant
26
+ self.configured_rounded = rounded
27
+ end
28
+
29
+ def text
30
+ default_value(configured_text, "")
31
+ end
32
+
33
+ def rounded
34
+ true_value(configured_rounded, "rounded", nil)
35
+ end
36
+
37
+ def variant
38
+ variant_options = %w[success warning error info neutral primary]
39
+ one_of_value(configured_variant, variant_options, "neutral")
40
+ end
41
+
42
+ def kit_class
43
+ kit_options = [
44
+ "pb_badge_kit",
45
+ variant,
46
+ rounded,
47
+ ]
48
+ kit_options.compact.join("_")
49
+ end
50
+
51
+ def to_partial_path
52
+ "pb_badge/badge"
53
+ end
54
+
55
+ private
56
+
57
+ DEFAULT = Object.new
58
+ private_constant :DEFAULT
59
+ def default_configuration
60
+ DEFAULT
61
+ end
62
+ attr_accessor(*PROPS)
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,107 @@
1
+ <div>
2
+ <%= pb_rails("badge", props: {
3
+ text: "+1",
4
+ variant: "primary",
5
+ rounded: true
6
+ }) %>
7
+
8
+ <%= pb_rails("badge", props: {
9
+ text: "+4",
10
+ variant: "primary"
11
+ }) %>
12
+
13
+ <%= pb_rails("badge", props: {
14
+ text: "+1000",
15
+ variant: "primary",
16
+ }) %>
17
+ </div>
18
+
19
+ <div>
20
+ <%= pb_rails("badge", props: {
21
+ text: "+1",
22
+ variant: "success",
23
+ rounded: true
24
+ }) %>
25
+
26
+ <%= pb_rails("badge", props: {
27
+ text: "+4",
28
+ variant: "success"
29
+ }) %>
30
+
31
+ <%= pb_rails("badge", props: {
32
+ text: "+1000",
33
+ variant: "success"
34
+ }) %>
35
+ </div>
36
+
37
+ <div>
38
+ <%= pb_rails("badge", props: {
39
+ text: "+1",
40
+ variant: "warning",
41
+ rounded: true
42
+ }) %>
43
+
44
+ <%= pb_rails("badge", props: {
45
+ text: "+4",
46
+ variant: "warning"
47
+ }) %>
48
+
49
+ <%= pb_rails("badge", props: {
50
+ text: "+1000",
51
+ variant: "warning"
52
+ }) %>
53
+ </div>
54
+
55
+ <div>
56
+ <%= pb_rails("badge", props: {
57
+ text: "+1",
58
+ variant: "error",
59
+ rounded: true
60
+ }) %>
61
+
62
+ <%= pb_rails("badge", props: {
63
+ text: "+4",
64
+ variant: "error"
65
+ }) %>
66
+
67
+ <%= pb_rails("badge", props: {
68
+ text: "+1000",
69
+ variant: "error"
70
+ }) %>
71
+ </div>
72
+
73
+ <div>
74
+ <%= pb_rails("badge", props: {
75
+ text: "+1",
76
+ variant: "info",
77
+ rounded: true
78
+ }) %>
79
+
80
+ <%= pb_rails("badge", props: {
81
+ text: "+4",
82
+ variant: "info"
83
+ }) %>
84
+
85
+ <%= pb_rails("badge", props: {
86
+ text: "+1000",
87
+ variant: "info"
88
+ }) %>
89
+ </div>
90
+
91
+ <div>
92
+ <%= pb_rails("badge", props: {
93
+ text: "+1",
94
+ variant: "neutral",
95
+ rounded: true
96
+ }) %>
97
+
98
+ <%= pb_rails("badge", props: {
99
+ text: "+4",
100
+ variant: "neutral"
101
+ }) %>
102
+
103
+ <%= pb_rails("badge", props: {
104
+ text: "+1000",
105
+ variant: "neutral"
106
+ }) %>
107
+ </div>