@happyvertical/smrt-sales 0.55.15 → 0.55.19

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.
@@ -1,3 +1,3 @@
1
- import "./chunks/__smrt-register__-C9Rujfag.js";
1
+ import "./chunks/__smrt-register__-ErzyZEEO.js";
2
2
  import { A as EARNING_EVENT_KINDS, C as COMMISSION_ADJUSTMENT_KINDS, D as COMMISSION_STATUSES, E as COMMISSION_PLAN_STATUSES, F as Commission, I as CommissionAdjustmentOperationCollection, L as CommissionAdjustmentOperation, M as CommissionPayoutCollection, N as CommissionPayout, O as EARNER_SOURCE_ATTRIBUTION_STATUSES, P as CommissionCollection, R as CommissionAdjustmentCollection, S as ADJUSTMENT_SETTLEABLE_COMMISSION_STATUSES, T as COMMISSION_PAYOUT_STATUSES, _ as EarnerCollection, a as CommissionBalanceService, b as CommissionPlan, c as CommissionAdjustmentValidationError, d as centsToAmount, f as roundCents, g as EarnerSourceAttribution, h as EarnerSourceAttributionCollection, i as CommissionCalculationService, j as PAYOUT_METHODS, k as EARNER_STATUSES, l as amountToCents, m as EarningEvent, n as CommissionSettlementService, o as CommissionAdjustmentReplayConflictError, p as EarningEventCollection, r as CommissionPayoutService, s as CommissionAdjustmentService, t as EarnerAttributionService, u as calculateCommissionAmountCents, v as Earner, w as COMMISSION_BASES, x as validateCommissionPlanComponents, y as CommissionPlanCollection, z as CommissionAdjustment } from "./chunks/commissions-Cs4MsxVg.js";
3
3
  export { ADJUSTMENT_SETTLEABLE_COMMISSION_STATUSES, COMMISSION_ADJUSTMENT_KINDS, COMMISSION_BASES, COMMISSION_PAYOUT_STATUSES, COMMISSION_PLAN_STATUSES, COMMISSION_STATUSES, Commission, CommissionAdjustment, CommissionAdjustmentCollection, CommissionAdjustmentOperation, CommissionAdjustmentOperationCollection, CommissionAdjustmentReplayConflictError, CommissionAdjustmentService, CommissionAdjustmentValidationError, CommissionBalanceService, CommissionCalculationService, CommissionCollection, CommissionPayout, CommissionPayoutCollection, CommissionPayoutService, CommissionPlan, CommissionPlanCollection, CommissionSettlementService, EARNER_SOURCE_ATTRIBUTION_STATUSES, EARNER_STATUSES, EARNING_EVENT_KINDS, Earner, EarnerAttributionService, EarnerCollection, EarnerSourceAttribution, EarnerSourceAttributionCollection, EarningEvent, EarningEventCollection, PAYOUT_METHODS, amountToCents, calculateCommissionAmountCents, centsToAmount, roundCents, validateCommissionPlanComponents };
package/dist/crm.js CHANGED
@@ -1,3 +1,3 @@
1
- import "./chunks/__smrt-register__-C9Rujfag.js";
1
+ import "./chunks/__smrt-register__-ErzyZEEO.js";
2
2
  import { C as OPPORTUNITY_STATUSES, D as SALES_REPRESENTATIVE_STATUSES, E as SALES_ACTIVITY_SUBJECT_KINDS, O as Lead, S as LEAD_STATUSES, T as SALES_ACTIVITY_KINDS, _ as PipelineStageCollection, a as projectLeadWorkQueue, b as DEFAULT_PIPELINE_KEY, c as OpportunityConversion, d as SalesRepresentative, f as PipelineDefinitionCollection, g as SalesActivity, h as SalesActivityCollection, i as MAX_LEAD_WORKFLOW_TEXT_LENGTH, l as LeadCollection, m as OpportunityCollection, n as LeadWorkflowService, o as SalesPipelineRecipe, p as PipelineDefinition, r as LeadWorkflowValidationError, s as OpportunityConversionCollection, t as LEAD_HUMAN_ACTIVITY_KINDS, u as SalesRepresentativeCollection, v as PipelineStage, w as PIPELINE_STATUSES, x as DEFAULT_PIPELINE_STAGES, y as Opportunity } from "./chunks/crm-DaUkdNoG.js";
3
3
  export { DEFAULT_PIPELINE_KEY, DEFAULT_PIPELINE_STAGES, LEAD_HUMAN_ACTIVITY_KINDS, LEAD_STATUSES, Lead, LeadCollection, LeadWorkflowService, LeadWorkflowValidationError, MAX_LEAD_WORKFLOW_TEXT_LENGTH, OPPORTUNITY_STATUSES, Opportunity, OpportunityCollection, OpportunityConversion, OpportunityConversionCollection, PIPELINE_STATUSES, PipelineDefinition, PipelineDefinitionCollection, PipelineStage, PipelineStageCollection, SALES_ACTIVITY_KINDS, SALES_ACTIVITY_SUBJECT_KINDS, SALES_REPRESENTATIVE_STATUSES, SalesActivity, SalesActivityCollection, SalesPipelineRecipe, SalesRepresentative, SalesRepresentativeCollection, projectLeadWorkQueue };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import "./chunks/__smrt-register__-C9Rujfag.js";
1
+ import "./chunks/__smrt-register__-ErzyZEEO.js";
2
2
  import { a as AgreementExecutionEvent, c as AGREEMENT_EXECUTION_STATUSES, d as sanitizeSignerIntent, i as AgreementExecutionEventCollection, l as coerceAgreementDate, n as ExecutedAgreementCollection, o as AgreementExecutionCollection, r as ExecutedAgreement, s as AgreementExecution, t as AgreementExecutionService, u as sanitizeSignerEvidence } from "./chunks/agreements-BB_tNU0U.js";
3
3
  import { A as EARNING_EVENT_KINDS, C as COMMISSION_ADJUSTMENT_KINDS, D as COMMISSION_STATUSES, E as COMMISSION_PLAN_STATUSES, F as Commission, I as CommissionAdjustmentOperationCollection, L as CommissionAdjustmentOperation, M as CommissionPayoutCollection, N as CommissionPayout, O as EARNER_SOURCE_ATTRIBUTION_STATUSES, P as CommissionCollection, R as CommissionAdjustmentCollection, S as ADJUSTMENT_SETTLEABLE_COMMISSION_STATUSES, T as COMMISSION_PAYOUT_STATUSES, _ as EarnerCollection, a as CommissionBalanceService, b as CommissionPlan, c as CommissionAdjustmentValidationError, d as centsToAmount, f as roundCents, g as EarnerSourceAttribution, h as EarnerSourceAttributionCollection, i as CommissionCalculationService, j as PAYOUT_METHODS, k as EARNER_STATUSES, l as amountToCents, m as EarningEvent, n as CommissionSettlementService, o as CommissionAdjustmentReplayConflictError, p as EarningEventCollection, r as CommissionPayoutService, s as CommissionAdjustmentService, t as EarnerAttributionService, u as calculateCommissionAmountCents, v as Earner, w as COMMISSION_BASES, x as validateCommissionPlanComponents, y as CommissionPlanCollection, z as CommissionAdjustment } from "./chunks/commissions-Cs4MsxVg.js";
4
4
  import { C as OPPORTUNITY_STATUSES, D as SALES_REPRESENTATIVE_STATUSES, E as SALES_ACTIVITY_SUBJECT_KINDS, O as Lead, S as LEAD_STATUSES, T as SALES_ACTIVITY_KINDS, _ as PipelineStageCollection, a as projectLeadWorkQueue, b as DEFAULT_PIPELINE_KEY, c as OpportunityConversion, d as SalesRepresentative, f as PipelineDefinitionCollection, g as SalesActivity, h as SalesActivityCollection, i as MAX_LEAD_WORKFLOW_TEXT_LENGTH, l as LeadCollection, m as OpportunityCollection, n as LeadWorkflowService, o as SalesPipelineRecipe, p as PipelineDefinition, r as LeadWorkflowValidationError, s as OpportunityConversionCollection, t as LEAD_HUMAN_ACTIVITY_KINDS, u as SalesRepresentativeCollection, v as PipelineStage, w as PIPELINE_STATUSES, x as DEFAULT_PIPELINE_STAGES, y as Opportunity } from "./chunks/crm-DaUkdNoG.js";
@@ -2,7 +2,7 @@
2
2
  "version": "1.0.0",
3
3
  "timestamp": 0,
4
4
  "packageName": "@happyvertical/smrt-sales",
5
- "packageVersion": "0.55.15",
5
+ "packageVersion": "0.55.19",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-sales:AgreementExecutionCollection": {
8
8
  "name": "agreementexecutioncollection",
package/dist/referrals.js CHANGED
@@ -1,3 +1,3 @@
1
- import "./chunks/__smrt-register__-C9Rujfag.js";
1
+ import "./chunks/__smrt-register__-ErzyZEEO.js";
2
2
  import { A as ReferralClickOperation, B as ATTRIBUTION_RESOLUTION_MODES, C as ReferralTouchCollection, D as ReferralCollection, E as assertHttpTargetUrl, F as validateAttributionPolicyTerms, G as REFERRAL_STATUSES, H as REFERRAL_AGREEMENT_STATUSES, I as ATTRIBUTION_CONFLICT_BEHAVIORS, J as AttributionExceptionCollection, K as REFERRAL_TOUCH_KINDS, L as ATTRIBUTION_CREDIT_MODES, M as ReferralAgreement, N as AttributionPolicyCollection, O as Referral, P as AttributionPolicy, R as ATTRIBUTION_EXCEPTION_STATUSES, S as generateReferralCode, T as ReferralLink, U as REFERRAL_LINK_STATUSES, V as REFERRAL_AGREEMENT_APPROVAL_MODES, W as REFERRAL_PROGRAM_STATUSES, Y as AttributionException, _ as REFERRAL_CODE_ALPHABET, a as ReferralAgreementExecutionService, b as ReferralClickValidationError, c as ReferrerCollection, d as ReferralTermSnapshot, f as ReferralProgramCollection, g as MAX_REFERRAL_CLICK_IDEMPOTENCY_KEY_BYTES, h as MAX_CODE_GENERATION_ATTEMPTS, i as REFERRAL_AGREEMENT_SOURCE_KIND, j as ReferralAgreementCollection, k as ReferralClickOperationCollection, l as Referrer, m as DEFAULT_REFERRAL_CLICK_EVIDENCE_MAX_BYTES, n as REFERRAL_TERMS_SNAPSHOT_KIND, o as AttributionService, p as ReferralProgram, q as REFERRER_STATUSES, r as ReferralCommissionService, s as QualifiedReferralOverrideError, t as ReferralQualificationService, u as ReferralTermSnapshotCollection, v as REFERRAL_CODE_LENGTH, w as ReferralTouch, x as ReferralLinkCollection, y as ReferralClickReplayConflictError, z as ATTRIBUTION_POLICY_STATUSES } from "./chunks/referrals-CrFDsdq-.js";
3
3
  export { ATTRIBUTION_CONFLICT_BEHAVIORS, ATTRIBUTION_CREDIT_MODES, ATTRIBUTION_EXCEPTION_STATUSES, ATTRIBUTION_POLICY_STATUSES, ATTRIBUTION_RESOLUTION_MODES, AttributionException, AttributionExceptionCollection, AttributionPolicy, AttributionPolicyCollection, AttributionService, DEFAULT_REFERRAL_CLICK_EVIDENCE_MAX_BYTES, MAX_CODE_GENERATION_ATTEMPTS, MAX_REFERRAL_CLICK_IDEMPOTENCY_KEY_BYTES, QualifiedReferralOverrideError, REFERRAL_AGREEMENT_APPROVAL_MODES, REFERRAL_AGREEMENT_SOURCE_KIND, REFERRAL_AGREEMENT_STATUSES, REFERRAL_CODE_ALPHABET, REFERRAL_CODE_LENGTH, REFERRAL_LINK_STATUSES, REFERRAL_PROGRAM_STATUSES, REFERRAL_STATUSES, REFERRAL_TERMS_SNAPSHOT_KIND, REFERRAL_TOUCH_KINDS, REFERRER_STATUSES, Referral, ReferralAgreement, ReferralAgreementCollection, ReferralAgreementExecutionService, ReferralClickOperation, ReferralClickOperationCollection, ReferralClickReplayConflictError, ReferralClickValidationError, ReferralCollection, ReferralCommissionService, ReferralLink, ReferralLinkCollection, ReferralProgram, ReferralProgramCollection, ReferralQualificationService, ReferralTermSnapshot, ReferralTermSnapshotCollection, ReferralTouch, ReferralTouchCollection, Referrer, ReferrerCollection, assertHttpTargetUrl, generateReferralCode, validateAttributionPolicyTerms };
@@ -3,12 +3,12 @@
3
3
  "sensitiveFieldsExcluded": true,
4
4
  "generatedAt": "1970-01-01T00:00:00.000Z",
5
5
  "packageName": "@happyvertical/smrt-sales",
6
- "packageVersion": "0.55.15",
6
+ "packageVersion": "0.55.19",
7
7
  "sourceManifestPath": "dist/manifest.json",
8
8
  "agentDocPath": "AGENTS.md",
9
9
  "sourceHashes": {
10
- "manifest": "13f1b30cddb408c0ce829d08c39f7aff3553e7cf7fc5ad9b3abe89f5904d6705",
11
- "packageJson": "a73f03567a822aa9fd6529a52e23a8e414f6af0fddc19ac41d3f1762974d99fc",
10
+ "manifest": "aa5d006d981b639f2de8f8f5ec6b3c26aec052eab065737033d13136fd2c4c0f",
11
+ "packageJson": "dea6410e3ad5e2a1fadcda7837a3a1ba44416dbbbbdd0e9636b96e57b8fa0cdf",
12
12
  "agents": "3100099d7cef116237e4deb4f83e32d836f3cc26e0f68a7dd55f14de942eda11",
13
13
  "moduleDoc:agents/agreements.md": "eb6ff147a0f60ee627d3337e8e9394d06fda955b4a4fff228537a9bd2803f886",
14
14
  "moduleDoc:agents/commissions.md": "e047024aafe5edcf072c1a6b7ea253c24cb15f2fa1beb2edd13651e735921f73",
@@ -98,7 +98,7 @@ function resolve(exception: AttributionExceptionView) {
98
98
  }
99
99
  </script>
100
100
 
101
- <section class="sales-attribution-queue">
101
+ <section class="sales-attribution-queue" data-smrt-component="AttributionConflictQueue">
102
102
  {#if exceptions.length === 0}
103
103
  <p class="empty">No attribution exceptions to review.</p>
104
104
  {:else}
@@ -233,6 +233,8 @@ function resolve(exception: AttributionExceptionView) {
233
233
  </section>
234
234
 
235
235
  <style>
236
+ @layer smrt.reset, smrt.structure, smrt.theme;
237
+ @layer smrt.theme {
236
238
  .sales-attribution-queue {
237
239
  display: flex;
238
240
  flex-direction: column;
@@ -241,7 +243,7 @@ function resolve(exception: AttributionExceptionView) {
241
243
 
242
244
  .empty {
243
245
  margin: 0;
244
- color: var(--smrt-color-on-surface-variant, #64748b);
246
+ color: var(--smrt-color-on-surface-variant);
245
247
  font-style: italic;
246
248
  }
247
249
 
@@ -261,7 +263,7 @@ function resolve(exception: AttributionExceptionView) {
261
263
  text-transform: uppercase;
262
264
  letter-spacing: 0.04em;
263
265
  font-size: var(--smrt-typography-label-medium-size, 0.75rem);
264
- color: var(--smrt-color-on-surface-variant, #64748b);
266
+ color: var(--smrt-color-on-surface-variant);
265
267
  margin-right: var(--smrt-spacing-1, 0.25rem);
266
268
  }
267
269
 
@@ -285,13 +287,13 @@ function resolve(exception: AttributionExceptionView) {
285
287
  padding: var(--smrt-spacing-1, 0.25rem) var(--smrt-spacing-2, 0.5rem);
286
288
  text-align: left;
287
289
  font-weight: var(--smrt-typography-weight-semibold, 600);
288
- border-bottom: 1px solid var(--smrt-color-outline-variant, #d8dde6);
290
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
289
291
  white-space: nowrap;
290
292
  }
291
293
 
292
294
  .candidates td {
293
295
  padding: var(--smrt-spacing-1, 0.25rem) var(--smrt-spacing-2, 0.5rem);
294
- border-bottom: 1px solid var(--smrt-color-outline-variant, #d8dde6);
296
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
295
297
  }
296
298
 
297
299
  .award-editor {
@@ -305,7 +307,7 @@ function resolve(exception: AttributionExceptionView) {
305
307
  font-size: var(--smrt-typography-label-large-size, 0.875rem);
306
308
  text-transform: uppercase;
307
309
  letter-spacing: 0.04em;
308
- color: var(--smrt-color-on-surface-variant, #64748b);
310
+ color: var(--smrt-color-on-surface-variant);
309
311
  }
310
312
 
311
313
  .award-editor__row {
@@ -321,11 +323,11 @@ function resolve(exception: AttributionExceptionView) {
321
323
  .award-editor__total {
322
324
  margin: 0;
323
325
  font-size: var(--smrt-typography-body-small-size, 0.8125rem);
324
- color: var(--smrt-color-on-surface-variant, #64748b);
326
+ color: var(--smrt-color-on-surface-variant);
325
327
  }
326
328
 
327
329
  .award-editor__total.invalid {
328
- color: var(--smrt-color-error, #dc2626);
330
+ color: var(--smrt-color-error);
329
331
  }
330
332
 
331
333
  .award-editor :global(.form-group) {
@@ -340,7 +342,7 @@ function resolve(exception: AttributionExceptionView) {
340
342
  }
341
343
 
342
344
  .audit__item dt {
343
- color: var(--smrt-color-on-surface-variant, #64748b);
345
+ color: var(--smrt-color-on-surface-variant);
344
346
  font-size: var(--smrt-typography-label-medium-size, 0.75rem);
345
347
  text-transform: uppercase;
346
348
  letter-spacing: 0.04em;
@@ -358,4 +360,5 @@ function resolve(exception: AttributionExceptionView) {
358
360
  clip: rect(0 0 0 0);
359
361
  white-space: nowrap;
360
362
  }
363
+ }
361
364
  </style>
@@ -38,7 +38,7 @@ function detailsId(id: string): string {
38
38
  }
39
39
  </script>
40
40
 
41
- <div class="sales-commission-breakdown">
41
+ <div class="sales-commission-breakdown" data-smrt-component="CommissionBreakdown">
42
42
  {#if commissions.length === 0}
43
43
  <p class="empty">No commissions yet.</p>
44
44
  {:else}
@@ -158,6 +158,8 @@ function detailsId(id: string): string {
158
158
  </div>
159
159
 
160
160
  <style>
161
+ @layer smrt.reset, smrt.structure, smrt.theme;
162
+ @layer smrt.theme {
161
163
  .sales-commission-breakdown {
162
164
  width: 100%;
163
165
  overflow-x: auto;
@@ -165,7 +167,7 @@ function detailsId(id: string): string {
165
167
 
166
168
  .empty {
167
169
  margin: 0;
168
- color: var(--smrt-color-on-surface-variant, #64748b);
170
+ color: var(--smrt-color-on-surface-variant);
169
171
  font-style: italic;
170
172
  }
171
173
 
@@ -179,14 +181,14 @@ function detailsId(id: string): string {
179
181
  padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-3, 0.75rem);
180
182
  text-align: left;
181
183
  font-weight: var(--smrt-typography-weight-semibold, 600);
182
- background: var(--smrt-color-surface-container, #f3f4f6);
183
- border-bottom: 1px solid var(--smrt-color-outline-variant, #d8dde6);
184
+ background: var(--smrt-color-surface-container);
185
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
184
186
  white-space: nowrap;
185
187
  }
186
188
 
187
189
  td {
188
190
  padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-3, 0.75rem);
189
- border-bottom: 1px solid var(--smrt-color-outline-variant, #d8dde6);
191
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
190
192
  vertical-align: top;
191
193
  }
192
194
 
@@ -200,7 +202,7 @@ function detailsId(id: string): string {
200
202
  }
201
203
 
202
204
  .negative {
203
- color: var(--smrt-color-error, #dc2626);
205
+ color: var(--smrt-color-error);
204
206
  }
205
207
 
206
208
  .event-kind {
@@ -210,7 +212,7 @@ function detailsId(id: string): string {
210
212
 
211
213
  .secondary {
212
214
  display: block;
213
- color: var(--smrt-color-on-surface-variant, #64748b);
215
+ color: var(--smrt-color-on-surface-variant);
214
216
  font-size: var(--smrt-typography-body-small-size, 0.75rem);
215
217
  }
216
218
 
@@ -220,7 +222,7 @@ function detailsId(id: string): string {
220
222
  }
221
223
 
222
224
  .details-row td {
223
- background: var(--smrt-color-surface-container-low, #f9fafb);
225
+ background: var(--smrt-color-surface-container-low);
224
226
  }
225
227
 
226
228
  .details {
@@ -236,7 +238,7 @@ function detailsId(id: string): string {
236
238
  }
237
239
 
238
240
  .details__none {
239
- color: var(--smrt-color-on-surface-variant, #64748b);
241
+ color: var(--smrt-color-on-surface-variant);
240
242
  font-style: italic;
241
243
  }
242
244
 
@@ -248,4 +250,5 @@ function detailsId(id: string): string {
248
250
  .adjustments th {
249
251
  background: transparent;
250
252
  }
253
+ }
251
254
  </style>
@@ -26,7 +26,7 @@ let { rows = [], periodLabel, locale }: Props = $props();
26
26
  const totals = $derived(sumExpenseRowsByCurrency(rows));
27
27
  </script>
28
28
 
29
- <div class="sales-expense-summary">
29
+ <div class="sales-expense-summary" data-smrt-component="CommissionExpenseSummary">
30
30
  <header class="head">
31
31
  <h3>Commission expense{periodLabel ? ` — ${periodLabel}` : ''}</h3>
32
32
  <p class="note">
@@ -96,6 +96,8 @@ const totals = $derived(sumExpenseRowsByCurrency(rows));
96
96
  </div>
97
97
 
98
98
  <style>
99
+ @layer smrt.reset, smrt.structure, smrt.theme;
100
+ @layer smrt.theme {
99
101
  .sales-expense-summary {
100
102
  display: flex;
101
103
  flex-direction: column;
@@ -111,13 +113,13 @@ const totals = $derived(sumExpenseRowsByCurrency(rows));
111
113
 
112
114
  .note {
113
115
  margin: var(--smrt-spacing-1, 0.25rem) 0 0;
114
- color: var(--smrt-color-on-surface-variant, #64748b);
116
+ color: var(--smrt-color-on-surface-variant);
115
117
  font-size: var(--smrt-typography-body-small-size, 0.8125rem);
116
118
  }
117
119
 
118
120
  .empty {
119
121
  margin: 0;
120
- color: var(--smrt-color-on-surface-variant, #64748b);
122
+ color: var(--smrt-color-on-surface-variant);
121
123
  font-style: italic;
122
124
  }
123
125
 
@@ -129,18 +131,18 @@ const totals = $derived(sumExpenseRowsByCurrency(rows));
129
131
  }
130
132
 
131
133
  .tile {
132
- background: var(--smrt-color-surface, #fff);
133
- border: 1px solid var(--smrt-color-outline-variant, #d8dde6);
134
- border-radius: var(--smrt-radius-md, 8px);
134
+ background: var(--smrt-color-surface);
135
+ border: 1px solid var(--smrt-color-outline-variant);
136
+ border-radius: var(--smrt-radius-md);
135
137
  padding: var(--smrt-spacing-3, 0.75rem);
136
138
  }
137
139
 
138
140
  .tile--net {
139
- border-color: var(--smrt-color-primary, #2563eb);
141
+ border-color: var(--smrt-color-primary);
140
142
  }
141
143
 
142
144
  .tile dt {
143
- color: var(--smrt-color-on-surface-variant, #64748b);
145
+ color: var(--smrt-color-on-surface-variant);
144
146
  font-size: var(--smrt-typography-label-medium-size, 0.75rem);
145
147
  text-transform: uppercase;
146
148
  letter-spacing: 0.04em;
@@ -152,7 +154,7 @@ const totals = $derived(sumExpenseRowsByCurrency(rows));
152
154
  }
153
155
 
154
156
  .negative {
155
- color: var(--smrt-color-error, #dc2626);
157
+ color: var(--smrt-color-error);
156
158
  }
157
159
 
158
160
  table {
@@ -165,14 +167,14 @@ const totals = $derived(sumExpenseRowsByCurrency(rows));
165
167
  padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-3, 0.75rem);
166
168
  text-align: left;
167
169
  font-weight: var(--smrt-typography-weight-semibold, 600);
168
- background: var(--smrt-color-surface-container, #f3f4f6);
169
- border-bottom: 1px solid var(--smrt-color-outline-variant, #d8dde6);
170
+ background: var(--smrt-color-surface-container);
171
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
170
172
  white-space: nowrap;
171
173
  }
172
174
 
173
175
  td {
174
176
  padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-3, 0.75rem);
175
- border-bottom: 1px solid var(--smrt-color-outline-variant, #d8dde6);
177
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
176
178
  }
177
179
 
178
180
  .num {
@@ -183,4 +185,5 @@ const totals = $derived(sumExpenseRowsByCurrency(rows));
183
185
  .net {
184
186
  font-weight: var(--smrt-typography-weight-semibold, 600);
185
187
  }
188
+ }
186
189
  </style>
@@ -26,7 +26,7 @@ export interface Props {
26
26
  let { agreements = [], locale, artifactHref }: Props = $props();
27
27
  </script>
28
28
 
29
- <div class="sales-agreements">
29
+ <div class="sales-agreements" data-smrt-component="ExecutedAgreementsList">
30
30
  {#if agreements.length === 0}
31
31
  <p class="empty">No agreements yet.</p>
32
32
  {:else}
@@ -105,6 +105,8 @@ let { agreements = [], locale, artifactHref }: Props = $props();
105
105
  </div>
106
106
 
107
107
  <style>
108
+ @layer smrt.reset, smrt.structure, smrt.theme;
109
+ @layer smrt.theme {
108
110
  .sales-agreements {
109
111
  width: 100%;
110
112
  overflow-x: auto;
@@ -112,7 +114,7 @@ let { agreements = [], locale, artifactHref }: Props = $props();
112
114
 
113
115
  .empty {
114
116
  margin: 0;
115
- color: var(--smrt-color-on-surface-variant, #64748b);
117
+ color: var(--smrt-color-on-surface-variant);
116
118
  font-style: italic;
117
119
  }
118
120
 
@@ -126,14 +128,14 @@ let { agreements = [], locale, artifactHref }: Props = $props();
126
128
  padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-3, 0.75rem);
127
129
  text-align: left;
128
130
  font-weight: var(--smrt-typography-weight-semibold, 600);
129
- background: var(--smrt-color-surface-container, #f3f4f6);
130
- border-bottom: 1px solid var(--smrt-color-outline-variant, #d8dde6);
131
+ background: var(--smrt-color-surface-container);
132
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
131
133
  white-space: nowrap;
132
134
  }
133
135
 
134
136
  td {
135
137
  padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-3, 0.75rem);
136
- border-bottom: 1px solid var(--smrt-color-outline-variant, #d8dde6);
138
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
137
139
  vertical-align: top;
138
140
  }
139
141
 
@@ -149,7 +151,7 @@ let { agreements = [], locale, artifactHref }: Props = $props();
149
151
 
150
152
  .hash {
151
153
  margin-left: var(--smrt-spacing-1, 0.25rem);
152
- color: var(--smrt-color-on-surface-variant, #64748b);
154
+ color: var(--smrt-color-on-surface-variant);
153
155
  }
154
156
 
155
157
  .separator {
@@ -157,6 +159,7 @@ let { agreements = [], locale, artifactHref }: Props = $props();
157
159
  }
158
160
 
159
161
  a {
160
- color: var(--smrt-color-primary, #2563eb);
162
+ color: var(--smrt-color-primary);
161
163
  }
164
+ }
162
165
  </style>
@@ -84,7 +84,7 @@ function submit() {
84
84
  }
85
85
  </script>
86
86
 
87
- <section class="sales-lead-create" aria-label="Create lead">
87
+ <section class="sales-lead-create" aria-label="Create lead" data-smrt-component="LeadCreateForm">
88
88
  <Form class="sales-lead-create__form" onsubmit={submit}>
89
89
  <FormGroup label="Lead name" required>
90
90
  <Input value={name} required disabled={busy} oninput={(event) => (name = event.currentTarget.value)} />
@@ -139,8 +139,11 @@ function submit() {
139
139
  </section>
140
140
 
141
141
  <style>
142
+ @layer smrt.reset, smrt.structure, smrt.theme;
143
+ @layer smrt.theme {
142
144
  :global(.sales-lead-create__form) { display: grid; gap: var(--smrt-spacing-3, 0.75rem); }
143
145
  .sales-lead-create__actions { display: flex; justify-content: flex-end; gap: var(--smrt-spacing-2, 0.5rem); }
144
- .sales-lead-create__error { color: var(--smrt-color-error, #dc2626); margin: 0; }
145
- .sales-lead-create__duplicate { color: var(--smrt-color-warning, #a16207); margin: 0; }
146
+ .sales-lead-create__error { color: var(--smrt-color-error); margin: 0; }
147
+ .sales-lead-create__duplicate { color: var(--smrt-color-warning); margin: 0; }
148
+ }
146
149
  </style>
@@ -138,7 +138,7 @@ function isOpenTask(activity: SalesActivityView): boolean {
138
138
  }
139
139
  </script>
140
140
 
141
- <article class="sales-lead-detail">
141
+ <article class="sales-lead-detail" data-smrt-component="LeadDetail">
142
142
  <header class="head">
143
143
  <div>
144
144
  <h2 class="head__name">{lead.name}</h2>
@@ -384,6 +384,8 @@ function isOpenTask(activity: SalesActivityView): boolean {
384
384
  </article>
385
385
 
386
386
  <style>
387
+ @layer smrt.reset, smrt.structure, smrt.theme;
388
+ @layer smrt.theme {
387
389
  .sales-lead-detail {
388
390
  display: flex;
389
391
  flex-direction: column;
@@ -411,7 +413,7 @@ function isOpenTask(activity: SalesActivityView): boolean {
411
413
  .empty,
412
414
  .merged-note {
413
415
  margin: var(--smrt-spacing-1, 0.25rem) 0 0;
414
- color: var(--smrt-color-on-surface-variant, #64748b);
416
+ color: var(--smrt-color-on-surface-variant);
415
417
  }
416
418
 
417
419
  .facts {
@@ -423,7 +425,7 @@ function isOpenTask(activity: SalesActivityView): boolean {
423
425
 
424
426
  .facts__item dt,
425
427
  .timeline__kind {
426
- color: var(--smrt-color-on-surface-variant, #64748b);
428
+ color: var(--smrt-color-on-surface-variant);
427
429
  font-size: var(--smrt-typography-label-medium-size, 0.75rem);
428
430
  }
429
431
 
@@ -432,7 +434,7 @@ function isOpenTask(activity: SalesActivityView): boolean {
432
434
  overflow-wrap: anywhere;
433
435
  }
434
436
 
435
- .linked-opportunity { display: flex; flex-wrap: wrap; align-items: center; gap: var(--smrt-spacing-2, 0.5rem); padding: var(--smrt-spacing-3, 0.75rem); border: 1px solid var(--smrt-color-outline-variant, #d8dde6); border-radius: var(--smrt-radius-md, 0.5rem); }
437
+ .linked-opportunity { display: flex; flex-wrap: wrap; align-items: center; gap: var(--smrt-spacing-2, 0.5rem); padding: var(--smrt-spacing-3, 0.75rem); border: 1px solid var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-md, 0.5rem); }
436
438
  .linked-opportunity h3 { flex-basis: 100%; font-size: var(--smrt-typography-title-small-size, 1rem); }
437
439
 
438
440
  .controls,
@@ -442,8 +444,8 @@ function isOpenTask(activity: SalesActivityView): boolean {
442
444
  align-items: flex-end;
443
445
  gap: var(--smrt-spacing-3, 0.75rem);
444
446
  padding: var(--smrt-spacing-3, 0.75rem);
445
- border: 1px solid var(--smrt-color-outline-variant, #d8dde6);
446
- border-radius: var(--smrt-radius-md, 8px);
447
+ border: 1px solid var(--smrt-color-outline-variant);
448
+ border-radius: var(--smrt-radius-md);
447
449
  }
448
450
 
449
451
  .sales-lead-detail :global(.control-form) {
@@ -465,7 +467,7 @@ function isOpenTask(activity: SalesActivityView): boolean {
465
467
 
466
468
  h3 {
467
469
  margin-bottom: var(--smrt-spacing-2, 0.5rem);
468
- color: var(--smrt-color-on-surface-variant, #64748b);
470
+ color: var(--smrt-color-on-surface-variant);
469
471
  font-size: var(--smrt-typography-title-small-size, 0.875rem);
470
472
  letter-spacing: 0.04em;
471
473
  text-transform: uppercase;
@@ -486,13 +488,13 @@ function isOpenTask(activity: SalesActivityView): boolean {
486
488
  align-items: center;
487
489
  gap: var(--smrt-spacing-2, 0.5rem);
488
490
  padding: var(--smrt-spacing-2, 0.5rem);
489
- border: 1px solid var(--smrt-color-outline-variant, #d8dde6);
490
- border-radius: var(--smrt-radius-sm, 4px);
491
+ border: 1px solid var(--smrt-color-outline-variant);
492
+ border-radius: var(--smrt-radius-sm);
491
493
  }
492
494
 
493
495
  .timeline__item.next-action {
494
- border-color: var(--smrt-color-primary, #2563eb);
495
- background: var(--smrt-color-primary-container, #eff6ff);
496
+ border-color: var(--smrt-color-primary);
497
+ background: var(--smrt-color-primary-container);
496
498
  }
497
499
 
498
500
  .timeline__content {
@@ -515,12 +517,12 @@ function isOpenTask(activity: SalesActivityView): boolean {
515
517
  flex: 1 1 12rem;
516
518
  flex-wrap: wrap;
517
519
  gap: var(--smrt-spacing-2, 0.5rem);
518
- color: var(--smrt-color-on-surface-variant, #64748b);
520
+ color: var(--smrt-color-on-surface-variant);
519
521
  font-size: var(--smrt-typography-body-small-size, 0.75rem);
520
522
  }
521
523
 
522
524
  .timeline__meta .overdue {
523
- color: var(--smrt-color-error, #dc2626);
525
+ color: var(--smrt-color-error);
524
526
  font-weight: var(--smrt-typography-weight-semibold, 600);
525
527
  }
526
528
 
@@ -537,4 +539,5 @@ function isOpenTask(activity: SalesActivityView): boolean {
537
539
  width: 100%;
538
540
  }
539
541
  }
542
+ }
540
543
  </style>
@@ -105,7 +105,7 @@ function handleAssign(leadId: string, event: Event) {
105
105
  }
106
106
  </script>
107
107
 
108
- <div class="sales-lead-list">
108
+ <div class="sales-lead-list" data-smrt-component="LeadList">
109
109
  <nav class="inbox-controls" aria-label="Lead inbox filters">
110
110
  <div class="filters" role="group" aria-label="Filter leads">
111
111
  {#each filters as filter (filter.value)}
@@ -256,6 +256,8 @@ function handleAssign(leadId: string, event: Event) {
256
256
  </div>
257
257
 
258
258
  <style>
259
+ @layer smrt.reset, smrt.structure, smrt.theme;
260
+ @layer smrt.theme {
259
261
  .sales-lead-list {
260
262
  width: 100%;
261
263
  overflow-x: auto;
@@ -263,15 +265,15 @@ function handleAssign(leadId: string, event: Event) {
263
265
 
264
266
  .sales-lead-list__empty {
265
267
  margin: 0;
266
- color: var(--smrt-color-on-surface-variant, #64748b);
268
+ color: var(--smrt-color-on-surface-variant);
267
269
  font-style: italic;
268
270
  }
269
271
 
270
272
  .inbox-controls { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--smrt-spacing-3, 0.75rem); margin-bottom: var(--smrt-spacing-3, 0.75rem); }
271
273
  .filters { display: flex; flex-wrap: wrap; gap: var(--smrt-spacing-1, 0.25rem); }
272
- .filters :global(.filter-tab) { border: 1px solid var(--smrt-color-outline-variant, #d8dde6); border-radius: var(--smrt-radius-sm, 0.25rem); padding: var(--smrt-spacing-1, 0.25rem) var(--smrt-spacing-2, 0.5rem); background: var(--smrt-color-surface, #fff); color: var(--smrt-color-on-surface, #111827); cursor: pointer; }
273
- .filters :global(.filter-tab.active) { background: var(--smrt-color-primary-container, #dbeafe); border-color: var(--smrt-color-primary, #2563eb); }
274
- .count { margin-left: var(--smrt-spacing-1, 0.25rem); color: var(--smrt-color-on-surface-variant, #64748b); }
274
+ .filters :global(.filter-tab) { border: 1px solid var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-sm, 0.25rem); padding: var(--smrt-spacing-1, 0.25rem) var(--smrt-spacing-2, 0.5rem); background: var(--smrt-color-surface); color: var(--smrt-color-on-surface); cursor: pointer; }
275
+ .filters :global(.filter-tab.active) { background: var(--smrt-color-primary-container); border-color: var(--smrt-color-primary); }
276
+ .count { margin-left: var(--smrt-spacing-1, 0.25rem); color: var(--smrt-color-on-surface-variant); }
275
277
  .sort-control { display: flex; align-items: center; gap: var(--smrt-spacing-2, 0.5rem); }
276
278
  .pagination { display: flex; align-items: center; justify-content: flex-end; gap: var(--smrt-spacing-3, 0.75rem); padding-top: var(--smrt-spacing-3, 0.75rem); }
277
279
 
@@ -285,14 +287,14 @@ function handleAssign(leadId: string, event: Event) {
285
287
  padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-3, 0.75rem);
286
288
  text-align: left;
287
289
  font-weight: var(--smrt-typography-weight-semibold, 600);
288
- background: var(--smrt-color-surface-container, #f3f4f6);
289
- border-bottom: 1px solid var(--smrt-color-outline-variant, #d8dde6);
290
+ background: var(--smrt-color-surface-container);
291
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
290
292
  white-space: nowrap;
291
293
  }
292
294
 
293
295
  td {
294
296
  padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-3, 0.75rem);
295
- border-bottom: 1px solid var(--smrt-color-outline-variant, #d8dde6);
297
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
296
298
  vertical-align: top;
297
299
  }
298
300
 
@@ -307,17 +309,17 @@ function handleAssign(leadId: string, event: Event) {
307
309
  a.lead-name { color: inherit; text-decoration: none; }
308
310
  a.lead-name:hover, :global(.select-lead:hover) { text-decoration: underline; }
309
311
  :global(.select-lead) { padding: 0; border: 0; background: none; text-align: left; cursor: pointer; color: inherit; }
310
- tr.selected td { background: var(--smrt-color-primary-container, #eff6ff); }
312
+ tr.selected td { background: var(--smrt-color-primary-container); }
311
313
 
312
314
  .secondary {
313
315
  display: block;
314
- color: var(--smrt-color-on-surface-variant, #64748b);
316
+ color: var(--smrt-color-on-surface-variant);
315
317
  font-size: var(--smrt-typography-body-small-size, 0.75rem);
316
318
  }
317
319
 
318
320
  .merged-note {
319
321
  display: block;
320
- color: var(--smrt-color-on-surface-variant, #64748b);
322
+ color: var(--smrt-color-on-surface-variant);
321
323
  font-size: var(--smrt-typography-body-small-size, 0.75rem);
322
324
  }
323
325
 
@@ -330,7 +332,7 @@ function handleAssign(leadId: string, event: Event) {
330
332
  }
331
333
 
332
334
  .next-action.overdue {
333
- color: var(--smrt-color-error, #dc2626);
335
+ color: var(--smrt-color-error);
334
336
  font-weight: var(--smrt-typography-weight-medium, 500);
335
337
  }
336
338
 
@@ -347,4 +349,5 @@ function handleAssign(leadId: string, event: Event) {
347
349
  clip: rect(0 0 0 0);
348
350
  white-space: nowrap;
349
351
  }
352
+ }
350
353
  </style>