Skip to content

@basicbar/ui 0.7.0: TipTap raus aus dem Haupt-Entry, stripHtml/isEmptyHtml, controlsClassName, editable - #15

Merged
rrolf merged 1 commit into
mainfrom
feat/ui-0.7
Oct 1, 2026
Merged

rrolf merged 1 commit into
mainfrom
feat/ui-0.7

Conversation

@rrolf

@rrolf rrolf commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Was

Dritter PR aus dem Framework-Review (nach Security #13 und Template #14): @basicbar/ui 0.7.0.

Kern: TipTap raus aus den Bundles, die keinen Editor rendern. RichTextEditor liegt jetzt im eigenen Entry @basicbar/ui/rich-text-editor; der Haupt-Entry importiert kein @tiptap/* mehr (sideEffects: false, tsup-Splitting). RichText (reiner Renderer, kein TipTap) bleibt in @basicbar/ui, damit die Migration auf die Editor-Importe beschränkt bleibt.

Nagelprobe (gerendertes Template, kein Editor, echter Vite-Build):

Bundle gzip
ui 0.6.0 575 kB 185 kB
ui 0.7.0 280 kB 91 kB

Die @tiptap/*-Pakete bleiben bewusst dependencies (keine optionalen Peers): sie kosten nur Installationszeit, und die eine Pin-Stelle für alle Tools bleibt.

Außerdem (alle Punkte aus dem Review):

  • stripHtml / isEmptyHtml exportiert — abstimmbar hat vier stripHtml-Kopien. isEmptyHtml zählt <p></p> als leer, Bild-only als gefüllt; TranslatableField format="html" nutzt das (vorher galt ein Bild ohne Text als „nicht übersetzt“).
  • richTextClass exportiert (Prosa-Default von RichText ergänzen statt kopieren).
  • RichTextEditor editable (schreibgeschützt ohne Toolbar/Cursor, Drop/Paste aus).
  • TranslationFormProvider controlsClassName — ersetzt abstimmbars CSS-Override auf .fixed.bottom-6.right-6.z-40.
  • renderInput bekommt onBlur.
  • Performance: Sprachreihenfolge und Ausgefüllt-Status in TranslatableField einmal pro Render (vorher pro Tab/Lookup, bei HTML je mit DOM-Parse).
  • A11y: Status der Sprach-Tabs als sr-only-Text (Punkt war farb-only); PreferencesMenu mit Fokus auf erste Zeile, Pfeiltasten, Home/End.
  • README: Import-Pfade, neue Props/Helfer, Abschnitt „Übersetzungs-Keys“ mit allen Keys.

Migration (CHANGELOG)

Nur die RichTextEditor-Importe ändern sich: ausleihbar (3 Admin-Seiten), abstimmbar (components/TranslatableField.tsx). erkennbar/modulierbar nutzen den Editor nicht. Keine neuen Katalog-Keys.

Verifiziert

  • npm run build + tsc --noEmit im Paket; dist/index.js importiert kein @tiptap/*, dist/rich-text-editor.js schon.
  • Template-Render + Vite-Build mit 0.6.0 vs. lokalem 0.7.0-Tarball (Zahlen oben; „ProseMirror“ im Bundle: 1 → 0 Dateien).
  • ausleihbar und abstimmbar in Worktrees mit lokalem Tarball und umgestelltem Import: tsc + Vite-Build grün.

Danach

Nach dem Merge: Tag ui/v0.7.0 auf den main-Commit, Draft-Release veröffentlichen, dann Konsumenten-PRs (ausleihbar, abstimmbar; Template-Pin auf 0.7.0 im Cleanup-PR, sobald der Tarball abrufbar ist).

🤖 Generated with Claude Code

…Html, controlsClassName, editable

TipTap/ProseMirror landeten in jedem Bundle, das @basicbar/ui importiert,
auch ohne Editor (Framework-Review). RichTextEditor liegt jetzt in
@basicbar/ui/rich-text-editor; der Haupt-Entry importiert kein @tiptap/*
mehr, sideEffects:false, Code-Splitting. Nagelprobe am Template ohne
Editor: 575 kB → 280 kB (gzip 185 → 91 kB).

Dazu: stripHtml/isEmptyHtml exportiert (abstimmbar hatte vier Kopien),
richTextClass exportiert, RichTextEditor editable, TranslationFormProvider
controlsClassName (statt CSS-Override in abstimmbar), onBlur an renderInput,
Memoisierung in TranslatableField, sr-only-Status der Sprach-Tabs,
Pfeiltasten im PreferencesMenu, README-Abschnitt mit allen i18n-Keys.

Migration im CHANGELOG (Import-Pfad des Editors in ausleihbar/abstimmbar).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant