playbook_ui 7.4.0.pre.alpha2 → 7.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/github-brands.svg +1 -0
  3. data/app/assets/images/landing-background.svg +36 -0
  4. data/app/assets/images/landing-image.svg +203 -0
  5. data/app/assets/images/{pb.logo.svg → pb-logo.svg} +2 -2
  6. data/app/assets/images/pb-white-logo.svg +15 -0
  7. data/app/pb_kits/playbook/_playbook.scss +3 -1
  8. data/app/pb_kits/playbook/data/menu.yml +2 -2
  9. data/app/pb_kits/playbook/index.js +2 -1
  10. data/app/pb_kits/playbook/pb_background/_background.html.erb +14 -0
  11. data/app/pb_kits/playbook/pb_background/_background.jsx +63 -0
  12. data/app/pb_kits/playbook/pb_background/_background.scss +35 -0
  13. data/app/pb_kits/playbook/pb_background/background.rb +35 -0
  14. data/app/pb_kits/playbook/pb_background/docs/_background_dark.html.erb +3 -0
  15. data/app/pb_kits/playbook/pb_background/docs/_background_dark.jsx +13 -0
  16. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.html.erb +3 -0
  17. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx +13 -0
  18. data/app/pb_kits/playbook/pb_background/docs/_background_image.html.erb +13 -0
  19. data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +30 -0
  20. data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +3 -0
  21. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +13 -0
  22. data/app/pb_kits/playbook/pb_background/docs/_background_white.html.erb +3 -0
  23. data/app/pb_kits/playbook/pb_background/docs/_background_white.jsx +14 -0
  24. data/app/pb_kits/playbook/pb_background/docs/_description.md +1 -0
  25. data/app/pb_kits/playbook/pb_background/docs/example.yml +15 -0
  26. data/app/pb_kits/playbook/pb_background/docs/index.js +6 -0
  27. data/app/pb_kits/playbook/pb_date/_date.html.erb +64 -8
  28. data/app/pb_kits/playbook/pb_date/_date.jsx +115 -66
  29. data/app/pb_kits/playbook/pb_date/_date.scss +30 -0
  30. data/app/pb_kits/playbook/pb_date/date.rb +20 -9
  31. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +24 -0
  32. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +35 -0
  33. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +21 -6
  34. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +43 -12
  35. data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +27 -0
  36. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +43 -0
  37. data/app/pb_kits/playbook/pb_date/docs/example.yml +4 -0
  38. data/app/pb_kits/playbook/pb_date/docs/index.js +2 -0
  39. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +19 -14
  40. data/app/pb_kits/playbook/pb_date_time/_date_time.html.erb +31 -0
  41. data/app/pb_kits/playbook/pb_date_time/_date_time.jsx +73 -0
  42. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +26 -0
  43. data/app/pb_kits/playbook/pb_date_time/date_time.rb +29 -0
  44. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.html.erb +17 -0
  45. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.jsx +35 -0
  46. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.html.erb +20 -0
  47. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.jsx +38 -0
  48. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.html.erb +26 -0
  49. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.jsx +75 -0
  50. data/app/pb_kits/playbook/pb_date_time/docs/_description.md +1 -0
  51. data/app/pb_kits/playbook/pb_date_time/docs/example.yml +11 -0
  52. data/app/pb_kits/playbook/pb_date_time/docs/index.js +3 -0
  53. data/app/pb_kits/playbook/pb_flex/_flex.jsx +1 -1
  54. data/app/pb_kits/playbook/pb_flex/_flex.scss +4 -0
  55. data/app/pb_kits/playbook/pb_flex/flex.rb +1 -1
  56. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +52 -1
  57. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  58. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -1
  59. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +1 -1
  60. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +19 -1
  61. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +1 -1
  62. data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +3 -1
  63. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +13 -4
  64. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.html.erb +1 -1
  65. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +5 -7
  66. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.html.erb +12 -0
  67. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker_click_events.jsx +48 -0
  68. data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +2 -0
  69. data/app/pb_kits/playbook/pb_progress_step/docs/index.js +1 -0
  70. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +5 -3
  71. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +6 -0
  72. data/app/pb_kits/playbook/pb_timestamp/_timestamp.html.erb +13 -1
  73. data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +96 -20
  74. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +12 -1
  75. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.html.erb +69 -0
  76. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.jsx +91 -0
  77. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb +21 -1
  78. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +31 -4
  79. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +14 -0
  80. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.jsx +27 -0
  81. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.html.erb +54 -0
  82. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.jsx +73 -0
  83. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.html.erb +59 -0
  84. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.jsx +74 -0
  85. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.html.erb +177 -0
  86. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.jsx +209 -0
  87. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.html.erb +35 -0
  88. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.jsx +51 -0
  89. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.html.erb +123 -0
  90. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.jsx +146 -0
  91. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +14 -0
  92. data/app/pb_kits/playbook/pb_timestamp/docs/index.js +7 -0
  93. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +67 -1
  94. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +46 -19
  95. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +46 -10
  96. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +4 -4
  97. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +3 -2
  98. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +14 -2
  99. data/app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.jsx +20 -0
  100. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +8 -15
  101. data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +1 -6
  102. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +10 -4
  103. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.md +20 -4
  104. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +4 -0
  105. data/app/pb_kits/playbook/vendor.js +0 -3
  106. data/lib/playbook/version.rb +2 -1
  107. metadata +60 -24
  108. data/app/assets/images/clark.jpg +0 -0
  109. data/app/assets/images/giant.jpg +0 -0
  110. data/app/pb_kits/playbook/pb_collapsible/_collapsible.html.erb +0 -9
  111. data/app/pb_kits/playbook/pb_collapsible/_collapsible.jsx +0 -77
  112. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +0 -17
  113. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.jsx +0 -40
  114. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.jsx +0 -58
  115. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_content.html.erb +0 -7
  116. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_main.html.erb +0 -16
  117. data/app/pb_kits/playbook/pb_collapsible/collapsible.rb +0 -15
  118. data/app/pb_kits/playbook/pb_collapsible/collapsible_content.rb +0 -21
  119. data/app/pb_kits/playbook/pb_collapsible/collapsible_main.rb +0 -24
  120. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.html.erb +0 -10
  121. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.jsx +0 -17
  122. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.html.erb +0 -10
  123. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +0 -19
  124. data/app/pb_kits/playbook/pb_collapsible/docs/example.yml +0 -9
  125. data/app/pb_kits/playbook/pb_collapsible/docs/index.js +0 -2
  126. data/app/pb_kits/playbook/pb_collapsible/index.js +0 -82
@@ -0,0 +1,35 @@
1
+ @import "../tokens/colors";
2
+
3
+ $background_colors: (
4
+ "gradient": linear-gradient(135deg, $gradient_start 0%, $gradient_end 100%),
5
+ "dark": $bg_dark,
6
+ "light": $bg_light,
7
+ "white": $white,
8
+ );
9
+
10
+
11
+ [class^=pb_background_kit] {
12
+ max-width: 100%;
13
+ max-height: 100%;
14
+ background-size: cover;
15
+
16
+ @each $name, $color in $background_colors {
17
+ &.pb_background_color_#{$name} {
18
+ background: $color;
19
+ }
20
+ };
21
+
22
+ .blur_up {
23
+ -webkit-filter: blur(6px);
24
+ filter: blur(6px);
25
+ transition: filter 550ms, -webkit-filter 550ms;
26
+ }
27
+
28
+ .blur_up.lazyloaded {
29
+ -webkit-filter: blur(0);
30
+ filter: blur(0);
31
+ }
32
+
33
+
34
+
35
+ }
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbBackground
5
+ class Background
6
+ include Playbook::Props
7
+
8
+ partial "pb_background/background"
9
+
10
+ prop :background_color, type: Playbook::Props::Enum,
11
+ values: %w[gradient dark light white],
12
+ default: "light"
13
+ prop :image_url
14
+
15
+ prop :tag, type: Playbook::Props::Enum,
16
+ values: %w[h1 h2 h3 h4 h5 h6 p div span],
17
+ default: "div"
18
+
19
+
20
+ def classname
21
+ generate_classname("pb_background_kit", image_classname, background_color_classname, separator: " ")
22
+ end
23
+
24
+ private
25
+
26
+ def image_classname
27
+ image_url.present? ? "lazyload blur_up" : ""
28
+ end
29
+
30
+ def background_color_classname
31
+ !image_url.present? ? "pb_background_color_#{background_color}" : ""
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,3 @@
1
+ <%= pb_rails("background", props: { background_color: "dark", padding: "xl" }) do %>
2
+
3
+ <% end %>
@@ -0,0 +1,13 @@
1
+ import React from 'react'
2
+ import { Background } from '../..'
3
+
4
+ const BackgroundDark = () => (
5
+ <div>
6
+ <Background
7
+ backgroundColor="dark"
8
+ padding="xl"
9
+ />
10
+ </div>
11
+ )
12
+
13
+ export default BackgroundDark
@@ -0,0 +1,3 @@
1
+ <%= pb_rails("background", props: { background_color: "gradient", padding: "xl" }) do %>
2
+
3
+ <% end %>
@@ -0,0 +1,13 @@
1
+ import React from 'react'
2
+ import { Background } from '../..'
3
+
4
+ const BackgroundGradient = () => (
5
+ <div>
6
+ <Background
7
+ backgroundColor="gradient"
8
+ padding="xl"
9
+ />
10
+ </div>
11
+ )
12
+
13
+ export default BackgroundGradient
@@ -0,0 +1,13 @@
1
+ <%= pb_rails("background", props: { image_url: "https://images.unsplash.com/photo-1528459801416-a9e53bbf4e17?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1000&q=80", padding: "lg" }) do %>
2
+ <%= pb_rails("flex", props: { horizontal: "center", orientation: "column" }) do %>
3
+ <%= pb_rails("flex/flex_item") do %>
4
+ <%= pb_rails("title", props: { dark: true, size: 1, text: "Background Kit Image" })%>
5
+ <% end %>
6
+ <%= pb_rails("flex/flex_item", props: { padding: "lg" }) do %>
7
+ <%= pb_rails("card", props: { shadow: "deepest" }) do %>
8
+ We cannot seek achievement for ourselves and forget about progress and prosperity for our community... Our ambitions must be broad enough to include the aspirations and needs of others, for their sakes and for our own.
9
+ -Cesar Chavez
10
+ <% end %>
11
+ <% end %>
12
+ <% end %>
13
+ <% end %>
@@ -0,0 +1,30 @@
1
+ import React from 'react'
2
+ import { Background } from '../..'
3
+ import { Card, Flex, FlexItem, Title } from '../..'
4
+
5
+ const BackgroundImage = () => (
6
+ <div>
7
+ <Background imageUrl="https://images.unsplash.com/photo-1528459801416-a9e53bbf4e17?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1000&q=80">
8
+ <Flex
9
+ orientation="column"
10
+ vertical="center"
11
+ >
12
+ <FlexItem>
13
+ <Title
14
+ dark
15
+ padding="lg"
16
+ size={1}
17
+ text="Background Kit Image"
18
+ />
19
+ </FlexItem>
20
+ <FlexItem padding="lg">
21
+ <Card shadow="deepest">
22
+ {'We cannot seek achievement for ourselves and forget about progress and prosperity for our community... Our ambitions must be broad enough to include the aspirations and needs of others, for their sakes and for our own. - Cesar Chavez'}
23
+ </Card>
24
+ </FlexItem>
25
+ </Flex>
26
+ </Background>
27
+ </div>
28
+ )
29
+
30
+ export default BackgroundImage
@@ -0,0 +1,3 @@
1
+ <%= pb_rails("background", props: { background_color: "light", padding: "xl" }) do %>
2
+
3
+ <% end %>
@@ -0,0 +1,13 @@
1
+ import React from 'react'
2
+ import { Background } from '../..'
3
+
4
+ const BackgroundLight = () => (
5
+ <div>
6
+ <Background
7
+ backgroundColor="light"
8
+ padding="xl"
9
+ />
10
+ </div>
11
+ )
12
+
13
+ export default BackgroundLight
@@ -0,0 +1,3 @@
1
+ <%= pb_rails("background", props: { background_color: "white", padding: "xl" }) do %>
2
+
3
+ <% end %>
@@ -0,0 +1,14 @@
1
+ import React from 'react'
2
+ import { Background } from '../..'
3
+
4
+ const BackgroundWhite = () => (
5
+ <div>
6
+ <Background
7
+ backgroundColor="white"
8
+ className="blah"
9
+ />
10
+ </div>
11
+
12
+ )
13
+
14
+ export default BackgroundWhite
@@ -0,0 +1 @@
1
+ The background kit is used for adding a background to a page or to any container. Instead of adding a custom class to give something a background, you can now wrap the elements in the background kit and use the `background_color` prop to assign its color. The colors that you can choose from for the `background_color` prop are: gradient, dark, light, and white.
@@ -0,0 +1,15 @@
1
+ examples:
2
+
3
+ rails:
4
+ - background_light: Light
5
+ - background_white: White
6
+ - background_dark: Dark
7
+ - background_gradient: Gradient
8
+ - background_image: Image
9
+
10
+ react:
11
+ - background_light: Light
12
+ - background_white: White
13
+ - background_dark: Dark
14
+ - background_gradient: Gradient
15
+ - background_image: Image
@@ -0,0 +1,6 @@
1
+ export { default as BackgroundLight } from './_background_light.jsx'
2
+ export { default as BackgroundWhite } from './_background_white.jsx'
3
+ export { default as BackgroundDark } from './_background_dark.jsx'
4
+ export { default as BackgroundGradient } from './_background_gradient.jsx'
5
+ export { default as BackgroundImage } from './_background_image.jsx'
6
+
@@ -1,14 +1,70 @@
1
1
  <%= content_tag(:div,
2
2
  id: object.id,
3
3
  data: object.data,
4
- class: object.classname) do %>
5
- <% if object.size == "lg" %>
6
- <%= pb_rails("title", props: { text: object.lg_date, size: 3 }) %>
7
- <% elsif object.size == "sm" %>
8
- <%= pb_rails("icon", props: { icon: "calendar", fixed_width: true }) %>
9
- <%= pb_rails("title", props: { tag: "span", text: object.sm_date, size: 4 }) %>
4
+ class: object.classname,
5
+ aria: object.aria) do %>
6
+
7
+ <% if object.size == "md" %>
8
+ <!-- icon -->
9
+ <% if object.show_icon %>
10
+ <%= pb_rails("body", props: {
11
+ color: "light",
12
+ tag: "div",
13
+ }) do %>
14
+ <%= pb_rails("icon", props: { icon: "calendar-alt", fixed_width: true }) %>
15
+ <% end %>
16
+ <% end %>
17
+
18
+ <!-- day_of_week -->
19
+ <% if object.show_day_of_week %>
20
+ <%= pb_rails("title", props: { tag: "div", text: object.day_of_week, size: 4 }) %>
21
+ <%= pb_rails("body", props: {
22
+ text: "•",
23
+ color: "light",
24
+ tag: "div",
25
+ }) %>
26
+ <% end %>
27
+
28
+ <!-- month day, year -->
29
+
30
+ <%# if not current year %>
31
+ <% if object.year.to_s == DateTime.now.year.to_s %>
32
+ <%= pb_rails("title", props: { tag: "div", text: "#{object.month} #{object.day}", size: 4 }) %>
33
+ <%# if is current year %>
10
34
  <% else %>
11
- <%= pb_rails("title", props: { text: object.xs_date, size: 4 }) %>
35
+ <%= pb_rails("title", props: { tag: "div", text: "#{object.month} #{object.day}, #{object.year}", size: 4 }) %>
36
+ <% end %>
37
+
38
+ <% else %>
39
+
40
+ <!-- icon -->
41
+ <% if object.show_icon %>
42
+ <%= pb_rails("body", props: {
43
+ color: "light",
44
+ tag: "div",
45
+ }) do %>
46
+ <%= pb_rails("icon", props: { icon: "calendar-alt", fixed_width: true }) %>
47
+ <% end %>
48
+ <% end %>
49
+
50
+ <!-- day_of_week -->
51
+ <% if object.show_day_of_week %>
52
+ <%= pb_rails("caption", props: { tag: "div", text: object.day_of_week }) %>
53
+ <%= pb_rails("caption", props: {
54
+ text: "•",
55
+ color: "light",
56
+ tag: "div",
57
+ }) %>
58
+ <% end %>
59
+
60
+ <!-- month day, year -->
61
+
62
+ <%# if not current year %>
63
+ <% if object.year.to_s == DateTime.now.year.to_s %>
64
+ <%= pb_rails("caption", props: { tag: "span", text: "#{object.month} #{object.day}" }) %>
65
+ <%# if is current year %>
66
+ <% else %>
67
+ <%= pb_rails("caption", props: { tag: "span", text: "#{object.month} #{object.day}, #{object.year}" }) %>
68
+ <% end %>
12
69
  <% end %>
13
70
  <% end %>
14
-
@@ -2,82 +2,131 @@
2
2
 
3
3
  import React from 'react'
4
4
  import DateTime from '../pb_kit/dateTime.js'
5
- import { Icon } from '../'
5
+ import { Body, Caption, Icon, Title } from '../'
6
6
  import classnames from 'classnames'
7
7
  import { globalProps } from '../utilities/globalProps.js'
8
+ import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
8
9
 
9
- const defaultDateString = (value: DateTime) => {
10
- const weekday = value.toWeekday().toUpperCase()
11
- const month = value.toMonth().toUpperCase()
12
- const day = value.toDay()
13
-
14
- return `${weekday} · ${month} ${day}`
15
- }
16
-
17
- const largeDateString = (value: DateTime) => {
18
- const month = value.toMonth().toUpperCase()
19
- const day = value.toDay()
20
-
21
- return `${month} ${day}`
22
- }
23
-
24
- type DateSubcomponent = {
25
- value: DateTime,
10
+ type PbDateProps = {
11
+ alignment?: "left" | "center" | "right",
12
+ aria: Object,
13
+ className?: string,
14
+ data?: Object,
15
+ id?: string,
16
+ showDayOfWeek?: boolean,
17
+ showIcon?: boolean,
18
+ size?: string,
19
+ value: string | date,
26
20
  }
27
21
 
28
- const ExtraSmallDate = ({ value, ...props }: DateSubcomponent) => (
29
- <h3 className={classnames('pb_title_kit_4', globalProps(props))}>
30
- {defaultDateString(value)}
31
- </h3>
32
- )
33
-
34
- const SmallDate = ({ value, ...props }: DateSubcomponent) => (
35
- <h3 className={classnames('pb_title_kit_4', globalProps(props))}>
36
- <Icon
37
- fixedWidth
38
- icon="calendar"
39
- />
40
- {defaultDateString(value)}
41
- </h3>
42
- )
22
+ const PbDate = (props: PbDateProps) => {
23
+ const {
24
+ aria = {},
25
+ alignment = 'left',
26
+ className,
27
+ data = {},
28
+ id,
29
+ showDayOfWeek = false,
30
+ showIcon = false,
31
+ size = 'md',
32
+ value,
33
+ } = props
43
34
 
44
- const LargeDate = ({ value, ...props }: DateSubcomponent) => (
45
- <h3 className={classnames('pb_title_kit_3', globalProps(props))}>
46
- {largeDateString(value)}
47
- </h3>
48
- )
35
+ const dateTimestamp = new DateTime({ value: value })
36
+ const weekday = dateTimestamp.toWeekday()
37
+ const month = dateTimestamp.toMonth()
38
+ const day = dateTimestamp.toDay()
39
+ const year = dateTimestamp.toYear()
40
+ const currentYear = new Date().getFullYear().toString()
49
41
 
50
- type PbDateProps = {
51
- size?: "xs" | "sm" | "lg",
52
- value?: string,
53
- className?: string
54
- }
42
+ const ariaProps = buildAriaProps(aria)
43
+ const dataProps = buildDataProps(data)
55
44
 
56
- const PbDate = ({ size, value, className, ...props }: PbDateProps) => {
57
- const date = new DateTime({ value: value })
45
+ const classes = classnames(
46
+ buildCss('pb_date_kit', alignment),
47
+ globalProps(props),
48
+ className
49
+ )
58
50
 
59
- if (size == 'xs')
60
- return (
61
- <ExtraSmallDate
62
- {...props}
63
- className={className}
64
- value={date}
65
- />
66
- )
67
- if (size == 'lg')
68
- return (
69
- <LargeDate
70
- {...props}
71
- className={className}
72
- value={date}
73
- />
74
- )
75
51
  return (
76
- <SmallDate
77
- {...props}
78
- className={className}
79
- value={date}
80
- />
52
+ <div
53
+ {...ariaProps}
54
+ {...dataProps}
55
+ className={classes}
56
+ id={id}
57
+ >
58
+ <If condition={size == 'md' || size == 'lg'}>
59
+
60
+ <Title
61
+ size={4}
62
+ tag="h4"
63
+ >
64
+ <If condition={showIcon}>
65
+ <Body
66
+ className="pb_icon_kit_container"
67
+ color="light"
68
+ tag="span"
69
+ >
70
+ <Icon
71
+ fixedWidth
72
+ icon="calendar-alt"
73
+ />
74
+ </Body>
75
+ </If>
76
+ <If condition={showDayOfWeek}>
77
+ {weekday}
78
+ <Body
79
+ color="light"
80
+ tag="span"
81
+ text=" • "
82
+ />
83
+ </If>
84
+ <span>
85
+ {month}
86
+ {' '}
87
+ {day}
88
+ </span>
89
+ <If condition={currentYear != year}>
90
+ <span>
91
+ {`, ${year}`}
92
+ </span>
93
+ </If>
94
+ </Title>
95
+ <Else />
96
+ <>
97
+ <If condition={showIcon}>
98
+ <Body
99
+ className="pb_icon_kit_container"
100
+ color="light"
101
+ tag="span"
102
+ >
103
+ <Icon
104
+ fixedWidth
105
+ icon="calendar-alt"
106
+ />
107
+ </Body>
108
+ </If>
109
+ <If condition={showDayOfWeek}>
110
+ <Caption tag="div">
111
+ {weekday}
112
+ </Caption>
113
+ <Caption
114
+ color="light"
115
+ tag="div"
116
+ text=" • "
117
+ />
118
+ </If>
119
+ <Caption tag="span">
120
+ {month}
121
+ {' '}
122
+ {day}
123
+ <If condition={currentYear != year}>
124
+ {`, ${year}`}
125
+ </If>
126
+ </Caption>
127
+ </>
128
+ </If>
129
+ </div>
81
130
  )
82
131
  }
83
132