@signiphi/pdf-signer 0.1.1

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 (192) hide show
  1. package/INSTALLING_LOCALLY.md +184 -0
  2. package/LICENSE +2 -0
  3. package/README.md +1093 -0
  4. package/assets/viewer.html +314 -0
  5. package/dist/__tests__/helpers/fixtures.d.ts +43 -0
  6. package/dist/__tests__/helpers/fixtures.d.ts.map +1 -0
  7. package/dist/__tests__/helpers/mocks.d.ts +333 -0
  8. package/dist/__tests__/helpers/mocks.d.ts.map +1 -0
  9. package/dist/__tests__/setup.d.ts +6 -0
  10. package/dist/__tests__/setup.d.ts.map +1 -0
  11. package/dist/components/AttachmentUpload.d.ts +17 -0
  12. package/dist/components/AttachmentUpload.d.ts.map +1 -0
  13. package/dist/components/EditableFieldsPanel.d.ts +30 -0
  14. package/dist/components/EditableFieldsPanel.d.ts.map +1 -0
  15. package/dist/components/ErrorBoundary.d.ts +67 -0
  16. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  17. package/dist/components/FormFieldsView.d.ts +42 -0
  18. package/dist/components/FormFieldsView.d.ts.map +1 -0
  19. package/dist/components/PdfViewerStyled.d.ts +16 -0
  20. package/dist/components/PdfViewerStyled.d.ts.map +1 -0
  21. package/dist/components/PoweredBySigniphi.d.ts +11 -0
  22. package/dist/components/PoweredBySigniphi.d.ts.map +1 -0
  23. package/dist/components/SignatureCanvas.d.ts +12 -0
  24. package/dist/components/SignatureCanvas.d.ts.map +1 -0
  25. package/dist/components/SignatureInitialsBox.d.ts +23 -0
  26. package/dist/components/SignatureInitialsBox.d.ts.map +1 -0
  27. package/dist/components/SignatureModal.d.ts +22 -0
  28. package/dist/components/SignatureModal.d.ts.map +1 -0
  29. package/dist/components/SigningInstructions.d.ts +12 -0
  30. package/dist/components/SigningInstructions.d.ts.map +1 -0
  31. package/dist/components/SubmissionForm.d.ts +52 -0
  32. package/dist/components/SubmissionForm.d.ts.map +1 -0
  33. package/dist/components/ViewToggleToolbar.d.ts +30 -0
  34. package/dist/components/ViewToggleToolbar.d.ts.map +1 -0
  35. package/dist/components/form-fields/CheckboxRenderer.d.ts +10 -0
  36. package/dist/components/form-fields/CheckboxRenderer.d.ts.map +1 -0
  37. package/dist/components/form-fields/DateFieldRenderer.d.ts +14 -0
  38. package/dist/components/form-fields/DateFieldRenderer.d.ts.map +1 -0
  39. package/dist/components/form-fields/DropdownRenderer.d.ts +14 -0
  40. package/dist/components/form-fields/DropdownRenderer.d.ts.map +1 -0
  41. package/dist/components/form-fields/FormFieldRenderer.d.ts +20 -0
  42. package/dist/components/form-fields/FormFieldRenderer.d.ts.map +1 -0
  43. package/dist/components/form-fields/InitialsFieldRenderer.d.ts +14 -0
  44. package/dist/components/form-fields/InitialsFieldRenderer.d.ts.map +1 -0
  45. package/dist/components/form-fields/RadioGroupRenderer.d.ts +10 -0
  46. package/dist/components/form-fields/RadioGroupRenderer.d.ts.map +1 -0
  47. package/dist/components/form-fields/SignatureFieldRenderer.d.ts +16 -0
  48. package/dist/components/form-fields/SignatureFieldRenderer.d.ts.map +1 -0
  49. package/dist/components/form-fields/TextFieldRenderer.d.ts +14 -0
  50. package/dist/components/form-fields/TextFieldRenderer.d.ts.map +1 -0
  51. package/dist/components/form-fields/TextLabelRenderer.d.ts +14 -0
  52. package/dist/components/form-fields/TextLabelRenderer.d.ts.map +1 -0
  53. package/dist/components/form-fields/index.d.ts +14 -0
  54. package/dist/components/form-fields/index.d.ts.map +1 -0
  55. package/dist/components/index.d.ts +14 -0
  56. package/dist/components/index.d.ts.map +1 -0
  57. package/dist/components/index.js +6297 -0
  58. package/dist/components/index.js.map +1 -0
  59. package/dist/components/index.mjs +6248 -0
  60. package/dist/components/index.mjs.map +1 -0
  61. package/dist/core/PdfViewerCore.d.ts +19 -0
  62. package/dist/core/PdfViewerCore.d.ts.map +1 -0
  63. package/dist/core/SignatureCaptureCore.d.ts +37 -0
  64. package/dist/core/SignatureCaptureCore.d.ts.map +1 -0
  65. package/dist/core/index.d.ts +3 -0
  66. package/dist/core/index.d.ts.map +1 -0
  67. package/dist/core/index.js +907 -0
  68. package/dist/core/index.js.map +1 -0
  69. package/dist/core/index.mjs +884 -0
  70. package/dist/core/index.mjs.map +1 -0
  71. package/dist/hooks/index.d.ts +8 -0
  72. package/dist/hooks/index.d.ts.map +1 -0
  73. package/dist/hooks/index.js +2167 -0
  74. package/dist/hooks/index.js.map +1 -0
  75. package/dist/hooks/index.mjs +2139 -0
  76. package/dist/hooks/index.mjs.map +1 -0
  77. package/dist/hooks/useAttachments.d.ts +25 -0
  78. package/dist/hooks/useAttachments.d.ts.map +1 -0
  79. package/dist/hooks/useFieldFiltering.d.ts +29 -0
  80. package/dist/hooks/useFieldFiltering.d.ts.map +1 -0
  81. package/dist/hooks/useFormFields.d.ts +23 -0
  82. package/dist/hooks/useFormFields.d.ts.map +1 -0
  83. package/dist/hooks/useMultiSignerContext.d.ts +25 -0
  84. package/dist/hooks/useMultiSignerContext.d.ts.map +1 -0
  85. package/dist/hooks/usePdfViewer.d.ts +52 -0
  86. package/dist/hooks/usePdfViewer.d.ts.map +1 -0
  87. package/dist/hooks/useSignatureCapture.d.ts +17 -0
  88. package/dist/hooks/useSignatureCapture.d.ts.map +1 -0
  89. package/dist/hooks/useSignatures.d.ts +25 -0
  90. package/dist/hooks/useSignatures.d.ts.map +1 -0
  91. package/dist/index.css +4929 -0
  92. package/dist/index.css.map +1 -0
  93. package/dist/index.d.ts +17 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +7220 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/index.mjs +7093 -0
  98. package/dist/index.mjs.map +1 -0
  99. package/dist/integrations/index.d.ts +6 -0
  100. package/dist/integrations/index.d.ts.map +1 -0
  101. package/dist/integrations/index.js +242 -0
  102. package/dist/integrations/index.js.map +1 -0
  103. package/dist/integrations/index.mjs +218 -0
  104. package/dist/integrations/index.mjs.map +1 -0
  105. package/dist/integrations/next-config.d.ts +46 -0
  106. package/dist/integrations/next-config.d.ts.map +1 -0
  107. package/dist/integrations/vite-plugin.d.ts +48 -0
  108. package/dist/integrations/vite-plugin.d.ts.map +1 -0
  109. package/dist/lib/index.d.ts +3 -0
  110. package/dist/lib/index.d.ts.map +1 -0
  111. package/dist/lib/ui/alert.d.ts +9 -0
  112. package/dist/lib/ui/alert.d.ts.map +1 -0
  113. package/dist/lib/ui/button.d.ts +12 -0
  114. package/dist/lib/ui/button.d.ts.map +1 -0
  115. package/dist/lib/ui/calendar.d.ts +10 -0
  116. package/dist/lib/ui/calendar.d.ts.map +1 -0
  117. package/dist/lib/ui/card.d.ts +9 -0
  118. package/dist/lib/ui/card.d.ts.map +1 -0
  119. package/dist/lib/ui/checkbox.d.ts +5 -0
  120. package/dist/lib/ui/checkbox.d.ts.map +1 -0
  121. package/dist/lib/ui/dialog.d.ts +20 -0
  122. package/dist/lib/ui/dialog.d.ts.map +1 -0
  123. package/dist/lib/ui/index.d.ts +12 -0
  124. package/dist/lib/ui/index.d.ts.map +1 -0
  125. package/dist/lib/ui/input.d.ts +6 -0
  126. package/dist/lib/ui/input.d.ts.map +1 -0
  127. package/dist/lib/ui/label.d.ts +6 -0
  128. package/dist/lib/ui/label.d.ts.map +1 -0
  129. package/dist/lib/ui/popover.d.ts +7 -0
  130. package/dist/lib/ui/popover.d.ts.map +1 -0
  131. package/dist/lib/ui/radio-group.d.ts +6 -0
  132. package/dist/lib/ui/radio-group.d.ts.map +1 -0
  133. package/dist/lib/ui/select.d.ts +14 -0
  134. package/dist/lib/ui/select.d.ts.map +1 -0
  135. package/dist/lib/utils.d.ts +7 -0
  136. package/dist/lib/utils.d.ts.map +1 -0
  137. package/dist/styles/index.css +5004 -0
  138. package/dist/types/index.d.ts +265 -0
  139. package/dist/types/index.d.ts.map +1 -0
  140. package/dist/types/index.js +26 -0
  141. package/dist/types/index.js.map +1 -0
  142. package/dist/types/index.mjs +23 -0
  143. package/dist/types/index.mjs.map +1 -0
  144. package/dist/utils/attachment-validators.d.ts +118 -0
  145. package/dist/utils/attachment-validators.d.ts.map +1 -0
  146. package/dist/utils/audit-trail.d.ts +27 -0
  147. package/dist/utils/audit-trail.d.ts.map +1 -0
  148. package/dist/utils/date-validation.d.ts +30 -0
  149. package/dist/utils/date-validation.d.ts.map +1 -0
  150. package/dist/utils/errors.d.ts +106 -0
  151. package/dist/utils/errors.d.ts.map +1 -0
  152. package/dist/utils/field-extraction.d.ts +27 -0
  153. package/dist/utils/field-extraction.d.ts.map +1 -0
  154. package/dist/utils/field-visibility.d.ts +104 -0
  155. package/dist/utils/field-visibility.d.ts.map +1 -0
  156. package/dist/utils/index.d.ts +17 -0
  157. package/dist/utils/index.d.ts.map +1 -0
  158. package/dist/utils/index.js +2501 -0
  159. package/dist/utils/index.js.map +1 -0
  160. package/dist/utils/index.mjs +2404 -0
  161. package/dist/utils/index.mjs.map +1 -0
  162. package/dist/utils/logger.d.ts +16 -0
  163. package/dist/utils/logger.d.ts.map +1 -0
  164. package/dist/utils/pdf-field-type-helpers.d.ts +78 -0
  165. package/dist/utils/pdf-field-type-helpers.d.ts.map +1 -0
  166. package/dist/utils/pdf-helpers.d.ts +38 -0
  167. package/dist/utils/pdf-helpers.d.ts.map +1 -0
  168. package/dist/utils/pdf-lib-loader.d.ts +45 -0
  169. package/dist/utils/pdf-lib-loader.d.ts.map +1 -0
  170. package/dist/utils/pdf-manipulation.d.ts +93 -0
  171. package/dist/utils/pdf-manipulation.d.ts.map +1 -0
  172. package/dist/utils/pdf-validators.d.ts +149 -0
  173. package/dist/utils/pdf-validators.d.ts.map +1 -0
  174. package/dist/utils/pdf-viewer-filter.d.ts +35 -0
  175. package/dist/utils/pdf-viewer-filter.d.ts.map +1 -0
  176. package/dist/utils/pdf-widget-helpers.d.ts +98 -0
  177. package/dist/utils/pdf-widget-helpers.d.ts.map +1 -0
  178. package/dist/utils/pdfjs-config.d.ts +56 -0
  179. package/dist/utils/pdfjs-config.d.ts.map +1 -0
  180. package/dist/utils/pdfjs-version-check.d.ts +28 -0
  181. package/dist/utils/pdfjs-version-check.d.ts.map +1 -0
  182. package/dist/utils/performance-monitor.d.ts +172 -0
  183. package/dist/utils/performance-monitor.d.ts.map +1 -0
  184. package/dist/utils/tracking.d.ts +89 -0
  185. package/dist/utils/tracking.d.ts.map +1 -0
  186. package/package.json +180 -0
  187. package/scripts/analyze-bundle.js +271 -0
  188. package/scripts/copy-utils.js +227 -0
  189. package/scripts/copy-utils.test.js +164 -0
  190. package/scripts/postinstall.js +109 -0
  191. package/scripts/setup.js +108 -0
  192. package/src/styles/index.css +139 -0
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Postinstall script for @signiphi/pdf-signer
5
+ * Automatically copies PDF.js viewer assets to the user's public directory
6
+ * This runs silently after package installation
7
+ */
8
+
9
+ const fs = require('fs');
10
+ const path = require('path');
11
+
12
+ // Use shared utilities
13
+ const copyUtils = require('./copy-utils.js');
14
+
15
+ /**
16
+ * Main postinstall logic
17
+ */
18
+ function postinstall() {
19
+ // Skip if running in the original monorepo development environment
20
+ // Only skip if we're in the signiphi monorepo AND running from source (not installed)
21
+ const currentDir = process.cwd();
22
+ const scriptDir = __dirname;
23
+
24
+ // Check if we're in the original signiphi monorepo (not a user's project)
25
+ const issigniphiMonorepo = currentDir.includes('signiphi') &&
26
+ fs.existsSync(path.join(currentDir, 'packages', 'pdf-signer', 'package.json')) &&
27
+ fs.existsSync(path.join(currentDir, 'packages', 'document-prepare'));
28
+
29
+ // Only skip if we're in the original monorepo AND running development commands
30
+ if (issigniphiMonorepo && scriptDir.includes('packages/pdf-signer/scripts')) {
31
+ // We're developing the package itself in the monorepo - skip
32
+ console.log('[signiphi/pdf-signer] Skipping postinstall in development monorepo');
33
+ process.exit(0);
34
+ }
35
+
36
+ // Skip if in CI environment with --ignore-scripts
37
+ if (process.env.CI && process.env.npm_config_ignore_scripts === 'true') {
38
+ process.exit(0);
39
+ }
40
+
41
+ try {
42
+ // Find pdfjs-dist - try multiple strategies
43
+ let pdfjsPath = null;
44
+
45
+ // Try require.resolve first (most reliable)
46
+ try {
47
+ const pdfjsPackagePath = require.resolve('pdfjs-dist/package.json');
48
+ pdfjsPath = path.dirname(pdfjsPackagePath);
49
+ } catch (e) {
50
+ // Try fallback method
51
+ pdfjsPath = copyUtils.findPdfjsDistPath();
52
+ }
53
+
54
+ if (!pdfjsPath || !fs.existsSync(pdfjsPath)) {
55
+ console.warn('⚠️ @signiphi/pdf-signer: pdfjs-dist not found. Run: npm install pdfjs-dist');
56
+ console.warn(' Or run: npx signiphi-setup after installing pdfjs-dist');
57
+ process.exit(0);
58
+ }
59
+
60
+ // Verify pdfjs-dist has the required directories
61
+ const buildDir = path.join(pdfjsPath, 'build');
62
+ const webDir = path.join(pdfjsPath, 'web');
63
+ if (!fs.existsSync(buildDir) || !fs.existsSync(webDir)) {
64
+ console.warn('⚠️ @signiphi/pdf-signer: pdfjs-dist found but missing required directories');
65
+ console.warn(' Run: npx signiphi-setup to manually copy files');
66
+ process.exit(0);
67
+ }
68
+
69
+ // Find public directory
70
+ const publicDir = copyUtils.findPublicDirectory();
71
+ const targetDir = path.join(publicDir, 'pdfjs');
72
+
73
+ // Ensure public directory exists
74
+ if (!fs.existsSync(publicDir)) {
75
+ fs.mkdirSync(publicDir, { recursive: true });
76
+ }
77
+
78
+ // Check if already up to date
79
+ const currentVersion = copyUtils.getPdfjsVersion();
80
+ const savedVersion = copyUtils.getSavedVersion(targetDir);
81
+
82
+ if (savedVersion === currentVersion && fs.existsSync(targetDir)) {
83
+ // Already up to date - log but exit silently
84
+ process.exit(0);
85
+ }
86
+
87
+ // Copy PDF.js files using shared utilities
88
+ const copied = copyUtils.copyPdfJsFiles(targetDir, false);
89
+
90
+ if (copied) {
91
+ // Success - log for visibility
92
+ console.log('✓ @signiphi/pdf-signer: PDF.js files copied to', targetDir);
93
+ }
94
+
95
+ process.exit(0);
96
+ } catch (error) {
97
+ // Log error but don't fail installation
98
+ console.error('⚠️ @signiphi/pdf-signer: Failed to copy PDF.js files:', error.message);
99
+ if (error.stack) {
100
+ console.error(' Stack:', error.stack);
101
+ }
102
+ console.error(' Run: npx signiphi-setup to manually copy files');
103
+ process.exit(0);
104
+ }
105
+ }
106
+
107
+ // Run postinstall
108
+ postinstall();
109
+
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Optional setup script for @signiphi/pdf-signer
5
+ * Copies PDF.js assets from node_modules/pdfjs-dist to the user's public directory
6
+ * Usage: npx signiphi-setup [target-directory] [--force]
7
+ */
8
+
9
+ const fs = require('fs');
10
+ const path = require('path');
11
+
12
+ // Use shared utilities
13
+ const copyUtils = require('./copy-utils.js');
14
+
15
+ function setupPdfjsAssets() {
16
+ console.log('🚀 Setting up @signiphi/pdf-signer for self-hosting...\n');
17
+
18
+ try {
19
+ // Parse command line arguments
20
+ const args = process.argv.slice(2);
21
+ let targetDir;
22
+ let force = false;
23
+
24
+ // Check for --force flag
25
+ if (args.includes('--force')) {
26
+ force = true;
27
+ args.splice(args.indexOf('--force'), 1);
28
+ }
29
+
30
+ if (args.length > 0 && !args[0].startsWith('--')) {
31
+ // User provided a target directory
32
+ targetDir = path.resolve(process.cwd(), args[0]);
33
+ console.log('📂 Using specified directory:', targetDir);
34
+ } else {
35
+ // Auto-detect public directory
36
+ const publicDir = copyUtils.findPublicDirectory();
37
+
38
+ // If no public dir exists, create one
39
+ if (!fs.existsSync(publicDir)) {
40
+ console.log('📁 Creating public directory:', publicDir);
41
+ fs.mkdirSync(publicDir, { recursive: true });
42
+ } else {
43
+ console.log('📂 Found public directory:', publicDir);
44
+ }
45
+
46
+ targetDir = path.join(publicDir, 'pdfjs');
47
+ }
48
+
49
+ // Check if assets already exist and are up to date
50
+ if (fs.existsSync(targetDir) && !force) {
51
+ const currentVersion = copyUtils.getPdfjsVersion();
52
+ const savedVersion = copyUtils.getSavedVersion(targetDir);
53
+
54
+ if (currentVersion === savedVersion) {
55
+ console.log('✅ PDF.js assets are already up to date (v' + currentVersion + ')');
56
+ console.log(' Location:', targetDir);
57
+ console.log('\n💡 Use --force to reinstall anyway');
58
+ return;
59
+ }
60
+
61
+ console.log('⚠️ PDF.js assets exist but version mismatch');
62
+ console.log(' Current: v' + currentVersion + ', Installed: v' + savedVersion);
63
+ console.log(' Updating files...');
64
+ fs.rmSync(targetDir, { recursive: true, force: true });
65
+ } else if (force && fs.existsSync(targetDir)) {
66
+ console.log('🔄 Force reinstalling PDF.js assets...');
67
+ fs.rmSync(targetDir, { recursive: true, force: true });
68
+ }
69
+
70
+ // Copy the necessary PDF.js assets
71
+ console.log('📦 Copying PDF.js assets...');
72
+ const pdfjsPath = copyUtils.findPdfjsDistPath();
73
+ console.log(' From:', pdfjsPath);
74
+ console.log(' To: ', targetDir);
75
+
76
+ copyUtils.copyPdfJsFiles(targetDir, force);
77
+
78
+ const version = copyUtils.getPdfjsVersion();
79
+ console.log(' ✓ Copied build files');
80
+ console.log(' ✓ Copied web files');
81
+ console.log(' ✓ Version: ' + version);
82
+
83
+ console.log('\n✅ PDF.js assets copied successfully!');
84
+ console.log('\n📝 Next steps:');
85
+ console.log(' The default configuration already uses /pdfjs for the viewer.');
86
+ console.log(' No additional setup needed unless you used a custom path!');
87
+ console.log('');
88
+ console.log(' For custom paths, configure your app:');
89
+ console.log('');
90
+ console.log(' import { setPdfJsConfig } from "@signiphi/pdf-signer";');
91
+ console.log(' setPdfJsConfig({ viewerBasePath: "/your-path" });');
92
+ console.log('');
93
+ console.log('🎉 Setup complete!');
94
+ } catch (error) {
95
+ console.error('\n❌ Error during setup:', error.message);
96
+ console.error('\n📝 Manual setup instructions:');
97
+ console.error(' 1. Make sure pdfjs-dist is installed: npm install');
98
+ console.error(' 2. Copy PDF.js files manually:');
99
+ console.error(' cp -r node_modules/pdfjs-dist/build public/pdfjs/build');
100
+ console.error(' cp -r node_modules/pdfjs-dist/web public/pdfjs/web');
101
+ console.error(' 3. Configure your app as shown above.');
102
+ process.exit(1);
103
+ }
104
+ }
105
+
106
+ // Run the setup
107
+ setupPdfjsAssets();
108
+
@@ -0,0 +1,139 @@
1
+ /* Import Dancing Script font for signatures and initials */
2
+ @import url('https://fonts.googleapis.com/css2?family=Dancing+Script:wght@400;500;600;700&display=swap');
3
+
4
+ @import "tailwindcss";
5
+
6
+ @plugin "tailwindcss-animate";
7
+
8
+ /* Accordion animations */
9
+ @keyframes accordion-down {
10
+ from {
11
+ height: 0;
12
+ opacity: 0;
13
+ }
14
+ to {
15
+ height: var(--radix-accordion-content-height);
16
+ opacity: 1;
17
+ }
18
+ }
19
+
20
+ @keyframes accordion-up {
21
+ from {
22
+ height: var(--radix-accordion-content-height);
23
+ opacity: 1;
24
+ }
25
+ to {
26
+ height: 0;
27
+ opacity: 0;
28
+ }
29
+ }
30
+
31
+ @custom-variant dark (&:is(.dark *));
32
+
33
+ :root {
34
+ /* Core Colors - DockMaster Design System (OKLCH) */
35
+ --color-dark-blue: oklch(0.23 0.12 273.81); /* #161848 */
36
+ --color-light-blue: oklch(0.862 0.038 233.28); /* #BDD9E8 */
37
+ --color-medium-blue: oklch(0.597 0.186 230.42); /* #0099CD */
38
+ --color-yellow: oklch(0.856 0.144 78.19); /* #FFC844 */
39
+ --color-white: oklch(1 0 0); /* #FFFFFF */
40
+
41
+ /* Extended Blues */
42
+ --color-darker-blue: oklch(0.14 0.11 265);
43
+ --color-deep-blue: oklch(0.18 0.12 275);
44
+ --color-navy-blue: oklch(0.25 0.13 250);
45
+ --color-slate-blue: oklch(0.3 0.09 245);
46
+
47
+ /* Greys */
48
+ --color-dark-grey: oklch(0.1 0.01 265);
49
+ --color-charcoal: oklch(0.13 0.015 265);
50
+ --color-slate-grey: oklch(0.16 0.02 265);
51
+ --color-light-grey: oklch(0.75 0.02 265);
52
+
53
+ /* Theme setup - DockMaster Design System */
54
+ --radius: 0.625rem;
55
+ --background: var(--color-white);
56
+ --foreground: var(--color-dark-blue);
57
+ --card: var(--color-white);
58
+ --card-foreground: var(--color-dark-blue);
59
+ --popover: var(--color-white);
60
+ --popover-foreground: var(--color-dark-blue);
61
+ --primary: var(--color-medium-blue);
62
+ --primary-foreground: var(--color-white);
63
+ --secondary: var(--color-light-blue);
64
+ --secondary-foreground: var(--color-dark-blue);
65
+ --muted: var(--color-light-blue);
66
+ --muted-foreground: oklch(0.4 0.08 273.81);
67
+ --accent: var(--color-yellow);
68
+ --accent-foreground: var(--color-dark-blue);
69
+ --destructive: oklch(0.577 0.245 27.325);
70
+ --destructive-foreground: var(--color-white);
71
+ --border: var(--color-light-blue);
72
+ --input: var(--color-light-blue);
73
+ --ring: var(--color-medium-blue);
74
+ }
75
+
76
+ .dark {
77
+ --background: #151b23;
78
+ --foreground: var(--color-white);
79
+ --card: var(--color-charcoal);
80
+ --card-foreground: var(--color-white);
81
+ --popover: var(--color-charcoal);
82
+ --popover-foreground: var(--color-white);
83
+ --primary: var(--color-medium-blue);
84
+ --primary-foreground: var(--color-white);
85
+ --secondary: var(--color-slate-grey);
86
+ --secondary-foreground: var(--color-white);
87
+ --muted: var(--color-slate-grey);
88
+ --muted-foreground: var(--color-light-blue);
89
+ --accent: var(--color-yellow);
90
+ --accent-foreground: var(--color-dark-blue);
91
+ --destructive: oklch(0.396 0.141 25.723);
92
+ --destructive-foreground: var(--color-white);
93
+ --border: var(--color-slate-grey);
94
+ --input: var(--color-slate-grey);
95
+ --ring: var(--color-medium-blue);
96
+ }
97
+
98
+ @theme inline {
99
+ --color-background: var(--background);
100
+ --color-foreground: var(--foreground);
101
+ --color-card: var(--card);
102
+ --color-card-foreground: var(--card-foreground);
103
+ --color-popover: var(--popover);
104
+ --color-popover-foreground: var(--popover-foreground);
105
+ --color-primary: var(--primary);
106
+ --color-primary-foreground: var(--primary-foreground);
107
+ --color-secondary: var(--secondary);
108
+ --color-secondary-foreground: var(--secondary-foreground);
109
+ --color-muted: var(--muted);
110
+ --color-muted-foreground: var(--muted-foreground);
111
+ --color-accent: var(--accent);
112
+ --color-accent-foreground: var(--accent-foreground);
113
+ --color-destructive: var(--destructive);
114
+ --color-destructive-foreground: var(--destructive-foreground);
115
+ --color-border: var(--border);
116
+ --color-input: var(--input);
117
+ --color-ring: var(--ring);
118
+ --radius-sm: calc(var(--radius) - 4px);
119
+ --radius-md: calc(var(--radius) - 2px);
120
+ --radius-lg: var(--radius);
121
+ --radius-xl: calc(var(--radius) + 4px);
122
+
123
+ /* Accordion animations */
124
+ --animate-accordion-down: accordion-down 0.2s ease-out;
125
+ --animate-accordion-up: accordion-up 0.2s ease-out;
126
+ }
127
+
128
+ @layer base {
129
+ * {
130
+ @apply border-border outline-ring/50;
131
+ }
132
+ body {
133
+ @apply bg-background text-foreground;
134
+ }
135
+ }
136
+
137
+ button {
138
+ cursor: pointer;
139
+ }