@salesforcedevs/docs-components 1.28.1-mti → 1.28.2-paymentcard-gc-alpha1

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.
package/lwc.config.json CHANGED
@@ -18,8 +18,8 @@
18
18
  "doc/header",
19
19
  "doc/heading",
20
20
  "doc/headingAnchor",
21
- "doc/mtIndicator",
22
21
  "doc/overview",
22
+ "doc/paymentCard",
23
23
  "doc/phase",
24
24
  "doc/redocReference",
25
25
  "doc/specificationContent",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/docs-components",
3
- "version": "1.28.1-mti",
3
+ "version": "1.28.2-paymentcard-gc-alpha1",
4
4
  "description": "Docs Lightning web components for DSC",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
@@ -26,5 +26,5 @@
26
26
  "@types/lodash.uniqby": "4.7.9"
27
27
  },
28
28
  "gitHead": "4629fdd9ca18a13480044ad43515b91945d16aad",
29
- "stableVersion": "1.28.0"
29
+ "stableVersion": "1.28.2"
30
30
  }
@@ -0,0 +1,118 @@
1
+ @import "dxHelpers/reset";
2
+ @import "dxHelpers/text";
3
+
4
+ :host {
5
+ display: block;
6
+ max-width: 520px;
7
+ margin: 2rem auto;
8
+ min-height: 400px;
9
+ border-radius: 8px;
10
+ padding: 1rem;
11
+ --x-deg: 0deg;
12
+ --y-deg: 0deg;
13
+ --bg-x: 50%;
14
+ --bg-y: 50%;
15
+ }
16
+
17
+ .container {
18
+ perspective: 1000px;
19
+ display: flex;
20
+ justify-content: center;
21
+ align-items: center;
22
+ padding: 50px;
23
+ border-radius: 8px;
24
+ }
25
+
26
+ .card {
27
+ width: 400px;
28
+ height: 250px;
29
+ background: rgba(255, 255, 255, 0.07);
30
+ backdrop-filter: blur(16px);
31
+ -webkit-backdrop-filter: blur(16px);
32
+ border-radius: 16px;
33
+ border: 1px solid rgba(255, 255, 255, 0.2);
34
+ position: relative;
35
+ padding: 30px;
36
+ display: flex;
37
+ flex-direction: column;
38
+ justify-content: space-between;
39
+ box-shadow: 0 25px 50px rgba(0, 0, 0, 0.4);
40
+ color: white;
41
+ transform: rotateX(var(--x-deg)) rotateY(var(--y-deg));
42
+ }
43
+
44
+ .card.debit {
45
+ background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
46
+ }
47
+
48
+ .card.credit {
49
+ background: linear-gradient(135deg, #b8860b 0%, #daa520 50%, #b8860b 100%);
50
+ border-color: rgba(255, 215, 0, 0.4);
51
+ color: #1a1508;
52
+ }
53
+
54
+ .card.credit .label {
55
+ color: rgba(26, 21, 8, 0.85);
56
+ }
57
+
58
+ .card-label,
59
+ .chip,
60
+ .number,
61
+ .details {
62
+ position: relative;
63
+ z-index: 1;
64
+ }
65
+
66
+ .card-label {
67
+ font-family: var(--dx-g-font-display, system-ui, sans-serif);
68
+ font-size: var(--dx-g-spacing-md, 0.875rem);
69
+ font-weight: 600;
70
+ line-height: 1.25;
71
+ }
72
+
73
+ .card::before {
74
+ content: '';
75
+ position: absolute;
76
+ inset: 0;
77
+ z-index: 0;
78
+ background: linear-gradient(125deg,
79
+ transparent 0%,
80
+ rgba(255, 255, 255, 0.1) 45%,
81
+ rgba(255, 255, 255, 0.3) 50%,
82
+ rgba(255, 255, 255, 0.1) 55%,
83
+ transparent 100%);
84
+ background-size: 200% 200%;
85
+ background-position: var(--bg-x) var(--bg-y);
86
+ border-radius: inherit;
87
+ pointer-events: none;
88
+ }
89
+
90
+ .chip {
91
+ width: 50px;
92
+ height: 40px;
93
+ background: linear-gradient(135deg, #fceabb 0%, #f8b500 50%, #fceabb 100%);
94
+ border-radius: 6px;
95
+ }
96
+
97
+ .number,
98
+ .value {
99
+ font-family: 'Courier New', monospace;
100
+ }
101
+
102
+ .number {
103
+ font-size: 1.6rem;
104
+ letter-spacing: 2px;
105
+ margin-top: 20px;
106
+ }
107
+
108
+ .label {
109
+ display: block;
110
+ font-size: 0.65rem;
111
+ text-transform: uppercase;
112
+ color: rgba(255, 255, 255, 0.8);
113
+ }
114
+
115
+ .value {
116
+ font-size: 0.9rem;
117
+ font-weight: bold;
118
+ }
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <div class="container">
3
+ <div class={cardClass}>
4
+ <div class={cardLabelClass}>{cardLabel}</div>
5
+
6
+ <div class="chip"></div>
7
+
8
+ <div class="number">{number}</div>
9
+
10
+ <div class="details">
11
+ <div>
12
+ <span class="label">Cardholder Name</span>
13
+ <span class="value">{cardHolder}</span>
14
+ </div>
15
+ <div>
16
+ <span class="label">Valid Thru</span>
17
+ <span class="value">{expires}</span>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ </div>
22
+ </template>
@@ -0,0 +1,91 @@
1
+ import { LightningElement, api } from "lwc";
2
+ import { normalizeBoolean } from "dxUtils/normalizers";
3
+
4
+ export default class PaymentCard extends LightningElement {
5
+ _isDebit: boolean = false;
6
+ _number: string | null = null;
7
+
8
+ @api
9
+ get number(): string | null {
10
+ return this._number;
11
+ }
12
+
13
+ set number(value: string | null) {
14
+ if (value) {
15
+ const digits = value.replace(/\s/g, "");
16
+ this._number = digits.replace(/(.{4})/g, "$1 ").trim();
17
+ } else {
18
+ this._number = value;
19
+ }
20
+ }
21
+ _cardHolder: string | null = null;
22
+
23
+ @api
24
+ get cardHolder(): string | null {
25
+ return this._cardHolder;
26
+ }
27
+
28
+ set cardHolder(value: string | null) {
29
+ this._cardHolder = value ? value.toUpperCase() : value;
30
+ }
31
+ @api expires: string | null = null;
32
+ @api
33
+ get isDebit(): boolean {
34
+ return this._isDebit;
35
+ }
36
+
37
+ set isDebit(value) {
38
+ this._isDebit = normalizeBoolean(value);
39
+ }
40
+
41
+ get cardClass(): string {
42
+ return this._isDebit ? "card debit" : "card credit";
43
+ }
44
+
45
+ get cardLabelClass(): string {
46
+ return this._isDebit ? "card-label debit" : "card-label credit";
47
+ }
48
+
49
+ get cardLabel(): string {
50
+ return this._isDebit ? "Debit" : "Credit";
51
+ }
52
+
53
+ renderedCallback() {
54
+ if (this._initialized) {
55
+ return;
56
+ }
57
+ this._initialized = true;
58
+
59
+ const card = this.template.querySelector(".card") as HTMLElement;
60
+ if (!card) {
61
+ return;
62
+ }
63
+
64
+ let mouseX = 0;
65
+ let mouseY = 0;
66
+ let rotateX = 0;
67
+ let rotateY = 0;
68
+
69
+ const onMouseMove = (e: MouseEvent) => {
70
+ mouseX = (window.innerWidth / 2 - e.clientX) / 15;
71
+ mouseY = (e.clientY - window.innerHeight / 2) / 15;
72
+ };
73
+
74
+ const animate = () => {
75
+ rotateX += (mouseY - rotateX) * 0.1;
76
+ rotateY += (mouseX - rotateY) * 0.1;
77
+
78
+ card.style.setProperty("--x-deg", `${rotateX}deg`);
79
+ card.style.setProperty("--y-deg", `${rotateY}deg`);
80
+ card.style.setProperty("--bg-x", `${50 + rotateY * 2}%`);
81
+ card.style.setProperty("--bg-y", `${50 + rotateX * 2}%`);
82
+
83
+ requestAnimationFrame(animate);
84
+ };
85
+
86
+ window.addEventListener("mousemove", onMouseMove);
87
+ requestAnimationFrame(animate);
88
+ }
89
+
90
+ _initialized = false;
91
+ }
@@ -53,7 +53,7 @@
53
53
  </doc-content-layout>
54
54
  <div lwc:if={display404}>
55
55
  <dx-error
56
- image="https://a.sfdcstatic.com/developer-website/prod/images/404.svg"
56
+ image="https://developer.salesforce.com/ns-assets/404.svg"
57
57
  code="404"
58
58
  header="Beep boop. That did not compute."
59
59
  subtitle="The document you're looking for doesn't seem to exist."
package/.npmrc DELETED
@@ -1 +0,0 @@
1
- //registry.npmjs.org/:_authToken=${SFDOCS_NPM_AUTH_TOKEN}
@@ -1,167 +0,0 @@
1
- @import "dxHelpers/reset";
2
- @import "dxHelpers/text";
3
-
4
- :host {
5
- display: block;
6
- --doc-mt-indicator-bg: var(--neutral-90, #e5e5e5);
7
- --doc-mt-indicator-height: 44px;
8
- --doc-mt-indicator-padding-x-left: 40px;
9
- --doc-mt-indicator-padding-x-right: var(--dx-g-spacing-lg);
10
- --doc-mt-indicator-icon-size: 18.4615px;
11
- --doc-mt-indicator-close-color: #747474;
12
- --doc-mt-indicator-primary-bg: #0176d3;
13
- --doc-mt-indicator-primary-bg-hover: #0160b3;
14
- }
15
-
16
- .doc-mt-indicator {
17
- display: flex;
18
- align-items: flex-start;
19
- justify-content: space-between;
20
- width: 100%;
21
- margin: 0;
22
- min-height: var(--doc-mt-indicator-height);
23
- padding: 0 var(--doc-mt-indicator-padding-x-right) 0
24
- var(--doc-mt-indicator-padding-x-left);
25
- background: var(--doc-mt-indicator-bg);
26
- box-sizing: border-box;
27
- }
28
-
29
- .doc-mt-indicator .icon-wrap,
30
- .doc-mt-indicator .main,
31
- .doc-mt-indicator .content,
32
- .doc-mt-indicator .actions,
33
- .doc-mt-indicator .close-wrap {
34
- display: flex;
35
- align-items: center;
36
- }
37
-
38
- .doc-mt-indicator .icon-wrap,
39
- .doc-mt-indicator .close-wrap {
40
- flex-shrink: 0;
41
- width: calc(var(--doc-mt-indicator-icon-size) + var(--dx-g-spacing-sm));
42
- min-height: 32px;
43
- align-self: flex-start;
44
- justify-content: flex-start;
45
- }
46
-
47
- .doc-mt-indicator .icon-wrap dx-icon {
48
- --dx-c-icon-size: var(--doc-mt-indicator-icon-size);
49
- width: var(--doc-mt-indicator-icon-size);
50
- height: var(--doc-mt-indicator-icon-size);
51
- padding: 12px 8px 0 0;
52
- box-sizing: content-box;
53
- }
54
-
55
- .doc-mt-indicator .main {
56
- flex: 1 1 0;
57
- min-width: 0;
58
- align-self: flex-start;
59
- padding: 6px 0;
60
- gap: var(--dx-g-spacing-md);
61
- }
62
-
63
- .doc-mt-indicator .content {
64
- flex: 0 1 auto;
65
- min-width: 0;
66
- max-width: 100%;
67
- min-height: 32px;
68
- align-items: flex-start;
69
- }
70
-
71
- .doc-mt-indicator .message {
72
- margin: 0;
73
- padding: 6px 0;
74
- font-size: 14px;
75
- font-weight: 400;
76
- line-height: 20px;
77
- color: var(--dx-g-neutral-30, #444);
78
- }
79
-
80
- .doc-mt-indicator .message a {
81
- color: var(--dx-g-cloud-blue-vibrant-50);
82
- text-decoration: underline;
83
- }
84
-
85
- .doc-mt-indicator .message a:hover {
86
- opacity: 0.9;
87
- }
88
-
89
- .doc-mt-indicator .actions {
90
- flex-shrink: 0;
91
- min-height: 32px;
92
- gap: var(--dx-g-spacing-smd);
93
- }
94
-
95
- .doc-mt-indicator .primary-btn {
96
- --dx-c-button-primary-color: var(--doc-mt-indicator-primary-bg);
97
- --dx-c-button-primary-color-hover: var(--doc-mt-indicator-primary-bg-hover);
98
- --dx-c-button-vertical-spacing: 0;
99
- --dx-c-button-horizontal-spacing: var(--dx-g-spacing-md);
100
- min-width: min(144px, 100%);
101
- height: 32px;
102
- border-radius: var(--dx-g-spacing-xs);
103
- }
104
-
105
- .doc-mt-indicator .primary-btn::part(container) {
106
- min-width: min(144px, 100%);
107
- width: 100%;
108
- height: 32px;
109
- padding: 0 var(--dx-g-spacing-md);
110
- border-radius: var(--dx-g-spacing-xs);
111
- }
112
-
113
- .doc-mt-indicator .close-wrap {
114
- align-self: flex-start;
115
- justify-content: center;
116
- align-items: center;
117
- width: 52px;
118
- height: 44px;
119
- padding: 12px 8px 18px;
120
- margin-left: auto;
121
- box-sizing: border-box;
122
- }
123
-
124
- .doc-mt-indicator .close-wrap .close-btn {
125
- width: 100%;
126
- height: 100%;
127
- --dx-c-button-custom-color: var(--doc-mt-indicator-close-color);
128
- --dx-c-button-custom-color-hover: var(--doc-mt-indicator-close-color);
129
- --dx-c-button-custom-background: transparent;
130
- --dx-c-button-custom-background-hover: rgb(0 0 0 / 5%);
131
- --dx-c-button-custom-border: none;
132
- --dx-c-button-custom-border-hover: none;
133
- }
134
-
135
- @media (max-width: 1279px) {
136
- :host {
137
- --doc-mt-indicator-padding-x-left: 32px;
138
- --doc-mt-indicator-padding-x-right: var(--dx-g-spacing-md);
139
- }
140
- .doc-mt-indicator {
141
- min-height: 78px;
142
- flex-wrap: wrap;
143
- align-content: space-between;
144
- padding: 0 var(--doc-mt-indicator-padding-x-right) 0 0;
145
- }
146
- .doc-mt-indicator .main {
147
- flex-wrap: wrap;
148
- gap: var(--dx-g-spacing-2xs);
149
- }
150
- .doc-mt-indicator .actions {
151
- flex: 0 0 100%;
152
- width: 100%;
153
- }
154
- .doc-mt-indicator .close-wrap {
155
- min-height: 44px;
156
- }
157
- }
158
-
159
- @media (max-width: 768px) {
160
- :host {
161
- --doc-mt-indicator-padding-x-left: 24px;
162
- --doc-mt-indicator-padding-x-right: var(--dx-g-spacing-sm);
163
- }
164
- .doc-mt-indicator {
165
- min-height: 44px;
166
- }
167
- }
@@ -1,48 +0,0 @@
1
- <template>
2
- <template lwc:if={showBanner}>
3
- <div class="doc-mt-indicator" part="container">
4
- <div class="icon-wrap" part="icon-wrap">
5
- <dx-icon symbol="info" part="icon" color="#747474"></dx-icon>
6
- </div>
7
- <div class="main" part="main">
8
- <div class="content" part="content">
9
- <p class="message dx-text-body-4" part="message">
10
- This text was translated using Salesforce's machine translation system. More details can be found
11
- <a
12
- href="https://help.salesforce.com/s/articleView?id=sf.machine_translation.htm"
13
- target="_blank"
14
- rel="noopener noreferrer"
15
- part="message-link"
16
- >
17
- here
18
- </a>
19
- </p>
20
- </div>
21
- <div class="actions" part="actions">
22
- <template lwc:if={showButton}>
23
- <dx-button
24
- class="primary-btn"
25
- href={enUsHref}
26
- variant="primary"
27
- size="small"
28
- part="button"
29
- >
30
- Switch to English
31
- </dx-button>
32
- </template>
33
- </div>
34
- </div>
35
- <div class="close-wrap" part="close-wrap">
36
- <dx-button
37
- class="close-btn"
38
- variant="icon-only"
39
- icon-symbol="close"
40
- icon-color="#747474"
41
- aria-label="Close"
42
- onclick={handleCloseClick}
43
- part="close"
44
- ></dx-button>
45
- </div>
46
- </div>
47
- </template>
48
- </template>
@@ -1,19 +0,0 @@
1
- import { LightningElement, api } from "lwc";
2
-
3
- export default class MtIndicator extends LightningElement {
4
- @api enUsHref = "";
5
-
6
- private _dismissed = false;
7
-
8
- get showBanner(): boolean {
9
- return !this._dismissed;
10
- }
11
-
12
- get showButton(): boolean {
13
- return !!this.enUsHref;
14
- }
15
-
16
- handleCloseClick() {
17
- this._dismissed = true;
18
- }
19
- }