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