@dxos/shell 0.7.5-feature-compute.4d9d99a → 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 (67) hide show
  1. package/dist/bundle/shell.mjs +16746 -17683
  2. package/dist/bundle/shell.mjs.map +1 -1
  3. package/dist/bundle/shell.umd.js +149 -147
  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 +518 -782
  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 +615 -879
  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 +518 -782
  14. package/dist/lib/node-esm/react.mjs.map +4 -4
  15. package/dist/types/src/components/AgentConfig.js +1 -1
  16. package/dist/types/src/components/AgentConfig.js.map +1 -1
  17. package/dist/types/src/components/DeviceList/DeviceList.js +1 -1
  18. package/dist/types/src/components/DeviceList/DeviceList.js.map +1 -1
  19. package/dist/types/src/components/index.d.ts +0 -2
  20. package/dist/types/src/components/index.d.ts.map +1 -1
  21. package/dist/types/src/components/index.js +0 -2
  22. package/dist/types/src/components/index.js.map +1 -1
  23. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
  24. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +3 -2
  25. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
  26. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts.map +1 -1
  27. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js +2 -0
  28. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js.map +1 -1
  29. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts.map +1 -1
  30. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js +3 -2
  31. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js.map +1 -1
  32. package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js +1 -1
  33. package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js.map +1 -1
  34. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.d.ts.map +1 -1
  35. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js +5 -0
  36. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js.map +1 -1
  37. package/dist/types/src/testing/fixtures/identities.d.ts.map +1 -1
  38. package/dist/types/src/testing/fixtures/identities.js +2 -0
  39. package/dist/types/src/testing/fixtures/identities.js.map +1 -1
  40. package/dist/types/tsconfig.tsbuildinfo +1 -1
  41. package/package.json +31 -30
  42. package/src/components/AgentConfig.tsx +1 -1
  43. package/src/components/DeviceList/DeviceList.tsx +1 -1
  44. package/src/components/index.ts +0 -2
  45. package/src/panels/IdentityPanel/IdentityPanel.stories.tsx +2 -0
  46. package/src/panels/IdentityPanel/IdentityPanel.tsx +2 -1
  47. package/src/panels/IdentityPanel/steps/ProfileForm.tsx +2 -1
  48. package/src/panels/JoinPanel/steps/IdentityInput.tsx +1 -1
  49. package/src/panels/SpacePanel/SpacePanel.stories.tsx +6 -1
  50. package/src/testing/fixtures/identities.ts +2 -0
  51. package/dist/lib/browser/react.css +0 -7
  52. package/dist/lib/browser/react.css.map +0 -7
  53. package/dist/lib/node/react.css +0 -7
  54. package/dist/lib/node/react.css.map +0 -7
  55. package/dist/lib/node-esm/react.css +0 -7
  56. package/dist/lib/node-esm/react.css.map +0 -7
  57. package/dist/types/src/components/EmojiPicker.d.ts +0 -19
  58. package/dist/types/src/components/EmojiPicker.d.ts.map +0 -1
  59. package/dist/types/src/components/EmojiPicker.js +0 -146
  60. package/dist/types/src/components/EmojiPicker.js.map +0 -1
  61. package/dist/types/src/components/HuePicker.d.ts +0 -18
  62. package/dist/types/src/components/HuePicker.d.ts.map +0 -1
  63. package/dist/types/src/components/HuePicker.js +0 -133
  64. package/dist/types/src/components/HuePicker.js.map +0 -1
  65. package/src/components/EmojiPicker.tsx +0 -187
  66. package/src/components/HuePicker.tsx +0 -182
  67. package/src/components/emoji.css +0 -25
@@ -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'>
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 side='right'>
180
- {t('clear label')}
181
- <Tooltip.Arrow />
182
- </Tooltip.Content>
183
- </Tooltip.Portal>
184
- </Tooltip.Root>
185
- </>
186
- );
187
- };
@@ -1,182 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { ArrowCounterClockwise, CaretDown, Check, Palette } from '@phosphor-icons/react';
6
- import { useControllableState } from '@radix-ui/react-use-controllable-state';
7
- import React, { useRef, useState } from 'react';
8
-
9
- import {
10
- Button,
11
- type ButtonProps,
12
- DropdownMenu,
13
- type ThemedClassName,
14
- Toolbar,
15
- Tooltip,
16
- useThemeContext,
17
- useTranslation,
18
- } from '@dxos/react-ui';
19
- import { getSize, hueTokenThemes, mx } from '@dxos/react-ui-theme';
20
-
21
- const HuePreview = ({ hue }: { hue: string }) => {
22
- const { tx } = useThemeContext();
23
- const size = 20;
24
- return (
25
- <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>
26
- <rect x={0} y={0} width={size} height={size} className={tx('hue.fill', 'select--hue__preview', { hue })} />
27
- </svg>
28
- );
29
- };
30
-
31
- const hueTokens = Object.keys(hueTokenThemes).slice(0, 16);
32
-
33
- export type HuePickerProps = {
34
- disabled?: boolean;
35
- defaultHue?: string;
36
- hue?: string;
37
- onChangeHue?: (nextHue: string) => void;
38
- onClickClear?: ButtonProps['onClick'];
39
- };
40
-
41
- /**
42
- * A toolbar button for picking hue. Use only in `role=toolbar` elements. Unable to unset the value.
43
- */
44
- export const HuePickerToolbarButton = ({
45
- disabled,
46
- hue,
47
- onChangeHue,
48
- classNames,
49
- defaultHue,
50
- }: ThemedClassName<Omit<HuePickerProps, 'onClickClear'>>) => {
51
- const { t } = useTranslation('os');
52
-
53
- const [hueValue, setHueValue] = useControllableState<string>({
54
- prop: hue,
55
- onChange: onChangeHue,
56
- defaultProp: defaultHue,
57
- });
58
-
59
- const [huePickerOpen, setHuePickerOpen] = useState<boolean>(false);
60
-
61
- const suppressNextTooltip = useRef<boolean>(false);
62
- const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);
63
-
64
- return (
65
- <Tooltip.Root
66
- open={triggerTooltipOpen}
67
- onOpenChange={(nextOpen) => {
68
- if (suppressNextTooltip.current) {
69
- setTriggerTooltipOpen(false);
70
- suppressNextTooltip.current = false;
71
- } else {
72
- setTriggerTooltipOpen(nextOpen);
73
- }
74
- }}
75
- >
76
- <DropdownMenu.Root
77
- modal={false}
78
- open={huePickerOpen}
79
- onOpenChange={(nextOpen) => {
80
- setHuePickerOpen(nextOpen);
81
- suppressNextTooltip.current = true;
82
- }}
83
- >
84
- <Tooltip.Trigger asChild>
85
- <DropdownMenu.Trigger asChild>
86
- <Toolbar.Button classNames={mx('gap-2 plb-1', classNames)} disabled={disabled}>
87
- <span className='sr-only'>{t('select hue label')}</span>
88
- <Palette className={getSize(5)} />
89
- </Toolbar.Button>
90
- </DropdownMenu.Trigger>
91
- </Tooltip.Trigger>
92
- <Tooltip.Portal>
93
- <Tooltip.Content side='bottom'>
94
- {t('select hue label')}
95
- <Tooltip.Arrow />
96
- </Tooltip.Content>
97
- </Tooltip.Portal>
98
- {/* TODO(burdon): Change from DropdownMenu (show checked). */}
99
- <DropdownMenu.Content side='bottom' classNames='!w-40'>
100
- <DropdownMenu.Viewport classNames='grid grid-cols-4'>
101
- {hueTokens.map((hue) => {
102
- return (
103
- <DropdownMenu.CheckboxItem
104
- key={hue}
105
- checked={hue === hueValue}
106
- onCheckedChange={() => setHueValue(hue)}
107
- classNames={'px-0 py-2 items-center justify-center'}
108
- >
109
- <HuePreview hue={hue} />
110
- </DropdownMenu.CheckboxItem>
111
- );
112
- })}
113
- </DropdownMenu.Viewport>
114
- </DropdownMenu.Content>
115
- </DropdownMenu.Root>
116
- </Tooltip.Root>
117
- );
118
- };
119
-
120
- /**
121
- * A button for picking hue alongside a button for unsetting it.
122
- */
123
- export const HuePickerBlock = ({ disabled, hue, onChangeHue, defaultHue, onClickClear }: HuePickerProps) => {
124
- const { t } = useTranslation('os');
125
-
126
- const [hueValue, setHueValue] = useControllableState<string>({
127
- prop: hue,
128
- onChange: onChangeHue,
129
- defaultProp: defaultHue,
130
- });
131
-
132
- return (
133
- <>
134
- <DropdownMenu.Root modal={false}>
135
- <DropdownMenu.Trigger asChild>
136
- <Button variant='ghost' classNames='gap-2 plb-1' disabled={disabled}>
137
- <span className='sr-only'>{t('select hue label')}</span>
138
- <div role='none' className='pis-14 grow flex items-center justify-center gap-2'>
139
- <HuePreview hue={hueValue!} />
140
- <span>{t(`${hueValue} label`)}</span>
141
- </div>
142
- <CaretDown className={getSize(4)} />
143
- </Button>
144
- </DropdownMenu.Trigger>
145
- <DropdownMenu.Content side='right'>
146
- <DropdownMenu.Viewport>
147
- {Object.keys(hueTokenThemes).map((hue) => {
148
- return (
149
- <DropdownMenu.CheckboxItem
150
- key={hue}
151
- checked={hue === hueValue}
152
- onCheckedChange={() => setHueValue(hue)}
153
- >
154
- <HuePreview hue={hue} />
155
- <span className='grow'>{t(`${hue} label`)}</span>
156
- <DropdownMenu.ItemIndicator>
157
- <Check />
158
- </DropdownMenu.ItemIndicator>
159
- </DropdownMenu.CheckboxItem>
160
- );
161
- })}
162
- </DropdownMenu.Viewport>
163
- <DropdownMenu.Arrow />
164
- </DropdownMenu.Content>
165
- </DropdownMenu.Root>
166
- <Tooltip.Root>
167
- <Tooltip.Trigger asChild>
168
- <Button variant='ghost' onClick={onClickClear} disabled={disabled}>
169
- <span className='sr-only'>{t('clear label')}</span>
170
- <ArrowCounterClockwise />
171
- </Button>
172
- </Tooltip.Trigger>
173
- <Tooltip.Portal>
174
- <Tooltip.Content side='right'>
175
- {t('clear label')}
176
- <Tooltip.Arrow />
177
- </Tooltip.Content>
178
- </Tooltip.Portal>
179
- </Tooltip.Root>
180
- </>
181
- );
182
- };
@@ -1,25 +0,0 @@
1
- /**
2
- * https://github.com/missive/emoji-mart/blob/main/packages/emoji-mart-website/example-custom-styles.html
3
- */
4
- [data-theme="dark"] em-emoji-picker {
5
- /* TODO(burdon): Get from TW defs: modal-surface? */
6
- --background-rgb: #3B3B3F;
7
- --rgb-background: #3B3B3F;
8
-
9
- --font-family: "Inter Variable", ui-sans-serif;
10
-
11
- /*--font-size: 16px;*/
12
- /*--color-border-over: rgba(0, 0, 0, 0.1);*/
13
- /*--color-border: rgba(0, 0, 0, 0.05);*/
14
- /*--category-icon-size: 24px;*/
15
- /*--border-radius: 24px;*/
16
- /*--font-family: 'Comic Sans MS', 'Chalkboard SE', cursive;*/
17
- /*--rgb-accent: 255, 105, 180;*/
18
- /*--rgb-color: 102, 51, 153;*/
19
- /*--rgb-input: 255, 235, 235;*/
20
- /*--shadow: 5px 5px 15px -8px rebeccapurple;*/
21
-
22
- /*height: 50vh;*/
23
- /*min-height: 400px;*/
24
- /*max-height: 800px;*/
25
- }