@jjlmoya/utils-developer 1.11.0 → 1.13.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 (100) hide show
  1. package/package.json +7 -4
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/entries.ts +74 -0
  4. package/src/tool/aspectRatio/aspect-ratio-calculator.css +276 -0
  5. package/src/tool/aspectRatio/component.astro +0 -278
  6. package/src/tool/aspectRatio/entry.ts +30 -0
  7. package/src/tool/aspectRatio/index.ts +2 -32
  8. package/src/tool/calculadoraTiempoDatos/component.astro +0 -524
  9. package/src/tool/calculadoraTiempoDatos/data-time-calculator-web-speed-impact.css +522 -0
  10. package/src/tool/calculadoraTiempoDatos/entry.ts +29 -0
  11. package/src/tool/calculadoraTiempoDatos/index.ts +2 -31
  12. package/src/tool/colorConverter/color-converter-rgb-hex-hsl.css +262 -0
  13. package/src/tool/colorConverter/component.astro +0 -264
  14. package/src/tool/colorConverter/entry.ts +29 -0
  15. package/src/tool/colorConverter/index.ts +2 -31
  16. package/src/tool/conversorExcelCsvHtml/component.astro +0 -360
  17. package/src/tool/conversorExcelCsvHtml/entry.ts +29 -0
  18. package/src/tool/conversorExcelCsvHtml/excel-csv-html-table-converter.css +358 -0
  19. package/src/tool/conversorExcelCsvHtml/index.ts +2 -31
  20. package/src/tool/cronGenerator/component.astro +0 -317
  21. package/src/tool/cronGenerator/cron.css +315 -0
  22. package/src/tool/cronGenerator/entry.ts +30 -0
  23. package/src/tool/cronGenerator/index.ts +2 -32
  24. package/src/tool/cssSpecificityCalculator/component.astro +0 -205
  25. package/src/tool/cssSpecificityCalculator/css-specificity-calculator.css +203 -0
  26. package/src/tool/cssSpecificityCalculator/entry.ts +30 -0
  27. package/src/tool/cssSpecificityCalculator/index.ts +2 -32
  28. package/src/tool/cssToInlineConverter/component.astro +0 -150
  29. package/src/tool/cssToInlineConverter/css-to-inline-converter.css +148 -0
  30. package/src/tool/cssToInlineConverter/entry.ts +30 -0
  31. package/src/tool/cssToInlineConverter/index.ts +2 -32
  32. package/src/tool/duplicateCssRemover/component.astro +0 -197
  33. package/src/tool/duplicateCssRemover/duplicate-css-remover.css +195 -0
  34. package/src/tool/duplicateCssRemover/entry.ts +30 -0
  35. package/src/tool/duplicateCssRemover/index.ts +2 -32
  36. package/src/tool/generadorSecurityTxt/component.astro +0 -231
  37. package/src/tool/generadorSecurityTxt/entry.ts +29 -0
  38. package/src/tool/generadorSecurityTxt/index.ts +2 -31
  39. package/src/tool/generadorSecurityTxt/security-txt-generator-rfc-9116.css +229 -0
  40. package/src/tool/hashGenerator/component.astro +0 -229
  41. package/src/tool/hashGenerator/entry.ts +29 -0
  42. package/src/tool/hashGenerator/hash-generator.css +227 -0
  43. package/src/tool/hashGenerator/index.ts +2 -31
  44. package/src/tool/inspectorCertificadosSsl/component.astro +0 -261
  45. package/src/tool/inspectorCertificadosSsl/entry.ts +45 -0
  46. package/src/tool/inspectorCertificadosSsl/index.ts +2 -47
  47. package/src/tool/inspectorCertificadosSsl/ssl-tls-certificate-inspector.css +259 -0
  48. package/src/tool/jsonFormatter/component.astro +0 -346
  49. package/src/tool/jsonFormatter/entry.ts +30 -0
  50. package/src/tool/jsonFormatter/index.ts +2 -32
  51. package/src/tool/jsonFormatter/json-formatter.css +344 -0
  52. package/src/tool/keycode/component.astro +0 -298
  53. package/src/tool/keycode/entry.ts +30 -0
  54. package/src/tool/keycode/index.ts +2 -32
  55. package/src/tool/keycode/keycode.css +296 -0
  56. package/src/tool/llmCostCalculator/component.astro +0 -253
  57. package/src/tool/llmCostCalculator/entry.ts +46 -0
  58. package/src/tool/llmCostCalculator/index.ts +2 -48
  59. package/src/tool/llmCostCalculator/llm-cost-calculator.css +251 -0
  60. package/src/tool/mobileMockupGenerator/component.astro +0 -906
  61. package/src/tool/mobileMockupGenerator/entry.ts +45 -0
  62. package/src/tool/mobileMockupGenerator/index.ts +2 -47
  63. package/src/tool/mobileMockupGenerator/mobile-mockup-generator.css +904 -0
  64. package/src/tool/musicalTypography/component.astro +0 -291
  65. package/src/tool/musicalTypography/entry.ts +29 -0
  66. package/src/tool/musicalTypography/index.ts +2 -31
  67. package/src/tool/musicalTypography/musical-typography.css +289 -0
  68. package/src/tool/placeholderGenerator/component.astro +0 -255
  69. package/src/tool/placeholderGenerator/entry.ts +46 -0
  70. package/src/tool/placeholderGenerator/index.ts +2 -48
  71. package/src/tool/placeholderGenerator/placeholder-image-generator.css +253 -0
  72. package/src/tool/promptLibrary/component.astro +0 -689
  73. package/src/tool/promptLibrary/entry.ts +45 -0
  74. package/src/tool/promptLibrary/index.ts +2 -47
  75. package/src/tool/promptLibrary/prompt-library.css +687 -0
  76. package/src/tool/readabilityCalculator/component.astro +0 -322
  77. package/src/tool/readabilityCalculator/entry.ts +45 -0
  78. package/src/tool/readabilityCalculator/index.ts +2 -47
  79. package/src/tool/readabilityCalculator/visual-readability-calculator-wcag-apca.css +320 -0
  80. package/src/tool/svgSanitizer/component.astro +0 -289
  81. package/src/tool/svgSanitizer/entry.ts +45 -0
  82. package/src/tool/svgSanitizer/index.ts +2 -47
  83. package/src/tool/svgSanitizer/svg-sanitizer.css +287 -0
  84. package/src/tool/svgToCss/component.astro +0 -196
  85. package/src/tool/svgToCss/entry.ts +30 -0
  86. package/src/tool/svgToCss/index.ts +2 -32
  87. package/src/tool/svgToCss/svg-to-css-converter.css +194 -0
  88. package/src/tool/urlCleaner/component.astro +0 -282
  89. package/src/tool/urlCleaner/entry.ts +45 -0
  90. package/src/tool/urlCleaner/index.ts +2 -47
  91. package/src/tool/urlCleaner/url-tracking-cleaner.css +280 -0
  92. package/src/tool/urlEncoderDecoder/component.astro +0 -168
  93. package/src/tool/urlEncoderDecoder/entry.ts +30 -0
  94. package/src/tool/urlEncoderDecoder/index.ts +2 -32
  95. package/src/tool/urlEncoderDecoder/url-encoder-decoder.css +166 -0
  96. package/src/tool/utmGenerator/component.astro +0 -156
  97. package/src/tool/utmGenerator/entry.ts +29 -0
  98. package/src/tool/utmGenerator/index.ts +2 -31
  99. package/src/tool/utmGenerator/utm-generator.css +154 -0
  100. package/src/tools.ts +1 -1
@@ -1,50 +1,5 @@
1
- import type { DeveloperToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
2
- import type { PromptLibraryUI } from './ui';
3
-
4
- export type PromptLibraryLocaleContent = ToolLocaleContent<PromptLibraryUI>;
5
-
6
- import { content as es } from './i18n/es';
7
- import { content as en } from './i18n/en';
8
- import { content as fr } from './i18n/fr';
9
- import { content as de } from './i18n/de';
10
- import { content as id } from './i18n/id';
11
- import { content as it } from './i18n/it';
12
- import { content as ja } from './i18n/ja';
13
- import { content as ko } from './i18n/ko';
14
- import { content as nl } from './i18n/nl';
15
- import { content as pl } from './i18n/pl';
16
- import { content as pt } from './i18n/pt';
17
- import { content as ru } from './i18n/ru';
18
- import { content as sv } from './i18n/sv';
19
- import { content as tr } from './i18n/tr';
20
- import { content as zh } from './i18n/zh';
21
-
22
- export const promptLibrary: DeveloperToolEntry<PromptLibraryUI> = {
23
- id: 'prompt-library',
24
- icons: {
25
- bg: 'mdi:robot',
26
- fg: 'mdi:text-box-multiple',
27
- },
28
- i18n: {
29
- es: async () => es,
30
- en: async () => en,
31
- fr: async () => fr,
32
- de: async () => de,
33
- id: async () => id,
34
- it: async () => it,
35
- ja: async () => ja,
36
- ko: async () => ko,
37
- nl: async () => nl,
38
- pl: async () => pl,
39
- pt: async () => pt,
40
- ru: async () => ru,
41
- sv: async () => sv,
42
- tr: async () => tr,
43
- zh: async () => zh,
44
- },
45
- };
46
-
47
-
1
+ import { promptLibrary } from './entry';
2
+ export * from './entry';
48
3
  export const PROMPT_LIBRARY_TOOL: ToolDefinition = {
49
4
  entry: promptLibrary,
50
5
  Component: () => import('./component.astro'),
@@ -0,0 +1,687 @@
1
+ .pl-root {
2
+ width: 100%;
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: 2rem;
6
+ padding-bottom: 4rem;
7
+ }
8
+
9
+ .pl-topbar {
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: 1.5rem;
13
+ justify-content: space-between;
14
+ align-items: center;
15
+ background: rgba(255, 255, 255, 0.03);
16
+ backdrop-filter: blur(12px);
17
+ border: 1px solid rgba(255, 255, 255, 0.1);
18
+ border-radius: 1.5rem;
19
+ padding: 1rem 1.5rem;
20
+ box-shadow: 0 4px 20px -5px rgba(0, 0, 0, 0.05);
21
+ }
22
+
23
+ :global(.theme-dark) .pl-topbar {
24
+ background: rgba(15, 23, 42, 0.4);
25
+ border-color: rgba(255, 255, 255, 0.08);
26
+ }
27
+
28
+ .pl-search-wrap {
29
+ position: relative;
30
+ width: 100%;
31
+ max-width: 480px;
32
+ }
33
+
34
+ .pl-search-icon {
35
+ position: absolute;
36
+ left: 1.25rem;
37
+ top: 50%;
38
+ transform: translateY(-50%);
39
+ color: rgb(148, 163, 184);
40
+ pointer-events: none;
41
+ transition: color 0.3s;
42
+ }
43
+
44
+ .pl-search-input {
45
+ width: 100%;
46
+ padding: 1rem 1rem 1rem 3.5rem;
47
+ border-radius: 1rem;
48
+ border: 1px solid rgba(0, 0, 0, 0.1);
49
+ background: rgba(255, 255, 255, 0.8);
50
+ font-size: 1rem;
51
+ color: rgb(30, 41, 59);
52
+ transition: all 0.3s;
53
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.02);
54
+ box-sizing: border-box;
55
+ }
56
+
57
+ .pl-search-input:focus {
58
+ outline: none;
59
+ border-color: rgb(139, 92, 246);
60
+ background: rgb(255, 255, 255);
61
+ box-shadow: 0 0 0 4px rgba(139, 92, 246, 0.15);
62
+ }
63
+
64
+ :global(.theme-dark) .pl-search-input {
65
+ background: rgba(15, 23, 42, 0.6);
66
+ border-color: rgba(255, 255, 255, 0.1);
67
+ color: rgb(248, 250, 252);
68
+ }
69
+
70
+ :global(.theme-dark) .pl-search-input:focus {
71
+ background: rgba(30, 41, 59, 0.8);
72
+ }
73
+
74
+ .pl-btn {
75
+ display: inline-flex;
76
+ align-items: center;
77
+ gap: 0.5rem;
78
+ padding: 0.875rem 1.5rem;
79
+ border-radius: 1rem;
80
+ font-weight: 600;
81
+ font-size: 0.95rem;
82
+ cursor: pointer;
83
+ transition: all 0.25s;
84
+ border: none;
85
+ white-space: nowrap;
86
+ }
87
+
88
+ .pl-btn-primary {
89
+ background: linear-gradient(135deg, rgb(139, 92, 246), rgb(192, 38, 211));
90
+ color: rgb(255, 255, 255);
91
+ box-shadow: 0 4px 15px -3px rgba(192, 38, 211, 0.4);
92
+ }
93
+
94
+ .pl-btn-primary:hover {
95
+ transform: translateY(-3px) scale(1.02);
96
+ box-shadow: 0 8px 25px -5px rgba(192, 38, 211, 0.5);
97
+ }
98
+
99
+ .pl-btn-primary:active {
100
+ transform: translateY(0) scale(0.98);
101
+ }
102
+
103
+ .pl-btn-secondary {
104
+ background: rgba(139, 92, 246, 0.1);
105
+ color: rgb(139, 92, 246);
106
+ border: 1px solid rgba(139, 92, 246, 0.2);
107
+ }
108
+
109
+ .pl-btn-secondary:hover {
110
+ background: rgba(139, 92, 246, 0.2);
111
+ }
112
+
113
+ .pl-btn-ghost {
114
+ background: transparent;
115
+ color: rgb(100, 116, 139);
116
+ border: none;
117
+ }
118
+
119
+ .pl-btn-ghost:hover {
120
+ background: rgba(0, 0, 0, 0.05);
121
+ color: rgb(30, 41, 59);
122
+ }
123
+
124
+ :global(.theme-dark) .pl-btn-ghost {
125
+ color: rgb(148, 163, 184);
126
+ }
127
+
128
+ :global(.theme-dark) .pl-btn-ghost:hover {
129
+ background: rgba(255, 255, 255, 0.05);
130
+ color: rgb(248, 250, 252);
131
+ }
132
+
133
+ .pl-btn-danger {
134
+ background: rgb(239, 68, 68);
135
+ color: rgb(255, 255, 255);
136
+ border: none;
137
+ box-shadow: 0 4px 15px -3px rgba(239, 68, 68, 0.4);
138
+ }
139
+
140
+ .pl-btn-danger:hover {
141
+ background: rgb(220, 38, 38);
142
+ }
143
+
144
+ .pl-btn-icon {
145
+ display: inline-flex;
146
+ align-items: center;
147
+ justify-content: center;
148
+ padding: 0.5rem;
149
+ border-radius: 0.5rem;
150
+ background: transparent;
151
+ border: none;
152
+ color: rgb(100, 116, 139);
153
+ cursor: pointer;
154
+ transition: all 0.2s;
155
+ }
156
+
157
+ .pl-btn-icon:hover {
158
+ background: rgba(0, 0, 0, 0.05);
159
+ color: rgb(30, 41, 59);
160
+ }
161
+
162
+ .pl-btn-icon.pl-danger:hover {
163
+ color: rgb(239, 68, 68);
164
+ background: rgba(239, 68, 68, 0.1);
165
+ }
166
+
167
+ :global(.theme-dark) .pl-btn-icon {
168
+ color: rgb(148, 163, 184);
169
+ }
170
+
171
+ :global(.theme-dark) .pl-btn-icon:hover {
172
+ background: rgba(255, 255, 255, 0.1);
173
+ color: rgb(248, 250, 252);
174
+ }
175
+
176
+ .pl-empty-state {
177
+ display: flex;
178
+ flex-direction: column;
179
+ align-items: center;
180
+ justify-content: center;
181
+ text-align: center;
182
+ padding: 5rem 2rem;
183
+ background: rgba(255, 255, 255, 0.02);
184
+ border: 2px dashed rgba(0, 0, 0, 0.1);
185
+ border-radius: 1.5rem;
186
+ margin-top: 2rem;
187
+ }
188
+
189
+ :global(.theme-dark) .pl-empty-state {
190
+ border-color: rgba(255, 255, 255, 0.1);
191
+ }
192
+
193
+ .pl-empty-icon {
194
+ margin-bottom: 1.5rem;
195
+ color: rgb(139, 92, 246);
196
+ filter: drop-shadow(0 0 20px rgba(139, 92, 246, 0.4));
197
+ }
198
+
199
+ .pl-empty-title {
200
+ font-size: 1.5rem;
201
+ font-weight: 700;
202
+ color: rgb(30, 41, 59);
203
+ margin-bottom: 0.5rem;
204
+ }
205
+
206
+ .pl-empty-desc {
207
+ font-size: 1.125rem;
208
+ color: rgb(100, 116, 139);
209
+ max-width: 400px;
210
+ margin-bottom: 2rem;
211
+ line-height: 1.6;
212
+ }
213
+
214
+ :global(.theme-dark) .pl-empty-title {
215
+ color: rgb(248, 250, 252);
216
+ }
217
+
218
+ :global(.theme-dark) .pl-empty-desc {
219
+ color: rgb(148, 163, 184);
220
+ }
221
+
222
+ .pl-no-results {
223
+ text-align: center;
224
+ padding: 3rem;
225
+ color: rgb(100, 116, 139);
226
+ font-size: 1.125rem;
227
+ background: rgba(255, 255, 255, 0.02);
228
+ border-radius: 1rem;
229
+ grid-column: 1 / -1;
230
+ }
231
+
232
+ .pl-grid {
233
+ display: grid;
234
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
235
+ gap: 1.5rem;
236
+ }
237
+
238
+ .pl-card {
239
+ background: rgba(255, 255, 255, 0.6);
240
+ backdrop-filter: blur(20px);
241
+ border: 1px solid rgba(255, 255, 255, 0.5);
242
+ border-radius: 1.25rem;
243
+ padding: 1.5rem;
244
+ display: flex;
245
+ flex-direction: column;
246
+ gap: 1.25rem;
247
+ transition: all 0.3s;
248
+ box-shadow: 0 4px 10px -2px rgba(0, 0, 0, 0.03);
249
+ position: relative;
250
+ overflow: hidden;
251
+ }
252
+
253
+ .pl-card::before {
254
+ content: '';
255
+ position: absolute;
256
+ top: 0;
257
+ left: 0;
258
+ width: 100%;
259
+ height: 4px;
260
+ background: linear-gradient(90deg, rgb(139, 92, 246), rgb(192, 38, 211));
261
+ opacity: 0;
262
+ transition: opacity 0.3s;
263
+ }
264
+
265
+ .pl-card:hover {
266
+ transform: translateY(-6px);
267
+ box-shadow: 0 15px 30px -5px rgba(139, 92, 246, 0.15);
268
+ border-color: rgba(139, 92, 246, 0.3);
269
+ }
270
+
271
+ .pl-card:hover::before {
272
+ opacity: 1;
273
+ }
274
+
275
+ :global(.theme-dark) .pl-card {
276
+ background: rgba(30, 41, 59, 0.5);
277
+ border-color: rgba(255, 255, 255, 0.08);
278
+ }
279
+
280
+ .pl-card-top {
281
+ display: flex;
282
+ flex-direction: column;
283
+ gap: 0.75rem;
284
+ }
285
+
286
+ .pl-card-title {
287
+ margin: 0;
288
+ font-size: 1.25rem;
289
+ font-weight: 700;
290
+ color: rgb(15, 23, 42);
291
+ line-height: 1.3;
292
+ }
293
+
294
+ :global(.theme-dark) .pl-card-title {
295
+ color: rgb(248, 250, 252);
296
+ }
297
+
298
+ .pl-card-actions {
299
+ display: flex;
300
+ gap: 0.25rem;
301
+ justify-content: flex-end;
302
+ }
303
+
304
+ .pl-card-body {
305
+ flex-grow: 1;
306
+ background: rgba(0, 0, 0, 0.02);
307
+ border-radius: 0.75rem;
308
+ padding: 1rem;
309
+ border: 1px solid rgba(0, 0, 0, 0.03);
310
+ }
311
+
312
+ :global(.theme-dark) .pl-card-body {
313
+ background: rgba(15, 23, 42, 0.4);
314
+ border-color: rgba(255, 255, 255, 0.05);
315
+ }
316
+
317
+ .pl-card-text {
318
+ margin: 0;
319
+ font-size: 0.95rem;
320
+ line-height: 1.6;
321
+ color: rgb(71, 85, 105);
322
+ white-space: pre-wrap;
323
+ overflow: hidden;
324
+ display: -webkit-box;
325
+ -webkit-line-clamp: 5;
326
+ line-clamp: 5;
327
+ -webkit-box-orient: vertical;
328
+ }
329
+
330
+ :global(.theme-dark) .pl-card-text {
331
+ color: rgb(203, 213, 225);
332
+ }
333
+
334
+ .pl-tags-container {
335
+ display: flex;
336
+ flex-wrap: wrap;
337
+ gap: 0.5rem;
338
+ }
339
+
340
+ .pl-card-tag {
341
+ background: rgba(139, 92, 246, 0.1);
342
+ color: rgb(124, 58, 237);
343
+ padding: 0.35rem 0.75rem;
344
+ border-radius: 9999px;
345
+ font-size: 0.75rem;
346
+ font-weight: 600;
347
+ letter-spacing: 0.025em;
348
+ text-transform: uppercase;
349
+ }
350
+
351
+ :global(.theme-dark) .pl-card-tag {
352
+ background: rgba(139, 92, 246, 0.15);
353
+ color: rgb(167, 139, 250);
354
+ }
355
+
356
+ .pl-star-btn {
357
+ color: rgb(203, 213, 225);
358
+ }
359
+
360
+ .pl-star-btn:hover {
361
+ color: rgb(245, 158, 11);
362
+ background: rgba(245, 158, 11, 0.1);
363
+ }
364
+
365
+ .pl-star-icon.pl-starred {
366
+ color: rgb(245, 158, 11);
367
+ fill: rgb(245, 158, 11);
368
+ }
369
+
370
+ .pl-var-highlight {
371
+ background: rgba(139, 92, 246, 0.2);
372
+ color: rgb(124, 58, 237);
373
+ padding: 0 0.25rem;
374
+ border-radius: 0.25rem;
375
+ font-weight: 600;
376
+ }
377
+
378
+ .pl-var-highlight.pl-var-filled {
379
+ background: rgba(16, 185, 129, 0.2);
380
+ color: rgb(5, 150, 105);
381
+ }
382
+
383
+ :global(.theme-dark) .pl-var-highlight {
384
+ background: rgba(139, 92, 246, 0.3);
385
+ color: rgb(167, 139, 250);
386
+ }
387
+
388
+ :global(.theme-dark) .pl-var-highlight.pl-var-filled {
389
+ background: rgba(16, 185, 129, 0.3);
390
+ color: rgb(52, 211, 153);
391
+ }
392
+
393
+ .pl-card-vars {
394
+ margin-top: 0.5rem;
395
+ display: flex;
396
+ flex-direction: column;
397
+ gap: 0.5rem;
398
+ background: rgba(139, 92, 246, 0.05);
399
+ padding: 1rem;
400
+ border-radius: 0.75rem;
401
+ border: 1px dashed rgba(139, 92, 246, 0.3);
402
+ }
403
+
404
+ .pl-card-vars-title {
405
+ font-size: 0.85rem;
406
+ font-weight: 600;
407
+ color: rgb(139, 92, 246);
408
+ text-transform: uppercase;
409
+ letter-spacing: 0.05em;
410
+ margin: 0;
411
+ }
412
+
413
+ .pl-var-input {
414
+ width: 100%;
415
+ padding: 0.5rem 0.75rem;
416
+ border-radius: 0.5rem;
417
+ border: 1px solid rgba(0, 0, 0, 0.1);
418
+ background: rgba(255, 255, 255, 0.8);
419
+ font-size: 0.9rem;
420
+ color: rgb(30, 41, 59);
421
+ box-sizing: border-box;
422
+ }
423
+
424
+ :global(.theme-dark) .pl-var-input {
425
+ background: rgba(15, 23, 42, 0.5);
426
+ border-color: rgba(255, 255, 255, 0.1);
427
+ color: rgb(248, 250, 252);
428
+ }
429
+
430
+ .pl-modal {
431
+ padding: 0;
432
+ border: none;
433
+ background: transparent;
434
+ max-width: 600px;
435
+ width: 90%;
436
+ border-radius: 1.5rem;
437
+ margin: auto;
438
+ overflow: visible;
439
+ }
440
+
441
+ .pl-modal::backdrop {
442
+ background: rgba(15, 23, 42, 0.6);
443
+ backdrop-filter: blur(8px);
444
+ opacity: 0;
445
+ transition: opacity 0.3s;
446
+ }
447
+
448
+ .pl-modal[open]::backdrop {
449
+ opacity: 1;
450
+ }
451
+
452
+ .pl-modal-container {
453
+ background: rgb(255, 255, 255);
454
+ border-radius: 1.5rem;
455
+ padding: 2rem;
456
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
457
+ transform: scale(0.95) translateY(20px);
458
+ opacity: 0;
459
+ transition: all 0.3s;
460
+ border: 1px solid rgba(0, 0, 0, 0.1);
461
+ }
462
+
463
+ :global(.theme-dark) .pl-modal-container {
464
+ background: rgb(30, 41, 59);
465
+ border-color: rgba(255, 255, 255, 0.1);
466
+ }
467
+
468
+ .pl-modal.pl-modal-open .pl-modal-container {
469
+ transform: scale(1) translateY(0);
470
+ opacity: 1;
471
+ }
472
+
473
+ .pl-modal-header {
474
+ display: flex;
475
+ justify-content: space-between;
476
+ align-items: center;
477
+ margin-bottom: 2rem;
478
+ }
479
+
480
+ .pl-modal-title {
481
+ margin: 0;
482
+ font-size: 1.5rem;
483
+ font-weight: 800;
484
+ background: linear-gradient(135deg, rgb(139, 92, 246), rgb(192, 38, 211));
485
+ -webkit-background-clip: text;
486
+ background-clip: text;
487
+ -webkit-text-fill-color: transparent;
488
+ }
489
+
490
+ .pl-form {
491
+ display: flex;
492
+ flex-direction: column;
493
+ gap: 1.5rem;
494
+ }
495
+
496
+ .pl-form-group {
497
+ display: flex;
498
+ flex-direction: column;
499
+ gap: 0.5rem;
500
+ }
501
+
502
+ .pl-label {
503
+ font-weight: 600;
504
+ font-size: 0.95rem;
505
+ color: rgb(51, 65, 85);
506
+ }
507
+
508
+ :global(.theme-dark) .pl-label {
509
+ color: rgb(226, 232, 240);
510
+ }
511
+
512
+ .pl-input {
513
+ width: 100%;
514
+ padding: 1rem;
515
+ border-radius: 1rem;
516
+ border: 1px solid rgba(0, 0, 0, 0.15);
517
+ background: rgb(248, 250, 252);
518
+ font-size: 1rem;
519
+ color: rgb(30, 41, 59);
520
+ transition: all 0.2s;
521
+ box-sizing: border-box;
522
+ }
523
+
524
+ .pl-textarea {
525
+ width: 100%;
526
+ padding: 1rem;
527
+ border-radius: 1rem;
528
+ border: 1px solid rgba(0, 0, 0, 0.15);
529
+ background: rgb(248, 250, 252);
530
+ font-size: 1rem;
531
+ color: rgb(30, 41, 59);
532
+ transition: all 0.2s;
533
+ box-sizing: border-box;
534
+ min-height: 150px;
535
+ resize: vertical;
536
+ line-height: 1.6;
537
+ }
538
+
539
+ :global(.theme-dark) .pl-input {
540
+ background: rgba(15, 23, 42, 0.6);
541
+ border-color: rgba(255, 255, 255, 0.1);
542
+ color: rgb(248, 250, 252);
543
+ }
544
+
545
+ :global(.theme-dark) .pl-textarea {
546
+ background: rgba(15, 23, 42, 0.6);
547
+ border-color: rgba(255, 255, 255, 0.1);
548
+ color: rgb(248, 250, 252);
549
+ }
550
+
551
+ .pl-input:focus {
552
+ outline: none;
553
+ border-color: rgb(139, 92, 246);
554
+ background: rgb(255, 255, 255);
555
+ box-shadow: 0 0 0 4px rgba(139, 92, 246, 0.15);
556
+ }
557
+
558
+ .pl-textarea:focus {
559
+ outline: none;
560
+ border-color: rgb(139, 92, 246);
561
+ background: rgb(255, 255, 255);
562
+ box-shadow: 0 0 0 4px rgba(139, 92, 246, 0.15);
563
+ }
564
+
565
+ :global(.theme-dark) .pl-input:focus {
566
+ background: rgba(15, 23, 42, 0.9);
567
+ }
568
+
569
+ :global(.theme-dark) .pl-textarea:focus {
570
+ background: rgba(15, 23, 42, 0.9);
571
+ }
572
+
573
+ .pl-hint {
574
+ font-size: 0.85rem;
575
+ color: rgb(100, 116, 139);
576
+ margin-top: 0.25rem;
577
+ }
578
+
579
+ :global(.theme-dark) .pl-hint {
580
+ color: rgb(148, 163, 184);
581
+ }
582
+
583
+ .pl-tags-input-wrapper {
584
+ display: flex;
585
+ flex-wrap: wrap;
586
+ gap: 0.5rem;
587
+ padding: 0.5rem 1rem;
588
+ border-radius: 1rem;
589
+ border: 1px solid rgba(0, 0, 0, 0.15);
590
+ background: rgb(248, 250, 252);
591
+ min-height: 3.5rem;
592
+ transition: all 0.2s;
593
+ align-items: center;
594
+ cursor: text;
595
+ }
596
+
597
+ :global(.theme-dark) .pl-tags-input-wrapper {
598
+ background: rgba(15, 23, 42, 0.6);
599
+ border-color: rgba(255, 255, 255, 0.1);
600
+ }
601
+
602
+ .pl-tags-input-wrapper:focus-within {
603
+ border-color: rgb(139, 92, 246);
604
+ background: rgb(255, 255, 255);
605
+ box-shadow: 0 0 0 4px rgba(139, 92, 246, 0.15);
606
+ }
607
+
608
+ :global(.theme-dark) .pl-tags-input-wrapper:focus-within {
609
+ background: rgba(15, 23, 42, 0.9);
610
+ }
611
+
612
+ .pl-tags-list {
613
+ display: flex;
614
+ flex-wrap: wrap;
615
+ gap: 0.5rem;
616
+ }
617
+
618
+ .pl-tags-input-field {
619
+ flex-grow: 1;
620
+ min-width: 150px;
621
+ border: none;
622
+ background: transparent;
623
+ font-size: 1rem;
624
+ color: rgb(30, 41, 59);
625
+ padding: 0.25rem 0;
626
+ outline: none;
627
+ }
628
+
629
+ :global(.theme-dark) .pl-tags-input-field {
630
+ color: rgb(248, 250, 252);
631
+ }
632
+
633
+ .pl-modal-footer {
634
+ display: flex;
635
+ justify-content: flex-end;
636
+ gap: 1rem;
637
+ margin-top: 1rem;
638
+ padding-top: 1.5rem;
639
+ border-top: 1px solid rgba(0, 0, 0, 0.05);
640
+ }
641
+
642
+ :global(.theme-dark) .pl-modal-footer {
643
+ border-top-color: rgba(255, 255, 255, 0.05);
644
+ }
645
+
646
+ .pl-confirm-dialog {
647
+ max-width: 400px;
648
+ }
649
+
650
+ .pl-confirm-container {
651
+ text-align: center;
652
+ }
653
+
654
+ .pl-confirm-icon {
655
+ margin-bottom: 1rem;
656
+ color: rgb(239, 68, 68);
657
+ }
658
+
659
+ .pl-confirm-title {
660
+ font-size: 1.25rem;
661
+ font-weight: 700;
662
+ color: rgb(15, 23, 42);
663
+ margin-bottom: 0.5rem;
664
+ }
665
+
666
+ :global(.theme-dark) .pl-confirm-title {
667
+ color: rgb(248, 250, 252);
668
+ }
669
+
670
+ .pl-confirm-desc {
671
+ font-size: 1rem;
672
+ color: rgb(100, 116, 139);
673
+ margin-bottom: 1.5rem;
674
+ }
675
+
676
+ .pl-confirm-actions {
677
+ display: flex;
678
+ justify-content: center;
679
+ gap: 1rem;
680
+ }
681
+
682
+ @media (min-width: 768px) {
683
+ .pl-topbar {
684
+ flex-direction: row;
685
+ padding: 1.25rem 2rem;
686
+ }
687
+ }