@pallasoft/ps-core-components 2.33.0 → 2.35.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 (144) hide show
  1. package/dist/analytics/index.d.ts +12 -0
  2. package/dist/analytics/index.js +28 -0
  3. package/dist/analytics/report-client-error.d.ts +1 -0
  4. package/dist/analytics/report-client-error.js +6 -0
  5. package/dist/components/ps-analytics-provider.d.ts +15 -0
  6. package/dist/components/ps-analytics-provider.js +73 -0
  7. package/dist/components/ps-client-error-reporter.d.ts +5 -0
  8. package/dist/components/ps-client-error-reporter.js +22 -0
  9. package/dist/components/ps-consent-banner.d.ts +11 -0
  10. package/dist/components/ps-consent-banner.js +21 -0
  11. package/dist/constants/ps-analytics-config.d.ts +20 -0
  12. package/dist/constants/ps-analytics-config.js +23 -0
  13. package/dist/constants/ps-client-error-config.d.ts +23 -0
  14. package/dist/constants/ps-client-error-config.js +17 -0
  15. package/dist/esm/analytics/index.js +12 -0
  16. package/dist/esm/analytics/report-client-error.js +2 -0
  17. package/dist/esm/components/ps-accordion.js +2 -2
  18. package/dist/esm/components/ps-action-tile.js +2 -2
  19. package/dist/esm/components/ps-active-filter-chip.js +1 -1
  20. package/dist/esm/components/ps-analytics-provider.js +69 -0
  21. package/dist/esm/components/ps-app-store-buttons.js +3 -3
  22. package/dist/esm/components/ps-audio-spectrum.js +1 -1
  23. package/dist/esm/components/ps-badge.js +2 -2
  24. package/dist/esm/components/ps-button.js +2 -2
  25. package/dist/esm/components/ps-capped-list.js +2 -2
  26. package/dist/esm/components/ps-card-block-skeleton.js +2 -2
  27. package/dist/esm/components/ps-card.js +3 -3
  28. package/dist/esm/components/ps-client-error-reporter.js +18 -0
  29. package/dist/esm/components/ps-client-only.js +1 -1
  30. package/dist/esm/components/ps-consent-banner.js +17 -0
  31. package/dist/esm/components/ps-drag-overlay.js +2 -2
  32. package/dist/esm/components/ps-draggable-grid.js +5 -5
  33. package/dist/esm/components/ps-fab.js +1 -1
  34. package/dist/esm/components/ps-faq-answer.js +1 -1
  35. package/dist/esm/components/ps-feature-card.js +1 -1
  36. package/dist/esm/components/ps-feature-grid.js +3 -3
  37. package/dist/esm/components/ps-form-fields-skeleton.js +3 -3
  38. package/dist/esm/components/ps-form-footer.js +1 -1
  39. package/dist/esm/components/ps-form-page-skeleton.js +4 -4
  40. package/dist/esm/components/ps-icon-button.js +1 -1
  41. package/dist/esm/components/ps-icon-link.js +1 -1
  42. package/dist/esm/components/ps-infinite-scroll.js +1 -1
  43. package/dist/esm/components/ps-intro-skeleton.js +1 -1
  44. package/dist/esm/components/ps-layer.js +1 -1
  45. package/dist/esm/components/ps-link-button.js +1 -1
  46. package/dist/esm/components/ps-link-tile-grid.js +1 -1
  47. package/dist/esm/components/ps-list-tile.js +2 -2
  48. package/dist/esm/components/ps-metric-card.js +2 -2
  49. package/dist/esm/components/ps-metric-grid-skeleton.js +1 -1
  50. package/dist/esm/components/ps-metric-grid.js +2 -2
  51. package/dist/esm/components/ps-metric-row.js +2 -2
  52. package/dist/esm/components/ps-navigation-progress.js +2 -2
  53. package/dist/esm/components/ps-page-header.js +2 -2
  54. package/dist/esm/components/ps-page-skeleton.js +6 -6
  55. package/dist/esm/components/ps-pallasoft-mark.js +1 -1
  56. package/dist/esm/components/ps-pallasoft-sign-in-button.js +2 -2
  57. package/dist/esm/components/ps-pill.js +2 -2
  58. package/dist/esm/components/ps-rating-display.js +2 -2
  59. package/dist/esm/components/ps-scaled-preview.js +2 -2
  60. package/dist/esm/components/ps-section-header.js +3 -3
  61. package/dist/esm/components/ps-section-panel-skeleton.js +1 -1
  62. package/dist/esm/components/ps-signed-amount.js +1 -1
  63. package/dist/esm/components/ps-site-header.js +2 -2
  64. package/dist/esm/components/ps-skeleton-card.js +2 -2
  65. package/dist/esm/components/ps-skeleton-list.js +4 -4
  66. package/dist/esm/components/ps-skeleton-media.js +3 -3
  67. package/dist/esm/components/ps-skeleton-table.js +4 -4
  68. package/dist/esm/components/ps-skeleton-text.js +3 -3
  69. package/dist/esm/components/ps-skeleton.js +3 -3
  70. package/dist/esm/components/ps-sortable-list.js +5 -5
  71. package/dist/esm/components/ps-start-panel.js +1 -1
  72. package/dist/esm/components/ps-step-list.js +2 -2
  73. package/dist/esm/components/ps-step-progress.js +1 -1
  74. package/dist/esm/components/ps-store-badge.js +1 -1
  75. package/dist/esm/components/ps-tab-row-skeleton.js +2 -2
  76. package/dist/esm/components/ps-table-list-skeleton.js +2 -2
  77. package/dist/esm/components/ps-table-page-skeleton.js +2 -2
  78. package/dist/esm/components/ps-theme-controller.js +2 -2
  79. package/dist/esm/components/ps-tool-card-grid.js +2 -2
  80. package/dist/esm/components/ps-voice-orb.js +1 -1
  81. package/dist/esm/constants/ps-analytics-config.js +20 -0
  82. package/dist/esm/constants/ps-client-error-config.js +14 -0
  83. package/dist/esm/constants/ps-draggable-grid.js +1 -1
  84. package/dist/esm/constants/ps-rating-display-config.js +1 -1
  85. package/dist/esm/constants/ps-skeleton-config.js +1 -1
  86. package/dist/esm/constants/ps-step-marker-class-names.js +1 -1
  87. package/dist/esm/constants/ps-store-badge-config.js +1 -1
  88. package/dist/esm/hooks/use-consent.js +17 -0
  89. package/dist/esm/hooks/use-ps-drag-sensors.js +1 -1
  90. package/dist/esm/hooks/use-ps-exit-transition.js +1 -1
  91. package/dist/esm/hooks/use-ps-hydrated.js +1 -1
  92. package/dist/esm/hooks/use-ps-layer-z-index.js +1 -1
  93. package/dist/esm/hooks/use-ps-navigation-progress.js +1 -1
  94. package/dist/esm/hooks/use-ps-optimistic-fetcher.js +2 -2
  95. package/dist/esm/hooks/use-ps-optimistic-save.js +2 -2
  96. package/dist/esm/hooks/use-ps-scroll-lock.js +1 -1
  97. package/dist/esm/index.js +173 -173
  98. package/dist/esm/models/analytics-csp-input.js +1 -0
  99. package/dist/esm/models/analytics-csp-origins.js +1 -0
  100. package/dist/esm/models/ps-client-error-payload.js +1 -0
  101. package/dist/esm/models/ps-client-error-settings.js +1 -0
  102. package/dist/esm/models/ps-consent-api.js +1 -0
  103. package/dist/esm/models/ps-consent-choice.js +1 -0
  104. package/dist/esm/models/ps-consent-state.js +1 -0
  105. package/dist/esm/models/ps-gtag-window.js +1 -0
  106. package/dist/esm/services/analytics-csp-service.js +27 -0
  107. package/dist/esm/services/ps-analytics-key-service.js +8 -0
  108. package/dist/esm/services/ps-client-error-service.js +72 -0
  109. package/dist/esm/services/ps-consent-service.js +57 -0
  110. package/dist/esm/services/ps-google-analytics-service.js +41 -0
  111. package/dist/esm/services/ps-optimistic-save-service.js +1 -1
  112. package/dist/esm/services/ps-post-hog-service.js +18 -0
  113. package/dist/esm/services/ps-skeleton-class-service.js +1 -1
  114. package/dist/hooks/use-consent.d.ts +2 -0
  115. package/dist/hooks/use-consent.js +21 -0
  116. package/dist/models/analytics-csp-input.d.ts +7 -0
  117. package/dist/models/analytics-csp-input.js +2 -0
  118. package/dist/models/analytics-csp-origins.d.ts +5 -0
  119. package/dist/models/analytics-csp-origins.js +2 -0
  120. package/dist/models/ps-client-error-payload.d.ts +9 -0
  121. package/dist/models/ps-client-error-payload.js +2 -0
  122. package/dist/models/ps-client-error-settings.d.ts +4 -0
  123. package/dist/models/ps-client-error-settings.js +2 -0
  124. package/dist/models/ps-consent-api.d.ts +9 -0
  125. package/dist/models/ps-consent-api.js +2 -0
  126. package/dist/models/ps-consent-choice.d.ts +1 -0
  127. package/dist/models/ps-consent-choice.js +2 -0
  128. package/dist/models/ps-consent-state.d.ts +5 -0
  129. package/dist/models/ps-consent-state.js +2 -0
  130. package/dist/models/ps-gtag-window.d.ts +4 -0
  131. package/dist/models/ps-gtag-window.js +2 -0
  132. package/dist/services/analytics-csp-service.d.ts +7 -0
  133. package/dist/services/analytics-csp-service.js +31 -0
  134. package/dist/services/ps-analytics-key-service.d.ts +3 -0
  135. package/dist/services/ps-analytics-key-service.js +12 -0
  136. package/dist/services/ps-client-error-service.d.ts +14 -0
  137. package/dist/services/ps-client-error-service.js +76 -0
  138. package/dist/services/ps-consent-service.d.ts +15 -0
  139. package/dist/services/ps-consent-service.js +61 -0
  140. package/dist/services/ps-google-analytics-service.d.ts +6 -0
  141. package/dist/services/ps-google-analytics-service.js +45 -0
  142. package/dist/services/ps-post-hog-service.d.ts +4 -0
  143. package/dist/services/ps-post-hog-service.js +55 -0
  144. package/package.json +17 -2
@@ -1,3 +1,3 @@
1
1
  import { useSyncExternalStore } from 'react';
2
- import { PsHydrationStore } from '../constants/ps-hydration-store';
2
+ import { PsHydrationStore } from '../constants/ps-hydration-store.js';
3
3
  export const usePsHydrated = () => useSyncExternalStore(PsHydrationStore.subscribe, PsHydrationStore.clientSnapshot, PsHydrationStore.serverSnapshot);
@@ -1,4 +1,4 @@
1
1
  import { useContext } from 'react';
2
2
  import { PallasoftZIndexService } from '@pallasoft/ps-design-system';
3
- import { PsLayerContext } from '../contexts/ps-layer-context';
3
+ import { PsLayerContext } from '../contexts/ps-layer-context.js';
4
4
  export const usePsLayerZIndex = (layer) => PallasoftZIndexService.above(useContext(PsLayerContext), layer);
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useRef, useState } from 'react';
2
- import { PsNavigationProgressConfig } from '../constants/ps-navigation-progress-config';
2
+ import { PsNavigationProgressConfig } from '../constants/ps-navigation-progress-config.js';
3
3
  const hidden = { isAnimated: false, isVisible: false, width: 0 };
4
4
  export const usePsNavigationProgress = (isLoading, delayMs = PsNavigationProgressConfig.showDelayMs) => {
5
5
  const [state, setState] = useState(hidden);
@@ -1,6 +1,6 @@
1
1
  import { useCallback, useEffect, useRef, useState } from 'react';
2
- import { usePsChangeQueue } from './use-ps-change-queue';
3
- import { usePsOptimisticRows } from './use-ps-optimistic-rows';
2
+ import { usePsChangeQueue } from './use-ps-change-queue.js';
3
+ import { usePsOptimisticRows } from './use-ps-optimistic-rows.js';
4
4
  export const usePsOptimisticFetcher = ({ apply, fetcher, isHolding = false, isSuccess, merge, revalidator, rows, }) => {
5
5
  const [isUnsettled, setIsUnsettled] = useState(false);
6
6
  const submitted = useRef(0);
@@ -1,6 +1,6 @@
1
1
  import { useCallback } from 'react';
2
- import { PsOptimisticSaveService } from '../services/ps-optimistic-save-service';
3
- import { usePsOptimisticFetcher } from './use-ps-optimistic-fetcher';
2
+ import { PsOptimisticSaveService } from '../services/ps-optimistic-save-service.js';
3
+ import { usePsOptimisticFetcher } from './use-ps-optimistic-fetcher.js';
4
4
  export const usePsOptimisticSave = ({ fetcher, isSuccess, revalidator, rows, scopeId, spec, }) => {
5
5
  const apply = useCallback((base, changes) => PsOptimisticSaveService.apply(base, changes, spec), [spec]);
6
6
  const optimistic = usePsOptimisticFetcher({
@@ -1,5 +1,5 @@
1
1
  import { useEffect } from 'react';
2
- import { PsScrollLockService } from '../services/ps-scroll-lock-service';
2
+ import { PsScrollLockService } from '../services/ps-scroll-lock-service.js';
3
3
  export const usePsScrollLock = (isLocked) => {
4
4
  useEffect(() => {
5
5
  if (!isLocked)
package/dist/esm/index.js CHANGED
@@ -1,173 +1,173 @@
1
- export * from './components/ps-layer';
2
- export * from './components/ps-accordion';
3
- export * from './components/ps-action-tile';
4
- export * from './components/ps-audio-spectrum';
5
- export * from './constants/ps-audio-spectrum-config';
6
- export * from './components/ps-badge';
7
- export * from './components/ps-button';
8
- export * from './components/ps-link-button';
9
- export * from './components/ps-pallasoft-mark';
10
- export * from './components/ps-pallasoft-sign-in-button';
11
- export * from './components/ps-store-badge';
12
- export * from './components/ps-app-store-buttons';
13
- export * from './constants/ps-store-platform';
14
- export * from './constants/ps-store-badge-config';
15
- export * from './models/ps-store-badge-labels';
16
- export * from './models/ps-store-badge-logo-path';
17
- export * from './models/ps-store-badge-platform-data';
18
- export * from './constants/ps-pallasoft-mark-config';
19
- export * from './components/ps-card';
20
- export * from './components/ps-client-only';
21
- export * from './components/ps-draggable-grid';
22
- export * from './components/ps-sortable-list';
23
- export * from './constants/ps-drag-config';
24
- export * from './models/ps-sortable-list';
25
- export * from './components/ps-empty-state';
26
- export * from './components/ps-fab';
27
- export * from './components/ps-infinite-scroll';
28
- export * from './components/ps-document-row';
29
- export * from './components/ps-selection-bar';
30
- export * from './components/ps-list-tile';
31
- export * from './components/ps-metric-card';
32
- export * from './components/ps-pill';
33
- export * from './components/ps-portable-text';
34
- export * from './components/ps-reflective-app-shell';
35
- export * from './components/ps-scaled-preview';
36
- export * from './components/ps-navigation-progress';
37
- export * from './components/ps-step-progress';
38
- export * from './components/ps-section-header';
39
- export * from './components/ps-site-header';
40
- export * from './hooks/use-ps-published-height';
41
- export * from './constants/ps-scaled-preview-config';
42
- export * from './constants/ps-site-header-config';
43
- export * from './components/ps-skeleton';
44
- export * from './services/ps-scroll-lock-service';
45
- export * from './services/ps-skeleton-class-service';
46
- export * from './models/ps-skeleton-size';
47
- export * from './constants/ps-skeleton-shape';
48
- export * from './components/ps-skeleton-card';
49
- export * from './components/ps-skeleton-group';
50
- export * from './components/ps-skeleton-list';
51
- export * from './components/ps-skeleton-media';
52
- export * from './components/ps-skeleton-table';
53
- export * from './components/ps-skeleton-text';
54
- export * from './components/ps-spinner';
55
- export * from './components/ps-theme-toggle';
56
- export * from './components/ps-voice-orb';
57
- export * from './hooks/use-ps-audio-spectrum';
58
- export * from './hooks/use-ps-exit-snapshot';
59
- export * from './hooks/use-ps-exit-transition';
60
- export * from './hooks/use-ps-restore-focus';
61
- export * from './hooks/use-ps-scroll-lock';
62
- export * from './hooks/use-ps-hide-on-scroll';
63
- export * from './hooks/use-ps-invisible-recaptcha';
64
- export * from './contexts/ps-layer-context';
65
- export * from './hooks/use-ps-layer-z-index';
66
- export * from './hooks/use-ps-route-loader-data';
67
- export * from './hooks/use-ps-element-size';
68
- export * from './hooks/use-ps-hydrated';
69
- export * from './hooks/use-ps-viewport';
70
- export * from './hooks/use-ps-media-query';
71
- export * from './interfaces/ps-component-props';
72
- export * from './models/ps-element-size';
73
- export * from './models/ps-voice-orb';
74
- export * from './models/ps-navigation-progress';
75
- export * from './hooks/use-ps-debounced-value';
76
- export * from './hooks/use-ps-change-queue';
77
- export * from './interfaces/ps-change-queue-input';
78
- export * from './interfaces/ps-change-queue-result';
79
- export * from './hooks/use-ps-live';
80
- export * from './hooks/use-ps-debounced-revalidate';
81
- export * from './hooks/use-ps-optimistic-rows';
82
- export * from './hooks/use-ps-optimistic-fetcher';
83
- export * from './hooks/use-ps-optimistic-save';
84
- export * from './constants/ps-optimistic-config';
85
- export * from './interfaces/ps-optimistic-save-input';
86
- export * from './interfaces/ps-optimistic-save-result';
87
- export * from './interfaces/ps-optimistic-save-spec';
88
- export * from './interfaces/ps-revalidation-args';
89
- export * from './services/ps-optimistic-save-service';
90
- export * from './services/ps-client-param-revalidation-service';
91
- export * from './interfaces/ps-fetcher-like';
92
- export * from './interfaces/ps-fetcher-submit-options';
93
- export * from './interfaces/ps-live-handle';
94
- export * from './interfaces/ps-live-input';
95
- export * from './interfaces/ps-live-open-options';
96
- export * from './interfaces/ps-optimistic-fetcher-input';
97
- export * from './interfaces/ps-optimistic-fetcher-result';
98
- export * from './interfaces/ps-revalidator-like';
99
- export * from './interfaces/ps-optimistic-rows-input';
100
- export * from './interfaces/ps-optimistic-rows-result';
101
- export * from './hooks/use-ps-navigation-progress';
102
- export * from './models/ps-draggable-grid';
103
- export * from './constants/ps-draggable-grid';
104
- export * from './constants/ps-navigation-progress-config';
105
- export * from './constants/ps-step-progress-config';
106
- export * from './components/ps-active-filter-chip';
107
- export * from './components/ps-back-link';
108
- export * from './components/ps-card-block-skeleton';
109
- export * from './components/ps-data-boundary';
110
- export * from './components/ps-faq-answer';
111
- export * from './components/ps-feature-grid';
112
- export * from './components/ps-feature-card';
113
- export * from './components/ps-page-backdrop';
114
- export * from './components/ps-section-intro';
115
- export * from './components/ps-form-fields-skeleton';
116
- export * from './components/ps-form-page-skeleton';
117
- export * from './components/ps-icon-button';
118
- export * from './components/ps-icon-link';
119
- export * from './components/ps-intro-skeleton';
120
- export * from './components/ps-link-tile-grid';
121
- export * from './components/ps-metric-grid';
122
- export * from './components/ps-metric-grid-skeleton';
123
- export * from './components/ps-metric-row';
124
- export * from './components/ps-page-header';
125
- export * from './components/ps-page-intro';
126
- export * from './components/ps-page-layout';
127
- export * from './components/ps-page-skeleton';
128
- export * from './components/ps-page-stack';
129
- export * from './components/ps-section-panel';
130
- export * from './components/ps-section-panel-skeleton';
131
- export * from './components/ps-signed-amount';
132
- export * from './components/ps-tab-row-skeleton';
133
- export * from './components/ps-table-list-skeleton';
134
- export * from './components/ps-table-page-skeleton';
135
- export * from './components/ps-theme-controller';
136
- export * from './components/ps-theme-system-listener';
137
- export * from './components/ps-tool-card-grid';
138
- export * from './constants/ps-amount-direction-classes';
139
- export * from './constants/ps-faq-block-kind';
140
- export * from './constants/ps-icon-action-config';
141
- export * from './constants/ps-metric-grid-config';
142
- export * from './constants/ps-page-skeleton-config';
143
- export * from './constants/ps-website-section-config';
144
- export * from './hooks/use-ps-theme-mode';
145
- export * from './models/ps-faq-block-data';
146
- export * from './models/ps-feature-card-data';
147
- export * from './models/ps-link-tile-data';
148
- export * from './models/ps-metric-item-data';
149
- export * from './models/ps-theme-mode-state';
150
- export * from './models/ps-tool-card-data';
151
- export * from './components/ps-capped-list';
152
- export * from './components/ps-detail-list';
153
- export * from './components/ps-overview-card';
154
- export * from './components/ps-form-footer';
155
- export * from './components/ps-start-highlight';
156
- export * from './components/ps-start-panel';
157
- export * from './components/ps-start-preview';
158
- export * from './components/ps-step-list';
159
- export * from './components/ps-summary-bar';
160
- export * from './constants/ps-step-state';
161
- export * from './hooks/use-ps-dismissable';
162
- export * from './models/ps-detail-list-item';
163
- export * from './models/ps-start-panel-step';
164
- export * from './models/ps-step-list-item';
165
- export * from './models/ps-summary-item';
166
- export * from './components/ps-drag-grip';
167
- export * from './components/ps-drag-overlay';
168
- export * from './hooks/use-ps-drag-sensors';
169
- export * from './hooks/use-ps-reduced-motion';
170
- export * from './components/ps-divider';
171
- export * from './models/ps-divider-orientation';
172
- export * from './components/ps-rating-display';
173
- export * from './constants/ps-rating-display-size';
1
+ export * from './components/ps-layer.js';
2
+ export * from './components/ps-accordion.js';
3
+ export * from './components/ps-action-tile.js';
4
+ export * from './components/ps-audio-spectrum.js';
5
+ export * from './constants/ps-audio-spectrum-config.js';
6
+ export * from './components/ps-badge.js';
7
+ export * from './components/ps-button.js';
8
+ export * from './components/ps-link-button.js';
9
+ export * from './components/ps-pallasoft-mark.js';
10
+ export * from './components/ps-pallasoft-sign-in-button.js';
11
+ export * from './components/ps-store-badge.js';
12
+ export * from './components/ps-app-store-buttons.js';
13
+ export * from './constants/ps-store-platform.js';
14
+ export * from './constants/ps-store-badge-config.js';
15
+ export * from './models/ps-store-badge-labels.js';
16
+ export * from './models/ps-store-badge-logo-path.js';
17
+ export * from './models/ps-store-badge-platform-data.js';
18
+ export * from './constants/ps-pallasoft-mark-config.js';
19
+ export * from './components/ps-card.js';
20
+ export * from './components/ps-client-only.js';
21
+ export * from './components/ps-draggable-grid.js';
22
+ export * from './components/ps-sortable-list.js';
23
+ export * from './constants/ps-drag-config.js';
24
+ export * from './models/ps-sortable-list.js';
25
+ export * from './components/ps-empty-state.js';
26
+ export * from './components/ps-fab.js';
27
+ export * from './components/ps-infinite-scroll.js';
28
+ export * from './components/ps-document-row.js';
29
+ export * from './components/ps-selection-bar.js';
30
+ export * from './components/ps-list-tile.js';
31
+ export * from './components/ps-metric-card.js';
32
+ export * from './components/ps-pill.js';
33
+ export * from './components/ps-portable-text.js';
34
+ export * from './components/ps-reflective-app-shell.js';
35
+ export * from './components/ps-scaled-preview.js';
36
+ export * from './components/ps-navigation-progress.js';
37
+ export * from './components/ps-step-progress.js';
38
+ export * from './components/ps-section-header.js';
39
+ export * from './components/ps-site-header.js';
40
+ export * from './hooks/use-ps-published-height.js';
41
+ export * from './constants/ps-scaled-preview-config.js';
42
+ export * from './constants/ps-site-header-config.js';
43
+ export * from './components/ps-skeleton.js';
44
+ export * from './services/ps-scroll-lock-service.js';
45
+ export * from './services/ps-skeleton-class-service.js';
46
+ export * from './models/ps-skeleton-size.js';
47
+ export * from './constants/ps-skeleton-shape.js';
48
+ export * from './components/ps-skeleton-card.js';
49
+ export * from './components/ps-skeleton-group.js';
50
+ export * from './components/ps-skeleton-list.js';
51
+ export * from './components/ps-skeleton-media.js';
52
+ export * from './components/ps-skeleton-table.js';
53
+ export * from './components/ps-skeleton-text.js';
54
+ export * from './components/ps-spinner.js';
55
+ export * from './components/ps-theme-toggle.js';
56
+ export * from './components/ps-voice-orb.js';
57
+ export * from './hooks/use-ps-audio-spectrum.js';
58
+ export * from './hooks/use-ps-exit-snapshot.js';
59
+ export * from './hooks/use-ps-exit-transition.js';
60
+ export * from './hooks/use-ps-restore-focus.js';
61
+ export * from './hooks/use-ps-scroll-lock.js';
62
+ export * from './hooks/use-ps-hide-on-scroll.js';
63
+ export * from './hooks/use-ps-invisible-recaptcha.js';
64
+ export * from './contexts/ps-layer-context.js';
65
+ export * from './hooks/use-ps-layer-z-index.js';
66
+ export * from './hooks/use-ps-route-loader-data.js';
67
+ export * from './hooks/use-ps-element-size.js';
68
+ export * from './hooks/use-ps-hydrated.js';
69
+ export * from './hooks/use-ps-viewport.js';
70
+ export * from './hooks/use-ps-media-query.js';
71
+ export * from './interfaces/ps-component-props.js';
72
+ export * from './models/ps-element-size.js';
73
+ export * from './models/ps-voice-orb.js';
74
+ export * from './models/ps-navigation-progress.js';
75
+ export * from './hooks/use-ps-debounced-value.js';
76
+ export * from './hooks/use-ps-change-queue.js';
77
+ export * from './interfaces/ps-change-queue-input.js';
78
+ export * from './interfaces/ps-change-queue-result.js';
79
+ export * from './hooks/use-ps-live.js';
80
+ export * from './hooks/use-ps-debounced-revalidate.js';
81
+ export * from './hooks/use-ps-optimistic-rows.js';
82
+ export * from './hooks/use-ps-optimistic-fetcher.js';
83
+ export * from './hooks/use-ps-optimistic-save.js';
84
+ export * from './constants/ps-optimistic-config.js';
85
+ export * from './interfaces/ps-optimistic-save-input.js';
86
+ export * from './interfaces/ps-optimistic-save-result.js';
87
+ export * from './interfaces/ps-optimistic-save-spec.js';
88
+ export * from './interfaces/ps-revalidation-args.js';
89
+ export * from './services/ps-optimistic-save-service.js';
90
+ export * from './services/ps-client-param-revalidation-service.js';
91
+ export * from './interfaces/ps-fetcher-like.js';
92
+ export * from './interfaces/ps-fetcher-submit-options.js';
93
+ export * from './interfaces/ps-live-handle.js';
94
+ export * from './interfaces/ps-live-input.js';
95
+ export * from './interfaces/ps-live-open-options.js';
96
+ export * from './interfaces/ps-optimistic-fetcher-input.js';
97
+ export * from './interfaces/ps-optimistic-fetcher-result.js';
98
+ export * from './interfaces/ps-revalidator-like.js';
99
+ export * from './interfaces/ps-optimistic-rows-input.js';
100
+ export * from './interfaces/ps-optimistic-rows-result.js';
101
+ export * from './hooks/use-ps-navigation-progress.js';
102
+ export * from './models/ps-draggable-grid.js';
103
+ export * from './constants/ps-draggable-grid.js';
104
+ export * from './constants/ps-navigation-progress-config.js';
105
+ export * from './constants/ps-step-progress-config.js';
106
+ export * from './components/ps-active-filter-chip.js';
107
+ export * from './components/ps-back-link.js';
108
+ export * from './components/ps-card-block-skeleton.js';
109
+ export * from './components/ps-data-boundary.js';
110
+ export * from './components/ps-faq-answer.js';
111
+ export * from './components/ps-feature-grid.js';
112
+ export * from './components/ps-feature-card.js';
113
+ export * from './components/ps-page-backdrop.js';
114
+ export * from './components/ps-section-intro.js';
115
+ export * from './components/ps-form-fields-skeleton.js';
116
+ export * from './components/ps-form-page-skeleton.js';
117
+ export * from './components/ps-icon-button.js';
118
+ export * from './components/ps-icon-link.js';
119
+ export * from './components/ps-intro-skeleton.js';
120
+ export * from './components/ps-link-tile-grid.js';
121
+ export * from './components/ps-metric-grid.js';
122
+ export * from './components/ps-metric-grid-skeleton.js';
123
+ export * from './components/ps-metric-row.js';
124
+ export * from './components/ps-page-header.js';
125
+ export * from './components/ps-page-intro.js';
126
+ export * from './components/ps-page-layout.js';
127
+ export * from './components/ps-page-skeleton.js';
128
+ export * from './components/ps-page-stack.js';
129
+ export * from './components/ps-section-panel.js';
130
+ export * from './components/ps-section-panel-skeleton.js';
131
+ export * from './components/ps-signed-amount.js';
132
+ export * from './components/ps-tab-row-skeleton.js';
133
+ export * from './components/ps-table-list-skeleton.js';
134
+ export * from './components/ps-table-page-skeleton.js';
135
+ export * from './components/ps-theme-controller.js';
136
+ export * from './components/ps-theme-system-listener.js';
137
+ export * from './components/ps-tool-card-grid.js';
138
+ export * from './constants/ps-amount-direction-classes.js';
139
+ export * from './constants/ps-faq-block-kind.js';
140
+ export * from './constants/ps-icon-action-config.js';
141
+ export * from './constants/ps-metric-grid-config.js';
142
+ export * from './constants/ps-page-skeleton-config.js';
143
+ export * from './constants/ps-website-section-config.js';
144
+ export * from './hooks/use-ps-theme-mode.js';
145
+ export * from './models/ps-faq-block-data.js';
146
+ export * from './models/ps-feature-card-data.js';
147
+ export * from './models/ps-link-tile-data.js';
148
+ export * from './models/ps-metric-item-data.js';
149
+ export * from './models/ps-theme-mode-state.js';
150
+ export * from './models/ps-tool-card-data.js';
151
+ export * from './components/ps-capped-list.js';
152
+ export * from './components/ps-detail-list.js';
153
+ export * from './components/ps-overview-card.js';
154
+ export * from './components/ps-form-footer.js';
155
+ export * from './components/ps-start-highlight.js';
156
+ export * from './components/ps-start-panel.js';
157
+ export * from './components/ps-start-preview.js';
158
+ export * from './components/ps-step-list.js';
159
+ export * from './components/ps-summary-bar.js';
160
+ export * from './constants/ps-step-state.js';
161
+ export * from './hooks/use-ps-dismissable.js';
162
+ export * from './models/ps-detail-list-item.js';
163
+ export * from './models/ps-start-panel-step.js';
164
+ export * from './models/ps-step-list-item.js';
165
+ export * from './models/ps-summary-item.js';
166
+ export * from './components/ps-drag-grip.js';
167
+ export * from './components/ps-drag-overlay.js';
168
+ export * from './hooks/use-ps-drag-sensors.js';
169
+ export * from './hooks/use-ps-reduced-motion.js';
170
+ export * from './components/ps-divider.js';
171
+ export * from './models/ps-divider-orientation.js';
172
+ export * from './components/ps-rating-display.js';
173
+ export * from './constants/ps-rating-display-size.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ import { PsAnalyticsConfig } from '../constants/ps-analytics-config.js';
2
+ import { PsAnalyticsKeyService } from './ps-analytics-key-service.js';
3
+ export class AnalyticsCspService {
4
+ static origins(input) {
5
+ const isGoogleOn = PsAnalyticsKeyService.isEnabled(input.googleAnalyticsId);
6
+ const isPostHogOn = PsAnalyticsKeyService.isEnabled(input.postHogKey);
7
+ const googleUrls = isGoogleOn ? this.parse(input.googleAnalyticsUrls) : [];
8
+ const tagManagerUrls = isGoogleOn ? this.parse(input.googleTagManagerUrls) : [];
9
+ const postHogUrls = isPostHogOn ? this.parse(input.postHogUrls) : [];
10
+ return {
11
+ scriptSrc: this.unique([...tagManagerUrls, ...postHogUrls]),
12
+ connectSrc: this.unique([...googleUrls, ...tagManagerUrls, ...postHogUrls]),
13
+ imgSrc: this.unique([...googleUrls, ...tagManagerUrls]),
14
+ };
15
+ }
16
+ static parse(value) {
17
+ if (!value)
18
+ return [];
19
+ return value
20
+ .split(PsAnalyticsConfig.listSeparator)
21
+ .map((item) => item.trim())
22
+ .filter((item) => PsAnalyticsKeyService.isEnabled(item));
23
+ }
24
+ static unique(values) {
25
+ return Array.from(new Set(values));
26
+ }
27
+ }
@@ -0,0 +1,8 @@
1
+ import { PsAnalyticsConfig } from '../constants/ps-analytics-config.js';
2
+ export class PsAnalyticsKeyService {
3
+ static isEnabled(value) {
4
+ if (value === null || value === undefined)
5
+ return false;
6
+ return !PsAnalyticsConfig.offValues.includes(value.trim());
7
+ }
8
+ }
@@ -0,0 +1,72 @@
1
+ import { PsClientErrorConfig } from '../constants/ps-client-error-config.js';
2
+ export class PsClientErrorService {
3
+ static configure(settings) {
4
+ this.settings = settings;
5
+ }
6
+ static clear() {
7
+ this.settings = null;
8
+ }
9
+ static reset() {
10
+ this.settings = null;
11
+ this.sentKeys.clear();
12
+ this.sentCount = 0;
13
+ }
14
+ static report(error, context = '', source = PsClientErrorConfig.sources.boundary) {
15
+ if (!this.settings || typeof window === 'undefined')
16
+ return;
17
+ if (this.sentCount >= PsClientErrorConfig.maxReportsPerPage)
18
+ return;
19
+ const payload = this.payload(error, context, source, this.settings);
20
+ const key = `${payload.message}|${payload.context}`;
21
+ if (this.sentKeys.has(key))
22
+ return;
23
+ this.sentKeys.add(key);
24
+ this.sentCount += 1;
25
+ this.send(this.settings.endpoint, JSON.stringify(payload));
26
+ }
27
+ static payload(error, context, source, settings) {
28
+ const isError = error instanceof Error;
29
+ const rawMessage = isError ? error.message : typeof error === 'string' ? error : '';
30
+ return {
31
+ message: this.clean(rawMessage ? rawMessage : PsClientErrorConfig.unknownMessage).slice(0, PsClientErrorConfig.maxMessageLength),
32
+ stack: isError && error.stack
33
+ ? this.clean(error.stack).slice(0, PsClientErrorConfig.maxStackLength)
34
+ : '',
35
+ pathname: window.location.pathname,
36
+ appVersion: settings.appVersion ? settings.appVersion : '',
37
+ userAgentClass: this.userAgentClass(),
38
+ source,
39
+ context: this.clean(context).slice(0, PsClientErrorConfig.maxContextLength),
40
+ };
41
+ }
42
+ static clean(value) {
43
+ return value.replace(PsClientErrorConfig.emailPattern, PsClientErrorConfig.redactedValue);
44
+ }
45
+ static userAgentClass() {
46
+ const agent = typeof navigator === 'undefined' ? '' : navigator.userAgent;
47
+ const classes = PsClientErrorConfig.userAgentClasses;
48
+ if (!agent)
49
+ return classes.unknown;
50
+ if (PsClientErrorConfig.botPattern.test(agent))
51
+ return classes.bot;
52
+ if (PsClientErrorConfig.mobilePattern.test(agent))
53
+ return classes.mobile;
54
+ return classes.desktop;
55
+ }
56
+ static send(endpoint, body) {
57
+ if (typeof navigator !== 'undefined' && typeof navigator.sendBeacon === 'function') {
58
+ const blob = new Blob([body], { type: PsClientErrorConfig.jsonContentType });
59
+ if (navigator.sendBeacon(endpoint, blob))
60
+ return;
61
+ }
62
+ fetch(endpoint, {
63
+ method: 'POST',
64
+ headers: { 'Content-Type': PsClientErrorConfig.jsonContentType },
65
+ body,
66
+ keepalive: true,
67
+ }).catch(() => undefined);
68
+ }
69
+ }
70
+ PsClientErrorService.settings = null;
71
+ PsClientErrorService.sentKeys = new Set();
72
+ PsClientErrorService.sentCount = 0;
@@ -0,0 +1,57 @@
1
+ import { PsAnalyticsConfig } from '../constants/ps-analytics-config.js';
2
+ export class PsConsentService {
3
+ static snapshot(cookieName) {
4
+ const existing = this.states.get(cookieName);
5
+ if (existing)
6
+ return existing;
7
+ const state = { choice: this.readCookie(cookieName), isReopened: false };
8
+ this.states.set(cookieName, state);
9
+ return state;
10
+ }
11
+ static subscribe(listener) {
12
+ this.listeners.add(listener);
13
+ return () => {
14
+ this.listeners.delete(listener);
15
+ };
16
+ }
17
+ static choose(cookieName, choice) {
18
+ this.writeCookie(cookieName, choice);
19
+ this.states.set(cookieName, { choice, isReopened: false });
20
+ this.notify();
21
+ }
22
+ static reopen(cookieName) {
23
+ this.states.set(cookieName, { ...this.snapshot(cookieName), isReopened: true });
24
+ this.notify();
25
+ }
26
+ static reset() {
27
+ this.states.clear();
28
+ this.notify();
29
+ }
30
+ static notify() {
31
+ this.listeners.forEach((listener) => listener());
32
+ }
33
+ static readCookie(cookieName) {
34
+ if (typeof document === 'undefined')
35
+ return null;
36
+ const prefix = `${cookieName}=`;
37
+ const entry = document.cookie
38
+ .split(';')
39
+ .map((part) => part.trim())
40
+ .find((part) => part.startsWith(prefix));
41
+ const value = entry ? entry.slice(prefix.length) : '';
42
+ if (value === PsAnalyticsConfig.consentGranted)
43
+ return PsAnalyticsConfig.consentGranted;
44
+ if (value === PsAnalyticsConfig.consentDenied)
45
+ return PsAnalyticsConfig.consentDenied;
46
+ return null;
47
+ }
48
+ static writeCookie(cookieName, choice) {
49
+ if (typeof document === 'undefined')
50
+ return;
51
+ const secure = window.location.protocol === 'https:' ? '; Secure' : '';
52
+ document.cookie = `${cookieName}=${choice}; Path=/; Max-Age=${PsAnalyticsConfig.consentMaxAgeSeconds}; SameSite=Lax${secure}`;
53
+ }
54
+ }
55
+ PsConsentService.serverState = { choice: null, isReopened: false };
56
+ PsConsentService.states = new Map();
57
+ PsConsentService.listeners = new Set();