mdx-artifacts 0.1.1 → 0.2.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 (142) hide show
  1. package/README.md +224 -60
  2. package/README.zh-CN.md +299 -42
  3. package/agents/AGENTS.snippet.md +21 -10
  4. package/artifact-docs/examples/commentable-feedback.mdx +76 -70
  5. package/artifact-docs/examples/decision-matrix.mdx +122 -50
  6. package/artifact-docs/examples/layout-composition.mdx +106 -128
  7. package/artifact-docs/examples/streamlit-style-mixed.mdx +100 -85
  8. package/dist/lib/cli/{build.js → commands/build.js} +2 -2
  9. package/dist/lib/cli/{components.js → commands/components.js} +19 -3
  10. package/dist/lib/cli/{dev.js → commands/dev.js} +2 -2
  11. package/dist/lib/cli/commands/interactions.d.ts +2 -0
  12. package/dist/lib/cli/commands/interactions.js +280 -0
  13. package/dist/lib/cli/commands/review.d.ts +1 -0
  14. package/dist/lib/cli/commands/review.js +171 -0
  15. package/dist/lib/cli/commands/scaffold.d.ts +16 -0
  16. package/dist/lib/cli/commands/scaffold.js +440 -0
  17. package/dist/lib/cli/commands/validate.d.ts +18 -0
  18. package/dist/lib/cli/commands/validate.js +311 -0
  19. package/dist/lib/cli/config/config.d.ts +2 -0
  20. package/dist/lib/cli/{config.js → config/config.js} +3 -2
  21. package/dist/lib/cli/{types.d.ts → config/types.d.ts} +2 -1
  22. package/dist/lib/cli/{vite-artifact.d.ts → dev-server/vite-artifact.d.ts} +3 -3
  23. package/dist/lib/cli/dev-server/vite-artifact.js +415 -0
  24. package/dist/lib/cli/diagnostics/diagnostics.d.ts +11 -0
  25. package/dist/lib/cli/diagnostics/diagnostics.js +1 -0
  26. package/dist/lib/cli/index.js +39 -18
  27. package/dist/lib/cli/mdx/sortable-list.d.ts +14 -0
  28. package/dist/lib/cli/mdx/sortable-list.js +520 -0
  29. package/dist/lib/cli/resources/resource-policy.d.ts +15 -0
  30. package/dist/lib/cli/resources/resource-policy.js +46 -0
  31. package/dist/lib/cli/resources/safe-path.d.ts +13 -0
  32. package/dist/lib/cli/resources/safe-path.js +55 -0
  33. package/dist/lib/cli/services/interaction-service.d.ts +40 -0
  34. package/dist/lib/cli/services/interaction-service.js +226 -0
  35. package/dist/lib/cli/services/review.d.ts +43 -0
  36. package/dist/lib/cli/{review.js → services/review.js} +34 -172
  37. package/dist/lib/react/{components → composites/comparison-set}/ComparisonSet.d.ts +1 -1
  38. package/dist/lib/react/{components → composites/comparison-set}/ComparisonSet.js +3 -3
  39. package/dist/lib/react/composites/comparison-set/index.d.ts +2 -0
  40. package/dist/lib/react/composites/comparison-set/index.js +1 -0
  41. package/dist/lib/react/composites/content-set/ContentItem.d.ts +37 -0
  42. package/dist/lib/react/composites/content-set/ContentItem.js +49 -0
  43. package/dist/lib/react/composites/content-set/index.d.ts +2 -0
  44. package/dist/lib/react/composites/content-set/index.js +1 -0
  45. package/dist/lib/react/{components → composites/export-panel}/ExportPanel.js +2 -2
  46. package/dist/lib/react/composites/export-panel/index.d.ts +2 -0
  47. package/dist/lib/react/composites/export-panel/index.js +1 -0
  48. package/dist/lib/react/{components → composites/section}/Section.js +1 -1
  49. package/dist/lib/react/composites/section/index.d.ts +2 -0
  50. package/dist/lib/react/composites/section/index.js +1 -0
  51. package/dist/lib/react/index.d.ts +36 -31
  52. package/dist/lib/react/index.js +18 -15
  53. package/dist/lib/react/interactions/artifact-state/index.d.ts +1 -0
  54. package/dist/lib/react/interactions/artifact-state/index.js +1 -0
  55. package/dist/lib/react/{components → interactions/comments}/Comments.d.ts +2 -2
  56. package/dist/lib/react/{components → interactions/comments}/Comments.js +3 -3
  57. package/dist/lib/react/interactions/comments/index.d.ts +1 -0
  58. package/dist/lib/react/interactions/comments/index.js +1 -0
  59. package/dist/lib/react/interactions/sortable-list/SortableList.d.ts +29 -0
  60. package/dist/lib/react/interactions/sortable-list/SortableList.js +282 -0
  61. package/dist/lib/react/interactions/sortable-list/index.d.ts +1 -0
  62. package/dist/lib/react/interactions/sortable-list/index.js +1 -0
  63. package/dist/lib/react/layout/layout-primitives/index.d.ts +2 -0
  64. package/dist/lib/react/layout/layout-primitives/index.js +1 -0
  65. package/dist/lib/react/legacy/LegacyContentComponents.d.ts +65 -0
  66. package/dist/lib/react/legacy/LegacyContentComponents.js +26 -0
  67. package/dist/lib/react/mdx-components.d.ts +5 -0
  68. package/dist/lib/react/mdx-components.js +38 -0
  69. package/dist/lib/react/{components → primitives/annotated-code}/AnnotatedCode.d.ts +1 -1
  70. package/dist/lib/react/{components → primitives/annotated-code}/AnnotatedCode.js +5 -5
  71. package/dist/lib/react/primitives/annotated-code/index.d.ts +2 -0
  72. package/dist/lib/react/primitives/annotated-code/index.js +1 -0
  73. package/dist/lib/react/primitives/callout/Callout.d.ts +11 -0
  74. package/dist/lib/react/{components → primitives/callout}/Callout.js +9 -6
  75. package/dist/lib/react/primitives/callout/index.d.ts +2 -0
  76. package/dist/lib/react/primitives/callout/index.js +1 -0
  77. package/dist/lib/react/primitives/code-block/CodeBlock.d.ts +20 -0
  78. package/dist/lib/react/primitives/code-block/CodeBlock.js +32 -0
  79. package/dist/lib/react/primitives/code-block/index.d.ts +2 -0
  80. package/dist/lib/react/primitives/code-block/index.js +1 -0
  81. package/dist/lib/react/primitives/code-surface/CodeSurface.d.ts +11 -0
  82. package/dist/lib/react/primitives/code-surface/CodeSurface.js +34 -0
  83. package/dist/lib/react/primitives/code-surface/index.d.ts +2 -0
  84. package/dist/lib/react/primitives/code-surface/index.js +1 -0
  85. package/dist/lib/react/primitives/diff-block/DiffBlock.js +25 -0
  86. package/dist/lib/react/primitives/diff-block/index.d.ts +2 -0
  87. package/dist/lib/react/primitives/diff-block/index.js +1 -0
  88. package/dist/lib/react/{components → primitives/inline-text}/InlineText.d.ts +4 -2
  89. package/dist/lib/react/primitives/inline-text/InlineText.js +28 -0
  90. package/dist/lib/react/primitives/inline-text/index.d.ts +2 -0
  91. package/dist/lib/react/primitives/inline-text/index.js +1 -0
  92. package/dist/lib/react/primitives/markdown-body/MarkdownBody.d.ts +9 -0
  93. package/dist/lib/react/primitives/markdown-body/MarkdownBody.js +49 -0
  94. package/dist/lib/react/primitives/markdown-body/index.d.ts +2 -0
  95. package/dist/lib/react/primitives/markdown-body/index.js +1 -0
  96. package/dist/lib/react/primitives/severity-badge/index.d.ts +2 -0
  97. package/dist/lib/react/primitives/severity-badge/index.js +1 -0
  98. package/dist/lib/react/registry.d.ts +10 -0
  99. package/dist/lib/react/registry.js +505 -210
  100. package/dist/lib/react/styles.css +490 -38
  101. package/docs/cli-structure.md +141 -0
  102. package/docs/component-protocol.md +199 -33
  103. package/docs/component-taxonomy.md +40 -4
  104. package/docs/design.md +42 -21
  105. package/docs/design.zh-CN.md +41 -21
  106. package/docs/naming.md +17 -7
  107. package/docs/releasing.md +132 -0
  108. package/docs/testing.md +35 -10
  109. package/package.json +9 -7
  110. package/dist/lib/cli/config.d.ts +0 -2
  111. package/dist/lib/cli/review.d.ts +0 -33
  112. package/dist/lib/cli/scaffold.d.ts +0 -1
  113. package/dist/lib/cli/scaffold.js +0 -56
  114. package/dist/lib/cli/validate.d.ts +0 -6
  115. package/dist/lib/cli/validate.js +0 -79
  116. package/dist/lib/cli/vite-artifact.js +0 -237
  117. package/dist/lib/react/components/Callout.d.ts +0 -9
  118. package/dist/lib/react/components/CodeBlock.d.ts +0 -10
  119. package/dist/lib/react/components/CodeBlock.js +0 -28
  120. package/dist/lib/react/components/DecisionMatrix.d.ts +0 -16
  121. package/dist/lib/react/components/DecisionMatrix.js +0 -27
  122. package/dist/lib/react/components/DiffBlock.js +0 -24
  123. package/dist/lib/react/components/InlineText.js +0 -18
  124. package/dist/lib/react/components/MarkdownBody.d.ts +0 -7
  125. package/dist/lib/react/components/MarkdownBody.js +0 -36
  126. package/dist/lib/react/components/OptionGrid.d.ts +0 -13
  127. package/dist/lib/react/components/OptionGrid.js +0 -21
  128. /package/dist/lib/cli/{build.d.ts → commands/build.d.ts} +0 -0
  129. /package/dist/lib/cli/{components.d.ts → commands/components.d.ts} +0 -0
  130. /package/dist/lib/cli/{dev.d.ts → commands/dev.d.ts} +0 -0
  131. /package/dist/lib/cli/{types.js → config/types.js} +0 -0
  132. /package/dist/lib/cli/{artifact-state.d.ts → state/artifact-state.d.ts} +0 -0
  133. /package/dist/lib/cli/{artifact-state.js → state/artifact-state.js} +0 -0
  134. /package/dist/lib/react/{components → composites/export-panel}/ExportPanel.d.ts +0 -0
  135. /package/dist/lib/react/{components → composites/section}/Section.d.ts +0 -0
  136. /package/dist/lib/react/{components → interactions/artifact-state}/ArtifactState.d.ts +0 -0
  137. /package/dist/lib/react/{components → interactions/artifact-state}/ArtifactState.js +0 -0
  138. /package/dist/lib/react/{components → layout/layout-primitives}/Layout.d.ts +0 -0
  139. /package/dist/lib/react/{components → layout/layout-primitives}/Layout.js +0 -0
  140. /package/dist/lib/react/{components → primitives/diff-block}/DiffBlock.d.ts +0 -0
  141. /package/dist/lib/react/{components → primitives/severity-badge}/SeverityBadge.d.ts +0 -0
  142. /package/dist/lib/react/{components → primitives/severity-badge}/SeverityBadge.js +0 -0
@@ -1,7 +1,3 @@
1
- @import "tailwindcss";
2
- @source "./components/**/*.{ts,tsx}";
3
- @source "../../artifact-docs/**/*.{mdx}";
4
-
5
1
  :root {
6
2
  color-scheme: light;
7
3
  --ak-bg: oklch(0.985 0 0);
@@ -20,6 +16,10 @@
20
16
  --ak-warn-subtle: oklch(0.97 0.04 85);
21
17
  --ak-risk: oklch(0.577 0.245 27.325);
22
18
  --ak-risk-subtle: oklch(0.971 0.013 17.38);
19
+ --ak-info: oklch(0.5 0.14 245);
20
+ --ak-info-subtle: oklch(0.96 0.035 245);
21
+ --ak-accent: oklch(0.52 0.15 300);
22
+ --ak-accent-subtle: oklch(0.96 0.035 300);
23
23
  --ak-code-bg: oklch(0.97 0 0);
24
24
  --ak-code-text: oklch(0.269 0 0);
25
25
  --ak-code-highlight-bg: oklch(0.91 0.055 85);
@@ -65,6 +65,10 @@
65
65
  --ak-warn-subtle: oklch(0.34 0.06 85);
66
66
  --ak-risk: oklch(0.704 0.191 22.216);
67
67
  --ak-risk-subtle: oklch(0.31 0.08 22);
68
+ --ak-info: oklch(0.75 0.13 245);
69
+ --ak-info-subtle: oklch(0.32 0.055 245);
70
+ --ak-accent: oklch(0.78 0.13 300);
71
+ --ak-accent-subtle: oklch(0.32 0.06 300);
68
72
  --ak-code-bg: oklch(1 0 0 / 8%);
69
73
  --ak-code-text: oklch(0.922 0 0);
70
74
  --ak-code-highlight-bg: oklch(0.34 0.06 85);
@@ -96,6 +100,10 @@
96
100
  --ak-warn-subtle: oklch(0.34 0.06 85);
97
101
  --ak-risk: oklch(0.704 0.191 22.216);
98
102
  --ak-risk-subtle: oklch(0.31 0.08 22);
103
+ --ak-info: oklch(0.75 0.13 245);
104
+ --ak-info-subtle: oklch(0.32 0.055 245);
105
+ --ak-accent: oklch(0.78 0.13 300);
106
+ --ak-accent-subtle: oklch(0.32 0.06 300);
99
107
  --ak-code-bg: oklch(1 0 0 / 8%);
100
108
  --ak-code-text: oklch(0.922 0 0);
101
109
  --ak-code-highlight-bg: oklch(0.34 0.06 85);
@@ -192,7 +200,8 @@ body {
192
200
  .ak-content-section > p,
193
201
  .ak-content-section > ul,
194
202
  .ak-content-section > ol,
195
- .ak-content-section > blockquote {
203
+ .ak-content-section > blockquote,
204
+ .ak-content-section > pre {
196
205
  margin: 0;
197
206
  }
198
207
 
@@ -330,6 +339,54 @@ body {
330
339
  padding-left: 14px;
331
340
  }
332
341
 
342
+ .ak-document a,
343
+ .ak-review-content a,
344
+ .ak-content-section a {
345
+ color: var(--ak-primary-dark);
346
+ font-weight: 700;
347
+ text-decoration: underline;
348
+ text-underline-offset: 2px;
349
+ }
350
+
351
+ .ak-document :where(p, li, blockquote) code,
352
+ .ak-review-content :where(p, li, blockquote) code,
353
+ .ak-content-section :where(p, li, blockquote) code {
354
+ border-radius: 4px;
355
+ background: var(--ak-code-bg);
356
+ color: var(--ak-code-text);
357
+ font-family:
358
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
359
+ font-size: 0.92em;
360
+ padding: 1px 4px;
361
+ }
362
+
363
+ .ak-document > pre,
364
+ .ak-review-content > pre,
365
+ .ak-content-section > pre {
366
+ overflow: auto;
367
+ border: 1px solid var(--ak-border);
368
+ border-radius: 8px;
369
+ background: var(--ak-code-bg);
370
+ color: var(--ak-code-text);
371
+ padding: 12px;
372
+ font-family:
373
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
374
+ font-size: 13px;
375
+ line-height: 1.55;
376
+ }
377
+
378
+ .ak-document > pre code,
379
+ .ak-review-content > pre code,
380
+ .ak-content-section > pre code {
381
+ display: block;
382
+ min-width: max-content;
383
+ background: transparent;
384
+ color: inherit;
385
+ font: inherit;
386
+ padding: 0;
387
+ white-space: pre;
388
+ }
389
+
333
390
  .ak-section {
334
391
  display: grid;
335
392
  gap: 16px;
@@ -347,6 +404,29 @@ body {
347
404
  line-height: 1.25;
348
405
  }
349
406
 
407
+ .ak-content-set-title-row {
408
+ display: flex;
409
+ align-items: flex-start;
410
+ gap: 10px;
411
+ min-width: 0;
412
+ }
413
+
414
+ .ak-content-set-icon {
415
+ display: inline-grid;
416
+ flex: 0 0 auto;
417
+ width: 1.35em;
418
+ height: 1.35em;
419
+ place-items: center;
420
+ color: var(--ak-primary-dark);
421
+ font-size: 22px;
422
+ line-height: 1;
423
+ }
424
+
425
+ .ak-content-set-icon svg {
426
+ width: 1em;
427
+ height: 1em;
428
+ }
429
+
350
430
  .ak-stack,
351
431
  .ak-columns,
352
432
  .ak-grid,
@@ -493,6 +573,360 @@ body {
493
573
  margin: 4px 0;
494
574
  }
495
575
 
576
+ .ak-content-set-items {
577
+ display: grid;
578
+ gap: 14px;
579
+ }
580
+
581
+ .ak-content-set-surface-plain,
582
+ .ak-content-set-surface-subtle,
583
+ .ak-content-set-surface-outlined {
584
+ border-radius: 10px;
585
+ padding: 16px;
586
+ }
587
+
588
+ .ak-content-set-surface-subtle {
589
+ background: var(--ak-surface-subtle);
590
+ }
591
+
592
+ .ak-content-set-surface-outlined {
593
+ border: 1px solid var(--ak-border);
594
+ background: var(--ak-surface);
595
+ }
596
+
597
+ .ak-content-set-items-grid {
598
+ grid-template-columns: repeat(var(--ak-content-set-columns), minmax(0, 1fr));
599
+ }
600
+
601
+ .ak-content-set-items-stack {
602
+ grid-template-columns: minmax(0, 1fr);
603
+ }
604
+
605
+ .ak-content-item {
606
+ --ak-content-item-tone: var(--ak-border);
607
+ --ak-content-item-tone-bg: var(--ak-surface-subtle);
608
+ min-width: 0;
609
+ height: 100%;
610
+ border: 1px solid color-mix(in oklch, var(--ak-content-item-tone) 38%, var(--ak-border));
611
+ border-radius: 8px;
612
+ background: color-mix(in oklch, var(--ak-content-item-tone-bg) 36%, var(--ak-surface));
613
+ padding: 16px;
614
+ box-shadow: var(--ak-shadow);
615
+ }
616
+
617
+ .ak-content-item-tone-neutral {
618
+ --ak-content-item-tone: var(--ak-border);
619
+ --ak-content-item-tone-bg: var(--ak-surface-subtle);
620
+ }
621
+
622
+ .ak-content-item-tone-info {
623
+ --ak-content-item-tone: var(--ak-info);
624
+ --ak-content-item-tone-bg: var(--ak-info-subtle);
625
+ }
626
+
627
+ .ak-content-item-tone-positive {
628
+ --ak-content-item-tone: var(--ak-good);
629
+ --ak-content-item-tone-bg: var(--ak-good-subtle);
630
+ }
631
+
632
+ .ak-content-item-tone-warning {
633
+ --ak-content-item-tone: var(--ak-warn);
634
+ --ak-content-item-tone-bg: var(--ak-warn-subtle);
635
+ }
636
+
637
+ .ak-content-item-tone-danger {
638
+ --ak-content-item-tone: var(--ak-risk);
639
+ --ak-content-item-tone-bg: var(--ak-risk-subtle);
640
+ }
641
+
642
+ .ak-content-item-tone-accent {
643
+ --ak-content-item-tone: var(--ak-accent);
644
+ --ak-content-item-tone-bg: var(--ak-accent-subtle);
645
+ }
646
+
647
+ .ak-content-item-emphasis-primary {
648
+ border-width: 2px;
649
+ border-color: color-mix(in oklch, var(--ak-content-item-tone) 70%, var(--ak-border));
650
+ background: color-mix(in oklch, var(--ak-content-item-tone-bg) 56%, var(--ak-surface));
651
+ box-shadow: 0 2px 8px rgb(0 0 0 / 7%);
652
+ }
653
+
654
+ .ak-content-item-emphasis-subtle {
655
+ border-color: color-mix(in oklch, var(--ak-content-item-tone) 18%, var(--ak-border));
656
+ background: color-mix(in oklch, var(--ak-content-item-tone-bg) 18%, var(--ak-surface));
657
+ box-shadow: none;
658
+ }
659
+
660
+ .ak-content-item-header {
661
+ display: flex;
662
+ align-items: flex-start;
663
+ justify-content: space-between;
664
+ gap: 12px;
665
+ }
666
+
667
+ .ak-content-item-title-row {
668
+ display: flex;
669
+ align-items: flex-start;
670
+ gap: 8px;
671
+ min-width: 0;
672
+ }
673
+
674
+ .ak-content-item-icon {
675
+ display: inline-grid;
676
+ flex: 0 0 auto;
677
+ width: 1.3em;
678
+ height: 1.3em;
679
+ place-items: center;
680
+ color: var(--ak-content-item-tone);
681
+ font-size: 17px;
682
+ line-height: 1;
683
+ }
684
+
685
+ .ak-content-item-icon svg {
686
+ width: 1em;
687
+ height: 1em;
688
+ }
689
+
690
+ .ak-content-item-header h3 {
691
+ margin: 0;
692
+ font-size: 17px;
693
+ line-height: 1.3;
694
+ }
695
+
696
+ .ak-content-item-badge {
697
+ flex: 0 0 auto;
698
+ border-radius: 999px;
699
+ background: color-mix(in oklch, var(--ak-content-item-tone) 14%, var(--ak-surface-subtle));
700
+ color: var(--ak-content-item-tone);
701
+ padding: 3px 8px;
702
+ font-size: 12px;
703
+ font-weight: 700;
704
+ }
705
+
706
+ .ak-content-item-emphasis-subtle .ak-content-item-badge,
707
+ .ak-content-item-emphasis-subtle .ak-content-item-summary {
708
+ opacity: 0.78;
709
+ }
710
+
711
+ .ak-content-item-summary {
712
+ margin: 10px 0 0;
713
+ color: var(--ak-muted);
714
+ }
715
+
716
+ .ak-content-item-body {
717
+ display: grid;
718
+ gap: 10px;
719
+ margin-top: 12px;
720
+ }
721
+
722
+ .ak-content-item-body > :first-child {
723
+ margin-top: 0;
724
+ }
725
+
726
+ .ak-content-item-body > :last-child {
727
+ margin-bottom: 0;
728
+ }
729
+
730
+ .ak-content-item-body :where(h1, h2, h3, h4, h5, h6) {
731
+ margin: 6px 0 0;
732
+ font-size: 15px;
733
+ line-height: 1.35;
734
+ }
735
+
736
+ .ak-content-item-body :where(p, ul, ol, blockquote) {
737
+ margin: 0;
738
+ }
739
+
740
+ .ak-content-item-body :where(ul, ol) {
741
+ padding-left: 18px;
742
+ }
743
+
744
+ .ak-content-item-body li {
745
+ margin: 4px 0;
746
+ }
747
+
748
+ .ak-sortable-list-summary {
749
+ margin: 0;
750
+ color: var(--ak-muted);
751
+ }
752
+
753
+ .ak-sortable-list-editor-actions {
754
+ display: flex;
755
+ flex-wrap: wrap;
756
+ gap: 8px;
757
+ }
758
+
759
+ .ak-sortable-list-editor {
760
+ display: grid;
761
+ grid-template-columns: repeat(2, minmax(0, 1fr));
762
+ gap: 10px;
763
+ border: 1px solid var(--ak-border);
764
+ border-radius: 8px;
765
+ background: var(--ak-surface);
766
+ padding: 12px;
767
+ }
768
+
769
+ .ak-sortable-list-editor-field,
770
+ .ak-sortable-list-editor-check {
771
+ display: grid;
772
+ gap: 5px;
773
+ color: var(--ak-muted);
774
+ font-size: 12px;
775
+ font-weight: 650;
776
+ }
777
+
778
+ .ak-sortable-list-editor-field input {
779
+ width: 100%;
780
+ min-width: 0;
781
+ border: 1px solid var(--ak-border);
782
+ border-radius: 6px;
783
+ background: var(--ak-surface);
784
+ color: var(--ak-text);
785
+ font: inherit;
786
+ font-size: 13px;
787
+ padding: 8px 9px;
788
+ }
789
+
790
+ .ak-sortable-list-editor-check {
791
+ grid-template-columns: auto 1fr;
792
+ align-items: center;
793
+ }
794
+
795
+ .ak-sortable-list-editor-buttons {
796
+ display: flex;
797
+ align-items: end;
798
+ gap: 6px;
799
+ }
800
+
801
+ .ak-sortable-list-editor-error {
802
+ margin: 0;
803
+ color: var(--ak-risk);
804
+ font-size: 13px;
805
+ font-weight: 650;
806
+ }
807
+
808
+ .ak-sortable-list-items {
809
+ display: grid;
810
+ gap: 10px;
811
+ margin: 0;
812
+ padding: 0;
813
+ list-style: none;
814
+ }
815
+
816
+ .ak-sortable-list-item {
817
+ display: grid;
818
+ grid-template-columns: auto minmax(0, 1fr) auto;
819
+ align-items: start;
820
+ gap: 12px;
821
+ border: 1px solid var(--ak-border);
822
+ border-radius: 8px;
823
+ background: var(--ak-surface);
824
+ padding: 12px;
825
+ }
826
+
827
+ .ak-sortable-list-item[draggable="true"] {
828
+ cursor: grab;
829
+ }
830
+
831
+ .ak-sortable-list-item[draggable="true"]:active {
832
+ cursor: grabbing;
833
+ }
834
+
835
+ .ak-sortable-list-item-disabled {
836
+ opacity: 0.62;
837
+ }
838
+
839
+ .ak-sortable-list-rank {
840
+ display: grid;
841
+ width: 28px;
842
+ height: 28px;
843
+ place-items: center;
844
+ border: 1px solid var(--ak-border);
845
+ border-radius: 999px;
846
+ color: var(--ak-muted);
847
+ font-size: 12px;
848
+ font-weight: 700;
849
+ line-height: 1;
850
+ }
851
+
852
+ .ak-sortable-list-content {
853
+ display: grid;
854
+ gap: 8px;
855
+ min-width: 0;
856
+ }
857
+
858
+ .ak-sortable-list-item-header {
859
+ display: flex;
860
+ flex-wrap: wrap;
861
+ align-items: center;
862
+ gap: 8px;
863
+ }
864
+
865
+ .ak-sortable-list-item-header h3 {
866
+ margin: 0;
867
+ }
868
+
869
+ .ak-sortable-list-badge,
870
+ .ak-sortable-list-tag {
871
+ width: fit-content;
872
+ border: 1px solid var(--ak-border);
873
+ border-radius: 999px;
874
+ background: var(--ak-surface-subtle);
875
+ color: var(--ak-muted);
876
+ font-size: 12px;
877
+ font-weight: 650;
878
+ line-height: 1;
879
+ padding: 4px 8px;
880
+ }
881
+
882
+ .ak-sortable-list-item-summary {
883
+ margin: 0;
884
+ color: var(--ak-muted);
885
+ }
886
+
887
+ .ak-sortable-list-tags {
888
+ display: flex;
889
+ flex-wrap: wrap;
890
+ gap: 6px;
891
+ }
892
+
893
+ .ak-sortable-list-controls {
894
+ display: flex;
895
+ flex-wrap: wrap;
896
+ gap: 6px;
897
+ }
898
+
899
+ .ak-sortable-list-control {
900
+ border: 1px solid var(--ak-border);
901
+ border-radius: 6px;
902
+ background: var(--ak-surface);
903
+ color: var(--ak-text);
904
+ cursor: pointer;
905
+ font: inherit;
906
+ font-size: 12px;
907
+ line-height: 1;
908
+ padding: 7px 9px;
909
+ }
910
+
911
+ .ak-sortable-list-control:disabled {
912
+ cursor: not-allowed;
913
+ opacity: 0.5;
914
+ }
915
+
916
+ @media (max-width: 720px) {
917
+ .ak-sortable-list-editor {
918
+ grid-template-columns: 1fr;
919
+ }
920
+
921
+ .ak-sortable-list-item {
922
+ grid-template-columns: auto minmax(0, 1fr);
923
+ }
924
+
925
+ .ak-sortable-list-controls {
926
+ grid-column: 1 / -1;
927
+ }
928
+ }
929
+
496
930
  .ak-inline-text {
497
931
  min-width: 0;
498
932
  }
@@ -618,11 +1052,34 @@ body {
618
1052
  min-width: 0;
619
1053
  }
620
1054
 
1055
+ .ak-code-meta {
1056
+ display: flex;
1057
+ align-items: center;
1058
+ gap: 8px;
1059
+ min-width: 0;
1060
+ }
1061
+
621
1062
  .ak-code-language {
622
1063
  flex: 0 0 auto;
623
1064
  text-transform: lowercase;
624
1065
  }
625
1066
 
1067
+ .ak-code-copy {
1068
+ border: 1px solid var(--ak-border);
1069
+ border-radius: 6px;
1070
+ background: var(--ak-surface);
1071
+ color: var(--ak-text);
1072
+ cursor: pointer;
1073
+ font: inherit;
1074
+ font-size: 12px;
1075
+ font-weight: 700;
1076
+ padding: 4px 8px;
1077
+ }
1078
+
1079
+ .ak-code-copy:hover {
1080
+ border-color: var(--ak-accent);
1081
+ }
1082
+
626
1083
  .ak-code-pre {
627
1084
  overflow: auto;
628
1085
  margin: 0;
@@ -769,6 +1226,18 @@ body {
769
1226
  border-radius: 8px;
770
1227
  }
771
1228
 
1229
+ .ak-comment-target-block::after {
1230
+ content: "";
1231
+ position: absolute;
1232
+ z-index: 1;
1233
+ inset: -6px;
1234
+ border: 2px solid var(--ak-comment-accent);
1235
+ border-radius: 12px;
1236
+ box-shadow: 0 0 0 3px var(--ak-comment-accent-subtle);
1237
+ opacity: 0;
1238
+ pointer-events: none;
1239
+ }
1240
+
772
1241
  .ak-comment-target-card {
773
1242
  height: 100%;
774
1243
  }
@@ -787,13 +1256,17 @@ body {
787
1256
  .ak-comment-target-has-comments > .ak-comment-target-content,
788
1257
  .ak-comment-target-selected > .ak-comment-target-content {
789
1258
  border-radius: 8px;
790
- box-shadow:
791
- 0 0 0 2px var(--ak-comment-accent),
792
- 0 0 0 6px var(--ak-comment-accent-subtle);
793
1259
  }
794
1260
 
795
- .ak-comment-target-block:has(.ak-comment-target-block:hover):not(.ak-comment-target-selected) > .ak-comment-target-content {
796
- box-shadow: none;
1261
+ .ak-comment-target-block:hover::after,
1262
+ .ak-comment-target-block:focus-within::after,
1263
+ .ak-comment-target-has-comments::after,
1264
+ .ak-comment-target-selected::after {
1265
+ opacity: 1;
1266
+ }
1267
+
1268
+ .ak-comment-target-block:has(.ak-comment-target-block:hover):not(.ak-comment-target-selected)::after {
1269
+ opacity: 0;
797
1270
  }
798
1271
 
799
1272
  .ak-comment-marker-anchor,
@@ -1145,40 +1618,15 @@ body {
1145
1618
  font-weight: 700;
1146
1619
  }
1147
1620
 
1148
- .ak-badge-high {
1149
- background: var(--ak-good-subtle);
1150
- color: var(--ak-good);
1151
- }
1152
-
1153
- .ak-badge-medium {
1154
- background: var(--ak-warn-subtle);
1155
- color: var(--ak-warn);
1156
- }
1157
-
1158
- .ak-badge-low {
1159
- background: var(--ak-risk-subtle);
1160
- color: var(--ak-risk);
1621
+ .ak-badge-default {
1622
+ background: var(--ak-surface-subtle);
1623
+ color: var(--ak-muted);
1161
1624
  }
1162
1625
 
1163
1626
  .ak-muted {
1164
1627
  color: var(--ak-muted);
1165
1628
  }
1166
1629
 
1167
- .ak-list-block {
1168
- margin-top: 12px;
1169
- }
1170
-
1171
- .ak-list-block h4 {
1172
- margin: 0;
1173
- font-size: 13px;
1174
- }
1175
-
1176
- .ak-verdict,
1177
- .ak-intent {
1178
- color: var(--ak-primary-dark);
1179
- font-weight: 700;
1180
- }
1181
-
1182
1630
  .ak-export-panel {
1183
1631
  border: 1px solid var(--ak-border);
1184
1632
  border-radius: 8px;
@@ -1383,6 +1831,10 @@ body {
1383
1831
  padding-top: 20px;
1384
1832
  }
1385
1833
 
1834
+ .ak-content-set-items-grid {
1835
+ grid-template-columns: minmax(0, 1fr);
1836
+ }
1837
+
1386
1838
  .ak-export-dock {
1387
1839
  right: 10px;
1388
1840
  bottom: 10px;