xlsxrb 0.1.12 → 0.1.13

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 (153) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -42
  3. data/README.md +26 -22
  4. data/lib/xlsxrb/dsl_helpers.rb +59 -0
  5. data/lib/xlsxrb/elements/workbook.rb +11 -0
  6. data/lib/xlsxrb/ooxml/shared_strings_parser.rb +3 -5
  7. data/lib/xlsxrb/ooxml/workbook_writer.rb +5 -7
  8. data/lib/xlsxrb/ooxml/worksheet_parser.rb +172 -9
  9. data/lib/xlsxrb/ooxml/writer.rb +2 -1
  10. data/lib/xlsxrb/ooxml/xml_builder.rb +20 -0
  11. data/lib/xlsxrb/ooxml/zip_reader.rb +364 -78
  12. data/lib/xlsxrb/ooxml/zip_writer.rb +32 -5
  13. data/lib/xlsxrb/stream_sheet.rb +94 -6
  14. data/lib/xlsxrb/stream_writer.rb +33 -66
  15. data/lib/xlsxrb/version.rb +1 -1
  16. data/lib/xlsxrb/workbook_builder.rb +1 -1
  17. data/lib/xlsxrb/worksheet_builder.rb +3 -31
  18. data/lib/xlsxrb.rb +448 -171
  19. data/sig/generated/xlsxrb/dsl_helpers.rbs +32 -0
  20. data/sig/generated/xlsxrb/elements/workbook.rbs +7 -0
  21. data/sig/generated/xlsxrb/ooxml/shared_strings_parser.rbs +0 -2
  22. data/sig/generated/xlsxrb/ooxml/worksheet_parser.rbs +5 -4
  23. data/sig/generated/xlsxrb/ooxml/xml_builder.rbs +11 -0
  24. data/sig/generated/xlsxrb/ooxml/zip_reader.rbs +96 -8
  25. data/sig/generated/xlsxrb/ooxml/zip_writer.rbs +5 -1
  26. data/sig/generated/xlsxrb/stream_sheet.rbs +43 -3
  27. data/sig/generated/xlsxrb.rbs +18 -11
  28. metadata +6 -146
  29. data/.devcontainer/Dockerfile +0 -65
  30. data/.devcontainer/devcontainer.json +0 -17
  31. data/.gem_rbs_collection/ast/2.4/.rbs_meta.yaml +0 -9
  32. data/.gem_rbs_collection/ast/2.4/ast.rbs +0 -73
  33. data/.gem_rbs_collection/concurrent-ruby/1.1/.rbs_meta.yaml +0 -9
  34. data/.gem_rbs_collection/concurrent-ruby/1.1/array.rbs +0 -4
  35. data/.gem_rbs_collection/concurrent-ruby/1.1/atomic_reference.rbs +0 -16
  36. data/.gem_rbs_collection/concurrent-ruby/1.1/executor.rbs +0 -96
  37. data/.gem_rbs_collection/concurrent-ruby/1.1/hash.rbs +0 -4
  38. data/.gem_rbs_collection/concurrent-ruby/1.1/map.rbs +0 -68
  39. data/.gem_rbs_collection/concurrent-ruby/1.1/promises.rbs +0 -249
  40. data/.gem_rbs_collection/concurrent-ruby/1.1/set.rbs +0 -4
  41. data/.gem_rbs_collection/concurrent-ruby/1.1/timer_task.rbs +0 -47
  42. data/.gem_rbs_collection/concurrent-ruby/1.1/utility/processor_counter.rbs +0 -5
  43. data/.gem_rbs_collection/csv/3.3/.rbs_meta.yaml +0 -9
  44. data/.gem_rbs_collection/csv/3.3/csv.rbs +0 -3871
  45. data/.gem_rbs_collection/csv/3.3/manifest.yaml +0 -3
  46. data/.gem_rbs_collection/lint_roller/1.1/.rbs_meta.yaml +0 -9
  47. data/.gem_rbs_collection/lint_roller/1.1/lint_roller.rbs +0 -48
  48. data/.gem_rbs_collection/listen/3.9/.rbs_meta.yaml +0 -9
  49. data/.gem_rbs_collection/listen/3.9/listen.rbs +0 -25
  50. data/.gem_rbs_collection/listen/3.9/listener.rbs +0 -24
  51. data/.gem_rbs_collection/logger/1.7/.rbs_meta.yaml +0 -9
  52. data/.gem_rbs_collection/logger/1.7/formatter.rbs +0 -45
  53. data/.gem_rbs_collection/logger/1.7/log_device.rbs +0 -100
  54. data/.gem_rbs_collection/logger/1.7/logger.rbs +0 -796
  55. data/.gem_rbs_collection/logger/1.7/manifest.yaml +0 -2
  56. data/.gem_rbs_collection/logger/1.7/period.rbs +0 -17
  57. data/.gem_rbs_collection/logger/1.7/severity.rbs +0 -34
  58. data/.gem_rbs_collection/nokogiri/1.11/.rbs_meta.yaml +0 -9
  59. data/.gem_rbs_collection/nokogiri/1.11/nokogiri.rbs +0 -2332
  60. data/.gem_rbs_collection/nokogiri/1.11/patch.rbs +0 -4
  61. data/.gem_rbs_collection/parallel/1.20/.rbs_meta.yaml +0 -9
  62. data/.gem_rbs_collection/parallel/1.20/parallel.rbs +0 -86
  63. data/.gem_rbs_collection/parser/3.2/.rbs_meta.yaml +0 -9
  64. data/.gem_rbs_collection/parser/3.2/manifest.yaml +0 -7
  65. data/.gem_rbs_collection/parser/3.2/parser.rbs +0 -194
  66. data/.gem_rbs_collection/parser/3.2/polyfill.rbs +0 -4
  67. data/.gem_rbs_collection/rainbow/3.0/.rbs_meta.yaml +0 -9
  68. data/.gem_rbs_collection/rainbow/3.0/global.rbs +0 -7
  69. data/.gem_rbs_collection/rainbow/3.0/presenter.rbs +0 -209
  70. data/.gem_rbs_collection/rainbow/3.0/rainbow.rbs +0 -5
  71. data/.gem_rbs_collection/rake/13.0/.rbs_meta.yaml +0 -9
  72. data/.gem_rbs_collection/rake/13.0/manifest.yaml +0 -2
  73. data/.gem_rbs_collection/rake/13.0/rake.rbs +0 -39
  74. data/.gem_rbs_collection/regexp_parser/2.8/.rbs_meta.yaml +0 -9
  75. data/.gem_rbs_collection/regexp_parser/2.8/regexp_parser.rbs +0 -17
  76. data/.gem_rbs_collection/rubocop/1.57/.rbs_meta.yaml +0 -9
  77. data/.gem_rbs_collection/rubocop/1.57/rubocop.rbs +0 -208
  78. data/.gem_rbs_collection/rubocop-ast/1.46/.rbs_meta.yaml +0 -9
  79. data/.gem_rbs_collection/rubocop-ast/1.46/rubocop-ast.rbs +0 -903
  80. data/.gem_rbs_collection/rubyzip/3.2/.rbs_meta.yaml +0 -9
  81. data/.gem_rbs_collection/rubyzip/3.2/manifest.yaml +0 -8
  82. data/.gem_rbs_collection/rubyzip/3.2/zip/central_directory.rbs +0 -42
  83. data/.gem_rbs_collection/rubyzip/3.2/zip/compressor.rbs +0 -5
  84. data/.gem_rbs_collection/rubyzip/3.2/zip/constants.rbs +0 -47
  85. data/.gem_rbs_collection/rubyzip/3.2/zip/crypto/aes_encryption.rbs +0 -30
  86. data/.gem_rbs_collection/rubyzip/3.2/zip/crypto/decrypted_io.rbs +0 -9
  87. data/.gem_rbs_collection/rubyzip/3.2/zip/crypto/encryption.rbs +0 -7
  88. data/.gem_rbs_collection/rubyzip/3.2/zip/crypto/null_encryption.rbs +0 -19
  89. data/.gem_rbs_collection/rubyzip/3.2/zip/crypto/traditional_encryption.rbs +0 -31
  90. data/.gem_rbs_collection/rubyzip/3.2/zip/decompressor.rbs +0 -18
  91. data/.gem_rbs_collection/rubyzip/3.2/zip/deflater.rbs +0 -12
  92. data/.gem_rbs_collection/rubyzip/3.2/zip/dirtyable.rbs +0 -11
  93. data/.gem_rbs_collection/rubyzip/3.2/zip/dos_time.rbs +0 -13
  94. data/.gem_rbs_collection/rubyzip/3.2/zip/entry.rbs +0 -95
  95. data/.gem_rbs_collection/rubyzip/3.2/zip/entry_set.rbs +0 -31
  96. data/.gem_rbs_collection/rubyzip/3.2/zip/errors.rbs +0 -58
  97. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/aes.rbs +0 -24
  98. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/generic.rbs +0 -17
  99. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/ntfs.rbs +0 -23
  100. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/old_unix.rbs +0 -22
  101. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/universal_time.rbs +0 -30
  102. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/unix.rbs +0 -20
  103. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/unknown.rbs +0 -15
  104. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/zip64.rbs +0 -26
  105. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field.rbs +0 -21
  106. data/.gem_rbs_collection/rubyzip/3.2/zip/file.rbs +0 -131
  107. data/.gem_rbs_collection/rubyzip/3.2/zip/file_split.rbs +0 -14
  108. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem/dir.rbs +0 -33
  109. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem/directory_iterator.rbs +0 -21
  110. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem/file.rbs +0 -63
  111. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem/file_stat.rbs +0 -55
  112. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem/zip_file_name_mapper.rbs +0 -35
  113. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem.rbs +0 -7
  114. data/.gem_rbs_collection/rubyzip/3.2/zip/inflater.rbs +0 -10
  115. data/.gem_rbs_collection/rubyzip/3.2/zip/input_stream.rbs +0 -22
  116. data/.gem_rbs_collection/rubyzip/3.2/zip/ioextras/abstract_input_stream.rbs +0 -29
  117. data/.gem_rbs_collection/rubyzip/3.2/zip/ioextras/abstract_output_stream.rbs +0 -17
  118. data/.gem_rbs_collection/rubyzip/3.2/zip/ioextras.rbs +0 -13
  119. data/.gem_rbs_collection/rubyzip/3.2/zip/null_compressor.rbs +0 -10
  120. data/.gem_rbs_collection/rubyzip/3.2/zip/null_decompressor.rbs +0 -8
  121. data/.gem_rbs_collection/rubyzip/3.2/zip/null_input_stream.rbs +0 -6
  122. data/.gem_rbs_collection/rubyzip/3.2/zip/output_stream.rbs +0 -30
  123. data/.gem_rbs_collection/rubyzip/3.2/zip/pass_thru_compressor.rbs +0 -10
  124. data/.gem_rbs_collection/rubyzip/3.2/zip/pass_thru_decompressor.rbs +0 -10
  125. data/.gem_rbs_collection/rubyzip/3.2/zip/streamable_directory.rbs +0 -5
  126. data/.gem_rbs_collection/rubyzip/3.2/zip/streamable_stream.rbs +0 -15
  127. data/.gem_rbs_collection/rubyzip/3.2/zip/version.rbs +0 -3
  128. data/.gem_rbs_collection/rubyzip/3.2/zip.rbs +0 -40
  129. data/.mutant.yml +0 -8
  130. data/Rakefile +0 -633
  131. data/Steepfile +0 -18
  132. data/benchmark.rb +0 -406
  133. data/docs/ARCHITECTURE.md +0 -514
  134. data/docs/DEVELOPMENT.md +0 -137
  135. data/docs/MUTATION_TESTING.md +0 -52
  136. data/docs/PEER_LIBRARIES.md +0 -121
  137. data/docs/QUALITY_ASSURANCE.md +0 -26
  138. data/docs/SPEC_SOURCES.md +0 -48
  139. data/docs/assets/benchmark_results.svg +0 -144
  140. data/docs/assets/lsp_autocompletion.png +0 -0
  141. data/docs/assets/playground_preview.png +0 -0
  142. data/docs/coi-serviceworker.js +0 -82
  143. data/docs/office_thread.js +0 -77
  144. data/docs/preview.html +0 -719
  145. data/docs/visual/VisualGallery.md +0 -4683
  146. data/docs/wasm/ruby.wasm +0 -0
  147. data/docs/wasm/wasm_doc_helper.css +0 -351
  148. data/docs/wasm/wasm_doc_helper.js +0 -439
  149. data/docs/zeta.js +0 -1107
  150. data/rbs_collection.lock.yaml +0 -252
  151. data/rbs_collection.yaml +0 -19
  152. data/vendor/sdk_runner/Program.cs +0 -93
  153. data/vendor/sdk_runner/sdk_runner.csproj +0 -13
data/docs/wasm/ruby.wasm DELETED
Binary file
@@ -1,351 +0,0 @@
1
- /* wasm_doc_helper.css */
2
- .wasm-playground-wrapper {
3
- margin: 1.5em 0;
4
- position: relative;
5
- }
6
-
7
- /* Quick Actions Button Bar */
8
- .wasm-quick-action-bar {
9
- display: flex;
10
- flex-wrap: wrap;
11
- gap: 8px;
12
- margin-bottom: 12px;
13
- }
14
-
15
- .wasm-quick-btn {
16
- display: inline-flex;
17
- align-items: center;
18
- justify-content: center;
19
- padding: 8px 16px;
20
- font-size: 13px;
21
- font-weight: 600;
22
- font-family: inherit; /* Inherit font-family from RDoc/Aliki theme */
23
- border-radius: 6px;
24
- cursor: pointer;
25
- transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
26
- outline: none;
27
- border: 1px solid transparent;
28
- }
29
-
30
- /* 1. Live Preview Button: High-visibility Accent Green */
31
- .wasm-quick-preview-btn {
32
- background: linear-gradient(135deg, #10b981 0%, #059669 100%);
33
- color: white !important;
34
- box-shadow: 0 4px 12px rgba(16, 185, 129, 0.25);
35
- }
36
-
37
- .wasm-quick-preview-btn:hover {
38
- background: linear-gradient(135deg, #059669 0%, #047857 100%);
39
- transform: translateY(-1px);
40
- box-shadow: 0 6px 16px rgba(16, 185, 129, 0.35);
41
- }
42
-
43
- /* 2. Edit Code Button: Sleek Indigo */
44
- .wasm-quick-edit-btn {
45
- background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);
46
- color: white !important;
47
- box-shadow: 0 4px 12px rgba(99, 102, 241, 0.25);
48
- }
49
-
50
- .wasm-quick-edit-btn:hover {
51
- background: linear-gradient(135deg, #4f46e5 0%, #3730a3 100%);
52
- transform: translateY(-1px);
53
- box-shadow: 0 6px 16px rgba(99, 102, 241, 0.35);
54
- }
55
-
56
- /* 3. Download XLSX Button: Clean slate style */
57
- .wasm-quick-download-btn {
58
- background-color: #ffffff;
59
- color: #475569 !important;
60
- border: 1px solid #e2e8f0;
61
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.03);
62
- }
63
-
64
- .wasm-quick-download-btn:hover {
65
- background-color: #f8fafc;
66
- color: #0f172a !important;
67
- border-color: #cbd5e1;
68
- transform: translateY(-1px);
69
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
70
- }
71
-
72
- .wasm-quick-btn:active {
73
- transform: translateY(1px);
74
- box-shadow: none;
75
- }
76
-
77
- /* Loader indicator */
78
- .wasm-loader {
79
- display: flex;
80
- align-items: center;
81
- gap: 12px;
82
- padding: 16px;
83
- background-color: #f3f4f6;
84
- border: 1px solid #e5e7eb;
85
- border-radius: 8px;
86
- font-size: 14px;
87
- color: #374151;
88
- }
89
-
90
- .wasm-loader-text {
91
- font-weight: 500;
92
- }
93
-
94
- .wasm-spinner {
95
- width: 20px;
96
- height: 20px;
97
- border: 3px solid rgba(59, 130, 246, 0.2);
98
- border-top-color: #3b82f6;
99
- border-radius: 50%;
100
- animation: wasm-spin 0.8s linear infinite;
101
- }
102
-
103
- @keyframes wasm-spin {
104
- to { transform: rotate(360deg); }
105
- }
106
-
107
- /* Inline Editor Overlay and Wrapper */
108
- .wasm-playground-wrapper {
109
- position: relative;
110
- border: 1px solid #e2e8f0;
111
- border-radius: 8px;
112
- background-color: #f8fafc; /* Matches Aliki/RDoc tones */
113
- transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
114
- margin: 1.5em 0 8px 0;
115
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.02);
116
- cursor: text;
117
- }
118
-
119
- .wasm-playground-wrapper:hover {
120
- border-color: #cbd5e1;
121
- }
122
-
123
- .wasm-playground-wrapper:focus-within {
124
- border-color: #2563eb;
125
- box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
126
- background-color: #ffffff;
127
- }
128
-
129
- .wasm-inline-editor {
130
- background-color: transparent !important;
131
- color: transparent !important;
132
- caret-color: #2563eb !important; /* Indigo caret visible over transparent text */
133
- border: none !important;
134
- resize: none !important;
135
- outline: none !important;
136
- box-sizing: border-box !important;
137
- white-space: pre-wrap !important;
138
- word-wrap: break-word !important;
139
- overflow-wrap: break-word !important;
140
- overflow: hidden !important;
141
- }
142
-
143
- /* Reset Button Style */
144
- .wasm-quick-reset-btn {
145
- background-color: white;
146
- color: #64748b !important;
147
- border: 1px solid #e2e8f0;
148
- }
149
-
150
- .wasm-quick-reset-btn:hover {
151
- background-color: #f8fafc;
152
- color: #0f172a !important;
153
- border-color: #cbd5e1;
154
- }
155
-
156
- /* Ruby highlight custom classes override to align with Aliki theme */
157
- .wasm-playground-wrapper pre.ruby {
158
- background-color: transparent !important;
159
- border: none !important;
160
- padding: 16px !important;
161
- margin: 0 !important;
162
- white-space: pre-wrap !important;
163
- word-wrap: break-word !important;
164
- overflow-wrap: break-word !important;
165
- overflow: hidden !important;
166
- box-sizing: border-box !important;
167
- }
168
-
169
- /* Align inline bar styles */
170
- .wasm-quick-action-bar {
171
- display: flex;
172
- flex-wrap: wrap;
173
- gap: 8px;
174
- padding: 10px 16px;
175
- background-color: #f8fafc;
176
- border-top: 1px solid #e2e8f0;
177
- border-radius: 0 0 8px 8px;
178
- }
179
-
180
- /* Sliding Drawer Panel */
181
- .wasm-preview-drawer {
182
- position: fixed;
183
- top: 0;
184
- right: 0;
185
- bottom: 0;
186
- width: 50vw;
187
- max-width: 800px;
188
- min-width: 480px;
189
- background-color: #ffffff; /* Premium white background to match RDoc */
190
- border-left: 1px solid #e2e8f0;
191
- box-shadow: -8px 0 24px rgba(15, 23, 42, 0.08);
192
- z-index: 10000;
193
- display: flex;
194
- flex-direction: column;
195
- transform: translateX(100%);
196
- transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);
197
- }
198
-
199
- .wasm-preview-drawer.open {
200
- transform: translateX(0);
201
- }
202
-
203
- /* Drawer Header */
204
- .drawer-header {
205
- display: flex;
206
- justify-content: space-between;
207
- align-items: center;
208
- padding: 16px 20px;
209
- background-color: #f8fafc;
210
- border-bottom: 1px solid #e2e8f0;
211
- }
212
-
213
- .drawer-title {
214
- color: #1e293b;
215
- font-size: 15px;
216
- font-weight: 600;
217
- }
218
-
219
- .drawer-close-btn {
220
- background: none;
221
- border: none;
222
- color: #64748b;
223
- font-size: 24px;
224
- cursor: pointer;
225
- line-height: 1;
226
- padding: 4px;
227
- transition: color 0.15s ease;
228
- }
229
-
230
- .drawer-close-btn:hover {
231
- color: #0f172a;
232
- }
233
-
234
- /* Drawer Body & IFrame */
235
- .drawer-body {
236
- flex: 1;
237
- overflow: hidden;
238
- position: relative;
239
- background-color: #ffffff;
240
- }
241
-
242
- .drawer-iframe {
243
- width: 100%;
244
- height: 100%;
245
- border: none;
246
- background-color: transparent;
247
- }
248
-
249
- /* ==========================================
250
- Dark Mode Support (RDoc data-theme="dark")
251
- ========================================== */
252
- [data-theme="dark"] .wasm-playground-wrapper {
253
- border-color: #334155;
254
- background-color: #0f172a;
255
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
256
- }
257
-
258
- [data-theme="dark"] .wasm-playground-wrapper:hover {
259
- border-color: #475569;
260
- }
261
-
262
- [data-theme="dark"] .wasm-playground-wrapper:focus-within {
263
- border-color: #3b82f6;
264
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.25);
265
- background-color: #020617;
266
- }
267
-
268
- [data-theme="dark"] .wasm-inline-editor {
269
- caret-color: #60a5fa !important;
270
- }
271
-
272
- [data-theme="dark"] .wasm-quick-action-bar {
273
- background-color: #1e293b;
274
- border-top: 1px solid #334155;
275
- }
276
-
277
- [data-theme="dark"] .wasm-quick-btn {
278
- background-color: #334155;
279
- color: #e2e8f0;
280
- border-color: #475569;
281
- }
282
-
283
- [data-theme="dark"] .wasm-quick-btn:hover {
284
- background-color: #475569;
285
- border-color: #64748b;
286
- color: #ffffff;
287
- }
288
-
289
- [data-theme="dark"] .wasm-quick-preview-btn {
290
- background-color: #064e3b;
291
- color: #6ee7b7;
292
- border-color: #047857;
293
- }
294
-
295
- [data-theme="dark"] .wasm-quick-preview-btn:hover {
296
- background-color: #047857;
297
- color: #ffffff;
298
- }
299
-
300
- [data-theme="dark"] .wasm-quick-download-btn {
301
- background-color: #334155;
302
- color: #cbd5e1 !important;
303
- border-color: #475569;
304
- }
305
-
306
- [data-theme="dark"] .wasm-quick-download-btn:hover {
307
- background-color: #475569;
308
- color: #ffffff !important;
309
- border-color: #cbd5e1;
310
- }
311
-
312
- [data-theme="dark"] .wasm-quick-reset-btn {
313
- background-color: #334155;
314
- color: #94a3b8 !important;
315
- border-color: #475569;
316
- }
317
-
318
- [data-theme="dark"] .wasm-quick-reset-btn:hover {
319
- background-color: #475569;
320
- color: #cbd5e1 !important;
321
- }
322
-
323
- /* Side Drawer Dark Theme */
324
- [data-theme="dark"] .wasm-preview-drawer {
325
- background-color: #0f172a;
326
- border-left: 1px solid #334155;
327
- box-shadow: -8px 0 25px rgba(0, 0, 0, 0.3);
328
- }
329
-
330
- [data-theme="dark"] .drawer-header {
331
- background-color: #1e293b;
332
- border-bottom: 1px solid #334155;
333
- color: #f1f5f9;
334
- }
335
-
336
- [data-theme="dark"] .drawer-title {
337
- color: #f1f5f9;
338
- }
339
-
340
- [data-theme="dark"] .drawer-close-btn {
341
- color: #94a3b8;
342
- }
343
-
344
- [data-theme="dark"] .drawer-close-btn:hover {
345
- color: #f1f5f9;
346
- background-color: #334155;
347
- }
348
-
349
- [data-theme="dark"] .drawer-body {
350
- background-color: #0f172a;
351
- }