@semiont/react-ui 0.5.25 → 0.5.27

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 (267) hide show
  1. package/README.md +28 -4
  2. package/dist/PdfAnnotationCanvas.client-EVUPTUWZ.js +677 -0
  3. package/dist/PdfAnnotationCanvas.client-EVUPTUWZ.js.map +1 -0
  4. package/dist/PdfAnnotationCanvas.client-TGDPPGXJ.css +185 -0
  5. package/dist/PdfAnnotationCanvas.client-TGDPPGXJ.css.map +1 -0
  6. package/dist/{ar-CULRHLNG.js → ar-OU3DQGC6.js} +65 -7
  7. package/dist/ar-OU3DQGC6.js.map +1 -0
  8. package/dist/{bn-HYR7CEL2.js → bn-PHWCR6AZ.js} +65 -7
  9. package/dist/bn-PHWCR6AZ.js.map +1 -0
  10. package/dist/chunk-5VDTWRXJ.js +287 -0
  11. package/dist/chunk-5VDTWRXJ.js.map +1 -0
  12. package/dist/{chunk-TG2XQEC4.js → chunk-BTUG3VJJ.js} +18 -298
  13. package/dist/chunk-BTUG3VJJ.js.map +1 -0
  14. package/dist/{chunk-NH6L2GIL.js → chunk-PCRRBU7H.js} +65 -7
  15. package/dist/chunk-PCRRBU7H.js.map +1 -0
  16. package/dist/{cs-YBRWY7NH.js → cs-NEXYZ62I.js} +65 -7
  17. package/dist/cs-NEXYZ62I.js.map +1 -0
  18. package/dist/{da-PHDEOBV3.js → da-FAT43YCU.js} +65 -7
  19. package/dist/da-FAT43YCU.js.map +1 -0
  20. package/dist/{de-O4UCCVLJ.js → de-KRQ3WBCU.js} +65 -7
  21. package/dist/de-KRQ3WBCU.js.map +1 -0
  22. package/dist/{el-MVGO6WZV.js → el-Q4IU3EKC.js} +65 -7
  23. package/dist/el-Q4IU3EKC.js.map +1 -0
  24. package/dist/{en-2KQILFKQ.js → en-2KADE7N4.js} +6 -2
  25. package/dist/{es-USSLXQY7.js → es-2IO3R2MK.js} +65 -7
  26. package/dist/es-2IO3R2MK.js.map +1 -0
  27. package/dist/{fa-WMAREFWY.js → fa-Q5GOQFXX.js} +65 -7
  28. package/dist/fa-Q5GOQFXX.js.map +1 -0
  29. package/dist/{fi-B3NBNOTS.js → fi-R6NMRWBE.js} +65 -7
  30. package/dist/fi-R6NMRWBE.js.map +1 -0
  31. package/dist/{fr-TXYK5T5W.js → fr-QY4D5E6J.js} +65 -7
  32. package/dist/fr-QY4D5E6J.js.map +1 -0
  33. package/dist/{he-JCJACW5D.js → he-X6Y77XHY.js} +65 -7
  34. package/dist/he-X6Y77XHY.js.map +1 -0
  35. package/dist/{hi-VOQLZNJU.js → hi-XL7IOEQM.js} +65 -7
  36. package/dist/hi-XL7IOEQM.js.map +1 -0
  37. package/dist/{id-BFN5RZNZ.js → id-QZ4ZZS67.js} +65 -7
  38. package/dist/id-QZ4ZZS67.js.map +1 -0
  39. package/dist/index.css +241 -508
  40. package/dist/index.css.map +1 -1
  41. package/dist/index.d.ts +155 -54
  42. package/dist/index.js +1815 -1642
  43. package/dist/index.js.map +1 -1
  44. package/dist/integrations/css-modules-helper.js +1 -3
  45. package/dist/integrations/css-modules-helper.js.map +1 -1
  46. package/dist/{it-TWWDHKKM.js → it-ME2Q7OB6.js} +65 -7
  47. package/dist/it-ME2Q7OB6.js.map +1 -0
  48. package/dist/{ja-YRQLEBFM.js → ja-HX7QASRI.js} +65 -7
  49. package/dist/ja-HX7QASRI.js.map +1 -0
  50. package/dist/{ko-PG6B3CRB.js → ko-EQO5AHAV.js} +65 -7
  51. package/dist/ko-EQO5AHAV.js.map +1 -0
  52. package/dist/{ms-7EZECVKM.js → ms-UILFSF3I.js} +65 -7
  53. package/dist/ms-UILFSF3I.js.map +1 -0
  54. package/dist/{nl-HP753YAP.js → nl-NNI45PMK.js} +65 -7
  55. package/dist/nl-NNI45PMK.js.map +1 -0
  56. package/dist/{no-JUD5WX3N.js → no-MAL5F6P6.js} +65 -7
  57. package/dist/no-MAL5F6P6.js.map +1 -0
  58. package/dist/{pl-RVUL4CBM.js → pl-4RMY6JAJ.js} +65 -7
  59. package/dist/pl-4RMY6JAJ.js.map +1 -0
  60. package/dist/{pt-RPOVD4QM.js → pt-VQH2X3QQ.js} +65 -7
  61. package/dist/pt-VQH2X3QQ.js.map +1 -0
  62. package/dist/{ro-DMYWQTRD.js → ro-XXCQO2OG.js} +65 -7
  63. package/dist/ro-XXCQO2OG.js.map +1 -0
  64. package/dist/{sv-DMZ4FGXD.js → sv-7Z6EJ6U4.js} +65 -7
  65. package/dist/sv-7Z6EJ6U4.js.map +1 -0
  66. package/dist/test-utils.css +1 -1
  67. package/dist/test-utils.css.map +1 -1
  68. package/dist/test-utils.d.ts +1 -1
  69. package/dist/test-utils.js +5 -3
  70. package/dist/test-utils.js.map +1 -1
  71. package/dist/{th-4HVBJBQ2.js → th-L3DXXYVQ.js} +65 -7
  72. package/dist/th-L3DXXYVQ.js.map +1 -0
  73. package/dist/{tr-6BDPU5ML.js → tr-P3DFVLFJ.js} +65 -7
  74. package/dist/tr-P3DFVLFJ.js.map +1 -0
  75. package/dist/{uk-TBZBT2TL.js → uk-7C5D3PXS.js} +65 -7
  76. package/dist/uk-7C5D3PXS.js.map +1 -0
  77. package/dist/{vi-UMKZKZL3.js → vi-ZLTLEO7P.js} +65 -7
  78. package/dist/vi-ZLTLEO7P.js.map +1 -0
  79. package/dist/{zh-YBJWJJYB.js → zh-5FHVWDIN.js} +65 -7
  80. package/dist/zh-5FHVWDIN.js.map +1 -0
  81. package/package.json +7 -7
  82. package/src/components/AssistProgress.tsx +144 -134
  83. package/src/components/{EntityFoundLog.tsx → ItemFoundLog.tsx} +12 -7
  84. package/src/components/ProtectedErrorBoundary.css +3 -1
  85. package/src/components/StatusDisplay.css +35 -35
  86. package/src/components/Toast.css +3 -1
  87. package/src/components/__tests__/AssistProgress.test.tsx +216 -148
  88. package/src/components/annotation/annotation-entries.css +0 -4
  89. package/src/components/annotation/annotations.css +1 -1
  90. package/src/components/annotation/references.css +0 -4
  91. package/src/components/image-annotation/AnnotationOverlay.tsx +6 -6
  92. package/src/components/image-annotation/SvgDrawingCanvas.tsx +1 -1
  93. package/src/components/image-annotation/__tests__/AnnotationOverlay.click.test.tsx +7 -9
  94. package/src/components/image-annotation/__tests__/SvgDrawingCanvas.click.test.tsx +1 -2
  95. package/src/components/layout/Header.css +0 -4
  96. package/src/components/layout/LeftSidebar.css +0 -4
  97. package/src/components/modals/ConfigureGenerationStep.tsx +109 -48
  98. package/src/components/modals/ConfigureSearchStep.tsx +23 -40
  99. package/src/components/modals/ReferenceWizardModal.tsx +55 -16
  100. package/src/components/modals/ResourceGenerateModal.tsx +24 -8
  101. package/src/components/modals/ResourceSearchModal.tsx +1 -1
  102. package/src/components/modals/SearchModal.css +5 -17
  103. package/src/components/modals/SearchModal.tsx +1 -1
  104. package/src/components/modals/SearchResultsStep.tsx +2 -20
  105. package/src/components/modals/WizardFooter.tsx +63 -0
  106. package/src/components/modals/__tests__/ConfigureGenerationStep.test.tsx +255 -0
  107. package/src/components/modals/__tests__/ConfigureSearchStep.test.tsx +72 -0
  108. package/src/components/modals/__tests__/ReferenceWizardModal.test.tsx +256 -0
  109. package/src/components/modals/__tests__/ResourceGenerateModal.test.tsx +1 -0
  110. package/src/components/modals/__tests__/ResourceSearchModal.test.tsx +6 -2
  111. package/src/components/modals/__tests__/SearchModal.search-wiring.test.tsx +6 -2
  112. package/src/components/modals/__tests__/WizardFooter.test.tsx +235 -0
  113. package/src/components/modals/modals.css +16 -42
  114. package/src/components/navigation/NavigationTabs.css +0 -20
  115. package/src/components/pdf-annotation/PdfAnnotationCanvas.css +162 -6
  116. package/src/components/pdf-annotation/PdfAnnotationCanvas.tsx +623 -232
  117. package/src/components/pdf-annotation/__tests__/PdfAnnotationCanvas.test.tsx +764 -7
  118. package/src/components/pdf-annotation/__tests__/estimate-slot-height.test.ts +53 -0
  119. package/src/components/pdf-annotation/estimate-slot-height.ts +31 -0
  120. package/src/components/resource/AnnotateView.tsx +16 -5
  121. package/src/components/resource/AnnotationHistory.tsx +2 -0
  122. package/src/components/resource/BrowseView.tsx +15 -4
  123. package/src/components/resource/ResourceViewer.tsx +23 -24
  124. package/src/components/resource/__tests__/AnnotateView.focus.test.tsx +50 -0
  125. package/src/components/resource/__tests__/AnnotationHistory.test.tsx +2 -0
  126. package/src/components/resource/__tests__/BrowseView.test.tsx +29 -3
  127. package/src/components/resource/__tests__/ResourceViewer.embeddable.test.tsx +47 -3
  128. package/src/components/resource/__tests__/browse-renderers.dispatch.test.tsx +33 -0
  129. package/src/components/resource/annotate-renderers.tsx +10 -1
  130. package/src/components/resource/browse-renderers.tsx +10 -1
  131. package/src/components/resource/event-formatting.ts +0 -3
  132. package/src/components/resource/panels/AssessmentEntry.tsx +1 -1
  133. package/src/components/resource/panels/AssessmentPanel.css +5 -6
  134. package/src/components/resource/panels/AssistSection.css +68 -271
  135. package/src/components/resource/panels/AssistSection.tsx +4 -4
  136. package/src/components/resource/panels/AssistShell.tsx +12 -4
  137. package/src/components/resource/panels/CollaborationPanel.css +47 -22
  138. package/src/components/resource/panels/CollaborationPanel.tsx +93 -2
  139. package/src/components/resource/panels/CommentEntry.tsx +1 -1
  140. package/src/components/resource/panels/CommentsPanel.css +0 -16
  141. package/src/components/resource/panels/HighlightEntry.tsx +1 -1
  142. package/src/components/resource/panels/HighlightPanel.css +0 -7
  143. package/src/components/resource/panels/JsonLdPanel.css +0 -4
  144. package/src/components/resource/panels/ReferenceEntry.tsx +1 -1
  145. package/src/components/resource/panels/ReferencesPanel.css +0 -12
  146. package/src/components/resource/panels/ReferencesPanel.tsx +12 -20
  147. package/src/components/resource/panels/ResourceInfoPanel.css +0 -32
  148. package/src/components/resource/panels/ResourceInfoPanel.tsx +1 -1
  149. package/src/components/resource/panels/StatisticsPanel.css +0 -20
  150. package/src/components/resource/panels/TagEntry.tsx +1 -1
  151. package/src/components/resource/panels/TaggingPanel.css +0 -4
  152. package/src/components/resource/panels/TaggingPanel.tsx +2 -10
  153. package/src/components/resource/panels/UnifiedAnnotationsPanel.css +0 -4
  154. package/src/components/resource/panels/__tests__/AssessmentEntry.test.tsx +0 -1
  155. package/src/components/resource/panels/__tests__/AssistSection.test.tsx +48 -50
  156. package/src/components/resource/panels/__tests__/AssistShell.test.tsx +11 -6
  157. package/src/components/resource/panels/__tests__/CollaborationPanel.test.tsx +89 -0
  158. package/src/components/resource/panels/__tests__/CommentEntry.test.tsx +1 -2
  159. package/src/components/resource/panels/__tests__/HighlightEntry.test.tsx +0 -1
  160. package/src/components/resource/panels/__tests__/HighlightPanel.annotationProgress.test.tsx +44 -36
  161. package/src/components/resource/panels/__tests__/ReferenceEntry.test.tsx +0 -1
  162. package/src/components/resource/panels/__tests__/ReferencesPanel.headless.test.tsx +1 -1
  163. package/src/components/resource/panels/__tests__/ReferencesPanel.test.tsx +34 -53
  164. package/src/components/resource/panels/__tests__/ResourceInfoPanel.test.tsx +37 -1
  165. package/src/components/resource/panels/__tests__/TagEntry.test.tsx +0 -1
  166. package/src/components/settings/SettingsPanel.css +0 -4
  167. package/src/features/auth/auth.css +9 -33
  168. package/src/features/resource-compose/state/__tests__/compose-page-state-unit.test.ts +25 -1
  169. package/src/features/resource-compose/state/compose-page-state-unit.ts +11 -2
  170. package/src/features/resource-discovery/__tests__/ResourceDiscoveryPage.test.tsx +55 -0
  171. package/src/features/resource-discovery/components/ResourceDiscoveryPage.tsx +29 -0
  172. package/src/features/resource-discovery/state/__tests__/discover-state-unit.test.ts +53 -3
  173. package/src/features/resource-discovery/state/discover-state-unit.ts +29 -8
  174. package/src/features/resource-viewer/__tests__/ResourceViewerPage.test.tsx +26 -0
  175. package/src/features/resource-viewer/components/ResourceViewerPage.tsx +42 -21
  176. package/src/features/resource-viewer/hooks/__tests__/useResourceViewedReport.test.tsx +63 -0
  177. package/src/features/resource-viewer/hooks/useResourceViewedReport.ts +33 -0
  178. package/src/features/resource-viewer/state/__tests__/resource-viewer-page-state-unit.test.ts +2 -2
  179. package/src/features/resource-viewer/state/resource-viewer-page-state-unit.ts +1 -1
  180. package/src/styles/core/buttons.css +3 -1
  181. package/src/styles/core/forms.css +0 -21
  182. package/src/styles/core/indicators.css +0 -4
  183. package/src/styles/core/inputs.css +1 -5
  184. package/src/styles/core/progress.css +2 -34
  185. package/src/styles/core/sliders.css +0 -4
  186. package/src/styles/core/toggles.css +0 -4
  187. package/src/styles/features/compose.css +1 -1
  188. package/src/styles/features/resource-discovery.css +13 -0
  189. package/src/styles/features/resource-viewer.css +1 -21
  190. package/src/styles/features/static-pages.css +11 -11
  191. package/src/styles/motivations/motivation-assessment.css +2 -2
  192. package/src/styles/motivations/motivation-comment.css +2 -2
  193. package/src/styles/motivations/motivation-reference.css +2 -2
  194. package/src/styles/panels/history-panel.css +0 -40
  195. package/src/styles/panels/user-panel.css +0 -3
  196. package/src/styles/patterns/panel-helpers.css +0 -27
  197. package/src/styles/patterns/panel-sections.css +0 -59
  198. package/src/styles/patterns/panels-base.css +4 -36
  199. package/src/styles/utilities/motion.css +15 -15
  200. package/src/styles/variables.css +29 -1
  201. package/translations/ar.json +59 -5
  202. package/translations/bn.json +59 -5
  203. package/translations/cs.json +59 -5
  204. package/translations/da.json +59 -5
  205. package/translations/de.json +59 -5
  206. package/translations/el.json +59 -5
  207. package/translations/en.json +59 -5
  208. package/translations/es.json +59 -5
  209. package/translations/fa.json +59 -5
  210. package/translations/fi.json +59 -5
  211. package/translations/fr.json +59 -5
  212. package/translations/he.json +59 -5
  213. package/translations/hi.json +59 -5
  214. package/translations/id.json +59 -5
  215. package/translations/it.json +59 -5
  216. package/translations/ja.json +59 -5
  217. package/translations/ko.json +59 -5
  218. package/translations/ms.json +59 -5
  219. package/translations/nl.json +59 -5
  220. package/translations/no.json +59 -5
  221. package/translations/pl.json +59 -5
  222. package/translations/pt.json +59 -5
  223. package/translations/ro.json +59 -5
  224. package/translations/sv.json +59 -5
  225. package/translations/th.json +59 -5
  226. package/translations/tr.json +59 -5
  227. package/translations/uk.json +59 -5
  228. package/translations/vi.json +59 -5
  229. package/translations/zh.json +59 -5
  230. package/dist/PdfAnnotationCanvas.client-EHQWF6BR.js +0 -462
  231. package/dist/PdfAnnotationCanvas.client-EHQWF6BR.js.map +0 -1
  232. package/dist/PdfAnnotationCanvas.client-SU5KNT7G.css +0 -98
  233. package/dist/PdfAnnotationCanvas.client-SU5KNT7G.css.map +0 -1
  234. package/dist/ar-CULRHLNG.js.map +0 -1
  235. package/dist/bn-HYR7CEL2.js.map +0 -1
  236. package/dist/chunk-NH6L2GIL.js.map +0 -1
  237. package/dist/chunk-TG2XQEC4.js.map +0 -1
  238. package/dist/chunk-XUDKYAVC.js +0 -21
  239. package/dist/chunk-XUDKYAVC.js.map +0 -1
  240. package/dist/cs-YBRWY7NH.js.map +0 -1
  241. package/dist/da-PHDEOBV3.js.map +0 -1
  242. package/dist/de-O4UCCVLJ.js.map +0 -1
  243. package/dist/el-MVGO6WZV.js.map +0 -1
  244. package/dist/es-USSLXQY7.js.map +0 -1
  245. package/dist/fa-WMAREFWY.js.map +0 -1
  246. package/dist/fi-B3NBNOTS.js.map +0 -1
  247. package/dist/fr-TXYK5T5W.js.map +0 -1
  248. package/dist/he-JCJACW5D.js.map +0 -1
  249. package/dist/hi-VOQLZNJU.js.map +0 -1
  250. package/dist/id-BFN5RZNZ.js.map +0 -1
  251. package/dist/it-TWWDHKKM.js.map +0 -1
  252. package/dist/ja-YRQLEBFM.js.map +0 -1
  253. package/dist/ko-PG6B3CRB.js.map +0 -1
  254. package/dist/ms-7EZECVKM.js.map +0 -1
  255. package/dist/nl-HP753YAP.js.map +0 -1
  256. package/dist/no-JUD5WX3N.js.map +0 -1
  257. package/dist/pl-RVUL4CBM.js.map +0 -1
  258. package/dist/pt-RPOVD4QM.js.map +0 -1
  259. package/dist/ro-DMYWQTRD.js.map +0 -1
  260. package/dist/sv-DMZ4FGXD.js.map +0 -1
  261. package/dist/th-4HVBJBQ2.js.map +0 -1
  262. package/dist/tr-6BDPU5ML.js.map +0 -1
  263. package/dist/uk-TBZBT2TL.js.map +0 -1
  264. package/dist/vi-UMKZKZL3.js.map +0 -1
  265. package/dist/zh-YBJWJJYB.js.map +0 -1
  266. package/src/integrations/tailwind-plugin.cjs +0 -224
  267. /package/dist/{en-2KQILFKQ.js.map → en-2KADE7N4.js.map} +0 -0
@@ -36,10 +36,6 @@
36
36
  align-items: center;
37
37
  }
38
38
 
39
- [data-theme="dark"] .semiont-nav-section__header-button {
40
- color: inherit;
41
- }
42
-
43
39
  .semiont-nav-section__header-button:hover {
44
40
  opacity: 0.8;
45
41
  }
@@ -68,10 +64,6 @@
68
64
  text-align: left;
69
65
  }
70
66
 
71
- [data-theme="dark"] .semiont-nav-section__header-text {
72
- color: inherit;
73
- }
74
-
75
67
  .semiont-nav-section__header-icon {
76
68
  display: flex;
77
69
  align-items: center;
@@ -99,14 +91,6 @@
99
91
  outline-offset: 2px;
100
92
  }
101
93
 
102
- [data-theme="dark"] .semiont-nav-section__header-icon {
103
- color: var(--semiont-text-secondary);
104
- }
105
-
106
- [data-theme="dark"] .semiont-nav-section__header-icon:hover {
107
- background: var(--semiont-bg-tertiary);
108
- }
109
-
110
94
  [data-theme="dark"] .semiont-nav-section__header-icon:focus-visible {
111
95
  outline-color: var(--semiont-color-primary-400);
112
96
  }
@@ -361,10 +345,6 @@
361
345
  outline-color: var(--semiont-color-primary-400);
362
346
  }
363
347
 
364
- [data-theme="dark"] .semiont-resource-tab__link:visited {
365
- color: inherit !important;
366
- }
367
-
368
348
  /* Resource tab icon (emoji) */
369
349
  .semiont-resource-tab__icon {
370
350
  flex-shrink: 0;
@@ -20,14 +20,170 @@
20
20
 
21
21
  /* stylelint-disable semiont/accessibility -- Error indicator added by semantic-indicators.css */
22
22
  .semiont-pdf-annotation-canvas__error {
23
- color: var(--error-color);
23
+ color: var(--semiont-color-error);
24
24
  }
25
25
 
26
26
  [data-theme="dark"] .semiont-pdf-annotation-canvas__error {
27
- color: var(--error-color);
27
+ color: var(--semiont-color-error);
28
28
  }
29
29
  /* stylelint-enable semiont/accessibility */
30
30
 
31
+ /*
32
+ * The scrolling column (PDF-CONTINUOUS-SCROLL S1). Every page owns a slot so
33
+ * the scrollbar reflects the whole document; only pages near the viewport are
34
+ * mounted, and an unmounted slot holds its space with an estimated height set
35
+ * inline. `max-height` is what makes this a scroll container at all — without
36
+ * it the column grows to its content and the page scrolls instead, which
37
+ * still works but defeats the windowing.
38
+ */
39
+ /*
40
+ * Viewport = the pages plus their strip, side by side. The strip LEADS — it
41
+ * hugs the content's leading edge, where a page rail conventionally lives
42
+ * (Preview, Acrobat), so the reader's eye finds it before the page.
43
+ */
44
+ .semiont-pdf-annotation-canvas__viewport {
45
+ display: flex;
46
+ gap: 0.5rem;
47
+ align-items: stretch;
48
+ }
49
+
50
+ .semiont-pdf-annotation-canvas__viewport[data-axis="horizontal"] {
51
+ flex-direction: column;
52
+ }
53
+
54
+ .semiont-pdf-annotation-canvas__column {
55
+ display: flex;
56
+ flex: 1 1 auto;
57
+ gap: 1rem;
58
+ align-items: center;
59
+ }
60
+
61
+ /*
62
+ * Both blocks below key off ONE attribute, so the strip can never end up
63
+ * running across the direction the document scrolls.
64
+ */
65
+ /*
66
+ * The column does NOT scroll. The pane the viewer sits in already does
67
+ * (`flex: 1; min-height: 0`), and giving the column a viewport-relative
68
+ * height of its own produced a scroller inside a scroller — two bars along
69
+ * one axis, the inner one redundant with the page rail beside it.
70
+ */
71
+ .semiont-pdf-annotation-canvas__column[data-axis="vertical"] {
72
+ flex-direction: column;
73
+ }
74
+
75
+ .semiont-pdf-annotation-canvas__column[data-axis="horizontal"] {
76
+ flex-direction: row;
77
+ }
78
+
79
+ .semiont-pdf-annotation-canvas__slot {
80
+ display: flex;
81
+ justify-content: center;
82
+ width: 100%;
83
+ }
84
+
85
+ /*
86
+ * The page strip: the document's shape in miniature. Rectangles only — no
87
+ * rasterization — so a 400-page scan costs 400 empty divs, not 400 renders.
88
+ */
89
+ /*
90
+ * The strip scrolls — a 70-page document cannot fit its numbered rectangles in
91
+ * one screen — but it must not show a scrollbar. Two scrollbars side by side
92
+ * read as two controls for one thing, and the strip's own moves the strip
93
+ * rather than the document, so it looks broken. Position is carried by the
94
+ * highlighted page, and the strip follows the reader on its own.
95
+ */
96
+ .semiont-pdf-annotation-canvas__strip {
97
+ display: flex;
98
+ flex: 0 0 auto;
99
+ gap: 2px;
100
+ padding: 0.5rem;
101
+ scrollbar-width: none; /* standard; Firefox + recent Chromium */
102
+ }
103
+
104
+ /*
105
+ * WebKit/Safari, which has no `scrollbar-width` support to rely on.
106
+ *
107
+ * This hides a SCROLLBAR, not content: `scrollbar-width: none` above already
108
+ * does the same for every other engine, the rail still scrolls by wheel and
109
+ * drag, and each page is a focusable button — so tabbing through the rail
110
+ * scrolls it, which is the keyboard path the rule is protecting.
111
+ */
112
+ .semiont-pdf-annotation-canvas__strip::-webkit-scrollbar {
113
+ display: none; /* stylelint-disable-line semiont/accessibility */
114
+ }
115
+
116
+ /*
117
+ * The rail hugs the leading edge of the content and stays put while the
118
+ * document scrolls past it — `sticky` rather than a fixed-height box, so it
119
+ * follows the reader without claiming a second scroll region in the layout.
120
+ */
121
+ .semiont-pdf-annotation-canvas__strip[data-axis="vertical"] {
122
+ position: sticky;
123
+ top: 0;
124
+ flex-direction: column;
125
+ align-self: flex-start;
126
+ align-items: center;
127
+ max-height: 100vh;
128
+ overflow-y: auto;
129
+ border-right: 1px solid var(--semiont-border-secondary);
130
+ }
131
+
132
+ .semiont-pdf-annotation-canvas__strip[data-axis="horizontal"] {
133
+ position: sticky;
134
+ top: 0;
135
+ flex-direction: row;
136
+ align-items: flex-end;
137
+ max-width: 100%;
138
+ overflow-x: auto;
139
+ border-bottom: 1px solid var(--semiont-border-secondary);
140
+ }
141
+
142
+ .semiont-pdf-annotation-canvas__strip-page {
143
+ display: flex;
144
+ flex: 0 0 auto;
145
+ align-items: center;
146
+ justify-content: center;
147
+ width: 30px;
148
+ padding: 0;
149
+ border: 1px solid var(--semiont-border-primary);
150
+ border-radius: 1px;
151
+ background: var(--semiont-bg-secondary);
152
+ color: var(--semiont-text-tertiary);
153
+ font-size: var(--semiont-text-2xs);
154
+ line-height: 1;
155
+ cursor: pointer;
156
+ }
157
+
158
+ .semiont-pdf-annotation-canvas__strip-page:hover {
159
+ background: var(--semiont-bg-hover);
160
+ }
161
+
162
+ /* The reader's position, legible at a glance across a long strip. */
163
+ .semiont-pdf-annotation-canvas__strip-page[aria-current="page"] {
164
+ border-color: var(--semiont-color-primary-600);
165
+ background: var(--semiont-color-primary-500);
166
+ color: var(--semiont-color-neutral-0);
167
+ font-weight: var(--semiont-font-semibold);
168
+ }
169
+
170
+ /*
171
+ * Palette tokens are one fixed hue in both themes, so this marker needs a real
172
+ * variant — the accent steps lighter against a dark surface (the treatment
173
+ * `.semiont-checkbox:checked` uses), and the number flips to dark type, which
174
+ * at this size reads far better on that lighter blue than white does.
175
+ */
176
+ [data-theme="dark"] .semiont-pdf-annotation-canvas__strip-page[aria-current="page"] {
177
+ border-color: var(--semiont-color-primary-400);
178
+ background: var(--semiont-color-primary-400);
179
+ color: var(--semiont-color-neutral-900);
180
+ }
181
+
182
+ .semiont-pdf-annotation-canvas__strip-page:focus-visible {
183
+ outline: 2px solid var(--semiont-focus-ring);
184
+ outline-offset: 1px;
185
+ }
186
+
31
187
  .semiont-pdf-annotation-canvas__container {
32
188
  position: relative;
33
189
  display: inline-block;
@@ -83,12 +239,12 @@
83
239
  justify-content: center;
84
240
  gap: 1rem;
85
241
  padding: 1rem;
86
- border-top: 1px solid var(--border-color);
242
+ border-top: 1px solid var(--semiont-border-primary);
87
243
  }
88
244
 
89
245
  .semiont-pdf-annotation-canvas__button {
90
246
  padding: 0.5rem 1rem;
91
- border: 1px solid var(--border-color);
247
+ border: 1px solid var(--semiont-border-primary);
92
248
  border-radius: 4px;
93
249
  background: transparent;
94
250
  cursor: pointer;
@@ -101,11 +257,11 @@
101
257
  }
102
258
 
103
259
  .semiont-pdf-annotation-canvas__button:hover:not(:disabled) {
104
- background-color: var(--hover-color, rgba(0, 0, 0, 0.05));
260
+ background-color: var(--semiont-bg-hover);
105
261
  }
106
262
 
107
263
  .semiont-pdf-annotation-canvas__button:focus-visible {
108
- outline: 2px solid var(--focus-color, #0066cc);
264
+ outline: 2px solid var(--semiont-focus-ring);
109
265
  outline-offset: 2px;
110
266
  }
111
267