@salesforcedevs/arch-components 1.20.17-alpha8 → 1.25.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 (158) hide show
  1. package/LICENSE +12 -0
  2. package/lwc.config.json +42 -3
  3. package/package.json +36 -46
  4. package/src/assets/css/arch-variables.css +512 -0
  5. package/src/modules/arch/badge/badge.css +22 -0
  6. package/src/modules/arch/badge/badge.html +5 -0
  7. package/src/modules/arch/badge/badge.ts +9 -0
  8. package/src/modules/arch/button/button.css +1 -0
  9. package/src/modules/arch/button/button.html +20 -0
  10. package/src/modules/arch/button/button.ts +67 -0
  11. package/src/modules/arch/buttonLink/buttonLink.css +1 -0
  12. package/src/modules/arch/buttonLink/buttonLink.html +19 -0
  13. package/src/modules/arch/buttonLink/buttonLink.stories.js +34 -0
  14. package/src/modules/arch/buttonLink/buttonLink.ts +8 -0
  15. package/src/modules/arch/buttonStyles/buttonStyles.css +220 -0
  16. package/src/modules/arch/card/card.css +128 -0
  17. package/src/modules/arch/card/card.html +85 -0
  18. package/src/modules/arch/card/card.ts +277 -0
  19. package/src/modules/arch/cardBase/cardBase.css +11 -0
  20. package/src/modules/arch/cardBase/cardBase.html +2 -0
  21. package/src/modules/arch/cardGridA/cardGridA.css +11 -0
  22. package/src/modules/arch/cardGridA/cardGridA.html +21 -0
  23. package/src/modules/arch/cardGridA/cardGridA.stories.js +118 -0
  24. package/src/modules/arch/cardGridA/cardGridA.ts +24 -0
  25. package/src/modules/arch/cardGridC/cardGridC.css +24 -0
  26. package/src/modules/arch/cardGridC/cardGridC.html +22 -0
  27. package/src/modules/arch/cardGridC/cardGridC.stories.js +51 -0
  28. package/src/modules/arch/cardGridC/cardGridC.ts +11 -0
  29. package/src/modules/arch/cardGridD/cardGridD.css +17 -0
  30. package/src/modules/arch/cardGridD/cardGridD.html +20 -0
  31. package/src/modules/arch/cardGridD/cardGridD.stories.js +43 -0
  32. package/src/modules/arch/cardGridD/cardGridD.ts +7 -0
  33. package/src/modules/arch/cardNew/cardNew.css +31 -0
  34. package/src/modules/arch/cardNew/cardNew.html +32 -0
  35. package/src/modules/arch/cardNew/cardNew.ts +66 -0
  36. package/src/modules/arch/children/children.html +2 -0
  37. package/src/modules/arch/children/children.ts +31 -0
  38. package/src/modules/arch/color/color.ts +59 -0
  39. package/src/modules/arch/content/__fixtures__/index.ts +884 -0
  40. package/src/modules/arch/content/content.css +643 -0
  41. package/src/modules/arch/content/content.html +65 -0
  42. package/src/modules/arch/content/content.stories.js +21 -0
  43. package/src/modules/arch/content/content.ts +169 -0
  44. package/src/modules/arch/contentIcon/contentIcon.css +48 -0
  45. package/src/modules/arch/contentIcon/contentIcon.html +15 -0
  46. package/src/modules/arch/contentIcon/contentIcon.stories.js +130 -0
  47. package/src/modules/arch/contentIcon/contentIcon.ts +68 -0
  48. package/src/{common → modules/arch}/context/context.ts +21 -19
  49. package/src/modules/arch/contextAdapter/constants.ts +1 -0
  50. package/src/modules/arch/contextAdapter/contextAdapter.ts +54 -0
  51. package/src/modules/arch/debounce/debounce.ts +32 -0
  52. package/src/modules/arch/dialog/dialog.ts +154 -0
  53. package/src/modules/arch/dialogStyles/dialogStyles.css +90 -0
  54. package/src/modules/arch/effectAdapter/effectAdapter.html +1 -0
  55. package/src/modules/arch/effectAdapter/effectAdapter.ts +28 -0
  56. package/src/modules/arch/explorer/explorer.css +301 -0
  57. package/src/modules/arch/explorer/explorer.html +418 -0
  58. package/src/modules/arch/explorer/explorer.ts +718 -0
  59. package/src/modules/arch/explorer/types.d.ts +60 -0
  60. package/src/modules/arch/fetch/fetch.ts +55 -0
  61. package/src/modules/arch/footerMfe/footerMfe.html +3 -0
  62. package/src/modules/arch/footerMfe/footerMfe.ts +19 -0
  63. package/src/modules/arch/gallery/gallery.css +365 -0
  64. package/src/modules/arch/gallery/gallery.html +71 -0
  65. package/src/modules/arch/gallery/gallery.ts +366 -0
  66. package/src/modules/arch/gallery/types.d.ts +35 -0
  67. package/src/modules/arch/heading/heading.css +1 -0
  68. package/src/modules/arch/heading/heading.html +9 -0
  69. package/src/modules/arch/heading/heading.ts +36 -0
  70. package/src/modules/arch/helpers/helpers.ts +141 -0
  71. package/src/modules/arch/heroA/heroA.css +116 -0
  72. package/src/modules/arch/heroA/heroA.html +28 -0
  73. package/src/modules/arch/heroA/heroA.stories.js +60 -0
  74. package/src/modules/arch/heroA/heroA.ts +53 -0
  75. package/src/modules/arch/heroB/heroB.css +79 -0
  76. package/src/modules/arch/heroB/heroB.html +27 -0
  77. package/src/modules/arch/heroB/heroB.stories.js +55 -0
  78. package/src/modules/arch/heroB/heroB.ts +26 -0
  79. package/src/modules/arch/i18n/i18n.ts +78 -0
  80. package/src/modules/arch/icon/icon.css +28 -0
  81. package/src/modules/arch/icon/icon.html +17 -0
  82. package/src/modules/arch/icon/icon.stories.js +26 -0
  83. package/src/modules/arch/icon/icon.ts +92 -0
  84. package/src/modules/arch/instrumentation/instrumentation.css +1 -0
  85. package/src/modules/arch/instrumentation/instrumentation.html +1 -0
  86. package/src/modules/arch/instrumentation/instrumentation.ts +113 -0
  87. package/src/modules/arch/labels/helpers.ts +25 -0
  88. package/src/modules/arch/labels/pointHelpers.ts +47 -0
  89. package/src/modules/arch/labels/timeHelpers.ts +182 -0
  90. package/src/modules/arch/labels/types.d.ts +5 -0
  91. package/src/modules/arch/logger/logger.ts +33 -0
  92. package/src/modules/arch/menu/menu.ts +260 -0
  93. package/src/modules/arch/overflow/overflow.ts +71 -0
  94. package/src/modules/arch/page/page.css +3 -0
  95. package/src/modules/arch/page/page.html +3 -0
  96. package/src/modules/arch/page/page.stories.js +19 -0
  97. package/src/modules/arch/page/page.ts +3 -0
  98. package/src/modules/arch/pageHeaderA/pageHeaderA.css +82 -0
  99. package/src/modules/arch/pageHeaderA/pageHeaderA.html +24 -0
  100. package/src/modules/arch/pageHeaderA/pageHeaderA.stories.js +25 -0
  101. package/src/modules/arch/pageHeaderA/pageHeaderA.ts +51 -0
  102. package/src/modules/arch/pill/pill.css +70 -0
  103. package/src/modules/arch/pill/pill.html +17 -0
  104. package/src/modules/arch/pill/pill.ts +34 -0
  105. package/src/modules/arch/polling-request.ts +97 -0
  106. package/src/modules/arch/reflectedElement/reflectedElement.html +2 -0
  107. package/src/{common → modules/arch}/reflectedElement/reflectedElement.ts +5 -3
  108. package/src/modules/arch/reset/reset.css +39 -0
  109. package/src/modules/arch/searchList/searchList.css +120 -0
  110. package/src/modules/arch/searchList/searchList.html +46 -0
  111. package/src/modules/arch/searchList/searchList.ts +53 -0
  112. package/src/modules/arch/sectionA/sectionA.css +64 -0
  113. package/src/modules/arch/sectionA/sectionA.html +21 -0
  114. package/src/modules/arch/sectionA/sectionA.stories.js +25 -0
  115. package/src/modules/arch/sectionA/sectionA.ts +27 -0
  116. package/src/modules/arch/select/select.css +40 -0
  117. package/src/modules/arch/select/select.html +24 -0
  118. package/src/modules/arch/select/select.ts +64 -0
  119. package/src/modules/arch/socialShare/socialShare.css +50 -0
  120. package/src/modules/arch/socialShare/socialShare.html +56 -0
  121. package/src/modules/arch/socialShare/socialShare.ts +29 -0
  122. package/src/modules/arch/spinner/spinner.css +195 -0
  123. package/src/modules/arch/spinner/spinner.html +9 -0
  124. package/src/modules/arch/spinner/spinner.ts +15 -0
  125. package/src/modules/arch/styles/styles.css +24 -0
  126. package/src/modules/arch/summary/summary.css +134 -0
  127. package/src/modules/arch/summary/summary.html +71 -0
  128. package/src/modules/arch/summary/summary.stories.js +163 -0
  129. package/src/modules/arch/summary/summary.ts +96 -0
  130. package/src/modules/arch/tab/tab.css +3 -0
  131. package/src/modules/arch/tab/tab.html +5 -0
  132. package/src/modules/arch/tab/tab.ts +46 -0
  133. package/src/modules/arch/tabset/tabset.css +112 -0
  134. package/src/modules/arch/tabset/tabset.html +62 -0
  135. package/src/modules/arch/tabset/tabset.ts +244 -0
  136. package/src/modules/arch/testutils.ts +118 -0
  137. package/src/modules/arch/threeCardGrid/threeCardGrid.css +6 -0
  138. package/src/modules/arch/threeCardGrid/threeCardGrid.html +5 -0
  139. package/src/modules/arch/threeCardGrid/threeCardGrid.ts +3 -0
  140. package/src/modules/arch/track/track.ts +23 -0
  141. package/src/modules/arch/trailhead.ts +120 -0
  142. package/src/modules/arch/types.d.ts +1 -0
  143. package/src/modules/arch/useEffectAttr.ts +16 -0
  144. package/src/modules/arch/utils/utils.ts +20 -0
  145. package/src/modules/arch/withState.ts +21 -0
  146. package/src/modules/arch/xsfMfeEvents/xsfMfeEvents.html +1 -0
  147. package/src/modules/arch/xsfMfeEvents/xsfMfeEvents.ts +47 -0
  148. package/src/common/effectAdapter/__tests__/effectAdapter.test.ts +0 -12
  149. package/src/common/effectAdapter/effectAdapter.ts +0 -18
  150. package/src/common/reflectedElement/__tests__/modules/test/select/select.html +0 -3
  151. package/src/common/reflectedElement/__tests__/modules/test/select/select.ts +0 -7
  152. package/src/common/reflectedElement/__tests__/modules/test/selectTransform/selectTransform.html +0 -3
  153. package/src/common/reflectedElement/__tests__/modules/test/selectTransform/selectTransform.ts +0 -18
  154. package/src/common/reflectedElement/__tests__/reflectedElement.test.ts +0 -75
  155. package/src/common/slot/__tests__/slot.test.ts +0 -96
  156. package/src/common/slot/slot.ts +0 -20
  157. /package/src/{common → modules/arch}/context/context.html +0 -0
  158. /package/src/{common/effectAdapter/effectAdapter.html → modules/arch/contextAdapter/contextAdapter.html} +0 -0
@@ -0,0 +1,60 @@
1
+ export type Tool = {
2
+ Name: string;
3
+ Description: string;
4
+ URL: string;
5
+ }
6
+
7
+ export type Resource = {
8
+ Name: string;
9
+ Description: string;
10
+ URL: string;
11
+ }
12
+
13
+ export type Dimension = {
14
+ Behavior: string;
15
+ Name: string;
16
+ Weight: number;
17
+ isDisabled: boolean;
18
+ }
19
+
20
+ export type Behavior = {
21
+ Capability: string;
22
+ Name: string;
23
+ Weight: number;
24
+ Dimensions: Dimension[];
25
+ }
26
+
27
+ export type Location = {
28
+ Name: string;
29
+ isDisabled: boolean;
30
+ }
31
+
32
+ export type Pattern = {
33
+ Name?: string;
34
+ Description: string;
35
+ Example?: string;
36
+ Weight?: number | null;
37
+ LastUpdated?: string;
38
+ Location: string;
39
+ Capability: string;
40
+ Behavior: string;
41
+ Consideration: string;
42
+ ConsiderationURL: string;
43
+ Dimension: string;
44
+ DimensionURL: string;
45
+ Mirror?: Pattern;
46
+ Tools?: Tool[];
47
+ Resources?: Resource[];
48
+ ProductArea: string;
49
+ }
50
+
51
+ export type Filter = {
52
+ Type: string;
53
+ Name: string;
54
+ }
55
+
56
+ export type VersionInfo = {
57
+ Number: string;
58
+ Name: string;
59
+ URL: string;
60
+ }
@@ -0,0 +1,55 @@
1
+ export function csrfHeader(token: string = '') {
2
+ return {
3
+ 'X-CSRF-Token': token
4
+ };
5
+ }
6
+
7
+ export function fetch(url: string, { ...options }: { [key: string]: any } = {}) {
8
+ return window.fetch(url, {
9
+ ...options,
10
+ credentials: 'same-origin'
11
+ });
12
+ }
13
+
14
+ export function fetchJSON<T>(
15
+ url: string,
16
+ { headers, ...options }: { [key: string]: any } = {}
17
+ ) {
18
+ return fetch(url, {
19
+ ...options,
20
+ headers: {
21
+ ...headers,
22
+ Accept: 'application/json; charset=utf-8'
23
+ }
24
+ }).then(async (response) => {
25
+ if (response.ok) {
26
+ return response.json() as Promise<T>;
27
+ }
28
+ if (/json/.test(String(response.headers.get('Content-Type')))) {
29
+ return response
30
+ .json()
31
+ .then((errorJSON) => Promise.reject(errorJSON));
32
+ }
33
+ throw new Error(
34
+ `Application error code ${response.status} for "${url}"`
35
+ );
36
+ });
37
+ }
38
+
39
+ export { fetchJSON as getJSON };
40
+
41
+ export function postJSON<T>(
42
+ url: string,
43
+ body?: object,
44
+ { headers, method = 'POST', ...options }: { [key: string]: any } = {}
45
+ ) {
46
+ return fetchJSON<T>(url, {
47
+ ...options,
48
+ method,
49
+ headers: {
50
+ ...headers,
51
+ 'Content-Type': 'application/json; charset=utf-8'
52
+ },
53
+ body: typeof body === 'string' ? body : JSON.stringify(body)
54
+ });
55
+ }
@@ -0,0 +1,3 @@
1
+ <template>
2
+ <div lwc:dom="manual"></div>
3
+ </template>
@@ -0,0 +1,19 @@
1
+ import { LightningElement } from 'lwc';
2
+
3
+ export default class FooterMfe extends LightningElement {
4
+ private didRender = false;
5
+
6
+ renderedCallback() {
7
+ if (this.didRender) {
8
+ return;
9
+ }
10
+ this.didRender = true;
11
+
12
+ // Since the footer is a third-party component, we need to create it dynamically (LWC won't recognize it as a valid component).
13
+ const footerElement = document.createElement('hgf-footer');
14
+ footerElement.setAttribute('origin', window.location.origin); // will call the route handler for `/c360/experience/v1/navigation`
15
+ footerElement.setAttribute('hide-language-selector', 'true');
16
+ footerElement.setAttribute('home-href', `/${window.location.host}`); // ugly hack: ideally this wouldn't be necessary, but the only way to remove the "See all ways to contact us" link from the footer is to set this to a non-empty value other than "us"; and given the way that the footer works, the non-empty value needs to be something that can be appended to `/` and work correctly
17
+ this.template.querySelector('div')!.appendChild(footerElement);
18
+ }
19
+ }
@@ -0,0 +1,365 @@
1
+ @import "arch/reset";
2
+
3
+ :host {
4
+ font-size: var(--arch-font-size-md);
5
+ }
6
+
7
+ .filter-header {
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: space-between;
11
+ }
12
+
13
+ .filter-title {
14
+ display: inline-block;
15
+ margin-right: var(--arch-spacing-8);
16
+ }
17
+
18
+ .filter-header h2 {
19
+ font-size: var(--arch-font-size-lg);
20
+ }
21
+
22
+ .filter-form {
23
+ margin-bottom: var(--arch-spacing-8);
24
+ display: flex;
25
+ flex-wrap: wrap;
26
+ justify-content: space-between;
27
+ }
28
+
29
+ .filter-form > * {
30
+ margin-right: var(--arch-spacing-4);
31
+ margin-left: var(--arch-spacing-4);
32
+ }
33
+
34
+ .filter-form arch-select {
35
+ flex: 1;
36
+ }
37
+
38
+ .arch-select {
39
+ width: 60%;
40
+ box-sizing: border-box;
41
+ }
42
+
43
+ .search-input {
44
+ width: 40%;
45
+ box-sizing: border-box;
46
+ }
47
+
48
+ .search-input-wrapper {
49
+ align-items: stretch;
50
+ display: flex;
51
+ position: relative;
52
+ }
53
+
54
+ .search-input-label {
55
+ overflow-wrap: break-word;
56
+ word-wrap: break-word;
57
+ hyphens: auto;
58
+ display: block;
59
+ padding-right: var(--arch-spacing-2);
60
+ padding-top: var(--arch-spacing-2);
61
+ color: var(--arch-color-meteorite);
62
+ font-size: var(--arch-font-size-xs);
63
+ margin-bottom: var(--arch-spacing-2);
64
+ }
65
+
66
+ .search-input-input {
67
+ border-radius: var(--arch-radius-md);
68
+ border: 1px solid var(--arch-color-fog);
69
+ color: var(--arch-color-black);
70
+ flex: 1;
71
+ font-family: inherit;
72
+ font-size: var(--arch-font-size-md);
73
+ line-height: 1.875;
74
+ overflow: hidden;
75
+ padding: 0.4rem 0;
76
+ padding-left: var(--arch-spacing-8);
77
+ position: relative;
78
+ text-overflow: ellipsis;
79
+ transition: border 0.1s linear, background-color 0.1s linear;
80
+ white-space: nowrap;
81
+ }
82
+
83
+ .search-input-icon {
84
+ color: var(--arch-color-granite);
85
+ left: 10px;
86
+ position: absolute;
87
+ top: 13px;
88
+ z-index: 1;
89
+ }
90
+
91
+ .table-summary {
92
+ display: flex;
93
+ justify-content: space-between;
94
+ align-items: center;
95
+ margin-bottom: var(--arch-spacing-4);
96
+ }
97
+
98
+ .table-summary > div {
99
+ margin-bottom: var(--arch-spacing-4);
100
+ }
101
+
102
+ .table-summary .page-size-controls,
103
+ .table-summary .collapse-buttons {
104
+ flex-basis: 25%;
105
+ }
106
+
107
+ .table-summary .page-size-controls {
108
+ display: flex;
109
+ align-items: center;
110
+ }
111
+
112
+ .table-summary .page-size-controls div {
113
+ margin-right: 0.5rem;
114
+ color: var(--arch-color-meteorite);
115
+ }
116
+
117
+ .table-summary .collapse-buttons {
118
+ text-align: right;
119
+ }
120
+
121
+ .table-summary .collapse-buttons button:first-child {
122
+ margin-right: 0.5rem;
123
+ }
124
+
125
+ .table-summary .collapse-buttons button:last-child {
126
+ margin-left: 0.5rem;
127
+ }
128
+
129
+ .table-summary .filter-stats {
130
+ text-align: center;
131
+ color: var(--arch-color-meteorite);
132
+ }
133
+
134
+ table {
135
+ width: 100%;
136
+ margin: 0 auto;
137
+ border-collapse: separate;
138
+ border-spacing: 0;
139
+ border-right: 1px solid #dddbda;
140
+ border-left: 1px solid #dddbda;
141
+ border-bottom: 1px solid #111;
142
+ vertical-align: middle;
143
+ margin-bottom: var(--arch-spacing-8);
144
+ }
145
+
146
+ thead {
147
+ display: table-header-group;
148
+ border-color: inherit;
149
+ }
150
+
151
+ th {
152
+ background-color: #ebf5ff;
153
+ border-top: 1px solid #dddbda;
154
+ border-bottom: 1px solid #111;
155
+ padding: 1rem;
156
+ vertical-align: middle;
157
+ }
158
+
159
+ tr {
160
+ display: table-row;
161
+ vertical-align: middle;
162
+ }
163
+
164
+ tr:nth-child(even) td {
165
+ background: #fafaf9;
166
+ }
167
+
168
+ tr td:first-child {
169
+ border-left: 3px solid transparent;
170
+ }
171
+
172
+ tr td:last-child {
173
+ border-right: 3px solid transparent;
174
+ }
175
+
176
+ tr:hover td {
177
+ box-shadow: #dddbda 0 -1px 0 inset, #dddbda 0 1px 0 inset;
178
+ background: #fafaf9;
179
+ }
180
+
181
+ tr:hover td:first-child {
182
+ border-left: 3px solid var(--arch-color-brand);
183
+ }
184
+
185
+ tr:hover td:last-child {
186
+ border-right: 3px solid var(--arch-color-brand);
187
+ }
188
+
189
+ td {
190
+ padding: 0.75rem 1rem;
191
+ border-top: 1px solid #dddbda;
192
+ border-bottom: 1px solid #dddbda;
193
+ }
194
+
195
+ .status {
196
+ text-align: center;
197
+ }
198
+
199
+ .feature a {
200
+ color: var(--arch-color-brand);
201
+ text-decoration: none;
202
+ }
203
+
204
+ .feature a:hover {
205
+ text-decoration: underline;
206
+ }
207
+
208
+ .feature p {
209
+ margin-bottom: var(--arch-spacing-2);
210
+ }
211
+
212
+ .feature .inline {
213
+ display: flex;
214
+ }
215
+
216
+ .feature .inline h4 {
217
+ padding-right: var(--arch-spacing-4);
218
+ }
219
+
220
+ td.empty-table {
221
+ height: 20rem;
222
+ text-align: center;
223
+ pointer-events: none;
224
+ }
225
+
226
+ td.empty-table arch-spinner {
227
+ display: inline-block;
228
+ }
229
+
230
+ button.link {
231
+ background: none;
232
+ border-width: 0;
233
+ text-decoration: underline;
234
+ cursor: pointer;
235
+ }
236
+
237
+ .pagination-controls {
238
+ display: flex;
239
+ justify-content: center;
240
+ margin-bottom: var(--arch-spacing-8);
241
+ }
242
+
243
+ .pagination-controls arch-button {
244
+ padding: 0 1rem;
245
+ }
246
+
247
+ .safe-harbor {
248
+ border-radius: 10px;
249
+ border: 1px solid gray;
250
+ padding: 20px;
251
+ margin-bottom: 20px;
252
+ }
253
+
254
+ .safe-harbor img {
255
+ margin-right: 10px;
256
+ float: left;
257
+ }
258
+
259
+ @media screen and (max-width: 48rem) {
260
+ .filter-header {
261
+ flex-direction: column-reverse;
262
+ }
263
+
264
+ .filter-header div {
265
+ width: 100%;
266
+ display: flex;
267
+ justify-content: space-between;
268
+ align-items: center;
269
+ }
270
+
271
+ .filter-header arch-social-share {
272
+ margin-bottom: var(--arch-spacing-6);
273
+ }
274
+
275
+ .table-summary {
276
+ flex-direction: column;
277
+ }
278
+
279
+ .table-wrapper {
280
+ overflow-x: scroll;
281
+ }
282
+
283
+ .docs-grid-container {
284
+ position: relative;
285
+ }
286
+
287
+ .docs-action-bar {
288
+ display: flex;
289
+ justify-content: space-between;
290
+ align-items: flex-end;
291
+ padding: var(--dx-g-spacing-md) 0 var(--dx-g-spacing-lg);
292
+ }
293
+
294
+ .docs-action-bar > .records-container {
295
+ margin-right: auto;
296
+ }
297
+
298
+ .docs-action-bar .filters-container {
299
+ display: flex;
300
+ }
301
+
302
+ .docs-action-bar .filters-container > *:not(:first-child),
303
+ .docs-search-input {
304
+ margin-left: var(--dx-g-spacing-sm);
305
+ }
306
+
307
+ .docs-search-input {
308
+ --dx-c-input-width: 285px;
309
+ }
310
+
311
+ .docs-card {
312
+ --dx-c-body-max-lines: 4;
313
+ --dx-c-heading-max-lines: 2;
314
+ }
315
+
316
+ .pagination-container {
317
+ max-width: fit-content;
318
+ margin: var(--dx-g-spacing-lg) auto;
319
+ }
320
+
321
+ @media screen and (max-width: 1024px) {
322
+ .docs-card {
323
+ --dx-c-body-max-lines: 3;
324
+ }
325
+ }
326
+
327
+ @media screen and (max-width: 768px) {
328
+ .docs-action-bar {
329
+ flex-direction: column-reverse;
330
+ width: 100%;
331
+ padding: 0;
332
+ }
333
+
334
+ .docs-search-input {
335
+ --dx-c-input-width: 100%;
336
+
337
+ width: 100%;
338
+ margin-bottom: var(--dx-g-spacing-md);
339
+ }
340
+
341
+ .docs-action-bar .records-container {
342
+ transform: translateY(-100%);
343
+ }
344
+ }
345
+
346
+ @media screen and (max-width: 600px) {
347
+ .pagination-container {
348
+ width: 100%;
349
+ overflow: hidden;
350
+ }
351
+
352
+ .pagination-container > * {
353
+ position: absolute;
354
+ left: 50%;
355
+ transform: translateX(-50%);
356
+ }
357
+ }
358
+
359
+ @media screen and (max-width: 460px) {
360
+ .docs-action-bar .records-container {
361
+ transform: initial;
362
+ padding: var(--dx-g-spacing-md) 0;
363
+ }
364
+ }
365
+ }
@@ -0,0 +1,71 @@
1
+ <template>
2
+ <div class="filter-header">
3
+ <div>
4
+ <h2 class="filter-title">Search for {_searchTitle}</h2>
5
+ <arch-button class="clear-filter" onclick={handleResetFiltersClick}>
6
+ Clear filters
7
+ </arch-button>
8
+ </div>
9
+ <arch-social-share
10
+ title={socialTitle}
11
+ url={shareUrl}
12
+ ></arch-social-share>
13
+ </div>
14
+ <div class="filter-form">
15
+ <arch-select
16
+ label={_filterLabel}
17
+ value={_selectFilter}
18
+ onchange={filterChange}
19
+ >
20
+ <option value="">- All {_filterLabel}s -</option>
21
+ <template for:each={filterOptions} for:item="item">
22
+ <option key={item.label} value={item.value}>
23
+ {item.label}
24
+ </option>
25
+ </template>
26
+ </arch-select>
27
+
28
+ <template if:true={_showMetaFilter}>
29
+ <arch-select
30
+ label={_metaFilterLabel}
31
+ value={_selectMetaFilter}
32
+ onchange={metaFilterChange}
33
+ >
34
+ <option value="">- All {_metaFilterLabel}s -</option>
35
+ <template for:each={metaFilterOptions} for:item="item">
36
+ <option key={item.label} value={item.value}>
37
+ {item.label}
38
+ </option>
39
+ </template>
40
+ </arch-select>
41
+ </template>
42
+
43
+ <div class="search-input">
44
+ <label class="search-input-label" for="search">Search</label>
45
+ <div class="search-input-wrapper">
46
+ <arch-icon
47
+ class="search-input-icon"
48
+ size="small"
49
+ symbol="search"
50
+ ></arch-icon>
51
+ <input
52
+ id="search"
53
+ class="search-input-input"
54
+ placeholder="Search..."
55
+ icon-symbol="search"
56
+ aria-label="Search..."
57
+ value={_keywordFilter}
58
+ oninput={keywordFilterChange}
59
+ disabled={isLoading}
60
+ />
61
+ </div>
62
+ </div>
63
+ </div>
64
+ <div role="region" aria-label="Gallery results" aria-live="polite">
65
+ <arch-card-grid-a
66
+ img-aspect="60%"
67
+ img-type="full"
68
+ items={filteredCards}
69
+ ></arch-card-grid-a>
70
+ </div>
71
+ </template>