@metropolle/design-system 1.0.0-beta.2 → 1.0.0-beta.2025.10.2.18.1677567

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 (52) hide show
  1. package/README.md +1 -0
  2. package/dist/css/compat/back.css +466 -0
  3. package/dist/css/components.css +1182 -2
  4. package/dist/css/mermaid.css +163 -0
  5. package/dist/css/tokens.css +53 -0
  6. package/dist/react/components/react/DataTable/DataTable.d.ts +4 -0
  7. package/dist/react/components/react/DataTable/DataTable.d.ts.map +1 -0
  8. package/dist/react/components/react/DataTable/TableHeader.d.ts +4 -0
  9. package/dist/react/components/react/DataTable/TableHeader.d.ts.map +1 -0
  10. package/dist/react/components/react/DataTable/TableRow.d.ts +4 -0
  11. package/dist/react/components/react/DataTable/TableRow.d.ts.map +1 -0
  12. package/dist/react/components/react/DataTable/examples.d.ts +28 -0
  13. package/dist/react/components/react/DataTable/examples.d.ts.map +1 -0
  14. package/dist/react/components/react/DataTable/index.d.ts +7 -0
  15. package/dist/react/components/react/DataTable/index.d.ts.map +1 -0
  16. package/dist/react/components/react/DataTable/migration-example.d.ts +46 -0
  17. package/dist/react/components/react/DataTable/migration-example.d.ts.map +1 -0
  18. package/dist/react/components/react/DataTable/renderers.d.ts +24 -0
  19. package/dist/react/components/react/DataTable/renderers.d.ts.map +1 -0
  20. package/dist/react/components/react/DataTable/types.d.ts +57 -0
  21. package/dist/react/components/react/DataTable/types.d.ts.map +1 -0
  22. package/dist/react/components/react/Modal/ConfirmDialog.d.ts +17 -0
  23. package/dist/react/components/react/Modal/ConfirmDialog.d.ts.map +1 -0
  24. package/dist/react/components/react/Modal/Modal.d.ts +12 -0
  25. package/dist/react/components/react/Modal/Modal.d.ts.map +1 -0
  26. package/dist/react/components/react/Modal/ModalBody.d.ts +9 -0
  27. package/dist/react/components/react/Modal/ModalBody.d.ts.map +1 -0
  28. package/dist/react/components/react/Modal/ModalFooter.d.ts +8 -0
  29. package/dist/react/components/react/Modal/ModalFooter.d.ts.map +1 -0
  30. package/dist/react/components/react/Modal/ModalHeader.d.ts +11 -0
  31. package/dist/react/components/react/Modal/ModalHeader.d.ts.map +1 -0
  32. package/dist/react/components/react/Modal/index.d.ts +6 -0
  33. package/dist/react/components/react/Modal/index.d.ts.map +1 -0
  34. package/dist/react/components/react/Select/Select.d.ts +20 -0
  35. package/dist/react/components/react/Select/Select.d.ts.map +1 -0
  36. package/dist/react/components/react/Select/index.d.ts +2 -0
  37. package/dist/react/components/react/Select/index.d.ts.map +1 -0
  38. package/dist/react/components/react/ThemeToggle/ThemeToggle.d.ts +28 -0
  39. package/dist/react/components/react/ThemeToggle/ThemeToggle.d.ts.map +1 -0
  40. package/dist/react/components/react/ThemeToggle/index.d.ts +3 -0
  41. package/dist/react/components/react/ThemeToggle/index.d.ts.map +1 -0
  42. package/dist/react/components/react/Typography/Typography.d.ts.map +1 -1
  43. package/dist/react/components/react/index.d.ts +11 -0
  44. package/dist/react/components/react/index.d.ts.map +1 -1
  45. package/dist/react/index.d.ts +11 -0
  46. package/dist/react/index.esm.js +827 -4
  47. package/dist/react/index.esm.js.map +1 -1
  48. package/dist/react/index.js +844 -2
  49. package/dist/react/index.js.map +1 -1
  50. package/dist/tokens/index.d.ts +19 -24
  51. package/dist/tokens/index.js +55 -2
  52. package/package.json +21 -13
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var require$$0 = require('react');
4
+ var reactDom = require('react-dom');
4
5
 
5
6
  var jsxRuntime = {exports: {}};
6
7
 
@@ -1460,13 +1461,14 @@ const Typography = require$$0.forwardRef(({ variant = 'body', size, as, children
1460
1461
  return (jsxRuntimeExports.jsx(Component, { ref: ref, className: cn('mds-text', `mds-text--${variant}`, `mds-text--size-${finalSize}`, `mds-text--color-${color}`, `mds-text--weight-${weight}`, className), ...props, children: children }));
1461
1462
  });
1462
1463
  Typography.displayName = 'Typography';
1463
- const BrandLogo = require$$0.forwardRef(({ size = 'md', className, children = 'Metropolle', ...props }, ref) => {
1464
+ const BrandLogo = require$$0.forwardRef(({ size = 'md', weight = 'bold', // Peso bold por padrão para a marca
1465
+ className, children = 'Metropolle', ...props }, ref) => {
1464
1466
  const sizeMap = {
1465
1467
  sm: '2xl',
1466
1468
  md: '4xl',
1467
1469
  lg: '4xl', // Same as md but with different mobile behavior
1468
1470
  };
1469
- return (jsxRuntimeExports.jsx(Typography, { ref: ref, variant: "brand", size: sizeMap[size], className: cn('mds-brand-logo', `mds-brand-logo--${size}`, className), ...props, children: children }));
1471
+ return (jsxRuntimeExports.jsx(Typography, { ref: ref, variant: "brand", size: sizeMap[size], weight: weight, className: cn('mds-brand-logo', `mds-brand-logo--${size}`, className), ...props, children: children }));
1470
1472
  });
1471
1473
  BrandLogo.displayName = 'BrandLogo';
1472
1474
 
@@ -1490,9 +1492,849 @@ Button.displayName = 'Button';
1490
1492
  */
1491
1493
  const LoadingSpinner = () => (jsxRuntimeExports.jsxs("svg", { className: "mds-spinner", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", children: [jsxRuntimeExports.jsx("circle", { className: "mds-spinner__track", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2", fill: "none", opacity: "0.25" }), jsxRuntimeExports.jsx("circle", { className: "mds-spinner__path", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2", fill: "none", strokeDasharray: "40 20", strokeLinecap: "round" })] }));
1492
1494
 
1495
+ /**
1496
+ * Select Component (Design System)
1497
+ *
1498
+ * Provides a themed select element with multiple variants:
1499
+ * - `base`: Standard form select with mds-input styling
1500
+ * - `themed`: Generic themed select with dashboard control styling (recommended)
1501
+ * - `dashboard`: Legacy alias for themed variant (backward compatibility)
1502
+ */
1503
+ const Select = require$$0.forwardRef(({ options, children, className, containerClassName, variant = 'themed', ...rest }, ref) => {
1504
+ const isThemed = variant === 'themed' || variant === 'dashboard';
1505
+ const selectEl = (jsxRuntimeExports.jsx("select", { ref: ref, className: cn(isThemed
1506
+ ? 'mds-select-themed'
1507
+ : 'mds-input mds-select', className), ...rest, children: options
1508
+ ? options.map(opt => (jsxRuntimeExports.jsx("option", { value: opt.value, children: opt.label }, opt.value)))
1509
+ : children }));
1510
+ if (isThemed) {
1511
+ return (jsxRuntimeExports.jsx("div", { className: cn('mds-dropdown', containerClassName), children: selectEl }));
1512
+ }
1513
+ return selectEl;
1514
+ });
1515
+ Select.displayName = 'Select';
1516
+
1517
+ function ThemeToggle({ size = 'md', className = '', disabled = false, onChange, storageKey = 'theme' }) {
1518
+ const [theme, setTheme] = require$$0.useState('dark');
1519
+ const [mounted, setMounted] = require$$0.useState(false);
1520
+ // Initialize theme on mount
1521
+ require$$0.useEffect(() => {
1522
+ try {
1523
+ if (typeof window !== 'undefined') {
1524
+ const savedTheme = localStorage.getItem(storageKey) || 'dark';
1525
+ setTheme(savedTheme);
1526
+ document.documentElement.setAttribute('data-theme', savedTheme);
1527
+ setMounted(true);
1528
+ }
1529
+ }
1530
+ catch (err) {
1531
+ setTheme('dark');
1532
+ setMounted(true);
1533
+ }
1534
+ }, [storageKey]);
1535
+ // Listen to external theme changes
1536
+ require$$0.useEffect(() => {
1537
+ if (typeof window !== 'undefined') {
1538
+ const updateTheme = () => {
1539
+ const currentTheme = document.documentElement.getAttribute('data-theme') || 'dark';
1540
+ setTheme(currentTheme);
1541
+ };
1542
+ const observer = new MutationObserver(() => {
1543
+ updateTheme();
1544
+ });
1545
+ observer.observe(document.documentElement, {
1546
+ attributes: true,
1547
+ attributeFilter: ['data-theme']
1548
+ });
1549
+ return () => observer.disconnect();
1550
+ }
1551
+ }, []);
1552
+ const toggleTheme = () => {
1553
+ if (disabled)
1554
+ return;
1555
+ try {
1556
+ const newTheme = theme === 'light' ? 'dark' : 'light';
1557
+ document.documentElement.setAttribute('data-theme', newTheme);
1558
+ localStorage.setItem(storageKey, newTheme);
1559
+ setTheme(newTheme);
1560
+ onChange?.(newTheme);
1561
+ }
1562
+ catch (err) {
1563
+ console.warn('Failed to toggle theme:', err);
1564
+ }
1565
+ };
1566
+ // Don't render until mounted (prevents hydration mismatch)
1567
+ if (!mounted) {
1568
+ return (jsxRuntimeExports.jsx("div", { className: `mds-theme-toggle mds-theme-toggle--${size} ${className}`, style: { opacity: 0.5 }, "aria-hidden": "true" }));
1569
+ }
1570
+ const isDark = theme === 'dark';
1571
+ const buttonStyle = isDark
1572
+ ? {
1573
+ backgroundColor: 'rgba(0, 0, 0, 0.35)',
1574
+ border: '1px solid rgba(255, 255, 255, 0.18)',
1575
+ boxShadow: '0 2px 8px rgba(0, 0, 0, 0.3)'
1576
+ }
1577
+ : undefined;
1578
+ const buttonClasses = [
1579
+ 'mds-theme-toggle',
1580
+ `mds-theme-toggle--${size}`,
1581
+ className
1582
+ ].filter(Boolean).join(' ');
1583
+ return (jsxRuntimeExports.jsx("button", { onClick: toggleTheme, className: buttonClasses, disabled: disabled, type: "button", "aria-pressed": isDark, "aria-label": `Switch to ${isDark ? 'light' : 'dark'} mode`, title: `Switch to ${isDark ? 'light' : 'dark'} mode`, "data-theme": isDark ? 'dark' : 'light', style: buttonStyle }));
1584
+ }
1585
+
1586
+ const TableHeader = ({ columns, gridTemplate, onSort, sortColumn, sortDirection }) => {
1587
+ return (jsxRuntimeExports.jsx("div", { role: "rowgroup", style: {
1588
+ display: 'grid',
1589
+ gridTemplateColumns: gridTemplate,
1590
+ gap: '16px',
1591
+ padding: '16px 20px',
1592
+ borderBottom: '1px solid var(--border-color)',
1593
+ backgroundColor: 'rgba(255, 255, 255, 0.05)'
1594
+ }, children: columns.map((column) => (jsxRuntimeExports.jsxs("div", { role: "columnheader", style: {
1595
+ color: 'var(--text-primary)',
1596
+ fontWeight: '500',
1597
+ fontSize: '14px',
1598
+ display: 'flex',
1599
+ alignItems: 'center',
1600
+ justifyContent: column.align === 'center' ? 'center' :
1601
+ column.align === 'right' ? 'flex-end' : 'flex-start',
1602
+ cursor: column.sortable && onSort ? 'pointer' : 'default',
1603
+ gap: '4px',
1604
+ transition: 'color 0.2s ease'
1605
+ }, onClick: () => column.sortable && onSort && onSort(column.key), onMouseEnter: (e) => {
1606
+ if (column.sortable && onSort) {
1607
+ e.currentTarget.style.color = '#ffffff';
1608
+ }
1609
+ }, onMouseLeave: (e) => {
1610
+ e.currentTarget.style.color = 'var(--text-primary)';
1611
+ }, children: [column.label, column.sortable && onSort && (jsxRuntimeExports.jsx("span", { style: {
1612
+ fontSize: '12px',
1613
+ opacity: sortColumn === column.key ? 1 : 0.5
1614
+ }, children: sortColumn === column.key ?
1615
+ (sortDirection === 'asc' ? '↑' : '↓') : '↕' }))] }, column.key))) }));
1616
+ };
1617
+
1618
+ const TableRow = ({ item, index, columns, actions = [], gridTemplate, isLast, variant, onActionClick }) => {
1619
+ return (jsxRuntimeExports.jsxs("div", { role: "row", style: {
1620
+ display: 'grid',
1621
+ gridTemplateColumns: gridTemplate,
1622
+ gap: '16px',
1623
+ padding: variant === 'compact' ? '12px 20px' : '16px 20px',
1624
+ borderBottom: isLast ? 'none' : '1px solid var(--border-color)',
1625
+ backgroundColor: 'transparent',
1626
+ transition: 'background-color 0.2s ease'
1627
+ }, onMouseEnter: (e) => {
1628
+ e.currentTarget.style.backgroundColor = 'rgba(255, 255, 255, 0.05)';
1629
+ }, onMouseLeave: (e) => {
1630
+ e.currentTarget.style.backgroundColor = 'transparent';
1631
+ }, children: [columns.map((column) => (jsxRuntimeExports.jsx("div", { role: "cell", style: {
1632
+ display: 'flex',
1633
+ flexDirection: 'column',
1634
+ gap: '4px',
1635
+ justifyContent: 'center',
1636
+ alignItems: column.align === 'center' ? 'center' :
1637
+ column.align === 'right' ? 'flex-end' : 'flex-start'
1638
+ }, children: column.render ?
1639
+ column.render(item[column.key], item, index) :
1640
+ jsxRuntimeExports.jsx("div", { style: {
1641
+ color: 'var(--text-primary)',
1642
+ fontSize: '14px'
1643
+ }, children: item[column.key] }) }, column.key))), actions.length > 0 && (jsxRuntimeExports.jsx("div", { role: "cell", style: {
1644
+ display: 'flex',
1645
+ gap: '8px',
1646
+ justifyContent: 'center',
1647
+ alignItems: 'center'
1648
+ }, children: actions.map((action) => {
1649
+ const isDisabled = action.disabled?.(item) || false;
1650
+ const isLoading = action.loading?.(item) || false;
1651
+ return (jsxRuntimeExports.jsxs("button", { onClick: () => !isDisabled && !isLoading && onActionClick(action, item), disabled: isDisabled || isLoading, style: {
1652
+ background: 'none',
1653
+ border: action.variant === 'danger' ? '1px solid rgba(239, 68, 68, 0.3)' :
1654
+ '1px solid var(--border-color)',
1655
+ borderRadius: '6px',
1656
+ padding: '6px 12px',
1657
+ color: action.variant === 'danger' ? '#f87171' : 'var(--text-primary)',
1658
+ fontSize: '12px',
1659
+ cursor: isDisabled || isLoading ? 'not-allowed' : 'pointer',
1660
+ display: 'flex',
1661
+ alignItems: 'center',
1662
+ gap: '4px',
1663
+ transition: 'all 0.2s ease',
1664
+ opacity: isDisabled || isLoading ? 0.5 : 1,
1665
+ whiteSpace: 'nowrap'
1666
+ }, onMouseEnter: (e) => {
1667
+ if (!isDisabled && !isLoading) {
1668
+ if (action.variant === 'danger') {
1669
+ e.currentTarget.style.backgroundColor = 'rgba(239, 68, 68, 0.1)';
1670
+ e.currentTarget.style.borderColor = 'rgba(239, 68, 68, 0.5)';
1671
+ }
1672
+ else {
1673
+ e.currentTarget.style.backgroundColor = 'rgba(255, 255, 255, 0.1)';
1674
+ e.currentTarget.style.borderColor = 'var(--text-primary)';
1675
+ }
1676
+ }
1677
+ }, onMouseLeave: (e) => {
1678
+ if (!isDisabled && !isLoading) {
1679
+ e.currentTarget.style.backgroundColor = 'transparent';
1680
+ e.currentTarget.style.borderColor = action.variant === 'danger' ?
1681
+ 'rgba(239, 68, 68, 0.3)' : 'var(--border-color)';
1682
+ }
1683
+ }, children: [action.icon && action.icon, action.label] }, action.key));
1684
+ }) }))] }));
1685
+ };
1686
+
1687
+ const DataTable = ({ data, columns, loading = false, searchTerm = '', actions = [], variant = 'default', responsive = 'stack', onSort, emptyMessage = 'Nenhum item encontrado', loadingMessage = 'Carregando...', className, style, maxHeight = '600px', showSearchCount = true, rowHover = true, striped = false }) => {
1688
+ const [sortColumn, setSortColumn] = require$$0.useState('');
1689
+ const [sortDirection, setSortDirection] = require$$0.useState('asc');
1690
+ // Filter data based on search term
1691
+ const filteredData = require$$0.useMemo(() => {
1692
+ if (!searchTerm)
1693
+ return data;
1694
+ return data.filter(item => {
1695
+ return columns.some(column => {
1696
+ const value = item[column.key];
1697
+ if (value === null || value === undefined)
1698
+ return false;
1699
+ return String(value).toLowerCase().includes(searchTerm.toLowerCase());
1700
+ });
1701
+ });
1702
+ }, [data, searchTerm, columns]);
1703
+ // Generate grid template based on columns and actions
1704
+ const gridTemplate = require$$0.useMemo(() => {
1705
+ const columnWidths = columns.map(col => col.width || '1fr').join(' ');
1706
+ const actionsWidth = actions.length > 0 ? ' 120px' : '';
1707
+ return columnWidths + actionsWidth;
1708
+ }, [columns, actions]);
1709
+ // Handle sort
1710
+ const handleSort = (columnKey) => {
1711
+ let direction = 'asc';
1712
+ if (sortColumn === columnKey && sortDirection === 'asc') {
1713
+ direction = 'desc';
1714
+ }
1715
+ setSortColumn(columnKey);
1716
+ setSortDirection(direction);
1717
+ if (onSort) {
1718
+ onSort(columnKey, direction);
1719
+ }
1720
+ };
1721
+ // Handle action click
1722
+ const handleActionClick = (action, item) => {
1723
+ action.onClick(item);
1724
+ };
1725
+ // Loading state
1726
+ if (loading) {
1727
+ return (jsxRuntimeExports.jsx("div", { className: className, style: {
1728
+ position: 'relative',
1729
+ borderRadius: '24px',
1730
+ backdropFilter: 'blur(24px)',
1731
+ backgroundColor: 'rgba(255, 255, 255, 0.1)',
1732
+ border: '1px solid rgba(255, 255, 255, 0.3)',
1733
+ boxShadow: '0 12px 40px rgba(0, 0, 0, 0.15)',
1734
+ padding: '32px',
1735
+ ...style
1736
+ }, children: jsxRuntimeExports.jsxs("div", { style: {
1737
+ display: 'flex',
1738
+ alignItems: 'center',
1739
+ justifyContent: 'center',
1740
+ gap: '12px'
1741
+ }, children: [jsxRuntimeExports.jsx("div", { style: {
1742
+ width: '32px',
1743
+ height: '32px',
1744
+ border: '2px solid transparent',
1745
+ borderTop: '2px solid white',
1746
+ borderRadius: '50%',
1747
+ animation: 'spin 1s linear infinite'
1748
+ } }), jsxRuntimeExports.jsx("span", { style: { color: 'var(--text-primary)' }, children: loadingMessage })] }) }));
1749
+ }
1750
+ // Empty state
1751
+ if (filteredData.length === 0) {
1752
+ return (jsxRuntimeExports.jsx("div", { className: className, style: {
1753
+ position: 'relative',
1754
+ borderRadius: '24px',
1755
+ backdropFilter: 'blur(24px)',
1756
+ backgroundColor: 'rgba(255, 255, 255, 0.1)',
1757
+ border: '1px solid rgba(255, 255, 255, 0.3)',
1758
+ boxShadow: '0 12px 40px rgba(0, 0, 0, 0.15)',
1759
+ padding: '40px',
1760
+ textAlign: 'center',
1761
+ ...style
1762
+ }, children: jsxRuntimeExports.jsx("div", { style: {
1763
+ color: 'var(--text-secondary)',
1764
+ fontSize: '16px'
1765
+ }, children: emptyMessage }) }));
1766
+ }
1767
+ return (jsxRuntimeExports.jsxs("div", { className: className, style: {
1768
+ position: 'relative',
1769
+ borderRadius: '24px',
1770
+ backdropFilter: 'blur(24px)',
1771
+ backgroundColor: 'rgba(255, 255, 255, 0.1)',
1772
+ border: '1px solid rgba(255, 255, 255, 0.3)',
1773
+ boxShadow: '0 12px 40px rgba(0, 0, 0, 0.15)',
1774
+ overflow: 'hidden',
1775
+ ...style
1776
+ }, role: "table", "aria-label": "Tabela de dados", children: [showSearchCount && searchTerm && (jsxRuntimeExports.jsxs("div", { style: {
1777
+ padding: '16px',
1778
+ color: 'var(--text-secondary)',
1779
+ fontSize: '14px',
1780
+ borderBottom: '1px solid var(--border-color)'
1781
+ }, children: ["Mostrando", ' ', jsxRuntimeExports.jsx("span", { style: { fontWeight: '500', color: 'var(--text-primary)' }, children: filteredData.length }), ' ', "de", ' ', jsxRuntimeExports.jsx("span", { style: { fontWeight: '500', color: 'var(--text-primary)' }, children: data.length }), ' ', "itens"] })), jsxRuntimeExports.jsx(TableHeader, { columns: columns, gridTemplate: gridTemplate, onSort: onSort ? handleSort : undefined, sortColumn: sortColumn, sortDirection: sortDirection }), jsxRuntimeExports.jsx("div", { role: "rowgroup", style: {
1782
+ maxHeight,
1783
+ overflowY: 'auto'
1784
+ }, children: filteredData.map((item, index) => (jsxRuntimeExports.jsx(TableRow, { item: item, index: index, columns: columns, actions: actions, gridTemplate: gridTemplate, isLast: index === filteredData.length - 1, variant: variant, onActionClick: handleActionClick }, item.id || index))) })] }));
1785
+ };
1786
+
1787
+ const CellRenderers = {
1788
+ // ID cell - monospace background
1789
+ id: (value) => (jsxRuntimeExports.jsx("div", { className: "data-table-code", style: {
1790
+ color: 'var(--text-secondary)',
1791
+ fontSize: '12px',
1792
+ backgroundColor: 'rgba(255, 255, 255, 0.05)',
1793
+ padding: '2px 8px',
1794
+ borderRadius: '4px',
1795
+ textAlign: 'center',
1796
+ fontFamily: 'monospace'
1797
+ }, children: value })),
1798
+ // Name cell - primary text with background
1799
+ name: (value) => (jsxRuntimeExports.jsx("div", { className: "data-table-code", style: {
1800
+ color: 'var(--text-primary)',
1801
+ fontSize: '14px',
1802
+ backgroundColor: 'rgba(255, 255, 255, 0.1)',
1803
+ padding: '4px 12px',
1804
+ borderRadius: '8px',
1805
+ fontFamily: 'monospace'
1806
+ }, children: value })),
1807
+ // Parameter value - masked if secure
1808
+ parameterValue: (value, item) => {
1809
+ const displayValue = item.type === 'SecureString' ? '••••••••' :
1810
+ (value?.length > 50 ? `${value.substring(0, 50)}...` : value);
1811
+ return (jsxRuntimeExports.jsx("div", { className: "data-table-code", style: {
1812
+ color: 'var(--text-primary)',
1813
+ fontSize: '14px',
1814
+ backgroundColor: 'rgba(255, 255, 255, 0.1)',
1815
+ borderRadius: '8px',
1816
+ maxWidth: '300px',
1817
+ wordBreak: 'break-all',
1818
+ padding: '4px 12px',
1819
+ fontFamily: 'monospace'
1820
+ }, children: displayValue }));
1821
+ },
1822
+ // Badge renderer for types/statuses
1823
+ badge: (value, variant = 'primary') => (jsxRuntimeExports.jsx("span", { className: `data-table-badge ${variant}`, children: value })),
1824
+ // Parameter type badge
1825
+ parameterType: (value) => {
1826
+ const variant = value === 'SecureString' ? 'danger' :
1827
+ value === 'StringList' ? 'success' : 'primary';
1828
+ return CellRenderers.badge(value, variant);
1829
+ },
1830
+ // Environment badge
1831
+ environment: (value, item) => {
1832
+ const env = item.name?.includes('/prod/') ? 'PROD' : 'DEV';
1833
+ const variant = env === 'PROD' ? 'info' : 'warning';
1834
+ return CellRenderers.badge(env, variant);
1835
+ },
1836
+ // Action type badge for audit logs
1837
+ actionType: (value) => {
1838
+ const variant = value === 'CREATE' ? 'success' :
1839
+ value === 'UPDATE' ? 'primary' : 'danger';
1840
+ return CellRenderers.badge(value, variant);
1841
+ },
1842
+ // Date formatter
1843
+ date: (value) => (jsxRuntimeExports.jsx("div", { style: {
1844
+ color: 'var(--text-primary)',
1845
+ fontSize: '14px'
1846
+ }, children: value ? new Date(value).toLocaleString('pt-BR') : '-' })),
1847
+ // Description/secondary text
1848
+ description: (value) => (jsxRuntimeExports.jsx("div", { style: {
1849
+ color: 'var(--text-secondary)',
1850
+ fontSize: '12px',
1851
+ maxWidth: '300px',
1852
+ overflow: 'hidden',
1853
+ textOverflow: 'ellipsis',
1854
+ whiteSpace: 'nowrap'
1855
+ }, children: value })),
1856
+ // JSON preview for audit changes
1857
+ jsonPreview: (value) => {
1858
+ const jsonString = JSON.stringify(value);
1859
+ const preview = jsonString.length > 30 ? jsonString.substring(0, 30) + '...' : jsonString;
1860
+ return (jsxRuntimeExports.jsx("div", { style: {
1861
+ color: 'var(--text-secondary)',
1862
+ fontSize: '12px',
1863
+ fontFamily: 'monospace',
1864
+ maxWidth: '150px',
1865
+ overflow: 'hidden',
1866
+ textOverflow: 'ellipsis',
1867
+ whiteSpace: 'nowrap'
1868
+ }, children: preview }));
1869
+ },
1870
+ // Combined cell with main value and description
1871
+ combined: (mainValue, description) => (jsxRuntimeExports.jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px' }, children: [CellRenderers.name(mainValue), description && CellRenderers.description(description)] })),
1872
+ // Combined with badges
1873
+ combinedWithBadges: (mainValue, badges) => (jsxRuntimeExports.jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px' }, children: [CellRenderers.name(mainValue), jsxRuntimeExports.jsx("div", { style: { display: 'flex', gap: '8px', flexWrap: 'wrap' }, children: badges.map((badge, index) => (jsxRuntimeExports.jsx("span", { className: `data-table-badge ${badge.variant || 'primary'}`, children: badge.value }, index))) })] }))
1874
+ };
1875
+ // Common action icons
1876
+ const ActionIcons = {
1877
+ edit: (jsxRuntimeExports.jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntimeExports.jsx("path", { d: "M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z" }) })),
1878
+ delete: (jsxRuntimeExports.jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntimeExports.jsx("path", { d: "M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z" }) })),
1879
+ view: (jsxRuntimeExports.jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntimeExports.jsx("path", { d: "M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z" }) })),
1880
+ loading: (jsxRuntimeExports.jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", className: "data-table-spinner", children: jsxRuntimeExports.jsx("path", { d: "M12,4V2A10,10 0 0,0 2,12H4A8,8 0 0,1 12,4Z" }) }))
1881
+ };
1882
+
1883
+ // Configuração para ParametersTable (Settings)
1884
+ const parametersTableConfig = {
1885
+ columns: [
1886
+ {
1887
+ key: 'name',
1888
+ label: 'Parâmetro',
1889
+ width: '1fr',
1890
+ render: (value, item) => CellRenderers.combinedWithBadges(value, [
1891
+ { value: item.type, variant: item.type === 'SecureString' ? 'danger' :
1892
+ item.type === 'StringList' ? 'success' : 'primary' },
1893
+ { value: item.name.includes('/prod/') ? 'PROD' : 'DEV',
1894
+ variant: item.name.includes('/prod/') ? 'info' : 'warning' }
1895
+ ])
1896
+ },
1897
+ {
1898
+ key: 'value',
1899
+ label: 'Valor',
1900
+ width: '2fr',
1901
+ render: (value, item) => (jsxRuntimeExports.jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px' }, children: [CellRenderers.parameterValue(value, item), CellRenderers.description(item.description)] }))
1902
+ }
1903
+ ],
1904
+ actions: [
1905
+ {
1906
+ key: 'edit',
1907
+ label: '✏️',
1908
+ variant: 'secondary',
1909
+ onClick: (item) => console.log('Edit', item),
1910
+ disabled: (item) => false
1911
+ },
1912
+ {
1913
+ key: 'delete',
1914
+ label: '🗑️',
1915
+ variant: 'danger',
1916
+ onClick: (item) => console.log('Delete', item),
1917
+ disabled: (item) => false,
1918
+ loading: (item) => item.deleting || false
1919
+ }
1920
+ ]
1921
+ };
1922
+ // Configuração para GeographyTable - Regions
1923
+ const regionsTableConfig = {
1924
+ columns: [
1925
+ {
1926
+ key: 'region_id',
1927
+ label: 'ID',
1928
+ width: '80px',
1929
+ render: CellRenderers.id
1930
+ },
1931
+ {
1932
+ key: 'name',
1933
+ label: 'Nome',
1934
+ width: '1fr',
1935
+ render: CellRenderers.name
1936
+ },
1937
+ {
1938
+ key: 'code',
1939
+ label: 'Código',
1940
+ width: '120px',
1941
+ render: CellRenderers.name
1942
+ },
1943
+ {
1944
+ key: 'created_at',
1945
+ label: 'Criado em',
1946
+ width: '140px',
1947
+ render: CellRenderers.date
1948
+ },
1949
+ {
1950
+ key: 'created_by',
1951
+ label: 'Criado por',
1952
+ width: '140px',
1953
+ render: (value) => CellRenderers.name(value)
1954
+ }
1955
+ ],
1956
+ actions: [
1957
+ {
1958
+ key: 'edit',
1959
+ label: '✏️',
1960
+ variant: 'secondary',
1961
+ onClick: (item) => console.log('Edit region', item)
1962
+ },
1963
+ {
1964
+ key: 'delete',
1965
+ label: '🗑️',
1966
+ variant: 'danger',
1967
+ onClick: (item) => console.log('Delete region', item),
1968
+ loading: (item) => item.deleting || false
1969
+ }
1970
+ ]
1971
+ };
1972
+ // Configuração para GeographyTable - Countries
1973
+ const countriesTableConfig = {
1974
+ columns: [
1975
+ {
1976
+ key: 'country_id',
1977
+ label: 'ID',
1978
+ width: '80px',
1979
+ render: CellRenderers.id
1980
+ },
1981
+ {
1982
+ key: 'name',
1983
+ label: 'Nome',
1984
+ width: '1fr',
1985
+ render: CellRenderers.name
1986
+ },
1987
+ {
1988
+ key: 'iso2',
1989
+ label: 'Código',
1990
+ width: '120px',
1991
+ render: (value, item) => CellRenderers.combinedWithBadges(value, [
1992
+ { value: item.iso3, variant: 'primary' }
1993
+ ])
1994
+ },
1995
+ {
1996
+ key: 'capital',
1997
+ label: 'Capital',
1998
+ width: '140px',
1999
+ render: CellRenderers.name
2000
+ },
2001
+ {
2002
+ key: 'region',
2003
+ label: 'Região',
2004
+ width: '120px',
2005
+ render: (value) => CellRenderers.badge(value, 'info')
2006
+ }
2007
+ ],
2008
+ actions: [
2009
+ {
2010
+ key: 'edit',
2011
+ label: '✏️',
2012
+ variant: 'secondary',
2013
+ onClick: (item) => console.log('Edit country', item)
2014
+ },
2015
+ {
2016
+ key: 'delete',
2017
+ label: '🗑️',
2018
+ variant: 'danger',
2019
+ onClick: (item) => console.log('Delete country', item)
2020
+ }
2021
+ ]
2022
+ };
2023
+ // Configuração para Audit Log
2024
+ const auditLogTableConfig = {
2025
+ columns: [
2026
+ {
2027
+ key: 'timestamp',
2028
+ label: 'Data/Hora',
2029
+ width: '140px',
2030
+ render: CellRenderers.date
2031
+ },
2032
+ {
2033
+ key: 'user_email',
2034
+ label: 'Usuário',
2035
+ width: '180px',
2036
+ render: CellRenderers.name
2037
+ },
2038
+ {
2039
+ key: 'action',
2040
+ label: 'Ação',
2041
+ width: '100px',
2042
+ render: CellRenderers.actionType
2043
+ },
2044
+ {
2045
+ key: 'entity_type',
2046
+ label: 'Tipo',
2047
+ width: '120px',
2048
+ render: (value) => CellRenderers.badge(value, 'primary')
2049
+ },
2050
+ {
2051
+ key: 'entity_id',
2052
+ label: 'ID',
2053
+ width: '120px',
2054
+ render: CellRenderers.description
2055
+ },
2056
+ {
2057
+ key: 'changes',
2058
+ label: 'Alterações',
2059
+ width: '1fr',
2060
+ render: (value, item) => (jsxRuntimeExports.jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '8px' }, children: [CellRenderers.jsonPreview(value), jsxRuntimeExports.jsxs("button", { onClick: () => console.log('View details', item), style: {
2061
+ background: 'none',
2062
+ border: '1px solid var(--border-color)',
2063
+ borderRadius: '4px',
2064
+ padding: '4px 8px',
2065
+ color: 'var(--text-primary)',
2066
+ fontSize: '12px',
2067
+ cursor: 'pointer',
2068
+ display: 'flex',
2069
+ alignItems: 'center',
2070
+ gap: '4px',
2071
+ transition: 'all 0.2s ease',
2072
+ whiteSpace: 'nowrap'
2073
+ }, children: [ActionIcons.view, "Ver Detalhes"] })] }))
2074
+ }
2075
+ ]
2076
+ };
2077
+ // Configuração para States
2078
+ const statesTableConfig = {
2079
+ columns: [
2080
+ {
2081
+ key: 'state_id',
2082
+ label: 'ID',
2083
+ width: '80px',
2084
+ render: CellRenderers.id
2085
+ },
2086
+ {
2087
+ key: 'name',
2088
+ label: 'Nome',
2089
+ width: '1fr',
2090
+ render: CellRenderers.name
2091
+ },
2092
+ {
2093
+ key: 'code',
2094
+ label: 'Código',
2095
+ width: '120px',
2096
+ render: CellRenderers.name
2097
+ },
2098
+ {
2099
+ key: 'country_name',
2100
+ label: 'País',
2101
+ width: '140px',
2102
+ render: (value) => CellRenderers.badge(value, 'info')
2103
+ }
2104
+ ],
2105
+ actions: [
2106
+ {
2107
+ key: 'edit',
2108
+ label: '✏️',
2109
+ variant: 'secondary',
2110
+ onClick: (item) => console.log('Edit state', item)
2111
+ },
2112
+ {
2113
+ key: 'delete',
2114
+ label: '🗑️',
2115
+ variant: 'danger',
2116
+ onClick: (item) => console.log('Delete state', item)
2117
+ }
2118
+ ]
2119
+ };
2120
+ // Configuração para Cities
2121
+ const citiesTableConfig = {
2122
+ columns: [
2123
+ {
2124
+ key: 'city_id',
2125
+ label: 'ID',
2126
+ width: '80px',
2127
+ render: CellRenderers.id
2128
+ },
2129
+ {
2130
+ key: 'name',
2131
+ label: 'Nome',
2132
+ width: '1fr',
2133
+ render: CellRenderers.name
2134
+ },
2135
+ {
2136
+ key: 'population',
2137
+ label: 'População',
2138
+ width: '120px',
2139
+ render: (value) => (jsxRuntimeExports.jsx("div", { style: { color: 'var(--text-primary)', fontSize: '14px' }, children: value ? value.toLocaleString('pt-BR') : '-' }))
2140
+ },
2141
+ {
2142
+ key: 'state_name',
2143
+ label: 'Estado',
2144
+ width: '140px',
2145
+ render: (value) => CellRenderers.badge(value, 'success')
2146
+ },
2147
+ {
2148
+ key: 'country_name',
2149
+ label: 'País',
2150
+ width: '120px',
2151
+ render: (value) => CellRenderers.badge(value, 'info')
2152
+ }
2153
+ ],
2154
+ actions: [
2155
+ {
2156
+ key: 'edit',
2157
+ label: '✏️',
2158
+ variant: 'secondary',
2159
+ onClick: (item) => console.log('Edit city', item)
2160
+ },
2161
+ {
2162
+ key: 'delete',
2163
+ label: '🗑️',
2164
+ variant: 'danger',
2165
+ onClick: (item) => console.log('Delete city', item)
2166
+ }
2167
+ ]
2168
+ };
2169
+ // Função helper para aplicar configuração baseada no tipo
2170
+ const getTableConfig = (type) => {
2171
+ switch (type) {
2172
+ case 'parameters':
2173
+ return parametersTableConfig;
2174
+ case 'regions':
2175
+ return regionsTableConfig;
2176
+ case 'countries':
2177
+ return countriesTableConfig;
2178
+ case 'states':
2179
+ return statesTableConfig;
2180
+ case 'cities':
2181
+ return citiesTableConfig;
2182
+ case 'audit':
2183
+ return auditLogTableConfig;
2184
+ default:
2185
+ return parametersTableConfig;
2186
+ }
2187
+ };
2188
+
2189
+ function Modal({ open, onClose, closeOnOverlay = true, children, className, style }) {
2190
+ const [mounted, setMounted] = require$$0.useState(false);
2191
+ const [visible, setVisible] = require$$0.useState(false);
2192
+ const [renderPortal, setRenderPortal] = require$$0.useState(false);
2193
+ const containerRef = require$$0.useRef(null);
2194
+ require$$0.useEffect(() => setMounted(true), []);
2195
+ require$$0.useEffect(() => {
2196
+ if (!mounted)
2197
+ return;
2198
+ if (open) {
2199
+ setVisible(true);
2200
+ setRenderPortal(true);
2201
+ }
2202
+ else {
2203
+ setVisible(false);
2204
+ const t = setTimeout(() => setRenderPortal(false), 200);
2205
+ return () => clearTimeout(t);
2206
+ }
2207
+ }, [open, mounted]);
2208
+ require$$0.useEffect(() => {
2209
+ if (!open)
2210
+ return;
2211
+ const onKeyDown = (e) => {
2212
+ if (e.key === 'Escape')
2213
+ onClose();
2214
+ };
2215
+ document.addEventListener('keydown', onKeyDown);
2216
+ return () => document.removeEventListener('keydown', onKeyDown);
2217
+ }, [open, onClose]);
2218
+ if (!mounted || (!renderPortal && !open))
2219
+ return null;
2220
+ const overlayStyle = {
2221
+ position: 'fixed',
2222
+ inset: 0,
2223
+ backgroundColor: 'rgba(0, 0, 0, 0.7)',
2224
+ display: 'flex',
2225
+ alignItems: 'center',
2226
+ justifyContent: 'center',
2227
+ zIndex: 1000,
2228
+ padding: '16px',
2229
+ opacity: visible ? 1 : 0,
2230
+ transition: 'opacity 200ms ease'
2231
+ };
2232
+ const innerStyle = {
2233
+ maxWidth: '640px',
2234
+ width: '100%',
2235
+ transform: visible ? 'scale(1)' : 'scale(0.98)',
2236
+ opacity: visible ? 1 : 0,
2237
+ transition: 'opacity 200ms ease, transform 200ms ease',
2238
+ ...style
2239
+ };
2240
+ const content = (jsxRuntimeExports.jsx("div", { className: "modal-overlay mds-modal-overlay", style: overlayStyle, onClick: closeOnOverlay ? onClose : undefined, "aria-modal": "true", role: "dialog", children: jsxRuntimeExports.jsx("div", { className: className, style: innerStyle, onClick: (e) => e.stopPropagation(), ref: (el) => (containerRef.current = el), children: children }) }));
2241
+ return reactDom.createPortal(content, document.body);
2242
+ }
2243
+
2244
+ function ModalHeader({ title, icon, onClose, closeAriaLabel = 'Fechar', align = 'center' }) {
2245
+ const CloseIcon = (jsxRuntimeExports.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": true, children: jsxRuntimeExports.jsx("path", { d: "M18.3 5.71a1 1 0 00-1.41 0L12 10.59 7.11 5.7A1 1 0 105.7 7.11L10.59 12l-4.9 4.89a1 1 0 101.42 1.42L12 13.41l4.89 4.9a1 1 0 001.42-1.42L13.41 12l4.9-4.89a1 1 0 000-1.4z" }) }));
2246
+ if (align === 'center') {
2247
+ const iconBox = {
2248
+ position: 'absolute',
2249
+ left: 16,
2250
+ top: '50%',
2251
+ transform: 'translateY(-50%)',
2252
+ width: 32,
2253
+ height: 32,
2254
+ display: 'inline-flex',
2255
+ alignItems: 'center',
2256
+ justifyContent: 'center',
2257
+ fontSize: '1.25rem',
2258
+ lineHeight: 0
2259
+ };
2260
+ const closeBox = {
2261
+ position: 'absolute',
2262
+ right: 16,
2263
+ top: '50%',
2264
+ transform: 'translateY(-50%)',
2265
+ width: 32,
2266
+ height: 32,
2267
+ display: 'inline-flex',
2268
+ alignItems: 'center',
2269
+ justifyContent: 'center',
2270
+ background: 'transparent',
2271
+ border: 'none',
2272
+ padding: 0,
2273
+ cursor: 'pointer',
2274
+ lineHeight: 0
2275
+ };
2276
+ return (jsxRuntimeExports.jsxs("div", { className: "mds-modal-header", style: {
2277
+ position: 'relative',
2278
+ padding: '16px 24px',
2279
+ marginBottom: 16,
2280
+ borderBottom: '1px solid var(--border-color)'
2281
+ }, children: [icon && (jsxRuntimeExports.jsx("div", { "aria-hidden": true, style: iconBox, children: icon })), jsxRuntimeExports.jsx("div", { style: { textAlign: 'center' }, children: typeof title === 'string' ? (jsxRuntimeExports.jsx("h3", { style: { margin: 0 }, children: title })) : (title) }), onClose && (jsxRuntimeExports.jsx("button", { type: "button", "aria-label": closeAriaLabel, onClick: onClose, style: closeBox, children: CloseIcon }))] }));
2282
+ }
2283
+ return (jsxRuntimeExports.jsxs("div", { className: "mds-modal-header", style: {
2284
+ display: 'flex',
2285
+ alignItems: 'center',
2286
+ gap: 12,
2287
+ padding: '16px 24px',
2288
+ marginBottom: 16,
2289
+ borderBottom: '1px solid var(--border-color)'
2290
+ }, children: [icon && (jsxRuntimeExports.jsx("div", { "aria-hidden": true, style: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 32, height: 32, fontSize: '1.25rem', lineHeight: 0 }, children: icon })), jsxRuntimeExports.jsx("div", { style: { margin: 0, fontSize: '1.125rem', fontWeight: 600, flex: 1 }, children: typeof title === 'string' ? (jsxRuntimeExports.jsx("h3", { style: { margin: 0 }, children: title })) : (title) }), onClose && (jsxRuntimeExports.jsx("button", { type: "button", "aria-label": closeAriaLabel, onClick: onClose, style: { marginLeft: 'auto', background: 'transparent', border: 'none', width: 32, height: 32, display: 'inline-flex', alignItems: 'center', justifyContent: 'center', cursor: 'pointer', lineHeight: 0 }, children: CloseIcon }))] }));
2291
+ }
2292
+
2293
+ function ModalBody({ children, style, className }) {
2294
+ return (jsxRuntimeExports.jsx("div", { className: className, style: { padding: '16px 24px', ...style }, children: children }));
2295
+ }
2296
+
2297
+ function ModalFooter({ children, align = 'end' }) {
2298
+ const justify = align === 'start' ? 'flex-start' : align === 'center' ? 'center' : 'flex-end';
2299
+ return (jsxRuntimeExports.jsx("div", { style: { display: 'flex', gap: 12, justifyContent: justify, borderTop: '1px solid var(--border-color)', padding: '16px 24px', marginTop: 8 }, children: children }));
2300
+ }
2301
+
2302
+ const IconWarning = (jsxRuntimeExports.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": true, children: jsxRuntimeExports.jsx("path", { d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" }) }));
2303
+ const IconDanger = (jsxRuntimeExports.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": true, children: jsxRuntimeExports.jsx("path", { d: "M12 2a10 10 0 100 20 10 10 0 000-20zm-1 5h2v8h-2V7zm0 10h2v2h-2v-2z" }) }));
2304
+ const IconInfo = (jsxRuntimeExports.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": true, children: jsxRuntimeExports.jsx("path", { d: "M11 9h2V7h-2v2zm0 8h2v-6h-2v6zm1-15a10 10 0 100 20 10 10 0 000-20z" }) }));
2305
+ const IconSuccess = (jsxRuntimeExports.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": true, children: jsxRuntimeExports.jsx("path", { d: "M12 2a10 10 0 100 20 10 10 0 000-20zm-1 14l-4-4 1.41-1.41L11 12.17l4.59-4.58L17 9l-6 7z" }) }));
2306
+ const toneIcon = {
2307
+ warning: IconWarning,
2308
+ danger: IconDanger,
2309
+ info: IconInfo,
2310
+ success: IconSuccess
2311
+ };
2312
+ function ConfirmDialog({ open, onClose, title, description, confirmText = 'Confirmar', cancelText = 'Cancelar', onConfirm, loading = false, tone = 'warning', icon, disableOverlayClose }) {
2313
+ return (jsxRuntimeExports.jsx(Modal, { open: open, onClose: onClose, closeOnOverlay: !disableOverlayClose, children: jsxRuntimeExports.jsxs("div", { className: "mds-modal-card", style: { maxWidth: 480, width: '100%' }, children: [jsxRuntimeExports.jsx(ModalHeader, { title: title, icon: icon ?? toneIcon[tone], onClose: onClose, align: "center" }), description && (jsxRuntimeExports.jsx("div", { style: { padding: '0 24px 16px 24px' }, children: description })), jsxRuntimeExports.jsxs("div", { style: { display: 'flex', gap: 12, justifyContent: 'flex-end', borderTop: '1px solid var(--border-color)', padding: '16px 24px', marginTop: 8 }, children: [jsxRuntimeExports.jsx("button", { type: "button", onClick: onClose, className: "mds-button mds-button--secondary", children: cancelText }), jsxRuntimeExports.jsx("button", { type: "button", onClick: onConfirm, disabled: loading, className: "mds-button mds-button--primary", children: loading ? 'Processando...' : confirmText })] })] }) }));
2314
+ }
2315
+
2316
+ exports.ActionIcons = ActionIcons;
1493
2317
  exports.BrandLogo = BrandLogo;
1494
2318
  exports.Button = Button;
2319
+ exports.CellRenderers = CellRenderers;
2320
+ exports.ConfirmDialog = ConfirmDialog;
2321
+ exports.DataTable = DataTable;
1495
2322
  exports.GlassCard = GlassCard;
2323
+ exports.Modal = Modal;
2324
+ exports.ModalBody = ModalBody;
2325
+ exports.ModalFooter = ModalFooter;
2326
+ exports.ModalHeader = ModalHeader;
2327
+ exports.Select = Select;
2328
+ exports.TableHeader = TableHeader;
2329
+ exports.TableRow = TableRow;
2330
+ exports.ThemeToggle = ThemeToggle;
1496
2331
  exports.Typography = Typography;
2332
+ exports.auditLogTableConfig = auditLogTableConfig;
2333
+ exports.citiesTableConfig = citiesTableConfig;
1497
2334
  exports.cn = cn;
2335
+ exports.countriesTableConfig = countriesTableConfig;
2336
+ exports.getTableConfig = getTableConfig;
2337
+ exports.parametersTableConfig = parametersTableConfig;
2338
+ exports.regionsTableConfig = regionsTableConfig;
2339
+ exports.statesTableConfig = statesTableConfig;
1498
2340
  //# sourceMappingURL=index.js.map