analytica-frontend-lib 1.0.38 → 1.0.40

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 (104) hide show
  1. package/README.md +1 -2
  2. package/dist/Alert/index.js.map +1 -1
  3. package/dist/Alert/index.mjs.map +1 -1
  4. package/dist/Badge/index.d.mts +0 -1
  5. package/dist/Badge/index.d.ts +0 -1
  6. package/dist/Badge/index.js.map +1 -1
  7. package/dist/Badge/index.mjs.map +1 -1
  8. package/dist/Button/index.d.mts +0 -1
  9. package/dist/Button/index.d.ts +0 -1
  10. package/dist/Button/index.js.map +1 -1
  11. package/dist/Button/index.mjs.map +1 -1
  12. package/dist/CheckBox/index.js +0 -1
  13. package/dist/CheckBox/index.js.map +1 -1
  14. package/dist/CheckBox/index.mjs +0 -2
  15. package/dist/CheckBox/index.mjs.map +1 -1
  16. package/dist/Chips/index.d.mts +41 -0
  17. package/dist/Chips/index.d.ts +41 -0
  18. package/dist/Chips/index.js +57 -0
  19. package/dist/Chips/index.js.map +1 -0
  20. package/dist/Chips/index.mjs +36 -0
  21. package/dist/Chips/index.mjs.map +1 -0
  22. package/dist/Divider/index.d.mts +32 -0
  23. package/dist/Divider/index.d.ts +32 -0
  24. package/dist/Divider/index.js +47 -0
  25. package/dist/Divider/index.js.map +1 -0
  26. package/dist/Divider/index.mjs +26 -0
  27. package/dist/Divider/index.mjs.map +1 -0
  28. package/dist/DropdownMenu/index.d.mts +3 -3
  29. package/dist/DropdownMenu/index.d.ts +3 -3
  30. package/dist/DropdownMenu/index.js +8 -9
  31. package/dist/DropdownMenu/index.js.map +1 -1
  32. package/dist/DropdownMenu/index.mjs +6 -8
  33. package/dist/DropdownMenu/index.mjs.map +1 -1
  34. package/dist/IconButton/index.d.mts +0 -1
  35. package/dist/IconButton/index.d.ts +0 -1
  36. package/dist/IconButton/index.js.map +1 -1
  37. package/dist/IconButton/index.mjs.map +1 -1
  38. package/dist/IconRoundedButton/index.d.mts +0 -1
  39. package/dist/IconRoundedButton/index.d.ts +0 -1
  40. package/dist/IconRoundedButton/index.js.map +1 -1
  41. package/dist/IconRoundedButton/index.mjs.map +1 -1
  42. package/dist/Input/index.d.mts +27 -0
  43. package/dist/Input/index.d.ts +27 -0
  44. package/dist/Input/index.js +184 -0
  45. package/dist/Input/index.js.map +1 -0
  46. package/dist/Input/index.mjs +168 -0
  47. package/dist/Input/index.mjs.map +1 -0
  48. package/dist/Menu/index.d.mts +41 -0
  49. package/dist/Menu/index.d.ts +41 -0
  50. package/dist/Menu/index.js +307 -0
  51. package/dist/Menu/index.js.map +1 -0
  52. package/dist/Menu/index.mjs +283 -0
  53. package/dist/Menu/index.mjs.map +1 -0
  54. package/dist/NavButton/index.d.mts +0 -1
  55. package/dist/NavButton/index.d.ts +0 -1
  56. package/dist/NavButton/index.js.map +1 -1
  57. package/dist/NavButton/index.mjs.map +1 -1
  58. package/dist/ProgressBar/index.js +0 -1
  59. package/dist/ProgressBar/index.js.map +1 -1
  60. package/dist/ProgressBar/index.mjs +0 -2
  61. package/dist/ProgressBar/index.mjs.map +1 -1
  62. package/dist/ProgressCircle/index.js +0 -1
  63. package/dist/ProgressCircle/index.js.map +1 -1
  64. package/dist/ProgressCircle/index.mjs +0 -2
  65. package/dist/ProgressCircle/index.mjs.map +1 -1
  66. package/dist/Radio/index.js +0 -1
  67. package/dist/Radio/index.js.map +1 -1
  68. package/dist/Radio/index.mjs +0 -2
  69. package/dist/Radio/index.mjs.map +1 -1
  70. package/dist/Select/index.js +0 -1
  71. package/dist/Select/index.js.map +1 -1
  72. package/dist/Select/index.mjs +0 -2
  73. package/dist/Select/index.mjs.map +1 -1
  74. package/dist/SelectionButton/index.d.mts +0 -1
  75. package/dist/SelectionButton/index.d.ts +0 -1
  76. package/dist/SelectionButton/index.js.map +1 -1
  77. package/dist/SelectionButton/index.mjs.map +1 -1
  78. package/dist/Text/index.d.mts +0 -1
  79. package/dist/Text/index.d.ts +0 -1
  80. package/dist/Text/index.js.map +1 -1
  81. package/dist/Text/index.mjs.map +1 -1
  82. package/dist/TextArea/index.js +0 -1
  83. package/dist/TextArea/index.js.map +1 -1
  84. package/dist/TextArea/index.mjs +0 -2
  85. package/dist/TextArea/index.mjs.map +1 -1
  86. package/dist/Toast/Toaster/index.js +0 -1
  87. package/dist/Toast/Toaster/index.js.map +1 -1
  88. package/dist/Toast/Toaster/index.mjs +0 -2
  89. package/dist/Toast/Toaster/index.mjs.map +1 -1
  90. package/dist/Toast/index.js +0 -1
  91. package/dist/Toast/index.js.map +1 -1
  92. package/dist/Toast/index.mjs +0 -2
  93. package/dist/Toast/index.mjs.map +1 -1
  94. package/dist/index.css +84 -0
  95. package/dist/index.css.map +1 -1
  96. package/dist/index.d.mts +7 -94
  97. package/dist/index.d.ts +7 -94
  98. package/dist/index.js +174 -4
  99. package/dist/index.js.map +1 -1
  100. package/dist/index.mjs +179 -4
  101. package/dist/index.mjs.map +1 -1
  102. package/dist/styles.css +84 -0
  103. package/dist/styles.css.map +1 -1
  104. package/package.json +2 -5
package/dist/index.d.ts CHANGED
@@ -12,102 +12,15 @@ export { default as Radio } from './Radio/index.js';
12
12
  export { default as TextArea } from './TextArea/index.js';
13
13
  export { default as Toast } from './Toast/index.js';
14
14
  export { default as Toaster } from './Toast/Toaster/index.js';
15
- import * as react_jsx_runtime from 'react/jsx-runtime';
16
- import * as react from 'react';
17
- import { HTMLAttributes, ReactNode, InputHTMLAttributes, ButtonHTMLAttributes } from 'react';
15
+ export { default as Divider } from './Divider/index.js';
18
16
  export { default as useToastStore } from './Toast/ToastStore/index.js';
17
+ export { default as Input } from './Input/index.js';
18
+ export { default as Chips } from './Chips/index.js';
19
19
  export { default as ProgressBar } from './ProgressBar/index.js';
20
20
  export { default as ProgressCircle } from './ProgressCircle/index.js';
21
- export { default as DropdownMenu, DropdownMenuTrigger, MenuContent, MenuItem, MenuLabel, MenuSeparator, ProfileMenuFooter, ProfileMenuHeader, ProfileMenuSection, ProfileMenuTrigger } from './DropdownMenu/index.js';
21
+ export { default as DropdownMenu, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, MenuContent, MenuLabel, ProfileMenuFooter, ProfileMenuHeader, ProfileMenuSection, ProfileMenuTrigger } from './DropdownMenu/index.js';
22
22
  export { default as Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './Select/index.js';
23
+ export { default as Menu, MenuItem, MenuSeparator } from './Menu/index.js';
24
+ import 'react/jsx-runtime';
25
+ import 'react';
23
26
  import 'zustand';
24
-
25
- /**
26
- * Divider component props interface
27
- */
28
- type DividerProps = {
29
- /** Orientation of the divider */
30
- orientation?: 'horizontal' | 'vertical';
31
- /** Additional CSS classes to apply */
32
- className?: string;
33
- } & HTMLAttributes<HTMLHRElement>;
34
- /**
35
- * Divider component for Analytica Ensino platforms
36
- *
37
- * A simple divider component that creates a visual separation between content sections.
38
- * Can be used both horizontally and vertically.
39
- *
40
- * @param orientation - The orientation of the divider (horizontal or vertical)
41
- * @param className - Additional CSS classes
42
- * @param props - All other standard hr HTML attributes
43
- * @returns A styled divider element
44
- *
45
- * @example
46
- * ```tsx
47
- * <Divider orientation="horizontal" />
48
- * <Divider orientation="vertical" className="h-8" />
49
- * ```
50
- */
51
- declare const Divider: ({ orientation, className, ...props }: DividerProps) => react_jsx_runtime.JSX.Element;
52
-
53
- declare const Input: react.ForwardRefExoticComponent<{
54
- /** Label text displayed above the input */
55
- label?: string;
56
- /** Helper text displayed below the input */
57
- helperText?: string;
58
- /** Error message displayed below the input */
59
- errorMessage?: string;
60
- /** Size of the input */
61
- size?: "small" | "medium" | "large" | "extra-large";
62
- /** Visual variant of the input */
63
- variant?: "outlined" | "underlined" | "rounded";
64
- /** Current state of the input */
65
- state?: "default" | "error" | "disabled" | "read-only";
66
- /** Icon to display on the left side of the input */
67
- iconLeft?: ReactNode;
68
- /** Icon to display on the right side of the input */
69
- iconRight?: ReactNode;
70
- /** Additional CSS classes to apply to the input */
71
- className?: string;
72
- /** Additional CSS classes to apply to the container */
73
- containerClassName?: string;
74
- } & Omit<InputHTMLAttributes<HTMLInputElement>, "size"> & react.RefAttributes<HTMLInputElement>>;
75
-
76
- /**
77
- * Chips component props interface
78
- */
79
- type ChipsProps = {
80
- /** Content to be displayed inside the chip */
81
- children: ReactNode;
82
- /** Se o chip está selecionado (mostra check automaticamente) */
83
- selected?: boolean;
84
- /** Additional CSS classes to apply */
85
- className?: string;
86
- } & Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>;
87
- /**
88
- * Chips component for Analytica Ensino platforms
89
- *
90
- * Um componente de chip seguindo exatamente o design do Figma.
91
- * Suporte a dois estados principais: default (sem ícone) e selected (com ícone de check).
92
- * Quando selecionado, automaticamente mostra o ícone de check.
93
- *
94
- * @param children - O conteúdo a ser exibido dentro do chip
95
- * @param selected - Se o chip está selecionado (mostra check automaticamente)
96
- * @param className - Classes CSS adicionais
97
- * @param props - Todos os outros atributos padrão de button HTML
98
- * @returns Um elemento de chip estilizado
99
- *
100
- * @example
101
- * ```tsx
102
- * <Chips onClick={() => console.log('clicked')}>
103
- * Label
104
- * </Chips>
105
- *
106
- * <Chips selected onClick={() => console.log('selected')}>
107
- * Selected Label
108
- * </Chips>
109
- * ```
110
- */
111
- declare const Chips: ({ children, selected, className, disabled, type, ...props }: ChipsProps) => react_jsx_runtime.JSX.Element;
112
-
113
- export { Chips, Divider, Input };
package/dist/index.js CHANGED
@@ -27,10 +27,13 @@ __export(src_exports, {
27
27
  Chips: () => Chips_default,
28
28
  Divider: () => Divider_default,
29
29
  DropdownMenu: () => DropdownMenu_default,
30
+ DropdownMenuItem: () => DropdownMenuItem,
31
+ DropdownMenuSeparator: () => DropdownMenuSeparator,
30
32
  DropdownMenuTrigger: () => DropdownMenuTrigger,
31
33
  IconButton: () => IconButton_default,
32
34
  IconRoundedButton: () => IconRoundedButton_default,
33
35
  Input: () => Input_default,
36
+ Menu: () => Menu_default,
34
37
  MenuContent: () => MenuContent,
35
38
  MenuItem: () => MenuItem,
36
39
  MenuLabel: () => MenuLabel,
@@ -2018,7 +2021,7 @@ var MenuContent = (0, import_react9.forwardRef)(
2018
2021
  }
2019
2022
  );
2020
2023
  MenuContent.displayName = "MenuContent";
2021
- var MenuItem = (0, import_react9.forwardRef)(
2024
+ var DropdownMenuItem = (0, import_react9.forwardRef)(
2022
2025
  ({
2023
2026
  className,
2024
2027
  size = "small",
@@ -2081,8 +2084,8 @@ var MenuItem = (0, import_react9.forwardRef)(
2081
2084
  );
2082
2085
  }
2083
2086
  );
2084
- MenuItem.displayName = "MenuItem";
2085
- var MenuSeparator = (0, import_react9.forwardRef)(({ className, store: _store, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2087
+ DropdownMenuItem.displayName = "DropdownMenuItem";
2088
+ var DropdownMenuSeparator = (0, import_react9.forwardRef)(({ className, store: _store, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2086
2089
  "div",
2087
2090
  {
2088
2091
  ref,
@@ -2090,7 +2093,7 @@ var MenuSeparator = (0, import_react9.forwardRef)(({ className, store: _store, .
2090
2093
  ...props
2091
2094
  }
2092
2095
  ));
2093
- MenuSeparator.displayName = "MenuSeparator";
2096
+ DropdownMenuSeparator.displayName = "DropdownMenuSeparator";
2094
2097
  var ProfileMenuTrigger = (0, import_react9.forwardRef)(({ className, onClick, store: externalStore, ...props }, ref) => {
2095
2098
  const store = useDropdownStore(externalStore);
2096
2099
  const open = (0, import_zustand2.useStore)(store, (s) => s.open);
@@ -2459,6 +2462,170 @@ var SelectItem = (0, import_react10.forwardRef)(
2459
2462
  );
2460
2463
  SelectItem.displayName = "SelectItem";
2461
2464
  var Select_default = Select;
2465
+
2466
+ // src/components/Menu/Menu.tsx
2467
+ var import_zustand4 = require("zustand");
2468
+ var import_react11 = require("react");
2469
+ var import_phosphor_react9 = require("phosphor-react");
2470
+ var import_jsx_runtime22 = require("react/jsx-runtime");
2471
+ var createMenuStore = () => (0, import_zustand4.create)((set) => ({
2472
+ value: "",
2473
+ setValue: (value) => set({ value })
2474
+ }));
2475
+ var useMenuStore = (externalStore) => {
2476
+ if (!externalStore) throw new Error("MenuItem must be inside Menu");
2477
+ return externalStore;
2478
+ };
2479
+ var VARIANT_CLASSES5 = {
2480
+ menu: "bg-background shadow-soft-shadow-1",
2481
+ menu2: "overflow-x-auto scroll-smooth",
2482
+ breadcrumb: ""
2483
+ };
2484
+ var Menu = (0, import_react11.forwardRef)(
2485
+ ({
2486
+ className,
2487
+ children,
2488
+ defaultValue,
2489
+ value: propValue,
2490
+ variant = "menu",
2491
+ onValueChange,
2492
+ ...props
2493
+ }, ref) => {
2494
+ const storeRef = (0, import_react11.useRef)(null);
2495
+ storeRef.current ??= createMenuStore();
2496
+ const store = storeRef.current;
2497
+ const { setValue, value } = (0, import_zustand4.useStore)(store, (s) => s);
2498
+ (0, import_react11.useEffect)(() => {
2499
+ setValue(propValue ?? defaultValue);
2500
+ }, [defaultValue, propValue, setValue]);
2501
+ (0, import_react11.useEffect)(() => {
2502
+ onValueChange?.(value);
2503
+ }, [value, onValueChange]);
2504
+ const baseClasses = "w-full flex flex-row items-center gap-2 py-2 px-6";
2505
+ const variantClasses = VARIANT_CLASSES5[variant];
2506
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2507
+ "ul",
2508
+ {
2509
+ ref,
2510
+ className: `
2511
+ ${baseClasses}
2512
+ ${variantClasses}
2513
+ ${className ?? ""}
2514
+ `,
2515
+ style: variant === "menu2" ? { scrollbarWidth: "none", msOverflowStyle: "none" } : void 0,
2516
+ ...props,
2517
+ children: injectStore3(children, store)
2518
+ }
2519
+ );
2520
+ }
2521
+ );
2522
+ Menu.displayName = "Menu";
2523
+ var MenuItem = (0, import_react11.forwardRef)(
2524
+ ({
2525
+ className,
2526
+ children,
2527
+ value,
2528
+ disabled = false,
2529
+ store: externalStore,
2530
+ variant = "menu",
2531
+ ...props
2532
+ }, ref) => {
2533
+ const store = useMenuStore(externalStore);
2534
+ const { value: selectedValue, setValue } = (0, import_zustand4.useStore)(store, (s) => s);
2535
+ const handleClick = (e) => {
2536
+ if (!disabled) setValue(value);
2537
+ props.onClick?.(e);
2538
+ };
2539
+ const commonProps = {
2540
+ role: "menuitem",
2541
+ "aria-disabled": disabled,
2542
+ ref,
2543
+ onClick: handleClick,
2544
+ onKeyDown: (e) => {
2545
+ if (["Enter", " "].includes(e.key)) handleClick(e);
2546
+ },
2547
+ tabIndex: disabled ? -1 : 0,
2548
+ ...props
2549
+ };
2550
+ const variants = {
2551
+ menu: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2552
+ "li",
2553
+ {
2554
+ "data-variant": "menu",
2555
+ className: `
2556
+ w-full flex flex-col gap-0.5 items-center py-1 px-2 rounded-sm font-medium text-xs
2557
+ [&>svg]:size-6 cursor-pointer hover:bg-primary-600 hover:text-text
2558
+ focus:outline-none focus:border-2-indicator-info focus:border-2
2559
+ ${selectedValue === value ? "bg-primary-50 text-primary-950" : "text-text-950"}
2560
+ ${className ?? ""}
2561
+ `,
2562
+ ...commonProps,
2563
+ children
2564
+ }
2565
+ ),
2566
+ menu2: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2567
+ "li",
2568
+ {
2569
+ "data-variant": "menu2",
2570
+ className: `
2571
+ flex flex-row items-center p-4 gap-2 border-b-2 border-transparent text-text-950 text-sx font-bold cursor-pointer
2572
+ ${selectedValue === value ? "border-b-primary-950" : ""}
2573
+ `,
2574
+ ...commonProps,
2575
+ children
2576
+ }
2577
+ ),
2578
+ breadcrumb: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2579
+ "li",
2580
+ {
2581
+ "data-variant": "breadcrumb",
2582
+ className: `
2583
+ p-2 rounded-lg hover:text-primary-600 cursor-pointer font-bold text-xs
2584
+ focus:outline-none focus:border-indicator-info focus:border-2
2585
+ ${selectedValue === value ? "text-primary-950" : "text-text-600"}
2586
+ ${className ?? ""}
2587
+ `,
2588
+ ...commonProps,
2589
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2590
+ "span",
2591
+ {
2592
+ className: `
2593
+ border-b border-text-600 hover:border-primary-600 text-inherit
2594
+ ${selectedValue === value ? "border-b-primary-950" : "border-b-primary-600"}
2595
+ `,
2596
+ children
2597
+ }
2598
+ )
2599
+ }
2600
+ )
2601
+ };
2602
+ return variants[variant] ?? variants["menu"];
2603
+ }
2604
+ );
2605
+ MenuItem.displayName = "MenuItem";
2606
+ var MenuSeparator = (0, import_react11.forwardRef)(
2607
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2608
+ "li",
2609
+ {
2610
+ ref,
2611
+ "aria-hidden": "true",
2612
+ className: `[&>svg]:w-4 [&>svg]:h-4 text-text-600 ${className ?? ""}`,
2613
+ ...props,
2614
+ children: children ?? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_phosphor_react9.CaretRight, {})
2615
+ }
2616
+ )
2617
+ );
2618
+ MenuSeparator.displayName = "MenuSeparator";
2619
+ var injectStore3 = (children, store) => import_react11.Children.map(children, (child) => {
2620
+ if (!(0, import_react11.isValidElement)(child)) return child;
2621
+ const typedChild = child;
2622
+ const shouldInject = typedChild.type === MenuItem;
2623
+ return (0, import_react11.cloneElement)(typedChild, {
2624
+ ...shouldInject ? { store } : {},
2625
+ ...typedChild.props.children ? { children: injectStore3(typedChild.props.children, store) } : {}
2626
+ });
2627
+ });
2628
+ var Menu_default = Menu;
2462
2629
  // Annotate the CommonJS export names for ESM import in node:
2463
2630
  0 && (module.exports = {
2464
2631
  Alert,
@@ -2468,10 +2635,13 @@ var Select_default = Select;
2468
2635
  Chips,
2469
2636
  Divider,
2470
2637
  DropdownMenu,
2638
+ DropdownMenuItem,
2639
+ DropdownMenuSeparator,
2471
2640
  DropdownMenuTrigger,
2472
2641
  IconButton,
2473
2642
  IconRoundedButton,
2474
2643
  Input,
2644
+ Menu,
2475
2645
  MenuContent,
2476
2646
  MenuItem,
2477
2647
  MenuLabel,