catastyle 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -79
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Catastyle
|
|
2
2
|
|
|
3
|
-
Design System reutilizável baseado em **React** e **styled-components**, com temas claro/escuro, componentes acessíveis e
|
|
3
|
+
Design System reutilizável baseado em **React** e **styled-components**, com temas claro/escuro, componentes acessíveis e customização via arquivo de configuração no projeto consumidor.
|
|
4
4
|
|
|
5
5
|
## Instalação
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ npm install catastyle react react-dom styled-components react-router-dom
|
|
|
12
12
|
|
|
13
13
|
### Projetos com Vite
|
|
14
14
|
|
|
15
|
-
Em projetos que usam **Vite**, configure `resolve.dedupe` para garantir uma única instância de React e styled-components
|
|
15
|
+
Em projetos que usam **Vite**, configure `resolve.dedupe` para garantir uma única instância de React e styled-components:
|
|
16
16
|
|
|
17
17
|
```ts
|
|
18
18
|
// vite.config.ts
|
|
@@ -27,9 +27,44 @@ export default defineConfig({
|
|
|
27
27
|
})
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
## Uso
|
|
30
|
+
## Uso recomendado: componente Main
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
A forma mais simples é usar o **Main**: ele já inclui `ThemeProvider`, `GlobalStyle`, `MainContainer` e o **ThemeButton** (botão para alternar tema). Você só precisa passar os `children`.
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
import { Main, Logo, Title, Text, Button } from 'catastyle'
|
|
36
|
+
|
|
37
|
+
function App() {
|
|
38
|
+
return (
|
|
39
|
+
<Main>
|
|
40
|
+
<Logo />
|
|
41
|
+
<Title color="primary">Olá, Catastyle</Title>
|
|
42
|
+
<Text as="p">Design system pronto para uso.</Text>
|
|
43
|
+
<Button>Clique aqui</Button>
|
|
44
|
+
</Main>
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Props do Main
|
|
50
|
+
|
|
51
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
52
|
+
|----------------|-------------------------|----------|----------------------------------------------------------------------------|
|
|
53
|
+
| `children` | `React.ReactNode` | — | Conteúdo da página |
|
|
54
|
+
| `centered` | `boolean` | `true` | Se `true`: layout centralizado, largura até 1440px, altura 100vh |
|
|
55
|
+
| `position` | `ThemeButtonPosition` | — | Posição do ThemeButton (`'top-right'`, `'top-left'`, `'bottom-right'`, `'bottom-left'`) |
|
|
56
|
+
| `darkTheme` | `DefaultTheme \| null` | — | Tema escuro customizado (null = tema padrão do Catastyle) |
|
|
57
|
+
| `lightTheme` | `DefaultTheme \| null` | — | Tema claro customizado (null = tema padrão) |
|
|
58
|
+
| `iconLight` | `string` | — | URL/import do ícone do ThemeButton no tema claro |
|
|
59
|
+
| `iconDark` | `string` | — | URL/import do ícone do ThemeButton no tema escuro |
|
|
60
|
+
| `className` | `string` | — | Classe CSS aplicada ao container |
|
|
61
|
+
|
|
62
|
+
- **`centered={true}`** (padrão): o container usa `width: 100vw`, `max-width: 1440px`, `height: 100vh`, fica centralizado na tela (`margin: 0 auto`) e o conteúdo é centralizado com flexbox.
|
|
63
|
+
- **`centered={false}`**: o container usa `width: 100%`, sem limite de largura nem altura fixa; conteúdo alinhado ao topo.
|
|
64
|
+
|
|
65
|
+
## Uso avançado (sem Main)
|
|
66
|
+
|
|
67
|
+
Se preferir controlar tema e layout manualmente:
|
|
33
68
|
|
|
34
69
|
```tsx
|
|
35
70
|
import {
|
|
@@ -42,17 +77,19 @@ import {
|
|
|
42
77
|
Title,
|
|
43
78
|
Text,
|
|
44
79
|
} from 'catastyle'
|
|
80
|
+
import { useState } from 'react'
|
|
45
81
|
|
|
46
82
|
function App() {
|
|
47
|
-
const [
|
|
83
|
+
const [dark, setDark] = useState(true)
|
|
84
|
+
const theme = dark ? DarkTheme : LightTheme
|
|
48
85
|
|
|
49
86
|
return (
|
|
50
87
|
<ThemeProvider theme={theme}>
|
|
51
88
|
<GlobalStyle />
|
|
52
89
|
<MainContainer>
|
|
53
|
-
<Title>Olá, Catastyle</Title>
|
|
54
|
-
<Text>Design system pronto para uso.</Text>
|
|
55
|
-
<Button>
|
|
90
|
+
<Title color="primary">Olá, Catastyle</Title>
|
|
91
|
+
<Text as="p">Design system pronto para uso.</Text>
|
|
92
|
+
<Button onClick={() => setDark(!dark)}>Trocar tema</Button>
|
|
56
93
|
</MainContainer>
|
|
57
94
|
</ThemeProvider>
|
|
58
95
|
)
|
|
@@ -62,53 +99,41 @@ function App() {
|
|
|
62
99
|
## Componentes
|
|
63
100
|
|
|
64
101
|
| Componente | Descrição |
|
|
65
|
-
|
|
102
|
+
|----------------|---------------------------------------------------------------------------|
|
|
66
103
|
| `Button` | Botão com variantes de estilo |
|
|
67
|
-
| `Checkbox` | Caixa de seleção
|
|
68
|
-
| `Footer` |
|
|
104
|
+
| `Checkbox` | Caixa de seleção; `children` é o rótulo (string) |
|
|
105
|
+
| `Footer` | Rodapé; aceita `children` para conteúdo customizável |
|
|
69
106
|
| `Input` | Campo de texto (inclui toggle de visibilidade para tipo password) |
|
|
70
|
-
| `Label` | Rótulo para formulários
|
|
71
|
-
| `Link` | Link externo ou interno (
|
|
72
|
-
| `Logo` | Logo com
|
|
73
|
-
| `Main` | Container principal com ThemeProvider, GlobalStyle e ThemeButton
|
|
74
|
-
| `Text` | Parágrafo ou texto inline (`as="p"` ou `as="span"`)
|
|
75
|
-
| `ThemeButton` | Botão para alternar tema
|
|
76
|
-
| `Title` | Título
|
|
77
|
-
|
|
78
|
-
### Exemplo: Footer customizável
|
|
79
|
-
|
|
80
|
-
O `Footer` recebe `children`; o conteúdo fica a cargo do projeto consumidor:
|
|
81
|
-
|
|
82
|
-
```tsx
|
|
83
|
-
import { Footer, Text } from 'catastyle'
|
|
84
|
-
|
|
85
|
-
<Footer>
|
|
86
|
-
<Text as="p">© {new Date().getFullYear()} Minha Empresa - Todos os direitos reservados</Text>
|
|
87
|
-
</Footer>
|
|
88
|
-
```
|
|
107
|
+
| `Label` | Rótulo para formulários |
|
|
108
|
+
| `Link` | Link externo ou interno (react-router-dom via `$isInternal`) |
|
|
109
|
+
| `Logo` | Logo que alterna com o tema; aceita `logoLight` e `logoDark` (SVG/URL); se não passar, usa o padrão do Catastyle |
|
|
110
|
+
| `Main` | Container principal com ThemeProvider, GlobalStyle e ThemeButton; aceita `centered`, temas e ícones |
|
|
111
|
+
| `Text` | Parágrafo ou texto inline (`as="p"` ou `as="span"`) |
|
|
112
|
+
| `ThemeButton` | Botão para alternar tema; aceita `iconLight` e `iconDark`; se não passar, usa o padrão |
|
|
113
|
+
| `Title` | Título; aceita `children` como `React.ReactNode` (texto ou JSX, ex. com `<br />`) |
|
|
89
114
|
|
|
90
115
|
## Temas
|
|
91
116
|
|
|
92
|
-
- **`DarkTheme`** e **`LightTheme`** — temas padrão
|
|
93
|
-
-
|
|
94
|
-
-
|
|
117
|
+
- **`DarkTheme`** e **`LightTheme`** — temas padrão exportados pelo pacote.
|
|
118
|
+
- O **Main** injeta no tema a propriedade **`isDark`** (`boolean`) para que componentes como Logo e ThemeButton saibam qual tema está ativo.
|
|
119
|
+
- Para temas customizados, use o arquivo de config no projeto consumidor (ver abaixo).
|
|
95
120
|
|
|
96
121
|
## Customização (projeto consumidor)
|
|
97
122
|
|
|
98
|
-
Após
|
|
123
|
+
Após `npm install`, o script **postinstall** cria a pasta e o arquivo de configuração (apenas temas; logos e ícones não vêm do config):
|
|
99
124
|
|
|
100
125
|
```
|
|
101
126
|
src/catastyle/
|
|
102
127
|
└── catastyle.config.ts
|
|
103
128
|
```
|
|
104
129
|
|
|
105
|
-
Nesse arquivo você configura apenas
|
|
130
|
+
Nesse arquivo você configura **apenas temas**. Logo e ícone do ThemeButton são definidos pelas **props** nos componentes (ou no Main); se não forem passados, usam os padrões do Catastyle.
|
|
106
131
|
|
|
107
132
|
### Temas customizados
|
|
108
133
|
|
|
109
134
|
Edite `src/catastyle/catastyle.config.ts` e defina `darkTheme` e/ou `lightTheme`. Se forem `null`, os temas padrão do Catastyle são usados.
|
|
110
135
|
|
|
111
|
-
Exemplo
|
|
136
|
+
Exemplo:
|
|
112
137
|
|
|
113
138
|
```ts
|
|
114
139
|
import type { DefaultTheme } from 'styled-components'
|
|
@@ -130,7 +155,7 @@ export const lightTheme: DefaultTheme | null = {
|
|
|
130
155
|
}
|
|
131
156
|
```
|
|
132
157
|
|
|
133
|
-
|
|
158
|
+
Para as cores atualizarem ao editar o config (ex.: com HMR), importe o config no App e passe os temas para o **Main**:
|
|
134
159
|
|
|
135
160
|
```tsx
|
|
136
161
|
import { Main } from 'catastyle'
|
|
@@ -145,11 +170,12 @@ function App() {
|
|
|
145
170
|
}
|
|
146
171
|
```
|
|
147
172
|
|
|
148
|
-
Assim o config entra no bundle e alterações em `catastyle.config.ts` refletem ao salvar.
|
|
149
|
-
|
|
150
173
|
### Logos e ícones customizados
|
|
151
174
|
|
|
152
|
-
|
|
175
|
+
- **Logo:** importe os SVGs e passe `logoLight` e `logoDark` no componente **Logo**.
|
|
176
|
+
- **ThemeButton:** importe os SVGs e passe `iconLight` e `iconDark` no **ThemeButton** ou no **Main** (o Main repassa para o ThemeButton).
|
|
177
|
+
|
|
178
|
+
Exemplo:
|
|
153
179
|
|
|
154
180
|
```tsx
|
|
155
181
|
import { Logo, Main } from 'catastyle'
|
|
@@ -160,78 +186,57 @@ import logoEscuro from '@/assets/meu-logo-escuro.svg'
|
|
|
160
186
|
```
|
|
161
187
|
|
|
162
188
|
```tsx
|
|
163
|
-
import {
|
|
189
|
+
import { Main } from 'catastyle'
|
|
164
190
|
import iconClaro from '@/assets/meu-icone-claro.svg'
|
|
165
191
|
import iconEscuro from '@/assets/meu-icone-escuro.svg'
|
|
166
192
|
|
|
167
|
-
<
|
|
193
|
+
<Main iconLight={iconClaro} iconDark={iconEscuro}>
|
|
194
|
+
{/* ... */}
|
|
195
|
+
</Main>
|
|
168
196
|
```
|
|
169
197
|
|
|
170
|
-
|
|
198
|
+
O arquivo `catastyle.config.ts` **não** define logo nem ícone; apenas temas.
|
|
171
199
|
|
|
172
|
-
## Exports
|
|
200
|
+
## Exports
|
|
173
201
|
|
|
174
|
-
- **
|
|
202
|
+
- **Componentes:** `Button`, `Checkbox`, `Footer`, `Input`, `Label`, `Link`, `Logo`, `Main`, `Text`, `ThemeButton`, `Title`
|
|
203
|
+
- **Temas:** `DarkTheme`, `LightTheme`
|
|
204
|
+
- **Estilos:** `GlobalStyle`, `MainContainer`, `ThemeProvider` (styled-components)
|
|
175
205
|
- **Tipos:** `WidthType`, `FontSizeType`, `FontSize`, `BreakpointType`
|
|
176
|
-
- **Utilitários:** `fontSizeToRem`, `mdScreen`, `smScreen`
|
|
206
|
+
- **Utilitários:** `fontSizeToRem`, `mdScreen`, `smScreen` (media queries)
|
|
177
207
|
|
|
178
208
|
## Testes
|
|
179
209
|
|
|
180
|
-
O projeto usa **Vitest** e **React Testing Library** para testes unitários dos componentes e utilitários.
|
|
181
|
-
|
|
182
210
|
```bash
|
|
183
|
-
#
|
|
184
|
-
npm test
|
|
185
|
-
|
|
186
|
-
# Rodar testes unitários uma vez
|
|
187
|
-
npm run test:unit
|
|
188
|
-
|
|
189
|
-
# Rodar com cobertura
|
|
211
|
+
npm test # watch
|
|
212
|
+
npm run test:unit # uma vez
|
|
190
213
|
npm run test:coverage
|
|
191
214
|
```
|
|
192
215
|
|
|
193
216
|
## Desenvolvimento
|
|
194
217
|
|
|
195
218
|
```bash
|
|
196
|
-
# Instalar dependências
|
|
197
219
|
npm install
|
|
198
|
-
|
|
199
|
-
# Build da biblioteca
|
|
200
220
|
npm run build
|
|
201
|
-
|
|
202
|
-
# Modo watch (rebuild ao editar)
|
|
203
|
-
npm run dev
|
|
204
|
-
|
|
205
|
-
# Lint (verificar / corrigir)
|
|
221
|
+
npm run dev # watch
|
|
206
222
|
npm run lint:check
|
|
207
223
|
npm run lint
|
|
208
|
-
|
|
209
|
-
# Testes
|
|
210
|
-
npm run test:unit
|
|
211
|
-
|
|
212
|
-
# Storybook (documentação e exemplos dos componentes)
|
|
213
224
|
npm run storybook
|
|
214
225
|
```
|
|
215
226
|
|
|
216
227
|
## CI/CD
|
|
217
228
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
- **Lint** — `npm run lint:check`
|
|
221
|
-
- **Testes unitários** — `npm run test:unit`
|
|
222
|
-
- **Build** — `npm run build`
|
|
223
|
-
|
|
224
|
-
O workflow está em `.github/workflows/ci.yml` e roda em qualquer branch.
|
|
229
|
+
GitHub Actions em todo push/PR: lint, testes unitários e build. Workflow em `.github/workflows/ci.yml`.
|
|
225
230
|
|
|
226
231
|
## Estrutura do pacote
|
|
227
232
|
|
|
228
|
-
-
|
|
229
|
-
-
|
|
230
|
-
-
|
|
233
|
+
- **main:** `./dist/index.js` (CommonJS)
|
|
234
|
+
- **module:** `./dist/index.mjs` (ESM)
|
|
235
|
+
- **types:** `./dist/index.d.ts`
|
|
231
236
|
|
|
232
237
|
## Sobre o projeto
|
|
233
238
|
|
|
234
|
-
Projeto **autoral**,
|
|
239
|
+
Projeto **autoral**, para **estudo** e uso como biblioteca reutilizável em outros projetos.
|
|
235
240
|
|
|
236
241
|
- Repositório: [github.com/Phillipml/catastyle](https://github.com/Phillipml/catastyle)
|
|
237
242
|
|
package/dist/index.d.mts
CHANGED
|
@@ -130,7 +130,7 @@ type ThemeButtonType = {
|
|
|
130
130
|
declare const ThemeButton: ({ className, onClick, position, iconLight, iconDark }: ThemeButtonType) => react_jsx_runtime.JSX.Element;
|
|
131
131
|
|
|
132
132
|
type TitleType = {
|
|
133
|
-
children:
|
|
133
|
+
children: React.ReactNode;
|
|
134
134
|
className?: string;
|
|
135
135
|
color: 'primary' | 'secondary';
|
|
136
136
|
} & FontSizeType;
|
package/dist/index.d.ts
CHANGED
|
@@ -130,7 +130,7 @@ type ThemeButtonType = {
|
|
|
130
130
|
declare const ThemeButton: ({ className, onClick, position, iconLight, iconDark }: ThemeButtonType) => react_jsx_runtime.JSX.Element;
|
|
131
131
|
|
|
132
132
|
type TitleType = {
|
|
133
|
-
children:
|
|
133
|
+
children: React.ReactNode;
|
|
134
134
|
className?: string;
|
|
135
135
|
color: 'primary' | 'secondary';
|
|
136
136
|
} & FontSizeType;
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/fontSize.ts","../src/types/breakpoints.ts","../src/components/Button/styles.ts","../src/components/Button/Button.tsx","../src/components/Input/styles.ts","../src/components/Checkbox/styles.ts","../src/components/Text/styles.ts","../src/components/Text/Text.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Footer/styles.ts","../src/components/Footer/Footer.tsx","../src/components/Input/Input.tsx","../src/components/Label/styles.ts","../src/components/Label/Label.tsx","../src/components/Link/styles.ts","../src/components/Link/Link.tsx","../src/components/Logo/styles.ts","../src/utils/logoLoader.ts","../src/components/Logo/Logo.tsx","../src/styles/global.ts","../src/components/ThemeButton/styles.ts","../src/components/ThemeButton/ThemeButton.tsx","../src/themes/dark.ts","../src/themes/light.ts","../src/utils/themeLoader.ts","../src/components/Main/Main.tsx","../src/components/Title/styles.ts","../src/components/Title/Title.tsx"],"names":["styled","jsx","jsxs","useState","FaEye","FaEyeSlash","RouterLink","useTheme","createGlobalStyle","css","ThemeButton","position","path","ThemeProvider"],"mappings":"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","file":"index.js","sourcesContent":["export type FontSize = 4 | 8 | 12 | 16 | 20 | 24 | 32 | 40\n\nexport type FontSizeType = {\n $lgFontSize?: FontSize\n $mdFontSize?: FontSize\n $smFontSize?: FontSize\n}\n\nexport const fontSizeToRem = (size: FontSize): string => {\n const remMap: Record<FontSize, string> = {\n 4: '0.25rem',\n 8: '0.5rem',\n 12: '0.75rem',\n 16: '1rem',\n 20: '1.25rem',\n 24: '1.5rem',\n 32: '2rem',\n 40: '2.5rem'\n }\n return remMap[size]\n}\n","export const BREAKPOINTS = {\n md: '1024px',\n sm: '768px'\n} as const\n\nexport const mdScreen = `@media (max-width: ${BREAKPOINTS.md})`\nexport const smScreen = `@media (max-width: ${BREAKPOINTS.sm})`\n\nexport type BreakpointType = {\n mdScreen?: boolean\n smScreen?: boolean\n}\n\nexport const applyBreakpointStyles = (\n baseStyles: string,\n mdStyles?: string,\n smStyles?: string\n) => `\n ${baseStyles}\n\n ${mdStyles ? `${mdScreen} { ${mdStyles} }` : ''}\n ${smStyles ? `${smScreen} { ${smStyles} }` : ''}\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype ButtonStyle = {\n id?: string | undefined\n disabled?: boolean | undefined\n as?: React.ElementType | undefined\n type?: 'button' | 'submit' | 'reset' | undefined\n $lgWidth?: number | undefined\n $mdWidth?: number | undefined\n $smWidth?: number | undefined\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const ButtonStyled = styled.button<ButtonStyle>`\n width: ${(props) => props.$lgWidth || 100}%;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.bgColor};\n background-color: ${(props) => props.theme.primaryColor};\n padding: 12px 8px;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: 0.2s ease;\n\n &:hover {\n color: ${(props) => props.theme.primaryColor};\n background-color: ${(props) => props.theme.secondaryColor};\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType, WidthType } from '@/types'\nimport { ButtonStyled } from './styles'\n\nexport type ButtonType = {\n children: React.ReactNode\n className?: string\n id?: string\n onClick?: () => void\n disabled?: boolean\n as?: React.ElementType\n type?: 'button' | 'submit' | 'reset'\n} & WidthType &\n FontSizeType\n\nconst Button = ({\n children,\n className,\n onClick,\n disabled,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n as,\n type,\n id\n}: ButtonType) => (\n <ButtonStyled\n className={className}\n onClick={onClick}\n disabled={disabled}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n as={as}\n type={type}\n id={id}\n >\n {children}\n </ButtonStyled>\n)\n\nexport default Button\n","import styled from 'styled-components'\nimport {\n mdScreen,\n smScreen,\n fontSizeToRem,\n type WidthType,\n type FontSize\n} from '@/types'\n\ntype InputWrapperProps = {\n display?: string | undefined\n} & WidthType\n\ntype InputStyle = {\n type?: string\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const InputWrapper = styled.div<InputWrapperProps>`\n position: relative;\n display: ${(props) => props.display || 'block'};\n width: ${(props) => props.$lgWidth || 100}%;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n\nexport const InputStyled = styled.input<InputStyle>`\n width: 100%;\n padding: 16px 8px;\n border-radius: 8px;\n border: 1px solid ${(props) => props.theme.tertiaryColor};\n background-color: transparent;\n color: ${(props) => props.theme.primaryColor};\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n &:focus {\n outline: none;\n box-shadow: 0 0 4px 2px ${(props) => props.theme.tertiaryColor};\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n\nexport const EyeButton = styled.button<InputStyle>`\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${(props) => props.theme.primaryColor};\n transition: color 0.2s ease;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n svg {\n width: 20px;\n height: 20px;\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, type WidthType } from '@/types'\nimport { InputStyled } from '@/components/Input/styles'\n\ntype CheckLabelStyled = {\n display?: string | undefined\n} & WidthType\n\nexport const CheckLabel = styled.label<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 100}%;\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n line-height: 1.5;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n`\n\nexport const CheckInput = styled(InputStyled)<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 5}%;\n min-width: 20px;\n height: 20px;\n margin: 0;\n cursor: pointer;\n box-shadow: none !important;\n flex-shrink: 0;\n align-self: center;\n vertical-align: middle;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 5}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 5}%;\n }\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TextStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n as?: 'p' | 'span'\n color?: 'primary' | 'secondary'\n}\n\nexport const TextStyled = styled.p<TextStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TextStyled } from './styles'\n\nexport type TextType = {\n as: 'p' | 'span'\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Text = ({\n as,\n children,\n className,\n color = 'primary',\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TextType) => (\n <TextStyled\n as={as}\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TextStyled>\n)\n\nexport default Text\n","import type { WidthType, FontSizeType } from '@/types'\nimport { CheckInput, CheckLabel } from './styles'\nimport Text from '@/components/Text/Text'\n\nexport type CheckboxType = {\n id: string\n name: string\n checked?: boolean\n className?: string\n $disabled?: boolean\n children: string\n display?: string\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Checkbox = ({\n id,\n name,\n checked,\n className,\n $disabled,\n children,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize = 16,\n $mdFontSize = 16,\n $smFontSize = 16,\n onClick,\n onChange\n}: CheckboxType) => (\n <CheckLabel\n className={className}\n htmlFor={id}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <CheckInput\n type=\"checkbox\"\n id={id}\n name={name}\n checked={checked}\n disabled={$disabled}\n display={display}\n onClick={onClick}\n onChange={onChange}\n />\n <Text\n as=\"span\"\n color=\"primary\"\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </Text>\n </CheckLabel>\n)\n\nexport default Checkbox\n","import styled from 'styled-components'\n\nexport const FooterStyled = styled.footer`\n width: 100%;\n margin-top: 2%;\n padding: 1rem;\n color: #fff;\n text-align: center;\n`\n","import { FooterStyled } from './styles'\ntype FooterType = {\n children: React.ReactNode\n className?: string\n}\nconst Footer = ({ children, className }: FooterType) => {\n return <FooterStyled className={className}>{children}</FooterStyled>\n}\n\nexport default Footer\n","import React, { useState } from 'react'\nimport { FaEye, FaEyeSlash } from 'react-icons/fa6'\nimport type { WidthType, FontSizeType } from '@/types'\nimport { EyeButton, InputStyled, InputWrapper } from './styles'\n\nexport type InputType = {\n type: string\n id: string\n name: string\n className?: string\n placeholder?: string\n value?: string\n display?: string\n $disabled?: boolean\n $required?: boolean\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Input = ({\n type,\n id,\n name,\n className,\n placeholder,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n $disabled,\n $required,\n onClick,\n onChange\n}: InputType) => {\n const [showPassword, setShowPassword] = useState(false)\n\n return (\n <InputWrapper\n className={className}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <InputStyled\n type={type === 'password' ? (showPassword ? 'text' : 'password') : type}\n id={id}\n name={name}\n placeholder={placeholder}\n onClick={onClick}\n onChange={onChange}\n disabled={$disabled}\n required={$required}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n />\n {type === 'password' && (\n <EyeButton type=\"button\" onClick={() => setShowPassword(!showPassword)}>\n {showPassword ? <FaEye /> : <FaEyeSlash />}\n </EyeButton>\n )}\n </InputWrapper>\n )\n}\n\nexport default Input\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, fontSizeToRem, type FontSize } from '@/types'\n\ntype LabelStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const LabelStyled = styled.label<LabelStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.primaryColor};\n margin-bottom: 4px;\n display: block;\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import React from 'react'\nimport type { FontSizeType } from '@/types'\nimport { LabelStyled } from './styles'\n\nexport type LabelType = {\n htmlFor: string\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Label = ({\n htmlFor,\n children,\n className,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LabelType) => (\n <LabelStyled\n className={className}\n htmlFor={htmlFor}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LabelStyled>\n)\n\nexport default Label\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype LinkStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n $target?: '_blank' | '_self'\n color?: 'primary' | 'secondary'\n}\n\nexport const LinkStyled = styled.a<LinkStyledProps>`\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.color === 'secondary'\n ? props.theme.secondaryColor\n : props.theme.linkColor};\n text-decoration: none;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: normal;\n background-image: linear-gradient(currentColor, currentColor);\n background-position: 0 100%;\n background-size: 0% 2px;\n background-repeat: no-repeat;\n transition:\n background-size 0.2s,\n background-position 0s 0.2s;\n\n &:hover {\n background-position: 100% 100%;\n background-size: 100% 2px;\n }\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { LinkStyled } from './styles'\nimport { Link as RouterLink } from 'react-router-dom'\n\nexport type LinkType = {\n href?: string\n to?: string\n children: React.ReactNode\n className?: string\n $target?: '_blank' | '_self'\n $isInternal?: boolean\n} & FontSizeType\n\nconst Link = ({\n href,\n to,\n children,\n className,\n $target,\n $isInternal = false,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LinkType) => {\n if ($isInternal && to) {\n return (\n <RouterLink to={to} style={{ textDecoration: 'none', color: 'inherit' }}>\n <LinkStyled\n className={className}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n </RouterLink>\n )\n }\n\n return (\n <LinkStyled\n className={className}\n href={href}\n target={$target}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n )\n}\n\nexport default Link\n","import styled from 'styled-components'\nimport type { WidthType } from '@/types'\nimport { mdScreen, smScreen } from '@/types'\n\nexport const LogoStyled = styled.div<WidthType>`\n width: ${(props) => props.$lgWidth || 100}%;\n & > img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: contain;\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n","import LogoLightDefault from '@/assets/logos/light-theme.svg'\nimport LogoDarkDefault from '@/assets/logos/dark-theme.svg'\nimport IconLightDefault from '@/assets/icon/icon-light-theme.svg'\nimport IconDarkDefault from '@/assets/icon/icon-dark-theme.svg'\n\nexport function getLogoLight(): string {\n return LogoLightDefault\n}\n\nexport function getLogoDark(): string {\n return LogoDarkDefault\n}\n\nexport function getIconLight(): string {\n return IconLightDefault\n}\n\nexport function getIconDark(): string {\n return IconDarkDefault\n}\n","import { LogoStyled } from './styles'\nimport type { WidthType } from '@/types'\nimport { useTheme } from 'styled-components'\nimport { getLogoLight, getLogoDark } from '@/utils/logoLoader'\n\ntype LogoProps = {\n className?: string\n logoLight?: string\n logoDark?: string\n} & WidthType\n\nconst Logo = ({\n className,\n $lgWidth,\n $mdWidth,\n $smWidth,\n logoLight,\n logoDark\n}: LogoProps) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n const src = isDarkTheme\n ? (logoDark ?? getLogoDark())\n : (logoLight ?? getLogoLight())\n\n return (\n <LogoStyled\n className={className}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <img src={src} alt=\"Logo\" />\n </LogoStyled>\n )\n}\n\nexport default Logo\n","import styled, { createGlobalStyle } from 'styled-components'\n\nconst GlobalStyle = createGlobalStyle`\n*{\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n list-style: none;\n font-family: \"Inter\", sans-serif;\n}\n\nhtml, body {\n min-height: 100vh;\n}\n\nbody{\n background-color: ${(props) => props.theme.bgColor};\n color: ${(props) => props.theme.primaryColor};\n`\nexport default GlobalStyle\n\nexport const MainContainer = styled.main<{ $centered?: boolean }>`\n width: ${(props) => (props.$centered !== false ? '100vw' : '100%')};\n max-width: ${(props) => (props.$centered !== false ? '1440px' : 'none')};\n margin: ${(props) => (props.$centered !== false ? '0 auto' : '0')};\n min-height: ${(props) => (props.$centered !== false ? '100vh' : 'auto')};\n height: ${(props) => (props.$centered !== false ? '100vh' : 'auto')};\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: ${(props) =>\n props.$centered !== false ? 'center' : 'flex-start'};\n overflow-y: auto;\n &::-webkit-scrollbar {\n display: none;\n }\n`\n","import styled, { css } from 'styled-components'\nimport { ButtonStyled } from '@/components/Button/styles'\nexport type ThemeButtonPosition =\n | 'top-right'\n | 'top-left'\n | 'bottom-right'\n | 'bottom-left'\ntype ButtonPosition = { $position?: ThemeButtonPosition }\nconst position = [\n {\n 'top-right': css`\n top: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'top-left': css`\n top: 1.25rem;\n left: 1.25rem;\n `\n },\n {\n 'bottom-right': css`\n bottom: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'bottom-left': css`\n bottom: 1.25rem;\n left: 1.25rem;\n `\n }\n]\nconst getPosition = (key: ThemeButtonPosition) =>\n (\n position.find((pos) => key in pos) as\n | Record<ThemeButtonPosition, ReturnType<typeof css>>\n | undefined\n )?.[key]\nexport const ThemeButton = styled(ButtonStyled)<ButtonPosition>`\n position: fixed;\n width: 3rem;\n height: 3rem;\n ${(props) => getPosition(props.$position ?? 'bottom-right')}\n z-index: 9999;\n border-radius: 50%;\n padding: 1%;\n display: flex;\n align-items: center;\n justify-content: center;\n & > img {\n width: 100%;\n height: 100%;\n }\n &:hover {\n background-color: ${(props) => props.theme.tertiaryColor};\n box-shadow: 0 0 10px 0 ${(props) => props.theme.primaryColor};\n }\n`\n","import { ThemeButton as ThemeButtonStyled } from './styles'\nimport { useTheme } from 'styled-components'\nimport { getIconDark, getIconLight } from '@/utils/logoLoader'\n\ntype ThemeButtonType = {\n className?: string\n onClick?: () => void\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n iconLight?: string\n iconDark?: string\n}\nconst ThemeButton = ({\n className,\n onClick,\n position = 'bottom-right',\n iconLight,\n iconDark\n}: ThemeButtonType) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n const src = isDarkTheme\n ? (iconLight ?? getIconLight())\n : (iconDark ?? getIconDark())\n return (\n <ThemeButtonStyled\n className={className}\n onClick={onClick}\n $position={position}\n >\n <img src={src} alt=\"Theme Button\" />\n </ThemeButtonStyled>\n )\n}\n\nexport default ThemeButton\n","import type { DefaultTheme } from 'styled-components/'\n\nconst DarkTheme: DefaultTheme = {\n primaryColor: '#EBFFEB',\n secondaryColor: '#538A53',\n tertiaryColor: '#669966',\n bgColor: '#011F1F',\n linkColor: '#33CC66'\n}\n\nexport default DarkTheme\n","import type { DefaultTheme } from 'styled-components/'\n\nconst LightTheme: DefaultTheme = {\n primaryColor: '#011F1F',\n secondaryColor: '#33CC66',\n tertiaryColor: '#538A53',\n bgColor: '#EBFFEB',\n linkColor: '#006633'\n}\n\nexport default LightTheme\n","import type { DefaultTheme } from 'styled-components'\nimport DarkThemeDefault from '@/themes/dark'\nimport LightThemeDefault from '@/themes/light'\nimport path from 'path'\n\nfunction tryLoadUserThemeConfig(): {\n darkTheme: DefaultTheme | null\n lightTheme: DefaultTheme | null\n} | null {\n if (typeof window !== 'undefined') {\n return null\n }\n\n try {\n const userProjectRoot = process.cwd()\n const configPath = path.join(\n userProjectRoot,\n 'src',\n 'catastyle',\n 'catastyle.config.ts'\n )\n\n try {\n const resolvedPath = require.resolve(configPath)\n delete require.cache[resolvedPath]\n const config = require(configPath)\n return {\n darkTheme: config.darkTheme ?? null,\n lightTheme: config.lightTheme ?? null\n }\n } catch {\n return null\n }\n } catch {\n return null\n }\n}\n\nexport function getDarkTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.darkTheme ?? DarkThemeDefault\n}\n\nexport function getLightTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.lightTheme ?? LightThemeDefault\n}\n","import GlobalStyle, { MainContainer } from '@/styles/global'\nimport { ThemeProvider } from 'styled-components'\nimport type { DefaultTheme } from 'styled-components'\nimport { useState } from 'react'\nimport ThemeButton from '@/components/ThemeButton/ThemeButton'\nimport { getDarkTheme, getLightTheme } from '@/utils/themeLoader'\nimport type { ThemeButtonPosition } from '../ThemeButton/styles'\n\nexport type MainType = {\n children: React.ReactNode\n className?: string\n position?: ThemeButtonPosition\n darkTheme?: DefaultTheme | null\n lightTheme?: DefaultTheme | null\n centered?: boolean\n iconLight?: string\n iconDark?: string\n}\nconst Main = ({\n children,\n className,\n position,\n darkTheme: darkThemeProp,\n lightTheme: lightThemeProp,\n centered = true,\n iconLight,\n iconDark\n}: MainType) => {\n const [darkTheme, setDarkTheme] = useState(false)\n function toggleTheme() {\n setDarkTheme(!darkTheme)\n }\n const theme = darkTheme\n ? (darkThemeProp ?? getDarkTheme())\n : (lightThemeProp ?? getLightTheme())\n return (\n <ThemeProvider theme={{ ...theme, isDark: darkTheme }}>\n <GlobalStyle />\n <MainContainer className={className} $centered={centered}>\n <ThemeButton\n onClick={toggleTheme}\n {...(position !== undefined && { position })}\n {...(iconLight !== undefined && { iconLight })}\n {...(iconDark !== undefined && { iconDark })}\n />\n {children}\n </MainContainer>\n </ThemeProvider>\n )\n}\n\nexport default Main\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TitleStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n color: 'primary' | 'secondary'\n}\n\nexport const TitleStyled = styled.h1<TitleStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 32)};\n font-weight: 600;\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 32)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 32\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TitleStyled } from './styles'\n\nexport type TitleType = {\n children: string\n className?: string\n color: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Title = ({\n children,\n className,\n color,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TitleType) => (\n <TitleStyled\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TitleStyled>\n)\n\nexport default Title\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/fontSize.ts","../src/types/breakpoints.ts","../src/components/Button/styles.ts","../src/components/Button/Button.tsx","../src/components/Input/styles.ts","../src/components/Checkbox/styles.ts","../src/components/Text/styles.ts","../src/components/Text/Text.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Footer/styles.ts","../src/components/Footer/Footer.tsx","../src/components/Input/Input.tsx","../src/components/Label/styles.ts","../src/components/Label/Label.tsx","../src/components/Link/styles.ts","../src/components/Link/Link.tsx","../src/components/Logo/styles.ts","../src/utils/logoLoader.ts","../src/components/Logo/Logo.tsx","../src/styles/global.ts","../src/components/ThemeButton/styles.ts","../src/components/ThemeButton/ThemeButton.tsx","../src/themes/dark.ts","../src/themes/light.ts","../src/utils/themeLoader.ts","../src/components/Main/Main.tsx","../src/components/Title/styles.ts","../src/components/Title/Title.tsx"],"names":["styled","jsx","jsxs","useState","FaEye","FaEyeSlash","RouterLink","useTheme","createGlobalStyle","css","ThemeButton","position","path","ThemeProvider"],"mappings":"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","file":"index.js","sourcesContent":["export type FontSize = 4 | 8 | 12 | 16 | 20 | 24 | 32 | 40\n\nexport type FontSizeType = {\n $lgFontSize?: FontSize\n $mdFontSize?: FontSize\n $smFontSize?: FontSize\n}\n\nexport const fontSizeToRem = (size: FontSize): string => {\n const remMap: Record<FontSize, string> = {\n 4: '0.25rem',\n 8: '0.5rem',\n 12: '0.75rem',\n 16: '1rem',\n 20: '1.25rem',\n 24: '1.5rem',\n 32: '2rem',\n 40: '2.5rem'\n }\n return remMap[size]\n}\n","export const BREAKPOINTS = {\n md: '1024px',\n sm: '768px'\n} as const\n\nexport const mdScreen = `@media (max-width: ${BREAKPOINTS.md})`\nexport const smScreen = `@media (max-width: ${BREAKPOINTS.sm})`\n\nexport type BreakpointType = {\n mdScreen?: boolean\n smScreen?: boolean\n}\n\nexport const applyBreakpointStyles = (\n baseStyles: string,\n mdStyles?: string,\n smStyles?: string\n) => `\n ${baseStyles}\n\n ${mdStyles ? `${mdScreen} { ${mdStyles} }` : ''}\n ${smStyles ? `${smScreen} { ${smStyles} }` : ''}\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype ButtonStyle = {\n id?: string | undefined\n disabled?: boolean | undefined\n as?: React.ElementType | undefined\n type?: 'button' | 'submit' | 'reset' | undefined\n $lgWidth?: number | undefined\n $mdWidth?: number | undefined\n $smWidth?: number | undefined\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const ButtonStyled = styled.button<ButtonStyle>`\n width: ${(props) => props.$lgWidth || 100}%;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.bgColor};\n background-color: ${(props) => props.theme.primaryColor};\n padding: 12px 8px;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: 0.2s ease;\n\n &:hover {\n color: ${(props) => props.theme.primaryColor};\n background-color: ${(props) => props.theme.secondaryColor};\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType, WidthType } from '@/types'\nimport { ButtonStyled } from './styles'\n\nexport type ButtonType = {\n children: React.ReactNode\n className?: string\n id?: string\n onClick?: () => void\n disabled?: boolean\n as?: React.ElementType\n type?: 'button' | 'submit' | 'reset'\n} & WidthType &\n FontSizeType\n\nconst Button = ({\n children,\n className,\n onClick,\n disabled,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n as,\n type,\n id\n}: ButtonType) => (\n <ButtonStyled\n className={className}\n onClick={onClick}\n disabled={disabled}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n as={as}\n type={type}\n id={id}\n >\n {children}\n </ButtonStyled>\n)\n\nexport default Button\n","import styled from 'styled-components'\nimport {\n mdScreen,\n smScreen,\n fontSizeToRem,\n type WidthType,\n type FontSize\n} from '@/types'\n\ntype InputWrapperProps = {\n display?: string | undefined\n} & WidthType\n\ntype InputStyle = {\n type?: string\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const InputWrapper = styled.div<InputWrapperProps>`\n position: relative;\n display: ${(props) => props.display || 'block'};\n width: ${(props) => props.$lgWidth || 100}%;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n\nexport const InputStyled = styled.input<InputStyle>`\n width: 100%;\n padding: 16px 8px;\n border-radius: 8px;\n border: 1px solid ${(props) => props.theme.tertiaryColor};\n background-color: transparent;\n color: ${(props) => props.theme.primaryColor};\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n &:focus {\n outline: none;\n box-shadow: 0 0 4px 2px ${(props) => props.theme.tertiaryColor};\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n\nexport const EyeButton = styled.button<InputStyle>`\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${(props) => props.theme.primaryColor};\n transition: color 0.2s ease;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n svg {\n width: 20px;\n height: 20px;\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, type WidthType } from '@/types'\nimport { InputStyled } from '@/components/Input/styles'\n\ntype CheckLabelStyled = {\n display?: string | undefined\n} & WidthType\n\nexport const CheckLabel = styled.label<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 100}%;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n line-height: 1.5;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n`\n\nexport const CheckInput = styled(InputStyled)<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 5}%;\n min-width: 20px;\n height: 20px;\n margin: 0;\n cursor: pointer;\n box-shadow: none !important;\n flex-shrink: 0;\n align-self: center;\n vertical-align: middle;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 5}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 5}%;\n }\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TextStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n as?: 'p' | 'span'\n color?: 'primary' | 'secondary'\n}\n\nexport const TextStyled = styled.p<TextStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TextStyled } from './styles'\n\nexport type TextType = {\n as: 'p' | 'span'\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Text = ({\n as,\n children,\n className,\n color = 'primary',\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TextType) => (\n <TextStyled\n as={as}\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TextStyled>\n)\n\nexport default Text\n","import type { WidthType, FontSizeType } from '@/types'\nimport { CheckInput, CheckLabel } from './styles'\nimport Text from '@/components/Text/Text'\n\nexport type CheckboxType = {\n id: string\n name: string\n checked?: boolean\n className?: string\n $disabled?: boolean\n children: string\n display?: string\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Checkbox = ({\n id,\n name,\n checked,\n className,\n $disabled,\n children,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize = 16,\n $mdFontSize = 16,\n $smFontSize = 16,\n onClick,\n onChange\n}: CheckboxType) => (\n <CheckLabel\n className={className}\n htmlFor={id}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <CheckInput\n type=\"checkbox\"\n id={id}\n name={name}\n checked={checked}\n disabled={$disabled}\n display={display}\n onClick={onClick}\n onChange={onChange}\n />\n <Text\n as=\"span\"\n color=\"primary\"\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </Text>\n </CheckLabel>\n)\n\nexport default Checkbox\n","import styled from 'styled-components'\n\nexport const FooterStyled = styled.footer`\n width: 100%;\n margin-top: 2%;\n padding: 1rem;\n color: #fff;\n text-align: center;\n`\n","import { FooterStyled } from './styles'\ntype FooterType = {\n children: React.ReactNode\n className?: string\n}\nconst Footer = ({ children, className }: FooterType) => {\n return <FooterStyled className={className}>{children}</FooterStyled>\n}\n\nexport default Footer\n","import React, { useState } from 'react'\nimport { FaEye, FaEyeSlash } from 'react-icons/fa6'\nimport type { WidthType, FontSizeType } from '@/types'\nimport { EyeButton, InputStyled, InputWrapper } from './styles'\n\nexport type InputType = {\n type: string\n id: string\n name: string\n className?: string\n placeholder?: string\n value?: string\n display?: string\n $disabled?: boolean\n $required?: boolean\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Input = ({\n type,\n id,\n name,\n className,\n placeholder,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n $disabled,\n $required,\n onClick,\n onChange\n}: InputType) => {\n const [showPassword, setShowPassword] = useState(false)\n\n return (\n <InputWrapper\n className={className}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <InputStyled\n type={type === 'password' ? (showPassword ? 'text' : 'password') : type}\n id={id}\n name={name}\n placeholder={placeholder}\n onClick={onClick}\n onChange={onChange}\n disabled={$disabled}\n required={$required}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n />\n {type === 'password' && (\n <EyeButton type=\"button\" onClick={() => setShowPassword(!showPassword)}>\n {showPassword ? <FaEye /> : <FaEyeSlash />}\n </EyeButton>\n )}\n </InputWrapper>\n )\n}\n\nexport default Input\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, fontSizeToRem, type FontSize } from '@/types'\n\ntype LabelStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const LabelStyled = styled.label<LabelStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.primaryColor};\n margin-bottom: 4px;\n display: block;\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import React from 'react'\nimport type { FontSizeType } from '@/types'\nimport { LabelStyled } from './styles'\n\nexport type LabelType = {\n htmlFor: string\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Label = ({\n htmlFor,\n children,\n className,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LabelType) => (\n <LabelStyled\n className={className}\n htmlFor={htmlFor}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LabelStyled>\n)\n\nexport default Label\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype LinkStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n $target?: '_blank' | '_self'\n color?: 'primary' | 'secondary'\n}\n\nexport const LinkStyled = styled.a<LinkStyledProps>`\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.color === 'secondary'\n ? props.theme.secondaryColor\n : props.theme.linkColor};\n text-decoration: none;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: normal;\n background-image: linear-gradient(currentColor, currentColor);\n background-position: 0 100%;\n background-size: 0% 2px;\n background-repeat: no-repeat;\n transition:\n background-size 0.2s,\n background-position 0s 0.2s;\n\n &:hover {\n background-position: 100% 100%;\n background-size: 100% 2px;\n }\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { LinkStyled } from './styles'\nimport { Link as RouterLink } from 'react-router-dom'\n\nexport type LinkType = {\n href?: string\n to?: string\n children: React.ReactNode\n className?: string\n $target?: '_blank' | '_self'\n $isInternal?: boolean\n} & FontSizeType\n\nconst Link = ({\n href,\n to,\n children,\n className,\n $target,\n $isInternal = false,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LinkType) => {\n if ($isInternal && to) {\n return (\n <RouterLink to={to} style={{ textDecoration: 'none', color: 'inherit' }}>\n <LinkStyled\n className={className}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n </RouterLink>\n )\n }\n\n return (\n <LinkStyled\n className={className}\n href={href}\n target={$target}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n )\n}\n\nexport default Link\n","import styled from 'styled-components'\nimport type { WidthType } from '@/types'\nimport { mdScreen, smScreen } from '@/types'\n\nexport const LogoStyled = styled.div<WidthType>`\n width: ${(props) => props.$lgWidth || 100}%;\n & > img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: contain;\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n","import LogoLightDefault from '@/assets/logos/light-theme.svg'\nimport LogoDarkDefault from '@/assets/logos/dark-theme.svg'\nimport IconLightDefault from '@/assets/icon/icon-light-theme.svg'\nimport IconDarkDefault from '@/assets/icon/icon-dark-theme.svg'\n\nexport function getLogoLight(): string {\n return LogoLightDefault\n}\n\nexport function getLogoDark(): string {\n return LogoDarkDefault\n}\n\nexport function getIconLight(): string {\n return IconLightDefault\n}\n\nexport function getIconDark(): string {\n return IconDarkDefault\n}\n","import { LogoStyled } from './styles'\nimport type { WidthType } from '@/types'\nimport { useTheme } from 'styled-components'\nimport { getLogoLight, getLogoDark } from '@/utils/logoLoader'\n\ntype LogoProps = {\n className?: string\n logoLight?: string\n logoDark?: string\n} & WidthType\n\nconst Logo = ({\n className,\n $lgWidth,\n $mdWidth,\n $smWidth,\n logoLight,\n logoDark\n}: LogoProps) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n const src = isDarkTheme\n ? (logoDark ?? getLogoDark())\n : (logoLight ?? getLogoLight())\n\n return (\n <LogoStyled\n className={className}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <img src={src} alt=\"Logo\" />\n </LogoStyled>\n )\n}\n\nexport default Logo\n","import styled, { createGlobalStyle } from 'styled-components'\n\nconst GlobalStyle = createGlobalStyle`\n*{\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n list-style: none;\n font-family: \"Inter\", sans-serif;\n}\n\nhtml, body {\n min-height: 100vh;\n}\n\nbody{\n background-color: ${(props) => props.theme.bgColor};\n color: ${(props) => props.theme.primaryColor};\n`\nexport default GlobalStyle\n\nexport const MainContainer = styled.main<{ $centered?: boolean }>`\n width: ${(props) => (props.$centered !== false ? '100vw' : '100%')};\n max-width: ${(props) => (props.$centered !== false ? '1440px' : 'none')};\n margin: ${(props) => (props.$centered !== false ? '0 auto' : '0')};\n min-height: ${(props) => (props.$centered !== false ? '100vh' : 'auto')};\n height: ${(props) => (props.$centered !== false ? '100vh' : 'auto')};\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: ${(props) =>\n props.$centered !== false ? 'center' : 'flex-start'};\n overflow-y: auto;\n &::-webkit-scrollbar {\n display: none;\n }\n`\n","import styled, { css } from 'styled-components'\nimport { ButtonStyled } from '@/components/Button/styles'\nexport type ThemeButtonPosition =\n | 'top-right'\n | 'top-left'\n | 'bottom-right'\n | 'bottom-left'\ntype ButtonPosition = { $position?: ThemeButtonPosition }\nconst position = [\n {\n 'top-right': css`\n top: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'top-left': css`\n top: 1.25rem;\n left: 1.25rem;\n `\n },\n {\n 'bottom-right': css`\n bottom: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'bottom-left': css`\n bottom: 1.25rem;\n left: 1.25rem;\n `\n }\n]\nconst getPosition = (key: ThemeButtonPosition) =>\n (\n position.find((pos) => key in pos) as\n | Record<ThemeButtonPosition, ReturnType<typeof css>>\n | undefined\n )?.[key]\nexport const ThemeButton = styled(ButtonStyled)<ButtonPosition>`\n position: fixed;\n width: 3rem;\n height: 3rem;\n ${(props) => getPosition(props.$position ?? 'bottom-right')}\n z-index: 9999;\n border-radius: 50%;\n padding: 1%;\n display: flex;\n align-items: center;\n justify-content: center;\n & > img {\n width: 100%;\n height: 100%;\n }\n &:hover {\n background-color: ${(props) => props.theme.tertiaryColor};\n box-shadow: 0 0 10px 0 ${(props) => props.theme.primaryColor};\n }\n`\n","import { ThemeButton as ThemeButtonStyled } from './styles'\nimport { useTheme } from 'styled-components'\nimport { getIconDark, getIconLight } from '@/utils/logoLoader'\n\ntype ThemeButtonType = {\n className?: string\n onClick?: () => void\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n iconLight?: string\n iconDark?: string\n}\nconst ThemeButton = ({\n className,\n onClick,\n position = 'bottom-right',\n iconLight,\n iconDark\n}: ThemeButtonType) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n const src = isDarkTheme\n ? (iconLight ?? getIconLight())\n : (iconDark ?? getIconDark())\n return (\n <ThemeButtonStyled\n className={className}\n onClick={onClick}\n $position={position}\n >\n <img src={src} alt=\"Theme Button\" />\n </ThemeButtonStyled>\n )\n}\n\nexport default ThemeButton\n","import type { DefaultTheme } from 'styled-components/'\n\nconst DarkTheme: DefaultTheme = {\n primaryColor: '#EBFFEB',\n secondaryColor: '#538A53',\n tertiaryColor: '#669966',\n bgColor: '#011F1F',\n linkColor: '#33CC66'\n}\n\nexport default DarkTheme\n","import type { DefaultTheme } from 'styled-components/'\n\nconst LightTheme: DefaultTheme = {\n primaryColor: '#011F1F',\n secondaryColor: '#33CC66',\n tertiaryColor: '#538A53',\n bgColor: '#EBFFEB',\n linkColor: '#006633'\n}\n\nexport default LightTheme\n","import type { DefaultTheme } from 'styled-components'\nimport DarkThemeDefault from '@/themes/dark'\nimport LightThemeDefault from '@/themes/light'\nimport path from 'path'\n\nfunction tryLoadUserThemeConfig(): {\n darkTheme: DefaultTheme | null\n lightTheme: DefaultTheme | null\n} | null {\n if (typeof window !== 'undefined') {\n return null\n }\n\n try {\n const userProjectRoot = process.cwd()\n const configPath = path.join(\n userProjectRoot,\n 'src',\n 'catastyle',\n 'catastyle.config.ts'\n )\n\n try {\n const resolvedPath = require.resolve(configPath)\n delete require.cache[resolvedPath]\n const config = require(configPath)\n return {\n darkTheme: config.darkTheme ?? null,\n lightTheme: config.lightTheme ?? null\n }\n } catch {\n return null\n }\n } catch {\n return null\n }\n}\n\nexport function getDarkTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.darkTheme ?? DarkThemeDefault\n}\n\nexport function getLightTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.lightTheme ?? LightThemeDefault\n}\n","import GlobalStyle, { MainContainer } from '@/styles/global'\nimport { ThemeProvider } from 'styled-components'\nimport type { DefaultTheme } from 'styled-components'\nimport { useState } from 'react'\nimport ThemeButton from '@/components/ThemeButton/ThemeButton'\nimport { getDarkTheme, getLightTheme } from '@/utils/themeLoader'\nimport type { ThemeButtonPosition } from '../ThemeButton/styles'\n\nexport type MainType = {\n children: React.ReactNode\n className?: string\n position?: ThemeButtonPosition\n darkTheme?: DefaultTheme | null\n lightTheme?: DefaultTheme | null\n centered?: boolean\n iconLight?: string\n iconDark?: string\n}\nconst Main = ({\n children,\n className,\n position,\n darkTheme: darkThemeProp,\n lightTheme: lightThemeProp,\n centered = true,\n iconLight,\n iconDark\n}: MainType) => {\n const [darkTheme, setDarkTheme] = useState(false)\n function toggleTheme() {\n setDarkTheme(!darkTheme)\n }\n const theme = darkTheme\n ? (darkThemeProp ?? getDarkTheme())\n : (lightThemeProp ?? getLightTheme())\n return (\n <ThemeProvider theme={{ ...theme, isDark: darkTheme }}>\n <GlobalStyle />\n <MainContainer className={className} $centered={centered}>\n <ThemeButton\n onClick={toggleTheme}\n {...(position !== undefined && { position })}\n {...(iconLight !== undefined && { iconLight })}\n {...(iconDark !== undefined && { iconDark })}\n />\n {children}\n </MainContainer>\n </ThemeProvider>\n )\n}\n\nexport default Main\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TitleStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n color: 'primary' | 'secondary'\n}\n\nexport const TitleStyled = styled.h1<TitleStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 32)};\n font-weight: 600;\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 32)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 32\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TitleStyled } from './styles'\n\nexport type TitleType = {\n children: React.ReactNode\n className?: string\n color: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Title = ({\n children,\n className,\n color,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TitleType) => (\n <TitleStyled\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TitleStyled>\n)\n\nexport default Title\n"]}
|
package/dist/index.mjs
CHANGED
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/fontSize.ts","../src/types/breakpoints.ts","../src/components/Button/styles.ts","../src/components/Button/Button.tsx","../src/components/Input/styles.ts","../src/components/Checkbox/styles.ts","../src/components/Text/styles.ts","../src/components/Text/Text.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Footer/styles.ts","../src/components/Footer/Footer.tsx","../src/components/Input/Input.tsx","../src/components/Label/styles.ts","../src/components/Label/Label.tsx","../src/components/Link/styles.ts","../src/components/Link/Link.tsx","../src/components/Logo/styles.ts","../src/utils/logoLoader.ts","../src/components/Logo/Logo.tsx","../src/styles/global.ts","../src/components/ThemeButton/styles.ts","../src/components/ThemeButton/ThemeButton.tsx","../src/themes/dark.ts","../src/themes/light.ts","../src/utils/themeLoader.ts","../src/components/Main/Main.tsx","../src/components/Title/styles.ts","../src/components/Title/Title.tsx"],"names":["styled","jsx","jsxs","RouterLink","ThemeButton","position","useTheme","useState"],"mappings":"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","file":"index.mjs","sourcesContent":["export type FontSize = 4 | 8 | 12 | 16 | 20 | 24 | 32 | 40\n\nexport type FontSizeType = {\n $lgFontSize?: FontSize\n $mdFontSize?: FontSize\n $smFontSize?: FontSize\n}\n\nexport const fontSizeToRem = (size: FontSize): string => {\n const remMap: Record<FontSize, string> = {\n 4: '0.25rem',\n 8: '0.5rem',\n 12: '0.75rem',\n 16: '1rem',\n 20: '1.25rem',\n 24: '1.5rem',\n 32: '2rem',\n 40: '2.5rem'\n }\n return remMap[size]\n}\n","export const BREAKPOINTS = {\n md: '1024px',\n sm: '768px'\n} as const\n\nexport const mdScreen = `@media (max-width: ${BREAKPOINTS.md})`\nexport const smScreen = `@media (max-width: ${BREAKPOINTS.sm})`\n\nexport type BreakpointType = {\n mdScreen?: boolean\n smScreen?: boolean\n}\n\nexport const applyBreakpointStyles = (\n baseStyles: string,\n mdStyles?: string,\n smStyles?: string\n) => `\n ${baseStyles}\n\n ${mdStyles ? `${mdScreen} { ${mdStyles} }` : ''}\n ${smStyles ? `${smScreen} { ${smStyles} }` : ''}\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype ButtonStyle = {\n id?: string | undefined\n disabled?: boolean | undefined\n as?: React.ElementType | undefined\n type?: 'button' | 'submit' | 'reset' | undefined\n $lgWidth?: number | undefined\n $mdWidth?: number | undefined\n $smWidth?: number | undefined\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const ButtonStyled = styled.button<ButtonStyle>`\n width: ${(props) => props.$lgWidth || 100}%;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.bgColor};\n background-color: ${(props) => props.theme.primaryColor};\n padding: 12px 8px;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: 0.2s ease;\n\n &:hover {\n color: ${(props) => props.theme.primaryColor};\n background-color: ${(props) => props.theme.secondaryColor};\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType, WidthType } from '@/types'\nimport { ButtonStyled } from './styles'\n\nexport type ButtonType = {\n children: React.ReactNode\n className?: string\n id?: string\n onClick?: () => void\n disabled?: boolean\n as?: React.ElementType\n type?: 'button' | 'submit' | 'reset'\n} & WidthType &\n FontSizeType\n\nconst Button = ({\n children,\n className,\n onClick,\n disabled,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n as,\n type,\n id\n}: ButtonType) => (\n <ButtonStyled\n className={className}\n onClick={onClick}\n disabled={disabled}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n as={as}\n type={type}\n id={id}\n >\n {children}\n </ButtonStyled>\n)\n\nexport default Button\n","import styled from 'styled-components'\nimport {\n mdScreen,\n smScreen,\n fontSizeToRem,\n type WidthType,\n type FontSize\n} from '@/types'\n\ntype InputWrapperProps = {\n display?: string | undefined\n} & WidthType\n\ntype InputStyle = {\n type?: string\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const InputWrapper = styled.div<InputWrapperProps>`\n position: relative;\n display: ${(props) => props.display || 'block'};\n width: ${(props) => props.$lgWidth || 100}%;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n\nexport const InputStyled = styled.input<InputStyle>`\n width: 100%;\n padding: 16px 8px;\n border-radius: 8px;\n border: 1px solid ${(props) => props.theme.tertiaryColor};\n background-color: transparent;\n color: ${(props) => props.theme.primaryColor};\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n &:focus {\n outline: none;\n box-shadow: 0 0 4px 2px ${(props) => props.theme.tertiaryColor};\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n\nexport const EyeButton = styled.button<InputStyle>`\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${(props) => props.theme.primaryColor};\n transition: color 0.2s ease;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n svg {\n width: 20px;\n height: 20px;\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, type WidthType } from '@/types'\nimport { InputStyled } from '@/components/Input/styles'\n\ntype CheckLabelStyled = {\n display?: string | undefined\n} & WidthType\n\nexport const CheckLabel = styled.label<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 100}%;\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n line-height: 1.5;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n`\n\nexport const CheckInput = styled(InputStyled)<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 5}%;\n min-width: 20px;\n height: 20px;\n margin: 0;\n cursor: pointer;\n box-shadow: none !important;\n flex-shrink: 0;\n align-self: center;\n vertical-align: middle;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 5}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 5}%;\n }\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TextStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n as?: 'p' | 'span'\n color?: 'primary' | 'secondary'\n}\n\nexport const TextStyled = styled.p<TextStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TextStyled } from './styles'\n\nexport type TextType = {\n as: 'p' | 'span'\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Text = ({\n as,\n children,\n className,\n color = 'primary',\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TextType) => (\n <TextStyled\n as={as}\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TextStyled>\n)\n\nexport default Text\n","import type { WidthType, FontSizeType } from '@/types'\nimport { CheckInput, CheckLabel } from './styles'\nimport Text from '@/components/Text/Text'\n\nexport type CheckboxType = {\n id: string\n name: string\n checked?: boolean\n className?: string\n $disabled?: boolean\n children: string\n display?: string\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Checkbox = ({\n id,\n name,\n checked,\n className,\n $disabled,\n children,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize = 16,\n $mdFontSize = 16,\n $smFontSize = 16,\n onClick,\n onChange\n}: CheckboxType) => (\n <CheckLabel\n className={className}\n htmlFor={id}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <CheckInput\n type=\"checkbox\"\n id={id}\n name={name}\n checked={checked}\n disabled={$disabled}\n display={display}\n onClick={onClick}\n onChange={onChange}\n />\n <Text\n as=\"span\"\n color=\"primary\"\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </Text>\n </CheckLabel>\n)\n\nexport default Checkbox\n","import styled from 'styled-components'\n\nexport const FooterStyled = styled.footer`\n width: 100%;\n margin-top: 2%;\n padding: 1rem;\n color: #fff;\n text-align: center;\n`\n","import { FooterStyled } from './styles'\ntype FooterType = {\n children: React.ReactNode\n className?: string\n}\nconst Footer = ({ children, className }: FooterType) => {\n return <FooterStyled className={className}>{children}</FooterStyled>\n}\n\nexport default Footer\n","import React, { useState } from 'react'\nimport { FaEye, FaEyeSlash } from 'react-icons/fa6'\nimport type { WidthType, FontSizeType } from '@/types'\nimport { EyeButton, InputStyled, InputWrapper } from './styles'\n\nexport type InputType = {\n type: string\n id: string\n name: string\n className?: string\n placeholder?: string\n value?: string\n display?: string\n $disabled?: boolean\n $required?: boolean\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Input = ({\n type,\n id,\n name,\n className,\n placeholder,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n $disabled,\n $required,\n onClick,\n onChange\n}: InputType) => {\n const [showPassword, setShowPassword] = useState(false)\n\n return (\n <InputWrapper\n className={className}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <InputStyled\n type={type === 'password' ? (showPassword ? 'text' : 'password') : type}\n id={id}\n name={name}\n placeholder={placeholder}\n onClick={onClick}\n onChange={onChange}\n disabled={$disabled}\n required={$required}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n />\n {type === 'password' && (\n <EyeButton type=\"button\" onClick={() => setShowPassword(!showPassword)}>\n {showPassword ? <FaEye /> : <FaEyeSlash />}\n </EyeButton>\n )}\n </InputWrapper>\n )\n}\n\nexport default Input\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, fontSizeToRem, type FontSize } from '@/types'\n\ntype LabelStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const LabelStyled = styled.label<LabelStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.primaryColor};\n margin-bottom: 4px;\n display: block;\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import React from 'react'\nimport type { FontSizeType } from '@/types'\nimport { LabelStyled } from './styles'\n\nexport type LabelType = {\n htmlFor: string\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Label = ({\n htmlFor,\n children,\n className,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LabelType) => (\n <LabelStyled\n className={className}\n htmlFor={htmlFor}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LabelStyled>\n)\n\nexport default Label\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype LinkStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n $target?: '_blank' | '_self'\n color?: 'primary' | 'secondary'\n}\n\nexport const LinkStyled = styled.a<LinkStyledProps>`\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.color === 'secondary'\n ? props.theme.secondaryColor\n : props.theme.linkColor};\n text-decoration: none;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: normal;\n background-image: linear-gradient(currentColor, currentColor);\n background-position: 0 100%;\n background-size: 0% 2px;\n background-repeat: no-repeat;\n transition:\n background-size 0.2s,\n background-position 0s 0.2s;\n\n &:hover {\n background-position: 100% 100%;\n background-size: 100% 2px;\n }\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { LinkStyled } from './styles'\nimport { Link as RouterLink } from 'react-router-dom'\n\nexport type LinkType = {\n href?: string\n to?: string\n children: React.ReactNode\n className?: string\n $target?: '_blank' | '_self'\n $isInternal?: boolean\n} & FontSizeType\n\nconst Link = ({\n href,\n to,\n children,\n className,\n $target,\n $isInternal = false,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LinkType) => {\n if ($isInternal && to) {\n return (\n <RouterLink to={to} style={{ textDecoration: 'none', color: 'inherit' }}>\n <LinkStyled\n className={className}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n </RouterLink>\n )\n }\n\n return (\n <LinkStyled\n className={className}\n href={href}\n target={$target}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n )\n}\n\nexport default Link\n","import styled from 'styled-components'\nimport type { WidthType } from '@/types'\nimport { mdScreen, smScreen } from '@/types'\n\nexport const LogoStyled = styled.div<WidthType>`\n width: ${(props) => props.$lgWidth || 100}%;\n & > img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: contain;\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n","import LogoLightDefault from '@/assets/logos/light-theme.svg'\nimport LogoDarkDefault from '@/assets/logos/dark-theme.svg'\nimport IconLightDefault from '@/assets/icon/icon-light-theme.svg'\nimport IconDarkDefault from '@/assets/icon/icon-dark-theme.svg'\n\nexport function getLogoLight(): string {\n return LogoLightDefault\n}\n\nexport function getLogoDark(): string {\n return LogoDarkDefault\n}\n\nexport function getIconLight(): string {\n return IconLightDefault\n}\n\nexport function getIconDark(): string {\n return IconDarkDefault\n}\n","import { LogoStyled } from './styles'\nimport type { WidthType } from '@/types'\nimport { useTheme } from 'styled-components'\nimport { getLogoLight, getLogoDark } from '@/utils/logoLoader'\n\ntype LogoProps = {\n className?: string\n logoLight?: string\n logoDark?: string\n} & WidthType\n\nconst Logo = ({\n className,\n $lgWidth,\n $mdWidth,\n $smWidth,\n logoLight,\n logoDark\n}: LogoProps) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n const src = isDarkTheme\n ? (logoDark ?? getLogoDark())\n : (logoLight ?? getLogoLight())\n\n return (\n <LogoStyled\n className={className}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <img src={src} alt=\"Logo\" />\n </LogoStyled>\n )\n}\n\nexport default Logo\n","import styled, { createGlobalStyle } from 'styled-components'\n\nconst GlobalStyle = createGlobalStyle`\n*{\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n list-style: none;\n font-family: \"Inter\", sans-serif;\n}\n\nhtml, body {\n min-height: 100vh;\n}\n\nbody{\n background-color: ${(props) => props.theme.bgColor};\n color: ${(props) => props.theme.primaryColor};\n`\nexport default GlobalStyle\n\nexport const MainContainer = styled.main<{ $centered?: boolean }>`\n width: ${(props) => (props.$centered !== false ? '100vw' : '100%')};\n max-width: ${(props) => (props.$centered !== false ? '1440px' : 'none')};\n margin: ${(props) => (props.$centered !== false ? '0 auto' : '0')};\n min-height: ${(props) => (props.$centered !== false ? '100vh' : 'auto')};\n height: ${(props) => (props.$centered !== false ? '100vh' : 'auto')};\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: ${(props) =>\n props.$centered !== false ? 'center' : 'flex-start'};\n overflow-y: auto;\n &::-webkit-scrollbar {\n display: none;\n }\n`\n","import styled, { css } from 'styled-components'\nimport { ButtonStyled } from '@/components/Button/styles'\nexport type ThemeButtonPosition =\n | 'top-right'\n | 'top-left'\n | 'bottom-right'\n | 'bottom-left'\ntype ButtonPosition = { $position?: ThemeButtonPosition }\nconst position = [\n {\n 'top-right': css`\n top: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'top-left': css`\n top: 1.25rem;\n left: 1.25rem;\n `\n },\n {\n 'bottom-right': css`\n bottom: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'bottom-left': css`\n bottom: 1.25rem;\n left: 1.25rem;\n `\n }\n]\nconst getPosition = (key: ThemeButtonPosition) =>\n (\n position.find((pos) => key in pos) as\n | Record<ThemeButtonPosition, ReturnType<typeof css>>\n | undefined\n )?.[key]\nexport const ThemeButton = styled(ButtonStyled)<ButtonPosition>`\n position: fixed;\n width: 3rem;\n height: 3rem;\n ${(props) => getPosition(props.$position ?? 'bottom-right')}\n z-index: 9999;\n border-radius: 50%;\n padding: 1%;\n display: flex;\n align-items: center;\n justify-content: center;\n & > img {\n width: 100%;\n height: 100%;\n }\n &:hover {\n background-color: ${(props) => props.theme.tertiaryColor};\n box-shadow: 0 0 10px 0 ${(props) => props.theme.primaryColor};\n }\n`\n","import { ThemeButton as ThemeButtonStyled } from './styles'\nimport { useTheme } from 'styled-components'\nimport { getIconDark, getIconLight } from '@/utils/logoLoader'\n\ntype ThemeButtonType = {\n className?: string\n onClick?: () => void\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n iconLight?: string\n iconDark?: string\n}\nconst ThemeButton = ({\n className,\n onClick,\n position = 'bottom-right',\n iconLight,\n iconDark\n}: ThemeButtonType) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n const src = isDarkTheme\n ? (iconLight ?? getIconLight())\n : (iconDark ?? getIconDark())\n return (\n <ThemeButtonStyled\n className={className}\n onClick={onClick}\n $position={position}\n >\n <img src={src} alt=\"Theme Button\" />\n </ThemeButtonStyled>\n )\n}\n\nexport default ThemeButton\n","import type { DefaultTheme } from 'styled-components/'\n\nconst DarkTheme: DefaultTheme = {\n primaryColor: '#EBFFEB',\n secondaryColor: '#538A53',\n tertiaryColor: '#669966',\n bgColor: '#011F1F',\n linkColor: '#33CC66'\n}\n\nexport default DarkTheme\n","import type { DefaultTheme } from 'styled-components/'\n\nconst LightTheme: DefaultTheme = {\n primaryColor: '#011F1F',\n secondaryColor: '#33CC66',\n tertiaryColor: '#538A53',\n bgColor: '#EBFFEB',\n linkColor: '#006633'\n}\n\nexport default LightTheme\n","import type { DefaultTheme } from 'styled-components'\nimport DarkThemeDefault from '@/themes/dark'\nimport LightThemeDefault from '@/themes/light'\nimport path from 'path'\n\nfunction tryLoadUserThemeConfig(): {\n darkTheme: DefaultTheme | null\n lightTheme: DefaultTheme | null\n} | null {\n if (typeof window !== 'undefined') {\n return null\n }\n\n try {\n const userProjectRoot = process.cwd()\n const configPath = path.join(\n userProjectRoot,\n 'src',\n 'catastyle',\n 'catastyle.config.ts'\n )\n\n try {\n const resolvedPath = require.resolve(configPath)\n delete require.cache[resolvedPath]\n const config = require(configPath)\n return {\n darkTheme: config.darkTheme ?? null,\n lightTheme: config.lightTheme ?? null\n }\n } catch {\n return null\n }\n } catch {\n return null\n }\n}\n\nexport function getDarkTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.darkTheme ?? DarkThemeDefault\n}\n\nexport function getLightTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.lightTheme ?? LightThemeDefault\n}\n","import GlobalStyle, { MainContainer } from '@/styles/global'\nimport { ThemeProvider } from 'styled-components'\nimport type { DefaultTheme } from 'styled-components'\nimport { useState } from 'react'\nimport ThemeButton from '@/components/ThemeButton/ThemeButton'\nimport { getDarkTheme, getLightTheme } from '@/utils/themeLoader'\nimport type { ThemeButtonPosition } from '../ThemeButton/styles'\n\nexport type MainType = {\n children: React.ReactNode\n className?: string\n position?: ThemeButtonPosition\n darkTheme?: DefaultTheme | null\n lightTheme?: DefaultTheme | null\n centered?: boolean\n iconLight?: string\n iconDark?: string\n}\nconst Main = ({\n children,\n className,\n position,\n darkTheme: darkThemeProp,\n lightTheme: lightThemeProp,\n centered = true,\n iconLight,\n iconDark\n}: MainType) => {\n const [darkTheme, setDarkTheme] = useState(false)\n function toggleTheme() {\n setDarkTheme(!darkTheme)\n }\n const theme = darkTheme\n ? (darkThemeProp ?? getDarkTheme())\n : (lightThemeProp ?? getLightTheme())\n return (\n <ThemeProvider theme={{ ...theme, isDark: darkTheme }}>\n <GlobalStyle />\n <MainContainer className={className} $centered={centered}>\n <ThemeButton\n onClick={toggleTheme}\n {...(position !== undefined && { position })}\n {...(iconLight !== undefined && { iconLight })}\n {...(iconDark !== undefined && { iconDark })}\n />\n {children}\n </MainContainer>\n </ThemeProvider>\n )\n}\n\nexport default Main\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TitleStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n color: 'primary' | 'secondary'\n}\n\nexport const TitleStyled = styled.h1<TitleStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 32)};\n font-weight: 600;\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 32)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 32\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TitleStyled } from './styles'\n\nexport type TitleType = {\n children: string\n className?: string\n color: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Title = ({\n children,\n className,\n color,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TitleType) => (\n <TitleStyled\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TitleStyled>\n)\n\nexport default Title\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/fontSize.ts","../src/types/breakpoints.ts","../src/components/Button/styles.ts","../src/components/Button/Button.tsx","../src/components/Input/styles.ts","../src/components/Checkbox/styles.ts","../src/components/Text/styles.ts","../src/components/Text/Text.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Footer/styles.ts","../src/components/Footer/Footer.tsx","../src/components/Input/Input.tsx","../src/components/Label/styles.ts","../src/components/Label/Label.tsx","../src/components/Link/styles.ts","../src/components/Link/Link.tsx","../src/components/Logo/styles.ts","../src/utils/logoLoader.ts","../src/components/Logo/Logo.tsx","../src/styles/global.ts","../src/components/ThemeButton/styles.ts","../src/components/ThemeButton/ThemeButton.tsx","../src/themes/dark.ts","../src/themes/light.ts","../src/utils/themeLoader.ts","../src/components/Main/Main.tsx","../src/components/Title/styles.ts","../src/components/Title/Title.tsx"],"names":["styled","jsx","jsxs","RouterLink","ThemeButton","position","useTheme","useState"],"mappings":";;;;;;;;;;;;;;;;AAQO,IAAM,aAAA,GAAgB,CAAC,IAAA,KAA2B;AACvD,EAAA,MAAM,MAAA,GAAmC;AAAA,IACvC,CAAA,EAAG,SAAA;AAAA,IACH,CAAA,EAAG,QAAA;AAAA,IACH,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI,QAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AACA,EAAA,OAAO,OAAO,IAAI,CAAA;AACpB;;;ACpBO,IAAM,WAAA,GAAc;AAAA,EACzB,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEO,IAAM,QAAA,GAAW,CAAA,mBAAA,EAAsB,WAAA,CAAY,EAAE,CAAA,CAAA;AACrD,IAAM,QAAA,GAAW,CAAA,mBAAA,EAAsB,WAAA,CAAY,EAAE,CAAA,CAAA;;;ACUrD,IAAM,eAAeA,OAAA,CAAO,MAAA;AAAA,SAAA,EACxB,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,IAAY,GAAG,CAAA;AAAA,aAAA,EAC5B,CAAC,KAAA,KAAU,aAAA,CAAc,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA;AAAA,SAAA,EAErD,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,OAAO,CAAA;AAAA,oBAAA,EACnB,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,WAAA,EAQ5C,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,YAAY,CAAA;AAAA,sBAAA,EACxB,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;AAAA;;AAAA,EAAA,EAGzD,QAAQ,CAAA;AAAA,WAAA,EACC,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,YAAY,GAAG,CAAA;AAAA,eAAA,EAC9C,CAAC,UACZ,aAAA,CAAc,KAAA,CAAM,eAAe,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA;;AAAA,EAAA,EAG7D,QAAQ,CAAA;AAAA,WAAA,EACC,CAAC,UACR,KAAA,CAAM,QAAA,IAAY,MAAM,QAAA,IAAY,KAAA,CAAM,YAAY,GAAG,CAAA;AAAA,eAAA,EAC9C,CAAC,KAAA,KACZ,aAAA;AAAA,EACE,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,WAAA,IAAe,MAAM,WAAA,IAAe;AACjE,CAAC,CAAA;AAAA;AAAA,CAAA;AC/BP,IAAM,SAAS,CAAC;AAAA,EACd,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,EAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,qBACE,GAAA;AAAA,EAAC,YAAA;AAAA,EAAA;AAAA,IACC,SAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,EAAA;AAAA,IACA,IAAA;AAAA,IACA,EAAA;AAAA,IAEC;AAAA;AACH,CAAA;AAGF,IAAO,cAAA,GAAQ;AC3BR,IAAM,eAAeA,OAAAA,CAAO,GAAA;AAAA;AAAA,WAAA,EAEtB,CAAC,KAAA,KAAU,KAAA,CAAM,OAAA,IAAW,OAAO,CAAA;AAAA,SAAA,EACrC,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,IAAY,GAAG,CAAA;;AAAA,EAAA,EAEvC,QAAQ,CAAA;AAAA,WAAA,EACC,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,YAAY,GAAG,CAAA;AAAA;;AAAA,EAAA,EAG3D,QAAQ,CAAA;AAAA,WAAA,EACC,CAAC,UACR,KAAA,CAAM,QAAA,IAAY,MAAM,QAAA,IAAY,KAAA,CAAM,YAAY,GAAG,CAAA;AAAA;AAAA,CAAA;AAIxD,IAAM,cAAcA,OAAAA,CAAO,KAAA;AAAA;AAAA;AAAA;AAAA,oBAAA,EAIZ,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA;AAAA;AAAA,SAAA,EAE/C,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,YAAY,CAAA;AAAA,aAAA,EAC/B,CAAC,KAAA,KAAU,aAAA,CAAc,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;;AAAA;AAAA;AAAA,4BAAA,EAIlC,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA;AAAA;;AAAA,EAAA,EAG9D,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,UACZ,aAAA,CAAc,KAAA,CAAM,eAAe,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA;;AAAA,EAAA,EAG7D,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,KAAA,KACZ,aAAA;AAAA,EACE,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,WAAA,IAAe,MAAM,WAAA,IAAe;AACjE,CAAC,CAAA;AAAA;AAAA,CAAA;AAIA,IAAM,YAAYA,OAAAA,CAAO,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAA,EAYrB,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,YAAY,CAAA;AAAA;AAAA,aAAA,EAE/B,CAAC,KAAA,KAAU,aAAA,CAAc,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA,EAAA,EAO5D,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,UACZ,aAAA,CAAc,KAAA,CAAM,eAAe,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA;;AAAA,EAAA,EAG7D,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,KAAA,KACZ,aAAA;AAAA,EACE,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,WAAA,IAAe,MAAM,WAAA,IAAe;AACjE,CAAC,CAAA;AAAA;AAAA,CAAA;;;ACpFA,IAAM,aAAaA,OAAAA,CAAO,KAAA;AAAA,SAAA,EACtB,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,IAAY,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,EAAA,EAOvC,QAAQ,CAAA;AAAA,WAAA,EACC,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,YAAY,GAAG,CAAA;AAAA;AAAA;;AAAA,EAAA,EAI3D,QAAQ,CAAA;AAAA,WAAA,EACC,CAAC,UACR,KAAA,CAAM,QAAA,IAAY,MAAM,QAAA,IAAY,KAAA,CAAM,YAAY,GAAG,CAAA;AAAA;AAAA;AAAA,CAAA;AAKxD,IAAM,UAAA,GAAaA,QAAO,WAAW,CAAA;AAAA,SAAA,EACjC,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,IAAY,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,EAAA,EAUrC,QAAQ,CAAA;AAAA,WAAA,EACC,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,YAAY,CAAC,CAAA;AAAA;;AAAA,EAAA,EAGzD,QAAQ,CAAA;AAAA,WAAA,EACC,CAAC,UACR,KAAA,CAAM,QAAA,IAAY,MAAM,QAAA,IAAY,KAAA,CAAM,YAAY,CAAC,CAAA;AAAA;AAAA,CAAA;AClCtD,IAAM,aAAaA,OAAAA,CAAO,CAAA;AAAA,aAAA,EAClB,CAAC,KAAA,KAAU,aAAA,CAAc,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA,SAAA,EACrD,CAAC,KAAA,KACR,KAAA,CAAM,KAAA,KAAU,SAAA,GACZ,MAAM,KAAA,CAAM,YAAA,GACZ,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;;AAAA,EAAA,EAE9B,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,UACZ,aAAA,CAAc,KAAA,CAAM,eAAe,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA;;AAAA,EAAA,EAG7D,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,KAAA,KACZ,aAAA;AAAA,EACE,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,WAAA,IAAe,MAAM,WAAA,IAAe;AACjE,CAAC,CAAA;AAAA;AAAA,CAAA;ACjBP,IAAM,OAAO,CAAC;AAAA,EACZ,EAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA,GAAQ,SAAA;AAAA,EACR,WAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,qBACEC,GAAAA;AAAA,EAAC,UAAA;AAAA,EAAA;AAAA,IACC,EAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IAEC;AAAA;AACH,CAAA;AAGF,IAAO,YAAA,GAAQ;ACdf,IAAM,WAAW,CAAC;AAAA,EAChB,EAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,EAAA;AAAA,EACd,WAAA,GAAc,EAAA;AAAA,EACd,WAAA,GAAc,EAAA;AAAA,EACd,OAAA;AAAA,EACA;AACF,CAAA,qBACE,IAAA;AAAA,EAAC,UAAA;AAAA,EAAA;AAAA,IACC,SAAA;AAAA,IACA,OAAA,EAAS,EAAA;AAAA,IACT,OAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IAEA,QAAA,EAAA;AAAA,sBAAAA,GAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,UAAA;AAAA,UACL,EAAA;AAAA,UACA,IAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA,EAAU,SAAA;AAAA,UACV,OAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,sBACAA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAG,MAAA;AAAA,UACH,KAAA,EAAM,SAAA;AAAA,UACN,WAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UAEC;AAAA;AAAA;AACH;AAAA;AACF,CAAA;AAGF,IAAO,gBAAA,GAAQ;AC9DR,IAAM,eAAeD,OAAAA,CAAO,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;ACGnC,IAAM,MAAA,GAAS,CAAC,EAAE,QAAA,EAAU,WAAU,KAAkB;AACtD,EAAA,uBAAOC,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAuB,QAAA,EAAS,CAAA;AACvD,CAAA;AAEA,IAAO,cAAA,GAAQ;ACWf,IAAM,QAAQ,CAAC;AAAA,EACb,IAAA;AAAA,EACA,EAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,KAAiB;AACf,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AAEtD,EAAA,uBACEC,IAAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,IAAA,KAAS,UAAA,GAAc,YAAA,GAAe,SAAS,UAAA,GAAc,IAAA;AAAA,YACnE,EAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAA;AAAA,YACA,OAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA,EAAU,SAAA;AAAA,YACV,QAAA,EAAU,SAAA;AAAA,YACV,WAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QACC,IAAA,KAAS,8BACRA,GAAAA,CAAC,aAAU,IAAA,EAAK,QAAA,EAAS,SAAS,MAAM,eAAA,CAAgB,CAAC,YAAY,CAAA,EAClE,yCAAeA,GAAAA,CAAC,SAAM,CAAA,mBAAKA,GAAAA,CAAC,UAAA,EAAA,EAAW,CAAA,EAC1C;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ;AC7DR,IAAM,cAAcD,OAAAA,CAAO,KAAA;AAAA,aAAA,EACnB,CAAC,KAAA,KAAU,aAAA,CAAc,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA;AAAA,SAAA,EAErD,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,YAAY,CAAA;AAAA;AAAA;;AAAA,EAAA,EAI1C,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,UACZ,aAAA,CAAc,KAAA,CAAM,eAAe,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA;;AAAA,EAAA,EAG7D,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,KAAA,KACZ,aAAA;AAAA,EACE,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,WAAA,IAAe,MAAM,WAAA,IAAe;AACjE,CAAC,CAAA;AAAA;AAAA,CAAA;ACdP,IAAM,QAAQ,CAAC;AAAA,EACb,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,qBACEC,GAAAA;AAAA,EAAC,WAAA;AAAA,EAAA;AAAA,IACC,SAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IAEC;AAAA;AACH,CAAA;AAGF,IAAO,aAAA,GAAQ;ACnBR,IAAM,aAAaD,OAAAA,CAAO,CAAA;AAAA,SAAA,EACtB,CAAC,KAAA,KACR,KAAA,CAAM,KAAA,KAAU,SAAA,GACZ,MAAM,KAAA,CAAM,YAAA,GACZ,KAAA,CAAM,KAAA,KAAU,cACd,KAAA,CAAM,KAAA,CAAM,cAAA,GACZ,KAAA,CAAM,MAAM,SAAS,CAAA;AAAA;AAAA,aAAA,EAEhB,CAAC,KAAA,KAAU,aAAA,CAAc,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,EAc5D,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,UACZ,aAAA,CAAc,KAAA,CAAM,eAAe,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA;;AAAA,EAAA,EAG7D,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,KAAA,KACZ,aAAA;AAAA,EACE,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,WAAA,IAAe,MAAM,WAAA,IAAe;AACjE,CAAC,CAAA;AAAA;AAAA,CAAA;AC7BP,IAAM,OAAO,CAAC;AAAA,EACZ,IAAA;AAAA,EACA,EAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,WAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAgB;AACd,EAAA,IAAI,eAAe,EAAA,EAAI;AACrB,IAAA,uBACEC,GAAAA,CAACE,MAAA,EAAA,EAAW,EAAA,EAAQ,KAAA,EAAO,EAAE,cAAA,EAAgB,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAU,EACpE,QAAA,kBAAAF,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,SAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QAEC;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA,EAAQ,OAAA;AAAA,MACR,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ;ACjDR,IAAM,aAAaD,OAAAA,CAAO,GAAA;AAAA,SAAA,EACtB,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,IAAY,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,EAAA,EAQvC,QAAQ,CAAA;AAAA,WAAA,EACC,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,YAAY,GAAG,CAAA;AAAA;;AAAA,EAAA,EAG3D,QAAQ,CAAA;AAAA,WAAA,EACC,CAAC,UACR,KAAA,CAAM,QAAA,IAAY,MAAM,QAAA,IAAY,KAAA,CAAM,YAAY,GAAG,CAAA;AAAA;AAAA,CAAA;;;;;;;;;;;;;;;ACdxD,SAAS,YAAA,GAAuB;AACrC,EAAA,OAAO,mBAAA;AACT;AAEO,SAAS,WAAA,GAAsB;AACpC,EAAA,OAAO,kBAAA;AACT;AAEO,SAAS,YAAA,GAAuB;AACrC,EAAA,OAAO,wBAAA;AACT;AAEO,SAAS,WAAA,GAAsB;AACpC,EAAA,OAAO,uBAAA;AACT;ACRA,IAAM,OAAO,CAAC;AAAA,EACZ,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAAiB;AACf,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,MAAM,WAAA,GAAc,MAAM,MAAA,KAAW,IAAA;AACrC,EAAA,MAAM,MAAM,WAAA,GACP,QAAA,IAAY,WAAA,EAAY,GACxB,aAAa,YAAA,EAAa;AAE/B,EAAA,uBACEC,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MAEA,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,KAAI,MAAA,EAAO;AAAA;AAAA,GAC5B;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ;ACnCf,IAAM,WAAA,GAAc,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA,oBAAA,EAcE,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,OAAO,CAAA;AAAA,SAAA,EACzC,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,YAAY,CAAA;AAAA,CAAA;AAE9C,IAAO,cAAA,GAAQ;AAER,IAAM,gBAAgBD,OAAAA,CAAO,IAAA;AAAA,SAAA,EACzB,CAAC,KAAA,KAAW,KAAA,CAAM,SAAA,KAAc,KAAA,GAAQ,UAAU,MAAO,CAAA;AAAA,aAAA,EACrD,CAAC,KAAA,KAAW,KAAA,CAAM,SAAA,KAAc,KAAA,GAAQ,WAAW,MAAO,CAAA;AAAA,UAAA,EAC7D,CAAC,KAAA,KAAW,KAAA,CAAM,SAAA,KAAc,KAAA,GAAQ,WAAW,GAAI,CAAA;AAAA,cAAA,EACnD,CAAC,KAAA,KAAW,KAAA,CAAM,SAAA,KAAc,KAAA,GAAQ,UAAU,MAAO,CAAA;AAAA,UAAA,EAC7D,CAAC,KAAA,KAAW,KAAA,CAAM,SAAA,KAAc,KAAA,GAAQ,UAAU,MAAO,CAAA;AAAA;AAAA;AAAA;AAAA,mBAAA,EAIhD,CAAC,KAAA,KAClB,KAAA,CAAM,SAAA,KAAc,KAAA,GAAQ,WAAW,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACvBvD,IAAM,QAAA,GAAW;AAAA,EACf;AAAA,IACE,WAAA,EAAa,GAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GAIf;AAAA,EACA;AAAA,IACE,UAAA,EAAY,GAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GAId;AAAA,EACA;AAAA,IACE,cAAA,EAAgB,GAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GAIlB;AAAA,EACA;AAAA,IACE,aAAA,EAAe,GAAA;AAAA;AAAA;AAAA,IAAA;AAAA;AAKnB,CAAA;AACA,IAAM,WAAA,GAAc,CAAC,GAAA,KAEjB,QAAA,CAAS,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,IAAO,GAAG,CAAA,GAG/B,GAAG,CAAA;AACF,IAAM,WAAA,GAAcA,QAAO,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA,EAAA,EAI1C,CAAC,KAAA,KAAU,WAAA,CAAY,KAAA,CAAM,SAAA,IAAa,cAAc,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,EAYrC,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA;AAAA,2BAAA,EAC/B,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,YAAY,CAAA;AAAA;AAAA,CAAA;AC9ChE,IAAMI,eAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAAC,SAAAA,GAAW,cAAA;AAAA,EACX,SAAA;AAAA,EACA;AACF,CAAA,KAAuB;AACrB,EAAA,MAAM,QAAQC,QAAAA,EAAS;AACvB,EAAA,MAAM,WAAA,GAAc,MAAM,MAAA,KAAW,IAAA;AACrC,EAAA,MAAM,MAAM,WAAA,GACP,SAAA,IAAa,YAAA,EAAa,GAC1B,YAAY,WAAA,EAAY;AAC7B,EAAA,uBACEL,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA,EAAWI,SAAAA;AAAA,MAEX,QAAA,kBAAAJ,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,KAAI,cAAA,EAAe;AAAA;AAAA,GACpC;AAEJ,CAAA;AAEA,IAAO,mBAAA,GAAQG;;;AChCf,IAAM,SAAA,GAA0B;AAAA,EAC9B,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EAAgB,SAAA;AAAA,EAChB,aAAA,EAAe,SAAA;AAAA,EACf,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW;AACb,CAAA;AAEA,IAAO,YAAA,GAAQ;;;ACRf,IAAM,UAAA,GAA2B;AAAA,EAC/B,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EAAgB,SAAA;AAAA,EAChB,aAAA,EAAe,SAAA;AAAA,EACf,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW;AACb,CAAA;AAEA,IAAO,aAAA,GAAQ;ACLf,SAAS,sBAAA,GAGA;AACP,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,eAAA,GAAkB,QAAQ,GAAA,EAAI;AACpC,IAAA,MAAM,aAAa,IAAA,CAAK,IAAA;AAAA,MACtB,eAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,YAAA,GAAe,SAAA,CAAQ,OAAA,CAAQ,UAAU,CAAA;AAC/C,MAAA,OAAO,SAAA,CAAQ,MAAM,YAAY,CAAA;AACjC,MAAA,MAAM,MAAA,GAAS,UAAQ,UAAU,CAAA;AACjC,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,OAAO,SAAA,IAAa,IAAA;AAAA,QAC/B,UAAA,EAAY,OAAO,UAAA,IAAc;AAAA,OACnC;AAAA,IACF,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAEO,SAAS,YAAA,GAA6B;AAC3C,EAAA,MAAM,aAAa,sBAAA,EAAuB;AAC1C,EAAA,OAAO,YAAY,SAAA,IAAa,YAAA;AAClC;AAEO,SAAS,aAAA,GAA8B;AAC5C,EAAA,MAAM,aAAa,sBAAA,EAAuB;AAC1C,EAAA,OAAO,YAAY,UAAA,IAAc,aAAA;AACnC;AC5BA,IAAM,OAAO,CAAC;AAAA,EACZ,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,EAAAC,SAAAA;AAAA,EACA,SAAA,EAAW,aAAA;AAAA,EACX,UAAA,EAAY,cAAA;AAAA,EACZ,QAAA,GAAW,IAAA;AAAA,EACX,SAAA;AAAA,EACA;AACF,CAAA,KAAgB;AACd,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIE,SAAS,KAAK,CAAA;AAChD,EAAA,SAAS,WAAA,GAAc;AACrB,IAAA,YAAA,CAAa,CAAC,SAAS,CAAA;AAAA,EACzB;AACA,EAAA,MAAM,QAAQ,SAAA,GACT,aAAA,IAAiB,YAAA,EAAa,GAC9B,kBAAkB,aAAA,EAAc;AACrC,EAAA,uBACEL,KAAC,aAAA,EAAA,EAAc,KAAA,EAAO,EAAE,GAAG,KAAA,EAAO,MAAA,EAAQ,SAAA,EAAU,EAClD,QAAA,EAAA;AAAA,oBAAAD,IAAC,cAAA,EAAA,EAAY,CAAA;AAAA,oBACbC,IAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAsB,WAAW,QAAA,EAC9C,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,WAAA;AAAA,UACR,GAAII,SAAAA,KAAa,MAAA,IAAa,EAAE,UAAAA,SAAAA,EAAS;AAAA,UACzC,GAAI,SAAA,KAAc,MAAA,IAAa,EAAE,SAAA,EAAU;AAAA,UAC3C,GAAI,QAAA,KAAa,MAAA,IAAa,EAAE,QAAA;AAAS;AAAA,OAC5C;AAAA,MACC;AAAA,KAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ;ACzCR,IAAM,cAAcL,OAAAA,CAAO,EAAA;AAAA,aAAA,EACnB,CAAC,KAAA,KAAU,aAAA,CAAc,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA;AAAA,SAAA,EAErD,CAAC,KAAA,KACR,KAAA,CAAM,KAAA,KAAU,SAAA,GACZ,MAAM,KAAA,CAAM,YAAA,GACZ,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;;AAAA,EAAA,EAE9B,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,UACZ,aAAA,CAAc,KAAA,CAAM,eAAe,KAAA,CAAM,WAAA,IAAe,EAAE,CAAC,CAAA;AAAA;;AAAA,EAAA,EAG7D,QAAQ,CAAA;AAAA,eAAA,EACK,CAAC,KAAA,KACZ,aAAA;AAAA,EACE,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,WAAA,IAAe,MAAM,WAAA,IAAe;AACjE,CAAC,CAAA;AAAA;AAAA,CAAA;AClBP,IAAM,QAAQ,CAAC;AAAA,EACb,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,qBACEC,GAAAA;AAAA,EAAC,WAAA;AAAA,EAAA;AAAA,IACC,SAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IAEC;AAAA;AACH,CAAA;AAGF,IAAO,aAAA,GAAQ","file":"index.mjs","sourcesContent":["export type FontSize = 4 | 8 | 12 | 16 | 20 | 24 | 32 | 40\n\nexport type FontSizeType = {\n $lgFontSize?: FontSize\n $mdFontSize?: FontSize\n $smFontSize?: FontSize\n}\n\nexport const fontSizeToRem = (size: FontSize): string => {\n const remMap: Record<FontSize, string> = {\n 4: '0.25rem',\n 8: '0.5rem',\n 12: '0.75rem',\n 16: '1rem',\n 20: '1.25rem',\n 24: '1.5rem',\n 32: '2rem',\n 40: '2.5rem'\n }\n return remMap[size]\n}\n","export const BREAKPOINTS = {\n md: '1024px',\n sm: '768px'\n} as const\n\nexport const mdScreen = `@media (max-width: ${BREAKPOINTS.md})`\nexport const smScreen = `@media (max-width: ${BREAKPOINTS.sm})`\n\nexport type BreakpointType = {\n mdScreen?: boolean\n smScreen?: boolean\n}\n\nexport const applyBreakpointStyles = (\n baseStyles: string,\n mdStyles?: string,\n smStyles?: string\n) => `\n ${baseStyles}\n\n ${mdStyles ? `${mdScreen} { ${mdStyles} }` : ''}\n ${smStyles ? `${smScreen} { ${smStyles} }` : ''}\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype ButtonStyle = {\n id?: string | undefined\n disabled?: boolean | undefined\n as?: React.ElementType | undefined\n type?: 'button' | 'submit' | 'reset' | undefined\n $lgWidth?: number | undefined\n $mdWidth?: number | undefined\n $smWidth?: number | undefined\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const ButtonStyled = styled.button<ButtonStyle>`\n width: ${(props) => props.$lgWidth || 100}%;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.bgColor};\n background-color: ${(props) => props.theme.primaryColor};\n padding: 12px 8px;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: 0.2s ease;\n\n &:hover {\n color: ${(props) => props.theme.primaryColor};\n background-color: ${(props) => props.theme.secondaryColor};\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType, WidthType } from '@/types'\nimport { ButtonStyled } from './styles'\n\nexport type ButtonType = {\n children: React.ReactNode\n className?: string\n id?: string\n onClick?: () => void\n disabled?: boolean\n as?: React.ElementType\n type?: 'button' | 'submit' | 'reset'\n} & WidthType &\n FontSizeType\n\nconst Button = ({\n children,\n className,\n onClick,\n disabled,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n as,\n type,\n id\n}: ButtonType) => (\n <ButtonStyled\n className={className}\n onClick={onClick}\n disabled={disabled}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n as={as}\n type={type}\n id={id}\n >\n {children}\n </ButtonStyled>\n)\n\nexport default Button\n","import styled from 'styled-components'\nimport {\n mdScreen,\n smScreen,\n fontSizeToRem,\n type WidthType,\n type FontSize\n} from '@/types'\n\ntype InputWrapperProps = {\n display?: string | undefined\n} & WidthType\n\ntype InputStyle = {\n type?: string\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const InputWrapper = styled.div<InputWrapperProps>`\n position: relative;\n display: ${(props) => props.display || 'block'};\n width: ${(props) => props.$lgWidth || 100}%;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n\nexport const InputStyled = styled.input<InputStyle>`\n width: 100%;\n padding: 16px 8px;\n border-radius: 8px;\n border: 1px solid ${(props) => props.theme.tertiaryColor};\n background-color: transparent;\n color: ${(props) => props.theme.primaryColor};\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n &:focus {\n outline: none;\n box-shadow: 0 0 4px 2px ${(props) => props.theme.tertiaryColor};\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n\nexport const EyeButton = styled.button<InputStyle>`\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${(props) => props.theme.primaryColor};\n transition: color 0.2s ease;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n\n svg {\n width: 20px;\n height: 20px;\n }\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, type WidthType } from '@/types'\nimport { InputStyled } from '@/components/Input/styles'\n\ntype CheckLabelStyled = {\n display?: string | undefined\n} & WidthType\n\nexport const CheckLabel = styled.label<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 100}%;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n line-height: 1.5;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n justify-content: center;\n }\n`\n\nexport const CheckInput = styled(InputStyled)<CheckLabelStyled>`\n width: ${(props) => props.$lgWidth || 5}%;\n min-width: 20px;\n height: 20px;\n margin: 0;\n cursor: pointer;\n box-shadow: none !important;\n flex-shrink: 0;\n align-self: center;\n vertical-align: middle;\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 5}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 5}%;\n }\n`\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TextStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n as?: 'p' | 'span'\n color?: 'primary' | 'secondary'\n}\n\nexport const TextStyled = styled.p<TextStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TextStyled } from './styles'\n\nexport type TextType = {\n as: 'p' | 'span'\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Text = ({\n as,\n children,\n className,\n color = 'primary',\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TextType) => (\n <TextStyled\n as={as}\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TextStyled>\n)\n\nexport default Text\n","import type { WidthType, FontSizeType } from '@/types'\nimport { CheckInput, CheckLabel } from './styles'\nimport Text from '@/components/Text/Text'\n\nexport type CheckboxType = {\n id: string\n name: string\n checked?: boolean\n className?: string\n $disabled?: boolean\n children: string\n display?: string\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Checkbox = ({\n id,\n name,\n checked,\n className,\n $disabled,\n children,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize = 16,\n $mdFontSize = 16,\n $smFontSize = 16,\n onClick,\n onChange\n}: CheckboxType) => (\n <CheckLabel\n className={className}\n htmlFor={id}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <CheckInput\n type=\"checkbox\"\n id={id}\n name={name}\n checked={checked}\n disabled={$disabled}\n display={display}\n onClick={onClick}\n onChange={onChange}\n />\n <Text\n as=\"span\"\n color=\"primary\"\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </Text>\n </CheckLabel>\n)\n\nexport default Checkbox\n","import styled from 'styled-components'\n\nexport const FooterStyled = styled.footer`\n width: 100%;\n margin-top: 2%;\n padding: 1rem;\n color: #fff;\n text-align: center;\n`\n","import { FooterStyled } from './styles'\ntype FooterType = {\n children: React.ReactNode\n className?: string\n}\nconst Footer = ({ children, className }: FooterType) => {\n return <FooterStyled className={className}>{children}</FooterStyled>\n}\n\nexport default Footer\n","import React, { useState } from 'react'\nimport { FaEye, FaEyeSlash } from 'react-icons/fa6'\nimport type { WidthType, FontSizeType } from '@/types'\nimport { EyeButton, InputStyled, InputWrapper } from './styles'\n\nexport type InputType = {\n type: string\n id: string\n name: string\n className?: string\n placeholder?: string\n value?: string\n display?: string\n $disabled?: boolean\n $required?: boolean\n onClick?: () => void\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n} & WidthType &\n FontSizeType\n\nconst Input = ({\n type,\n id,\n name,\n className,\n placeholder,\n display,\n $lgWidth,\n $mdWidth,\n $smWidth,\n $lgFontSize,\n $mdFontSize,\n $smFontSize,\n $disabled,\n $required,\n onClick,\n onChange\n}: InputType) => {\n const [showPassword, setShowPassword] = useState(false)\n\n return (\n <InputWrapper\n className={className}\n display={display}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <InputStyled\n type={type === 'password' ? (showPassword ? 'text' : 'password') : type}\n id={id}\n name={name}\n placeholder={placeholder}\n onClick={onClick}\n onChange={onChange}\n disabled={$disabled}\n required={$required}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n />\n {type === 'password' && (\n <EyeButton type=\"button\" onClick={() => setShowPassword(!showPassword)}>\n {showPassword ? <FaEye /> : <FaEyeSlash />}\n </EyeButton>\n )}\n </InputWrapper>\n )\n}\n\nexport default Input\n","import styled from 'styled-components'\nimport { mdScreen, smScreen, fontSizeToRem, type FontSize } from '@/types'\n\ntype LabelStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n}\n\nexport const LabelStyled = styled.label<LabelStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: 500;\n color: ${(props) => props.theme.primaryColor};\n margin-bottom: 4px;\n display: block;\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import React from 'react'\nimport type { FontSizeType } from '@/types'\nimport { LabelStyled } from './styles'\n\nexport type LabelType = {\n htmlFor: string\n children: React.ReactNode\n className?: string\n color?: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Label = ({\n htmlFor,\n children,\n className,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LabelType) => (\n <LabelStyled\n className={className}\n htmlFor={htmlFor}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LabelStyled>\n)\n\nexport default Label\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype LinkStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n $target?: '_blank' | '_self'\n color?: 'primary' | 'secondary'\n}\n\nexport const LinkStyled = styled.a<LinkStyledProps>`\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.color === 'secondary'\n ? props.theme.secondaryColor\n : props.theme.linkColor};\n text-decoration: none;\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 16)};\n font-weight: normal;\n background-image: linear-gradient(currentColor, currentColor);\n background-position: 0 100%;\n background-size: 0% 2px;\n background-repeat: no-repeat;\n transition:\n background-size 0.2s,\n background-position 0s 0.2s;\n\n &:hover {\n background-position: 100% 100%;\n background-size: 100% 2px;\n }\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 16)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 16\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { LinkStyled } from './styles'\nimport { Link as RouterLink } from 'react-router-dom'\n\nexport type LinkType = {\n href?: string\n to?: string\n children: React.ReactNode\n className?: string\n $target?: '_blank' | '_self'\n $isInternal?: boolean\n} & FontSizeType\n\nconst Link = ({\n href,\n to,\n children,\n className,\n $target,\n $isInternal = false,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: LinkType) => {\n if ($isInternal && to) {\n return (\n <RouterLink to={to} style={{ textDecoration: 'none', color: 'inherit' }}>\n <LinkStyled\n className={className}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n </RouterLink>\n )\n }\n\n return (\n <LinkStyled\n className={className}\n href={href}\n target={$target}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </LinkStyled>\n )\n}\n\nexport default Link\n","import styled from 'styled-components'\nimport type { WidthType } from '@/types'\nimport { mdScreen, smScreen } from '@/types'\n\nexport const LogoStyled = styled.div<WidthType>`\n width: ${(props) => props.$lgWidth || 100}%;\n & > img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: contain;\n }\n\n ${mdScreen} {\n width: ${(props) => props.$mdWidth || props.$lgWidth || 100}%;\n }\n\n ${smScreen} {\n width: ${(props) =>\n props.$smWidth || props.$mdWidth || props.$lgWidth || 100}%;\n }\n`\n","import LogoLightDefault from '@/assets/logos/light-theme.svg'\nimport LogoDarkDefault from '@/assets/logos/dark-theme.svg'\nimport IconLightDefault from '@/assets/icon/icon-light-theme.svg'\nimport IconDarkDefault from '@/assets/icon/icon-dark-theme.svg'\n\nexport function getLogoLight(): string {\n return LogoLightDefault\n}\n\nexport function getLogoDark(): string {\n return LogoDarkDefault\n}\n\nexport function getIconLight(): string {\n return IconLightDefault\n}\n\nexport function getIconDark(): string {\n return IconDarkDefault\n}\n","import { LogoStyled } from './styles'\nimport type { WidthType } from '@/types'\nimport { useTheme } from 'styled-components'\nimport { getLogoLight, getLogoDark } from '@/utils/logoLoader'\n\ntype LogoProps = {\n className?: string\n logoLight?: string\n logoDark?: string\n} & WidthType\n\nconst Logo = ({\n className,\n $lgWidth,\n $mdWidth,\n $smWidth,\n logoLight,\n logoDark\n}: LogoProps) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n const src = isDarkTheme\n ? (logoDark ?? getLogoDark())\n : (logoLight ?? getLogoLight())\n\n return (\n <LogoStyled\n className={className}\n $lgWidth={$lgWidth}\n $mdWidth={$mdWidth}\n $smWidth={$smWidth}\n >\n <img src={src} alt=\"Logo\" />\n </LogoStyled>\n )\n}\n\nexport default Logo\n","import styled, { createGlobalStyle } from 'styled-components'\n\nconst GlobalStyle = createGlobalStyle`\n*{\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n list-style: none;\n font-family: \"Inter\", sans-serif;\n}\n\nhtml, body {\n min-height: 100vh;\n}\n\nbody{\n background-color: ${(props) => props.theme.bgColor};\n color: ${(props) => props.theme.primaryColor};\n`\nexport default GlobalStyle\n\nexport const MainContainer = styled.main<{ $centered?: boolean }>`\n width: ${(props) => (props.$centered !== false ? '100vw' : '100%')};\n max-width: ${(props) => (props.$centered !== false ? '1440px' : 'none')};\n margin: ${(props) => (props.$centered !== false ? '0 auto' : '0')};\n min-height: ${(props) => (props.$centered !== false ? '100vh' : 'auto')};\n height: ${(props) => (props.$centered !== false ? '100vh' : 'auto')};\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: ${(props) =>\n props.$centered !== false ? 'center' : 'flex-start'};\n overflow-y: auto;\n &::-webkit-scrollbar {\n display: none;\n }\n`\n","import styled, { css } from 'styled-components'\nimport { ButtonStyled } from '@/components/Button/styles'\nexport type ThemeButtonPosition =\n | 'top-right'\n | 'top-left'\n | 'bottom-right'\n | 'bottom-left'\ntype ButtonPosition = { $position?: ThemeButtonPosition }\nconst position = [\n {\n 'top-right': css`\n top: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'top-left': css`\n top: 1.25rem;\n left: 1.25rem;\n `\n },\n {\n 'bottom-right': css`\n bottom: 1.25rem;\n right: 1.25rem;\n `\n },\n {\n 'bottom-left': css`\n bottom: 1.25rem;\n left: 1.25rem;\n `\n }\n]\nconst getPosition = (key: ThemeButtonPosition) =>\n (\n position.find((pos) => key in pos) as\n | Record<ThemeButtonPosition, ReturnType<typeof css>>\n | undefined\n )?.[key]\nexport const ThemeButton = styled(ButtonStyled)<ButtonPosition>`\n position: fixed;\n width: 3rem;\n height: 3rem;\n ${(props) => getPosition(props.$position ?? 'bottom-right')}\n z-index: 9999;\n border-radius: 50%;\n padding: 1%;\n display: flex;\n align-items: center;\n justify-content: center;\n & > img {\n width: 100%;\n height: 100%;\n }\n &:hover {\n background-color: ${(props) => props.theme.tertiaryColor};\n box-shadow: 0 0 10px 0 ${(props) => props.theme.primaryColor};\n }\n`\n","import { ThemeButton as ThemeButtonStyled } from './styles'\nimport { useTheme } from 'styled-components'\nimport { getIconDark, getIconLight } from '@/utils/logoLoader'\n\ntype ThemeButtonType = {\n className?: string\n onClick?: () => void\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n iconLight?: string\n iconDark?: string\n}\nconst ThemeButton = ({\n className,\n onClick,\n position = 'bottom-right',\n iconLight,\n iconDark\n}: ThemeButtonType) => {\n const theme = useTheme()\n const isDarkTheme = theme.isDark === true\n const src = isDarkTheme\n ? (iconLight ?? getIconLight())\n : (iconDark ?? getIconDark())\n return (\n <ThemeButtonStyled\n className={className}\n onClick={onClick}\n $position={position}\n >\n <img src={src} alt=\"Theme Button\" />\n </ThemeButtonStyled>\n )\n}\n\nexport default ThemeButton\n","import type { DefaultTheme } from 'styled-components/'\n\nconst DarkTheme: DefaultTheme = {\n primaryColor: '#EBFFEB',\n secondaryColor: '#538A53',\n tertiaryColor: '#669966',\n bgColor: '#011F1F',\n linkColor: '#33CC66'\n}\n\nexport default DarkTheme\n","import type { DefaultTheme } from 'styled-components/'\n\nconst LightTheme: DefaultTheme = {\n primaryColor: '#011F1F',\n secondaryColor: '#33CC66',\n tertiaryColor: '#538A53',\n bgColor: '#EBFFEB',\n linkColor: '#006633'\n}\n\nexport default LightTheme\n","import type { DefaultTheme } from 'styled-components'\nimport DarkThemeDefault from '@/themes/dark'\nimport LightThemeDefault from '@/themes/light'\nimport path from 'path'\n\nfunction tryLoadUserThemeConfig(): {\n darkTheme: DefaultTheme | null\n lightTheme: DefaultTheme | null\n} | null {\n if (typeof window !== 'undefined') {\n return null\n }\n\n try {\n const userProjectRoot = process.cwd()\n const configPath = path.join(\n userProjectRoot,\n 'src',\n 'catastyle',\n 'catastyle.config.ts'\n )\n\n try {\n const resolvedPath = require.resolve(configPath)\n delete require.cache[resolvedPath]\n const config = require(configPath)\n return {\n darkTheme: config.darkTheme ?? null,\n lightTheme: config.lightTheme ?? null\n }\n } catch {\n return null\n }\n } catch {\n return null\n }\n}\n\nexport function getDarkTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.darkTheme ?? DarkThemeDefault\n}\n\nexport function getLightTheme(): DefaultTheme {\n const userConfig = tryLoadUserThemeConfig()\n return userConfig?.lightTheme ?? LightThemeDefault\n}\n","import GlobalStyle, { MainContainer } from '@/styles/global'\nimport { ThemeProvider } from 'styled-components'\nimport type { DefaultTheme } from 'styled-components'\nimport { useState } from 'react'\nimport ThemeButton from '@/components/ThemeButton/ThemeButton'\nimport { getDarkTheme, getLightTheme } from '@/utils/themeLoader'\nimport type { ThemeButtonPosition } from '../ThemeButton/styles'\n\nexport type MainType = {\n children: React.ReactNode\n className?: string\n position?: ThemeButtonPosition\n darkTheme?: DefaultTheme | null\n lightTheme?: DefaultTheme | null\n centered?: boolean\n iconLight?: string\n iconDark?: string\n}\nconst Main = ({\n children,\n className,\n position,\n darkTheme: darkThemeProp,\n lightTheme: lightThemeProp,\n centered = true,\n iconLight,\n iconDark\n}: MainType) => {\n const [darkTheme, setDarkTheme] = useState(false)\n function toggleTheme() {\n setDarkTheme(!darkTheme)\n }\n const theme = darkTheme\n ? (darkThemeProp ?? getDarkTheme())\n : (lightThemeProp ?? getLightTheme())\n return (\n <ThemeProvider theme={{ ...theme, isDark: darkTheme }}>\n <GlobalStyle />\n <MainContainer className={className} $centered={centered}>\n <ThemeButton\n onClick={toggleTheme}\n {...(position !== undefined && { position })}\n {...(iconLight !== undefined && { iconLight })}\n {...(iconDark !== undefined && { iconDark })}\n />\n {children}\n </MainContainer>\n </ThemeProvider>\n )\n}\n\nexport default Main\n","import styled from 'styled-components'\nimport { fontSizeToRem, mdScreen, smScreen, type FontSize } from '@/types'\n\ntype TitleStyledProps = {\n $lgFontSize?: FontSize | undefined\n $mdFontSize?: FontSize | undefined\n $smFontSize?: FontSize | undefined\n color: 'primary' | 'secondary'\n}\n\nexport const TitleStyled = styled.h1<TitleStyledProps>`\n font-size: ${(props) => fontSizeToRem(props.$lgFontSize || 32)};\n font-weight: 600;\n color: ${(props) =>\n props.color === 'primary'\n ? props.theme.primaryColor\n : props.theme.secondaryColor};\n\n ${mdScreen} {\n font-size: ${(props) =>\n fontSizeToRem(props.$mdFontSize || props.$lgFontSize || 32)};\n }\n\n ${smScreen} {\n font-size: ${(props) =>\n fontSizeToRem(\n props.$smFontSize || props.$mdFontSize || props.$lgFontSize || 32\n )};\n }\n`\n","import type { FontSizeType } from '@/types'\nimport { TitleStyled } from './styles'\n\nexport type TitleType = {\n children: React.ReactNode\n className?: string\n color: 'primary' | 'secondary'\n} & FontSizeType\n\nconst Title = ({\n children,\n className,\n color,\n $lgFontSize,\n $mdFontSize,\n $smFontSize\n}: TitleType) => (\n <TitleStyled\n className={className}\n color={color}\n $lgFontSize={$lgFontSize}\n $mdFontSize={$mdFontSize}\n $smFontSize={$smFontSize}\n >\n {children}\n </TitleStyled>\n)\n\nexport default Title\n"]}
|