JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 51
  • Score
    100M100P100Q74525F
  • License FSL-1.1-MIT

React binding for Treenity — reactive hooks, admin UI, and context-based component rendering.

Package Exports

  • @treenity/react
  • @treenity/react/app/App
  • @treenity/react/app/ErrorBoundary
  • @treenity/react/app/Login
  • @treenity/react/app/RoutedPage
  • @treenity/react/app/Treenity
  • @treenity/react/app/ViewPage
  • @treenity/react/app/main
  • @treenity/react/assets/DraftTextarea-BXFkXCrd
  • @treenity/react/assets/FieldLabel-ClXe5wBe
  • @treenity/react/assets/Reflect-BOmO-SNF
  • @treenity/react/assets/__vite-browser-external-BH7VMd9g
  • @treenity/react/assets/__vite-browser-external-CR3oAkHY
  • @treenity/react/assets/actions-BhdNxKnT
  • @treenity/react/assets/badge-BoU3UDV8
  • @treenity/react/assets/button--z3IQIka
  • @treenity/react/assets/checkbox-CJcr2us5
  • @treenity/react/assets/chevron-right-BDInJVl9
  • @treenity/react/assets/chunk-DECur_0Z
  • @treenity/react/assets/chunk-V2S4ZYJR-C_Syj0o4
  • @treenity/react/assets/client-1TJiKwNn
  • @treenity/react/assets/client-6M1-zo6N
  • @treenity/react/assets/client-97Nt5uNq
  • @treenity/react/assets/client-B-3bjiBZ
  • @treenity/react/assets/client-B8fpnML8
  • @treenity/react/assets/client-Bj08AA4v
  • @treenity/react/assets/client-Btw-_43K
  • @treenity/react/assets/client-C1mT3zAk
  • @treenity/react/assets/client-C5WM44ef
  • @treenity/react/assets/client-C7W5Q2so
  • @treenity/react/assets/client-CYyFDyEA
  • @treenity/react/assets/client-Caa4_RvX
  • @treenity/react/assets/client-Cza5nrd_
  • @treenity/react/assets/client-CzzB90Wp
  • @treenity/react/assets/client-D1q7ZJT7
  • @treenity/react/assets/client-DIYPoffB
  • @treenity/react/assets/client-DSUXEKJA
  • @treenity/react/assets/client-DXAr1Ki7
  • @treenity/react/assets/client-DZ4lsMSg
  • @treenity/react/assets/client-Dfx5pXqF
  • @treenity/react/assets/client-Du9oSxmb
  • @treenity/react/assets/client-Dz7D-jkx
  • @treenity/react/assets/client-Dzy897HK2
  • @treenity/react/assets/client-PDBEAX7P
  • @treenity/react/assets/client-n2jgqPVO
  • @treenity/react/assets/client-u2-HyUMQ
  • @treenity/react/assets/client-xek6Uhvv
  • @treenity/react/assets/client-yw7n-fgZ
  • @treenity/react/assets/clients-CUXl0EZ-
  • @treenity/react/assets/clients-DZYIHKSB
  • @treenity/react/assets/code-D9P5V6hl
  • @treenity/react/assets/comp-SV07yiIo
  • @treenity/react/assets/compiler-runtime-CTSaa4HM
  • @treenity/react/assets/component-C_8M79Cm
  • @treenity/react/assets/context-D-u_lhj3
  • @treenity/react/assets/createLucideIcon-DbUlqiFX
  • @treenity/react/assets/default-view-D003Fbth
  • @treenity/react/assets/dialog-Box-s3Br
  • @treenity/react/assets/dist-DRmqEOOE
  • @treenity/react/assets/dist-IGGUzEuP
  • @treenity/react/assets/ellipsis-mWylsW2s
  • @treenity/react/assets/emotion-is-prop-valid.cjs-C7CPc5iW
  • @treenity/react/assets/emscripten-module-CPIVKBXU
  • @treenity/react/assets/ffi-DpRcyGEu
  • @treenity/react/assets/form-fields-BBzfYhGx
  • @treenity/react/assets/grip-vertical-DV-mnVaO
  • @treenity/react/assets/handle-DWAiDVAu
  • @treenity/react/assets/helpers-aO5ZgOHv
  • @treenity/react/assets/immer-CpZ8-LQB
  • @treenity/react/assets/index-CrdDN7wW
  • @treenity/react/assets/input-tTtgcZvp
  • @treenity/react/assets/module-ES6BEMUI-Dsq7VAU8
  • @treenity/react/assets/needs-gWfJr5Qn
  • @treenity/react/assets/node-utils-DJogTi3q
  • @treenity/react/assets/plus-C8E3XxuM
  • @treenity/react/assets/popover-6J-OgZoK
  • @treenity/react/assets/preload-helper-eAV8hweq
  • @treenity/react/assets/proxy-QEkuRd2b
  • @treenity/react/assets/react-DLk_omft
  • @treenity/react/assets/react-dom-Buf1BSqj
  • @treenity/react/assets/react-three-fiber.esm-C87uU2TO
  • @treenity/react/assets/rnnoise-effect-By0RQ0h7
  • @treenity/react/assets/schema-loader-C_SwlIsQ
  • @treenity/react/assets/search-DpOOa0SY
  • @treenity/react/assets/select-DUfxSW38
  • @treenity/react/assets/sortable.esm-taeVpWFm
  • @treenity/react/assets/src-C_x9eWEg
  • @treenity/react/assets/src-D9TRqwFz
  • @treenity/react/assets/src-DOcTQPhI
  • @treenity/react/assets/src-DPjD6hoQ
  • @treenity/react/assets/string-utils-DQWa8mOn
  • @treenity/react/assets/textarea-BfOO4lUA
  • @treenity/react/assets/triangle-alert-D76bgcnV
  • @treenity/react/assets/types-B77jS4_R
  • @treenity/react/assets/types-BNF9eDYb
  • @treenity/react/assets/types-BcbPYXp_
  • @treenity/react/assets/types-Bcm5LQew
  • @treenity/react/assets/types-BldruHYi
  • @treenity/react/assets/types-Bumj0T50
  • @treenity/react/assets/types-C1djhQu1
  • @treenity/react/assets/types-C2SLnrzO
  • @treenity/react/assets/types-CF_45_UT
  • @treenity/react/assets/types-CS_zmHmO
  • @treenity/react/assets/types-CbGEu6BQ
  • @treenity/react/assets/types-CgoQsMDa
  • @treenity/react/assets/types-Cik16yZk
  • @treenity/react/assets/types-CkmWTOGT
  • @treenity/react/assets/types-D2qYmTz2
  • @treenity/react/assets/types-Dw4Eh4Yh2
  • @treenity/react/assets/types-Dz_tK9k6
  • @treenity/react/assets/types-wlcViYdH
  • @treenity/react/assets/view-BN81Mf4t
  • @treenity/react/assets/view-R7H8Rf5V
  • @treenity/react/assets/with-selector-DtN2H9jz
  • @treenity/react/assets/x-BBVbeQE3
  • @treenity/react/bind/computed
  • @treenity/react/bind/engine
  • @treenity/react/bind/eval
  • @treenity/react/bind/hook
  • @treenity/react/bind/parse
  • @treenity/react/bind/pipes
  • @treenity/react/components/ConfirmDialog
  • @treenity/react/components/ConfirmPopover
  • @treenity/react/components/PathBreadcrumb
  • @treenity/react/components/lib/utils
  • @treenity/react/components/ui/accordion
  • @treenity/react/components/ui/alert-dialog
  • @treenity/react/components/ui/badge
  • @treenity/react/components/ui/breadcrumb
  • @treenity/react/components/ui/button
  • @treenity/react/components/ui/card
  • @treenity/react/components/ui/checkbox
  • @treenity/react/components/ui/collapsible
  • @treenity/react/components/ui/command
  • @treenity/react/components/ui/dialog
  • @treenity/react/components/ui/drawer
  • @treenity/react/components/ui/dropdown-menu
  • @treenity/react/components/ui/form-field
  • @treenity/react/components/ui/input
  • @treenity/react/components/ui/label
  • @treenity/react/components/ui/pagination
  • @treenity/react/components/ui/popover
  • @treenity/react/components/ui/progress
  • @treenity/react/components/ui/resizable
  • @treenity/react/components/ui/scroll-area
  • @treenity/react/components/ui/select
  • @treenity/react/components/ui/separator
  • @treenity/react/components/ui/sheet
  • @treenity/react/components/ui/skeleton
  • @treenity/react/components/ui/slider
  • @treenity/react/components/ui/sonner
  • @treenity/react/components/ui/switch
  • @treenity/react/components/ui/table
  • @treenity/react/components/ui/tabs
  • @treenity/react/components/ui/textarea
  • @treenity/react/components/ui/toggle
  • @treenity/react/components/ui/toggle-group
  • @treenity/react/components/ui/tooltip
  • @treenity/react/context
  • @treenity/react/context/index
  • @treenity/react/draft
  • @treenity/react/editor/AclEditor
  • @treenity/react/editor/ActionCards
  • @treenity/react/editor/ComponentSection
  • @treenity/react/editor/Inspector
  • @treenity/react/editor/Inspector.css
  • @treenity/react/editor/NodeEditor
  • @treenity/react/editor/Tree
  • @treenity/react/editor/Tree.css
  • @treenity/react/hooks
  • @treenity/react/index
  • @treenity/react/lib/minimd
  • @treenity/react/lib/minimd.css
  • @treenity/react/lib/sanitize-href
  • @treenity/react/lib/string-utils
  • @treenity/react/lib/to-plain
  • @treenity/react/lib/use-debounce
  • @treenity/react/lib/utils
  • @treenity/react/mod-errors
  • @treenity/react/mods/clients
  • @treenity/react/mods/editor-ui/DraftTextarea
  • @treenity/react/mods/editor-ui/FieldLabel
  • @treenity/react/mods/editor-ui/JsonEditor
  • @treenity/react/mods/editor-ui/client
  • @treenity/react/mods/editor-ui/default-edit
  • @treenity/react/mods/editor-ui/default-view
  • @treenity/react/mods/editor-ui/dir-view
  • @treenity/react/mods/editor-ui/editor-ui.css
  • @treenity/react/mods/editor-ui/empty-placeholder
  • @treenity/react/mods/editor-ui/form-field
  • @treenity/react/mods/editor-ui/form-fields
  • @treenity/react/mods/editor-ui/layout-view
  • @treenity/react/mods/editor-ui/list-items
  • @treenity/react/mods/editor-ui/node-utils
  • @treenity/react/mods/editor-ui/type-picker
  • @treenity/react/mods/editor-ui/user-view
  • @treenity/react/mods/servers
  • @treenity/react/mods/treenity/client
  • @treenity/react/mods/treenity/groups/index
  • @treenity/react/mods/treenity/preview
  • @treenity/react/mods/treenity/ref-view
  • @treenity/react/mods/treenity/root-view
  • @treenity/react/mods/treenity/schema-form
  • @treenity/react/mods/treenity/type-view
  • @treenity/react/navigate
  • @treenity/react/root.css
  • @treenity/react/schema-loader
  • @treenity/react/symbols
  • @treenity/react/tree/auto-save
  • @treenity/react/tree/cache
  • @treenity/react/tree/client
  • @treenity/react/tree/client-tree
  • @treenity/react/tree/events
  • @treenity/react/tree/fiber-tree
  • @treenity/react/tree/idb
  • @treenity/react/tree/load-client
  • @treenity/react/tree/on-change
  • @treenity/react/tree/rebase
  • @treenity/react/tree/remote-tree
  • @treenity/react/tree/trpc
  • @treenity/react/ui/accordion
  • @treenity/react/ui/alert-dialog
  • @treenity/react/ui/badge
  • @treenity/react/ui/breadcrumb
  • @treenity/react/ui/button
  • @treenity/react/ui/card
  • @treenity/react/ui/checkbox
  • @treenity/react/ui/collapsible
  • @treenity/react/ui/command
  • @treenity/react/ui/dialog
  • @treenity/react/ui/drawer
  • @treenity/react/ui/dropdown-menu
  • @treenity/react/ui/form-field
  • @treenity/react/ui/input
  • @treenity/react/ui/label
  • @treenity/react/ui/pagination
  • @treenity/react/ui/popover
  • @treenity/react/ui/progress
  • @treenity/react/ui/resizable
  • @treenity/react/ui/scroll-area
  • @treenity/react/ui/select
  • @treenity/react/ui/separator
  • @treenity/react/ui/sheet
  • @treenity/react/ui/skeleton
  • @treenity/react/ui/slider
  • @treenity/react/ui/sonner
  • @treenity/react/ui/switch
  • @treenity/react/ui/table
  • @treenity/react/ui/tabs
  • @treenity/react/ui/textarea
  • @treenity/react/ui/toggle
  • @treenity/react/ui/toggle-group
  • @treenity/react/ui/tooltip
  • @treenity/react/view
  • @treenity/react/vite-plugin-treenity

Readme

@treenity/react

React binding for Treenity — reactive hooks, admin UI, and component rendering.

Built on top of @treenity/core. Provides hooks for reading and mutating tree nodes, a context-based component renderer, and a full admin interface with node editor, inspector, and tree browser.

Install

npm install @treenity/react @treenity/core react react-dom

Hooks

import { usePath, useChildren } from '@treenity/react/hooks';
import { TodoItem } from './types';

// Typed proxy — reactive data + action methods
const item = usePath('/todo/list/1', TodoItem);
item.title;          // reactive read
await item.toggle(); // tRPC mutation → Immer patch → SSE broadcast

// URI-based read (returns raw data)
const node = usePath('/todo/list/1');

// Reactive children list
const children = useChildren('/todo/list');

Available Hooks

Hook Description
usePath(uri) Reactive node read by URI string
usePath(path, Class, key?) TypeProxy — reactive fields + typed action methods
useChildren(path, opts?) Reactive children list with optional query filter
useCanWrite(path) Check write permission for current user
useNavigate() Navigation function for tree paths
useCurrentNode() Current node from context
useTreeContext() Current render context name
useSchema(type) JSON schema for a type
useReg(type, context) Resolve registered context handler

Component Rendering

Register React views per type + context:

import { register } from '@treenity/core';

register('todo.item', 'react', ({ value, onChange }) => (
  <div>
    <span>{value.title}</span>
    <button onClick={() => onChange({ ...value, done: !value.done })}>
      {value.done ? 'Undo' : 'Done'}
    </button>
  </div>
));

Render any node with automatic type resolution:

import { Render } from '@treenity/react/context';

<Render value={node} onChange={handleChange} />

UI Components

Ships with shadcn/ui components (Tailwind CSS v4):

import { Button } from '@treenity/react/ui/button';
import { Slider } from '@treenity/react/ui/slider';

Admin UI

<App /> provides a full admin interface: tree browser, node editor, inspector, ACL editor, login. Used as the default frontend during development.

License

Licensed under FSL-1.1-MIT. Free to use for any purpose. Converts to MIT automatically after two years from each release date.