@contractspec/bundle.library 3.9.6 → 3.9.8

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 (153) hide show
  1. package/.turbo/turbo-build.log +238 -230
  2. package/CHANGELOG.md +88 -0
  3. package/dist/components/docs/DocsIndexPage.js +2 -2
  4. package/dist/components/docs/docsManifest.js +1 -1
  5. package/dist/components/docs/getting-started/DataViewTutorialPage.js +40 -4
  6. package/dist/components/docs/getting-started/index.js +46 -10
  7. package/dist/components/docs/guides/GuideContractDrivenFormsPage.content.d.ts +3 -0
  8. package/dist/components/docs/guides/GuideContractDrivenFormsPage.content.js +95 -0
  9. package/dist/components/docs/guides/GuideContractDrivenFormsPage.d.ts +1 -0
  10. package/dist/components/docs/guides/GuideContractDrivenFormsPage.js +95 -0
  11. package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +1 -1
  12. package/dist/components/docs/guides/GuidesIndexPage.js +2 -2
  13. package/dist/components/docs/guides/guides.docblocks.js +3 -1
  14. package/dist/components/docs/guides/index.d.ts +1 -0
  15. package/dist/components/docs/guides/index.js +139 -44
  16. package/dist/components/docs/index.js +586 -266
  17. package/dist/components/docs/libraries/LibrariesApplicationShellPage.content.d.ts +16 -0
  18. package/dist/components/docs/libraries/LibrariesApplicationShellPage.content.js +148 -0
  19. package/dist/components/docs/libraries/LibrariesApplicationShellPage.d.ts +1 -0
  20. package/dist/components/docs/libraries/LibrariesApplicationShellPage.js +148 -0
  21. package/dist/components/docs/libraries/LibrariesDataViewsPage.js +13 -6
  22. package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +3 -3
  23. package/dist/components/docs/libraries/LibrariesOverviewPage.js +1 -1
  24. package/dist/components/docs/libraries/index.d.ts +1 -0
  25. package/dist/components/docs/libraries/index.js +217 -64
  26. package/dist/components/docs/specs/SpecsDataViewsPage.js +37 -1
  27. package/dist/components/docs/specs/index.js +37 -1
  28. package/dist/index.js +597 -277
  29. package/dist/libs/posthog/client.js +1 -1
  30. package/dist/node/components/docs/DocsIndexPage.js +2 -2
  31. package/dist/node/components/docs/docsManifest.js +1 -1
  32. package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +40 -4
  33. package/dist/node/components/docs/getting-started/index.js +46 -10
  34. package/dist/node/components/docs/guides/GuideContractDrivenFormsPage.content.js +94 -0
  35. package/dist/node/components/docs/guides/GuideContractDrivenFormsPage.js +94 -0
  36. package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +1 -1
  37. package/dist/node/components/docs/guides/GuidesIndexPage.js +2 -2
  38. package/dist/node/components/docs/guides/guides.docblocks.js +3 -1
  39. package/dist/node/components/docs/guides/index.js +139 -44
  40. package/dist/node/components/docs/index.js +586 -266
  41. package/dist/node/components/docs/libraries/LibrariesApplicationShellPage.content.js +147 -0
  42. package/dist/node/components/docs/libraries/LibrariesApplicationShellPage.js +147 -0
  43. package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +13 -6
  44. package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +3 -3
  45. package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +1 -1
  46. package/dist/node/components/docs/libraries/index.js +217 -64
  47. package/dist/node/components/docs/specs/SpecsDataViewsPage.js +37 -1
  48. package/dist/node/components/docs/specs/index.js +37 -1
  49. package/dist/node/index.js +597 -277
  50. package/dist/node/libs/posthog/client.js +1 -1
  51. package/package.json +71 -23
  52. package/src/components/docs/docsManifest.ts +22 -0
  53. package/src/components/docs/generated/docs-index._common.json +2008 -1699
  54. package/src/components/docs/generated/docs-index.agent-console.json +377 -377
  55. package/src/components/docs/generated/docs-index.ai-chat-assistant.json +17 -17
  56. package/src/components/docs/generated/docs-index.ai-chat.json +105 -105
  57. package/src/components/docs/generated/docs-index.ai-support-bot.json +9 -9
  58. package/src/components/docs/generated/docs-index.analytics-dashboard.json +169 -169
  59. package/src/components/docs/generated/docs-index.app-config.json +137 -137
  60. package/src/components/docs/generated/docs-index.artisan-knowledge-product.json +17 -17
  61. package/src/components/docs/generated/docs-index.artisan-payments-stripe.json +33 -33
  62. package/src/components/docs/generated/docs-index.audit-trail.json +49 -49
  63. package/src/components/docs/generated/docs-index.calendar-google.json +9 -9
  64. package/src/components/docs/generated/docs-index.content-generation.json +9 -9
  65. package/src/components/docs/generated/docs-index.control-plane.json +17 -17
  66. package/src/components/docs/generated/docs-index.crm-pipeline.json +161 -161
  67. package/src/components/docs/generated/docs-index.data-grid-showcase.json +25 -25
  68. package/src/components/docs/generated/docs-index.defineExample.json +9 -9
  69. package/src/components/docs/generated/docs-index.email-gmail.json +9 -9
  70. package/src/components/docs/generated/docs-index.feature-flags.json +217 -217
  71. package/src/components/docs/generated/docs-index.files.json +177 -177
  72. package/src/components/docs/generated/docs-index.generated.ts +20 -20
  73. package/src/components/docs/generated/docs-index.harness-lab.json +9 -9
  74. package/src/components/docs/generated/docs-index.health.json +97 -97
  75. package/src/components/docs/generated/docs-index.identity-rbac.json +313 -313
  76. package/src/components/docs/generated/docs-index.in-app-docs.json +9 -9
  77. package/src/components/docs/generated/docs-index.integration-hub.json +265 -265
  78. package/src/components/docs/generated/docs-index.integration-posthog.json +9 -9
  79. package/src/components/docs/generated/docs-index.integration-stripe.json +9 -9
  80. package/src/components/docs/generated/docs-index.integration-supabase.json +9 -9
  81. package/src/components/docs/generated/docs-index.jobs.json +137 -137
  82. package/src/components/docs/generated/docs-index.kb-update-pipeline.json +129 -129
  83. package/src/components/docs/generated/docs-index.knowledge-canon.json +9 -9
  84. package/src/components/docs/generated/docs-index.learning-journey-ambient-coach.json +9 -9
  85. package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +49 -49
  86. package/src/components/docs/generated/docs-index.learning-journey-duo-drills.json +9 -9
  87. package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +49 -49
  88. package/src/components/docs/generated/docs-index.learning-journey-quest-challenges.json +9 -9
  89. package/src/components/docs/generated/docs-index.learning-journey-registry.json +33 -33
  90. package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +49 -49
  91. package/src/components/docs/generated/docs-index.learning-journey-ui-coaching.json +9 -9
  92. package/src/components/docs/generated/docs-index.learning-journey-ui-gamified.json +9 -9
  93. package/src/components/docs/generated/docs-index.learning-journey-ui-onboarding.json +9 -9
  94. package/src/components/docs/generated/docs-index.learning-journey-ui-shared.json +9 -9
  95. package/src/components/docs/generated/docs-index.learning-journey.json +241 -241
  96. package/src/components/docs/generated/docs-index.learning-patterns.json +9 -9
  97. package/src/components/docs/generated/docs-index.lifecycle-cli.json +9 -9
  98. package/src/components/docs/generated/docs-index.lifecycle-dashboard.json +9 -9
  99. package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +65 -65
  100. package/src/components/docs/generated/docs-index.marketplace.json +337 -337
  101. package/src/components/docs/generated/docs-index.meeting-recorder-providers.json +9 -9
  102. package/src/components/docs/generated/docs-index.meeting-recorder.json +49 -49
  103. package/src/components/docs/generated/docs-index.messaging-agent-actions.json +17 -17
  104. package/src/components/docs/generated/docs-index.metrics.json +201 -201
  105. package/src/components/docs/generated/docs-index.minimal.json +17 -17
  106. package/src/components/docs/generated/docs-index.mobile-demo-landing.json +41 -41
  107. package/src/components/docs/generated/docs-index.notifications.json +65 -65
  108. package/src/components/docs/generated/docs-index.openbanking-powens.json +9 -9
  109. package/src/components/docs/generated/docs-index.openbanking.json +65 -65
  110. package/src/components/docs/generated/docs-index.opencode-cli.json +17 -17
  111. package/src/components/docs/generated/docs-index.personalization.json +9 -9
  112. package/src/components/docs/generated/docs-index.platform-acp.json +137 -137
  113. package/src/components/docs/generated/docs-index.platform-agent.json +201 -201
  114. package/src/components/docs/generated/docs-index.platform-context.json +121 -121
  115. package/src/components/docs/generated/docs-index.platform-control-plane.json +321 -321
  116. package/src/components/docs/generated/docs-index.platform-database.json +89 -89
  117. package/src/components/docs/generated/docs-index.platform-docs.json +161 -161
  118. package/src/components/docs/generated/docs-index.platform-harness.json +177 -177
  119. package/src/components/docs/generated/docs-index.platform-integrations.json +329 -329
  120. package/src/components/docs/generated/docs-index.platform-knowledge.json +57 -57
  121. package/src/components/docs/generated/docs-index.platform-provider-ranking.json +217 -217
  122. package/src/components/docs/generated/docs-index.pocket-family-office.json +129 -129
  123. package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +9 -9
  124. package/src/components/docs/generated/docs-index.product-intent.json +9 -9
  125. package/src/components/docs/generated/docs-index.project-management-sync.json +9 -9
  126. package/src/components/docs/generated/docs-index.saas-boilerplate.json +209 -209
  127. package/src/components/docs/generated/docs-index.service-business-os.json +193 -193
  128. package/src/components/docs/generated/docs-index.team-hub.json +185 -185
  129. package/src/components/docs/generated/docs-index.unknown.json +521 -521
  130. package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +81 -81
  131. package/src/components/docs/generated/docs-index.video-api-showcase.json +33 -33
  132. package/src/components/docs/generated/docs-index.video-docs-terminal.json +9 -9
  133. package/src/components/docs/generated/docs-index.video-marketing-clip.json +9 -9
  134. package/src/components/docs/generated/docs-index.visualization-showcase.json +17 -17
  135. package/src/components/docs/generated/docs-index.voice-providers.json +9 -9
  136. package/src/components/docs/generated/docs-index.wealth-snapshot.json +153 -153
  137. package/src/components/docs/generated/docs-index.workflow-system.json +433 -433
  138. package/src/components/docs/generated/docs-index.workspace-cli.json +9 -9
  139. package/src/components/docs/getting-started/DataViewTutorialPage.tsx +40 -1
  140. package/src/components/docs/guides/GuideContractDrivenFormsPage.content.ts +98 -0
  141. package/src/components/docs/guides/GuideContractDrivenFormsPage.tsx +143 -0
  142. package/src/components/docs/guides/GuideSpecValidationTypingPage.tsx +2 -2
  143. package/src/components/docs/guides/GuidesIndexPage.tsx +7 -0
  144. package/src/components/docs/guides/guides.docblocks.ts +12 -0
  145. package/src/components/docs/guides/index.ts +1 -0
  146. package/src/components/docs/libraries/LibrariesApplicationShellPage.content.ts +170 -0
  147. package/src/components/docs/libraries/LibrariesApplicationShellPage.tsx +112 -0
  148. package/src/components/docs/libraries/LibrariesDataViewsPage.tsx +26 -5
  149. package/src/components/docs/libraries/LibrariesDesignSystemPage.tsx +9 -0
  150. package/src/components/docs/libraries/LibrariesOverviewPage.tsx +6 -0
  151. package/src/components/docs/libraries/index.ts +1 -0
  152. package/src/components/docs/specs/SpecsDataViewsPage.tsx +39 -3
  153. package/src/libs/posthog/client.ts +11 -9
@@ -62,7 +62,9 @@ export function UserPage() {
62
62
  <code>filters</code>: Current filter state object.
63
63
  </li>
64
64
  <li>
65
- <code>onFilterChange</code>: Callback when filters change.
65
+ <code>onFilterChange</code>: Callback when typed filters change.
66
+ Renderers emit <code>DataViewFilterValue</code> objects for numeric,
67
+ percent, currency, temporal, duration, and boolean filters.
66
68
  </li>
67
69
  <li>
68
70
  <code>pagination</code>: Object with <code>page</code>,{' '}
@@ -71,6 +73,18 @@ export function UserPage() {
71
73
  <li>
72
74
  <code>onPageChange</code>: Callback when page changes.
73
75
  </li>
76
+ <li>
77
+ <code>viewMode</code> / <code>defaultViewMode</code>: Controlled
78
+ or initial collection mode for specs that allow <code>list</code>,{' '}
79
+ <code>grid</code>, or <code>table</code> projections through{' '}
80
+ <code>view.collection.viewModes</code>.
81
+ </li>
82
+ <li>
83
+ <code>density</code> / <code>defaultDensity</code>: Controlled or
84
+ initial density for collection renderers, seeded by{' '}
85
+ <code>view.collection.density</code> and table{' '}
86
+ <code>view.density</code>.
87
+ </li>
74
88
  </ul>
75
89
  </div>
76
90
 
@@ -86,12 +100,19 @@ export function UserPage() {
86
100
  code={`import { DataViewQueryGenerator } from '@contractspec/lib.contracts-spec/data-views/query-generator';
87
101
 
88
102
  const generator = new DataViewQueryGenerator(MyUserList);
89
- const query = generator.generate({
103
+ const params = {
90
104
  pagination: { page: 1, pageSize: 20 },
91
- filters: { role: 'admin' }
92
- });
105
+ filters: {
106
+ role: { kind: 'single', value: 'admin' },
107
+ revenue: { kind: 'range', from: 1000, to: 5000 },
108
+ lastSeenAt: { kind: 'single', value: '2026-04-28T08:30:00Z' }
109
+ }
110
+ };
111
+
112
+ const errors = generator.validateParams(params);
113
+ const query = generator.generate(params);
93
114
 
94
- // query.input contains { skip: 0, take: 20, role: 'admin' }`}
115
+ // query.input contains skip/take plus the typed filter payloads.`}
95
116
  />
96
117
  </div>
97
118
 
@@ -187,6 +187,7 @@ export function LibrariesDesignSystemPage() {
187
187
  <div className="card-subtle p-4">
188
188
  <h3 className="mb-2 font-semibold">Organisms</h3>
189
189
  <ul className="space-y-1 text-muted-foreground text-sm">
190
+ <li>AppShell, PageOutline</li>
190
191
  <li>AppLayout, AppHeader, AppSidebar</li>
191
192
  <li>MarketingLayout, HeroSection</li>
192
193
  <li>ListCardPage, ListTablePage</li>
@@ -224,6 +225,14 @@ export function LibrariesDesignSystemPage() {
224
225
  <h2 className="font-bold text-2xl">Where this layer fits</h2>
225
226
  <p className="text-muted-foreground">
226
227
  Read{' '}
228
+ <Link
229
+ href="/docs/libraries/application-shell"
230
+ className="text-[color:var(--rust)] underline underline-offset-4"
231
+ >
232
+ Application shell
233
+ </Link>{' '}
234
+ for the shared sidebar, topbar, command search, mobile navigation, and{' '}
235
+ <code>PageOutline</code> pattern. Read{' '}
227
236
  <Link
228
237
  href="/docs/libraries/cross-platform-ui"
229
238
  className="text-[color:var(--rust)] underline underline-offset-4"
@@ -48,6 +48,12 @@ const libraryGroups = [
48
48
  'Build higher-level product surfaces and documented marketing/docs primitives on top of the web and native UI packages.',
49
49
  href: '/docs/libraries/design-system',
50
50
  },
51
+ {
52
+ title: 'Application shell',
53
+ description:
54
+ 'Adopt the shared sidebar, topbar, command search, mobile navigation, and PageOutline patterns for product apps.',
55
+ href: '/docs/libraries/application-shell',
56
+ },
51
57
  {
52
58
  title: 'Cross-platform UI',
53
59
  description:
@@ -1,6 +1,7 @@
1
1
  export { LibrariesAccessibilityPage } from './LibrariesAccessibilityPage';
2
2
  export { LibrariesAiAgentPage } from './LibrariesAiAgentPage';
3
3
  export { LibrariesAnalyticsPage } from './LibrariesAnalyticsPage';
4
+ export { LibrariesApplicationShellPage } from './LibrariesApplicationShellPage';
4
5
  export { LibrariesContentGenPage } from './LibrariesContentGenPage';
5
6
  export { LibrariesContractsPage } from './LibrariesContractsPage';
6
7
  export { LibrariesCostTrackingPage } from './LibrariesCostTrackingPage';
@@ -45,8 +45,44 @@ export const DataGridShowcaseDataView = defineDataView({
45
45
  { key: 'account', label: 'Account', dataPath: 'account', sortable: true },
46
46
  { key: 'owner', label: 'Owner', dataPath: 'owner', sortable: true },
47
47
  { key: 'status', label: 'Status', dataPath: 'status', sortable: true },
48
+ {
49
+ key: 'arr',
50
+ label: 'ARR',
51
+ dataPath: 'arr',
52
+ sortable: true,
53
+ format: { type: 'currency', currency: 'USD', rounded: true },
54
+ },
55
+ {
56
+ key: 'healthScore',
57
+ label: 'Health score',
58
+ dataPath: 'healthScore',
59
+ format: { type: 'percent', valueScale: 'fraction', maximumFractionDigits: 1 },
60
+ },
61
+ {
62
+ key: 'lastActivityAt',
63
+ label: 'Last activity',
64
+ dataPath: 'lastActivityAt',
65
+ format: { type: 'datetime', dateStyle: 'medium', timeStyle: 'short' },
66
+ },
48
67
  { key: 'notes', label: 'Notes', dataPath: 'notes' },
49
68
  ],
69
+ filters: [
70
+ { key: 'status', label: 'Status', field: 'status', type: 'enum' },
71
+ {
72
+ key: 'arr',
73
+ label: 'ARR',
74
+ field: 'arr',
75
+ type: 'currency',
76
+ valueMode: 'range',
77
+ },
78
+ {
79
+ key: 'lastActivityAt',
80
+ label: 'Last activity',
81
+ field: 'lastActivityAt',
82
+ type: 'datetime',
83
+ valueMode: 'range',
84
+ },
85
+ ],
50
86
  },
51
87
  });`;
52
88
 
@@ -84,9 +120,9 @@ export function SpecsDataViewsPage() {
84
120
  <h3 className="font-semibold text-lg">Filtering</h3>
85
121
  <p className="text-muted-foreground">
86
122
  Define filters that users can apply to narrow down results.
87
- Filters can be simple (e.g., "status equals 'active'") or complex
88
- (e.g., "created within the last 30 days AND assigned to current
89
- user").
123
+ Filters are typed as search, enum, number, percent, currency,
124
+ date, time, datetime, duration, or boolean so renderers and query
125
+ helpers can validate values before execution.
90
126
  </p>
91
127
  </div>
92
128
  <div>
@@ -29,25 +29,26 @@ const shouldCaptureAnalytics = () => {
29
29
  return dnt !== '1' && dnt !== 'yes';
30
30
  };
31
31
 
32
+ const isDevelopment = () => process.env.NODE_ENV === 'development';
33
+
32
34
  export function initPosthog() {
33
35
  if (typeof window === 'undefined') return;
36
+ if (isDevelopment()) return;
34
37
  if (!posthogKey) {
35
38
  console.warn('[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing');
36
39
  return;
37
40
  }
38
41
  if (!shouldCaptureAnalytics()) return;
39
42
 
40
- const isDev = process.env.NODE_ENV === 'development';
41
-
42
43
  posthog.init(posthogKey, {
43
44
  api_host: posthogHost,
44
- autocapture: !isDev,
45
- capture_dead_clicks: !isDev,
46
- capture_performance: !isDev,
47
- capture_pageview: !isDev,
48
- capture_heatmaps: !isDev,
49
- capture_exceptions: !isDev,
50
- debug: process.env.NODE_ENV === 'development',
45
+ autocapture: true,
46
+ capture_dead_clicks: true,
47
+ capture_performance: true,
48
+ capture_pageview: true,
49
+ capture_heatmaps: true,
50
+ capture_exceptions: true,
51
+ debug: false,
51
52
  });
52
53
  }
53
54
 
@@ -56,6 +57,7 @@ export function captureAnalyticsEvent(
56
57
  properties?: Record<string, unknown>
57
58
  ) {
58
59
  if (!posthogKey) return;
60
+ if (isDevelopment()) return;
59
61
  if (!shouldCaptureAnalytics()) return;
60
62
  try {
61
63
  const globalPosthog = (globalThis as { posthog?: PostHogInstance }).posthog;