@codella-software/react 2.0.1 → 2.2.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.
@@ -41,6 +41,7 @@
41
41
  export { useFiltersAndSort, type UseFiltersAndSortOptions, type UseFiltersAndSortReturn } from './filters-and-sort';
42
42
  export { useFormBuilder, type UseFormBuilderOptions, type UseFormBuilderReturn } from './form-builder';
43
43
  export * from './live-updates';
44
+ export * from './rich-content';
44
45
  export { useTableService, type UseTableServiceOptions, type UseTableServiceReturn } from './table-builder';
45
46
  export * from './tabs';
46
47
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AACnH,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACtG,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAC1G,cAAc,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AACnH,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACtG,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAC1G,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * RichContent React hook
3
+ */
4
+ export { useRichContent, type UseRichContentOptions, type UseRichContentReturn } from './useRichContent';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/rich-content/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { ContentEditableAdapter, DocumentNode, MarkType, RichContentConfig, RichContentService, RichContentState, Selection } from '../../../core/src/rich-content';
2
+ /**
3
+ * Hook options for useRichContent
4
+ */
5
+ export interface UseRichContentOptions extends RichContentConfig {
6
+ /** DOM element ref for contentEditable */
7
+ editorRef?: React.RefObject<HTMLElement>;
8
+ /** Custom adapter instance */
9
+ adapter?: ContentEditableAdapter;
10
+ }
11
+ /**
12
+ * Hook return value for useRichContent
13
+ */
14
+ export interface UseRichContentReturn {
15
+ /** Service instance */
16
+ service: RichContentService;
17
+ /** Current document content */
18
+ content: DocumentNode;
19
+ /** Full state object */
20
+ state: RichContentState;
21
+ /** Current editor focus state */
22
+ isFocused: boolean;
23
+ /** Can undo */
24
+ canUndo: boolean;
25
+ /** Can redo */
26
+ canRedo: boolean;
27
+ /** Active mark types */
28
+ selectedFormats: Set<MarkType>;
29
+ /** Current selection */
30
+ selection: Selection | null;
31
+ /** Is dirty (has unsaved changes) */
32
+ isDirty: boolean;
33
+ /** Insert text */
34
+ insertText: (text: string) => void;
35
+ /** Insert paragraph */
36
+ insertParagraph: () => void;
37
+ /** Insert heading */
38
+ insertHeading: (level: 1 | 2 | 3 | 4 | 5 | 6) => void;
39
+ /** Insert image */
40
+ insertImage: (url: string) => void;
41
+ /** Upload image file */
42
+ uploadImage: (file: File) => Promise<void>;
43
+ /** Insert mention */
44
+ insertMention: (id: string, label: string) => void;
45
+ /** Insert list */
46
+ insertList: (type: 'ordered' | 'unordered') => void;
47
+ /** Toggle mark */
48
+ toggleMark: (mark: MarkType) => void;
49
+ /** Delete content */
50
+ deleteContent: () => void;
51
+ /** Undo */
52
+ undo: () => void;
53
+ /** Redo */
54
+ redo: () => void;
55
+ /** Clear history */
56
+ clearHistory: () => void;
57
+ /** Focus editor */
58
+ focus: () => void;
59
+ /** Set focus state */
60
+ setFocus: (focused: boolean) => void;
61
+ /** Get plain text */
62
+ getPlainText: () => string;
63
+ /** Set selection */
64
+ setSelection: (selection: Selection | null) => void;
65
+ }
66
+ /**
67
+ * React hook that wraps RichContentService and manages state subscriptions
68
+ */
69
+ export declare function useRichContent(options?: UseRichContentOptions): UseRichContentReturn;
70
+ //# sourceMappingURL=useRichContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRichContent.d.ts","sourceRoot":"","sources":["../../../../src/rich-content/useRichContent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACV,MAAM,4BAA4B,CAAC;AAGpC;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,0CAA0C;IAC1C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACzC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,+BAA+B;IAC/B,OAAO,EAAE,YAAY,CAAC;IACtB,wBAAwB;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,iCAAiC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,wBAAwB;IACxB,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,wBAAwB;IACxB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IAGjB,kBAAkB;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,uBAAuB;IACvB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,qBAAqB;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACtD,mBAAmB;IACnB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,wBAAwB;IACxB,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,qBAAqB;IACrB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,kBAAkB;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,KAAK,IAAI,CAAC;IACpD,kBAAkB;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrC,qBAAqB;IACrB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW;IACX,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,WAAW;IACX,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,oBAAoB;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,mBAAmB;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,sBAAsB;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,qBAAqB;IACrB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,oBAAoB;IACpB,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;CACrD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,oBAAoB,CAsGxF"}
@@ -1,19 +1,18 @@
1
1
  /**
2
2
  * @module @codella/react/tabs
3
3
  *
4
- * React hooks and components for tabs service.
4
+ * React hooks and provider for tabs service.
5
5
  *
6
6
  * ## Features
7
7
  *
8
8
  * - TabsProvider for state management
9
9
  * - Hooks for accessing tabs service
10
- * - Responsive Tabs component (desktop/mobile)
11
- * - Auto-switching between tabs and select
10
+ * - Observable-based state management with RxJS
12
11
  *
13
12
  * ## Usage
14
13
  *
15
14
  * ```tsx
16
- * import { TabsProvider, ResponsiveTabs, useSetActiveTab } from '@codella/react/tabs';
15
+ * import { TabsProvider, useSetActiveTab } from '@codella/react/tabs';
17
16
  *
18
17
  * function MyApp() {
19
18
  * return (
@@ -24,17 +23,16 @@
24
23
  * ],
25
24
  * enableUrlRouting: true
26
25
  * }}>
27
- * <ResponsiveTabs />
28
26
  * <MyTabContent />
29
27
  * </TabsProvider>
30
28
  * );
31
29
  * }
32
30
  * ```
33
31
  *
32
+ * For responsive tab components, use the CLI template system to generate ready-made components.
33
+ *
34
34
  * @packageDocumentation
35
35
  */
36
36
  export { TabsProvider, useActiveTab, useSetActiveTab, useTabChange, useTabs, useTabsContext, useTabsService } from './useTabsHooks';
37
37
  export type { TabsProviderProps } from './useTabsHooks';
38
- export { ResponsiveTabs, TabsList, TabsSelect } from './ResponsiveTabs';
39
- export type { TabsComponentProps } from './ResponsiveTabs';
40
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tabs/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpI,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tabs/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpI,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@codella-software/react",
3
- "version": "2.0.1",
4
- "description": "React hooks for Codella core services",
3
+ "version": "2.2.0",
4
+ "description": "React hooks for Codella core services (FormBuilder, TableBuilder, FiltersAndSort, RichContent)",
5
5
  "keywords": [
6
6
  "form-builder",
7
7
  "table-builder",
@@ -1,50 +0,0 @@
1
- import { TabItem } from '../../../core/src/tabs';
2
- /**
3
- * Props for TabsComponent
4
- */
5
- export interface TabsComponentProps {
6
- className?: string;
7
- tabClassName?: string;
8
- activeTabClassName?: string;
9
- selectClassName?: string;
10
- breakpoint?: number;
11
- showBadges?: boolean;
12
- icon?: boolean;
13
- }
14
- /**
15
- * Responsive Tabs component that switches to Select on smaller screens
16
- *
17
- * Features:
18
- * - Tabs on desktop (> breakpoint)
19
- * - Select dropdown on mobile (< breakpoint)
20
- * - Badge support
21
- * - Icon support
22
- * - Fully customizable with className props
23
- */
24
- export declare function ResponsiveTabs({ className, tabClassName, activeTabClassName, selectClassName, breakpoint, showBadges, icon, }: TabsComponentProps): import("react/jsx-runtime").JSX.Element | null;
25
- /**
26
- * Tabs List component (desktop view)
27
- */
28
- interface TabsListProps {
29
- tabs: TabItem[];
30
- activeTabId: string;
31
- onTabChange: (tabId: string) => void;
32
- className?: string;
33
- tabClassName?: string;
34
- activeTabClassName?: string;
35
- showBadges?: boolean;
36
- icon?: boolean;
37
- }
38
- declare function TabsList({ tabs, activeTabId, onTabChange, className, tabClassName, activeTabClassName, showBadges, icon, }: TabsListProps): import("react/jsx-runtime").JSX.Element;
39
- /**
40
- * Tabs Select component (mobile view)
41
- */
42
- interface TabsSelectProps {
43
- tabs: TabItem[];
44
- activeTabId: string;
45
- onTabChange: (tabId: string) => void;
46
- className?: string;
47
- }
48
- declare function TabsSelect({ tabs, activeTabId, onTabChange, className, }: TabsSelectProps): import("react/jsx-runtime").JSX.Element;
49
- export { TabsList, TabsSelect };
50
- //# sourceMappingURL=ResponsiveTabs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResponsiveTabs.d.ts","sourceRoot":"","sources":["../../../../src/tabs/ResponsiveTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAIlD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAC7B,SAAc,EACd,YAAiB,EACjB,kBAAuB,EACvB,eAAoB,EACpB,UAAgB,EAChB,UAAiB,EACjB,IAAW,GACZ,EAAE,kBAAkB,kDA2CpB;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iBAAS,QAAQ,CAAC,EAChB,IAAI,EACJ,WAAW,EACX,WAAW,EACX,SAAc,EACd,YAAiB,EACjB,kBAAuB,EACvB,UAAiB,EACjB,IAAW,GACZ,EAAE,aAAa,2CAoCf;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,UAAU,CAAC,EAClB,IAAI,EACJ,WAAW,EACX,WAAW,EACX,SAAc,GACf,EAAE,eAAe,2CAuBjB;AAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}