spotlibs-components 0.1.10 → 0.1.12

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 (120) hide show
  1. package/dist/{chunk-OGJBPTUP.mjs → chunk-F6KSEYVB.mjs} +3 -3
  2. package/dist/{chunk-OGJBPTUP.mjs.map → chunk-F6KSEYVB.mjs.map} +1 -1
  3. package/dist/chunk-UFE7HFT2.mjs +60 -0
  4. package/dist/chunk-UFE7HFT2.mjs.map +1 -0
  5. package/dist/{chunk-NXFLMH2Q.mjs → chunk-YOSPWY5K.mjs} +3 -4
  6. package/dist/{chunk-NXFLMH2Q.mjs.map → chunk-YOSPWY5K.mjs.map} +1 -1
  7. package/dist/{atoms → components/atoms}/icons/index.mjs +2 -2
  8. package/dist/components/index.d.mts +449 -0
  9. package/dist/components/index.mjs +7053 -0
  10. package/dist/components/index.mjs.map +1 -0
  11. package/dist/{mui → components/mui}/index.mjs +1 -1
  12. package/dist/components/types.d.mts +4 -0
  13. package/dist/{types-B0iF5xX8.d.mts → types-D1akE7ak.d.mts} +334 -245
  14. package/dist/utils/index.d.mts +106 -0
  15. package/dist/utils/index.mjs +477 -0
  16. package/dist/utils/index.mjs.map +1 -0
  17. package/package.json +13 -2
  18. package/src/utils/admin-kuota-nasional/constant.d.ts +23 -0
  19. package/src/utils/admin-kuota-nasional/constant.js +95 -0
  20. package/src/utils/asset.d.ts +1 -0
  21. package/src/utils/asset.js +10 -0
  22. package/src/utils/booleanUtils.d.ts +2 -0
  23. package/src/utils/booleanUtils.js +19 -0
  24. package/src/utils/briguna-digital/constant.d.ts +2 -0
  25. package/src/utils/briguna-digital/constant.js +12 -0
  26. package/src/utils/compress.d.ts +2 -0
  27. package/src/utils/compress.js +24 -0
  28. package/src/utils/compressImage.d.ts +6 -0
  29. package/src/utils/compressImage.js +20 -0
  30. package/src/utils/constants.d.ts +5 -0
  31. package/src/utils/constants.js +20 -0
  32. package/src/utils/cookies.d.ts +19 -0
  33. package/src/utils/cookies.js +102 -0
  34. package/src/utils/crypto.d.ts +5 -0
  35. package/src/utils/crypto.js +104 -0
  36. package/src/utils/decodeString.d.ts +1 -0
  37. package/src/utils/decodeString.js +17 -0
  38. package/src/utils/disableFormElements.d.ts +5 -0
  39. package/src/utils/disableFormElements.js +19 -0
  40. package/src/utils/excelUtils.d.ts +25 -0
  41. package/src/utils/excelUtils.js +60 -0
  42. package/src/utils/exception.d.ts +19 -0
  43. package/src/utils/exception.js +86 -0
  44. package/src/utils/formatString.d.ts +25 -0
  45. package/src/utils/formatString.js +151 -0
  46. package/src/utils/formatters/account.d.ts +2 -0
  47. package/src/utils/formatters/account.js +98 -0
  48. package/src/utils/formatters/currency.d.ts +20 -0
  49. package/src/utils/formatters/currency.js +125 -0
  50. package/src/utils/formatters/date.d.ts +12 -0
  51. package/src/utils/formatters/date.js +219 -0
  52. package/src/utils/formatters/index.d.ts +47 -0
  53. package/src/utils/formatters/index.js +47 -0
  54. package/src/utils/formatters/string.d.ts +6 -0
  55. package/src/utils/formatters/string.js +114 -0
  56. package/src/utils/generateImportExcel.d.ts +35 -0
  57. package/src/utils/generateImportExcel.js +546 -0
  58. package/src/utils/generateTimestamp.d.ts +1 -0
  59. package/src/utils/generateTimestamp.js +4 -0
  60. package/src/utils/handleApiError.d.ts +1 -0
  61. package/src/utils/handleApiError.js +17 -0
  62. package/src/utils/index.d.ts +104 -0
  63. package/src/utils/index.js +92 -0
  64. package/src/utils/json.d.ts +4 -0
  65. package/src/utils/json.js +55 -0
  66. package/src/utils/localStorage.d.ts +1 -0
  67. package/src/utils/localStorage.js +8 -0
  68. package/src/utils/logger.d.ts +4 -0
  69. package/src/utils/logger.js +46 -0
  70. package/src/utils/schema/globalSchema.d.ts +8 -0
  71. package/src/utils/schema/globalSchema.js +10 -0
  72. package/src/utils/signature.d.ts +10 -0
  73. package/src/utils/signature.js +75 -0
  74. package/src/utils/specifics/korporasi/prakarsaKorporasiUtils.d.ts +5 -0
  75. package/src/utils/specifics/korporasi/prakarsaKorporasiUtils.js +87 -0
  76. package/src/utils/specifics/mikro/validationMaintenanceAgunanUtils.d.ts +2 -0
  77. package/src/utils/specifics/mikro/validationMaintenanceAgunanUtils.js +214 -0
  78. package/src/utils/static-data/korporasi/prakarsa/analisa-risiko-kredit-nasabah/analisa-kinerja-keuangan/listStaticData.js +290 -0
  79. package/src/utils/static-data/korporasi/prakarsa/appendix/proyeksi-laporan-arus-kas/listStaticData.js +7 -0
  80. package/src/utils/static-data/korporasi/prakarsa/appendix/proyeksi-laporan-keuangan/listStaticData.js +75 -0
  81. package/src/utils/static-data/korporasi/prakarsa/appendix/total-exposure-group/listStaticData.js +7 -0
  82. package/src/utils/static-data/korporasi/prakarsa/create/listStaticData.js +21 -0
  83. package/src/utils/static-data/korporasi/prakarsa/generals/listExcelConfigData.js +11 -0
  84. package/src/utils/static-data/korporasi/prakarsa/pengajuan-fasilitas-kredit/fasilitas-kredit/listStaticData.js +69 -0
  85. package/src/utils/static-data/korporasi-internasional/eksternal/listStaticData.js +193 -0
  86. package/src/utils/static-data/korporasi-internasional/master/listStaticData.js +24 -0
  87. package/src/utils/static-data/korporasi-internasional/uji-kepatuhan/listStaticData.js +250 -0
  88. package/src/utils/status.d.ts +37 -0
  89. package/src/utils/status.js +160 -0
  90. package/src/utils/store/adminKuotaNasional.js +7 -0
  91. package/src/utils/store/authStore.js +13 -0
  92. package/src/utils/store/bankGaransiStore.js +10 -0
  93. package/src/utils/store/korporasi/approval/interface/interfaceStore.js +10 -0
  94. package/src/utils/store/korporasi/general/generalKorporasiStore.js +13 -0
  95. package/src/utils/store/korporasi/loan-disbursement/loanDisbursementStore.js +77 -0
  96. package/src/utils/store/korporasi/prakarsa/fasilitas-kredit/fasilitasKreditStore.js +141 -0
  97. package/src/utils/store/migrasi-mandiri/migrasiMandiriStore.js +53 -0
  98. package/src/utils/store/monitoring-konsumer/monitoring-leads-KPP/monitoring-leads-kpp-internal.js +34 -0
  99. package/src/utils/store/prakarsaBankGaransiStore.js +21 -0
  100. package/src/utils/store/prognosa-crr/settingPrognosaROStore.js +9 -0
  101. package/src/utils/store/prognosaRMStore.js +30 -0
  102. package/src/utils/store/restrukStore.js +26 -0
  103. package/src/utils/store/verificationAccessLink.js +11 -0
  104. package/src/utils/store/warkat-bg-wholesale/warkatBgWholesaleStore.js +22 -0
  105. package/src/utils/stringUtils.d.ts +22 -0
  106. package/src/utils/stringUtils.js +226 -0
  107. package/src/utils/tipeBank.d.ts +3 -0
  108. package/src/utils/tipeBank.js +14 -0
  109. package/dist/index.css +0 -32
  110. package/dist/index.css.map +0 -1
  111. package/dist/index.d.mts +0 -1726
  112. package/dist/index.mjs +0 -18560
  113. package/dist/index.mjs.map +0 -1
  114. package/dist/types.d.mts +0 -4
  115. /package/dist/{atoms → components/atoms}/icons/index.d.mts +0 -0
  116. /package/dist/{atoms → components/atoms}/icons/index.mjs.map +0 -0
  117. /package/dist/{mui → components/mui}/index.d.mts +0 -0
  118. /package/dist/{mui → components/mui}/index.mjs.map +0 -0
  119. /package/dist/{types.mjs → components/types.mjs} +0 -0
  120. /package/dist/{types.mjs.map → components/types.mjs.map} +0 -0
@@ -4,21 +4,28 @@ import { SxProps } from '@mui/material/styles';
4
4
  import { Control, RegisterOptions } from 'react-hook-form';
5
5
 
6
6
  interface BaseAlertProps {
7
- variant?: string;
8
- type?: string;
9
- title?: React.ReactNode;
7
+ /** Alert color variant */
8
+ variant?: "default" | "error" | "info" | "success" | "warning";
9
+ /** MUI Alert variant type */
10
+ type?: "standard" | "filled" | "outlined";
11
+ /** Alert title */
12
+ title?: string;
13
+ /** Alert content */
10
14
  children?: React.ReactNode;
11
- icon?: React.ReactNode;
15
+ /** Icon element or component. If not provided, no icon is shown. */
16
+ icon?: React.ReactNode | React.ComponentType<any>;
17
+ /** Custom background color override */
12
18
  color?: string;
13
- sx?: any;
19
+ /** MUI sx overrides */
20
+ sx?: SxProps;
21
+ /** Close handler. If provided, close button is shown. */
14
22
  onClose?: () => void;
15
- childrenStyle?: React.CSSProperties;
23
+ /** sx overrides for children wrapper */
24
+ childrenSx?: SxProps;
16
25
  [key: string]: any;
17
26
  }
18
27
 
19
- declare function BaseAlert(
20
- props: BaseAlertProps,
21
- ): React.ReactElement | null;
28
+ declare function BaseAlert(props: BaseAlertProps): React.ReactElement;
22
29
 
23
30
  interface PrimitiveColorType {
24
31
  color_overlay: string;
@@ -118,14 +125,23 @@ interface DerivedColorType {
118
125
  color_bg_surface: string;
119
126
  color_bg_inverse: string;
120
127
  color_bg_disabled: string;
128
+
129
+ color_bg_brand_primary_strong: string;
121
130
  color_bg_brand_primary: string;
122
131
  color_bg_brand_primary_subtle: string;
132
+ color_bg_brand_secondary_strong: string;
123
133
  color_bg_brand_secondary: string;
124
134
  color_bg_brand_secondary_subtle: string;
135
+
136
+ color_bg_success_strong: string;
125
137
  color_bg_success: string;
126
138
  color_bg_success_subtle: string;
139
+
140
+ color_bg_danger_strong: string;
127
141
  color_bg_danger: string;
128
142
  color_bg_danger_subtle: string;
143
+
144
+ color_bg_warning_strong: string;
129
145
  color_bg_warning: string;
130
146
  color_bg_warning_subtle: string;
131
147
 
@@ -165,30 +181,53 @@ interface DerivedColorType {
165
181
 
166
182
  declare const DerivedColor: DerivedColorType;
167
183
 
168
- interface TypographyColorToken {
169
- value: string;
170
- token: string;
171
- alias: string;
184
+ type TypographyVariant =
185
+ | "h1"
186
+ | "h2"
187
+ | "h3"
188
+ | "h4"
189
+ | "h5"
190
+ | "h6"
191
+ | "header1_regular"
192
+ | "header1_semibold"
193
+ | "header1_bold"
194
+ | "header2_regular"
195
+ | "header2_semibold"
196
+ | "header2_bold"
197
+ | "body1_regular"
198
+ | "body2_regular"
199
+ | "caption_regular";
200
+
201
+ type TypographyColor =
202
+ | "default"
203
+ | "subtle"
204
+ | "disabled"
205
+ | "placeholder"
206
+ | "inverse"
207
+ | "primary"
208
+ | "secondary"
209
+ | "success"
210
+ | "danger"
211
+ | "warning";
212
+
213
+ interface VariantStyleEntry {
214
+ fontSize: string;
215
+ fontWeight: number;
172
216
  }
173
217
 
174
- declare const VariantStyles: Record<
175
- string,
176
- {
177
- fontSize: string;
178
- fontWeight: number;
179
- }
180
- >;
218
+ declare const VariantStyles: Record<TypographyVariant, VariantStyleEntry>;
181
219
 
182
220
  interface TypographyProps {
183
- variant?: string;
221
+ /** Format: "variant.color" e.g. "body1_regular.default" */
222
+ variant?: `${TypographyVariant}.${TypographyColor}` | TypographyVariant;
223
+ /** Content */
184
224
  children?: React.ReactNode;
185
- sx?: React.CSSProperties & Record<string, unknown>;
225
+ /** MUI sx overrides */
226
+ sx?: SxProps;
186
227
  [key: string]: any;
187
228
  }
188
229
 
189
- declare function Typography(
190
- props: TypographyProps,
191
- ): React.ReactElement | null;
230
+ declare function BaseTypography(props: TypographyProps): React.ReactElement | null;
192
231
 
193
232
  declare const SpacingToken: {
194
233
  spacing0: string;
@@ -204,7 +243,7 @@ declare const SpacingToken: {
204
243
  spacing10: string;
205
244
  };
206
245
 
207
- declare const CONTENT_SPACING_TOKENS: {
246
+ declare const CONTENT_SPACING_TOKENS: {
208
247
  spacing_1: {
209
248
  mobile: string;
210
249
  tablet: string;
@@ -219,41 +258,41 @@ declare const CONTENT_SPACING_TOKENS: {
219
258
  mobile: string;
220
259
  tablet: string;
221
260
  web: string;
222
- };
223
- };
224
-
225
- interface ResponsiveSpacingValue {
226
- mobile?: string;
227
- tablet?: string;
228
- web?: string;
229
- [key: string]: string | undefined;
230
- }
231
-
232
- type SpacingSizeValue = keyof typeof SpacingToken | string | number;
233
-
234
- type ContentSpacingSizeValue =
235
- | keyof typeof CONTENT_SPACING_TOKENS
236
- | ResponsiveSpacingValue;
237
-
238
- interface SpacingProps {
239
- size?: SpacingSizeValue;
240
- axis?: "vertical" | "horizontal";
241
- as?: React.ElementType;
242
- className?: string;
243
- style?: React.CSSProperties;
244
- children?: React.ReactNode;
245
- [key: string]: unknown;
246
- }
247
-
248
- interface ContentSpacingProps {
249
- size?: ContentSpacingSizeValue;
250
- breakpoint?: "mobile" | "tablet" | "web";
251
- as?: React.ElementType;
252
- className?: string;
253
- style?: React.CSSProperties;
254
- children?: React.ReactNode;
255
- [key: string]: unknown;
256
- }
261
+ };
262
+ };
263
+
264
+ interface ResponsiveSpacingValue {
265
+ mobile?: string;
266
+ tablet?: string;
267
+ web?: string;
268
+ [key: string]: string | undefined;
269
+ }
270
+
271
+ type SpacingSizeValue = keyof typeof SpacingToken | string | number;
272
+
273
+ type ContentSpacingSizeValue =
274
+ | keyof typeof CONTENT_SPACING_TOKENS
275
+ | ResponsiveSpacingValue;
276
+
277
+ interface SpacingProps {
278
+ size?: SpacingSizeValue;
279
+ axis?: "vertical" | "horizontal";
280
+ as?: React.ElementType;
281
+ className?: string;
282
+ style?: React.CSSProperties;
283
+ children?: React.ReactNode;
284
+ [key: string]: unknown;
285
+ }
286
+
287
+ interface ContentSpacingProps {
288
+ size?: ContentSpacingSizeValue;
289
+ breakpoint?: "mobile" | "tablet" | "web";
290
+ as?: React.ElementType;
291
+ className?: string;
292
+ style?: React.CSSProperties;
293
+ children?: React.ReactNode;
294
+ [key: string]: unknown;
295
+ }
257
296
 
258
297
  declare const Spacing: React.FC<SpacingProps>;
259
298
 
@@ -279,12 +318,10 @@ type ShadowLevel = keyof ShadowMap;
279
318
  interface ShadowTokenProps {
280
319
  /** Elevation level */
281
320
  level?: ShadowLevel;
282
- /** HTML element or component to render */
283
- as?: React.ElementType;
284
- /** Inline style overrides */
285
- style?: React.CSSProperties;
286
321
  /** Content */
287
322
  children?: React.ReactNode;
323
+ /** MUI sx overrides */
324
+ sx?: SxProps;
288
325
  [key: string]: any;
289
326
  }
290
327
 
@@ -301,17 +338,15 @@ interface RadiusMap {
301
338
 
302
339
  declare const Radius: RadiusMap;
303
340
 
304
- type RadiusKey = keyof RadiusMap;
341
+ type RadiusLevel = keyof RadiusMap;
305
342
 
306
343
  interface RadiusTokenProps {
307
- /** Radius token key */
308
- radius?: RadiusKey;
309
- /** HTML element or component to render */
310
- as?: React.ElementType;
311
- /** Inline style overrides */
312
- style?: React.CSSProperties;
344
+ /** Radius level */
345
+ radius?: RadiusLevel;
313
346
  /** Content */
314
347
  children?: React.ReactNode;
348
+ /** MUI sx overrides */
349
+ sx?: SxProps;
315
350
  [key: string]: any;
316
351
  }
317
352
 
@@ -324,14 +359,20 @@ interface BaseButtonProps {
324
359
  children?: React.ReactNode;
325
360
  /** Visual style variant */
326
361
  variant?: "fill" | "outline" | "text" | "fab" | "ellipse-fill" | "ellipse-outline";
327
- /** Color key from PrimitiveColor or a raw CSS color string */
328
- color?: string;
362
+ /** Semantic color preset */
363
+ color?: "primary" | "secondary" | "success" | "warning" | "danger";
364
+ /** Custom color key from PrimitiveColor. Overrides `color` prop when set. */
365
+ customColor?: keyof typeof PrimitiveColor | null;
329
366
  /** Button size */
330
367
  size?: "large" | "small";
331
368
  /** Disabled state */
332
369
  disabled?: boolean;
333
370
  /** Icon element rendered before children */
334
- icon?: React.ReactNode;
371
+ startIcon?: React.ReactNode;
372
+ /** Icon element rendered after children */
373
+ endIcon?: React.ReactNode;
374
+ /** Button width */
375
+ width?: string;
335
376
  /** MUI sx overrides */
336
377
  sx?: SxProps;
337
378
  [key: string]: any;
@@ -339,58 +380,37 @@ interface BaseButtonProps {
339
380
 
340
381
  declare function BaseButton(props: BaseButtonProps): React.ReactElement;
341
382
 
342
- interface BaseCardDataItem {
343
- icon?: React.ReactNode;
344
- count?: number | string;
345
- title?: string;
346
- update?: string;
347
- }
348
-
349
383
  interface BaseCardProps {
350
- /** Card layout type */
351
- type?: "default" | "notification" | "with-header" | "summary";
384
+ /** Card variant type */
385
+ variant?: "default" | "with-header" | "with-header-footer";
352
386
  /** Card body content */
353
387
  children?: React.ReactNode;
354
- /** MUI sx overrides */
355
- sx?: SxProps;
356
- /** Icon displayed in the card */
357
- icon?: React.ReactNode;
358
- /** Label text */
359
- label?: string;
360
- /** Title text */
388
+ /** Header background color preset */
389
+ color?: "primary" | "secondary" | "success" | "warning" | "danger";
390
+ /** Header title text */
361
391
  title?: string;
362
- /** Subtitle text */
392
+ /** Header subtitle text */
363
393
  subtitle?: string;
364
- /** Data items for summary card type */
365
- dataList?: BaseCardDataItem[];
366
- /** Last update date string */
367
- updateDate?: string;
368
- /** Bold the count icon */
369
- boldCountIcon?: boolean;
370
- /** Bold the count value */
371
- boldCount?: boolean;
372
394
  /** Bold the title */
373
395
  boldTitle?: boolean;
374
- /** Bold the update text */
375
- boldUpdate?: boolean;
376
- /** Custom icon element for the header */
377
- iconHeader?: React.ReactElement;
378
- /** Card background color */
379
- backgroundColor?: string;
380
- /** Title color */
381
- colorTitlte?: string;
382
- /** Nominal/count color */
383
- colorNominal?: string;
384
- /** Show/hide icon */
385
- displayIcon?: boolean;
386
- /** Number format type */
387
- formatNumber?: "currency" | "nominal" | string;
388
- /** Count text color */
389
- colorCount?: string;
390
- /** Header background color */
391
- headerBackgroundColor?: string;
392
- /** Enable collapse toggle */
396
+ /** Bold the subtitle */
397
+ boldSubtitle?: boolean;
398
+ /** Show/hide subtitle */
399
+ showSubtitle?: boolean;
400
+ /** Enable collapse/expand on header click */
393
401
  isCollapsible?: boolean;
402
+ /** Icon element before title in header */
403
+ startIcon?: React.ReactNode;
404
+ /** Icon element after title in header */
405
+ endIcon?: React.ReactNode;
406
+ /** Show/hide startIcon */
407
+ showStartIcon?: boolean;
408
+ /** Show/hide endIcon */
409
+ showEndIcon?: boolean;
410
+ /** Footer content (only for with-header-footer variant) */
411
+ footer?: React.ReactNode;
412
+ /** MUI sx overrides */
413
+ sx?: SxProps;
394
414
  [key: string]: any;
395
415
  }
396
416
 
@@ -412,31 +432,44 @@ interface BaseSwitchProps {
412
432
  declare function BaseSwitch(props: BaseSwitchProps): React.ReactElement;
413
433
 
414
434
  interface BaseCheckboxOption {
435
+ /** Label yang ditampilkan */
415
436
  label: React.ReactNode;
437
+ /** Nilai opsi */
416
438
  value: string;
439
+ /** Nonaktifkan opsi ini */
417
440
  disabled?: boolean;
418
441
  [key: string]: any;
419
442
  }
420
443
 
421
444
  interface BaseCheckboxSharedProps {
445
+ /** Daftar opsi checkbox (untuk mode group) */
422
446
  options: BaseCheckboxOption[];
447
+ /** Label untuk mode single checkbox */
423
448
  label?: React.ReactNode;
449
+ /** Nonaktifkan semua checkbox */
424
450
  disabled?: boolean;
451
+ /** Posisi label relatif terhadap checkbox */
425
452
  labelPlacement?: "top" | "bottom" | "start" | "end";
453
+ /** Tampilkan checkbox secara horizontal */
426
454
  isHorizontal?: boolean;
427
- sx?: any;
455
+ /** Custom styles via MUI sx prop */
456
+ sx?: SxProps;
428
457
  [key: string]: any;
429
458
  }
430
459
 
431
460
  interface BaseCheckboxSingleProps extends Omit<BaseCheckboxSharedProps, "options"> {
432
461
  options?: undefined;
462
+ /** Nilai checked untuk single checkbox */
433
463
  checked?: boolean;
464
+ /** Callback ketika nilai berubah (single mode) */
434
465
  onChange?: (checked: boolean, event?: React.ChangeEvent<HTMLInputElement>) => void;
435
466
  }
436
467
 
437
468
  interface BaseCheckboxGroupProps extends BaseCheckboxSharedProps {
438
469
  options: BaseCheckboxOption[];
470
+ /** Array nilai yang dipilih (group mode) */
439
471
  checked?: string[];
472
+ /** Callback ketika nilai berubah (group mode) */
440
473
  onChange?: (newValue: string[]) => void;
441
474
  }
442
475
 
@@ -448,25 +481,25 @@ declare function BaseCheckbox(
448
481
  props: BaseCheckboxProps,
449
482
  ): React.ReactElement | null;
450
483
 
451
- type BaseDatatableAlign =
452
- | "left"
453
- | "center"
454
- | "right"
455
- | "justify"
456
- | "inherit"
457
- | (string & {});
458
-
459
- interface BaseDatatableColumn<T = Record<string, any>> {
460
- id?: string;
461
- key?: string;
462
- field?: string;
463
- sortField?: string;
464
- label?: ReactNode;
465
- header?: ReactNode;
466
- accessorKey?: string;
467
- accessorFn?: (row: T) => any;
468
- align?: BaseDatatableAlign;
469
- headerAlign?: BaseDatatableAlign;
484
+ type BaseDatatableAlign =
485
+ | "left"
486
+ | "center"
487
+ | "right"
488
+ | "justify"
489
+ | "inherit"
490
+ | (string & {});
491
+
492
+ interface BaseDatatableColumn<T = Record<string, any>> {
493
+ id?: string;
494
+ key?: string;
495
+ field?: string;
496
+ sortField?: string;
497
+ label?: ReactNode;
498
+ header?: ReactNode;
499
+ accessorKey?: string;
500
+ accessorFn?: (row: T) => any;
501
+ align?: BaseDatatableAlign;
502
+ headerAlign?: BaseDatatableAlign;
470
503
  width?: number;
471
504
  minWidth?: number;
472
505
  sticky?: "left" | "right";
@@ -485,11 +518,11 @@ interface BaseDatatableColumn<T = Record<string, any>> {
485
518
  }) => ReactNode;
486
519
  }
487
520
 
488
- interface BaseDatatableHeaderCell {
489
- id?: string;
490
- key?: string;
491
- label: ReactNode;
492
- align?: BaseDatatableAlign;
521
+ interface BaseDatatableHeaderCell {
522
+ id?: string;
523
+ key?: string;
524
+ label: ReactNode;
525
+ align?: BaseDatatableAlign;
493
526
  colSpan?: number;
494
527
  rowSpan?: number;
495
528
  colspan?: number;
@@ -520,12 +553,12 @@ interface BaseDatatableSortState {
520
553
  direction: "asc" | "desc";
521
554
  }
522
555
 
523
- interface BaseDatatableSortPayload {
524
- orderBy: string;
525
- order: "asc" | "desc";
526
- page: number;
527
- rowsPerPage: number;
528
- }
556
+ interface BaseDatatableSortPayload {
557
+ orderBy: string;
558
+ order: "asc" | "desc";
559
+ page: number;
560
+ rowsPerPage: number;
561
+ }
529
562
 
530
563
  interface BaseDatatableLayout {
531
564
  stickyHeader?: boolean;
@@ -591,14 +624,14 @@ interface BaseDatatableProps<T = Record<string, any>> {
591
624
  layout?: BaseDatatableLayout;
592
625
  selection?: BaseDatatableSelection<T>;
593
626
  pagination?: BaseDatatablePagination;
594
- renderRow?: (context: BaseDatatableRenderRowContext<T>) => ReactNode;
595
- onRowClick?: (row: T, rowIndex: number) => void;
596
- getRowId?: (row: T, rowIndex: number) => string | number;
597
- emptyState?: ReactNode;
598
- loading?: boolean;
599
- loadingText?: ReactNode;
600
- rowHover?: boolean;
601
- activeRowId?: string | number | null;
627
+ renderRow?: (context: BaseDatatableRenderRowContext<T>) => ReactNode;
628
+ onRowClick?: (row: T, rowIndex: number) => void;
629
+ getRowId?: (row: T, rowIndex: number) => string | number;
630
+ emptyState?: ReactNode;
631
+ loading?: boolean;
632
+ loadingText?: ReactNode;
633
+ rowHover?: boolean;
634
+ activeRowId?: string | number | null;
602
635
  containerSx?: SxProps;
603
636
  tableSx?: SxProps;
604
637
  }
@@ -608,33 +641,38 @@ declare function BaseDatatable<T = Record<string, any>>(
608
641
  ): ReactNode;
609
642
 
610
643
  interface BaseDatePickerProps {
611
- type?: string;
612
-
613
- name?: string;
614
- control?: any;
615
-
644
+ /** Picker mode */
645
+ type?: "single" | "day" | "datetime" | "range" | "month" | "year" | "time";
646
+ /** Field name for React Hook Form */
647
+ name: string;
648
+ /** Control object from react-hook-form */
649
+ control: any;
650
+ /** Default selected value */
616
651
  defaultValue?: any;
617
-
618
- title?: React.ReactNode;
619
- subtitle?: React.ReactNode;
620
-
621
- className?: string;
622
- titleClassName?: string;
623
- subtitleClassName?: string;
624
-
652
+ /** Label title above input */
653
+ title?: string;
654
+ /** Optional subtitle */
655
+ subtitle?: string;
656
+ /** Input placeholder text */
625
657
  placeholder?: string;
626
-
627
- minDate?: any;
628
- maxDate?: any;
629
-
658
+ /** Minimum selectable date */
659
+ minDate?: Date | string;
660
+ /** Maximum selectable date */
661
+ maxDate?: Date | string;
662
+ /** Disable picker interaction */
630
663
  isDisabled?: boolean;
664
+ /** Allow user to clear selected value */
631
665
  clearable?: boolean;
666
+ /** Allow manual input editing (range only) */
632
667
  editableDateInputs?: boolean;
633
-
668
+ /** Display format for value */
634
669
  format?: string;
635
-
636
- onChange?: (date: any) => void;
637
-
670
+ /** How the calendar popup is triggered */
671
+ openBy?: "field" | "icon" | "both";
672
+ /** MUI sx overrides for the wrapper */
673
+ sx?: SxProps;
674
+ /** Custom onChange handler */
675
+ onChange?: (value: any) => void;
638
676
  [key: string]: any;
639
677
  }
640
678
 
@@ -642,26 +680,50 @@ declare function BaseDatePicker(
642
680
  props: BaseDatePickerProps,
643
681
  ): React.ReactElement | null;
644
682
 
683
+ interface DropdownOption {
684
+ label: string;
685
+ value: string;
686
+ disabled?: boolean;
687
+ [key: string]: any;
688
+ }
689
+
645
690
  interface BaseDropdownProps {
646
- name?: string;
647
- control?: any;
648
- options?: any[];
649
- loadOptions?: any;
691
+ /** Field name for react-hook-form */
692
+ name: string;
693
+ /** Control object from react-hook-form */
694
+ control: any;
695
+ /** Static options list */
696
+ options?: DropdownOption[];
697
+ /** Async options loader function */
698
+ loadOptions?: (inputValue: string) => Promise<DropdownOption[]>;
699
+ /** Enable multi select mode */
650
700
  isMulti?: boolean;
701
+ /** Enable search input */
651
702
  isSearchable?: boolean;
703
+ /** Show selected values as chips (multi only) */
652
704
  showChip?: boolean;
705
+ /** Show Select All checkbox (multi only) */
653
706
  showSelectAll?: boolean;
654
- title?: React.ReactNode;
655
- subtitle?: React.ReactNode;
656
- className?: string;
657
- titleClassName?: string;
658
- subtitleClassName?: string;
707
+ /** Label title */
708
+ title?: string;
709
+ /** Subtitle text */
710
+ subtitle?: string;
711
+ /** Default selected value */
659
712
  defaultValue?: any;
713
+ /** Disable dropdown */
660
714
  isDisabled?: boolean;
715
+ /** Allow clearing value */
661
716
  isClearable?: boolean;
717
+ /** Limit max height with scroll */
662
718
  preventOverflow?: boolean;
719
+ /** Colors for multi-value tags */
663
720
  optionColors?: string[];
721
+ /** Dropdown variant */
664
722
  variant?: "select" | "checkbox";
723
+ /** MUI sx overrides for wrapper */
724
+ sx?: SxProps;
725
+ /** Custom onChange handler */
726
+ onChange?: (value: any) => void;
665
727
  [key: string]: any;
666
728
  }
667
729
 
@@ -670,33 +732,46 @@ declare function BaseDropdown(
670
732
  ): React.ReactElement;
671
733
 
672
734
  interface BaseDropzoneSettings {
673
- allowedExtensions?: Record<string, any>;
735
+ /** Ekstensi file yang diizinkan (format react-dropzone accept) */
736
+ allowedExtensions?: Record<string, string[]>;
737
+ /** Ukuran maksimal file dalam MB */
674
738
  maxSize?: number;
739
+ /** Jumlah maksimal file yang dapat diupload */
675
740
  maxFiles?: number;
741
+ /** Tampilkan preview gambar */
676
742
  isImagePreview?: boolean;
743
+ /** Tipe tampilan preview */
677
744
  previewType?: "grid" | "list";
678
745
  }
679
746
 
680
747
  interface BaseDropzoneLabels {
748
+ /** Label judul di atas dropzone */
681
749
  title?: React.ReactNode;
750
+ /** Teks utama di dalam area dropzone */
682
751
  dropzoneTitle?: string;
752
+ /** Label pada tombol pilih file */
683
753
  titleButton?: string;
754
+ /** Teks keterangan format file yang diizinkan */
684
755
  allowedFileLabel?: string;
685
756
  }
686
757
 
687
758
  interface BaseDropzoneCallbacks {
688
- uploadFile?: (file: File) => void | Promise<any>;
689
- removeFile?: (file: File) => void;
690
- customError?: (error: unknown) => void;
759
+ /** Callback ketika file berhasil diupload */
760
+ uploadFile?: (files: Array<{ source: string; originName: string; type: string; size: number }>) => void;
761
+ /** Callback ketika file dihapus */
762
+ removeFile?: (fileName: string) => void;
763
+ /** Pesan error kustom dari luar komponen */
764
+ customError?: string | null;
691
765
  }
692
766
 
693
767
  interface BaseDropzoneProps {
768
+ /** Upload otomatis setelah file dipilih */
694
769
  autoUpload?: boolean;
695
-
770
+ /** Pengaturan dropzone */
696
771
  settings?: BaseDropzoneSettings;
697
-
772
+ /** Label-label yang ditampilkan */
698
773
  labels?: BaseDropzoneLabels;
699
-
774
+ /** Callback functions */
700
775
  callbacks?: BaseDropzoneCallbacks;
701
776
  }
702
777
 
@@ -707,38 +782,35 @@ declare function BaseDropzone(
707
782
  interface BaseRadioOption {
708
783
  label: React.ReactNode;
709
784
  value: any;
710
- disabled?: boolean;
785
+ isDisabled?: boolean;
711
786
  [key: string]: any;
712
787
  }
713
788
 
714
789
  interface BaseRadioButtonProps {
790
+ /** Nama field untuk react-hook-form */
715
791
  name?: string;
792
+ /** Control dari useForm() */
716
793
  control?: any;
794
+ /** Nilai awal yang dipilih */
717
795
  defaultValue?: any;
718
-
796
+ /** Label di atas radio group */
719
797
  label?: React.ReactNode;
798
+ /** Daftar opsi radio */
720
799
  options?: BaseRadioOption[];
721
-
722
- /* ================= TYPOGRAPHY ================= */
800
+ /** Variant typography untuk label */
723
801
  labelVariant?: string;
802
+ /** Variant typography untuk pesan error */
724
803
  errorVariant?: string;
725
-
726
- /* ================= LAYOUT ================= */
804
+ /** Orientasi layout radio group */
727
805
  orientation?: "vertical" | "horizontal";
728
-
729
- /* ================= COLOR TOKEN ================= */
806
+ /** Token warna untuk radio yang dipilih */
730
807
  radioColorToken?: string;
731
-
732
- /* ================= STATE ================= */
808
+ /** Nonaktifkan semua opsi */
733
809
  isDisabled?: boolean;
734
-
735
- /* ================= CLASS ================= */
736
- className?: string;
737
- titleClassName?: string;
738
- fieldClassName?: string;
739
-
740
- /* ================= ERROR ================= */
810
+ /** Gunakan error state helper untuk nested field names */
741
811
  useErrorStateHelper?: boolean;
812
+ /** Custom styles via MUI sx prop */
813
+ sx?: SxProps;
742
814
 
743
815
  [key: string]: any;
744
816
  }
@@ -774,42 +846,59 @@ interface BaseStepperProps {
774
846
  orientation?: "horizontal" | "vertical";
775
847
  /** Stepper visual variant */
776
848
  variant?: "simple" | "dashboard";
849
+ /** MUI sx overrides for wrapper */
850
+ sx?: SxProps;
777
851
  }
778
852
 
779
853
  declare function BaseStepper(props: BaseStepperProps): React.ReactElement;
780
854
 
781
855
  interface BaseTextFieldProps {
782
- name?: string;
783
- control?: any;
784
-
856
+ /** Field name for react-hook-form binding */
857
+ name: string;
858
+ /** Control object from react-hook-form */
859
+ control: any;
860
+ /** Default value for the field */
785
861
  defaultValue?: any;
786
- className?: string;
787
- titleClassName?: string;
788
-
862
+ /** Label title displayed above the input */
863
+ title?: string;
864
+ /** Maximum character length */
789
865
  maxLength?: number;
866
+ /** Show "Maksimal X Karakter" helper text */
790
867
  showLength?: boolean;
791
-
868
+ /** Show character counter (e.g. 5/20) */
869
+ showCountHelper?: boolean;
870
+ /** Only allow numeric input (0-9) */
792
871
  isNumericOnly?: boolean;
872
+ /** Only allow alphanumeric input (a-z, A-Z, 0-9) */
793
873
  isAlphaNumericOnly?: boolean;
874
+ /** Only allow alphabetic input (a-z, A-Z) */
794
875
  isAlphaOnly?: boolean;
795
-
876
+ /** Additional special characters to allow */
796
877
  allowedSpecialCharacters?: string;
878
+ /** Special characters to disallow */
797
879
  dontAllowedSpecialCharacters?: string;
798
-
799
- isAlphaNumericWithUnderscore?: boolean;
800
-
880
+ /** Disable the input */
801
881
  isDisabled?: boolean;
882
+ /** Prevent paste action */
802
883
  isCantPaste?: boolean;
803
-
804
- result?: any;
884
+ /** Result text shown below the input */
885
+ result?: React.ReactNode;
886
+ /** Color for the result text */
805
887
  resultColor?: string;
806
-
888
+ /** Disallow spaces */
807
889
  noSpaceAllowed?: boolean;
808
-
809
- showCountHelper?: boolean;
810
-
890
+ /** Input mask pattern (use 'x' for editable slots, e.g. "0xxx-xxxx-xxxx") */
811
891
  textMask?: string;
812
-
892
+ /** MUI InputProps (startAdornment, endAdornment, sx, etc.) */
893
+ InputProps?: Record<string, any>;
894
+ /** Native input props (min, max, step, etc.) */
895
+ inputProps?: Record<string, any>;
896
+ /** MUI sx overrides for the wrapper Box */
897
+ sx?: SxProps;
898
+ /** Input placeholder text */
899
+ placeholder?: string;
900
+ /** Input type (text, password, email, etc.) */
901
+ type?: string;
813
902
  [key: string]: any;
814
903
  }
815
904
 
@@ -818,26 +907,28 @@ declare function BaseTextField(
818
907
  ): React.ReactElement | null;
819
908
 
820
909
  interface TextFieldUploadProps {
910
+ /** Nama field untuk react-hook-form */
821
911
  name?: string;
912
+ /** Control dari useForm() */
822
913
  control?: any;
823
-
914
+ /** Nilai awal field */
824
915
  defaultValue?: string;
825
-
916
+ /** Label di atas field */
826
917
  title?: React.ReactNode;
827
-
918
+ /** Ekstensi file yang diterima (contoh: ".pdf,.jpg") */
828
919
  accept?: string;
920
+ /** Ukuran maksimal file dalam MB */
829
921
  maxSize?: number;
830
-
922
+ /** Nonaktifkan field */
831
923
  isDisabled?: boolean;
832
-
924
+ /** Label pada tombol upload */
833
925
  buttonLabel?: string;
926
+ /** Posisi tombol upload relatif terhadap input */
834
927
  buttonPosition?: "start" | "end";
835
-
928
+ /** Callback ketika file dipilih */
929
+ uploadFile?: (fileName: string, file: File | null) => void;
930
+ /** Posisi ikon pada tombol upload */
836
931
  iconPosition?: "start" | "end";
837
-
838
- uploadFile?: (file: File) => void | Promise<any>;
839
-
840
- [key: string]: any;
841
932
  }
842
933
 
843
934
  declare function TextFieldUpload(
@@ -867,12 +958,8 @@ interface BaseTextAreaProps {
867
958
  exactLength?: number;
868
959
  /** Batas maksimal karakter */
869
960
  maxLength?: number;
870
- /** CSS class untuk wrapper */
871
- className?: string;
872
961
  /** Label di atas field */
873
962
  title?: string;
874
- /** CSS class untuk title */
875
- titleClassName?: string;
876
963
  /** Nonaktifkan field */
877
964
  isDisabled?: boolean;
878
965
  /** Aktifkan TinyMCE rich-text editor (default: plain MUI textarea) */
@@ -885,6 +972,8 @@ interface BaseTextAreaProps {
885
972
  value: string,
886
973
  meta: Record<string, string>,
887
974
  ) => void;
975
+ /** Custom styles via MUI sx prop */
976
+ sx?: SxProps;
888
977
 
889
978
  [key: string]: any;
890
979
  }
@@ -992,4 +1081,4 @@ declare function BaseModalOTP(
992
1081
  props: BaseModalOTPProps,
993
1082
  ): React.ReactElement | null;
994
1083
 
995
- export { type BaseStepperDashboardStep as $, type BaseCheckboxProps as A, BaseAlert as B, CONTENT_SPACING_TOKENS as C, DerivedColor as D, type BaseDatatableAlign as E, type BaseDatatableColumn as F, type BaseDatatableFeatures as G, type BaseDatatableHeaderCell as H, type BaseDatatableLayout as I, type BaseDatatablePagination as J, type BaseDatatableProps as K, type BaseDatatableSelection as L, type BaseDatatableSortPayload as M, type BaseDatatableSortState as N, type BaseDatePickerProps as O, PrimitiveColor as P, type BaseDropdownProps as Q, Radius as R, Shadow as S, TextFieldUpload as T, type BaseDropzoneProps as U, VariantStyles as V, type BaseModalOTPProps as W, type BaseModalProps as X, type BaseModalStepperProps as Y, type BaseModalStepperStep as Z, type BaseRadioButtonProps as _, BaseButton as a, type BaseStepperProps as a0, type BaseStepperSimpleStep as a1, type BaseSwitchProps as a2, type BaseTextAreaProps as a3, type BaseTextFieldProps as a4, type ContentSpacingProps as a5, type DerivedColorType as a6, type PrimitiveColorType as a7, type RadiusKey as a8, type RadiusMap as a9, type RadiusTokenProps as aa, type ShadowElevation as ab, type ShadowLevel as ac, type ShadowMap as ad, type ShadowTokenProps as ae, type SpacingProps as af, type TextFieldUploadProps as ag, type TypographyColorToken as ah, type TypographyProps as ai, BaseCard as b, BaseCheckbox as c, BaseDatatable as d, BaseDatePicker as e, BaseDropdown as f, BaseDropzone as g, BaseModal as h, BaseModalOTP as i, BaseModalStepper as j, BaseRadioButton as k, BaseStepper as l, BaseSwitch as m, BaseTextArea as n, BaseTextField as o, ContentSpacing as p, RadiusToken as q, ShadowToken as r, Spacing as s, SpacingToken as t, Typography as u, type BaseAlertProps as v, type BaseButtonProps as w, type BaseCardDataItem as x, type BaseCardProps as y, type BaseCheckboxOption as z };
1084
+ export { type BaseStepperProps as $, type BaseDatatableAlign as A, BaseAlert as B, CONTENT_SPACING_TOKENS as C, DerivedColor as D, type BaseDatatableColumn as E, type BaseDatatableFeatures as F, type BaseDatatableHeaderCell as G, type BaseDatatableLayout as H, type BaseDatatablePagination as I, type BaseDatatableProps as J, type BaseDatatableSelection as K, type BaseDatatableSortPayload as L, type BaseDatatableSortState as M, type BaseDatePickerProps as N, type BaseDropdownProps as O, PrimitiveColor as P, type BaseDropzoneProps as Q, Radius as R, Shadow as S, TextFieldUpload as T, type BaseModalOTPProps as U, VariantStyles as V, type BaseModalProps as W, type BaseModalStepperProps as X, type BaseModalStepperStep as Y, type BaseRadioButtonProps as Z, type BaseStepperDashboardStep as _, BaseButton as a, type BaseStepperSimpleStep as a0, type BaseSwitchProps as a1, type BaseTextAreaProps as a2, type BaseTextFieldProps as a3, type ContentSpacingProps as a4, type DerivedColorType as a5, type PrimitiveColorType as a6, type RadiusLevel as a7, type RadiusMap as a8, type RadiusTokenProps as a9, type ShadowElevation as aa, type ShadowLevel as ab, type ShadowMap as ac, type ShadowTokenProps as ad, type SpacingProps as ae, type TextFieldUploadProps as af, type TypographyColor as ag, type TypographyProps as ah, type TypographyVariant as ai, BaseCard as b, BaseCheckbox as c, BaseDatatable as d, BaseDatePicker as e, BaseDropdown as f, BaseDropzone as g, BaseModal as h, BaseModalOTP as i, BaseModalStepper as j, BaseRadioButton as k, BaseStepper as l, BaseSwitch as m, BaseTextArea as n, BaseTextField as o, BaseTypography as p, ContentSpacing as q, RadiusToken as r, ShadowToken as s, Spacing as t, SpacingToken as u, type BaseAlertProps as v, type BaseButtonProps as w, type BaseCardProps as x, type BaseCheckboxOption as y, type BaseCheckboxProps as z };