playbook_ui 11.13.0 → 11.15.0.pre.alpha.table1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +39 -0
  3. data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_header.tsx +3 -2
  4. data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +1 -0
  5. data/app/pb_kits/playbook/pb_dialog/dialog_header.rb +4 -0
  6. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height.jsx +2 -2
  7. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_scrollable.html.erb +13 -1
  8. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_scrollable.jsx +32 -8
  9. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_scrollable.md +5 -2
  10. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_sizes.jsx +2 -2
  11. data/app/pb_kits/playbook/pb_nav/_subtle_mixin.scss +3 -0
  12. data/app/pb_kits/playbook/pb_passphrase/_passphrase.jsx +56 -97
  13. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.html.erb +145 -1
  14. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.jsx +127 -3
  15. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.md +11 -2
  16. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.html.erb +136 -0
  17. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.jsx +90 -8
  18. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.md +5 -0
  19. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_confirmation.html.erb +51 -0
  20. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_confirmation.jsx +39 -0
  21. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.html.erb +0 -2
  22. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.jsx +6 -20
  23. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.html.erb +2 -2
  24. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.jsx +1 -1
  25. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.html.erb +318 -5
  26. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +134 -48
  27. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.md +11 -5
  28. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.html.erb +123 -0
  29. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.jsx +96 -20
  30. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.md +6 -2
  31. data/app/pb_kits/playbook/pb_passphrase/docs/example.yml +4 -0
  32. data/app/pb_kits/playbook/pb_passphrase/docs/index.js +1 -0
  33. data/app/pb_kits/playbook/pb_passphrase/passphrase.html.erb +1 -1
  34. data/app/pb_kits/playbook/pb_passphrase/passphrase.rb +5 -9
  35. data/app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx +0 -47
  36. data/app/pb_kits/playbook/pb_table/styles/_all.scss +0 -1
  37. data/app/pb_kits/playbook/pb_table/styles/_desktop_collapse.scss +4 -0
  38. data/app/pb_kits/playbook/pb_table/styles/_hover.scss +28 -25
  39. data/app/pb_kits/playbook/pb_table/styles/_mobile.scss +4 -0
  40. data/app/pb_kits/playbook/pb_table/styles/_mobile_collapse.scss +4 -0
  41. data/app/pb_kits/playbook/pb_table/styles/_single-line.scss +0 -1
  42. data/app/pb_kits/playbook/pb_table/styles/_table-card.scss +0 -27
  43. data/app/pb_kits/playbook/pb_table/styles/_tablet_collapse.scss +4 -0
  44. data/lib/playbook/version.rb +2 -2
  45. metadata +9 -9
  46. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.md +0 -1
  47. data/app/pb_kits/playbook/pb_passphrase/passwordStrength.js +0 -55
  48. data/app/pb_kits/playbook/pb_passphrase/useHaveIBeenPwned.js +0 -52
  49. data/app/pb_kits/playbook/pb_passphrase/useZxcvbn.js +0 -58
  50. data/app/pb_kits/playbook/pb_table/styles/_as-cards.scss +0 -49
@@ -0,0 +1,123 @@
1
+ <%= pb_rails("passphrase", props: { label: "Passphrase", classname: "passphrase_change" }) %>
2
+
3
+ <%= pb_rails("progress_simple", props: { percent: 0, id: "bar_change" }) %>
4
+
5
+ <%= pb_rails("caption", props: { size: 'xs', text: "hello", id: "caption_change" }) %>
6
+
7
+ <%= pb_rails("text_input", props: { label: "Passphrase Strength", value: "0", disabled: true, id: "calc_strength_change" }) %>
8
+
9
+
10
+ <%= javascript_tag do %>
11
+ window.addEventListener("DOMContentLoaded", () => {
12
+
13
+ // variables for the kits you are targeting
14
+ const passphrase = document.querySelector(".passphrase_change").querySelector("input")
15
+ const calcStrength = document.querySelector("#calc_strength_change")
16
+ const barVariant = document.getElementById("bar_change")
17
+ const barPercent = document.getElementById("bar_change").querySelector("div")
18
+ const caption = document.getElementById("caption_change")
19
+
20
+ // hide the bar and captions
21
+ barVariant.style.display = 'none';
22
+ barPercent.style.display = 'none';
23
+ caption.style.display = 'none';
24
+
25
+
26
+ const handleStrengthCalculation = (settings) => {
27
+ const {
28
+ passphrase = "",
29
+ common = false,
30
+ isPwned = false,
31
+ averageThreshold = 2,
32
+ minLength = 12,
33
+ strongThreshold = 3,
34
+ } = settings
35
+
36
+ const resultByScore = {
37
+ 0: {
38
+ variant: 'negative',
39
+ label: '',
40
+ percent: 0,
41
+ },
42
+ 1: {
43
+ variant: 'negative',
44
+ label: 'This passphrase is too common',
45
+ percent: 25,
46
+ },
47
+ 2: {
48
+ variant: 'negative',
49
+ label: 'Too weak',
50
+ percent: 25,
51
+ },
52
+ 3: {
53
+ variant: 'warning',
54
+ label: 'Almost there, keep going!',
55
+ percent: 50,
56
+ },
57
+ 4: {
58
+ variant: 'positive',
59
+ label: 'Success! Strong passphrase',
60
+ percent: 100,
61
+ }
62
+ }
63
+
64
+ const { score } = zxcvbn(passphrase);
65
+
66
+ const noPassphrase = passphrase.length <= 0
67
+ const commonPassphrase = common || isPwned
68
+ const weakPassphrase = passphrase.length < minLength || score < averageThreshold
69
+ const averagePassphrase = score < strongThreshold
70
+ const strongPassphrase = score >= strongThreshold
71
+
72
+ if (noPassphrase) {
73
+ return {...resultByScore[0], score}
74
+ } else if (commonPassphrase) {
75
+ return {...resultByScore[1], score}
76
+ } else if (weakPassphrase) {
77
+ return {...resultByScore[2], score}
78
+ } else if (averagePassphrase){
79
+ return {...resultByScore[3], score}
80
+ } else if (strongPassphrase) {
81
+ return {...resultByScore[4], score}
82
+ }
83
+ }
84
+
85
+ // event listeners attached to the input field
86
+ passphrase.addEventListener('input', (e) => {
87
+ const passphrase = e.target.value;
88
+
89
+ // pass in passphrase to the handleStrengthCalculation and set that equal to result variable
90
+ const result = handleStrengthCalculation({passphrase: passphrase})
91
+
92
+ // set the value of the text_input to the score
93
+ calcStrength.value = result.score
94
+
95
+ // conditional statment to show or hide progress_simple bar and caption if user has entered a password
96
+ if (passphrase) {
97
+ barVariant.style.display = 'block';
98
+
99
+ barPercent.style.display = 'block';
100
+
101
+ caption.style.display = 'block';
102
+ } else {
103
+ barVariant.style.display = 'none';
104
+
105
+ barPercent.style.display = 'none';
106
+
107
+ caption.style.display = 'none';
108
+ }
109
+
110
+ // set the width of the progress_simple kit
111
+ barPercent.style.width = result.percent.toString()+ "%"
112
+
113
+
114
+ // set the variant of the progress_simple kit
115
+ barVariant.setAttribute("class", "pb_progress_simple_kit_"+ result.variant +"_left");
116
+
117
+
118
+ // set the text of the caption kit
119
+ caption.textContent = result.label
120
+ });
121
+
122
+ })
123
+ <% end %>
@@ -1,34 +1,110 @@
1
1
  import React, { useState } from 'react'
2
+ import { useEffect } from 'react'
2
3
 
3
- import Passphrase from '../_passphrase'
4
-
5
- import TextInput from '../../pb_text_input/_text_input'
4
+ import { Caption, Passphrase, ProgressSimple, TextInput} from '../..'
5
+ import zxcvbn from 'zxcvbn'
6
6
 
7
7
  const PassphraseStrengthChange = (props) => {
8
8
  const [input, setInput] = useState('')
9
+ const [checkStrength, setCheckStrength] = useState({
10
+ label: '',
11
+ percent: 0,
12
+ score: 0,
13
+ variant: ''
14
+ })
9
15
 
10
16
  const handleChange = (e) => setInput(e.target.value)
11
17
 
12
- const [strength, setStrength] = useState(0)
13
- const handleStrengthChange = (str) => setStrength(str)
18
+ const handleStrengthCalculation = (settings) => {
19
+ const {
20
+ passphrase = "",
21
+ common = false,
22
+ isPwned = false,
23
+ averageThreshold = 2,
24
+ minLength = 12,
25
+ strongThreshold = 3,
26
+ } = settings
27
+
28
+ const resultByScore = {
29
+ 0: {
30
+ variant: 'negative',
31
+ label: '',
32
+ percent: 0,
33
+ },
34
+ 1: {
35
+ variant: 'negative',
36
+ label: 'This passphrase is too common',
37
+ percent: 25,
38
+ },
39
+ 2: {
40
+ variant: 'negative',
41
+ label: 'Too weak',
42
+ percent: 25,
43
+ },
44
+ 3: {
45
+ variant: 'warning',
46
+ label: 'Almost there, keep going!',
47
+ percent: 50,
48
+ },
49
+ 4: {
50
+ variant: 'positive',
51
+ label: 'Success! Strong passphrase',
52
+ percent: 100,
53
+ }
54
+ }
55
+
56
+ const { score } = zxcvbn(passphrase);
57
+
58
+ const noPassphrase = passphrase.length <= 0
59
+ const commonPassphrase = common || isPwned
60
+ const weakPassphrase = passphrase.length < minLength || score < averageThreshold
61
+ const averagePassphrase = score < strongThreshold
62
+ const strongPassphrase = score >= strongThreshold
63
+
64
+ if (noPassphrase) {
65
+ return {...resultByScore[0], score}
66
+ } else if (commonPassphrase) {
67
+ return {...resultByScore[1], score}
68
+ } else if (weakPassphrase) {
69
+ return {...resultByScore[2], score}
70
+ } else if (averagePassphrase){
71
+ return {...resultByScore[3], score}
72
+ } else if (strongPassphrase) {
73
+ return {...resultByScore[4], score}
74
+ }
75
+ }
76
+
77
+ useEffect(() => {
78
+ const result = handleStrengthCalculation({ passphrase: input })
79
+ setCheckStrength({...result})
80
+ },[input])
14
81
 
15
82
  return (
16
83
  <>
17
- <div>
18
- <Passphrase
19
- label="Passphrase"
20
- onChange={handleChange}
21
- onStrengthChange={handleStrengthChange}
22
- value={input}
23
- {...props}
24
- />
25
- <TextInput
26
- disabled
27
- label="Passphrase Strength"
28
- readOnly
29
- value={strength}
30
- />
31
- </div>
84
+ <Passphrase
85
+ label="Passphrase"
86
+ onChange={handleChange}
87
+ value={input}
88
+ {...props}
89
+ />
90
+ {input.length > 0 && (
91
+ <>
92
+ <ProgressSimple
93
+ percent={checkStrength.percent}
94
+ variant={checkStrength.variant}
95
+ />
96
+ <Caption size='xs'
97
+ text={checkStrength.label}
98
+ />
99
+ </>
100
+ )}
101
+ <TextInput
102
+ disabled
103
+ label="Passphrase Strength"
104
+ marginTop="xl"
105
+ readOnly
106
+ value={checkStrength.score}
107
+ />
32
108
  </>
33
109
  )
34
110
  }
@@ -1,3 +1,7 @@
1
- As the strength of the entered passphrase changes, the optional `onStrengthChange` callback is called with the new strength value. This exposes the calculated strength.
1
+ Strength is calculated on a 0-4 scale by the <a href="https://github.com/dropbox/zxcvbn" target="_blank"> Zxcvbn package</a>.
2
2
 
3
- Strength is calculated on a 0-4 scale by the <a href="https://github.com/dropbox/zxcvbn" target="_blank"> Zxcvbn package</a>
3
+ <div class="pb_pill_kit_warning"><div class="pb_title_kit_size_4 pb_pill_text">Disclaimer</div></div>
4
+
5
+ This example depends on the `zxcvbn` library.
6
+
7
+ You can use any library to achieve the same result, this example only intends to show how to add more features to the `Passphrase` kit.
@@ -2,13 +2,17 @@ examples:
2
2
 
3
3
  rails:
4
4
  - passphrase_default: Default
5
+ - passphrase_confirmation: Confirmation
5
6
  - passphrase_meter_settings: Meter Settings
6
7
  - passphrase_input_props: Input Props
7
8
  - passphrase_tips: Tips
9
+ - passphrase_strength_change: Strength Change
10
+ - passphrase_common: Common Passphrases
8
11
  - passphrase_breached: Breached Passphrases
9
12
 
10
13
  react:
11
14
  - passphrase_default: Default
15
+ - passphrase_confirmation: Confirmation
12
16
  - passphrase_meter_settings: Meter Settings
13
17
  - passphrase_input_props: Input Props
14
18
  - passphrase_tips: Tips
@@ -1,4 +1,5 @@
1
1
  export { default as PassphraseDefault } from './_passphrase_default.jsx'
2
+ export { default as PassphraseConfirmation } from './_passphrase_confirmation.jsx'
2
3
  export { default as PassphraseMeterSettings } from './_passphrase_meter_settings'
3
4
  export { default as PassphraseInputProps } from './_passphrase_input_props'
4
5
  export { default as PassphraseTips } from './_passphrase_tips'
@@ -1 +1 @@
1
- <%= react_component('Passphrase', object.passphrase_options) %>
1
+ <%= react_component('Passphrase', object.passphrase_options, class: object.classname,) %>
@@ -3,15 +3,14 @@
3
3
  module Playbook
4
4
  module PbPassphrase
5
5
  class Passphrase < Playbook::KitBase
6
- prop :average_threshold
7
- prop :check_pwned
8
6
  prop :confirmation, type: Playbook::Props::Boolean, default: false
9
7
  prop :input_props, type: Playbook::Props::Hash, default: {}
10
8
  prop :label
11
- prop :min_length
12
- prop :show_tips_below
13
- prop :strong_threshold
9
+ prop :show_tips_below, type: Playbook::Props::Enum,
10
+ values: %w[always xs sm md lg xl],
11
+ default: "always"
14
12
  prop :tips, type: Playbook::Props::Array, default: []
13
+ prop :value, type: Playbook::Props::String
15
14
 
16
15
  def classname
17
16
  generate_classname("pb_passphrase")
@@ -19,18 +18,15 @@ module Playbook
19
18
 
20
19
  def passphrase_options
21
20
  {
22
- checkPwned: check_pwned,
23
21
  dark: dark,
24
22
  id: id,
25
- averageThreshold: average_threshold,
26
23
  confirmation: confirmation,
27
24
  inputProps: input_props,
28
25
  label: label,
29
- minLength: min_length,
30
26
  showTipsBelow: show_tips_below,
31
- strongThreshold: strong_threshold,
32
27
  tips: tips,
33
28
  uncontrolled: true,
29
+ value: value,
34
30
  }.compact
35
31
  end
36
32
  end
@@ -64,41 +64,6 @@ test('passes input props to input element', () => {
64
64
  expect(input).toBeDisabled()
65
65
  })
66
66
 
67
- test('progress bar is invisible when value is empty', () => {
68
- render(
69
- <Passphrase
70
- data={{ testid: testId }}
71
- />
72
- )
73
-
74
- const kit = screen.getByTestId(testId)
75
- expect(kit.querySelector('[class^=pb_progress_simple_wrapper]')).toHaveClass('progress-empty-input')
76
- })
77
-
78
- test('progress bar is visible when value is not empty', () => {
79
- render(
80
- <Passphrase
81
- data={{ testid: testId }}
82
- value="test_password_input"
83
- />
84
- )
85
-
86
- const kit = screen.getByTestId(testId)
87
- expect(kit.querySelector('[class^=pb_progress_simple_wrapper]')).not.toHaveClass('progress-empty-input')
88
- })
89
-
90
- test('no progress bar is show when confirmation is true', () => {
91
- render(
92
- <Passphrase
93
- confirmation
94
- data={{ testid: testId }}
95
- />
96
- )
97
-
98
- const kit = screen.getByTestId(testId)
99
- expect(kit.querySelector('[class^=pb_progress_simple_wrapper]')).toBeNull()
100
- })
101
-
102
67
  test('popover target shows when tips are given', () => {
103
68
  render(
104
69
  <Passphrase
@@ -121,15 +86,3 @@ test('popover target does not show when tips are not given', () => {
121
86
  const kit = screen.getByTestId(testId)
122
87
  expect(kit.querySelector('[class^=pb_popover_reference_wrapper]')).toBeNull()
123
88
  })
124
-
125
- test('data-strength attribute exposes strength of password', () => {
126
- render(
127
- <Passphrase
128
- data={{ testid: testId }}
129
- value="correct horse battery staple"
130
- />
131
- )
132
-
133
- const kit = screen.getByTestId(testId)
134
- expect(parseInt(kit.getAttribute('data-strength'))).toBeGreaterThan(0)
135
- })
@@ -9,7 +9,6 @@
9
9
  @import "side_highlight";
10
10
  @import "alignment";
11
11
  @import "hover";
12
- @import "as-cards";
13
12
  @import "single-line";
14
13
  @import "table-dark";
15
14
  @import "mobile";
@@ -81,6 +81,10 @@
81
81
  border-left-width: 1px !important;
82
82
  border-right-width: 1px !important;
83
83
  border-top-width: 1px !important;
84
+ &:after {
85
+ height: 0;
86
+ background-color: transparent;
87
+ }
84
88
 
85
89
  &:first-child {
86
90
  border-radius: $border_rad_light $border_rad_light 0 0 !important;
@@ -12,39 +12,42 @@ $transition-speed: 0.2s;
12
12
  tr {
13
13
  box-shadow: 0 0 0 $white;
14
14
  transition: box-shadow $transition-speed ease;
15
-
16
15
  td {
17
16
  border-top-color: transparent;
18
- border-top-width: 1px !important;
19
- transition: all $transition-speed ease;
17
+ border-top-width: 0;
18
+ transition: all $transition-speed ease;
20
19
  }
21
-
22
- @media (hover:hover) {
20
+ @media (hover:hover) {
21
+ td {
22
+ position: relative;
23
+ &:after {
24
+ transition: background-color $transition-speed ease, height $transition-speed ease;
25
+ content: "";
26
+ position: absolute;
27
+ display: block;
28
+ top: -1px;
29
+ left: 0;
30
+ right: 0;
31
+ height: 0;
32
+ background-color: transparent;
33
+ }
34
+ &:first-child:after {
35
+ left: -1px;
36
+ }
37
+ &:last-child:after {
38
+ right: -1px;
39
+ }
40
+ }
23
41
  &:hover {
24
42
  box-shadow: 0 2px 10px 0 rgba($slate, $opacity-6);
25
-
26
43
  td {
27
- background: $white;
28
44
  border-color: darken($border_light, 10%);
29
- border-top-width: 1px;
45
+ border-top-width: 0;
30
46
  border-top-color: transparent;
31
- }
32
- }
33
- }
34
- }
35
- }
36
- &.as-cards {
37
- tbody {
38
- tr {
39
- td {
40
- border-top-color: $border_light;
41
- border-top-width: 1px;
42
- }
43
- @media (hover:hover) {
44
- &:hover {
45
- td {
46
- border-top-width: 1px;
47
- border-top-color: $border_light;
47
+ &:after {
48
+ transition: background-color $transition-speed ease, height $transition-speed ease;
49
+ background-color: darken($border_light, 10%);
50
+ height: 1px;
48
51
  }
49
52
  }
50
53
  }
@@ -81,6 +81,10 @@
81
81
  border-left-width: 1px !important;
82
82
  border-right-width: 1px !important;
83
83
  border-top-width: 1px !important;
84
+ &:after {
85
+ height: 0;
86
+ background-color: transparent;
87
+ }
84
88
 
85
89
  &:first-child {
86
90
  border-radius: $border_rad_light $border_rad_light 0 0 !important;
@@ -81,6 +81,10 @@
81
81
  border-left-width: 1px !important;
82
82
  border-right-width: 1px !important;
83
83
  border-top-width: 1px !important;
84
+ &:after {
85
+ height: 0;
86
+ background-color: transparent;
87
+ }
84
88
 
85
89
  &:first-child {
86
90
  border-radius: $border_rad_light $border_rad_light 0 0 !important;
@@ -9,7 +9,6 @@
9
9
  td {
10
10
  white-space: nowrap;
11
11
  text-overflow: ellipsis;
12
- overflow: hidden;
13
12
 
14
13
  & > * {
15
14
  &:not(.btn, br) {
@@ -57,33 +57,6 @@
57
57
  }
58
58
  }
59
59
  }
60
-
61
- &.as-cards {
62
- border: 1px solid $border_light;
63
- border-radius: 4px;
64
-
65
- thead {
66
- tr {
67
- margin: $space-xs 0 0;
68
- padding: 0 $space-xs;
69
- border-bottom: 1px solid $border_light;
70
-
71
- th {
72
- border-width: 0;
73
- }
74
- }
75
- }
76
- tbody {
77
- tr {
78
- margin: $space-xs;
79
- width: calc(100% - #{$space-xs}*2);
80
-
81
- td {
82
- border-top-width: 1px;
83
- }
84
- }
85
- }
86
- }
87
60
  }
88
61
  }
89
62
  }
@@ -81,6 +81,10 @@
81
81
  border-left-width: 1px !important;
82
82
  border-right-width: 1px !important;
83
83
  border-top-width: 1px !important;
84
+ &:after {
85
+ height: 0;
86
+ background-color: transparent;
87
+ }
84
88
 
85
89
  &:first-child {
86
90
  border-radius: $border_rad_light $border_rad_light 0 0 !important;
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- PREVIOUS_VERSION = "11.12.1"
5
- VERSION = "11.13.0"
4
+ PREVIOUS_VERSION = "11.15.0"
5
+ VERSION = "11.15.0.pre.alpha.table1"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.13.0
4
+ version: 11.15.0.pre.alpha.table1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-12-06 00:00:00.000000000 Z
12
+ date: 2022-12-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -1465,16 +1465,20 @@ files:
1465
1465
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.html.erb
1466
1466
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.jsx
1467
1467
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.md
1468
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.html.erb
1468
1469
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.jsx
1470
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.md
1471
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_confirmation.html.erb
1472
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_confirmation.jsx
1469
1473
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.html.erb
1470
1474
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.jsx
1471
- - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_default.md
1472
1475
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.html.erb
1473
1476
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.jsx
1474
1477
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_input_props.md
1475
1478
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.html.erb
1476
1479
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx
1477
1480
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.md
1481
+ - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.html.erb
1478
1482
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.jsx
1479
1483
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.md
1480
1484
  - app/pb_kits/playbook/pb_passphrase/docs/_passphrase_tips.html.erb
@@ -1485,9 +1489,6 @@ files:
1485
1489
  - app/pb_kits/playbook/pb_passphrase/passphrase.html.erb
1486
1490
  - app/pb_kits/playbook/pb_passphrase/passphrase.rb
1487
1491
  - app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx
1488
- - app/pb_kits/playbook/pb_passphrase/passwordStrength.js
1489
- - app/pb_kits/playbook/pb_passphrase/useHaveIBeenPwned.js
1490
- - app/pb_kits/playbook/pb_passphrase/useZxcvbn.js
1491
1492
  - app/pb_kits/playbook/pb_person/_person.jsx
1492
1493
  - app/pb_kits/playbook/pb_person/_person.scss
1493
1494
  - app/pb_kits/playbook/pb_person/docs/_description.md
@@ -1872,7 +1873,6 @@ files:
1872
1873
  - app/pb_kits/playbook/pb_table/index.js
1873
1874
  - app/pb_kits/playbook/pb_table/styles/_alignment.scss
1874
1875
  - app/pb_kits/playbook/pb_table/styles/_all.scss
1875
- - app/pb_kits/playbook/pb_table/styles/_as-cards.scss
1876
1876
  - app/pb_kits/playbook/pb_table/styles/_content.scss
1877
1877
  - app/pb_kits/playbook/pb_table/styles/_desktop_collapse.scss
1878
1878
  - app/pb_kits/playbook/pb_table/styles/_headers.scss
@@ -2358,9 +2358,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
2358
2358
  version: '0'
2359
2359
  required_rubygems_version: !ruby/object:Gem::Requirement
2360
2360
  requirements:
2361
- - - ">="
2361
+ - - ">"
2362
2362
  - !ruby/object:Gem::Version
2363
- version: '0'
2363
+ version: 1.3.1
2364
2364
  requirements: []
2365
2365
  rubygems_version: 3.3.7
2366
2366
  signing_key:
@@ -1 +0,0 @@
1
- Use the `confirmation` prop to only include the label and show/hide icon.