@dxos/shell 0.7.4 → 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 (127) hide show
  1. package/dist/bundle/shell.mjs +17886 -21578
  2. package/dist/bundle/shell.mjs.map +1 -1
  3. package/dist/bundle/shell.umd.js +139 -137
  4. package/dist/bundle/shell.umd.js.map +1 -1
  5. package/dist/bundle/style.css +1 -1
  6. package/dist/lib/browser/meta.json +1 -1
  7. package/dist/lib/browser/react.mjs +523 -800
  8. package/dist/lib/browser/react.mjs.map +4 -4
  9. package/dist/lib/node/meta.json +1 -1
  10. package/dist/lib/node/react.cjs +620 -897
  11. package/dist/lib/node/react.cjs.map +4 -4
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/react.mjs +523 -800
  14. package/dist/lib/node-esm/react.mjs.map +4 -4
  15. package/dist/types/src/components/AgentConfig.d.ts.map +1 -1
  16. package/dist/types/src/components/AgentConfig.js +2 -2
  17. package/dist/types/src/components/AgentConfig.js.map +1 -1
  18. package/dist/types/src/components/AuthCode.js +17 -7
  19. package/dist/types/src/components/AuthCode.js.map +1 -1
  20. package/dist/types/src/components/DeviceList/DeviceList.js +1 -1
  21. package/dist/types/src/components/DeviceList/DeviceList.js.map +1 -1
  22. package/dist/types/src/components/DeviceList/DeviceListItem.js +17 -7
  23. package/dist/types/src/components/DeviceList/DeviceListItem.js.map +1 -1
  24. package/dist/types/src/components/IdentityList/IdentityListItem.js +17 -7
  25. package/dist/types/src/components/IdentityList/IdentityListItem.js.map +1 -1
  26. package/dist/types/src/components/IdentityList/SpaceMemberList.js +17 -7
  27. package/dist/types/src/components/IdentityList/SpaceMemberList.js.map +1 -1
  28. package/dist/types/src/components/InvitationList/InvitationListContainer.js +17 -7
  29. package/dist/types/src/components/InvitationList/InvitationListContainer.js.map +1 -1
  30. package/dist/types/src/components/InvitationList/InvitationListItem.js +19 -9
  31. package/dist/types/src/components/InvitationList/InvitationListItem.js.map +1 -1
  32. package/dist/types/src/components/Panel/Action.js +17 -7
  33. package/dist/types/src/components/Panel/Action.js.map +1 -1
  34. package/dist/types/src/components/Panel/Actions.js +17 -7
  35. package/dist/types/src/components/Panel/Actions.js.map +1 -1
  36. package/dist/types/src/components/Panel/Heading.js +17 -7
  37. package/dist/types/src/components/Panel/Heading.js.map +1 -1
  38. package/dist/types/src/components/Panel/StepHeading.js +17 -7
  39. package/dist/types/src/components/Panel/StepHeading.js.map +1 -1
  40. package/dist/types/src/components/SpaceListItem.js +17 -7
  41. package/dist/types/src/components/SpaceListItem.js.map +1 -1
  42. package/dist/types/src/components/StorybookDialog.js +1 -1
  43. package/dist/types/src/components/Viewport/Viewport.js +17 -7
  44. package/dist/types/src/components/Viewport/Viewport.js.map +1 -1
  45. package/dist/types/src/components/index.d.ts +0 -2
  46. package/dist/types/src/components/index.d.ts.map +1 -1
  47. package/dist/types/src/components/index.js +0 -2
  48. package/dist/types/src/components/index.js.map +1 -1
  49. package/dist/types/src/composites/Shell/Shell.js +17 -7
  50. package/dist/types/src/composites/Shell/Shell.js.map +1 -1
  51. package/dist/types/src/composites/Shell/ShellContext.js +17 -7
  52. package/dist/types/src/composites/Shell/ShellContext.js.map +1 -1
  53. package/dist/types/src/composites/Shell/run-shell.js +17 -7
  54. package/dist/types/src/composites/Shell/run-shell.js.map +1 -1
  55. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
  56. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +22 -11
  57. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
  58. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts.map +1 -1
  59. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js +2 -0
  60. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js.map +1 -1
  61. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts.map +1 -1
  62. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js +20 -9
  63. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js.map +1 -1
  64. package/dist/types/src/panels/JoinPanel/JoinHeading.js +17 -7
  65. package/dist/types/src/panels/JoinPanel/JoinHeading.js.map +1 -1
  66. package/dist/types/src/panels/JoinPanel/JoinPanel.js +17 -7
  67. package/dist/types/src/panels/JoinPanel/JoinPanel.js.map +1 -1
  68. package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js +17 -7
  69. package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js.map +1 -1
  70. package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js +18 -8
  71. package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js.map +1 -1
  72. package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.js +17 -7
  73. package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.js.map +1 -1
  74. package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js +17 -7
  75. package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js.map +1 -1
  76. package/dist/types/src/panels/JoinPanel/steps/InvitationInput.js +17 -7
  77. package/dist/types/src/panels/JoinPanel/steps/InvitationInput.js.map +1 -1
  78. package/dist/types/src/panels/Panels.stories.js +17 -7
  79. package/dist/types/src/panels/Panels.stories.js.map +1 -1
  80. package/dist/types/src/panels/SpacePanel/SpacePanel.js +17 -7
  81. package/dist/types/src/panels/SpacePanel/SpacePanel.js.map +1 -1
  82. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.d.ts.map +1 -1
  83. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js +5 -0
  84. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js.map +1 -1
  85. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js +17 -7
  86. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js.map +1 -1
  87. package/dist/types/src/steps/ConfirmReset.js +17 -7
  88. package/dist/types/src/steps/ConfirmReset.js.map +1 -1
  89. package/dist/types/src/steps/InvitationManager.js +17 -7
  90. package/dist/types/src/steps/InvitationManager.js.map +1 -1
  91. package/dist/types/src/stories/Invitations.e2e-stories.js +17 -7
  92. package/dist/types/src/stories/Invitations.e2e-stories.js.map +1 -1
  93. package/dist/types/src/testing/fixtures/identities.d.ts.map +1 -1
  94. package/dist/types/src/testing/fixtures/identities.js +2 -0
  95. package/dist/types/src/testing/fixtures/identities.js.map +1 -1
  96. package/dist/types/src/translations/index.js +17 -7
  97. package/dist/types/src/translations/index.js.map +1 -1
  98. package/dist/types/tsconfig.tsbuildinfo +1 -0
  99. package/package.json +31 -30
  100. package/src/components/AgentConfig.tsx +2 -4
  101. package/src/components/DeviceList/DeviceList.tsx +1 -1
  102. package/src/components/InvitationList/InvitationListItem.tsx +2 -2
  103. package/src/components/StorybookDialog.tsx +1 -1
  104. package/src/components/index.ts +0 -2
  105. package/src/panels/IdentityPanel/IdentityPanel.stories.tsx +2 -0
  106. package/src/panels/IdentityPanel/IdentityPanel.tsx +4 -3
  107. package/src/panels/IdentityPanel/steps/ProfileForm.tsx +2 -1
  108. package/src/panels/JoinPanel/steps/IdentityInput.tsx +1 -1
  109. package/src/panels/SpacePanel/SpacePanel.stories.tsx +6 -1
  110. package/src/testing/fixtures/identities.ts +2 -0
  111. package/dist/lib/browser/react.css +0 -7
  112. package/dist/lib/browser/react.css.map +0 -7
  113. package/dist/lib/node/react.css +0 -7
  114. package/dist/lib/node/react.css.map +0 -7
  115. package/dist/lib/node-esm/react.css +0 -7
  116. package/dist/lib/node-esm/react.css.map +0 -7
  117. package/dist/types/src/components/EmojiPicker.d.ts +0 -19
  118. package/dist/types/src/components/EmojiPicker.d.ts.map +0 -1
  119. package/dist/types/src/components/EmojiPicker.js +0 -136
  120. package/dist/types/src/components/EmojiPicker.js.map +0 -1
  121. package/dist/types/src/components/HuePicker.d.ts +0 -18
  122. package/dist/types/src/components/HuePicker.d.ts.map +0 -1
  123. package/dist/types/src/components/HuePicker.js +0 -123
  124. package/dist/types/src/components/HuePicker.js.map +0 -1
  125. package/src/components/EmojiPicker.tsx +0 -187
  126. package/src/components/HuePicker.tsx +0 -182
  127. package/src/components/emoji.css +0 -25
@@ -1,136 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2024 DXOS.org
4
- //
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
- var __importDefault = (this && this.__importDefault) || function (mod) {
29
- return (mod && mod.__esModule) ? mod : { "default": mod };
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.EmojiPickerBlock = exports.EmojiPickerToolbarButton = void 0;
33
- const data_1 = __importDefault(require("@emoji-mart/data"));
34
- const react_1 = __importDefault(require("@emoji-mart/react"));
35
- const react_2 = require("@phosphor-icons/react");
36
- const react_use_controllable_state_1 = require("@radix-ui/react-use-controllable-state");
37
- const react_3 = __importStar(require("react"));
38
- const react_ui_1 = require("@dxos/react-ui");
39
- const react_ui_theme_1 = require("@dxos/react-ui-theme");
40
- require("./emoji.css");
41
- /**
42
- * A toolbar button for picking an emoji. Use only in `role=toolbar` elements. Unable to unset the value.
43
- */
44
- const EmojiPickerToolbarButton = ({ disabled, defaultEmoji, emoji, onChangeEmoji, classNames, }) => {
45
- const { t } = (0, react_ui_1.useTranslation)('os');
46
- const { themeMode } = (0, react_ui_1.useThemeContext)();
47
- const [_emojiValue, setEmojiValue] = (0, react_use_controllable_state_1.useControllableState)({
48
- prop: emoji,
49
- onChange: onChangeEmoji,
50
- defaultProp: defaultEmoji,
51
- });
52
- const [emojiPickerOpen, setEmojiPickerOpen] = (0, react_3.useState)(false);
53
- const suppressNextTooltip = (0, react_3.useRef)(false);
54
- const [triggerTooltipOpen, setTriggerTooltipOpen] = (0, react_3.useState)(false);
55
- return (react_3.default.createElement(react_ui_1.Tooltip.Root, { open: triggerTooltipOpen, onOpenChange: (nextOpen) => {
56
- if (suppressNextTooltip.current) {
57
- setTriggerTooltipOpen(false);
58
- suppressNextTooltip.current = false;
59
- }
60
- else {
61
- setTriggerTooltipOpen(nextOpen);
62
- }
63
- } },
64
- react_3.default.createElement(react_ui_1.Popover.Root, { open: emojiPickerOpen, onOpenChange: (nextOpen) => {
65
- setEmojiPickerOpen(nextOpen);
66
- suppressNextTooltip.current = true;
67
- } },
68
- react_3.default.createElement(react_ui_1.Tooltip.Trigger, { asChild: true },
69
- react_3.default.createElement(react_ui_1.Popover.Trigger, { asChild: true },
70
- react_3.default.createElement(react_ui_1.Toolbar.Button, { classNames: ['gap-2 text-2xl plb-1', classNames], disabled: disabled },
71
- react_3.default.createElement("span", { className: 'sr-only' }, t('select emoji label')),
72
- react_3.default.createElement(react_2.UserCircle, { className: (0, react_ui_theme_1.getSize)(5) })))),
73
- react_3.default.createElement(react_ui_1.Tooltip.Portal, null,
74
- react_3.default.createElement(react_ui_1.Tooltip.Content, { side: 'bottom', classNames: 'z-50' },
75
- t('select emoji label'),
76
- react_3.default.createElement(react_ui_1.Tooltip.Arrow, null))),
77
- react_3.default.createElement(react_ui_1.Popover.Content, { side: 'bottom', onKeyDownCapture: (event) => {
78
- if (event.key === 'Escape') {
79
- event.stopPropagation();
80
- setEmojiPickerOpen(false);
81
- suppressNextTooltip.current = true;
82
- }
83
- } },
84
- react_3.default.createElement(react_1.default, { data: data_1.default, onEmojiSelect: ({ native }) => {
85
- if (native) {
86
- setEmojiValue(native);
87
- setEmojiPickerOpen(false);
88
- }
89
- }, autoFocus: true, maxFrequentRows: 0, noCountryFlags: true, theme: themeMode }),
90
- react_3.default.createElement(react_ui_1.Popover.Arrow, null)))));
91
- };
92
- exports.EmojiPickerToolbarButton = EmojiPickerToolbarButton;
93
- /**
94
- * A button for picking an emoji alongside a button for unsetting it.
95
- */
96
- const EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }) => {
97
- const { t } = (0, react_ui_1.useTranslation)('os');
98
- const [isMd] = (0, react_ui_1.useMediaQuery)('md', { ssr: false });
99
- const [emojiValue, setEmojiValue] = (0, react_use_controllable_state_1.useControllableState)({
100
- prop: emoji,
101
- onChange: onChangeEmoji,
102
- defaultProp: defaultEmoji,
103
- });
104
- const [emojiPickerOpen, setEmojiPickerOpen] = (0, react_3.useState)(false);
105
- return (react_3.default.createElement(react_3.default.Fragment, null,
106
- react_3.default.createElement(react_ui_1.Popover.Root, { open: emojiPickerOpen, onOpenChange: setEmojiPickerOpen },
107
- react_3.default.createElement(react_ui_1.Popover.Trigger, { asChild: true },
108
- react_3.default.createElement(react_ui_1.Button, { variant: 'ghost', classNames: 'gap-2 text-2xl plb-1', disabled: disabled },
109
- react_3.default.createElement("span", { className: 'sr-only' }, t('select emoji label')),
110
- react_3.default.createElement("span", { className: 'grow pis-14' }, emojiValue),
111
- react_3.default.createElement(react_2.CaretDown, { className: (0, react_ui_theme_1.getSize)(4) }))),
112
- react_3.default.createElement(react_ui_1.Popover.Content, { side: 'right', sideOffset: isMd ? 0 : -310, onKeyDownCapture: (event) => {
113
- if (event.key === 'Escape') {
114
- event.stopPropagation();
115
- setEmojiPickerOpen(false);
116
- }
117
- } },
118
- react_3.default.createElement(react_1.default, { data: data_1.default, onEmojiSelect: ({ native }) => {
119
- if (native) {
120
- setEmojiValue(native);
121
- setEmojiPickerOpen(false);
122
- }
123
- }, autoFocus: true, maxFrequentRows: 0, noCountryFlags: true }),
124
- react_3.default.createElement(react_ui_1.Popover.Arrow, null))),
125
- react_3.default.createElement(react_ui_1.Tooltip.Root, null,
126
- react_3.default.createElement(react_ui_1.Tooltip.Trigger, { asChild: true },
127
- react_3.default.createElement(react_ui_1.Button, { variant: 'ghost', onClick: onClickClear, disabled: disabled },
128
- react_3.default.createElement("span", { className: 'sr-only' }, t('clear label')),
129
- react_3.default.createElement(react_2.ArrowCounterClockwise, null))),
130
- react_3.default.createElement(react_ui_1.Tooltip.Portal, null,
131
- react_3.default.createElement(react_ui_1.Tooltip.Content, { style: { zIndex: 70 }, side: 'right' },
132
- t('clear label'),
133
- react_3.default.createElement(react_ui_1.Tooltip.Arrow, null))))));
134
- };
135
- exports.EmojiPickerBlock = EmojiPickerBlock;
136
- //# sourceMappingURL=EmojiPicker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EmojiPicker.js","sourceRoot":"","sources":["../../../../src/components/EmojiPicker.tsx"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import { type ButtonProps, type ThemedClassName } from '@dxos/react-ui';
3
- export type HuePickerProps = {
4
- disabled?: boolean;
5
- defaultHue?: string;
6
- hue?: string;
7
- onChangeHue?: (nextHue: string) => void;
8
- onClickClear?: ButtonProps['onClick'];
9
- };
10
- /**
11
- * A toolbar button for picking hue. Use only in `role=toolbar` elements. Unable to unset the value.
12
- */
13
- export declare const HuePickerToolbarButton: ({ disabled, hue, onChangeHue, classNames, defaultHue, }: ThemedClassName<Omit<HuePickerProps, "onClickClear">>) => React.JSX.Element;
14
- /**
15
- * A button for picking hue alongside a button for unsetting it.
16
- */
17
- export declare const HuePickerBlock: ({ disabled, hue, onChangeHue, defaultHue, onClickClear }: HuePickerProps) => React.JSX.Element;
18
- //# sourceMappingURL=HuePicker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HuePicker.d.ts","sourceRoot":"","sources":["../../../../src/components/HuePicker.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,eAAe,EAKrB,MAAM,gBAAgB,CAAC;AAexB,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,4DAMhC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,sBAoEvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,6DAA8D,cAAc,sBA2DtG,CAAC"}
@@ -1,123 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2024 DXOS.org
4
- //
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.HuePickerBlock = exports.HuePickerToolbarButton = void 0;
30
- const react_1 = require("@phosphor-icons/react");
31
- const react_use_controllable_state_1 = require("@radix-ui/react-use-controllable-state");
32
- const react_2 = __importStar(require("react"));
33
- const react_ui_1 = require("@dxos/react-ui");
34
- const react_ui_theme_1 = require("@dxos/react-ui-theme");
35
- const HuePreview = ({ hue }) => {
36
- const { tx } = (0, react_ui_1.useThemeContext)();
37
- const size = 20;
38
- return (react_2.default.createElement("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}` },
39
- react_2.default.createElement("rect", { x: 0, y: 0, width: size, height: size, className: tx('hue.fill', 'select--hue__preview', { hue }) })));
40
- };
41
- const hueTokens = Object.keys(react_ui_theme_1.hueTokenThemes).slice(0, 16);
42
- /**
43
- * A toolbar button for picking hue. Use only in `role=toolbar` elements. Unable to unset the value.
44
- */
45
- const HuePickerToolbarButton = ({ disabled, hue, onChangeHue, classNames, defaultHue, }) => {
46
- const { t } = (0, react_ui_1.useTranslation)('os');
47
- const [hueValue, setHueValue] = (0, react_use_controllable_state_1.useControllableState)({
48
- prop: hue,
49
- onChange: onChangeHue,
50
- defaultProp: defaultHue,
51
- });
52
- const [huePickerOpen, setHuePickerOpen] = (0, react_2.useState)(false);
53
- const suppressNextTooltip = (0, react_2.useRef)(false);
54
- const [triggerTooltipOpen, setTriggerTooltipOpen] = (0, react_2.useState)(false);
55
- return (react_2.default.createElement(react_ui_1.Tooltip.Root, { open: triggerTooltipOpen, onOpenChange: (nextOpen) => {
56
- if (suppressNextTooltip.current) {
57
- setTriggerTooltipOpen(false);
58
- suppressNextTooltip.current = false;
59
- }
60
- else {
61
- setTriggerTooltipOpen(nextOpen);
62
- }
63
- } },
64
- react_2.default.createElement(react_ui_1.DropdownMenu.Root, { modal: false, open: huePickerOpen, onOpenChange: (nextOpen) => {
65
- setHuePickerOpen(nextOpen);
66
- suppressNextTooltip.current = true;
67
- } },
68
- react_2.default.createElement(react_ui_1.Tooltip.Trigger, { asChild: true },
69
- react_2.default.createElement(react_ui_1.DropdownMenu.Trigger, { asChild: true },
70
- react_2.default.createElement(react_ui_1.Toolbar.Button, { classNames: (0, react_ui_theme_1.mx)('gap-2 plb-1', classNames), disabled: disabled },
71
- react_2.default.createElement("span", { className: 'sr-only' }, t('select hue label')),
72
- react_2.default.createElement(react_1.Palette, { className: (0, react_ui_theme_1.getSize)(5) })))),
73
- react_2.default.createElement(react_ui_1.Tooltip.Portal, null,
74
- react_2.default.createElement(react_ui_1.Tooltip.Content, { side: 'bottom', classNames: 'z-50' },
75
- t('select hue label'),
76
- react_2.default.createElement(react_ui_1.Tooltip.Arrow, null))),
77
- react_2.default.createElement(react_ui_1.DropdownMenu.Content, { side: 'bottom', classNames: '!w-40' },
78
- react_2.default.createElement(react_ui_1.DropdownMenu.Viewport, { classNames: 'grid grid-cols-4' }, hueTokens.map((hue) => {
79
- return (react_2.default.createElement(react_ui_1.DropdownMenu.CheckboxItem, { key: hue, checked: hue === hueValue, onCheckedChange: () => setHueValue(hue), classNames: 'px-0 py-2 items-center justify-center' },
80
- react_2.default.createElement(HuePreview, { hue: hue })));
81
- }))))));
82
- };
83
- exports.HuePickerToolbarButton = HuePickerToolbarButton;
84
- /**
85
- * A button for picking hue alongside a button for unsetting it.
86
- */
87
- const HuePickerBlock = ({ disabled, hue, onChangeHue, defaultHue, onClickClear }) => {
88
- const { t } = (0, react_ui_1.useTranslation)('os');
89
- const [hueValue, setHueValue] = (0, react_use_controllable_state_1.useControllableState)({
90
- prop: hue,
91
- onChange: onChangeHue,
92
- defaultProp: defaultHue,
93
- });
94
- return (react_2.default.createElement(react_2.default.Fragment, null,
95
- react_2.default.createElement(react_ui_1.DropdownMenu.Root, { modal: false },
96
- react_2.default.createElement(react_ui_1.DropdownMenu.Trigger, { asChild: true },
97
- react_2.default.createElement(react_ui_1.Button, { variant: 'ghost', classNames: 'gap-2 plb-1', disabled: disabled },
98
- react_2.default.createElement("span", { className: 'sr-only' }, t('select hue label')),
99
- react_2.default.createElement("div", { role: 'none', className: 'pis-14 grow flex items-center justify-center gap-2' },
100
- react_2.default.createElement(HuePreview, { hue: hueValue }),
101
- react_2.default.createElement("span", null, t(`${hueValue} label`))),
102
- react_2.default.createElement(react_1.CaretDown, { className: (0, react_ui_theme_1.getSize)(4) }))),
103
- react_2.default.createElement(react_ui_1.DropdownMenu.Content, { side: 'right' },
104
- react_2.default.createElement(react_ui_1.DropdownMenu.Viewport, null, Object.keys(react_ui_theme_1.hueTokenThemes).map((hue) => {
105
- return (react_2.default.createElement(react_ui_1.DropdownMenu.CheckboxItem, { key: hue, checked: hue === hueValue, onCheckedChange: () => setHueValue(hue) },
106
- react_2.default.createElement(HuePreview, { hue: hue }),
107
- react_2.default.createElement("span", { className: 'grow' }, t(`${hue} label`)),
108
- react_2.default.createElement(react_ui_1.DropdownMenu.ItemIndicator, null,
109
- react_2.default.createElement(react_1.Check, null))));
110
- })),
111
- react_2.default.createElement(react_ui_1.DropdownMenu.Arrow, null))),
112
- react_2.default.createElement(react_ui_1.Tooltip.Root, null,
113
- react_2.default.createElement(react_ui_1.Tooltip.Trigger, { asChild: true },
114
- react_2.default.createElement(react_ui_1.Button, { variant: 'ghost', onClick: onClickClear, disabled: disabled },
115
- react_2.default.createElement("span", { className: 'sr-only' }, t('clear label')),
116
- react_2.default.createElement(react_1.ArrowCounterClockwise, null))),
117
- react_2.default.createElement(react_ui_1.Tooltip.Portal, null,
118
- react_2.default.createElement(react_ui_1.Tooltip.Content, { style: { zIndex: 70 }, side: 'right' },
119
- t('clear label'),
120
- react_2.default.createElement(react_ui_1.Tooltip.Arrow, null))))));
121
- };
122
- exports.HuePickerBlock = HuePickerBlock;
123
- //# sourceMappingURL=HuePicker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HuePicker.js","sourceRoot":"","sources":["../../../../src/components/HuePicker.tsx"],"names":[],"mappings":"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"}
@@ -1,187 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import emojiData from '@emoji-mart/data';
6
- import EmojiMart from '@emoji-mart/react';
7
- import { ArrowCounterClockwise, CaretDown, UserCircle } from '@phosphor-icons/react';
8
- import { useControllableState } from '@radix-ui/react-use-controllable-state';
9
- import React, { useRef, useState } from 'react';
10
-
11
- import {
12
- Button,
13
- type ButtonProps,
14
- Popover,
15
- type ThemedClassName,
16
- Toolbar,
17
- Tooltip,
18
- useMediaQuery,
19
- useThemeContext,
20
- useTranslation,
21
- } from '@dxos/react-ui';
22
- import { getSize } from '@dxos/react-ui-theme';
23
-
24
- import './emoji.css';
25
-
26
- export type EmojiPickerProps = {
27
- disabled?: boolean;
28
- defaultEmoji?: string;
29
- emoji?: string;
30
- onChangeEmoji?: (nextEmoji: string) => void;
31
- onClickClear?: ButtonProps['onClick'];
32
- };
33
-
34
- /**
35
- * A toolbar button for picking an emoji. Use only in `role=toolbar` elements. Unable to unset the value.
36
- */
37
- export const EmojiPickerToolbarButton = ({
38
- disabled,
39
- defaultEmoji,
40
- emoji,
41
- onChangeEmoji,
42
- classNames,
43
- }: ThemedClassName<Omit<EmojiPickerProps, 'onClickClear'>>) => {
44
- const { t } = useTranslation('os');
45
- const { themeMode } = useThemeContext();
46
-
47
- const [_emojiValue, setEmojiValue] = useControllableState<string>({
48
- prop: emoji,
49
- onChange: onChangeEmoji,
50
- defaultProp: defaultEmoji,
51
- });
52
-
53
- const [emojiPickerOpen, setEmojiPickerOpen] = useState<boolean>(false);
54
- const suppressNextTooltip = useRef<boolean>(false);
55
- const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);
56
-
57
- return (
58
- <Tooltip.Root
59
- open={triggerTooltipOpen}
60
- onOpenChange={(nextOpen) => {
61
- if (suppressNextTooltip.current) {
62
- setTriggerTooltipOpen(false);
63
- suppressNextTooltip.current = false;
64
- } else {
65
- setTriggerTooltipOpen(nextOpen);
66
- }
67
- }}
68
- >
69
- <Popover.Root
70
- open={emojiPickerOpen}
71
- onOpenChange={(nextOpen) => {
72
- setEmojiPickerOpen(nextOpen);
73
- suppressNextTooltip.current = true;
74
- }}
75
- >
76
- <Tooltip.Trigger asChild>
77
- <Popover.Trigger asChild>
78
- <Toolbar.Button classNames={['gap-2 text-2xl plb-1', classNames]} disabled={disabled}>
79
- <span className='sr-only'>{t('select emoji label')}</span>
80
- <UserCircle className={getSize(5)} />
81
- </Toolbar.Button>
82
- </Popover.Trigger>
83
- </Tooltip.Trigger>
84
- <Tooltip.Portal>
85
- <Tooltip.Content side='bottom' classNames='z-50'>
86
- {t('select emoji label')}
87
- <Tooltip.Arrow />
88
- </Tooltip.Content>
89
- </Tooltip.Portal>
90
- <Popover.Content
91
- side='bottom'
92
- onKeyDownCapture={(event) => {
93
- if (event.key === 'Escape') {
94
- event.stopPropagation();
95
- setEmojiPickerOpen(false);
96
- suppressNextTooltip.current = true;
97
- }
98
- }}
99
- >
100
- {/* https://github.com/missive/emoji-mart?tab=readme-ov-file#options--props */}
101
- <EmojiMart
102
- data={emojiData}
103
- onEmojiSelect={({ native }: { native?: string }) => {
104
- if (native) {
105
- setEmojiValue(native);
106
- setEmojiPickerOpen(false);
107
- }
108
- }}
109
- autoFocus={true}
110
- maxFrequentRows={0}
111
- noCountryFlags={true}
112
- theme={themeMode}
113
- />
114
- <Popover.Arrow />
115
- </Popover.Content>
116
- </Popover.Root>
117
- </Tooltip.Root>
118
- );
119
- };
120
-
121
- /**
122
- * A button for picking an emoji alongside a button for unsetting it.
123
- */
124
- export const EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }: EmojiPickerProps) => {
125
- const { t } = useTranslation('os');
126
- const [isMd] = useMediaQuery('md', { ssr: false });
127
-
128
- const [emojiValue, setEmojiValue] = useControllableState<string>({
129
- prop: emoji,
130
- onChange: onChangeEmoji,
131
- defaultProp: defaultEmoji,
132
- });
133
-
134
- const [emojiPickerOpen, setEmojiPickerOpen] = useState<boolean>(false);
135
-
136
- return (
137
- <>
138
- <Popover.Root open={emojiPickerOpen} onOpenChange={setEmojiPickerOpen}>
139
- <Popover.Trigger asChild>
140
- <Button variant='ghost' classNames='gap-2 text-2xl plb-1' disabled={disabled}>
141
- <span className='sr-only'>{t('select emoji label')}</span>
142
- <span className='grow pis-14'>{emojiValue}</span>
143
- <CaretDown className={getSize(4)} />
144
- </Button>
145
- </Popover.Trigger>
146
- <Popover.Content
147
- side='right'
148
- sideOffset={isMd ? 0 : -310}
149
- onKeyDownCapture={(event) => {
150
- if (event.key === 'Escape') {
151
- event.stopPropagation();
152
- setEmojiPickerOpen(false);
153
- }
154
- }}
155
- >
156
- <EmojiMart
157
- data={emojiData}
158
- onEmojiSelect={({ native }: { native?: string }) => {
159
- if (native) {
160
- setEmojiValue(native);
161
- setEmojiPickerOpen(false);
162
- }
163
- }}
164
- autoFocus={true}
165
- maxFrequentRows={0}
166
- noCountryFlags={true}
167
- />
168
- <Popover.Arrow />
169
- </Popover.Content>
170
- </Popover.Root>
171
- <Tooltip.Root>
172
- <Tooltip.Trigger asChild>
173
- <Button variant='ghost' onClick={onClickClear} disabled={disabled}>
174
- <span className='sr-only'>{t('clear label')}</span>
175
- <ArrowCounterClockwise />
176
- </Button>
177
- </Tooltip.Trigger>
178
- <Tooltip.Portal>
179
- <Tooltip.Content style={{ zIndex: 70 }} side='right'>
180
- {t('clear label')}
181
- <Tooltip.Arrow />
182
- </Tooltip.Content>
183
- </Tooltip.Portal>
184
- </Tooltip.Root>
185
- </>
186
- );
187
- };