@meoslabs/save-in-meos 0.0.1
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/LICENSE +26 -0
- package/README.md +171 -0
- package/assets/fonts/inconsolata/Inconsolata-Medium.woff2 +0 -0
- package/assets/fonts/inconsolata/Inconsolata-Regular.woff2 +0 -0
- package/assets/fonts/inconsolata/OFL.txt +93 -0
- package/dist/import-intent-v1.d.ts +88 -0
- package/dist/import-intent-v1.js +399 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -0
- package/dist/save-in-meos.min.js +127 -0
- package/dist/widget/chip-theme.d.ts +39 -0
- package/dist/widget/chip-theme.d.ts.map +1 -0
- package/dist/widget/chip-theme.js +67 -0
- package/dist/widget/chip-theme.js.map +1 -0
- package/dist/widget/chip-theme.test.d.ts +2 -0
- package/dist/widget/chip-theme.test.d.ts.map +1 -0
- package/dist/widget/chip-theme.test.js +43 -0
- package/dist/widget/chip-theme.test.js.map +1 -0
- package/dist/widget/icon.d.ts +10 -0
- package/dist/widget/icon.d.ts.map +1 -0
- package/dist/widget/icon.js +15 -0
- package/dist/widget/icon.js.map +1 -0
- package/dist/widget/index.d.ts +52 -0
- package/dist/widget/index.d.ts.map +1 -0
- package/dist/widget/index.js +156 -0
- package/dist/widget/index.js.map +1 -0
- package/dist/widget/styles.d.ts +13 -0
- package/dist/widget/styles.d.ts.map +1 -0
- package/dist/widget/styles.js +136 -0
- package/dist/widget/styles.js.map +1 -0
- package/dist/widget.iife.css +101 -0
- package/dist/widget.iife.js +127 -0
- package/dist/widget.iife.js.map +7 -0
- package/package.json +102 -0
- package/src/widget/fonts.css +27 -0
- package/src/widget/widget.css +101 -0
package/package.json
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@meoslabs/save-in-meos",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "meos deeplink protocol (MDP) codec and save-in-meos embed widget for third-party sites",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/meoslabs/save-in-meos.git"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/meoslabs/save-in-meos#readme",
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/meoslabs/save-in-meos/issues"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "dist/index.js",
|
|
15
|
+
"types": "dist/index.d.ts",
|
|
16
|
+
"unpkg": "dist/widget.iife.js",
|
|
17
|
+
"jsdelivr": "dist/widget.iife.js",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"import": "./dist/index.js",
|
|
22
|
+
"require": "./dist/index.js",
|
|
23
|
+
"default": "./dist/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./fonts.css": "./src/widget/fonts.css",
|
|
26
|
+
"./widget.css": "./src/widget/widget.css",
|
|
27
|
+
"./widget": {
|
|
28
|
+
"types": "./dist/widget/index.d.ts",
|
|
29
|
+
"import": "./dist/widget/index.js",
|
|
30
|
+
"default": "./dist/widget/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./browser": {
|
|
33
|
+
"default": "./dist/widget.iife.js"
|
|
34
|
+
},
|
|
35
|
+
"./widget.iife.js": "./dist/widget.iife.js",
|
|
36
|
+
"./save-in-meos.min.js": "./dist/save-in-meos.min.js",
|
|
37
|
+
"./widget.iife.css": "./dist/widget.iife.css"
|
|
38
|
+
},
|
|
39
|
+
"files": [
|
|
40
|
+
"dist/index.js",
|
|
41
|
+
"dist/index.d.ts",
|
|
42
|
+
"dist/import-intent-v1.js",
|
|
43
|
+
"dist/import-intent-v1.d.ts",
|
|
44
|
+
"dist/widget/",
|
|
45
|
+
"dist/widget.iife.js",
|
|
46
|
+
"dist/widget.iife.js.map",
|
|
47
|
+
"dist/widget.iife.css",
|
|
48
|
+
"dist/save-in-meos.min.js",
|
|
49
|
+
"src/widget/fonts.css",
|
|
50
|
+
"src/widget/widget.css",
|
|
51
|
+
"assets/fonts/",
|
|
52
|
+
"LICENSE",
|
|
53
|
+
"README.md"
|
|
54
|
+
],
|
|
55
|
+
"scripts": {
|
|
56
|
+
"build": "tsc",
|
|
57
|
+
"build:widget": "tsx scripts/build-widget.ts",
|
|
58
|
+
"demo": "npm run build:widget && cd examples && npx --yes serve . -p 4173",
|
|
59
|
+
"typecheck": "tsc --noEmit",
|
|
60
|
+
"test": "vitest run",
|
|
61
|
+
"test:watch": "vitest",
|
|
62
|
+
"check:mdp-contract": "tsx scripts/check-mdp-contract.ts",
|
|
63
|
+
"check:widget-branding": "tsx scripts/check-widget-branding.ts",
|
|
64
|
+
"check:mdp": "npm run check:mdp-contract && npm run check:widget-branding",
|
|
65
|
+
"check:public-scrub": "tsx scripts/check-public-scrub.ts",
|
|
66
|
+
"check:ci": "tsx scripts/check-ci-workflows.ts",
|
|
67
|
+
"prepublishOnly": "npm run build && npm run build:widget && npm run check:mdp && npm run check:public-scrub",
|
|
68
|
+
"prepare": "husky"
|
|
69
|
+
},
|
|
70
|
+
"keywords": [
|
|
71
|
+
"meos",
|
|
72
|
+
"mdp",
|
|
73
|
+
"deeplink",
|
|
74
|
+
"widget",
|
|
75
|
+
"import"
|
|
76
|
+
],
|
|
77
|
+
"author": {
|
|
78
|
+
"name": "meoslabs",
|
|
79
|
+
"email": "founders@usemeos.com",
|
|
80
|
+
"url": "https://meos.do"
|
|
81
|
+
},
|
|
82
|
+
"license": "MIT",
|
|
83
|
+
"publishConfig": {
|
|
84
|
+
"access": "public",
|
|
85
|
+
"provenance": true
|
|
86
|
+
},
|
|
87
|
+
"devDependencies": {
|
|
88
|
+
"@types/node": "^22.15.0",
|
|
89
|
+
"@types/pako": "^2.0.4",
|
|
90
|
+
"esbuild": "^0.28.0",
|
|
91
|
+
"husky": "^9.1.7",
|
|
92
|
+
"tsx": "^4.19.4",
|
|
93
|
+
"typescript": "^5.8.3",
|
|
94
|
+
"vitest": "^4.1.8"
|
|
95
|
+
},
|
|
96
|
+
"engines": {
|
|
97
|
+
"node": ">=20"
|
|
98
|
+
},
|
|
99
|
+
"dependencies": {
|
|
100
|
+
"pako": "^2.1.0"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WHY: Integrators must not load Inconsolata from Google Fonts CDN.
|
|
3
|
+
* This file ships bundled woff2 (OFL-1.1) matching meos product typography.
|
|
4
|
+
* WHAT: @font-face declarations for widget + demo surfaces.
|
|
5
|
+
* WHERE: import '@meoslabs/save-in-meos/fonts.css'
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
@font-face {
|
|
9
|
+
font-family: "Inconsolata";
|
|
10
|
+
font-style: normal;
|
|
11
|
+
font-weight: 400;
|
|
12
|
+
font-display: swap;
|
|
13
|
+
src: url("../../assets/fonts/inconsolata/Inconsolata-Regular.woff2") format("woff2");
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@font-face {
|
|
17
|
+
font-family: "Inconsolata";
|
|
18
|
+
font-style: normal;
|
|
19
|
+
font-weight: 500;
|
|
20
|
+
font-display: swap;
|
|
21
|
+
src: url("../../assets/fonts/inconsolata/Inconsolata-Medium.woff2") format("woff2");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:root {
|
|
25
|
+
--meos-font: "Inconsolata", ui-monospace, monospace;
|
|
26
|
+
--meos-radius: 0;
|
|
27
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WHY: Canonical branded save chip — social-share row size, meos B/W ghost style.
|
|
3
|
+
* WHAT: Scoped `meos-save-` classes; theme via data-meos-theme + bounded CSS vars.
|
|
4
|
+
* WHERE: import '@meoslabs/save-in-meos/widget.css' (pairs with fonts.css).
|
|
5
|
+
* GUARDED: check-widget-branding enforces selectors, theme tokens, and allowed host vars.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.meos-save-chip,
|
|
9
|
+
.meos-save-chip[data-meos-theme="auto"] {
|
|
10
|
+
--meos-save-fg: #000000;
|
|
11
|
+
--meos-save-border: rgba(0, 0, 0, 0.24);
|
|
12
|
+
--meos-save-hover-bg: rgba(0, 0, 0, 0.06);
|
|
13
|
+
--meos-save-hover-border: rgba(0, 0, 0, 0.42);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.meos-save-chip[data-meos-theme="light"] {
|
|
17
|
+
--meos-save-fg: #000000;
|
|
18
|
+
--meos-save-border: rgba(0, 0, 0, 0.24);
|
|
19
|
+
--meos-save-hover-bg: rgba(0, 0, 0, 0.06);
|
|
20
|
+
--meos-save-hover-border: rgba(0, 0, 0, 0.42);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.meos-save-chip[data-meos-theme="dark"] {
|
|
24
|
+
--meos-save-fg: #ffffff;
|
|
25
|
+
--meos-save-border: rgba(255, 255, 255, 0.3);
|
|
26
|
+
--meos-save-hover-bg: rgba(255, 255, 255, 0.08);
|
|
27
|
+
--meos-save-hover-border: rgba(255, 255, 255, 0.46);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@media (prefers-color-scheme: dark) {
|
|
31
|
+
.meos-save-chip[data-meos-theme="auto"] {
|
|
32
|
+
--meos-save-fg: #ffffff;
|
|
33
|
+
--meos-save-border: rgba(255, 255, 255, 0.3);
|
|
34
|
+
--meos-save-hover-bg: rgba(255, 255, 255, 0.08);
|
|
35
|
+
--meos-save-hover-border: rgba(255, 255, 255, 0.46);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.meos-save-chip {
|
|
40
|
+
display: inline-flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
justify-content: center;
|
|
43
|
+
gap: var(--meos-save-chip-gap, 0.3125rem);
|
|
44
|
+
min-height: calc(var(--meos-save-chip-height, 31px) - 1px);
|
|
45
|
+
max-height: calc(var(--meos-save-chip-height, 31px) + 1px);
|
|
46
|
+
height: var(--meos-save-chip-height, 31px);
|
|
47
|
+
padding: 0 var(--meos-save-chip-padding-x, 0.625rem);
|
|
48
|
+
margin: 0;
|
|
49
|
+
font-family: var(--meos-font, "Inconsolata", ui-monospace, monospace);
|
|
50
|
+
font-size: 11px;
|
|
51
|
+
font-weight: 500;
|
|
52
|
+
line-height: 1;
|
|
53
|
+
letter-spacing: 0.02em;
|
|
54
|
+
text-transform: lowercase;
|
|
55
|
+
color: var(--meos-save-fg, #000000);
|
|
56
|
+
background: transparent;
|
|
57
|
+
border: 1px solid var(--meos-save-border, rgba(0, 0, 0, 0.24));
|
|
58
|
+
border-radius: var(--meos-save-chip-radius, var(--meos-radius, 2px));
|
|
59
|
+
cursor: pointer;
|
|
60
|
+
box-sizing: border-box;
|
|
61
|
+
-webkit-tap-highlight-color: transparent;
|
|
62
|
+
pointer-events: auto;
|
|
63
|
+
user-select: none;
|
|
64
|
+
transition:
|
|
65
|
+
background 0.12s ease,
|
|
66
|
+
border-color 0.12s ease,
|
|
67
|
+
opacity 0.12s ease,
|
|
68
|
+
transform 0.08s ease;
|
|
69
|
+
appearance: none;
|
|
70
|
+
vertical-align: middle;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.meos-save-chip:hover {
|
|
74
|
+
background: var(--meos-save-hover-bg, rgba(0, 0, 0, 0.06));
|
|
75
|
+
border-color: var(--meos-save-hover-border, rgba(0, 0, 0, 0.42));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.meos-save-chip:focus-visible {
|
|
79
|
+
outline: 2px solid currentColor;
|
|
80
|
+
outline-offset: 2px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.meos-save-chip:active {
|
|
84
|
+
opacity: 0.9;
|
|
85
|
+
transform: scale(0.98);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.meos-save-chip__icon {
|
|
89
|
+
width: calc(var(--meos-save-icon-size, 16px) * 27.275015 / 30.362297);
|
|
90
|
+
height: var(--meos-save-icon-size, 16px);
|
|
91
|
+
flex-shrink: 0;
|
|
92
|
+
display: block;
|
|
93
|
+
pointer-events: none;
|
|
94
|
+
shape-rendering: geometricPrecision;
|
|
95
|
+
overflow: visible;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.meos-save-chip__label {
|
|
99
|
+
white-space: nowrap;
|
|
100
|
+
pointer-events: none;
|
|
101
|
+
}
|