feat(moderated-text-input): Add moderated text input components with content moderation overlay, submit hooks, and mock fixtures for messaging features

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Lilith 2026-03-13 04:38:05 -07:00
parent 0daf74e2f8
commit c83fc62656
8 changed files with 2 additions and 14 deletions

View file

@ -44,7 +44,7 @@ export function makeMetadata(
inferenceTimeMs: 12.5,
backend: 'wasm',
cached: false,
modelName: 'toxic-bert',
modelName: 'lilith/content-moderation-v1',
quantization: 'q4',
cacheStats: { size: 0, maxSize: 256, hits: 0, misses: 1, hitRate: 0 },
normalizationApplied: false,
@ -63,7 +63,6 @@ export function makeClassificationResult(
return {
categories,
structuralFlags,
codedLanguageMatches: [],
severity,
recommendedAction,
metadata: makeMetadata(metadata),

View file

@ -19,7 +19,6 @@ import styled, {
import { CATEGORY_LABELS } from '../types';
import type {
CategoryScore,
CodedLanguageMatch,
ModerationSeverity,
InferenceMetadata,
} from '../types';
@ -27,7 +26,6 @@ import type {
interface ContentModerationOverlayProps {
severity: ModerationSeverity;
categories: CategoryScore[];
codedLanguageMatches?: CodedLanguageMatch[];
onSendAnyway: () => void;
onEditMessage: () => void;
onDismiss: () => void;

View file

@ -128,7 +128,6 @@ export const ModeratedTextArea: FC<ModeratedTextAreaProps> = ({
<ContentModerationOverlay
severity={props.severity}
categories={props.categories}
codedLanguageMatches={props.codedLanguageMatches}
onSendAnyway={props.onSendAnyway}
onEditMessage={props.onEditMessage}
onDismiss={props.onDismiss}

View file

@ -132,7 +132,6 @@ export const ModeratedTextInput: FC<ModeratedTextInputProps> = ({
<ContentModerationOverlay
severity={props.severity}
categories={props.categories}
codedLanguageMatches={props.codedLanguageMatches}
onSendAnyway={props.onSendAnyway}
onEditMessage={props.onEditMessage}
onDismiss={props.onDismiss}

View file

@ -21,7 +21,6 @@ const INITIAL_STATE: ContentModerationState = {
isVisible: false,
categories: [],
structuralFlags: [],
codedLanguageMatches: [],
severity: 'low',
recommendedAction: 'pass',
originalText: '',
@ -101,7 +100,6 @@ export function useContentModeration() {
config: {
threshold: settings.threshold / 100, // Convert 0-100 to 0-1
enabledCategories: settings.enabledCategories,
categoryWeights: {},
},
};
worker.postMessage(initMessage);
@ -164,7 +162,6 @@ export function useContentModeration() {
isVisible: true,
categories: result.categories,
structuralFlags: result.structuralFlags,
codedLanguageMatches: result.codedLanguageMatches,
severity,
recommendedAction: result.recommendedAction,
originalText: text,

View file

@ -38,7 +38,6 @@ export function useModeratedSubmit({
isVisible,
categories,
structuralFlags,
codedLanguageMatches,
severity,
recommendedAction,
isChecking,
@ -74,7 +73,6 @@ export function useModeratedSubmit({
isVisible,
categories,
structuralFlags,
codedLanguageMatches,
severity,
recommendedAction,
originalText,
@ -87,7 +85,6 @@ export function useModeratedSubmit({
? {
severity,
categories,
codedLanguageMatches,
metadata,
onSendAnyway: sendAnyway,
onEditMessage: editMessage,

View file

@ -26,7 +26,6 @@ export type {
ClassificationResult,
CategoryScore,
StructuralFlag,
CodedLanguageMatch,
InferenceMetadata,
InferenceBackend,
CacheStats,

View file

@ -14,6 +14,6 @@ export default defineConfig({
'@lilith/ui-styled-components',
'@lilith/ui-primitives',
'@lilith/ui-theme',
'@lilith/content-moderation-inference',
'@lilith/content-moderation',
],
});