@dxos/react-ui-pickers 0.7.5-labs.071a3e2

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.
Files changed (38) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +3 -0
  3. package/dist/lib/browser/index.css +7 -0
  4. package/dist/lib/browser/index.css.map +7 -0
  5. package/dist/lib/browser/index.mjs +268 -0
  6. package/dist/lib/browser/index.mjs.map +7 -0
  7. package/dist/lib/browser/meta.json +1 -0
  8. package/dist/lib/node/index.cjs +302 -0
  9. package/dist/lib/node/index.cjs.map +7 -0
  10. package/dist/lib/node/index.css +7 -0
  11. package/dist/lib/node/index.css.map +7 -0
  12. package/dist/lib/node/meta.json +1 -0
  13. package/dist/lib/node-esm/index.css +7 -0
  14. package/dist/lib/node-esm/index.css.map +7 -0
  15. package/dist/lib/node-esm/index.mjs +270 -0
  16. package/dist/lib/node-esm/index.mjs.map +7 -0
  17. package/dist/lib/node-esm/meta.json +1 -0
  18. package/dist/types/src/components/EmojiPicker.d.ts +19 -0
  19. package/dist/types/src/components/EmojiPicker.d.ts.map +1 -0
  20. package/dist/types/src/components/EmojiPicker.stories.d.ts +8 -0
  21. package/dist/types/src/components/EmojiPicker.stories.d.ts.map +1 -0
  22. package/dist/types/src/components/HuePicker.d.ts +18 -0
  23. package/dist/types/src/components/HuePicker.d.ts.map +1 -0
  24. package/dist/types/src/components/HuePicker.stories.d.ts +8 -0
  25. package/dist/types/src/components/HuePicker.stories.d.ts.map +1 -0
  26. package/dist/types/src/components/index.d.ts +3 -0
  27. package/dist/types/src/components/index.d.ts.map +1 -0
  28. package/dist/types/src/index.d.ts +2 -0
  29. package/dist/types/src/index.d.ts.map +1 -0
  30. package/dist/types/tsconfig.tsbuildinfo +1 -0
  31. package/package.json +52 -0
  32. package/src/components/EmojiPicker.stories.tsx +59 -0
  33. package/src/components/EmojiPicker.tsx +189 -0
  34. package/src/components/HuePicker.stories.tsx +55 -0
  35. package/src/components/HuePicker.tsx +184 -0
  36. package/src/components/emoji.css +25 -0
  37. package/src/components/index.ts +6 -0
  38. package/src/index.ts +5 -0
package/LICENSE ADDED
@@ -0,0 +1,8 @@
1
+ MIT License
2
+ Copyright (c) 2022 DXOS
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5
+
6
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @dxos/react-ui-pickers
2
+
3
+ Various picker components.
@@ -0,0 +1,7 @@
1
+ /* packages/ui/react-ui-pickers/src/components/emoji.css */
2
+ [data-theme=dark] em-emoji-picker {
3
+ --background-rgb: #3B3B3F;
4
+ --rgb-background: #3B3B3F;
5
+ --font-family: "Inter Variable", ui-sans-serif;
6
+ }
7
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/emoji.css"],
4
+ "sourcesContent": ["/**\n * https://github.com/missive/emoji-mart/blob/main/packages/emoji-mart-website/example-custom-styles.html\n */\n[data-theme=\"dark\"] em-emoji-picker {\n /* TODO(burdon): Get from TW defs: modal-surface? */\n --background-rgb: #3B3B3F;\n --rgb-background: #3B3B3F;\n\n --font-family: \"Inter Variable\", ui-sans-serif;\n\n /*--font-size: 16px;*/\n /*--color-border-over: rgba(0, 0, 0, 0.1);*/\n /*--color-border: rgba(0, 0, 0, 0.05);*/\n /*--category-icon-size: 24px;*/\n /*--border-radius: 24px;*/\n /*--font-family: 'Comic Sans MS', 'Chalkboard SE', cursive;*/\n /*--rgb-accent: 255, 105, 180;*/\n /*--rgb-color: 102, 51, 153;*/\n /*--rgb-input: 255, 235, 235;*/\n /*--shadow: 5px 5px 15px -8px rebeccapurple;*/\n\n /*height: 50vh;*/\n /*min-height: 400px;*/\n /*max-height: 800px;*/\n}\n"],
5
+ "mappings": ";AAGA,CAAC,iBAAmB;AAElB,oBAAkB;AAClB,oBAAkB;AAElB,iBAAe,gBAAgB,EAAE;AAgBnC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,268 @@
1
+ // packages/ui/react-ui-pickers/src/components/EmojiPicker.tsx
2
+ import emojiData from "@emoji-mart/data";
3
+ import EmojiMart from "@emoji-mart/react";
4
+ import { ArrowCounterClockwise, CaretDown, UserCircle } from "@phosphor-icons/react";
5
+ import { useControllableState } from "@radix-ui/react-use-controllable-state";
6
+ 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";
9
+ var EmojiPickerToolbarButton = ({ disabled, defaultEmoji, emoji, onChangeEmoji, classNames }) => {
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
+ const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);
20
+ return /* @__PURE__ */ React.createElement(Tooltip.Root, {
21
+ open: triggerTooltipOpen,
22
+ onOpenChange: (nextOpen) => {
23
+ if (suppressNextTooltip.current) {
24
+ setTriggerTooltipOpen(false);
25
+ suppressNextTooltip.current = false;
26
+ } else {
27
+ setTriggerTooltipOpen(nextOpen);
28
+ }
29
+ }
30
+ }, /* @__PURE__ */ React.createElement(Popover.Root, {
31
+ open: emojiPickerOpen,
32
+ onOpenChange: (nextOpen) => {
33
+ setEmojiPickerOpen(nextOpen);
34
+ suppressNextTooltip.current = true;
35
+ }
36
+ }, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
37
+ asChild: true
38
+ }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
39
+ asChild: true
40
+ }, /* @__PURE__ */ React.createElement(Toolbar.Button, {
41
+ classNames: [
42
+ "gap-2 text-2xl plb-1",
43
+ classNames
44
+ ],
45
+ disabled
46
+ }, /* @__PURE__ */ React.createElement("span", {
47
+ className: "sr-only"
48
+ }, t("select emoji label")), /* @__PURE__ */ React.createElement(UserCircle, {
49
+ className: getSize(5)
50
+ })))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, {
51
+ side: "bottom"
52
+ }, t("select emoji label"), /* @__PURE__ */ React.createElement(Tooltip.Arrow, null))), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, {
53
+ side: "bottom",
54
+ onKeyDownCapture: (event) => {
55
+ if (event.key === "Escape") {
56
+ event.stopPropagation();
57
+ setEmojiPickerOpen(false);
58
+ suppressNextTooltip.current = true;
59
+ }
60
+ }
61
+ }, /* @__PURE__ */ React.createElement(EmojiMart, {
62
+ data: emojiData,
63
+ onEmojiSelect: ({ native }) => {
64
+ if (native) {
65
+ setEmojiValue(native);
66
+ setEmojiPickerOpen(false);
67
+ }
68
+ },
69
+ autoFocus: true,
70
+ maxFrequentRows: 0,
71
+ noCountryFlags: true,
72
+ theme: themeMode
73
+ }), /* @__PURE__ */ React.createElement(Popover.Arrow, null)))));
74
+ };
75
+ var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }) => {
76
+ const { t } = useTranslation("os");
77
+ const [isMd] = useMediaQuery("md", {
78
+ ssr: false
79
+ });
80
+ const [emojiValue, setEmojiValue] = useControllableState({
81
+ prop: emoji,
82
+ onChange: onChangeEmoji,
83
+ defaultProp: defaultEmoji
84
+ });
85
+ const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
86
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Popover.Root, {
87
+ open: emojiPickerOpen,
88
+ onOpenChange: setEmojiPickerOpen
89
+ }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
90
+ asChild: true
91
+ }, /* @__PURE__ */ React.createElement(Button, {
92
+ variant: "ghost",
93
+ classNames: "gap-2 text-2xl plb-1",
94
+ disabled
95
+ }, /* @__PURE__ */ React.createElement("span", {
96
+ className: "sr-only"
97
+ }, t("select emoji label")), /* @__PURE__ */ React.createElement("span", {
98
+ className: "grow pis-14"
99
+ }, emojiValue), /* @__PURE__ */ React.createElement(CaretDown, {
100
+ className: getSize(4)
101
+ }))), /* @__PURE__ */ React.createElement(Popover.Content, {
102
+ side: "right",
103
+ sideOffset: isMd ? 0 : -310,
104
+ onKeyDownCapture: (event) => {
105
+ if (event.key === "Escape") {
106
+ event.stopPropagation();
107
+ setEmojiPickerOpen(false);
108
+ }
109
+ }
110
+ }, /* @__PURE__ */ React.createElement(EmojiMart, {
111
+ data: emojiData,
112
+ onEmojiSelect: ({ native }) => {
113
+ if (native) {
114
+ setEmojiValue(native);
115
+ setEmojiPickerOpen(false);
116
+ }
117
+ },
118
+ autoFocus: true,
119
+ maxFrequentRows: 0,
120
+ noCountryFlags: true
121
+ }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))), /* @__PURE__ */ React.createElement(Tooltip.Root, null, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
122
+ asChild: true
123
+ }, /* @__PURE__ */ React.createElement(Button, {
124
+ variant: "ghost",
125
+ onClick: onClickClear,
126
+ disabled
127
+ }, /* @__PURE__ */ React.createElement("span", {
128
+ className: "sr-only"
129
+ }, t("clear label")), /* @__PURE__ */ React.createElement(ArrowCounterClockwise, null))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, {
130
+ side: "right"
131
+ }, t("clear label"), /* @__PURE__ */ React.createElement(Tooltip.Arrow, null)))));
132
+ };
133
+
134
+ // packages/ui/react-ui-pickers/src/components/HuePicker.tsx
135
+ import { ArrowCounterClockwise as ArrowCounterClockwise2, CaretDown as CaretDown2, Check, Palette } from "@phosphor-icons/react";
136
+ import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
137
+ import React2, { useRef as useRef2, useState as useState2 } from "react";
138
+ import { Button as Button2, DropdownMenu, Toolbar as Toolbar2, Tooltip as Tooltip2, useThemeContext as useThemeContext2, useTranslation as useTranslation2 } from "@dxos/react-ui";
139
+ import { getSize as getSize2, hueTokenThemes, mx } from "@dxos/react-ui-theme";
140
+ var HuePreview = ({ hue }) => {
141
+ const { tx } = useThemeContext2();
142
+ const size = 20;
143
+ return /* @__PURE__ */ React2.createElement("svg", {
144
+ width: size,
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
164
+ });
165
+ const [huePickerOpen, setHuePickerOpen] = useState2(false);
166
+ const suppressNextTooltip = useRef2(false);
167
+ const [triggerTooltipOpen, setTriggerTooltipOpen] = useState2(false);
168
+ return /* @__PURE__ */ React2.createElement(Tooltip2.Root, {
169
+ open: triggerTooltipOpen,
170
+ onOpenChange: (nextOpen) => {
171
+ if (suppressNextTooltip.current) {
172
+ setTriggerTooltipOpen(false);
173
+ suppressNextTooltip.current = false;
174
+ } else {
175
+ setTriggerTooltipOpen(nextOpen);
176
+ }
177
+ }
178
+ }, /* @__PURE__ */ React2.createElement(DropdownMenu.Root, {
179
+ modal: false,
180
+ open: huePickerOpen,
181
+ onOpenChange: (nextOpen) => {
182
+ setHuePickerOpen(nextOpen);
183
+ suppressNextTooltip.current = true;
184
+ }
185
+ }, /* @__PURE__ */ React2.createElement(Tooltip2.Trigger, {
186
+ asChild: true
187
+ }, /* @__PURE__ */ React2.createElement(DropdownMenu.Trigger, {
188
+ asChild: true
189
+ }, /* @__PURE__ */ React2.createElement(Toolbar2.Button, {
190
+ classNames: mx("gap-2 plb-1", classNames),
191
+ disabled
192
+ }, /* @__PURE__ */ React2.createElement("span", {
193
+ className: "sr-only"
194
+ }, t("select hue label")), /* @__PURE__ */ React2.createElement(Palette, {
195
+ className: getSize2(5)
196
+ })))), /* @__PURE__ */ React2.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip2.Content, {
197
+ side: "bottom"
198
+ }, t("select hue label"), /* @__PURE__ */ React2.createElement(Tooltip2.Arrow, null))), /* @__PURE__ */ React2.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Content, {
199
+ side: "bottom",
200
+ classNames: "!w-40"
201
+ }, /* @__PURE__ */ React2.createElement(DropdownMenu.Viewport, {
202
+ classNames: "grid grid-cols-4"
203
+ }, hueTokens.map((hue2) => {
204
+ return /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
205
+ key: hue2,
206
+ checked: hue2 === hueValue,
207
+ onCheckedChange: () => setHueValue(hue2),
208
+ classNames: "px-0 py-2 items-center justify-center"
209
+ }, /* @__PURE__ */ React2.createElement(HuePreview, {
210
+ hue: hue2
211
+ }));
212
+ })), /* @__PURE__ */ React2.createElement(DropdownMenu.Arrow, null)))));
213
+ };
214
+ var HuePickerBlock = ({ disabled, hue, onChangeHue, defaultHue, onClickClear }) => {
215
+ const { t } = useTranslation2("os");
216
+ const [hueValue, setHueValue] = useControllableState2({
217
+ prop: hue,
218
+ onChange: onChangeHue,
219
+ defaultProp: defaultHue
220
+ });
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
+ export {
263
+ EmojiPickerBlock,
264
+ EmojiPickerToolbarButton,
265
+ HuePickerBlock,
266
+ HuePickerToolbarButton
267
+ };
268
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
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": "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",
6
+ "names": ["emojiData", "EmojiMart", "ArrowCounterClockwise", "CaretDown", "UserCircle", "useControllableState", "React", "useRef", "useState", "Button", "Popover", "Toolbar", "Tooltip", "useMediaQuery", "useThemeContext", "useTranslation", "getSize", "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", "UserCircle", "getSize", "Portal", "Content", "side", "Arrow", "onKeyDownCapture", "event", "key", "stopPropagation", "EmojiMart", "data", "emojiData", "onEmojiSelect", "native", "autoFocus", "maxFrequentRows", "noCountryFlags", "theme", "EmojiPickerBlock", "onClickClear", "isMd", "useMediaQuery", "ssr", "emojiValue", "variant", "CaretDown", "sideOffset", "onClick", "ArrowCounterClockwise", "ArrowCounterClockwise", "CaretDown", "Check", "Palette", "useControllableState", "React", "useRef", "useState", "Button", "DropdownMenu", "Toolbar", "Tooltip", "useThemeContext", "useTranslation", "getSize", "hueTokenThemes", "mx", "HuePreview", "hue", "tx", "useThemeContext", "size", "React", "svg", "width", "height", "viewBox", "rect", "x", "y", "className", "hueTokens", "Object", "keys", "hueTokenThemes", "slice", "HuePickerToolbarButton", "disabled", "onChangeHue", "classNames", "defaultHue", "t", "useTranslation", "hueValue", "setHueValue", "useControllableState", "prop", "onChange", "defaultProp", "huePickerOpen", "setHuePickerOpen", "useState", "suppressNextTooltip", "useRef", "triggerTooltipOpen", "setTriggerTooltipOpen", "Tooltip", "Root", "open", "onOpenChange", "nextOpen", "current", "DropdownMenu", "modal", "Trigger", "asChild", "Toolbar", "Button", "mx", "span", "Palette", "getSize", "Portal", "Content", "side", "Arrow", "Viewport", "map", "CheckboxItem", "key", "checked", "onCheckedChange", "HuePickerBlock", "onClickClear", "variant", "div", "role", "CaretDown", "ItemIndicator", "Check", "onClick", "ArrowCounterClockwise"]
7
+ }
@@ -0,0 +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":19368,"imports":[{"path":"@emoji-mart/data","kind":"import-statement","external":true},{"path":"@emoji-mart/react","kind":"import-statement","external":true},{"path":"@phosphor-icons/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":"@dxos/react-ui-theme","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/HuePicker.tsx":{"bytes":20029,"imports":[{"path":"@phosphor-icons/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":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-pickers/src/components/index.ts":{"bytes":611,"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"}],"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":21267},"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":"@phosphor-icons/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":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@phosphor-icons/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":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["EmojiPickerBlock","EmojiPickerToolbarButton","HuePickerBlock","HuePickerToolbarButton"],"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":5216},"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":5891},"packages/ui/react-ui-pickers/src/index.ts":{"bytesInOutput":0}},"bytes":11370},"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}}}