@dxos/react-ui-pickers 0.8.2-main.fbd8ed0 → 0.8.2-staging.42af850

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.
@@ -1,253 +1,283 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
3
  // packages/ui/react-ui-pickers/src/components/EmojiPicker/EmojiPicker.tsx
4
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
4
5
  import emojiData from "@emoji-mart/data";
5
6
  import EmojiMart from "@emoji-mart/react";
6
7
  import { useControllableState } from "@radix-ui/react-use-controllable-state";
7
- import React, { useRef, useState } from "react";
8
+ import React, { useState } from "react";
8
9
  import { Button, Popover, Toolbar, Tooltip, useMediaQuery, useThemeContext, useTranslation, Icon, ButtonGroup } from "@dxos/react-ui";
9
10
  var EmojiPickerToolbarButton = ({ classNames, emoji, disabled, defaultEmoji, onChangeEmoji }) => {
10
- const { t } = useTranslation("os");
11
- const { themeMode } = useThemeContext();
12
- const [_emojiValue, setEmojiValue] = useControllableState({
13
- prop: emoji,
14
- onChange: onChangeEmoji,
15
- defaultProp: defaultEmoji
16
- });
17
- const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
18
- const suppressNextTooltip = useRef(false);
19
- return /* @__PURE__ */ React.createElement(Popover.Root, {
20
- open: emojiPickerOpen,
21
- onOpenChange: (nextOpen) => {
22
- setEmojiPickerOpen(nextOpen);
23
- suppressNextTooltip.current = true;
24
- }
25
- }, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
26
- asChild: true,
27
- content: t("select emoji label"),
28
- side: "bottom",
29
- suppressNextTooltip
30
- }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
31
- asChild: true
32
- }, /* @__PURE__ */ React.createElement(Toolbar.Button, {
33
- classNames: [
34
- "gap-2 text-2xl plb-1",
35
- classNames
36
- ],
37
- disabled
38
- }, /* @__PURE__ */ React.createElement("span", {
39
- className: "sr-only"
40
- }, t("select emoji label")), /* @__PURE__ */ React.createElement(Icon, {
41
- icon: "ph--user-circle--regular",
42
- size: 5
43
- })))), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, {
44
- side: "bottom",
45
- onKeyDownCapture: (event) => {
46
- if (event.key === "Escape") {
47
- event.stopPropagation();
48
- setEmojiPickerOpen(false);
49
- suppressNextTooltip.current = true;
11
+ var _effect = _useSignals();
12
+ try {
13
+ const { t } = useTranslation("os");
14
+ const { themeMode } = useThemeContext();
15
+ const [_emojiValue, setEmojiValue] = useControllableState({
16
+ prop: emoji,
17
+ onChange: onChangeEmoji,
18
+ defaultProp: defaultEmoji
19
+ });
20
+ const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
21
+ return /* @__PURE__ */ React.createElement(Popover.Root, {
22
+ open: emojiPickerOpen,
23
+ onOpenChange: (nextOpen) => {
24
+ setEmojiPickerOpen(nextOpen);
50
25
  }
51
- }
52
- }, /* @__PURE__ */ React.createElement(EmojiMart, {
53
- data: emojiData,
54
- onEmojiSelect: ({ native }) => {
55
- if (native) {
56
- setEmojiValue(native);
57
- setEmojiPickerOpen(false);
26
+ }, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
27
+ asChild: true,
28
+ content: t("select emoji label"),
29
+ side: "bottom"
30
+ }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
31
+ asChild: true
32
+ }, /* @__PURE__ */ React.createElement(Toolbar.Button, {
33
+ classNames: [
34
+ "gap-2 text-2xl plb-1",
35
+ classNames
36
+ ],
37
+ disabled
38
+ }, /* @__PURE__ */ React.createElement("span", {
39
+ className: "sr-only"
40
+ }, t("select emoji label")), /* @__PURE__ */ React.createElement(Icon, {
41
+ icon: "ph--user-circle--regular",
42
+ size: 5
43
+ })))), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, {
44
+ side: "bottom",
45
+ onKeyDownCapture: (event) => {
46
+ if (event.key === "Escape") {
47
+ event.stopPropagation();
48
+ setEmojiPickerOpen(false);
49
+ }
58
50
  }
59
- },
60
- autoFocus: true,
61
- maxFrequentRows: 0,
62
- noCountryFlags: true,
63
- theme: themeMode
64
- }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))));
51
+ }, /* @__PURE__ */ React.createElement(EmojiMart, {
52
+ data: emojiData,
53
+ onEmojiSelect: ({ native }) => {
54
+ if (native) {
55
+ setEmojiValue(native);
56
+ setEmojiPickerOpen(false);
57
+ }
58
+ },
59
+ autoFocus: true,
60
+ maxFrequentRows: 0,
61
+ noCountryFlags: true,
62
+ theme: themeMode
63
+ }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))));
64
+ } finally {
65
+ _effect.f();
66
+ }
65
67
  };
66
68
  var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear, triggerVariant = "ghost", classNames }) => {
67
- const { t } = useTranslation("os");
68
- const [isMd] = useMediaQuery("md", {
69
- ssr: false
70
- });
71
- const [emojiValue, setEmojiValue] = useControllableState({
72
- prop: emoji,
73
- onChange: onChangeEmoji,
74
- defaultProp: defaultEmoji
75
- });
76
- const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
77
- return /* @__PURE__ */ React.createElement(ButtonGroup, {
78
- classNames
79
- }, /* @__PURE__ */ React.createElement(Popover.Root, {
80
- open: emojiPickerOpen,
81
- onOpenChange: setEmojiPickerOpen
82
- }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
83
- asChild: true
84
- }, /* @__PURE__ */ React.createElement(Button, {
85
- variant: triggerVariant,
86
- classNames: "grow gap-2 text-2xl plb-1",
87
- disabled
88
- }, /* @__PURE__ */ React.createElement("span", {
89
- className: "sr-only"
90
- }, t("select emoji label")), /* @__PURE__ */ React.createElement("span", null, emojiValue), /* @__PURE__ */ React.createElement(Icon, {
91
- icon: "ph--caret-down--bold",
92
- size: 3
93
- }))), /* @__PURE__ */ React.createElement(Popover.Content, {
94
- side: "right",
95
- sideOffset: isMd ? 0 : -310,
96
- onKeyDownCapture: (event) => {
97
- if (event.key === "Escape") {
98
- event.stopPropagation();
99
- setEmojiPickerOpen(false);
100
- }
101
- }
102
- }, /* @__PURE__ */ React.createElement(EmojiMart, {
103
- data: emojiData,
104
- onEmojiSelect: ({ native }) => {
105
- if (native) {
106
- setEmojiValue(native);
107
- setEmojiPickerOpen(false);
69
+ var _effect = _useSignals();
70
+ try {
71
+ const { t } = useTranslation("os");
72
+ const [isMd] = useMediaQuery("md", {
73
+ ssr: false
74
+ });
75
+ const [emojiValue, setEmojiValue] = useControllableState({
76
+ prop: emoji,
77
+ onChange: onChangeEmoji,
78
+ defaultProp: defaultEmoji
79
+ });
80
+ const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
81
+ return /* @__PURE__ */ React.createElement(ButtonGroup, {
82
+ classNames
83
+ }, /* @__PURE__ */ React.createElement(Popover.Root, {
84
+ open: emojiPickerOpen,
85
+ onOpenChange: setEmojiPickerOpen
86
+ }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
87
+ asChild: true
88
+ }, /* @__PURE__ */ React.createElement(Button, {
89
+ variant: triggerVariant,
90
+ classNames: "grow gap-2 text-2xl plb-1",
91
+ disabled
92
+ }, /* @__PURE__ */ React.createElement("span", {
93
+ className: "sr-only"
94
+ }, t("select emoji label")), /* @__PURE__ */ React.createElement("span", null, emojiValue), /* @__PURE__ */ React.createElement(Icon, {
95
+ icon: "ph--caret-down--bold",
96
+ size: 3
97
+ }))), /* @__PURE__ */ React.createElement(Popover.Content, {
98
+ side: "right",
99
+ sideOffset: isMd ? 0 : -310,
100
+ onKeyDownCapture: (event) => {
101
+ if (event.key === "Escape") {
102
+ event.stopPropagation();
103
+ setEmojiPickerOpen(false);
104
+ }
108
105
  }
109
- },
110
- autoFocus: true,
111
- maxFrequentRows: 0,
112
- noCountryFlags: true
113
- }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))), /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
114
- asChild: true,
115
- content: t("clear label"),
116
- side: "right"
117
- }, /* @__PURE__ */ React.createElement(Button, {
118
- variant: triggerVariant,
119
- onClick: onClickClear,
120
- disabled
121
- }, /* @__PURE__ */ React.createElement("span", {
122
- className: "sr-only"
123
- }, t("clear label")), /* @__PURE__ */ React.createElement(Icon, {
124
- icon: "ph--arrow-counter-clockwise--regular",
125
- size: 5
126
- }))));
106
+ }, /* @__PURE__ */ React.createElement(EmojiMart, {
107
+ data: emojiData,
108
+ onEmojiSelect: ({ native }) => {
109
+ if (native) {
110
+ setEmojiValue(native);
111
+ setEmojiPickerOpen(false);
112
+ }
113
+ },
114
+ autoFocus: true,
115
+ maxFrequentRows: 0,
116
+ noCountryFlags: true
117
+ }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))), /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
118
+ asChild: true,
119
+ content: t("clear label"),
120
+ side: "right"
121
+ }, /* @__PURE__ */ React.createElement(Button, {
122
+ variant: triggerVariant,
123
+ onClick: onClickClear,
124
+ disabled
125
+ }, /* @__PURE__ */ React.createElement("span", {
126
+ className: "sr-only"
127
+ }, t("clear label")), /* @__PURE__ */ React.createElement(Icon, {
128
+ icon: "ph--arrow-counter-clockwise--regular",
129
+ size: 5
130
+ }))));
131
+ } finally {
132
+ _effect.f();
133
+ }
127
134
  };
128
135
 
129
136
  // packages/ui/react-ui-pickers/src/components/HuePicker/HuePicker.tsx
137
+ import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
130
138
  import React3 from "react";
131
139
  import { useTranslation as useTranslation2 } from "@dxos/react-ui";
132
140
  import { hues } from "@dxos/react-ui-theme";
133
141
 
134
142
  // packages/ui/react-ui-pickers/src/components/PickerButton/PickerButton.tsx
143
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
135
144
  import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
136
- import React2, { useEffect, useRef as useRef2, useState as useState2 } from "react";
145
+ import React2, { useEffect, useState as useState2 } from "react";
137
146
  import { Button as Button2, DropdownMenu, Icon as Icon2, Toolbar as Toolbar2, Tooltip as Tooltip2 } from "@dxos/react-ui";
138
147
  var PickerButton = ({ Component, disabled, classNames, defaultValue: _defaultValue, value: _value, values, label, icon, onChange, onReset, rootVariant = "button", iconSize = 5 }) => {
139
- const [value, setValue] = useControllableState2({
140
- prop: _value,
141
- defaultProp: _defaultValue,
142
- onChange
143
- });
144
- useEffect(() => setValue(_value), [
145
- _value
146
- ]);
147
- const [open, setOpen] = useState2(false);
148
- const suppressNextTooltip = useRef2(false);
149
- const TriggerRoot = rootVariant === "toolbar-button" ? Toolbar2.Button : Button2;
150
- return /* @__PURE__ */ React2.createElement(DropdownMenu.Root, {
151
- modal: false,
152
- open,
153
- onOpenChange: (nextOpen) => {
154
- setOpen(nextOpen);
155
- suppressNextTooltip.current = true;
156
- }
157
- }, /* @__PURE__ */ React2.createElement(Tooltip2.Trigger, {
158
- asChild: true,
159
- content: label,
160
- side: "bottom",
161
- suppressNextTooltip
162
- }, /* @__PURE__ */ React2.createElement(DropdownMenu.Trigger, {
163
- asChild: true
164
- }, /* @__PURE__ */ React2.createElement(TriggerRoot, {
165
- classNames: [
166
- "gap-2 plb-1",
167
- classNames
168
- ],
169
- disabled
170
- }, /* @__PURE__ */ React2.createElement("span", {
171
- className: "sr-only"
172
- }, label), value && /* @__PURE__ */ React2.createElement(Component, {
173
- value,
174
- iconSize
175
- }) || /* @__PURE__ */ React2.createElement(Icon2, {
176
- icon,
177
- size: iconSize
178
- }), /* @__PURE__ */ React2.createElement(Icon2, {
179
- icon: "ph--caret-down--bold",
180
- size: 3
181
- })))), /* @__PURE__ */ React2.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Content, {
182
- side: "bottom",
183
- classNames: "!is-min"
184
- }, /* @__PURE__ */ React2.createElement(DropdownMenu.Viewport, {
185
- classNames: "grid grid-cols-[repeat(6,min-content)]"
186
- }, values.map((_value2) => {
187
- return /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
188
- key: _value2,
189
- checked: _value2 === value,
190
- onCheckedChange: () => setValue(_value2),
191
- classNames: "p-1 items-center justify-center aspect-square"
192
- }, /* @__PURE__ */ React2.createElement(Component, {
193
- value: _value2,
148
+ var _effect = _useSignals2();
149
+ try {
150
+ const [value, setValue] = useControllableState2({
151
+ prop: _value,
152
+ defaultProp: _defaultValue,
153
+ onChange
154
+ });
155
+ useEffect(() => setValue(_value), [
156
+ _value
157
+ ]);
158
+ const [open, setOpen] = useState2(false);
159
+ const TriggerRoot = rootVariant === "toolbar-button" ? Toolbar2.Button : Button2;
160
+ return /* @__PURE__ */ React2.createElement(DropdownMenu.Root, {
161
+ modal: false,
162
+ open,
163
+ onOpenChange: setOpen
164
+ }, /* @__PURE__ */ React2.createElement(Tooltip2.Trigger, {
165
+ asChild: true,
166
+ content: label,
167
+ side: "bottom"
168
+ }, /* @__PURE__ */ React2.createElement(DropdownMenu.Trigger, {
169
+ asChild: true
170
+ }, /* @__PURE__ */ React2.createElement(TriggerRoot, {
171
+ classNames: [
172
+ "gap-2 plb-1",
173
+ classNames
174
+ ],
175
+ disabled
176
+ }, /* @__PURE__ */ React2.createElement("span", {
177
+ className: "sr-only"
178
+ }, label), value && /* @__PURE__ */ React2.createElement(Component, {
179
+ value,
194
180
  iconSize
195
- }));
196
- }), onReset && /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
197
- onCheckedChange: () => onReset(),
198
- classNames: "p-1 items-center justify-center aspect-square"
199
- }, /* @__PURE__ */ React2.createElement(Icon2, {
200
- icon: "ph--x--regular",
201
- size: iconSize
202
- }))), /* @__PURE__ */ React2.createElement(DropdownMenu.Arrow, null))));
181
+ }) || /* @__PURE__ */ React2.createElement(Icon2, {
182
+ icon,
183
+ size: iconSize
184
+ }), /* @__PURE__ */ React2.createElement(Icon2, {
185
+ icon: "ph--caret-down--bold",
186
+ size: 3
187
+ })))), /* @__PURE__ */ React2.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Content, {
188
+ side: "bottom",
189
+ classNames: "!is-min"
190
+ }, /* @__PURE__ */ React2.createElement(DropdownMenu.Viewport, {
191
+ classNames: "grid grid-cols-[repeat(6,min-content)]"
192
+ }, values.map((_value2) => {
193
+ return /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
194
+ key: _value2,
195
+ checked: _value2 === value,
196
+ onCheckedChange: () => setValue(_value2),
197
+ classNames: "p-1 items-center justify-center aspect-square"
198
+ }, /* @__PURE__ */ React2.createElement(Component, {
199
+ value: _value2,
200
+ iconSize
201
+ }));
202
+ }), onReset && /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
203
+ onCheckedChange: () => onReset(),
204
+ classNames: "p-1 items-center justify-center aspect-square"
205
+ }, /* @__PURE__ */ React2.createElement(Icon2, {
206
+ icon: "ph--x--regular",
207
+ size: iconSize
208
+ }))), /* @__PURE__ */ React2.createElement(DropdownMenu.Arrow, null))));
209
+ } finally {
210
+ _effect.f();
211
+ }
203
212
  };
204
213
 
205
214
  // packages/ui/react-ui-pickers/src/components/HuePicker/HuePicker.tsx
206
215
  var HuePicker = (props) => {
207
- const { t } = useTranslation2("os");
208
- return /* @__PURE__ */ React3.createElement(PickerButton, {
209
- Component: HuePreview,
210
- label: t("select hue label"),
211
- icon: "ph--palette--regular",
212
- values: hues,
213
- ...props
214
- });
216
+ var _effect = _useSignals3();
217
+ try {
218
+ const { t } = useTranslation2("os");
219
+ return /* @__PURE__ */ React3.createElement(PickerButton, {
220
+ Component: HuePreview,
221
+ label: t("select hue label"),
222
+ icon: "ph--palette--regular",
223
+ values: hues,
224
+ ...props
225
+ });
226
+ } finally {
227
+ _effect.f();
228
+ }
215
229
  };
216
230
  var HuePreview = ({ value }) => {
217
- const size = 16;
218
- return /* @__PURE__ */ React3.createElement("div", {
219
- className: "flex p-[2px] justify-center items-center"
220
- }, /* @__PURE__ */ React3.createElement("svg", {
221
- viewBox: `0 0 ${size} ${size}`,
222
- className: "is-[var(--hue-preview-size,1rem)] bs-[var(--hue-preview-size,1rem)]"
223
- }, /* @__PURE__ */ React3.createElement("rect", {
224
- x: 0,
225
- y: 0,
226
- width: size,
227
- height: size,
228
- fill: `var(--dx-${value}Fill)`,
229
- strokeWidth: 4
230
- })));
231
+ var _effect = _useSignals3();
232
+ try {
233
+ const size = 16;
234
+ return /* @__PURE__ */ React3.createElement("div", {
235
+ className: "flex p-[2px] justify-center items-center"
236
+ }, /* @__PURE__ */ React3.createElement("svg", {
237
+ viewBox: `0 0 ${size} ${size}`,
238
+ className: "is-[var(--hue-preview-size,1rem)] bs-[var(--hue-preview-size,1rem)]"
239
+ }, /* @__PURE__ */ React3.createElement("rect", {
240
+ x: 0,
241
+ y: 0,
242
+ width: size,
243
+ height: size,
244
+ fill: `var(--dx-${value}Fill)`,
245
+ strokeWidth: 4
246
+ })));
247
+ } finally {
248
+ _effect.f();
249
+ }
231
250
  };
232
251
 
233
252
  // packages/ui/react-ui-pickers/src/components/IconPicker/IconPicker.tsx
253
+ import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
234
254
  import React4 from "react";
235
255
  import { Icon as Icon3, useTranslation as useTranslation3 } from "@dxos/react-ui";
236
256
  var IconPicker = ({ ...props }) => {
237
- const { t } = useTranslation3("os");
238
- return /* @__PURE__ */ React4.createElement(PickerButton, {
239
- Component: IconPreview,
240
- label: t("select icon label"),
241
- icon: "ph--selection--regular",
242
- values: iconValues,
243
- ...props
244
- });
257
+ var _effect = _useSignals4();
258
+ try {
259
+ const { t } = useTranslation3("os");
260
+ return /* @__PURE__ */ React4.createElement(PickerButton, {
261
+ Component: IconPreview,
262
+ label: t("select icon label"),
263
+ icon: "ph--selection--regular",
264
+ values: iconValues,
265
+ ...props
266
+ });
267
+ } finally {
268
+ _effect.f();
269
+ }
245
270
  };
246
271
  var IconPreview = ({ value, iconSize = 5 }) => {
247
- return /* @__PURE__ */ React4.createElement(Icon3, {
248
- icon: `ph--${value}--regular`,
249
- size: iconSize
250
- });
272
+ var _effect = _useSignals4();
273
+ try {
274
+ return /* @__PURE__ */ React4.createElement(Icon3, {
275
+ icon: `ph--${value}--regular`,
276
+ size: iconSize
277
+ });
278
+ } finally {
279
+ _effect.f();
280
+ }
251
281
  };
252
282
  var icons = [
253
283
  "ph--air-traffic-control--regular",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
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\n return (\n <Popover.Root\n open={emojiPickerOpen}\n onOpenChange={(nextOpen) => {\n setEmojiPickerOpen(nextOpen);\n suppressNextTooltip.current = true;\n }}\n >\n <Tooltip.Trigger\n asChild\n content={t('select emoji label')}\n side='bottom'\n suppressNextTooltip={suppressNextTooltip}\n >\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 <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 );\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.Trigger asChild content={t('clear label')} side='right'>\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 </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\n const TriggerRoot = rootVariant === 'toolbar-button' ? Toolbar.Button : Button;\n\n return (\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 content={label} side='bottom' suppressNextTooltip={suppressNextTooltip}>\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 <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 );\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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AAetF,IAAMC,aAAa,CAAC,EAAE,GAAGC,MAAAA,MAAyC;AACvE,QAAM,EAAEC,EAAC,IAAKC,gBAAe,IAAA;AAE7B,SACE,gBAAAC,OAAA,cAACC,cAAAA;IACCC,WAAWC;IACXC,OAAON,EAAE,mBAAA;IACTO,MAAK;IACLC,QAAQC;IACP,GAAGV;;AAGV;AAEA,IAAMM,cAAc,CAAC,EAAEK,OAAOC,WAAW,EAAC,MAAmD;AAC3F,SAAO,gBAAAT,OAAA,cAACU,OAAAA;IAAKL,MAAM,OAAOG,KAAAA;IAAkBG,MAAMF;;AACpD;AAMA,IAAMG,QAAQ;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,IAAML,aAAaK,MAAMC,IAAI,CAACR,SAASA,KAAKS,MAAM,mBAAA,IAAuB,CAAA,KAAMT,IAAAA;",
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", "Popover", "Root", "open", "onOpenChange", "nextOpen", "current", "Tooltip", "Trigger", "asChild", "content", "side", "Toolbar", "Button", "span", "className", "Icon", "icon", "size", "Portal", "Content", "onKeyDownCapture", "event", "key", "stopPropagation", "EmojiMart", "data", "emojiData", "onEmojiSelect", "native", "autoFocus", "maxFrequentRows", "noCountryFlags", "theme", "Arrow", "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", "TriggerRoot", "Toolbar", "Button", "React", "DropdownMenu", "Root", "modal", "onOpenChange", "nextOpen", "current", "Tooltip", "Trigger", "asChild", "content", "side", "span", "className", "Icon", "size", "Portal", "Content", "Viewport", "map", "CheckboxItem", "key", "checked", "onCheckedChange", "Arrow", "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"]
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, { 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\n return (\n <Popover.Root\n open={emojiPickerOpen}\n onOpenChange={(nextOpen) => {\n setEmojiPickerOpen(nextOpen);\n }}\n >\n <Tooltip.Trigger asChild content={t('select emoji label')} side='bottom'>\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 <Popover.Portal>\n <Popover.Content\n side='bottom'\n onKeyDownCapture={(event) => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n setEmojiPickerOpen(false);\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 );\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.Trigger asChild content={t('clear label')} side='right'>\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 </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, 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 TriggerRoot = rootVariant === 'toolbar-button' ? Toolbar.Button : Button;\n\n return (\n <DropdownMenu.Root modal={false} open={open} onOpenChange={setOpen}>\n <Tooltip.Trigger asChild content={label} side='bottom'>\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 <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 );\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", "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", "Popover", "Root", "open", "onOpenChange", "nextOpen", "Tooltip", "Trigger", "asChild", "content", "side", "Toolbar", "Button", "span", "className", "Icon", "icon", "size", "Portal", "Content", "onKeyDownCapture", "event", "key", "stopPropagation", "EmojiMart", "data", "emojiData", "onEmojiSelect", "native", "autoFocus", "maxFrequentRows", "noCountryFlags", "theme", "Arrow", "EmojiPickerBlock", "onClickClear", "triggerVariant", "isMd", "useMediaQuery", "ssr", "emojiValue", "ButtonGroup", "variant", "sideOffset", "onClick", "React", "useTranslation", "hues", "useControllableState", "React", "useEffect", "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", "TriggerRoot", "Toolbar", "Button", "React", "DropdownMenu", "Root", "modal", "onOpenChange", "Tooltip", "Trigger", "asChild", "content", "side", "span", "className", "Icon", "size", "Portal", "Content", "Viewport", "map", "CheckboxItem", "key", "checked", "onCheckedChange", "Arrow", "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
  }