@polyxd/react 0.1.0

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 (63) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +177 -0
  3. package/README.md +39 -0
  4. package/dist/components/avatar.d.ts +10 -0
  5. package/dist/components/avatar.js +47 -0
  6. package/dist/components/avatar.js.map +1 -0
  7. package/dist/components/chart.d.ts +5 -0
  8. package/dist/components/chart.js +98 -0
  9. package/dist/components/chart.js.map +1 -0
  10. package/dist/components/content.d.ts +23 -0
  11. package/dist/components/content.js +108 -0
  12. package/dist/components/content.js.map +1 -0
  13. package/dist/components/filter.d.ts +9 -0
  14. package/dist/components/filter.js +97 -0
  15. package/dist/components/filter.js.map +1 -0
  16. package/dist/components/flow.d.ts +22 -0
  17. package/dist/components/flow.js +143 -0
  18. package/dist/components/flow.js.map +1 -0
  19. package/dist/components/index.d.ts +10 -0
  20. package/dist/components/index.js +19 -0
  21. package/dist/components/index.js.map +1 -0
  22. package/dist/components/inputs.d.ts +38 -0
  23. package/dist/components/inputs.js +230 -0
  24. package/dist/components/inputs.js.map +1 -0
  25. package/dist/components/navigation.d.ts +8 -0
  26. package/dist/components/navigation.js +51 -0
  27. package/dist/components/navigation.js.map +1 -0
  28. package/dist/components/structure.d.ts +25 -0
  29. package/dist/components/structure.js +58 -0
  30. package/dist/components/structure.js.map +1 -0
  31. package/dist/components/table.d.ts +9 -0
  32. package/dist/components/table.js +144 -0
  33. package/dist/components/table.js.map +1 -0
  34. package/dist/context.d.ts +93 -0
  35. package/dist/context.js +42 -0
  36. package/dist/context.js.map +1 -0
  37. package/dist/data.d.ts +26 -0
  38. package/dist/data.js +52 -0
  39. package/dist/data.js.map +1 -0
  40. package/dist/format.d.ts +12 -0
  41. package/dist/format.js +51 -0
  42. package/dist/format.js.map +1 -0
  43. package/dist/index.d.ts +5 -0
  44. package/dist/index.js +6 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/surface.d.ts +37 -0
  47. package/dist/surface.js +80 -0
  48. package/dist/surface.js.map +1 -0
  49. package/package.json +53 -0
  50. package/src/styles.css +2182 -0
  51. package/themes/antd.css +300 -0
  52. package/themes/bootstrap.css +300 -0
  53. package/themes/carbon.css +310 -0
  54. package/themes/chakra.css +300 -0
  55. package/themes/fluent.css +300 -0
  56. package/themes/govuk.css +150 -0
  57. package/themes/mantine.css +300 -0
  58. package/themes/material3.css +300 -0
  59. package/themes/polaris.css +300 -0
  60. package/themes/primer.css +300 -0
  61. package/themes/radix.css +300 -0
  62. package/themes/shadcn.css +300 -0
  63. package/themes/spectrum.css +300 -0
@@ -0,0 +1,80 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useContext, useMemo, useState } from "react";
3
+ import { SurfaceContext, ScopeContext, StepsContext, useSurface } from "./context.js";
4
+ import { ROOT_SCOPE, resolve, resolveContext, set } from "./data.js";
5
+ import { registry } from "./components/index.js";
6
+ import { Avatar } from "./components/avatar.js";
7
+ /** Renders one Polyxd UI document. */
8
+ export function PolyxdSurface({ document: doc, data: initial, onAction, onDataChange, onDismiss, theme, mode, density, disclosure = "progressive", locale = "en-GB", resolveMedia, components: overrides, className }) {
9
+ const [data, setData] = useState(() => initial ?? doc.data ?? {});
10
+ const [portal, setPortal] = useState(null);
11
+ const byId = useMemo(() => new Map(doc.components.map((c) => [c.id, c])), [doc]);
12
+ const components = useMemo(() => ({ ...registry, ...overrides }), [overrides]);
13
+ const setValue = useCallback((pointer, value) => setData((d) => {
14
+ const next = set(d, pointer, value);
15
+ onDataChange?.(next);
16
+ return next;
17
+ }), [onDataChange]);
18
+ const dispatch = useCallback((action, scope, source) => {
19
+ if (!action)
20
+ return;
21
+ const { name, context } = action.event;
22
+ if (name === "ui.dismiss")
23
+ return onDismiss?.();
24
+ onAction?.({ name, context: resolveContext(context, data, scope), source });
25
+ }, [data, onAction, onDismiss]);
26
+ const value = { doc, byId, data, setValue, dispatch, locale, resolveMedia, portal, components, disclosure };
27
+ const rootIsDialog = byId.get(doc.root)?.component === "Confirm";
28
+ const nav = doc.components.find((c) => c.component === "Navigation");
29
+ return (_jsx(SurfaceContext.Provider, { value: value, children: _jsxs("div", { className: ["pxd-surface", doc.surface.presentation === "panel" ? "pxd-surface-panel" : null, nav ? "pxd-surface-with-nav" : null, className].filter(Boolean).join(" "), "data-pxd-theme": theme, "data-pxd-mode": mode, "data-pxd-density": density, "data-pxd-surface": doc.surface.id, lang: locale, children: [nav && _jsx(Render, { id: nav.id }), _jsxs("div", { className: "pxd-surface-main", children: [!rootIsDialog && _jsx(SurfaceHeader, {}), _jsx(Render, { id: doc.root })] }), _jsx("div", { ref: setPortal, className: "pxd-portal" })] }) }));
30
+ }
31
+ /** Title, and on a record page: where it sits, what state it's in, and what you can do to it. */
32
+ function SurfaceHeader() {
33
+ const s = useSurface();
34
+ const { title, subtitle, breadcrumbs, badge, avatar, actions } = s.doc.surface;
35
+ const text = (v) => String(resolve(v, s.data, ROOT_SCOPE) ?? "");
36
+ const plain = !subtitle && !breadcrumbs && !badge && !avatar && !actions;
37
+ if (plain)
38
+ return _jsx("h1", { className: "pxd-surface-title", children: title });
39
+ return (_jsxs("header", { className: "pxd-page-header", children: [breadcrumbs && (_jsx("nav", { className: "pxd-breadcrumbs", "aria-label": "Breadcrumb", children: _jsx("ol", { children: breadcrumbs.map((c, i) => (_jsx("li", { children: c.action ? (_jsx("button", { type: "button", className: "pxd-link", onClick: () => s.dispatch(c.action, ROOT_SCOPE, s.doc.surface.id), children: text(c.label) })) : (text(c.label)) }, i))) }) })), _jsxs("div", { className: "pxd-page-header-main", children: [avatar !== undefined && _jsx(Avatar, { value: text(avatar), name: title, size: 48 }), _jsxs("div", { className: "pxd-page-header-text", children: [_jsxs("h1", { className: "pxd-surface-title", children: [title, badge && _jsx("span", { className: `pxd-badge pxd-tone-${badge.tone ?? "neutral"}`, children: text(badge.text) })] }), subtitle && _jsx("p", { className: "pxd-surface-subtitle", children: subtitle })] }), actions && (_jsx("div", { className: "pxd-page-header-actions", children: _jsx(Render, { id: actions }) }))] })] }));
40
+ }
41
+ /** Renders a component by id in the current scope. */
42
+ export function Render({ id, scope }) {
43
+ const s = useSurface();
44
+ const current = useContext(ScopeContext);
45
+ const node = s.byId.get(id);
46
+ if (!node)
47
+ return null;
48
+ const effective = scope ?? current;
49
+ if (node.visible !== undefined && resolve(node.visible, s.data, effective) === false)
50
+ return null;
51
+ const Component = s.components[node.component];
52
+ const body = Component ? _jsx(Component, { node: node }) : _jsx(UnknownComponent, { node: node });
53
+ return scope ? _jsx(ScopeContext.Provider, { value: scope, children: body }) : body;
54
+ }
55
+ function UnknownComponent({ node }) {
56
+ return (_jsxs("div", { className: "pxd-unknown", role: "note", children: ["Unsupported component \u201C", node.component, "\u201D"] }));
57
+ }
58
+ /** Accessibility props from a node's `accessibility` block. */
59
+ export function useA11y(node) {
60
+ const s = useSurface();
61
+ const scope = useContext(ScopeContext);
62
+ const a = node.accessibility;
63
+ // Which component rendered this element: for annotation, devtools and tests.
64
+ const ids = { "data-pxd-id": node.id, "data-pxd-component": node.component };
65
+ if (!a)
66
+ return ids;
67
+ const text = (v) => {
68
+ const r = resolve(v, s.data, scope);
69
+ return r === undefined ? undefined : String(r);
70
+ };
71
+ return {
72
+ ...ids,
73
+ "aria-label": a.label !== undefined ? text(a.label) : undefined,
74
+ "aria-description": a.description !== undefined ? text(a.description) : undefined,
75
+ "aria-live": a.live,
76
+ "aria-hidden": a.hidden || undefined,
77
+ };
78
+ }
79
+ export { StepsContext };
80
+ //# sourceMappingURL=surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAsB,MAAM,OAAO,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAA0E,MAAM,cAAe,CAAC;AAC/J,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAyB,MAAM,WAAW,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAA0B,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAyB,CAAC;AA2BjD,sCAAsC;AACtC,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,GAAG,aAAa,EAAE,MAAM,GAAG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAsB;IACvO,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAO,GAAG,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAsC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEpH,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,OAAe,EAAE,KAAc,EAAE,EAAE,CAClC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACpC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,EACJ,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;QACvC,IAAI,IAAI,KAAK,YAAY;YAAE,OAAO,SAAS,EAAE,EAAE,CAAC;QAChD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC,EACD,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAC5B,CAAC;IAEF,MAAM,KAAK,GAAwB,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IACjI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,KAAK,SAAS,CAAC;IACjE,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC;IAErE,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACnC,eACE,SAAS,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,oBACvJ,KAAK,mBACN,IAAI,sBACD,OAAO,sBACP,GAAG,CAAC,OAAO,CAAC,EAAE,EAChC,IAAI,EAAE,MAAM,aAEX,GAAG,IAAI,KAAC,MAAM,IAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAI,EAC9B,eAAK,SAAS,EAAC,kBAAkB,aAC9B,CAAC,YAAY,IAAI,KAAC,aAAa,KAAG,EACnC,KAAC,MAAM,IAAC,EAAE,EAAE,GAAG,CAAC,IAAI,GAAI,IACpB,EACN,cAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAC,YAAY,GAAG,IAC1C,GACkB,CAC3B,CAAC;AACJ,CAAC;AAED,iGAAiG;AACjG,SAAS,aAAa;IACpB,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;IAC/E,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC;IACzE,IAAI,KAAK;QAAE,OAAO,aAAI,SAAS,EAAC,mBAAmB,YAAE,KAAK,GAAM,CAAC;IACjE,OAAO,CACL,kBAAQ,SAAS,EAAC,iBAAiB,aAChC,WAAW,IAAI,CACd,cAAK,SAAS,EAAC,iBAAiB,gBAAY,YAAY,YACtD,uBACG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAC,CACtC,uBACG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CACV,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,UAAU,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,YACzG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GACP,CACV,CAAC,CAAC,CAAC,CACF,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CACd,IAPM,CAAC,CAQL,CACN,CAAC,GACC,GACD,CACP,EACD,eAAK,SAAS,EAAC,sBAAsB,aAClC,MAAM,KAAK,SAAS,IAAI,KAAC,MAAM,IAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAI,EAC/E,eAAK,SAAS,EAAC,sBAAsB,aACnC,cAAI,SAAS,EAAC,mBAAmB,aAC9B,KAAK,EACL,KAAK,IAAI,eAAM,SAAS,EAAE,sBAAsB,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,YAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAQ,IAClG,EACJ,QAAQ,IAAI,YAAG,SAAS,EAAC,sBAAsB,YAAE,QAAQ,GAAK,IAC3D,EACL,OAAO,IAAI,CACV,cAAK,SAAS,EAAC,yBAAyB,YACtC,KAAC,MAAM,IAAC,EAAE,EAAE,OAAO,GAAI,GACnB,CACP,IACG,IACC,CACV,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAiC;IACjE,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC;IACnC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAClG,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAA8C,CAAC;IAC5F,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC,CAAC,KAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IACtF,OAAO,KAAK,CAAC,CAAC,CAAC,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,IAAI,GAAyB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5F,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAE,IAAI,EAAkB;IAChD,OAAO,CACL,eAAK,SAAS,EAAC,aAAa,EAAC,IAAI,EAAC,MAAM,6CACd,IAAI,CAAC,SAAS,cAClC,CACP,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,OAAO,CAAC,IAAU;IAChC,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;IAC7B,6EAA6E;IAC7E,MAAM,GAAG,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,oBAAoB,EAAE,IAAI,CAAC,SAAS,EAA6B,CAAC;IACxG,IAAI,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IACnB,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,EAAE;QAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC;IACF,OAAO;QACL,GAAG,GAAG;QACN,YAAY,EAAE,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/D,kBAAkB,EAAE,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;QACjF,WAAW,EAAE,CAAC,CAAC,IAAI;QACnB,aAAa,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS;KACV,CAAC;AAC/B,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@polyxd/react",
3
+ "version": "0.1.0",
4
+ "description": "React renderer for Polyxd UI documents: Radix primitives styled by design-system tokens",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./styles.css": "./src/styles.css",
15
+ "./themes/*": "./themes/*"
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "src/styles.css",
20
+ "themes",
21
+ "LICENSE",
22
+ "NOTICE"
23
+ ],
24
+ "scripts": {
25
+ "build": "tsc -b",
26
+ "build:themes": "node scripts/build-themes.ts",
27
+ "test": "tsc -b && node --test \"test/**/*.test.ts\""
28
+ },
29
+ "peerDependencies": {
30
+ "react": ">=19",
31
+ "react-dom": ">=19"
32
+ },
33
+ "devDependencies": {
34
+ "@types/react": "^19.3.0",
35
+ "@types/react-dom": "^19.3.0",
36
+ "react": "^19.3.0",
37
+ "react-dom": "^19.3.0"
38
+ },
39
+ "dependencies": {
40
+ "@polyxd/spec": "^0.1.0",
41
+ "radix-ui": "^1.6.7"
42
+ },
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/visualfart/polyxd.git",
46
+ "directory": "packages/react"
47
+ },
48
+ "homepage": "https://polyxd.com",
49
+ "bugs": "https://github.com/visualfart/polyxd/issues",
50
+ "publishConfig": {
51
+ "access": "public"
52
+ }
53
+ }