@dxos/react-ui-pickers 0.7.5-main.ff8607b → 0.7.5-staging.2ff1350
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.mjs +151 -98
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +182 -134
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +151 -98
- 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 +3 -3
- package/dist/types/src/components/EmojiPicker.d.ts.map +1 -1
- package/dist/types/src/components/EmojiPicker.stories.d.ts.map +1 -1
- package/dist/types/src/components/HuePicker.d.ts +7 -14
- package/dist/types/src/components/HuePicker.d.ts.map +1 -1
- package/dist/types/src/components/HuePicker.stories.d.ts +1 -2
- package/dist/types/src/components/HuePicker.stories.d.ts.map +1 -1
- package/dist/types/src/components/IconPicker.d.ts +11 -0
- package/dist/types/src/components/IconPicker.d.ts.map +1 -0
- package/dist/types/src/components/IconPicker.stories.d.ts +7 -0
- package/dist/types/src/components/IconPicker.stories.d.ts.map +1 -0
- package/dist/types/src/components/ToolbarPicker.d.ts +17 -0
- package/dist/types/src/components/ToolbarPicker.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +2 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/package.json +9 -10
- package/src/components/EmojiPicker.stories.tsx +4 -1
- package/src/components/EmojiPicker.tsx +5 -5
- package/src/components/HuePicker.stories.tsx +14 -29
- package/src/components/HuePicker.tsx +24 -165
- package/src/components/IconPicker.stories.tsx +39 -0
- package/src/components/IconPicker.tsx +92 -0
- package/src/components/ToolbarPicker.tsx +112 -0
- package/src/components/index.ts +2 -0
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
// packages/ui/react-ui-pickers/src/components/EmojiPicker.tsx
|
|
2
2
|
import emojiData from "@emoji-mart/data";
|
|
3
3
|
import EmojiMart from "@emoji-mart/react";
|
|
4
|
-
import { ArrowCounterClockwise, CaretDown, UserCircle } from "@phosphor-icons/react";
|
|
5
4
|
import { useControllableState } from "@radix-ui/react-use-controllable-state";
|
|
6
5
|
import React, { useRef, useState } from "react";
|
|
7
|
-
import { Button, Popover, Toolbar, Tooltip, useMediaQuery, useThemeContext, useTranslation } from "@dxos/react-ui";
|
|
8
|
-
import { getSize } from "@dxos/react-ui-theme";
|
|
6
|
+
import { Button, Popover, Toolbar, Tooltip, useMediaQuery, useThemeContext, useTranslation, Icon } from "@dxos/react-ui";
|
|
9
7
|
var EmojiPickerToolbarButton = ({ disabled, defaultEmoji, emoji, onChangeEmoji, classNames }) => {
|
|
10
8
|
const { t } = useTranslation("os");
|
|
11
9
|
const { themeMode } = useThemeContext();
|
|
@@ -45,8 +43,9 @@ var EmojiPickerToolbarButton = ({ disabled, defaultEmoji, emoji, onChangeEmoji,
|
|
|
45
43
|
disabled
|
|
46
44
|
}, /* @__PURE__ */ React.createElement("span", {
|
|
47
45
|
className: "sr-only"
|
|
48
|
-
}, t("select emoji label")), /* @__PURE__ */ React.createElement(
|
|
49
|
-
|
|
46
|
+
}, t("select emoji label")), /* @__PURE__ */ React.createElement(Icon, {
|
|
47
|
+
icon: "ph--user-circle--regular",
|
|
48
|
+
size: 5
|
|
50
49
|
})))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, {
|
|
51
50
|
side: "bottom"
|
|
52
51
|
}, t("select emoji label"), /* @__PURE__ */ React.createElement(Tooltip.Arrow, null))), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, {
|
|
@@ -96,8 +95,9 @@ var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickC
|
|
|
96
95
|
className: "sr-only"
|
|
97
96
|
}, t("select emoji label")), /* @__PURE__ */ React.createElement("span", {
|
|
98
97
|
className: "grow pis-14"
|
|
99
|
-
}, emojiValue), /* @__PURE__ */ React.createElement(
|
|
100
|
-
|
|
98
|
+
}, emojiValue), /* @__PURE__ */ React.createElement(Icon, {
|
|
99
|
+
icon: "ph--caret-down--regular",
|
|
100
|
+
size: 4
|
|
101
101
|
}))), /* @__PURE__ */ React.createElement(Popover.Content, {
|
|
102
102
|
side: "right",
|
|
103
103
|
sideOffset: isMd ? 0 : -310,
|
|
@@ -126,43 +126,34 @@ var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickC
|
|
|
126
126
|
disabled
|
|
127
127
|
}, /* @__PURE__ */ React.createElement("span", {
|
|
128
128
|
className: "sr-only"
|
|
129
|
-
}, t("clear label")), /* @__PURE__ */ React.createElement(
|
|
129
|
+
}, t("clear label")), /* @__PURE__ */ React.createElement(Icon, {
|
|
130
|
+
icon: "ph--arrow-counter-clockwise--regular",
|
|
131
|
+
size: 5
|
|
132
|
+
}))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, {
|
|
130
133
|
side: "right"
|
|
131
134
|
}, t("clear label"), /* @__PURE__ */ React.createElement(Tooltip.Arrow, null)))));
|
|
132
135
|
};
|
|
133
136
|
|
|
134
137
|
// packages/ui/react-ui-pickers/src/components/HuePicker.tsx
|
|
135
|
-
import
|
|
138
|
+
import React3 from "react";
|
|
139
|
+
import { useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
140
|
+
import { hues } from "@dxos/react-ui-theme";
|
|
141
|
+
|
|
142
|
+
// packages/ui/react-ui-pickers/src/components/ToolbarPicker.tsx
|
|
136
143
|
import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
|
|
137
|
-
import React2, { useRef as useRef2, useState as useState2 } from "react";
|
|
138
|
-
import {
|
|
139
|
-
import {
|
|
140
|
-
var
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
height: size,
|
|
146
|
-
viewBox: `0 0 ${size} ${size}`
|
|
147
|
-
}, /* @__PURE__ */ React2.createElement("rect", {
|
|
148
|
-
x: 0,
|
|
149
|
-
y: 0,
|
|
150
|
-
width: size,
|
|
151
|
-
height: size,
|
|
152
|
-
className: tx("hue.fill", "select--hue__preview", {
|
|
153
|
-
hue
|
|
154
|
-
})
|
|
155
|
-
}));
|
|
156
|
-
};
|
|
157
|
-
var hueTokens = Object.keys(hueTokenThemes).slice(0, 16);
|
|
158
|
-
var HuePickerToolbarButton = ({ disabled, hue, onChangeHue, classNames, defaultHue }) => {
|
|
159
|
-
const { t } = useTranslation2("os");
|
|
160
|
-
const [hueValue, setHueValue] = useControllableState2({
|
|
161
|
-
prop: hue,
|
|
162
|
-
onChange: onChangeHue,
|
|
163
|
-
defaultProp: defaultHue
|
|
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
|
+
import { mx } from "@dxos/react-ui-theme";
|
|
147
|
+
var ToolbarPickerButton = ({ Component, disabled, classNames, defaultValue: _defaultValue, value: _value, values, label, icon, onChange, onReset }) => {
|
|
148
|
+
const [value, setValue] = useControllableState2({
|
|
149
|
+
prop: _value,
|
|
150
|
+
defaultProp: _defaultValue,
|
|
151
|
+
onChange
|
|
164
152
|
});
|
|
165
|
-
|
|
153
|
+
useEffect(() => setValue(_value), [
|
|
154
|
+
_value
|
|
155
|
+
]);
|
|
156
|
+
const [open, setOpen] = useState2(false);
|
|
166
157
|
const suppressNextTooltip = useRef2(false);
|
|
167
158
|
const [triggerTooltipOpen, setTriggerTooltipOpen] = useState2(false);
|
|
168
159
|
return /* @__PURE__ */ React2.createElement(Tooltip2.Root, {
|
|
@@ -177,9 +168,9 @@ var HuePickerToolbarButton = ({ disabled, hue, onChangeHue, classNames, defaultH
|
|
|
177
168
|
}
|
|
178
169
|
}, /* @__PURE__ */ React2.createElement(DropdownMenu.Root, {
|
|
179
170
|
modal: false,
|
|
180
|
-
open
|
|
171
|
+
open,
|
|
181
172
|
onOpenChange: (nextOpen) => {
|
|
182
|
-
|
|
173
|
+
setOpen(nextOpen);
|
|
183
174
|
suppressNextTooltip.current = true;
|
|
184
175
|
}
|
|
185
176
|
}, /* @__PURE__ */ React2.createElement(Tooltip2.Trigger, {
|
|
@@ -191,78 +182,140 @@ var HuePickerToolbarButton = ({ disabled, hue, onChangeHue, classNames, defaultH
|
|
|
191
182
|
disabled
|
|
192
183
|
}, /* @__PURE__ */ React2.createElement("span", {
|
|
193
184
|
className: "sr-only"
|
|
194
|
-
},
|
|
195
|
-
|
|
185
|
+
}, label), value && /* @__PURE__ */ React2.createElement(Component, {
|
|
186
|
+
value
|
|
187
|
+
}) || /* @__PURE__ */ React2.createElement(Icon2, {
|
|
188
|
+
icon,
|
|
189
|
+
size: 5
|
|
196
190
|
})))), /* @__PURE__ */ React2.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip2.Content, {
|
|
197
191
|
side: "bottom"
|
|
198
|
-
},
|
|
192
|
+
}, label, /* @__PURE__ */ React2.createElement(Tooltip2.Arrow, null))), /* @__PURE__ */ React2.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Content, {
|
|
199
193
|
side: "bottom",
|
|
200
194
|
classNames: "!w-40"
|
|
201
195
|
}, /* @__PURE__ */ React2.createElement(DropdownMenu.Viewport, {
|
|
202
|
-
classNames: "grid grid-cols-
|
|
203
|
-
},
|
|
196
|
+
classNames: "grid grid-cols-6"
|
|
197
|
+
}, values.map((_value2) => {
|
|
204
198
|
return /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
|
|
205
|
-
key:
|
|
206
|
-
checked:
|
|
207
|
-
onCheckedChange: () =>
|
|
208
|
-
classNames: "
|
|
209
|
-
}, /* @__PURE__ */ React2.createElement(
|
|
210
|
-
|
|
199
|
+
key: _value2,
|
|
200
|
+
checked: _value2 === value,
|
|
201
|
+
onCheckedChange: () => setValue(_value2),
|
|
202
|
+
classNames: "!p-0 items-center justify-center"
|
|
203
|
+
}, /* @__PURE__ */ React2.createElement(Component, {
|
|
204
|
+
value: _value2
|
|
211
205
|
}));
|
|
212
|
-
})
|
|
206
|
+
}), onReset && /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
|
|
207
|
+
onCheckedChange: () => onReset(),
|
|
208
|
+
classNames: "!p-0 items-center justify-center"
|
|
209
|
+
}, /* @__PURE__ */ React2.createElement(Icon2, {
|
|
210
|
+
icon: "ph--x--regular",
|
|
211
|
+
size: 5
|
|
212
|
+
}))), /* @__PURE__ */ React2.createElement(DropdownMenu.Arrow, null)))));
|
|
213
213
|
};
|
|
214
|
-
|
|
214
|
+
|
|
215
|
+
// packages/ui/react-ui-pickers/src/components/HuePicker.tsx
|
|
216
|
+
var HuePicker = (props) => {
|
|
215
217
|
const { t } = useTranslation2("os");
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
218
|
+
return /* @__PURE__ */ React3.createElement(ToolbarPickerButton, {
|
|
219
|
+
Component: HuePreview,
|
|
220
|
+
label: t("select hue label"),
|
|
221
|
+
icon: "ph--palette--regular",
|
|
222
|
+
values: hues,
|
|
223
|
+
...props
|
|
224
|
+
});
|
|
225
|
+
};
|
|
226
|
+
var HuePreview = ({ value }) => {
|
|
227
|
+
const size = 16;
|
|
228
|
+
return /* @__PURE__ */ React3.createElement("div", {
|
|
229
|
+
className: "flex p-[2px] justify-center items-center"
|
|
230
|
+
}, /* @__PURE__ */ React3.createElement("svg", {
|
|
231
|
+
width: size,
|
|
232
|
+
height: size,
|
|
233
|
+
viewBox: `0 0 ${size} ${size}`
|
|
234
|
+
}, /* @__PURE__ */ React3.createElement("rect", {
|
|
235
|
+
x: 0,
|
|
236
|
+
y: 0,
|
|
237
|
+
width: size,
|
|
238
|
+
height: size,
|
|
239
|
+
fill: `var(--dx-${value}Fill)`,
|
|
240
|
+
strokeWidth: 4
|
|
241
|
+
})));
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
// packages/ui/react-ui-pickers/src/components/IconPicker.tsx
|
|
245
|
+
import React4 from "react";
|
|
246
|
+
import { Icon as Icon3, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
247
|
+
var IconPicker = ({ ...props }) => {
|
|
248
|
+
const { t } = useTranslation3("os");
|
|
249
|
+
return /* @__PURE__ */ React4.createElement(ToolbarPickerButton, {
|
|
250
|
+
Component: IconPreview,
|
|
251
|
+
label: t("select icon label"),
|
|
252
|
+
icon: "ph--selection--regular",
|
|
253
|
+
values: iconValues,
|
|
254
|
+
...props
|
|
255
|
+
});
|
|
256
|
+
};
|
|
257
|
+
var IconPreview = ({ value }) => {
|
|
258
|
+
return /* @__PURE__ */ React4.createElement(Icon3, {
|
|
259
|
+
icon: `ph--${value}--regular`,
|
|
260
|
+
size: 5
|
|
220
261
|
});
|
|
221
|
-
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Root, {
|
|
222
|
-
modal: false
|
|
223
|
-
}, /* @__PURE__ */ React2.createElement(DropdownMenu.Trigger, {
|
|
224
|
-
asChild: true
|
|
225
|
-
}, /* @__PURE__ */ React2.createElement(Button2, {
|
|
226
|
-
variant: "ghost",
|
|
227
|
-
classNames: "gap-2 plb-1",
|
|
228
|
-
disabled
|
|
229
|
-
}, /* @__PURE__ */ React2.createElement("span", {
|
|
230
|
-
className: "sr-only"
|
|
231
|
-
}, t("select hue label")), /* @__PURE__ */ React2.createElement("div", {
|
|
232
|
-
role: "none",
|
|
233
|
-
className: "pis-14 grow flex items-center justify-center gap-2"
|
|
234
|
-
}, /* @__PURE__ */ React2.createElement(HuePreview, {
|
|
235
|
-
hue: hueValue
|
|
236
|
-
}), /* @__PURE__ */ React2.createElement("span", null, t(`${hueValue} label`))), /* @__PURE__ */ React2.createElement(CaretDown2, {
|
|
237
|
-
className: getSize2(4)
|
|
238
|
-
}))), /* @__PURE__ */ React2.createElement(DropdownMenu.Content, {
|
|
239
|
-
side: "right"
|
|
240
|
-
}, /* @__PURE__ */ React2.createElement(DropdownMenu.Viewport, null, Object.keys(hueTokenThemes).map((hue2) => {
|
|
241
|
-
return /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
|
|
242
|
-
key: hue2,
|
|
243
|
-
checked: hue2 === hueValue,
|
|
244
|
-
onCheckedChange: () => setHueValue(hue2)
|
|
245
|
-
}, /* @__PURE__ */ React2.createElement(HuePreview, {
|
|
246
|
-
hue: hue2
|
|
247
|
-
}), /* @__PURE__ */ React2.createElement("span", {
|
|
248
|
-
className: "grow"
|
|
249
|
-
}, t(`${hue2} label`)), /* @__PURE__ */ React2.createElement(DropdownMenu.ItemIndicator, null, /* @__PURE__ */ React2.createElement(Check, null)));
|
|
250
|
-
})), /* @__PURE__ */ React2.createElement(DropdownMenu.Arrow, null))), /* @__PURE__ */ React2.createElement(Tooltip2.Root, null, /* @__PURE__ */ React2.createElement(Tooltip2.Trigger, {
|
|
251
|
-
asChild: true
|
|
252
|
-
}, /* @__PURE__ */ React2.createElement(Button2, {
|
|
253
|
-
variant: "ghost",
|
|
254
|
-
onClick: onClickClear,
|
|
255
|
-
disabled
|
|
256
|
-
}, /* @__PURE__ */ React2.createElement("span", {
|
|
257
|
-
className: "sr-only"
|
|
258
|
-
}, t("clear label")), /* @__PURE__ */ React2.createElement(ArrowCounterClockwise2, null))), /* @__PURE__ */ React2.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip2.Content, {
|
|
259
|
-
side: "right"
|
|
260
|
-
}, t("clear label"), /* @__PURE__ */ React2.createElement(Tooltip2.Arrow, null)))));
|
|
261
262
|
};
|
|
263
|
+
var icons = [
|
|
264
|
+
"ph--air-traffic-control--regular",
|
|
265
|
+
"ph--asterisk--regular",
|
|
266
|
+
"ph--atom--regular",
|
|
267
|
+
"ph--basketball--regular",
|
|
268
|
+
"ph--butterfly--regular",
|
|
269
|
+
"ph--cactus--regular",
|
|
270
|
+
"ph--cake--regular",
|
|
271
|
+
"ph--calendar-dots--regular",
|
|
272
|
+
"ph--campfire--regular",
|
|
273
|
+
"ph--command--regular",
|
|
274
|
+
"ph--confetti--regular",
|
|
275
|
+
"ph--detective--regular",
|
|
276
|
+
"ph--disco-ball--regular",
|
|
277
|
+
"ph--dna--regular",
|
|
278
|
+
"ph--factory--regular",
|
|
279
|
+
"ph--flag-banner-fold--regular",
|
|
280
|
+
"ph--flask--regular",
|
|
281
|
+
"ph--flower-lotus--regular",
|
|
282
|
+
"ph--flying-saucer--regular",
|
|
283
|
+
"ph--game-controller--regular",
|
|
284
|
+
"ph--gavel--regular",
|
|
285
|
+
"ph--gift--regular",
|
|
286
|
+
"ph--guitar--regular",
|
|
287
|
+
"ph--hamburger--regular",
|
|
288
|
+
"ph--handshake--regular",
|
|
289
|
+
"ph--heart--regular",
|
|
290
|
+
"ph--lightbulb--regular",
|
|
291
|
+
"ph--lock--regular",
|
|
292
|
+
"ph--martini--regular",
|
|
293
|
+
"ph--medal-military--regular",
|
|
294
|
+
"ph--moped-front--regular",
|
|
295
|
+
"ph--office-chair--regular",
|
|
296
|
+
"ph--paint-brush-household--regular",
|
|
297
|
+
"ph--peace--regular",
|
|
298
|
+
"ph--person-simple-hike--regular",
|
|
299
|
+
"ph--piggy-bank--regular",
|
|
300
|
+
"ph--potted-plant--regular",
|
|
301
|
+
"ph--radioactive--regular",
|
|
302
|
+
"ph--rocket-launch--regular",
|
|
303
|
+
"ph--shield-star--regular",
|
|
304
|
+
"ph--shopping-cart--regular",
|
|
305
|
+
"ph--stethoscope--regular",
|
|
306
|
+
"ph--student--regular",
|
|
307
|
+
"ph--sun--regular",
|
|
308
|
+
"ph--tote--regular",
|
|
309
|
+
"ph--tree--regular",
|
|
310
|
+
"ph--users-three--regular",
|
|
311
|
+
"ph--yin-yang--regular"
|
|
312
|
+
];
|
|
313
|
+
var iconValues = icons.map((icon) => icon.match(/ph--(.+)--regular/)?.[1] ?? icon);
|
|
262
314
|
export {
|
|
263
315
|
EmojiPickerBlock,
|
|
264
316
|
EmojiPickerToolbarButton,
|
|
265
|
-
|
|
266
|
-
|
|
317
|
+
HuePicker,
|
|
318
|
+
IconPicker,
|
|
319
|
+
ToolbarPickerButton
|
|
267
320
|
};
|
|
268
321
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/EmojiPicker.tsx", "../../../src/components/HuePicker.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport emojiData from '@emoji-mart/data';\nimport EmojiMart from '@emoji-mart/react';\nimport { ArrowCounterClockwise, CaretDown, UserCircle } from '@phosphor-icons/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} from '@dxos/react-ui';\nimport { getSize } from '@dxos/react-ui-theme';\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 <UserCircle className={getSize(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 = ({ 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 <CaretDown className={getSize(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 <ArrowCounterClockwise />\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 { ArrowCounterClockwise, CaretDown, Check, Palette } from '@phosphor-icons/react';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, { useRef, useState } from 'react';\n\nimport {\n Button,\n type ButtonProps,\n DropdownMenu,\n type ThemedClassName,\n Toolbar,\n Tooltip,\n useThemeContext,\n useTranslation,\n} from '@dxos/react-ui';\nimport { getSize, hueTokenThemes, mx } from '@dxos/react-ui-theme';\n\nconst HuePreview = ({ hue }: { hue: string }) => {\n const { tx } = useThemeContext();\n const size = 20;\n return (\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n <rect x={0} y={0} width={size} height={size} className={tx('hue.fill', 'select--hue__preview', { hue })} />\n </svg>\n );\n};\n\nconst hueTokens = Object.keys(hueTokenThemes).slice(0, 16);\n\nexport type HuePickerProps = {\n disabled?: boolean;\n defaultHue?: string;\n hue?: string;\n onChangeHue?: (nextHue: string) => void;\n onClickClear?: ButtonProps['onClick'];\n};\n\n/**\n * A toolbar button for picking hue. Use only in `role=toolbar` elements. Unable to unset the value.\n */\nexport const HuePickerToolbarButton = ({\n disabled,\n hue,\n onChangeHue,\n classNames,\n defaultHue,\n}: ThemedClassName<Omit<HuePickerProps, 'onClickClear'>>) => {\n const { t } = useTranslation('os');\n\n const [hueValue, setHueValue] = useControllableState<string>({\n prop: hue,\n onChange: onChangeHue,\n defaultProp: defaultHue,\n });\n\n const [huePickerOpen, setHuePickerOpen] = 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={huePickerOpen}\n onOpenChange={(nextOpen) => {\n setHuePickerOpen(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'>{t('select hue label')}</span>\n <Palette className={getSize(5)} />\n </Toolbar.Button>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>\n {t('select hue label')}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n <DropdownMenu.Portal>\n <DropdownMenu.Content side='bottom' classNames='!w-40'>\n <DropdownMenu.Viewport classNames='grid grid-cols-4'>\n {hueTokens.map((hue) => {\n return (\n <DropdownMenu.CheckboxItem\n key={hue}\n checked={hue === hueValue}\n onCheckedChange={() => setHueValue(hue)}\n classNames={'px-0 py-2 items-center justify-center'}\n >\n <HuePreview hue={hue} />\n </DropdownMenu.CheckboxItem>\n );\n })}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </Tooltip.Root>\n );\n};\n\n/**\n * A button for picking hue alongside a button for unsetting it.\n */\nexport const HuePickerBlock = ({ disabled, hue, onChangeHue, defaultHue, onClickClear }: HuePickerProps) => {\n const { t } = useTranslation('os');\n\n const [hueValue, setHueValue] = useControllableState<string>({\n prop: hue,\n onChange: onChangeHue,\n defaultProp: defaultHue,\n });\n\n return (\n <>\n <DropdownMenu.Root modal={false}>\n <DropdownMenu.Trigger asChild>\n <Button variant='ghost' classNames='gap-2 plb-1' disabled={disabled}>\n <span className='sr-only'>{t('select hue label')}</span>\n <div role='none' className='pis-14 grow flex items-center justify-center gap-2'>\n <HuePreview hue={hueValue!} />\n <span>{t(`${hueValue} label`)}</span>\n </div>\n <CaretDown className={getSize(4)} />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content side='right'>\n <DropdownMenu.Viewport>\n {Object.keys(hueTokenThemes).map((hue) => {\n return (\n <DropdownMenu.CheckboxItem\n key={hue}\n checked={hue === hueValue}\n onCheckedChange={() => setHueValue(hue)}\n >\n <HuePreview hue={hue} />\n <span className='grow'>{t(`${hue} label`)}</span>\n <DropdownMenu.ItemIndicator>\n <Check />\n </DropdownMenu.ItemIndicator>\n </DropdownMenu.CheckboxItem>\n );\n })}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.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 <ArrowCounterClockwise />\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"],
|
|
5
|
-
"mappings": ";AAIA,OAAOA,eAAe;AACtB,OAAOC,eAAe;AACtB,SAASC,
|
|
6
|
-
"names": ["emojiData", "EmojiMart", "
|
|
3
|
+
"sources": ["../../../src/components/EmojiPicker.tsx", "../../../src/components/HuePicker.tsx", "../../../src/components/ToolbarPicker.tsx", "../../../src/components/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} 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='!w-40'>\n <DropdownMenu.Viewport classNames='grid grid-cols-6'>\n {values.map((_value) => {\n return (\n <DropdownMenu.CheckboxItem\n key={_value}\n checked={_value === value}\n onCheckedChange={() => setValue(_value)}\n classNames={'!p-0 items-center justify-center'}\n >\n <Component value={_value} />\n </DropdownMenu.CheckboxItem>\n );\n })}\n {onReset && (\n <DropdownMenu.CheckboxItem\n onCheckedChange={() => onReset()}\n classNames={'!p-0 items-center justify-center'}\n >\n <Icon icon='ph--x--regular' size={5} />\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": "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",
|
|
6
|
+
"names": ["emojiData", "EmojiMart", "useControllableState", "React", "useRef", "useState", "Button", "Popover", "Toolbar", "Tooltip", "useMediaQuery", "useThemeContext", "useTranslation", "Icon", "EmojiPickerToolbarButton", "disabled", "defaultEmoji", "emoji", "onChangeEmoji", "classNames", "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", "isMd", "useMediaQuery", "ssr", "emojiValue", "variant", "sideOffset", "onClick", "React", "useTranslation", "hues", "useControllableState", "React", "useEffect", "useRef", "useState", "DropdownMenu", "Icon", "Toolbar", "Tooltip", "mx", "ToolbarPickerButton", "Component", "disabled", "classNames", "defaultValue", "_defaultValue", "value", "_value", "values", "label", "icon", "onChange", "onReset", "setValue", "useControllableState", "prop", "defaultProp", "useEffect", "open", "setOpen", "useState", "suppressNextTooltip", "useRef", "triggerTooltipOpen", "setTriggerTooltipOpen", "React", "Tooltip", "Root", "onOpenChange", "nextOpen", "current", "DropdownMenu", "modal", "Trigger", "asChild", "Toolbar", "Button", "mx", "span", "className", "Icon", "size", "Portal", "Content", "side", "Arrow", "Viewport", "map", "CheckboxItem", "key", "checked", "onCheckedChange", "HuePicker", "props", "t", "useTranslation", "React", "ToolbarPickerButton", "Component", "HuePreview", "label", "icon", "values", "hues", "value", "size", "div", "className", "svg", "width", "height", "viewBox", "rect", "x", "y", "fill", "strokeWidth", "React", "Icon", "useTranslation", "IconPicker", "props", "t", "useTranslation", "React", "ToolbarPickerButton", "Component", "IconPreview", "label", "icon", "values", "iconValues", "value", "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/emoji.css":{"bytes":783,"imports":[]},"packages/ui/react-ui-pickers/src/components/EmojiPicker.tsx":{"bytes":19195,"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/emoji.css","kind":"import-statement","original":"./emoji.css"}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/ToolbarPicker.tsx":{"bytes":11504,"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},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/HuePicker.tsx":{"bytes":4122,"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/ToolbarPicker.tsx","kind":"import-statement","original":"./ToolbarPicker"}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/IconPicker.tsx":{"bytes":7443,"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/ToolbarPicker.tsx","kind":"import-statement","original":"./ToolbarPicker"}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/index.ts":{"bytes":810,"imports":[{"path":"packages/ui/react-ui-pickers/src/components/EmojiPicker.tsx","kind":"import-statement","original":"./EmojiPicker"},{"path":"packages/ui/react-ui-pickers/src/components/HuePicker.tsx","kind":"import-statement","original":"./HuePicker"},{"path":"packages/ui/react-ui-pickers/src/components/IconPicker.tsx","kind":"import-statement","original":"./IconPicker"},{"path":"packages/ui/react-ui-pickers/src/components/ToolbarPicker.tsx","kind":"import-statement","original":"./ToolbarPicker"}],"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":22041},"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":"@dxos/react-ui-theme","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","ToolbarPickerButton"],"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.tsx":{"bytesInOutput":5170},"packages/ui/react-ui-pickers/src/components/emoji.css":{"bytesInOutput":0},"packages/ui/react-ui-pickers/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-pickers/src/components/HuePicker.tsx":{"bytesInOutput":873},"packages/ui/react-ui-pickers/src/components/ToolbarPicker.tsx":{"bytesInOutput":3048},"packages/ui/react-ui-pickers/src/components/IconPicker.tsx":{"bytesInOutput":2002},"packages/ui/react-ui-pickers/src/index.ts":{"bytesInOutput":0}},"bytes":11553},"packages/ui/react-ui-pickers/dist/lib/browser/index.css.map":{"imports":[],"exports":[],"inputs":{},"bytes":1017},"packages/ui/react-ui-pickers/dist/lib/browser/index.css":{"imports":[],"inputs":{"packages/ui/react-ui-pickers/src/components/emoji.css":{"bytesInOutput":146}},"bytes":244}}}
|