@descope/web-components-ui 3.5.1 → 3.7.0

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 (70) hide show
  1. package/dist/cjs/index.cjs.js +58 -7
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/index.esm.js +58 -7
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/umd/DescopeDev.js +1 -1
  6. package/dist/umd/DescopeDev.js.map +1 -1
  7. package/dist/umd/descope-user-attribute-index-js.js +4 -4
  8. package/dist/umd/descope-user-attribute-index-js.js.map +1 -1
  9. package/dist/umd/index.js +1 -1
  10. package/package.json +34 -33
  11. package/src/components/descope-user-attribute/UserAttributeClass.js +58 -7
  12. package/src/theme/components/userAttribute.js +1 -0
  13. package/stories/commonControls.js +359 -0
  14. package/stories/descope-alert.stories.js +102 -0
  15. package/stories/descope-button-multi-selection-group.stories.js +130 -0
  16. package/stories/descope-button-selection-group.stories.js +131 -0
  17. package/stories/descope-calendar.stories.js +115 -0
  18. package/stories/descope-checkbox.stories.js +74 -0
  19. package/stories/descope-code-snippet.stories.js +118 -0
  20. package/stories/descope-container.stories.js +96 -0
  21. package/stories/descope-date-field.stories.js +169 -0
  22. package/stories/descope-divider.stories.js +43 -0
  23. package/stories/descope-email-field.stories.js +109 -0
  24. package/stories/descope-grid.stories.js +218 -0
  25. package/stories/descope-hcaptcha.stories.js +29 -0
  26. package/stories/descope-hybrid-field.stories.js +151 -0
  27. package/stories/descope-loader-linear.stories.js +29 -0
  28. package/stories/descope-loader-radial.stories.js +29 -0
  29. package/stories/descope-logo.stories.js +40 -0
  30. package/stories/descope-mappings-field.stories.js +108 -0
  31. package/stories/descope-modal.stories.js +48 -0
  32. package/stories/descope-multi-select-combo-box.stories.js +183 -0
  33. package/stories/descope-new-password.stories.js +206 -0
  34. package/stories/descope-notification.stories.js +81 -0
  35. package/stories/descope-notp-image.stories.js +29 -0
  36. package/stories/descope-number-field.stories.js +83 -0
  37. package/stories/descope-passcode.stories.js +89 -0
  38. package/stories/descope-password.stories.js +89 -0
  39. package/stories/descope-phone-field.stories.js +137 -0
  40. package/stories/descope-phone-input-box-field.stories.js +128 -0
  41. package/stories/descope-policy-validation.stories.js +92 -0
  42. package/stories/descope-radio-group.stories.js +142 -0
  43. package/stories/descope-recaptcha.stories.js +38 -0
  44. package/stories/descope-saml-group-mappings.stories.js +109 -0
  45. package/stories/descope-scopes-list.stories.js +81 -0
  46. package/stories/descope-security-questions-setup.stories.js +125 -0
  47. package/stories/descope-security-questions-verify.stories.js +111 -0
  48. package/stories/descope-switch-toggle.stories.js +74 -0
  49. package/stories/descope-text-area.stories.js +77 -0
  50. package/stories/descope-text-field.stories.js +98 -0
  51. package/stories/descope-third-party-app-logo.stories.js +42 -0
  52. package/stories/descope-totp-image.stories.js +29 -0
  53. package/stories/descope-upload-file.stories.js +113 -0
  54. package/stories/descope-user-attribute.stories.js +103 -0
  55. package/stories/descope-user-auth-method.stories.js +77 -0
  56. package/stories/helpers.js +86 -0
  57. package/stories/icons/alert.svg +9 -0
  58. package/stories/icons/apple.svg +10 -0
  59. package/stories/icons/base64png.js +1 -0
  60. package/stories/icons/base64svg.js +1 -0
  61. package/stories/icons/button-icon.svg +3 -0
  62. package/stories/icons/errorMessageIconBase64.js +1 -0
  63. package/stories/icons/fulfilled-button-icon.svg +3 -0
  64. package/stories/icons/google.svg +25 -0
  65. package/stories/icons/method-icon.svg +3 -0
  66. package/stories/images/150x200.jpg +0 -0
  67. package/stories/images/800x150.jpg +0 -0
  68. package/stories/images/avatar.jpeg +0 -0
  69. package/stories/images/demo.jpg +0 -0
  70. package/stories/images/game.png +0 -0
@@ -0,0 +1,81 @@
1
+ import { componentName } from '../src/components/descope-scopes-list';
2
+ import { directionControl, sizeControl } from './commonControls';
3
+
4
+ const Template = ({
5
+ direction,
6
+ numberOfItems,
7
+ descText,
8
+ size,
9
+ variant,
10
+ gap,
11
+ dataSource,
12
+ readOnly,
13
+ 'full-width': fullWidth,
14
+ }) => `
15
+ <descope-scopes-list
16
+ st-host-direction="${direction || ''}"
17
+ size=${size || ''}
18
+ variant="${variant}"
19
+ st-gap="${gap}px"
20
+ readonly="${readOnly}"
21
+ full-width="${fullWidth}"
22
+ >
23
+ </descope-scopes-list>
24
+ `;
25
+
26
+ export default {
27
+ component: componentName,
28
+ title: 'descope-scopes-list',
29
+ decorators: [
30
+ (story, { args }) => {
31
+ const data = Array.from({ length: args.numberOfItems }, (_, i) => ({
32
+ desc: `${args.descText} ${i + 1}`,
33
+ id: `scope-${i}`,
34
+ required: i % 2 > 0,
35
+ }));
36
+
37
+ setTimeout(() => {
38
+ const ele = document.querySelector('descope-scopes-list');
39
+
40
+ if (args.dataSource === 'attribute') {
41
+ ele.setAttribute('data', JSON.stringify(data));
42
+ } else {
43
+ ele.data = data;
44
+ }
45
+ });
46
+
47
+ return story();
48
+ },
49
+ ],
50
+ argTypes: {
51
+ ...directionControl,
52
+ ...sizeControl,
53
+ variant: {
54
+ name: 'Variant',
55
+ options: ['checkbox', 'switch'],
56
+ control: { type: 'radio' },
57
+ },
58
+ gap: {
59
+ name: 'Gap',
60
+ control: { type: 'range', min: 0, max: 30, step: 1 },
61
+ },
62
+ dataSource: {
63
+ name: 'Data source',
64
+ options: ['attribute', 'parameter'],
65
+ control: { type: 'radio' },
66
+ },
67
+ },
68
+ };
69
+
70
+ export const Default = Template.bind({});
71
+
72
+ Default.args = {
73
+ size: 'sm',
74
+ numberOfItems: 10,
75
+ descText: 'Sample scope',
76
+ dataSource: 'attribute',
77
+ variant: 'checkbox',
78
+ gap: 10,
79
+ readOnly: false,
80
+ 'full-width': false,
81
+ };
@@ -0,0 +1,125 @@
1
+ import { componentName } from '../src/components/descope-security-questions-setup';
2
+ import {
3
+ directionControl,
4
+ errorMessageIconAttrs,
5
+ errorMessageIconControl,
6
+ inputLabelTypeControl,
7
+ sizeControl,
8
+ } from './commonControls';
9
+
10
+ const questions = [
11
+ { id: '1', text: 'What is your favorite color?' },
12
+ {
13
+ id: '2',
14
+ text: 'What is the name of the city where you were born?',
15
+ },
16
+ {
17
+ id: '3',
18
+ text: 'What is the name of your first pet?',
19
+ },
20
+ ];
21
+
22
+ const Template = ({
23
+ direction,
24
+ size,
25
+ gap,
26
+ count,
27
+ readOnly,
28
+ 'full-width': fullWidth,
29
+ questionLabel,
30
+ questionPlaceholder,
31
+ answerLabel,
32
+ answerPlaceholder,
33
+ 'label-type': labelType,
34
+ 'question-data-errormessage-value-missing': questionDataErrorMessageValueMissing,
35
+ 'answer-data-errormessage-value-missing': answerDataErrorMessageValueMissing,
36
+ errorMsgIcon,
37
+ }) => `
38
+ <style nonce="${window.DESCOPE_NONCE}">
39
+ .wrapper {
40
+ display: flex;
41
+ flex-direction: column;
42
+ gap: 20px;
43
+ }
44
+ </style>
45
+
46
+ <div class="wrapper">
47
+ <descope-security-questions-setup
48
+ st-host-direction="${direction || ''}"
49
+ size=${size || ''}
50
+ st-gap="${gap}px"
51
+ readonly="${readOnly}"
52
+ full-width="${fullWidth}"
53
+ count="${count}"
54
+ questions='${JSON.stringify(questions)}'
55
+ question-label="${questionLabel}"
56
+ question-placeholder="${questionPlaceholder}"
57
+ answer-label="${answerLabel}"
58
+ answer-placeholder="${answerPlaceholder}"
59
+ label-type="${labelType}"
60
+ question-data-errormessage-value-missing="${questionDataErrorMessageValueMissing || ''}"
61
+ answer-data-errormessage-value-missing="${answerDataErrorMessageValueMissing || ''}"
62
+ ${errorMsgIcon ? errorMessageIconAttrs : ''}
63
+
64
+ >
65
+ </descope-security-questions-setup>
66
+
67
+ <div>
68
+ <button id="submit">Validate</button>
69
+ </div>
70
+ </div>
71
+ `;
72
+
73
+ export default {
74
+ component: componentName,
75
+ title: 'descope-security-questions-setup',
76
+ decorators: [
77
+ (story) => {
78
+ setTimeout(() => {
79
+ const button = document.querySelector('#submit');
80
+ button.onclick = () => {
81
+ document.querySelector('descope-security-questions-setup').reportValidity();
82
+ };
83
+ });
84
+ return story();
85
+ },
86
+ ],
87
+ argTypes: {
88
+ ...directionControl,
89
+ ...sizeControl,
90
+ ...inputLabelTypeControl,
91
+ ...errorMessageIconControl,
92
+ 'question-data-errormessage-value-missing': {
93
+ name: 'Question Custom Error: Mandatory',
94
+ control: { type: 'text' },
95
+ },
96
+ 'answer-data-errormessage-value-missing': {
97
+ name: 'Answer Custom Error: Mandatory',
98
+ control: { type: 'text' },
99
+ },
100
+ gap: {
101
+ name: 'Gap',
102
+ control: { type: 'range', min: 0, max: 30, step: 1 },
103
+ },
104
+ count: {
105
+ name: 'Count',
106
+ control: { type: 'range', min: 1, max: questions.length, step: 1 },
107
+ },
108
+ },
109
+ };
110
+
111
+ export const Default = Template.bind({});
112
+
113
+ Default.args = {
114
+ size: 'sm',
115
+ gap: 10,
116
+ readOnly: false,
117
+ count: 3,
118
+ 'full-width': false,
119
+ questionLabel: 'Question',
120
+ questionPlaceholder: 'Question',
121
+ answerLabel: 'Answer',
122
+ answerPlaceholder: 'Answer',
123
+ 'question-data-errormessage-value-missing': 'Please fill out this field.',
124
+ 'answer-data-errormessage-value-missing': 'Please fill out this field.',
125
+ };
@@ -0,0 +1,111 @@
1
+ import { componentName } from '../src/components/descope-security-questions-verify';
2
+ import {
3
+ directionControl,
4
+ errorMessageIconAttrs,
5
+ errorMessageIconControl,
6
+ sizeControl,
7
+ } from './commonControls';
8
+
9
+ const questions = [
10
+ { id: '1', text: 'What is your favorite color?' },
11
+ {
12
+ id: '2',
13
+ text: 'What is the name of the city where you were born?',
14
+ },
15
+ {
16
+ id: '3',
17
+ text: 'What is the name of your first pet?',
18
+ },
19
+ ];
20
+
21
+ const Template = ({
22
+ direction,
23
+ size,
24
+ gap,
25
+ readOnly,
26
+ 'full-width': fullWidth,
27
+ answerPlaceholder,
28
+ 'question-mode': questionMode,
29
+ 'question-text-align': questionTextAlign,
30
+ 'answer-data-errormessage-value-missing': answerDataErrorMessageValueMissing,
31
+ errorMsgIcon,
32
+ }) => `
33
+ <style nonce="${window.DESCOPE_NONCE}">
34
+ .wrapper {
35
+ display: flex;
36
+ flex-direction: column;
37
+ gap: 20px;
38
+ }
39
+ </style>
40
+ <div class="wrapper">
41
+ <descope-security-questions-verify
42
+ st-host-direction="${direction || ''}"
43
+ size=${size || ''}
44
+ st-gap="${gap}px"
45
+ readonly="${readOnly}"
46
+ full-width="${fullWidth}"
47
+ questions='${JSON.stringify(questions)}'
48
+ answer-placeholder="${answerPlaceholder}"
49
+ question-mode="${questionMode}"
50
+ st-question-text-align="${questionTextAlign}"
51
+ answer-data-errormessage-value-missing="${answerDataErrorMessageValueMissing || ''}"
52
+ ${errorMsgIcon ? errorMessageIconAttrs : ''}
53
+ >
54
+ </descope-security-questions-verify>
55
+
56
+ <div>
57
+ <button id="submit">Validate</button>
58
+ </div>
59
+ </div>
60
+ `;
61
+
62
+ export default {
63
+ component: componentName,
64
+ title: 'descope-security-questions-verify',
65
+ decorators: [
66
+ (story) => {
67
+ setTimeout(() => {
68
+ const button = document.querySelector('#submit');
69
+ button.onclick = () => {
70
+ document.querySelector('descope-security-questions-verify').reportValidity();
71
+ };
72
+ });
73
+ return story();
74
+ },
75
+ ],
76
+ argTypes: {
77
+ ...directionControl,
78
+ ...sizeControl,
79
+ ...errorMessageIconControl,
80
+ gap: {
81
+ name: 'Gap',
82
+ control: { type: 'range', min: 0, max: 30, step: 1 },
83
+ },
84
+ 'question-mode': {
85
+ name: 'Mode',
86
+ options: ['none', 'primary', 'secondary', 'success', 'error'],
87
+ control: { type: 'select' },
88
+ },
89
+ 'question-text-align': {
90
+ name: 'Text Align',
91
+ options: ['left', 'center', 'right'],
92
+ control: { type: 'select' },
93
+ },
94
+ 'answer-data-errormessage-value-missing': {
95
+ name: 'Answer Custom Error: Mandatory',
96
+ control: { type: 'text' },
97
+ },
98
+ },
99
+ };
100
+
101
+ export const Default = Template.bind({});
102
+
103
+ Default.args = {
104
+ size: 'sm',
105
+ gap: 10,
106
+ readOnly: false,
107
+ 'full-width': false,
108
+ answerPlaceholder: 'Answer',
109
+ 'question-mode': 'primary',
110
+ 'answer-data-errormessage-value-missing': 'Please fill out this field.',
111
+ };
@@ -0,0 +1,74 @@
1
+ import { componentName } from '../src/components/boolean-fields/descope-switch-toggle';
2
+ import { toggleDefaultErrorMessageValueMissingDecorator, withForm } from './helpers';
3
+ import {
4
+ labelControl,
5
+ sizeControl,
6
+ fullWidthControl,
7
+ directionControl,
8
+ disabledControl,
9
+ requiredControl,
10
+ borderedControl,
11
+ checkboxValueControl,
12
+ errorMissingValueControl,
13
+ readOnlyControl,
14
+ errorMessageIconControl,
15
+ errorMessageIconAttrs,
16
+ defaultValueMissingControl,
17
+ } from './commonControls';
18
+
19
+ const Template = ({
20
+ label,
21
+ checked,
22
+ size,
23
+ bordered,
24
+ direction,
25
+ disabled,
26
+ required,
27
+ readonly,
28
+ 'full-width': fullWidth,
29
+ 'data-errormessage-value-missing': customErrorMissingValue,
30
+ errorMsgIcon,
31
+ }) =>
32
+ `
33
+ <descope-switch-toggle
34
+ size="${size}"
35
+ bordered="${bordered}"
36
+ label="${label || ''}"
37
+ checked="${checked || false}"
38
+ disabled="${disabled || false}"
39
+ required="${required || false}"
40
+ full-width="${fullWidth || false}"
41
+ readonly="${readonly || false}"
42
+ data-errormessage-value-missing="${customErrorMissingValue || ''}"
43
+ st-host-direction="${direction ?? ''}"
44
+ ${errorMsgIcon ? errorMessageIconAttrs : ''}
45
+ ></descope-switch-toggle>
46
+ `;
47
+
48
+ export default {
49
+ component: componentName,
50
+ title: 'descope-switch-toggle',
51
+ decorators: [toggleDefaultErrorMessageValueMissingDecorator, withForm],
52
+ argTypes: {
53
+ ...labelControl,
54
+ ...sizeControl,
55
+ ...fullWidthControl,
56
+ ...disabledControl,
57
+ ...requiredControl,
58
+ ...borderedControl,
59
+ ...checkboxValueControl,
60
+ ...errorMissingValueControl,
61
+ ...readOnlyControl,
62
+ ...directionControl,
63
+ ...errorMessageIconControl,
64
+ ...defaultValueMissingControl,
65
+ },
66
+ };
67
+
68
+ export const Default = Template.bind({});
69
+
70
+ Default.args = {
71
+ size: 'md',
72
+ bordered: true,
73
+ 'data-errormessage-value-missing': 'Please fill out this field.',
74
+ };
@@ -0,0 +1,77 @@
1
+ import { componentName } from '../src/components/descope-text-area';
2
+ import { toggleDefaultErrorMessageValueMissingDecorator, withForm } from './helpers';
3
+ import {
4
+ labelControl,
5
+ placeholderControl,
6
+ sizeControl,
7
+ fullWidthControl,
8
+ directionControl,
9
+ disabledControl,
10
+ readOnlyControl,
11
+ requiredControl,
12
+ borderedControl,
13
+ textAlignControl,
14
+ errorMissingValueControl,
15
+ errorMessageIconControl,
16
+ errorMessageIconAttrs,
17
+ defaultValueMissingControl,
18
+ } from './commonControls';
19
+
20
+ const Template = ({
21
+ label,
22
+ placeholder,
23
+ size,
24
+ bordered,
25
+ direction,
26
+ required,
27
+ disabled,
28
+ readonly,
29
+ 'full-width': fullWidth,
30
+ 'text-align': textAlign,
31
+ 'data-errormessage-value-missing': customErrorMissingValue,
32
+ errorMsgIcon,
33
+ }) => `
34
+ <descope-text-area
35
+ size="${size}"
36
+ bordered="${bordered}"
37
+ label="${label || ''}"
38
+ placeholder="${placeholder || ''}"
39
+ required="${required || false}"
40
+ full-width="${fullWidth || false}"
41
+ readonly="${readonly || false}"
42
+ disabled="${disabled || false}"
43
+ text-align="${textAlign || ''}"
44
+ data-errormessage-value-missing="${customErrorMissingValue || ''}"
45
+ st-host-direction="${direction ?? ''}"
46
+ ${errorMsgIcon ? errorMessageIconAttrs : ''}
47
+ ></descope-text-area>
48
+ `;
49
+
50
+ export default {
51
+ component: componentName,
52
+ title: 'descope-text-area',
53
+ decorators: [toggleDefaultErrorMessageValueMissingDecorator, withForm],
54
+ argTypes: {
55
+ ...labelControl,
56
+ ...placeholderControl,
57
+ ...sizeControl,
58
+ ...fullWidthControl,
59
+ ...disabledControl,
60
+ ...readOnlyControl,
61
+ ...requiredControl,
62
+ ...borderedControl,
63
+ ...errorMissingValueControl,
64
+ ...directionControl,
65
+ ...textAlignControl,
66
+ ...errorMessageIconControl,
67
+ ...defaultValueMissingControl,
68
+ },
69
+ };
70
+
71
+ export const Default = Template.bind({});
72
+
73
+ Default.args = {
74
+ size: 'md',
75
+ bordered: true,
76
+ 'data-errormessage-value-missing': 'Please fill out this field.',
77
+ };
@@ -0,0 +1,98 @@
1
+ import { componentName } from '../src/components/descope-text-field';
2
+ import { toggleDefaultErrorMessageValueMissingDecorator, withForm } from './helpers';
3
+ import {
4
+ labelControl,
5
+ placeholderControl,
6
+ sizeControl,
7
+ fullWidthControl,
8
+ directionControl,
9
+ disabledControl,
10
+ readOnlyControl,
11
+ requiredControl,
12
+ borderedControl,
13
+ textAlignControl,
14
+ errorMissingValueControl,
15
+ helperTextControl,
16
+ inputLabelTypeControl,
17
+ inputCopyToClipboardControl,
18
+ errorMessageIconControl,
19
+ errorMessageIconAttrs,
20
+ defaultValueMissingControl,
21
+ obfuscatedControl,
22
+ valueControl,
23
+ } from './commonControls';
24
+
25
+ const Template = ({
26
+ label,
27
+ placeholder,
28
+ size,
29
+ bordered,
30
+ direction,
31
+ required,
32
+ disabled,
33
+ readonly,
34
+ obfuscated,
35
+ value,
36
+ 'full-width': fullWidth,
37
+ 'text-align': textAlign,
38
+ 'helper-text': helperText,
39
+ 'data-errormessage-value-missing': customErrorMessage,
40
+ 'label-type': labelType,
41
+ 'copy-to-clipboard': copyToClipboard,
42
+ errorMsgIcon,
43
+ }) => `
44
+ <descope-text-field
45
+ size="${size}"
46
+ bordered="${bordered}"
47
+ label="${label || ''}"
48
+ disabled="${disabled || false}"
49
+ placeholder="${placeholder || ''}"
50
+ readonly="${readonly || false}"
51
+ required="${required || false}"
52
+ full-width="${fullWidth || false}"
53
+ text-align="${textAlign || ''}"
54
+ helper-text="${helperText || ''}"
55
+ data-errormessage-value-missing="${customErrorMessage || ''}"
56
+ st-host-direction="${direction ?? ''}"
57
+ label-type="${labelType || ''}"
58
+ copy-to-clipboard="${copyToClipboard || false}"
59
+ ${errorMsgIcon ? errorMessageIconAttrs : ''}
60
+ obfuscated="${obfuscated || false}"
61
+ value="${value || ''}"
62
+ ></descope-text-field>
63
+ `;
64
+
65
+ export default {
66
+ component: componentName,
67
+ title: 'descope-text-field',
68
+ decorators: [toggleDefaultErrorMessageValueMissingDecorator, withForm],
69
+ argTypes: {
70
+ ...labelControl,
71
+ ...placeholderControl,
72
+ ...inputLabelTypeControl,
73
+ ...sizeControl,
74
+ ...fullWidthControl,
75
+ ...disabledControl,
76
+ ...readOnlyControl,
77
+ ...requiredControl,
78
+ ...borderedControl,
79
+ ...errorMissingValueControl,
80
+ ...directionControl,
81
+ ...textAlignControl,
82
+ ...helperTextControl,
83
+ ...inputCopyToClipboardControl,
84
+ ...errorMessageIconControl,
85
+ ...defaultValueMissingControl,
86
+ ...obfuscatedControl,
87
+ ...valueControl,
88
+ },
89
+ };
90
+
91
+ export const Default = Template.bind({});
92
+
93
+ Default.args = {
94
+ bordered: true,
95
+ size: 'md',
96
+ 'copy-to-clipboard': false,
97
+ 'data-errormessage-value-missing': 'Please fill out this field.',
98
+ };
@@ -0,0 +1,42 @@
1
+ import {
2
+ componentName,
3
+ ThirdPartyAppLogoClass,
4
+ } from '../src/components/descope-third-party-app-logo/ThirdPartyAppLogoClass';
5
+ import { LogoClass } from '../src/components/descope-logo';
6
+ import { sizeControl } from './commonControls';
7
+ // images generated by https://via.assets.so/img.jpg?w=150&h=200&tc=red&bg=blue
8
+ import img150x200 from './images/150x200.jpg';
9
+ import img800x150 from './images/800x150.jpg';
10
+
11
+ const Template = ({ size, thirdPartyAppLogoUrl, companyLogoUrl }) => `
12
+ <style nonce="${window.DESCOPE_NONCE}">
13
+ descope-third-party-app-logo {
14
+ ${companyLogoUrl ? `${LogoClass.cssVarList.url}: url('${companyLogoUrl}');` : ''}
15
+ ${
16
+ thirdPartyAppLogoUrl
17
+ ? `${ThirdPartyAppLogoClass.cssVarList.thirdPartyAppLogo}: url('${thirdPartyAppLogoUrl}');`
18
+ : ''
19
+ }
20
+ }
21
+ </style>
22
+
23
+ <descope-third-party-app-logo
24
+ size="${size}"
25
+ ></descope-third-party-app-logo
26
+ `;
27
+
28
+ export default {
29
+ component: componentName,
30
+ title: 'descope-third-party-app-logo',
31
+ argTypes: {
32
+ ...sizeControl,
33
+ },
34
+ };
35
+
36
+ export const Default = Template.bind({});
37
+
38
+ Default.args = {
39
+ thirdPartyAppLogoUrl: img800x150,
40
+ companyLogoUrl: img150x200,
41
+ size: 'md',
42
+ };
@@ -0,0 +1,29 @@
1
+ import { componentName } from '../src/components/descope-totp-image';
2
+ import { customHeightControl, customWidthControl } from './commonControls';
3
+
4
+ const Template = ({ 'st-width': customWidth, 'st-height': customHeight }) => `
5
+ <descope-totp-image
6
+ st-height="${customHeight || ''}"
7
+ st-width="${customWidth || ''}"
8
+ ></descope-totp-image>
9
+ `;
10
+
11
+ export default {
12
+ component: componentName,
13
+ title: 'descope-totp-image',
14
+ parameters: {
15
+ panelPosition: 'right',
16
+ controls: { expanded: true },
17
+ },
18
+ argTypes: {
19
+ ...customHeightControl,
20
+ ...customWidthControl,
21
+ },
22
+ };
23
+
24
+ export const Default = Template.bind({});
25
+
26
+ Default.args = {
27
+ 'st-width': '',
28
+ 'st-height': '',
29
+ };