@elevasis/ui 2.6.0 → 2.8.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 (50) hide show
  1. package/dist/{chunk-POFDRPDI.js → chunk-4PHPENKX.js} +3044 -1753
  2. package/dist/chunk-7M2VOCYN.js +1 -0
  3. package/dist/{chunk-PEDPD3PU.js → chunk-7PDDPNQS.js} +1 -1
  4. package/dist/{chunk-YIWLA2B6.js → chunk-C2OFFC7J.js} +0 -1
  5. package/dist/{chunk-ZB5PKIX5.js → chunk-CTWYIRKW.js} +1 -2
  6. package/dist/{chunk-FH5QGCXL.js → chunk-F5QSLYUB.js} +180 -7
  7. package/dist/{chunk-CC4WGHGG.js → chunk-KGEYEUR5.js} +1 -3
  8. package/dist/{chunk-MU5EZV3L.js → chunk-MGEC63TE.js} +5 -6
  9. package/dist/{chunk-SMJLS23U.js → chunk-NYMKWGKN.js} +18 -1
  10. package/dist/{chunk-X4BLH3JL.js → chunk-OFT2QK6B.js} +6 -7
  11. package/dist/{chunk-O4PMRC6J.js → chunk-OPT74SGF.js} +118 -111
  12. package/dist/{chunk-6RGNVHG3.js → chunk-UX3Q4YYN.js} +21 -13
  13. package/dist/{chunk-4GZ6VZWO.js → chunk-YCHZ4U5V.js} +10 -2
  14. package/dist/{chunk-PHRDZFJT.js → chunk-ZZ35VSNF.js} +1 -3
  15. package/dist/components/index.d.ts +134 -68
  16. package/dist/components/index.js +34 -25
  17. package/dist/features/auth/index.d.ts +3 -3
  18. package/dist/features/auth/index.js +9 -2
  19. package/dist/features/crm/index.d.ts +61 -5
  20. package/dist/features/crm/index.js +5 -5
  21. package/dist/features/dashboard/index.js +5 -5
  22. package/dist/features/delivery/index.d.ts +64 -4
  23. package/dist/features/delivery/index.js +5 -5
  24. package/dist/features/lead-gen/index.d.ts +61 -5
  25. package/dist/features/lead-gen/index.js +8 -8
  26. package/dist/features/monitoring/index.d.ts +20 -1
  27. package/dist/features/monitoring/index.js +6 -6
  28. package/dist/features/operations/index.d.ts +20 -1
  29. package/dist/features/operations/index.js +7 -7
  30. package/dist/features/seo/index.d.ts +20 -1
  31. package/dist/features/seo/index.js +1 -1
  32. package/dist/features/settings/index.d.ts +22 -2
  33. package/dist/features/settings/index.js +5 -5
  34. package/dist/hooks/index.d.ts +7735 -7719
  35. package/dist/hooks/index.js +4 -4
  36. package/dist/hooks/published.d.ts +3495 -48
  37. package/dist/hooks/published.js +3 -3
  38. package/dist/index.d.ts +1188 -989
  39. package/dist/index.js +4 -4
  40. package/dist/initialization/index.d.ts +2 -1
  41. package/dist/layout/index.d.ts +60 -2
  42. package/dist/layout/index.js +1 -1
  43. package/dist/organization/index.d.ts +2 -1
  44. package/dist/provider/index.d.ts +203 -20
  45. package/dist/provider/index.js +2 -2
  46. package/dist/provider/published.d.ts +194 -19
  47. package/dist/provider/published.js +1 -1
  48. package/dist/types/index.d.ts +2 -1
  49. package/package.json +58 -86
  50. package/dist/chunk-DQJM7T2N.js +0 -1303
@@ -310,16 +310,179 @@ declare const SurfaceDefinitionSchema = z.object({
310
310
  parentId: ModelIdSchema.optional()
311
311
  })
312
312
 
313
- declare const OrganizationModelSchema = z.object({
314
- version: z.literal(1).default(1),
315
- domains: z.array(SemanticDomainSchema).default([]),
316
- branding: OrganizationModelBrandingSchema,
317
- features: OrganizationModelFeaturesSchema,
318
- navigation: OrganizationModelNavigationSchema,
319
- crm: OrganizationModelCrmSchema,
320
- leadGen: OrganizationModelLeadGenSchema,
321
- delivery: OrganizationModelDeliverySchema,
322
- resourceMappings: z.array(ResourceMappingSchema).default([])
313
+ declare const OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ctx) => {
314
+ const domainsById = collectIds(model.domains, ctx, ['domains'], 'Domain')
315
+ const surfacesById = collectIds(model.navigation.surfaces, ctx, ['navigation', 'surfaces'], 'Surface')
316
+ collectIds(model.navigation.groups, ctx, ['navigation', 'groups'], 'Navigation group')
317
+ collectIds(model.resourceMappings, ctx, ['resourceMappings'], 'Resource mapping')
318
+
319
+ const resourceMappingsByResourceId = new Map<string, (typeof model.resourceMappings)[number]>()
320
+ model.resourceMappings.forEach((resourceMapping, index) => {
321
+ if (resourceMappingsByResourceId.has(resourceMapping.resourceId)) {
322
+ addIssue(
323
+ ctx,
324
+ ['resourceMappings', index, 'resourceId'],
325
+ `Resource mapping resourceId "${resourceMapping.resourceId}" must be unique`
326
+ )
327
+ return
328
+ }
329
+
330
+ resourceMappingsByResourceId.set(resourceMapping.resourceId, resourceMapping)
331
+ })
332
+
333
+ if (model.navigation.defaultSurfaceId && !surfacesById.has(model.navigation.defaultSurfaceId)) {
334
+ addIssue(
335
+ ctx,
336
+ ['navigation', 'defaultSurfaceId'],
337
+ `Default surface "${model.navigation.defaultSurfaceId}" must reference a declared navigation surface`
338
+ )
339
+ }
340
+
341
+ model.navigation.groups.forEach((group, groupIndex) => {
342
+ group.surfaceIds.forEach((surfaceId, surfaceIndex) => {
343
+ if (!surfacesById.has(surfaceId)) {
344
+ addIssue(
345
+ ctx,
346
+ ['navigation', 'groups', groupIndex, 'surfaceIds', surfaceIndex],
347
+ `Navigation group "${group.id}" references unknown surface "${surfaceId}"`
348
+ )
349
+ }
350
+ })
351
+ })
352
+
353
+ model.domains.forEach((domain, domainIndex) => {
354
+ domain.surfaceIds.forEach((surfaceId, surfaceIndex) => {
355
+ const surface = surfacesById.get(surfaceId)
356
+ if (!surface) {
357
+ addIssue(
358
+ ctx,
359
+ ['domains', domainIndex, 'surfaceIds', surfaceIndex],
360
+ `Domain "${domain.id}" references unknown surface "${surfaceId}"`
361
+ )
362
+ return
363
+ }
364
+
365
+ if (!surface.domainIds.includes(domain.id)) {
366
+ addIssue(
367
+ ctx,
368
+ ['domains', domainIndex, 'surfaceIds', surfaceIndex],
369
+ `Domain "${domain.id}" references surface "${surfaceId}" but that surface does not include domain "${domain.id}"`
370
+ )
371
+ }
372
+ })
373
+
374
+ domain.resourceIds.forEach((resourceId, resourceIndex) => {
375
+ const resourceMapping = resourceMappingsByResourceId.get(resourceId)
376
+ if (!resourceMapping) {
377
+ addIssue(
378
+ ctx,
379
+ ['domains', domainIndex, 'resourceIds', resourceIndex],
380
+ `Domain "${domain.id}" references unknown resource "${resourceId}"`
381
+ )
382
+ return
383
+ }
384
+
385
+ if (!resourceMapping.domainIds.includes(domain.id)) {
386
+ addIssue(
387
+ ctx,
388
+ ['domains', domainIndex, 'resourceIds', resourceIndex],
389
+ `Domain "${domain.id}" references resource "${resourceId}" but that resource mapping does not include domain "${domain.id}"`
390
+ )
391
+ }
392
+ })
393
+ })
394
+
395
+ model.navigation.surfaces.forEach((surface, surfaceIndex) => {
396
+ if (surface.parentId && !surfacesById.has(surface.parentId)) {
397
+ addIssue(
398
+ ctx,
399
+ ['navigation', 'surfaces', surfaceIndex, 'parentId'],
400
+ `Surface "${surface.id}" references unknown parent surface "${surface.parentId}"`
401
+ )
402
+ }
403
+
404
+ surface.domainIds.forEach((domainId, domainIndex) => {
405
+ const domain = domainsById.get(domainId)
406
+ if (!domain) {
407
+ addIssue(
408
+ ctx,
409
+ ['navigation', 'surfaces', surfaceIndex, 'domainIds', domainIndex],
410
+ `Surface "${surface.id}" references unknown domain "${domainId}"`
411
+ )
412
+ return
413
+ }
414
+
415
+ if (!domain.surfaceIds.includes(surface.id)) {
416
+ addIssue(
417
+ ctx,
418
+ ['navigation', 'surfaces', surfaceIndex, 'domainIds', domainIndex],
419
+ `Surface "${surface.id}" references domain "${domainId}" but that domain does not include surface "${surface.id}"`
420
+ )
421
+ }
422
+ })
423
+
424
+ surface.resourceIds.forEach((resourceId, resourceIndex) => {
425
+ const resourceMapping = resourceMappingsByResourceId.get(resourceId)
426
+ if (!resourceMapping) {
427
+ addIssue(
428
+ ctx,
429
+ ['navigation', 'surfaces', surfaceIndex, 'resourceIds', resourceIndex],
430
+ `Surface "${surface.id}" references unknown resource "${resourceId}"`
431
+ )
432
+ return
433
+ }
434
+
435
+ if (!resourceMapping.surfaceIds.includes(surface.id)) {
436
+ addIssue(
437
+ ctx,
438
+ ['navigation', 'surfaces', surfaceIndex, 'resourceIds', resourceIndex],
439
+ `Surface "${surface.id}" references resource "${resourceId}" but that resource mapping does not include surface "${surface.id}"`
440
+ )
441
+ }
442
+ })
443
+ })
444
+
445
+ model.resourceMappings.forEach((resourceMapping, resourceIndex) => {
446
+ resourceMapping.domainIds.forEach((domainId, domainIndex) => {
447
+ const domain = domainsById.get(domainId)
448
+ if (!domain) {
449
+ addIssue(
450
+ ctx,
451
+ ['resourceMappings', resourceIndex, 'domainIds', domainIndex],
452
+ `Resource mapping "${resourceMapping.id}" references unknown domain "${domainId}"`
453
+ )
454
+ return
455
+ }
456
+
457
+ if (!domain.resourceIds.includes(resourceMapping.resourceId)) {
458
+ addIssue(
459
+ ctx,
460
+ ['resourceMappings', resourceIndex, 'domainIds', domainIndex],
461
+ `Resource mapping "${resourceMapping.id}" references domain "${domainId}" but that domain does not include resource "${resourceMapping.resourceId}"`
462
+ )
463
+ }
464
+ })
465
+
466
+ resourceMapping.surfaceIds.forEach((surfaceId, surfaceIndex) => {
467
+ const surface = surfacesById.get(surfaceId)
468
+ if (!surface) {
469
+ addIssue(
470
+ ctx,
471
+ ['resourceMappings', resourceIndex, 'surfaceIds', surfaceIndex],
472
+ `Resource mapping "${resourceMapping.id}" references unknown surface "${surfaceId}"`
473
+ )
474
+ return
475
+ }
476
+
477
+ if (!surface.resourceIds.includes(resourceMapping.resourceId)) {
478
+ addIssue(
479
+ ctx,
480
+ ['resourceMappings', resourceIndex, 'surfaceIds', surfaceIndex],
481
+ `Resource mapping "${resourceMapping.id}" references surface "${surfaceId}" but that surface does not include resource "${resourceMapping.resourceId}"`
482
+ )
483
+ }
484
+ })
485
+ })
323
486
  })
324
487
 
325
488
  type OrganizationModel = z.infer<typeof OrganizationModelSchema>
@@ -374,20 +537,37 @@ interface FeatureNavEntry {
374
537
  }
375
538
  type FeatureSidebarComponent = ComponentType;
376
539
  interface FeatureModule {
540
+ /** Unique stable identifier for this feature (e.g. `'crm'`, `'delivery'`). */
377
541
  key: string;
378
- label?: string;
542
+ /** Feature key used for access-flag gating in the organization model. */
379
543
  accessFeatureKey: OrganizationModelFeatureKey;
544
+ /**
545
+ * Semantic domain identifiers contributed by this feature.
546
+ * Merged with surface-derived domain IDs during resolution.
547
+ */
380
548
  domainIds?: OrganizationModelSemanticDomain['id'][];
549
+ /**
550
+ * Capability identifiers contributed by this feature.
551
+ * Merged into `ResolvedFeatureSemantics.capabilityIds` at resolution time.
552
+ * Not queried at runtime — kept for semantic graph completeness so that
553
+ * capability membership is fully represented in the resolved model even when
554
+ * a surface does not declare it directly.
555
+ */
381
556
  capabilityIds?: string[];
557
+ /** Top-level navigation entry rendered in the app shell when this feature is enabled. */
382
558
  navEntry?: FeatureNavEntry;
559
+ /** Sidebar component rendered when a matching subshell route is active. */
383
560
  sidebar?: FeatureSidebarComponent;
561
+ /** Route path prefixes that activate this feature's sidebar and subshell context. */
384
562
  subshellRoutes?: string[];
563
+ /**
564
+ * Operations-only bridge surface connecting this feature to the organization graph.
565
+ * Ignored by all other features. Only one manifest in the registry should set this.
566
+ */
385
567
  organizationGraph?: OrganizationGraphFeatureBridge;
386
568
  }
387
- type ShellModuleDefinition = FeatureModule;
388
569
  interface ResolvedFeatureAccess {
389
570
  featureKey: string;
390
- label?: string;
391
571
  enabled: boolean;
392
572
  }
393
573
  interface ResolvedFeatureSemantics {
@@ -405,7 +585,6 @@ type ShellNavSource = 'app' | 'feature';
405
585
  interface ResolvedShellNavItem extends FeatureNavEntry {
406
586
  placement: ShellNavPlacement;
407
587
  source: ShellNavSource;
408
- shellModuleKey?: string;
409
588
  accessFeatureKey?: string;
410
589
  }
411
590
  interface ResolvedShellModel {
@@ -424,7 +603,6 @@ interface ResolvedShellRouteMatch {
424
603
  navLink?: FeatureNavLink;
425
604
  }
426
605
  interface ShellRuntime {
427
- shellModel: ResolvedShellModel;
428
606
  resolveRoute: (path: string) => ResolvedShellRouteMatch;
429
607
  }
430
608
  interface OrganizationGraphFeatureBridge {
@@ -437,9 +615,6 @@ interface OrganizationGraphContextValue {
437
615
  surfaceType?: OrganizationModelSurface['surfaceType'];
438
616
  featureKey?: OrganizationModelFeatureKey;
439
617
  }
440
- interface FeatureRegistry {
441
- features: FeatureModule[];
442
- }
443
618
  interface ElevasisFeaturesProviderProps {
444
619
  features: FeatureModule[];
445
620
  organizationModel?: OrganizationModel;
@@ -515,4 +690,4 @@ declare function useElevasisServices(): ElevasisServiceContextValue;
515
690
  declare function ElevasisServiceProvider({ apiRequest, organizationId, isReady, children }: ElevasisServiceProviderProps): react_jsx_runtime.JSX.Element;
516
691
 
517
692
  export { AppearanceProvider, ElevasisCoreProvider, ElevasisFeaturesProvider, ElevasisServiceProvider, FeatureShell, NotificationProvider, useAppearance, useElevasisFeatures, useElevasisServices, useNotificationAdapter, useOptionalElevasisFeatures };
518
- export type { ApiKeyConfig, AppShellOverrides, AppearanceConfig, AuthConfig, AuthKitConfig, ElevasisCoreProviderProps, ElevasisCoreThemeConfig, ElevasisFeaturesContextValue, ElevasisFeaturesProviderProps, ElevasisServiceContextValue, ElevasisServiceProviderProps, ElevasisTokenOverrides, FeatureModule, FeatureNavEntry, FeatureNavLink, FeatureRegistry, FeatureSidebarComponent, NotificationAdapter, OrganizationGraphContextValue, OrganizationGraphFeatureBridge, ResolvedFeatureAccess, ResolvedFeatureModule, ResolvedFeatureSemantics, ResolvedShellModel, ResolvedShellNavItem, ResolvedShellRouteMatch, ShellModuleDefinition, ShellNavPlacement, ShellNavSource, ShellRouteMatchStatus, ShellRuntime, WithSchemes };
693
+ export type { ApiKeyConfig, AppShellOverrides, AppearanceConfig, AuthConfig, AuthKitConfig, ElevasisCoreProviderProps, ElevasisCoreThemeConfig, ElevasisFeaturesContextValue, ElevasisFeaturesProviderProps, ElevasisServiceContextValue, ElevasisServiceProviderProps, ElevasisTokenOverrides, FeatureModule, FeatureNavEntry, FeatureNavLink, FeatureSidebarComponent, NotificationAdapter, OrganizationGraphContextValue, OrganizationGraphFeatureBridge, ResolvedFeatureAccess, ResolvedFeatureModule, ResolvedFeatureSemantics, ResolvedShellModel, ResolvedShellNavItem, ResolvedShellRouteMatch, ShellNavPlacement, ShellNavSource, ShellRouteMatchStatus, ShellRuntime, WithSchemes };
@@ -1,4 +1,4 @@
1
- export { ElevasisCoreProvider, ElevasisFeaturesProvider, FeatureShell, NotificationProvider, useElevasisFeatures, useNotificationAdapter, useOptionalElevasisFeatures } from '../chunk-O4PMRC6J.js';
1
+ export { ElevasisCoreProvider, ElevasisFeaturesProvider, FeatureShell, NotificationProvider, useElevasisFeatures, useNotificationAdapter, useOptionalElevasisFeatures } from '../chunk-OPT74SGF.js';
2
2
  import '../chunk-RX4UWZZR.js';
3
3
  import '../chunk-Y3D3WFJG.js';
4
4
  import '../chunk-3KMDHCAR.js';
@@ -3219,13 +3219,14 @@ interface SessionTokenUsage {
3219
3219
  /**
3220
3220
  * Per-user-per-org config (stored in org_memberships.config)
3221
3221
  * Controls which features a specific member can access within their org
3222
- * Valid feature keys: operations, monitoring, acquisition, calibration, seo
3222
+ * Valid feature keys: operations, monitoring, acquisition, delivery, calibration, seo
3223
3223
  */
3224
3224
  interface MembershipFeatureConfig {
3225
3225
  features?: {
3226
3226
  operations?: boolean;
3227
3227
  monitoring?: boolean;
3228
3228
  acquisition?: boolean;
3229
+ delivery?: boolean;
3229
3230
  calibration?: boolean;
3230
3231
  seo?: boolean;
3231
3232
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevasis/ui",
3
- "version": "2.6.0",
3
+ "version": "2.8.0",
4
4
  "description": "UI components and platform-aware hooks for building custom frontends on the Elevasis platform",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -144,103 +144,28 @@
144
144
  "import": "./dist/zustand/index.js"
145
145
  }
146
146
  },
147
- "publishConfig": {
148
- "name": "@elevasis/ui",
149
- "peerDependencies": {
150
- "react": "^19.2.0",
151
- "react-dom": "^19.2.0",
152
- "@tanstack/react-query": "^5.76.2",
153
- "@tanstack/react-router": "^1.131.28",
154
- "zod": "^4.1.0",
155
- "zustand": "^5.0.5",
156
- "cytoscape": "^3.33.1",
157
- "@mantine/core": "8.2.7",
158
- "@mantine/hooks": "8.2.7",
159
- "@mantine/charts": "8.2.7",
160
- "@mantine/notifications": "8.2.7",
161
- "@mantine/form": "8.2.7",
162
- "@mantine/tiptap": "8.2.7",
163
- "@tiptap/extension-link": "^2.11.7",
164
- "@tiptap/extension-placeholder": "^2.11.7",
165
- "@tiptap/react": "^2.11.7",
166
- "@tiptap/starter-kit": "^2.11.7",
167
- "@tabler/icons-react": "^3.27.0",
168
- "@xyflow/react": "^12.8.5",
169
- "recharts": "^3.2.1",
170
- "date-fns": "^4.1.0"
171
- },
172
- "peerDependenciesMeta": {
173
- "@mantine/core": {
174
- "optional": true
175
- },
176
- "@mantine/hooks": {
177
- "optional": true
178
- },
179
- "@mantine/charts": {
180
- "optional": true
181
- },
182
- "@mantine/notifications": {
183
- "optional": true
184
- },
185
- "@mantine/form": {
186
- "optional": true
187
- },
188
- "@tabler/icons-react": {
189
- "optional": true
190
- },
191
- "@xyflow/react": {
192
- "optional": true
193
- },
194
- "cytoscape": {
195
- "optional": true
196
- },
197
- "recharts": {
198
- "optional": true
199
- },
200
- "date-fns": {
201
- "optional": true
202
- },
203
- "@mantine/tiptap": {
204
- "optional": true
205
- },
206
- "@tiptap/extension-link": {
207
- "optional": true
208
- },
209
- "@tiptap/extension-placeholder": {
210
- "optional": true
211
- },
212
- "@tiptap/react": {
213
- "optional": true
214
- },
215
- "@tiptap/starter-kit": {
216
- "optional": true
217
- }
218
- }
219
- },
220
147
  "peerDependencies": {
221
- "@mantine/charts": "8.2.7",
148
+ "react": "^19.2.0",
149
+ "react-dom": "^19.2.0",
150
+ "@tanstack/react-query": "^5.76.2",
151
+ "@tanstack/react-router": "^1.131.28",
152
+ "zod": "^4.1.0",
153
+ "zustand": "^5.0.5",
154
+ "cytoscape": "^3.33.1",
222
155
  "@mantine/core": "8.2.7",
223
- "@mantine/form": "8.2.7",
224
156
  "@mantine/hooks": "8.2.7",
157
+ "@mantine/charts": "8.2.7",
225
158
  "@mantine/notifications": "8.2.7",
159
+ "@mantine/form": "8.2.7",
226
160
  "@mantine/tiptap": "8.2.7",
227
161
  "@tiptap/extension-link": "^2.11.7",
228
162
  "@tiptap/extension-placeholder": "^2.11.7",
229
163
  "@tiptap/react": "^2.11.7",
230
164
  "@tiptap/starter-kit": "^2.11.7",
231
- "@supabase/supabase-js": "^2.49.4",
232
165
  "@tabler/icons-react": "^3.27.0",
233
- "@tanstack/react-query": "^5.76.2",
234
- "@tanstack/react-router": "^1.131.28",
235
- "@workos-inc/authkit-react": "^0.11.0",
236
166
  "@xyflow/react": "^12.8.5",
237
- "cytoscape": "^3.33.1",
238
- "date-fns": "^4.1.0",
239
- "react": "^19.2.0",
240
- "react-dom": "^19.2.0",
241
167
  "recharts": "^3.2.1",
242
- "zod": "^4.1.0",
243
- "zustand": "^5.0.5"
168
+ "date-fns": "^4.1.0"
244
169
  },
245
170
  "devDependencies": {
246
171
  "@mantine/charts": "8.2.7",
@@ -270,6 +195,53 @@
270
195
  "@microsoft/fetch-event-source": "^2.0.1",
271
196
  "react-json-pretty": "^2.2.0"
272
197
  },
198
+ "peerDependenciesMeta": {
199
+ "@mantine/core": {
200
+ "optional": true
201
+ },
202
+ "@mantine/hooks": {
203
+ "optional": true
204
+ },
205
+ "@mantine/charts": {
206
+ "optional": true
207
+ },
208
+ "@mantine/notifications": {
209
+ "optional": true
210
+ },
211
+ "@mantine/form": {
212
+ "optional": true
213
+ },
214
+ "@tabler/icons-react": {
215
+ "optional": true
216
+ },
217
+ "@xyflow/react": {
218
+ "optional": true
219
+ },
220
+ "cytoscape": {
221
+ "optional": true
222
+ },
223
+ "recharts": {
224
+ "optional": true
225
+ },
226
+ "date-fns": {
227
+ "optional": true
228
+ },
229
+ "@mantine/tiptap": {
230
+ "optional": true
231
+ },
232
+ "@tiptap/extension-link": {
233
+ "optional": true
234
+ },
235
+ "@tiptap/extension-placeholder": {
236
+ "optional": true
237
+ },
238
+ "@tiptap/react": {
239
+ "optional": true
240
+ },
241
+ "@tiptap/starter-kit": {
242
+ "optional": true
243
+ }
244
+ },
273
245
  "scripts": {
274
246
  "build": "tsc --noEmit",
275
247
  "build:publish": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.core-dts.json && tsc -p tsconfig.build.json && tsup && rollup -c rollup.dts.config.mjs && node -e \"require('fs').rmSync('dist/_dts',{recursive:true,force:true})\"",