@dxos/react-ui-pickers 0.8.1-main.ba2dec9 → 0.8.1-staging.31c3ee1
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/dist/lib/browser/index.css +1 -1
- package/dist/lib/browser/index.css.map +1 -1
- package/dist/lib/browser/index.mjs +44 -37
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +38 -31
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/index.css +1 -1
- package/dist/lib/node/index.css.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.css +1 -1
- package/dist/lib/node-esm/index.css.map +1 -1
- package/dist/lib/node-esm/index.mjs +44 -37
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/{EmojiPicker.d.ts → EmojiPicker/EmojiPicker.d.ts} +5 -5
- package/dist/types/src/components/EmojiPicker/EmojiPicker.d.ts.map +1 -0
- package/dist/types/src/components/EmojiPicker/EmojiPicker.stories.d.ts.map +1 -0
- package/dist/types/src/components/EmojiPicker/index.d.ts +2 -0
- package/dist/types/src/components/EmojiPicker/index.d.ts.map +1 -0
- package/dist/types/src/components/{HuePicker.d.ts → HuePicker/HuePicker.d.ts} +2 -2
- package/dist/types/src/components/HuePicker/HuePicker.d.ts.map +1 -0
- package/dist/types/src/components/HuePicker/HuePicker.stories.d.ts.map +1 -0
- package/dist/types/src/components/HuePicker/index.d.ts +2 -0
- package/dist/types/src/components/HuePicker/index.d.ts.map +1 -0
- package/dist/types/src/components/{IconPicker.d.ts → IconPicker/IconPicker.d.ts} +2 -2
- package/dist/types/src/components/IconPicker/IconPicker.d.ts.map +1 -0
- package/dist/types/src/components/IconPicker/IconPicker.stories.d.ts.map +1 -0
- package/dist/types/src/components/IconPicker/index.d.ts +2 -0
- package/dist/types/src/components/IconPicker/index.d.ts.map +1 -0
- package/dist/types/src/components/PickerButton/PickerButton.d.ts +20 -0
- package/dist/types/src/components/PickerButton/PickerButton.d.ts.map +1 -0
- package/dist/types/src/components/PickerButton/index.d.ts +2 -0
- package/dist/types/src/components/PickerButton/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/package.json +10 -8
- package/src/components/{EmojiPicker.tsx → EmojiPicker/EmojiPicker.tsx} +22 -13
- package/src/components/EmojiPicker/index.ts +5 -0
- package/src/components/{HuePicker.stories.tsx → HuePicker/HuePicker.stories.tsx} +7 -1
- package/src/components/{HuePicker.tsx → HuePicker/HuePicker.tsx} +7 -4
- package/src/components/HuePicker/index.ts +5 -0
- package/src/components/{IconPicker.tsx → IconPicker/IconPicker.tsx} +9 -6
- package/src/components/IconPicker/index.ts +5 -0
- package/src/components/{ToolbarPicker.tsx → PickerButton/PickerButton.tsx} +21 -15
- package/src/components/PickerButton/index.ts +5 -0
- package/src/components/index.ts +1 -1
- package/dist/types/src/components/EmojiPicker.d.ts.map +0 -1
- package/dist/types/src/components/EmojiPicker.stories.d.ts.map +0 -1
- package/dist/types/src/components/HuePicker.d.ts.map +0 -1
- package/dist/types/src/components/HuePicker.stories.d.ts.map +0 -1
- package/dist/types/src/components/IconPicker.d.ts.map +0 -1
- package/dist/types/src/components/IconPicker.stories.d.ts.map +0 -1
- package/dist/types/src/components/ToolbarPicker.d.ts +0 -17
- package/dist/types/src/components/ToolbarPicker.d.ts.map +0 -1
- /package/dist/types/src/components/{EmojiPicker.stories.d.ts → EmojiPicker/EmojiPicker.stories.d.ts} +0 -0
- /package/dist/types/src/components/{HuePicker.stories.d.ts → HuePicker/HuePicker.stories.d.ts} +0 -0
- /package/dist/types/src/components/{IconPicker.stories.d.ts → IconPicker/IconPicker.stories.d.ts} +0 -0
- /package/src/components/{EmojiPicker.stories.tsx → EmojiPicker/EmojiPicker.stories.tsx} +0 -0
- /package/src/components/{emoji.css → EmojiPicker/emoji.css} +0 -0
- /package/src/components/{IconPicker.stories.tsx → IconPicker/IconPicker.stories.tsx} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/emoji.css"],
|
|
3
|
+
"sources": ["../../../src/components/EmojiPicker/emoji.css"],
|
|
4
4
|
"sourcesContent": ["/**\n * https://github.com/missive/emoji-mart/blob/main/packages/emoji-mart-website/example-custom-styles.html\n */\n[data-theme=\"dark\"] em-emoji-picker {\n /* TODO(burdon): Get from TW defs: modal-surface? */\n --background-rgb: #3B3B3F;\n --rgb-background: #3B3B3F;\n\n --font-family: \"Inter Variable\", ui-sans-serif;\n\n /*--font-size: 16px;*/\n /*--color-border-over: rgba(0, 0, 0, 0.1);*/\n /*--color-border: rgba(0, 0, 0, 0.05);*/\n /*--category-icon-size: 24px;*/\n /*--border-radius: 24px;*/\n /*--font-family: 'Comic Sans MS', 'Chalkboard SE', cursive;*/\n /*--rgb-accent: 255, 105, 180;*/\n /*--rgb-color: 102, 51, 153;*/\n /*--rgb-input: 255, 235, 235;*/\n /*--shadow: 5px 5px 15px -8px rebeccapurple;*/\n\n /*height: 50vh;*/\n /*min-height: 400px;*/\n /*max-height: 800px;*/\n}\n"],
|
|
5
5
|
"mappings": ";AAGA,CAAC,iBAAmB;AAElB,oBAAkB;AAClB,oBAAkB;AAElB,iBAAe,gBAAgB,EAAE;AAgBnC;",
|
|
6
6
|
"names": []
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// packages/ui/react-ui-pickers/src/components/EmojiPicker.tsx
|
|
1
|
+
// packages/ui/react-ui-pickers/src/components/EmojiPicker/EmojiPicker.tsx
|
|
2
2
|
import emojiData from "@emoji-mart/data";
|
|
3
3
|
import EmojiMart from "@emoji-mart/react";
|
|
4
4
|
import { useControllableState } from "@radix-ui/react-use-controllable-state";
|
|
5
5
|
import React, { useRef, useState } from "react";
|
|
6
|
-
import { Button, Popover, Toolbar, Tooltip, useMediaQuery, useThemeContext, useTranslation, Icon } from "@dxos/react-ui";
|
|
7
|
-
var EmojiPickerToolbarButton = ({
|
|
6
|
+
import { Button, Popover, Toolbar, Tooltip, useMediaQuery, useThemeContext, useTranslation, Icon, ButtonGroup } from "@dxos/react-ui";
|
|
7
|
+
var EmojiPickerToolbarButton = ({ classNames, emoji, disabled, defaultEmoji, onChangeEmoji }) => {
|
|
8
8
|
const { t } = useTranslation("os");
|
|
9
9
|
const { themeMode } = useThemeContext();
|
|
10
10
|
const [_emojiValue, setEmojiValue] = useControllableState({
|
|
@@ -71,7 +71,7 @@ var EmojiPickerToolbarButton = ({ disabled, defaultEmoji, emoji, onChangeEmoji,
|
|
|
71
71
|
theme: themeMode
|
|
72
72
|
}), /* @__PURE__ */ React.createElement(Popover.Arrow, null)))));
|
|
73
73
|
};
|
|
74
|
-
var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }) => {
|
|
74
|
+
var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear, triggerVariant = "ghost", classNames }) => {
|
|
75
75
|
const { t } = useTranslation("os");
|
|
76
76
|
const [isMd] = useMediaQuery("md", {
|
|
77
77
|
ssr: false
|
|
@@ -82,22 +82,22 @@ var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickC
|
|
|
82
82
|
defaultProp: defaultEmoji
|
|
83
83
|
});
|
|
84
84
|
const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
|
|
85
|
-
return /* @__PURE__ */ React.createElement(
|
|
85
|
+
return /* @__PURE__ */ React.createElement(ButtonGroup, {
|
|
86
|
+
classNames
|
|
87
|
+
}, /* @__PURE__ */ React.createElement(Popover.Root, {
|
|
86
88
|
open: emojiPickerOpen,
|
|
87
89
|
onOpenChange: setEmojiPickerOpen
|
|
88
90
|
}, /* @__PURE__ */ React.createElement(Popover.Trigger, {
|
|
89
91
|
asChild: true
|
|
90
92
|
}, /* @__PURE__ */ React.createElement(Button, {
|
|
91
|
-
variant:
|
|
92
|
-
classNames: "gap-2 text-2xl plb-1",
|
|
93
|
+
variant: triggerVariant,
|
|
94
|
+
classNames: "grow gap-2 text-2xl plb-1",
|
|
93
95
|
disabled
|
|
94
96
|
}, /* @__PURE__ */ React.createElement("span", {
|
|
95
97
|
className: "sr-only"
|
|
96
|
-
}, t("select emoji label")), /* @__PURE__ */ React.createElement("span", {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
icon: "ph--caret-down--regular",
|
|
100
|
-
size: 4
|
|
98
|
+
}, t("select emoji label")), /* @__PURE__ */ React.createElement("span", null, emojiValue), /* @__PURE__ */ React.createElement(Icon, {
|
|
99
|
+
icon: "ph--caret-down--bold",
|
|
100
|
+
size: 3
|
|
101
101
|
}))), /* @__PURE__ */ React.createElement(Popover.Content, {
|
|
102
102
|
side: "right",
|
|
103
103
|
sideOffset: isMd ? 0 : -310,
|
|
@@ -121,7 +121,7 @@ var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickC
|
|
|
121
121
|
}), /* @__PURE__ */ React.createElement(Popover.Arrow, null))), /* @__PURE__ */ React.createElement(Tooltip.Root, null, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
|
|
122
122
|
asChild: true
|
|
123
123
|
}, /* @__PURE__ */ React.createElement(Button, {
|
|
124
|
-
variant:
|
|
124
|
+
variant: triggerVariant,
|
|
125
125
|
onClick: onClickClear,
|
|
126
126
|
disabled
|
|
127
127
|
}, /* @__PURE__ */ React.createElement("span", {
|
|
@@ -134,17 +134,16 @@ var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickC
|
|
|
134
134
|
}, t("clear label"), /* @__PURE__ */ React.createElement(Tooltip.Arrow, null)))));
|
|
135
135
|
};
|
|
136
136
|
|
|
137
|
-
// packages/ui/react-ui-pickers/src/components/HuePicker.tsx
|
|
137
|
+
// packages/ui/react-ui-pickers/src/components/HuePicker/HuePicker.tsx
|
|
138
138
|
import React3 from "react";
|
|
139
139
|
import { useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
140
140
|
import { hues } from "@dxos/react-ui-theme";
|
|
141
141
|
|
|
142
|
-
// packages/ui/react-ui-pickers/src/components/
|
|
142
|
+
// packages/ui/react-ui-pickers/src/components/PickerButton/PickerButton.tsx
|
|
143
143
|
import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
|
|
144
144
|
import React2, { useEffect, useRef as useRef2, useState as useState2 } from "react";
|
|
145
|
-
import { DropdownMenu, Icon as Icon2, Toolbar as Toolbar2, Tooltip as Tooltip2 } from "@dxos/react-ui";
|
|
146
|
-
|
|
147
|
-
var ToolbarPickerButton = ({ Component, disabled, classNames, defaultValue: _defaultValue, value: _value, values, label, icon, onChange, onReset }) => {
|
|
145
|
+
import { Button as Button2, DropdownMenu, Icon as Icon2, Toolbar as Toolbar2, Tooltip as Tooltip2 } from "@dxos/react-ui";
|
|
146
|
+
var PickerButton = ({ Component, disabled, classNames, defaultValue: _defaultValue, value: _value, values, label, icon, onChange, onReset, rootVariant = "button", iconSize = 5 }) => {
|
|
148
147
|
const [value, setValue] = useControllableState2({
|
|
149
148
|
prop: _value,
|
|
150
149
|
defaultProp: _defaultValue,
|
|
@@ -156,6 +155,7 @@ var ToolbarPickerButton = ({ Component, disabled, classNames, defaultValue: _def
|
|
|
156
155
|
const [open, setOpen] = useState2(false);
|
|
157
156
|
const suppressNextTooltip = useRef2(false);
|
|
158
157
|
const [triggerTooltipOpen, setTriggerTooltipOpen] = useState2(false);
|
|
158
|
+
const TriggerRoot = rootVariant === "toolbar-button" ? Toolbar2.Button : Button2;
|
|
159
159
|
return /* @__PURE__ */ React2.createElement(Tooltip2.Root, {
|
|
160
160
|
open: triggerTooltipOpen,
|
|
161
161
|
onOpenChange: (nextOpen) => {
|
|
@@ -177,45 +177,53 @@ var ToolbarPickerButton = ({ Component, disabled, classNames, defaultValue: _def
|
|
|
177
177
|
asChild: true
|
|
178
178
|
}, /* @__PURE__ */ React2.createElement(DropdownMenu.Trigger, {
|
|
179
179
|
asChild: true
|
|
180
|
-
}, /* @__PURE__ */ React2.createElement(
|
|
181
|
-
classNames:
|
|
180
|
+
}, /* @__PURE__ */ React2.createElement(TriggerRoot, {
|
|
181
|
+
classNames: [
|
|
182
|
+
"gap-2 plb-1",
|
|
183
|
+
classNames
|
|
184
|
+
],
|
|
182
185
|
disabled
|
|
183
186
|
}, /* @__PURE__ */ React2.createElement("span", {
|
|
184
187
|
className: "sr-only"
|
|
185
188
|
}, label), value && /* @__PURE__ */ React2.createElement(Component, {
|
|
186
|
-
value
|
|
189
|
+
value,
|
|
190
|
+
iconSize
|
|
187
191
|
}) || /* @__PURE__ */ React2.createElement(Icon2, {
|
|
188
192
|
icon,
|
|
189
|
-
size:
|
|
193
|
+
size: iconSize
|
|
194
|
+
}), /* @__PURE__ */ React2.createElement(Icon2, {
|
|
195
|
+
icon: "ph--caret-down--bold",
|
|
196
|
+
size: 3
|
|
190
197
|
})))), /* @__PURE__ */ React2.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip2.Content, {
|
|
191
198
|
side: "bottom"
|
|
192
199
|
}, label, /* @__PURE__ */ React2.createElement(Tooltip2.Arrow, null))), /* @__PURE__ */ React2.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Content, {
|
|
193
200
|
side: "bottom",
|
|
194
201
|
classNames: "!is-min"
|
|
195
202
|
}, /* @__PURE__ */ React2.createElement(DropdownMenu.Viewport, {
|
|
196
|
-
classNames: "grid grid-cols-[repeat(6,
|
|
203
|
+
classNames: "grid grid-cols-[repeat(6,min-content)]"
|
|
197
204
|
}, values.map((_value2) => {
|
|
198
205
|
return /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
|
|
199
206
|
key: _value2,
|
|
200
207
|
checked: _value2 === value,
|
|
201
208
|
onCheckedChange: () => setValue(_value2),
|
|
202
|
-
classNames: "p-
|
|
209
|
+
classNames: "p-1 items-center justify-center aspect-square"
|
|
203
210
|
}, /* @__PURE__ */ React2.createElement(Component, {
|
|
204
|
-
value: _value2
|
|
211
|
+
value: _value2,
|
|
212
|
+
iconSize
|
|
205
213
|
}));
|
|
206
214
|
}), onReset && /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
|
|
207
215
|
onCheckedChange: () => onReset(),
|
|
208
|
-
classNames: "p-
|
|
216
|
+
classNames: "p-1 items-center justify-center aspect-square"
|
|
209
217
|
}, /* @__PURE__ */ React2.createElement(Icon2, {
|
|
210
218
|
icon: "ph--x--regular",
|
|
211
|
-
size:
|
|
219
|
+
size: iconSize
|
|
212
220
|
}))), /* @__PURE__ */ React2.createElement(DropdownMenu.Arrow, null)))));
|
|
213
221
|
};
|
|
214
222
|
|
|
215
|
-
// packages/ui/react-ui-pickers/src/components/HuePicker.tsx
|
|
223
|
+
// packages/ui/react-ui-pickers/src/components/HuePicker/HuePicker.tsx
|
|
216
224
|
var HuePicker = (props) => {
|
|
217
225
|
const { t } = useTranslation2("os");
|
|
218
|
-
return /* @__PURE__ */ React3.createElement(
|
|
226
|
+
return /* @__PURE__ */ React3.createElement(PickerButton, {
|
|
219
227
|
Component: HuePreview,
|
|
220
228
|
label: t("select hue label"),
|
|
221
229
|
icon: "ph--palette--regular",
|
|
@@ -228,9 +236,8 @@ var HuePreview = ({ value }) => {
|
|
|
228
236
|
return /* @__PURE__ */ React3.createElement("div", {
|
|
229
237
|
className: "flex p-[2px] justify-center items-center"
|
|
230
238
|
}, /* @__PURE__ */ React3.createElement("svg", {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
viewBox: `0 0 ${size} ${size}`
|
|
239
|
+
viewBox: `0 0 ${size} ${size}`,
|
|
240
|
+
className: "is-[var(--hue-preview-size,1rem)] bs-[var(--hue-preview-size,1rem)]"
|
|
234
241
|
}, /* @__PURE__ */ React3.createElement("rect", {
|
|
235
242
|
x: 0,
|
|
236
243
|
y: 0,
|
|
@@ -241,12 +248,12 @@ var HuePreview = ({ value }) => {
|
|
|
241
248
|
})));
|
|
242
249
|
};
|
|
243
250
|
|
|
244
|
-
// packages/ui/react-ui-pickers/src/components/IconPicker.tsx
|
|
251
|
+
// packages/ui/react-ui-pickers/src/components/IconPicker/IconPicker.tsx
|
|
245
252
|
import React4 from "react";
|
|
246
253
|
import { Icon as Icon3, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
247
254
|
var IconPicker = ({ ...props }) => {
|
|
248
255
|
const { t } = useTranslation3("os");
|
|
249
|
-
return /* @__PURE__ */ React4.createElement(
|
|
256
|
+
return /* @__PURE__ */ React4.createElement(PickerButton, {
|
|
250
257
|
Component: IconPreview,
|
|
251
258
|
label: t("select icon label"),
|
|
252
259
|
icon: "ph--selection--regular",
|
|
@@ -254,10 +261,10 @@ var IconPicker = ({ ...props }) => {
|
|
|
254
261
|
...props
|
|
255
262
|
});
|
|
256
263
|
};
|
|
257
|
-
var IconPreview = ({ value }) => {
|
|
264
|
+
var IconPreview = ({ value, iconSize = 5 }) => {
|
|
258
265
|
return /* @__PURE__ */ React4.createElement(Icon3, {
|
|
259
266
|
icon: `ph--${value}--regular`,
|
|
260
|
-
size:
|
|
267
|
+
size: iconSize
|
|
261
268
|
});
|
|
262
269
|
};
|
|
263
270
|
var icons = [
|
|
@@ -316,6 +323,6 @@ export {
|
|
|
316
323
|
EmojiPickerToolbarButton,
|
|
317
324
|
HuePicker,
|
|
318
325
|
IconPicker,
|
|
319
|
-
|
|
326
|
+
PickerButton
|
|
320
327
|
};
|
|
321
328
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/EmojiPicker.tsx", "../../../src/components/HuePicker.tsx", "../../../src/components/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport emojiData from '@emoji-mart/data';\nimport EmojiMart from '@emoji-mart/react';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, { useRef, useState } from 'react';\n\nimport {\n Button,\n type ButtonProps,\n Popover,\n type ThemedClassName,\n Toolbar,\n Tooltip,\n useMediaQuery,\n useThemeContext,\n useTranslation,\n Icon,\n} from '@dxos/react-ui';\n\nimport './emoji.css';\n\nexport type EmojiPickerProps = {\n disabled?: boolean;\n defaultEmoji?: string;\n emoji?: string;\n onChangeEmoji?: (nextEmoji: string) => void;\n onClickClear?: ButtonProps['onClick'];\n};\n\n/**\n * A toolbar button for picking an emoji. Use only in `role=toolbar` elements. Unable to unset the value.\n */\nexport const EmojiPickerToolbarButton = ({\n disabled,\n defaultEmoji,\n emoji,\n onChangeEmoji,\n classNames,\n}: ThemedClassName<Omit<EmojiPickerProps, 'onClickClear'>>) => {\n const { t } = useTranslation('os');\n const { themeMode } = useThemeContext();\n\n const [_emojiValue, setEmojiValue] = useControllableState<string>({\n prop: emoji,\n onChange: onChangeEmoji,\n defaultProp: defaultEmoji,\n });\n\n const [emojiPickerOpen, setEmojiPickerOpen] = useState<boolean>(false);\n const suppressNextTooltip = useRef<boolean>(false);\n const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);\n\n return (\n <Tooltip.Root\n open={triggerTooltipOpen}\n onOpenChange={(nextOpen) => {\n if (suppressNextTooltip.current) {\n setTriggerTooltipOpen(false);\n suppressNextTooltip.current = false;\n } else {\n setTriggerTooltipOpen(nextOpen);\n }\n }}\n >\n <Popover.Root\n open={emojiPickerOpen}\n onOpenChange={(nextOpen) => {\n setEmojiPickerOpen(nextOpen);\n suppressNextTooltip.current = true;\n }}\n >\n <Tooltip.Trigger asChild>\n <Popover.Trigger asChild>\n <Toolbar.Button classNames={['gap-2 text-2xl plb-1', classNames]} disabled={disabled}>\n <span className='sr-only'>{t('select emoji label')}</span>\n <Icon icon='ph--user-circle--regular' size={5} />\n </Toolbar.Button>\n </Popover.Trigger>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>\n {t('select emoji label')}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n <Popover.Portal>\n <Popover.Content\n side='bottom'\n onKeyDownCapture={(event) => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n setEmojiPickerOpen(false);\n suppressNextTooltip.current = true;\n }\n }}\n >\n {/* https://github.com/missive/emoji-mart?tab=readme-ov-file#options--props */}\n <EmojiMart\n data={emojiData}\n onEmojiSelect={({ native }: { native?: string }) => {\n if (native) {\n setEmojiValue(native);\n setEmojiPickerOpen(false);\n }\n }}\n autoFocus={true}\n maxFrequentRows={0}\n noCountryFlags={true}\n theme={themeMode}\n />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </Tooltip.Root>\n );\n};\n\n/**\n * A button for picking an emoji alongside a button for unsetting it.\n * @deprecated\n */\nexport const EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }: EmojiPickerProps) => {\n const { t } = useTranslation('os');\n const [isMd] = useMediaQuery('md', { ssr: false });\n\n const [emojiValue, setEmojiValue] = useControllableState<string>({\n prop: emoji,\n onChange: onChangeEmoji,\n defaultProp: defaultEmoji,\n });\n\n const [emojiPickerOpen, setEmojiPickerOpen] = useState<boolean>(false);\n\n return (\n <>\n <Popover.Root open={emojiPickerOpen} onOpenChange={setEmojiPickerOpen}>\n <Popover.Trigger asChild>\n <Button variant='ghost' classNames='gap-2 text-2xl plb-1' disabled={disabled}>\n <span className='sr-only'>{t('select emoji label')}</span>\n <span className='grow pis-14'>{emojiValue}</span>\n <Icon icon='ph--caret-down--regular' size={4} />\n </Button>\n </Popover.Trigger>\n <Popover.Content\n side='right'\n sideOffset={isMd ? 0 : -310}\n onKeyDownCapture={(event) => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n setEmojiPickerOpen(false);\n }\n }}\n >\n <EmojiMart\n data={emojiData}\n onEmojiSelect={({ native }: { native?: string }) => {\n if (native) {\n setEmojiValue(native);\n setEmojiPickerOpen(false);\n }\n }}\n autoFocus={true}\n maxFrequentRows={0}\n noCountryFlags={true}\n />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Root>\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button variant='ghost' onClick={onClickClear} disabled={disabled}>\n <span className='sr-only'>{t('clear label')}</span>\n <Icon icon='ph--arrow-counter-clockwise--regular' size={5} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='right'>\n {t('clear label')}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type ButtonProps, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { hues } from '@dxos/react-ui-theme';\n\nimport { ToolbarPickerButton, type ToolbarPickerProps } from './ToolbarPicker';\n\nexport type HuePickerProps = {\n disabled?: boolean;\n defaultValue?: string;\n value?: string;\n onChange?: (nextHue: string) => void;\n onReset?: ButtonProps['onClick'];\n} & Pick<ToolbarPickerProps, 'disabled' | 'defaultValue' | 'value' | 'onChange' | 'onReset'>;\n\nexport const HuePicker = (props: ThemedClassName<HuePickerProps>) => {\n const { t } = useTranslation('os');\n\n return (\n <ToolbarPickerButton\n Component={HuePreview}\n label={t('select hue label')}\n icon='ph--palette--regular'\n values={hues}\n {...props}\n />\n );\n};\n\nconst HuePreview = ({ value }: { value: string }) => {\n const size = 16;\n return (\n <div className='flex p-[2px] justify-center items-center'>\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n <rect x={0} y={0} width={size} height={size} fill={`var(--dx-${value}Fill)`} strokeWidth={4} />\n </svg>\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, { type FC, useEffect, useRef, useState } from 'react';\n\nimport { DropdownMenu, Icon, type ThemedClassName, Toolbar, Tooltip } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type ToolbarPickerProps = {\n Component: FC<{ value: string }>;\n label: string;\n icon: string;\n values: string[];\n disabled?: boolean;\n defaultValue?: string;\n value?: string;\n onChange?: (value: string) => void;\n onReset?: () => void;\n};\n\nexport const ToolbarPickerButton = ({\n Component,\n disabled,\n classNames,\n defaultValue: _defaultValue,\n value: _value,\n values,\n label,\n icon,\n onChange,\n onReset,\n}: ThemedClassName<ToolbarPickerProps>) => {\n const [value, setValue] = useControllableState<string>({\n prop: _value,\n defaultProp: _defaultValue,\n onChange,\n });\n // TODO(burdon): useControllableState doesn't update the prop when the value is changed. Replace it.\n useEffect(() => setValue(_value), [_value]);\n\n const [open, setOpen] = useState<boolean>(false);\n\n const suppressNextTooltip = useRef<boolean>(false);\n const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);\n\n return (\n <Tooltip.Root\n open={triggerTooltipOpen}\n onOpenChange={(nextOpen) => {\n if (suppressNextTooltip.current) {\n setTriggerTooltipOpen(false);\n suppressNextTooltip.current = false;\n } else {\n setTriggerTooltipOpen(nextOpen);\n }\n }}\n >\n <DropdownMenu.Root\n modal={false}\n open={open}\n onOpenChange={(nextOpen) => {\n setOpen(nextOpen);\n suppressNextTooltip.current = true;\n }}\n >\n <Tooltip.Trigger asChild>\n <DropdownMenu.Trigger asChild>\n <Toolbar.Button classNames={mx('gap-2 plb-1', classNames)} disabled={disabled}>\n <span className='sr-only'>{label}</span>\n {(value && <Component value={value} />) || <Icon icon={icon} size={5} />}\n </Toolbar.Button>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>\n {label}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n <DropdownMenu.Portal>\n <DropdownMenu.Content side='bottom' classNames='!is-min'>\n <DropdownMenu.Viewport classNames='grid grid-cols-[repeat(6,2rem)]'>\n {values.map((_value) => {\n return (\n <DropdownMenu.CheckboxItem\n key={_value}\n checked={_value === value}\n onCheckedChange={() => setValue(_value)}\n classNames={'p-px items-center justify-center aspect-square'}\n >\n <Component value={_value} />\n </DropdownMenu.CheckboxItem>\n );\n })}\n {onReset && (\n <DropdownMenu.CheckboxItem\n onCheckedChange={() => onReset()}\n classNames={'p-px items-center justify-center aspect-square'}\n >\n <Icon icon='ph--x--regular' size={6} />\n </DropdownMenu.CheckboxItem>\n )}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </Tooltip.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type ButtonProps, Icon, type ThemedClassName, useTranslation } from '@dxos/react-ui';\n\nimport { ToolbarPickerButton, type ToolbarPickerProps } from './ToolbarPicker';\n\nexport type IconPickerProps = {\n disabled?: boolean;\n defaultValue?: string;\n value?: string;\n onChange?: (nextHue: string) => void;\n onReset?: ButtonProps['onClick'];\n} & Pick<ToolbarPickerProps, 'disabled' | 'defaultValue' | 'value' | 'onChange' | 'onReset'>;\n\nexport const IconPicker = ({ ...props }: ThemedClassName<IconPickerProps>) => {\n const { t } = useTranslation('os');\n\n return (\n <ToolbarPickerButton\n Component={IconPreview}\n label={t('select icon label')}\n icon='ph--selection--regular'\n values={iconValues}\n {...props}\n />\n );\n};\n\nconst IconPreview = ({ value }: { value: string }) => {\n return <Icon icon={`ph--${value}--regular`} size={5} />;\n};\n\n/**\n * https://phosphoricons.com\n * NOTE: Select icons that we are unlikely to use for the UI.\n */\nconst icons = [\n 'ph--air-traffic-control--regular',\n 'ph--asterisk--regular',\n 'ph--atom--regular',\n 'ph--basketball--regular',\n 'ph--butterfly--regular',\n 'ph--cactus--regular',\n 'ph--cake--regular',\n 'ph--calendar-dots--regular',\n 'ph--campfire--regular',\n 'ph--command--regular',\n 'ph--confetti--regular',\n 'ph--detective--regular',\n 'ph--disco-ball--regular',\n 'ph--dna--regular',\n 'ph--factory--regular',\n 'ph--flag-banner-fold--regular',\n 'ph--flask--regular',\n 'ph--flower-lotus--regular',\n 'ph--flying-saucer--regular',\n 'ph--game-controller--regular',\n 'ph--gavel--regular',\n 'ph--gift--regular',\n 'ph--guitar--regular',\n 'ph--hamburger--regular',\n 'ph--handshake--regular',\n 'ph--heart--regular',\n 'ph--lightbulb--regular',\n 'ph--lock--regular',\n 'ph--martini--regular',\n 'ph--medal-military--regular',\n 'ph--moped-front--regular',\n 'ph--office-chair--regular',\n 'ph--paint-brush-household--regular',\n 'ph--peace--regular',\n 'ph--person-simple-hike--regular',\n 'ph--piggy-bank--regular',\n 'ph--potted-plant--regular',\n 'ph--radioactive--regular',\n 'ph--rocket-launch--regular',\n 'ph--shield-star--regular',\n 'ph--shopping-cart--regular',\n 'ph--stethoscope--regular',\n 'ph--student--regular',\n 'ph--sun--regular',\n 'ph--tote--regular',\n 'ph--tree--regular',\n 'ph--users-three--regular',\n 'ph--yin-yang--regular',\n];\n\nconst iconValues = icons.map((icon) => icon.match(/ph--(.+)--regular/)?.[1] ?? icon);\n"],
|
|
5
|
-
"mappings": ";AAIA,OAAOA,eAAe;AACtB,OAAOC,eAAe;AACtB,SAASC,4BAA4B;AACrC,OAAOC,SAASC,QAAQC,gBAAgB;AAExC,SACEC,QAEAC,SAEAC,SACAC,SACAC,eACAC,iBACAC,gBACAC,
|
|
6
|
-
"names": ["emojiData", "EmojiMart", "useControllableState", "React", "useRef", "useState", "Button", "Popover", "Toolbar", "Tooltip", "useMediaQuery", "useThemeContext", "useTranslation", "Icon", "
|
|
3
|
+
"sources": ["../../../src/components/EmojiPicker/EmojiPicker.tsx", "../../../src/components/HuePicker/HuePicker.tsx", "../../../src/components/PickerButton/PickerButton.tsx", "../../../src/components/IconPicker/IconPicker.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport emojiData from '@emoji-mart/data';\nimport EmojiMart from '@emoji-mart/react';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, { useRef, useState } from 'react';\n\nimport {\n Button,\n type ButtonProps,\n Popover,\n type ThemedClassName,\n Toolbar,\n Tooltip,\n useMediaQuery,\n useThemeContext,\n useTranslation,\n Icon,\n ButtonGroup,\n} from '@dxos/react-ui';\n\nimport './emoji.css';\n\nexport type EmojiPickerProps = ThemedClassName<{\n disabled?: boolean;\n defaultEmoji?: string;\n emoji?: string;\n onChangeEmoji?: (nextEmoji: string) => void;\n onClickClear?: ButtonProps['onClick'];\n triggerVariant?: ButtonProps['variant'];\n}>;\n\n/**\n * A toolbar button for picking an emoji. Use only in `role=toolbar` elements. Unable to unset the value.\n */\nexport const EmojiPickerToolbarButton = ({\n classNames,\n emoji,\n disabled,\n defaultEmoji,\n onChangeEmoji,\n}: Omit<EmojiPickerProps, 'onClickClear'>) => {\n const { t } = useTranslation('os');\n const { themeMode } = useThemeContext();\n\n const [_emojiValue, setEmojiValue] = useControllableState<string>({\n prop: emoji,\n onChange: onChangeEmoji,\n defaultProp: defaultEmoji,\n });\n\n const [emojiPickerOpen, setEmojiPickerOpen] = useState<boolean>(false);\n const suppressNextTooltip = useRef<boolean>(false);\n const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);\n\n return (\n <Tooltip.Root\n open={triggerTooltipOpen}\n onOpenChange={(nextOpen) => {\n if (suppressNextTooltip.current) {\n setTriggerTooltipOpen(false);\n suppressNextTooltip.current = false;\n } else {\n setTriggerTooltipOpen(nextOpen);\n }\n }}\n >\n <Popover.Root\n open={emojiPickerOpen}\n onOpenChange={(nextOpen) => {\n setEmojiPickerOpen(nextOpen);\n suppressNextTooltip.current = true;\n }}\n >\n <Tooltip.Trigger asChild>\n <Popover.Trigger asChild>\n <Toolbar.Button classNames={['gap-2 text-2xl plb-1', classNames]} disabled={disabled}>\n <span className='sr-only'>{t('select emoji label')}</span>\n <Icon icon='ph--user-circle--regular' size={5} />\n </Toolbar.Button>\n </Popover.Trigger>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>\n {t('select emoji label')}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n <Popover.Portal>\n <Popover.Content\n side='bottom'\n onKeyDownCapture={(event) => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n setEmojiPickerOpen(false);\n suppressNextTooltip.current = true;\n }\n }}\n >\n {/* https://github.com/missive/emoji-mart?tab=readme-ov-file#options--props */}\n <EmojiMart\n data={emojiData}\n onEmojiSelect={({ native }: { native?: string }) => {\n if (native) {\n setEmojiValue(native);\n setEmojiPickerOpen(false);\n }\n }}\n autoFocus={true}\n maxFrequentRows={0}\n noCountryFlags={true}\n theme={themeMode}\n />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </Tooltip.Root>\n );\n};\n\n/**\n * A button for picking an emoji alongside a button for unsetting it.\n */\nexport const EmojiPickerBlock = ({\n disabled,\n defaultEmoji,\n emoji,\n onChangeEmoji,\n onClickClear,\n triggerVariant = 'ghost',\n classNames,\n}: EmojiPickerProps) => {\n const { t } = useTranslation('os');\n const [isMd] = useMediaQuery('md', { ssr: false });\n\n const [emojiValue, setEmojiValue] = useControllableState<string>({\n prop: emoji,\n onChange: onChangeEmoji,\n defaultProp: defaultEmoji,\n });\n\n const [emojiPickerOpen, setEmojiPickerOpen] = useState<boolean>(false);\n\n return (\n <ButtonGroup classNames={classNames}>\n <Popover.Root open={emojiPickerOpen} onOpenChange={setEmojiPickerOpen}>\n <Popover.Trigger asChild>\n <Button variant={triggerVariant} classNames='grow gap-2 text-2xl plb-1' disabled={disabled}>\n <span className='sr-only'>{t('select emoji label')}</span>\n <span>{emojiValue}</span>\n <Icon icon='ph--caret-down--bold' size={3} />\n </Button>\n </Popover.Trigger>\n <Popover.Content\n side='right'\n sideOffset={isMd ? 0 : -310}\n onKeyDownCapture={(event) => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n setEmojiPickerOpen(false);\n }\n }}\n >\n <EmojiMart\n data={emojiData}\n onEmojiSelect={({ native }: { native?: string }) => {\n if (native) {\n setEmojiValue(native);\n setEmojiPickerOpen(false);\n }\n }}\n autoFocus={true}\n maxFrequentRows={0}\n noCountryFlags={true}\n />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Root>\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button variant={triggerVariant} onClick={onClickClear} disabled={disabled}>\n <span className='sr-only'>{t('clear label')}</span>\n <Icon icon='ph--arrow-counter-clockwise--regular' size={5} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='right'>\n {t('clear label')}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n </ButtonGroup>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type ButtonProps, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { hues } from '@dxos/react-ui-theme';\n\nimport { PickerButton, type PickerButtonProps } from '../PickerButton';\n\nexport type HuePickerProps = {\n disabled?: boolean;\n defaultValue?: string;\n value?: string;\n onChange?: (nextHue: string) => void;\n onReset?: ButtonProps['onClick'];\n} & Pick<PickerButtonProps, 'disabled' | 'defaultValue' | 'value' | 'onChange' | 'onReset' | 'rootVariant'>;\n\nexport const HuePicker = (props: ThemedClassName<HuePickerProps>) => {\n const { t } = useTranslation('os');\n\n return (\n <PickerButton\n Component={HuePreview}\n label={t('select hue label')}\n icon='ph--palette--regular'\n values={hues}\n {...props}\n />\n );\n};\n\nconst HuePreview = ({ value }: { value: string }) => {\n const size = 16;\n return (\n <div className='flex p-[2px] justify-center items-center'>\n <svg\n viewBox={`0 0 ${size} ${size}`}\n className='is-[var(--hue-preview-size,1rem)] bs-[var(--hue-preview-size,1rem)]'\n >\n <rect x={0} y={0} width={size} height={size} fill={`var(--dx-${value}Fill)`} strokeWidth={4} />\n </svg>\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, { type FC, useEffect, useRef, useState } from 'react';\n\nimport { Button, DropdownMenu, Icon, type IconProps, type ThemedClassName, Toolbar, Tooltip } from '@dxos/react-ui';\n\nexport type PickerButtonProps = ThemedClassName<{\n Component: FC<{ value: string; iconSize?: IconProps['size'] }>;\n label: string;\n icon: string;\n values: string[];\n disabled?: boolean;\n defaultValue?: string;\n value?: string;\n onChange?: (value: string) => void;\n onReset?: () => void;\n rootVariant?: 'button' | 'toolbar-button';\n iconSize?: IconProps['size'];\n}>;\n\nexport const PickerButton = ({\n Component,\n disabled,\n classNames,\n defaultValue: _defaultValue,\n value: _value,\n values,\n label,\n icon,\n onChange,\n onReset,\n rootVariant = 'button',\n iconSize = 5,\n}: PickerButtonProps) => {\n const [value, setValue] = useControllableState<string>({\n prop: _value,\n defaultProp: _defaultValue,\n onChange,\n });\n // TODO(burdon): useControllableState doesn't update the prop when the value is changed. Replace it.\n useEffect(() => setValue(_value), [_value]);\n\n const [open, setOpen] = useState<boolean>(false);\n\n const suppressNextTooltip = useRef<boolean>(false);\n const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);\n\n const TriggerRoot = rootVariant === 'toolbar-button' ? Toolbar.Button : Button;\n\n return (\n <Tooltip.Root\n open={triggerTooltipOpen}\n onOpenChange={(nextOpen) => {\n if (suppressNextTooltip.current) {\n setTriggerTooltipOpen(false);\n suppressNextTooltip.current = false;\n } else {\n setTriggerTooltipOpen(nextOpen);\n }\n }}\n >\n <DropdownMenu.Root\n modal={false}\n open={open}\n onOpenChange={(nextOpen) => {\n setOpen(nextOpen);\n suppressNextTooltip.current = true;\n }}\n >\n <Tooltip.Trigger asChild>\n <DropdownMenu.Trigger asChild>\n <TriggerRoot classNames={['gap-2 plb-1', classNames]} disabled={disabled}>\n <span className='sr-only'>{label}</span>\n {(value && <Component value={value} iconSize={iconSize} />) || <Icon icon={icon} size={iconSize} />}\n <Icon icon='ph--caret-down--bold' size={3} />\n </TriggerRoot>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>\n {label}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n <DropdownMenu.Portal>\n <DropdownMenu.Content side='bottom' classNames='!is-min'>\n <DropdownMenu.Viewport classNames='grid grid-cols-[repeat(6,min-content)]'>\n {values.map((_value) => {\n return (\n <DropdownMenu.CheckboxItem\n key={_value}\n checked={_value === value}\n onCheckedChange={() => setValue(_value)}\n classNames={'p-1 items-center justify-center aspect-square'}\n >\n <Component value={_value} iconSize={iconSize} />\n </DropdownMenu.CheckboxItem>\n );\n })}\n {onReset && (\n <DropdownMenu.CheckboxItem\n onCheckedChange={() => onReset()}\n classNames={'p-1 items-center justify-center aspect-square'}\n >\n <Icon icon='ph--x--regular' size={iconSize} />\n </DropdownMenu.CheckboxItem>\n )}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </Tooltip.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type ButtonProps, Icon, type IconProps, type ThemedClassName, useTranslation } from '@dxos/react-ui';\n\nimport { PickerButton, type PickerButtonProps } from '../PickerButton';\n\nexport type IconPickerProps = {\n disabled?: boolean;\n defaultValue?: string;\n value?: string;\n onChange?: (nextHue: string) => void;\n onReset?: ButtonProps['onClick'];\n} & Pick<\n PickerButtonProps,\n 'disabled' | 'defaultValue' | 'value' | 'onChange' | 'onReset' | 'rootVariant' | 'iconSize'\n>;\n\nexport const IconPicker = ({ ...props }: ThemedClassName<IconPickerProps>) => {\n const { t } = useTranslation('os');\n\n return (\n <PickerButton\n Component={IconPreview}\n label={t('select icon label')}\n icon='ph--selection--regular'\n values={iconValues}\n {...props}\n />\n );\n};\n\nconst IconPreview = ({ value, iconSize = 5 }: { value: string; iconSize?: IconProps['size'] }) => {\n return <Icon icon={`ph--${value}--regular`} size={iconSize} />;\n};\n\n/**\n * https://phosphoricons.com\n * NOTE: Select icons that we are unlikely to use for the UI.\n */\nconst icons = [\n 'ph--air-traffic-control--regular',\n 'ph--asterisk--regular',\n 'ph--atom--regular',\n 'ph--basketball--regular',\n 'ph--butterfly--regular',\n 'ph--cactus--regular',\n 'ph--cake--regular',\n 'ph--calendar-dots--regular',\n 'ph--campfire--regular',\n 'ph--command--regular',\n 'ph--confetti--regular',\n 'ph--detective--regular',\n 'ph--disco-ball--regular',\n 'ph--dna--regular',\n 'ph--factory--regular',\n 'ph--flag-banner-fold--regular',\n 'ph--flask--regular',\n 'ph--flower-lotus--regular',\n 'ph--flying-saucer--regular',\n 'ph--game-controller--regular',\n 'ph--gavel--regular',\n 'ph--gift--regular',\n 'ph--guitar--regular',\n 'ph--hamburger--regular',\n 'ph--handshake--regular',\n 'ph--heart--regular',\n 'ph--lightbulb--regular',\n 'ph--lock--regular',\n 'ph--martini--regular',\n 'ph--medal-military--regular',\n 'ph--moped-front--regular',\n 'ph--office-chair--regular',\n 'ph--paint-brush-household--regular',\n 'ph--peace--regular',\n 'ph--person-simple-hike--regular',\n 'ph--piggy-bank--regular',\n 'ph--potted-plant--regular',\n 'ph--radioactive--regular',\n 'ph--rocket-launch--regular',\n 'ph--shield-star--regular',\n 'ph--shopping-cart--regular',\n 'ph--stethoscope--regular',\n 'ph--student--regular',\n 'ph--sun--regular',\n 'ph--tote--regular',\n 'ph--tree--regular',\n 'ph--users-three--regular',\n 'ph--yin-yang--regular',\n];\n\nconst iconValues = icons.map((icon) => icon.match(/ph--(.+)--regular/)?.[1] ?? icon);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["emojiData", "EmojiMart", "useControllableState", "React", "useRef", "useState", "Button", "Popover", "Toolbar", "Tooltip", "useMediaQuery", "useThemeContext", "useTranslation", "Icon", "ButtonGroup", "EmojiPickerToolbarButton", "classNames", "emoji", "disabled", "defaultEmoji", "onChangeEmoji", "t", "useTranslation", "themeMode", "useThemeContext", "_emojiValue", "setEmojiValue", "useControllableState", "prop", "onChange", "defaultProp", "emojiPickerOpen", "setEmojiPickerOpen", "useState", "suppressNextTooltip", "useRef", "triggerTooltipOpen", "setTriggerTooltipOpen", "Tooltip", "Root", "open", "onOpenChange", "nextOpen", "current", "Popover", "Trigger", "asChild", "Toolbar", "Button", "span", "className", "Icon", "icon", "size", "Portal", "Content", "side", "Arrow", "onKeyDownCapture", "event", "key", "stopPropagation", "EmojiMart", "data", "emojiData", "onEmojiSelect", "native", "autoFocus", "maxFrequentRows", "noCountryFlags", "theme", "EmojiPickerBlock", "onClickClear", "triggerVariant", "isMd", "useMediaQuery", "ssr", "emojiValue", "ButtonGroup", "variant", "sideOffset", "onClick", "React", "useTranslation", "hues", "useControllableState", "React", "useEffect", "useRef", "useState", "Button", "DropdownMenu", "Icon", "Toolbar", "Tooltip", "PickerButton", "Component", "disabled", "classNames", "defaultValue", "_defaultValue", "value", "_value", "values", "label", "icon", "onChange", "onReset", "rootVariant", "iconSize", "setValue", "useControllableState", "prop", "defaultProp", "useEffect", "open", "setOpen", "useState", "suppressNextTooltip", "useRef", "triggerTooltipOpen", "setTriggerTooltipOpen", "TriggerRoot", "Toolbar", "Button", "React", "Tooltip", "Root", "onOpenChange", "nextOpen", "current", "DropdownMenu", "modal", "Trigger", "asChild", "span", "className", "Icon", "size", "Portal", "Content", "side", "Arrow", "Viewport", "map", "CheckboxItem", "key", "checked", "onCheckedChange", "HuePicker", "props", "t", "useTranslation", "React", "PickerButton", "Component", "HuePreview", "label", "icon", "values", "hues", "value", "size", "div", "className", "svg", "viewBox", "rect", "x", "y", "width", "height", "fill", "strokeWidth", "React", "Icon", "useTranslation", "IconPicker", "props", "t", "useTranslation", "React", "PickerButton", "Component", "IconPreview", "label", "icon", "values", "iconValues", "value", "iconSize", "Icon", "size", "icons", "map", "match"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/ui/react-ui-pickers/src/components/emoji.css":{"bytes":783,"imports":[]},"packages/ui/react-ui-pickers/src/components/EmojiPicker.tsx":{"bytes":
|
|
1
|
+
{"inputs":{"packages/ui/react-ui-pickers/src/components/EmojiPicker/emoji.css":{"bytes":783,"imports":[]},"packages/ui/react-ui-pickers/src/components/EmojiPicker/EmojiPicker.tsx":{"bytes":19562,"imports":[{"path":"@emoji-mart/data","kind":"import-statement","external":true},{"path":"@emoji-mart/react","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-pickers/src/components/EmojiPicker/emoji.css","kind":"import-statement","original":"./emoji.css"}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/EmojiPicker/index.ts":{"bytes":534,"imports":[{"path":"packages/ui/react-ui-pickers/src/components/EmojiPicker/EmojiPicker.tsx","kind":"import-statement","original":"./EmojiPicker"}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/PickerButton/PickerButton.tsx":{"bytes":12553,"imports":[{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/PickerButton/index.ts":{"bytes":536,"imports":[{"path":"packages/ui/react-ui-pickers/src/components/PickerButton/PickerButton.tsx","kind":"import-statement","original":"./PickerButton"}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/HuePicker/HuePicker.tsx":{"bytes":4241,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-pickers/src/components/PickerButton/index.ts","kind":"import-statement","original":"../PickerButton"}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/HuePicker/index.ts":{"bytes":522,"imports":[{"path":"packages/ui/react-ui-pickers/src/components/HuePicker/HuePicker.tsx","kind":"import-statement","original":"./HuePicker"}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/IconPicker/IconPicker.tsx":{"bytes":7605,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-pickers/src/components/PickerButton/index.ts","kind":"import-statement","original":"../PickerButton"}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/IconPicker/index.ts":{"bytes":528,"imports":[{"path":"packages/ui/react-ui-pickers/src/components/IconPicker/IconPicker.tsx","kind":"import-statement","original":"./IconPicker"}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/index.ts":{"bytes":809,"imports":[{"path":"packages/ui/react-ui-pickers/src/components/EmojiPicker/index.ts","kind":"import-statement","original":"./EmojiPicker"},{"path":"packages/ui/react-ui-pickers/src/components/HuePicker/index.ts","kind":"import-statement","original":"./HuePicker"},{"path":"packages/ui/react-ui-pickers/src/components/IconPicker/index.ts","kind":"import-statement","original":"./IconPicker"},{"path":"packages/ui/react-ui-pickers/src/components/PickerButton/index.ts","kind":"import-statement","original":"./PickerButton"}],"format":"esm"},"packages/ui/react-ui-pickers/src/index.ts":{"bytes":506,"imports":[{"path":"packages/ui/react-ui-pickers/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-pickers/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":22984},"packages/ui/react-ui-pickers/dist/lib/browser/index.mjs":{"imports":[{"path":"@emoji-mart/data","kind":"import-statement","external":true},{"path":"@emoji-mart/react","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["EmojiPickerBlock","EmojiPickerToolbarButton","HuePicker","IconPicker","PickerButton"],"entryPoint":"packages/ui/react-ui-pickers/src/index.ts","cssBundle":"packages/ui/react-ui-pickers/dist/lib/browser/index.css","inputs":{"packages/ui/react-ui-pickers/src/components/EmojiPicker/EmojiPicker.tsx":{"bytesInOutput":5220},"packages/ui/react-ui-pickers/src/components/EmojiPicker/emoji.css":{"bytesInOutput":0},"packages/ui/react-ui-pickers/src/components/EmojiPicker/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-pickers/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-pickers/src/components/HuePicker/HuePicker.tsx":{"bytesInOutput":917},"packages/ui/react-ui-pickers/src/components/PickerButton/PickerButton.tsx":{"bytesInOutput":3343},"packages/ui/react-ui-pickers/src/components/PickerButton/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-pickers/src/components/HuePicker/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-pickers/src/components/IconPicker/IconPicker.tsx":{"bytesInOutput":2016},"packages/ui/react-ui-pickers/src/components/IconPicker/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-pickers/src/index.ts":{"bytesInOutput":0}},"bytes":12004},"packages/ui/react-ui-pickers/dist/lib/browser/index.css.map":{"imports":[],"exports":[],"inputs":{},"bytes":1029},"packages/ui/react-ui-pickers/dist/lib/browser/index.css":{"imports":[],"inputs":{"packages/ui/react-ui-pickers/src/components/EmojiPicker/emoji.css":{"bytesInOutput":146}},"bytes":256}}}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -32,7 +32,7 @@ __export(node_exports, {
|
|
|
32
32
|
EmojiPickerToolbarButton: () => EmojiPickerToolbarButton,
|
|
33
33
|
HuePicker: () => HuePicker,
|
|
34
34
|
IconPicker: () => IconPicker,
|
|
35
|
-
|
|
35
|
+
PickerButton: () => PickerButton
|
|
36
36
|
});
|
|
37
37
|
module.exports = __toCommonJS(node_exports);
|
|
38
38
|
var import_data = __toESM(require("@emoji-mart/data"));
|
|
@@ -46,10 +46,9 @@ var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
|
46
46
|
var import_react_use_controllable_state2 = require("@radix-ui/react-use-controllable-state");
|
|
47
47
|
var import_react4 = __toESM(require("react"));
|
|
48
48
|
var import_react_ui3 = require("@dxos/react-ui");
|
|
49
|
-
var import_react_ui_theme2 = require("@dxos/react-ui-theme");
|
|
50
49
|
var import_react5 = __toESM(require("react"));
|
|
51
50
|
var import_react_ui4 = require("@dxos/react-ui");
|
|
52
|
-
var EmojiPickerToolbarButton = ({
|
|
51
|
+
var EmojiPickerToolbarButton = ({ classNames, emoji, disabled, defaultEmoji, onChangeEmoji }) => {
|
|
53
52
|
const { t } = (0, import_react_ui.useTranslation)("os");
|
|
54
53
|
const { themeMode } = (0, import_react_ui.useThemeContext)();
|
|
55
54
|
const [_emojiValue, setEmojiValue] = (0, import_react_use_controllable_state.useControllableState)({
|
|
@@ -116,7 +115,7 @@ var EmojiPickerToolbarButton = ({ disabled, defaultEmoji, emoji, onChangeEmoji,
|
|
|
116
115
|
theme: themeMode
|
|
117
116
|
}), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Popover.Arrow, null)))));
|
|
118
117
|
};
|
|
119
|
-
var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }) => {
|
|
118
|
+
var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear, triggerVariant = "ghost", classNames }) => {
|
|
120
119
|
const { t } = (0, import_react_ui.useTranslation)("os");
|
|
121
120
|
const [isMd] = (0, import_react_ui.useMediaQuery)("md", {
|
|
122
121
|
ssr: false
|
|
@@ -127,22 +126,22 @@ var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickC
|
|
|
127
126
|
defaultProp: defaultEmoji
|
|
128
127
|
});
|
|
129
128
|
const [emojiPickerOpen, setEmojiPickerOpen] = (0, import_react2.useState)(false);
|
|
130
|
-
return /* @__PURE__ */ import_react2.default.createElement(
|
|
129
|
+
return /* @__PURE__ */ import_react2.default.createElement(import_react_ui.ButtonGroup, {
|
|
130
|
+
classNames
|
|
131
|
+
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Popover.Root, {
|
|
131
132
|
open: emojiPickerOpen,
|
|
132
133
|
onOpenChange: setEmojiPickerOpen
|
|
133
134
|
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Popover.Trigger, {
|
|
134
135
|
asChild: true
|
|
135
136
|
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Button, {
|
|
136
|
-
variant:
|
|
137
|
-
classNames: "gap-2 text-2xl plb-1",
|
|
137
|
+
variant: triggerVariant,
|
|
138
|
+
classNames: "grow gap-2 text-2xl plb-1",
|
|
138
139
|
disabled
|
|
139
140
|
}, /* @__PURE__ */ import_react2.default.createElement("span", {
|
|
140
141
|
className: "sr-only"
|
|
141
|
-
}, t("select emoji label")), /* @__PURE__ */ import_react2.default.createElement("span", {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
icon: "ph--caret-down--regular",
|
|
145
|
-
size: 4
|
|
142
|
+
}, t("select emoji label")), /* @__PURE__ */ import_react2.default.createElement("span", null, emojiValue), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Icon, {
|
|
143
|
+
icon: "ph--caret-down--bold",
|
|
144
|
+
size: 3
|
|
146
145
|
}))), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Popover.Content, {
|
|
147
146
|
side: "right",
|
|
148
147
|
sideOffset: isMd ? 0 : -310,
|
|
@@ -166,7 +165,7 @@ var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickC
|
|
|
166
165
|
}), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Popover.Arrow, null))), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Tooltip.Root, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Tooltip.Trigger, {
|
|
167
166
|
asChild: true
|
|
168
167
|
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Button, {
|
|
169
|
-
variant:
|
|
168
|
+
variant: triggerVariant,
|
|
170
169
|
onClick: onClickClear,
|
|
171
170
|
disabled
|
|
172
171
|
}, /* @__PURE__ */ import_react2.default.createElement("span", {
|
|
@@ -178,7 +177,7 @@ var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickC
|
|
|
178
177
|
side: "right"
|
|
179
178
|
}, t("clear label"), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Tooltip.Arrow, null)))));
|
|
180
179
|
};
|
|
181
|
-
var
|
|
180
|
+
var PickerButton = ({ Component, disabled, classNames, defaultValue: _defaultValue, value: _value, values, label, icon, onChange, onReset, rootVariant = "button", iconSize = 5 }) => {
|
|
182
181
|
const [value, setValue] = (0, import_react_use_controllable_state2.useControllableState)({
|
|
183
182
|
prop: _value,
|
|
184
183
|
defaultProp: _defaultValue,
|
|
@@ -190,6 +189,7 @@ var ToolbarPickerButton = ({ Component, disabled, classNames, defaultValue: _def
|
|
|
190
189
|
const [open, setOpen] = (0, import_react4.useState)(false);
|
|
191
190
|
const suppressNextTooltip = (0, import_react4.useRef)(false);
|
|
192
191
|
const [triggerTooltipOpen, setTriggerTooltipOpen] = (0, import_react4.useState)(false);
|
|
192
|
+
const TriggerRoot = rootVariant === "toolbar-button" ? import_react_ui3.Toolbar.Button : import_react_ui3.Button;
|
|
193
193
|
return /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.Tooltip.Root, {
|
|
194
194
|
open: triggerTooltipOpen,
|
|
195
195
|
onOpenChange: (nextOpen) => {
|
|
@@ -211,43 +211,51 @@ var ToolbarPickerButton = ({ Component, disabled, classNames, defaultValue: _def
|
|
|
211
211
|
asChild: true
|
|
212
212
|
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.DropdownMenu.Trigger, {
|
|
213
213
|
asChild: true
|
|
214
|
-
}, /* @__PURE__ */ import_react4.default.createElement(
|
|
215
|
-
classNames:
|
|
214
|
+
}, /* @__PURE__ */ import_react4.default.createElement(TriggerRoot, {
|
|
215
|
+
classNames: [
|
|
216
|
+
"gap-2 plb-1",
|
|
217
|
+
classNames
|
|
218
|
+
],
|
|
216
219
|
disabled
|
|
217
220
|
}, /* @__PURE__ */ import_react4.default.createElement("span", {
|
|
218
221
|
className: "sr-only"
|
|
219
222
|
}, label), value && /* @__PURE__ */ import_react4.default.createElement(Component, {
|
|
220
|
-
value
|
|
223
|
+
value,
|
|
224
|
+
iconSize
|
|
221
225
|
}) || /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.Icon, {
|
|
222
226
|
icon,
|
|
223
|
-
size:
|
|
227
|
+
size: iconSize
|
|
228
|
+
}), /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.Icon, {
|
|
229
|
+
icon: "ph--caret-down--bold",
|
|
230
|
+
size: 3
|
|
224
231
|
})))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.Tooltip.Portal, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.Tooltip.Content, {
|
|
225
232
|
side: "bottom"
|
|
226
233
|
}, label, /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.Tooltip.Arrow, null))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.DropdownMenu.Portal, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.DropdownMenu.Content, {
|
|
227
234
|
side: "bottom",
|
|
228
235
|
classNames: "!is-min"
|
|
229
236
|
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.DropdownMenu.Viewport, {
|
|
230
|
-
classNames: "grid grid-cols-[repeat(6,
|
|
237
|
+
classNames: "grid grid-cols-[repeat(6,min-content)]"
|
|
231
238
|
}, values.map((_value2) => {
|
|
232
239
|
return /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.DropdownMenu.CheckboxItem, {
|
|
233
240
|
key: _value2,
|
|
234
241
|
checked: _value2 === value,
|
|
235
242
|
onCheckedChange: () => setValue(_value2),
|
|
236
|
-
classNames: "p-
|
|
243
|
+
classNames: "p-1 items-center justify-center aspect-square"
|
|
237
244
|
}, /* @__PURE__ */ import_react4.default.createElement(Component, {
|
|
238
|
-
value: _value2
|
|
245
|
+
value: _value2,
|
|
246
|
+
iconSize
|
|
239
247
|
}));
|
|
240
248
|
}), onReset && /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.DropdownMenu.CheckboxItem, {
|
|
241
249
|
onCheckedChange: () => onReset(),
|
|
242
|
-
classNames: "p-
|
|
250
|
+
classNames: "p-1 items-center justify-center aspect-square"
|
|
243
251
|
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.Icon, {
|
|
244
252
|
icon: "ph--x--regular",
|
|
245
|
-
size:
|
|
253
|
+
size: iconSize
|
|
246
254
|
}))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui3.DropdownMenu.Arrow, null)))));
|
|
247
255
|
};
|
|
248
256
|
var HuePicker = (props) => {
|
|
249
257
|
const { t } = (0, import_react_ui2.useTranslation)("os");
|
|
250
|
-
return /* @__PURE__ */ import_react3.default.createElement(
|
|
258
|
+
return /* @__PURE__ */ import_react3.default.createElement(PickerButton, {
|
|
251
259
|
Component: HuePreview,
|
|
252
260
|
label: t("select hue label"),
|
|
253
261
|
icon: "ph--palette--regular",
|
|
@@ -260,9 +268,8 @@ var HuePreview = ({ value }) => {
|
|
|
260
268
|
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
261
269
|
className: "flex p-[2px] justify-center items-center"
|
|
262
270
|
}, /* @__PURE__ */ import_react3.default.createElement("svg", {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
viewBox: `0 0 ${size} ${size}`
|
|
271
|
+
viewBox: `0 0 ${size} ${size}`,
|
|
272
|
+
className: "is-[var(--hue-preview-size,1rem)] bs-[var(--hue-preview-size,1rem)]"
|
|
266
273
|
}, /* @__PURE__ */ import_react3.default.createElement("rect", {
|
|
267
274
|
x: 0,
|
|
268
275
|
y: 0,
|
|
@@ -274,7 +281,7 @@ var HuePreview = ({ value }) => {
|
|
|
274
281
|
};
|
|
275
282
|
var IconPicker = ({ ...props }) => {
|
|
276
283
|
const { t } = (0, import_react_ui4.useTranslation)("os");
|
|
277
|
-
return /* @__PURE__ */ import_react5.default.createElement(
|
|
284
|
+
return /* @__PURE__ */ import_react5.default.createElement(PickerButton, {
|
|
278
285
|
Component: IconPreview,
|
|
279
286
|
label: t("select icon label"),
|
|
280
287
|
icon: "ph--selection--regular",
|
|
@@ -282,10 +289,10 @@ var IconPicker = ({ ...props }) => {
|
|
|
282
289
|
...props
|
|
283
290
|
});
|
|
284
291
|
};
|
|
285
|
-
var IconPreview = ({ value }) => {
|
|
292
|
+
var IconPreview = ({ value, iconSize = 5 }) => {
|
|
286
293
|
return /* @__PURE__ */ import_react5.default.createElement(import_react_ui4.Icon, {
|
|
287
294
|
icon: `ph--${value}--regular`,
|
|
288
|
-
size:
|
|
295
|
+
size: iconSize
|
|
289
296
|
});
|
|
290
297
|
};
|
|
291
298
|
var icons = [
|
|
@@ -345,6 +352,6 @@ var iconValues = icons.map((icon) => icon.match(/ph--(.+)--regular/)?.[1] ?? ico
|
|
|
345
352
|
EmojiPickerToolbarButton,
|
|
346
353
|
HuePicker,
|
|
347
354
|
IconPicker,
|
|
348
|
-
|
|
355
|
+
PickerButton
|
|
349
356
|
});
|
|
350
357
|
//# sourceMappingURL=index.cjs.map
|