@djangocfg/ui-tools 2.1.312 → 2.1.313

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 (161) hide show
  1. package/README.md +38 -22
  2. package/dist/{DocsLayout-W5JLRNSZ.mjs → DocsLayout-ESVQZO3V.mjs} +3 -3
  3. package/dist/{DocsLayout-W5JLRNSZ.mjs.map → DocsLayout-ESVQZO3V.mjs.map} +1 -1
  4. package/dist/{DocsLayout-ZXD2CUOH.cjs → DocsLayout-KUPDWJ3G.cjs} +48 -48
  5. package/dist/{DocsLayout-ZXD2CUOH.cjs.map → DocsLayout-KUPDWJ3G.cjs.map} +1 -1
  6. package/dist/Player-M3GC3VPE.mjs +4 -0
  7. package/dist/Player-M3GC3VPE.mjs.map +1 -0
  8. package/dist/Player-ZGQKKOWI.css +65 -0
  9. package/dist/Player-ZGQKKOWI.css.map +1 -0
  10. package/dist/Player-ZL2X5LGG.cjs +13 -0
  11. package/dist/Player-ZL2X5LGG.cjs.map +1 -0
  12. package/dist/{chunk-CXVGN6ZW.cjs → chunk-DFTVB66S.cjs} +7 -6
  13. package/dist/chunk-DFTVB66S.cjs.map +1 -0
  14. package/dist/{chunk-2QY3LJR6.mjs → chunk-EUADAUBQ.mjs} +5 -4
  15. package/dist/chunk-EUADAUBQ.mjs.map +1 -0
  16. package/dist/chunk-FX2QFYWF.mjs +2059 -0
  17. package/dist/chunk-FX2QFYWF.mjs.map +1 -0
  18. package/dist/{chunk-6HNAPVZ2.mjs → chunk-GBLQTHWT.mjs} +11 -13
  19. package/dist/chunk-GBLQTHWT.mjs.map +1 -0
  20. package/dist/{chunk-FYLR232K.cjs → chunk-S44PW6NK.cjs} +11 -13
  21. package/dist/chunk-S44PW6NK.cjs.map +1 -0
  22. package/dist/chunk-ZLQHUZDU.cjs +2061 -0
  23. package/dist/chunk-ZLQHUZDU.cjs.map +1 -0
  24. package/dist/components-WYEZL5TE.cjs +26 -0
  25. package/dist/{components-3RTH76CV.cjs.map → components-WYEZL5TE.cjs.map} +1 -1
  26. package/dist/components-ZAGG2PBO.mjs +5 -0
  27. package/dist/{components-5GVVL2Q6.mjs.map → components-ZAGG2PBO.mjs.map} +1 -1
  28. package/dist/index.cjs +36 -220
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.css +65 -0
  31. package/dist/index.css.map +1 -1
  32. package/dist/index.d.cts +44 -500
  33. package/dist/index.d.ts +44 -500
  34. package/dist/index.mjs +16 -62
  35. package/dist/index.mjs.map +1 -1
  36. package/package.json +6 -6
  37. package/src/components/markdown/MarkdownMessage/ActionRow.tsx +48 -0
  38. package/src/components/markdown/MarkdownMessage/ChatMessageRow.tsx +97 -0
  39. package/src/components/markdown/MarkdownMessage/CodeBlock.tsx +9 -13
  40. package/src/components/markdown/MarkdownMessage/MarkdownMessage.story.tsx +77 -2
  41. package/src/components/markdown/MarkdownMessage/MarkdownMessage.tsx +2 -3
  42. package/src/components/markdown/MarkdownMessage/README.md +72 -0
  43. package/src/components/markdown/MarkdownMessage/components.tsx +3 -3
  44. package/src/components/markdown/MarkdownMessage/index.ts +6 -0
  45. package/src/index.ts +2 -11
  46. package/src/tools/AudioPlayer/AudioPlayer.story.tsx +454 -107
  47. package/src/tools/AudioPlayer/Player.tsx +80 -0
  48. package/src/tools/AudioPlayer/PlayerShell.tsx +122 -0
  49. package/src/tools/AudioPlayer/README.md +139 -204
  50. package/src/tools/AudioPlayer/audio/audioContext.ts +39 -0
  51. package/src/tools/AudioPlayer/audio/decodePeaks.ts +36 -0
  52. package/src/tools/AudioPlayer/audio/index.ts +4 -0
  53. package/src/tools/AudioPlayer/audio/mediaElementSourceCache.ts +20 -0
  54. package/src/tools/AudioPlayer/audio/peaksCache.ts +37 -0
  55. package/src/tools/AudioPlayer/context/AudioRefContext.tsx +9 -0
  56. package/src/tools/AudioPlayer/context/ControlsContext.tsx +7 -0
  57. package/src/tools/AudioPlayer/context/LevelsContext.tsx +7 -0
  58. package/src/tools/AudioPlayer/context/MetaContext.tsx +16 -0
  59. package/src/tools/AudioPlayer/context/PlayerProvider.tsx +314 -0
  60. package/src/tools/AudioPlayer/context/StateContext.tsx +7 -0
  61. package/src/tools/AudioPlayer/context/index.ts +16 -15
  62. package/src/tools/AudioPlayer/context/selectors.ts +36 -0
  63. package/src/tools/AudioPlayer/hooks/index.ts +12 -39
  64. package/src/tools/AudioPlayer/hooks/useActivePlayer.ts +31 -0
  65. package/src/tools/AudioPlayer/hooks/useAnalyser.ts +62 -0
  66. package/src/tools/AudioPlayer/hooks/useAudioElementEvents.ts +102 -0
  67. package/src/tools/AudioPlayer/hooks/useKeyboardShortcuts.ts +91 -0
  68. package/src/tools/AudioPlayer/hooks/useMediaSession.ts +74 -0
  69. package/src/tools/AudioPlayer/hooks/usePeaks.ts +83 -0
  70. package/src/tools/AudioPlayer/hooks/usePlayerPreferences.ts +21 -0
  71. package/src/tools/AudioPlayer/hooks/usePlayheadLoop.ts +77 -0
  72. package/src/tools/AudioPlayer/hooks/useResizeObserver.ts +20 -0
  73. package/src/tools/AudioPlayer/hooks/useThemeWatcher.ts +22 -0
  74. package/src/tools/AudioPlayer/index.ts +63 -134
  75. package/src/tools/AudioPlayer/lazy.tsx +8 -97
  76. package/src/tools/AudioPlayer/parts/Controls/ControlsRow.tsx +30 -0
  77. package/src/tools/AudioPlayer/parts/Controls/IconButton.tsx +62 -0
  78. package/src/tools/AudioPlayer/parts/Controls/LoopButton.tsx +33 -0
  79. package/src/tools/AudioPlayer/parts/Controls/PlayButton.tsx +86 -0
  80. package/src/tools/AudioPlayer/parts/Controls/SkipButton.tsx +17 -0
  81. package/src/tools/AudioPlayer/parts/Controls/VolumeControl.tsx +171 -0
  82. package/src/tools/AudioPlayer/parts/Controls/index.ts +6 -0
  83. package/src/tools/AudioPlayer/parts/Cover/Cover.tsx +24 -0
  84. package/src/tools/AudioPlayer/parts/Cover/CoverPlaceholder.tsx +27 -0
  85. package/src/tools/AudioPlayer/parts/Cover/ReactivePulse.tsx +66 -0
  86. package/src/tools/AudioPlayer/parts/Cover/index.ts +3 -0
  87. package/src/tools/AudioPlayer/parts/ErrorState/ErrorState.tsx +35 -0
  88. package/src/tools/AudioPlayer/parts/ErrorState/index.ts +1 -0
  89. package/src/tools/AudioPlayer/parts/Layout/CompactLayout.tsx +25 -0
  90. package/src/tools/AudioPlayer/parts/Layout/DefaultLayout.tsx +48 -0
  91. package/src/tools/AudioPlayer/parts/Layout/index.ts +2 -0
  92. package/src/tools/AudioPlayer/parts/Meta/Artist.tsx +14 -0
  93. package/src/tools/AudioPlayer/parts/Meta/TimeDisplay.tsx +49 -0
  94. package/src/tools/AudioPlayer/parts/Meta/Title.tsx +13 -0
  95. package/src/tools/AudioPlayer/parts/Meta/index.ts +3 -0
  96. package/src/tools/AudioPlayer/parts/Skeleton/CoverSkeleton.tsx +13 -0
  97. package/src/tools/AudioPlayer/parts/Skeleton/MetaSkeleton.tsx +10 -0
  98. package/src/tools/AudioPlayer/parts/Skeleton/index.ts +2 -0
  99. package/src/tools/AudioPlayer/parts/Waveform/BarsWaveform.tsx +48 -0
  100. package/src/tools/AudioPlayer/parts/Waveform/LiveWaveform.tsx +95 -0
  101. package/src/tools/AudioPlayer/parts/Waveform/PeaksWaveform.tsx +100 -0
  102. package/src/tools/AudioPlayer/parts/Waveform/ProgressBar.tsx +76 -0
  103. package/src/tools/AudioPlayer/parts/Waveform/Waveform.tsx +74 -0
  104. package/src/tools/AudioPlayer/parts/Waveform/WaveformSkeleton.tsx +16 -0
  105. package/src/tools/AudioPlayer/parts/Waveform/index.ts +8 -0
  106. package/src/tools/AudioPlayer/parts/Waveform/waveformInteraction.ts +106 -0
  107. package/src/tools/AudioPlayer/parts/Waveform/waveformRenderer.ts +91 -0
  108. package/src/tools/AudioPlayer/parts/index.ts +1 -0
  109. package/src/tools/AudioPlayer/store/activePlayerBus.ts +63 -0
  110. package/src/tools/AudioPlayer/store/createLevelsStore.ts +37 -0
  111. package/src/tools/AudioPlayer/store/index.ts +16 -0
  112. package/src/tools/AudioPlayer/store/preferencesStore.ts +104 -0
  113. package/src/tools/AudioPlayer/styles/webview-safe.css +77 -0
  114. package/src/tools/AudioPlayer/types.ts +95 -0
  115. package/src/tools/AudioPlayer/utils/bucketize.ts +27 -0
  116. package/src/tools/AudioPlayer/utils/clamp.ts +5 -0
  117. package/src/tools/AudioPlayer/utils/dpr.ts +19 -0
  118. package/src/tools/AudioPlayer/utils/formatTime.ts +12 -8
  119. package/src/tools/AudioPlayer/utils/index.ts +4 -5
  120. package/src/tools/AudioPlayer/utils/readCssVar.ts +7 -0
  121. package/src/tools/AudioPlayer/utils/resolveCanvasColor.ts +28 -0
  122. package/src/tools/index.ts +5 -75
  123. package/dist/chunk-2QY3LJR6.mjs.map +0 -1
  124. package/dist/chunk-6HNAPVZ2.mjs.map +0 -1
  125. package/dist/chunk-CXVGN6ZW.cjs.map +0 -1
  126. package/dist/chunk-F2N7P5XU.cjs +0 -30
  127. package/dist/chunk-F2N7P5XU.cjs.map +0 -1
  128. package/dist/chunk-FYLR232K.cjs.map +0 -1
  129. package/dist/chunk-HMHIVEMS.mjs +0 -1619
  130. package/dist/chunk-HMHIVEMS.mjs.map +0 -1
  131. package/dist/chunk-JWB2EWQO.mjs +0 -5
  132. package/dist/chunk-JWB2EWQO.mjs.map +0 -1
  133. package/dist/chunk-YZX6FH3H.cjs +0 -1656
  134. package/dist/chunk-YZX6FH3H.cjs.map +0 -1
  135. package/dist/components-3RTH76CV.cjs +0 -27
  136. package/dist/components-5GVVL2Q6.mjs +0 -5
  137. package/dist/components-CPHOUQ5F.cjs +0 -46
  138. package/dist/components-CPHOUQ5F.cjs.map +0 -1
  139. package/dist/components-OTK43IMD.mjs +0 -6
  140. package/dist/components-OTK43IMD.mjs.map +0 -1
  141. package/src/tools/AudioPlayer/components/HybridAudioPlayer.tsx +0 -225
  142. package/src/tools/AudioPlayer/components/HybridCompactPlayer.tsx +0 -163
  143. package/src/tools/AudioPlayer/components/HybridSimplePlayer.tsx +0 -284
  144. package/src/tools/AudioPlayer/components/HybridWaveform.tsx +0 -286
  145. package/src/tools/AudioPlayer/components/ReactiveCover/AudioReactiveCover.tsx +0 -151
  146. package/src/tools/AudioPlayer/components/ReactiveCover/effects/GlowEffect.tsx +0 -110
  147. package/src/tools/AudioPlayer/components/ReactiveCover/effects/MeshEffect.tsx +0 -58
  148. package/src/tools/AudioPlayer/components/ReactiveCover/effects/OrbsEffect.tsx +0 -45
  149. package/src/tools/AudioPlayer/components/ReactiveCover/effects/SpotlightEffect.tsx +0 -82
  150. package/src/tools/AudioPlayer/components/ReactiveCover/effects/index.ts +0 -8
  151. package/src/tools/AudioPlayer/components/ReactiveCover/index.ts +0 -6
  152. package/src/tools/AudioPlayer/components/index.ts +0 -23
  153. package/src/tools/AudioPlayer/context/HybridAudioProvider.tsx +0 -158
  154. package/src/tools/AudioPlayer/effects/index.ts +0 -412
  155. package/src/tools/AudioPlayer/hooks/useAudioBus.ts +0 -76
  156. package/src/tools/AudioPlayer/hooks/useHybridAudio.ts +0 -403
  157. package/src/tools/AudioPlayer/hooks/useHybridAudioAnalysis.ts +0 -96
  158. package/src/tools/AudioPlayer/hooks/useVisualization.tsx +0 -207
  159. package/src/tools/AudioPlayer/types/effects.ts +0 -73
  160. package/src/tools/AudioPlayer/types/index.ts +0 -27
  161. package/src/tools/AudioPlayer/utils/debug.ts +0 -14
package/dist/index.css CHANGED
@@ -4,6 +4,71 @@
4
4
  transition: box-shadow 150ms;
5
5
  }
6
6
 
7
+ /* src/tools/AudioPlayer/styles/webview-safe.css */
8
+ .audioplayer-press {
9
+ transition: transform 80ms cubic-bezier(0.4, 0, 0.6, 1);
10
+ }
11
+ .audioplayer-press:active {
12
+ transform: scale(0.97);
13
+ }
14
+ .audioplayer-shimmer {
15
+ position: relative;
16
+ overflow: hidden;
17
+ }
18
+ .audioplayer-shimmer::after {
19
+ content: "";
20
+ position: absolute;
21
+ inset: 0;
22
+ background:
23
+ linear-gradient(
24
+ 90deg,
25
+ transparent 0%,
26
+ color-mix(in oklab, var(--color-foreground, #fff) 8%, transparent) 50%,
27
+ transparent 100%);
28
+ background-size: 200% 100%;
29
+ animation: audioplayer-shimmer 1400ms linear infinite;
30
+ }
31
+ @keyframes audioplayer-shimmer {
32
+ from {
33
+ background-position: 200% 0;
34
+ }
35
+ to {
36
+ background-position: -200% 0;
37
+ }
38
+ }
39
+ @keyframes audioplayer-bar {
40
+ 0%, 100% {
41
+ height: 25%;
42
+ }
43
+ 50% {
44
+ height: 95%;
45
+ }
46
+ }
47
+ @media (prefers-reduced-motion: reduce) {
48
+ .audioplayer-press,
49
+ .audioplayer-shimmer::after,
50
+ .audioplayer-bars span {
51
+ animation: none !important;
52
+ transition: none !important;
53
+ transform: none !important;
54
+ }
55
+ }
56
+ .audioplayer canvas {
57
+ image-rendering: auto;
58
+ }
59
+ @media (hover: none), (pointer: coarse) {
60
+ .audioplayer .audioplayer-tip,
61
+ .audioplayer .audioplayer-hover {
62
+ display: none !important;
63
+ }
64
+ }
65
+ @media (pointer: coarse) {
66
+ .audioplayer .audioplayer-press[aria-label] {
67
+ min-width: 40px;
68
+ min-height: 40px;
69
+ }
70
+ }
71
+
7
72
  /* src/tools/MarkdownEditor/styles.css */
8
73
  .markdown-editor .markdown-editor-content {
9
74
  outline: none;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/FloatingToolbar/FloatingToolbar.css","../src/tools/MarkdownEditor/styles.css"],"sourcesContent":["/* Focus ring when scroll isolation is unlocked */\n.scroll-unlocked {\n box-shadow: 0 0 0 2px hsl(var(--ring));\n transition: box-shadow 150ms;\n}\n",".markdown-editor .markdown-editor-content {\n outline: none;\n}\n\n.markdown-editor .tiptap h1 {\n font-size: 1.5em;\n font-weight: 700;\n margin: 0.5em 0 0.25em;\n line-height: 1.3;\n}\n\n.markdown-editor .tiptap h2 {\n font-size: 1.25em;\n font-weight: 600;\n margin: 0.5em 0 0.25em;\n line-height: 1.3;\n}\n\n.markdown-editor .tiptap h3 {\n font-size: 1.1em;\n font-weight: 600;\n margin: 0.4em 0 0.2em;\n line-height: 1.3;\n}\n\n.markdown-editor .tiptap p {\n margin: 0.25em 0;\n}\n\n.markdown-editor .tiptap ul,\n.markdown-editor .tiptap ol {\n padding-left: 1.5em;\n margin: 0.25em 0;\n}\n\n.markdown-editor .tiptap ul {\n list-style: disc;\n}\n\n.markdown-editor .tiptap ol {\n list-style: decimal;\n}\n\n.markdown-editor .tiptap li {\n margin: 0.1em 0;\n}\n\n.markdown-editor .tiptap blockquote {\n border-left: 3px solid var(--border, #333);\n padding-left: 1em;\n margin: 0.5em 0;\n opacity: 0.8;\n}\n\n.markdown-editor .tiptap hr {\n border: none;\n border-top: 1px solid var(--border, #333);\n margin: 0.75em 0;\n}\n\n.markdown-editor .tiptap code {\n background: var(--muted, #222);\n padding: 0.15em 0.3em;\n border-radius: 0.25em;\n font-size: 0.9em;\n font-family: monospace;\n}\n\n.markdown-editor .tiptap strong {\n font-weight: 700;\n}\n\n.markdown-editor .tiptap em {\n font-style: italic;\n}\n\n.markdown-editor .tiptap s {\n text-decoration: line-through;\n}\n\n.markdown-editor .tiptap p.is-editor-empty:first-child::before {\n content: attr(data-placeholder);\n float: left;\n pointer-events: none;\n height: 0;\n opacity: 0.4;\n}\n\n/* Focus ring */\n.markdown-editor:focus-within {\n border-color: var(--color-ring, hsl(var(--ring, 0 0% 60%)));\n box-shadow: 0 0 0 2px var(--color-ring, hsl(var(--ring, 0 0% 60%) / 0.3));\n}\n\n/* Mention inline chip */\n.markdown-mention {\n background: var(--color-primary, hsl(var(--primary)));\n color: var(--color-primary-foreground, #fff);\n padding: 1px 6px;\n border-radius: 4px;\n font-size: 0.9em;\n font-weight: 500;\n cursor: default;\n}\n\n/* Mention dropdown */\n.markdown-mention-list {\n background: var(--color-popover, hsl(var(--popover, 0 0% 8%)));\n color: var(--color-popover-foreground, hsl(var(--popover-foreground, 0 0% 98%)));\n border: 1px solid var(--color-border, hsl(var(--border, 0 0% 15%)));\n border-radius: 8px;\n padding: 4px;\n min-width: 220px;\n max-height: 260px;\n overflow-y: auto;\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5);\n}\n\n.markdown-mention-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 6px 8px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n text-align: left;\n font-size: 13px;\n transition: background 0.1s;\n}\n\n.markdown-mention-item:hover,\n.markdown-mention-item.selected {\n background: var(--color-muted, hsl(var(--muted, 0 0% 15%)));\n}\n\n.markdown-mention-avatar {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.markdown-mention-info {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.markdown-mention-name {\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.markdown-mention-desc {\n font-size: 11px;\n opacity: 0.6;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Toolbar buttons */\n.markdown-toolbar-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n border: none;\n background: transparent;\n cursor: pointer;\n opacity: 0.5;\n transition: opacity 0.15s, background 0.15s;\n}\n\n.markdown-toolbar-btn:hover {\n opacity: 1;\n background: var(--muted, #222);\n}\n\n.markdown-toolbar-btn.active {\n opacity: 1;\n background: var(--muted, #222);\n}\n"],"mappings":";AACA,CAAC;AACC,cAAY,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI;AAC9B,cAAY,WAAW;AACzB;;;ACJA,CAAC,gBAAgB,CAAC;AAChB,WAAS;AACX;AAEA,CAJC,gBAIgB,CAAC,OAAO;AACvB,aAAW;AACX,eAAa;AACb,UAAQ,MAAM,EAAE;AAChB,eAAa;AACf;AAEA,CAXC,gBAWgB,CAPC,OAOO;AACvB,aAAW;AACX,eAAa;AACb,UAAQ,MAAM,EAAE;AAChB,eAAa;AACf;AAEA,CAlBC,gBAkBgB,CAdC,OAcO;AACvB,aAAW;AACX,eAAa;AACb,UAAQ,MAAM,EAAE;AAChB,eAAa;AACf;AAEA,CAzBC,gBAyBgB,CArBC,OAqBO;AACvB,UAAQ,OAAO;AACjB;AAEA,CA7BC,gBA6BgB,CAzBC,OAyBO;AACzB,CA9BC,gBA8BgB,CA1BC,OA0BO;AACvB,gBAAc;AACd,UAAQ,OAAO;AACjB;AAEA,CAnCC,gBAmCgB,CA/BC,OA+BO;AACvB,cAAY;AACd;AAEA,CAvCC,gBAuCgB,CAnCC,OAmCO;AACvB,cAAY;AACd;AAEA,CA3CC,gBA2CgB,CAvCC,OAuCO;AACvB,UAAQ,MAAM;AAChB;AAEA,CA/CC,gBA+CgB,CA3CC,OA2CO;AACvB,eAAa,IAAI,MAAM,IAAI,QAAQ,EAAE;AACrC,gBAAc;AACd,UAAQ,MAAM;AACd,WAAS;AACX;AAEA,CAtDC,gBAsDgB,CAlDC,OAkDO;AACvB,UAAQ;AACR,cAAY,IAAI,MAAM,IAAI,QAAQ,EAAE;AACpC,UAAQ,OAAO;AACjB;AAEA,CA5DC,gBA4DgB,CAxDC,OAwDO;AACvB,cAAY,IAAI,OAAO,EAAE;AACzB,WAAS,OAAO;AAChB,iBAAe;AACf,aAAW;AACX,eAAa;AACf;AAEA,CApEC,gBAoEgB,CAhEC,OAgEO;AACvB,eAAa;AACf;AAEA,CAxEC,gBAwEgB,CApEC,OAoEO;AACvB,cAAY;AACd;AAEA,CA5EC,gBA4EgB,CAxEC,OAwEO;AACvB,mBAAiB;AACnB;AAEA,CAhFC,gBAgFgB,CA5EC,OA4EO,CAAC,CAAC,eAAe,YAAY;AACpD,WAAS,KAAK;AACd,SAAO;AACP,kBAAgB;AAChB,UAAQ;AACR,WAAS;AACX;AAGA,CAzFC,eAyFe;AACd,gBAAc,IAAI,YAAY,EAAE,IAAI,IAAI,MAAM,EAAE,EAAE,GAAG;AACrD,cAAY,EAAE,EAAE,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE;AACtE;AAGA,CAAC;AACC,cAAY,IAAI,eAAe,EAAE,IAAI,IAAI;AACzC,SAAO,IAAI,0BAA0B,EAAE;AACvC,WAAS,IAAI;AACb,iBAAe;AACf,aAAW;AACX,eAAa;AACb,UAAQ;AACV;AAGA,CAAC;AACC,cAAY,IAAI,eAAe,EAAE,IAAI,IAAI,SAAS,EAAE,EAAE,GAAG;AACzD,SAAO,IAAI,0BAA0B,EAAE,IAAI,IAAI,oBAAoB,EAAE,EAAE,GAAG;AAC1E,UAAQ,IAAI,MAAM,IAAI,cAAc,EAAE,IAAI,IAAI,QAAQ,EAAE,EAAE,GAAG;AAC7D,iBAAe;AACf,WAAS;AACT,aAAW;AACX,cAAY;AACZ,cAAY;AACZ,cAAY,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvC;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,OAAK;AACL,SAAO;AACP,WAAS,IAAI;AACb,UAAQ;AACR,cAAY;AACZ,iBAAe;AACf,UAAQ;AACR,cAAY;AACZ,aAAW;AACX,cAAY,WAAW;AACzB;AAEA,CAfC,qBAeqB;AACtB,CAhBC,qBAgBqB,CAAC;AACrB,cAAY,IAAI,aAAa,EAAE,IAAI,IAAI,OAAO,EAAE,EAAE,GAAG;AACvD;AAEA,CAAC;AACC,SAAO;AACP,UAAQ;AACR,iBAAe;AACf,cAAY;AACZ,eAAa;AACf;AAEA,CAAC;AACC,WAAS;AACT,kBAAgB;AAChB,aAAW;AACb;AAEA,CAAC;AACC,eAAa;AACb,eAAa;AACb,YAAU;AACV,iBAAe;AACjB;AAEA,CAAC;AACC,aAAW;AACX,WAAS;AACT,eAAa;AACb,YAAU;AACV,iBAAe;AACjB;AAGA,CAAC;AACC,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,SAAO;AACP,UAAQ;AACR,iBAAe;AACf,UAAQ;AACR,cAAY;AACZ,UAAQ;AACR,WAAS;AACT,cAAY,QAAQ,KAAK,EAAE,WAAW;AACxC;AAEA,CAdC,oBAcoB;AACnB,WAAS;AACT,cAAY,IAAI,OAAO,EAAE;AAC3B;AAEA,CAnBC,oBAmBoB,CAAC;AACpB,WAAS;AACT,cAAY,IAAI,OAAO,EAAE;AAC3B;","names":[]}
1
+ {"version":3,"sources":["../src/components/FloatingToolbar/FloatingToolbar.css","../src/tools/AudioPlayer/styles/webview-safe.css","../src/tools/MarkdownEditor/styles.css"],"sourcesContent":["/* Focus ring when scroll isolation is unlocked */\n.scroll-unlocked {\n box-shadow: 0 0 0 2px hsl(var(--ring));\n transition: box-shadow 150ms;\n}\n","/* AudioPlayer v6 — WebView-safe baseline. Compositor-only animations.\n * Kept under 80 LOC per folder-structure budget.\n */\n\n.audioplayer-press {\n transition: transform 80ms cubic-bezier(0.4, 0, 0.6, 1);\n}\n.audioplayer-press:active {\n transform: scale(0.97);\n}\n\n.audioplayer-shimmer {\n position: relative;\n overflow: hidden;\n}\n.audioplayer-shimmer::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n color-mix(in oklab, var(--color-foreground, #fff) 8%, transparent) 50%,\n transparent 100%\n );\n background-size: 200% 100%;\n animation: audioplayer-shimmer 1400ms linear infinite;\n}\n\n@keyframes audioplayer-shimmer {\n from {\n background-position: 200% 0;\n }\n to {\n background-position: -200% 0;\n }\n}\n\n@keyframes audioplayer-bar {\n 0%, 100% {\n height: 25%;\n }\n 50% {\n height: 95%;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .audioplayer-press,\n .audioplayer-shimmer::after,\n .audioplayer-bars span {\n animation: none !important;\n transition: none !important;\n transform: none !important;\n }\n}\n\n.audioplayer canvas {\n image-rendering: auto;\n}\n\n/* No hover on touch — also no time-tooltip nor hover-cursor on the waveform.\n * Avoids a stuck tip after a tap-and-release. */\n@media (hover: none), (pointer: coarse) {\n .audioplayer .audioplayer-tip,\n .audioplayer .audioplayer-hover {\n display: none !important;\n }\n}\n\n/* Bigger tap targets on touch + small viewports (Apple HIG ≥ 44px). */\n@media (pointer: coarse) {\n .audioplayer .audioplayer-press[aria-label] {\n min-width: 40px;\n min-height: 40px;\n }\n}\n",".markdown-editor .markdown-editor-content {\n outline: none;\n}\n\n.markdown-editor .tiptap h1 {\n font-size: 1.5em;\n font-weight: 700;\n margin: 0.5em 0 0.25em;\n line-height: 1.3;\n}\n\n.markdown-editor .tiptap h2 {\n font-size: 1.25em;\n font-weight: 600;\n margin: 0.5em 0 0.25em;\n line-height: 1.3;\n}\n\n.markdown-editor .tiptap h3 {\n font-size: 1.1em;\n font-weight: 600;\n margin: 0.4em 0 0.2em;\n line-height: 1.3;\n}\n\n.markdown-editor .tiptap p {\n margin: 0.25em 0;\n}\n\n.markdown-editor .tiptap ul,\n.markdown-editor .tiptap ol {\n padding-left: 1.5em;\n margin: 0.25em 0;\n}\n\n.markdown-editor .tiptap ul {\n list-style: disc;\n}\n\n.markdown-editor .tiptap ol {\n list-style: decimal;\n}\n\n.markdown-editor .tiptap li {\n margin: 0.1em 0;\n}\n\n.markdown-editor .tiptap blockquote {\n border-left: 3px solid var(--border, #333);\n padding-left: 1em;\n margin: 0.5em 0;\n opacity: 0.8;\n}\n\n.markdown-editor .tiptap hr {\n border: none;\n border-top: 1px solid var(--border, #333);\n margin: 0.75em 0;\n}\n\n.markdown-editor .tiptap code {\n background: var(--muted, #222);\n padding: 0.15em 0.3em;\n border-radius: 0.25em;\n font-size: 0.9em;\n font-family: monospace;\n}\n\n.markdown-editor .tiptap strong {\n font-weight: 700;\n}\n\n.markdown-editor .tiptap em {\n font-style: italic;\n}\n\n.markdown-editor .tiptap s {\n text-decoration: line-through;\n}\n\n.markdown-editor .tiptap p.is-editor-empty:first-child::before {\n content: attr(data-placeholder);\n float: left;\n pointer-events: none;\n height: 0;\n opacity: 0.4;\n}\n\n/* Focus ring */\n.markdown-editor:focus-within {\n border-color: var(--color-ring, hsl(var(--ring, 0 0% 60%)));\n box-shadow: 0 0 0 2px var(--color-ring, hsl(var(--ring, 0 0% 60%) / 0.3));\n}\n\n/* Mention inline chip */\n.markdown-mention {\n background: var(--color-primary, hsl(var(--primary)));\n color: var(--color-primary-foreground, #fff);\n padding: 1px 6px;\n border-radius: 4px;\n font-size: 0.9em;\n font-weight: 500;\n cursor: default;\n}\n\n/* Mention dropdown */\n.markdown-mention-list {\n background: var(--color-popover, hsl(var(--popover, 0 0% 8%)));\n color: var(--color-popover-foreground, hsl(var(--popover-foreground, 0 0% 98%)));\n border: 1px solid var(--color-border, hsl(var(--border, 0 0% 15%)));\n border-radius: 8px;\n padding: 4px;\n min-width: 220px;\n max-height: 260px;\n overflow-y: auto;\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5);\n}\n\n.markdown-mention-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 6px 8px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n text-align: left;\n font-size: 13px;\n transition: background 0.1s;\n}\n\n.markdown-mention-item:hover,\n.markdown-mention-item.selected {\n background: var(--color-muted, hsl(var(--muted, 0 0% 15%)));\n}\n\n.markdown-mention-avatar {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.markdown-mention-info {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.markdown-mention-name {\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.markdown-mention-desc {\n font-size: 11px;\n opacity: 0.6;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Toolbar buttons */\n.markdown-toolbar-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n border: none;\n background: transparent;\n cursor: pointer;\n opacity: 0.5;\n transition: opacity 0.15s, background 0.15s;\n}\n\n.markdown-toolbar-btn:hover {\n opacity: 1;\n background: var(--muted, #222);\n}\n\n.markdown-toolbar-btn.active {\n opacity: 1;\n background: var(--muted, #222);\n}\n"],"mappings":"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","names":[]}