analytica-frontend-lib 1.0.16 → 1.0.17

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.
package/dist/index.css CHANGED
@@ -68,6 +68,7 @@
68
68
  --color-primary-950: #080808;
69
69
  --color-text: #fefeff;
70
70
  --color-text-400: #a3a3a3;
71
+ --color-text-500: #8c8c8c;
71
72
  --color-text-600: #737373;
72
73
  --color-text-700: #525252;
73
74
  --color-text-800: #404040;
@@ -81,6 +82,8 @@
81
82
  --color-border-50: #f3f3f3;
82
83
  --color-border-100: #e6e6e6;
83
84
  --color-border-200: #dddcdb;
85
+ --color-border-400: #a5a3a3;
86
+ --color-border-500: #8c8d8d;
84
87
  --color-success-300: #66b584;
85
88
  --color-success-400: #489766;
86
89
  --color-success-500: #348352;
@@ -366,6 +369,9 @@
366
369
  .my-4 {
367
370
  margin-block: calc(var(--spacing) * 4);
368
371
  }
372
+ .mt-1\.5 {
373
+ margin-top: calc(var(--spacing) * 1.5);
374
+ }
369
375
  .mt-2 {
370
376
  margin-top: calc(var(--spacing) * 2);
371
377
  }
@@ -384,18 +390,30 @@
384
390
  .mb-4 {
385
391
  margin-bottom: calc(var(--spacing) * 4);
386
392
  }
393
+ .mb-6 {
394
+ margin-bottom: calc(var(--spacing) * 6);
395
+ }
396
+ .mb-8 {
397
+ margin-bottom: calc(var(--spacing) * 8);
398
+ }
387
399
  .ml-2 {
388
400
  margin-left: calc(var(--spacing) * 2);
389
401
  }
390
402
  .flex {
391
403
  display: flex;
392
404
  }
405
+ .grid {
406
+ display: grid;
407
+ }
393
408
  .inline-flex {
394
409
  display: inline-flex;
395
410
  }
396
411
  .table {
397
412
  display: table;
398
413
  }
414
+ .h-4 {
415
+ height: calc(var(--spacing) * 4);
416
+ }
399
417
  .h-5 {
400
418
  height: calc(var(--spacing) * 5);
401
419
  }
@@ -408,9 +426,18 @@
408
426
  .h-10 {
409
427
  height: calc(var(--spacing) * 10);
410
428
  }
429
+ .h-\[21px\] {
430
+ height: 21px;
431
+ }
432
+ .h-\[27px\] {
433
+ height: 27px;
434
+ }
411
435
  .h-px {
412
436
  height: 1px;
413
437
  }
438
+ .w-4 {
439
+ width: calc(var(--spacing) * 4);
440
+ }
414
441
  .w-5 {
415
442
  width: calc(var(--spacing) * 5);
416
443
  }
@@ -445,6 +472,9 @@
445
472
  .cursor-pointer {
446
473
  cursor: pointer;
447
474
  }
475
+ .grid-cols-2 {
476
+ grid-template-columns: repeat(2, minmax(0, 1fr));
477
+ }
448
478
  .flex-col {
449
479
  flex-direction: column;
450
480
  }
@@ -457,6 +487,9 @@
457
487
  .items-center {
458
488
  align-items: center;
459
489
  }
490
+ .items-end {
491
+ align-items: flex-end;
492
+ }
460
493
  .justify-center {
461
494
  justify-content: center;
462
495
  }
@@ -466,6 +499,9 @@
466
499
  .gap-0\.5 {
467
500
  gap: calc(var(--spacing) * 0.5);
468
501
  }
502
+ .gap-1\.5 {
503
+ gap: calc(var(--spacing) * 1.5);
504
+ }
469
505
  .gap-2 {
470
506
  gap: calc(var(--spacing) * 2);
471
507
  }
@@ -484,6 +520,9 @@
484
520
  .overflow-hidden {
485
521
  overflow: hidden;
486
522
  }
523
+ .rounded {
524
+ border-radius: 0.25rem;
525
+ }
487
526
  .rounded-full {
488
527
  border-radius: calc(infinity * 1px);
489
528
  }
@@ -503,6 +542,14 @@
503
542
  border-style: var(--tw-border-style);
504
543
  border-width: 1px;
505
544
  }
545
+ .border-2 {
546
+ border-style: var(--tw-border-style);
547
+ border-width: 2px;
548
+ }
549
+ .border-\[3px\] {
550
+ border-style: var(--tw-border-style);
551
+ border-width: 3px;
552
+ }
506
553
  .border-t {
507
554
  border-top-style: var(--tw-border-style);
508
555
  border-top-width: 1px;
@@ -527,18 +574,36 @@
527
574
  .border-border-200 {
528
575
  border-color: var(--color-border-200);
529
576
  }
577
+ .border-border-400 {
578
+ border-color: var(--color-border-400);
579
+ }
580
+ .border-border-500 {
581
+ border-color: var(--color-border-500);
582
+ }
530
583
  .border-error-300 {
531
584
  border-color: var(--color-error-300);
532
585
  }
533
586
  .border-error-500 {
534
587
  border-color: var(--color-error-500);
535
588
  }
589
+ .border-error-700 {
590
+ border-color: var(--color-error-700);
591
+ }
536
592
  .border-indicator-error {
537
593
  border-color: var(--color-indicator-error);
538
594
  }
595
+ .border-indicator-info {
596
+ border-color: var(--color-indicator-info);
597
+ }
539
598
  .border-indicator-primary {
540
599
  border-color: var(--color-indicator-primary);
541
600
  }
601
+ .border-primary-600 {
602
+ border-color: var(--color-primary-600);
603
+ }
604
+ .border-primary-800 {
605
+ border-color: var(--color-primary-800);
606
+ }
542
607
  .border-primary-950 {
543
608
  border-color: var(--color-primary-950);
544
609
  }
@@ -569,6 +634,12 @@
569
634
  .bg-primary-50 {
570
635
  background-color: var(--color-primary-50);
571
636
  }
637
+ .bg-primary-600 {
638
+ background-color: var(--color-primary-600);
639
+ }
640
+ .bg-primary-800 {
641
+ background-color: var(--color-primary-800);
642
+ }
572
643
  .bg-primary-950 {
573
644
  background-color: var(--color-primary-950);
574
645
  }
@@ -590,6 +661,9 @@
590
661
  .p-4 {
591
662
  padding: calc(var(--spacing) * 4);
592
663
  }
664
+ .p-6 {
665
+ padding: calc(var(--spacing) * 6);
666
+ }
593
667
  .p-8 {
594
668
  padding: calc(var(--spacing) * 8);
595
669
  }
@@ -686,6 +760,10 @@
686
760
  font-size: var(--text-xs);
687
761
  line-height: var(--tw-leading, var(--text-xs--line-height));
688
762
  }
763
+ .leading-\[150\%\] {
764
+ --tw-leading: 150%;
765
+ line-height: 150%;
766
+ }
689
767
  .font-black {
690
768
  --tw-font-weight: var(--font-weight-black);
691
769
  font-weight: var(--font-weight-black);
@@ -727,6 +805,9 @@
727
805
  .text-error-500 {
728
806
  color: var(--color-error-500);
729
807
  }
808
+ .text-error-600 {
809
+ color: var(--color-error-600);
810
+ }
730
811
  .text-primary-950 {
731
812
  color: var(--color-primary-950);
732
813
  }
@@ -739,6 +820,9 @@
739
820
  .text-text-400 {
740
821
  color: var(--color-text-400);
741
822
  }
823
+ .text-text-500 {
824
+ color: var(--color-text-500);
825
+ }
742
826
  .text-text-600 {
743
827
  color: var(--color-text-600);
744
828
  }
@@ -760,6 +844,9 @@
760
844
  .italic {
761
845
  font-style: italic;
762
846
  }
847
+ .opacity-40 {
848
+ opacity: 40%;
849
+ }
763
850
  .opacity-50 {
764
851
  opacity: 50%;
765
852
  }
@@ -799,6 +886,12 @@
799
886
  var(--tw-ring-shadow),
800
887
  var(--tw-shadow);
801
888
  }
889
+ .ring-indicator-info\/20 {
890
+ --tw-ring-color: color-mix(in srgb, #5399ec 20%, transparent);
891
+ @supports (color: color-mix(in lab, red, red)) {
892
+ --tw-ring-color: color-mix(in oklab, var(--color-indicator-info) 20%, transparent);
893
+ }
894
+ }
802
895
  .ring-primary-950 {
803
896
  --tw-ring-color: var(--color-primary-950);
804
897
  }
@@ -810,6 +903,11 @@
810
903
  outline-style: var(--tw-outline-style);
811
904
  outline-width: 1px;
812
905
  }
906
+ .transition-all {
907
+ transition-property: all;
908
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
909
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
910
+ }
813
911
  .transition-colors {
814
912
  transition-property:
815
913
  color,
@@ -825,6 +923,10 @@
825
923
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
826
924
  transition-duration: var(--tw-duration, var(--default-transition-duration));
827
925
  }
926
+ .duration-200 {
927
+ --tw-duration: 200ms;
928
+ transition-duration: 200ms;
929
+ }
828
930
  .outline-none {
829
931
  --tw-outline-style: none;
830
932
  outline-style: none;
@@ -834,6 +936,13 @@
834
936
  -moz-user-select: none;
835
937
  user-select: none;
836
938
  }
939
+ .hover\:border-border-500 {
940
+ &:hover {
941
+ @media (hover: hover) {
942
+ border-color: var(--color-border-500);
943
+ }
944
+ }
945
+ }
837
946
  .hover\:border-error-400 {
838
947
  &:hover {
839
948
  @media (hover: hover) {
@@ -973,6 +1082,12 @@
973
1082
  }
974
1083
  }
975
1084
  }
1085
+ .focus\:outline-none {
1086
+ &:focus {
1087
+ --tw-outline-style: none;
1088
+ outline-style: none;
1089
+ }
1090
+ }
976
1091
  .focus-visible\:border-0 {
977
1092
  &:focus-visible {
978
1093
  border-style: var(--tw-border-style);
@@ -1559,6 +1674,7 @@
1559
1674
  @property --tw-skew-x { syntax: "*"; inherits: false; }
1560
1675
  @property --tw-skew-y { syntax: "*"; inherits: false; }
1561
1676
  @property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }
1677
+ @property --tw-leading { syntax: "*"; inherits: false; }
1562
1678
  @property --tw-font-weight { syntax: "*"; inherits: false; }
1563
1679
  @property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1564
1680
  @property --tw-shadow-color { syntax: "*"; inherits: false; }
@@ -1575,6 +1691,7 @@
1575
1691
  @property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }
1576
1692
  @property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }
1577
1693
  @property --tw-outline-style { syntax: "*"; inherits: false; initial-value: solid; }
1694
+ @property --tw-duration { syntax: "*"; inherits: false; }
1578
1695
  @layer properties {
1579
1696
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
1580
1697
  *,
@@ -1590,6 +1707,7 @@
1590
1707
  --tw-skew-x: initial;
1591
1708
  --tw-skew-y: initial;
1592
1709
  --tw-border-style: solid;
1710
+ --tw-leading: initial;
1593
1711
  --tw-font-weight: initial;
1594
1712
  --tw-shadow: 0 0 #0000;
1595
1713
  --tw-shadow-color: initial;
@@ -1606,6 +1724,7 @@
1606
1724
  --tw-ring-offset-color: #fff;
1607
1725
  --tw-ring-offset-shadow: 0 0 #0000;
1608
1726
  --tw-outline-style: solid;
1727
+ --tw-duration: initial;
1609
1728
  }
1610
1729
  }
1611
1730
  }
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
- import { ReactNode, ButtonHTMLAttributes, ElementType, ComponentPropsWithoutRef, HTMLAttributes, TdHTMLAttributes } from 'react';
3
+ import { ReactNode, ButtonHTMLAttributes, ElementType, ComponentPropsWithoutRef, InputHTMLAttributes, HTMLAttributes, TdHTMLAttributes } from 'react';
4
4
 
5
5
  /**
6
6
  * Button component props interface
@@ -184,6 +184,76 @@ type TextProps<T extends ElementType = 'p'> = BaseTextProps & {
184
184
  */
185
185
  declare const Text: <T extends ElementType = "p">({ children, size, weight, color, as, className, ...props }: TextProps<T>) => react_jsx_runtime.JSX.Element;
186
186
 
187
+ /**
188
+ * CheckBox size variants
189
+ */
190
+ type CheckBoxSize = 'small' | 'medium' | 'large';
191
+ /**
192
+ * CheckBox visual state
193
+ */
194
+ type CheckBoxState = 'default' | 'hovered' | 'focused' | 'invalid' | 'disabled';
195
+ /**
196
+ * CheckBox component props interface
197
+ */
198
+ type CheckBoxProps = {
199
+ /** Label text to display next to the checkbox */
200
+ label?: ReactNode;
201
+ /** Size variant of the checkbox */
202
+ size?: CheckBoxSize;
203
+ /** Visual state of the checkbox */
204
+ state?: CheckBoxState;
205
+ /** Indeterminate state for partial selections */
206
+ indeterminate?: boolean;
207
+ /** Error message to display */
208
+ errorMessage?: string;
209
+ /** Helper text to display */
210
+ helperText?: string;
211
+ /** Additional CSS classes */
212
+ className?: string;
213
+ /** Label CSS classes */
214
+ labelClassName?: string;
215
+ } & Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>;
216
+ /**
217
+ * CheckBox component for Analytica Ensino platforms
218
+ *
219
+ * A checkbox component with essential states, sizes and themes.
220
+ * Uses the Analytica Ensino Design System colors from styles.css with automatic
221
+ * light/dark mode support. Includes Text component integration for consistent typography.
222
+ *
223
+ * @example
224
+ * ```tsx
225
+ * // Basic checkbox
226
+ * <CheckBox label="Option" />
227
+ *
228
+ * // Small size
229
+ * <CheckBox size="small" label="Small option" />
230
+ *
231
+ * // Invalid state
232
+ * <CheckBox state="invalid" label="Required field" />
233
+ *
234
+ * // Disabled state
235
+ * <CheckBox disabled label="Disabled option" />
236
+ * ```
237
+ */
238
+ declare const CheckBox: react.ForwardRefExoticComponent<{
239
+ /** Label text to display next to the checkbox */
240
+ label?: ReactNode;
241
+ /** Size variant of the checkbox */
242
+ size?: CheckBoxSize;
243
+ /** Visual state of the checkbox */
244
+ state?: CheckBoxState;
245
+ /** Indeterminate state for partial selections */
246
+ indeterminate?: boolean;
247
+ /** Error message to display */
248
+ errorMessage?: string;
249
+ /** Helper text to display */
250
+ helperText?: string;
251
+ /** Additional CSS classes */
252
+ className?: string;
253
+ /** Label CSS classes */
254
+ labelClassName?: string;
255
+ } & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "type"> & react.RefAttributes<HTMLInputElement>>;
256
+
187
257
  type TableRowState = 'default' | 'selected' | 'invalid' | 'disabled';
188
258
  interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {
189
259
  state?: TableRowState;
@@ -348,4 +418,4 @@ declare const IconButton: react.ForwardRefExoticComponent<{
348
418
  className?: string;
349
419
  } & ButtonHTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
350
420
 
351
- export { Button, DropdownMenu, DropdownMenuTrigger, IconButton, type IconButtonProps, IconRoundedButton, MenuContent, MenuItem, MenuLabel, MenuSeparator, NavButton, SelectionButton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Text };
421
+ export { Button, CheckBox, type CheckBoxProps, DropdownMenu, DropdownMenuTrigger, IconButton, type IconButtonProps, IconRoundedButton, MenuContent, MenuItem, MenuLabel, MenuSeparator, NavButton, SelectionButton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Text };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
- import { ReactNode, ButtonHTMLAttributes, ElementType, ComponentPropsWithoutRef, HTMLAttributes, TdHTMLAttributes } from 'react';
3
+ import { ReactNode, ButtonHTMLAttributes, ElementType, ComponentPropsWithoutRef, InputHTMLAttributes, HTMLAttributes, TdHTMLAttributes } from 'react';
4
4
 
5
5
  /**
6
6
  * Button component props interface
@@ -184,6 +184,76 @@ type TextProps<T extends ElementType = 'p'> = BaseTextProps & {
184
184
  */
185
185
  declare const Text: <T extends ElementType = "p">({ children, size, weight, color, as, className, ...props }: TextProps<T>) => react_jsx_runtime.JSX.Element;
186
186
 
187
+ /**
188
+ * CheckBox size variants
189
+ */
190
+ type CheckBoxSize = 'small' | 'medium' | 'large';
191
+ /**
192
+ * CheckBox visual state
193
+ */
194
+ type CheckBoxState = 'default' | 'hovered' | 'focused' | 'invalid' | 'disabled';
195
+ /**
196
+ * CheckBox component props interface
197
+ */
198
+ type CheckBoxProps = {
199
+ /** Label text to display next to the checkbox */
200
+ label?: ReactNode;
201
+ /** Size variant of the checkbox */
202
+ size?: CheckBoxSize;
203
+ /** Visual state of the checkbox */
204
+ state?: CheckBoxState;
205
+ /** Indeterminate state for partial selections */
206
+ indeterminate?: boolean;
207
+ /** Error message to display */
208
+ errorMessage?: string;
209
+ /** Helper text to display */
210
+ helperText?: string;
211
+ /** Additional CSS classes */
212
+ className?: string;
213
+ /** Label CSS classes */
214
+ labelClassName?: string;
215
+ } & Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>;
216
+ /**
217
+ * CheckBox component for Analytica Ensino platforms
218
+ *
219
+ * A checkbox component with essential states, sizes and themes.
220
+ * Uses the Analytica Ensino Design System colors from styles.css with automatic
221
+ * light/dark mode support. Includes Text component integration for consistent typography.
222
+ *
223
+ * @example
224
+ * ```tsx
225
+ * // Basic checkbox
226
+ * <CheckBox label="Option" />
227
+ *
228
+ * // Small size
229
+ * <CheckBox size="small" label="Small option" />
230
+ *
231
+ * // Invalid state
232
+ * <CheckBox state="invalid" label="Required field" />
233
+ *
234
+ * // Disabled state
235
+ * <CheckBox disabled label="Disabled option" />
236
+ * ```
237
+ */
238
+ declare const CheckBox: react.ForwardRefExoticComponent<{
239
+ /** Label text to display next to the checkbox */
240
+ label?: ReactNode;
241
+ /** Size variant of the checkbox */
242
+ size?: CheckBoxSize;
243
+ /** Visual state of the checkbox */
244
+ state?: CheckBoxState;
245
+ /** Indeterminate state for partial selections */
246
+ indeterminate?: boolean;
247
+ /** Error message to display */
248
+ errorMessage?: string;
249
+ /** Helper text to display */
250
+ helperText?: string;
251
+ /** Additional CSS classes */
252
+ className?: string;
253
+ /** Label CSS classes */
254
+ labelClassName?: string;
255
+ } & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "type"> & react.RefAttributes<HTMLInputElement>>;
256
+
187
257
  type TableRowState = 'default' | 'selected' | 'invalid' | 'disabled';
188
258
  interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {
189
259
  state?: TableRowState;
@@ -348,4 +418,4 @@ declare const IconButton: react.ForwardRefExoticComponent<{
348
418
  className?: string;
349
419
  } & ButtonHTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
350
420
 
351
- export { Button, DropdownMenu, DropdownMenuTrigger, IconButton, type IconButtonProps, IconRoundedButton, MenuContent, MenuItem, MenuLabel, MenuSeparator, NavButton, SelectionButton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Text };
421
+ export { Button, CheckBox, type CheckBoxProps, DropdownMenu, DropdownMenuTrigger, IconButton, type IconButtonProps, IconRoundedButton, MenuContent, MenuItem, MenuLabel, MenuSeparator, NavButton, SelectionButton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Text };