Bumps [react-i18next](https://github.com/i18next/react-i18next) from 17.0.12 to 17.0.15. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md">react-i18next's changelog</a>.</em></p> <blockquote> <h2>17.0.15</h2> <ul> <li>fix(Trans): empty paired component tags now preserve a component's single valid React-element child, whether supplied through a named component map (<code><wrap></wrap></code>), a component array (<code><0></0></code>), or indexed JSX children (<code><1></1></code>). This matches the existing behavior for two or more children and self-closing tags. React represents one JSX child as an element and multiple children as an array; the previous array-only check silently rendered the one-child case empty. Compatibility note: when that sole element contains an interpolation object, the restored raw children can expose an existing React rendering limitation as an error instead of silently rendering empty; the same shape already errors with two children. Fixes <a href="https://redirect.github.com/i18next/react-i18next/issues/1932">#1932</a>.</li> </ul> <h2>17.0.14</h2> <ul> <li>fix: the <code>i18n</code> object returned by <code>useTranslation</code> was only refreshed when <code>i18n.language</code> changed, so a <code>resolvedLanguage</code> (or <code>languages</code>) change of its own kept handing components the previous snapshot. That happens whenever the translations for the current language arrive after the switch — i18next resolves to the fallback until its store has them — and components reading <code>i18n.resolvedLanguage</code> (language switchers, for example) then stayed one switch behind. The cached wrapper is now keyed on all three language fields, which are exactly the ones the surrounding <code>useMemo</code> already depends on; wrapper identity still only changes when the language state does, so the caching from <a href="https://redirect.github.com/i18next/react-i18next/issues/1885">#1885</a> is unaffected. Reported via <a href="https://redirect.github.com/i18next/next-i18next/issues/2348">next-i18next#2348</a>.</li> </ul> <h2>17.0.13</h2> <ul> <li>fix(types): the selector-form <code>keyPrefix</code> overload of <code>useTranslation()</code> is now available under <code>enableSelector: 'strict'</code>. <code>useTranslation</code> was gated on <code>true | 'optimize'</code> only, so under <code>'strict'</code> it resolved to the legacy signature and the selector overload disappeared entirely (<code>keyPrefix: ($) => $.ns.foo</code> failed with <code>Type '($: any) => any' is not assignable to type 'undefined'</code>). <code>Trans</code> already handled all three modes. Companion to the same fix for <code>getFixedT</code> in <a href="https://redirect.github.com/i18next/i18next/pull/2446">i18next#2446</a>. Thanks <a href="https://github.com/hovelopin"><code>@hovelopin</code></a> (<a href="https://redirect.github.com/i18next/react-i18next/pull/1930">#1930</a>).</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/i18next/react-i18next/commit/7d38e0919507f0d339ac29b9fbd5f718eaadc829"><code>7d38e09</code></a> 17.0.15</li> <li><a href="https://github.com/i18next/react-i18next/commit/875b327d3515c781cd083dd77d3d8838dc1efc06"><code>875b327</code></a> fix(Trans): preserve single-element children in empty slots</li> <li><a href="https://github.com/i18next/react-i18next/commit/5f8c5f9e6c7cdabdc476111d0748c91e33bbaa30"><code>5f8c5f9</code></a> 17.0.14</li> <li><a href="https://github.com/i18next/react-i18next/commit/6def81a790ddc55cc6c09a9f306ea6c88e25867c"><code>6def81a</code></a> fix: refresh the returned i18n wrapper when resolvedLanguage changes</li> <li><a href="https://github.com/i18next/react-i18next/commit/f37ea872c74e74ca64a5b6652cc131893405770b"><code>f37ea87</code></a> docs: "For AI assistants" paragraph in the README</li> <li><a href="https://github.com/i18next/react-i18next/commit/e0592bafde1a904588c115f67b36cddf382e49c5"><code>e0592ba</code></a> chore: keep dev-only and local files out of the npm package</li> <li><a href="https://github.com/i18next/react-i18next/commit/addf646a37f5980af08814b5a2568def28e7e428"><code>addf646</code></a> 17.0.13</li> <li><a href="https://github.com/i18next/react-i18next/commit/7c634ee3f396af22ec7b5c3c647b8d5ab198b5ae"><code>7c634ee</code></a> changelog v17.0.13</li> <li><a href="https://github.com/i18next/react-i18next/commit/5ceefb0eff8bb430c658b21e5a08b457e78d87df"><code>5ceefb0</code></a> fix(types): allow selector keyPrefix in useTranslation under enableSelector '...</li> <li><a href="https://github.com/i18next/react-i18next/commit/aa7ba520255753c50d7fff9ab33ce0c7a60a45a2"><code>aa7ba52</code></a> chore(examples): require activesupport >= 7.2.3.1 in the RN Gemfiles</li> <li>Additional commits viewable in <a href="https://github.com/i18next/react-i18next/compare/v17.0.12...v17.0.15">compare view</a></li> </ul> </details> <br /> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@paperclipai/ui
Published static assets for the Paperclip board UI.
What gets published
The npm package contains the production build under dist/. It does not ship the UI source tree or workspace-only dependencies.
Storybook
Storybook config, stories, and fixtures live under ui/storybook/.
pnpm --filter @paperclipai/ui storybook
pnpm --filter @paperclipai/ui build-storybook
Typical use
Install the package, then serve or copy the built files from node_modules/@paperclipai/ui/dist.
Editor dependency identity
Keep the root and workspace overrides for @codemirror/state,
@codemirror/view, and @lezer/common aligned. CodeMirror requires shared
extension identity, while Lezer parsers and syntax highlighters require shared
NodeProp IDs. Multiple Lezer copies can crash code-block highlighting with
tags is not iterable. src/lib/codemirror-single-instance.test.ts checks the
installed dependency graph and highlights sample code through the editor's real
language dependencies. GitHub Actions owns regeneration of pnpm-lock.yaml.