@dxos/plugin-settings 0.6.8-main.046e6cf

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 +15 -0
  3. package/dist/lib/browser/chunk-JKQMH66V.mjs +11 -0
  4. package/dist/lib/browser/chunk-JKQMH66V.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +253 -0
  6. package/dist/lib/browser/index.mjs.map +7 -0
  7. package/dist/lib/browser/meta.json +1 -0
  8. package/dist/lib/browser/meta.mjs +9 -0
  9. package/dist/lib/browser/meta.mjs.map +7 -0
  10. package/dist/lib/node/chunk-LZVHLML4.cjs +34 -0
  11. package/dist/lib/node/chunk-LZVHLML4.cjs.map +7 -0
  12. package/dist/lib/node/index.cjs +274 -0
  13. package/dist/lib/node/index.cjs.map +7 -0
  14. package/dist/lib/node/meta.cjs +30 -0
  15. package/dist/lib/node/meta.cjs.map +7 -0
  16. package/dist/lib/node/meta.json +1 -0
  17. package/dist/types/src/SettingsPlugin.d.ts +7 -0
  18. package/dist/types/src/SettingsPlugin.d.ts.map +1 -0
  19. package/dist/types/src/components/SettingsDialog.d.ts +6 -0
  20. package/dist/types/src/components/SettingsDialog.d.ts.map +1 -0
  21. package/dist/types/src/components/SettingsValue.d.ts +9 -0
  22. package/dist/types/src/components/SettingsValue.d.ts.map +1 -0
  23. package/dist/types/src/components/index.d.ts +3 -0
  24. package/dist/types/src/components/index.d.ts.map +1 -0
  25. package/dist/types/src/index.d.ts +5 -0
  26. package/dist/types/src/index.d.ts.map +1 -0
  27. package/dist/types/src/meta.d.ts +6 -0
  28. package/dist/types/src/meta.d.ts.map +1 -0
  29. package/dist/types/src/translations.d.ts +12 -0
  30. package/dist/types/src/translations.d.ts.map +1 -0
  31. package/package.json +62 -0
  32. package/src/SettingsPlugin.tsx +124 -0
  33. package/src/components/SettingsDialog.tsx +120 -0
  34. package/src/components/SettingsValue.tsx +49 -0
  35. package/src/components/index.ts +6 -0
  36. package/src/index.ts +13 -0
  37. package/src/meta.ts +9 -0
  38. package/src/translations.ts +18 -0
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var node_exports = {};
30
+ __export(node_exports, {
31
+ SettingsDialog: () => SettingsDialog,
32
+ SettingsPlugin: () => SettingsPlugin,
33
+ SettingsValue: () => SettingsValue,
34
+ default: () => src_default
35
+ });
36
+ module.exports = __toCommonJS(node_exports);
37
+ var import_chunk_LZVHLML4 = require("./chunk-LZVHLML4.cjs");
38
+ var import_react = require("@phosphor-icons/react");
39
+ var import_react2 = __toESM(require("react"));
40
+ var import_app_framework = require("@dxos/app-framework");
41
+ var import_local_storage = require("@dxos/local-storage");
42
+ var import_plugin_graph = require("@dxos/plugin-graph");
43
+ var import_react3 = __toESM(require("react"));
44
+ var import_app_framework2 = require("@dxos/app-framework");
45
+ var import_react_ui = require("@dxos/react-ui");
46
+ var import_react_ui_tabs = require("@dxos/react-ui-tabs");
47
+ var import_react_ui_theme = require("@dxos/react-ui-theme");
48
+ var import_util = require("@dxos/util");
49
+ var import_react4 = __toESM(require("react"));
50
+ var import_react_ui2 = require("@dxos/react-ui");
51
+ var SettingsDialog = ({ selected, onSelected }) => {
52
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_LZVHLML4.SETTINGS_PLUGIN);
53
+ const { plugins, enabled } = (0, import_app_framework2.usePlugins)();
54
+ const core = [
55
+ "dxos.org/plugin/layout",
56
+ "dxos.org/plugin/deck",
57
+ "dxos.org/plugin/files",
58
+ "dxos.org/plugin/space",
59
+ "dxos.org/plugin/stack",
60
+ "dxos.org/plugin/observability",
61
+ "dxos.org/plugin/registry"
62
+ ];
63
+ const corePlugins = core.map((id) => plugins.find((plugin) => plugin.meta.id === id)?.meta).filter(import_util.nonNullable);
64
+ const filteredPlugins = enabled.filter((id) => !core.includes(id)).map((id) => plugins.find((plugin) => plugin.meta.id === id)).filter((plugin) => plugin?.provides?.settings).map((plugin) => plugin.meta).sort(({ name: a }, { name: b }) => a?.localeCompare(b ?? "") ?? 0);
65
+ const [tabsActivePart, setTabsActivePart] = (0, import_react3.useState)("list");
66
+ return /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Dialog.Content, {
67
+ classNames: "p-0 bs-content max-bs-full md:max-is-[40rem] overflow-hidden"
68
+ }, /* @__PURE__ */ import_react3.default.createElement("div", {
69
+ role: "none",
70
+ className: "flex justify-between mbe-1 pbs-3 pis-2 pie-3 @md:pbs-4 @md:pis-4 @md:pie-5"
71
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Dialog.Title, {
72
+ onClick: () => setTabsActivePart("list"),
73
+ "aria-description": t("click to return to tablist description"),
74
+ classNames: "flex cursor-pointer items-center group/title"
75
+ }, /* @__PURE__ */ import_react3.default.createElement("svg", {
76
+ className: (0, import_react_ui_theme.mx)("@md:hidden", (0, import_react_ui_theme.getSize)(4), tabsActivePart === "list" && "invisible")
77
+ }, /* @__PURE__ */ import_react3.default.createElement("use", {
78
+ href: "/icons.svg#ph--caret-left--regular"
79
+ })), /* @__PURE__ */ import_react3.default.createElement("span", {
80
+ className: tabsActivePart !== "list" ? "group-hover/title:underline @md:group-hover/title:no-underline underline-offset-4 decoration-1" : ""
81
+ }, t("settings dialog title"))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Dialog.Close, {
82
+ asChild: true
83
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Button, {
84
+ density: "fine",
85
+ variant: "ghost",
86
+ autoFocus: true
87
+ }, /* @__PURE__ */ import_react3.default.createElement("svg", {
88
+ className: (0, import_react_ui_theme.mx)((0, import_react_ui_theme.getSize)(3))
89
+ }, /* @__PURE__ */ import_react3.default.createElement("use", {
90
+ href: "/icons.svg#ph--x--regular"
91
+ }))))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui_tabs.Tabs.Root, {
92
+ orientation: "vertical",
93
+ value: selected,
94
+ onValueChange: (nextSelected) => onSelected(nextSelected),
95
+ activePart: tabsActivePart,
96
+ onActivePartChange: setTabsActivePart,
97
+ classNames: "flex flex-col flex-1 mbs-2"
98
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_tabs.Tabs.Viewport, {
99
+ classNames: "flex-1 min-bs-0"
100
+ }, /* @__PURE__ */ import_react3.default.createElement("div", {
101
+ role: "none",
102
+ className: "overflow-y-auto pli-3 @md:pis-2 @md:pie-0 mbe-4 border-r separator-separator"
103
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_tabs.Tabs.Tablist, {
104
+ classNames: "max-bs-none overflow-y-visible"
105
+ }, /* @__PURE__ */ import_react3.default.createElement(PluginList, {
106
+ title: "Options",
107
+ plugins: corePlugins
108
+ }), filteredPlugins.length > 0 && /* @__PURE__ */ import_react3.default.createElement(PluginList, {
109
+ title: "Plugins",
110
+ plugins: filteredPlugins,
111
+ gap: true
112
+ }))), corePlugins.map((plugin) => /* @__PURE__ */ import_react3.default.createElement(import_react_ui_tabs.Tabs.Tabpanel, {
113
+ key: plugin.id,
114
+ value: plugin.id,
115
+ classNames: "pli-3 @md:pli-5 max-bs-dvh overflow-y-auto"
116
+ }, /* @__PURE__ */ import_react3.default.createElement(import_app_framework2.Surface, {
117
+ role: "settings",
118
+ data: {
119
+ plugin: plugin.id
120
+ }
121
+ }))), filteredPlugins.map((plugin) => /* @__PURE__ */ import_react3.default.createElement(import_react_ui_tabs.Tabs.Tabpanel, {
122
+ key: plugin.id,
123
+ value: plugin.id,
124
+ classNames: "pli-3 @md:pli-5 max-bs-dvh overflow-y-auto"
125
+ }, /* @__PURE__ */ import_react3.default.createElement(import_app_framework2.Surface, {
126
+ role: "settings",
127
+ data: {
128
+ plugin: plugin.id
129
+ }
130
+ }))))));
131
+ };
132
+ var PluginList = ({ title, plugins, gap }) => {
133
+ return /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_tabs.Tabs.TabGroupHeading, {
134
+ classNames: gap ? "mbs-4" : "mbs-4 @md:mbs-2"
135
+ }, title), plugins.map((plugin) => /* @__PURE__ */ import_react3.default.createElement(import_react_ui_tabs.Tabs.Tab, {
136
+ key: plugin.id,
137
+ value: plugin.id
138
+ }, plugin.name)));
139
+ };
140
+ var SettingsValue = ({ label, description, secondary, children }) => {
141
+ const primary = /* @__PURE__ */ import_react4.default.createElement("div", {
142
+ role: "none",
143
+ className: "flex w-full gap-4 py-1"
144
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Root, null, /* @__PURE__ */ import_react4.default.createElement("div", {
145
+ role: "none",
146
+ className: "flex flex-col w-full"
147
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Label, {
148
+ classNames: "flex min-h-[40px] items-center"
149
+ }, label), description && /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.DescriptionAndValidation, {
150
+ classNames: "mbs-0.5"
151
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Description, null, description))), /* @__PURE__ */ import_react4.default.createElement("div", {
152
+ role: "none"
153
+ }, /* @__PURE__ */ import_react4.default.createElement("div", {
154
+ role: "none",
155
+ className: "flex min-h-[40px] items-center"
156
+ }, children))));
157
+ if (secondary) {
158
+ return /* @__PURE__ */ import_react4.default.createElement("div", {
159
+ role: "none",
160
+ className: "flex flex-col w-full"
161
+ }, primary, secondary);
162
+ }
163
+ return primary;
164
+ };
165
+ var translations_default = [
166
+ {
167
+ "en-US": {
168
+ [import_chunk_LZVHLML4.SETTINGS_PLUGIN]: {
169
+ "open settings label": "Show settings",
170
+ "settings dialog title": "Settings",
171
+ "back label": "Back",
172
+ "click to return to tablist description": "Click the title to return to the settings menu"
173
+ }
174
+ }
175
+ }
176
+ ];
177
+ var DEFAULT_PLUGIN = "dxos.org/plugin/registry";
178
+ var SettingsPlugin = () => {
179
+ const settings = new import_local_storage.LocalStorageStore(import_chunk_LZVHLML4.SETTINGS_PLUGIN, {
180
+ selected: DEFAULT_PLUGIN
181
+ });
182
+ return {
183
+ meta: import_chunk_LZVHLML4.meta_default,
184
+ ready: async () => {
185
+ settings.prop({
186
+ key: "selected",
187
+ type: import_local_storage.LocalStorageStore.string()
188
+ });
189
+ },
190
+ provides: {
191
+ surface: {
192
+ component: ({ data }) => {
193
+ switch (data.component) {
194
+ case `${import_chunk_LZVHLML4.SETTINGS_PLUGIN}/Settings`:
195
+ return /* @__PURE__ */ import_react2.default.createElement(SettingsDialog, {
196
+ selected: settings.values.selected,
197
+ onSelected: (selected) => settings.values.selected = selected
198
+ });
199
+ default:
200
+ return null;
201
+ }
202
+ }
203
+ },
204
+ intent: {
205
+ resolver: (intent) => {
206
+ switch (intent.action) {
207
+ case import_app_framework.SettingsAction.OPEN: {
208
+ if (intent.data?.plugin) {
209
+ settings.values.selected = intent.data?.plugin;
210
+ }
211
+ return {
212
+ intents: [
213
+ [
214
+ {
215
+ action: import_app_framework.LayoutAction.SET_LAYOUT,
216
+ data: {
217
+ element: "dialog",
218
+ component: `${import_chunk_LZVHLML4.SETTINGS_PLUGIN}/Settings`,
219
+ dialogBlockAlign: "start"
220
+ }
221
+ }
222
+ ]
223
+ ]
224
+ };
225
+ }
226
+ }
227
+ }
228
+ },
229
+ graph: {
230
+ builder: (plugins) => {
231
+ const intentPlugin = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseIntentPlugin);
232
+ return (0, import_plugin_graph.createExtension)({
233
+ id: import_chunk_LZVHLML4.SETTINGS_PLUGIN,
234
+ filter: (node) => node.id === "root",
235
+ actions: () => [
236
+ {
237
+ id: import_chunk_LZVHLML4.SETTINGS_PLUGIN,
238
+ data: async () => {
239
+ await intentPlugin?.provides.intent.dispatch({
240
+ plugin: import_chunk_LZVHLML4.SETTINGS_PLUGIN,
241
+ action: import_app_framework.SettingsAction.OPEN
242
+ });
243
+ },
244
+ properties: {
245
+ label: [
246
+ "open settings label",
247
+ {
248
+ ns: import_chunk_LZVHLML4.SETTINGS_PLUGIN
249
+ }
250
+ ],
251
+ icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.Gear, props),
252
+ iconSymbol: "ph--gear--regular",
253
+ keyBinding: {
254
+ macos: "meta+,",
255
+ windows: "alt+,"
256
+ }
257
+ }
258
+ }
259
+ ]
260
+ });
261
+ }
262
+ },
263
+ translations: translations_default
264
+ }
265
+ };
266
+ };
267
+ var src_default = SettingsPlugin;
268
+ // Annotate the CommonJS export names for ESM import in node:
269
+ 0 && (module.exports = {
270
+ SettingsDialog,
271
+ SettingsPlugin,
272
+ SettingsValue
273
+ });
274
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/SettingsPlugin.tsx", "../../../src/components/SettingsDialog.tsx", "../../../src/components/SettingsValue.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Gear, type IconProps } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport {\n type IntentResolverProvides,\n type PluginDefinition,\n type SurfaceProvides,\n parseIntentPlugin,\n resolvePlugin,\n LayoutAction,\n SettingsAction,\n type GraphBuilderProvides,\n type TranslationsProvides,\n} from '@dxos/app-framework';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\n\nimport { SettingsDialog } from './components';\nimport meta, { SETTINGS_PLUGIN } from './meta';\nimport translations from './translations';\n\nconst DEFAULT_PLUGIN = 'dxos.org/plugin/registry';\n\nexport type SettingsPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n GraphBuilderProvides &\n TranslationsProvides;\n\ntype SettingsSettingsProps = {\n selected: string;\n};\n\n/**\n * Plugin for aggregating and rendering plugin settings.\n */\nexport const SettingsPlugin = (): PluginDefinition<SettingsPluginProvides> => {\n const settings = new LocalStorageStore<SettingsSettingsProps>(SETTINGS_PLUGIN, { selected: DEFAULT_PLUGIN });\n\n return {\n meta,\n ready: async () => {\n settings.prop({ key: 'selected', type: LocalStorageStore.string() });\n },\n provides: {\n surface: {\n component: ({ data }) => {\n switch (data.component) {\n case `${SETTINGS_PLUGIN}/Settings`:\n return (\n <SettingsDialog\n selected={settings.values.selected}\n onSelected={(selected) => (settings.values.selected = selected)}\n />\n );\n\n default:\n return null;\n }\n },\n },\n intent: {\n resolver: (intent) => {\n switch (intent.action) {\n case SettingsAction.OPEN: {\n if (intent.data?.plugin) {\n settings.values.selected = intent.data?.plugin;\n }\n\n return {\n intents: [\n [\n {\n action: LayoutAction.SET_LAYOUT,\n data: {\n element: 'dialog',\n component: `${SETTINGS_PLUGIN}/Settings`,\n dialogBlockAlign: 'start',\n },\n },\n ],\n ],\n };\n }\n }\n },\n },\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n\n return createExtension({\n id: SETTINGS_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id: SETTINGS_PLUGIN,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch({\n plugin: SETTINGS_PLUGIN,\n action: SettingsAction.OPEN,\n });\n },\n properties: {\n label: ['open settings label', { ns: SETTINGS_PLUGIN }],\n icon: (props: IconProps) => <Gear {...props} />,\n iconSymbol: 'ph--gear--regular',\n keyBinding: {\n macos: 'meta+,',\n windows: 'alt+,',\n },\n },\n },\n ],\n });\n },\n },\n translations,\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { type Plugin, Surface, usePlugins } from '@dxos/app-framework';\nimport { Button, Dialog, useTranslation } from '@dxos/react-ui';\nimport { Tabs, type TabsActivePart } from '@dxos/react-ui-tabs';\nimport { getSize, mx } from '@dxos/react-ui-theme';\nimport { nonNullable } from '@dxos/util';\n\nimport { SETTINGS_PLUGIN } from '../meta';\n\nexport const SettingsDialog = ({\n selected,\n onSelected,\n}: {\n selected: string;\n onSelected: (plugin: string) => void;\n}) => {\n const { t } = useTranslation(SETTINGS_PLUGIN);\n const { plugins, enabled } = usePlugins();\n\n // TODO(burdon): Factor out common defs?\n const core = [\n 'dxos.org/plugin/layout',\n 'dxos.org/plugin/deck',\n 'dxos.org/plugin/files',\n 'dxos.org/plugin/space',\n 'dxos.org/plugin/stack',\n 'dxos.org/plugin/observability',\n 'dxos.org/plugin/registry',\n ];\n\n const corePlugins = core.map((id) => plugins.find((plugin) => plugin.meta.id === id)?.meta).filter(nonNullable);\n\n const filteredPlugins = enabled\n .filter((id) => !core.includes(id))\n .map((id) => plugins.find((plugin) => plugin.meta.id === id))\n .filter((plugin) => (plugin?.provides as any)?.settings)\n .map((plugin) => plugin!.meta)\n .sort(({ name: a }, { name: b }) => a?.localeCompare(b ?? '') ?? 0);\n\n const [tabsActivePart, setTabsActivePart] = useState<TabsActivePart>('list');\n\n return (\n <Dialog.Content classNames='p-0 bs-content max-bs-full md:max-is-[40rem] overflow-hidden'>\n <div role='none' className='flex justify-between mbe-1 pbs-3 pis-2 pie-3 @md:pbs-4 @md:pis-4 @md:pie-5'>\n <Dialog.Title\n onClick={() => setTabsActivePart('list')}\n aria-description={t('click to return to tablist description')}\n classNames='flex cursor-pointer items-center group/title'\n >\n <svg className={mx('@md:hidden', getSize(4), tabsActivePart === 'list' && 'invisible')}>\n <use href='/icons.svg#ph--caret-left--regular' />\n </svg>\n <span\n className={\n tabsActivePart !== 'list'\n ? 'group-hover/title:underline @md:group-hover/title:no-underline underline-offset-4 decoration-1'\n : ''\n }\n >\n {t('settings dialog title')}\n </span>\n </Dialog.Title>\n <Dialog.Close asChild>\n <Button density='fine' variant='ghost' autoFocus>\n <svg className={mx(getSize(3))}>\n <use href={'/icons.svg#ph--x--regular'} />\n </svg>\n </Button>\n </Dialog.Close>\n </div>\n\n <Tabs.Root\n orientation='vertical'\n value={selected}\n onValueChange={(nextSelected) => onSelected(nextSelected)}\n activePart={tabsActivePart}\n onActivePartChange={setTabsActivePart}\n classNames='flex flex-col flex-1 mbs-2'\n >\n <Tabs.Viewport classNames='flex-1 min-bs-0'>\n <div role='none' className='overflow-y-auto pli-3 @md:pis-2 @md:pie-0 mbe-4 border-r separator-separator'>\n <Tabs.Tablist classNames='max-bs-none overflow-y-visible'>\n <PluginList title='Options' plugins={corePlugins} />\n {filteredPlugins.length > 0 && <PluginList title='Plugins' plugins={filteredPlugins} gap />}\n </Tabs.Tablist>\n </div>\n\n {corePlugins.map((plugin) => (\n <Tabs.Tabpanel key={plugin.id} value={plugin.id} classNames='pli-3 @md:pli-5 max-bs-dvh overflow-y-auto'>\n <Surface role='settings' data={{ plugin: plugin.id }} />\n </Tabs.Tabpanel>\n ))}\n {filteredPlugins.map((plugin) => (\n <Tabs.Tabpanel key={plugin.id} value={plugin.id} classNames='pli-3 @md:pli-5 max-bs-dvh overflow-y-auto'>\n <Surface role='settings' data={{ plugin: plugin.id }} />\n </Tabs.Tabpanel>\n ))}\n </Tabs.Viewport>\n </Tabs.Root>\n </Dialog.Content>\n );\n};\n\nconst PluginList = ({ title, plugins, gap }: { title: string; plugins: Plugin['meta'][]; gap?: boolean }) => {\n return (\n <>\n <Tabs.TabGroupHeading classNames={gap ? 'mbs-4' : 'mbs-4 @md:mbs-2'}>{title}</Tabs.TabGroupHeading>\n {plugins.map((plugin) => (\n <Tabs.Tab key={plugin.id} value={plugin.id}>\n {plugin.name}\n </Tabs.Tab>\n ))}\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type JSX, type PropsWithChildren } from 'react';\n\nimport { Input } from '@dxos/react-ui';\n\ntype SettingValueProps = {\n label: string;\n description?: JSX.Element;\n secondary?: JSX.Element;\n};\n\nexport const SettingsValue = ({ label, description, secondary, children }: PropsWithChildren<SettingValueProps>) => {\n const primary = (\n <div role='none' className='flex w-full gap-4 py-1'>\n <Input.Root>\n <div role='none' className='flex flex-col w-full'>\n {/* TODO(burdon): Consistent height for controls (e.g., Select, Textbox, and Checkbox are all different). */}\n <Input.Label classNames='flex min-h-[40px] items-center'>{label}</Input.Label>\n {description && (\n <Input.DescriptionAndValidation classNames='mbs-0.5'>\n <Input.Description>{description}</Input.Description>\n </Input.DescriptionAndValidation>\n )}\n </div>\n\n <div role='none'>\n <div role='none' className='flex min-h-[40px] items-center'>\n {children}\n </div>\n </div>\n </Input.Root>\n </div>\n );\n\n if (secondary) {\n // console.log(secondary);\n return (\n <div role='none' className='flex flex-col w-full'>\n {primary}\n {secondary}\n </div>\n );\n }\n\n return primary;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SETTINGS_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [SETTINGS_PLUGIN]: {\n 'open settings label': 'Show settings',\n 'settings dialog title': 'Settings',\n 'back label': 'Back',\n 'click to return to tablist description': 'Click the title to return to the settings menu',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SettingsPlugin } from './SettingsPlugin';\n\nexport default SettingsPlugin;\n\nexport * from './SettingsPlugin';\n\n// TODO(wittjosiah): Remove.\n// Settings should be exposed from plugins as state and intents rather than components.\nexport * from './components';\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_app_framework", "import_react_ui", "SettingsDialog", "selected", "onSelected", "t", "useTranslation", "SETTINGS_PLUGIN", "plugins", "enabled", "usePlugins", "core", "corePlugins", "map", "id", "find", "plugin", "meta", "filter", "nonNullable", "filteredPlugins", "includes", "provides", "settings", "sort", "name", "a", "b", "localeCompare", "tabsActivePart", "setTabsActivePart", "useState", "React", "Dialog", "Content", "classNames", "div", "role", "className", "Title", "onClick", "aria-description", "svg", "mx", "getSize", "use", "href", "span", "Close", "asChild", "Button", "density", "variant", "autoFocus", "Tabs", "Root", "orientation", "value", "onValueChange", "nextSelected", "activePart", "onActivePartChange", "Viewport", "Tablist", "PluginList", "title", "length", "gap", "Tabpanel", "key", "Surface", "data", "TabGroupHeading", "Tab", "SettingsValue", "label", "description", "secondary", "children", "primary", "Input", "Label", "DescriptionAndValidation", "Description", "DEFAULT_PLUGIN", "SettingsPlugin", "LocalStorageStore", "ready", "prop", "type", "string", "surface", "component", "values", "intent", "resolver", "action", "SettingsAction", "OPEN", "intents", "LayoutAction", "SET_LAYOUT", "element", "dialogBlockAlign", "graph", "builder", "intentPlugin", "resolvePlugin", "parseIntentPlugin", "createExtension", "node", "actions", "dispatch", "properties", "ns", "icon", "props", "Gear", "iconSymbol", "keyBinding", "macos", "windows", "translations"]
7
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var meta_exports = {};
20
+ __export(meta_exports, {
21
+ SETTINGS_PLUGIN: () => import_chunk_LZVHLML4.SETTINGS_PLUGIN,
22
+ default: () => import_chunk_LZVHLML4.meta_default
23
+ });
24
+ module.exports = __toCommonJS(meta_exports);
25
+ var import_chunk_LZVHLML4 = require("./chunk-LZVHLML4.cjs");
26
+ // Annotate the CommonJS export names for ESM import in node:
27
+ 0 && (module.exports = {
28
+ SETTINGS_PLUGIN
29
+ });
30
+ //# sourceMappingURL=meta.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["meta.cjs"],
4
+ "sourcesContent": ["import {\n SETTINGS_PLUGIN,\n meta_default\n} from \"./chunk-LZVHLML4.cjs\";\nexport {\n SETTINGS_PLUGIN,\n meta_default as default\n};\n//# sourceMappingURL=meta.cjs.map\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAGO;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ {"inputs":{"packages/plugins/plugin-settings/src/meta.ts":{"bytes":778,"imports":[],"format":"esm"},"packages/plugins/plugin-settings/src/components/SettingsDialog.tsx":{"bytes":15578,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-settings/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-settings/src/components/SettingsValue.tsx":{"bytes":4471,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-settings/src/components/index.ts":{"bytes":634,"imports":[{"path":"packages/plugins/plugin-settings/src/components/SettingsDialog.tsx","kind":"import-statement","original":"./SettingsDialog"},{"path":"packages/plugins/plugin-settings/src/components/SettingsValue.tsx","kind":"import-statement","original":"./SettingsValue"}],"format":"esm"},"packages/plugins/plugin-settings/src/translations.ts":{"bytes":1571,"imports":[{"path":"packages/plugins/plugin-settings/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-settings/src/SettingsPlugin.tsx":{"bytes":12747,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-settings/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-settings/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-settings/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-settings/src/index.ts":{"bytes":1216,"imports":[{"path":"packages/plugins/plugin-settings/src/SettingsPlugin.tsx","kind":"import-statement","original":"./SettingsPlugin"},{"path":"packages/plugins/plugin-settings/src/SettingsPlugin.tsx","kind":"import-statement","original":"./SettingsPlugin"},{"path":"packages/plugins/plugin-settings/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-settings/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17139},"packages/plugins/plugin-settings/dist/lib/node/index.cjs":{"imports":[{"path":"packages/plugins/plugin-settings/dist/lib/node/chunk-LZVHLML4.cjs","kind":"import-statement"},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["SettingsDialog","SettingsPlugin","SettingsValue","default"],"entryPoint":"packages/plugins/plugin-settings/src/index.ts","inputs":{"packages/plugins/plugin-settings/src/SettingsPlugin.tsx":{"bytesInOutput":2968},"packages/plugins/plugin-settings/src/components/SettingsDialog.tsx":{"bytesInOutput":4408},"packages/plugins/plugin-settings/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-settings/src/components/SettingsValue.tsx":{"bytesInOutput":1125},"packages/plugins/plugin-settings/src/translations.ts":{"bytesInOutput":318},"packages/plugins/plugin-settings/src/index.ts":{"bytesInOutput":34}},"bytes":9420},"packages/plugins/plugin-settings/dist/lib/node/meta.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-settings/dist/lib/node/meta.cjs":{"imports":[{"path":"packages/plugins/plugin-settings/dist/lib/node/chunk-LZVHLML4.cjs","kind":"import-statement"}],"exports":["SETTINGS_PLUGIN","default"],"entryPoint":"packages/plugins/plugin-settings/src/meta.ts","inputs":{},"bytes":165},"packages/plugins/plugin-settings/dist/lib/node/chunk-LZVHLML4.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":338},"packages/plugins/plugin-settings/dist/lib/node/chunk-LZVHLML4.cjs":{"imports":[],"exports":["SETTINGS_PLUGIN","meta_default"],"inputs":{"packages/plugins/plugin-settings/src/meta.ts":{"bytesInOutput":96}},"bytes":235}}}
@@ -0,0 +1,7 @@
1
+ import { type IntentResolverProvides, type PluginDefinition, type SurfaceProvides, type GraphBuilderProvides, type TranslationsProvides } from '@dxos/app-framework';
2
+ export type SettingsPluginProvides = SurfaceProvides & IntentResolverProvides & GraphBuilderProvides & TranslationsProvides;
3
+ /**
4
+ * Plugin for aggregating and rendering plugin settings.
5
+ */
6
+ export declare const SettingsPlugin: () => PluginDefinition<SettingsPluginProvides>;
7
+ //# sourceMappingURL=SettingsPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsPlugin.d.ts","sourceRoot":"","sources":["../../../src/SettingsPlugin.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAKpB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAU7B,MAAM,MAAM,sBAAsB,GAAG,eAAe,GAClD,sBAAsB,GACtB,oBAAoB,GACpB,oBAAoB,CAAC;AAMvB;;GAEG;AACH,eAAO,MAAM,cAAc,QAAO,gBAAgB,CAAC,sBAAsB,CAoFxE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare const SettingsDialog: ({ selected, onSelected, }: {
3
+ selected: string;
4
+ onSelected: (plugin: string) => void;
5
+ }) => React.JSX.Element;
6
+ //# sourceMappingURL=SettingsDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/SettingsDialog.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAUxC,eAAO,MAAM,cAAc,8BAGxB;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,sBAsFA,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type JSX, type PropsWithChildren } from 'react';
2
+ type SettingValueProps = {
3
+ label: string;
4
+ description?: JSX.Element;
5
+ secondary?: JSX.Element;
6
+ };
7
+ export declare const SettingsValue: ({ label, description, secondary, children }: PropsWithChildren<SettingValueProps>) => JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=SettingsValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsValue.d.ts","sourceRoot":"","sources":["../../../../src/components/SettingsValue.tsx"],"names":[],"mappings":"AAIA,OAAc,EAAE,KAAK,GAAG,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAIhE,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,aAAa,gDAAiD,iBAAiB,CAAC,iBAAiB,CAAC,gBAkC9G,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './SettingsDialog';
2
+ export * from './SettingsValue';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAIA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { SettingsPlugin } from './SettingsPlugin';
2
+ export default SettingsPlugin;
3
+ export * from './SettingsPlugin';
4
+ export * from './components';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,eAAe,cAAc,CAAC;AAE9B,cAAc,kBAAkB,CAAC;AAIjC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const SETTINGS_PLUGIN = "dxos.org/plugin/settings";
2
+ declare const _default: {
3
+ id: string;
4
+ };
5
+ export default _default;
6
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,6BAA6B,CAAC;;;;AAE1D,wBAEE"}
@@ -0,0 +1,12 @@
1
+ declare const _default: {
2
+ 'en-US': {
3
+ "dxos.org/plugin/settings": {
4
+ 'open settings label': string;
5
+ 'settings dialog title': string;
6
+ 'back label': string;
7
+ 'click to return to tablist description': string;
8
+ };
9
+ };
10
+ }[];
11
+ export default _default;
12
+ //# sourceMappingURL=translations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":";;;;;;;;;;AAMA,wBAWE"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@dxos/plugin-settings",
3
+ "version": "0.6.8-main.046e6cf",
4
+ "description": "DXOS app plugin for aggregating and rendering plugin settings.",
5
+ "homepage": "https://dxos.org",
6
+ "bugs": "https://github.com/dxos/dxos/issues",
7
+ "license": "MIT",
8
+ "author": "DXOS.org",
9
+ "exports": {
10
+ ".": {
11
+ "browser": "./dist/lib/browser/index.mjs",
12
+ "node": {
13
+ "default": "./dist/lib/node/index.cjs"
14
+ },
15
+ "types": "./dist/types/src/index.d.ts"
16
+ },
17
+ "./meta": {
18
+ "browser": "./dist/lib/browser/meta.mjs",
19
+ "node": {
20
+ "default": "./dist/lib/node/meta.cjs"
21
+ },
22
+ "types": "./dist/types/src/meta.d.ts"
23
+ }
24
+ },
25
+ "types": "dist/types/src/index.d.ts",
26
+ "typesVersions": {
27
+ "*": {
28
+ "meta": [
29
+ "dist/types/src/meta.d.ts"
30
+ ]
31
+ }
32
+ },
33
+ "files": [
34
+ "dist",
35
+ "src"
36
+ ],
37
+ "dependencies": {
38
+ "@dxos/app-framework": "0.6.8-main.046e6cf",
39
+ "@dxos/local-storage": "0.6.8-main.046e6cf",
40
+ "@dxos/plugin-graph": "0.6.8-main.046e6cf",
41
+ "@dxos/react-ui-tabs": "0.6.8-main.046e6cf",
42
+ "@dxos/util": "0.6.8-main.046e6cf"
43
+ },
44
+ "devDependencies": {
45
+ "@phosphor-icons/react": "^2.1.5",
46
+ "@types/react": "~18.2.0",
47
+ "react": "~18.2.0",
48
+ "vite": "^5.3.4",
49
+ "@dxos/react-ui": "0.6.8-main.046e6cf",
50
+ "@dxos/react-ui-theme": "0.6.8-main.046e6cf",
51
+ "@dxos/storybook-utils": "0.6.8-main.046e6cf"
52
+ },
53
+ "peerDependencies": {
54
+ "@phosphor-icons/react": "^2.1.5",
55
+ "react": "~18.2.0",
56
+ "@dxos/react-ui": "0.6.8-main.046e6cf",
57
+ "@dxos/react-ui-theme": "0.6.8-main.046e6cf"
58
+ },
59
+ "publishConfig": {
60
+ "access": "public"
61
+ }
62
+ }