@kolkrabbi/kol-component 0.236.0 → 0.237.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -4
- package/src/atoms/Button.jsx +10 -2
- package/src/atoms/Kbd.jsx +6 -3
- package/src/index.js +15 -11
- package/src/molecules/ColorInputRow.jsx +1 -1
- package/src/molecules/ColorRamp.jsx +1 -1
- package/src/molecules/CopyButton.jsx +1 -1
- package/src/molecules/Dropdown.jsx +5 -2
- package/src/molecules/KindPreview.jsx +6 -6
- package/src/{atoms/RotaryDial.jsx → molecules/Knob.jsx} +20 -2
- package/src/molecules/KnobPanel.jsx +116 -0
- package/src/molecules/LabeledControl.jsx +22 -0
- package/src/molecules/MediaPlayer.jsx +107 -0
- package/src/molecules/Modal.jsx +1 -1
- package/src/molecules/MultiSelect.jsx +70 -0
- package/src/molecules/OptionRow.jsx +1 -1
- package/src/molecules/PlayTile.jsx +70 -0
- package/src/molecules/PlaybackBar.jsx +7 -16
- package/src/molecules/RowMenuButton.jsx +1 -1
- package/src/molecules/ShapeDropdown.jsx +3 -3
- package/src/molecules/Slider.jsx +93 -56
- package/src/molecules/SliderPanel.jsx +88 -0
- package/src/molecules/SplitToolButton.jsx +1 -1
- package/src/molecules/SwatchControls.jsx +1 -1
- package/src/molecules/TiltBento.jsx +5 -5
- package/src/organisms/ColumnBrowser.jsx +1 -1
- package/src/organisms/ContentFilters.jsx +1 -1
- package/src/organisms/CurveEditor.jsx +2 -2
- package/src/organisms/FeaturedCarousel.jsx +4 -4
- package/src/organisms/KeyframeEditor.jsx +3 -3
- package/src/organisms/LayerStack.jsx +2 -2
- package/src/organisms/MediaLibrary.jsx +1 -1
- package/src/organisms/MediaLibraryPages.jsx +20 -20
- package/src/organisms/RecordManager.jsx +1 -1
- package/src/organisms/SectionHero.jsx +3 -3
- package/src/organisms/SectionNewsletter.jsx +2 -1
- package/src/organisms/ShellSearchOverlay.jsx +8 -8
- package/src/organisms/SpectrumGrid.jsx +1 -1
- package/src/organisms/ToolPalette.jsx +1 -1
- package/src/{atoms/HlsVideo.jsx → utilities/BackgroundVideo.jsx} +6 -2
- package/src/utilities/ErrorBoundary.jsx +1 -1
- package/src/utilities/QuadrantSync.jsx +4 -1
- package/src/utilities/armLongPress.js +18 -0
- package/src/utilities/mediaSearch.js +2 -2
- package/src/utilities/tone.js +6 -0
- package/src/atoms/AudioPlayer.jsx +0 -51
- package/src/molecules/AudioPreview.jsx +0 -140
- package/src/molecules/AudioSheet.jsx +0 -48
- package/src/molecules/VideoSheet.jsx +0 -25
- /package/src/{atoms → molecules}/ActionButton.jsx +0 -0
- /package/src/{atoms → molecules}/ColorSwatch.jsx +0 -0
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from 'react'
|
|
2
|
-
import usePlayback from '../hooks/usePlayback.js'
|
|
3
|
-
import PlaybackBar, { clock } from './PlaybackBar.jsx'
|
|
4
|
-
import QuickLookFrame from './QuickLookFrame.jsx'
|
|
5
|
-
import FileIcon from '../atoms/FileIcon.jsx'
|
|
6
|
-
import { readCover } from '../utilities/id3.js'
|
|
7
|
-
|
|
8
|
-
/* taxonomy-ok: molecule — nests PlaybackBar + QuickLookFrame (relative) + FileIcon (atom). */
|
|
9
|
-
|
|
10
|
-
function useCover(src) {
|
|
11
|
-
const [cover, setCover] = useState(null)
|
|
12
|
-
useEffect(() => {
|
|
13
|
-
let live = true
|
|
14
|
-
readCover(src).then((url) => { if (live) setCover(url) }).catch(() => {})
|
|
15
|
-
return () => { live = false }
|
|
16
|
-
}, [src])
|
|
17
|
-
return cover
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* AudioSheet — Audio in the preview window. audio in the Quick Look window, Finder's layout (user 2026-09-23, the reference
|
|
22
|
-
* shot): the artwork square left, `Time: mm:ss` beside it, the QuickTime bar docked in the
|
|
23
|
-
* window's footer. Artwork = the file's embedded ID3 `APIC` cover (`readCover`); no cover →
|
|
24
|
-
* `FileIcon`, the same page the tile shows. The `cover` / `sheet` variants are gone — there is
|
|
25
|
-
* one window now, and it is the sheet.
|
|
26
|
-
*
|
|
27
|
-
* @param {string} src the audio URL
|
|
28
|
-
* @param {string} ext the extension, for the no-cover icon
|
|
29
|
-
* @param {Function} onDuration (seconds) => void once metadata lands
|
|
30
|
-
* @param {Object} frame the window's header — `QuickLookFrame`'s title · meta · actions · onClose
|
|
31
|
-
*/
|
|
32
|
-
export default function AudioSheet({ src, ext, onDuration, frame }) {
|
|
33
|
-
const { ref, handlers, bar } = usePlayback((el) => onDuration?.(el.duration))
|
|
34
|
-
const cover = useCover(src)
|
|
35
|
-
return (
|
|
36
|
-
<QuickLookFrame {...frame} footer={<PlaybackBar {...bar} docked />}>
|
|
37
|
-
<audio ref={ref} src={src} preload="metadata" {...handlers} />
|
|
38
|
-
<div className="kol-quicklook-audio">
|
|
39
|
-
<div className="kol-quicklook-art">
|
|
40
|
-
{cover
|
|
41
|
-
? <img src={cover} alt="" className="w-full h-full object-cover" />
|
|
42
|
-
: <FileIcon ext={ext} glyph="music-note" className="w-[52%]" />}
|
|
43
|
-
</div>
|
|
44
|
-
<span className="kol-mono-16 text-meta">Time: <b className="text-strong">{clock(bar.duration)}</b></span>
|
|
45
|
-
</div>
|
|
46
|
-
</QuickLookFrame>
|
|
47
|
-
)
|
|
48
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import usePlayback from '../hooks/usePlayback.js'
|
|
2
|
-
import PlaybackBar from './PlaybackBar.jsx'
|
|
3
|
-
import QuickLookFrame from './QuickLookFrame.jsx'
|
|
4
|
-
|
|
5
|
-
/* taxonomy-ok: molecule — nests PlaybackBar + QuickLookFrame (relative). */
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* VideoSheet — A video in the preview window. video in the Quick Look window: the frame at the video's own aspect ratio, the
|
|
9
|
-
* QuickTime bar docked in the window's footer (2026-09-23 — it floated over the picture, which
|
|
10
|
-
* made video the one kind whose controls sat on the media). No native controls; click on the
|
|
11
|
-
* video toggles play; no autoplay (user 2026-09-23 — Quick Look opens paused), `playsInline`, `preload="metadata"`.
|
|
12
|
-
*
|
|
13
|
-
* @param {string} src the video URL
|
|
14
|
-
* @param {string} poster the poster URL
|
|
15
|
-
* @param {Function} onMeta ({ w, h, len }) => void once metadata lands — the window's facts
|
|
16
|
-
* @param {Object} frame the window's header — `QuickLookFrame`'s title · meta · actions · onClose
|
|
17
|
-
*/
|
|
18
|
-
export default function VideoSheet({ src, poster, onMeta, frame }) {
|
|
19
|
-
const { ref, handlers, bar } = usePlayback((el) => onMeta?.({ w: el.videoWidth, h: el.videoHeight, len: el.duration }))
|
|
20
|
-
return (
|
|
21
|
-
<QuickLookFrame {...frame} footer={<PlaybackBar {...bar} docked />}>
|
|
22
|
-
<video ref={ref} src={src} poster={poster} playsInline preload="metadata" className="kol-quicklook-media" onClick={bar.onToggle} {...handlers} />
|
|
23
|
-
</QuickLookFrame>
|
|
24
|
-
)
|
|
25
|
-
}
|
|
File without changes
|
|
File without changes
|