next-blogpanel 1.0.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 (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -0
  3. package/dist/admin/index.cjs +3062 -0
  4. package/dist/admin/index.cjs.map +1 -0
  5. package/dist/admin/index.d.cts +51 -0
  6. package/dist/admin/index.d.ts +51 -0
  7. package/dist/admin/index.js +3029 -0
  8. package/dist/admin/index.js.map +1 -0
  9. package/dist/api/categories.cjs +82 -0
  10. package/dist/api/categories.cjs.map +1 -0
  11. package/dist/api/categories.d.cts +27 -0
  12. package/dist/api/categories.d.ts +27 -0
  13. package/dist/api/categories.js +77 -0
  14. package/dist/api/categories.js.map +1 -0
  15. package/dist/api/media-file.cjs +46 -0
  16. package/dist/api/media-file.cjs.map +1 -0
  17. package/dist/api/media-file.d.cts +7 -0
  18. package/dist/api/media-file.d.ts +7 -0
  19. package/dist/api/media-file.js +44 -0
  20. package/dist/api/media-file.js.map +1 -0
  21. package/dist/api/media.cjs +180 -0
  22. package/dist/api/media.cjs.map +1 -0
  23. package/dist/api/media.d.cts +22 -0
  24. package/dist/api/media.d.ts +22 -0
  25. package/dist/api/media.js +176 -0
  26. package/dist/api/media.js.map +1 -0
  27. package/dist/api/posts.cjs +103 -0
  28. package/dist/api/posts.cjs.map +1 -0
  29. package/dist/api/posts.d.cts +27 -0
  30. package/dist/api/posts.d.ts +27 -0
  31. package/dist/api/posts.js +98 -0
  32. package/dist/api/posts.js.map +1 -0
  33. package/dist/api/rss.cjs +25 -0
  34. package/dist/api/rss.cjs.map +1 -0
  35. package/dist/api/rss.d.cts +5 -0
  36. package/dist/api/rss.d.ts +5 -0
  37. package/dist/api/rss.js +23 -0
  38. package/dist/api/rss.js.map +1 -0
  39. package/dist/api/settings.cjs +40 -0
  40. package/dist/api/settings.cjs.map +1 -0
  41. package/dist/api/settings.d.cts +17 -0
  42. package/dist/api/settings.d.ts +17 -0
  43. package/dist/api/settings.js +37 -0
  44. package/dist/api/settings.js.map +1 -0
  45. package/dist/api/sitemap.cjs +25 -0
  46. package/dist/api/sitemap.cjs.map +1 -0
  47. package/dist/api/sitemap.d.cts +5 -0
  48. package/dist/api/sitemap.d.ts +5 -0
  49. package/dist/api/sitemap.js +23 -0
  50. package/dist/api/sitemap.js.map +1 -0
  51. package/dist/api/tokens.cjs +56 -0
  52. package/dist/api/tokens.cjs.map +1 -0
  53. package/dist/api/tokens.d.cts +22 -0
  54. package/dist/api/tokens.d.ts +22 -0
  55. package/dist/api/tokens.js +52 -0
  56. package/dist/api/tokens.js.map +1 -0
  57. package/dist/chunk-2M46MMWN.cjs +76 -0
  58. package/dist/chunk-2M46MMWN.cjs.map +1 -0
  59. package/dist/chunk-4GK22Q3R.cjs +229 -0
  60. package/dist/chunk-4GK22Q3R.cjs.map +1 -0
  61. package/dist/chunk-6PZ772NQ.js +595 -0
  62. package/dist/chunk-6PZ772NQ.js.map +1 -0
  63. package/dist/chunk-BZXPRGLN.cjs +351 -0
  64. package/dist/chunk-BZXPRGLN.cjs.map +1 -0
  65. package/dist/chunk-DAX5C6SC.cjs +86 -0
  66. package/dist/chunk-DAX5C6SC.cjs.map +1 -0
  67. package/dist/chunk-DWNMHQ4I.cjs +57 -0
  68. package/dist/chunk-DWNMHQ4I.cjs.map +1 -0
  69. package/dist/chunk-FPGVR2BX.cjs +121 -0
  70. package/dist/chunk-FPGVR2BX.cjs.map +1 -0
  71. package/dist/chunk-JBP3G4QJ.js +50 -0
  72. package/dist/chunk-JBP3G4QJ.js.map +1 -0
  73. package/dist/chunk-JDP4DIHI.js +215 -0
  74. package/dist/chunk-JDP4DIHI.js.map +1 -0
  75. package/dist/chunk-LIZOVA4W.js +118 -0
  76. package/dist/chunk-LIZOVA4W.js.map +1 -0
  77. package/dist/chunk-QLBTOCT3.js +118 -0
  78. package/dist/chunk-QLBTOCT3.js.map +1 -0
  79. package/dist/chunk-UI2KDZ5H.js +344 -0
  80. package/dist/chunk-UI2KDZ5H.js.map +1 -0
  81. package/dist/chunk-V7QPRX4A.cjs +125 -0
  82. package/dist/chunk-V7QPRX4A.cjs.map +1 -0
  83. package/dist/chunk-VEJFN65Y.js +82 -0
  84. package/dist/chunk-VEJFN65Y.js.map +1 -0
  85. package/dist/chunk-WYZFAI6O.js +74 -0
  86. package/dist/chunk-WYZFAI6O.js.map +1 -0
  87. package/dist/chunk-XLYTATRQ.cjs +637 -0
  88. package/dist/chunk-XLYTATRQ.cjs.map +1 -0
  89. package/dist/cli/index.cjs +2036 -0
  90. package/dist/components/index.cjs +647 -0
  91. package/dist/components/index.cjs.map +1 -0
  92. package/dist/components/index.d.cts +187 -0
  93. package/dist/components/index.d.ts +187 -0
  94. package/dist/components/index.js +633 -0
  95. package/dist/components/index.js.map +1 -0
  96. package/dist/db-M3KXLBUP.js +3 -0
  97. package/dist/db-M3KXLBUP.js.map +1 -0
  98. package/dist/db-TDCZNY3Q.cjs +112 -0
  99. package/dist/db-TDCZNY3Q.cjs.map +1 -0
  100. package/dist/editor/index.cjs +1126 -0
  101. package/dist/editor/index.cjs.map +1 -0
  102. package/dist/editor/index.d.cts +137 -0
  103. package/dist/editor/index.d.ts +137 -0
  104. package/dist/editor/index.js +1093 -0
  105. package/dist/editor/index.js.map +1 -0
  106. package/dist/index-BcNka7gK.d.cts +475 -0
  107. package/dist/index-DPRgaNEE.d.ts +475 -0
  108. package/dist/index.cjs +433 -0
  109. package/dist/index.cjs.map +1 -0
  110. package/dist/index.d.cts +27 -0
  111. package/dist/index.d.ts +27 -0
  112. package/dist/index.js +209 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/lib/index.cjs +193 -0
  115. package/dist/lib/index.cjs.map +1 -0
  116. package/dist/lib/index.d.cts +4 -0
  117. package/dist/lib/index.d.ts +4 -0
  118. package/dist/lib/index.js +8 -0
  119. package/dist/lib/index.js.map +1 -0
  120. package/dist/styles/admin.css +667 -0
  121. package/dist/styles/blog.css +851 -0
  122. package/dist/styles/editor.css +452 -0
  123. package/dist/styles/globals.css +270 -0
  124. package/dist/styles/prose.css +299 -0
  125. package/dist/types-CgrBuig-.d.cts +778 -0
  126. package/dist/types-CgrBuig-.d.ts +778 -0
  127. package/package.json +140 -0
@@ -0,0 +1,851 @@
1
+ /* Next BlogPanel — Public Blog Styles */
2
+ @import './globals.css';
3
+ @import './prose.css';
4
+
5
+ /* Blog List Page */
6
+ .nbp-blog-list {
7
+ max-width: 1200px;
8
+ margin: 0 auto;
9
+ padding: 2rem 1rem;
10
+ font-family: var(--nbp-font-body);
11
+ animation: nbp-fade-in 0.3s var(--nbp-transition);
12
+ }
13
+
14
+ .nbp-blog-header {
15
+ margin-bottom: 2rem;
16
+ }
17
+
18
+ .nbp-blog-layout {
19
+ display: grid;
20
+ grid-template-columns: 1fr 280px;
21
+ gap: 2rem;
22
+ }
23
+
24
+ .nbp-blog-sidebar {
25
+ border-left: 1px solid var(--nbp-border);
26
+ padding-left: 2rem;
27
+ }
28
+
29
+ /* Post Grid Layouts */
30
+ .nbp-posts-grid {
31
+ display: grid;
32
+ grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
33
+ gap: 1.5rem;
34
+ }
35
+
36
+ .nbp-posts-list {
37
+ display: flex;
38
+ flex-direction: column;
39
+ gap: 1.5rem;
40
+ }
41
+
42
+ .nbp-posts-magazine {
43
+ display: grid;
44
+ grid-template-columns: 1fr 1fr;
45
+ gap: 1.5rem;
46
+ }
47
+
48
+ .nbp-posts-magazine > :first-child {
49
+ grid-column: 1 / -1;
50
+ }
51
+
52
+ /* Blog Card */
53
+ .nbp-card {
54
+ background: white;
55
+ border: 1px solid #f3f4f6;
56
+ border-radius: 0.75rem;
57
+ overflow: hidden;
58
+ box-shadow: var(--nbp-shadow-sm);
59
+ transition: all 0.3s var(--nbp-transition);
60
+ }
61
+
62
+ .nbp-card:hover {
63
+ box-shadow: var(--nbp-shadow-xl);
64
+ transform: translateY(-4px);
65
+ }
66
+
67
+ .nbp-card-link {
68
+ display: block;
69
+ text-decoration: none;
70
+ color: inherit;
71
+ }
72
+
73
+ .nbp-card-horizontal .nbp-card-link {
74
+ display: grid;
75
+ grid-template-columns: 280px 1fr;
76
+ }
77
+
78
+ .nbp-card-image {
79
+ height: 13rem;
80
+ overflow: hidden;
81
+ background: var(--nbp-bg-secondary);
82
+ }
83
+
84
+ .nbp-card-image img {
85
+ width: 100%;
86
+ height: 100%;
87
+ object-fit: cover;
88
+ transition: transform 0.5s var(--nbp-transition);
89
+ }
90
+
91
+ .nbp-card:hover .nbp-card-image img {
92
+ transform: scale(1.05);
93
+ }
94
+
95
+ .nbp-card-content {
96
+ padding: 1.25rem;
97
+ }
98
+
99
+ .nbp-card-categories {
100
+ display: flex;
101
+ flex-wrap: wrap;
102
+ gap: 0.375rem;
103
+ margin-bottom: 0.75rem;
104
+ }
105
+
106
+ .nbp-card-category {
107
+ font-size: 0.75rem;
108
+ font-weight: 600;
109
+ color: var(--nbp-primary);
110
+ background: var(--nbp-primary-light);
111
+ padding: 0.25rem 0.625rem;
112
+ border-radius: 9999px;
113
+ text-transform: uppercase;
114
+ letter-spacing: 0.05em;
115
+ }
116
+
117
+ .nbp-card-title {
118
+ font-family: var(--nbp-font-heading);
119
+ font-size: 1.25rem;
120
+ font-weight: 700;
121
+ line-height: 1.3;
122
+ margin: 0 0 0.5rem;
123
+ color: var(--nbp-text);
124
+ display: -webkit-box;
125
+ -webkit-line-clamp: 2;
126
+ -webkit-box-orient: vertical;
127
+ overflow: hidden;
128
+ }
129
+
130
+ .nbp-card-excerpt {
131
+ font-size: 0.9375rem;
132
+ color: #6b7280;
133
+ line-height: 1.5;
134
+ margin: 0 0 1rem;
135
+ display: -webkit-box;
136
+ -webkit-line-clamp: 2;
137
+ -webkit-box-orient: vertical;
138
+ overflow: hidden;
139
+ }
140
+
141
+ .nbp-card-meta {
142
+ display: flex;
143
+ align-items: center;
144
+ gap: 0.5rem;
145
+ font-size: 0.875rem;
146
+ color: #6b7280;
147
+ }
148
+
149
+ .nbp-card-avatar {
150
+ width: 24px;
151
+ height: 24px;
152
+ border-radius: 50%;
153
+ }
154
+
155
+ .nbp-card-sep {
156
+ width: 4px;
157
+ height: 4px;
158
+ background: #d1d5db;
159
+ border-radius: 50%;
160
+ flex-shrink: 0;
161
+ }
162
+
163
+ /* Single Post Page */
164
+ .nbp-post {
165
+ max-width: 800px;
166
+ margin: 0 auto;
167
+ padding: 2rem 1rem;
168
+ font-family: var(--nbp-font-body);
169
+ animation: nbp-fade-in 0.4s var(--nbp-transition);
170
+ }
171
+
172
+ .nbp-post-header {
173
+ margin-bottom: 2rem;
174
+ }
175
+
176
+ .nbp-post-categories {
177
+ display: flex;
178
+ flex-wrap: wrap;
179
+ gap: 0.5rem;
180
+ margin-bottom: 0.75rem;
181
+ }
182
+
183
+ .nbp-post-category {
184
+ font-size: 0.75rem;
185
+ font-weight: 600;
186
+ color: var(--nbp-primary);
187
+ background: var(--nbp-primary-light);
188
+ padding: 0.25rem 0.625rem;
189
+ border-radius: 9999px;
190
+ text-decoration: none;
191
+ text-transform: uppercase;
192
+ letter-spacing: 0.05em;
193
+ transition: background 0.2s var(--nbp-transition);
194
+ }
195
+
196
+ .nbp-post-category:hover {
197
+ background: #bfdbfe;
198
+ }
199
+
200
+ .nbp-post-title {
201
+ font-family: var(--nbp-font-heading);
202
+ font-size: 2.5rem;
203
+ font-weight: 700;
204
+ line-height: 1.15;
205
+ margin: 0 0 1rem;
206
+ letter-spacing: -0.025em;
207
+ color: var(--nbp-text);
208
+ }
209
+
210
+ .nbp-post-meta {
211
+ display: flex;
212
+ align-items: center;
213
+ gap: 0.5rem;
214
+ font-size: 0.875rem;
215
+ color: #6b7280;
216
+ }
217
+
218
+ .nbp-post-avatar {
219
+ width: 32px;
220
+ height: 32px;
221
+ border-radius: 50%;
222
+ }
223
+
224
+ .nbp-post-sep {
225
+ width: 4px;
226
+ height: 4px;
227
+ background: #d1d5db;
228
+ border-radius: 50%;
229
+ flex-shrink: 0;
230
+ }
231
+
232
+ .nbp-post-cover {
233
+ margin: 2rem -1rem;
234
+ }
235
+
236
+ .nbp-post-cover img,
237
+ .nbp-post-cover-img {
238
+ width: 100%;
239
+ height: auto;
240
+ border-radius: 0.75rem;
241
+ }
242
+
243
+ .nbp-post-layout {
244
+ position: relative;
245
+ }
246
+
247
+ /* When post has sidebar TOC, switch to wider container with grid */
248
+ .nbp-post-with-toc {
249
+ max-width: 1200px;
250
+ }
251
+
252
+ .nbp-post-with-toc .nbp-post-layout {
253
+ display: grid;
254
+ grid-template-columns: 220px 1fr;
255
+ gap: 2.5rem;
256
+ }
257
+
258
+ .nbp-post-with-toc .nbp-post-header,
259
+ .nbp-post-with-toc .nbp-post-cover,
260
+ .nbp-post-with-toc .nbp-post-toc-inline,
261
+ .nbp-post-with-toc .nbp-post-tags,
262
+ .nbp-post-with-toc .nbp-share-buttons,
263
+ .nbp-post-with-toc .nbp-author-card,
264
+ .nbp-post-with-toc .nbp-related,
265
+ .nbp-post-with-toc .nbp-breadcrumb {
266
+ max-width: 800px;
267
+ }
268
+
269
+ .nbp-post-toc-sidebar {
270
+ position: sticky;
271
+ top: 6rem;
272
+ height: fit-content;
273
+ max-height: calc(100vh - 8rem);
274
+ overflow-y: auto;
275
+ }
276
+
277
+ /* Inline TOC (top of post) */
278
+ .nbp-post-toc-inline {
279
+ background: var(--nbp-bg-secondary);
280
+ border: 1px solid var(--nbp-border);
281
+ border-radius: 0.75rem;
282
+ padding: 1.25rem 1.5rem;
283
+ margin: 1.5rem 0 2rem;
284
+ }
285
+
286
+ .nbp-post-tags {
287
+ display: flex;
288
+ flex-wrap: wrap;
289
+ gap: 0.5rem;
290
+ margin: 2rem 0;
291
+ }
292
+
293
+ .nbp-tag {
294
+ display: inline-block;
295
+ padding: 0.25rem 0.75rem;
296
+ border-radius: 9999px;
297
+ background: var(--nbp-primary-light);
298
+ color: var(--nbp-primary);
299
+ font-size: 0.8125rem;
300
+ font-weight: 500;
301
+ text-decoration: none;
302
+ transition: all 0.2s var(--nbp-transition);
303
+ }
304
+
305
+ .nbp-tag:hover {
306
+ background: #bfdbfe;
307
+ color: var(--nbp-primary-hover);
308
+ }
309
+
310
+ /* Search */
311
+ .nbp-search {
312
+ position: relative;
313
+ max-width: 400px;
314
+ }
315
+
316
+ .nbp-search-form {
317
+ position: relative;
318
+ }
319
+
320
+ .nbp-search-input {
321
+ width: 100%;
322
+ padding: 0.75rem 1rem 0.75rem 2.75rem;
323
+ border: 1px solid var(--nbp-border);
324
+ border-radius: 9999px;
325
+ font-size: 0.9375rem;
326
+ background: var(--nbp-bg);
327
+ color: var(--nbp-text);
328
+ transition: all 0.2s var(--nbp-transition);
329
+ }
330
+
331
+ .nbp-search-input:focus {
332
+ outline: none;
333
+ border-color: var(--nbp-primary);
334
+ box-shadow: var(--nbp-focus-ring);
335
+ }
336
+
337
+ .nbp-search-spinner {
338
+ position: absolute;
339
+ right: 0.75rem;
340
+ top: 50%;
341
+ transform: translateY(-50%);
342
+ width: 16px;
343
+ height: 16px;
344
+ border: 2px solid var(--nbp-border);
345
+ border-top-color: var(--nbp-primary);
346
+ border-radius: 50%;
347
+ animation: nbp-spin 0.6s linear infinite;
348
+ }
349
+
350
+ @keyframes nbp-spin {
351
+ to { transform: translateY(-50%) rotate(360deg); }
352
+ }
353
+
354
+ .nbp-search-results {
355
+ position: absolute;
356
+ top: 100%;
357
+ left: 0;
358
+ right: 0;
359
+ background: var(--nbp-card-bg);
360
+ border: 1px solid var(--nbp-border);
361
+ border-radius: 0.75rem;
362
+ box-shadow: var(--nbp-shadow-lg);
363
+ margin-top: 0.5rem;
364
+ z-index: 50;
365
+ max-height: 320px;
366
+ overflow-y: auto;
367
+ animation: nbp-slide-in 0.15s var(--nbp-transition);
368
+ }
369
+
370
+ .nbp-search-result {
371
+ display: block;
372
+ padding: 0.75rem 1rem;
373
+ text-decoration: none;
374
+ border-bottom: 1px solid var(--nbp-border);
375
+ color: var(--nbp-text);
376
+ transition: background 0.15s var(--nbp-transition);
377
+ }
378
+
379
+ .nbp-search-result:last-child {
380
+ border-bottom: none;
381
+ }
382
+
383
+ .nbp-search-result:hover {
384
+ background: var(--nbp-bg-secondary);
385
+ }
386
+
387
+ .nbp-search-result-title {
388
+ font-weight: 500;
389
+ margin-bottom: 0.125rem;
390
+ }
391
+
392
+ .nbp-search-result-excerpt {
393
+ font-size: 0.8125rem;
394
+ color: var(--nbp-text-muted);
395
+ }
396
+
397
+ /* Table of Contents */
398
+ .nbp-toc {
399
+ font-size: 0.875rem;
400
+ }
401
+
402
+ .nbp-toc-title {
403
+ font-size: 0.8125rem;
404
+ font-weight: 600;
405
+ text-transform: uppercase;
406
+ letter-spacing: 0.05em;
407
+ color: var(--nbp-text-muted);
408
+ margin: 0 0 0.75rem;
409
+ }
410
+
411
+ .nbp-toc-list {
412
+ list-style: none;
413
+ padding: 0;
414
+ margin: 0;
415
+ }
416
+
417
+ .nbp-toc-item {
418
+ margin: 0;
419
+ }
420
+
421
+ .nbp-toc-level-3 { padding-left: 1rem; }
422
+ .nbp-toc-level-4 { padding-left: 2rem; }
423
+
424
+ .nbp-toc-link {
425
+ display: block;
426
+ padding: 0.25rem 0.5rem;
427
+ color: var(--nbp-text-muted);
428
+ text-decoration: none;
429
+ border-left: 2px solid transparent;
430
+ transition: all 0.2s var(--nbp-transition);
431
+ }
432
+
433
+ .nbp-toc-link:hover {
434
+ color: var(--nbp-text);
435
+ }
436
+
437
+ .nbp-toc-item.active .nbp-toc-link {
438
+ color: var(--nbp-primary);
439
+ border-left-color: var(--nbp-primary);
440
+ font-weight: 500;
441
+ }
442
+
443
+ /* Share Buttons */
444
+ .nbp-share {
445
+ display: flex;
446
+ align-items: center;
447
+ gap: 1rem;
448
+ padding: 1.5rem 0;
449
+ border-top: 1px solid var(--nbp-border);
450
+ border-bottom: 1px solid var(--nbp-border);
451
+ margin: 2rem 0;
452
+ }
453
+
454
+ .nbp-share-label {
455
+ font-size: 0.875rem;
456
+ font-weight: 500;
457
+ color: var(--nbp-text-muted);
458
+ }
459
+
460
+ .nbp-share-buttons {
461
+ display: flex;
462
+ gap: 0.5rem;
463
+ }
464
+
465
+ .nbp-share-btn {
466
+ display: flex;
467
+ align-items: center;
468
+ justify-content: center;
469
+ width: 40px;
470
+ height: 40px;
471
+ border: none;
472
+ border-radius: 9999px;
473
+ background: #f3f4f6;
474
+ color: var(--nbp-text-muted);
475
+ cursor: pointer;
476
+ transition: all 0.2s var(--nbp-transition);
477
+ }
478
+
479
+ .nbp-share-btn:hover {
480
+ background: var(--nbp-primary-light);
481
+ color: var(--nbp-primary);
482
+ transform: translateY(-1px);
483
+ }
484
+
485
+ /* Reading Progress Bar */
486
+ .nbp-progress-bar {
487
+ position: fixed;
488
+ top: 0;
489
+ left: 0;
490
+ right: 0;
491
+ height: 3px;
492
+ z-index: 9999;
493
+ background: transparent;
494
+ }
495
+
496
+ .nbp-progress-fill {
497
+ height: 100%;
498
+ background: linear-gradient(to right, var(--nbp-primary), #3b82f6);
499
+ transition: width 0.1s;
500
+ }
501
+
502
+ /* Author Card */
503
+ .nbp-author-card {
504
+ display: flex;
505
+ gap: 1.25rem;
506
+ padding: 1.5rem;
507
+ background: linear-gradient(to right, #f9fafb, rgba(219, 234, 254, 0.3));
508
+ border: 1px solid #f3f4f6;
509
+ border-radius: 1rem;
510
+ margin: 2rem 0;
511
+ }
512
+
513
+ .nbp-author-avatar {
514
+ width: 64px;
515
+ height: 64px;
516
+ border-radius: 50%;
517
+ flex-shrink: 0;
518
+ background: linear-gradient(135deg, var(--nbp-primary-light), var(--nbp-primary));
519
+ padding: 2px;
520
+ }
521
+
522
+ .nbp-author-avatar img {
523
+ width: 100%;
524
+ height: 100%;
525
+ border-radius: 50%;
526
+ object-fit: cover;
527
+ }
528
+
529
+ .nbp-author-name {
530
+ font-weight: 600;
531
+ margin-bottom: 0.25rem;
532
+ }
533
+
534
+ .nbp-author-name a {
535
+ color: var(--nbp-text);
536
+ text-decoration: none;
537
+ transition: color 0.2s var(--nbp-transition);
538
+ }
539
+
540
+ .nbp-author-name a:hover {
541
+ color: var(--nbp-primary);
542
+ }
543
+
544
+ .nbp-author-bio {
545
+ font-size: 0.9375rem;
546
+ color: var(--nbp-text-muted);
547
+ margin: 0;
548
+ line-height: 1.5;
549
+ }
550
+
551
+ /* Breadcrumb */
552
+ .nbp-breadcrumb {
553
+ margin-bottom: 1.5rem;
554
+ }
555
+
556
+ .nbp-breadcrumb-list {
557
+ display: inline-flex;
558
+ align-items: center;
559
+ list-style: none;
560
+ padding: 0;
561
+ margin: 0;
562
+ font-size: 0.875rem;
563
+ }
564
+
565
+ .nbp-breadcrumb-item {
566
+ display: flex;
567
+ align-items: center;
568
+ }
569
+
570
+ .nbp-breadcrumb-sep {
571
+ margin: 0 0.5rem;
572
+ color: #d1d5db;
573
+ }
574
+
575
+ .nbp-breadcrumb-link {
576
+ color: #6b7280;
577
+ text-decoration: none;
578
+ transition: color 0.2s var(--nbp-transition);
579
+ }
580
+
581
+ .nbp-breadcrumb-link:hover {
582
+ color: var(--nbp-primary);
583
+ }
584
+
585
+ .nbp-breadcrumb-current {
586
+ color: #111827;
587
+ font-weight: 500;
588
+ }
589
+
590
+ /* Category List */
591
+ .nbp-category-list-title {
592
+ font-size: 0.875rem;
593
+ font-weight: 600;
594
+ text-transform: uppercase;
595
+ letter-spacing: 0.05em;
596
+ color: var(--nbp-text-muted);
597
+ margin: 0 0 0.75rem;
598
+ }
599
+
600
+ .nbp-category-items {
601
+ list-style: none;
602
+ padding: 0;
603
+ margin: 0;
604
+ }
605
+
606
+ .nbp-category-item {
607
+ margin-bottom: 0.25rem;
608
+ }
609
+
610
+ .nbp-category-btn {
611
+ display: flex;
612
+ justify-content: space-between;
613
+ width: 100%;
614
+ padding: 0.5rem 0.75rem;
615
+ border: none;
616
+ background: transparent;
617
+ border-radius: var(--nbp-radius);
618
+ color: var(--nbp-text);
619
+ font-size: 0.9375rem;
620
+ cursor: pointer;
621
+ text-decoration: none;
622
+ transition: all 0.2s var(--nbp-transition);
623
+ }
624
+
625
+ .nbp-category-btn:hover {
626
+ background: var(--nbp-bg-secondary);
627
+ }
628
+
629
+ .nbp-category-btn.active {
630
+ background: var(--nbp-primary-light);
631
+ color: var(--nbp-primary);
632
+ font-weight: 500;
633
+ }
634
+
635
+ .nbp-category-count {
636
+ font-size: 0.8125rem;
637
+ color: var(--nbp-text-muted);
638
+ }
639
+
640
+ .nbp-category-btn.active .nbp-category-count {
641
+ color: var(--nbp-primary);
642
+ opacity: 0.7;
643
+ }
644
+
645
+ /* Tag Cloud */
646
+ .nbp-tag-cloud-title {
647
+ font-size: 0.875rem;
648
+ font-weight: 600;
649
+ text-transform: uppercase;
650
+ letter-spacing: 0.05em;
651
+ color: var(--nbp-text-muted);
652
+ margin: 0 0 0.75rem;
653
+ }
654
+
655
+ .nbp-tags {
656
+ display: flex;
657
+ flex-wrap: wrap;
658
+ gap: 0.375rem;
659
+ }
660
+
661
+ /* Pagination */
662
+ .nbp-pagination {
663
+ display: flex;
664
+ align-items: center;
665
+ justify-content: center;
666
+ gap: 0.25rem;
667
+ margin-top: 2.5rem;
668
+ }
669
+
670
+ .nbp-pagination-btn {
671
+ padding: 0.5rem 1rem;
672
+ border: 1px solid var(--nbp-border);
673
+ border-radius: var(--nbp-radius);
674
+ background: var(--nbp-bg);
675
+ color: var(--nbp-text);
676
+ font-size: 0.875rem;
677
+ cursor: pointer;
678
+ transition: all 0.2s var(--nbp-transition);
679
+ }
680
+
681
+ .nbp-pagination-btn:hover:not(:disabled) {
682
+ background: var(--nbp-bg-secondary);
683
+ border-color: var(--nbp-primary);
684
+ color: var(--nbp-primary);
685
+ }
686
+
687
+ .nbp-pagination-btn:disabled {
688
+ opacity: 0.4;
689
+ cursor: not-allowed;
690
+ }
691
+
692
+ .nbp-pagination-pages {
693
+ display: flex;
694
+ gap: 0.25rem;
695
+ }
696
+
697
+ .nbp-pagination-page {
698
+ width: 36px;
699
+ height: 36px;
700
+ display: flex;
701
+ align-items: center;
702
+ justify-content: center;
703
+ border: 1px solid var(--nbp-border);
704
+ border-radius: var(--nbp-radius);
705
+ background: var(--nbp-bg);
706
+ color: var(--nbp-text);
707
+ font-size: 0.875rem;
708
+ cursor: pointer;
709
+ transition: all 0.2s var(--nbp-transition);
710
+ }
711
+
712
+ .nbp-pagination-page:hover {
713
+ border-color: var(--nbp-primary);
714
+ color: var(--nbp-primary);
715
+ }
716
+
717
+ .nbp-pagination-page.active {
718
+ background: var(--nbp-primary);
719
+ color: #fff;
720
+ border-color: var(--nbp-primary);
721
+ }
722
+
723
+ .nbp-pagination-ellipsis {
724
+ width: 36px;
725
+ text-align: center;
726
+ color: var(--nbp-text-muted);
727
+ }
728
+
729
+ /* Code Block Component */
730
+ .nbp-code-block {
731
+ border-radius: 0.75rem;
732
+ overflow: hidden;
733
+ margin: 1.5rem 0;
734
+ }
735
+
736
+ .nbp-code-block .nbp-code-header {
737
+ display: flex;
738
+ justify-content: space-between;
739
+ align-items: center;
740
+ background: #0f172a;
741
+ padding: 0.5rem 1rem;
742
+ }
743
+
744
+ .nbp-code-lang {
745
+ font-size: 0.75rem;
746
+ color: #94a3b8;
747
+ font-family: var(--nbp-font-code);
748
+ }
749
+
750
+ .nbp-code-copy {
751
+ font-size: 0.75rem;
752
+ background: transparent;
753
+ border: 1px solid #334155;
754
+ color: #94a3b8;
755
+ padding: 0.25rem 0.5rem;
756
+ border-radius: 4px;
757
+ cursor: pointer;
758
+ transition: all 0.2s var(--nbp-transition);
759
+ }
760
+
761
+ .nbp-code-copy:hover {
762
+ background: #334155;
763
+ color: #e2e8f0;
764
+ }
765
+
766
+ .nbp-code-pre {
767
+ margin: 0;
768
+ padding: 1rem;
769
+ background: #0f172a;
770
+ overflow-x: auto;
771
+ }
772
+
773
+ /* Related Posts */
774
+ .nbp-related {
775
+ margin: 3rem 0;
776
+ }
777
+
778
+ .nbp-related-title {
779
+ font-family: var(--nbp-font-heading);
780
+ font-size: 1.375rem;
781
+ font-weight: 700;
782
+ margin: 0 0 1.25rem;
783
+ }
784
+
785
+ .nbp-related-grid {
786
+ display: grid;
787
+ grid-template-columns: repeat(3, 1fr);
788
+ gap: 1.25rem;
789
+ }
790
+
791
+ /* Not Found */
792
+ .nbp-not-found {
793
+ text-align: center;
794
+ padding: 4rem 1rem;
795
+ color: var(--nbp-text-muted);
796
+ font-size: 1.125rem;
797
+ }
798
+
799
+ /* Responsive */
800
+ @media (min-width: 768px) {
801
+ .nbp-post-title {
802
+ font-size: 3rem;
803
+ }
804
+ }
805
+
806
+ @media (max-width: 1024px) {
807
+ .nbp-post-with-toc .nbp-post-layout {
808
+ grid-template-columns: 1fr;
809
+ }
810
+
811
+ .nbp-post-toc-sidebar {
812
+ display: none;
813
+ }
814
+
815
+ .nbp-related-grid {
816
+ grid-template-columns: repeat(2, 1fr);
817
+ }
818
+ }
819
+
820
+ @media (max-width: 768px) {
821
+ .nbp-blog-layout {
822
+ grid-template-columns: 1fr;
823
+ }
824
+
825
+ .nbp-blog-sidebar {
826
+ border-left: none;
827
+ border-top: 1px solid var(--nbp-border);
828
+ padding-left: 0;
829
+ padding-top: 1.5rem;
830
+ }
831
+
832
+ .nbp-post-title {
833
+ font-size: 1.75rem;
834
+ }
835
+
836
+ .nbp-card-horizontal .nbp-card-link {
837
+ grid-template-columns: 1fr;
838
+ }
839
+
840
+ .nbp-posts-magazine {
841
+ grid-template-columns: 1fr;
842
+ }
843
+
844
+ .nbp-posts-grid {
845
+ grid-template-columns: 1fr;
846
+ }
847
+
848
+ .nbp-related-grid {
849
+ grid-template-columns: 1fr;
850
+ }
851
+ }