@kolkrabbi/kol-component 0.26.0 → 0.27.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 +1 -1
- package/src/{molecules → atoms}/ColorSwatch.jsx +1 -1
- package/src/atoms/CopyButton.jsx +11 -19
- package/src/{molecules → atoms}/Image.jsx +1 -1
- package/src/index.js +20 -20
- package/src/molecules/Accordion.jsx +0 -3
- package/src/{organisms → molecules}/BentoCard.jsx +1 -1
- package/src/molecules/ButtonGroup.jsx +0 -2
- package/src/molecules/CodeBlock.jsx +4 -35
- package/src/molecules/ColorInputRow.jsx +1 -1
- package/src/molecules/ColorRamp.jsx +1 -1
- package/src/{atoms → molecules}/DocsToc.jsx +0 -4
- package/src/{atoms → molecules}/FullscreenOverlay.jsx +1 -1
- package/src/molecules/ImageBlock.jsx +1 -1
- package/src/{organisms → molecules}/LoaderOverlay.jsx +1 -1
- package/src/molecules/PropertyInput.jsx +1 -1
- package/src/molecules/SwatchControls.jsx +1 -6
- package/src/organisms/FeaturedCarousel.jsx +1 -1
- package/src/{molecules → organisms}/FramedMediaBand.jsx +1 -1
- package/src/organisms/FullBleedHero.jsx +1 -1
- package/src/organisms/GalleryCarousel.jsx +1 -1
- package/src/organisms/MediaLibrary.jsx +1 -1
- package/src/organisms/MediaViewer.jsx +1 -1
- package/src/organisms/RecordManager.jsx +1 -1
- package/src/{molecules → organisms}/ShellSearchOverlay.jsx +1 -1
- package/src/organisms/SpectrumGrid.jsx +1 -1
- /package/src/{organisms → atoms}/AsciiCursor.jsx +0 -0
- /package/src/{molecules → atoms}/PaletteHarmonyWheel.jsx +0 -0
- /package/src/{molecules → atoms}/SelectionOverlay.jsx +0 -0
- /package/src/{organisms → molecules}/Carousel.jsx +0 -0
- /package/src/{atoms → molecules}/DropdownTagFilter.jsx +0 -0
- /package/src/{organisms → molecules}/ErrorBoundary.jsx +0 -0
- /package/src/{atoms → molecules}/LabeledControl.jsx +0 -0
- /package/src/{atoms → molecules}/QuantityInput.jsx +0 -0
- /package/src/{atoms → molecules}/SearchInput.jsx +0 -0
- /package/src/{atoms → molecules}/Section.jsx +0 -0
- /package/src/{atoms → molecules}/Stepper.jsx +0 -0
- /package/src/{molecules → organisms}/SpectrumControls.jsx +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kolkrabbi/kol-component",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
4
4
|
"description": "KOL design-system components — atoms through organisms, emitting canonical kol-* classes. Pairs with @kolkrabbi/kol-theme for styling.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
package/src/atoms/CopyButton.jsx
CHANGED
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { useState } from 'react'
|
|
2
|
+
import { Icon } from '@kolkrabbi/kol-icons'
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
|
-
* CopyButton — copy-to-clipboard
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* CopyButton — THE copy-to-clipboard control (2026-08-09 user ruling): the
|
|
6
|
+
* 32×32 icon button — `copy` glyph flipping to `check` for 2s on copied,
|
|
7
|
+
* no text label. This is the button CodeBlock carried privately since the
|
|
8
|
+
* 2026-07-28 elder replication, promoted to the one shared atom; the old
|
|
9
|
+
* Copy/Copied label chip (one-off SVGs outside the icon set) is retired.
|
|
10
|
+
* Chrome comes from .kol-copy-btn (kol-theme); parents add their own
|
|
11
|
+
* positioning class (e.g. CodeBlock's .kol-codeblock-copy).
|
|
8
12
|
*
|
|
9
13
|
* Props:
|
|
10
14
|
* text — string (or () => string) written to the clipboard
|
|
11
|
-
* label — show the Copy/Copied text next to the icon (default true;
|
|
12
|
-
* false = icon-only for tight spots)
|
|
13
15
|
* className — extra classes (positioning etc.)
|
|
14
16
|
*/
|
|
15
|
-
export default function CopyButton({ text,
|
|
17
|
+
export default function CopyButton({ text, className = '', ...props }) {
|
|
16
18
|
const [copied, setCopied] = useState(false)
|
|
17
19
|
|
|
18
20
|
const onCopy = async () => {
|
|
19
21
|
try {
|
|
20
22
|
await navigator.clipboard.writeText(typeof text === 'function' ? text() : String(text ?? ''))
|
|
21
23
|
setCopied(true)
|
|
22
|
-
setTimeout(() => setCopied(false),
|
|
24
|
+
setTimeout(() => setCopied(false), 2000)
|
|
23
25
|
} catch {
|
|
24
26
|
/* clipboard blocked — silent */
|
|
25
27
|
}
|
|
@@ -34,17 +36,7 @@ export default function CopyButton({ text, label = true, className = '', ...prop
|
|
|
34
36
|
title={copied ? 'Copied' : 'Copy'}
|
|
35
37
|
{...props}
|
|
36
38
|
>
|
|
37
|
-
{copied ?
|
|
38
|
-
<svg viewBox="0 0 20 20" width="14" height="14" aria-hidden="true">
|
|
39
|
-
<path d="M5 10 L9 14 L15 6" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" />
|
|
40
|
-
</svg>
|
|
41
|
-
) : (
|
|
42
|
-
<svg viewBox="0 0 20 20" width="14" height="14" aria-hidden="true">
|
|
43
|
-
<rect x="6" y="3" width="10" height="12" rx="1" fill="none" stroke="currentColor" strokeWidth="1.4" />
|
|
44
|
-
<rect x="4" y="6" width="10" height="12" rx="1" fill="none" stroke="currentColor" strokeWidth="1.4" />
|
|
45
|
-
</svg>
|
|
46
|
-
)}
|
|
47
|
-
{label && <span>{copied ? 'Copied' : 'Copy'}</span>}
|
|
39
|
+
<Icon name={copied ? 'check' : 'copy'} size={16} />
|
|
48
40
|
</button>
|
|
49
41
|
)
|
|
50
42
|
}
|
package/src/index.js
CHANGED
|
@@ -25,28 +25,28 @@ export { default as Button } from './atoms/Button.jsx'
|
|
|
25
25
|
export { default as CopyButton } from './atoms/CopyButton.jsx'
|
|
26
26
|
export { default as CurveOverlay } from './atoms/CurveOverlay.jsx'
|
|
27
27
|
export { default as Divider } from './atoms/Divider.jsx'
|
|
28
|
-
export { default as DocsToc } from './
|
|
29
|
-
export { default as DropdownTagFilter } from './
|
|
28
|
+
export { default as DocsToc } from './molecules/DocsToc.jsx'
|
|
29
|
+
export { default as DropdownTagFilter } from './molecules/DropdownTagFilter.jsx'
|
|
30
30
|
export { default as EmptyState } from './atoms/EmptyState.jsx'
|
|
31
31
|
export { default as IconFrame } from './atoms/IconFrame.jsx'
|
|
32
32
|
export { default as ExitPreview } from './atoms/ExitPreview.jsx'
|
|
33
33
|
export { default as Figure } from './atoms/Figure.jsx'
|
|
34
|
-
export { default as FullscreenOverlay } from './
|
|
34
|
+
export { default as FullscreenOverlay } from './molecules/FullscreenOverlay.jsx'
|
|
35
35
|
export { default as HlsVideo } from './atoms/HlsVideo.jsx'
|
|
36
36
|
export { default as Input } from './atoms/Input.jsx'
|
|
37
37
|
export { default as Label } from './atoms/Label.jsx'
|
|
38
|
-
export { default as LabeledControl } from './
|
|
38
|
+
export { default as LabeledControl } from './molecules/LabeledControl.jsx'
|
|
39
39
|
export { default as OverlayGlassPanel } from './atoms/OverlayGlassPanel.jsx'
|
|
40
40
|
export { default as Pill } from './atoms/Pill.jsx'
|
|
41
41
|
export { usePopover, PopoverPanel, Tooltip } from './atoms/Popover.jsx'
|
|
42
42
|
export { default as ProsePreview } from './atoms/ProsePreview.jsx'
|
|
43
|
-
export { default as QuantityInput } from './
|
|
43
|
+
export { default as QuantityInput } from './molecules/QuantityInput.jsx'
|
|
44
44
|
export { default as RotaryDial } from './atoms/RotaryDial.jsx'
|
|
45
|
-
export { default as SearchInput } from './
|
|
46
|
-
export { default as Section } from './
|
|
45
|
+
export { default as SearchInput } from './molecules/SearchInput.jsx'
|
|
46
|
+
export { default as Section } from './molecules/Section.jsx'
|
|
47
47
|
export { default as SectionLabel } from './atoms/SectionLabel.jsx'
|
|
48
48
|
export { default as SegmentedToggle } from './atoms/SegmentedToggle.jsx'
|
|
49
|
-
export { default as Stepper } from './
|
|
49
|
+
export { default as Stepper } from './molecules/Stepper.jsx'
|
|
50
50
|
export { default as Tag } from './atoms/Tag.jsx'
|
|
51
51
|
export { default as Textarea } from './atoms/Textarea.jsx'
|
|
52
52
|
export { default as ToggleBracket } from './atoms/ToggleBracket.jsx'
|
|
@@ -63,30 +63,30 @@ export { default as ButtonGroup } from './molecules/ButtonGroup.jsx'
|
|
|
63
63
|
export { default as AlignmentGrid } from './molecules/AlignmentGrid.jsx'
|
|
64
64
|
export { default as ImageBlock } from './molecules/ImageBlock.jsx'
|
|
65
65
|
export { default as InteractiveImage } from './atoms/InteractiveImage.jsx'
|
|
66
|
-
export { default as SelectionOverlay } from './
|
|
66
|
+
export { default as SelectionOverlay } from './atoms/SelectionOverlay.jsx'
|
|
67
67
|
export { default as VideoBlock, getEmbedUrl } from './molecules/VideoBlock.jsx'
|
|
68
68
|
export { default as CardFeatureItem } from './molecules/CardFeatureItem.jsx'
|
|
69
69
|
export { default as CodeBlock } from './molecules/CodeBlock.jsx'
|
|
70
70
|
export { default as ColorInputRow } from './molecules/ColorInputRow.jsx'
|
|
71
71
|
export { default as ColorRamp } from './molecules/ColorRamp.jsx'
|
|
72
|
-
export { default as ColorSwatch } from './
|
|
72
|
+
export { default as ColorSwatch } from './atoms/ColorSwatch.jsx'
|
|
73
73
|
export { default as Dropdown } from './molecules/Dropdown.jsx'
|
|
74
74
|
export { default as FieldRow, StatusChip } from './molecules/FieldRow.jsx'
|
|
75
|
-
export { default as FramedMediaBand } from './
|
|
76
|
-
export { default as Image } from './
|
|
75
|
+
export { default as FramedMediaBand } from './organisms/FramedMediaBand.jsx'
|
|
76
|
+
export { default as Image } from './atoms/Image.jsx'
|
|
77
77
|
export { default as MediaCard } from './molecules/MediaCard.jsx'
|
|
78
78
|
export { default as MediaRow } from './molecules/MediaRow.jsx'
|
|
79
79
|
export { MenuItem, MenuDropdownItem, MenuDropdownDivider, MenuDropdownNest } from './molecules/MenuItem.jsx'
|
|
80
80
|
export { MenuPopover } from './molecules/MenuPopover.jsx'
|
|
81
81
|
export { ModalProvider, useModal } from './molecules/Modal.jsx'
|
|
82
|
-
export { default as PaletteHarmonyWheel } from './
|
|
82
|
+
export { default as PaletteHarmonyWheel } from './atoms/PaletteHarmonyWheel.jsx'
|
|
83
83
|
export { default as PropertyInput } from './molecules/PropertyInput.jsx'
|
|
84
84
|
export { default as ShapeDropdown } from './molecules/ShapeDropdown.jsx'
|
|
85
85
|
export { default as ShellDrawer } from './molecules/ShellDrawer.jsx'
|
|
86
|
-
export { default as ShellSearchOverlay } from './
|
|
86
|
+
export { default as ShellSearchOverlay } from './organisms/ShellSearchOverlay.jsx'
|
|
87
87
|
export { default as Slider } from './molecules/Slider.jsx'
|
|
88
88
|
export { default as SpecList } from './molecules/SpecList.jsx'
|
|
89
|
-
export { default as SpectrumControls, HueStrip, SBSquare, WheelTriangle } from './
|
|
89
|
+
export { default as SpectrumControls, HueStrip, SBSquare, WheelTriangle } from './organisms/SpectrumControls.jsx'
|
|
90
90
|
export { default as SplitToolButton } from './molecules/SplitToolButton.jsx'
|
|
91
91
|
export { default as SwatchControls, SwatchStack, EyedropPick } from './molecules/SwatchControls.jsx'
|
|
92
92
|
export { default as TabsRow } from './molecules/TabsRow.jsx'
|
|
@@ -98,18 +98,18 @@ export { default as TabsRow } from './molecules/TabsRow.jsx'
|
|
|
98
98
|
export { default as Canvas, CanvasFrame, PanViewport, CANVAS_VIRTUAL_W, DEFAULT_ASPECTS, CANVAS_DEFAULTS } from './organisms/Canvas.jsx'
|
|
99
99
|
export { default as EditorShell } from './organisms/EditorShell.jsx'
|
|
100
100
|
export { default as GalleryCarousel } from './organisms/GalleryCarousel.jsx'
|
|
101
|
-
export { default as AsciiCursor } from './
|
|
102
|
-
export { default as BentoCard } from './
|
|
103
|
-
export { default as Carousel } from './
|
|
101
|
+
export { default as AsciiCursor } from './atoms/AsciiCursor.jsx'
|
|
102
|
+
export { default as BentoCard } from './molecules/BentoCard.jsx'
|
|
103
|
+
export { default as Carousel } from './molecules/Carousel.jsx'
|
|
104
104
|
export { default as ContentFilters } from './organisms/ContentFilters.jsx'
|
|
105
105
|
export { default as CtaGlobal } from './organisms/CtaGlobal.jsx'
|
|
106
|
-
export { default as ErrorBoundary } from './
|
|
106
|
+
export { default as ErrorBoundary } from './molecules/ErrorBoundary.jsx'
|
|
107
107
|
export { default as FeatureSplit } from './organisms/FeatureSplit.jsx'
|
|
108
108
|
export { default as FeaturedCarousel } from './organisms/FeaturedCarousel.jsx'
|
|
109
109
|
export { default as FeaturesCardSection } from './organisms/FeaturesCardSection.jsx'
|
|
110
110
|
export { default as FoundryCTA } from './organisms/FoundryCTA.jsx'
|
|
111
111
|
export { default as FullBleedHero } from './organisms/FullBleedHero.jsx'
|
|
112
|
-
export { default as LoaderOverlay } from './
|
|
112
|
+
export { default as LoaderOverlay } from './molecules/LoaderOverlay.jsx'
|
|
113
113
|
export { default as MediaLibrary, MediaLibraryProvider, useMediaLibrary, MediaPicker, MediaBrowser } from './organisms/MediaLibrary.jsx'
|
|
114
114
|
export { default as MediaTileGallery } from './organisms/MediaTileGallery.jsx'
|
|
115
115
|
export { default as MediaViewer } from './organisms/MediaViewer.jsx'
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Accordion — collapsible panel group.
|
|
3
3
|
*
|
|
4
|
-
* taxonomy-ok: molecule — Accordion nests AccordionPanel in this same file,
|
|
5
|
-
* which the import-based validator can't see.
|
|
6
|
-
*
|
|
7
4
|
* Composition-based: <Accordion> wraps <AccordionPanel> children. Each panel
|
|
8
5
|
* owns its open/closed state independently (additive — multiple can be open).
|
|
9
6
|
* For single-open behavior, manage state from the parent and pass controlled
|
|
@@ -3,7 +3,7 @@ import { motion } from 'framer-motion'
|
|
|
3
3
|
import HlsVideo from '../atoms/HlsVideo.jsx'
|
|
4
4
|
import AssetPlaceholder from '../atoms/AssetPlaceholder.jsx'
|
|
5
5
|
import Button from '../atoms/Button.jsx'
|
|
6
|
-
import Image from '../
|
|
6
|
+
import Image from '../atoms/Image.jsx'
|
|
7
7
|
import useTilt from '../hooks/useTilt.js'
|
|
8
8
|
import usePrefersReducedMotion from '../hooks/usePrefersReducedMotion.js'
|
|
9
9
|
|
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
1
|
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'
|
|
3
2
|
import { oneDark } from 'react-syntax-highlighter/dist/esm/styles/prism'
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
/* taxonomy-ok: molecule — nests <Icon> from @kolkrabbi/kol-icons (the copy
|
|
7
|
-
* affordance). The gate only counts kol-component nesting, so a molecule whose
|
|
8
|
-
* only KOL child lives in a sibling package reads as an atom to it. */
|
|
3
|
+
import CopyButton from '../atoms/CopyButton.jsx'
|
|
9
4
|
|
|
10
5
|
/**
|
|
11
6
|
* CodeBlock — REPLICATED from the elder reference
|
|
12
7
|
* (kol-website/packages/ui/src/molecules/CodeBlock.jsx, 2026-07-28 user
|
|
13
8
|
* mandate): react-syntax-highlighter (Prism) with the oneDark theme flattened
|
|
14
9
|
* onto KOL chrome — transparent bg, 14px/1.6 mono, no text-shadow — a single
|
|
15
|
-
* filename-or-language chip, and
|
|
16
|
-
*
|
|
10
|
+
* filename-or-language chip, and the CopyButton atom positioned in-frame
|
|
11
|
+
* (.kol-codeblock-copy). Chrome lives in kol-theme (kol-components-molecules.css).
|
|
17
12
|
*
|
|
18
13
|
* Input shapes (first match wins per field):
|
|
19
14
|
* • Portable Text: `value={{ code, language, filename }}`
|
|
@@ -29,12 +24,6 @@ import { Icon } from '@kolkrabbi/kol-icons'
|
|
|
29
24
|
* @param {boolean} [bare] drop the FRAME; the host owns it. Not a size.
|
|
30
25
|
*/
|
|
31
26
|
|
|
32
|
-
const CheckMarkIcon = () => (
|
|
33
|
-
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
34
|
-
<path d="M19.4697 6.41987C19.7626 6.12697 20.2373 6.12697 20.5302 6.41987C20.8231 6.71276 20.8231 7.18752 20.5302 7.48041L10.9443 17.0663C9.87038 18.1401 8.12951 18.1401 7.05561 17.0663L3.46967 13.4804C3.17678 13.1875 3.17678 12.7128 3.46967 12.4199C3.76256 12.127 4.23732 12.127 4.53022 12.4199L8.11615 16.0058C8.60427 16.4938 9.39561 16.4938 9.88373 16.0058L19.4697 6.41987Z" fill="currentColor"/>
|
|
35
|
-
</svg>
|
|
36
|
-
)
|
|
37
|
-
|
|
38
27
|
const syntaxTheme = (foregroundToken = 80) => ({
|
|
39
28
|
...oneDark,
|
|
40
29
|
'pre[class*="language-"]': {
|
|
@@ -80,22 +69,10 @@ const syntaxTheme = (foregroundToken = 80) => ({
|
|
|
80
69
|
* on both axes. Size is INDEPENDENT of `bare`: bare removes the frame, size
|
|
81
70
|
* sets the box, and a bare block still has one. */
|
|
82
71
|
export default function CodeBlock({ children, code: codeProp, language: languageProp, filename: filenameProp, value, bare = false, size = 'md' }) {
|
|
83
|
-
const [copied, setCopied] = useState(false)
|
|
84
|
-
|
|
85
72
|
const code = String(value?.code ?? codeProp ?? children ?? '')
|
|
86
73
|
const language = value?.language ?? languageProp ?? 'text'
|
|
87
74
|
const filename = value?.filename ?? filenameProp
|
|
88
75
|
|
|
89
|
-
const handleCopy = async () => {
|
|
90
|
-
try {
|
|
91
|
-
await navigator.clipboard.writeText(code)
|
|
92
|
-
setCopied(true)
|
|
93
|
-
setTimeout(() => setCopied(false), 2000)
|
|
94
|
-
} catch {
|
|
95
|
-
/* clipboard blocked — silent */
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
76
|
return (
|
|
100
77
|
<div className={bare ? '' : 'kol-codeblock-wrapper'}>
|
|
101
78
|
<div className={`kol-codeblock kol-codeblock--${size}${bare ? ' kol-codeblock--bare' : ''}`}>
|
|
@@ -128,15 +105,7 @@ export default function CodeBlock({ children, code: codeProp, language: language
|
|
|
128
105
|
>
|
|
129
106
|
{code}
|
|
130
107
|
</SyntaxHighlighter>
|
|
131
|
-
<
|
|
132
|
-
type="button"
|
|
133
|
-
className="kol-codeblock-copy"
|
|
134
|
-
onClick={handleCopy}
|
|
135
|
-
aria-label={copied ? 'Code copied!' : 'Copy code'}
|
|
136
|
-
title={copied ? 'Code copied!' : 'Copy code'}
|
|
137
|
-
>
|
|
138
|
-
{copied ? <CheckMarkIcon /> : <Icon name="copy" size={16} />}
|
|
139
|
-
</button>
|
|
108
|
+
<CopyButton text={code} className="kol-codeblock-copy" />
|
|
140
109
|
</div>
|
|
141
110
|
</div>
|
|
142
111
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useState } from 'react'
|
|
2
2
|
import { Icon } from '@kolkrabbi/kol-icons'
|
|
3
|
-
import ColorSwatch from '
|
|
3
|
+
import ColorSwatch from '../atoms/ColorSwatch'
|
|
4
4
|
import Input from '../atoms/Input'
|
|
5
5
|
import { usePopover, PopoverPanel } from '../atoms/Popover'
|
|
6
6
|
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import useScrollSpy from '../hooks/useScrollSpy.js'
|
|
2
2
|
|
|
3
|
-
/* taxonomy-ok: atoms despite being interactive — it composes only the
|
|
4
|
-
* useScrollSpy hook, and hooks don't count as nesting; no KOL component
|
|
5
|
-
* is rendered (nav + anchors only). */
|
|
6
|
-
|
|
7
3
|
/**
|
|
8
4
|
* DocsToc — on-page table of contents for long docs pages: a flat list of
|
|
9
5
|
* anchor links that highlights the heading currently in view. The scroll
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react'
|
|
2
2
|
import { Icon } from '@kolkrabbi/kol-icons'
|
|
3
|
-
import ColorSwatch from '
|
|
4
|
-
|
|
5
|
-
/* taxonomy-ok: the default composed control nests the same-file SwatchStack
|
|
6
|
-
* and EyedropPick (KOL named exports the relative-import check can't see);
|
|
7
|
-
* both collapse the source's internal FramedSwatch onto the sibling molecule
|
|
8
|
-
* ColorSwatch (a same-tier relative import). */
|
|
3
|
+
import ColorSwatch from '../atoms/ColorSwatch.jsx'
|
|
9
4
|
|
|
10
5
|
/*
|
|
11
6
|
* SwatchControls — the Photoshop-style top row of the colour panel, in two
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isValidElement, useCallback, useEffect, useState } from 'react'
|
|
2
2
|
import useEmblaCarousel from 'embla-carousel-react'
|
|
3
|
-
import Image from '../
|
|
3
|
+
import Image from '../atoms/Image.jsx'
|
|
4
4
|
import HlsVideo from '../atoms/HlsVideo.jsx'
|
|
5
5
|
import OverlayGlassPanel from '../atoms/OverlayGlassPanel.jsx'
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isValidElement } from 'react'
|
|
2
2
|
import HlsVideo from '../atoms/HlsVideo.jsx'
|
|
3
|
-
import Image from '../
|
|
3
|
+
import Image from '../atoms/Image.jsx'
|
|
4
4
|
|
|
5
5
|
/** Height presets; anything else is passed through as a class string. */
|
|
6
6
|
const HEIGHTS = {
|
|
@@ -2,7 +2,7 @@ import { createContext, useContext, useEffect, useMemo, useState } from 'react'
|
|
|
2
2
|
import { Icon } from '@kolkrabbi/kol-icons'
|
|
3
3
|
import Button from '../atoms/Button.jsx'
|
|
4
4
|
import SegmentedToggle from '../atoms/SegmentedToggle.jsx'
|
|
5
|
-
import FullscreenOverlay from '../
|
|
5
|
+
import FullscreenOverlay from '../molecules/FullscreenOverlay.jsx'
|
|
6
6
|
import MediaCard from '../molecules/MediaCard.jsx'
|
|
7
7
|
import MediaRow from '../molecules/MediaRow.jsx'
|
|
8
8
|
import ContentFilters from './ContentFilters.jsx'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react'
|
|
2
2
|
import useEmblaCarousel from 'embla-carousel-react'
|
|
3
3
|
import { Icon } from '@kolkrabbi/kol-icons'
|
|
4
|
-
import FullscreenOverlay from '../
|
|
4
|
+
import FullscreenOverlay from '../molecules/FullscreenOverlay.jsx'
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* MediaViewer — THE fullscreen paged media viewer. One viewer for every
|
|
@@ -2,7 +2,7 @@ import { useMemo, useRef, useState } from 'react'
|
|
|
2
2
|
import { createPortal } from 'react-dom'
|
|
3
3
|
import { Icon } from '@kolkrabbi/kol-icons'
|
|
4
4
|
import Button from '../atoms/Button'
|
|
5
|
-
import SearchInput from '../
|
|
5
|
+
import SearchInput from '../molecules/SearchInput'
|
|
6
6
|
import ToggleCheckbox from '../atoms/ToggleCheckbox'
|
|
7
7
|
import ShellDrawer from '../molecules/ShellDrawer'
|
|
8
8
|
import Dropdown from '../molecules/Dropdown'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|