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
@@ -0,0 +1,25 @@
1
+ <%= content_tag(:div,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname(["pb_home_address_street", object.dark ? "dark" : nil].compact.join("_"))) do %>
5
+
6
+ <%= pb_rails "title", props: {
7
+ classname: "pb_home_address_street_address",
8
+ size: 4,
9
+ text: "#{object.address} \u00b7 #{object.house_style}"
10
+ } %>
11
+
12
+ <%= pb_rails "body", props: {
13
+ color: "light",
14
+ text: "#{object.city}, #{object.state}",
15
+ } %>
16
+
17
+ <%= pb_rails "body", props: { classname: "home-hashtag", tag: "span" } do %>
18
+ H#<%= object.home_id %>
19
+ <% end %>
20
+
21
+ <%= pb_rails "body", props: { color: "light", tag: "span" } do %>
22
+ <small><%= object.state %></small>
23
+ <% end %>
24
+
25
+ <% end %>
@@ -0,0 +1,64 @@
1
+ /* @flow */
2
+ /*eslint-disable react/no-multi-comp, flowtype/space-before-type-colon */
3
+
4
+ import React from 'react'
5
+
6
+ import classnames from 'classnames'
7
+
8
+ import Body from '../pb_body/_body.jsx'
9
+ import Title from '../pb_title/_title.jsx'
10
+
11
+ type HomeAddressStreetProps = {
12
+ address: String,
13
+ city: String,
14
+ className?: String,
15
+ dark?: Boolean,
16
+ homeId: Number,
17
+ houseStyle: String,
18
+ state: String,
19
+ zipcode: String,
20
+ }
21
+
22
+ const classes = (className, dark) => (
23
+ classnames(className, {
24
+ 'pb_home_address_street': !dark,
25
+ 'pb_home_address_street_dark': dark,
26
+ })
27
+ )
28
+
29
+ const HomeAddressStreet = ({
30
+ address,
31
+ city,
32
+ className,
33
+ dark=false,
34
+ homeId,
35
+ houseStyle,
36
+ state,
37
+ zipcode,
38
+ }: HomeAddressStreetProps) => (
39
+ <div className={classes(className, dark)}>
40
+ <Title
41
+ className="pb_home_address_street_address"
42
+ size={4}
43
+ >
44
+ {address} {`\u00b7`} {houseStyle}
45
+ </Title>
46
+ <Body color="light">
47
+ {city}, {state}
48
+ </Body>
49
+ <Body
50
+ className="home-hashtag"
51
+ tag="span"
52
+ >
53
+ H#{homeId}
54
+ </Body>
55
+ <Body
56
+ color="light"
57
+ tag="span"
58
+ >
59
+ <small>{state}</small>
60
+ </Body>
61
+ </div>
62
+ )
63
+
64
+ export default HomeAddressStreet
@@ -0,0 +1,20 @@
1
+ @import "../tokens/opacity";
2
+ @import "../tokens/border_radius";
3
+ @import "../tokens/colors";
4
+
5
+ [class^=pb_home_address_street] {
6
+ .home-hashtag {
7
+ background: rgba(6, 77, 255, $opacity_1);
8
+ border-radius: $border_rad_light;
9
+ font-weight: bold;
10
+ font-size: 10px;
11
+ color: #064DFF;
12
+ letter-spacing: 0;
13
+ padding: 1px 3px 1px 5px;
14
+ margin-right: 7px;
15
+ }
16
+
17
+ &[class$=_dark] .pb_home_address_street_address {
18
+ color: $white;
19
+ }
20
+ }
@@ -0,0 +1,9 @@
1
+ <%= pb_rails("home_address_street", props: {
2
+ address: "70 Prospect Ave",
3
+ city: "North Arlington",
4
+ home_id: 8250263,
5
+ house_style: "Colonial",
6
+ state: "NJ",
7
+ zipcode: "07031",
8
+ dark: true,
9
+ }) %>
@@ -0,0 +1,18 @@
1
+ import React from "react"
2
+ import HomeAddressStreet from "../_home_address_street.jsx"
3
+
4
+ function HomeAddressStreetDark() {
5
+ return (
6
+ <HomeAddressStreet
7
+ address="70 Prospect Ave"
8
+ city="North Arlington"
9
+ dark
10
+ homeId={8250263}
11
+ houseStyle="Colonial"
12
+ state="NJ"
13
+ zipcode="07031"
14
+ />
15
+ )
16
+ }
17
+
18
+ export default HomeAddressStreetDark;
@@ -0,0 +1,8 @@
1
+ <%= pb_rails("home_address_street", props: {
2
+ address: "70 Prospect Ave",
3
+ city: "North Arlington",
4
+ home_id: 8250263,
5
+ house_style: "Colonial",
6
+ state: "NJ",
7
+ zipcode: "07031",
8
+ }) %>
@@ -0,0 +1,17 @@
1
+ import React from "react"
2
+ import HomeAddressStreet from "../_home_address_street.jsx"
3
+
4
+ function HomeAddressStreetDefault() {
5
+ return (
6
+ <HomeAddressStreet
7
+ address="70 Prospect Ave"
8
+ city="North Arlington"
9
+ homeId={8250263}
10
+ houseStyle="Colonial"
11
+ state="NJ"
12
+ zipcode="07031"
13
+ />
14
+ )
15
+ }
16
+
17
+ export default HomeAddressStreetDefault;
@@ -0,0 +1,11 @@
1
+ examples:
2
+
3
+ rails:
4
+ - home_address_street_default: Default
5
+ - home_address_street_dark: Dark
6
+
7
+
8
+ react:
9
+ - home_address_street_default: Default
10
+ - home_address_street_dark: Dark
11
+
@@ -0,0 +1,2 @@
1
+ export {default as HomeAddressStreetDefault} from './_home_address_street_default.jsx';
2
+ export {default as HomeAddressStreetDark} from './_home_address_street_dark.jsx';
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbHomeAddressStreet
5
+ class HomeAddressStreet < Playbook::PbKit::Base
6
+ PROPS = %i[configured_address
7
+ configured_city
8
+ configured_classname
9
+ configured_dark
10
+ configured_data
11
+ configured_home_id
12
+ configured_house_style
13
+ configured_id
14
+ configured_state
15
+ configured_zipcode].freeze
16
+
17
+ def initialize(address: default_configuration,
18
+ city: default_configuration,
19
+ classname: default_configuration,
20
+ dark: default_configuration,
21
+ data: default_configuration,
22
+ home_id: default_configuration,
23
+ house_style: default_configuration,
24
+ id: default_configuration,
25
+ state: default_configuration,
26
+ zipcode: default_configuration)
27
+ self.configured_address = address
28
+ self.configured_city = city
29
+ self.configured_classname = classname
30
+ self.configured_dark = dark
31
+ self.configured_data = data
32
+ self.configured_home_id = home_id
33
+ self.configured_house_style = house_style
34
+ self.configured_state = state
35
+ self.configured_zipcode = zipcode
36
+ end
37
+
38
+ def address
39
+ default_value(configured_address, "")
40
+ end
41
+
42
+ def city
43
+ default_value(configured_city, "")
44
+ end
45
+
46
+ def dark
47
+ true_value(configured_dark, true, false)
48
+ end
49
+
50
+ def home_id
51
+ default_value(configured_home_id, "")
52
+ end
53
+
54
+ def house_style
55
+ default_value(configured_house_style, "")
56
+ end
57
+
58
+ def state
59
+ default_value(configured_state, "")
60
+ end
61
+
62
+ def zipcode
63
+ default_value(configured_zipcode, "")
64
+ end
65
+
66
+ def to_partial_path
67
+ "pb_home_address_street/home_address_street"
68
+ end
69
+
70
+ private
71
+
72
+ DEFAULT = Object.new
73
+ private_constant :DEFAULT
74
+ def default_configuration
75
+ DEFAULT
76
+ end
77
+ attr_accessor(*PROPS)
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,45 @@
1
+ /* @flow */
2
+ /*eslint-disable flowtype/space-before-type-colon */
3
+
4
+ import moment from 'moment'
5
+ require('moment-strftime')
6
+ require('moment-timezone')
7
+
8
+ type DateTimeType = {
9
+ value: String | Date,
10
+ zone?: String,
11
+ }
12
+
13
+ export default class DateTime {
14
+ constructor({ value, zone='America/New_York' }: DateTimeType) {
15
+ this.value = this.convertToTimestampZone(value, zone)
16
+ }
17
+
18
+ convertToTimestampZone(value, zone) {
19
+ return moment(value).tz(zone)
20
+ }
21
+
22
+ convertToTimezone(zone='America/New_York') {
23
+ return this.value.strftime('%a')
24
+ }
25
+
26
+ toYear() {
27
+ return this.value.strftime("%Y")
28
+ }
29
+
30
+ toMonth() {
31
+ return this.value.strftime("%b")
32
+ }
33
+
34
+ toMonthFull() {
35
+ return this.value.strftime("%B")
36
+ }
37
+
38
+ toDay() {
39
+ return this.value.strftime("%e")
40
+ }
41
+
42
+ toIso() {
43
+ return this.value.toISOString();
44
+ }
45
+ }
@@ -0,0 +1,68 @@
1
+ module Playbook
2
+ module PbKit
3
+ class PbDateTime
4
+ attr_accessor :value, :zone
5
+
6
+ def initialize(value, zone = "America/New_York")
7
+ @value = self.convert_to_timestamp_and_zone(value, zone)
8
+ end
9
+
10
+ def convert_to_timestamp_and_zone(value, zone)
11
+ converted_time = value.is_a?(String) ? DateTime.parse(value) : value
12
+ converted_time.in_time_zone(zone)
13
+ end
14
+
15
+ def convert_to_timestamp
16
+ @value = @value.is_a?(String) ? DateTime.parse(@value) : @value
17
+ end
18
+
19
+ def convert_to_timezone(zone = "America/New_York")
20
+ @value = @value.in_time_zone(zone)
21
+ end
22
+
23
+ def to_day_of_week
24
+ @value.strftime("%a")
25
+ end
26
+
27
+ def to_year
28
+ @value.strftime("%Y")
29
+ end
30
+
31
+ def to_month
32
+ @value.strftime("%^b")
33
+ end
34
+
35
+ def to_month_downcase
36
+ @value.strftime("%b")
37
+ end
38
+
39
+ def to_month_full
40
+ @value.strftime("%B")
41
+ end
42
+
43
+ def to_day
44
+ @value.strftime("%e")
45
+ end
46
+
47
+ def to_hour
48
+ @value.strftime("%l")
49
+ end
50
+
51
+ def to_minutes
52
+ @value.strftime("%M")
53
+ end
54
+
55
+ def to_meridian
56
+ @value.strftime("%P")[0, 1]
57
+ end
58
+
59
+ def to_timezone
60
+ @value.strftime("%Z")
61
+ end
62
+
63
+ def to_iso
64
+ @value.iso8601
65
+ end
66
+ end
67
+ end
68
+ end
@@ -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
+ <%= object.value %>
6
+ <% end %>
@@ -0,0 +1,31 @@
1
+ /* @flow */
2
+ /*eslint-disable react/no-multi-comp, flowtype/space-before-type-colon */
3
+
4
+ import React from 'react'
5
+ import Icon from '../pb_icon/_icon.jsx'
6
+ import Body from '../pb_body/_body.jsx'
7
+
8
+ type LoadingInlineProps = {
9
+ align?: 'left' | 'center' | 'right',
10
+ className?: String,
11
+ dark?: Boolean,
12
+ data?: String,
13
+ id?: String,
14
+ }
15
+
16
+ const LoadingInline = ({
17
+ align='left',
18
+ className,
19
+ dark=false,
20
+ data,
21
+ id
22
+ }: LoadingInlineProps) => (
23
+ <div className={`pb_loading_inline_kit_${align}`}>
24
+ <Body color="light">
25
+ <Icon fixedWidth pulse icon="spinner" />&nbsp;
26
+ {`Loading`}
27
+ </Body>
28
+ </div>
29
+ )
30
+
31
+ export default LoadingInline
@@ -0,0 +1,19 @@
1
+ @import "../pb_body/body";
2
+ @import "../pb_icon/icon";
3
+
4
+ [class^=pb_loading_inline_kit] {
5
+ display: flex;
6
+ align-items: baseline;
7
+
8
+ &[class*=_center] {
9
+ justify-content: center;
10
+ }
11
+
12
+ &[class*=_left] {
13
+ justify-content: flex-start;
14
+ }
15
+
16
+ &[class*=_right] {
17
+ justify-content: flex-end;
18
+ }
19
+ }