@redacto.io/consent-sdk-react 3.4.0 → 3.6.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 (155) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +176 -0
  3. package/dist/index.d.mts +51 -4
  4. package/dist/index.d.ts +51 -4
  5. package/dist/index.js +1912 -345
  6. package/dist/index.mjs +1911 -345
  7. package/dist/privacy-center.d.mts +566 -0
  8. package/dist/privacy-center.d.ts +566 -0
  9. package/dist/privacy-center.js +17174 -0
  10. package/dist/privacy-center.mjs +17136 -0
  11. package/package.json +47 -3
  12. package/src/RedactoNoticeConsent/RedactoNoticeConsent.test.tsx +201 -118
  13. package/src/RedactoNoticeConsent/RedactoNoticeConsent.tsx +1194 -93
  14. package/src/RedactoNoticeConsent/api/index.ts +337 -246
  15. package/src/RedactoNoticeConsent/api/types.ts +140 -41
  16. package/src/RedactoNoticeConsent/components/DigiLockerCallback.tsx +602 -0
  17. package/src/RedactoNoticeConsent/components/index.ts +7 -0
  18. package/src/RedactoNoticeConsent/injectStyles.ts +11 -0
  19. package/src/RedactoNoticeConsent/language-codes.ts +61 -0
  20. package/src/RedactoNoticeConsent/services/storage.ts +122 -0
  21. package/src/RedactoNoticeConsent/types.ts +2 -0
  22. package/src/RedactoNoticeConsentInline/api/index.ts +26 -64
  23. package/src/RedactoNoticeConsentInline/api/types.ts +0 -25
  24. package/src/RedactoPrivacyCenter/PrivacyCenterActivityPage.tsx +19 -0
  25. package/src/RedactoPrivacyCenter/PrivacyCenterConsentManagerPage.tsx +17 -0
  26. package/src/RedactoPrivacyCenter/PrivacyCenterFormPage.tsx +79 -0
  27. package/src/RedactoPrivacyCenter/PrivacyCenterHomePage.tsx +27 -0
  28. package/src/RedactoPrivacyCenter/PrivacyCenterLayout.tsx +142 -0
  29. package/src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx +51 -0
  30. package/src/RedactoPrivacyCenter/api/actions.ts +444 -0
  31. package/src/RedactoPrivacyCenter/api/client.ts +413 -0
  32. package/src/RedactoPrivacyCenter/api/config.ts +33 -0
  33. package/src/RedactoPrivacyCenter/api/fetcher.ts +181 -0
  34. package/src/RedactoPrivacyCenter/api/upload.ts +93 -0
  35. package/src/RedactoPrivacyCenter/assets/character.svg +31 -0
  36. package/src/RedactoPrivacyCenter/assets/fileAttach.svg +9 -0
  37. package/src/RedactoPrivacyCenter/assets/greenTick.svg +4 -0
  38. package/src/RedactoPrivacyCenter/assets/mail.svg +3 -0
  39. package/src/RedactoPrivacyCenter/assets/poweredByRedacto.svg +9 -0
  40. package/src/RedactoPrivacyCenter/assets/sentImg.svg +9 -0
  41. package/src/RedactoPrivacyCenter/assets/uploadFileIcon.svg +9 -0
  42. package/src/RedactoPrivacyCenter/components/ActivitiesList.tsx +272 -0
  43. package/src/RedactoPrivacyCenter/components/CaseDetailsModal.tsx +468 -0
  44. package/src/RedactoPrivacyCenter/components/CaseHistory.tsx +433 -0
  45. package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +726 -0
  46. package/src/RedactoPrivacyCenter/components/ConsentManagerColumns.tsx +239 -0
  47. package/src/RedactoPrivacyCenter/components/ConsentManagerConstants.ts +7 -0
  48. package/src/RedactoPrivacyCenter/components/ConsentManagerTableSkeleton.tsx +155 -0
  49. package/src/RedactoPrivacyCenter/components/DataRequest/CorrectionDataSection.tsx +189 -0
  50. package/src/RedactoPrivacyCenter/components/DataRequest/GrievanceDataSection.tsx +118 -0
  51. package/src/RedactoPrivacyCenter/components/DataRequest/NominationDataSection.tsx +66 -0
  52. package/src/RedactoPrivacyCenter/components/DataRequest/PurposeSelectionSection.tsx +305 -0
  53. package/src/RedactoPrivacyCenter/components/Form.tsx +1455 -0
  54. package/src/RedactoPrivacyCenter/components/GrievanceTable.tsx +176 -0
  55. package/src/RedactoPrivacyCenter/components/GrievanceTablePagination.tsx +330 -0
  56. package/src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx +329 -0
  57. package/src/RedactoPrivacyCenter/components/Pagination.tsx +140 -0
  58. package/src/RedactoPrivacyCenter/components/PrivacyCenterLayout.tsx +302 -0
  59. package/src/RedactoPrivacyCenter/components/RequestSubmit.tsx +218 -0
  60. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/SideBarPC.tsx +475 -0
  61. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/SideMenuPC.tsx +412 -0
  62. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/constants.tsx +42 -0
  63. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/menuItemsPC.tsx +1 -0
  64. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/types.ts +40 -0
  65. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/utils.ts +38 -0
  66. package/src/RedactoPrivacyCenter/components/ThemeTransitionOverlay.tsx +85 -0
  67. package/src/RedactoPrivacyCenter/components/activitiesColumns.tsx +141 -0
  68. package/src/RedactoPrivacyCenter/components/caseHistoryColumns.tsx +179 -0
  69. package/src/RedactoPrivacyCenter/components/constant.ts +20 -0
  70. package/src/RedactoPrivacyCenter/components/types.ts +68 -0
  71. package/src/RedactoPrivacyCenter/components/utils.tsx +10 -0
  72. package/src/RedactoPrivacyCenter/config/routes.ts +9 -0
  73. package/src/RedactoPrivacyCenter/config/table.ts +25 -0
  74. package/src/RedactoPrivacyCenter/context/AuthContext.tsx +123 -0
  75. package/src/RedactoPrivacyCenter/context/BaseUrlContext.tsx +44 -0
  76. package/src/RedactoPrivacyCenter/context/LocaleContext.tsx +11 -0
  77. package/src/RedactoPrivacyCenter/context/NavigationContext.tsx +64 -0
  78. package/src/RedactoPrivacyCenter/context/OrganizationContext.tsx +30 -0
  79. package/src/RedactoPrivacyCenter/context/PageChromeContext.tsx +60 -0
  80. package/src/RedactoPrivacyCenter/context/theme.tsx +127 -0
  81. package/src/RedactoPrivacyCenter/lib/api.ts +468 -0
  82. package/src/RedactoPrivacyCenter/lib/consent-manager/utils.tsx +63 -0
  83. package/src/RedactoPrivacyCenter/lib/constants.ts +116 -0
  84. package/src/RedactoPrivacyCenter/lib/i18n.ts +81 -0
  85. package/src/RedactoPrivacyCenter/lib/locales.ts +105 -0
  86. package/src/RedactoPrivacyCenter/lib/queries.ts +30 -0
  87. package/src/RedactoPrivacyCenter/lib/types.ts +346 -0
  88. package/src/RedactoPrivacyCenter/lib/useCurrentLanguage.ts +37 -0
  89. package/src/RedactoPrivacyCenter/lib/utils.ts +625 -0
  90. package/src/RedactoPrivacyCenter/locales/as/translation.json +188 -0
  91. package/src/RedactoPrivacyCenter/locales/bho/translation.json +188 -0
  92. package/src/RedactoPrivacyCenter/locales/bn/translation.json +188 -0
  93. package/src/RedactoPrivacyCenter/locales/brx/translation.json +188 -0
  94. package/src/RedactoPrivacyCenter/locales/doi/translation.json +188 -0
  95. package/src/RedactoPrivacyCenter/locales/en/translation.json +188 -0
  96. package/src/RedactoPrivacyCenter/locales/gom/translation.json +188 -0
  97. package/src/RedactoPrivacyCenter/locales/gu/translation.json +188 -0
  98. package/src/RedactoPrivacyCenter/locales/hi/translation.json +188 -0
  99. package/src/RedactoPrivacyCenter/locales/kn/translation.json +188 -0
  100. package/src/RedactoPrivacyCenter/locales/ks/translation.json +188 -0
  101. package/src/RedactoPrivacyCenter/locales/mai/translation.json +188 -0
  102. package/src/RedactoPrivacyCenter/locales/ml/translation.json +188 -0
  103. package/src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json +188 -0
  104. package/src/RedactoPrivacyCenter/locales/mr/translation.json +188 -0
  105. package/src/RedactoPrivacyCenter/locales/ne/translation.json +188 -0
  106. package/src/RedactoPrivacyCenter/locales/or/translation.json +188 -0
  107. package/src/RedactoPrivacyCenter/locales/pa/translation.json +188 -0
  108. package/src/RedactoPrivacyCenter/locales/sa/translation.json +188 -0
  109. package/src/RedactoPrivacyCenter/locales/sat/translation.json +188 -0
  110. package/src/RedactoPrivacyCenter/locales/sd/translation.json +188 -0
  111. package/src/RedactoPrivacyCenter/locales/ta/translation.json +188 -0
  112. package/src/RedactoPrivacyCenter/locales/te/translation.json +188 -0
  113. package/src/RedactoPrivacyCenter/locales/ur/translation.json +188 -0
  114. package/src/RedactoPrivacyCenter/styles/base.css +117 -0
  115. package/src/RedactoPrivacyCenter/styles/injectStyles.ts +1000 -0
  116. package/src/RedactoPrivacyCenter/styles/pcStyles.ts +819 -0
  117. package/src/RedactoPrivacyCenter/styles/responsive.ts +138 -0
  118. package/src/RedactoPrivacyCenter/styles/variables.css +133 -0
  119. package/src/RedactoPrivacyCenter/table/AdvancedTable.tsx +365 -0
  120. package/src/RedactoPrivacyCenter/table/AdvancedTablePagination.tsx +479 -0
  121. package/src/RedactoPrivacyCenter/table/index.ts +2 -0
  122. package/src/RedactoPrivacyCenter/types/images.d.ts +29 -0
  123. package/src/RedactoPrivacyCenter/ui/Footer.tsx +73 -0
  124. package/src/RedactoPrivacyCenter/ui/FormBlockWrapper.tsx +54 -0
  125. package/src/RedactoPrivacyCenter/ui/PCAccordion.tsx +87 -0
  126. package/src/RedactoPrivacyCenter/ui/PCActionIcon.tsx +47 -0
  127. package/src/RedactoPrivacyCenter/ui/PCAvatar.tsx +69 -0
  128. package/src/RedactoPrivacyCenter/ui/PCBadge.tsx +48 -0
  129. package/src/RedactoPrivacyCenter/ui/PCButton.tsx +77 -0
  130. package/src/RedactoPrivacyCenter/ui/PCCheckbox.tsx +55 -0
  131. package/src/RedactoPrivacyCenter/ui/PCCollapse.tsx +97 -0
  132. package/src/RedactoPrivacyCenter/ui/PCEmpty.tsx +35 -0
  133. package/src/RedactoPrivacyCenter/ui/PCInput.tsx +128 -0
  134. package/src/RedactoPrivacyCenter/ui/PCLoader.tsx +30 -0
  135. package/src/RedactoPrivacyCenter/ui/PCModal.tsx +104 -0
  136. package/src/RedactoPrivacyCenter/ui/PCPopover.tsx +175 -0
  137. package/src/RedactoPrivacyCenter/ui/PCSelect.tsx +381 -0
  138. package/src/RedactoPrivacyCenter/ui/PCTable.tsx +137 -0
  139. package/src/RedactoPrivacyCenter/ui/PCText.tsx +39 -0
  140. package/src/RedactoPrivacyCenter/ui/PCTextarea.tsx +43 -0
  141. package/src/RedactoPrivacyCenter/ui/PCTitle.tsx +37 -0
  142. package/src/RedactoPrivacyCenter/ui/PCTooltip.tsx +119 -0
  143. package/src/RedactoPrivacyCenter/ui/SimpleBar.tsx +25 -0
  144. package/src/RedactoPrivacyCenter/ui/StatusBadge.tsx +55 -0
  145. package/src/RedactoPrivacyCenter/ui/ThemeToggle.tsx +70 -0
  146. package/src/RedactoPrivacyCenter/ui/index.ts +18 -0
  147. package/src/RedactoPrivacyCenter/utils/cn.ts +28 -0
  148. package/src/RedactoPrivacyCenter/utils/date.ts +48 -0
  149. package/src/RedactoPrivacyCenter/utils/status.ts +111 -0
  150. package/src/RedactoPrivacyCenter/utils/toast.ts +130 -0
  151. package/src/index.ts +10 -0
  152. package/src/privacy-center.ts +107 -0
  153. package/tsconfig.json +2 -0
  154. package/tsup.config.ts +16 -1
  155. package/src/utils/isLegacyApi.ts +0 -12
@@ -0,0 +1,819 @@
1
+ /**
2
+ * Privacy Center SDK Inline Styles
3
+ *
4
+ * All styles use CSS custom properties for theme support.
5
+ * These styles are completely isolated and won't conflict with host app styles.
6
+ */
7
+
8
+ // Helper to get CSS variable value
9
+ const getVar = (varName: string): string => `var(${varName})`;
10
+
11
+ // Helper to get computed CSS variable value (for runtime theme switching)
12
+ const getComputedVar = (varName: string): string => {
13
+ if (typeof window === 'undefined') return '';
14
+ return getComputedStyle(document.documentElement).getPropertyValue(varName).trim();
15
+ };
16
+
17
+ export const pcStyles = {
18
+ // Layout utilities
19
+ flex: {
20
+ display: 'flex',
21
+ },
22
+ flexCol: {
23
+ display: 'flex',
24
+ flexDirection: 'column',
25
+ },
26
+ flexRow: {
27
+ display: 'flex',
28
+ flexDirection: 'row',
29
+ },
30
+ itemsCenter: {
31
+ alignItems: 'center',
32
+ },
33
+ itemsStart: {
34
+ alignItems: 'flex-start',
35
+ },
36
+ itemsEnd: {
37
+ alignItems: 'flex-end',
38
+ },
39
+ justifyCenter: {
40
+ justifyContent: 'center',
41
+ },
42
+ justifyBetween: {
43
+ justifyContent: 'space-between',
44
+ },
45
+ justifyEnd: {
46
+ justifyContent: 'flex-end',
47
+ },
48
+ justifyStart: {
49
+ justifyContent: 'flex-start',
50
+ },
51
+ gapXs: {
52
+ gap: getVar('--pc-spacing-xs'),
53
+ },
54
+ gapSm: {
55
+ gap: getVar('--pc-spacing-sm'),
56
+ },
57
+ gapMd: {
58
+ gap: getVar('--pc-spacing-md'),
59
+ },
60
+ gapLg: {
61
+ gap: getVar('--pc-spacing-lg'),
62
+ },
63
+ gapXl: {
64
+ gap: getVar('--pc-spacing-xl'),
65
+ },
66
+ wFull: {
67
+ width: '100%',
68
+ },
69
+ hFull: {
70
+ height: '100%',
71
+ },
72
+ wScreen: {
73
+ width: '100vw',
74
+ },
75
+ hScreen: {
76
+ height: '100vh',
77
+ },
78
+ textCenter: {
79
+ textAlign: 'center',
80
+ },
81
+ textLeft: {
82
+ textAlign: 'left',
83
+ },
84
+ textRight: {
85
+ textAlign: 'right',
86
+ },
87
+ overflowHidden: {
88
+ overflow: 'hidden',
89
+ },
90
+ overflowAuto: {
91
+ overflow: 'auto',
92
+ },
93
+ overflowXAuto: {
94
+ overflowX: 'auto',
95
+ },
96
+ overflowYAuto: {
97
+ overflowY: 'auto',
98
+ },
99
+
100
+ // Typography
101
+ text: {
102
+ fontFamily: getVar('--pc-font-family'),
103
+ fontSize: getVar('--pc-font-size-base'),
104
+ lineHeight: 1.5,
105
+ color: getVar('--pc-text-primary'),
106
+ margin: 0,
107
+ padding: 0,
108
+ boxSizing: 'border-box',
109
+ },
110
+ textXs: {
111
+ fontSize: getVar('--pc-font-size-xs'),
112
+ },
113
+ textSm: {
114
+ fontSize: getVar('--pc-font-size-sm'),
115
+ },
116
+ textBase: {
117
+ fontSize: getVar('--pc-font-size-base'),
118
+ },
119
+ textLg: {
120
+ fontSize: getVar('--pc-font-size-lg'),
121
+ },
122
+ textXl: {
123
+ fontSize: getVar('--pc-font-size-xl'),
124
+ },
125
+ text2xl: {
126
+ fontSize: getVar('--pc-font-size-2xl'),
127
+ },
128
+ text3xl: {
129
+ fontSize: getVar('--pc-font-size-3xl'),
130
+ },
131
+ fontWeightNormal: {
132
+ fontWeight: getVar('--pc-font-weight-normal'),
133
+ },
134
+ fontWeightMedium: {
135
+ fontWeight: getVar('--pc-font-weight-medium'),
136
+ },
137
+ fontWeightSemibold: {
138
+ fontWeight: getVar('--pc-font-weight-semibold'),
139
+ },
140
+ fontWeightBold: {
141
+ fontWeight: getVar('--pc-font-weight-bold'),
142
+ },
143
+ textPrimary: {
144
+ color: getVar('--pc-text-primary'),
145
+ },
146
+ textSecondary: {
147
+ color: getVar('--pc-text-secondary'),
148
+ },
149
+ textTertiary: {
150
+ color: getVar('--pc-text-tertiary'),
151
+ },
152
+ textInverse: {
153
+ color: getVar('--pc-text-inverse'),
154
+ },
155
+ textDisabled: {
156
+ color: getVar('--pc-text-disabled'),
157
+ },
158
+
159
+ // Title styles
160
+ title: {
161
+ fontFamily: getVar('--pc-font-family'),
162
+ fontWeight: getVar('--pc-font-weight-bold'),
163
+ color: getVar('--pc-text-primary'),
164
+ margin: 0,
165
+ padding: 0,
166
+ lineHeight: 1.2,
167
+ },
168
+ titleH1: {
169
+ fontSize: getVar('--pc-font-size-3xl'),
170
+ },
171
+ titleH2: {
172
+ fontSize: getVar('--pc-font-size-2xl'),
173
+ },
174
+ titleH3: {
175
+ fontSize: getVar('--pc-font-size-xl'),
176
+ },
177
+ titleH4: {
178
+ fontSize: getVar('--pc-font-size-lg'),
179
+ },
180
+ titleH5: {
181
+ fontSize: getVar('--pc-font-size-base'),
182
+ },
183
+ titleH6: {
184
+ fontSize: getVar('--pc-font-size-sm'),
185
+ },
186
+
187
+ // Button styles
188
+ button: {
189
+ fontFamily: getVar('--pc-font-family'),
190
+ fontSize: getVar('--pc-font-size-base'),
191
+ fontWeight: getVar('--pc-font-weight-medium'),
192
+ borderRadius: getVar('--pc-border-radius-md'),
193
+ padding: '0.4375rem 0.875rem',
194
+ minHeight: '2.25rem',
195
+ border: 'none',
196
+ cursor: 'pointer',
197
+ transition: getVar('--pc-transition-base'),
198
+ display: 'inline-flex',
199
+ alignItems: 'center',
200
+ justifyContent: 'center',
201
+ gap: getVar('--pc-spacing-sm'),
202
+ boxSizing: 'border-box',
203
+ outline: 'none',
204
+ },
205
+ buttonPrimary: {
206
+ backgroundColor: getVar('--pc-primary'),
207
+ color: getVar('--pc-text-inverse'),
208
+ },
209
+ buttonPrimaryHover: {
210
+ backgroundColor: getVar('--pc-primary-hover'),
211
+ },
212
+ buttonSecondary: {
213
+ backgroundColor: getVar('--pc-secondary'),
214
+ color: getVar('--pc-text-inverse'),
215
+ },
216
+ buttonOutline: {
217
+ backgroundColor: 'transparent',
218
+ border: `1px solid ${getVar('--pc-border-color')}`,
219
+ color: getVar('--pc-text-primary'),
220
+ },
221
+ buttonText: {
222
+ backgroundColor: 'transparent',
223
+ border: 'none',
224
+ color: getVar('--pc-primary'),
225
+ padding: '0.125rem 0.375rem',
226
+ minHeight: 'unset',
227
+ },
228
+ buttonDanger: {
229
+ backgroundColor: getVar('--pc-error'),
230
+ color: getVar('--pc-text-inverse'),
231
+ },
232
+ buttonSm: {
233
+ fontSize: getVar('--pc-font-size-sm'),
234
+ padding: '0.3125rem 0.625rem',
235
+ minHeight: '2rem',
236
+ },
237
+ buttonLg: {
238
+ fontSize: getVar('--pc-font-size-lg'),
239
+ padding: '0.625rem 1.125rem',
240
+ minHeight: '2.5rem',
241
+ },
242
+ buttonDisabled: {
243
+ opacity: 0.5,
244
+ cursor: 'not-allowed',
245
+ pointerEvents: 'none',
246
+ },
247
+
248
+ // Input styles
249
+ input: {
250
+ fontFamily: getVar('--pc-font-family'),
251
+ fontSize: getVar('--pc-font-size-base'),
252
+ color: getVar('--pc-text-primary'),
253
+ backgroundColor: getVar('--pc-bg-primary'),
254
+ border: `1px solid ${getVar('--pc-border-color')}`,
255
+ borderRadius: getVar('--pc-border-radius-md'),
256
+ padding: '0.4375rem 0.625rem',
257
+ minHeight: '2.25rem',
258
+ width: '100%',
259
+ boxSizing: 'border-box',
260
+ outline: 'none',
261
+ transition: getVar('--pc-transition-base'),
262
+ },
263
+ inputFocus: {
264
+ borderColor: getVar('--pc-border-color'),
265
+ boxShadow: 'none',
266
+ outline: 'none',
267
+ },
268
+ inputDisabled: {
269
+ backgroundColor: getVar('--pc-bg-tertiary'),
270
+ color: getVar('--pc-text-disabled'),
271
+ cursor: 'not-allowed',
272
+ },
273
+ inputError: {
274
+ borderColor: getVar('--pc-error'),
275
+ },
276
+ inputSm: {
277
+ fontSize: getVar('--pc-font-size-sm'),
278
+ padding: '0.3125rem 0.5rem',
279
+ minHeight: '2rem',
280
+ },
281
+ inputLg: {
282
+ fontSize: getVar('--pc-font-size-lg'),
283
+ padding: '0.625rem 0.875rem',
284
+ minHeight: '2.5rem',
285
+ },
286
+ inputLabel: {
287
+ display: 'block',
288
+ fontSize: getVar('--pc-font-size-sm'),
289
+ fontWeight: getVar('--pc-font-weight-medium'),
290
+ color: getVar('--pc-text-primary'),
291
+ marginBottom: getVar('--pc-spacing-xs'),
292
+ },
293
+ inputWrapper: {
294
+ display: 'flex',
295
+ flexDirection: 'column',
296
+ width: '100%',
297
+ },
298
+ inputPrefix: {
299
+ display: 'flex',
300
+ alignItems: 'center',
301
+ paddingLeft: getVar('--pc-spacing-sm'),
302
+ paddingRight: getVar('--pc-spacing-sm'),
303
+ color: getVar('--pc-text-secondary'),
304
+ },
305
+ inputSuffix: {
306
+ display: 'flex',
307
+ alignItems: 'center',
308
+ paddingLeft: getVar('--pc-spacing-sm'),
309
+ color: getVar('--pc-text-secondary'),
310
+ },
311
+ inputWithPrefix: {
312
+ display: 'flex',
313
+ alignItems: 'center',
314
+ border: `1px solid ${getVar('--pc-border-color')}`,
315
+ borderRadius: getVar('--pc-border-radius-md'),
316
+ backgroundColor: getVar('--pc-bg-primary'),
317
+ },
318
+
319
+ // Textarea styles (extends input)
320
+ textarea: {
321
+ fontFamily: getVar('--pc-font-family'),
322
+ fontSize: getVar('--pc-font-size-base'),
323
+ color: getVar('--pc-text-primary'),
324
+ backgroundColor: getVar('--pc-bg-primary'),
325
+ border: `1px solid ${getVar('--pc-border-color')}`,
326
+ borderRadius: getVar('--pc-border-radius-md'),
327
+ padding: '0.5rem 0.625rem',
328
+ width: '100%',
329
+ minHeight: '90px',
330
+ resize: 'vertical',
331
+ boxSizing: 'border-box',
332
+ outline: 'none',
333
+ transition: getVar('--pc-transition-base'),
334
+ },
335
+
336
+ // Checkbox styles
337
+ checkbox: {
338
+ width: '20px',
339
+ height: '20px',
340
+ cursor: 'pointer',
341
+ margin: 0,
342
+ padding: 0,
343
+ boxSizing: 'border-box',
344
+ },
345
+ checkboxSm: {
346
+ width: '16px',
347
+ height: '16px',
348
+ },
349
+ checkboxLabel: {
350
+ display: 'flex',
351
+ alignItems: 'center',
352
+ gap: getVar('--pc-spacing-sm'),
353
+ cursor: 'pointer',
354
+ fontSize: getVar('--pc-font-size-base'),
355
+ color: getVar('--pc-text-primary'),
356
+ },
357
+
358
+ // Select/Dropdown styles
359
+ select: {
360
+ fontFamily: getVar('--pc-font-family'),
361
+ fontSize: getVar('--pc-font-size-base'),
362
+ color: getVar('--pc-text-primary'),
363
+ backgroundColor: getVar('--pc-bg-primary'),
364
+ border: `1px solid ${getVar('--pc-border-color')}`,
365
+ borderRadius: getVar('--pc-border-radius-md'),
366
+ padding: '0.4375rem 0.625rem',
367
+ minHeight: '2.25rem',
368
+ width: '100%',
369
+ cursor: 'pointer',
370
+ boxSizing: 'border-box',
371
+ outline: 'none',
372
+ transition: getVar('--pc-transition-base'),
373
+ },
374
+ selectFocus: {
375
+ borderColor: getVar('--pc-border-color-focus'),
376
+ },
377
+ selectOption: {
378
+ padding: '0.4375rem 0.625rem',
379
+ cursor: 'pointer',
380
+ color: getVar('--pc-text-primary'),
381
+ backgroundColor: getVar('--pc-bg-primary'),
382
+ whiteSpace: 'nowrap',
383
+ },
384
+ selectOptionHover: {
385
+ backgroundColor: getVar('--pc-bg-hover'),
386
+ },
387
+ selectDropdown: {
388
+ position: 'absolute',
389
+ left: 0,
390
+ width: 'auto',
391
+ minWidth: 'auto',
392
+ maxWidth: 'max-content',
393
+ backgroundColor: getVar('--pc-bg-primary'),
394
+ border: `1px solid ${getVar('--pc-border-color')}`,
395
+ borderRadius: getVar('--pc-border-radius-md'),
396
+ boxShadow: getVar('--pc-shadow-lg'),
397
+ zIndex: 1000,
398
+ maxHeight: '300px',
399
+ overflowY: 'auto',
400
+ transition: 'background-color 0.3s ease, border-color 0.3s ease',
401
+ boxSizing: 'border-box',
402
+ },
403
+
404
+ // Modal styles
405
+ modalOverlay: {
406
+ position: 'fixed',
407
+ top: 0,
408
+ left: 0,
409
+ right: 0,
410
+ bottom: 0,
411
+ backgroundColor: getVar('--pc-bg-overlay'),
412
+ display: 'flex',
413
+ alignItems: 'center',
414
+ justifyContent: 'center',
415
+ zIndex: 1050,
416
+ padding: getVar('--pc-spacing-md'),
417
+ boxSizing: 'border-box',
418
+ },
419
+ modal: {
420
+ backgroundColor: getVar('--pc-bg-primary'),
421
+ borderRadius: getVar('--pc-border-radius-lg'),
422
+ boxShadow: getVar('--pc-shadow-xl'),
423
+ maxWidth: '90vw',
424
+ maxHeight: '90vh',
425
+ overflow: 'auto',
426
+ position: 'relative',
427
+ display: 'flex',
428
+ flexDirection: 'column',
429
+ boxSizing: 'border-box',
430
+ },
431
+ modalSm: {
432
+ width: '400px',
433
+ },
434
+ modalMd: {
435
+ width: '600px',
436
+ },
437
+ modalLg: {
438
+ width: '800px',
439
+ },
440
+ modalXl: {
441
+ width: '1000px',
442
+ },
443
+ modalHeader: {
444
+ padding: getVar('--pc-spacing-lg'),
445
+ borderBottom: `1px solid ${getVar('--pc-border-color')}`,
446
+ display: 'flex',
447
+ alignItems: 'center',
448
+ justifyContent: 'space-between',
449
+ },
450
+ modalBody: {
451
+ padding: getVar('--pc-spacing-lg'),
452
+ flex: 1,
453
+ overflow: 'auto',
454
+ },
455
+ modalFooter: {
456
+ padding: getVar('--pc-spacing-lg'),
457
+ borderTop: `1px solid ${getVar('--pc-border-color')}`,
458
+ display: 'flex',
459
+ alignItems: 'center',
460
+ justifyContent: 'flex-end',
461
+ gap: getVar('--pc-spacing-sm'),
462
+ },
463
+ modalCloseButton: {
464
+ background: 'none',
465
+ border: 'none',
466
+ cursor: 'pointer',
467
+ padding: getVar('--pc-spacing-xs'),
468
+ color: getVar('--pc-text-secondary'),
469
+ display: 'flex',
470
+ alignItems: 'center',
471
+ justifyContent: 'center',
472
+ borderRadius: getVar('--pc-border-radius-sm'),
473
+ },
474
+
475
+ // Table styles
476
+ table: {
477
+ width: '100%',
478
+ borderCollapse: 'collapse',
479
+ fontFamily: getVar('--pc-font-family'),
480
+ fontSize: getVar('--pc-font-size-base'),
481
+ },
482
+ tableHeader: {
483
+ backgroundColor: getVar('--pc-bg-secondary'),
484
+ },
485
+ tableHeaderCell: {
486
+ padding: '0.625rem 0.75rem',
487
+ textAlign: 'left',
488
+ fontSize: getVar('--pc-font-size-sm'),
489
+ fontWeight: getVar('--pc-font-weight-medium'),
490
+ color: getVar('--pc-text-primary'),
491
+ borderBottom: `1px solid ${getVar('--pc-border-color')}`,
492
+ },
493
+ tableRow: {
494
+ borderBottom: `1px solid ${getVar('--pc-border-color')}`,
495
+ transition: getVar('--pc-transition-fast'),
496
+ },
497
+ tableRowHover: {
498
+ backgroundColor: getVar('--pc-bg-hover'),
499
+ },
500
+ tableCell: {
501
+ padding: '0.625rem 0.75rem',
502
+ fontSize: getVar('--pc-font-size-sm'),
503
+ color: getVar('--pc-text-primary'),
504
+ },
505
+
506
+ // Badge styles — pill-shaped, light bg matching text, no border, generous padding (reference style)
507
+ badge: {
508
+ display: 'inline-flex',
509
+ alignItems: 'center',
510
+ justifyContent: 'center',
511
+ padding: '0.25rem 0.625rem',
512
+ borderRadius: '9999px',
513
+ fontSize: getVar('--pc-font-size-xs'),
514
+ fontWeight: 600,
515
+ lineHeight: 1,
516
+ boxSizing: 'border-box',
517
+ minWidth: 0,
518
+ },
519
+ badgeSuccess: {
520
+ backgroundColor: 'rgba(16, 185, 129, 0.1)',
521
+ color: getVar('--pc-success'),
522
+ },
523
+ badgeError: {
524
+ backgroundColor: 'rgba(239, 68, 68, 0.1)',
525
+ color: getVar('--pc-error'),
526
+ },
527
+ badgeWarning: {
528
+ backgroundColor: 'rgba(245, 158, 11, 0.1)',
529
+ color: getVar('--pc-warning'),
530
+ },
531
+ badgeInfo: {
532
+ backgroundColor: 'rgba(59, 130, 246, 0.1)',
533
+ color: getVar('--pc-info'),
534
+ },
535
+ badgeSecondary: {
536
+ backgroundColor: getVar('--pc-bg-tertiary'),
537
+ color: getVar('--pc-text-primary'),
538
+ },
539
+ badgeSm: {
540
+ fontSize: '0.75rem',
541
+ padding: '0.1875rem 0.5rem',
542
+ },
543
+
544
+ // Loader/Spinner styles
545
+ loader: {
546
+ display: 'inline-block',
547
+ border: '3px solid',
548
+ borderColor: `${getVar('--pc-border-color')} transparent ${getVar('--pc-border-color')} transparent`,
549
+ borderRadius: '50%',
550
+ animation: 'pc-spin 1s linear infinite',
551
+ },
552
+ loaderSm: {
553
+ width: '16px',
554
+ height: '16px',
555
+ borderWidth: '2px',
556
+ },
557
+ loaderMd: {
558
+ width: '24px',
559
+ height: '24px',
560
+ borderWidth: '3px',
561
+ },
562
+ loaderLg: {
563
+ width: '40px',
564
+ height: '40px',
565
+ borderWidth: '4px',
566
+ },
567
+ loaderPrimary: {
568
+ borderColor: `${getVar('--pc-primary')} transparent ${getVar('--pc-primary')} transparent`,
569
+ },
570
+ loaderInfo: {
571
+ borderColor: `${getVar('--pc-info')} transparent ${getVar('--pc-info')} transparent`,
572
+ },
573
+
574
+ // Tooltip styles
575
+ tooltip: {
576
+ position: 'absolute',
577
+ backgroundColor: '#1f2937',
578
+ color: '#ffffff',
579
+ padding: '0.5rem 0.75rem',
580
+ borderRadius: getVar('--pc-border-radius-md'),
581
+ fontSize: getVar('--pc-font-size-sm'),
582
+ zIndex: 1070,
583
+ pointerEvents: 'none',
584
+ whiteSpace: 'nowrap',
585
+ boxShadow: getVar('--pc-shadow-lg'),
586
+ },
587
+ tooltipArrow: {
588
+ position: 'absolute',
589
+ width: 0,
590
+ height: 0,
591
+ borderStyle: 'solid',
592
+ },
593
+
594
+ // ActionIcon styles
595
+ actionIcon: {
596
+ display: 'inline-flex',
597
+ alignItems: 'center',
598
+ justifyContent: 'center',
599
+ padding: getVar('--pc-spacing-xs'),
600
+ borderRadius: getVar('--pc-border-radius-sm'),
601
+ cursor: 'pointer',
602
+ border: 'none',
603
+ backgroundColor: 'transparent',
604
+ color: getVar('--pc-text-primary'),
605
+ transition: getVar('--pc-transition-fast'),
606
+ },
607
+ actionIconHover: {
608
+ backgroundColor: getVar('--pc-bg-hover'),
609
+ },
610
+ actionIconSm: {
611
+ padding: '0.1875rem',
612
+ width: '22px',
613
+ height: '22px',
614
+ },
615
+ actionIconMd: {
616
+ padding: '0.25rem',
617
+ width: '28px',
618
+ height: '28px',
619
+ },
620
+ actionIconOutline: {
621
+ border: `1px solid ${getVar('--pc-border-color')}`,
622
+ },
623
+ actionIconDisabled: {
624
+ opacity: 0.5,
625
+ cursor: 'not-allowed',
626
+ },
627
+
628
+ // Accordion styles
629
+ accordion: {
630
+ border: `1px solid ${getVar('--pc-border-color')}`,
631
+ borderRadius: getVar('--pc-border-radius-md'),
632
+ overflow: 'hidden',
633
+ },
634
+ accordionHeader: {
635
+ padding: getVar('--pc-spacing-md'),
636
+ backgroundColor: getVar('--pc-bg-primary'),
637
+ cursor: 'pointer',
638
+ display: 'flex',
639
+ alignItems: 'center',
640
+ justifyContent: 'space-between',
641
+ transition: getVar('--pc-transition-base'),
642
+ },
643
+ accordionHeaderHover: {
644
+ backgroundColor: getVar('--pc-bg-hover'),
645
+ },
646
+ accordionBody: {
647
+ padding: getVar('--pc-spacing-md'),
648
+ backgroundColor: getVar('--pc-bg-secondary'),
649
+ borderTop: `1px solid ${getVar('--pc-border-color')}`,
650
+ },
651
+
652
+ // Avatar styles
653
+ avatar: {
654
+ display: 'inline-flex',
655
+ alignItems: 'center',
656
+ justifyContent: 'center',
657
+ borderRadius: '50%',
658
+ backgroundColor: getVar('--pc-primary'),
659
+ color: getVar('--pc-text-inverse'),
660
+ fontWeight: getVar('--pc-font-weight-semibold'),
661
+ },
662
+ avatarSm: {
663
+ width: '24px',
664
+ height: '24px',
665
+ fontSize: getVar('--pc-font-size-xs'),
666
+ },
667
+ avatarMd: {
668
+ width: '32px',
669
+ height: '32px',
670
+ fontSize: getVar('--pc-font-size-sm'),
671
+ },
672
+ avatarLg: {
673
+ width: '48px',
674
+ height: '48px',
675
+ fontSize: getVar('--pc-font-size-base'),
676
+ },
677
+
678
+ // Empty state styles
679
+ empty: {
680
+ display: 'flex',
681
+ flexDirection: 'column',
682
+ alignItems: 'center',
683
+ justifyContent: 'center',
684
+ padding: getVar('--pc-spacing-2xl'),
685
+ color: getVar('--pc-text-secondary'),
686
+ textAlign: 'center',
687
+ },
688
+ emptyIcon: {
689
+ fontSize: getVar('--pc-font-size-3xl'),
690
+ marginBottom: getVar('--pc-spacing-md'),
691
+ opacity: 0.5,
692
+ },
693
+ emptyText: {
694
+ fontSize: getVar('--pc-font-size-base'),
695
+ color: getVar('--pc-text-secondary'),
696
+ },
697
+
698
+ // Container styles
699
+ container: {
700
+ width: '100%',
701
+ maxWidth: '100%',
702
+ marginLeft: 'auto',
703
+ marginRight: 'auto',
704
+ paddingLeft: getVar('--pc-spacing-md'),
705
+ paddingRight: getVar('--pc-spacing-md'),
706
+ },
707
+ containerSm: {
708
+ maxWidth: '640px',
709
+ },
710
+ containerMd: {
711
+ maxWidth: '768px',
712
+ },
713
+ containerLg: {
714
+ maxWidth: '1024px',
715
+ },
716
+ containerXl: {
717
+ maxWidth: '1280px',
718
+ },
719
+
720
+ // Card styles
721
+ card: {
722
+ backgroundColor: getVar('--pc-bg-primary'),
723
+ borderRadius: getVar('--pc-border-radius-lg'),
724
+ boxShadow: getVar('--pc-shadow-sm'),
725
+ padding: getVar('--pc-spacing-lg'),
726
+ border: `1px solid ${getVar('--pc-border-color')}`,
727
+ },
728
+
729
+ // Spacing utilities
730
+ pXs: { padding: getVar('--pc-spacing-xs') },
731
+ pSm: { padding: getVar('--pc-spacing-sm') },
732
+ pMd: { padding: getVar('--pc-spacing-md') },
733
+ pLg: { padding: getVar('--pc-spacing-lg') },
734
+ pXl: { padding: getVar('--pc-spacing-xl') },
735
+ pxXs: { paddingLeft: getVar('--pc-spacing-xs'), paddingRight: getVar('--pc-spacing-xs') },
736
+ pxSm: { paddingLeft: getVar('--pc-spacing-sm'), paddingRight: getVar('--pc-spacing-sm') },
737
+ pxMd: { paddingLeft: getVar('--pc-spacing-md'), paddingRight: getVar('--pc-spacing-md') },
738
+ pxLg: { paddingLeft: getVar('--pc-spacing-lg'), paddingRight: getVar('--pc-spacing-lg') },
739
+ pyXs: { paddingTop: getVar('--pc-spacing-xs'), paddingBottom: getVar('--pc-spacing-xs') },
740
+ pySm: { paddingTop: getVar('--pc-spacing-sm'), paddingBottom: getVar('--pc-spacing-sm') },
741
+ pyMd: { paddingTop: getVar('--pc-spacing-md'), paddingBottom: getVar('--pc-spacing-md') },
742
+ pyLg: { paddingTop: getVar('--pc-spacing-lg'), paddingBottom: getVar('--pc-spacing-lg') },
743
+ mXs: { margin: getVar('--pc-spacing-xs') },
744
+ mSm: { margin: getVar('--pc-spacing-sm') },
745
+ mMd: { margin: getVar('--pc-spacing-md') },
746
+ mLg: { margin: getVar('--pc-spacing-lg') },
747
+ mXl: { margin: getVar('--pc-spacing-xl') },
748
+ mbXs: { marginBottom: getVar('--pc-spacing-xs') },
749
+ mbSm: { marginBottom: getVar('--pc-spacing-sm') },
750
+ mbMd: { marginBottom: getVar('--pc-spacing-md') },
751
+ mbLg: { marginBottom: getVar('--pc-spacing-lg') },
752
+ mtXs: { marginTop: getVar('--pc-spacing-xs') },
753
+ mtSm: { marginTop: getVar('--pc-spacing-sm') },
754
+ mtMd: { marginTop: getVar('--pc-spacing-md') },
755
+ mtLg: { marginTop: getVar('--pc-spacing-lg') },
756
+ mxXs: { marginLeft: getVar('--pc-spacing-xs'), marginRight: getVar('--pc-spacing-xs') },
757
+ mxSm: { marginLeft: getVar('--pc-spacing-sm'), marginRight: getVar('--pc-spacing-sm') },
758
+ mxMd: { marginLeft: getVar('--pc-spacing-md'), marginRight: getVar('--pc-spacing-md') },
759
+ myXs: { marginTop: getVar('--pc-spacing-xs'), marginBottom: getVar('--pc-spacing-xs') },
760
+ mySm: { marginTop: getVar('--pc-spacing-sm'), marginBottom: getVar('--pc-spacing-sm') },
761
+ myMd: { marginTop: getVar('--pc-spacing-md'), marginBottom: getVar('--pc-spacing-md') },
762
+ mlXs: { marginLeft: getVar('--pc-spacing-xs') },
763
+ mlSm: { marginLeft: getVar('--pc-spacing-sm') },
764
+ mlMd: { marginLeft: getVar('--pc-spacing-md') },
765
+ mlLg: { marginLeft: getVar('--pc-spacing-lg') },
766
+ mrXs: { marginRight: getVar('--pc-spacing-xs') },
767
+ mrSm: { marginRight: getVar('--pc-spacing-sm') },
768
+ mrMd: { marginRight: getVar('--pc-spacing-md') },
769
+ mrLg: { marginRight: getVar('--pc-spacing-lg') },
770
+ ptXs: { paddingTop: getVar('--pc-spacing-xs') },
771
+ ptSm: { paddingTop: getVar('--pc-spacing-sm') },
772
+ ptMd: { paddingTop: getVar('--pc-spacing-md') },
773
+ ptLg: { paddingTop: getVar('--pc-spacing-lg') },
774
+ pbXs: { paddingBottom: getVar('--pc-spacing-xs') },
775
+ pbSm: { paddingBottom: getVar('--pc-spacing-sm') },
776
+ pbMd: { paddingBottom: getVar('--pc-spacing-md') },
777
+ pbLg: { paddingBottom: getVar('--pc-spacing-lg') },
778
+ plXs: { paddingLeft: getVar('--pc-spacing-xs') },
779
+ plSm: { paddingLeft: getVar('--pc-spacing-sm') },
780
+ plMd: { paddingLeft: getVar('--pc-spacing-md') },
781
+ plLg: { paddingLeft: getVar('--pc-spacing-lg') },
782
+ prXs: { paddingRight: getVar('--pc-spacing-xs') },
783
+ prSm: { paddingRight: getVar('--pc-spacing-sm') },
784
+ prMd: { paddingRight: getVar('--pc-spacing-md') },
785
+ prLg: { paddingRight: getVar('--pc-spacing-lg') },
786
+
787
+ // Border radius
788
+ borderRadiusSm: getVar('--pc-border-radius-sm'),
789
+ borderRadiusMd: getVar('--pc-border-radius-md'),
790
+ borderRadiusLg: getVar('--pc-border-radius-lg'),
791
+ borderRadiusXl: getVar('--pc-border-radius-xl'),
792
+ borderRadius2xl: getVar('--pc-border-radius-2xl'),
793
+ borderRadius3xl: getVar('--pc-border-radius-3xl'),
794
+
795
+ // Border color
796
+ borderColor: getVar('--pc-border-color'),
797
+ borderColorHover: getVar('--pc-border-color-hover'),
798
+ borderColorFocus: getVar('--pc-border-color-focus'),
799
+
800
+ // Shadow
801
+ shadowSm: getVar('--pc-shadow-sm'),
802
+ shadowMd: getVar('--pc-shadow-md'),
803
+ shadowLg: getVar('--pc-shadow-lg'),
804
+ shadowXl: getVar('--pc-shadow-xl'),
805
+
806
+ // Background utilities
807
+ bgPrimary: { backgroundColor: getVar('--pc-bg-primary') },
808
+ bgSecondary: { backgroundColor: getVar('--pc-bg-secondary') },
809
+ bgTertiary: { backgroundColor: getVar('--pc-bg-tertiary') },
810
+
811
+ // Warning styles
812
+ warningBg: getVar('--pc-warning-bg'),
813
+ warningBorder: getVar('--pc-warning-border'),
814
+ warningText: getVar('--pc-warning-text'),
815
+
816
+ // Color utilities
817
+ primary: getVar('--pc-primary'),
818
+ success: getVar('--pc-success'),
819
+ } as const;