playbook_ui 14.6.2.pre.alpha.PLAY1550lazysizesupgrade4257 → 14.6.2.pre.alpha.PLAY1551tiptapextbump4350

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +2 -1
  3. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -2
  4. data/app/pb_kits/playbook/pb_currency/_currency.tsx +16 -6
  5. data/app/pb_kits/playbook/pb_currency/currency.rb +38 -11
  6. data/app/pb_kits/playbook/pb_currency/currency.test.js +35 -0
  7. data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.html.erb +7 -0
  8. data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.jsx +18 -0
  9. data/app/pb_kits/playbook/pb_currency/docs/_currency_comma_separator.md +3 -0
  10. data/app/pb_kits/playbook/pb_currency/docs/example.yml +3 -1
  11. data/app/pb_kits/playbook/pb_currency/docs/index.js +1 -0
  12. data/app/pb_kits/playbook/pb_link/_link.scss +66 -0
  13. data/app/pb_kits/playbook/pb_link/_link.tsx +107 -0
  14. data/app/pb_kits/playbook/pb_link/docs/_link_color.html.erb +30 -0
  15. data/app/pb_kits/playbook/pb_link/docs/_link_color.jsx +40 -0
  16. data/app/pb_kits/playbook/pb_link/docs/_link_disabled.html.erb +5 -0
  17. data/app/pb_kits/playbook/pb_link/docs/_link_disabled.jsx +15 -0
  18. data/app/pb_kits/playbook/pb_link/docs/_link_icon.html.erb +15 -0
  19. data/app/pb_kits/playbook/pb_link/docs/_link_icon.jsx +25 -0
  20. data/app/pb_kits/playbook/pb_link/docs/_link_tag.html.erb +35 -0
  21. data/app/pb_kits/playbook/pb_link/docs/_link_tag.jsx +45 -0
  22. data/app/pb_kits/playbook/pb_link/docs/_link_underline.html.erb +5 -0
  23. data/app/pb_kits/playbook/pb_link/docs/_link_underline.jsx +15 -0
  24. data/app/pb_kits/playbook/pb_link/docs/example.yml +16 -0
  25. data/app/pb_kits/playbook/pb_link/docs/index.js +5 -0
  26. data/app/pb_kits/playbook/pb_link/link.html.erb +21 -0
  27. data/app/pb_kits/playbook/pb_link/link.rb +44 -0
  28. data/app/pb_kits/playbook/pb_link/link.test.jsx +92 -0
  29. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +67 -1
  30. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.tsx +1 -0
  31. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.html.erb +1 -1
  32. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.rb +5 -1
  33. data/app/pb_kits/playbook/tokens/_typography.scss +35 -0
  34. data/dist/chunks/_weekday_stacked-BLVPFG6h.js +45 -0
  35. data/dist/chunks/vendor.js +1 -1
  36. data/dist/menu.yml +3 -0
  37. data/dist/playbook-doc.js +1 -1
  38. data/dist/playbook.css +1 -1
  39. data/lib/playbook/version.rb +1 -1
  40. metadata +23 -3
  41. data/dist/chunks/_weekday_stacked-Dh3OU4s8.js +0 -45
@@ -0,0 +1,15 @@
1
+ import React from 'react'
2
+ import { Link } from 'playbook-ui'
3
+
4
+ const LinkUnderline = (props) => (
5
+ <div>
6
+ <Link
7
+ href="#underline"
8
+ text="link example"
9
+ underline
10
+ {...props}
11
+ />
12
+ </div>
13
+ )
14
+
15
+ export default LinkUnderline
@@ -0,0 +1,16 @@
1
+ examples:
2
+
3
+ rails:
4
+ - link_color: Color
5
+ - link_underline: Underline
6
+ - link_icon: Icon
7
+ - link_disabled: Disabled
8
+ - link_tag: Tag
9
+
10
+
11
+ react:
12
+ - link_color: Color
13
+ - link_underline: Underline
14
+ - link_icon: Icon
15
+ - link_disabled: Disabled
16
+ - link_tag: Tag
@@ -0,0 +1,5 @@
1
+ export { default as LinkColor } from './_link_color.jsx'
2
+ export { default as LinkUnderline } from './_link_underline.jsx'
3
+ export { default as LinkIcon } from './_link_icon.jsx'
4
+ export { default as LinkDisabled } from './_link_disabled.jsx'
5
+ export { default as LinkTag } from './_link_tag.jsx'
@@ -0,0 +1,21 @@
1
+ <% link_content = proc do %>
2
+ <% if object.icon.present? %>
3
+ <%= pb_rails("icon", props: { icon: object.icon, fixed_width: true, size: "xs", margin_right: "xxs" }) %>
4
+ <% end %>
5
+ <%= object.content %>
6
+ <% if object.icon_right.present? %>
7
+ <%= pb_rails("icon", props: { icon: object.icon_right, fixed_width: true, size: "xs", margin_left: "xxs" }) %>
8
+ <% end %>
9
+ <% end %>
10
+
11
+ <% if object.tag == "a" %>
12
+ <%= pb_content_tag(object.tag, { href: object.href }) do %>
13
+ <%= link_content.call %>
14
+ <% end %>
15
+ <% else %>
16
+ <%= pb_content_tag(:a, { href: object.href }) do %>
17
+ <%= content_tag(object.tag) do %>
18
+ <%= link_content.call %>
19
+ <% end %>
20
+ <% end %>
21
+ <% end %>
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbLink
5
+ class Link < ::Playbook::KitBase
6
+ prop :color, type: Playbook::Props::Enum,
7
+ values: %w[default body muted destructive],
8
+ default: "default"
9
+ prop :disabled, type: Playbook::Props::Boolean,
10
+ default: false
11
+ prop :href
12
+ prop :icon
13
+ prop :icon_right
14
+ prop :tag, type: Playbook::Props::Enum,
15
+ values: %w[a h1 h2 h3 h4 h5 h6 p span div],
16
+ default: "a"
17
+ prop :text
18
+ prop :underline, type: Playbook::Props::Boolean,
19
+ default: false
20
+
21
+ def classname
22
+ generate_classname("pb_link_kit", color_class, underline_class, disabled_class)
23
+ end
24
+
25
+ def content
26
+ text
27
+ end
28
+
29
+ private
30
+
31
+ def color_class
32
+ color == "default" ? nil : color
33
+ end
34
+
35
+ def disabled_class
36
+ disabled ? "disabled" : nil
37
+ end
38
+
39
+ def underline_class
40
+ underline ? "underline" : nil
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,92 @@
1
+ import React from 'react'
2
+ import { ensureAccessible, renderKit, render, screen } from '../utilities/test-utils'
3
+
4
+ import { Link } from 'playbook-ui'
5
+
6
+ const link = 'https://www.google.com'
7
+
8
+ const props = {
9
+ data: { testid: 'default' },
10
+ href: link,
11
+ }
12
+
13
+ test('returns namespaced class name', () => {
14
+ const kit = renderKit(Link , props)
15
+ expect(kit).toBeInTheDocument()
16
+ expect(kit).toHaveClass('pb_link_kit')
17
+ expect(kit).toHaveAttribute('href', link)
18
+ })
19
+
20
+ it("should be accessible", async () => {
21
+ ensureAccessible(Link, props)
22
+ })
23
+
24
+ test('with colors', () => {
25
+ ['default', 'body', 'muted', 'destructive'].forEach((color) => {
26
+ const testId = `colors-test-${color}`
27
+ render(
28
+ <Link
29
+ color={color}
30
+ data={{ testid: testId }}
31
+ text="Test colors"
32
+ />
33
+ )
34
+
35
+ const kit = screen.getByTestId(testId)
36
+ expect(kit).toHaveClass(`pb_link_kit_${color}`)
37
+ })
38
+ })
39
+
40
+ test('disable prop', () => {
41
+ render(
42
+ <Link
43
+ data={{ testid: 'disable-test' }}
44
+ disabled
45
+ />
46
+ )
47
+
48
+ const kit = screen.getByTestId('disable-test')
49
+
50
+ expect(kit).toHaveClass('pb_link_kit_disabled')
51
+ })
52
+
53
+ test('underline prop', () => {
54
+ render(
55
+ <Link
56
+ data={{ testid: 'underline-test' }}
57
+ underline
58
+ />
59
+ )
60
+
61
+ const kit = screen.getByTestId('underline-test')
62
+
63
+ expect(kit).toHaveClass('pb_link_kit_underline')
64
+ })
65
+
66
+ test('adds icon', () => {
67
+ render(
68
+ <Link
69
+ data={{ testid: 'icon-test' }}
70
+ icon="arrow-up-right-from-square"
71
+ />
72
+ )
73
+
74
+ const kit = screen.getByTestId('icon-test')
75
+
76
+ const icon = kit.querySelector('.pb_icon_kit')
77
+ expect(icon).toBeInTheDocument();
78
+ })
79
+
80
+ test('adds icon right', () => {
81
+ render(
82
+ <Link
83
+ data={{ testid: 'icon-right-test' }}
84
+ iconRight="chevron-right"
85
+ />
86
+ )
87
+
88
+ const kit = screen.getByTestId('icon-right-test')
89
+
90
+ const icon = kit.querySelector('.pb_icon_kit')
91
+ expect(icon).toBeInTheDocument();
92
+ })
@@ -10,6 +10,24 @@
10
10
  $pb_selectable_card_indicator_size: 22px;
11
11
  $pb_selectable_card_border: 2px;
12
12
 
13
+ $pb_selectable_space_classes: (
14
+ xxs: $space_xxs,
15
+ xs: $space_xs,
16
+ sm: $space_sm,
17
+ md: $space_md,
18
+ lg: $space_lg,
19
+ xl: $space_xl,
20
+ );
21
+ $pb_selectable_paddings: (
22
+ p: "padding",
23
+ pr: "padding-right",
24
+ pl: "padding-left",
25
+ pt: "padding-top",
26
+ pb: "padding-bottom",
27
+ px: ("padding-left", "padding-right"),
28
+ py: ("padding-top", "padding-bottom")
29
+ );
30
+
13
31
  [class^=pb_selectable_card_kit] {
14
32
  display: block;
15
33
  margin-bottom: 0;
@@ -28,7 +46,6 @@ $pb_selectable_card_border: 2px;
28
46
  padding: $space_sm;
29
47
  margin-bottom: $space_sm;
30
48
  cursor: pointer;
31
- outline: 1px solid transparent;
32
49
 
33
50
  @media (hover:hover) {
34
51
  &:hover {
@@ -74,6 +91,7 @@ $pb_selectable_card_border: 2px;
74
91
 
75
92
  position: relative;
76
93
  @include pb_card_selected;
94
+ padding: calc(#{$space_sm} - 1px);
77
95
  transition-property: none;
78
96
  transition-duration: 0s;
79
97
 
@@ -88,6 +106,54 @@ $pb_selectable_card_border: 2px;
88
106
  background-color: $royal;
89
107
  }
90
108
  }
109
+
110
+ // Selected card has 1px more border
111
+ // Remove 1px so content does not "jump"
112
+ @each $position_name,
113
+ $position in $pb_selectable_paddings {
114
+ @each $space_name,
115
+ $space in $pb_selectable_space_classes {
116
+ ~ label.#{$position_name}_#{$space_name} {
117
+ @if type-of($position)=="list" {
118
+ @each $coordinate in $position {
119
+ #{$coordinate}: calc(#{$space} - 1px) !important;
120
+ }
121
+ }
122
+
123
+ @else {
124
+ #{$position}: calc(#{$space} - 1px) !important;
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+
132
+ &.display_input {
133
+ input[type="checkbox"],
134
+ input[type="radio"] {
135
+ &:checked {
136
+ ~label {
137
+ border-width: $pb_card_border_width;
138
+ outline: 1px solid $primary;
139
+ }
140
+
141
+ }
142
+ }
143
+
144
+ > label {
145
+ outline: 1px solid transparent;
146
+ padding: $space_sm;
147
+ }
148
+
149
+ &.dark {
150
+ input[type="checkbox"],
151
+ input[type="radio"] {
152
+ &:checked ~ label {
153
+ border-width: $pb_card_border_width;
154
+ outline: 1px solid $primary;
155
+ }
156
+ }
91
157
  }
92
158
  }
93
159
 
@@ -67,6 +67,7 @@ const SelectableCard = (props: SelectableCardProps) => {
67
67
  'disabled': disabled,
68
68
  'enabled': !disabled,
69
69
  }),
70
+ variant === 'displayInput' ? 'display_input' : '',
70
71
  { error },
71
72
  dark ? 'dark' : '',
72
73
  className
@@ -25,7 +25,7 @@
25
25
  <% end %>
26
26
  <div class="separator"></div>
27
27
  <div class="psuedo_separator"></div>
28
- <%= pb_rails("card", props: { padding: "sm", status: object.status, border_none: true }) do %>
28
+ <%= pb_rails("card", props: { padding: "sm", status: object.status, border_none: true, dark: object.dark }) do %>
29
29
  <% if content.nil? %>
30
30
  <%= pb_rails("body", props: { text: object.text }) %>
31
31
  <% else %>
@@ -25,7 +25,7 @@ module Playbook
25
25
 
26
26
  def classname
27
27
  [
28
- generate_classname_without_spacing("pb_selectable_card_kit", checked_class, enable_disabled_class),
28
+ generate_classname_without_spacing("pb_selectable_card_kit", checked_class, enable_disabled_class) + display_input_class,
29
29
  error_class,
30
30
  dark_props,
31
31
  ].compact.join(" ")
@@ -79,6 +79,10 @@ module Playbook
79
79
  def error_class
80
80
  error ? "error" : nil
81
81
  end
82
+
83
+ def display_input_class
84
+ variant == "display_input" ? " display_input" : ""
85
+ end
82
86
  end
83
87
  end
84
88
  end
@@ -1,3 +1,5 @@
1
+ @import "../tokens/colors";
2
+
1
3
  $font_family_base: "Power Centra", "Helvetica Neue", Helvetica, Arial, sans_serif !default;
2
4
 
3
5
  /* CLEAN UP AND REMOVE */
@@ -51,3 +53,36 @@ $boldest: 700 !default;
51
53
  $bolder: 700 !default;
52
54
  $light: 300 !default;
53
55
  $lighter: 300 !default;
56
+
57
+ /* Link Colors */
58
+ $pb_link_colors: (
59
+ default: $primary_action,
60
+ body: $text_lt_default,
61
+ muted: $text_lt_light,
62
+ destructive: $error,
63
+ );
64
+
65
+ $pb_link_hover_colors: (
66
+ default: $text_lt_default,
67
+ body: $primary_action,
68
+ muted: $text_lt_default,
69
+ destructive: $text_lt_default,
70
+ );
71
+
72
+ $pb_dark_link_colors: (
73
+ default: $active_dark,
74
+ body: $text_dk_default,
75
+ muted: $text_dk_light,
76
+ destructive: $error_dark,
77
+ );
78
+
79
+ $pb_dark_link_hover_colors: (
80
+ default: $text_dk_default,
81
+ body: $active_dark,
82
+ muted: $text_dk_default,
83
+ destructive: $text_dk_default,
84
+ );
85
+
86
+ @mixin pb_link($color: $primary_action) {
87
+ color: $color;
88
+ }