@openpolicy/vue 0.0.16
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 +70 -0
- package/dist/index.d.ts +401 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +841 -0
- package/dist/index.js.map +1 -0
- package/package.json +48 -0
- package/styles.css +30 -0
package/README.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# `@openpolicy/vue`
|
|
2
|
+
|
|
3
|
+
> Vue components for rendering [OpenPolicy](https://openpolicy.sh) documents at runtime.
|
|
4
|
+
|
|
5
|
+
`@openpolicy/vue` provides headless Vue components that compile and render policies directly from config.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
bun add @openpolicy/vue @openpolicy/sdk
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
// openpolicy.ts
|
|
17
|
+
import { defineConfig } from "@openpolicy/sdk";
|
|
18
|
+
|
|
19
|
+
export default defineConfig({
|
|
20
|
+
company: {
|
|
21
|
+
name: "Acme Inc.",
|
|
22
|
+
legalName: "Acme Corporation",
|
|
23
|
+
address: "123 Main St, Springfield, USA",
|
|
24
|
+
contact: "privacy@acme.com",
|
|
25
|
+
},
|
|
26
|
+
privacy: {
|
|
27
|
+
effectiveDate: "2026-01-01",
|
|
28
|
+
dataCollected: { "Account Information": ["Email", "Name"] },
|
|
29
|
+
legalBasis: "Legitimate interests and consent",
|
|
30
|
+
retention: { "Account data": "Until account deletion" },
|
|
31
|
+
cookies: { essential: true, analytics: false, marketing: false },
|
|
32
|
+
thirdParties: [],
|
|
33
|
+
userRights: ["access", "erasure"],
|
|
34
|
+
jurisdictions: ["us", "eu"],
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
// App.ts
|
|
41
|
+
import openpolicy from "./openpolicy";
|
|
42
|
+
import { OpenPolicy, PrivacyPolicy } from "@openpolicy/vue";
|
|
43
|
+
|
|
44
|
+
export default {
|
|
45
|
+
components: { OpenPolicy, PrivacyPolicy },
|
|
46
|
+
template: `
|
|
47
|
+
<OpenPolicy :config="openpolicy">
|
|
48
|
+
<PrivacyPolicy />
|
|
49
|
+
</OpenPolicy>
|
|
50
|
+
`,
|
|
51
|
+
data() {
|
|
52
|
+
return { openpolicy };
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Exports
|
|
58
|
+
|
|
59
|
+
- `OpenPolicy`
|
|
60
|
+
- `PrivacyPolicy`
|
|
61
|
+
- `TermsOfService`
|
|
62
|
+
- `CookiePolicy`
|
|
63
|
+
- `renderDocument`
|
|
64
|
+
- `defaultStyles`
|
|
65
|
+
- `./styles.css`
|
|
66
|
+
|
|
67
|
+
## Links
|
|
68
|
+
|
|
69
|
+
- [GitHub](https://github.com/jamiedavenport/openpolicy)
|
|
70
|
+
- [openpolicy.sh](https://openpolicy.sh)
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
import * as vue from "vue";
|
|
2
|
+
import { CSSProperties, Component, PropType, VNodeChild } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region ../core/dist/index.d.ts
|
|
5
|
+
type Jurisdiction = "us" | "eu" | "ca" | "au" | "nz" | "other";
|
|
6
|
+
type CompanyConfig = {
|
|
7
|
+
name: string;
|
|
8
|
+
legalName: string;
|
|
9
|
+
address: string;
|
|
10
|
+
contact: string;
|
|
11
|
+
};
|
|
12
|
+
type PrivacyPolicyConfig = {
|
|
13
|
+
effectiveDate: string;
|
|
14
|
+
company: CompanyConfig;
|
|
15
|
+
dataCollected: Record<string, string[]>;
|
|
16
|
+
legalBasis: string;
|
|
17
|
+
retention: Record<string, string>;
|
|
18
|
+
cookies: {
|
|
19
|
+
essential: boolean;
|
|
20
|
+
analytics: boolean;
|
|
21
|
+
marketing: boolean;
|
|
22
|
+
};
|
|
23
|
+
thirdParties: {
|
|
24
|
+
name: string;
|
|
25
|
+
purpose: string;
|
|
26
|
+
}[];
|
|
27
|
+
userRights: string[];
|
|
28
|
+
jurisdictions: Jurisdiction[];
|
|
29
|
+
children?: {
|
|
30
|
+
underAge: number;
|
|
31
|
+
noticeUrl?: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
type DisputeResolutionMethod = "arbitration" | "litigation" | "mediation";
|
|
35
|
+
type TermsOfServiceConfig = {
|
|
36
|
+
effectiveDate: string;
|
|
37
|
+
company: CompanyConfig;
|
|
38
|
+
acceptance: {
|
|
39
|
+
methods: string[];
|
|
40
|
+
};
|
|
41
|
+
eligibility?: {
|
|
42
|
+
minimumAge: number;
|
|
43
|
+
jurisdictionRestrictions?: string[];
|
|
44
|
+
};
|
|
45
|
+
accounts?: {
|
|
46
|
+
registrationRequired: boolean;
|
|
47
|
+
userResponsibleForCredentials: boolean;
|
|
48
|
+
companyCanTerminate: boolean;
|
|
49
|
+
};
|
|
50
|
+
prohibitedUses?: string[];
|
|
51
|
+
userContent?: {
|
|
52
|
+
usersOwnContent: boolean;
|
|
53
|
+
licenseGrantedToCompany: boolean;
|
|
54
|
+
licenseDescription?: string;
|
|
55
|
+
companyCanRemoveContent: boolean;
|
|
56
|
+
};
|
|
57
|
+
intellectualProperty?: {
|
|
58
|
+
companyOwnsService: boolean;
|
|
59
|
+
usersMayNotCopy: boolean;
|
|
60
|
+
};
|
|
61
|
+
payments?: {
|
|
62
|
+
hasPaidFeatures: boolean;
|
|
63
|
+
refundPolicy?: string;
|
|
64
|
+
priceChangesNotice?: string;
|
|
65
|
+
};
|
|
66
|
+
availability?: {
|
|
67
|
+
noUptimeGuarantee: boolean;
|
|
68
|
+
maintenanceWindows?: string;
|
|
69
|
+
};
|
|
70
|
+
termination?: {
|
|
71
|
+
companyCanTerminate: boolean;
|
|
72
|
+
userCanTerminate: boolean;
|
|
73
|
+
effectOfTermination?: string;
|
|
74
|
+
};
|
|
75
|
+
disclaimers?: {
|
|
76
|
+
serviceProvidedAsIs: boolean;
|
|
77
|
+
noWarranties: boolean;
|
|
78
|
+
};
|
|
79
|
+
limitationOfLiability?: {
|
|
80
|
+
excludesIndirectDamages: boolean;
|
|
81
|
+
liabilityCap?: string;
|
|
82
|
+
};
|
|
83
|
+
indemnification?: {
|
|
84
|
+
userIndemnifiesCompany: boolean;
|
|
85
|
+
scope?: string;
|
|
86
|
+
};
|
|
87
|
+
thirdPartyServices?: {
|
|
88
|
+
name: string;
|
|
89
|
+
purpose: string;
|
|
90
|
+
}[];
|
|
91
|
+
disputeResolution?: {
|
|
92
|
+
method: DisputeResolutionMethod;
|
|
93
|
+
venue?: string;
|
|
94
|
+
classActionWaiver?: boolean;
|
|
95
|
+
};
|
|
96
|
+
governingLaw: {
|
|
97
|
+
jurisdiction: string;
|
|
98
|
+
};
|
|
99
|
+
changesPolicy?: {
|
|
100
|
+
noticeMethod: string;
|
|
101
|
+
noticePeriodDays?: number;
|
|
102
|
+
};
|
|
103
|
+
privacyPolicyUrl?: string;
|
|
104
|
+
};
|
|
105
|
+
type CookiePolicyConfig = {
|
|
106
|
+
effectiveDate: string;
|
|
107
|
+
company: CompanyConfig;
|
|
108
|
+
cookies: {
|
|
109
|
+
essential: boolean;
|
|
110
|
+
analytics: boolean;
|
|
111
|
+
functional: boolean;
|
|
112
|
+
marketing: boolean;
|
|
113
|
+
};
|
|
114
|
+
thirdParties?: {
|
|
115
|
+
name: string;
|
|
116
|
+
purpose: string;
|
|
117
|
+
policyUrl?: string;
|
|
118
|
+
}[];
|
|
119
|
+
trackingTechnologies?: string[];
|
|
120
|
+
consentMechanism?: {
|
|
121
|
+
hasBanner: boolean;
|
|
122
|
+
hasPreferencePanel: boolean;
|
|
123
|
+
canWithdraw: boolean;
|
|
124
|
+
};
|
|
125
|
+
jurisdictions: Jurisdiction[];
|
|
126
|
+
};
|
|
127
|
+
type OpenPolicyConfig = {
|
|
128
|
+
company: CompanyConfig;
|
|
129
|
+
privacy?: Omit<PrivacyPolicyConfig, "company">;
|
|
130
|
+
terms?: Omit<TermsOfServiceConfig, "company">;
|
|
131
|
+
cookie?: Omit<CookiePolicyConfig, "company">;
|
|
132
|
+
};
|
|
133
|
+
//#endregion
|
|
134
|
+
//#region src/documents/types.d.ts
|
|
135
|
+
type NodeContext = {
|
|
136
|
+
reason?: string;
|
|
137
|
+
};
|
|
138
|
+
type TextNode = {
|
|
139
|
+
type: "text";
|
|
140
|
+
value: string;
|
|
141
|
+
context?: NodeContext;
|
|
142
|
+
};
|
|
143
|
+
type BoldNode = {
|
|
144
|
+
type: "bold";
|
|
145
|
+
value: string;
|
|
146
|
+
context?: NodeContext;
|
|
147
|
+
};
|
|
148
|
+
type ItalicNode = {
|
|
149
|
+
type: "italic";
|
|
150
|
+
value: string;
|
|
151
|
+
context?: NodeContext;
|
|
152
|
+
};
|
|
153
|
+
type LinkNode = {
|
|
154
|
+
type: "link";
|
|
155
|
+
href: string;
|
|
156
|
+
value: string;
|
|
157
|
+
context?: NodeContext;
|
|
158
|
+
};
|
|
159
|
+
type InlineNode = TextNode | BoldNode | ItalicNode | LinkNode;
|
|
160
|
+
type HeadingNode = {
|
|
161
|
+
type: "heading";
|
|
162
|
+
level?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
163
|
+
value: string;
|
|
164
|
+
context?: NodeContext;
|
|
165
|
+
};
|
|
166
|
+
type ParagraphNode = {
|
|
167
|
+
type: "paragraph";
|
|
168
|
+
children: InlineNode[];
|
|
169
|
+
context?: NodeContext;
|
|
170
|
+
};
|
|
171
|
+
type ListItemNode = {
|
|
172
|
+
type: "listItem";
|
|
173
|
+
children: (InlineNode | ListNode)[];
|
|
174
|
+
context?: NodeContext;
|
|
175
|
+
};
|
|
176
|
+
type ListNode = {
|
|
177
|
+
type: "list";
|
|
178
|
+
ordered?: boolean;
|
|
179
|
+
items: ListItemNode[];
|
|
180
|
+
context?: NodeContext;
|
|
181
|
+
};
|
|
182
|
+
type ContentNode = HeadingNode | ParagraphNode | ListNode;
|
|
183
|
+
type DocumentSection = {
|
|
184
|
+
type: "section";
|
|
185
|
+
id: string;
|
|
186
|
+
content: ContentNode[];
|
|
187
|
+
context?: NodeContext;
|
|
188
|
+
};
|
|
189
|
+
type PolicyType = "privacy" | "terms" | "cookie";
|
|
190
|
+
type Document = {
|
|
191
|
+
type: "document";
|
|
192
|
+
policyType: PolicyType;
|
|
193
|
+
sections: DocumentSection[];
|
|
194
|
+
context?: NodeContext;
|
|
195
|
+
};
|
|
196
|
+
type Node = Document | DocumentSection | ContentNode | ListItemNode | InlineNode; //#endregion
|
|
197
|
+
//#region src/documents/helpers.d.ts
|
|
198
|
+
//#endregion
|
|
199
|
+
//#region src/types.d.ts
|
|
200
|
+
type PolicyTheme = Partial<Record<"--op-heading-color" | "--op-body-color" | "--op-section-gap" | "--op-font-family" | "--op-font-size-heading" | "--op-font-weight-heading" | "--op-font-size-body" | "--op-line-height" | "--op-link-color" | "--op-link-color-hover" | "--op-border-color" | "--op-border-radius", string>>;
|
|
201
|
+
interface PolicyComponents {
|
|
202
|
+
Section?: Component<{
|
|
203
|
+
section: DocumentSection;
|
|
204
|
+
children?: VNodeChild;
|
|
205
|
+
}>;
|
|
206
|
+
Heading?: Component<{
|
|
207
|
+
node: HeadingNode;
|
|
208
|
+
}>;
|
|
209
|
+
Paragraph?: Component<{
|
|
210
|
+
node: ParagraphNode;
|
|
211
|
+
children?: VNodeChild;
|
|
212
|
+
}>;
|
|
213
|
+
List?: Component<{
|
|
214
|
+
node: ListNode;
|
|
215
|
+
children?: VNodeChild;
|
|
216
|
+
}>;
|
|
217
|
+
Text?: Component<{
|
|
218
|
+
node: TextNode;
|
|
219
|
+
}>;
|
|
220
|
+
Bold?: Component<{
|
|
221
|
+
node: BoldNode;
|
|
222
|
+
}>;
|
|
223
|
+
Italic?: Component<{
|
|
224
|
+
node: ItalicNode;
|
|
225
|
+
}>;
|
|
226
|
+
Link?: Component<{
|
|
227
|
+
node: LinkNode;
|
|
228
|
+
}>;
|
|
229
|
+
}
|
|
230
|
+
//#endregion
|
|
231
|
+
//#region src/components/CookiePolicy.d.ts
|
|
232
|
+
declare const CookiePolicy: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
233
|
+
config: {
|
|
234
|
+
type: PropType<OpenPolicyConfig | CookiePolicyConfig>;
|
|
235
|
+
required: false;
|
|
236
|
+
};
|
|
237
|
+
components: {
|
|
238
|
+
type: PropType<PolicyComponents>;
|
|
239
|
+
required: false;
|
|
240
|
+
};
|
|
241
|
+
style: {
|
|
242
|
+
type: PropType<CSSProperties>;
|
|
243
|
+
required: false;
|
|
244
|
+
};
|
|
245
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
246
|
+
[key: string]: any;
|
|
247
|
+
}> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
248
|
+
config: {
|
|
249
|
+
type: PropType<OpenPolicyConfig | CookiePolicyConfig>;
|
|
250
|
+
required: false;
|
|
251
|
+
};
|
|
252
|
+
components: {
|
|
253
|
+
type: PropType<PolicyComponents>;
|
|
254
|
+
required: false;
|
|
255
|
+
};
|
|
256
|
+
style: {
|
|
257
|
+
type: PropType<CSSProperties>;
|
|
258
|
+
required: false;
|
|
259
|
+
};
|
|
260
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
261
|
+
//#endregion
|
|
262
|
+
//#region src/components/defaults.d.ts
|
|
263
|
+
declare function DefaultHeading({
|
|
264
|
+
node
|
|
265
|
+
}: {
|
|
266
|
+
node: HeadingNode;
|
|
267
|
+
}): vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
268
|
+
[key: string]: any;
|
|
269
|
+
}>;
|
|
270
|
+
declare function DefaultText({
|
|
271
|
+
node
|
|
272
|
+
}: {
|
|
273
|
+
node: TextNode;
|
|
274
|
+
}): string;
|
|
275
|
+
declare function DefaultBold({
|
|
276
|
+
node
|
|
277
|
+
}: {
|
|
278
|
+
node: BoldNode;
|
|
279
|
+
}): vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
280
|
+
[key: string]: any;
|
|
281
|
+
}>;
|
|
282
|
+
declare function DefaultLink({
|
|
283
|
+
node
|
|
284
|
+
}: {
|
|
285
|
+
node: LinkNode;
|
|
286
|
+
}): vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
287
|
+
[key: string]: any;
|
|
288
|
+
}>;
|
|
289
|
+
declare function DefaultSection({
|
|
290
|
+
section,
|
|
291
|
+
children
|
|
292
|
+
}: {
|
|
293
|
+
section: DocumentSection;
|
|
294
|
+
children?: VNodeChild;
|
|
295
|
+
}): vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
296
|
+
[key: string]: any;
|
|
297
|
+
}>;
|
|
298
|
+
declare function DefaultParagraph({
|
|
299
|
+
children
|
|
300
|
+
}: {
|
|
301
|
+
node: ParagraphNode;
|
|
302
|
+
children?: VNodeChild;
|
|
303
|
+
}): vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
304
|
+
[key: string]: any;
|
|
305
|
+
}>;
|
|
306
|
+
declare function DefaultList({
|
|
307
|
+
node,
|
|
308
|
+
children
|
|
309
|
+
}: {
|
|
310
|
+
node: ListNode;
|
|
311
|
+
children?: VNodeChild;
|
|
312
|
+
}): vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
313
|
+
[key: string]: any;
|
|
314
|
+
}>;
|
|
315
|
+
declare function renderNode(node: Node, components: PolicyComponents, key?: number): VNodeChild;
|
|
316
|
+
//#endregion
|
|
317
|
+
//#region src/components/PrivacyPolicy.d.ts
|
|
318
|
+
declare const PrivacyPolicy: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
319
|
+
config: {
|
|
320
|
+
type: PropType<OpenPolicyConfig | PrivacyPolicyConfig>;
|
|
321
|
+
required: false;
|
|
322
|
+
};
|
|
323
|
+
components: {
|
|
324
|
+
type: PropType<PolicyComponents>;
|
|
325
|
+
required: false;
|
|
326
|
+
};
|
|
327
|
+
style: {
|
|
328
|
+
type: PropType<CSSProperties>;
|
|
329
|
+
required: false;
|
|
330
|
+
};
|
|
331
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
332
|
+
[key: string]: any;
|
|
333
|
+
}> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
334
|
+
config: {
|
|
335
|
+
type: PropType<OpenPolicyConfig | PrivacyPolicyConfig>;
|
|
336
|
+
required: false;
|
|
337
|
+
};
|
|
338
|
+
components: {
|
|
339
|
+
type: PropType<PolicyComponents>;
|
|
340
|
+
required: false;
|
|
341
|
+
};
|
|
342
|
+
style: {
|
|
343
|
+
type: PropType<CSSProperties>;
|
|
344
|
+
required: false;
|
|
345
|
+
};
|
|
346
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
347
|
+
//#endregion
|
|
348
|
+
//#region src/components/TermsOfService.d.ts
|
|
349
|
+
declare const TermsOfService: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
350
|
+
config: {
|
|
351
|
+
type: PropType<OpenPolicyConfig | TermsOfServiceConfig>;
|
|
352
|
+
required: false;
|
|
353
|
+
};
|
|
354
|
+
components: {
|
|
355
|
+
type: PropType<PolicyComponents>;
|
|
356
|
+
required: false;
|
|
357
|
+
};
|
|
358
|
+
style: {
|
|
359
|
+
type: PropType<CSSProperties>;
|
|
360
|
+
required: false;
|
|
361
|
+
};
|
|
362
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
363
|
+
[key: string]: any;
|
|
364
|
+
}> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
365
|
+
config: {
|
|
366
|
+
type: PropType<OpenPolicyConfig | TermsOfServiceConfig>;
|
|
367
|
+
required: false;
|
|
368
|
+
};
|
|
369
|
+
components: {
|
|
370
|
+
type: PropType<PolicyComponents>;
|
|
371
|
+
required: false;
|
|
372
|
+
};
|
|
373
|
+
style: {
|
|
374
|
+
type: PropType<CSSProperties>;
|
|
375
|
+
required: false;
|
|
376
|
+
};
|
|
377
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
378
|
+
//#endregion
|
|
379
|
+
//#region src/context.d.ts
|
|
380
|
+
declare const OpenPolicyProvider: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
381
|
+
config: {
|
|
382
|
+
type: PropType<OpenPolicyConfig>;
|
|
383
|
+
required: true;
|
|
384
|
+
};
|
|
385
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
386
|
+
[key: string]: any;
|
|
387
|
+
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
388
|
+
config: {
|
|
389
|
+
type: PropType<OpenPolicyConfig>;
|
|
390
|
+
required: true;
|
|
391
|
+
};
|
|
392
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
393
|
+
//#endregion
|
|
394
|
+
//#region src/render.d.ts
|
|
395
|
+
declare function renderDocument(doc: Document, components?: PolicyComponents): VNodeChild;
|
|
396
|
+
//#endregion
|
|
397
|
+
//#region src/styles.d.ts
|
|
398
|
+
declare const defaultStyles = "\n.op-policy {\n --op-font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n --op-font-size-body: 1rem;\n --op-font-size-heading: 1.125rem;\n --op-font-weight-heading: 600;\n --op-line-height: 1.7;\n --op-body-color: #374151;\n --op-heading-color: #111827;\n --op-link-color: #2563eb;\n --op-link-color-hover: #1d4ed8;\n --op-section-gap: 2rem;\n --op-border-color: #e5e7eb;\n --op-border-radius: 0.375rem;\n\n font-family: var(--op-font-family);\n font-size: var(--op-font-size-body);\n color: var(--op-body-color);\n line-height: var(--op-line-height);\n max-width: 65ch;\n}\n\n.op-section {\n margin-bottom: var(--op-section-gap);\n padding-bottom: var(--op-section-gap);\n border-bottom: 1px solid var(--op-border-color);\n}\n.op-section:last-child {\n border-bottom: none;\n margin-bottom: 0;\n padding-bottom: 0;\n}\n\n.op-heading {\n font-size: var(--op-font-size-heading);\n font-weight: var(--op-font-weight-heading);\n color: var(--op-heading-color);\n line-height: 1.3;\n margin: 0 0 0.75rem;\n}\n\n.op-paragraph {\n margin: 0 0 0.75rem;\n}\n.op-paragraph:last-child { margin-bottom: 0; }\n\n.op-list {\n margin: 0 0 0.75rem;\n padding-left: 1.5rem;\n list-style-type: disc;\n}\n.op-list:last-child { margin-bottom: 0; }\n.op-list .op-list {\n margin-top: 0.375rem;\n margin-bottom: 0;\n list-style-type: circle;\n}\n\n.op-list-item {\n margin-bottom: 0.375rem;\n}\n.op-list-item:last-child { margin-bottom: 0; }\n\n.op-bold {\n font-weight: 600;\n color: var(--op-heading-color);\n}\n\n.op-link {\n color: var(--op-link-color);\n text-decoration: underline;\n text-underline-offset: 2px;\n transition: color 0.15s ease;\n}\n.op-link:hover { color: var(--op-link-color-hover); }\n";
|
|
399
|
+
//#endregion
|
|
400
|
+
export { CookiePolicy, DefaultBold, DefaultHeading, DefaultLink, DefaultList, DefaultParagraph, DefaultSection, DefaultText, OpenPolicyProvider as OpenPolicy, type PolicyComponents, type PolicyTheme, PrivacyPolicy, TermsOfService, defaultStyles, renderDocument, renderNode };
|
|
401
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["OutputFormat","CompileOptions","formats","Jurisdiction","CompanyConfig","name","legalName","address","contact","PrivacyPolicyConfig","Record","effectiveDate","company","dataCollected","legalBasis","retention","cookies","essential","analytics","marketing","thirdParties","purpose","userRights","jurisdictions","children","underAge","noticeUrl","DisputeResolutionMethod","TermsOfServiceConfig","acceptance","methods","eligibility","minimumAge","jurisdictionRestrictions","accounts","registrationRequired","userResponsibleForCredentials","companyCanTerminate","prohibitedUses","userContent","usersOwnContent","licenseGrantedToCompany","licenseDescription","companyCanRemoveContent","intellectualProperty","companyOwnsService","usersMayNotCopy","payments","hasPaidFeatures","refundPolicy","priceChangesNotice","availability","noUptimeGuarantee","maintenanceWindows","termination","userCanTerminate","effectOfTermination","disclaimers","serviceProvidedAsIs","noWarranties","limitationOfLiability","excludesIndirectDamages","liabilityCap","indemnification","userIndemnifiesCompany","scope","thirdPartyServices","disputeResolution","method","venue","classActionWaiver","governingLaw","jurisdiction","changesPolicy","noticeMethod","noticePeriodDays","privacyPolicyUrl","CookiePolicyConfig","functional","policyUrl","trackingTechnologies","consentMechanism","hasBanner","hasPreferencePanel","canWithdraw","PolicyInput","type","OpenPolicyConfig","Omit","privacy","terms","cookie","isOpenPolicyConfig","value","ValidationIssue","level","message","NodeContext","reason","TextNode","context","BoldNode","ItalicNode","LinkNode","href","InlineNode","HeadingNode","ParagraphNode","ListItemNode","ListNode","ordered","items","ContentNode","DocumentSection","id","content","PolicyType","Document","policyType","sections","Node","heading","levelOrContext","text","bold","italic","link","p","li","ul","ol","section","compile","input","validatePrivacyPolicy","config","validateCookiePolicy","validateTermsOfService","expandOpenPolicyConfig"],"sources":["../../core/dist/index.d.ts","../src/types.ts","../src/components/CookiePolicy.ts","../src/components/defaults.ts","../src/components/PrivacyPolicy.ts","../src/components/TermsOfService.ts","../src/context.ts","../src/render.ts","../src/styles.ts"],"mappings":";;;;KAKKG,YAAAA;AAAAA,KACAC,aAAAA;EACHC,IAAAA;EACAC,SAAAA;EACAC,OAAAA;EACAC,OAAAA;AAAAA;AAAAA,KAEGC,mBAAAA;EACHE,aAAAA;EACAC,OAAAA,EAASR,aAAAA;EACTS,aAAAA,EAAeH,MAAAA;EACfI,UAAAA;EACAC,SAAAA,EAAWL,MAAAA;EACXM,OAAAA;IACEC,SAAAA;IACAC,SAAAA;IACAC,SAAAA;EAAAA;EAEFC,YAAAA;IACEf,IAAAA;IACAgB,OAAAA;EAAAA;EAEFC,UAAAA;EACAC,aAAAA,EAAepB,YAAAA;EACfqB,QAAAA;IACEC,QAAAA;IACAC,SAAAA;EAAAA;AAAAA;AAAAA,KAGCC,uBAAAA;AAAAA,KACAC,oBAAAA;EACHjB,aAAAA;EACAC,OAAAA,EAASR,aAAAA;EACTyB,UAAAA;IACEC,OAAAA;EAAAA;EAEFC,WAAAA;IACEC,UAAAA;IACAC,wBAAAA;EAAAA;EAEFC,QAAAA;IACEC,oBAAAA;IACAC,6BAAAA;IACAC,mBAAAA;EAAAA;EAEFC,cAAAA;EACAC,WAAAA;IACEC,eAAAA;IACAC,uBAAAA;IACAC,kBAAAA;IACAC,uBAAAA;EAAAA;EAEFC,oBAAAA;IACEC,kBAAAA;IACAC,eAAAA;EAAAA;EAEFC,QAAAA;IACEC,eAAAA;IACAC,YAAAA;IACAC,kBAAAA;EAAAA;EAEFC,YAAAA;IACEC,iBAAAA;IACAC,kBAAAA;EAAAA;EAEFC,WAAAA;IACEjB,mBAAAA;IACAkB,gBAAAA;IACAC,mBAAAA;EAAAA;EAEFC,WAAAA;IACEC,mBAAAA;IACAC,YAAAA;EAAAA;EAEFC,qBAAAA;IACEC,uBAAAA;IACAC,YAAAA;EAAAA;EAEFC,eAAAA;IACEC,sBAAAA;IACAC,KAAAA;EAAAA;EAEFC,kBAAAA;IACE7D,IAAAA;IACAgB,OAAAA;EAAAA;EAEF8C,iBAAAA;IACEC,MAAAA,EAAQzC,uBAAAA;IACR0C,KAAAA;IACAC,iBAAAA;EAAAA;EAEFC,YAAAA;IACEC,YAAAA;EAAAA;EAEFC,aAAAA;IACEC,YAAAA;IACAC,gBAAAA;EAAAA;EAEFC,gBAAAA;AAAAA;AAAAA,KAEGC,kBAAAA;EACHlE,aAAAA;EACAC,OAAAA,EAASR,aAAAA;EACTY,OAAAA;IACEC,SAAAA;IACAC,SAAAA;IACA4D,UAAAA;IACA3D,SAAAA;EAAAA;EAEFC,YAAAA;IACEf,IAAAA;IACAgB,OAAAA;IACA0D,SAAAA;EAAAA;EAEFC,oBAAAA;EACAC,gBAAAA;IACEC,SAAAA;IACAC,kBAAAA;IACAC,WAAAA;EAAAA;EAEF7D,aAAAA,EAAepB,YAAAA;AAAAA;AAAAA,KASZoF,gBAAAA;EACH3E,OAAAA,EAASR,aAAAA;EACTqF,OAAAA,GAAUD,IAAAA,CAAK/E,mBAAAA;EACfiF,KAAAA,GAAQF,IAAAA,CAAK5D,oBAAAA;EACb+D,MAAAA,GAASH,IAAAA,CAAKX,kBAAAA;AAAAA;AAAAA;AAAAA;AAAAA,KASXoB,WAAAA;EACHC,MAAAA;AAAAA;AAAAA,KAEGC,QAAAA;EACHb,IAAAA;EACAO,KAAAA;EACAO,OAAAA,GAAUH,WAAAA;AAAAA;AAAAA,KAEPI,QAAAA;EACHf,IAAAA;EACAO,KAAAA;EACAO,OAAAA,GAAUH,WAAAA;AAAAA;AAAAA,KAEPK,UAAAA;EACHhB,IAAAA;EACAO,KAAAA;EACAO,OAAAA,GAAUH,WAAAA;AAAAA;AAAAA,KAEPM,QAAAA;EACHjB,IAAAA;EACAkB,IAAAA;EACAX,KAAAA;EACAO,OAAAA,GAAUH,WAAAA;AAAAA;AAAAA,KAEPQ,UAAAA,GAAaN,QAAAA,GAAWE,QAAAA,GAAWC,UAAAA,GAAaC,QAAAA;AAAAA,KAChDG,WAAAA;EACHpB,IAAAA;EACAS,KAAAA;EACAF,KAAAA;EACAO,OAAAA,GAAUH,WAAAA;AAAAA;AAAAA,KAEPU,aAAAA;EACHrB,IAAAA;EACA9D,QAAAA,EAAUiF,UAAAA;EACVL,OAAAA,GAAUH,WAAAA;AAAAA;AAAAA,KAEPW,YAAAA;EACHtB,IAAAA;EACA9D,QAAAA,GAAWiF,UAAAA,GAAaI,QAAAA;EACxBT,OAAAA,GAAUH,WAAAA;AAAAA;AAAAA,KAEPY,QAAAA;EACHvB,IAAAA;EACAwB,OAAAA;EACAC,KAAAA,EAAOH,YAAAA;EACPR,OAAAA,GAAUH,WAAAA;AAAAA;AAAAA,KAEPe,WAAAA,GAAcN,WAAAA,GAAcC,aAAAA,GAAgBE,QAAAA;AAAAA,KAC5CI,eAAAA;EACH3B,IAAAA;EACA4B,EAAAA;EACAC,OAAAA,EAASH,WAAAA;EACTZ,OAAAA,GAAUH,WAAAA;AAAAA;AAAAA,KAEPmB,UAAAA;AAAAA,KACAC,QAAAA;EACH/B,IAAAA;EACAgC,UAAAA,EAAYF,UAAAA;EACZG,QAAAA,EAAUN,eAAAA;EACVb,OAAAA,GAAUH,WAAAA;AAAAA;AAAAA,KAEPuB,IAAAA,GAAOH,QAAAA,GAAWJ,eAAAA,GAAkBD,WAAAA,GAAcJ,YAAAA,GAAeH,UAAAA;AAAAA;;;KCpM1D,WAAA,GAAc,OAAA,CACzB,MAAA;AAAA,UAiBgB,gBAAA;EAChB,OAAA,GAAU,SAAA;IAAY,OAAA,EAAS,eAAA;IAAiB,QAAA,GAAW,UAAA;EAAA;EAC3D,OAAA,GAAU,SAAA;IAAY,IAAA,EAAM,WAAA;EAAA;EAC5B,SAAA,GAAY,SAAA;IAAY,IAAA,EAAM,aAAA;IAAe,QAAA,GAAW,UAAA;EAAA;EACxD,IAAA,GAAO,SAAA;IAAY,IAAA,EAAM,QAAA;IAAU,QAAA,GAAW,UAAA;EAAA;EAC9C,IAAA,GAAO,SAAA;IAAY,IAAA,EAAM,QAAA;EAAA;EACzB,IAAA,GAAO,SAAA;IAAY,IAAA,EAAM,QAAA;EAAA;EACzB,MAAA,GAAS,SAAA;IAAY,IAAA,EAAM,UAAA;EAAA;EAC3B,IAAA,GAAO,SAAA;IAAY,IAAA,EAAM,QAAA;EAAA;AAAA;;;cC1Bb,YAAA,MAAY,eAAA,CAYE,GAAA,CAZF,gBAAA;;UAIN,QAAA,CAAS,gBAAA,GAAmB,kBAAA;;;;UAI5B,QAAA,CAAS,gBAAA;;;;UAIT,QAAA,CAAS,aAAA;;;oBAZH,GAAA,CAAA,YAAA;;mHAYE,GAAA,CAAA,gBAAA;;UARR,QAAA,CAAS,gBAAA,GAAmB,kBAAA;;;;UAI5B,QAAA,CAAS,gBAAA;;;;UAIT,QAAA,CAAS,aAAA;;;;;;iBCXZ,cAAA,CAAA;EAAiB;AAAA;EAAU,IAAA,EAAM,WAAA;AAAA,IAAa,GAAA,CAAA,KAAA,CAAF,GAAA,CAAE,YAAA,EAAA,GAAA,CAAA,eAAA;EAAA;;iBAM9C,WAAA,CAAA;EAAc;AAAA;EAAU,IAAA,EAAM,QAAA;AAAA;AAAA,iBAI9B,WAAA,CAAA;EAAc;AAAA;EAAU,IAAA,EAAM,QAAA;AAAA,IAAU,GAAA,CAAA,KAAA,CAAF,GAAA,CAAE,YAAA,EAAA,GAAA,CAAA,eAAA;EAAA;;iBAQxC,WAAA,CAAA;EAAc;AAAA;EAAU,IAAA,EAAM,QAAA;AAAA,IAAU,GAAA,CAAA,KAAA,CAAF,GAAA,CAAE,YAAA,EAAA,GAAA,CAAA,eAAA;EAAA;;iBAIxC,cAAA,CAAA;EACf,OAAA;EACA;AAAA;EAEA,OAAA,EAAS,eAAA;EACT,QAAA,GAAW,UAAA;AAAA,IACX,GAAA,CAAA,KAAA,CADqB,GAAA,CACrB,YAAA,EAAA,GAAA,CAAA,eAAA;EAAA;;iBAee,gBAAA,CAAA;EACf;AAAA;EAEA,IAAA,EAFQ,aAAA;EAGR,QAAA,GAAW,UAAA;AAAA,IACX,GAAA,CAAA,KAAA,CADqB,GAAA,CACrB,YAAA,EAAA,GAAA,CAAA,eAAA;EAAA;;iBAQe,WAAA,CAAA;EACf,IAAA;EACA;AAAA;EAEA,IAAA,EAAM,QAAA;EACN,QAAA,GAAW,UAAA;AAAA,IACX,GAAA,CAAA,KAAA,CADqB,GAAA,CACrB,YAAA,EAAA,GAAA,CAAA,eAAA;EAAA;;iBAKe,UAAA,CACf,IAAA,EAAM,IAAA,EACN,UAAA,EAAY,gBAAA,EACZ,GAAA,YACE,UAAA;;;cCxEU,aAAA,MAAa,eAAA,CAYC,GAAA,CAZD,gBAAA;;UAIP,QAAA,CAAS,gBAAA,GAAmB,mBAAA;;;;UAI5B,QAAA,CAAS,gBAAA;;;;UAIT,QAAA,CAAS,aAAA;;;oBAZF,GAAA,CAAA,YAAA;;mHAYC,GAAA,CAAA,gBAAA;;UARR,QAAA,CAAS,gBAAA,GAAmB,mBAAA;;;;UAI5B,QAAA,CAAS,gBAAA;;;;UAIT,QAAA,CAAS,aAAA;;;;;;cCZf,cAAA,MAAc,eAAA,CAYA,GAAA,CAZA,gBAAA;;UAIR,QAAA,CAAS,gBAAA,GAAmB,oBAAA;;;;UAI5B,QAAA,CAAS,gBAAA;;;;UAIT,QAAA,CAAS,aAAA;;;oBAZD,GAAA,CAAA,YAAA;;mHAYA,GAAA,CAAA,gBAAA;;UARR,QAAA,CAAS,gBAAA,GAAmB,oBAAA;;;;UAI5B,QAAA,CAAS,gBAAA;;;;UAIT,QAAA,CAAS,aAAA;;;;;;cCJf,kBAAA,MAAkB,eAAA,CAIJ,GAAA,CAJI,gBAAA;;UAIZ,QAAA,CAAS,gBAAA;;;oBAJG,GAAA,CAAA,YAAA;;4GAIJ,GAAA,CAAA,gBAAA;;UAAR,QAAA,CAAS,gBAAA;;;;;;iBCnBZ,cAAA,CACf,GAAA,EAAK,QAAA,EACL,UAAA,GAAY,gBAAA,GACV,UAAA;;;cCRU,aAAA"}
|