@mahatisystems/mahati-ui-components 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +33 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +420 -243
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +346 -243
- package/dist/index.mjs.map +1 -1
- package/package.json +52 -25
- package/dist/index.css +0 -2
- package/dist/index.css.map +0 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Tooltip.tsx","../src/components/Button.tsx","../src/components/Card.tsx","../src/components/Dropdown.tsx","../src/components/FormContainer.tsx","../src/components/Input.tsx","../src/components/KeyValueDisplay.tsx","../src/components/Label.tsx","../src/components/Main.tsx","../src/components/Table.tsx","../src/components/TabbedInterface.tsx","../src/components/Spinner.tsx","../src/components/Section.tsx","../src/components/Row.tsx","../src/components/Paragraph.tsx","../src/components/validators.tsx"],"sourcesContent":["\"use client\";\r\nimport React, { useState } from \"react\";\r\nimport \"../styles/Tooltip.module.css\";\r\ninterface TooltipProps {\r\n text: string;\r\n position?: 'top' | 'right' | 'bottom' | 'left';\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Tooltip: React.FC<TooltipProps> = ({ text, position, children }) => {\r\n const [visible, setVisible] = useState(false);\r\n\r\n return (\r\n <div\r\n className=\"tooltipContainer\"\r\n onMouseEnter={() => setVisible(true)}\r\n onMouseLeave={() => setVisible(false)}\r\n >\r\n {children}\r\n {visible && (\r\n <div className={`tooltip ${visible ? 'tooltipVisible' : ''}`}>\r\n {text}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Tooltip;","import styled, { css } from \"styled-components\";\r\n\r\nconst variants = {\r\n primary: {\r\n color: \"#1e73be\",\r\n textColor: \"#ffffff\",\r\n },\r\n success: {\r\n color: \"#28a97d\",\r\n textColor: \"#ffffff\",\r\n },\r\n danger: {\r\n color: \"#e53e3e\",\r\n textColor: \"#ffffff\",\r\n },\r\n};\r\n\r\nexport interface ButtonProps {\r\n color?: string;\r\n textColor?: string;\r\n size?: \"small\" | \"medium\" | \"large\";\r\n isLoading?: boolean;\r\n danger?: boolean;\r\n variant?: \"primary\" | \"success\" | \"danger\";\r\n type?: \"button\" | \"submit\" | \"reset\";\r\n radius?: string | number; // 👈 new\r\n}\r\n\r\nconst Button = styled.button.attrs<ButtonProps>((props) => ({\r\n type: props.type || \"button\",\r\n}))<ButtonProps>`\r\n padding: ${(props) =>\r\n props.size === \"large\"\r\n ? \"12px 20px\"\r\n : props.size === \"small\"\r\n ? \"6px 12px\"\r\n : \"10px 16px\"};\r\n margin-top: 10px;\r\n color: ${(props) => props.textColor || \"#ffffff\"};\r\n border: none;\r\n border-radius: ${(props) =>\r\n typeof props.radius === \"number\" ? `${props.radius}px` : props.radius || \"6px\"};\r\n cursor: pointer;\r\n\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 8px; /* 👈 space between icon & text */\r\n\r\n font-weight: 600;\r\n font-size: 14px;\r\n\r\n /* --- VARIANT STYLES --- */\r\n ${({ variant, color, danger }) => {\r\n const currentVariant = danger ? \"danger\" : variant;\r\n if (color) {\r\n return css`\r\n background-color: ${color};\r\n `;\r\n }\r\n if (currentVariant && variants[currentVariant]) {\r\n return css`\r\n background-color: ${variants[currentVariant].color};\r\n color: ${variants[currentVariant].textColor};\r\n `;\r\n }\r\n return css`\r\n background-color: #55b382;\r\n `; // Default\r\n }}\r\n\r\n &:disabled {\r\n background-color: #ccc;\r\n cursor: not-allowed;\r\n }\r\n\r\n ${({ isLoading }) =>\r\n isLoading &&\r\n css`\r\n pointer-events: none;\r\n opacity: 0.8;\r\n `}\r\n`;\r\n\r\nexport default Button;\r\n","import React from \"react\";\r\nimport styled, { css } from \"styled-components\";\r\n\r\nconst CardContainer = styled.div`\r\n background: #fff;\r\n border-radius: 8px;\r\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n margin-top: 20px;\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst CardHeader = styled.div`\r\n padding: 16px 20px;\r\n border-bottom: 1px solid #e2e8f0;\r\n font-size: 1.25rem;\r\n font-weight: 600;\r\n`;\r\n\r\nconst CardBody = styled.div`\r\n padding: 20px;\r\n flex: 1; /* Allows the body to grow */\r\n`;\r\n\r\nconst CardFooter = styled.div`\r\n padding: 16px 20px;\r\n border-top: 1px solid #e2e8f0;\r\n background: #f7fafc;\r\n`;\r\n\r\ninterface CardProps {\r\n header?: React.ReactNode;\r\n footer?: React.ReactNode;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Card: React.FC<CardProps> = ({ header, footer, children }) => {\r\n return (\r\n <CardContainer>\r\n {header && <CardHeader>{header}</CardHeader>}\r\n <CardBody>{children}</CardBody>\r\n {footer && <CardFooter>{footer}</CardFooter>}\r\n </CardContainer>\r\n );\r\n};\r\n\r\nexport default Card;\r\n","'use client';\r\nimport React, { useState } from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\nconst DropdownContainer = styled.div`\r\n position: relative;\r\n display: inline-block;\r\n width: 200px;\r\n margin: 10px 0;\r\n`;\r\n\r\nconst DropdownButton = styled.button`\r\n width: 100%;\r\n padding: 10px;\r\n background-color: #007bff;\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n text-align: left;\r\n \r\n &:hover {\r\n background-color: #0056b3;\r\n }\r\n`;\r\n\r\nconst DropdownContent = styled.div<{ open: boolean }>`\r\n display: ${({ open }) => (open ? \"block\" : \"none\")};\r\n position: absolute;\r\n background-color: white;\r\n min-width: 100%;\r\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);\r\n z-index: 1;\r\n border-radius: 4px;\r\n`;\r\n\r\nconst DropdownItem = styled.div`\r\n padding: 10px;\r\n cursor: pointer;\r\n color: #333;\r\n\r\n &:hover {\r\n background-color: #f1f1f1;\r\n }\r\n`;\r\n\r\nconst Dropdown = ({ options, onSelect }: { options: string[]; onSelect: (option: string) => void }) => {\r\n const [open, setOpen] = useState(false);\r\n const [selectedOption, setSelectedOption] = useState<string | null>(null);\r\n\r\n const handleOptionClick = (option: string) => {\r\n setSelectedOption(option);\r\n onSelect(option);\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <DropdownContainer>\r\n <DropdownButton onClick={() => setOpen(!open)}>\r\n {selectedOption || \"Select an option\"}\r\n </DropdownButton>\r\n <DropdownContent open={open}>\r\n {options.map((option, index) => (\r\n <DropdownItem key={index} onClick={() => handleOptionClick(option)}>\r\n {option}\r\n </DropdownItem>\r\n ))}\r\n </DropdownContent>\r\n </DropdownContainer>\r\n );\r\n};\r\n\r\nexport default Dropdown;\r\n","'use client';\r\nimport styled from \"styled-components\";\r\n\r\nconst FormContainer = styled.form`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n height: 80vh; /* Take full screen height */\r\n width: 100%; /* Full width of the screen */\r\n max-width: 400px; /* Limit form width */\r\n margin: 0 auto; /* Center horizontally */\r\n padding: 80px;\r\n background-color: white;\r\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Optional: Add a shadow for design */\r\n border-radius: 8px;\r\n`;\r\nexport default FormContainer;\r\n","'use client';\r\nimport React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\n\r\ninterface InputProps {\r\n type?: string;\r\n name?: string; // Add name prop here\r\n placeholder?: string;\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n hasError?: boolean; // Error state passed from parent\r\n errorMessage?: string; // Error message passed from parent\r\n value: string; // This is now a fully controlled component\r\n}\r\n\r\nconst InputContainer = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n\r\nconst StyledInput = styled.input<{ hasError?: boolean }>`\r\n width: 300px; /* Set a fixed width to prevent expansion */\r\n max-width: 100%; /* Optional: Ensure it doesn't exceed the container width */\r\n padding: 0.75rem;\r\n border: 1px solid black;\r\n border-radius: 4px;\r\n background-color: ${(props) => (props.hasError ? '#fff5f5' : '#fff')};\r\n font-size: 1rem;\r\n transition: all 0.2s ease-in-out;\r\n\r\n &:focus {\r\n outline: none;\r\n border-color: ${(props) => (props.hasError ? 'red' : '#0070f3')};\r\n }\r\n`;\r\n\r\nconst ErrorText = styled.span`\r\n color: red;\r\n font-size: 0.875rem;\r\n height: 0.8rem; /* Fixed height for error text to avoid layout shift */\r\n display: block;\r\n`;\r\n\r\nconst Input: React.FC<InputProps> = ({\r\n type = 'text',\r\n name, // Accept name prop\r\n placeholder,\r\n onChange,\r\n hasError = false,\r\n errorMessage = '',\r\n value,\r\n}) => {\r\n return (\r\n <InputContainer>\r\n <StyledInput\r\n type={type}\r\n name={name} // Pass name prop to input\r\n placeholder={placeholder}\r\n value={value}\r\n onChange={onChange}\r\n hasError={hasError}\r\n />\r\n {/* Display error message, reserving space for it */}\r\n <ErrorText>{errorMessage}</ErrorText>\r\n </InputContainer>\r\n );\r\n};\r\n\r\nexport default Input;\r\n","'use client';\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\ninterface KeyValueDisplayProps {\r\n data: { [key: string]: any };\r\n}\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.75rem;\r\n padding: 1.5rem;\r\n background-color: #f4f6f8;\r\n margin: 0 auto;\r\n @media (max-width: 600px) {\r\n padding: 0rem;\r\n }\r\n`;\r\n\r\nconst Item = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 0.5rem 0;\r\n border-bottom: 1px solid #e0e0e0;\r\n transition: background-color 0.2s;\r\n\r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n\r\n &:hover {\r\n background-color: #55b382;\r\n }\r\n`;\r\n\r\nconst Key = styled.div`\r\n font-weight: 600;\r\n font-size: 0.95rem;\r\n color: #333;\r\n display: flex;\r\n align-items: center;\r\n width: 45%;\r\n @media (max-width: 600px) {\r\n font-size: 0.85rem;\r\n }\r\n`;\r\n\r\nconst Value = styled.div<{ isBold?: boolean }>`\r\n font-size: 1.2rem;\r\n color: #555;\r\n text-align: left;\r\n word-wrap: break-word;\r\n font-weight: ${(props) => (props.isBold ? \"bold\" : \"normal\")};\r\n @media (max-width: 600px) {\r\n font-size: 0.85rem;\r\n }\r\n`;\r\n\r\nconst KeyValueDisplay: React.FC<KeyValueDisplayProps> = ({ data }) => {\r\n return (\r\n <Container>\r\n {Object.entries(data).map(([key, value]) => (\r\n <Item key={key}>\r\n <Key>{key}</Key>\r\n <Value isBold={key === \"SegmentName\"}>{value || \"N/A\"}</Value>\r\n </Item>\r\n ))}\r\n </Container>\r\n );\r\n};\r\n\r\nexport default KeyValueDisplay;\r\n","'use client';\r\nimport styled from \"styled-components\";\r\n\r\nconst Label = styled.label`\r\n display: block;\r\n margin-bottom: 5px;\r\n font-weight: bold;\r\n`;\r\n\r\nexport default Label;\r\n","'use client';\r\nimport styled from \"styled-components\";\r\n\r\nconst Main = styled.main`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n min-height: 100vh;\r\n padding: 20px;\r\n background-color: #f9f9f9;\r\n`;\r\nexport default Main;\r\n\r\n","'use client';\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\n \r\nconst TableContainer = styled.div`margin-top: 10px;`;\r\nconst StyledTable = styled.table`width: 100%; border-collapse: collapse;`;\r\nconst TableHeader = styled.th`padding: 12px; `;\r\nconst TableRow = styled.tr`&:nth-child(even) { background-color: #f9f9f9; } &:hover { background-color: #f1f1f1; }`;\r\nconst TableData = styled.td`padding: 10px; border-bottom: 1px solid #ccc;`;\r\nconst EmptyState = styled.td`text-align: center; padding: 20px; color: #999;`;\r\n \r\nconst PaginationContainer = styled.div`margin-top: 15px; display: flex; flex-direction: column; align-items: center;`;\r\nconst ButtonContainer = styled.div`display: flex; gap: 6px; align-items: center; flex-wrap: wrap;`;\r\nconst PageButton = styled.button`\r\n padding: 6px 12px;\r\nbackground: linear-gradient(to right, #1e73be, #28a97d);\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n \r\n &:disabled {\r\n background: #ccc;\r\n cursor: not-allowed;\r\n }\r\n`;\r\nconst PageSizeSelect = styled.select`\r\n margin-left: 10px;\r\n padding: 6px;\r\n border-radius: 4px;\r\n border: 1px solid #aaa;\r\n`;\r\nconst PageInfo = styled.div`margin-top: 8px; font-size: 13px;`;\r\n \r\ninterface TableProps {\r\n headers: { label: string; key: string }[];\r\n data: { [key: string]: unknown }[];\r\n page?: number;\r\n setPage?: (page: number) => void;\r\n limit?: number;\r\n setLimit?: (limit: number)=>void;\r\n totalCount?: number;\r\n highlightRowColor?: string;\r\n actions?: (row: unknown) => React.ReactNode;\r\n}\r\n \r\nconst Table: React.FC<TableProps> = ({\r\n headers,\r\n data,\r\n page=0,\r\n setPage,\r\n limit=0,\r\n setLimit,\r\n totalCount=0,\r\n highlightRowColor,\r\n actions,\r\n}) => {\r\n const totalPages = Math.ceil(totalCount/ limit) || 0;\r\n \r\n const renderPageNumbers = () => {\r\n const pages = [];\r\n const siblings = 1;\r\n \r\n if (totalPages <= 1) return null;\r\n \r\n // Always show first\r\n pages.push(\r\n <PageButton\r\n key={1}\r\n onClick={() => setPage?.(1)}\r\n disabled={page === 1}\r\n>\r\n 1\r\n</PageButton>\r\n \r\n );\r\n \r\n if (page > siblings + 2) pages.push(<span key=\"start-ellipsis\">...</span>);\r\n \r\n for (let i = Math.max(2, page - siblings); i <= Math.min(totalPages - 1, page + siblings); i++) {\r\n pages.push(\r\n <PageButton\r\n key={i}\r\n onClick={() => setPage?.(i)}\r\n disabled={page === i}\r\n >\r\n {i}\r\n </PageButton>\r\n );\r\n }\r\n \r\n if (page < totalPages - siblings - 1) pages.push(<span key=\"end-ellipsis\">...</span>);\r\n \r\n if (totalPages > 1)\r\n pages.push(\r\n <PageButton\r\n key={1}\r\n onClick={() =>setPage?.(1)}\r\n disabled={page === 1}\r\n>\r\n {totalPages+1}\r\n</PageButton>\r\n );\r\n \r\n return pages;\r\n };\r\n \r\n return (\r\n <>\r\n <TableContainer>\r\n <StyledTable>\r\n <thead >\r\n <tr style={{background: \"linear-gradient(to right, #1e73be, #28a97d)\"}}>\r\n {headers.map((header, idx) => (\r\n <TableHeader key={idx}>{header.label}</TableHeader>\r\n ))}\r\n {actions && <TableHeader>Actions</TableHeader>}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {data.length > 0 ? (\r\n data.map((row, rowIndex) => (\r\n <TableRow key={rowIndex} className={highlightRowColor}>\r\n {headers.map((header, cellIdx) => (\r\n <TableData key={cellIdx}>\r\n {(() => {\r\n const value = row[header.key];\r\n \r\n // Handle JSX/React elements\r\n if (React.isValidElement(value)) {\r\n return value;\r\n }\r\n \r\n // Handle functions that return JSX\r\n if (typeof value === 'function') {\r\n try {\r\n const result = value();\r\n if (React.isValidElement(result)) {\r\n return result;\r\n }\r\n } catch (e) {\r\n console.warn('Error executing function in table cell:', e);\r\n }\r\n }\r\n \r\n // Handle HTML strings\r\n if (typeof value === 'string' && (\r\n value.trim().startsWith('<') &&\r\n value.trim().endsWith('>')\r\n )) {\r\n return <div dangerouslySetInnerHTML={{ __html: value }} />;\r\n }\r\n \r\n // Handle arrays (join them)\r\n if (Array.isArray(value)) {\r\n if (value.some(item => React.isValidElement(item))) {\r\n return <>{value}</>;\r\n }\r\n return value.join(', ');\r\n }\r\n \r\n // Handle dates\r\n if (value instanceof Date) {\r\n return value.toLocaleString();\r\n }\r\n \r\n // Handle booleans\r\n if (typeof value === 'boolean') {\r\n return value ? 'Yes' : 'No';\r\n }\r\n \r\n // Handle null/undefined\r\n if (value === null || value === undefined) {\r\n return '-';\r\n }\r\n \r\n // Handle numbers\r\n if (typeof value === 'number') {\r\n return value.toString();\r\n }\r\n \r\n // Handle objects\r\n if (typeof value === 'object') {\r\n return JSON.stringify(value);\r\n }\r\n \r\n // Default to string\r\n return String(value);\r\n })()}\r\n </TableData>\r\n ))}\r\n {actions && <TableData>{actions(row)}</TableData>}\r\n </TableRow>\r\n ))\r\n ) : (\r\n <tr>\r\n <EmptyState colSpan={headers.length + (actions ? 1 : 0)}>No data available</EmptyState>\r\n </tr>\r\n )}\r\n </tbody>\r\n </StyledTable>\r\n </TableContainer>\r\n \r\n {(totalPages > 1 || totalCount <= limit) && (\r\n <PaginationContainer>\r\n <ButtonContainer>\r\n <PageButton onClick={() => setPage?.(page - 1)} disabled={page === 1}>\r\n Previous\r\n </PageButton>\r\n {renderPageNumbers()}\r\n <PageButton onClick={() => setPage?.(page + 1)} disabled={page === totalPages}>\r\n Next\r\n </PageButton>\r\n \r\n <PageSizeSelect\r\n value={limit}\r\n onChange={(e) => {\r\n setPage?.(1)\r\n setLimit?.(Number(e.target.value));\r\n }}\r\n >\r\n {[5, 10, 15].map((size) => (\r\n <option key={size} value={size}>\r\n {size} per page\r\n </option>\r\n ))}\r\n </PageSizeSelect>\r\n </ButtonContainer>\r\n <PageInfo>\r\n Page {page+1} of {totalPages+1} (Total: {totalCount} items)\r\n </PageInfo>\r\n </PaginationContainer>\r\n )}\r\n </>\r\n );\r\n};\r\n \r\nexport default Table;","// packages/mahati-ui-components/TabbedInterface.tsx\r\n\r\n'use client';\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\ninterface Tab {\r\n id: string;\r\n label: string;\r\n}\r\n\r\ninterface TabbedInterfaceProps {\r\n tabs: Tab[];\r\n activeTabId: string;\r\n onTabClick: (tabId: string) => void;\r\n content: React.ReactNode;\r\n}\r\n\r\nconst TabContainer = styled.div`\r\n display: flex;\r\n background: #135f9b;\r\n color: #fff;\r\n`;\r\n\r\nconst Tab = styled.div<{ $active: boolean }>`\r\n padding: 12px 20px;\r\n font-size: 16px;\r\n font-weight: 600;\r\n cursor: pointer;\r\n border-bottom: ${({ $active }) => ($active ? \"6px solid red\" : \"none\")};\r\n color: ${({ $active }) => ($active ? \"#dcffed\" : \"#fff\")};\r\n transition: color 0.3s, border-bottom 0.3s;\r\n\r\n &:hover {\r\n color: #dcffed;\r\n }\r\n`;\r\n\r\nconst Content = styled.div`\r\n padding: 20px;\r\n background: #f9f9f9;\r\n border-radius: 10px;\r\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n max-width: 1300px;\r\n`;\r\n\r\nconst TabbedInterface: React.FC<TabbedInterfaceProps> = ({\r\n tabs,\r\n activeTabId,\r\n onTabClick,\r\n content,\r\n}) => (\r\n <div>\r\n <TabContainer>\r\n {tabs.map((tab) => (\r\n <Tab key={tab.id} $active={tab.id === activeTabId} onClick={() => onTabClick(tab.id)}>\r\n {tab.label}\r\n </Tab>\r\n ))}\r\n </TabContainer>\r\n <Content>{content}</Content>\r\n </div>\r\n);\r\n\r\nexport default TabbedInterface;\r\n","'use client';\r\nimport styled from \"styled-components\";\r\n\r\nconst Spinner = styled.div`\r\n border: 4px solid rgba(0, 123, 255, 0.2); \r\n border-radius: 10%;\r\n border-top: 4px solid #007bff;\r\n width: 24px;\r\n height: 24px;\r\n animation: spin 1s linear infinite;\r\n\r\n @keyframes spin {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n`;\r\n\r\nexport default Spinner;\r\n","'use client';\r\nimport styled from \"styled-components\";\r\n\r\nconst Section = styled.section`\r\n text-align: center;\r\n`;\r\n\r\nexport default Section;\r\n","'use client';\r\nimport styled from \"styled-components\";\r\n\r\nconst Row = styled.div`\r\n display: flex;\r\n justify-content: space-around;\r\n margin-top: 20px;\r\n`;\r\nexport default Row;\r\n","'use client';\r\nimport styled from \"styled-components\";\r\n\r\nconst Paragraph = styled.p`\r\n font-size: 20px;\r\n margin: 0;\r\n`;\r\n\r\nexport default Paragraph;\r\n","\r\nexport const required = (value: string): string => {\r\n return value ? \"\" : \"This field is required.\";\r\n};\r\n\r\nexport const maxLength = (max: number) => (value: string): string => {\r\n return value.length <= max ? \"\" : `This field must be at most ${max} characters.`;\r\n};\r\n\r\nexport const minLength = (min: number) => (value: string): string => {\r\n return value.length >= min ? \"\" : `This field must be at least ${min} characters.`;\r\n};\r\n\r\nexport const isValidUsername = (value: string): string => {\r\n const regex = /^[a-zA-Z0-9_]+$/;\r\n return regex.test(value) ? \"\" : \"Username can only contain alphanumeric characters and underscores.\";\r\n};\r\n\r\nexport const isValidPassword = (value: string): string => {\r\n const regex = /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{6,20}$/;\r\n return regex.test(value) ? \"\" : \"Password must be 6-20 characters long, include uppercase, lowercase, and a number.\";\r\n};"],"mappings":"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","names":["useState","jsx","jsxs","Tooltip","text","position","children","visible","setVisible","useState","Tooltip_default","styled","css","variants","Button","props","variant","color","danger","currentVariant","isLoading","Button_default","styled","jsx","jsxs","CardContainer","CardHeader","CardBody","CardFooter","Card","header","footer","children","Card_default","useState","styled","jsx","jsxs","DropdownContainer","DropdownButton","DropdownContent","open","DropdownItem","Dropdown","options","onSelect","setOpen","selectedOption","setSelectedOption","handleOptionClick","option","index","Dropdown_default","styled","FormContainer","FormContainer_default","styled","jsx","jsxs","InputContainer","StyledInput","props","ErrorText","Input","type","name","placeholder","onChange","hasError","errorMessage","value","Input_default","styled","jsx","jsxs","Container","Item","Key","Value","props","KeyValueDisplay","data","key","value","KeyValueDisplay_default","styled","Label","Label_default","styled","Main","Main_default","React","styled","Fragment","jsx","jsxs","TableContainer","StyledTable","TableHeader","TableRow","TableData","EmptyState","PaginationContainer","ButtonContainer","PageButton","PageSizeSelect","PageInfo","Table","headers","data","page","setPage","limit","setLimit","totalCount","highlightRowColor","actions","totalPages","renderPageNumbers","pages","i","header","idx","row","rowIndex","cellIdx","value","result","e","item","size","Table_default","styled","jsx","jsxs","TabContainer","Tab","$active","Content","TabbedInterface","tabs","activeTabId","onTabClick","content","tab","TabbedInterface_default","styled","Spinner","Spinner_default","styled","Section","Section_default","styled","Row","Row_default","styled","Paragraph","Paragraph_default","required","value","maxLength","max","minLength","min","isValidUsername","isValidPassword"]}
|
|
1
|
+
{"version":3,"sources":["d:\\insurgence\\uicomponents\\mahati-designs\\packages\\uicomponents\\dist\\index.mjs"],"names":["React","styled","jsx","parseHeightWidth","className","match","parseInt","parseGap","gapClass","getColorByName","name","colors","blue","green","red","orange","purple","yellow","pink","teal","indigo","primary","secondary","success","danger","warning","info","toLowerCase","StyledButton","button","props","color","$name","$iconButton","startsWith","$height","$width","$variant","$size","IconButtonInner","span","slice","$radiusClass","$paddingClass","$bgClass","rgbaMatch","$hoverBgClass","hoverMatch","activeMatch","styles","$intensity","v","Math","max","min","IconButtonGroupWrapper","div","$direction","$gap","IconButtonGroup","forwardRef","ref","direction","gap","displayName","ButtonBase","variant","size","iconButton","iconButtonHeightClass","iconButtonWidthClass","iconButtonBgClass","iconButtonRadiusClass","iconButtonBgPaddingClass","iconButtonHoverBgClass","iconButtonHoverIntensity","children","height","width","Button","MahatiButton"],"mappings":"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","sourcesContent":["// src/components/Button.tsx\nimport React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { jsx } from \"@emotion/react/jsx-runtime\";\nvar parseHeightWidth = (className) => {\n if (!className) return \"36px\";\n const match = className.match(/[hw]-(\\d+)/);\n if (match) {\n return `${parseInt(match[1]) * 4}px`;\n }\n return \"36px\";\n};\nvar parseGap = (gapClass) => {\n if (!gapClass) return \"8px\";\n const match = gapClass.match(/gap-(\\d+)/);\n if (match) {\n return `${parseInt(match[1]) * 4}px`;\n }\n return \"8px\";\n};\nvar getColorByName = (name) => {\n const colors = {\n blue: \"#3b82f6\",\n green: \"#10b981\",\n red: \"#ef4444\",\n orange: \"#f59e0b\",\n purple: \"#8b5cf6\",\n yellow: \"#f59e0b\",\n pink: \"#ec4899\",\n teal: \"#14b8a6\",\n indigo: \"#6366f1\",\n primary: \"linear-gradient(to right, rgba(23, 97, 163, 1), rgba(77, 175, 131, 1))\",\n secondary: \"#6b7280\",\n success: \"#10b981\",\n danger: \"#ef4444\",\n warning: \"#f59e0b\",\n info: \"#3b82f6\"\n };\n return colors[name?.toLowerCase()] || colors.primary || \"#3b82f6\";\n};\nvar StyledButton = styled.button`\n /* Base Styles */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n font-size: 14px;\n font-weight: 500;\n transition: all 200ms ease-in-out;\n cursor: pointer;\n border: none;\n outline: none;\n font-family: inherit;\n position: relative;\n \n /* Focus Styles */\n &:focus-visible {\n outline: 2px solid rgba(59, 130, 246, 0.5);\n outline-offset: 2px;\n }\n \n /* Disabled State */\n &:disabled {\n pointer-events: none;\n opacity: 0.5;\n }\n\n ${(props) => {\n const color = getColorByName(props.$name);\n if (color) {\n if (props.$iconButton) {\n return `\n color: ${color.startsWith(\"linear\") || color.startsWith(\"rgba\") ? \"white\" : color};\n `;\n } else {\n return `\n background: ${color};\n color: white;\n border-radius: 6px;\n &:hover { opacity: 0.9; }\n &:active { opacity: 0.95; }\n `;\n }\n }\n return \"\";\n}}\n\n ${(props) => props.$iconButton && `\n background: transparent !important;\n padding: 0;\n color: rgba(255, 255, 255, 0.9);\n height: ${props.$height || \"36px\"};\n width: ${props.$width || \"36px\"};\n min-height: ${props.$height || \"36px\"};\n min-width: ${props.$width || \"36px\"};\n border-radius: 6px;\n \n &:hover {\n background: transparent !important;\n color: rgba(255, 255, 255, 1);\n }\n \n &:active {\n background: transparent !important;\n }\n \n &:focus-visible {\n outline: 2px solid rgba(255, 255, 255, 0.7);\n outline-offset: 2px;\n }\n `}\n\n ${(props) => {\n if (props.$iconButton || props.$name) return \"\";\n switch (props.$variant) {\n case \"default\":\n return `\n background: linear-gradient(to right, rgba(23, 97, 163, 1), rgba(77, 175, 131, 1));\n color: white;\n border-radius: 6px;\n &:hover { opacity: 0.9; }\n &:active { opacity: 0.95; }\n `;\n case \"destructive\":\n return `\n background: #ef4444;\n color: white;\n border-radius: 6px;\n &:hover { background: #dc2626; }\n &:active { background: #b91c1c; }\n `;\n case \"outline\":\n return `\n border: 1px solid #e5e7eb;\n background: white;\n color: #374151;\n border-radius: 6px;\n &:hover { \n background: #f9fafb;\n border-color: #d1d5db;\n }\n &:active { background: #f3f4f6; }\n `;\n case \"secondary\":\n return `\n background: ${getColorByName(\"blue\")};\n color: #374151;\n border-radius: 6px;\n &:hover { background: #e5e7eb; }\n &:active { background: #d1d5db; }\n `;\n case \"ghost\":\n return `\n background: transparent;\n color: #374151;\n border-radius: 6px;\n &:hover { background: #f3f4f6; }\n &:active { background: #e5e7eb; }\n `;\n case \"link\":\n return `\n background: transparent;\n color: #2563eb;\n text-decoration: underline;\n text-underline-offset: 4px;\n padding: 0;\n height: auto;\n &:hover { \n text-decoration: none;\n color: #1d4ed8;\n }\n &:active { color: #1e40af; }\n `;\n case \"danger\":\n return `\n background: transparent;\n color: #ef4444;\n border-radius: 6px;\n &:hover {\n background: rgba(239, 68, 68, 0.1);\n }\n &:active {\n background: rgba(239, 68, 68, 0.2);\n }\n `;\n case \"dotted\":\n return `\n background: linear-gradient(to right, #1e73be, #28a97d);\n color: white;\n border-radius: 8px;\n position: relative;\n overflow: visible;\n \n &::before {\n content: '';\n position: absolute;\n inset: -2px;\n border-radius: 10px;\n padding: 2px;\n background: linear-gradient(to right, #1e73be, #28a97d);\n -webkit-mask: \n linear-gradient(#fff 0 0) content-box, \n linear-gradient(#fff 0 0);\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n border: 2px dashed rgba(255, 255, 255, 0.5);\n }\n \n &:hover { opacity: 0.9; }\n &:active { opacity: 0.95; }\n `;\n case \"pill\":\n return `\n background: linear-gradient(to right, rgba(23, 97, 163, 1), rgba(77, 175, 131, 1));\n color: white;\n border-radius: 9999px;\n &:hover { opacity: 0.9; }\n &:active { opacity: 0.95; }\n `;\n default:\n return `\n background: linear-gradient(to right, rgba(23, 97, 163, 1), rgba(77, 175, 131, 1));\n color: white;\n border-radius: 6px;\n &:hover { opacity: 0.9; }\n `;\n }\n}}\n\n ${(props) => {\n if (props.$iconButton) return \"\";\n switch (props.$size) {\n case \"sm\":\n return `height: 36px; padding: 0 12px; font-size: 13px;`;\n case \"md\":\n return `height: 40px; padding: 0 16px; font-size: 14px;`;\n case \"lg\":\n return `height: 44px; padding: 0 24px; font-size: 15px;`;\n case \"icon\":\n return `height: 40px; width: 40px; padding: 0;`;\n default:\n return `height: 40px; padding: 0 16px;`;\n }\n}}\n`;\nvar IconButtonInner = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n transition: all 200ms ease-in-out;\n \n /* Name-based background for icon buttons */\n ${(props) => {\n const color = getColorByName(props.$name);\n if (color) {\n return `\n background: ${color.startsWith(\"linear\") ? color : `rgba(${color.slice(1)}, 0.12)`};\n `;\n }\n return \"\";\n}};\n \n /* Parse border radius from Tailwind classes */\n border-radius: ${(props) => {\n if (!props.$radiusClass) return \"6px\";\n const match = props.$radiusClass.match(/rounded-\\[(\\d+)px\\]/);\n if (match) return `${match[1]}px`;\n if (props.$radiusClass === \"rounded-md\") return \"6px\";\n if (props.$radiusClass === \"rounded-lg\") return \"8px\";\n if (props.$radiusClass === \"rounded-full\") return \"9999px\";\n return \"6px\";\n}};\n \n /* Parse padding from Tailwind classes */\n padding: ${(props) => {\n if (!props.$paddingClass) return \"2px\";\n const match = props.$paddingClass.match(/p-\\[(\\d+)px\\]/);\n if (match) return `${match[1]}px`;\n return \"2px\";\n}};\n \n /* Parse background color from Tailwind classes (after name) */\n background: ${(props) => {\n if (props.$name) return \"initial\";\n if (!props.$bgClass) return \"rgba(255, 255, 255, 0.12)\";\n const rgbaMatch = props.$bgClass.match(/bg-\\[(rgba?\\([^)]+\\))\\]/);\n if (rgbaMatch) return rgbaMatch[1];\n return \"rgba(255, 255, 255, 0.12)\";\n}};\n \n width: 100%;\n height: 100%;\n \n /* Icon sizing */\n svg {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n }\n \n /* Hover and Active States */\n ${(props) => {\n if (props.$hoverBgClass) {\n const hoverMatch = props.$hoverBgClass.match(/hover:bg-\\[(rgba?\\([^)]+\\))\\]/);\n const activeMatch = props.$hoverBgClass.match(/active:bg-\\[(rgba?\\([^)]+\\))\\]/);\n let styles = \"\";\n if (hoverMatch) {\n styles += `button:hover & { background: ${hoverMatch[1]}; }`;\n }\n if (activeMatch) {\n styles += `button:active & { background: ${activeMatch[1]}; }`;\n }\n return styles;\n }\n if (props.$intensity != null) {\n const v = Math.max(0, Math.min(100, props.$intensity));\n if (v === 0) return \"\";\n if (v <= 10) return `button:hover & { opacity: 0.95; } button:active & { opacity: 0.90; }`;\n if (v <= 25) return `button:hover & { opacity: 0.90; } button:active & { opacity: 0.80; }`;\n if (v <= 40) return `button:hover & { opacity: 0.85; } button:active & { opacity: 0.75; }`;\n if (v <= 55) return `button:hover & { opacity: 0.80; } button:active & { opacity: 0.70; }`;\n if (v <= 70) return `button:hover & { opacity: 0.75; } button:active & { opacity: 0.65; }`;\n if (v <= 85) return `button:hover & { opacity: 0.70; } button:active & { opacity: 0.60; }`;\n return `button:hover & { opacity: 0.60; } button:active & { opacity: 0.50; }`;\n }\n return `\n button:hover & { opacity: 0.85; }\n button:active & { opacity: 0.7; }\n `;\n}}\n`;\nvar IconButtonGroupWrapper = styled.div`\n display: inline-flex;\n flex-direction: ${(props) => props.$direction === \"col\" ? \"column\" : \"row\"};\n align-items: ${(props) => props.$direction === \"col\" ? \"flex-start\" : \"center\"};\n gap: ${(props) => props.$gap || \"8px\"};\n`;\nvar IconButtonGroup = React.forwardRef(\n ({ className, direction = \"row\", gapClass, ...props }, ref) => {\n const gap = parseGap(gapClass);\n return /* @__PURE__ */ jsx(\n IconButtonGroupWrapper,\n {\n ref,\n $direction: direction,\n $gap: gap,\n className,\n ...props\n }\n );\n }\n);\nIconButtonGroup.displayName = \"IconButtonGroup\";\nvar ButtonBase = React.forwardRef(\n ({\n className,\n variant = \"default\",\n size = \"default\",\n name,\n iconButton = false,\n iconButtonHeightClass,\n iconButtonWidthClass,\n iconButtonBgClass,\n iconButtonRadiusClass,\n iconButtonBgPaddingClass,\n iconButtonHoverBgClass,\n iconButtonHoverIntensity,\n children,\n ...props\n }, ref) => {\n if (iconButton) {\n const height = parseHeightWidth(iconButtonHeightClass);\n const width = parseHeightWidth(iconButtonWidthClass);\n return /* @__PURE__ */ jsx(\n StyledButton,\n {\n $variant: variant,\n $size: size,\n $iconButton: true,\n $height: height,\n $width: width,\n $name: name,\n className,\n ref,\n ...props,\n children: /* @__PURE__ */ jsx(\n IconButtonInner,\n {\n $bgClass: iconButtonBgClass,\n $radiusClass: iconButtonRadiusClass,\n $paddingClass: iconButtonBgPaddingClass,\n $hoverBgClass: iconButtonHoverBgClass,\n $intensity: iconButtonHoverIntensity,\n $name: name,\n children\n }\n )\n }\n );\n }\n return /* @__PURE__ */ jsx(\n StyledButton,\n {\n $variant: variant,\n $size: size,\n $name: name,\n className,\n ref,\n ...props,\n children\n }\n );\n }\n);\nButtonBase.displayName = \"Button\";\nvar Button = ButtonBase;\nButton.IconButtonGroup = IconButtonGroup;\nexport {\n Button as MahatiButton\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,44 +1,71 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mahatisystems/mahati-ui-components",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
|
-
"types": "./dist/index.d.ts",
|
|
10
9
|
"import": "./dist/index.mjs",
|
|
11
10
|
"require": "./dist/index.js"
|
|
12
|
-
}
|
|
11
|
+
},
|
|
12
|
+
"./styles": "./dist/index.css",
|
|
13
|
+
"./dist/index.css": "./dist/index.css"
|
|
13
14
|
},
|
|
14
15
|
"files": [
|
|
15
16
|
"dist"
|
|
16
17
|
],
|
|
17
18
|
"scripts": {
|
|
18
|
-
"build": "
|
|
19
|
-
"
|
|
19
|
+
"build:css": "tailwindcss -i ./src/styles/index.css -o ./dist/index.css --minify",
|
|
20
|
+
"build:js": "tsup src/index.ts --config tsup.config.ts --no-clean",
|
|
21
|
+
"build": "rimraf dist && npm run build:css && npm run build:js",
|
|
22
|
+
"build:watch": "tsup src/index.ts --config tsup.config.ts --watch",
|
|
23
|
+
"test": "jest --coverage",
|
|
24
|
+
"lint": "eslint \"src/**/*.{ts,tsx}\"",
|
|
25
|
+
"clean": "rimraf dist",
|
|
26
|
+
"yalc:pub": "npm run build && yalc publish",
|
|
27
|
+
"dev:yalc": "npm run yalc:pub && tsup src/index.ts --config tsup.config.ts --watch --onSuccess \"yalc publish --push\""
|
|
20
28
|
},
|
|
21
|
-
"sideEffects": [
|
|
22
|
-
"*.css"
|
|
23
|
-
],
|
|
24
29
|
"peerDependencies": {
|
|
25
|
-
"react": "^19
|
|
26
|
-
"react-dom": "^19
|
|
27
|
-
|
|
30
|
+
"react": "^18 || ^19",
|
|
31
|
+
"react-dom": "^18 || ^19"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@heroicons/react": "^2.2.0",
|
|
35
|
+
"@radix-ui/react-avatar": "^1.0.4",
|
|
36
|
+
"@radix-ui/react-dialog": "^1.0.5",
|
|
37
|
+
"@radix-ui/react-dropdown-menu": "^2.0.6",
|
|
38
|
+
"@radix-ui/react-slot": "^1.0.2",
|
|
39
|
+
"@radix-ui/react-tooltip": "^1.0.7",
|
|
40
|
+
"chart.js": "^4.5.1",
|
|
41
|
+
"class-variance-authority": "^0.7.0",
|
|
42
|
+
"clsx": "^2.1.1",
|
|
43
|
+
"lucide-react": "^0.553.0",
|
|
44
|
+
"react-chartjs-2": "^5.3.1",
|
|
45
|
+
"react-icons": "^5.5.0",
|
|
46
|
+
"tailwind-merge": "^2.3.0",
|
|
47
|
+
"tailwindcss-animate": "^1.0.7"
|
|
28
48
|
},
|
|
29
49
|
"devDependencies": {
|
|
30
|
-
"@
|
|
31
|
-
"@types/react": "^
|
|
32
|
-
"@types/react-dom": "^
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"react": "^
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
|
|
50
|
+
"@swc/core": "^1.15.1",
|
|
51
|
+
"@types/react": "^18.2.0",
|
|
52
|
+
"@types/react-dom": "^18.2.0",
|
|
53
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
54
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
55
|
+
"autoprefixer": "^10.4.19",
|
|
56
|
+
"eslint": "^8.0.0",
|
|
57
|
+
"eslint-plugin-react": "^7.0.0",
|
|
58
|
+
"eslint-plugin-react-hooks": "^4.0.0",
|
|
59
|
+
"jest": "^29.7.0",
|
|
60
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
61
|
+
"postcss": "^8.4.38",
|
|
62
|
+
"postcss-prefixwrap": "^1.1.0",
|
|
63
|
+
"rimraf": "^5.0.0",
|
|
64
|
+
"tailwindcss": "^3.4.3",
|
|
65
|
+
"tsup": "^8.0.0",
|
|
66
|
+
"typescript": "^5.0.0"
|
|
67
|
+
},
|
|
68
|
+
"sideEffects": [
|
|
69
|
+
"**/*.css"
|
|
70
|
+
]
|
|
44
71
|
}
|
package/dist/index.css
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.block{display:block}.flex{display:flex}.table{display:table}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-wrap{flex-wrap:wrap}.border{border-width:1px}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.tooltipContainer{position:relative;display:inline-block;cursor:pointer}.tooltip{position:absolute;background-color:#349db8e6;color:#fff;padding:8px;border-radius:4px;font-size:13px;font-weight:600;white-space:nowrap;z-index:1000;opacity:0;transition:opacity .2s ease-in-out}.tooltip.top{bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px}.tooltip.right{top:50%;left:100%;transform:translateY(-50%);margin-left:8px}.tooltip.bottom{top:100%;left:50%;transform:translate(-50%);margin-top:8px}.tooltip.left{top:50%;right:100%;transform:translateY(-50%);margin-right:8px}.tooltipContainer:hover .tooltip{opacity:1}
|
|
2
|
-
/*# sourceMappingURL=index.css.map */
|
package/dist/index.css.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/styles/index.css","../src/styles/Tooltip.module.css"],"sourcesContent":["*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}/*\n! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com\n*//*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n7. Disable tap highlights on iOS\n*/\n\nhtml,\n:host {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font-family by default.\n2. Use the user's configured `mono` font-feature-settings by default.\n3. Use the user's configured `mono` font-variation-settings by default.\n4. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-feature-settings: normal; /* 2 */\n font-variation-settings: normal; /* 3 */\n font-size: 1em; /* 4 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n letter-spacing: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\ninput:where([type='button']),\ninput:where([type='reset']),\ninput:where([type='submit']) {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden]:where(:not([hidden=\"until-found\"])) {\n display: none;\n}\r\n .container {\n width: 100%;\n}\r\n @media (min-width: 640px) {\n\n .container {\n max-width: 640px;\n }\n}\r\n @media (min-width: 768px) {\n\n .container {\n max-width: 768px;\n }\n}\r\n @media (min-width: 1024px) {\n\n .container {\n max-width: 1024px;\n }\n}\r\n @media (min-width: 1280px) {\n\n .container {\n max-width: 1280px;\n }\n}\r\n @media (min-width: 1536px) {\n\n .container {\n max-width: 1536px;\n }\n}\r\n .visible {\n visibility: visible;\n}\r\n .collapse {\n visibility: collapse;\n}\r\n .fixed {\n position: fixed;\n}\r\n .absolute {\n position: absolute;\n}\r\n .relative {\n position: relative;\n}\r\n .block {\n display: block;\n}\r\n .flex {\n display: flex;\n}\r\n .table {\n display: table;\n}\r\n .grow {\n flex-grow: 1;\n}\r\n .border-collapse {\n border-collapse: collapse;\n}\r\n .transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\r\n .flex-wrap {\n flex-wrap: wrap;\n}\r\n .border {\n border-width: 1px;\n}\r\n .uppercase {\n text-transform: uppercase;\n}\r\n .lowercase {\n text-transform: lowercase;\n}\r\n .shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\r\n .outline {\n outline-style: solid;\n}\r\n .transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}",".tooltipContainer {\r\n position: relative;\r\n display: inline-block;\r\n cursor: pointer;\r\n }\r\n \r\n .tooltip {\r\n position: absolute;\r\n background-color: rgba(52, 157, 184, 0.9);\r\n color: #fff;\r\n padding: 8px;\r\n border-radius: 4px;\r\n font-size: 13px;\r\n font-weight: 600;\r\n white-space: nowrap;\r\n z-index: 1000;\r\n opacity: 0;\r\n transition: opacity 0.2s ease-in-out;\r\n }\r\n \r\n .tooltip.top {\r\n bottom: 100%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n margin-bottom: 8px;\r\n }\r\n \r\n .tooltip.right {\r\n top: 50%;\r\n left: 100%;\r\n transform: translateY(-50%);\r\n margin-left: 8px;\r\n }\r\n \r\n .tooltip.bottom {\r\n top: 100%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n margin-top: 8px;\r\n }\r\n \r\n .tooltip.left {\r\n top: 50%;\r\n right: 100%;\r\n transform: translateY(-50%);\r\n margin-right: 8px;\r\n }\r\n \r\n .tooltipContainer:hover .tooltip {\r\n opacity: 1;\r\n }\r\n "],"mappings":"AAAA,EAAG,QAAU,OACX,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,aACA,aACA,kBACA,6BAA6B,UAC7B,8BACA,6BACA,4BACA,eACA,oBACA,sBACA,uBACA,wBACA,kBACA,wBAAwB,IACxB,wBAAwB,KACxB,iBAAiB,IAAI,GAAG,IAAI,IAAI,EAAE,IAClC,yBAAyB,EAAE,EAAE,MAC7B,kBAAkB,EAAE,EAAE,MACtB,aAAa,EAAE,EAAE,MACjB,qBAAqB,EAAE,EAAE,MACzB,YACA,kBACA,gBACA,iBACA,kBACA,cACA,gBACA,aACA,mBACA,qBACA,2BACA,yBACA,0BACA,2BACA,uBACA,wBACA,yBACA,sBACA,oBACA,sBACA,qBACA,oBACF,CAEA,WACE,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,aACA,aACA,kBACA,6BAA6B,UAC7B,8BACA,6BACA,4BACA,eACA,oBACA,sBACA,uBACA,wBACA,kBACA,wBAAwB,IACxB,wBAAwB,KACxB,iBAAiB,IAAI,GAAG,IAAI,IAAI,EAAE,IAClC,yBAAyB,EAAE,EAAE,MAC7B,kBAAkB,EAAE,EAAE,MACtB,aAAa,EAAE,EAAE,MACjB,qBAAqB,EAAE,EAAE,MACzB,YACA,kBACA,gBACA,iBACA,kBACA,cACA,gBACA,aACA,mBACA,qBACA,2BACA,yBACA,0BACA,2BACA,uBACA,wBACA,yBACA,sBACA,oBACA,sBACA,qBACA,oBACF,CAOA,EACA,QACA,OACE,WAAY,WACZ,aAAc,EACd,aAAc,MACd,aAAc,OAChB,CAEA,QACA,OACE,cAAc,EAChB,CAYA,KACA,MACE,YAAa,IACb,yBAA0B,KAC1B,cAAe,EACf,YAAa,EACV,SAAU,EACb,YAAa,aAAa,CAAE,SAAS,CAAE,UAAU,CAAE,mBAAmB,CAAE,gBAAgB,CAAE,eAAiB,CAAE,mBAC7G,sBAA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","names":[]}
|