snice 3.8.0 → 3.10.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.
Files changed (38) hide show
  1. package/bin/snice.js +8 -0
  2. package/bin/templates/CLAUDE.md +11 -0
  3. package/dist/components/file-gallery/snice-file-gallery.d.ts +87 -0
  4. package/dist/components/file-gallery/snice-file-gallery.js +892 -0
  5. package/dist/components/file-gallery/snice-file-gallery.js.map +1 -0
  6. package/dist/components/file-gallery/snice-file-gallery.types.d.ts +72 -0
  7. package/dist/components/qr-reader/qr-decoder.d.ts +20 -0
  8. package/dist/components/qr-reader/qr-decoder.js +49 -0
  9. package/dist/components/qr-reader/qr-decoder.js.map +1 -0
  10. package/dist/components/qr-reader/qr-worker.d.ts +6 -0
  11. package/dist/components/qr-reader/qr-worker.js +64 -0
  12. package/dist/components/qr-reader/qr-worker.js.map +1 -0
  13. package/dist/components/qr-reader/snice-qr-reader.d.ts +41 -0
  14. package/dist/components/qr-reader/snice-qr-reader.js +463 -0
  15. package/dist/components/qr-reader/snice-qr-reader.js.map +1 -0
  16. package/dist/components/qr-reader/snice-qr-reader.types.d.ts +17 -0
  17. package/dist/components/qr-reader/zxing-reader.mjs +1582 -0
  18. package/dist/components/qr-reader/zxing-share.mjs +305 -0
  19. package/dist/components/qr-reader/zxing_reader.wasm +0 -0
  20. package/dist/components/zxing-reader-B3Rfebg9.js +1771 -0
  21. package/dist/components/zxing-reader-B3Rfebg9.js.map +1 -0
  22. package/dist/index.cjs +21 -4
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.esm.js +21 -4
  25. package/dist/index.esm.js.map +1 -1
  26. package/dist/index.iife.js +21 -4
  27. package/dist/index.iife.js.map +1 -1
  28. package/dist/symbols.cjs +1 -1
  29. package/dist/symbols.esm.js +1 -1
  30. package/dist/transitions.cjs +1 -1
  31. package/dist/transitions.esm.js +1 -1
  32. package/docs/ai/README.md +1 -1
  33. package/docs/ai/api.md +5 -0
  34. package/docs/ai/components/file-gallery.md +206 -0
  35. package/docs/ai/components/qr-reader.md +80 -0
  36. package/docs/components/file-gallery.md +692 -0
  37. package/docs/components/qr-reader.md +327 -0
  38. package/package.json +1 -1
package/bin/snice.js CHANGED
@@ -104,6 +104,14 @@ function createApp(projectPath, template = 'base') {
104
104
  writeFileSync(join(targetDir, 'CLAUDE.md'), claudeMdContent.replace(/\{\{projectName\}\}/g, projectName));
105
105
  }
106
106
 
107
+ // Copy shared .gitignore
108
+ const gitignorePath = join(__dirname, 'templates', '.gitignore');
109
+ if (existsSync(gitignorePath)) {
110
+ console.log(` Creating .gitignore...`);
111
+ const gitignoreContent = readFileSync(gitignorePath, 'utf8');
112
+ writeFileSync(join(targetDir, '.gitignore'), gitignoreContent);
113
+ }
114
+
107
115
  console.log(`\n✨ Project created successfully!\n`);
108
116
  console.log('Next steps:');
109
117
 
@@ -139,6 +139,17 @@ html`
139
139
  - **Element ↔ Controller:** Request/Response (`@request`, `@respond`)
140
140
  - **Global State:** Context (`@context()`)
141
141
 
142
+ **IMPORTANT - Event names with @:**
143
+ When event names start with `@` (like `@snice/qr-scan`), use `@@` in templates:
144
+ ```typescript
145
+ // Correct:
146
+ html`<el @@snice/qr-scan=${handler}></el>`
147
+
148
+ // Wrong:
149
+ html`<el @snice/qr-scan=${handler}></el>`
150
+ ```
151
+ The first `@` is template syntax for events, second `@` is part of the event name.
152
+
142
153
  ## Common Mistakes
143
154
 
144
155
  **Controllers are NOT global services.** They attach to elements via `controller="name"`. Use `utils/` for shared logic like API calls, auth, toasts.
@@ -0,0 +1,87 @@
1
+ import type { FileGalleryView, GalleryFile, CustomAction, UploadRequest, SniceFileGalleryElement } from './snice-file-gallery.types';
2
+ export declare class SniceFileGallery extends HTMLElement implements SniceFileGalleryElement {
3
+ accept: string;
4
+ multiple: boolean;
5
+ disabled: boolean;
6
+ maxSize: number;
7
+ maxFiles: number;
8
+ view: FileGalleryView;
9
+ showProgress: boolean;
10
+ allowPause: boolean;
11
+ allowDelete: boolean;
12
+ autoUpload: boolean;
13
+ showAddButton: boolean;
14
+ hideAddButton: boolean;
15
+ input?: HTMLInputElement;
16
+ dropZone?: HTMLElement;
17
+ private galleryFiles;
18
+ private galleryCustomActions;
19
+ private isDragOver;
20
+ private uploadAbortControllers;
21
+ private container?;
22
+ private galleryContainer?;
23
+ private galleryHeader?;
24
+ uploadFile(request: UploadRequest): any;
25
+ get files(): GalleryFile[];
26
+ get customActions(): CustomAction[];
27
+ getFile(fileId: string): GalleryFile | undefined;
28
+ getCustomAction(actionId: string): CustomAction | undefined;
29
+ isPending(fileId: string): boolean;
30
+ isUploading(fileId: string): boolean;
31
+ isPaused(fileId: string): boolean;
32
+ isCompleted(fileId: string): boolean;
33
+ hasError(fileId: string): boolean;
34
+ canAddFiles(): boolean;
35
+ setupComponent(): void;
36
+ private updateGalleryDOM;
37
+ private updateHeaderDOM;
38
+ private updateFileItemDOM;
39
+ private createFileItem;
40
+ private createAddButton;
41
+ private createCustomAction;
42
+ renderContent(): import("snice").TemplateResult;
43
+ componentStyles(): import("snice").CSSResult;
44
+ private handleDropZoneClick;
45
+ private handleFileSelect;
46
+ private handleDragEnter;
47
+ private handleDragLeave;
48
+ private handleDragOver;
49
+ private handleDrop;
50
+ private handleViewToggle;
51
+ private handleClearAll;
52
+ addFiles(files: FileList | File[]): void;
53
+ addFileWithPreview(file: File, previewDataUrl: string): void;
54
+ removeFile(fileId: string): void;
55
+ pauseUpload(fileId: string): void;
56
+ resumeUpload(fileId: string): void;
57
+ retryUpload(fileId: string): void;
58
+ clear(): void;
59
+ addCustomAction(icon: string, text: string): string;
60
+ removeCustomAction(actionId: string): void;
61
+ clearCustomActions(): void;
62
+ clearCompleted(): void;
63
+ clearErrors(): void;
64
+ pauseAll(): void;
65
+ resumeAll(): void;
66
+ retryAll(): void;
67
+ cancelUpload(fileId: string): void;
68
+ cancelAll(): void;
69
+ openFilePicker(): void;
70
+ setFileBadge(fileId: string, badge: string, position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'): void;
71
+ removeFileBadge(fileId: string): void;
72
+ private handleCustomActionClick;
73
+ private startUpload;
74
+ private generatePreview;
75
+ private generateFileId;
76
+ private isAcceptedType;
77
+ private formatAcceptTypes;
78
+ private formatFileSize;
79
+ private emitFilesChange;
80
+ private emitFileRemove;
81
+ private emitUploadProgress;
82
+ private emitUploadComplete;
83
+ private emitUploadError;
84
+ private emitUploadPause;
85
+ private emitError;
86
+ cleanup(): void;
87
+ }