labellife-design-tool 0.4.0 → 0.6.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.
package/dist/lib/index.js CHANGED
@@ -576,11 +576,11 @@ var UrlImageElement = ({ element, isSelected, onSelect, onChange }) => {
576
576
  activeFilters.push(Konva.Filters.Grayscale);
577
577
  if (element.filters?.sepia)
578
578
  activeFilters.push(Konva.Filters.Sepia);
579
- node.filters(activeFilters.length > 0 ? activeFilters : undefined);
579
+ node.filters(activeFilters.length > 0 ? activeFilters : []);
580
580
  node.cropX(element.cropX || 0);
581
581
  node.cropY(element.cropY || 0);
582
- node.cropWidth(element.cropWidth || element.width);
583
- node.cropHeight(element.cropHeight || element.height);
582
+ node.cropWidth(element.cropWidth || element.width || 0);
583
+ node.cropHeight(element.cropHeight || element.height || 0);
584
584
  if (needsCache && !element.mask) {
585
585
  node.clearCache();
586
586
  node.cache();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "labellife-design-tool",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Professional canvas editor built with React, TypeScript, and Konva",
5
5
  "main": "./dist/lib/index.js",
6
6
  "module": "./dist/lib/index.js",
@@ -38,7 +38,7 @@
38
38
  "build": "bun run build:lib && bun run build:app",
39
39
  "build:lib": "bun run build:lib:tsc && bun run build:lib:bundle",
40
40
  "build:lib:tsc": "tsc -p tsconfig.lib.json",
41
- "build:lib:bundle": "bun build src/lib/index.ts --outdir dist/lib --format esm --target browser --external react --external react-dom --external react-konva --external konva --external lucide-react --external i18next --external react-i18next --external i18next-browser-languagedetector --external react-image-crop",
41
+ "build:lib:bundle": "bun build src/lib/index.ts --outdir dist/lib --format esm --target browser --external react --external react-dom --external react/jsx-runtime --external react-konva --external konva --external lucide-react --external i18next --external react-i18next --external i18next-browser-languagedetector --external react-image-crop",
42
42
  "build:app": "bun build src/index.tsx --outdir dist/app --minify --splitting --target browser",
43
43
  "build:css": "bun run scripts/build-css.ts",
44
44
  "build:lib:all": "bun run build:lib && bun run build:css",
@@ -61,28 +61,36 @@
61
61
  "docker:down": "docker-compose down"
62
62
  },
63
63
  "peerDependencies": {
64
- "react": "^18.0.0 || ^19.0.0",
65
- "react-dom": "^18.0.0 || ^19.0.0"
64
+ "react": "^18.0.0 || ^18.3.0",
65
+ "react-dom": "^18.0.0 || ^18.3.0"
66
66
  },
67
67
  "dependencies": {
68
68
  "@types/jest": "^30.0.0",
69
69
  "bun-plugin-tailwind": "^0.0.14",
70
70
  "i18next": "^23.12.2",
71
71
  "i18next-browser-languagedetector": "^8.0.0",
72
- "konva": "^9.3.20",
72
+ "konva": "8.3.14",
73
73
  "lucide-react": "^0.511.0",
74
74
  "react-i18next": "^15.0.0",
75
75
  "react-image-crop": "^11.0.10",
76
- "react-konva": "^19.0.4",
76
+ "react-konva": "18.2.5",
77
77
  "tailwindcss": "^4.0.6"
78
78
  },
79
+ "resolutions": {
80
+ "react-konva": "18.2.5",
81
+ "konva": "8.3.14",
82
+ "@types/react": "18.2.0",
83
+ "@types/react-dom": "18.2.0"
84
+ },
79
85
  "devDependencies": {
80
86
  "@tailwindcss/postcss": "^4.1.17",
81
87
  "@testing-library/jest-dom": "^6.6.3",
82
88
  "@testing-library/react": "^16.3.0",
83
89
  "@types/bun": "latest",
84
- "@types/react": "^19",
85
- "@types/react-dom": "^19",
90
+ "@types/react": "18.2.0",
91
+ "@types/react-dom": "18.2.0",
92
+ "react": "^18.2.0",
93
+ "react-dom": "^18.2.0",
86
94
  "@vitejs/plugin-react": "^4.6.0",
87
95
  "jsdom": "^26.1.0",
88
96
  "postcss": "^8.5.6",
@@ -1,21 +0,0 @@
1
- import React from 'react';
2
- import { ThemeColors, ThemeConfig } from '../types/Theme';
3
- /**
4
- * Theme context type
5
- */
6
- interface ThemeContextType {
7
- theme: ThemeColors;
8
- }
9
- /**
10
- * Hook to access the current theme
11
- */
12
- export declare const useTheme: () => ThemeContextType;
13
- /**
14
- * Theme provider component
15
- */
16
- export declare const ThemeProvider: React.FC<{
17
- children: React.ReactNode;
18
- themeConfig?: ThemeConfig;
19
- }>;
20
- export {};
21
- //# sourceMappingURL=ThemeContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThemeContext.d.ts","sourceRoot":"","sources":["../../../src/contexts/ThemeContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI1D;;GAEG;AACH,UAAU,gBAAgB;IACxB,KAAK,EAAE,WAAW,CAAC;CACpB;AASD;;GAEG;AACH,eAAO,MAAM,QAAQ,wBAAiC,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAYA,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Scoped i18n instance for LabelLife Design Tool
3
- * Uses namespace 'labellife-editor' to avoid conflicts with consumer's i18n
4
- */
5
- declare const EDITOR_NAMESPACE = "labellife-editor";
6
- declare const editorI18n: import("node_modules/i18next").i18n;
7
- export default editorI18n;
8
- export { EDITOR_NAMESPACE };
9
- //# sourceMappingURL=i18n.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,QAAA,MAAM,gBAAgB,qBAAqB,CAAC;AAG5C,QAAA,MAAM,UAAU,qCAAwB,CAAC;AA+BzC,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,36 +0,0 @@
1
- import { PanelConfig } from "../types/Panel";
2
- import { Config } from "../types/Config";
3
- import { CanvasDesign, Page, CanvasElement } from "../types";
4
- import { ToolType } from "../types/ToolType";
5
- /**
6
- * Props factory for building panel props
7
- */
8
- export interface PanelPropsFactory {
9
- (context: {
10
- design: CanvasDesign;
11
- currentPage: Page;
12
- selectedElement: CanvasElement | null;
13
- selectedIds: string[];
14
- setDesign: (design: CanvasDesign) => void;
15
- updateElement: (id: string, attrs: Partial<CanvasElement>) => void;
16
- deleteElement?: (id: string) => void;
17
- setTool: (tool: ToolType) => void;
18
- config?: Config;
19
- onAddShape: (shapeType: any) => void;
20
- onAddText: () => void;
21
- onUploadClick: () => void;
22
- onUnsplashClick: () => void;
23
- onSetUnsplashBackground: () => void;
24
- onExportToPNG?: () => void;
25
- onExportToJPG?: () => void;
26
- onExportToJSON?: () => void;
27
- onImportJSON?: () => void;
28
- canvasWidth?: number;
29
- canvasHeight?: number;
30
- }): Record<string, any>;
31
- }
32
- /**
33
- * Create built-in panel configurations
34
- */
35
- export declare function createBuiltInPanels(context: Parameters<PanelPropsFactory>[0]): PanelConfig[];
36
- //# sourceMappingURL=BuiltInPanels.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BuiltInPanels.d.ts","sourceRoot":"","sources":["../../../src/registry/BuiltInPanels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAW7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,CACE,OAAO,EAAE;QACP,MAAM,EAAE,YAAY,CAAC;QACrB,WAAW,EAAE,IAAI,CAAC;QAClB,eAAe,EAAE,aAAa,GAAG,IAAI,CAAC;QACtC,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;QAC1C,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;QACnE,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;QAClC,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,UAAU,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,IAAI,CAAC;QACrC,SAAS,EAAE,MAAM,IAAI,CAAC;QACtB,aAAa,EAAE,MAAM,IAAI,CAAC;QAC1B,eAAe,EAAE,MAAM,IAAI,CAAC;QAC5B,uBAAuB,EAAE,MAAM,IAAI,CAAC;QACpC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;QAC5B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GACxC,WAAW,EAAE,CAyFf"}
@@ -1,58 +0,0 @@
1
- import { PanelConfig, CustomPanelConfig } from "../types/Panel";
2
- import { Config } from "../types/Config";
3
- /**
4
- * Panel Registry - Manages panel registration, filtering, and ordering
5
- */
6
- export declare class PanelRegistry {
7
- private builtInPanels;
8
- private customPanels;
9
- /**
10
- * Register a built-in panel
11
- */
12
- registerBuiltIn(panel: PanelConfig): void;
13
- /**
14
- * Register multiple built-in panels
15
- */
16
- registerBuiltInPanels(panels: PanelConfig[]): void;
17
- /**
18
- * Register a custom panel
19
- */
20
- registerCustom(panel: CustomPanelConfig): void;
21
- /**
22
- * Register multiple custom panels
23
- */
24
- registerCustomPanels(panels: CustomPanelConfig[]): void;
25
- /**
26
- * Get all panels based on configuration
27
- */
28
- getPanels(config?: Config): PanelConfig[];
29
- /**
30
- * Filter panels based on config
31
- */
32
- private filterPanels;
33
- /**
34
- * Insert custom panels at specified positions
35
- */
36
- private insertCustomPanels;
37
- /**
38
- * Order panels according to specified order
39
- */
40
- private orderPanels;
41
- /**
42
- * Get a specific panel by ID
43
- */
44
- getPanel(id: string): PanelConfig | undefined;
45
- /**
46
- * Check if a panel is registered
47
- */
48
- hasPanel(id: string): boolean;
49
- /**
50
- * Clear all custom panels
51
- */
52
- clearCustomPanels(): void;
53
- /**
54
- * Clear all panels (built-in and custom)
55
- */
56
- clear(): void;
57
- }
58
- //# sourceMappingURL=PanelRegistry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PanelRegistry.d.ts","sourceRoot":"","sources":["../../../src/registry/PanelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,YAAY,CAA6C;IAEjE;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAIzC;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI;IAIlD;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAQ9C;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAIvD;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;IAqBzC;;OAEG;IACH,OAAO,CAAC,YAAY;IAoBpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI7C;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI7B;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}