@gyramais/gyra-design 0.2.22 → 0.2.30

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 (82) hide show
  1. package/dist/components/Card/Card.d.ts +1 -8
  2. package/dist/components/Card/index.js +6 -6
  3. package/dist/components/Card/index.js.map +1 -1
  4. package/dist/components/Filter/index.js +4 -4
  5. package/dist/components/Filter/index.js.map +1 -1
  6. package/dist/components/FloatingCard/index.js +7 -7
  7. package/dist/components/FloatingCard/index.js.map +1 -1
  8. package/dist/components/Input/Input.d.ts +2 -0
  9. package/dist/components/Input/index.js +4 -4
  10. package/dist/components/Input/index.js.map +1 -1
  11. package/dist/components/ListingPage/ListingPage.d.ts +21 -0
  12. package/dist/components/ListingPage/index.d.ts +1 -0
  13. package/dist/components/ListingPage/index.js +7 -0
  14. package/dist/components/ListingPage/index.js.map +1 -0
  15. package/dist/components/RichInput/index.js +3 -3
  16. package/dist/components/RichInput/index.js.map +1 -1
  17. package/dist/components/SelectTree/index.js +5 -5
  18. package/dist/components/SelectTree/index.js.map +1 -1
  19. package/dist/emails/balance-sheet-finalized/components/Card/Card.d.ts +1 -8
  20. package/dist/emails/balance-sheet-finalized/components/Input/Input.d.ts +2 -0
  21. package/dist/emails/balance-sheet-finalized/index.d.ts +0 -7
  22. package/dist/emails/email/components/Card/Card.d.ts +1 -8
  23. package/dist/emails/email/components/Input/Input.d.ts +2 -0
  24. package/dist/emails/email/index.d.ts +0 -7
  25. package/dist/index.css +77 -1349
  26. package/package.json +1 -1
  27. package/dist/components/ContextMenu/ContextMenu.d.ts +0 -45
  28. package/dist/components/ContextMenu/index.d.ts +0 -1
  29. package/dist/components/ContextMenu/index.js +0 -7
  30. package/dist/components/ContextMenu/index.js.map +0 -1
  31. package/dist/components/MultiSelectPicker/MultiSelectPicker.d.ts +0 -42
  32. package/dist/components/MultiSelectPicker/index.d.ts +0 -1
  33. package/dist/components/MultiSelectPicker/index.js +0 -45
  34. package/dist/components/MultiSelectPicker/index.js.map +0 -1
  35. package/dist/components/OperatorPicker/OperatorPicker.d.ts +0 -26
  36. package/dist/components/OperatorPicker/index.d.ts +0 -1
  37. package/dist/components/OperatorPicker/index.js +0 -45
  38. package/dist/components/OperatorPicker/index.js.map +0 -1
  39. package/dist/components/PickerPopover/PickerPopover.d.ts +0 -56
  40. package/dist/components/PickerPopover/index.d.ts +0 -1
  41. package/dist/components/PickerPopover/index.js +0 -45
  42. package/dist/components/PickerPopover/index.js.map +0 -1
  43. package/dist/components/RuleSearchPicker/RuleSearchPicker.d.ts +0 -46
  44. package/dist/components/RuleSearchPicker/index.d.ts +0 -1
  45. package/dist/components/RuleSearchPicker/index.js +0 -45
  46. package/dist/components/RuleSearchPicker/index.js.map +0 -1
  47. package/dist/components/SegmentedToggle/SegmentedToggle.d.ts +0 -25
  48. package/dist/components/SegmentedToggle/index.d.ts +0 -1
  49. package/dist/components/SegmentedToggle/index.js +0 -7
  50. package/dist/components/SegmentedToggle/index.js.map +0 -1
  51. package/dist/components/TourGuide/TourGuide.d.ts +0 -39
  52. package/dist/components/TourGuide/index.d.ts +0 -1
  53. package/dist/components/TourGuide/index.js +0 -7
  54. package/dist/components/TourGuide/index.js.map +0 -1
  55. package/dist/emails/balance-sheet-finalized/components/ContextMenu/ContextMenu.d.ts +0 -45
  56. package/dist/emails/balance-sheet-finalized/components/ContextMenu/index.d.ts +0 -1
  57. package/dist/emails/balance-sheet-finalized/components/MultiSelectPicker/MultiSelectPicker.d.ts +0 -42
  58. package/dist/emails/balance-sheet-finalized/components/MultiSelectPicker/index.d.ts +0 -1
  59. package/dist/emails/balance-sheet-finalized/components/OperatorPicker/OperatorPicker.d.ts +0 -26
  60. package/dist/emails/balance-sheet-finalized/components/OperatorPicker/index.d.ts +0 -1
  61. package/dist/emails/balance-sheet-finalized/components/PickerPopover/PickerPopover.d.ts +0 -56
  62. package/dist/emails/balance-sheet-finalized/components/PickerPopover/index.d.ts +0 -1
  63. package/dist/emails/balance-sheet-finalized/components/RuleSearchPicker/RuleSearchPicker.d.ts +0 -46
  64. package/dist/emails/balance-sheet-finalized/components/RuleSearchPicker/index.d.ts +0 -1
  65. package/dist/emails/balance-sheet-finalized/components/SegmentedToggle/SegmentedToggle.d.ts +0 -25
  66. package/dist/emails/balance-sheet-finalized/components/SegmentedToggle/index.d.ts +0 -1
  67. package/dist/emails/balance-sheet-finalized/components/TourGuide/TourGuide.d.ts +0 -39
  68. package/dist/emails/balance-sheet-finalized/components/TourGuide/index.d.ts +0 -1
  69. package/dist/emails/email/components/ContextMenu/ContextMenu.d.ts +0 -45
  70. package/dist/emails/email/components/ContextMenu/index.d.ts +0 -1
  71. package/dist/emails/email/components/MultiSelectPicker/MultiSelectPicker.d.ts +0 -42
  72. package/dist/emails/email/components/MultiSelectPicker/index.d.ts +0 -1
  73. package/dist/emails/email/components/OperatorPicker/OperatorPicker.d.ts +0 -26
  74. package/dist/emails/email/components/OperatorPicker/index.d.ts +0 -1
  75. package/dist/emails/email/components/PickerPopover/PickerPopover.d.ts +0 -56
  76. package/dist/emails/email/components/PickerPopover/index.d.ts +0 -1
  77. package/dist/emails/email/components/RuleSearchPicker/RuleSearchPicker.d.ts +0 -46
  78. package/dist/emails/email/components/RuleSearchPicker/index.d.ts +0 -1
  79. package/dist/emails/email/components/SegmentedToggle/SegmentedToggle.d.ts +0 -25
  80. package/dist/emails/email/components/SegmentedToggle/index.d.ts +0 -1
  81. package/dist/emails/email/components/TourGuide/TourGuide.d.ts +0 -39
  82. package/dist/emails/email/components/TourGuide/index.d.ts +0 -1
@@ -1,25 +0,0 @@
1
- import React from "react";
2
- import "./index.css";
3
- type Kind = "primary" | "success" | "warning" | "danger" | "info" | "neutral";
4
- type SegmentedToggleOption<T extends string> = {
5
- value: T;
6
- label: string;
7
- icon?: React.ReactNode;
8
- /** Cor aplicada quando a opção está ativa. */
9
- kind?: Kind;
10
- disabled?: boolean;
11
- };
12
- type SegmentedToggleProps<T extends string> = {
13
- id?: string;
14
- className?: string;
15
- value: T;
16
- options: Array<SegmentedToggleOption<T>>;
17
- onChange?: (value: T) => void;
18
- /** Tamanho do toggle. Default "md". */
19
- size?: "sm" | "md";
20
- /** Label invisível pra screen readers (a11y). */
21
- ariaLabel?: string;
22
- };
23
- declare function SegmentedToggle<T extends string>({ id, className, value, options, onChange, size, ariaLabel, }: SegmentedToggleProps<T>): React.JSX.Element;
24
- export { SegmentedToggle };
25
- export type { SegmentedToggleOption, SegmentedToggleProps };
@@ -1 +0,0 @@
1
- export * from "./SegmentedToggle";
@@ -1,7 +0,0 @@
1
- "use client";import e from"react";function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var a,r={exports:{}};
2
- /*!
3
- Copyright (c) 2018 Jed Watson.
4
- Licensed under the MIT License (MIT), see
5
- http://jedwatson.github.io/classnames
6
- */a=r,function(){var e={}.hasOwnProperty;function t(){for(var e="",t=0;t<arguments.length;t++){var a=arguments[t];a&&(e=n(e,r(a)))}return e}function r(a){if("string"==typeof a||"number"==typeof a)return a;if("object"!=typeof a)return"";if(Array.isArray(a))return t.apply(null,a);if(a.toString!==Object.prototype.toString&&!a.toString.toString().includes("[native code]"))return a.toString();var r="";for(var o in a)e.call(a,o)&&a[o]&&(r=n(r,o));return r}function n(e,t){return t?e?e+" "+t:e+t:e}a.exports?(t.default=t,a.exports=t):window.classNames=t}();var n=t(r.exports);function o({id:t,className:a,value:r,options:o,onChange:l,size:i="md",ariaLabel:s}){return e.createElement("div",{id:t,role:"tablist","aria-label":s,className:n("gyramais-segmented-toggle",`gyramais-segmented-toggle-${i}`,a)},o.map(t=>{const a=t.value===r,o=t.kind??"primary";return e.createElement("button",{key:t.value,type:"button",role:"tab","aria-selected":a,disabled:t.disabled,className:n("gyramais-segmented-toggle-btn",`gyramais-segmented-toggle-kind-${o}`,a&&"is-on"),onClick:()=>!t.disabled&&t.value!==r&&l?.(t.value)},t.icon&&e.createElement("span",{className:"gyramais-segmented-toggle-icon"},t.icon),e.createElement("span",{className:"gyramais-segmented-toggle-label"},t.label))}))}export{o as SegmentedToggle};
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/classnames/index.js","../../../src/components/SegmentedToggle/SegmentedToggle.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport \"./index.css\";\n\n/* SegmentedToggle — 3-segmentos sempre visíveis (iPhone-style), com variants\n de cor por opção (success / warning / danger / info / neutral / primary).\n Diferente do SegmentedPicker, que é um trigger de dropdown e mostra só a\n opção ativa. Usado, por exemplo, no verdict global da seção de Condições. */\n\ntype Kind = \"primary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"neutral\";\n\ntype SegmentedToggleOption<T extends string> = {\n value: T;\n label: string;\n icon?: React.ReactNode;\n /** Cor aplicada quando a opção está ativa. */\n kind?: Kind;\n disabled?: boolean;\n};\n\ntype SegmentedToggleProps<T extends string> = {\n id?: string;\n className?: string;\n value: T;\n options: Array<SegmentedToggleOption<T>>;\n onChange?: (value: T) => void;\n /** Tamanho do toggle. Default \"md\". */\n size?: \"sm\" | \"md\";\n /** Label invisível pra screen readers (a11y). */\n ariaLabel?: string;\n};\n\nfunction SegmentedToggle<T extends string>({\n id,\n className,\n value,\n options,\n onChange,\n size = \"md\",\n ariaLabel,\n}: SegmentedToggleProps<T>) {\n return (\n <div\n id={id}\n role=\"tablist\"\n aria-label={ariaLabel}\n className={classNames(\n \"gyramais-segmented-toggle\",\n `gyramais-segmented-toggle-${size}`,\n className,\n )}\n >\n {options.map((opt) => {\n const on = opt.value === value;\n const kind: Kind = opt.kind ?? \"primary\";\n return (\n <button\n key={opt.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={on}\n disabled={opt.disabled}\n className={classNames(\n \"gyramais-segmented-toggle-btn\",\n `gyramais-segmented-toggle-kind-${kind}`,\n on && \"is-on\",\n )}\n onClick={() => !opt.disabled && opt.value !== value && onChange?.(opt.value)}\n >\n {opt.icon && (\n <span className=\"gyramais-segmented-toggle-icon\">{opt.icon}</span>\n )}\n <span className=\"gyramais-segmented-toggle-label\">{opt.label}</span>\n </button>\n );\n })}\n </div>\n );\n}\n\nexport { SegmentedToggle };\nexport type { SegmentedToggleOption, SegmentedToggleProps };\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","appendClass","parseValue","Array","isArray","apply","toString","Object","prototype","includes","key","call","value","newClass","module","exports","default","window","SegmentedToggle","id","className","options","onChange","size","ariaLabel","React","createElement","role","map","opt","on","kind","type","disabled","onClick","icon","label"],"mappings":";;;;;MAOC,WAGA,IAAIA,EAAS,CAAA,EAAGC,eAEhB,SAASC,IAGR,IAFA,IAAIC,EAAU,GAELC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAC1C,IAAIG,EAAMF,UAAUD,GAChBG,IACHJ,EAAUK,EAAYL,EAASM,EAAWF,IAE9C,CAEE,OAAOJ,CACT,CAEC,SAASM,EAAYF,GACpB,GAAmB,iBAARA,GAAmC,iBAARA,EACrC,OAAOA,EAGR,GAAmB,iBAARA,EACV,MAAO,GAGR,GAAIG,MAAMC,QAAQJ,GACjB,OAAOL,EAAWU,MAAM,KAAML,GAG/B,GAAIA,EAAIM,WAAaC,OAAOC,UAAUF,WAAaN,EAAIM,SAASA,WAAWG,SAAS,iBACnF,OAAOT,EAAIM,WAGZ,IAAIV,EAAU,GAEd,IAAK,IAAIc,KAAOV,EACXP,EAAOkB,KAAKX,EAAKU,IAAQV,EAAIU,KAChCd,EAAUK,EAAYL,EAASc,IAIjC,OAAOd,CACT,CAEC,SAASK,EAAaW,EAAOC,GAC5B,OAAKA,EAIDD,EACIA,EAAQ,IAAMC,EAGfD,EAAQC,EAPPD,CAQV,CAEsCE,EAAOC,SAC3CpB,EAAWqB,QAAUrB,EACrBmB,UAAiBnB,GAOjBsB,OAAOtB,WAAaA,CAEtB,CArEA,sBCyBA,SAASuB,GAAkCC,GACzCA,EAAEC,UACFA,EAASR,MACTA,EAAKS,QACLA,EAAOC,SACPA,EAAQC,KACRA,EAAO,KAAIC,UACXA,IAEA,OACEC,EAAAC,cAAA,MAAA,CACEP,GAAIA,EACJQ,KAAK,UAAS,aACFH,EACZJ,UAAWzB,EACT,4BACA,6BAA6B4B,IAC7BH,IAGDC,EAAQO,IAAKC,IACZ,MAAMC,EAAKD,EAAIjB,QAAUA,EACnBmB,EAAaF,EAAIE,MAAQ,UAC/B,OACEN,EAAAC,cAAA,SAAA,CACEhB,IAAKmB,EAAIjB,MACToB,KAAK,SACLL,KAAK,MAAK,gBACKG,EACfG,SAAUJ,EAAII,SACdb,UAAWzB,EACT,gCACA,kCAAkCoC,IAClCD,GAAM,SAERI,QAAS,KAAOL,EAAII,UAAYJ,EAAIjB,QAAUA,GAASU,IAAWO,EAAIjB,QAErEiB,EAAIM,MACHV,EAAAC,cAAA,OAAA,CAAMN,UAAU,kCAAkCS,EAAIM,MAExDV,EAAAC,cAAA,OAAA,CAAMN,UAAU,mCAAmCS,EAAIO,UAMnE","x_google_ignoreList":[0]}
@@ -1,39 +0,0 @@
1
- import React from 'react';
2
- import './index.css';
3
- export type TourStep = {
4
- title: string;
5
- body: string;
6
- targetSelector: string;
7
- navSection?: string;
8
- padding?: number;
9
- /**
10
- * Como alinhar o alvo ao rolar. 'center' (padrão para alvos pequenos) é
11
- * imune à altura de toolbars fixas. 'start' é melhor para seções altas.
12
- * 'nearest' rola o mínimo possível (bom para elementos flutuantes/portais
13
- * que já estão visíveis, como dropdowns). Se omitido, decidimos pela altura.
14
- */
15
- scrollBlock?: 'start' | 'center' | 'nearest';
16
- /**
17
- * Efeito colateral ao ENTRAR no passo, disparado depois da navegação e do
18
- * mount da seção (ex.: abrir um dropdown para destacá-lo). Use junto com
19
- * targetSelector apontando para o conteúdo revelado.
20
- */
21
- onEnter?: () => void;
22
- /** Limpeza ao SAIR do passo (ex.: fechar o dropdown aberto no onEnter). */
23
- onLeave?: () => void;
24
- };
25
- export type TourGuideProps = {
26
- steps: TourStep[];
27
- visible: boolean;
28
- onClose: () => void;
29
- onNavigate?: (navSection: string) => void;
30
- /**
31
- * Espaço (px) reservado no topo ao rolar alvos altos (block:'start') para que
32
- * não fiquem atrás de toolbars fixas. Aceita número ou função (recalculada a
33
- * cada passo) — use a função quando a altura da toolbar varia (wrap/mobile).
34
- * Alvos pequenos usam block:'center' e ignoram esse valor. Padrão: 0.
35
- */
36
- scrollOffsetTop?: number | (() => number);
37
- className?: string;
38
- };
39
- export declare function TourGuide({ steps, visible, onClose, onNavigate, scrollOffsetTop, className, }: TourGuideProps): React.JSX.Element | null;
@@ -1 +0,0 @@
1
- export * from './TourGuide';
@@ -1,7 +0,0 @@
1
- "use client";import e,{useState as t,useCallback as r,useEffect as n}from"react";function i(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var a,o={exports:{}};
2
- /*!
3
- Copyright (c) 2018 Jed Watson.
4
- Licensed under the MIT License (MIT), see
5
- http://jedwatson.github.io/classnames
6
- */a=o,function(){var e={}.hasOwnProperty;function t(){for(var e="",t=0;t<arguments.length;t++){var i=arguments[t];i&&(e=n(e,r(i)))}return e}function r(r){if("string"==typeof r||"number"==typeof r)return r;if("object"!=typeof r)return"";if(Array.isArray(r))return t.apply(null,r);if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]"))return r.toString();var i="";for(var a in r)e.call(r,a)&&r[a]&&(i=n(i,a));return i}function n(e,t){return t?e?e+" "+t:e+t:e}a.exports?(t.default=t,a.exports=t):window.classNames=t}();var l=i(o.exports);const s=14;function c({steps:i,visible:a,onClose:o,onNavigate:c,scrollOffsetTop:u=0,className:d}){const[m,g]=t(0),[h,w]=t(null),[f,p]=t({w:1440,h:900}),y=i[m],v=r(()=>{if(!y?.targetSelector)return void w(null);const e=document.querySelector(y.targetSelector);if(!e)return void w(null);const t=e.getBoundingClientRect();if(0===t.width&&0===t.height)return void w(null);const r=y.padding??8;w({top:t.top-r,left:t.left-r,width:t.width+2*r,height:t.height+2*r})},[y]);n(()=>{const e=()=>p({w:window.innerWidth,h:window.innerHeight});return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),n(()=>{if(!a)return;const e=()=>v();return window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[a,v]),n(()=>{if(!a||!y)return;w(null),y.navSection&&c?.(y.navSection);const e=setTimeout(()=>y.onEnter?.(),180),t=setTimeout(()=>{const e=document.querySelector(y.targetSelector);if(!e)return;const t=e.getBoundingClientRect().height,r=y.scrollBlock??(t>.55*window.innerHeight?"start":"center");if("start"===r){const t="function"==typeof u?u():u;e.style.scrollMarginTop=`${t}px`}e.scrollIntoView({behavior:"smooth",block:r})},300),r=[550,800,1100].map(e=>setTimeout(v,e));return()=>{clearTimeout(e),clearTimeout(t),r.forEach(clearTimeout),y.onLeave?.()}},[m,a]),n(()=>{if(!a)return;const e=e=>{"Escape"!==e.key?("ArrowRight"===e.key&&g(e=>e>=i.length-1?(o(),e):e+1),"ArrowLeft"===e.key&&g(e=>Math.max(0,e-1))):o()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[a,i.length,o]),n(()=>{a&&g(0)},[a]);if(!a||!y)return null;const E=Math.min(380,f.w-28),_=f.h-28,b=(()=>{if(!h)return Math.max(s,f.h/2-140);const e=h.top+h.height+s;let t=e+240<=f.h?e:h.top-240-s;return t=Math.max(s,Math.min(t,f.h-160-s)),t})(),k=(()=>{if(!h)return Math.max(s,(f.w-E)/2);let e=h.left;return e+E>f.w-s&&(e=f.w-E-s),e<s&&(e=s),e})();return e.createElement("div",{className:l("gyramais-tourguide",d)},e.createElement("svg",{className:"gyramais-tourguide__overlay",viewBox:`0 0 ${f.w} ${f.h}`,preserveAspectRatio:"none","aria-hidden":"true",onClick:o},e.createElement("defs",null,e.createElement("mask",{id:"gyramais-tg-mask"},e.createElement("rect",{width:f.w,height:f.h,fill:"white"}),h&&e.createElement("rect",{x:h.left,y:h.top,width:h.width,height:h.height,rx:"10",fill:"black"}))),e.createElement("rect",{width:f.w,height:f.h,fill:"rgba(0,0,0,0.52)",mask:"url(#gyramais-tg-mask)"}),h&&e.createElement("rect",{x:h.left,y:h.top,width:h.width,height:h.height,rx:"10",fill:"none",stroke:"#1256ff",strokeWidth:"2",className:"gyramais-tourguide__spotlight-border"})),e.createElement("div",{className:"gyramais-tourguide__popover",style:{top:b,left:k,width:E,maxHeight:_},role:"dialog","aria-modal":"false","aria-label":y.title},e.createElement("div",{className:"gyramais-tourguide__step-badge"},"Passo ",m+1," de ",i.length),e.createElement("h3",{className:"gyramais-tourguide__title"},y.title),e.createElement("p",{className:"gyramais-tourguide__body"},y.body),e.createElement("div",{className:"gyramais-tourguide__footer"},e.createElement("div",{className:"gyramais-tourguide__dots"},i.map((t,r)=>e.createElement("button",{key:r,type:"button",className:l("gyramais-tourguide__dot",{"gyramais-tourguide__dot--active":r===m}),onClick:()=>g(r),"aria-label":`Ir para passo ${r+1}`}))),e.createElement("div",{className:"gyramais-tourguide__actions"},e.createElement("button",{type:"button",className:"gyramais-tourguide__btn-skip",onClick:o},"Sair"),m>0&&e.createElement("button",{type:"button",className:"gyramais-tourguide__btn-prev",onClick:()=>g(e=>Math.max(0,e-1))},"← Anterior"),e.createElement("button",{type:"button",className:"gyramais-tourguide__btn-next",onClick:()=>{m>=i.length-1?o():g(e=>e+1)}},m===i.length-1?"Concluir ✓":"Próximo →")))))}export{c as TourGuide};
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/classnames/index.js","../../../src/components/TourGuide/TourGuide.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use client';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport './index.css';\n\nexport type TourStep = {\n title: string;\n body: string;\n targetSelector: string;\n navSection?: string;\n padding?: number;\n /**\n * Como alinhar o alvo ao rolar. 'center' (padrão para alvos pequenos) é\n * imune à altura de toolbars fixas. 'start' é melhor para seções altas.\n * 'nearest' rola o mínimo possível (bom para elementos flutuantes/portais\n * que já estão visíveis, como dropdowns). Se omitido, decidimos pela altura.\n */\n scrollBlock?: 'start' | 'center' | 'nearest';\n /**\n * Efeito colateral ao ENTRAR no passo, disparado depois da navegação e do\n * mount da seção (ex.: abrir um dropdown para destacá-lo). Use junto com\n * targetSelector apontando para o conteúdo revelado.\n */\n onEnter?: () => void;\n /** Limpeza ao SAIR do passo (ex.: fechar o dropdown aberto no onEnter). */\n onLeave?: () => void;\n};\n\ntype Rect = { top: number; left: number; width: number; height: number };\n\nexport type TourGuideProps = {\n steps: TourStep[];\n visible: boolean;\n onClose: () => void;\n onNavigate?: (navSection: string) => void;\n /**\n * Espaço (px) reservado no topo ao rolar alvos altos (block:'start') para que\n * não fiquem atrás de toolbars fixas. Aceita número ou função (recalculada a\n * cada passo) — use a função quando a altura da toolbar varia (wrap/mobile).\n * Alvos pequenos usam block:'center' e ignoram esse valor. Padrão: 0.\n */\n scrollOffsetTop?: number | (() => number);\n className?: string;\n};\n\nconst POPOVER_W = 380;\nconst DEFAULT_PAD = 8;\nconst GAP = 14;\n// Alvos mais altos que esta fração da viewport rolam por 'start' (topo), os\n// menores por 'center' (meio) — center é imune a toolbars fixas de qualquer\n// altura, resolvendo o spotlight caindo \"atrás\" do header em telas estreitas.\nconst TALL_RATIO = 0.55;\n\nexport function TourGuide({\n steps,\n visible,\n onClose,\n onNavigate,\n scrollOffsetTop = 0,\n className,\n}: TourGuideProps) {\n const [stepIdx, setStepIdx] = useState(0);\n const [rect, setRect] = useState<Rect | null>(null);\n const [vp, setVp] = useState({ w: 1440, h: 900 });\n\n const step = steps[stepIdx];\n\n const measureTarget = useCallback(() => {\n if (!step?.targetSelector) { setRect(null); return; }\n const el = document.querySelector<HTMLElement>(step.targetSelector);\n if (!el) { setRect(null); return; }\n const r = el.getBoundingClientRect();\n if (r.width === 0 && r.height === 0) { setRect(null); return; }\n const pad = step.padding ?? DEFAULT_PAD;\n setRect({\n top: r.top - pad,\n left: r.left - pad,\n width: r.width + pad * 2,\n height: r.height + pad * 2,\n });\n }, [step]);\n\n // Acompanha o tamanho da viewport.\n useEffect(() => {\n const update = () => setVp({ w: window.innerWidth, h: window.innerHeight });\n update();\n window.addEventListener('resize', update);\n return () => window.removeEventListener('resize', update);\n }, []);\n\n // Re-mede o alvo em resize/scroll (o spotlight precisa acompanhar).\n useEffect(() => {\n if (!visible) return;\n const remeasure = () => measureTarget();\n window.addEventListener('resize', remeasure);\n window.addEventListener('scroll', remeasure, true);\n return () => {\n window.removeEventListener('resize', remeasure);\n window.removeEventListener('scroll', remeasure, true);\n };\n }, [visible, measureTarget]);\n\n // Ciclo de cada passo: navega -> (onEnter) -> rola -> mede (várias vezes).\n useEffect(() => {\n if (!visible || !step) return;\n setRect(null);\n if (step.navSection) onNavigate?.(step.navSection);\n\n const tEnter = setTimeout(() => step.onEnter?.(), 180);\n const tScroll = setTimeout(() => {\n const el = document.querySelector<HTMLElement>(step.targetSelector);\n if (!el) return;\n const elH = el.getBoundingClientRect().height;\n const block =\n step.scrollBlock ?? (elH > window.innerHeight * TALL_RATIO ? 'start' : 'center');\n if (block === 'start') {\n const off =\n typeof scrollOffsetTop === 'function' ? scrollOffsetTop() : scrollOffsetTop;\n el.style.scrollMarginTop = `${off}px`;\n }\n el.scrollIntoView({ behavior: 'smooth', block });\n }, 300);\n // Mede em vários instantes: a seção pode revelar conteúdo após a navegação\n // (toggle/dropdown) e o smooth-scroll leva tempo.\n const measures = [550, 800, 1100].map((d) => setTimeout(measureTarget, d));\n\n return () => {\n clearTimeout(tEnter);\n clearTimeout(tScroll);\n measures.forEach(clearTimeout);\n step.onLeave?.();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [stepIdx, visible]);\n\n // Navegação por teclado.\n useEffect(() => {\n if (!visible) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') { onClose(); return; }\n if (e.key === 'ArrowRight') {\n setStepIdx((s) => {\n if (s >= steps.length - 1) { onClose(); return s; }\n return s + 1;\n });\n }\n if (e.key === 'ArrowLeft') {\n setStepIdx((s) => Math.max(0, s - 1));\n }\n };\n window.addEventListener('keydown', handler);\n return () => window.removeEventListener('keydown', handler);\n }, [visible, steps.length, onClose]);\n\n useEffect(() => {\n if (visible) setStepIdx(0);\n }, [visible]);\n\n const goNext = () => {\n if (stepIdx >= steps.length - 1) { onClose(); return; }\n setStepIdx((s) => s + 1);\n };\n const goPrev = () => setStepIdx((s) => Math.max(0, s - 1));\n\n if (!visible || !step) return null;\n\n // Popover responsivo: nunca mais largo que a viewport (mobile).\n const popW = Math.min(POPOVER_W, vp.w - GAP * 2);\n const popMaxH = vp.h - GAP * 2;\n\n const popTop = (() => {\n if (!rect) return Math.max(GAP, vp.h / 2 - 140);\n const below = rect.top + rect.height + GAP;\n // Cabe abaixo do alvo?\n let t = below + 240 <= vp.h ? below : rect.top - 240 - GAP;\n // Mantém dentro da viewport.\n t = Math.max(GAP, Math.min(t, vp.h - 160 - GAP));\n return t;\n })();\n const popLeft = (() => {\n if (!rect) return Math.max(GAP, (vp.w - popW) / 2);\n let l = rect.left;\n if (l + popW > vp.w - GAP) l = vp.w - popW - GAP;\n if (l < GAP) l = GAP;\n return l;\n })();\n\n return (\n <div className={classNames('gyramais-tourguide', className)}>\n <svg\n className=\"gyramais-tourguide__overlay\"\n viewBox={`0 0 ${vp.w} ${vp.h}`}\n preserveAspectRatio=\"none\"\n aria-hidden=\"true\"\n onClick={onClose}\n >\n <defs>\n <mask id=\"gyramais-tg-mask\">\n <rect width={vp.w} height={vp.h} fill=\"white\" />\n {rect && (\n <rect\n x={rect.left} y={rect.top}\n width={rect.width} height={rect.height}\n rx=\"10\" fill=\"black\"\n />\n )}\n </mask>\n </defs>\n <rect\n width={vp.w} height={vp.h}\n fill=\"rgba(0,0,0,0.52)\"\n mask=\"url(#gyramais-tg-mask)\"\n />\n {rect && (\n <rect\n x={rect.left} y={rect.top}\n width={rect.width} height={rect.height}\n rx=\"10\" fill=\"none\"\n stroke=\"#1256ff\" strokeWidth=\"2\"\n className=\"gyramais-tourguide__spotlight-border\"\n />\n )}\n </svg>\n\n <div\n className=\"gyramais-tourguide__popover\"\n style={{ top: popTop, left: popLeft, width: popW, maxHeight: popMaxH }}\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label={step.title}\n >\n <div className=\"gyramais-tourguide__step-badge\">\n Passo {stepIdx + 1} de {steps.length}\n </div>\n <h3 className=\"gyramais-tourguide__title\">{step.title}</h3>\n <p className=\"gyramais-tourguide__body\">{step.body}</p>\n <div className=\"gyramais-tourguide__footer\">\n <div className=\"gyramais-tourguide__dots\">\n {steps.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n className={classNames('gyramais-tourguide__dot', {\n 'gyramais-tourguide__dot--active': i === stepIdx,\n })}\n onClick={() => setStepIdx(i)}\n aria-label={`Ir para passo ${i + 1}`}\n />\n ))}\n </div>\n <div className=\"gyramais-tourguide__actions\">\n <button type=\"button\" className=\"gyramais-tourguide__btn-skip\" onClick={onClose}>\n Sair\n </button>\n {stepIdx > 0 && (\n <button type=\"button\" className=\"gyramais-tourguide__btn-prev\" onClick={goPrev}>\n ← Anterior\n </button>\n )}\n <button type=\"button\" className=\"gyramais-tourguide__btn-next\" onClick={goNext}>\n {stepIdx === steps.length - 1 ? 'Concluir ✓' : 'Próximo →'}\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","appendClass","parseValue","Array","isArray","apply","toString","Object","prototype","includes","key","call","value","newClass","module","exports","default","window","GAP","TourGuide","steps","visible","onClose","onNavigate","scrollOffsetTop","className","stepIdx","setStepIdx","useState","rect","setRect","vp","setVp","w","h","step","measureTarget","useCallback","targetSelector","el","document","querySelector","r","getBoundingClientRect","width","height","pad","padding","top","left","useEffect","update","innerWidth","innerHeight","addEventListener","removeEventListener","remeasure","navSection","tEnter","setTimeout","onEnter","tScroll","elH","block","scrollBlock","off","style","scrollMarginTop","scrollIntoView","behavior","measures","map","d","clearTimeout","forEach","onLeave","handler","e","s","Math","max","popW","min","popMaxH","popTop","below","t","popLeft","l","React","createElement","viewBox","preserveAspectRatio","onClick","id","fill","x","y","rx","mask","stroke","strokeWidth","maxHeight","role","title","body","_","type"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,45 +0,0 @@
1
- import React from "react";
2
- import "./index.css";
3
- type ContextMenuProps = {
4
- id?: string;
5
- className?: string;
6
- visible?: boolean;
7
- align?: "start" | "center" | "end";
8
- side?: "top" | "right" | "bottom" | "left";
9
- sideOffset?: number;
10
- width?: number | string;
11
- trigger: React.ReactNode;
12
- children?: React.ReactNode;
13
- onPointerDownOutside?: () => void;
14
- };
15
- declare const ContextMenu: {
16
- ({ id, className, visible, align, side, sideOffset, width, trigger, children, onPointerDownOutside, }: ContextMenuProps): React.JSX.Element;
17
- Section: ({ className, label, hint, children, }: {
18
- className?: string;
19
- label?: string;
20
- /** Texto explicativo abaixo do label, antes do conteúdo. */
21
- hint?: string | React.ReactNode;
22
- children: React.ReactNode;
23
- }) => React.JSX.Element;
24
- Divider: () => React.JSX.Element;
25
- RadioGroup: ({ value, onChange, children, }: {
26
- value?: string;
27
- onChange?: (value: string) => void;
28
- children: React.ReactNode;
29
- }) => React.JSX.Element;
30
- RadioItem: ({ value, label, sublabel, icon, disabled, }: {
31
- value: string;
32
- label: string;
33
- sublabel?: string;
34
- icon?: React.ReactNode;
35
- disabled?: boolean;
36
- }) => React.JSX.Element;
37
- DangerAction: ({ icon, onClick, disabled, children, }: {
38
- icon?: React.ReactNode;
39
- onClick?: () => void;
40
- disabled?: boolean;
41
- children: React.ReactNode;
42
- }) => React.JSX.Element;
43
- };
44
- export { ContextMenu };
45
- export type { ContextMenuProps };
@@ -1 +0,0 @@
1
- export * from "./ContextMenu";
@@ -1,42 +0,0 @@
1
- import React from "react";
2
- import "./index.css";
3
- type MultiSelectOption = {
4
- value: string;
5
- /** Label legível (ex.: "Comércio varejista de combustíveis"). */
6
- label: string;
7
- /** Código curto opcional em mono à esquerda do label (ex.: "4711-3/01"). */
8
- code?: string;
9
- disabled?: boolean;
10
- };
11
- type MultiSelectPickerProps = {
12
- id?: string;
13
- className?: string;
14
- /** Controlled visible state. */
15
- visible?: boolean;
16
- /** Título do popover (ex.: "Selecionar CNAEs"). */
17
- title?: string;
18
- searchPlaceholder?: string;
19
- options: Array<MultiSelectOption>;
20
- /** Valores selecionados (controlled). */
21
- values: string[];
22
- onChange?: (values: string[]) => void;
23
- /** Trigger element (botão/chip que abre o popover). */
24
- trigger: React.ReactNode;
25
- /** Total de opções no universo (ex.: 1320 CNAEs no Brasil). Default = options.length. */
26
- totalCount?: number;
27
- /** Label do footer "Limpar". Default "Limpar seleção". */
28
- clearLabel?: string;
29
- /** Mostra o botão Limpar. Default true. */
30
- showClear?: boolean;
31
- /** Quantos chips selecionados mostrar antes de colapsar para "+N mais". Default 5. */
32
- collapsedChipsCount?: number;
33
- width?: number | string;
34
- align?: "start" | "center" | "end";
35
- side?: "top" | "right" | "bottom" | "left";
36
- /** Filtro custom (substitui o default que compara label + code). */
37
- filter?: (option: MultiSelectOption, query: string) => boolean;
38
- onPointerDownOutside?: () => void;
39
- };
40
- declare const MultiSelectPicker: ({ id, className, visible, title, searchPlaceholder, options, values, onChange, trigger, totalCount, clearLabel, showClear, collapsedChipsCount, width, align, side, filter, onPointerDownOutside, }: MultiSelectPickerProps) => React.JSX.Element;
41
- export { MultiSelectPicker };
42
- export type { MultiSelectOption, MultiSelectPickerProps };
@@ -1 +0,0 @@
1
- export * from "./MultiSelectPicker";
@@ -1,26 +0,0 @@
1
- import React from "react";
2
- import "./index.css";
3
- type OperatorOption<T extends string> = {
4
- value: T;
5
- /** Símbolo curto exibido em mono à esquerda (ex.: ">", "≥", "∈"). */
6
- symbol: string;
7
- /** Label legível à direita (ex.: "Maior que"). */
8
- label: string;
9
- disabled?: boolean;
10
- };
11
- type OperatorPickerProps<T extends string> = {
12
- id?: string;
13
- className?: string;
14
- visible?: boolean;
15
- value?: T;
16
- options: Array<OperatorOption<T>>;
17
- onChange?: (value: T) => void;
18
- align?: "start" | "center" | "end";
19
- side?: "top" | "right" | "bottom" | "left";
20
- sideOffset?: number;
21
- trigger: React.ReactNode;
22
- onPointerDownOutside?: () => void;
23
- };
24
- declare function OperatorPicker<T extends string>({ id, className, visible, value, options, onChange, align, side, sideOffset, trigger, onPointerDownOutside, }: OperatorPickerProps<T>): React.JSX.Element;
25
- export { OperatorPicker };
26
- export type { OperatorOption, OperatorPickerProps };
@@ -1 +0,0 @@
1
- export * from "./OperatorPicker";
@@ -1,56 +0,0 @@
1
- import React from "react";
2
- import "./index.css";
3
- type PickerPopoverProps = {
4
- id?: string;
5
- className?: string;
6
- /** Controlled open state. */
7
- visible?: boolean;
8
- align?: "start" | "center" | "end";
9
- side?: "top" | "right" | "bottom" | "left";
10
- sideOffset?: number;
11
- /** Largura fixa do popover (px) ou string CSS. Default 320. */
12
- width?: number | string;
13
- /** Altura máxima do popover (px). Default 480. */
14
- maxHeight?: number | string;
15
- /** Elemento que abre o popover. */
16
- trigger: React.ReactNode;
17
- children?: React.ReactNode;
18
- onPointerDownOutside?: () => void;
19
- onOpenAutoFocus?: (event: Event) => void;
20
- };
21
- type HeaderProps = {
22
- className?: string;
23
- /** Título acima da linha de busca. Opcional. */
24
- title?: string | React.ReactNode;
25
- /** Placeholder do input de busca. Quando ausente, o input some. */
26
- searchPlaceholder?: string;
27
- /** Valor controlado do search. */
28
- searchValue?: string;
29
- /** Handler de mudança do search. */
30
- onSearchChange?: (value: string) => void;
31
- /** Handler de keyDown no input (útil pra ↑↓↵esc do RuleSearchPicker). */
32
- onSearchKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
33
- /** Autofoca o input ao abrir o popover. Default true. */
34
- searchAutoFocus?: boolean;
35
- /** Slot opcional à direita do search (ex.: hint de teclado). */
36
- accessory?: React.ReactNode;
37
- };
38
- declare const PickerPopover: {
39
- ({ id, className, visible, align, side, sideOffset, width, maxHeight, trigger, children, onPointerDownOutside, onOpenAutoFocus, }: PickerPopoverProps): React.JSX.Element;
40
- Header: ({ className, title, searchPlaceholder, searchValue, onSearchChange, onSearchKeyDown, searchAutoFocus, accessory, }: HeaderProps) => React.JSX.Element;
41
- Body: ({ className, children, }: {
42
- className?: string;
43
- children: React.ReactNode;
44
- }) => React.JSX.Element;
45
- Footer: ({ className, children, }: {
46
- className?: string;
47
- children: React.ReactNode;
48
- }) => React.JSX.Element;
49
- Section: ({ className, title, children, }: {
50
- className?: string;
51
- title?: string | React.ReactNode;
52
- children: React.ReactNode;
53
- }) => React.JSX.Element;
54
- };
55
- export { PickerPopover };
56
- export type { PickerPopoverProps };
@@ -1 +0,0 @@
1
- export * from "./PickerPopover";
@@ -1,46 +0,0 @@
1
- import React from "react";
2
- import "./index.css";
3
- type RuleSearchItem = {
4
- key: string;
5
- label: string;
6
- /** Descrição curta abaixo do label. */
7
- sublabel?: string;
8
- icon?: React.ReactNode;
9
- /** Tag opcional à direita (ex.: "custom"). */
10
- tag?: string | React.ReactNode;
11
- disabled?: boolean;
12
- };
13
- type RuleSearchSection = {
14
- key: string;
15
- label: string;
16
- items: RuleSearchItem[];
17
- };
18
- type RuleSearchPickerProps = {
19
- id?: string;
20
- className?: string;
21
- visible?: boolean;
22
- title?: string;
23
- searchPlaceholder?: string;
24
- sections: RuleSearchSection[];
25
- onSelect?: (itemKey: string, sectionKey: string) => void;
26
- trigger: React.ReactNode;
27
- /** Quando true, fecha após seleção. Caller deve controlar `visible`. */
28
- closeOnSelect?: boolean;
29
- /** Callback chamado quando o popover quer ser fechado (esc, seleção). */
30
- onClose?: () => void;
31
- /** Filtro custom (substitui o default que olha label + sublabel + section). */
32
- filter?: (item: RuleSearchItem, section: RuleSearchSection, query: string) => boolean;
33
- width?: number | string;
34
- align?: "start" | "center" | "end";
35
- side?: "top" | "right" | "bottom" | "left";
36
- /** Hint de teclado mostrado à direita do search. Default "↵ adicionar". */
37
- searchAccessory?: React.ReactNode;
38
- /** Hint do footer (esquerda). Default mostra ↑↓ navegar / ↵ adicionar / esc fechar. */
39
- footerKeys?: React.ReactNode;
40
- /** Texto à direita do footer (ex.: "9 regras"). Default = contagem. */
41
- footerCount?: React.ReactNode;
42
- onPointerDownOutside?: () => void;
43
- };
44
- declare const RuleSearchPicker: ({ id, className, visible, title, searchPlaceholder, sections, onSelect, trigger, closeOnSelect, onClose, filter, width, align, side, searchAccessory, footerKeys, footerCount, onPointerDownOutside, }: RuleSearchPickerProps) => React.JSX.Element;
45
- export { RuleSearchPicker };
46
- export type { RuleSearchItem, RuleSearchSection, RuleSearchPickerProps, };
@@ -1 +0,0 @@
1
- export * from "./RuleSearchPicker";
@@ -1,25 +0,0 @@
1
- import React from "react";
2
- import "./index.css";
3
- type Kind = "primary" | "success" | "warning" | "danger" | "info" | "neutral";
4
- type SegmentedToggleOption<T extends string> = {
5
- value: T;
6
- label: string;
7
- icon?: React.ReactNode;
8
- /** Cor aplicada quando a opção está ativa. */
9
- kind?: Kind;
10
- disabled?: boolean;
11
- };
12
- type SegmentedToggleProps<T extends string> = {
13
- id?: string;
14
- className?: string;
15
- value: T;
16
- options: Array<SegmentedToggleOption<T>>;
17
- onChange?: (value: T) => void;
18
- /** Tamanho do toggle. Default "md". */
19
- size?: "sm" | "md";
20
- /** Label invisível pra screen readers (a11y). */
21
- ariaLabel?: string;
22
- };
23
- declare function SegmentedToggle<T extends string>({ id, className, value, options, onChange, size, ariaLabel, }: SegmentedToggleProps<T>): React.JSX.Element;
24
- export { SegmentedToggle };
25
- export type { SegmentedToggleOption, SegmentedToggleProps };
@@ -1 +0,0 @@
1
- export * from "./SegmentedToggle";
@@ -1,39 +0,0 @@
1
- import React from 'react';
2
- import './index.css';
3
- export type TourStep = {
4
- title: string;
5
- body: string;
6
- targetSelector: string;
7
- navSection?: string;
8
- padding?: number;
9
- /**
10
- * Como alinhar o alvo ao rolar. 'center' (padrão para alvos pequenos) é
11
- * imune à altura de toolbars fixas. 'start' é melhor para seções altas.
12
- * 'nearest' rola o mínimo possível (bom para elementos flutuantes/portais
13
- * que já estão visíveis, como dropdowns). Se omitido, decidimos pela altura.
14
- */
15
- scrollBlock?: 'start' | 'center' | 'nearest';
16
- /**
17
- * Efeito colateral ao ENTRAR no passo, disparado depois da navegação e do
18
- * mount da seção (ex.: abrir um dropdown para destacá-lo). Use junto com
19
- * targetSelector apontando para o conteúdo revelado.
20
- */
21
- onEnter?: () => void;
22
- /** Limpeza ao SAIR do passo (ex.: fechar o dropdown aberto no onEnter). */
23
- onLeave?: () => void;
24
- };
25
- export type TourGuideProps = {
26
- steps: TourStep[];
27
- visible: boolean;
28
- onClose: () => void;
29
- onNavigate?: (navSection: string) => void;
30
- /**
31
- * Espaço (px) reservado no topo ao rolar alvos altos (block:'start') para que
32
- * não fiquem atrás de toolbars fixas. Aceita número ou função (recalculada a
33
- * cada passo) — use a função quando a altura da toolbar varia (wrap/mobile).
34
- * Alvos pequenos usam block:'center' e ignoram esse valor. Padrão: 0.
35
- */
36
- scrollOffsetTop?: number | (() => number);
37
- className?: string;
38
- };
39
- export declare function TourGuide({ steps, visible, onClose, onNavigate, scrollOffsetTop, className, }: TourGuideProps): React.JSX.Element | null;
@@ -1 +0,0 @@
1
- export * from './TourGuide';
@@ -1,45 +0,0 @@
1
- import React from "react";
2
- import "./index.css";
3
- type ContextMenuProps = {
4
- id?: string;
5
- className?: string;
6
- visible?: boolean;
7
- align?: "start" | "center" | "end";
8
- side?: "top" | "right" | "bottom" | "left";
9
- sideOffset?: number;
10
- width?: number | string;
11
- trigger: React.ReactNode;
12
- children?: React.ReactNode;
13
- onPointerDownOutside?: () => void;
14
- };
15
- declare const ContextMenu: {
16
- ({ id, className, visible, align, side, sideOffset, width, trigger, children, onPointerDownOutside, }: ContextMenuProps): React.JSX.Element;
17
- Section: ({ className, label, hint, children, }: {
18
- className?: string;
19
- label?: string;
20
- /** Texto explicativo abaixo do label, antes do conteúdo. */
21
- hint?: string | React.ReactNode;
22
- children: React.ReactNode;
23
- }) => React.JSX.Element;
24
- Divider: () => React.JSX.Element;
25
- RadioGroup: ({ value, onChange, children, }: {
26
- value?: string;
27
- onChange?: (value: string) => void;
28
- children: React.ReactNode;
29
- }) => React.JSX.Element;
30
- RadioItem: ({ value, label, sublabel, icon, disabled, }: {
31
- value: string;
32
- label: string;
33
- sublabel?: string;
34
- icon?: React.ReactNode;
35
- disabled?: boolean;
36
- }) => React.JSX.Element;
37
- DangerAction: ({ icon, onClick, disabled, children, }: {
38
- icon?: React.ReactNode;
39
- onClick?: () => void;
40
- disabled?: boolean;
41
- children: React.ReactNode;
42
- }) => React.JSX.Element;
43
- };
44
- export { ContextMenu };
45
- export type { ContextMenuProps };
@@ -1 +0,0 @@
1
- export * from "./ContextMenu";
@@ -1,42 +0,0 @@
1
- import React from "react";
2
- import "./index.css";
3
- type MultiSelectOption = {
4
- value: string;
5
- /** Label legível (ex.: "Comércio varejista de combustíveis"). */
6
- label: string;
7
- /** Código curto opcional em mono à esquerda do label (ex.: "4711-3/01"). */
8
- code?: string;
9
- disabled?: boolean;
10
- };
11
- type MultiSelectPickerProps = {
12
- id?: string;
13
- className?: string;
14
- /** Controlled visible state. */
15
- visible?: boolean;
16
- /** Título do popover (ex.: "Selecionar CNAEs"). */
17
- title?: string;
18
- searchPlaceholder?: string;
19
- options: Array<MultiSelectOption>;
20
- /** Valores selecionados (controlled). */
21
- values: string[];
22
- onChange?: (values: string[]) => void;
23
- /** Trigger element (botão/chip que abre o popover). */
24
- trigger: React.ReactNode;
25
- /** Total de opções no universo (ex.: 1320 CNAEs no Brasil). Default = options.length. */
26
- totalCount?: number;
27
- /** Label do footer "Limpar". Default "Limpar seleção". */
28
- clearLabel?: string;
29
- /** Mostra o botão Limpar. Default true. */
30
- showClear?: boolean;
31
- /** Quantos chips selecionados mostrar antes de colapsar para "+N mais". Default 5. */
32
- collapsedChipsCount?: number;
33
- width?: number | string;
34
- align?: "start" | "center" | "end";
35
- side?: "top" | "right" | "bottom" | "left";
36
- /** Filtro custom (substitui o default que compara label + code). */
37
- filter?: (option: MultiSelectOption, query: string) => boolean;
38
- onPointerDownOutside?: () => void;
39
- };
40
- declare const MultiSelectPicker: ({ id, className, visible, title, searchPlaceholder, options, values, onChange, trigger, totalCount, clearLabel, showClear, collapsedChipsCount, width, align, side, filter, onPointerDownOutside, }: MultiSelectPickerProps) => React.JSX.Element;
41
- export { MultiSelectPicker };
42
- export type { MultiSelectOption, MultiSelectPickerProps };
@@ -1 +0,0 @@
1
- export * from "./MultiSelectPicker";
@@ -1,26 +0,0 @@
1
- import React from "react";
2
- import "./index.css";
3
- type OperatorOption<T extends string> = {
4
- value: T;
5
- /** Símbolo curto exibido em mono à esquerda (ex.: ">", "≥", "∈"). */
6
- symbol: string;
7
- /** Label legível à direita (ex.: "Maior que"). */
8
- label: string;
9
- disabled?: boolean;
10
- };
11
- type OperatorPickerProps<T extends string> = {
12
- id?: string;
13
- className?: string;
14
- visible?: boolean;
15
- value?: T;
16
- options: Array<OperatorOption<T>>;
17
- onChange?: (value: T) => void;
18
- align?: "start" | "center" | "end";
19
- side?: "top" | "right" | "bottom" | "left";
20
- sideOffset?: number;
21
- trigger: React.ReactNode;
22
- onPointerDownOutside?: () => void;
23
- };
24
- declare function OperatorPicker<T extends string>({ id, className, visible, value, options, onChange, align, side, sideOffset, trigger, onPointerDownOutside, }: OperatorPickerProps<T>): React.JSX.Element;
25
- export { OperatorPicker };
26
- export type { OperatorOption, OperatorPickerProps };
@@ -1 +0,0 @@
1
- export * from "./OperatorPicker";