@mohasinac/appkit 4.54.1 → 4.55.0-next.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/.build-stamp.json +5 -5
- package/dist/features/media/messages/en.json +67 -67
- package/dist/security/csp.d.ts +16 -1
- package/dist/security/csp.js +5 -3
- package/dist/styles.css +536 -381
- package/dist/tokens/themes/index.d.ts +3 -1
- package/dist/tokens/themes/index.js +11 -1
- package/dist/tokens/themes/technical-dark.d.ts +30 -0
- package/dist/tokens/themes/technical-dark.js +103 -0
- package/dist/tokens/themes/technical-light.d.ts +22 -0
- package/dist/tokens/themes/technical-light.js +89 -0
- package/dist/tokens/tokens.css +155 -0
- package/dist/ui/components/GatedPrice.style.css +43 -43
- package/dist/ui/components/QuickCreateModal.style.css +78 -78
- package/dist/ui/forms/FormShell.style.css +260 -260
- package/package.json +1 -1
package/dist/.build-stamp.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"stampVersion": 1,
|
|
3
|
-
"version": "4.
|
|
4
|
-
"head": "
|
|
5
|
-
"branch": "
|
|
6
|
-
"dirty":
|
|
7
|
-
"builtAt": "2026-10-
|
|
3
|
+
"version": "4.55.0-next.0",
|
|
4
|
+
"head": "549abc780f1aa0e87661e86d9c76718bfe3d6cb0",
|
|
5
|
+
"branch": "feat/mohasinac-site",
|
|
6
|
+
"dirty": true,
|
|
7
|
+
"builtAt": "2026-10-20T12:44:38.195Z"
|
|
8
8
|
}
|
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
{
|
|
2
|
-
"mediaEditor": {
|
|
3
|
-
"cropTitle": "Crop Image",
|
|
4
|
-
"cropInstruction": "Drag to reposition. Use the zoom slider or +/- keys to zoom.",
|
|
5
|
-
"cropPreviewAlt": "Preview",
|
|
6
|
-
"cropZoom": "Zoom",
|
|
7
|
-
"cropZoomIn": "Zoom in",
|
|
8
|
-
"cropZoomOut": "Zoom out",
|
|
9
|
-
"cropRotateLeft": "Rotate left 90°",
|
|
10
|
-
"cropRotateRight": "Rotate right 90°",
|
|
11
|
-
"cropFlipH": "Flip horizontally",
|
|
12
|
-
"cropFlipV": "Flip vertically",
|
|
13
|
-
"cropWarningTitle": "Low zoom",
|
|
14
|
-
"cropWarningMessage": "Zoom in for better quality.",
|
|
15
|
-
"cropPosition": "Position",
|
|
16
|
-
"cropReset": "Reset",
|
|
17
|
-
"cropSave": "Save Crop",
|
|
18
|
-
"cropCancel": "Cancel",
|
|
19
|
-
"trimTitle": "Trim Video",
|
|
20
|
-
"trimInstruction": "Set the start and end times, then click Trim.",
|
|
21
|
-
"trimStart": "Start",
|
|
22
|
-
"trimEnd": "End",
|
|
23
|
-
"trimDuration": "Duration: {duration}s",
|
|
24
|
-
"trimQuality": "Quality",
|
|
25
|
-
"trimQualityLow": "Low",
|
|
26
|
-
"trimQualityMedium": "Medium",
|
|
27
|
-
"trimQualityHigh": "High",
|
|
28
|
-
"trimSave": "Trim Video",
|
|
29
|
-
"trimSkip": "Skip",
|
|
30
|
-
"trimming": "Trimming…",
|
|
31
|
-
"thumbnailTitle": "Select Thumbnail",
|
|
32
|
-
"thumbnailInstruction": "Seek to the frame you want to use as the thumbnail.",
|
|
33
|
-
"thumbnailCapture": "Use This Frame",
|
|
34
|
-
"thumbnailSkip": "Skip",
|
|
35
|
-
"thumbnailCapturing": "Capturing…",
|
|
36
|
-
"thumbnailUploading": "Uploading…",
|
|
37
|
-
"cropSuccess": "Image cropped",
|
|
38
|
-
"trimSuccess": "Video trimmed",
|
|
39
|
-
"thumbnailSuccess": "Thumbnail saved",
|
|
40
|
-
"cropError": "Failed to crop image",
|
|
41
|
-
"trimError": "Failed to trim video",
|
|
42
|
-
"thumbnailError": "Failed to capture thumbnail",
|
|
43
|
-
"editImage": "Edit / Crop",
|
|
44
|
-
"editVideo": "Trim / Thumbnail"
|
|
45
|
-
},
|
|
46
|
-
"camera": {
|
|
47
|
-
"takePhoto": "Take Photo",
|
|
48
|
-
"startRecording": "Start Recording",
|
|
49
|
-
"stopRecording": "Stop Recording",
|
|
50
|
-
"flipCamera": "Flip Camera",
|
|
51
|
-
"switchToCamera": "Use Camera",
|
|
52
|
-
"switchToUpload": "Upload File",
|
|
53
|
-
"cameraError": "Camera unavailable",
|
|
54
|
-
"permissionDenied": "Camera permission denied. Please allow access in your browser settings.",
|
|
55
|
-
"notSupported": "Camera is not supported on this device",
|
|
56
|
-
"starting": "Starting camera..."
|
|
57
|
-
},
|
|
58
|
-
"upload": {
|
|
59
|
-
"change": "Change",
|
|
60
|
-
"remove": "Remove",
|
|
61
|
-
"clickToUpload": "Click to upload",
|
|
62
|
-
"uploading": "Uploading…",
|
|
63
|
-
"uploadingProgress": "Uploading {progress}%…",
|
|
64
|
-
"replaceFile": "Replace file",
|
|
65
|
-
"chooseFile": "Choose file to upload"
|
|
66
|
-
}
|
|
67
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"mediaEditor": {
|
|
3
|
+
"cropTitle": "Crop Image",
|
|
4
|
+
"cropInstruction": "Drag to reposition. Use the zoom slider or +/- keys to zoom.",
|
|
5
|
+
"cropPreviewAlt": "Preview",
|
|
6
|
+
"cropZoom": "Zoom",
|
|
7
|
+
"cropZoomIn": "Zoom in",
|
|
8
|
+
"cropZoomOut": "Zoom out",
|
|
9
|
+
"cropRotateLeft": "Rotate left 90°",
|
|
10
|
+
"cropRotateRight": "Rotate right 90°",
|
|
11
|
+
"cropFlipH": "Flip horizontally",
|
|
12
|
+
"cropFlipV": "Flip vertically",
|
|
13
|
+
"cropWarningTitle": "Low zoom",
|
|
14
|
+
"cropWarningMessage": "Zoom in for better quality.",
|
|
15
|
+
"cropPosition": "Position",
|
|
16
|
+
"cropReset": "Reset",
|
|
17
|
+
"cropSave": "Save Crop",
|
|
18
|
+
"cropCancel": "Cancel",
|
|
19
|
+
"trimTitle": "Trim Video",
|
|
20
|
+
"trimInstruction": "Set the start and end times, then click Trim.",
|
|
21
|
+
"trimStart": "Start",
|
|
22
|
+
"trimEnd": "End",
|
|
23
|
+
"trimDuration": "Duration: {duration}s",
|
|
24
|
+
"trimQuality": "Quality",
|
|
25
|
+
"trimQualityLow": "Low",
|
|
26
|
+
"trimQualityMedium": "Medium",
|
|
27
|
+
"trimQualityHigh": "High",
|
|
28
|
+
"trimSave": "Trim Video",
|
|
29
|
+
"trimSkip": "Skip",
|
|
30
|
+
"trimming": "Trimming…",
|
|
31
|
+
"thumbnailTitle": "Select Thumbnail",
|
|
32
|
+
"thumbnailInstruction": "Seek to the frame you want to use as the thumbnail.",
|
|
33
|
+
"thumbnailCapture": "Use This Frame",
|
|
34
|
+
"thumbnailSkip": "Skip",
|
|
35
|
+
"thumbnailCapturing": "Capturing…",
|
|
36
|
+
"thumbnailUploading": "Uploading…",
|
|
37
|
+
"cropSuccess": "Image cropped",
|
|
38
|
+
"trimSuccess": "Video trimmed",
|
|
39
|
+
"thumbnailSuccess": "Thumbnail saved",
|
|
40
|
+
"cropError": "Failed to crop image",
|
|
41
|
+
"trimError": "Failed to trim video",
|
|
42
|
+
"thumbnailError": "Failed to capture thumbnail",
|
|
43
|
+
"editImage": "Edit / Crop",
|
|
44
|
+
"editVideo": "Trim / Thumbnail"
|
|
45
|
+
},
|
|
46
|
+
"camera": {
|
|
47
|
+
"takePhoto": "Take Photo",
|
|
48
|
+
"startRecording": "Start Recording",
|
|
49
|
+
"stopRecording": "Stop Recording",
|
|
50
|
+
"flipCamera": "Flip Camera",
|
|
51
|
+
"switchToCamera": "Use Camera",
|
|
52
|
+
"switchToUpload": "Upload File",
|
|
53
|
+
"cameraError": "Camera unavailable",
|
|
54
|
+
"permissionDenied": "Camera permission denied. Please allow access in your browser settings.",
|
|
55
|
+
"notSupported": "Camera is not supported on this device",
|
|
56
|
+
"starting": "Starting camera..."
|
|
57
|
+
},
|
|
58
|
+
"upload": {
|
|
59
|
+
"change": "Change",
|
|
60
|
+
"remove": "Remove",
|
|
61
|
+
"clickToUpload": "Click to upload",
|
|
62
|
+
"uploading": "Uploading…",
|
|
63
|
+
"uploadingProgress": "Uploading {progress}%…",
|
|
64
|
+
"replaceFile": "Replace file",
|
|
65
|
+
"chooseFile": "Choose file to upload"
|
|
66
|
+
}
|
|
67
|
+
}
|
package/dist/security/csp.d.ts
CHANGED
|
@@ -12,5 +12,20 @@
|
|
|
12
12
|
*/
|
|
13
13
|
/** Generate a 16-byte base64 nonce for a single request. */
|
|
14
14
|
export declare function generateNonce(): string;
|
|
15
|
+
export interface BuildCSPOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Add `'wasm-unsafe-eval'` to `script-src`, permitting
|
|
18
|
+
* `WebAssembly.compile`/`instantiate` from bytes.
|
|
19
|
+
*
|
|
20
|
+
* Required by any page that compiles WebAssembly at runtime — without it the
|
|
21
|
+
* production policy (`script-src 'self' 'nonce-…'`) blocks compilation
|
|
22
|
+
* outright, because WebAssembly compilation counts as script evaluation.
|
|
23
|
+
*
|
|
24
|
+
* Narrower than `'unsafe-eval'` on purpose: it unblocks WASM only and still
|
|
25
|
+
* forbids `eval` and `new Function` for JavaScript. Default `false`, so
|
|
26
|
+
* existing consumers are unaffected.
|
|
27
|
+
*/
|
|
28
|
+
wasm?: boolean;
|
|
29
|
+
}
|
|
15
30
|
/** Build the full CSP header value for the given nonce. */
|
|
16
|
-
export declare function buildCSP(nonce: string): string;
|
|
31
|
+
export declare function buildCSP(nonce: string, options?: BuildCSPOptions): string;
|
package/dist/security/csp.js
CHANGED
|
@@ -17,13 +17,15 @@ export function generateNonce() {
|
|
|
17
17
|
return btoa(String.fromCharCode(...bytes));
|
|
18
18
|
}
|
|
19
19
|
/** Build the full CSP header value for the given nonce. */
|
|
20
|
-
export function buildCSP(nonce) {
|
|
20
|
+
export function buildCSP(nonce, options = {}) {
|
|
21
21
|
const isDev = process.env.NODE_ENV === "development";
|
|
22
|
+
const wasm = options.wasm === true ? " 'wasm-unsafe-eval'" : "";
|
|
22
23
|
return [
|
|
23
24
|
"default-src 'self'",
|
|
24
25
|
isDev
|
|
25
|
-
?
|
|
26
|
-
|
|
26
|
+
? // 'unsafe-eval' already subsumes 'wasm-unsafe-eval' in dev.
|
|
27
|
+
"script-src 'self' 'unsafe-eval' 'unsafe-inline'"
|
|
28
|
+
: `script-src 'self' 'nonce-${nonce}'${wasm}`,
|
|
27
29
|
"style-src 'self' 'unsafe-inline'",
|
|
28
30
|
"img-src 'self' data: https: blob:",
|
|
29
31
|
"font-src 'self' data:",
|