@hachej/boring-ui-kit 0.2.2 → 0.2.4

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.
package/r/registry.json CHANGED
@@ -31,7 +31,9 @@
31
31
  "radius-sm": "calc(var(--radius) - 4px)",
32
32
  "radius-md": "calc(var(--radius) - 2px)",
33
33
  "radius-lg": "var(--radius)",
34
- "radius-xl": "calc(var(--radius) + 4px)"
34
+ "radius-xl": "calc(var(--radius) + 4px)",
35
+ "radius-2xl": "calc(var(--radius) * 1.8)",
36
+ "radius-3xl": "calc(var(--radius) * 2.2)"
35
37
  },
36
38
  "light": {
37
39
  "radius": "0.75rem",
@@ -105,8 +107,8 @@
105
107
  "lucide-react@^1.51.0"
106
108
  ],
107
109
  "registryDependencies": [
108
- "@boring-ui/theme",
109
- "@boring-ui/utils"
110
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/theme.json",
111
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/utils.json"
110
112
  ],
111
113
  "files": [
112
114
  {
@@ -127,8 +129,8 @@
127
129
  "title": "Markdown editor",
128
130
  "description": "A host-owned styled wrapper over the concrete borrowed Markdown controller.",
129
131
  "dependencies": [
130
- "@hachej/boring-ui-kit@^0.2.2",
131
- "@hachej/boring-files@^0.2.2",
132
+ "@hachej/boring-ui-kit@^0.2.4",
133
+ "@hachej/boring-files@^0.2.4",
132
134
  "react@^19.0.0",
133
135
  "react-dom@^19.0.0",
134
136
  "marked@^17.0.6",
@@ -341,8 +343,8 @@
341
343
  "title": "HTML source and passive preview",
342
344
  "description": "Exact HTML source editing with a reconstructed passive preview and borrowed controller. Browser security qualification remains separate.",
343
345
  "dependencies": [
344
- "@hachej/boring-ui-kit@^0.2.2",
345
- "@hachej/boring-files@^0.2.2",
346
+ "@hachej/boring-ui-kit@^0.2.4",
347
+ "@hachej/boring-files@^0.2.4",
346
348
  "react@^19.0.0",
347
349
  "react-dom@^19.0.0"
348
350
  ],
@@ -433,22 +435,23 @@
433
435
  "title": "Pi chat",
434
436
  "description": "A complete Tailwind chat over the borrowed native chat controller: composer, messages, one collapsible activity block per turn (tool calls and reasoning), message queue, history, a human-in-the-loop question card, an Approve / Deny card for host tools wrapped with requireApproval optional artifact cards that open generated content in the host's panel, and feedback cards for the opt-in feedback tool (lists, and Show offers that the host page resolves). Chat only: no layout. Owned, editable source; no AI SDK. The optional pi-ambient and pi-workspace blocks build on it.",
435
437
  "dependencies": [
436
- "@hachej/boring-ui-kit@^0.2.2",
438
+ "@hachej/boring-ui-kit@^0.2.4",
439
+ "@hachej/boring-files@^0.2.4",
437
440
  "react@^19.0.0",
438
441
  "react-dom@^19.0.0",
439
442
  "marked@^17.0.6",
440
443
  "entities@^8.1.0",
441
- "@earendil-works/pi-durable@^1.1.0",
442
- "@earendil-works/chord@^1.1.0",
443
- "@earendil-works/pi-ai@^1.1.0",
444
+ "@earendil-works/pi-durable@~1.1.0",
445
+ "@earendil-works/chord@~1.1.0",
446
+ "@earendil-works/pi-ai@~1.1.0",
444
447
  "@modelcontextprotocol/sdk@^1.32.0",
445
448
  "lucide-react@^1.51.0",
446
449
  "use-stick-to-bottom@^1.1.6"
447
450
  ],
448
451
  "registryDependencies": [
449
- "@boring-ui/theme",
450
- "@boring-ui/utils",
451
- "@boring-ui/button"
452
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/theme.json",
453
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/utils.json",
454
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/button.json"
452
455
  ],
453
456
  "files": [
454
457
  {
@@ -566,6 +569,11 @@
566
569
  "type": "registry:component",
567
570
  "target": "components/pi-chat/tool.tsx"
568
571
  },
572
+ {
573
+ "path": "registry/pi-chat/use-remote-chat.ts",
574
+ "type": "registry:hook",
575
+ "target": "components/pi-chat/use-remote-chat.ts"
576
+ },
569
577
  {
570
578
  "path": "registry/pi-chat/labels.ts",
571
579
  "type": "registry:lib",
@@ -605,6 +613,17 @@
605
613
  }
606
614
  },
607
615
  "@layer components": {
616
+ ".pi-chat": {
617
+ "--chat-success": "var(--success, var(--primary))",
618
+ "--chat-warning": "var(--warning, var(--muted-foreground))",
619
+ "--chat-warning-soft": "var(--warning-soft, color-mix(in oklab, var(--chat-warning) 15%, var(--background)))",
620
+ "--chat-warning-soft-foreground": "var(--warning-soft-foreground, color-mix(in oklab, var(--chat-warning) 75%, var(--foreground)))",
621
+ "--chat-display": "var(--font-display, var(--font-sans))"
622
+ },
623
+ ".pi-chat:is(.dark, .dark *)": {
624
+ "--chat-warning-soft": "var(--warning-soft, color-mix(in oklab, var(--chat-warning) 26%, var(--background)))",
625
+ "--chat-warning-soft-foreground": "var(--warning-soft-foreground, color-mix(in oklab, var(--chat-warning) 55%, var(--foreground)))"
626
+ },
608
627
  ".pi-chat-shimmer": {
609
628
  "background-image": "linear-gradient(100deg, var(--muted-foreground) 35%, var(--foreground) 50%, var(--muted-foreground) 65%)",
610
629
  "background-size": "250% 100%",
@@ -652,18 +671,18 @@
652
671
  "title": "Pi ambient agent",
653
672
  "description": "AmbientChat, a compact floating agent bar that grows into a chat window over an existing page, and AgentNotifications, toasts for finished, failed and waiting tasks (with the one guarded browser Notification helper). A block over the pi-chat item; its in-window artifact panel uses the pi-workspace layout.",
654
673
  "dependencies": [
655
- "@hachej/boring-ui-kit@^0.2.2",
674
+ "@hachej/boring-ui-kit@^0.2.4",
656
675
  "react@^19.0.0",
657
676
  "react-dom@^19.0.0",
658
- "@earendil-works/pi-durable@^1.1.0",
659
- "@earendil-works/pi-ai@^1.1.0",
677
+ "@earendil-works/pi-durable@~1.1.0",
678
+ "@earendil-works/pi-ai@~1.1.0",
660
679
  "lucide-react@^1.51.0"
661
680
  ],
662
681
  "registryDependencies": [
663
- "@boring-ui/pi-chat",
664
- "@boring-ui/pi-workspace",
665
- "@boring-ui/utils",
666
- "@boring-ui/button"
682
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/pi-chat.json",
683
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/pi-workspace.json",
684
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/utils.json",
685
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/button.json"
667
686
  ],
668
687
  "files": [
669
688
  {
@@ -681,32 +700,7 @@
681
700
  "type": "registry:component",
682
701
  "target": "components/pi-ambient/notifications.tsx"
683
702
  }
684
- ],
685
- "css": {
686
- "@layer components": {
687
- ".pi-chat.pi-ambient[data-variant=\"contrast\"]": {
688
- "color-scheme": "dark",
689
- "--background": "oklch(0.262 0.004 285)",
690
- "--foreground": "oklch(0.975 0.002 286)",
691
- "--card": "oklch(0.262 0.004 285)",
692
- "--card-foreground": "oklch(0.975 0.002 286)",
693
- "--popover": "oklch(0.3 0.005 285)",
694
- "--popover-foreground": "oklch(0.975 0.002 286)",
695
- "--primary": "oklch(0.985 0 0)",
696
- "--primary-foreground": "oklch(0.21 0.006 285.885)",
697
- "--secondary": "oklch(0.33 0.006 286)",
698
- "--secondary-foreground": "oklch(0.985 0 0)",
699
- "--muted": "oklch(0.315 0.005 286)",
700
- "--muted-foreground": "oklch(0.7 0.01 286)",
701
- "--accent": "oklch(0.35 0.006 286)",
702
- "--accent-foreground": "oklch(0.985 0 0)",
703
- "--destructive": "oklch(0.704 0.191 22.216)",
704
- "--border": "oklch(1 0 0 / 9%)",
705
- "--input": "oklch(1 0 0 / 14%)",
706
- "--ring": "oklch(0.75 0.02 286)"
707
- }
708
- }
709
- }
703
+ ]
710
704
  },
711
705
  {
712
706
  "name": "pi-workspace",
@@ -718,8 +712,8 @@
718
712
  "react-dom@^19.0.0"
719
713
  ],
720
714
  "registryDependencies": [
721
- "@boring-ui/pi-chat",
722
- "@boring-ui/utils"
715
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/pi-chat.json",
716
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/utils.json"
723
717
  ],
724
718
  "files": [
725
719
  {
@@ -740,19 +734,19 @@
740
734
  "title": "Pi agent app",
741
735
  "description": "AgentWorkspace: a whole agent page in one component. Left: the sessions pane (search, New, rename, archive, delete; collapsible, a drawer on a narrow screen). Center: PiChat. Right: the artifact viewers (artifact panel with versions, file viewer, auto-open of new artifacts) in the ArtifactWorkspace panel, a full-screen sheet on a phone. Props are data and callbacks; hooks for the conversations handler (useConversations), the chat transport (useRemoteChat) and saved resources (useSaved).",
742
736
  "dependencies": [
743
- "@hachej/boring-ui-kit@^0.2.2",
744
- "@hachej/boring-files@^0.2.2",
737
+ "@hachej/boring-ui-kit@^0.2.4",
738
+ "@hachej/boring-files@^0.2.4",
745
739
  "react@^19.0.0",
746
740
  "react-dom@^19.0.0",
747
741
  "lucide-react@^1.51.0",
748
742
  "radix-ui@^1.8.0"
749
743
  ],
750
744
  "registryDependencies": [
751
- "@boring-ui/pi-chat",
752
- "@boring-ui/pi-workspace",
753
- "@boring-ui/viewers",
754
- "@boring-ui/utils",
755
- "@boring-ui/button"
745
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/pi-chat.json",
746
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/pi-workspace.json",
747
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/viewers.json",
748
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/utils.json",
749
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/button.json"
756
750
  ],
757
751
  "files": [
758
752
  {
@@ -800,11 +794,6 @@
800
794
  "type": "registry:hook",
801
795
  "target": "components/pi-app/use-conversations.ts"
802
796
  },
803
- {
804
- "path": "registry/pi-app/use-remote-chat.ts",
805
- "type": "registry:hook",
806
- "target": "components/pi-app/use-remote-chat.ts"
807
- },
808
797
  {
809
798
  "path": "registry/pi-app/app-labels.ts",
810
799
  "type": "registry:lib",
@@ -822,14 +811,117 @@
822
811
  }
823
812
  ]
824
813
  },
814
+ {
815
+ "name": "app-shell",
816
+ "type": "registry:block",
817
+ "title": "App shell: screen layout and agent layer",
818
+ "description": "AppShell layout \"screen\": one screen at a time, every screen kept mounted. On a phone bottom tabs (at most four; more give three plus a « Plus » sheet) and an avatar button that opens the account sheet; on a wide screen the shadcn sidebar (icon rail, NavUser). One header per screen through useScreenHeader (title, subtitle, back, up to two actions, the rest behind « … »). The account menu holds « Améliorer l'app » (the improve agent), the app's own entries and sign out. AppSheet is the one bottom sheet (one open at a time, Back closes it). It mounts the AgentLayer: one agent's PiChat above the app (phone: a drawer with peek, half and full snap points; wide: a right panel), the improve agent in the same layer, optional push-to-talk and point mode. Also useAgentContext and readAgentContext (the screen on show travels as `context` with each submit) and useBackLayer, the one Back manager. Built on the shadcn drawer, sidebar, avatar and dropdown-menu of the host's own style (Base UI variants).",
819
+ "dependencies": [
820
+ "@hachej/boring-feedback@^0.2.4",
821
+ "@hachej/boring-ui-kit@^0.2.4",
822
+ "@base-ui/react@^1.8.0",
823
+ "react@^19.0.0",
824
+ "react-dom@^19.0.0",
825
+ "lucide-react@^1.51.0"
826
+ ],
827
+ "registryDependencies": [
828
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/pi-chat.json",
829
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/feedback.json",
830
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/utils.json",
831
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/button.json",
832
+ "drawer",
833
+ "sidebar",
834
+ "avatar",
835
+ "dropdown-menu"
836
+ ],
837
+ "css": {
838
+ "@layer base": {
839
+ ".app-shell :where(button, [role=button])": {
840
+ "appearance": "none",
841
+ "background-color": "transparent",
842
+ "border": "0 solid",
843
+ "font": "inherit",
844
+ "color": "inherit",
845
+ "cursor": "pointer",
846
+ "padding": "0"
847
+ },
848
+ ".app-shell :where(h2)": {
849
+ "margin": "0",
850
+ "font": "inherit"
851
+ }
852
+ }
853
+ },
854
+ "files": [
855
+ {
856
+ "path": "registry/app-shell/agent-layer.tsx",
857
+ "type": "registry:component",
858
+ "target": "components/app-shell/agent-layer.tsx"
859
+ },
860
+ {
861
+ "path": "registry/app-shell/agent-context.ts",
862
+ "type": "registry:lib",
863
+ "target": "components/app-shell/agent-context.ts"
864
+ },
865
+ {
866
+ "path": "registry/app-shell/back.ts",
867
+ "type": "registry:lib",
868
+ "target": "components/app-shell/back.ts"
869
+ },
870
+ {
871
+ "path": "registry/app-shell/use-visual-viewport.ts",
872
+ "type": "registry:hook",
873
+ "target": "components/app-shell/use-visual-viewport.ts"
874
+ },
875
+ {
876
+ "path": "registry/app-shell/text.ts",
877
+ "type": "registry:lib",
878
+ "target": "components/app-shell/text.ts"
879
+ },
880
+ {
881
+ "path": "registry/app-shell/app-shell.tsx",
882
+ "type": "registry:component",
883
+ "target": "components/app-shell/app-shell.tsx"
884
+ },
885
+ {
886
+ "path": "registry/app-shell/header.tsx",
887
+ "type": "registry:component",
888
+ "target": "components/app-shell/header.tsx"
889
+ },
890
+ {
891
+ "path": "registry/app-shell/nav.tsx",
892
+ "type": "registry:component",
893
+ "target": "components/app-shell/nav.tsx"
894
+ },
895
+ {
896
+ "path": "registry/app-shell/account.tsx",
897
+ "type": "registry:component",
898
+ "target": "components/app-shell/account.tsx"
899
+ },
900
+ {
901
+ "path": "registry/app-shell/sheet.tsx",
902
+ "type": "registry:component",
903
+ "target": "components/app-shell/sheet.tsx"
904
+ },
905
+ {
906
+ "path": "registry/app-shell/compact.ts",
907
+ "type": "registry:hook",
908
+ "target": "components/app-shell/compact.ts"
909
+ },
910
+ {
911
+ "path": "registry/app-shell/index.ts",
912
+ "type": "registry:lib",
913
+ "target": "components/app-shell/index.ts"
914
+ }
915
+ ]
916
+ },
825
917
  {
826
918
  "name": "viewers",
827
919
  "type": "registry:component",
828
920
  "title": "Viewers",
829
921
  "description": "The standard viewer top bar (title, status, viewer controls, Refresh, Share, Copy, Download, Open in new tab, Close, overflow menu) with Tailwind panes over it: the Markdown editor with a formatting toolbar and prose styling, the passive HTML preview and source editor, an image viewer with zoom and pan, and a PDF viewer. Owned, editable source over the borrowed controllers; no AI SDK.",
830
922
  "dependencies": [
831
- "@hachej/boring-ui-kit@^0.2.2",
832
- "@hachej/boring-files@^0.2.2",
923
+ "@hachej/boring-ui-kit@^0.2.4",
924
+ "@hachej/boring-files@^0.2.4",
833
925
  "react@^19.0.0",
834
926
  "react-dom@^19.0.0",
835
927
  "marked@^17.0.6",
@@ -848,9 +940,9 @@
848
940
  "lucide-react@^1.51.0"
849
941
  ],
850
942
  "registryDependencies": [
851
- "@boring-ui/theme",
852
- "@boring-ui/utils",
853
- "@boring-ui/button"
943
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/theme.json",
944
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/utils.json",
945
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/button.json"
854
946
  ],
855
947
  "files": [
856
948
  {
@@ -1473,8 +1565,8 @@
1473
1565
  "lucide-react@^1.51.0"
1474
1566
  ],
1475
1567
  "registryDependencies": [
1476
- "@boring-ui/theme",
1477
- "@boring-ui/utils"
1568
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/theme.json",
1569
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/utils.json"
1478
1570
  ],
1479
1571
  "files": [
1480
1572
  {
@@ -1490,9 +1582,9 @@
1490
1582
  "title": "Feedback",
1491
1583
  "description": "Feedback from the chat composer: one Feedback button starts feedback mode on the application page (hover, click to pin a numbered note, hold ⌥ to use the app, optional voice), and one chip carries the notes to the next message. FeedbackBar, NoteBubble, FeedbackChip with its review, useComposerFeedback for the pi-chat composer, and PickerOverlay styles. Optional, not mounted by default: PointButton, AnnotateSheet, FeedbackList and FeedbackReport. Picking, masking, anchoring and placement stay in @hachej/boring-feedback/page and /ui, so restyling cannot weaken them.",
1492
1584
  "dependencies": [
1493
- "@hachej/boring-feedback@^0.2.2",
1494
- "@hachej/boring-ui-kit@^0.2.2",
1495
- "@hachej/boring-files@^0.2.2",
1585
+ "@hachej/boring-feedback@^0.2.4",
1586
+ "@hachej/boring-ui-kit@^0.2.4",
1587
+ "@hachej/boring-files@^0.2.4",
1496
1588
  "react@^19.0.0",
1497
1589
  "react-dom@^19.0.0",
1498
1590
  "lucide-react@^1.51.0"
@@ -1547,20 +1639,29 @@
1547
1639
  "path": "registry/feedback/feedback-labels.ts",
1548
1640
  "type": "registry:lib",
1549
1641
  "target": "components/feedback/feedback-labels.ts"
1642
+ },
1643
+ {
1644
+ "path": "registry/feedback/point-mode.tsx",
1645
+ "type": "registry:component",
1646
+ "target": "components/feedback/point-mode.tsx"
1550
1647
  }
1551
1648
  ],
1552
1649
  "css": {
1553
1650
  "[data-boring=\"feedback\"]": {
1554
- "--boring-feedback-accent": "var(--primary, #2563eb)",
1555
- "--boring-feedback-reveal": "#d97706",
1556
- "--boring-feedback-surface": "var(--popover, var(--background, #ffffff))",
1557
- "--boring-feedback-text": "var(--popover-foreground, var(--foreground, #111827))",
1558
- "--boring-feedback-muted": "var(--muted-foreground, #6b7280)",
1559
- "--boring-feedback-border": "var(--border, #e5e7eb)",
1560
- "--boring-feedback-radius": "var(--radius, 0.625rem)",
1561
- "--boring-feedback-label-background": "#111827",
1562
- "--boring-feedback-label-foreground": "#f9fafb",
1563
- "font": "14px/1.45 ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif",
1651
+ "--boring-feedback-accent": "var(--primary)",
1652
+ "--boring-feedback-reveal": "var(--ring)",
1653
+ "--boring-feedback-surface": "var(--popover)",
1654
+ "--boring-feedback-text": "var(--popover-foreground)",
1655
+ "--boring-feedback-muted": "var(--muted-foreground)",
1656
+ "--boring-feedback-border": "var(--border)",
1657
+ "--boring-feedback-radius": "var(--radius-lg, var(--radius, 0.625rem))",
1658
+ "--boring-feedback-radius-md": "var(--radius-md, calc(var(--radius, 0.625rem) * 0.8))",
1659
+ "--boring-feedback-shadow": "var(--shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1))",
1660
+ "--boring-feedback-label-background": "var(--foreground)",
1661
+ "--boring-feedback-label-foreground": "var(--background)",
1662
+ "font-family": "inherit",
1663
+ "font-size": "var(--text-sm, 0.875rem)",
1664
+ "line-height": "var(--leading-normal, 1.5)",
1564
1665
  "color": "var(--boring-feedback-text)"
1565
1666
  },
1566
1667
  "[data-boring=\"feedback\"] *, [data-boring=\"feedback\"] *::before, [data-boring=\"feedback\"] *::after": {
@@ -1573,25 +1674,25 @@
1573
1674
  "gap": "0.375rem",
1574
1675
  "min-height": "2.25rem",
1575
1676
  "padding": "0 0.875rem",
1576
- "border": "1px solid var(--boring-feedback-border)",
1577
- "border-radius": "calc(var(--boring-feedback-radius) - 2px)",
1677
+ "border": "var(--border-width, 1px) solid var(--boring-feedback-border)",
1678
+ "border-radius": "var(--boring-feedback-radius-md)",
1578
1679
  "background": "var(--boring-feedback-surface)",
1579
1680
  "color": "var(--boring-feedback-text)",
1580
1681
  "font": "inherit",
1581
- "font-weight": "600",
1682
+ "font-weight": "var(--font-weight-semibold, 600)",
1582
1683
  "cursor": "pointer"
1583
1684
  },
1584
1685
  "[data-boring=\"feedback\"] .boring-feedback-button:hover": {
1585
- "background": "var(--accent, #f3f4f6)"
1686
+ "background": "var(--accent)"
1586
1687
  },
1587
1688
  "[data-boring=\"feedback\"] .boring-feedback-button:focus-visible, [data-boring=\"feedback\"] button:focus-visible, [data-boring=\"feedback\"] textarea:focus-visible": {
1588
- "outline": "2px solid var(--ring, var(--boring-feedback-accent))",
1689
+ "outline": "2px solid var(--ring)",
1589
1690
  "outline-offset": "2px"
1590
1691
  },
1591
1692
  "[data-boring=\"feedback\"] .boring-feedback-button[data-variant=\"primary\"]": {
1592
1693
  "border-color": "transparent",
1593
1694
  "background": "var(--boring-feedback-accent)",
1594
- "color": "var(--primary-foreground, #ffffff)"
1695
+ "color": "var(--primary-foreground)"
1595
1696
  },
1596
1697
  "[data-boring=\"feedback\"] .boring-feedback-button:disabled": {
1597
1698
  "opacity": "0.6",
@@ -1599,7 +1700,7 @@
1599
1700
  },
1600
1701
  "[data-boring=\"feedback\"] .boring-feedback-button[aria-pressed=\"true\"]": {
1601
1702
  "background": "var(--boring-feedback-accent)",
1602
- "color": "var(--primary-foreground, #ffffff)"
1703
+ "color": "var(--primary-foreground)"
1603
1704
  },
1604
1705
  "[data-boring=\"feedback\"] .boring-feedback-icon": {
1605
1706
  "display": "inline-flex",
@@ -1608,10 +1709,10 @@
1608
1709
  "width": "2rem",
1609
1710
  "height": "2rem",
1610
1711
  "border": "0",
1611
- "border-radius": "0.5rem",
1712
+ "border-radius": "var(--boring-feedback-radius-md)",
1612
1713
  "background": "transparent",
1613
1714
  "color": "var(--boring-feedback-muted)",
1614
- "font-size": "1.25rem",
1715
+ "font-size": "var(--text-xl, 1.25rem)",
1615
1716
  "line-height": "1",
1616
1717
  "cursor": "pointer"
1617
1718
  },
@@ -1626,7 +1727,7 @@
1626
1727
  "text-overflow": "ellipsis",
1627
1728
  "white-space": "nowrap",
1628
1729
  "color": "var(--boring-feedback-muted)",
1629
- "font-size": "0.8125rem"
1730
+ "font-size": "var(--text-sm, 0.875rem)"
1630
1731
  },
1631
1732
  "[data-boring=\"feedback\"] .boring-feedback-keys": {
1632
1733
  "opacity": "0.8"
@@ -1636,13 +1737,13 @@
1636
1737
  "flex-direction": "column",
1637
1738
  "gap": "0.75rem",
1638
1739
  "padding": "1rem",
1639
- "border": "1px solid var(--boring-feedback-border)",
1740
+ "border": "var(--border-width, 1px) solid var(--boring-feedback-border)",
1640
1741
  "border-radius": "var(--boring-feedback-radius)",
1641
1742
  "background": "var(--boring-feedback-surface)"
1642
1743
  },
1643
1744
  "[data-boring=\"feedback\"].boring-feedback-sheet": {
1644
1745
  "z-index": "2147483000",
1645
- "box-shadow": "0 16px 48px rgb(0 0 0 / 18%)",
1746
+ "box-shadow": "var(--boring-feedback-shadow)",
1646
1747
  "max-height": "calc(100dvh - 24px)",
1647
1748
  "overflow": "auto"
1648
1749
  },
@@ -1662,36 +1763,37 @@
1662
1763
  },
1663
1764
  "[data-boring=\"feedback\"] h2": {
1664
1765
  "margin": "0",
1665
- "font-size": "1rem",
1666
- "font-weight": "650"
1766
+ "font-family": "var(--font-display, inherit)",
1767
+ "font-size": "var(--text-base, 1rem)",
1768
+ "font-weight": "var(--font-weight-semibold, 600)"
1667
1769
  },
1668
1770
  "[data-boring=\"feedback\"] h3": {
1669
1771
  "margin": "0 0 0.25rem",
1670
- "font-size": "0.875rem"
1772
+ "font-size": "var(--text-sm, 0.875rem)"
1671
1773
  },
1672
1774
  "[data-boring=\"feedback\"] .boring-feedback-targets": {
1673
1775
  "margin": "0",
1674
1776
  "padding": "0",
1675
1777
  "list-style": "none",
1676
1778
  "color": "var(--boring-feedback-muted)",
1677
- "font-size": "0.8125rem"
1779
+ "font-size": "var(--text-sm, 0.875rem)"
1678
1780
  },
1679
1781
  "[data-boring=\"feedback\"] .boring-feedback-field": {
1680
1782
  "display": "grid",
1681
1783
  "gap": "0.375rem",
1682
- "font-weight": "600",
1683
- "font-size": "0.8125rem"
1784
+ "font-weight": "var(--font-weight-semibold, 600)",
1785
+ "font-size": "var(--text-sm, 0.875rem)"
1684
1786
  },
1685
1787
  "[data-boring=\"feedback\"] textarea": {
1686
1788
  "width": "100%",
1687
1789
  "padding": "0.5rem 0.625rem",
1688
- "border": "1px solid var(--input, var(--boring-feedback-border))",
1689
- "border-radius": "calc(var(--boring-feedback-radius) - 2px)",
1690
- "background": "var(--background, #ffffff)",
1790
+ "border": "var(--border-width, 1px) solid var(--input)",
1791
+ "border-radius": "var(--boring-feedback-radius-md)",
1792
+ "background": "var(--background)",
1691
1793
  "color": "inherit",
1692
1794
  "font": "inherit",
1693
- "font-size": "16px",
1694
- "font-weight": "400",
1795
+ "font-size": "var(--text-base, 1rem)",
1796
+ "font-weight": "var(--font-weight-normal, 400)",
1695
1797
  "resize": "vertical"
1696
1798
  },
1697
1799
  "[data-boring=\"feedback\"] .boring-feedback-actions": {
@@ -1703,31 +1805,33 @@
1703
1805
  "margin": "0",
1704
1806
  "min-height": "1.25em",
1705
1807
  "color": "var(--boring-feedback-muted)",
1706
- "font-size": "0.8125rem"
1808
+ "font-size": "var(--text-sm, 0.875rem)"
1707
1809
  },
1708
1810
  "[data-boring=\"feedback\"] .boring-feedback-warning": {
1709
1811
  "margin": "0",
1710
- "color": "var(--destructive, #b91c1c)",
1711
- "font-size": "0.8125rem"
1812
+ "color": "var(--destructive)",
1813
+ "font-size": "var(--text-sm, 0.875rem)"
1712
1814
  },
1713
1815
  "[data-boring=\"feedback\"] .boring-feedback-notice": {
1714
1816
  "margin": "0",
1715
1817
  "padding": "0.5rem 0.625rem",
1716
- "border-radius": "calc(var(--boring-feedback-radius) - 2px)",
1818
+ "border-radius": "var(--boring-feedback-radius-md)",
1717
1819
  "background": "color-mix(in srgb, var(--boring-feedback-reveal) 14%, transparent)",
1718
- "font-size": "0.8125rem"
1820
+ "font-size": "var(--text-sm, 0.875rem)"
1719
1821
  },
1720
1822
  "[data-boring=\"feedback\"] .boring-feedback-copied pre, [data-boring=\"feedback\"] .boring-feedback-manual": {
1721
1823
  "max-height": "12rem",
1722
1824
  "overflow": "auto",
1723
1825
  "margin": "0.375rem 0 0",
1724
- "font": "12px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace",
1826
+ "font-family": "var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace)",
1827
+ "font-size": "var(--text-xs, 0.75rem)",
1828
+ "line-height": "var(--leading-snug, 1.375)",
1725
1829
  "white-space": "pre-wrap"
1726
1830
  },
1727
1831
  "[data-boring=\"feedback\"] .boring-feedback-copied summary": {
1728
1832
  "cursor": "pointer",
1729
1833
  "color": "var(--boring-feedback-muted)",
1730
- "font-size": "0.8125rem"
1834
+ "font-size": "var(--text-sm, 0.875rem)"
1731
1835
  },
1732
1836
  "[data-boring=\"feedback\"].boring-feedback-list ul": {
1733
1837
  "display": "flex",
@@ -1743,7 +1847,7 @@
1743
1847
  "width": "100%",
1744
1848
  "padding": "0.5rem 0.625rem",
1745
1849
  "border": "0",
1746
- "border-radius": "calc(var(--boring-feedback-radius) - 2px)",
1850
+ "border-radius": "var(--boring-feedback-radius-md)",
1747
1851
  "background": "transparent",
1748
1852
  "color": "inherit",
1749
1853
  "font": "inherit",
@@ -1751,18 +1855,18 @@
1751
1855
  "cursor": "pointer"
1752
1856
  },
1753
1857
  "[data-boring=\"feedback\"].boring-feedback-list li button:hover, [data-boring=\"feedback\"].boring-feedback-list li button[aria-current=\"true\"]": {
1754
- "background": "var(--accent, #f3f4f6)"
1858
+ "background": "var(--accent)"
1755
1859
  },
1756
1860
  "[data-boring=\"feedback\"] .boring-feedback-title": {
1757
- "font-weight": "600"
1861
+ "font-weight": "var(--font-weight-semibold, 600)"
1758
1862
  },
1759
1863
  "[data-boring=\"feedback\"] .boring-feedback-meta": {
1760
1864
  "margin": "0",
1761
1865
  "color": "var(--boring-feedback-muted)",
1762
- "font-size": "0.8125rem"
1866
+ "font-size": "var(--text-sm, 0.875rem)"
1763
1867
  },
1764
1868
  "[data-boring=\"feedback\"] [data-status=\"addressed\"]": {
1765
- "color": "#15803d"
1869
+ "color": "var(--success, var(--primary))"
1766
1870
  },
1767
1871
  "[data-boring=\"feedback\"] .boring-feedback-empty": {
1768
1872
  "margin": "0",
@@ -1786,7 +1890,7 @@
1786
1890
  "gap": "0.5rem"
1787
1891
  },
1788
1892
  "[data-boring=\"feedback\"] .boring-feedback-anchors code": {
1789
- "font-size": "0.75rem",
1893
+ "font-size": "var(--text-xs, 0.75rem)",
1790
1894
  "color": "var(--boring-feedback-muted)"
1791
1895
  },
1792
1896
  "[data-boring=\"feedback\"] .boring-feedback-candidates": {
@@ -1811,10 +1915,10 @@
1811
1915
  "max-width": "calc(100vw - 24px)",
1812
1916
  "margin": "0 auto",
1813
1917
  "padding": "0.375rem 0.5rem 0.375rem 0.875rem",
1814
- "border": "1px solid var(--boring-feedback-border)",
1918
+ "border": "var(--border-width, 1px) solid var(--boring-feedback-border)",
1815
1919
  "border-radius": "999px",
1816
1920
  "background": "var(--boring-feedback-surface)",
1817
- "box-shadow": "0 10px 32px rgb(0 0 0 / 16%)"
1921
+ "box-shadow": "var(--boring-feedback-shadow)"
1818
1922
  },
1819
1923
  "[data-boring=\"feedback\"].boring-feedback-bar[data-using=\"true\"]": {
1820
1924
  "border-color": "var(--boring-feedback-reveal)"
@@ -1825,7 +1929,7 @@
1825
1929
  "max-width": "none",
1826
1930
  "margin": "0 0.625rem 0.625rem",
1827
1931
  "flex-wrap": "wrap",
1828
- "border-radius": "0.75rem",
1932
+ "border-radius": "var(--radius-xl, calc(var(--radius, 0.625rem) * 1.4))",
1829
1933
  "box-shadow": "none"
1830
1934
  },
1831
1935
  "[data-boring=\"feedback\"].boring-feedback-bar > *": {
@@ -1838,9 +1942,10 @@
1838
1942
  },
1839
1943
  "[data-boring=\"feedback\"] .boring-feedback-bar-title": {
1840
1944
  "display": "inline-flex",
1945
+ "font-family": "var(--font-display, inherit)",
1841
1946
  "align-items": "center",
1842
1947
  "gap": "0.375rem",
1843
- "font-weight": "650"
1948
+ "font-weight": "var(--font-weight-semibold, 600)"
1844
1949
  },
1845
1950
  "[data-boring=\"feedback\"] .boring-feedback-dot": {
1846
1951
  "width": "0.5rem",
@@ -1853,15 +1958,15 @@
1853
1958
  },
1854
1959
  "[data-boring=\"feedback\"] .boring-feedback-bar-meta": {
1855
1960
  "color": "var(--boring-feedback-muted)",
1856
- "font-size": "0.8125rem"
1961
+ "font-size": "var(--text-sm, 0.875rem)"
1857
1962
  },
1858
1963
  "[data-boring=\"feedback\"] .boring-feedback-alt": {
1859
1964
  "color": "var(--boring-feedback-muted)",
1860
- "font-size": "0.75rem"
1965
+ "font-size": "var(--text-xs, 0.75rem)"
1861
1966
  },
1862
1967
  "[data-boring=\"feedback\"] .boring-feedback-icon[aria-pressed=\"true\"]": {
1863
- "background": "color-mix(in srgb, #dc2626 16%, transparent)",
1864
- "color": "#dc2626"
1968
+ "background": "color-mix(in srgb, var(--destructive) 16%, transparent)",
1969
+ "color": "var(--destructive)"
1865
1970
  },
1866
1971
  "[data-boring=\"feedback\"] .boring-feedback-icon:disabled": {
1867
1972
  "opacity": "0.45",
@@ -1873,16 +1978,16 @@
1873
1978
  "gap": "0.375rem",
1874
1979
  "padding": "0.125rem 0.5rem",
1875
1980
  "border-radius": "999px",
1876
- "background": "color-mix(in srgb, #dc2626 12%, transparent)",
1877
- "color": "#b91c1c",
1878
- "font-size": "0.75rem",
1879
- "font-weight": "650"
1981
+ "background": "color-mix(in srgb, var(--destructive) 12%, transparent)",
1982
+ "color": "var(--destructive)",
1983
+ "font-size": "var(--text-xs, 0.75rem)",
1984
+ "font-weight": "var(--font-weight-semibold, 600)"
1880
1985
  },
1881
1986
  "[data-boring=\"feedback\"] .boring-feedback-rec": {
1882
1987
  "width": "0.5rem",
1883
1988
  "height": "0.5rem",
1884
1989
  "border-radius": "50%",
1885
- "background": "#dc2626"
1990
+ "background": "var(--destructive)"
1886
1991
  },
1887
1992
  "[data-boring=\"feedback\"].boring-feedback-bar[data-docked=\"true\"] > .boring-feedback-hint": {
1888
1993
  "flex": "1 1 10rem",
@@ -1893,12 +1998,12 @@
1893
1998
  "min-height": "2rem",
1894
1999
  "padding": "0 0.625rem",
1895
2000
  "gap": "0.3125rem",
1896
- "font-size": "0.8125rem"
2001
+ "font-size": "var(--text-sm, 0.875rem)"
1897
2002
  },
1898
2003
  "[data-boring=\"feedback\"] .boring-feedback-record[aria-pressed=\"true\"]": {
1899
2004
  "border-color": "transparent",
1900
- "background": "#dc2626",
1901
- "color": "#ffffff"
2005
+ "background": "var(--destructive)",
2006
+ "color": "white"
1902
2007
  },
1903
2008
  "[data-boring=\"feedback\"] .boring-feedback-stop": {
1904
2009
  "width": "0.625rem",
@@ -1910,13 +2015,13 @@
1910
2015
  "font-variant-numeric": "tabular-nums"
1911
2016
  },
1912
2017
  "[data-boring=\"feedback\"].boring-feedback-bar[data-recording=\"true\"]": {
1913
- "border-color": "color-mix(in srgb, #dc2626 55%, var(--boring-feedback-border))"
2018
+ "border-color": "color-mix(in srgb, var(--destructive) 55%, var(--boring-feedback-border))"
1914
2019
  },
1915
2020
  "[data-boring=\"feedback\"] .boring-feedback-voice-problem": {
1916
2021
  "flex": "1 1 100%",
1917
2022
  "margin": "0",
1918
- "color": "var(--destructive, #b91c1c)",
1919
- "font-size": "0.8125rem",
2023
+ "color": "var(--destructive)",
2024
+ "font-size": "var(--text-sm, 0.875rem)",
1920
2025
  "white-space": "normal"
1921
2026
  },
1922
2027
  "[data-boring=\"feedback\"] .boring-feedback-element": {
@@ -1933,8 +2038,8 @@
1933
2038
  "min-width": "2rem",
1934
2039
  "overflow": "hidden",
1935
2040
  "text-overflow": "ellipsis",
1936
- "font-size": "0.8125rem",
1937
- "font-weight": "600"
2041
+ "font-size": "var(--text-sm, 0.875rem)",
2042
+ "font-weight": "var(--font-weight-semibold, 600)"
1938
2043
  },
1939
2044
  "[data-boring=\"feedback\"] .boring-feedback-element-file": {
1940
2045
  "flex": "0 100 auto",
@@ -1942,26 +2047,28 @@
1942
2047
  "overflow": "hidden",
1943
2048
  "text-overflow": "ellipsis",
1944
2049
  "color": "var(--boring-feedback-muted)",
1945
- "font": "0.6875rem/1.4 ui-monospace, SFMono-Regular, Menlo, monospace"
2050
+ "font-family": "var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace)",
2051
+ "font-size": "var(--text-xs, 0.75rem)",
2052
+ "line-height": "var(--leading-snug, 1.375)"
1946
2053
  },
1947
2054
  "[data-boring=\"feedback\"] .boring-feedback-badge": {
1948
2055
  "flex": "none",
1949
2056
  "padding": "0 0.375rem",
1950
2057
  "border-radius": "999px",
1951
- "background": "var(--muted, #f3f4f6)",
2058
+ "background": "var(--muted)",
1952
2059
  "color": "var(--boring-feedback-muted)",
1953
- "font-size": "0.6875rem",
1954
- "line-height": "1.25rem"
2060
+ "font-size": "var(--text-xs, 0.75rem)",
2061
+ "line-height": "calc(var(--spacing, 0.25rem) * 5)"
1955
2062
  },
1956
2063
  "[data-boring=\"feedback\"].boring-feedback-bubble": {
1957
2064
  "z-index": "2147483001",
1958
2065
  "display": "grid",
1959
2066
  "gap": "0.375rem",
1960
2067
  "padding": "0.5rem",
1961
- "border": "1px solid var(--boring-feedback-border)",
2068
+ "border": "var(--border-width, 1px) solid var(--boring-feedback-border)",
1962
2069
  "border-radius": "var(--boring-feedback-radius)",
1963
2070
  "background": "var(--boring-feedback-surface)",
1964
- "box-shadow": "0 12px 32px rgb(0 0 0 / 18%)"
2071
+ "box-shadow": "var(--boring-feedback-shadow)"
1965
2072
  },
1966
2073
  "[data-boring=\"feedback\"] .boring-feedback-bubble-head, [data-boring=\"feedback\"] .boring-feedback-note-head": {
1967
2074
  "display": "flex",
@@ -1976,11 +2083,11 @@
1976
2083
  "text-overflow": "ellipsis",
1977
2084
  "white-space": "nowrap",
1978
2085
  "color": "var(--boring-feedback-muted)",
1979
- "font-size": "0.75rem"
2086
+ "font-size": "var(--text-xs, 0.75rem)"
1980
2087
  },
1981
2088
  "[data-boring=\"feedback\"] .boring-feedback-pin": {
1982
2089
  "color": "var(--boring-feedback-accent)",
1983
- "font-weight": "700"
2090
+ "font-weight": "var(--font-weight-bold, 700)"
1984
2091
  },
1985
2092
  "[data-boring=\"feedback\"].boring-feedback-chip": {
1986
2093
  "position": "relative",
@@ -1990,10 +2097,10 @@
1990
2097
  "gap": "0.125rem",
1991
2098
  "max-width": "100%",
1992
2099
  "padding": "0.125rem 0.125rem 0.125rem 0.625rem",
1993
- "border": "1px solid var(--boring-feedback-border)",
2100
+ "border": "var(--border-width, 1px) solid var(--boring-feedback-border)",
1994
2101
  "border-radius": "999px",
1995
2102
  "background": "color-mix(in srgb, var(--boring-feedback-accent) 8%, var(--boring-feedback-surface))",
1996
- "font-size": "0.8125rem"
2103
+ "font-size": "var(--text-sm, 0.875rem)"
1997
2104
  },
1998
2105
  "[data-boring=\"feedback\"] .boring-feedback-chip-open": {
1999
2106
  "min-width": "0",
@@ -2002,19 +2109,19 @@
2002
2109
  "background": "transparent",
2003
2110
  "color": "inherit",
2004
2111
  "font": "inherit",
2005
- "font-weight": "600",
2112
+ "font-weight": "var(--font-weight-semibold, 600)",
2006
2113
  "text-align": "left",
2007
2114
  "cursor": "pointer"
2008
2115
  },
2009
2116
  "[data-boring=\"feedback\"] .boring-feedback-chip-route": {
2010
2117
  "color": "var(--boring-feedback-muted)",
2011
- "font-family": "ui-monospace, SFMono-Regular, Menlo, monospace",
2012
- "font-weight": "500"
2118
+ "font-family": "var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace)",
2119
+ "font-weight": "var(--font-weight-medium, 500)"
2013
2120
  },
2014
2121
  "[data-boring=\"feedback\"] .boring-feedback-chip-remove": {
2015
2122
  "width": "1.5rem",
2016
2123
  "height": "1.5rem",
2017
- "font-size": "1rem"
2124
+ "font-size": "var(--text-base, 1rem)"
2018
2125
  },
2019
2126
  "[data-boring=\"feedback\"].boring-feedback-review": {
2020
2127
  "z-index": "2147483000",
@@ -2024,10 +2131,10 @@
2024
2131
  "max-height": "min(28rem, calc(100dvh - 24px))",
2025
2132
  "overflow": "auto",
2026
2133
  "padding": "0.875rem",
2027
- "border": "1px solid var(--boring-feedback-border)",
2134
+ "border": "var(--border-width, 1px) solid var(--boring-feedback-border)",
2028
2135
  "border-radius": "var(--boring-feedback-radius)",
2029
2136
  "background": "var(--boring-feedback-surface)",
2030
- "box-shadow": "0 16px 48px rgb(0 0 0 / 18%)",
2137
+ "box-shadow": "var(--boring-feedback-shadow)",
2031
2138
  "text-align": "left"
2032
2139
  },
2033
2140
  "[data-boring=\"feedback\"] .boring-feedback-notes": {
@@ -2042,10 +2149,65 @@
2042
2149
  "display": "grid",
2043
2150
  "gap": "0.25rem",
2044
2151
  "padding": "0.375rem",
2045
- "border-radius": "calc(var(--boring-feedback-radius) - 2px)"
2152
+ "border-radius": "var(--boring-feedback-radius-md)"
2046
2153
  },
2047
2154
  "[data-boring=\"feedback\"] .boring-feedback-notes > li:hover, [data-boring=\"feedback\"] .boring-feedback-notes > li:focus-within": {
2048
- "background": "var(--accent, #f3f4f6)"
2155
+ "background": "var(--accent)"
2156
+ },
2157
+ "[data-boring=\"feedback\"].boring-feedback-pointbar": {
2158
+ "position": "fixed",
2159
+ "left": "8px",
2160
+ "right": "8px",
2161
+ "z-index": "2147483000",
2162
+ "display": "flex",
2163
+ "flex-direction": "column",
2164
+ "gap": "0.375rem",
2165
+ "max-width": "32rem",
2166
+ "margin": "0 auto",
2167
+ "padding": "0.5rem",
2168
+ "border": "var(--border-width, 1px) solid var(--boring-feedback-border)",
2169
+ "border-radius": "var(--boring-feedback-radius)",
2170
+ "background": "var(--boring-feedback-surface)",
2171
+ "box-shadow": "var(--boring-feedback-shadow)"
2172
+ },
2173
+ "[data-boring=\"feedback\"].boring-feedback-pointbar[data-using=\"true\"]": {
2174
+ "border-color": "var(--boring-feedback-reveal)"
2175
+ },
2176
+ "[data-boring=\"feedback\"].boring-feedback-pointbar[data-using=\"true\"] .boring-feedback-dot": {
2177
+ "background": "var(--boring-feedback-reveal)"
2178
+ },
2179
+ "[data-boring=\"feedback\"] .boring-feedback-point-line": {
2180
+ "display": "flex",
2181
+ "align-items": "center",
2182
+ "gap": "0.5rem",
2183
+ "min-width": "0",
2184
+ "padding": "0 0.25rem"
2185
+ },
2186
+ "[data-boring=\"feedback\"] .boring-feedback-point-line .boring-feedback-dot": {
2187
+ "flex": "none"
2188
+ },
2189
+ "[data-boring=\"feedback\"] .boring-feedback-point-hint": {
2190
+ "flex": "1",
2191
+ "min-width": "0",
2192
+ "font-weight": "var(--font-weight-semibold, 600)"
2193
+ },
2194
+ "[data-boring=\"feedback\"] .boring-feedback-point-count": {
2195
+ "flex": "none",
2196
+ "color": "var(--boring-feedback-muted)",
2197
+ "font-size": "var(--text-sm, 0.875rem)",
2198
+ "font-variant-numeric": "tabular-nums"
2199
+ },
2200
+ "[data-boring=\"feedback\"] .boring-feedback-point-actions": {
2201
+ "display": "flex",
2202
+ "align-items": "center",
2203
+ "gap": "0.375rem"
2204
+ },
2205
+ "[data-boring=\"feedback\"] .boring-feedback-point-actions .boring-feedback-button": {
2206
+ "min-height": "2.75rem",
2207
+ "min-width": "2.75rem"
2208
+ },
2209
+ "[data-boring=\"feedback\"] .boring-feedback-point-spacer": {
2210
+ "flex": "1"
2049
2211
  },
2050
2212
  "@media (max-width: 640px), (pointer: coarse)": {
2051
2213
  "[data-boring=\"feedback\"] .boring-feedback-button": {
@@ -2084,10 +2246,10 @@
2084
2246
  "width": "min(40rem, calc(100vw - 24px))",
2085
2247
  "margin": "0 auto",
2086
2248
  "padding": "0.75rem 0.875rem",
2087
- "border": "2px solid var(--boring-feedback-reveal)",
2249
+ "border": "calc(var(--border-width, 1px) * 2) solid var(--boring-feedback-reveal)",
2088
2250
  "border-radius": "var(--boring-feedback-radius)",
2089
2251
  "background": "var(--boring-feedback-surface)",
2090
- "box-shadow": "0 12px 36px rgb(0 0 0 / 18%)"
2252
+ "box-shadow": "var(--boring-feedback-shadow)"
2091
2253
  },
2092
2254
  "[data-boring=\"feedback\"] .boring-feedback-preview-head": {
2093
2255
  "display": "flex",
@@ -2098,19 +2260,19 @@
2098
2260
  "[data-boring=\"feedback\"] .boring-feedback-preview-title": {
2099
2261
  "padding": "0.125rem 0.5rem",
2100
2262
  "border-radius": "999px",
2101
- "background": "var(--boring-feedback-reveal)",
2102
- "color": "#ffffff",
2103
- "font-size": "0.8125rem",
2104
- "letter-spacing": "0.02em",
2263
+ "background": "var(--primary)",
2264
+ "color": "var(--primary-foreground)",
2265
+ "font-size": "var(--text-sm, 0.875rem)",
2266
+ "letter-spacing": "var(--tracking-wide, 0.025em)",
2105
2267
  "text-transform": "uppercase"
2106
2268
  },
2107
2269
  "[data-boring=\"feedback\"] .boring-feedback-preview-notice": {
2108
- "font-weight": "600"
2270
+ "font-weight": "var(--font-weight-semibold, 600)"
2109
2271
  },
2110
2272
  "[data-boring=\"feedback\"] .boring-feedback-preview-status": {
2111
2273
  "margin-left": "auto",
2112
2274
  "color": "var(--boring-feedback-muted)",
2113
- "font-size": "0.8125rem"
2275
+ "font-size": "var(--text-sm, 0.875rem)"
2114
2276
  },
2115
2277
  "[data-boring=\"feedback\"] .boring-feedback-preview-summary": {
2116
2278
  "margin": "0"
@@ -2119,15 +2281,15 @@
2119
2281
  "margin": "0",
2120
2282
  "padding-left": "1.125rem",
2121
2283
  "color": "var(--boring-feedback-muted)",
2122
- "font-size": "0.8125rem"
2284
+ "font-size": "var(--text-sm, 0.875rem)"
2123
2285
  },
2124
2286
  "[data-boring=\"feedback\"] .boring-feedback-preview-changes code": {
2125
- "font-size": "0.75rem"
2287
+ "font-size": "var(--text-xs, 0.75rem)"
2126
2288
  },
2127
2289
  "[data-boring=\"feedback\"] .boring-feedback-preview-error": {
2128
2290
  "margin": "0",
2129
- "color": "#b91c1c",
2130
- "font-size": "0.8125rem"
2291
+ "color": "var(--destructive)",
2292
+ "font-size": "var(--text-sm, 0.875rem)"
2131
2293
  },
2132
2294
  "[data-boring=\"feedback\"] .boring-feedback-preview-actions": {
2133
2295
  "display": "flex",
@@ -2139,8 +2301,8 @@
2139
2301
  "min-width": "0",
2140
2302
  "min-height": "2.25rem",
2141
2303
  "padding": "0 0.75rem",
2142
- "border": "1px solid var(--boring-feedback-border)",
2143
- "border-radius": "calc(var(--boring-feedback-radius) - 2px)",
2304
+ "border": "var(--border-width, 1px) solid var(--boring-feedback-border)",
2305
+ "border-radius": "var(--boring-feedback-radius-md)",
2144
2306
  "background": "var(--boring-feedback-surface)",
2145
2307
  "color": "var(--boring-feedback-text)",
2146
2308
  "font": "inherit"
@@ -2153,12 +2315,17 @@
2153
2315
  "[data-boring=\"feedback\"] .boring-feedback-bubble-actions .boring-feedback-button": {
2154
2316
  "min-height": "2rem",
2155
2317
  "padding": "0 0.625rem",
2156
- "font-size": "0.8125rem"
2318
+ "font-size": "var(--text-sm, 0.875rem)"
2319
+ },
2320
+ "@media (pointer: coarse)": {
2321
+ "[data-boring=\"feedback\"] .boring-feedback-bubble-actions .boring-feedback-button": {
2322
+ "min-height": "2.75rem"
2323
+ }
2157
2324
  }
2158
2325
  },
2159
2326
  "registryDependencies": [
2160
- "@boring-ui/pi-chat",
2161
- "@boring-ui/utils"
2327
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/pi-chat.json",
2328
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/utils.json"
2162
2329
  ]
2163
2330
  },
2164
2331
  {
@@ -2167,8 +2334,8 @@
2167
2334
  "title": "Feedback preview",
2168
2335
  "description": "PreviewBanner: a live, reversible preview of a change in the page (Approve / Discard) over `@hachej/boring-feedback/preview`, whose subagent calls models through a host gateway. Separate from `feedback` so annotation-only apps do not install the model SDK; install `feedback` first (its styles cover the banner).",
2169
2336
  "dependencies": [
2170
- "@hachej/boring-feedback@^0.2.2",
2171
- "@earendil-works/pi-ai@^1.1.0",
2337
+ "@hachej/boring-feedback@^0.2.4",
2338
+ "@earendil-works/pi-ai@~1.1.0",
2172
2339
  "react@^19.0.0"
2173
2340
  ],
2174
2341
  "files": [
@@ -2185,8 +2352,8 @@
2185
2352
  "title": "Consumer task-list viewer",
2186
2353
  "description": "A consumer-defined task-list schema and controller over the shared text buffer, with a restylable borrowed React renderer.",
2187
2354
  "dependencies": [
2188
- "@hachej/boring-ui-kit@^0.2.2",
2189
- "@hachej/boring-files@^0.2.2",
2355
+ "@hachej/boring-ui-kit@^0.2.4",
2356
+ "@hachej/boring-files@^0.2.4",
2190
2357
  "react@^19.0.0",
2191
2358
  "react-dom@^19.0.0",
2192
2359
  "zod@^4.6.5"
@@ -2252,14 +2419,14 @@
2252
2419
  "title": "File tree",
2253
2420
  "description": "Browse, search, upload and inspect retained versions through one revisionProvider binding.",
2254
2421
  "dependencies": [
2255
- "@hachej/boring-ui-kit@^0.2.2",
2256
- "@hachej/boring-files@^0.2.2",
2422
+ "@hachej/boring-ui-kit@^0.2.4",
2423
+ "@hachej/boring-files@^0.2.4",
2257
2424
  "react@^19.0.0",
2258
2425
  "radix-ui@^1.8.0",
2259
2426
  "lucide-react@^1.51.0"
2260
2427
  ],
2261
2428
  "registryDependencies": [
2262
- "@boring-ui/theme"
2429
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.2.4/r/theme.json"
2263
2430
  ],
2264
2431
  "files": [
2265
2432
  {