@vio-live/web-sdk 0.1.0 → 0.2.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 +66 -24
- package/dist/{chunk-4CCGE7DE.js → chunk-7JSSYPRN.js} +1548 -1708
- package/dist/chunk-7JSSYPRN.js.map +1 -0
- package/dist/{chunk-5SPY7TH6.js → chunk-SOO2G6CF.js} +4 -4
- package/dist/chunk-SOO2G6CF.js.map +1 -0
- package/dist/core/index.js +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +1 -2
- package/dist/react/index.d.ts +23 -0
- package/dist/react/index.js +74 -0
- package/dist/react/index.js.map +1 -0
- package/dist/ui/index.d.ts +29 -4
- package/dist/ui/index.js +136 -2
- package/dist/ui/index.js.map +1 -1
- package/dist/{vio-checkout-D8B4Upk8.d.ts → vio-checkout-CrC5tvmh.d.ts} +0 -1
- package/package.json +18 -2
- package/dist/chunk-4CCGE7DE.js.map +0 -1
- package/dist/chunk-5SPY7TH6.js.map +0 -1
package/dist/ui/index.js
CHANGED
|
@@ -1,4 +1,138 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { registerVioElements } from '../chunk-7JSSYPRN.js';
|
|
2
|
+
export { VioCart, VioCheckout, VioProduct, VioProductCarousel, VioProductDetail, registerVioElements } from '../chunk-7JSSYPRN.js';
|
|
3
|
+
import '../chunk-SOO2G6CF.js';
|
|
4
|
+
|
|
5
|
+
// src/ui/tokens.ts
|
|
6
|
+
var VioTokens = {
|
|
7
|
+
color: {
|
|
8
|
+
text: {
|
|
9
|
+
primary: "#0a0a0a",
|
|
10
|
+
secondary: "#666666",
|
|
11
|
+
tertiary: "#999999",
|
|
12
|
+
onPrimary: "#ffffff"
|
|
13
|
+
},
|
|
14
|
+
accent: {
|
|
15
|
+
editorial: "#c14a3b"
|
|
16
|
+
// "REDAKSJONENS FAVORITTER" red
|
|
17
|
+
},
|
|
18
|
+
surface: {
|
|
19
|
+
base: "#ffffff",
|
|
20
|
+
muted: "#f2f2f2",
|
|
21
|
+
// product image background
|
|
22
|
+
hover: "#fafafa"
|
|
23
|
+
},
|
|
24
|
+
border: {
|
|
25
|
+
subtle: "#e5e5e5",
|
|
26
|
+
default: "#cccccc"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
font: {
|
|
30
|
+
serif: '"Tinos", "Playfair Display", Georgia, serif',
|
|
31
|
+
sans: '"Inter", -apple-system, "Helvetica Neue", Arial, sans-serif'
|
|
32
|
+
},
|
|
33
|
+
size: {
|
|
34
|
+
xs: "12px",
|
|
35
|
+
sm: "14px",
|
|
36
|
+
md: "16px",
|
|
37
|
+
lg: "20px",
|
|
38
|
+
xl: "24px",
|
|
39
|
+
"2xl": "32px",
|
|
40
|
+
"3xl": "40px"
|
|
41
|
+
},
|
|
42
|
+
weight: {
|
|
43
|
+
regular: 400,
|
|
44
|
+
medium: 500,
|
|
45
|
+
semibold: 600,
|
|
46
|
+
bold: 700
|
|
47
|
+
},
|
|
48
|
+
tracking: {
|
|
49
|
+
label: "0.1em",
|
|
50
|
+
// uppercase labels (BRAND, RETAILER, REDAKSJONENS FAVORITTER)
|
|
51
|
+
title: "0"
|
|
52
|
+
},
|
|
53
|
+
lineHeight: {
|
|
54
|
+
tight: 1.1,
|
|
55
|
+
snug: 1.3,
|
|
56
|
+
normal: 1.5
|
|
57
|
+
},
|
|
58
|
+
space: {
|
|
59
|
+
xs: "4px",
|
|
60
|
+
sm: "8px",
|
|
61
|
+
md: "16px",
|
|
62
|
+
lg: "24px",
|
|
63
|
+
xl: "32px",
|
|
64
|
+
"2xl": "48px",
|
|
65
|
+
"3xl": "64px"
|
|
66
|
+
},
|
|
67
|
+
radius: {
|
|
68
|
+
none: "0",
|
|
69
|
+
sm: "2px",
|
|
70
|
+
md: "4px",
|
|
71
|
+
lg: "8px",
|
|
72
|
+
full: "9999px"
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
var VIO_TOKENS_CSS = `
|
|
76
|
+
:root {
|
|
77
|
+
/* color \u2014 text */
|
|
78
|
+
--vio-color-text: ${VioTokens.color.text.primary};
|
|
79
|
+
--vio-color-text-secondary: ${VioTokens.color.text.secondary};
|
|
80
|
+
--vio-color-text-tertiary: ${VioTokens.color.text.tertiary};
|
|
81
|
+
--vio-color-text-on-primary:${VioTokens.color.text.onPrimary};
|
|
82
|
+
|
|
83
|
+
/* color \u2014 accent */
|
|
84
|
+
--vio-color-accent: ${VioTokens.color.accent.editorial};
|
|
85
|
+
|
|
86
|
+
/* color \u2014 surface */
|
|
87
|
+
--vio-color-surface: ${VioTokens.color.surface.base};
|
|
88
|
+
--vio-color-surface-muted: ${VioTokens.color.surface.muted};
|
|
89
|
+
--vio-color-surface-hover: ${VioTokens.color.surface.hover};
|
|
90
|
+
|
|
91
|
+
/* color \u2014 border */
|
|
92
|
+
--vio-color-border: ${VioTokens.color.border.subtle};
|
|
93
|
+
--vio-color-border-default: ${VioTokens.color.border.default};
|
|
94
|
+
|
|
95
|
+
/* font */
|
|
96
|
+
--vio-font-serif: ${VioTokens.font.serif};
|
|
97
|
+
--vio-font-sans: ${VioTokens.font.sans};
|
|
98
|
+
|
|
99
|
+
/* size */
|
|
100
|
+
--vio-size-xs: ${VioTokens.size.xs};
|
|
101
|
+
--vio-size-sm: ${VioTokens.size.sm};
|
|
102
|
+
--vio-size-md: ${VioTokens.size.md};
|
|
103
|
+
--vio-size-lg: ${VioTokens.size.lg};
|
|
104
|
+
--vio-size-xl: ${VioTokens.size.xl};
|
|
105
|
+
|
|
106
|
+
/* tracking (uppercase letterspacing) */
|
|
107
|
+
--vio-tracking-label: ${VioTokens.tracking.label};
|
|
108
|
+
|
|
109
|
+
/* space */
|
|
110
|
+
--vio-space-xs: ${VioTokens.space.xs};
|
|
111
|
+
--vio-space-sm: ${VioTokens.space.sm};
|
|
112
|
+
--vio-space-md: ${VioTokens.space.md};
|
|
113
|
+
--vio-space-lg: ${VioTokens.space.lg};
|
|
114
|
+
--vio-space-xl: ${VioTokens.space.xl};
|
|
115
|
+
|
|
116
|
+
/* radius */
|
|
117
|
+
--vio-radius-sm: ${VioTokens.radius.sm};
|
|
118
|
+
--vio-radius-md: ${VioTokens.radius.md};
|
|
119
|
+
--vio-radius-lg: ${VioTokens.radius.lg};
|
|
120
|
+
}
|
|
121
|
+
`;
|
|
122
|
+
function injectTokens() {
|
|
123
|
+
if (typeof document === "undefined") return;
|
|
124
|
+
if (document.querySelector('style[data-vio="tokens"]') !== null) return;
|
|
125
|
+
const style = document.createElement("style");
|
|
126
|
+
style.setAttribute("data-vio", "tokens");
|
|
127
|
+
style.textContent = VIO_TOKENS_CSS;
|
|
128
|
+
document.head.appendChild(style);
|
|
129
|
+
}
|
|
130
|
+
injectTokens();
|
|
131
|
+
|
|
132
|
+
// src/ui/index.ts
|
|
133
|
+
registerVioElements();
|
|
134
|
+
var VIO_UI_VERSION = "0.2.0";
|
|
135
|
+
|
|
136
|
+
export { VIO_UI_VERSION, VioTokens };
|
|
3
137
|
//# sourceMappingURL=index.js.map
|
|
4
138
|
//# sourceMappingURL=index.js.map
|
package/dist/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/ui/tokens.ts","../../src/ui/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Vio Design Tokens — editorial commerce aesthetic.\n *\n * Extracted from the Allermedia \"Mote & Livsstil\" reference (the target\n * pilot site). Mood: Vogue-like fashion magazine — serif headlines,\n * sans-serif body, near-monochrome palette, terracotta accent for\n * editorial labels (\"REDAKSJONENS FAVORITTER\").\n *\n * Tokens are exposed both as a typed TS object (`VioTokens`) and as\n * CSS custom properties on `:root` (auto-injected when this module is\n * imported in a browser). Consumers can override individual variables\n * to re-skin without touching SDK source.\n */\n\nexport const VioTokens = {\n color: {\n text: {\n primary: '#0a0a0a',\n secondary: '#666666',\n tertiary: '#999999',\n onPrimary: '#ffffff',\n },\n accent: {\n editorial: '#c14a3b', // \"REDAKSJONENS FAVORITTER\" red\n },\n surface: {\n base: '#ffffff',\n muted: '#f2f2f2', // product image background\n hover: '#fafafa',\n },\n border: {\n subtle: '#e5e5e5',\n default: '#cccccc',\n },\n },\n font: {\n serif: '\"Tinos\", \"Playfair Display\", Georgia, serif',\n sans: '\"Inter\", -apple-system, \"Helvetica Neue\", Arial, sans-serif',\n },\n size: {\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '20px',\n xl: '24px',\n '2xl': '32px',\n '3xl': '40px',\n },\n weight: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n tracking: {\n label: '0.1em', // uppercase labels (BRAND, RETAILER, REDAKSJONENS FAVORITTER)\n title: '0',\n },\n lineHeight: {\n tight: 1.1,\n snug: 1.3,\n normal: 1.5,\n },\n space: {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n '2xl': '48px',\n '3xl': '64px',\n },\n radius: {\n none: '0',\n sm: '2px',\n md: '4px',\n lg: '8px',\n full: '9999px',\n },\n} as const\n\n/**\n * CSS Custom Properties — generated from VioTokens. Injected once into\n * the document head on first import. Consumers can override any\n * `--vio-*` var on their root or component selector to customise.\n */\nconst VIO_TOKENS_CSS = `\n :root {\n /* color — text */\n --vio-color-text: ${VioTokens.color.text.primary};\n --vio-color-text-secondary: ${VioTokens.color.text.secondary};\n --vio-color-text-tertiary: ${VioTokens.color.text.tertiary};\n --vio-color-text-on-primary:${VioTokens.color.text.onPrimary};\n\n /* color — accent */\n --vio-color-accent: ${VioTokens.color.accent.editorial};\n\n /* color — surface */\n --vio-color-surface: ${VioTokens.color.surface.base};\n --vio-color-surface-muted: ${VioTokens.color.surface.muted};\n --vio-color-surface-hover: ${VioTokens.color.surface.hover};\n\n /* color — border */\n --vio-color-border: ${VioTokens.color.border.subtle};\n --vio-color-border-default: ${VioTokens.color.border.default};\n\n /* font */\n --vio-font-serif: ${VioTokens.font.serif};\n --vio-font-sans: ${VioTokens.font.sans};\n\n /* size */\n --vio-size-xs: ${VioTokens.size.xs};\n --vio-size-sm: ${VioTokens.size.sm};\n --vio-size-md: ${VioTokens.size.md};\n --vio-size-lg: ${VioTokens.size.lg};\n --vio-size-xl: ${VioTokens.size.xl};\n\n /* tracking (uppercase letterspacing) */\n --vio-tracking-label: ${VioTokens.tracking.label};\n\n /* space */\n --vio-space-xs: ${VioTokens.space.xs};\n --vio-space-sm: ${VioTokens.space.sm};\n --vio-space-md: ${VioTokens.space.md};\n --vio-space-lg: ${VioTokens.space.lg};\n --vio-space-xl: ${VioTokens.space.xl};\n\n /* radius */\n --vio-radius-sm: ${VioTokens.radius.sm};\n --vio-radius-md: ${VioTokens.radius.md};\n --vio-radius-lg: ${VioTokens.radius.lg};\n }\n`\n\nfunction injectTokens(): void {\n if (typeof document === 'undefined') return\n if (document.querySelector('style[data-vio=\"tokens\"]') !== null) return\n const style = document.createElement('style')\n style.setAttribute('data-vio', 'tokens')\n style.textContent = VIO_TOKENS_CSS\n document.head.appendChild(style)\n}\n\ninjectTokens()\n","/**\n * Vio UI — Web Components + design tokens.\n *\n * Importing this file (directly or via the main `vio` entry) has two\n * side-effects:\n * 1. Injects design tokens as CSS custom properties on `:root`\n * 2. Registers all `<vio-*>` custom elements (via `registerVioElements()`)\n *\n * Registration goes through an explicit function call (see ./elements) so it\n * survives tree-shaking while keeping `./core` tree-shakeable.\n *\n * SSR-safe: every side-effect guards on `typeof document !== 'undefined'`.\n */\n\nimport './tokens.js'\nimport { registerVioElements } from './elements.js'\n\n// Auto-register on import, so the conventional `import '@vio-live/web-sdk/ui'`\n// keeps working. This call is what pins the registration into this entry.\nregisterVioElements()\n\nexport { VioTokens } from './tokens.js'\nexport {\n registerVioElements,\n VioProduct,\n VioProductCarousel,\n VioProductDetail,\n VioCart,\n VioCheckout,\n} from './elements.js'\n\nexport const VIO_UI_VERSION = '0.2.0'\n"]}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vio-live/web-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Vio Web SDK — in-site shoppable + native checkout, designed for editorial commerce sites",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
9
|
"sideEffects": [
|
|
10
|
-
"./dist
|
|
10
|
+
"./dist/ui/index.js",
|
|
11
|
+
"./dist/react/index.js"
|
|
11
12
|
],
|
|
12
13
|
"exports": {
|
|
13
14
|
".": {
|
|
@@ -21,6 +22,10 @@
|
|
|
21
22
|
"./ui": {
|
|
22
23
|
"types": "./dist/ui/index.d.ts",
|
|
23
24
|
"import": "./dist/ui/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./react": {
|
|
27
|
+
"types": "./dist/react/index.d.ts",
|
|
28
|
+
"import": "./dist/react/index.js"
|
|
24
29
|
}
|
|
25
30
|
},
|
|
26
31
|
"files": [
|
|
@@ -40,8 +45,18 @@
|
|
|
40
45
|
"graphql-request": "^7.1.0",
|
|
41
46
|
"lit": "^3.2.0"
|
|
42
47
|
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"react": ">=18"
|
|
50
|
+
},
|
|
51
|
+
"peerDependenciesMeta": {
|
|
52
|
+
"react": {
|
|
53
|
+
"optional": true
|
|
54
|
+
}
|
|
55
|
+
},
|
|
43
56
|
"devDependencies": {
|
|
57
|
+
"@lit/react": "^1.0.8",
|
|
44
58
|
"@types/node": "^22.10.0",
|
|
59
|
+
"@types/react": "^19.2.17",
|
|
45
60
|
"tsup": "^8.5.1",
|
|
46
61
|
"typescript": "^5.6.3",
|
|
47
62
|
"vite": "^6.0.0",
|
|
@@ -65,6 +80,7 @@
|
|
|
65
80
|
"checkout",
|
|
66
81
|
"web-components",
|
|
67
82
|
"lit",
|
|
83
|
+
"react",
|
|
68
84
|
"klarna",
|
|
69
85
|
"editorial-commerce"
|
|
70
86
|
],
|