labellife-design-tool 0.2.0 → 0.3.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/README.md CHANGED
@@ -175,6 +175,70 @@ Control which tools are available:
175
175
  />
176
176
  ```
177
177
 
178
+ #### Template Input Configuration
179
+
180
+ Control how template input dialogs behave when importing templates:
181
+
182
+ ```tsx
183
+ <CanvasEditor
184
+ name="Optional Template Inputs"
185
+ config={{
186
+ templateInput: {
187
+ show: true, // Whether to show the input dialog (default: true)
188
+ required: false, // Whether input fields are required (default: true)
189
+ }
190
+ }}
191
+ />
192
+ ```
193
+
194
+ Options:
195
+ - `show`: When set to `false`, no input dialog will appear when importing templates, and all template variables will remain as placeholders.
196
+ - `required`: When set to `false`, all input fields in the dialog will be marked as optional, allowing users to skip them if desired.
197
+
198
+ #### Theme Customization
199
+
200
+ Customize the visual appearance with themes:
201
+
202
+ ```tsx
203
+ <CanvasEditor
204
+ name="Custom Theme"
205
+ config={{
206
+ theme: {
207
+ colors: {
208
+ primary: '#10b981', // Green instead of blue
209
+ background: {
210
+ main: '#1e293b', // Slate-800
211
+ sidebar: '#0f172a', // Slate-900
212
+ },
213
+ button: {
214
+ primary: {
215
+ background: '#10b981', // Green-600
216
+ hover: '#059669', // Green-700
217
+ }
218
+ }
219
+ }
220
+ }
221
+ }}
222
+ />
223
+ ```
224
+
225
+ #### Using Pre-built Themes
226
+
227
+ Use one of the built-in themes:
228
+
229
+ ```tsx
230
+ import { CanvasEditor, LIGHT_THEME, DARK_THEME } from 'labellife-design-tool';
231
+
232
+ <CanvasEditor
233
+ name="Light Theme Editor"
234
+ config={{
235
+ theme: {
236
+ colors: LIGHT_THEME
237
+ }
238
+ }}
239
+ />
240
+ ```
241
+
178
242
  ### Adding Custom Panels
179
243
 
180
244
  You can add your own custom panels to extend the editor's functionality.
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasEditor.d.ts","sourceRoot":"","sources":["../../src/CanvasEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AA+ExE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAk8B7D,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"CanvasEditor.d.ts","sourceRoot":"","sources":["../../src/CanvasEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAqFjF,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAikC7D,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,gBAAgB,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,QAAQ,KAAK,IAAI,CAAC;CAC7D;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA0CxC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,gBAAgB,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,QAAQ,KAAK,IAAI,CAAC;CAC7D;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA0DxC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"LeftMenu.d.ts","sourceRoot":"","sources":["../../../src/components/LeftMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAsBzC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,aAAa,CAAC;IAC3B,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,gBAAgB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAwJ5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"LeftMenu.d.ts","sourceRoot":"","sources":["../../../src/components/LeftMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAsBzC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,aAAa,CAAC;IAC3B,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,gBAAgB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkL5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateInputModal.d.ts","sourceRoot":"","sources":["../../../src/components/TemplateInputModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,UAAU,uBAAuB;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAClD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAkazD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"TemplateInputModal.d.ts","sourceRoot":"","sources":["../../../src/components/TemplateInputModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,UAAU,uBAAuB;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAClD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA2ezD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RightSidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/sidebar/RightSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,iBAAiB;IACzB,mBAAmB,EAAE,aAAa,EAAE,CAAC;IACrC,eAAe,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;IAClD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IACrE,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAiH7C,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"RightSidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/sidebar/RightSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,iBAAiB;IACzB,mBAAmB,EAAE,aAAa,EAAE,CAAC;IACrC,eAAe,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;IAClD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IACrE,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqL7C,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Default theme configurations for LabelLife Design Tool
3
+ */
4
+ import { ThemeColors } from '../types/Theme';
5
+ /**
6
+ * Default dark theme (matches current styling)
7
+ */
8
+ export declare const DEFAULT_THEME: ThemeColors;
9
+ /**
10
+ * Light theme variant
11
+ */
12
+ export declare const LIGHT_THEME: ThemeColors;
13
+ /**
14
+ * Dark theme variant with higher contrast
15
+ */
16
+ export declare const DARK_THEME: ThemeColors;
17
+ //# sourceMappingURL=themes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../../src/constants/themes.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WA6B3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,WA6BzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,WA6BxB,CAAC"}
@@ -0,0 +1,21 @@
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
@@ -0,0 +1 @@
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"}
@@ -7,19 +7,19 @@
7
7
  "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
8
8
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
9
9
  "Courier New", monospace;
10
- --color-red-300: oklch(80.8% 0.114 19.571);
11
10
  --color-red-400: oklch(70.4% 0.191 22.216);
12
11
  --color-red-500: oklch(63.7% 0.237 25.331);
13
12
  --color-red-600: oklch(57.7% 0.245 27.325);
14
13
  --color-red-700: oklch(50.5% 0.213 27.518);
15
- --color-green-400: oklch(79.2% 0.209 151.711);
16
- --color-green-500: oklch(72.3% 0.219 149.579);
17
14
  --color-green-600: oklch(62.7% 0.194 149.214);
18
15
  --color-green-700: oklch(52.7% 0.154 150.069);
19
16
  --color-blue-400: oklch(70.7% 0.165 254.624);
20
17
  --color-blue-500: oklch(62.3% 0.214 259.815);
21
18
  --color-blue-600: oklch(54.6% 0.245 262.881);
22
19
  --color-blue-700: oklch(48.8% 0.243 264.376);
20
+ --color-gray-50: oklch(98.5% 0.002 247.839);
21
+ --color-gray-100: oklch(96.7% 0.003 264.542);
22
+ --color-gray-200: oklch(92.8% 0.006 264.531);
23
23
  --color-gray-300: oklch(87.2% 0.01 258.338);
24
24
  --color-gray-400: oklch(70.7% 0.022 261.325);
25
25
  --color-gray-500: oklch(55.1% 0.027 264.364);
@@ -391,6 +391,9 @@
391
391
  .flex-1 {
392
392
  flex: 1;
393
393
  }
394
+ .flex-grow {
395
+ flex-grow: 1;
396
+ }
394
397
  .rotate-180 {
395
398
  rotate: 180deg;
396
399
  }
@@ -415,6 +418,9 @@
415
418
  .flex-col {
416
419
  flex-direction: column;
417
420
  }
421
+ .flex-wrap {
422
+ flex-wrap: wrap;
423
+ }
418
424
  .items-center {
419
425
  align-items: center;
420
426
  }
@@ -548,12 +554,6 @@
548
554
  .border-gray-700 {
549
555
  border-color: var(--color-gray-700);
550
556
  }
551
- .border-green-500 {
552
- border-color: var(--color-green-500);
553
- }
554
- .border-red-500 {
555
- border-color: var(--color-red-500);
556
- }
557
557
  .border-r-transparent {
558
558
  border-right-color: transparent;
559
559
  }
@@ -575,33 +575,18 @@
575
575
  .bg-gray-700 {
576
576
  background-color: var(--color-gray-700);
577
577
  }
578
- .bg-gray-700\/50 {
579
- background-color: color-mix(in srgb, oklch(37.3% 0.034 259.733) 50%, transparent);
580
- @supports (color: color-mix(in lab, red, red)) {
581
- background-color: color-mix(in oklab, var(--color-gray-700) 50%, transparent);
582
- }
583
- }
584
578
  .bg-gray-800 {
585
579
  background-color: var(--color-gray-800);
586
580
  }
587
581
  .bg-gray-900 {
588
582
  background-color: var(--color-gray-900);
589
583
  }
590
- .bg-green-500\/10 {
591
- background-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 10%, transparent);
592
- @supports (color: color-mix(in lab, red, red)) {
593
- background-color: color-mix(in oklab, var(--color-green-500) 10%, transparent);
594
- }
595
- }
596
584
  .bg-green-600 {
597
585
  background-color: var(--color-green-600);
598
586
  }
599
587
  .bg-red-500 {
600
588
  background-color: var(--color-red-500);
601
589
  }
602
- .bg-red-600 {
603
- background-color: var(--color-red-600);
604
- }
605
590
  .bg-red-700 {
606
591
  background-color: var(--color-red-700);
607
592
  }
@@ -659,6 +644,9 @@
659
644
  .pt-4 {
660
645
  padding-top: calc(var(--spacing) * 4);
661
646
  }
647
+ .pr-1 {
648
+ padding-right: calc(var(--spacing) * 1);
649
+ }
662
650
  .text-center {
663
651
  text-align: center;
664
652
  }
@@ -710,9 +698,6 @@
710
698
  .text-gray-400 {
711
699
  color: var(--color-gray-400);
712
700
  }
713
- .text-green-400 {
714
- color: var(--color-green-400);
715
- }
716
701
  .text-red-400 {
717
702
  color: var(--color-red-400);
718
703
  }
@@ -812,17 +797,31 @@
812
797
  }
813
798
  }
814
799
  }
815
- .hover\:border-gray-500 {
800
+ .hover\:bg-blue-700 {
816
801
  &:hover {
817
802
  @media (hover: hover) {
818
- border-color: var(--color-gray-500);
803
+ background-color: var(--color-blue-700);
819
804
  }
820
805
  }
821
806
  }
822
- .hover\:bg-blue-700 {
807
+ .hover\:bg-gray-50 {
823
808
  &:hover {
824
809
  @media (hover: hover) {
825
- background-color: var(--color-blue-700);
810
+ background-color: var(--color-gray-50);
811
+ }
812
+ }
813
+ }
814
+ .hover\:bg-gray-100 {
815
+ &:hover {
816
+ @media (hover: hover) {
817
+ background-color: var(--color-gray-100);
818
+ }
819
+ }
820
+ }
821
+ .hover\:bg-gray-200 {
822
+ &:hover {
823
+ @media (hover: hover) {
824
+ background-color: var(--color-gray-200);
826
825
  }
827
826
  }
828
827
  }
@@ -847,31 +846,31 @@
847
846
  }
848
847
  }
849
848
  }
850
- .hover\:bg-green-700 {
849
+ .hover\:bg-gray-800 {
851
850
  &:hover {
852
851
  @media (hover: hover) {
853
- background-color: var(--color-green-700);
852
+ background-color: var(--color-gray-800);
854
853
  }
855
854
  }
856
855
  }
857
- .hover\:bg-red-600 {
856
+ .hover\:bg-green-700 {
858
857
  &:hover {
859
858
  @media (hover: hover) {
860
- background-color: var(--color-red-600);
859
+ background-color: var(--color-green-700);
861
860
  }
862
861
  }
863
862
  }
864
- .hover\:bg-red-700 {
863
+ .hover\:bg-red-500 {
865
864
  &:hover {
866
865
  @media (hover: hover) {
867
- background-color: var(--color-red-700);
866
+ background-color: var(--color-red-500);
868
867
  }
869
868
  }
870
869
  }
871
- .hover\:text-red-300 {
870
+ .hover\:bg-red-600 {
872
871
  &:hover {
873
872
  @media (hover: hover) {
874
- color: var(--color-red-300);
873
+ background-color: var(--color-red-600);
875
874
  }
876
875
  }
877
876
  }