@plenustech/design-system 0.2.3 → 0.2.5
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/README.md +8 -0
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs +1 -1
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.js +10 -10
- package/dist/components/actions/Toolbar/Toolbar.cjs +1 -1
- package/dist/components/actions/Toolbar/Toolbar.cjs.map +1 -1
- package/dist/components/actions/Toolbar/Toolbar.js +64 -53
- package/dist/components/actions/Toolbar/Toolbar.js.map +1 -1
- package/dist/components/charts/ChartGauge/ChartGauge.cjs +2 -0
- package/dist/components/charts/ChartGauge/ChartGauge.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.js +307 -0
- package/dist/components/charts/ChartGauge/ChartGauge.js.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs +2 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.js +76 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.js +107 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeReading.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeReading.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeReading.js +112 -0
- package/dist/components/charts/ChartGauge/gaugeReading.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeScale.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeScale.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeScale.js +57 -0
- package/dist/components/charts/ChartGauge/gaugeScale.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMap.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.js +523 -0
- package/dist/components/charts/ChartMap/ChartMap.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.js +124 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.js +102 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapTable.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMapTable.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapTable.js +118 -0
- package/dist/components/charts/ChartMap/ChartMapTable.js.map +1 -0
- package/dist/components/charts/ChartMap/mapGeometry.cjs +2 -0
- package/dist/components/charts/ChartMap/mapGeometry.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapGeometry.js +113 -0
- package/dist/components/charts/ChartMap/mapGeometry.js.map +1 -0
- package/dist/components/charts/ChartMap/mapLabels.cjs +2 -0
- package/dist/components/charts/ChartMap/mapLabels.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapLabels.js +80 -0
- package/dist/components/charts/ChartMap/mapLabels.js.map +1 -0
- package/dist/components/charts/ChartMap/mapScales.cjs +2 -0
- package/dist/components/charts/ChartMap/mapScales.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapScales.js +131 -0
- package/dist/components/charts/ChartMap/mapScales.js.map +1 -0
- package/dist/components/charts/ChartMap/polylabel.cjs +2 -0
- package/dist/components/charts/ChartMap/polylabel.cjs.map +1 -0
- package/dist/components/charts/ChartMap/polylabel.js +50 -0
- package/dist/components/charts/ChartMap/polylabel.js.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.js +703 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.js.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js +124 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.js +42 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.js +109 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTime.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineTime.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTime.js +91 -0
- package/dist/components/charts/ChartTimeline/timelineTime.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.js +77 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.js.map +1 -0
- package/dist/components/charts/core/ChartLegend.cjs +1 -1
- package/dist/components/charts/core/ChartLegend.cjs.map +1 -1
- package/dist/components/charts/core/ChartLegend.js +37 -25
- package/dist/components/charts/core/ChartLegend.js.map +1 -1
- package/dist/components/charts/core/useChartMetrics.cjs +1 -1
- package/dist/components/charts/core/useChartMetrics.cjs.map +1 -1
- package/dist/components/charts/core/useChartMetrics.js +20 -25
- package/dist/components/charts/core/useChartMetrics.js.map +1 -1
- package/dist/components/data-display/CodeBlock/syntax.cjs +10 -3
- package/dist/components/data-display/CodeBlock/syntax.cjs.map +1 -1
- package/dist/components/data-display/CodeBlock/syntax.js +68 -48
- package/dist/components/data-display/CodeBlock/syntax.js.map +1 -1
- package/dist/components/data-display/List/List.cjs.map +1 -1
- package/dist/components/data-display/List/List.js.map +1 -1
- package/dist/components/data-display/List/List.module.css.cjs +1 -1
- package/dist/components/data-display/List/List.module.css.js +34 -24
- package/dist/components/data-display/List/List.module.css.js.map +1 -1
- package/dist/components/data-display/List/ListingOptions.cjs +1 -1
- package/dist/components/data-display/List/ListingOptions.cjs.map +1 -1
- package/dist/components/data-display/List/ListingOptions.js +98 -74
- package/dist/components/data-display/List/ListingOptions.js.map +1 -1
- package/dist/components/data-display/List/useListing.cjs.map +1 -1
- package/dist/components/data-display/List/useListing.js.map +1 -1
- package/dist/components/data-display/Timeline/Timeline.cjs +1 -1
- package/dist/components/data-display/Timeline/Timeline.cjs.map +1 -1
- package/dist/components/data-display/Timeline/Timeline.js +6 -6
- package/dist/components/data-display/Timeline/Timeline.js.map +1 -1
- package/dist/components/data-display/Timeline/Timeline.module.css.cjs +1 -1
- package/dist/components/data-display/Timeline/Timeline.module.css.js +18 -16
- package/dist/components/data-display/Timeline/Timeline.module.css.js.map +1 -1
- package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +1 -1
- package/dist/components/forms/Checkbox/Checkbox.module.css.js +5 -5
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs +1 -1
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js +1 -1
- package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -1
- package/dist/components/forms/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/forms/Field/Field.cjs +1 -1
- package/dist/components/forms/Field/Field.cjs.map +1 -1
- package/dist/components/forms/Field/Field.js +22 -22
- package/dist/components/forms/Field/Field.js.map +1 -1
- package/dist/components/forms/Field/Field.module.css.cjs +1 -1
- package/dist/components/forms/Field/Field.module.css.js +19 -17
- package/dist/components/forms/Field/Field.module.css.js.map +1 -1
- package/dist/components/forms/InputText/InputText.cjs +1 -1
- package/dist/components/forms/InputText/InputText.cjs.map +1 -1
- package/dist/components/forms/InputText/InputText.js +24 -24
- package/dist/components/forms/InputText/InputText.js.map +1 -1
- package/dist/components/forms/InputText/InputText.module.css.cjs +1 -1
- package/dist/components/forms/InputText/InputText.module.css.js +9 -7
- package/dist/components/forms/InputText/InputText.module.css.js.map +1 -1
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +1 -1
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +4 -4
- package/dist/components/forms/Select/Select.cjs.map +1 -1
- package/dist/components/forms/Select/Select.js.map +1 -1
- package/dist/components/forms/Switch/Switch.module.css.cjs +1 -1
- package/dist/components/forms/Switch/Switch.module.css.js +6 -6
- package/dist/components/icons/suite.cjs +1 -0
- package/dist/components/icons/suite.js +10894 -0
- package/dist/components/navigation/Pagination/Pagination.cjs +1 -1
- package/dist/components/navigation/Pagination/Pagination.cjs.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +71 -44
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.module.css.cjs +1 -1
- package/dist/components/navigation/Pagination/Pagination.module.css.js +18 -14
- package/dist/components/navigation/Pagination/Pagination.module.css.js.map +1 -1
- package/dist/components/navigation/TabsNav/TabsNav.cjs +2 -0
- package/dist/components/navigation/TabsNav/TabsNav.cjs.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.js +21 -0
- package/dist/components/navigation/TabsNav/TabsNav.js.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs +2 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.js +18 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.js.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -1
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogFrame.cjs +1 -1
- package/dist/components/overlays/Dialog/DialogFrame.cjs.map +1 -1
- package/dist/components/overlays/Dialog/DialogFrame.js +30 -30
- package/dist/components/overlays/Dialog/DialogFrame.js.map +1 -1
- package/dist/components/overlays/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/overlays/Drawer/Drawer.js.map +1 -1
- package/dist/components/overlays/Menu/Menu.cjs +1 -1
- package/dist/components/overlays/Menu/Menu.cjs.map +1 -1
- package/dist/components/overlays/Menu/Menu.js +37 -36
- package/dist/components/overlays/Menu/Menu.js.map +1 -1
- package/dist/components/overlays/Menu/keyShortcuts.cjs +2 -0
- package/dist/components/overlays/Menu/keyShortcuts.cjs.map +1 -0
- package/dist/components/overlays/Menu/keyShortcuts.js +55 -0
- package/dist/components/overlays/Menu/keyShortcuts.js.map +1 -0
- package/dist/components/overlays/Tooltip/Tooltip.cjs +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +81 -56
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/design-system.css +1 -1
- package/dist/icons.cjs +2 -0
- package/dist/icons.cjs.map +1 -0
- package/dist/icons.js +2054 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +184 -174
- package/dist/index.js.map +1 -1
- package/dist/types/components/charts/ChartGauge/ChartGauge.d.ts +83 -0
- package/dist/types/components/charts/ChartGauge/gaugeLayout.d.ts +64 -0
- package/dist/types/components/charts/ChartGauge/gaugeReading.d.ts +97 -0
- package/dist/types/components/charts/ChartGauge/gaugeScale.d.ts +38 -0
- package/dist/types/components/charts/ChartGauge/index.d.ts +2 -0
- package/dist/types/components/charts/ChartMap/ChartMap.d.ts +104 -0
- package/dist/types/components/charts/ChartMap/ChartMapLegend.d.ts +44 -0
- package/dist/types/components/charts/ChartMap/ChartMapTable.d.ts +38 -0
- package/dist/types/components/charts/ChartMap/index.d.ts +4 -0
- package/dist/types/components/charts/ChartMap/mapGeometry.d.ts +56 -0
- package/dist/types/components/charts/ChartMap/mapLabels.d.ts +51 -0
- package/dist/types/components/charts/ChartMap/mapScales.d.ts +76 -0
- package/dist/types/components/charts/ChartMap/polylabel.d.ts +9 -0
- package/dist/types/components/charts/ChartTimeline/ChartTimeline.d.ts +137 -0
- package/dist/types/components/charts/ChartTimeline/ChartTimelineTable.d.ts +25 -0
- package/dist/types/components/charts/ChartTimeline/index.d.ts +2 -0
- package/dist/types/components/charts/ChartTimeline/timelineLayout.d.ts +70 -0
- package/dist/types/components/charts/ChartTimeline/timelineTime.d.ts +16 -0
- package/dist/types/components/charts/ChartTimeline/timelineTooltip.d.ts +45 -0
- package/dist/types/components/charts/core/ChartLegend.d.ts +3 -1
- package/dist/types/components/data-display/CodeBlock/syntax.d.ts +1 -1
- package/dist/types/components/data-display/List/List.d.ts +1 -1
- package/dist/types/components/data-display/List/useListing.d.ts +7 -1
- package/dist/types/components/data-display/Timeline/Timeline.d.ts +4 -1
- package/dist/types/components/data-display/Timeline/index.d.ts +1 -1
- package/dist/types/components/forms/ComboBox/ComboBox.d.ts +7 -1
- package/dist/types/components/forms/Field/Field.d.ts +1 -1
- package/dist/types/components/forms/InputText/InputText.d.ts +1 -1
- package/dist/types/components/forms/Select/Select.d.ts +5 -1
- package/dist/types/components/icons/suite.d.ts +2051 -0
- package/dist/types/components/navigation/Pagination/Pagination.d.ts +13 -1
- package/dist/types/components/navigation/Pagination/index.d.ts +1 -1
- package/dist/types/components/navigation/TabsNav/TabsNav.d.ts +20 -0
- package/dist/types/components/navigation/TabsNav/index.d.ts +2 -0
- package/dist/types/components/overlays/Dialog/Dialog.d.ts +19 -7
- package/dist/types/components/overlays/Dialog/DialogFrame.d.ts +8 -2
- package/dist/types/components/overlays/Drawer/Drawer.d.ts +2 -2
- package/dist/types/components/overlays/Menu/Menu.d.ts +3 -1
- package/dist/types/components/overlays/Menu/keyShortcuts.d.ts +2 -0
- package/dist/types/components/overlays/Tooltip/Tooltip.d.ts +26 -5
- package/dist/types/icons.d.ts +6 -0
- package/dist/types/index.d.ts +11 -3
- package/dist/types/utils/formatters/formatarDuracao.d.ts +5 -0
- package/dist/types/utils/formatters/index.d.ts +1 -0
- package/dist/utils/formatters/formatarDuracao.cjs +2 -0
- package/dist/utils/formatters/formatarDuracao.cjs.map +1 -0
- package/dist/utils/formatters/formatarDuracao.js +10 -0
- package/dist/utils/formatters/formatarDuracao.js.map +1 -0
- package/package.json +10 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),t=require("./Pagination.module.css.cjs"),h=require("../../icons/icons.cjs"),N=require("../../../utils/formatters/formatarNumero.cjs");function P({className:s,disabled:a=!1,formatRange:e,label:o="Paginação",onPageChange:l,page:d,pageCount:c,pageSize:u,siblings:f=1,totalItems:m,...g}){if(c<=1)return null;const i=Math.min(Math.max(d,1),c),p=j(i,c,f);function x(r){a||l(r)}return n.jsxs("nav",{...g,"aria-label":o,className:[t.default.pagination,s].filter(Boolean).join(" "),children:[m!==void 0&&u!==void 0&&n.jsx(M,{formatRange:e,range:{start:(i-1)*u+1,end:Math.min(i*u,m),total:m}}),n.jsx("button",{className:t.default.step,type:"button","aria-label":"Página anterior","aria-disabled":a||i===1||void 0,onClick:()=>i>1&&x(i-1),children:n.jsx(h.IconChevronLeft,{size:14})}),n.jsx("ol",{className:t.default.list,children:p.map((r,b)=>r===null?n.jsx("li",{className:t.default.gap,"aria-hidden":"true",children:"…"},`gap-${b}`):n.jsx("li",{children:n.jsx("button",{className:[t.default.page,r===i&&t.default.current].filter(Boolean).join(" "),type:"button","aria-label":`Página ${r}`,"aria-current":r===i?"page":void 0,"aria-disabled":a||void 0,onClick:()=>x(r),children:r})},r))}),n.jsx("button",{className:t.default.step,type:"button","aria-label":"Próxima página","aria-disabled":a||i===c||void 0,onClick:()=>i<c&&x(i+1),children:n.jsx(h.IconChevronRight,{size:14})})]})}function M({formatRange:s,range:a}){if(s)return n.jsx("span",{className:t.default.range,role:"status",children:s(a)});const[e,o,l]=[a.start,a.end,a.total].map(d=>N.formatarNumero(d));return n.jsxs("span",{className:t.default.range,role:"status",children:[n.jsx("span",{"aria-hidden":"true",children:`${e}–${o} de ${l}`}),n.jsx("span",{className:t.default.hiddenText,children:`Itens ${e} a ${o} de ${l}`})]})}function j(s,a,e){const o=e*2+5;if(a<=o)return Array.from({length:a},(u,f)=>f+1);const l=Math.max(Math.min(s-e,a-e*2-2),3),d=Math.min(Math.max(s+e,e*2+3),a-2),c=Array.from({length:d-l+1},(u,f)=>l+f);return[1,l>3?null:2,...c,d<a-2?null:a-1,a]}exports.Pagination=P;exports.montarFaixa=j;
|
|
2
2
|
//# sourceMappingURL=Pagination.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.cjs","sources":["../../../../src/components/navigation/Pagination/Pagination.tsx"],"sourcesContent":["import { type ComponentPropsWithRef } from 'react';\nimport styles from './Pagination.module.css';\nimport { IconChevronLeft, IconChevronRight } from '../../icons';\n\nexport interface PaginationProps extends ComponentPropsWithRef<'nav'> {\n /** Suspende a troca de pagina, como enquanto a pagina pedida carrega. Os botoes continuam focaveis. */\n disabled?: boolean;\n label?: string;\n onPageChange: (page: number) => void;\n page: number;\n pageCount: number;\n /** Quantidade de paginas mostradas de cada lado da atual. */\n siblings?: number;\n}\n\nexport function Pagination({\n className,\n disabled = false,\n label = 'Paginação',\n onPageChange,\n page,\n pageCount,\n siblings = 1,\n ...props\n}: PaginationProps) {\n if (pageCount <= 1) {\n return null;\n }\n\n const atual = Math.min(Math.max(page, 1), pageCount);\n const paginas = montarFaixa(atual, pageCount, siblings);\n\n function irPara(pagina: number) {\n if (!disabled) {\n onPageChange(pagina);\n }\n }\n\n return (\n <nav {...props} aria-label={label} className={[styles.pagination, className].filter(Boolean).join(' ')}>\n {/* `aria-disabled`, e nao `disabled`: desabilitado na borda, o botao perdia o foco de quem acabou de usa-lo. */}\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Página anterior\"\n aria-disabled={disabled || atual === 1 || undefined}\n onClick={() => atual > 1 && irPara(atual - 1)}\n >\n <IconChevronLeft size={14} />\n </button>\n <ol className={styles.list}>\n {paginas.map((numero, indice) =>\n numero === null ? (\n <li className={styles.gap} key={`gap-${indice}`} aria-hidden=\"true\">\n …\n </li>\n ) : (\n <li key={numero}>\n <button\n className={[styles.page, numero === atual && styles.current].filter(Boolean).join(' ')}\n type=\"button\"\n aria-label={`Página ${numero}`}\n aria-current={numero === atual ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={() => irPara(numero)}\n >\n {numero}\n </button>\n </li>\n ),\n )}\n </ol>\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Próxima página\"\n aria-disabled={disabled || atual === pageCount || undefined}\n onClick={() => atual < pageCount && irPara(atual + 1)}\n >\n <IconChevronRight size={14} />\n </button>\n </nav>\n );\n}\n\n/**\n * Primeira e ultima pagina sempre visiveis; null representa a reticencia. A faixa tem sempre as mesmas vagas: perto\n * da ponta a janela encosta nela em vez de encolher, e reticencia nunca esconde uma pagina so.\n */\nexport function montarFaixa(atual: number, total: number, vizinhos: number): (number | null)[] {\n const vagas = vizinhos * 2 + 5;\n\n if (total <= vagas) {\n return Array.from({ length: total }, (_, indice) => indice + 1);\n }\n\n const inicio = Math.max(Math.min(atual - vizinhos, total - vizinhos * 2 - 2), 3);\n const fim = Math.min(Math.max(atual + vizinhos, vizinhos * 2 + 3), total - 2);\n const janela = Array.from({ length: fim - inicio + 1 }, (_, indice) => inicio + indice);\n\n return [1, inicio > 3 ? null : 2, ...janela, fim < total - 2 ? null : total - 1, total];\n}\n"],"names":["Pagination","className","disabled","label","onPageChange","page","pageCount","siblings","props","atual","paginas","montarFaixa","irPara","pagina","styles","jsx","IconChevronLeft","numero","indice","IconChevronRight","
|
|
1
|
+
{"version":3,"file":"Pagination.cjs","sources":["../../../../src/components/navigation/Pagination/Pagination.tsx"],"sourcesContent":["import { type ComponentPropsWithRef } from 'react';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './Pagination.module.css';\nimport { IconChevronLeft, IconChevronRight } from '../../icons';\n\n/** Posições, contadas de 1, do primeiro e do último item da página, e o total de itens. */\nexport interface PaginationRange {\n end: number;\n start: number;\n total: number;\n}\n\nexport interface PaginationProps extends ComponentPropsWithRef<'nav'> {\n /** Suspende a troca de pagina, como enquanto a pagina pedida carrega. Os botoes continuam focaveis. */\n disabled?: boolean;\n /** Troca o texto do intervalo, que por padrão é `1.201–1.250 de 4.380`. */\n formatRange?: (range: PaginationRange) => string;\n label?: string;\n onPageChange: (page: number) => void;\n page: number;\n pageCount: number;\n /** Itens por página. Com `totalItems`, mostra o intervalo da página atual. */\n pageSize?: number;\n /** Quantidade de paginas mostradas de cada lado da atual. */\n siblings?: number;\n /** Total de itens. Com `pageSize`, mostra o intervalo da página atual. */\n totalItems?: number;\n}\n\nexport function Pagination({\n className,\n disabled = false,\n formatRange,\n label = 'Paginação',\n onPageChange,\n page,\n pageCount,\n pageSize,\n siblings = 1,\n totalItems,\n ...props\n}: PaginationProps) {\n if (pageCount <= 1) {\n return null;\n }\n\n const atual = Math.min(Math.max(page, 1), pageCount);\n const paginas = montarFaixa(atual, pageCount, siblings);\n\n function irPara(pagina: number) {\n if (!disabled) {\n onPageChange(pagina);\n }\n }\n\n return (\n <nav {...props} aria-label={label} className={[styles.pagination, className].filter(Boolean).join(' ')}>\n {totalItems !== undefined && pageSize !== undefined && (\n <PaginationRangeText\n formatRange={formatRange}\n range={{\n start: (atual - 1) * pageSize + 1,\n end: Math.min(atual * pageSize, totalItems),\n total: totalItems,\n }}\n />\n )}\n {/* `aria-disabled`, e nao `disabled`: desabilitado na borda, o botao perdia o foco de quem acabou de usa-lo. */}\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Página anterior\"\n aria-disabled={disabled || atual === 1 || undefined}\n onClick={() => atual > 1 && irPara(atual - 1)}\n >\n <IconChevronLeft size={14} />\n </button>\n <ol className={styles.list}>\n {paginas.map((numero, indice) =>\n numero === null ? (\n <li className={styles.gap} key={`gap-${indice}`} aria-hidden=\"true\">\n …\n </li>\n ) : (\n <li key={numero}>\n <button\n className={[styles.page, numero === atual && styles.current].filter(Boolean).join(' ')}\n type=\"button\"\n aria-label={`Página ${numero}`}\n aria-current={numero === atual ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={() => irPara(numero)}\n >\n {numero}\n </button>\n </li>\n ),\n )}\n </ol>\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Próxima página\"\n aria-disabled={disabled || atual === pageCount || undefined}\n onClick={() => atual < pageCount && irPara(atual + 1)}\n >\n <IconChevronRight size={14} />\n </button>\n </nav>\n );\n}\n\n/**\n * Região viva: ao trocar de página, o leitor de tela anuncia o novo intervalo, e só ele, pois os botões não mudam\n * de nome. O travessão some na fala de muitos leitores, e o texto padrão tem uma forma falada à parte.\n */\nfunction PaginationRangeText({\n formatRange,\n range,\n}: {\n formatRange?: (range: PaginationRange) => string;\n range: PaginationRange;\n}) {\n if (formatRange) {\n return (\n <span className={styles.range} role=\"status\">\n {formatRange(range)}\n </span>\n );\n }\n\n const [inicio, fim, total] = [range.start, range.end, range.total].map((numero) => formatarNumero(numero));\n\n return (\n <span className={styles.range} role=\"status\">\n <span aria-hidden=\"true\">{`${inicio}–${fim} de ${total}`}</span>\n <span className={styles.hiddenText}>{`Itens ${inicio} a ${fim} de ${total}`}</span>\n </span>\n );\n}\n\n/**\n * Primeira e ultima pagina sempre visiveis; null representa a reticencia. A faixa tem sempre as mesmas vagas: perto\n * da ponta a janela encosta nela em vez de encolher, e reticencia nunca esconde uma pagina so.\n */\nexport function montarFaixa(atual: number, total: number, vizinhos: number): (number | null)[] {\n const vagas = vizinhos * 2 + 5;\n\n if (total <= vagas) {\n return Array.from({ length: total }, (_, indice) => indice + 1);\n }\n\n const inicio = Math.max(Math.min(atual - vizinhos, total - vizinhos * 2 - 2), 3);\n const fim = Math.min(Math.max(atual + vizinhos, vizinhos * 2 + 3), total - 2);\n const janela = Array.from({ length: fim - inicio + 1 }, (_, indice) => inicio + indice);\n\n return [1, inicio > 3 ? null : 2, ...janela, fim < total - 2 ? null : total - 1, total];\n}\n"],"names":["Pagination","className","disabled","formatRange","label","onPageChange","page","pageCount","pageSize","siblings","totalItems","props","atual","paginas","montarFaixa","irPara","pagina","styles","jsx","PaginationRangeText","IconChevronLeft","numero","indice","IconChevronRight","range","inicio","fim","total","formatarNumero","vizinhos","vagas","_","janela"],"mappings":"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"}
|
|
@@ -1,70 +1,97 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
3
|
-
import { IconChevronLeft as
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { jsxs as u, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import t from "./Pagination.module.css.js";
|
|
3
|
+
import { IconChevronLeft as N, IconChevronRight as $ } from "../../icons/icons.js";
|
|
4
|
+
import { formatarNumero as M } from "../../../utils/formatters/formatarNumero.js";
|
|
5
|
+
function B({
|
|
6
|
+
className: s,
|
|
7
|
+
disabled: a = !1,
|
|
8
|
+
formatRange: r,
|
|
9
|
+
label: o = "Paginação",
|
|
10
|
+
onPageChange: l,
|
|
11
|
+
page: d,
|
|
12
|
+
pageCount: c,
|
|
13
|
+
pageSize: m,
|
|
14
|
+
siblings: h = 1,
|
|
15
|
+
totalItems: f,
|
|
16
|
+
...b
|
|
13
17
|
}) {
|
|
14
|
-
if (
|
|
18
|
+
if (c <= 1)
|
|
15
19
|
return null;
|
|
16
|
-
const
|
|
17
|
-
function
|
|
18
|
-
|
|
20
|
+
const i = Math.min(Math.max(d, 1), c), g = v(i, c, h);
|
|
21
|
+
function p(e) {
|
|
22
|
+
a || l(e);
|
|
19
23
|
}
|
|
20
|
-
return /* @__PURE__ */
|
|
21
|
-
/* @__PURE__ */
|
|
24
|
+
return /* @__PURE__ */ u("nav", { ...b, "aria-label": o, className: [t.pagination, s].filter(Boolean).join(" "), children: [
|
|
25
|
+
f !== void 0 && m !== void 0 && /* @__PURE__ */ n(
|
|
26
|
+
P,
|
|
27
|
+
{
|
|
28
|
+
formatRange: r,
|
|
29
|
+
range: {
|
|
30
|
+
start: (i - 1) * m + 1,
|
|
31
|
+
end: Math.min(i * m, f),
|
|
32
|
+
total: f
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
),
|
|
36
|
+
/* @__PURE__ */ n(
|
|
22
37
|
"button",
|
|
23
38
|
{
|
|
24
|
-
className:
|
|
39
|
+
className: t.step,
|
|
25
40
|
type: "button",
|
|
26
41
|
"aria-label": "Página anterior",
|
|
27
|
-
"aria-disabled":
|
|
28
|
-
onClick: () =>
|
|
29
|
-
children: /* @__PURE__ */
|
|
42
|
+
"aria-disabled": a || i === 1 || void 0,
|
|
43
|
+
onClick: () => i > 1 && p(i - 1),
|
|
44
|
+
children: /* @__PURE__ */ n(N, { size: 14 })
|
|
30
45
|
}
|
|
31
46
|
),
|
|
32
|
-
/* @__PURE__ */
|
|
33
|
-
(
|
|
47
|
+
/* @__PURE__ */ n("ol", { className: t.list, children: g.map(
|
|
48
|
+
(e, x) => e === null ? /* @__PURE__ */ n("li", { className: t.gap, "aria-hidden": "true", children: "…" }, `gap-${x}`) : /* @__PURE__ */ n("li", { children: /* @__PURE__ */ n(
|
|
34
49
|
"button",
|
|
35
50
|
{
|
|
36
|
-
className: [
|
|
51
|
+
className: [t.page, e === i && t.current].filter(Boolean).join(" "),
|
|
37
52
|
type: "button",
|
|
38
|
-
"aria-label": `Página ${
|
|
39
|
-
"aria-current":
|
|
40
|
-
"aria-disabled":
|
|
41
|
-
onClick: () =>
|
|
42
|
-
children:
|
|
53
|
+
"aria-label": `Página ${e}`,
|
|
54
|
+
"aria-current": e === i ? "page" : void 0,
|
|
55
|
+
"aria-disabled": a || void 0,
|
|
56
|
+
onClick: () => p(e),
|
|
57
|
+
children: e
|
|
43
58
|
}
|
|
44
|
-
) },
|
|
59
|
+
) }, e)
|
|
45
60
|
) }),
|
|
46
|
-
/* @__PURE__ */
|
|
61
|
+
/* @__PURE__ */ n(
|
|
47
62
|
"button",
|
|
48
63
|
{
|
|
49
|
-
className:
|
|
64
|
+
className: t.step,
|
|
50
65
|
type: "button",
|
|
51
66
|
"aria-label": "Próxima página",
|
|
52
|
-
"aria-disabled":
|
|
53
|
-
onClick: () =>
|
|
54
|
-
children: /* @__PURE__ */
|
|
67
|
+
"aria-disabled": a || i === c || void 0,
|
|
68
|
+
onClick: () => i < c && p(i + 1),
|
|
69
|
+
children: /* @__PURE__ */ n($, { size: 14 })
|
|
55
70
|
}
|
|
56
71
|
)
|
|
57
72
|
] });
|
|
58
73
|
}
|
|
59
|
-
function
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
74
|
+
function P({
|
|
75
|
+
formatRange: s,
|
|
76
|
+
range: a
|
|
77
|
+
}) {
|
|
78
|
+
if (s)
|
|
79
|
+
return /* @__PURE__ */ n("span", { className: t.range, role: "status", children: s(a) });
|
|
80
|
+
const [r, o, l] = [a.start, a.end, a.total].map((d) => M(d));
|
|
81
|
+
return /* @__PURE__ */ u("span", { className: t.range, role: "status", children: [
|
|
82
|
+
/* @__PURE__ */ n("span", { "aria-hidden": "true", children: `${r}–${o} de ${l}` }),
|
|
83
|
+
/* @__PURE__ */ n("span", { className: t.hiddenText, children: `Itens ${r} a ${o} de ${l}` })
|
|
84
|
+
] });
|
|
85
|
+
}
|
|
86
|
+
function v(s, a, r) {
|
|
87
|
+
const o = r * 2 + 5;
|
|
88
|
+
if (a <= o)
|
|
89
|
+
return Array.from({ length: a }, (m, h) => h + 1);
|
|
90
|
+
const l = Math.max(Math.min(s - r, a - r * 2 - 2), 3), d = Math.min(Math.max(s + r, r * 2 + 3), a - 2), c = Array.from({ length: d - l + 1 }, (m, h) => l + h);
|
|
91
|
+
return [1, l > 3 ? null : 2, ...c, d < a - 2 ? null : a - 1, a];
|
|
65
92
|
}
|
|
66
93
|
export {
|
|
67
|
-
|
|
68
|
-
|
|
94
|
+
B as Pagination,
|
|
95
|
+
v as montarFaixa
|
|
69
96
|
};
|
|
70
97
|
//# sourceMappingURL=Pagination.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/navigation/Pagination/Pagination.tsx"],"sourcesContent":["import { type ComponentPropsWithRef } from 'react';\nimport styles from './Pagination.module.css';\nimport { IconChevronLeft, IconChevronRight } from '../../icons';\n\nexport interface PaginationProps extends ComponentPropsWithRef<'nav'> {\n /** Suspende a troca de pagina, como enquanto a pagina pedida carrega. Os botoes continuam focaveis. */\n disabled?: boolean;\n label?: string;\n onPageChange: (page: number) => void;\n page: number;\n pageCount: number;\n /** Quantidade de paginas mostradas de cada lado da atual. */\n siblings?: number;\n}\n\nexport function Pagination({\n className,\n disabled = false,\n label = 'Paginação',\n onPageChange,\n page,\n pageCount,\n siblings = 1,\n ...props\n}: PaginationProps) {\n if (pageCount <= 1) {\n return null;\n }\n\n const atual = Math.min(Math.max(page, 1), pageCount);\n const paginas = montarFaixa(atual, pageCount, siblings);\n\n function irPara(pagina: number) {\n if (!disabled) {\n onPageChange(pagina);\n }\n }\n\n return (\n <nav {...props} aria-label={label} className={[styles.pagination, className].filter(Boolean).join(' ')}>\n {/* `aria-disabled`, e nao `disabled`: desabilitado na borda, o botao perdia o foco de quem acabou de usa-lo. */}\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Página anterior\"\n aria-disabled={disabled || atual === 1 || undefined}\n onClick={() => atual > 1 && irPara(atual - 1)}\n >\n <IconChevronLeft size={14} />\n </button>\n <ol className={styles.list}>\n {paginas.map((numero, indice) =>\n numero === null ? (\n <li className={styles.gap} key={`gap-${indice}`} aria-hidden=\"true\">\n …\n </li>\n ) : (\n <li key={numero}>\n <button\n className={[styles.page, numero === atual && styles.current].filter(Boolean).join(' ')}\n type=\"button\"\n aria-label={`Página ${numero}`}\n aria-current={numero === atual ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={() => irPara(numero)}\n >\n {numero}\n </button>\n </li>\n ),\n )}\n </ol>\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Próxima página\"\n aria-disabled={disabled || atual === pageCount || undefined}\n onClick={() => atual < pageCount && irPara(atual + 1)}\n >\n <IconChevronRight size={14} />\n </button>\n </nav>\n );\n}\n\n/**\n * Primeira e ultima pagina sempre visiveis; null representa a reticencia. A faixa tem sempre as mesmas vagas: perto\n * da ponta a janela encosta nela em vez de encolher, e reticencia nunca esconde uma pagina so.\n */\nexport function montarFaixa(atual: number, total: number, vizinhos: number): (number | null)[] {\n const vagas = vizinhos * 2 + 5;\n\n if (total <= vagas) {\n return Array.from({ length: total }, (_, indice) => indice + 1);\n }\n\n const inicio = Math.max(Math.min(atual - vizinhos, total - vizinhos * 2 - 2), 3);\n const fim = Math.min(Math.max(atual + vizinhos, vizinhos * 2 + 3), total - 2);\n const janela = Array.from({ length: fim - inicio + 1 }, (_, indice) => inicio + indice);\n\n return [1, inicio > 3 ? null : 2, ...janela, fim < total - 2 ? null : total - 1, total];\n}\n"],"names":["Pagination","className","disabled","label","onPageChange","page","pageCount","siblings","props","atual","paginas","montarFaixa","irPara","pagina","styles","jsx","IconChevronLeft","numero","indice","IconChevronRight","
|
|
1
|
+
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/navigation/Pagination/Pagination.tsx"],"sourcesContent":["import { type ComponentPropsWithRef } from 'react';\nimport { formatarNumero } from '../../../utils/formatters';\nimport styles from './Pagination.module.css';\nimport { IconChevronLeft, IconChevronRight } from '../../icons';\n\n/** Posições, contadas de 1, do primeiro e do último item da página, e o total de itens. */\nexport interface PaginationRange {\n end: number;\n start: number;\n total: number;\n}\n\nexport interface PaginationProps extends ComponentPropsWithRef<'nav'> {\n /** Suspende a troca de pagina, como enquanto a pagina pedida carrega. Os botoes continuam focaveis. */\n disabled?: boolean;\n /** Troca o texto do intervalo, que por padrão é `1.201–1.250 de 4.380`. */\n formatRange?: (range: PaginationRange) => string;\n label?: string;\n onPageChange: (page: number) => void;\n page: number;\n pageCount: number;\n /** Itens por página. Com `totalItems`, mostra o intervalo da página atual. */\n pageSize?: number;\n /** Quantidade de paginas mostradas de cada lado da atual. */\n siblings?: number;\n /** Total de itens. Com `pageSize`, mostra o intervalo da página atual. */\n totalItems?: number;\n}\n\nexport function Pagination({\n className,\n disabled = false,\n formatRange,\n label = 'Paginação',\n onPageChange,\n page,\n pageCount,\n pageSize,\n siblings = 1,\n totalItems,\n ...props\n}: PaginationProps) {\n if (pageCount <= 1) {\n return null;\n }\n\n const atual = Math.min(Math.max(page, 1), pageCount);\n const paginas = montarFaixa(atual, pageCount, siblings);\n\n function irPara(pagina: number) {\n if (!disabled) {\n onPageChange(pagina);\n }\n }\n\n return (\n <nav {...props} aria-label={label} className={[styles.pagination, className].filter(Boolean).join(' ')}>\n {totalItems !== undefined && pageSize !== undefined && (\n <PaginationRangeText\n formatRange={formatRange}\n range={{\n start: (atual - 1) * pageSize + 1,\n end: Math.min(atual * pageSize, totalItems),\n total: totalItems,\n }}\n />\n )}\n {/* `aria-disabled`, e nao `disabled`: desabilitado na borda, o botao perdia o foco de quem acabou de usa-lo. */}\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Página anterior\"\n aria-disabled={disabled || atual === 1 || undefined}\n onClick={() => atual > 1 && irPara(atual - 1)}\n >\n <IconChevronLeft size={14} />\n </button>\n <ol className={styles.list}>\n {paginas.map((numero, indice) =>\n numero === null ? (\n <li className={styles.gap} key={`gap-${indice}`} aria-hidden=\"true\">\n …\n </li>\n ) : (\n <li key={numero}>\n <button\n className={[styles.page, numero === atual && styles.current].filter(Boolean).join(' ')}\n type=\"button\"\n aria-label={`Página ${numero}`}\n aria-current={numero === atual ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={() => irPara(numero)}\n >\n {numero}\n </button>\n </li>\n ),\n )}\n </ol>\n <button\n className={styles.step}\n type=\"button\"\n aria-label=\"Próxima página\"\n aria-disabled={disabled || atual === pageCount || undefined}\n onClick={() => atual < pageCount && irPara(atual + 1)}\n >\n <IconChevronRight size={14} />\n </button>\n </nav>\n );\n}\n\n/**\n * Região viva: ao trocar de página, o leitor de tela anuncia o novo intervalo, e só ele, pois os botões não mudam\n * de nome. O travessão some na fala de muitos leitores, e o texto padrão tem uma forma falada à parte.\n */\nfunction PaginationRangeText({\n formatRange,\n range,\n}: {\n formatRange?: (range: PaginationRange) => string;\n range: PaginationRange;\n}) {\n if (formatRange) {\n return (\n <span className={styles.range} role=\"status\">\n {formatRange(range)}\n </span>\n );\n }\n\n const [inicio, fim, total] = [range.start, range.end, range.total].map((numero) => formatarNumero(numero));\n\n return (\n <span className={styles.range} role=\"status\">\n <span aria-hidden=\"true\">{`${inicio}–${fim} de ${total}`}</span>\n <span className={styles.hiddenText}>{`Itens ${inicio} a ${fim} de ${total}`}</span>\n </span>\n );\n}\n\n/**\n * Primeira e ultima pagina sempre visiveis; null representa a reticencia. A faixa tem sempre as mesmas vagas: perto\n * da ponta a janela encosta nela em vez de encolher, e reticencia nunca esconde uma pagina so.\n */\nexport function montarFaixa(atual: number, total: number, vizinhos: number): (number | null)[] {\n const vagas = vizinhos * 2 + 5;\n\n if (total <= vagas) {\n return Array.from({ length: total }, (_, indice) => indice + 1);\n }\n\n const inicio = Math.max(Math.min(atual - vizinhos, total - vizinhos * 2 - 2), 3);\n const fim = Math.min(Math.max(atual + vizinhos, vizinhos * 2 + 3), total - 2);\n const janela = Array.from({ length: fim - inicio + 1 }, (_, indice) => inicio + indice);\n\n return [1, inicio > 3 ? null : 2, ...janela, fim < total - 2 ? null : total - 1, total];\n}\n"],"names":["Pagination","className","disabled","formatRange","label","onPageChange","page","pageCount","pageSize","siblings","totalItems","props","atual","paginas","montarFaixa","irPara","pagina","styles","jsx","PaginationRangeText","IconChevronLeft","numero","indice","IconChevronRight","range","inicio","fim","total","formatarNumero","vizinhos","vagas","_","janela"],"mappings":";;;;AA6BO,SAASA,EAAW;AAAA,EACzB,WAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,aAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,cAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,YAAAC;AAAA,EACA,GAAGC;AACL,GAAoB;AAClB,MAAIJ,KAAa;AACf,WAAO;AAGT,QAAMK,IAAQ,KAAK,IAAI,KAAK,IAAIN,GAAM,CAAC,GAAGC,CAAS,GAC7CM,IAAUC,EAAYF,GAAOL,GAAWE,CAAQ;AAEtD,WAASM,EAAOC,GAAgB;AAC9B,IAAKd,KACHG,EAAaW,CAAM;AAAA,EAEvB;AAEA,2BACG,OAAA,EAAK,GAAGL,GAAO,cAAYP,GAAO,WAAW,CAACa,EAAO,YAAYhB,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAClG,UAAA;AAAA,IAAAS,MAAe,UAAaF,MAAa,UACxC,gBAAAU;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,aAAAhB;AAAA,QACA,OAAO;AAAA,UACL,QAAQS,IAAQ,KAAKJ,IAAW;AAAA,UAChC,KAAK,KAAK,IAAII,IAAQJ,GAAUE,CAAU;AAAA,UAC1C,OAAOA;AAAA,QAAA;AAAA,MACT;AAAA,IAAA;AAAA,IAIJ,gBAAAQ;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWD,EAAO;AAAA,QAClB,MAAK;AAAA,QACL,cAAW;AAAA,QACX,iBAAef,KAAYU,MAAU,KAAK;AAAA,QAC1C,SAAS,MAAMA,IAAQ,KAAKG,EAAOH,IAAQ,CAAC;AAAA,QAE5C,UAAA,gBAAAM,EAACE,GAAA,EAAgB,MAAM,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,IAE7B,gBAAAF,EAAC,MAAA,EAAG,WAAWD,EAAO,MACnB,UAAAJ,EAAQ;AAAA,MAAI,CAACQ,GAAQC,MACpBD,MAAW,OACT,gBAAAH,EAAC,QAAG,WAAWD,EAAO,KAA2B,eAAY,QAAO,UAAA,IAAA,GAApC,OAAOK,CAAM,EAE7C,sBAEC,MAAA,EACC,UAAA,gBAAAJ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,CAACD,EAAO,MAAMI,MAAWT,KAASK,EAAO,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,UACrF,MAAK;AAAA,UACL,cAAY,UAAUI,CAAM;AAAA,UAC5B,gBAAcA,MAAWT,IAAQ,SAAS;AAAA,UAC1C,iBAAeV,KAAY;AAAA,UAC3B,SAAS,MAAMa,EAAOM,CAAM;AAAA,UAE3B,UAAAA;AAAA,QAAA;AAAA,MAAA,KATIA,CAWT;AAAA,IAAA,GAGN;AAAA,IACA,gBAAAH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWD,EAAO;AAAA,QAClB,MAAK;AAAA,QACL,cAAW;AAAA,QACX,iBAAef,KAAYU,MAAUL,KAAa;AAAA,QAClD,SAAS,MAAMK,IAAQL,KAAaQ,EAAOH,IAAQ,CAAC;AAAA,QAEpD,UAAA,gBAAAM,EAACK,GAAA,EAAiB,MAAM,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAC9B,GACF;AAEJ;AAMA,SAASJ,EAAoB;AAAA,EAC3B,aAAAhB;AAAA,EACA,OAAAqB;AACF,GAGG;AACD,MAAIrB;AACF,WACE,gBAAAe,EAAC,UAAK,WAAWD,EAAO,OAAO,MAAK,UACjC,UAAAd,EAAYqB,CAAK,EAAA,CACpB;AAIJ,QAAM,CAACC,GAAQC,GAAKC,CAAK,IAAI,CAACH,EAAM,OAAOA,EAAM,KAAKA,EAAM,KAAK,EAAE,IAAI,CAACH,MAAWO,EAAeP,CAAM,CAAC;AAEzG,2BACG,QAAA,EAAK,WAAWJ,EAAO,OAAO,MAAK,UAClC,UAAA;AAAA,IAAA,gBAAAC,EAAC,QAAA,EAAK,eAAY,QAAQ,UAAA,GAAGO,CAAM,IAAIC,CAAG,OAAOC,CAAK,GAAA,CAAG;AAAA,IACzD,gBAAAT,EAAC,QAAA,EAAK,WAAWD,EAAO,YAAa,UAAA,SAASQ,CAAM,MAAMC,CAAG,OAAOC,CAAK,GAAA,CAAG;AAAA,EAAA,GAC9E;AAEJ;AAMO,SAASb,EAAYF,GAAee,GAAeE,GAAqC;AAC7F,QAAMC,IAAQD,IAAW,IAAI;AAE7B,MAAIF,KAASG;AACX,WAAO,MAAM,KAAK,EAAE,QAAQH,KAAS,CAACI,GAAGT,MAAWA,IAAS,CAAC;AAGhE,QAAMG,IAAS,KAAK,IAAI,KAAK,IAAIb,IAAQiB,GAAUF,IAAQE,IAAW,IAAI,CAAC,GAAG,CAAC,GACzEH,IAAM,KAAK,IAAI,KAAK,IAAId,IAAQiB,GAAUA,IAAW,IAAI,CAAC,GAAGF,IAAQ,CAAC,GACtEK,IAAS,MAAM,KAAK,EAAE,QAAQN,IAAMD,IAAS,EAAA,GAAK,CAACM,GAAGT,MAAWG,IAASH,CAAM;AAEtF,SAAO,CAAC,GAAGG,IAAS,IAAI,OAAO,GAAG,GAAGO,GAAQN,IAAMC,IAAQ,IAAI,OAAOA,IAAQ,GAAGA,CAAK;AACxF;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t="
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_pagination_156fv_1",t="_range_156fv_8",n="_hiddenText_156fv_19 _hiddenText_7tv83_113",_="_list_156fv_23",a="_page_156fv_32",s="_step_156fv_33",i="_current_156fv_51",g="_gap_156fv_74",o={pagination:e,range:t,hiddenText:n,list:_,page:a,step:s,current:i,gap:g};exports.current=i;exports.default=o;exports.gap=g;exports.hiddenText=n;exports.list=_;exports.page=a;exports.pagination=e;exports.range=t;exports.step=s;
|
|
2
2
|
//# sourceMappingURL=Pagination.module.css.cjs.map
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
const
|
|
2
|
-
pagination:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
const t = "_pagination_156fv_1", _ = "_range_156fv_8", n = "_hiddenText_156fv_19 _hiddenText_7tv83_113", e = "_list_156fv_23", s = "_page_156fv_32", a = "_step_156fv_33", i = "_current_156fv_51", o = "_gap_156fv_74", p = {
|
|
2
|
+
pagination: t,
|
|
3
|
+
range: _,
|
|
4
|
+
hiddenText: n,
|
|
5
|
+
list: e,
|
|
6
|
+
page: s,
|
|
7
|
+
step: a,
|
|
8
|
+
current: i,
|
|
9
|
+
gap: o
|
|
8
10
|
};
|
|
9
11
|
export {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
s as
|
|
16
|
-
|
|
12
|
+
i as current,
|
|
13
|
+
p as default,
|
|
14
|
+
o as gap,
|
|
15
|
+
n as hiddenText,
|
|
16
|
+
e as list,
|
|
17
|
+
s as page,
|
|
18
|
+
t as pagination,
|
|
19
|
+
_ as range,
|
|
20
|
+
a as step
|
|
17
21
|
};
|
|
18
22
|
//# sourceMappingURL=Pagination.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Pagination.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),e=require("./TabsNav.module.css.cjs");function d({as:s="a",className:t,current:n,fitted:i=!1,items:u,label:o,...c}){return l.jsx("nav",{...c,"aria-label":o,className:[e.default.tabsNav,i&&e.default.fitted,t].filter(Boolean).join(" "),children:l.jsx("ul",{className:e.default.list,children:u.map(a=>{const r=a.key===n;return l.jsx("li",{className:e.default.item,children:l.jsx(s,{"aria-current":r?"page":void 0,className:[e.default.link,r&&e.default.current].filter(Boolean).join(" "),href:a.href,...a.linkProps,children:a.label})},a.key)})})})}exports.TabsNav=d;
|
|
2
|
+
//# sourceMappingURL=TabsNav.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsNav.cjs","sources":["../../../../src/components/navigation/TabsNav/TabsNav.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ElementType } from 'react';\nimport styles from './TabsNav.module.css';\n\nexport interface TabsNavItem {\n href?: string;\n key: string;\n label: string;\n /** Propriedades entregues inteiras ao componente de link, para o roteador que não usa `href`. */\n linkProps?: Record<string, unknown>;\n}\n\nexport interface TabsNavProps extends Omit<ComponentPropsWithRef<'nav'>, 'aria-label'> {\n /** Componente de link da aplicação, para não acoplar o sistema a um roteador. */\n as?: ElementType;\n /** Chave da aba do endereço atual. */\n current: string;\n /** As abas dividem a largura em partes iguais, em vez de ficar do tamanho do rótulo. */\n fitted?: boolean;\n items: readonly TabsNavItem[];\n label: string;\n}\n\n/** Abas que são endereços: cada uma é um link, e a da página atual leva `aria-current=\"page\"`. */\nexport function TabsNav({ as: Link = 'a', className, current, fitted = false, items, label, ...props }: TabsNavProps) {\n return (\n <nav {...props} aria-label={label} className={[styles.tabsNav, fitted && styles.fitted, className].filter(Boolean).join(' ')}>\n <ul className={styles.list}>\n {items.map((item) => {\n const atual = item.key === current;\n\n return (\n <li className={styles.item} key={item.key}>\n <Link\n aria-current={atual ? 'page' : undefined}\n className={[styles.link, atual && styles.current].filter(Boolean).join(' ')}\n href={item.href}\n {...item.linkProps}\n >\n {item.label}\n </Link>\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n"],"names":["TabsNav","Link","className","current","fitted","items","label","props","jsx","styles","item","atual"],"mappings":"2JAuBO,SAASA,EAAQ,CAAE,GAAIC,EAAO,IAAK,UAAAC,EAAW,QAAAC,EAAS,OAAAC,EAAS,GAAO,MAAAC,EAAO,MAAAC,EAAO,GAAGC,GAAuB,CACpH,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EAAO,aAAYD,EAAO,UAAW,CAACG,EAAAA,QAAO,QAASL,GAAUK,EAAAA,QAAO,OAAQP,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACzH,SAAAM,EAAAA,IAAC,KAAA,CAAG,UAAWC,EAAAA,QAAO,KACnB,SAAAJ,EAAM,IAAKK,GAAS,CACnB,MAAMC,EAAQD,EAAK,MAAQP,EAE3B,OACEK,EAAAA,IAAC,KAAA,CAAG,UAAWC,EAAAA,QAAO,KACpB,SAAAD,EAAAA,IAACP,EAAA,CACC,eAAcU,EAAQ,OAAS,OAC/B,UAAW,CAACF,EAAAA,QAAO,KAAME,GAASF,EAAAA,QAAO,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC1E,KAAMC,EAAK,KACV,GAAGA,EAAK,UAER,SAAAA,EAAK,KAAA,CAAA,CACR,EAR+BA,EAAK,GAStC,CAEJ,CAAC,EACH,EACF,CAEJ"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import a from "./TabsNav.module.css.js";
|
|
3
|
+
function h({ as: n = "a", className: s, current: i, fitted: o = !1, items: t, label: c, ...f }) {
|
|
4
|
+
return /* @__PURE__ */ l("nav", { ...f, "aria-label": c, className: [a.tabsNav, o && a.fitted, s].filter(Boolean).join(" "), children: /* @__PURE__ */ l("ul", { className: a.list, children: t.map((e) => {
|
|
5
|
+
const r = e.key === i;
|
|
6
|
+
return /* @__PURE__ */ l("li", { className: a.item, children: /* @__PURE__ */ l(
|
|
7
|
+
n,
|
|
8
|
+
{
|
|
9
|
+
"aria-current": r ? "page" : void 0,
|
|
10
|
+
className: [a.link, r && a.current].filter(Boolean).join(" "),
|
|
11
|
+
href: e.href,
|
|
12
|
+
...e.linkProps,
|
|
13
|
+
children: e.label
|
|
14
|
+
}
|
|
15
|
+
) }, e.key);
|
|
16
|
+
}) }) });
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
h as TabsNav
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=TabsNav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsNav.js","sources":["../../../../src/components/navigation/TabsNav/TabsNav.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ElementType } from 'react';\nimport styles from './TabsNav.module.css';\n\nexport interface TabsNavItem {\n href?: string;\n key: string;\n label: string;\n /** Propriedades entregues inteiras ao componente de link, para o roteador que não usa `href`. */\n linkProps?: Record<string, unknown>;\n}\n\nexport interface TabsNavProps extends Omit<ComponentPropsWithRef<'nav'>, 'aria-label'> {\n /** Componente de link da aplicação, para não acoplar o sistema a um roteador. */\n as?: ElementType;\n /** Chave da aba do endereço atual. */\n current: string;\n /** As abas dividem a largura em partes iguais, em vez de ficar do tamanho do rótulo. */\n fitted?: boolean;\n items: readonly TabsNavItem[];\n label: string;\n}\n\n/** Abas que são endereços: cada uma é um link, e a da página atual leva `aria-current=\"page\"`. */\nexport function TabsNav({ as: Link = 'a', className, current, fitted = false, items, label, ...props }: TabsNavProps) {\n return (\n <nav {...props} aria-label={label} className={[styles.tabsNav, fitted && styles.fitted, className].filter(Boolean).join(' ')}>\n <ul className={styles.list}>\n {items.map((item) => {\n const atual = item.key === current;\n\n return (\n <li className={styles.item} key={item.key}>\n <Link\n aria-current={atual ? 'page' : undefined}\n className={[styles.link, atual && styles.current].filter(Boolean).join(' ')}\n href={item.href}\n {...item.linkProps}\n >\n {item.label}\n </Link>\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n"],"names":["TabsNav","Link","className","current","fitted","items","label","props","jsx","styles","item","atual"],"mappings":";;AAuBO,SAASA,EAAQ,EAAE,IAAIC,IAAO,KAAK,WAAAC,GAAW,SAAAC,GAAS,QAAAC,IAAS,IAAO,OAAAC,GAAO,OAAAC,GAAO,GAAGC,KAAuB;AACpH,SACE,gBAAAC,EAAC,OAAA,EAAK,GAAGD,GAAO,cAAYD,GAAO,WAAW,CAACG,EAAO,SAASL,KAAUK,EAAO,QAAQP,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GACzH,UAAA,gBAAAM,EAAC,MAAA,EAAG,WAAWC,EAAO,MACnB,UAAAJ,EAAM,IAAI,CAACK,MAAS;AACnB,UAAMC,IAAQD,EAAK,QAAQP;AAE3B,WACE,gBAAAK,EAAC,MAAA,EAAG,WAAWC,EAAO,MACpB,UAAA,gBAAAD;AAAA,MAACP;AAAA,MAAA;AAAA,QACC,gBAAcU,IAAQ,SAAS;AAAA,QAC/B,WAAW,CAACF,EAAO,MAAME,KAASF,EAAO,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,QAC1E,MAAMC,EAAK;AAAA,QACV,GAAGA,EAAK;AAAA,QAER,UAAAA,EAAK;AAAA,MAAA;AAAA,IAAA,EACR,GAR+BA,EAAK,GAStC;AAAA,EAEJ,CAAC,GACH,GACF;AAEJ;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t="_tabsNav_13l4d_2",e="_list_13l4d_6",_="_item_13l4d_16",i="_link_13l4d_21 _tab_cf8v3_1",l="_current_13l4d_26 _active_cf8v3_17",s="_fitted_13l4d_31",n={tabsNav:t,list:e,item:_,link:i,current:l,fitted:s};exports.current=l;exports.default=n;exports.fitted=s;exports.item=_;exports.link=i;exports.list=e;exports.tabsNav=t;
|
|
2
|
+
//# sourceMappingURL=TabsNav.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsNav.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const t = "_tabsNav_13l4d_2", _ = "_list_13l4d_6", s = "_item_13l4d_16", l = "_link_13l4d_21 _tab_cf8v3_1", c = "_current_13l4d_26 _active_cf8v3_17", e = "_fitted_13l4d_31", i = {
|
|
2
|
+
tabsNav: t,
|
|
3
|
+
list: _,
|
|
4
|
+
item: s,
|
|
5
|
+
link: l,
|
|
6
|
+
current: c,
|
|
7
|
+
fitted: e
|
|
8
|
+
};
|
|
9
|
+
export {
|
|
10
|
+
c as current,
|
|
11
|
+
i as default,
|
|
12
|
+
e as fitted,
|
|
13
|
+
s as item,
|
|
14
|
+
l as link,
|
|
15
|
+
_ as list,
|
|
16
|
+
t as tabsNav
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=TabsNav.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsNav.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.cjs","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { DialogFrame } from './DialogFrame';\nimport styles from './Dialog.module.css';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** As propriedades nativas vao ao elemento do dialogo
|
|
1
|
+
{"version":3,"file":"Dialog.cjs","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { DialogFrame } from './DialogFrame';\nimport styles from './Dialog.module.css';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** O que o `Dialog` e o `Drawer` compartilham. As propriedades nativas vao ao elemento do dialogo. */\nexport interface DialogBaseProps extends Omit<ComponentPropsWithRef<'div'>, 'aria-label' | 'children' | 'role' | 'title'> {\n children?: ReactNode;\n dismissable?: boolean;\n footer?: ReactNode;\n onClose: () => void;\n open: boolean;\n}\n\nexport interface DialogTitledProps {\n 'aria-label'?: never;\n description?: string;\n /** Opcional. Desenhado ao lado do titulo, fora da leitura: quem fala e o titulo. */\n icon?: ReactNode;\n title: string;\n}\n\n/** Sem titulo, sem cabecalho: o nome vem do `aria-label`, como na paleta de busca. Esc continua fechando. */\nexport interface DialogUntitledProps {\n 'aria-label': string;\n description?: never;\n icon?: never;\n title?: never;\n}\n\nexport type DialogProps = DialogBaseProps &\n (DialogTitledProps | DialogUntitledProps) & {\n /** `alertdialog` para a confirmacao que interrompe e exige resposta, como a de uma acao destrutiva. */\n role?: DialogRole;\n size?: DialogSize;\n };\n\nexport function Dialog({ size = 'md', ...props }: DialogProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.dialog, styles[size]].join(' ')}\n underlayClassName={styles.underlay}\n />\n );\n}\n"],"names":["Dialog","size","props","jsx","DialogFrame","styles"],"mappings":"yLAuCO,SAASA,EAAO,CAAE,KAAAC,EAAO,KAAM,GAAGC,GAAsB,CAC7D,OACEC,EAAAA,IAACC,EAAAA,YAAA,CACE,GAAGF,EACJ,iBAAkB,CAACG,EAAAA,QAAO,OAAQA,EAAAA,QAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG,EACxD,kBAAmBI,EAAAA,QAAO,QAAA,CAAA,CAGhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { DialogFrame } from './DialogFrame';\nimport styles from './Dialog.module.css';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** As propriedades nativas vao ao elemento do dialogo
|
|
1
|
+
{"version":3,"file":"Dialog.js","sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { DialogFrame } from './DialogFrame';\nimport styles from './Dialog.module.css';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** O que o `Dialog` e o `Drawer` compartilham. As propriedades nativas vao ao elemento do dialogo. */\nexport interface DialogBaseProps extends Omit<ComponentPropsWithRef<'div'>, 'aria-label' | 'children' | 'role' | 'title'> {\n children?: ReactNode;\n dismissable?: boolean;\n footer?: ReactNode;\n onClose: () => void;\n open: boolean;\n}\n\nexport interface DialogTitledProps {\n 'aria-label'?: never;\n description?: string;\n /** Opcional. Desenhado ao lado do titulo, fora da leitura: quem fala e o titulo. */\n icon?: ReactNode;\n title: string;\n}\n\n/** Sem titulo, sem cabecalho: o nome vem do `aria-label`, como na paleta de busca. Esc continua fechando. */\nexport interface DialogUntitledProps {\n 'aria-label': string;\n description?: never;\n icon?: never;\n title?: never;\n}\n\nexport type DialogProps = DialogBaseProps &\n (DialogTitledProps | DialogUntitledProps) & {\n /** `alertdialog` para a confirmacao que interrompe e exige resposta, como a de uma acao destrutiva. */\n role?: DialogRole;\n size?: DialogSize;\n };\n\nexport function Dialog({ size = 'md', ...props }: DialogProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.dialog, styles[size]].join(' ')}\n underlayClassName={styles.underlay}\n />\n );\n}\n"],"names":["Dialog","size","props","jsx","DialogFrame","styles"],"mappings":";;;AAuCO,SAASA,EAAO,EAAE,MAAAC,IAAO,MAAM,GAAGC,KAAsB;AAC7D,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,kBAAkB,CAACG,EAAO,QAAQA,EAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG;AAAA,MACxD,mBAAmBI,EAAO;AAAA,IAAA;AAAA,EAAA;AAGhC;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),q=require("react-dom"),F=require("@react-aria/focus"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),q=require("react-dom"),F=require("@react-aria/focus"),n=require("@react-aria/overlays"),I=require("../../../hooks/useMergedRefs.cjs"),r=require("./Dialog.module.css.cjs"),P=require("../../icons/icons.cjs");function R({open:s,...t}){return!s||typeof document>"u"?null:q.createPortal(e.jsx(O,{...t}),document.body)}function O({children:s,className:t,description:i,dismissable:o=!0,footer:c,icon:u,onClose:f,ref:v,role:x="dialog",surfaceClassName:y,title:d,underlayClassName:b,...g}){const a=l.useRef(null),p=I.useMergedRefs(a,v),m=l.useId(),j=`${m}-title`,h=`${m}-description`,{overlayProps:N,underlayProps:D}=n.useOverlay({isOpen:!0,onClose:f,isDismissable:o,isKeyboardDismissDisabled:!o},a);return n.usePreventScroll(),l.useEffect(()=>a.current?n.ariaHideOutside([a.current]):void 0,[]),e.jsx("div",{...D,className:b,children:e.jsx(F.FocusScope,{contain:!0,restoreFocus:!0,autoFocus:!0,children:e.jsxs("div",{...g,...N,ref:p,className:[y,t].filter(Boolean).join(" "),role:x,"aria-modal":"true","aria-labelledby":d?j:void 0,"aria-describedby":i?h:void 0,children:[d&&e.jsxs("header",{className:[r.default.header,s&&r.default.headerDivided].filter(Boolean).join(" "),children:[u&&e.jsx("span",{"aria-hidden":"true",className:r.default.icon,children:u}),e.jsxs("div",{className:r.default.heading,children:[e.jsx("h2",{className:r.default.title,id:j,children:d}),i&&e.jsx("p",{className:r.default.description,id:h,children:i})]}),o&&e.jsx("button",{className:r.default.close,type:"button","aria-label":"Fechar",onClick:f,children:e.jsx(P.IconClose,{size:20})})]}),s&&e.jsx("div",{className:r.default.body,children:s}),c&&e.jsx("div",{className:r.default.footer,children:c})]})})})}exports.DialogFrame=R;
|
|
2
2
|
//# sourceMappingURL=DialogFrame.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogFrame.cjs","sources":["../../../../src/components/overlays/Dialog/DialogFrame.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { IconClose } from '../../icons';\nimport type {
|
|
1
|
+
{"version":3,"file":"DialogFrame.cjs","sources":["../../../../src/components/overlays/Dialog/DialogFrame.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { IconClose } from '../../icons';\nimport type { DialogBaseProps, DialogRole } from './Dialog';\nimport styles from './Dialog.module.css';\n\nexport interface DialogFrameProps extends DialogBaseProps {\n 'aria-label'?: string;\n description?: string;\n icon?: ReactNode;\n role?: DialogRole;\n surfaceClassName: string;\n title?: string;\n underlayClassName: string;\n}\n\n/** Mecanica modal do `Dialog` e do `Drawer`: portal, foco preso, rolagem travada, cabecalho, corpo e rodape. Interna. */\nexport function DialogFrame({ open, ...props }: DialogFrameProps) {\n // No servidor nao ha `document` para o portal; o modal nasce na hidratacao.\n if (!open || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(<DialogFrameContent {...props} />, document.body);\n}\n\nfunction DialogFrameContent({\n children,\n className,\n description,\n dismissable = true,\n footer,\n icon,\n onClose,\n ref: refDoConsumidor,\n role = 'dialog',\n surfaceClassName,\n title,\n underlayClassName,\n ...props\n}: Omit<DialogFrameProps, 'open'>) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const generatedId = useId();\n const titleId = `${generatedId}-title`;\n const descriptionId = `${generatedId}-description`;\n\n const { overlayProps, underlayProps } = useOverlay(\n {\n isOpen: true,\n onClose,\n isDismissable: dismissable,\n isKeyboardDismissDisabled: !dismissable,\n },\n ref,\n );\n\n usePreventScroll();\n\n useEffect(() => (ref.current ? ariaHideOutside([ref.current]) : undefined), []);\n\n return (\n <div {...underlayProps} className={underlayClassName}>\n <FocusScope contain restoreFocus autoFocus>\n <div\n {...props}\n {...overlayProps}\n ref={mergedRef}\n className={[surfaceClassName, className].filter(Boolean).join(' ')}\n role={role}\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={description ? descriptionId : undefined}\n >\n {title && (\n <header className={[styles.header, children && styles.headerDivided].filter(Boolean).join(' ')}>\n {icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {icon}\n </span>\n )}\n <div className={styles.heading}>\n <h2 className={styles.title} id={titleId}>{title}</h2>\n {description && <p className={styles.description} id={descriptionId}>{description}</p>}\n </div>\n {dismissable && (\n <button className={styles.close} type=\"button\" aria-label=\"Fechar\" onClick={onClose}>\n <IconClose size={20} />\n </button>\n )}\n </header>\n )}\n {children && <div className={styles.body}>{children}</div>}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </FocusScope>\n </div>\n );\n}\n"],"names":["DialogFrame","open","props","createPortal","jsx","DialogFrameContent","children","className","description","dismissable","footer","icon","onClose","refDoConsumidor","role","surfaceClassName","title","underlayClassName","ref","useRef","mergedRef","useMergedRefs","generatedId","useId","titleId","descriptionId","overlayProps","underlayProps","useOverlay","usePreventScroll","useEffect","ariaHideOutside","FocusScope","jsxs","styles","IconClose"],"mappings":"sVAoBO,SAASA,EAAY,CAAE,KAAAC,EAAM,GAAGC,GAA2B,CAEhE,MAAI,CAACD,GAAQ,OAAO,SAAa,IACxB,KAGFE,EAAAA,aAAaC,EAAAA,IAACC,EAAA,CAAoB,GAAGH,EAAO,EAAI,SAAS,IAAI,CACtE,CAEA,SAASG,EAAmB,CAC1B,SAAAC,EACA,UAAAC,EACA,YAAAC,EACA,YAAAC,EAAc,GACd,OAAAC,EACA,KAAAC,EACA,QAAAC,EACA,IAAKC,EACL,KAAAC,EAAO,SACP,iBAAAC,EACA,MAAAC,EACA,kBAAAC,EACA,GAAGf,CACL,EAAmC,CACjC,MAAMgB,EAAMC,EAAAA,OAAuB,IAAI,EACjCC,EAAYC,EAAAA,cAAcH,EAAKL,CAAe,EAC9CS,EAAcC,EAAAA,MAAA,EACdC,EAAU,GAAGF,CAAW,SACxBG,EAAgB,GAAGH,CAAW,eAE9B,CAAE,aAAAI,EAAc,cAAAC,CAAA,EAAkBC,EAAAA,WACtC,CACE,OAAQ,GACR,QAAAhB,EACA,cAAeH,EACf,0BAA2B,CAACA,CAAA,EAE9BS,CAAA,EAGFW,OAAAA,mBAAA,EAEAC,YAAU,IAAOZ,EAAI,QAAUa,EAAAA,gBAAgB,CAACb,EAAI,OAAO,CAAC,EAAI,OAAY,EAAE,EAG5Ed,EAAAA,IAAC,MAAA,CAAK,GAAGuB,EAAe,UAAWV,EACjC,SAAAb,EAAAA,IAAC4B,EAAAA,WAAA,CAAW,QAAO,GAAC,aAAY,GAAC,UAAS,GACxC,SAAAC,EAAAA,KAAC,MAAA,CACE,GAAG/B,EACH,GAAGwB,EACJ,IAAKN,EACL,UAAW,CAACL,EAAkBR,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACjE,KAAAO,EACA,aAAW,OACX,kBAAiBE,EAAQQ,EAAU,OACnC,mBAAkBhB,EAAciB,EAAgB,OAE/C,SAAA,CAAAT,GACCiB,EAAAA,KAAC,SAAA,CAAO,UAAW,CAACC,EAAAA,QAAO,OAAQ5B,GAAY4B,EAAAA,QAAO,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC1F,SAAA,CAAAvB,SACE,OAAA,CAAK,cAAY,OAAO,UAAWuB,UAAO,KACxC,SAAAvB,CAAA,CACH,EAEFsB,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,QACrB,SAAA,CAAA9B,MAAC,MAAG,UAAW8B,EAAAA,QAAO,MAAO,GAAIV,EAAU,SAAAR,EAAM,EAChDR,SAAgB,IAAA,CAAE,UAAW0B,EAAAA,QAAO,YAAa,GAAIT,EAAgB,SAAAjB,CAAA,CAAY,CAAA,EACpF,EACCC,GACCL,EAAAA,IAAC,SAAA,CAAO,UAAW8B,EAAAA,QAAO,MAAO,KAAK,SAAS,aAAW,SAAS,QAAStB,EAC1E,SAAAR,EAAAA,IAAC+B,EAAAA,UAAA,CAAU,KAAM,GAAI,CAAA,CACvB,CAAA,EAEJ,EAED7B,GAAYF,EAAAA,IAAC,MAAA,CAAI,UAAW8B,UAAO,KAAO,SAAA5B,EAAS,EACnDI,GAAUN,EAAAA,IAAC,MAAA,CAAI,UAAW8B,EAAAA,QAAO,OAAS,SAAAxB,CAAA,CAAO,CAAA,CAAA,CAAA,EAEtD,CAAA,CACF,CAEJ"}
|
|
@@ -6,55 +6,55 @@ import { useOverlay as R, usePreventScroll as B, ariaHideOutside as C } from "@r
|
|
|
6
6
|
import { useMergedRefs as S } from "../../../hooks/useMergedRefs.js";
|
|
7
7
|
import r from "./Dialog.module.css.js";
|
|
8
8
|
import { IconClose as $ } from "../../icons/icons.js";
|
|
9
|
-
function G({ open:
|
|
10
|
-
return !
|
|
9
|
+
function G({ open: o, ...a }) {
|
|
10
|
+
return !o || typeof document > "u" ? null : x(/* @__PURE__ */ e(k, { ...a }), document.body);
|
|
11
11
|
}
|
|
12
12
|
function k({
|
|
13
|
-
children:
|
|
14
|
-
className:
|
|
15
|
-
description:
|
|
16
|
-
dismissable:
|
|
17
|
-
footer:
|
|
18
|
-
icon:
|
|
19
|
-
onClose:
|
|
20
|
-
ref:
|
|
21
|
-
role:
|
|
22
|
-
surfaceClassName:
|
|
23
|
-
title:
|
|
13
|
+
children: o,
|
|
14
|
+
className: a,
|
|
15
|
+
description: s,
|
|
16
|
+
dismissable: t = !0,
|
|
17
|
+
footer: l,
|
|
18
|
+
icon: c,
|
|
19
|
+
onClose: u,
|
|
20
|
+
ref: h,
|
|
21
|
+
role: v = "dialog",
|
|
22
|
+
surfaceClassName: y,
|
|
23
|
+
title: d,
|
|
24
24
|
underlayClassName: b,
|
|
25
25
|
...N
|
|
26
26
|
}) {
|
|
27
|
-
const
|
|
27
|
+
const i = I(null), g = S(i, h), m = j(), f = `${m}-title`, p = `${m}-description`, { overlayProps: D, underlayProps: F } = R(
|
|
28
28
|
{
|
|
29
29
|
isOpen: !0,
|
|
30
|
-
onClose:
|
|
31
|
-
isDismissable:
|
|
32
|
-
isKeyboardDismissDisabled: !
|
|
30
|
+
onClose: u,
|
|
31
|
+
isDismissable: t,
|
|
32
|
+
isKeyboardDismissDisabled: !t
|
|
33
33
|
},
|
|
34
|
-
|
|
34
|
+
i
|
|
35
35
|
);
|
|
36
|
-
return B(), P(() =>
|
|
36
|
+
return B(), P(() => i.current ? C([i.current]) : void 0, []), /* @__PURE__ */ e("div", { ...F, className: b, children: /* @__PURE__ */ e(O, { contain: !0, restoreFocus: !0, autoFocus: !0, children: /* @__PURE__ */ n(
|
|
37
37
|
"div",
|
|
38
38
|
{
|
|
39
39
|
...N,
|
|
40
40
|
...D,
|
|
41
41
|
ref: g,
|
|
42
|
-
className: [
|
|
43
|
-
role:
|
|
42
|
+
className: [y, a].filter(Boolean).join(" "),
|
|
43
|
+
role: v,
|
|
44
44
|
"aria-modal": "true",
|
|
45
|
-
"aria-labelledby":
|
|
46
|
-
"aria-describedby":
|
|
45
|
+
"aria-labelledby": d ? f : void 0,
|
|
46
|
+
"aria-describedby": s ? p : void 0,
|
|
47
47
|
children: [
|
|
48
|
-
/* @__PURE__ */ n("header", { className: [r.header,
|
|
49
|
-
|
|
48
|
+
d && /* @__PURE__ */ n("header", { className: [r.header, o && r.headerDivided].filter(Boolean).join(" "), children: [
|
|
49
|
+
c && /* @__PURE__ */ e("span", { "aria-hidden": "true", className: r.icon, children: c }),
|
|
50
50
|
/* @__PURE__ */ n("div", { className: r.heading, children: [
|
|
51
|
-
/* @__PURE__ */ e("h2", { className: r.title, id:
|
|
52
|
-
|
|
51
|
+
/* @__PURE__ */ e("h2", { className: r.title, id: f, children: d }),
|
|
52
|
+
s && /* @__PURE__ */ e("p", { className: r.description, id: p, children: s })
|
|
53
53
|
] }),
|
|
54
|
-
|
|
54
|
+
t && /* @__PURE__ */ e("button", { className: r.close, type: "button", "aria-label": "Fechar", onClick: u, children: /* @__PURE__ */ e($, { size: 20 }) })
|
|
55
55
|
] }),
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
o && /* @__PURE__ */ e("div", { className: r.body, children: o }),
|
|
57
|
+
l && /* @__PURE__ */ e("div", { className: r.footer, children: l })
|
|
58
58
|
]
|
|
59
59
|
}
|
|
60
60
|
) }) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogFrame.js","sources":["../../../../src/components/overlays/Dialog/DialogFrame.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { IconClose } from '../../icons';\nimport type {
|
|
1
|
+
{"version":3,"file":"DialogFrame.js","sources":["../../../../src/components/overlays/Dialog/DialogFrame.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { FocusScope } from '@react-aria/focus';\nimport { ariaHideOutside, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { useMergedRefs } from '../../../hooks/useMergedRefs';\nimport { IconClose } from '../../icons';\nimport type { DialogBaseProps, DialogRole } from './Dialog';\nimport styles from './Dialog.module.css';\n\nexport interface DialogFrameProps extends DialogBaseProps {\n 'aria-label'?: string;\n description?: string;\n icon?: ReactNode;\n role?: DialogRole;\n surfaceClassName: string;\n title?: string;\n underlayClassName: string;\n}\n\n/** Mecanica modal do `Dialog` e do `Drawer`: portal, foco preso, rolagem travada, cabecalho, corpo e rodape. Interna. */\nexport function DialogFrame({ open, ...props }: DialogFrameProps) {\n // No servidor nao ha `document` para o portal; o modal nasce na hidratacao.\n if (!open || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(<DialogFrameContent {...props} />, document.body);\n}\n\nfunction DialogFrameContent({\n children,\n className,\n description,\n dismissable = true,\n footer,\n icon,\n onClose,\n ref: refDoConsumidor,\n role = 'dialog',\n surfaceClassName,\n title,\n underlayClassName,\n ...props\n}: Omit<DialogFrameProps, 'open'>) {\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergedRefs(ref, refDoConsumidor);\n const generatedId = useId();\n const titleId = `${generatedId}-title`;\n const descriptionId = `${generatedId}-description`;\n\n const { overlayProps, underlayProps } = useOverlay(\n {\n isOpen: true,\n onClose,\n isDismissable: dismissable,\n isKeyboardDismissDisabled: !dismissable,\n },\n ref,\n );\n\n usePreventScroll();\n\n useEffect(() => (ref.current ? ariaHideOutside([ref.current]) : undefined), []);\n\n return (\n <div {...underlayProps} className={underlayClassName}>\n <FocusScope contain restoreFocus autoFocus>\n <div\n {...props}\n {...overlayProps}\n ref={mergedRef}\n className={[surfaceClassName, className].filter(Boolean).join(' ')}\n role={role}\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={description ? descriptionId : undefined}\n >\n {title && (\n <header className={[styles.header, children && styles.headerDivided].filter(Boolean).join(' ')}>\n {icon && (\n <span aria-hidden=\"true\" className={styles.icon}>\n {icon}\n </span>\n )}\n <div className={styles.heading}>\n <h2 className={styles.title} id={titleId}>{title}</h2>\n {description && <p className={styles.description} id={descriptionId}>{description}</p>}\n </div>\n {dismissable && (\n <button className={styles.close} type=\"button\" aria-label=\"Fechar\" onClick={onClose}>\n <IconClose size={20} />\n </button>\n )}\n </header>\n )}\n {children && <div className={styles.body}>{children}</div>}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n </FocusScope>\n </div>\n );\n}\n"],"names":["DialogFrame","open","props","createPortal","jsx","DialogFrameContent","children","className","description","dismissable","footer","icon","onClose","refDoConsumidor","role","surfaceClassName","title","underlayClassName","ref","useRef","mergedRef","useMergedRefs","generatedId","useId","titleId","descriptionId","overlayProps","underlayProps","useOverlay","usePreventScroll","useEffect","ariaHideOutside","FocusScope","jsxs","styles","IconClose"],"mappings":";;;;;;;;AAoBO,SAASA,EAAY,EAAE,MAAAC,GAAM,GAAGC,KAA2B;AAEhE,SAAI,CAACD,KAAQ,OAAO,WAAa,MACxB,OAGFE,EAAa,gBAAAC,EAACC,GAAA,EAAoB,GAAGH,GAAO,GAAI,SAAS,IAAI;AACtE;AAEA,SAASG,EAAmB;AAAA,EAC1B,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,KAAKC;AAAA,EACL,MAAAC,IAAO;AAAA,EACP,kBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,GAAGf;AACL,GAAmC;AACjC,QAAMgB,IAAMC,EAAuB,IAAI,GACjCC,IAAYC,EAAcH,GAAKL,CAAe,GAC9CS,IAAcC,EAAA,GACdC,IAAU,GAAGF,CAAW,UACxBG,IAAgB,GAAGH,CAAW,gBAE9B,EAAE,cAAAI,GAAc,eAAAC,EAAA,IAAkBC;AAAA,IACtC;AAAA,MACE,QAAQ;AAAA,MACR,SAAAhB;AAAA,MACA,eAAeH;AAAA,MACf,2BAA2B,CAACA;AAAA,IAAA;AAAA,IAE9BS;AAAA,EAAA;AAGF,SAAAW,EAAA,GAEAC,EAAU,MAAOZ,EAAI,UAAUa,EAAgB,CAACb,EAAI,OAAO,CAAC,IAAI,QAAY,EAAE,GAG5E,gBAAAd,EAAC,OAAA,EAAK,GAAGuB,GAAe,WAAWV,GACjC,UAAA,gBAAAb,EAAC4B,GAAA,EAAW,SAAO,IAAC,cAAY,IAAC,WAAS,IACxC,UAAA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG/B;AAAA,MACH,GAAGwB;AAAA,MACJ,KAAKN;AAAA,MACL,WAAW,CAACL,GAAkBR,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MACjE,MAAAO;AAAA,MACA,cAAW;AAAA,MACX,mBAAiBE,IAAQQ,IAAU;AAAA,MACnC,oBAAkBhB,IAAciB,IAAgB;AAAA,MAE/C,UAAA;AAAA,QAAAT,KACC,gBAAAiB,EAAC,UAAA,EAAO,WAAW,CAACC,EAAO,QAAQ5B,KAAY4B,EAAO,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC1F,UAAA;AAAA,UAAAvB,uBACE,QAAA,EAAK,eAAY,QAAO,WAAWuB,EAAO,MACxC,UAAAvB,EAAA,CACH;AAAA,UAEF,gBAAAsB,EAAC,OAAA,EAAI,WAAWC,EAAO,SACrB,UAAA;AAAA,YAAA,gBAAA9B,EAAC,QAAG,WAAW8B,EAAO,OAAO,IAAIV,GAAU,UAAAR,GAAM;AAAA,YAChDR,uBAAgB,KAAA,EAAE,WAAW0B,EAAO,aAAa,IAAIT,GAAgB,UAAAjB,EAAA,CAAY;AAAA,UAAA,GACpF;AAAA,UACCC,KACC,gBAAAL,EAAC,UAAA,EAAO,WAAW8B,EAAO,OAAO,MAAK,UAAS,cAAW,UAAS,SAAStB,GAC1E,UAAA,gBAAAR,EAAC+B,GAAA,EAAU,MAAM,IAAI,EAAA,CACvB;AAAA,QAAA,GAEJ;AAAA,QAED7B,KAAY,gBAAAF,EAAC,OAAA,EAAI,WAAW8B,EAAO,MAAO,UAAA5B,GAAS;AAAA,QACnDI,KAAU,gBAAAN,EAAC,OAAA,EAAI,WAAW8B,EAAO,QAAS,UAAAxB,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEtD,EAAA,CACF;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.cjs","sources":["../../../../src/components/overlays/Drawer/Drawer.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"Drawer.cjs","sources":["../../../../src/components/overlays/Drawer/Drawer.tsx"],"sourcesContent":["import type { DialogBaseProps, DialogTitledProps } from '../Dialog/Dialog';\nimport { DialogFrame } from '../Dialog/DialogFrame';\nimport styles from './Drawer.module.css';\n\nexport type DrawerSide = 'left' | 'right';\nexport type DrawerSize = 'sm' | 'md' | 'lg';\n\nexport interface DrawerProps extends DialogBaseProps, Omit<DialogTitledProps, 'icon'> {\n side?: DrawerSide;\n size?: DrawerSize;\n}\n\n/** Painel modal preso a lateral da tela, com a mesma mecanica do `Dialog`: foco preso, Esc fecha, a pagina nao rola. */\nexport function Drawer({ side = 'right', size = 'md', ...props }: DrawerProps) {\n return (\n <DialogFrame\n {...props}\n surfaceClassName={[styles.drawer, styles[size]].join(' ')}\n underlayClassName={[styles.underlay, styles[side]].join(' ')}\n />\n );\n}\n"],"names":["Drawer","side","size","props","jsx","DialogFrame","styles"],"mappings":"iMAaO,SAASA,EAAO,CAAE,KAAAC,EAAO,QAAS,KAAAC,EAAO,KAAM,GAAGC,GAAsB,CAC7E,OACEC,EAAAA,IAACC,EAAAA,YAAA,CACE,GAAGF,EACJ,iBAAkB,CAACG,EAAAA,QAAO,OAAQA,EAAAA,QAAOJ,CAAI,CAAC,EAAE,KAAK,GAAG,EACxD,kBAAmB,CAACI,EAAAA,QAAO,SAAUA,EAAAA,QAAOL,CAAI,CAAC,EAAE,KAAK,GAAG,CAAA,CAAA,CAGjE"}
|