@dxos/react-ui-pickers 0.8.3 → 0.8.4-main.1068cf700f

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 (45) hide show
  1. package/dist/lib/browser/chunk-IEOELSPW.mjs +64 -0
  2. package/dist/lib/browser/chunk-IEOELSPW.mjs.map +7 -0
  3. package/dist/lib/browser/components/IconPicker/icons.mjs +9 -0
  4. package/dist/lib/browser/components/IconPicker/icons.mjs.map +7 -0
  5. package/dist/lib/browser/index.css +1 -1
  6. package/dist/lib/browser/index.mjs +200 -300
  7. package/dist/lib/browser/index.mjs.map +3 -3
  8. package/dist/lib/browser/meta.json +1 -1
  9. package/dist/lib/node-esm/chunk-OLGXN23I.mjs +66 -0
  10. package/dist/lib/node-esm/chunk-OLGXN23I.mjs.map +7 -0
  11. package/dist/lib/node-esm/components/IconPicker/icons.mjs +10 -0
  12. package/dist/lib/node-esm/components/IconPicker/icons.mjs.map +7 -0
  13. package/dist/lib/node-esm/index.css +1 -1
  14. package/dist/lib/node-esm/index.mjs +199 -300
  15. package/dist/lib/node-esm/index.mjs.map +3 -3
  16. package/dist/lib/node-esm/meta.json +1 -1
  17. package/dist/types/src/components/EmojiPicker/EmojiPicker.d.ts.map +1 -1
  18. package/dist/types/src/components/EmojiPicker/EmojiPicker.stories.d.ts +8 -4
  19. package/dist/types/src/components/EmojiPicker/EmojiPicker.stories.d.ts.map +1 -1
  20. package/dist/types/src/components/HuePicker/HuePicker.d.ts.map +1 -1
  21. package/dist/types/src/components/HuePicker/HuePicker.stories.d.ts +10 -4
  22. package/dist/types/src/components/HuePicker/HuePicker.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/IconPicker/IconPicker.d.ts +1 -1
  24. package/dist/types/src/components/IconPicker/IconPicker.d.ts.map +1 -1
  25. package/dist/types/src/components/IconPicker/IconPicker.stories.d.ts +10 -4
  26. package/dist/types/src/components/IconPicker/IconPicker.stories.d.ts.map +1 -1
  27. package/dist/types/src/components/IconPicker/icons.d.ts +7 -0
  28. package/dist/types/src/components/IconPicker/icons.d.ts.map +1 -0
  29. package/dist/types/src/components/PickerButton/PickerButton.d.ts +2 -2
  30. package/dist/types/src/components/PickerButton/PickerButton.d.ts.map +1 -1
  31. package/dist/types/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +32 -18
  33. package/src/components/EmojiPicker/EmojiPicker.stories.tsx +13 -16
  34. package/src/components/EmojiPicker/EmojiPicker.tsx +25 -20
  35. package/src/components/HuePicker/HuePicker.stories.tsx +11 -13
  36. package/src/components/HuePicker/HuePicker.tsx +6 -10
  37. package/src/components/IconPicker/IconPicker.stories.tsx +11 -13
  38. package/src/components/IconPicker/IconPicker.tsx +7 -61
  39. package/src/components/IconPicker/icons.ts +66 -0
  40. package/src/components/PickerButton/PickerButton.tsx +8 -9
  41. package/dist/lib/node/index.cjs +0 -367
  42. package/dist/lib/node/index.cjs.map +0 -7
  43. package/dist/lib/node/index.css +0 -7
  44. package/dist/lib/node/index.css.map +0 -7
  45. package/dist/lib/node/meta.json +0 -1
@@ -0,0 +1,64 @@
1
+ // src/components/IconPicker/icons.ts
2
+ var icons = [
3
+ "ph--house-line--regular",
4
+ "ph--planet--regular",
5
+ "ph--castle-turret--regular",
6
+ "ph--snowflake--regular",
7
+ "ph--virus--regular",
8
+ "ph--graph--regular",
9
+ "ph--air-traffic-control--regular",
10
+ "ph--asterisk--regular",
11
+ "ph--atom--regular",
12
+ "ph--basketball--regular",
13
+ "ph--butterfly--regular",
14
+ "ph--cactus--regular",
15
+ "ph--cake--regular",
16
+ "ph--calendar-dots--regular",
17
+ "ph--campfire--regular",
18
+ "ph--command--regular",
19
+ "ph--confetti--regular",
20
+ "ph--detective--regular",
21
+ "ph--disco-ball--regular",
22
+ "ph--dna--regular",
23
+ "ph--factory--regular",
24
+ "ph--flag-banner-fold--regular",
25
+ "ph--flask--regular",
26
+ "ph--flower-lotus--regular",
27
+ "ph--flying-saucer--regular",
28
+ "ph--game-controller--regular",
29
+ "ph--gavel--regular",
30
+ "ph--gift--regular",
31
+ "ph--guitar--regular",
32
+ "ph--hamburger--regular",
33
+ "ph--handshake--regular",
34
+ "ph--heart--regular",
35
+ "ph--lightbulb--regular",
36
+ "ph--lock--regular",
37
+ "ph--martini--regular",
38
+ "ph--medal-military--regular",
39
+ "ph--moped-front--regular",
40
+ "ph--office-chair--regular",
41
+ "ph--paint-brush-household--regular",
42
+ "ph--peace--regular",
43
+ "ph--person-simple-hike--regular",
44
+ "ph--piggy-bank--regular",
45
+ "ph--potted-plant--regular",
46
+ "ph--radioactive--regular",
47
+ "ph--rocket-launch--regular",
48
+ "ph--shield-star--regular",
49
+ "ph--shopping-cart--regular",
50
+ "ph--stethoscope--regular",
51
+ "ph--student--regular",
52
+ "ph--sun--regular",
53
+ "ph--tote--regular",
54
+ "ph--tree--regular",
55
+ "ph--users-three--regular",
56
+ "ph--yin-yang--regular"
57
+ ];
58
+ var iconValues = icons.map((icon) => icon.match(/ph--(.+)--regular/)?.[1] ?? icon);
59
+
60
+ export {
61
+ icons,
62
+ iconValues
63
+ };
64
+ //# sourceMappingURL=chunk-IEOELSPW.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/IconPicker/icons.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n/**\n * https://phosphoricons.com\n * NOTE: Select icons that we are unlikely to use for the UI.\n */\nexport const icons = [\n 'ph--house-line--regular',\n 'ph--planet--regular',\n 'ph--castle-turret--regular',\n 'ph--snowflake--regular',\n 'ph--virus--regular',\n 'ph--graph--regular',\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\nexport const iconValues = icons.map((icon) => icon.match(/ph--(.+)--regular/)?.[1] ?? icon);\n"],
5
+ "mappings": ";AAQO,IAAMA,QAAQ;EACnB;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;EACA;EACA;EACA;EACA;EACA;EACA;;AAGK,IAAMC,aAAaD,MAAME,IAAI,CAACC,SAASA,KAAKC,MAAM,mBAAA,IAAuB,CAAA,KAAMD,IAAAA;",
6
+ "names": ["icons", "iconValues", "map", "icon", "match"]
7
+ }
@@ -0,0 +1,9 @@
1
+ import {
2
+ iconValues,
3
+ icons
4
+ } from "../../chunk-IEOELSPW.mjs";
5
+ export {
6
+ iconValues,
7
+ icons
8
+ };
9
+ //# sourceMappingURL=icons.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,4 +1,4 @@
1
- /* packages/ui/react-ui-pickers/src/components/EmojiPicker/emoji.css */
1
+ /* src/components/EmojiPicker/emoji.css */
2
2
  [data-theme=dark] em-emoji-picker {
3
3
  --background-rgb: #3B3B3F;
4
4
  --rgb-background: #3B3B3F;
@@ -1,333 +1,233 @@
1
- // packages/ui/react-ui-pickers/src/components/EmojiPicker/EmojiPicker.tsx
2
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
1
+ import {
2
+ iconValues
3
+ } from "./chunk-IEOELSPW.mjs";
4
+
5
+ // src/components/EmojiPicker/EmojiPicker.tsx
3
6
  import emojiData from "@emoji-mart/data";
4
7
  import EmojiMart from "@emoji-mart/react";
5
8
  import { useControllableState } from "@radix-ui/react-use-controllable-state";
6
9
  import React, { useState } from "react";
7
- import { Button, Popover, Toolbar, Tooltip, useMediaQuery, useThemeContext, useTranslation, Icon, ButtonGroup } from "@dxos/react-ui";
10
+ import { Button, ButtonGroup, Icon, IconButton, Popover, Toolbar, useMediaQuery, useThemeContext, useTranslation } from "@dxos/react-ui";
11
+ import { osTranslations } from "@dxos/ui-theme";
8
12
  var EmojiPickerToolbarButton = ({ classNames, emoji, disabled, defaultEmoji, onChangeEmoji }) => {
9
- var _effect = _useSignals();
10
- try {
11
- const { t } = useTranslation("os");
12
- const { themeMode } = useThemeContext();
13
- const [_emojiValue, setEmojiValue] = useControllableState({
14
- prop: emoji,
15
- onChange: onChangeEmoji,
16
- defaultProp: defaultEmoji
17
- });
18
- const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
19
- return /* @__PURE__ */ React.createElement(Popover.Root, {
20
- open: emojiPickerOpen,
21
- onOpenChange: (nextOpen) => {
22
- setEmojiPickerOpen(nextOpen);
13
+ const { t } = useTranslation(osTranslations);
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);
25
+ }
26
+ }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
27
+ asChild: true
28
+ }, /* @__PURE__ */ React.createElement(Toolbar.IconButton, {
29
+ icon: "ph--user-circle--regular",
30
+ label: t("select emoji label"),
31
+ iconOnly: true,
32
+ tooltipSide: "bottom",
33
+ disabled
34
+ })), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, {
35
+ side: "bottom",
36
+ onKeyDownCapture: (event) => {
37
+ if (event.key === "Escape") {
38
+ event.stopPropagation();
39
+ setEmojiPickerOpen(false);
23
40
  }
24
- }, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
25
- asChild: true,
26
- content: t("select emoji label"),
27
- side: "bottom"
28
- }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
29
- asChild: true
30
- }, /* @__PURE__ */ React.createElement(Toolbar.Button, {
31
- classNames: [
32
- "gap-2 text-2xl plb-1",
33
- classNames
34
- ],
35
- disabled
36
- }, /* @__PURE__ */ React.createElement("span", {
37
- className: "sr-only"
38
- }, t("select emoji label")), /* @__PURE__ */ React.createElement(Icon, {
39
- icon: "ph--user-circle--regular",
40
- size: 5
41
- })))), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, {
42
- side: "bottom",
43
- onKeyDownCapture: (event) => {
44
- if (event.key === "Escape") {
45
- event.stopPropagation();
46
- setEmojiPickerOpen(false);
47
- }
41
+ }
42
+ }, /* @__PURE__ */ React.createElement(EmojiMart, {
43
+ data: emojiData,
44
+ onEmojiSelect: ({ native }) => {
45
+ if (native) {
46
+ setEmojiValue(native);
47
+ setEmojiPickerOpen(false);
48
48
  }
49
- }, /* @__PURE__ */ React.createElement(EmojiMart, {
50
- data: emojiData,
51
- onEmojiSelect: ({ native }) => {
52
- if (native) {
53
- setEmojiValue(native);
54
- setEmojiPickerOpen(false);
55
- }
56
- },
57
- autoFocus: true,
58
- maxFrequentRows: 0,
59
- noCountryFlags: true,
60
- theme: themeMode
61
- }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))));
62
- } finally {
63
- _effect.f();
64
- }
49
+ },
50
+ autoFocus: true,
51
+ maxFrequentRows: 0,
52
+ noCountryFlags: true,
53
+ theme: themeMode
54
+ }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))));
65
55
  };
66
56
  var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear, triggerVariant = "ghost", classNames }) => {
67
- var _effect = _useSignals();
68
- try {
69
- const { t } = useTranslation("os");
70
- const [isMd] = useMediaQuery("md", {
71
- ssr: false
72
- });
73
- const [emojiValue, setEmojiValue] = useControllableState({
74
- prop: emoji,
75
- onChange: onChangeEmoji,
76
- defaultProp: defaultEmoji
77
- });
78
- const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
79
- return /* @__PURE__ */ React.createElement(ButtonGroup, {
80
- classNames
81
- }, /* @__PURE__ */ React.createElement(Popover.Root, {
82
- open: emojiPickerOpen,
83
- onOpenChange: setEmojiPickerOpen
84
- }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
85
- asChild: true
86
- }, /* @__PURE__ */ React.createElement(Button, {
87
- variant: triggerVariant,
88
- classNames: "grow gap-2 text-2xl plb-1",
89
- disabled
90
- }, /* @__PURE__ */ React.createElement("span", {
91
- className: "sr-only"
92
- }, t("select emoji label")), /* @__PURE__ */ React.createElement("span", null, emojiValue), /* @__PURE__ */ React.createElement(Icon, {
93
- icon: "ph--caret-down--bold",
94
- size: 3
95
- }))), /* @__PURE__ */ React.createElement(Popover.Content, {
96
- side: "right",
97
- sideOffset: isMd ? 0 : -310,
98
- onKeyDownCapture: (event) => {
99
- if (event.key === "Escape") {
100
- event.stopPropagation();
101
- setEmojiPickerOpen(false);
102
- }
57
+ const { t } = useTranslation(osTranslations);
58
+ const [isMd] = useMediaQuery("md");
59
+ const [emojiValue, setEmojiValue] = useControllableState({
60
+ prop: emoji,
61
+ onChange: onChangeEmoji,
62
+ defaultProp: defaultEmoji
63
+ });
64
+ const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
65
+ return /* @__PURE__ */ React.createElement(ButtonGroup, {
66
+ classNames
67
+ }, /* @__PURE__ */ React.createElement(Popover.Root, {
68
+ open: emojiPickerOpen,
69
+ onOpenChange: setEmojiPickerOpen
70
+ }, /* @__PURE__ */ React.createElement(Popover.Trigger, {
71
+ asChild: true
72
+ }, /* @__PURE__ */ React.createElement(Button, {
73
+ variant: triggerVariant,
74
+ classNames: "grow gap-2 text-2xl plb-1",
75
+ disabled
76
+ }, /* @__PURE__ */ React.createElement("span", {
77
+ className: "sr-only"
78
+ }, t("select emoji label")), /* @__PURE__ */ React.createElement("span", null, emojiValue), /* @__PURE__ */ React.createElement(Icon, {
79
+ icon: "ph--caret-down--bold",
80
+ size: 3
81
+ }))), /* @__PURE__ */ React.createElement(Popover.Content, {
82
+ side: "right",
83
+ sideOffset: isMd ? 0 : -310,
84
+ onKeyDownCapture: (event) => {
85
+ if (event.key === "Escape") {
86
+ event.stopPropagation();
87
+ setEmojiPickerOpen(false);
88
+ }
89
+ }
90
+ }, /* @__PURE__ */ React.createElement(EmojiMart, {
91
+ data: emojiData,
92
+ onEmojiSelect: ({ native }) => {
93
+ if (native) {
94
+ setEmojiValue(native);
95
+ setEmojiPickerOpen(false);
103
96
  }
104
- }, /* @__PURE__ */ React.createElement(EmojiMart, {
105
- data: emojiData,
106
- onEmojiSelect: ({ native }) => {
107
- if (native) {
108
- setEmojiValue(native);
109
- setEmojiPickerOpen(false);
110
- }
111
- },
112
- autoFocus: true,
113
- maxFrequentRows: 0,
114
- noCountryFlags: true
115
- }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))), /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
116
- asChild: true,
117
- content: t("clear label"),
118
- side: "right"
119
- }, /* @__PURE__ */ React.createElement(Button, {
120
- variant: triggerVariant,
121
- onClick: onClickClear,
122
- disabled
123
- }, /* @__PURE__ */ React.createElement("span", {
124
- className: "sr-only"
125
- }, t("clear label")), /* @__PURE__ */ React.createElement(Icon, {
126
- icon: "ph--arrow-counter-clockwise--regular",
127
- size: 5
128
- }))));
129
- } finally {
130
- _effect.f();
131
- }
97
+ },
98
+ autoFocus: true,
99
+ maxFrequentRows: 0,
100
+ noCountryFlags: true
101
+ }), /* @__PURE__ */ React.createElement(Popover.Arrow, null))), /* @__PURE__ */ React.createElement(IconButton, {
102
+ icon: "ph--arrow-counter-clockwise--regular",
103
+ iconOnly: true,
104
+ label: t("clear label"),
105
+ tooltipSide: "right",
106
+ variant: triggerVariant,
107
+ onClick: onClickClear,
108
+ disabled
109
+ }));
132
110
  };
133
111
 
134
- // packages/ui/react-ui-pickers/src/components/HuePicker/HuePicker.tsx
135
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
112
+ // src/components/HuePicker/HuePicker.tsx
136
113
  import React3 from "react";
137
114
  import { useTranslation as useTranslation2 } from "@dxos/react-ui";
138
- import { hues } from "@dxos/react-ui-theme";
115
+ import { getSize, hues, osTranslations as osTranslations2 } from "@dxos/ui-theme";
139
116
 
140
- // packages/ui/react-ui-pickers/src/components/PickerButton/PickerButton.tsx
141
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
117
+ // src/components/PickerButton/PickerButton.tsx
142
118
  import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
143
119
  import React2, { useEffect, useState as useState2 } from "react";
144
- import { Button as Button2, DropdownMenu, Icon as Icon2, Toolbar as Toolbar2, Tooltip as Tooltip2 } from "@dxos/react-ui";
145
- var PickerButton = ({ Component, disabled, classNames, defaultValue: _defaultValue, value: _value, values, label, icon, onChange, onReset, rootVariant = "button", iconSize = 5 }) => {
146
- var _effect = _useSignals2();
147
- try {
148
- const [value, setValue] = useControllableState2({
149
- prop: _value,
150
- defaultProp: _defaultValue,
151
- onChange
152
- });
153
- useEffect(() => setValue(_value), [
154
- _value
155
- ]);
156
- const [open, setOpen] = useState2(false);
157
- const TriggerRoot = rootVariant === "toolbar-button" ? Toolbar2.Button : Button2;
158
- return /* @__PURE__ */ React2.createElement(DropdownMenu.Root, {
159
- modal: false,
160
- open,
161
- onOpenChange: setOpen
162
- }, /* @__PURE__ */ React2.createElement(Tooltip2.Trigger, {
163
- asChild: true,
164
- content: label,
165
- side: "bottom"
166
- }, /* @__PURE__ */ React2.createElement(DropdownMenu.Trigger, {
167
- asChild: true
168
- }, /* @__PURE__ */ React2.createElement(TriggerRoot, {
169
- classNames: [
170
- "gap-2 plb-1",
171
- classNames
172
- ],
173
- disabled
174
- }, /* @__PURE__ */ React2.createElement("span", {
175
- className: "sr-only"
176
- }, label), value && /* @__PURE__ */ React2.createElement(Component, {
177
- value,
178
- iconSize
179
- }) || /* @__PURE__ */ React2.createElement(Icon2, {
180
- icon,
181
- size: iconSize
182
- }), /* @__PURE__ */ React2.createElement(Icon2, {
183
- icon: "ph--caret-down--bold",
184
- size: 3
185
- })))), /* @__PURE__ */ React2.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Content, {
186
- side: "bottom",
187
- classNames: "!is-min"
188
- }, /* @__PURE__ */ React2.createElement(DropdownMenu.Viewport, {
189
- classNames: "grid grid-cols-[repeat(6,min-content)]"
190
- }, values.map((_value2) => {
191
- return /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
192
- key: _value2,
193
- checked: _value2 === value,
194
- onCheckedChange: () => setValue(_value2),
195
- classNames: "p-1 items-center justify-center aspect-square"
196
- }, /* @__PURE__ */ React2.createElement(Component, {
197
- value: _value2,
198
- iconSize
199
- }));
200
- }), onReset && /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
201
- onCheckedChange: () => onReset(),
120
+ import { Button as Button2, DropdownMenu, Icon as Icon2, Toolbar as Toolbar2, Tooltip } from "@dxos/react-ui";
121
+ var PickerButton = ({ Component, disabled, classNames, defaultValue: defaultValueProp, value: valueProp, values, label, icon, onChange, onReset, rootVariant = "button", iconSize = 5 }) => {
122
+ const [value, setValue] = useControllableState2({
123
+ prop: valueProp,
124
+ defaultProp: defaultValueProp,
125
+ onChange
126
+ });
127
+ useEffect(() => setValue(valueProp), [
128
+ valueProp
129
+ ]);
130
+ const [open, setOpen] = useState2(false);
131
+ const TriggerRoot = rootVariant === "toolbar-button" ? Toolbar2.Button : Button2;
132
+ return /* @__PURE__ */ React2.createElement(DropdownMenu.Root, {
133
+ modal: false,
134
+ open,
135
+ onOpenChange: setOpen
136
+ }, /* @__PURE__ */ React2.createElement(Tooltip.Trigger, {
137
+ asChild: true,
138
+ content: label,
139
+ side: "bottom"
140
+ }, /* @__PURE__ */ React2.createElement(DropdownMenu.Trigger, {
141
+ asChild: true
142
+ }, /* @__PURE__ */ React2.createElement(TriggerRoot, {
143
+ classNames: [
144
+ "gap-2 plb-1",
145
+ classNames
146
+ ],
147
+ disabled
148
+ }, /* @__PURE__ */ React2.createElement("span", {
149
+ className: "sr-only"
150
+ }, label), value && /* @__PURE__ */ React2.createElement(Component, {
151
+ value,
152
+ size: iconSize
153
+ }) || /* @__PURE__ */ React2.createElement(Icon2, {
154
+ icon,
155
+ size: iconSize
156
+ }), /* @__PURE__ */ React2.createElement(Icon2, {
157
+ icon: "ph--caret-down--bold",
158
+ size: 3
159
+ })))), /* @__PURE__ */ React2.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React2.createElement(DropdownMenu.Content, {
160
+ side: "bottom",
161
+ classNames: "!is-min"
162
+ }, /* @__PURE__ */ React2.createElement(DropdownMenu.Viewport, {
163
+ classNames: "grid grid-cols-[repeat(6,min-content)]"
164
+ }, values.map((_value) => {
165
+ return /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
166
+ key: _value,
167
+ checked: _value === value,
168
+ onCheckedChange: () => setValue(_value),
202
169
  classNames: "p-1 items-center justify-center aspect-square"
203
- }, /* @__PURE__ */ React2.createElement(Icon2, {
204
- icon: "ph--x--regular",
170
+ }, /* @__PURE__ */ React2.createElement(Component, {
171
+ value: _value,
205
172
  size: iconSize
206
- }))), /* @__PURE__ */ React2.createElement(DropdownMenu.Arrow, null))));
207
- } finally {
208
- _effect.f();
209
- }
173
+ }));
174
+ }), onReset && /* @__PURE__ */ React2.createElement(DropdownMenu.CheckboxItem, {
175
+ onCheckedChange: () => onReset(),
176
+ classNames: "p-1 items-center justify-center aspect-square"
177
+ }, /* @__PURE__ */ React2.createElement(Icon2, {
178
+ icon: "ph--x--regular",
179
+ size: iconSize
180
+ }))), /* @__PURE__ */ React2.createElement(DropdownMenu.Arrow, null))));
210
181
  };
211
182
 
212
- // packages/ui/react-ui-pickers/src/components/HuePicker/HuePicker.tsx
183
+ // src/components/HuePicker/HuePicker.tsx
213
184
  var HuePicker = (props) => {
214
- var _effect = _useSignals3();
215
- try {
216
- const { t } = useTranslation2("os");
217
- return /* @__PURE__ */ React3.createElement(PickerButton, {
218
- Component: HuePreview,
219
- label: t("select hue label"),
220
- icon: "ph--palette--regular",
221
- values: hues,
222
- ...props
223
- });
224
- } finally {
225
- _effect.f();
226
- }
185
+ const { t } = useTranslation2(osTranslations2);
186
+ return /* @__PURE__ */ React3.createElement(PickerButton, {
187
+ Component: HuePreview,
188
+ label: t("select hue label"),
189
+ icon: "ph--palette--regular",
190
+ values: hues,
191
+ ...props
192
+ });
227
193
  };
228
- var HuePreview = ({ value }) => {
229
- var _effect = _useSignals3();
230
- try {
231
- const size = 16;
232
- return /* @__PURE__ */ React3.createElement("div", {
233
- className: "flex p-[2px] justify-center items-center"
234
- }, /* @__PURE__ */ React3.createElement("svg", {
235
- viewBox: `0 0 ${size} ${size}`,
236
- className: "is-[var(--hue-preview-size,1rem)] bs-[var(--hue-preview-size,1rem)]"
237
- }, /* @__PURE__ */ React3.createElement("rect", {
238
- x: 0,
239
- y: 0,
240
- width: size,
241
- height: size,
242
- fill: `var(--dx-${value}Fill)`,
243
- strokeWidth: 4
244
- })));
245
- } finally {
246
- _effect.f();
247
- }
194
+ var HuePreview = ({ value, size = 5 }) => {
195
+ return /* @__PURE__ */ React3.createElement("div", {
196
+ role: "none",
197
+ className: "flex justify-center items-center"
198
+ }, /* @__PURE__ */ React3.createElement("svg", {
199
+ viewBox: `0 0 ${size} ${size}`,
200
+ className: getSize(size)
201
+ }, /* @__PURE__ */ React3.createElement("rect", {
202
+ x: 0,
203
+ y: 0,
204
+ width: size,
205
+ height: size,
206
+ fill: `var(--dx-${value}Fill)`,
207
+ strokeWidth: 4
208
+ })));
248
209
  };
249
210
 
250
- // packages/ui/react-ui-pickers/src/components/IconPicker/IconPicker.tsx
251
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
211
+ // src/components/IconPicker/IconPicker.tsx
252
212
  import React4 from "react";
253
213
  import { Icon as Icon3, useTranslation as useTranslation3 } from "@dxos/react-ui";
214
+ import { osTranslations as osTranslations3 } from "@dxos/ui-theme";
254
215
  var IconPicker = ({ ...props }) => {
255
- var _effect = _useSignals4();
256
- try {
257
- const { t } = useTranslation3("os");
258
- return /* @__PURE__ */ React4.createElement(PickerButton, {
259
- Component: IconPreview,
260
- label: t("select icon label"),
261
- icon: "ph--selection--regular",
262
- values: iconValues,
263
- ...props
264
- });
265
- } finally {
266
- _effect.f();
267
- }
216
+ const { t } = useTranslation3(osTranslations3);
217
+ return /* @__PURE__ */ React4.createElement(PickerButton, {
218
+ Component: IconPreview,
219
+ label: t("select icon label"),
220
+ icon: "ph--selection--regular",
221
+ values: iconValues,
222
+ ...props
223
+ });
268
224
  };
269
- var IconPreview = ({ value, iconSize = 5 }) => {
270
- var _effect = _useSignals4();
271
- try {
272
- return /* @__PURE__ */ React4.createElement(Icon3, {
273
- icon: `ph--${value}--regular`,
274
- size: iconSize
275
- });
276
- } finally {
277
- _effect.f();
278
- }
225
+ var IconPreview = ({ value, size }) => {
226
+ return /* @__PURE__ */ React4.createElement(Icon3, {
227
+ icon: `ph--${value}--regular`,
228
+ size
229
+ });
279
230
  };
280
- var icons = [
281
- "ph--air-traffic-control--regular",
282
- "ph--asterisk--regular",
283
- "ph--atom--regular",
284
- "ph--basketball--regular",
285
- "ph--butterfly--regular",
286
- "ph--cactus--regular",
287
- "ph--cake--regular",
288
- "ph--calendar-dots--regular",
289
- "ph--campfire--regular",
290
- "ph--command--regular",
291
- "ph--confetti--regular",
292
- "ph--detective--regular",
293
- "ph--disco-ball--regular",
294
- "ph--dna--regular",
295
- "ph--factory--regular",
296
- "ph--flag-banner-fold--regular",
297
- "ph--flask--regular",
298
- "ph--flower-lotus--regular",
299
- "ph--flying-saucer--regular",
300
- "ph--game-controller--regular",
301
- "ph--gavel--regular",
302
- "ph--gift--regular",
303
- "ph--guitar--regular",
304
- "ph--hamburger--regular",
305
- "ph--handshake--regular",
306
- "ph--heart--regular",
307
- "ph--lightbulb--regular",
308
- "ph--lock--regular",
309
- "ph--martini--regular",
310
- "ph--medal-military--regular",
311
- "ph--moped-front--regular",
312
- "ph--office-chair--regular",
313
- "ph--paint-brush-household--regular",
314
- "ph--peace--regular",
315
- "ph--person-simple-hike--regular",
316
- "ph--piggy-bank--regular",
317
- "ph--potted-plant--regular",
318
- "ph--radioactive--regular",
319
- "ph--rocket-launch--regular",
320
- "ph--shield-star--regular",
321
- "ph--shopping-cart--regular",
322
- "ph--stethoscope--regular",
323
- "ph--student--regular",
324
- "ph--sun--regular",
325
- "ph--tote--regular",
326
- "ph--tree--regular",
327
- "ph--users-three--regular",
328
- "ph--yin-yang--regular"
329
- ];
330
- var iconValues = icons.map((icon) => icon.match(/ph--(.+)--regular/)?.[1] ?? icon);
331
231
  export {
332
232
  EmojiPickerBlock,
333
233
  EmojiPickerToolbarButton,