@frontify/fondue 12.0.0-beta.246 → 12.0.0-beta.248
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.
|
@@ -7,25 +7,25 @@ import e, { useState as w, useEffect as C } from "react";
|
|
|
7
7
|
import I from "tinycolor2";
|
|
8
8
|
import S from "../../foundation/Icon/Generated/IconMagnifier.es.js";
|
|
9
9
|
import y from "../../foundation/Icon/Generated/IconCheckMark.es.js";
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
const o = (
|
|
10
|
+
import z from "../../foundation/Icon/Generated/IconGridRegular.es.js";
|
|
11
|
+
import R from "../../foundation/Icon/Generated/IconStackVertical.es.js";
|
|
12
|
+
const o = (l, r = "") => l == null ? void 0 : l.toLocaleLowerCase().includes(r.toLocaleLowerCase().trim()), G = ({ palettes: l = [], currentColor: r, onSelect: x }) => {
|
|
13
13
|
const f = [
|
|
14
|
-
{ id: "Grid", icon: /* @__PURE__ */ e.createElement(
|
|
15
|
-
{ id: "List", icon: /* @__PURE__ */ e.createElement(
|
|
16
|
-
], [
|
|
14
|
+
{ id: "Grid", icon: /* @__PURE__ */ e.createElement(z, null), ariaLabel: "Grid" },
|
|
15
|
+
{ id: "List", icon: /* @__PURE__ */ e.createElement(R, null), ariaLabel: "List" }
|
|
16
|
+
], [s, g] = w(f[0].id), [m, u] = w(""), [E, b] = w(l);
|
|
17
17
|
C(() => {
|
|
18
18
|
const a = setTimeout(() => {
|
|
19
19
|
b(
|
|
20
|
-
|
|
21
|
-
id:
|
|
22
|
-
title:
|
|
23
|
-
colors: t.some(({ name:
|
|
20
|
+
l.filter(({ title: i, colors: n }) => o(i, m) || n.some(({ name: t }) => o(t, m))).map(({ id: i, title: n, colors: t }) => ({
|
|
21
|
+
id: i,
|
|
22
|
+
title: n,
|
|
23
|
+
colors: t.some(({ name: c }) => o(c, m)) ? t.filter(({ name: c }) => o(c, m)) : t
|
|
24
24
|
}))
|
|
25
25
|
);
|
|
26
26
|
}, 200);
|
|
27
27
|
return () => clearTimeout(a);
|
|
28
|
-
}, [
|
|
28
|
+
}, [l, m]);
|
|
29
29
|
const p = E.filter((a) => a.colors.length > 0);
|
|
30
30
|
return /* @__PURE__ */ e.createElement("div", { className: "tw-flex tw-flex-col tw-gap-4", "data-test-id": "brand-color-picker" }, /* @__PURE__ */ e.createElement("div", { className: "tw-flex tw-gap-2" }, /* @__PURE__ */ e.createElement("div", { className: "tw-flex-1" }, /* @__PURE__ */ e.createElement(
|
|
31
31
|
h,
|
|
@@ -39,19 +39,20 @@ const o = (r, l = "") => r == null ? void 0 : r.toLocaleLowerCase().includes(l.t
|
|
|
39
39
|
)), /* @__PURE__ */ e.createElement("div", { className: "tw-w-[72px]" }, /* @__PURE__ */ e.createElement(
|
|
40
40
|
N,
|
|
41
41
|
{
|
|
42
|
+
size: "small",
|
|
42
43
|
items: f,
|
|
43
|
-
activeItemId:
|
|
44
|
+
activeItemId: s,
|
|
44
45
|
onChange: (a) => g(a)
|
|
45
46
|
}
|
|
46
|
-
))), /* @__PURE__ */ e.createElement("ul", { className: "tw-flex tw-flex-col tw-gap-4" }, p.length > 0 ? p.map(({ id: a, title:
|
|
47
|
+
))), /* @__PURE__ */ e.createElement("ul", { className: "tw-flex tw-flex-col tw-gap-4" }, p.length > 0 ? p.map(({ id: a, title: i, colors: n }) => /* @__PURE__ */ e.createElement("li", { key: a, className: "tw-flex tw-flex-col tw-gap-2" }, /* @__PURE__ */ e.createElement("p", { className: "tw-text-black tw-text-xs tw-font-medium dark:tw-text-white" }, i), /* @__PURE__ */ e.createElement(
|
|
47
48
|
"ul",
|
|
48
49
|
{
|
|
49
50
|
className: d([
|
|
50
51
|
"tw-flex tw-gap-y-2 tw-flex-wrap",
|
|
51
|
-
|
|
52
|
+
s === "List" && "tw-flex-col"
|
|
52
53
|
])
|
|
53
54
|
},
|
|
54
|
-
|
|
55
|
+
n.map((t) => /* @__PURE__ */ e.createElement("li", { key: t.name, "data-test-id": "brand-color" }, /* @__PURE__ */ e.createElement(
|
|
55
56
|
"button",
|
|
56
57
|
{
|
|
57
58
|
className: "tw-flex tw-w-full",
|
|
@@ -67,9 +68,9 @@ const o = (r, l = "") => r == null ? void 0 : r.toLocaleLowerCase().includes(l.t
|
|
|
67
68
|
]),
|
|
68
69
|
style: { background: I(v(t)).toRgbString() }
|
|
69
70
|
},
|
|
70
|
-
t.red ===
|
|
71
|
+
t.red === r.red && t.green === r.green && t.blue === r.blue && t.alpha === r.alpha && /* @__PURE__ */ e.createElement(y, { size: L.Size20 })
|
|
71
72
|
),
|
|
72
|
-
|
|
73
|
+
s === "List" && /* @__PURE__ */ e.createElement("span", { className: "tw-h-6 tw-grow tw-flex tw-items-center tw-text-sm tw-text-left" }, t.name)
|
|
73
74
|
)))
|
|
74
75
|
))) : "No colors found"));
|
|
75
76
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrandColorPicker.es.js","sources":["../../../src/components/ColorPicker/BrandColorPicker.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { SegmentedControls } from '@components/SegmentedControls/SegmentedControls';\nimport { TextInput } from '@components/TextInput/TextInput';\nimport { IconCheckMark, IconGridRegular, IconMagnifier, IconStackVertical } from '@foundation/Icon/Generated';\nimport { IconSize } from '@foundation/Icon/IconSize';\nimport { isColorLight, toShortRgb } from '@utilities/colors';\nimport { merge } from '@utilities/merge';\nimport React, { ReactElement, useEffect, useState } from 'react';\nimport tinycolor from 'tinycolor2';\nimport { ColorPickerProps } from './ColorPicker';\n\nconst find = (haystack?: string, needle = '') =>\n haystack?.toLocaleLowerCase().includes(needle.toLocaleLowerCase().trim());\n\nenum BrandColorView {\n List = 'List',\n Grid = 'Grid',\n}\n\ntype Props = Omit<ColorPickerProps, 'currentFormat' | 'setFormat'>;\n\nexport const BrandColorPicker = ({ palettes: defaultPalettes = [], currentColor, onSelect }: Props): ReactElement => {\n const views = [\n { id: BrandColorView.Grid, icon: <IconGridRegular />, ariaLabel: 'Grid' },\n { id: BrandColorView.List, icon: <IconStackVertical />, ariaLabel: 'List' },\n ];\n const [view, setView] = useState(views[0].id);\n const [query, setQuery] = useState('');\n const [palettes, setPalettes] = useState(defaultPalettes);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setPalettes(\n defaultPalettes\n .filter(({ title, colors }) => find(title, query) || colors.some(({ name }) => find(name, query)))\n .map(({ id, title, colors }) => ({\n id,\n title,\n colors: colors.some(({ name }) => find(name, query))\n ? colors.filter(({ name }) => find(name, query))\n : colors,\n })),\n );\n }, 200);\n\n return () => clearTimeout(timer);\n }, [defaultPalettes, query]);\n\n const palettesWithColors = palettes.filter((palette) => palette.colors.length > 0);\n\n return (\n <div className=\"tw-flex tw-flex-col tw-gap-4\" data-test-id=\"brand-color-picker\">\n <div className=\"tw-flex tw-gap-2\">\n <div className=\"tw-flex-1\">\n <TextInput\n value={query}\n decorator={<IconMagnifier />}\n placeholder=\"Search\"\n onChange={(value) => setQuery(value)}\n clearable\n />\n </div>\n <div className=\"tw-w-[72px]\">\n <SegmentedControls\n items={views}\n activeItemId={view}\n onChange={(colorView) => setView(colorView as BrandColorView)}\n />\n </div>\n </div>\n <ul className=\"tw-flex tw-flex-col tw-gap-4\">\n {palettesWithColors.length > 0\n ? palettesWithColors.map(({ id, title, colors }) => (\n <li key={id} className=\"tw-flex tw-flex-col tw-gap-2\">\n <p className=\"tw-text-black tw-text-xs tw-font-medium dark:tw-text-white\">{title}</p>\n <ul\n className={merge([\n 'tw-flex tw-gap-y-2 tw-flex-wrap',\n view === BrandColorView.List && 'tw-flex-col',\n ])}\n >\n {colors.map((color) => (\n <li key={color.name} data-test-id=\"brand-color\">\n <button\n className=\"tw-flex tw-w-full\"\n onClick={() => onSelect(color)}\n type=\"button\"\n >\n <span\n className={merge([\n 'tw-h-6 tw-w-6 tw-mr-2 tw-rounded tw-flex tw-items-center tw-justify-center tw-ring-1 tw-ring-black-10 tw-ring-offset-1',\n isColorLight(color) ? 'tw-text-black' : 'tw-text-white',\n ])}\n style={{ background: tinycolor(toShortRgb(color)).toRgbString() }}\n >\n {color.red === currentColor.red &&\n color.green === currentColor.green &&\n color.blue === currentColor.blue &&\n color.alpha === currentColor.alpha && (\n <IconCheckMark size={IconSize.Size20} />\n )}\n </span>\n {view === BrandColorView.List && (\n <span className=\"tw-h-6 tw-grow tw-flex tw-items-center tw-text-sm tw-text-left\">\n {color.name}\n </span>\n )}\n </button>\n </li>\n ))}\n </ul>\n </li>\n ))\n : 'No colors found'}\n </ul>\n </div>\n );\n};\nBrandColorPicker.displayName = 'FondueBrandColorPicker';\n"],"names":["find","haystack","needle","BrandColorPicker","defaultPalettes","currentColor","onSelect","views","IconGridRegular","IconStackVertical","view","setView","useState","query","setQuery","palettes","setPalettes","useEffect","timer","title","colors","name","id","palettesWithColors","palette","React","TextInput","IconMagnifier","value","SegmentedControls","colorView","merge","color","isColorLight","tinycolor","toShortRgb","IconCheckMark","IconSize"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BrandColorPicker.es.js","sources":["../../../src/components/ColorPicker/BrandColorPicker.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { SegmentedControls } from '@components/SegmentedControls/SegmentedControls';\nimport { TextInput } from '@components/TextInput/TextInput';\nimport { IconCheckMark, IconGridRegular, IconMagnifier, IconStackVertical } from '@foundation/Icon/Generated';\nimport { IconSize } from '@foundation/Icon/IconSize';\nimport { isColorLight, toShortRgb } from '@utilities/colors';\nimport { merge } from '@utilities/merge';\nimport React, { ReactElement, useEffect, useState } from 'react';\nimport tinycolor from 'tinycolor2';\nimport { ColorPickerProps } from './ColorPicker';\n\nconst find = (haystack?: string, needle = '') =>\n haystack?.toLocaleLowerCase().includes(needle.toLocaleLowerCase().trim());\n\nenum BrandColorView {\n List = 'List',\n Grid = 'Grid',\n}\n\ntype Props = Omit<ColorPickerProps, 'currentFormat' | 'setFormat'>;\n\nexport const BrandColorPicker = ({ palettes: defaultPalettes = [], currentColor, onSelect }: Props): ReactElement => {\n const views = [\n { id: BrandColorView.Grid, icon: <IconGridRegular />, ariaLabel: 'Grid' },\n { id: BrandColorView.List, icon: <IconStackVertical />, ariaLabel: 'List' },\n ];\n const [view, setView] = useState(views[0].id);\n const [query, setQuery] = useState('');\n const [palettes, setPalettes] = useState(defaultPalettes);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setPalettes(\n defaultPalettes\n .filter(({ title, colors }) => find(title, query) || colors.some(({ name }) => find(name, query)))\n .map(({ id, title, colors }) => ({\n id,\n title,\n colors: colors.some(({ name }) => find(name, query))\n ? colors.filter(({ name }) => find(name, query))\n : colors,\n })),\n );\n }, 200);\n\n return () => clearTimeout(timer);\n }, [defaultPalettes, query]);\n\n const palettesWithColors = palettes.filter((palette) => palette.colors.length > 0);\n\n return (\n <div className=\"tw-flex tw-flex-col tw-gap-4\" data-test-id=\"brand-color-picker\">\n <div className=\"tw-flex tw-gap-2\">\n <div className=\"tw-flex-1\">\n <TextInput\n value={query}\n decorator={<IconMagnifier />}\n placeholder=\"Search\"\n onChange={(value) => setQuery(value)}\n clearable\n />\n </div>\n <div className=\"tw-w-[72px]\">\n <SegmentedControls\n size=\"small\"\n items={views}\n activeItemId={view}\n onChange={(colorView) => setView(colorView as BrandColorView)}\n />\n </div>\n </div>\n <ul className=\"tw-flex tw-flex-col tw-gap-4\">\n {palettesWithColors.length > 0\n ? palettesWithColors.map(({ id, title, colors }) => (\n <li key={id} className=\"tw-flex tw-flex-col tw-gap-2\">\n <p className=\"tw-text-black tw-text-xs tw-font-medium dark:tw-text-white\">{title}</p>\n <ul\n className={merge([\n 'tw-flex tw-gap-y-2 tw-flex-wrap',\n view === BrandColorView.List && 'tw-flex-col',\n ])}\n >\n {colors.map((color) => (\n <li key={color.name} data-test-id=\"brand-color\">\n <button\n className=\"tw-flex tw-w-full\"\n onClick={() => onSelect(color)}\n type=\"button\"\n >\n <span\n className={merge([\n 'tw-h-6 tw-w-6 tw-mr-2 tw-rounded tw-flex tw-items-center tw-justify-center tw-ring-1 tw-ring-black-10 tw-ring-offset-1',\n isColorLight(color) ? 'tw-text-black' : 'tw-text-white',\n ])}\n style={{ background: tinycolor(toShortRgb(color)).toRgbString() }}\n >\n {color.red === currentColor.red &&\n color.green === currentColor.green &&\n color.blue === currentColor.blue &&\n color.alpha === currentColor.alpha && (\n <IconCheckMark size={IconSize.Size20} />\n )}\n </span>\n {view === BrandColorView.List && (\n <span className=\"tw-h-6 tw-grow tw-flex tw-items-center tw-text-sm tw-text-left\">\n {color.name}\n </span>\n )}\n </button>\n </li>\n ))}\n </ul>\n </li>\n ))\n : 'No colors found'}\n </ul>\n </div>\n );\n};\nBrandColorPicker.displayName = 'FondueBrandColorPicker';\n"],"names":["find","haystack","needle","BrandColorPicker","defaultPalettes","currentColor","onSelect","views","IconGridRegular","IconStackVertical","view","setView","useState","query","setQuery","palettes","setPalettes","useEffect","timer","title","colors","name","id","palettesWithColors","palette","React","TextInput","IconMagnifier","value","SegmentedControls","colorView","merge","color","isColorLight","tinycolor","toShortRgb","IconCheckMark","IconSize"],"mappings":"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"}
|