@salesforcedevs/docs-components 0.0.7 → 0.0.9-edit

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 (141) hide show
  1. package/lwc.config.json +25 -2
  2. package/package.json +17 -6
  3. package/src/modules/README.md +41 -0
  4. package/src/modules/doc/amfModelParser/amfModelParser.ts +674 -0
  5. package/src/modules/doc/amfReference/amfReference.css +25 -0
  6. package/src/modules/doc/amfReference/amfReference.html +60 -0
  7. package/src/modules/doc/amfReference/amfReference.ts +1494 -0
  8. package/src/modules/doc/amfReference/constants.ts +76 -0
  9. package/src/modules/doc/amfReference/types.ts +125 -0
  10. package/src/modules/doc/amfTopic/amfTopic.css +21 -0
  11. package/src/modules/doc/amfTopic/amfTopic.html +3 -0
  12. package/src/modules/doc/amfTopic/amfTopic.ts +111 -0
  13. package/src/modules/doc/amfTopic/types.ts +56 -0
  14. package/src/modules/doc/amfTopic/utils.ts +136 -0
  15. package/src/modules/doc/breadcrumbItem/breadcrumbItem.css +51 -0
  16. package/src/modules/doc/breadcrumbItem/breadcrumbItem.html +5 -0
  17. package/src/modules/doc/breadcrumbItem/breadcrumbItem.ts +71 -0
  18. package/src/modules/doc/breadcrumbs/breadcrumbs.css +27 -0
  19. package/src/modules/doc/breadcrumbs/breadcrumbs.html +58 -0
  20. package/src/modules/doc/breadcrumbs/breadcrumbs.ts +183 -0
  21. package/src/modules/doc/chat/README.md +179 -0
  22. package/src/modules/doc/chat/chat.css +821 -0
  23. package/src/modules/doc/chat/chat.html +241 -0
  24. package/src/modules/doc/chat/chat.ts +586 -0
  25. package/src/modules/doc/componentPlayground/componentPlayground.css +22 -0
  26. package/src/modules/doc/componentPlayground/componentPlayground.html +20 -0
  27. package/src/modules/doc/componentPlayground/componentPlayground.ts +29 -0
  28. package/src/modules/doc/content/content.css +249 -87
  29. package/src/modules/doc/content/content.html +3 -2
  30. package/src/modules/doc/content/content.ts +272 -152
  31. package/src/modules/doc/contentCallout/contentCallout.css +25 -26
  32. package/src/modules/doc/contentCallout/contentCallout.html +13 -4
  33. package/src/modules/doc/contentCallout/contentCallout.ts +21 -10
  34. package/src/modules/doc/contentLayout/contentLayout.css +1 -0
  35. package/src/modules/doc/contentLayout/contentLayout.html +68 -0
  36. package/src/modules/doc/contentLayout/contentLayout.ts +531 -0
  37. package/src/modules/doc/contentMedia/contentMedia.css +49 -0
  38. package/src/modules/doc/contentMedia/contentMedia.html +23 -0
  39. package/src/modules/doc/contentMedia/contentMedia.ts +34 -0
  40. package/src/modules/doc/doDont/doDont.css +47 -0
  41. package/src/modules/doc/doDont/doDont.html +27 -0
  42. package/src/modules/doc/doDont/doDont.ts +17 -0
  43. package/src/modules/doc/editFile/editFile.css +511 -0
  44. package/src/modules/doc/editFile/editFile.html +163 -0
  45. package/src/modules/doc/editFile/editFile.ts +238 -0
  46. package/src/modules/doc/header/header.css +132 -0
  47. package/src/modules/doc/header/header.html +55 -0
  48. package/src/modules/doc/header/header.ts +120 -0
  49. package/src/modules/doc/heading/heading.css +33 -0
  50. package/src/modules/doc/heading/heading.html +14 -0
  51. package/src/modules/doc/heading/heading.ts +67 -0
  52. package/src/modules/doc/headingAnchor/headingAnchor.css +33 -0
  53. package/src/modules/doc/headingAnchor/headingAnchor.html +19 -0
  54. package/src/modules/doc/headingAnchor/headingAnchor.ts +43 -0
  55. package/src/modules/doc/headingContent/headingContent.css +53 -0
  56. package/src/modules/doc/headingContent/headingContent.html +13 -0
  57. package/src/modules/doc/headingContent/headingContent.ts +30 -0
  58. package/src/modules/doc/lwcContentLayout/lwcContentLayout.css +1 -0
  59. package/src/modules/doc/lwcContentLayout/lwcContentLayout.html +68 -0
  60. package/src/modules/doc/lwcContentLayout/lwcContentLayout.ts +168 -0
  61. package/src/modules/doc/nav/nav.css +4 -2
  62. package/src/modules/doc/nav/nav.ts +1 -1
  63. package/src/modules/doc/overview/overview.css +40 -0
  64. package/src/modules/doc/overview/overview.html +34 -0
  65. package/src/modules/doc/overview/overview.ts +12 -0
  66. package/src/modules/doc/phase/phase.css +70 -0
  67. package/src/modules/doc/phase/phase.html +38 -0
  68. package/src/modules/doc/phase/phase.ts +93 -0
  69. package/src/modules/doc/specificationContent/specificationContent.css +36 -0
  70. package/src/modules/doc/specificationContent/specificationContent.html +171 -0
  71. package/src/modules/doc/specificationContent/specificationContent.ts +127 -0
  72. package/src/modules/doc/sprigSurvey/sprigSurvey.html +20 -0
  73. package/src/modules/doc/sprigSurvey/sprigSurvey.scoped.css +16 -0
  74. package/src/modules/doc/sprigSurvey/sprigSurvey.ts +16 -0
  75. package/src/modules/doc/toc/toc.html +11 -6
  76. package/src/modules/doc/toc/toc.ts +1 -1
  77. package/src/modules/doc/toolbar/toolbar.html +8 -1
  78. package/src/modules/doc/versionPicker/versionPicker.css +64 -0
  79. package/src/modules/doc/versionPicker/versionPicker.html +38 -0
  80. package/src/modules/doc/versionPicker/versionPicker.ts +65 -0
  81. package/src/modules/doc/xmlContent/types.ts +120 -0
  82. package/src/modules/doc/xmlContent/utils.ts +163 -0
  83. package/src/modules/doc/xmlContent/xmlContent.css +54 -0
  84. package/src/modules/doc/xmlContent/xmlContent.html +52 -0
  85. package/src/modules/doc/xmlContent/xmlContent.ts +792 -0
  86. package/src/modules/docHelpers/amfStyle/amfStyle.css +355 -0
  87. package/src/modules/docHelpers/contentLayoutStyle/contentLayoutStyle.css +131 -0
  88. package/src/modules/docHelpers/imgStyle/imgStyle.css +59 -0
  89. package/src/modules/docHelpers/status/status.css +22 -0
  90. package/src/modules/docUtils/searchSyncer/searchSyncer.ts +86 -0
  91. package/src/modules/docUtils/utils/__mocks__/coveo.analytics.ts +16 -0
  92. package/src/modules/docUtils/utils/coveo.analytics.d.ts +10 -0
  93. package/src/modules/docUtils/utils/utils.ts +32 -0
  94. package/src/modules/doc/container/__benchmarks__/container.benchmark.js +0 -43
  95. package/src/modules/doc/container/__mocks__/mockAvailableLanguages.js +0 -8
  96. package/src/modules/doc/container/__mocks__/mockAvailableVersions.js +0 -122
  97. package/src/modules/doc/container/__mocks__/mockContentFetchResponse.json +0 -5
  98. package/src/modules/doc/container/__mocks__/mockDocContent.js +0 -29
  99. package/src/modules/doc/container/__mocks__/mockNavigationFetchResponse.json +0 -4061
  100. package/src/modules/doc/container/__mocks__/mockPageReference.js +0 -8
  101. package/src/modules/doc/container/__mocks__/mockPdfUrl.js +0 -1
  102. package/src/modules/doc/container/__mocks__/mockSelectedLanguage.js +0 -8
  103. package/src/modules/doc/container/__mocks__/mockSelectedVersion.js +0 -8
  104. package/src/modules/doc/container/__mocks__/mockToc.js +0 -146
  105. package/src/modules/doc/container/__tests__/container.test.ts +0 -82
  106. package/src/modules/doc/container/container.css +0 -34
  107. package/src/modules/doc/container/container.html +0 -23
  108. package/src/modules/doc/container/container.stories.ts +0 -18
  109. package/src/modules/doc/container/container.ts +0 -356
  110. package/src/modules/doc/content/__tests__/content.test.ts +0 -30
  111. package/src/modules/doc/content/__tests__/mockDocContent.ts +0 -29
  112. package/src/modules/doc/content/__tests__/mockPageReference.ts +0 -8
  113. package/src/modules/doc/contentCallout/__tests__/contentCallout.test.ts +0 -80
  114. package/src/modules/doc/contentCallout/__tests__/mockProps.ts +0 -14
  115. package/src/modules/doc/contentCallout/contentCallout.stories.ts +0 -29
  116. package/src/modules/doc/landing/__tests__/landing.test.ts +0 -32
  117. package/src/modules/doc/landing/__tests__/mockFetch.json +0 -370
  118. package/src/modules/doc/landing/landing.css +0 -66
  119. package/src/modules/doc/landing/landing.html +0 -109
  120. package/src/modules/doc/landing/landing.stories.ts +0 -10
  121. package/src/modules/doc/landing/landing.ts +0 -225
  122. package/src/modules/doc/nav/__tests__/mockAvailableLanguages.ts +0 -8
  123. package/src/modules/doc/nav/__tests__/mockAvailableVersions.ts +0 -122
  124. package/src/modules/doc/nav/__tests__/mockPageReference.ts +0 -8
  125. package/src/modules/doc/nav/__tests__/mockPdfUrl.ts +0 -1
  126. package/src/modules/doc/nav/__tests__/mockSelectedLanguage.ts +0 -8
  127. package/src/modules/doc/nav/__tests__/mockSelectedVersion.ts +0 -8
  128. package/src/modules/doc/nav/__tests__/mockToc.ts +0 -146
  129. package/src/modules/doc/nav/__tests__/nav.test.ts +0 -62
  130. package/src/modules/doc/search/__tests__/search.test.ts +0 -20
  131. package/src/modules/doc/search/search.html +0 -1
  132. package/src/modules/doc/search/search.ts +0 -3
  133. package/src/modules/doc/toc/__tests__/mockPageReference.ts +0 -8
  134. package/src/modules/doc/toc/__tests__/mockToc.ts +0 -146
  135. package/src/modules/doc/toc/__tests__/toc.test.ts +0 -29
  136. package/src/modules/doc/toolbar/__tests__/mockAvailableLanguages.ts +0 -8
  137. package/src/modules/doc/toolbar/__tests__/mockAvailableVersions.ts +0 -122
  138. package/src/modules/doc/toolbar/__tests__/mockPdfUrl.ts +0 -1
  139. package/src/modules/doc/toolbar/__tests__/mockSelectedLanguage.ts +0 -8
  140. package/src/modules/doc/toolbar/__tests__/mockSelectedVersion.ts +0 -8
  141. package/src/modules/doc/toolbar/__tests__/toolbar.test.ts +0 -44
@@ -0,0 +1,47 @@
1
+ @import "dxHelpers/reset";
2
+ @import "dxHelpers/text";
3
+
4
+ .container {
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: var(--dx-g-spacing-md);
8
+ flex: 1;
9
+ }
10
+
11
+ .doc-do-dont-header {
12
+ display: flex;
13
+ align-items: center;
14
+ gap: var(--dx-g-spacing-sm);
15
+ }
16
+
17
+ .doc-do-dont-label {
18
+ font-family: var(--dx-g-font-display);
19
+ font-size: var(--dx-g-spacing-md);
20
+ font-weight: var(--dx-g-font-demi);
21
+ line-height: var(--dx-g-spacing-lg);
22
+ }
23
+
24
+ .doc-do-color {
25
+ color: var(--dx-g-green-vibrant-50);
26
+ }
27
+
28
+ .doc-dont-color {
29
+ color: var(--dx-g-red-vibrant-30);
30
+ }
31
+
32
+ .do-dont-image-container {
33
+ display: flex;
34
+ max-height: 480px;
35
+ min-height: 140px;
36
+ padding: var(--dx-g-spacing-3xl) var(--dx-g-spacing-2xl);
37
+ flex-direction: column;
38
+ justify-content: center;
39
+ align-items: center;
40
+ flex: 1;
41
+ border-radius: var(--dx-g-spacing-sm);
42
+ border: 1px solid var(--dx-g-brand-default-color-border-2);
43
+ }
44
+
45
+ .doc-do-dont-img {
46
+ object-fit: contain;
47
+ }
@@ -0,0 +1,27 @@
1
+ <template>
2
+ <div class="container">
3
+ <div class="doc-do-dont-header">
4
+ <template lwc:if={isDo}>
5
+ <dx-icon
6
+ symbol="success"
7
+ size="large"
8
+ color="green-vibrant-50"
9
+ ></dx-icon>
10
+ <div class="doc-do-dont-label doc-do-color">Do</div>
11
+ </template>
12
+ <template lwc:else>
13
+ <dx-icon
14
+ symbol="clear"
15
+ size="large"
16
+ color="red-vibrant-30"
17
+ class="doc-do-dont-icon"
18
+ ></dx-icon>
19
+ <div class="doc-do-dont-label doc-dont-color">Don't</div>
20
+ </template>
21
+ </div>
22
+ <div class="do-dont-image-container">
23
+ <img class="doc-do-dont-img" src={imgSrc} alt={caption} />
24
+ </div>
25
+ <div class="dx-text-body-4">{caption}</div>
26
+ </div>
27
+ </template>
@@ -0,0 +1,17 @@
1
+ import { LightningElement, api } from "lwc";
2
+ import { normalizeBoolean } from "dxUtils/normalizers";
3
+
4
+ export default class DoDont extends LightningElement {
5
+ @api caption: string = "";
6
+ @api imgSrc!: string;
7
+ _isDo: boolean = false;
8
+
9
+ @api
10
+ get isDo(): boolean {
11
+ return this._isDo;
12
+ }
13
+
14
+ set isDo(value) {
15
+ this._isDo = normalizeBoolean(value);
16
+ }
17
+ }
@@ -0,0 +1,511 @@
1
+ /* Host container */
2
+ :host {
3
+ font-family: "Salesforce Sans", -apple-system, BlinkMacSystemFont,
4
+ "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue",
5
+ sans-serif;
6
+ position: absolute;
7
+ top: 10px;
8
+ left: 50%;
9
+ z-index: 1000;
10
+ }
11
+
12
+ /* Edit File Trigger Button */
13
+ .edit-file-trigger {
14
+ background: linear-gradient(135deg, #0176d3 0%, #005fb2 100%);
15
+ color: white;
16
+ border: none;
17
+ border-radius: 12px;
18
+ padding: 12px 16px;
19
+ cursor: pointer;
20
+ display: flex;
21
+ align-items: center;
22
+ gap: 8px;
23
+ box-shadow: 0 4px 16px rgb(1 118 211 / 25%), 0 2px 8px rgb(1 118 211 / 15%);
24
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
25
+ font-size: 14px;
26
+ font-weight: 500;
27
+ letter-spacing: 0.02em;
28
+ width: 150px;
29
+ justify-content: center;
30
+ }
31
+
32
+ .edit-file-trigger:hover:not(:disabled) {
33
+ background: linear-gradient(135deg, #005fb2 0%, #003e73 100%);
34
+ transform: translateY(-2px);
35
+ box-shadow: 0 6px 20px rgb(1 118 211 / 35%), 0 4px 12px rgb(1 118 211 / 25%);
36
+ }
37
+
38
+ .edit-file-trigger:active:not(:disabled) {
39
+ transform: translateY(0);
40
+ box-shadow: 0 2px 8px rgb(1 118 211 / 30%);
41
+ }
42
+
43
+ .edit-file-trigger:disabled {
44
+ background: #d8dde6;
45
+ color: #706e6b;
46
+ cursor: not-allowed;
47
+ transform: none;
48
+ box-shadow: 0 1px 3px rgb(0 0 0 / 12%);
49
+ }
50
+
51
+ .edit-file-icon {
52
+ width: 18px;
53
+ height: 18px;
54
+ flex-shrink: 0;
55
+ }
56
+
57
+ .edit-file-trigger-text {
58
+ font-weight: 500;
59
+ white-space: nowrap;
60
+ }
61
+
62
+ /* Overlay */
63
+ .edit-file-overlay {
64
+ position: fixed;
65
+ top: 0;
66
+ left: 0;
67
+ width: 100%;
68
+ height: 100%;
69
+ background: rgb(0 0 0 / 50%);
70
+ backdrop-filter: blur(4px);
71
+ z-index: 10000;
72
+ display: flex;
73
+ align-items: center;
74
+ justify-content: center;
75
+ opacity: 0;
76
+ visibility: hidden;
77
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
78
+ padding: 20px;
79
+ box-sizing: border-box;
80
+ }
81
+
82
+ .edit-file-overlay_open {
83
+ opacity: 1;
84
+ visibility: visible;
85
+ }
86
+
87
+ /* Popover */
88
+ .edit-file-popover {
89
+ background: white;
90
+ border-radius: 16px;
91
+ box-shadow: 0 20px 60px rgb(0 0 0 / 20%), 0 8px 24px rgb(0 0 0 / 15%);
92
+ width: 100%;
93
+ max-width: 900px;
94
+ max-height: 90vh;
95
+ display: flex;
96
+ flex-direction: column;
97
+ transform: scale(0.9) translateY(20px);
98
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
99
+ overflow: hidden;
100
+ }
101
+
102
+ .edit-file-popover_open {
103
+ transform: scale(1) translateY(0);
104
+ }
105
+
106
+ /* Popover Header */
107
+ .edit-file-header {
108
+ padding: 24px 24px 20px;
109
+ border-bottom: 1px solid #e5e7ea;
110
+ display: flex;
111
+ align-items: flex-start;
112
+ justify-content: space-between;
113
+ gap: 16px;
114
+ background: linear-gradient(180deg, #fafbfc 0%, #f7f9fb 100%);
115
+ position: relative;
116
+ }
117
+
118
+ .edit-file-title {
119
+ margin: 0;
120
+ font-size: 24px;
121
+ font-weight: 700;
122
+ color: #181818;
123
+ letter-spacing: -0.02em;
124
+ }
125
+
126
+ .edit-file-filename {
127
+ margin: 8px 0 0;
128
+ font-size: 14px;
129
+ color: #706e6b;
130
+ display: flex;
131
+ align-items: center;
132
+ gap: 6px;
133
+ font-weight: 500;
134
+ }
135
+
136
+ .edit-file-file-icon {
137
+ width: 16px;
138
+ height: 16px;
139
+ color: #0176d3;
140
+ }
141
+
142
+ .edit-file-close {
143
+ width: 40px;
144
+ height: 40px;
145
+ border: none;
146
+ background: transparent;
147
+ border-radius: 10px;
148
+ cursor: pointer;
149
+ display: flex;
150
+ align-items: center;
151
+ justify-content: center;
152
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
153
+ color: #706e6b;
154
+ flex-shrink: 0;
155
+ }
156
+
157
+ .edit-file-close:hover {
158
+ background: #f3f3f3;
159
+ color: #181818;
160
+ transform: scale(1.05);
161
+ }
162
+
163
+ .edit-file-close-icon {
164
+ width: 20px;
165
+ height: 20px;
166
+ }
167
+
168
+ /* Popover Content */
169
+ .edit-file-content {
170
+ flex: 1;
171
+ padding: 24px;
172
+ overflow-y: auto;
173
+ min-height: 0;
174
+ }
175
+
176
+ /* Loading State */
177
+ .edit-file-loading {
178
+ display: flex;
179
+ flex-direction: column;
180
+ align-items: center;
181
+ justify-content: center;
182
+ padding: 60px 20px;
183
+ gap: 16px;
184
+ }
185
+
186
+ .edit-file-spinner {
187
+ width: 32px;
188
+ height: 32px;
189
+ border: 3px solid #e5e7ea;
190
+ border-top: 3px solid #0176d3;
191
+ border-radius: 50%;
192
+ animation: edit-file-spin 1s linear infinite;
193
+ }
194
+
195
+ .edit-file-loading-text {
196
+ margin: 0;
197
+ color: #706e6b;
198
+ font-size: 16px;
199
+ font-weight: 500;
200
+ }
201
+
202
+ /* Error State */
203
+ .edit-file-error {
204
+ display: flex;
205
+ align-items: center;
206
+ gap: 12px;
207
+ padding: 16px 20px;
208
+ background: #fef7f7;
209
+ border: 1px solid #fecaca;
210
+ border-radius: 12px;
211
+ color: #dc2626;
212
+ margin-bottom: 20px;
213
+ }
214
+
215
+ .edit-file-error-icon {
216
+ width: 20px;
217
+ height: 20px;
218
+ flex-shrink: 0;
219
+ }
220
+
221
+ .edit-file-error-text {
222
+ font-size: 14px;
223
+ font-weight: 500;
224
+ }
225
+
226
+ /* Editor */
227
+ .edit-file-editor {
228
+ width: 100%;
229
+ }
230
+
231
+ .edit-file-label {
232
+ display: block;
233
+ margin-bottom: 8px;
234
+ font-size: 14px;
235
+ font-weight: 600;
236
+ color: #181818;
237
+ }
238
+
239
+ .edit-file-textarea {
240
+ width: 100%;
241
+ min-height: 400px;
242
+ padding: 16px;
243
+ border: 2px solid #e5e7ea;
244
+ border-radius: 12px;
245
+ font-family: "SF Mono", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;
246
+ font-size: 14px;
247
+ line-height: 1.5;
248
+ resize: vertical;
249
+ outline: none;
250
+ background: #fafbfc;
251
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
252
+ box-sizing: border-box;
253
+ }
254
+
255
+ .edit-file-textarea:focus {
256
+ border-color: #0176d3;
257
+ background: white;
258
+ box-shadow: 0 0 0 3px rgb(1 118 211 / 10%);
259
+ }
260
+
261
+ .edit-file-textarea::placeholder {
262
+ color: #9ca3af;
263
+ }
264
+
265
+ /* Popover Footer */
266
+ .edit-file-footer {
267
+ padding: 20px 24px 24px;
268
+ border-top: 1px solid #e5e7ea;
269
+ display: flex;
270
+ align-items: center;
271
+ justify-content: space-between;
272
+ gap: 16px;
273
+ background: linear-gradient(180deg, #fafbfc 0%, #f7f9fb 100%);
274
+ }
275
+
276
+ /* Status Indicators */
277
+ .edit-file-status {
278
+ display: flex;
279
+ align-items: center;
280
+ gap: 8px;
281
+ font-size: 14px;
282
+ font-weight: 500;
283
+ }
284
+
285
+ .edit-file-saving {
286
+ display: flex;
287
+ align-items: center;
288
+ gap: 8px;
289
+ color: #0176d3;
290
+ }
291
+
292
+ .edit-file-mini-spinner {
293
+ width: 16px;
294
+ height: 16px;
295
+ border: 2px solid #e5e7ea;
296
+ border-top: 2px solid #0176d3;
297
+ border-radius: 50%;
298
+ animation: edit-file-spin 1s linear infinite;
299
+ }
300
+
301
+ .edit-file-unchanged {
302
+ color: #706e6b;
303
+ }
304
+
305
+ .edit-file-modified {
306
+ color: #059669;
307
+ position: relative;
308
+ }
309
+
310
+ .edit-file-modified::before {
311
+ content: "●";
312
+ margin-right: 6px;
313
+ color: #059669;
314
+ }
315
+
316
+ /* Action Buttons */
317
+ .edit-file-actions {
318
+ display: flex;
319
+ gap: 12px;
320
+ }
321
+
322
+ .edit-file-button {
323
+ padding: 12px 24px;
324
+ border-radius: 10px;
325
+ font-size: 14px;
326
+ font-weight: 600;
327
+ cursor: pointer;
328
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
329
+ display: flex;
330
+ align-items: center;
331
+ gap: 8px;
332
+ border: none;
333
+ white-space: nowrap;
334
+ }
335
+
336
+ .edit-file-button_secondary {
337
+ background: #f3f3f3;
338
+ color: #181818;
339
+ border: 1px solid #e5e7ea;
340
+ }
341
+
342
+ .edit-file-button_secondary:hover:not(:disabled) {
343
+ background: #e5e7ea;
344
+ transform: translateY(-1px);
345
+ }
346
+
347
+ .edit-file-button_primary {
348
+ background: linear-gradient(135deg, #0176d3 0%, #005fb2 100%);
349
+ color: white;
350
+ }
351
+
352
+ .edit-file-button_primary:hover:not(:disabled) {
353
+ background: linear-gradient(135deg, #005fb2 0%, #003e73 100%);
354
+ transform: translateY(-1px);
355
+ box-shadow: 0 4px 12px rgb(1 118 211 / 25%);
356
+ }
357
+
358
+ .edit-file-button_disabled {
359
+ background: #d8dde6 !important;
360
+ color: #706e6b !important;
361
+ cursor: not-allowed !important;
362
+ transform: none !important;
363
+ box-shadow: none !important;
364
+ }
365
+
366
+ .edit-file-button:disabled {
367
+ background: #d8dde6;
368
+ color: #706e6b;
369
+ cursor: not-allowed;
370
+ transform: none;
371
+ box-shadow: none;
372
+ }
373
+
374
+ .edit-file-button-spinner {
375
+ width: 16px;
376
+ height: 16px;
377
+ border: 2px solid transparent;
378
+ border-top: 2px solid currentColor;
379
+ border-radius: 50%;
380
+ animation: edit-file-spin 1s linear infinite;
381
+ }
382
+
383
+ /* Animations */
384
+ @keyframes edit-file-spin {
385
+ to {
386
+ transform: rotate(360deg);
387
+ }
388
+ }
389
+
390
+ /* Responsive Design */
391
+ @media (max-width: 768px) {
392
+ .edit-file-trigger {
393
+ padding: 10px 14px;
394
+ font-size: 13px;
395
+ }
396
+
397
+ .edit-file-trigger-text {
398
+ display: none;
399
+ }
400
+
401
+ .edit-file-overlay {
402
+ padding: 16px;
403
+ }
404
+
405
+ .edit-file-popover {
406
+ max-width: 100%;
407
+ max-height: 95vh;
408
+ }
409
+
410
+ .edit-file-header {
411
+ padding: 20px 20px 16px;
412
+ }
413
+
414
+ .edit-file-title {
415
+ font-size: 20px;
416
+ }
417
+
418
+ .edit-file-content {
419
+ padding: 20px;
420
+ }
421
+
422
+ .edit-file-textarea {
423
+ min-height: 300px;
424
+ font-size: 13px;
425
+ }
426
+
427
+ .edit-file-footer {
428
+ padding: 16px 20px 20px;
429
+ flex-direction: column;
430
+ align-items: stretch;
431
+ gap: 12px;
432
+ }
433
+
434
+ .edit-file-actions {
435
+ width: 100%;
436
+ justify-content: stretch;
437
+ }
438
+
439
+ .edit-file-button {
440
+ flex: 1;
441
+ justify-content: center;
442
+ }
443
+ }
444
+
445
+ @media (max-width: 480px) {
446
+ .edit-file-trigger {
447
+ padding: 8px 12px;
448
+ }
449
+
450
+ .edit-file-overlay {
451
+ padding: 12px;
452
+ }
453
+
454
+ .edit-file-header {
455
+ padding: 16px;
456
+ }
457
+
458
+ .edit-file-title {
459
+ font-size: 18px;
460
+ }
461
+
462
+ .edit-file-content {
463
+ padding: 16px;
464
+ }
465
+
466
+ .edit-file-footer {
467
+ padding: 12px 16px 16px;
468
+ }
469
+
470
+ .edit-file-textarea {
471
+ min-height: 250px;
472
+ padding: 12px;
473
+ }
474
+ }
475
+
476
+ /* Accessibility improvements */
477
+ @media (prefers-reduced-motion: reduce) {
478
+ .edit-file-trigger,
479
+ .edit-file-overlay,
480
+ .edit-file-popover,
481
+ .edit-file-close,
482
+ .edit-file-button,
483
+ .edit-file-textarea {
484
+ transition: none;
485
+ }
486
+
487
+ .edit-file-spinner,
488
+ .edit-file-mini-spinner,
489
+ .edit-file-button-spinner {
490
+ animation: none;
491
+ }
492
+ }
493
+
494
+ /* High contrast mode support */
495
+ @media (prefers-contrast: high) {
496
+ .edit-file-trigger {
497
+ border: 2px solid;
498
+ }
499
+
500
+ .edit-file-popover {
501
+ border: 2px solid #000;
502
+ }
503
+
504
+ .edit-file-textarea {
505
+ border: 2px solid #000;
506
+ }
507
+
508
+ .edit-file-button {
509
+ border: 2px solid;
510
+ }
511
+ }