@thatix.io/credit-ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +186 -0
  3. package/dist/components/atoms/Avatar/Avatar.stories.d.ts +11 -0
  4. package/dist/components/atoms/Avatar/Avatar.vue.d.ts +16 -0
  5. package/dist/components/atoms/Avatar/index.d.ts +2 -0
  6. package/dist/components/atoms/Badge/Badge.stories.d.ts +11 -0
  7. package/dist/components/atoms/Badge/Badge.vue.d.ts +40 -0
  8. package/dist/components/atoms/Badge/index.d.ts +2 -0
  9. package/dist/components/atoms/Button/Button.stories.d.ts +15 -0
  10. package/dist/components/atoms/Button/Button.vue.d.ts +47 -0
  11. package/dist/components/atoms/Button/index.d.ts +2 -0
  12. package/dist/components/atoms/Card/Card.stories.d.ts +9 -0
  13. package/dist/components/atoms/Card/Card.vue.d.ts +33 -0
  14. package/dist/components/atoms/Card/index.d.ts +2 -0
  15. package/dist/components/atoms/Checkbox/Checkbox.stories.d.ts +11 -0
  16. package/dist/components/atoms/Checkbox/Checkbox.vue.d.ts +28 -0
  17. package/dist/components/atoms/Checkbox/index.d.ts +2 -0
  18. package/dist/components/atoms/CurrencyDisplay/CurrencyDisplay.stories.d.ts +10 -0
  19. package/dist/components/atoms/CurrencyDisplay/CurrencyDisplay.vue.d.ts +26 -0
  20. package/dist/components/atoms/CurrencyDisplay/index.d.ts +2 -0
  21. package/dist/components/atoms/Divider/Divider.stories.d.ts +9 -0
  22. package/dist/components/atoms/Divider/Divider.vue.d.ts +11 -0
  23. package/dist/components/atoms/Divider/index.d.ts +2 -0
  24. package/dist/components/atoms/GradientMesh/GradientMesh.stories.d.ts +13 -0
  25. package/dist/components/atoms/GradientMesh/GradientMesh.vue.d.ts +43 -0
  26. package/dist/components/atoms/GradientMesh/index.d.ts +2 -0
  27. package/dist/components/atoms/Icon/Icon.stories.d.ts +11 -0
  28. package/dist/components/atoms/Icon/Icon.vue.d.ts +23 -0
  29. package/dist/components/atoms/Icon/index.d.ts +2 -0
  30. package/dist/components/atoms/Input/Input.stories.d.ts +13 -0
  31. package/dist/components/atoms/Input/Input.vue.d.ts +73 -0
  32. package/dist/components/atoms/Input/index.d.ts +2 -0
  33. package/dist/components/atoms/Label/Label.stories.d.ts +11 -0
  34. package/dist/components/atoms/Label/Label.vue.d.ts +28 -0
  35. package/dist/components/atoms/Label/index.d.ts +2 -0
  36. package/dist/components/atoms/Logo/Logo.stories.d.ts +10 -0
  37. package/dist/components/atoms/Logo/Logo.vue.d.ts +17 -0
  38. package/dist/components/atoms/Logo/index.d.ts +2 -0
  39. package/dist/components/atoms/Spinner/Spinner.stories.d.ts +11 -0
  40. package/dist/components/atoms/Spinner/Spinner.vue.d.ts +11 -0
  41. package/dist/components/atoms/Spinner/index.d.ts +2 -0
  42. package/dist/components/atoms/Typography/Typography.stories.d.ts +12 -0
  43. package/dist/components/atoms/Typography/Typography.vue.d.ts +32 -0
  44. package/dist/components/atoms/Typography/index.d.ts +2 -0
  45. package/dist/components/atoms/index.d.ts +14 -0
  46. package/dist/components/index.d.ts +14 -0
  47. package/dist/components/molecules/ActionButton/ActionButton.stories.d.ts +11 -0
  48. package/dist/components/molecules/ActionButton/ActionButton.vue.d.ts +31 -0
  49. package/dist/components/molecules/ActionButton/index.d.ts +2 -0
  50. package/dist/components/molecules/Alert/Alert.stories.d.ts +12 -0
  51. package/dist/components/molecules/Alert/Alert.vue.d.ts +20 -0
  52. package/dist/components/molecules/Alert/index.d.ts +2 -0
  53. package/dist/components/molecules/AnalysisStatus/AnalysisStatus.stories.d.ts +14 -0
  54. package/dist/components/molecules/AnalysisStatus/AnalysisStatus.vue.d.ts +16 -0
  55. package/dist/components/molecules/AnalysisStatus/index.d.ts +2 -0
  56. package/dist/components/molecules/ContractPaidCelebration/ContractPaidCelebration.stories.d.ts +9 -0
  57. package/dist/components/molecules/ContractPaidCelebration/ContractPaidCelebration.vue.d.ts +25 -0
  58. package/dist/components/molecules/ContractPaidCelebration/index.d.ts +2 -0
  59. package/dist/components/molecules/DocumentUpload/DocumentUpload.stories.d.ts +10 -0
  60. package/dist/components/molecules/DocumentUpload/DocumentUpload.vue.d.ts +40 -0
  61. package/dist/components/molecules/DocumentUpload/index.d.ts +2 -0
  62. package/dist/components/molecules/FilePreview/FilePreview.stories.d.ts +13 -0
  63. package/dist/components/molecules/FilePreview/FilePreview.vue.d.ts +32 -0
  64. package/dist/components/molecules/FilePreview/index.d.ts +2 -0
  65. package/dist/components/molecules/FormField/FormField.stories.d.ts +9 -0
  66. package/dist/components/molecules/FormField/FormField.vue.d.ts +39 -0
  67. package/dist/components/molecules/FormField/index.d.ts +2 -0
  68. package/dist/components/molecules/IdentifierInput/IdentifierInput.stories.d.ts +14 -0
  69. package/dist/components/molecules/IdentifierInput/IdentifierInput.vue.d.ts +29 -0
  70. package/dist/components/molecules/IdentifierInput/index.d.ts +2 -0
  71. package/dist/components/molecules/InfoCard/InfoCard.stories.d.ts +13 -0
  72. package/dist/components/molecules/InfoCard/InfoCard.vue.d.ts +53 -0
  73. package/dist/components/molecules/InfoCard/index.d.ts +2 -0
  74. package/dist/components/molecules/InputRangeMoney/InputRangeMoney.stories.d.ts +9 -0
  75. package/dist/components/molecules/InputRangeMoney/InputRangeMoney.vue.d.ts +19 -0
  76. package/dist/components/molecules/InputRangeMoney/index.d.ts +2 -0
  77. package/dist/components/molecules/InstallmentCard/InstallmentCard.stories.d.ts +9 -0
  78. package/dist/components/molecules/InstallmentCard/InstallmentCard.vue.d.ts +29 -0
  79. package/dist/components/molecules/InstallmentCard/index.d.ts +2 -0
  80. package/dist/components/molecules/InstallmentSelector/InstallmentSelector.stories.d.ts +10 -0
  81. package/dist/components/molecules/InstallmentSelector/InstallmentSelector.vue.d.ts +28 -0
  82. package/dist/components/molecules/InstallmentSelector/index.d.ts +2 -0
  83. package/dist/components/molecules/MarginIndicator/MarginIndicator.stories.d.ts +12 -0
  84. package/dist/components/molecules/MarginIndicator/MarginIndicator.vue.d.ts +18 -0
  85. package/dist/components/molecules/MarginIndicator/index.d.ts +2 -0
  86. package/dist/components/molecules/Modal/Modal.stories.d.ts +8 -0
  87. package/dist/components/molecules/Modal/Modal.vue.d.ts +38 -0
  88. package/dist/components/molecules/Modal/index.d.ts +2 -0
  89. package/dist/components/molecules/PasswordInput/PasswordInput.stories.d.ts +11 -0
  90. package/dist/components/molecules/PasswordInput/PasswordInput.vue.d.ts +30 -0
  91. package/dist/components/molecules/PasswordInput/index.d.ts +2 -0
  92. package/dist/components/molecules/PendingProposalBanner/PendingProposalBanner.stories.d.ts +10 -0
  93. package/dist/components/molecules/PendingProposalBanner/PendingProposalBanner.vue.d.ts +24 -0
  94. package/dist/components/molecules/PendingProposalBanner/index.d.ts +2 -0
  95. package/dist/components/molecules/PinInput/PinInput.stories.d.ts +13 -0
  96. package/dist/components/molecules/PinInput/PinInput.vue.d.ts +36 -0
  97. package/dist/components/molecules/PinInput/index.d.ts +2 -0
  98. package/dist/components/molecules/ProgressBar/ProgressBar.stories.d.ts +12 -0
  99. package/dist/components/molecules/ProgressBar/ProgressBar.vue.d.ts +24 -0
  100. package/dist/components/molecules/ProgressBar/index.d.ts +2 -0
  101. package/dist/components/molecules/SearchBar/SearchBar.stories.d.ts +11 -0
  102. package/dist/components/molecules/SearchBar/SearchBar.vue.d.ts +30 -0
  103. package/dist/components/molecules/SearchBar/index.d.ts +2 -0
  104. package/dist/components/molecules/SimulationLoading/SimulationLoading.stories.d.ts +10 -0
  105. package/dist/components/molecules/SimulationLoading/SimulationLoading.vue.d.ts +17 -0
  106. package/dist/components/molecules/SimulationLoading/index.d.ts +2 -0
  107. package/dist/components/molecules/StatusBadge/StatusBadge.stories.d.ts +12 -0
  108. package/dist/components/molecules/StatusBadge/StatusBadge.vue.d.ts +38 -0
  109. package/dist/components/molecules/StatusBadge/index.d.ts +2 -0
  110. package/dist/components/molecules/StepperProgress/StepperProgress.stories.d.ts +11 -0
  111. package/dist/components/molecules/StepperProgress/StepperProgress.vue.d.ts +22 -0
  112. package/dist/components/molecules/StepperProgress/index.d.ts +2 -0
  113. package/dist/components/molecules/WelcomeCard/WelcomeCard.stories.d.ts +11 -0
  114. package/dist/components/molecules/WelcomeCard/WelcomeCard.vue.d.ts +33 -0
  115. package/dist/components/molecules/WelcomeCard/index.d.ts +2 -0
  116. package/dist/components/molecules/index.d.ts +23 -0
  117. package/dist/components/organisms/AuthLayout/AuthLayout.stories.d.ts +10 -0
  118. package/dist/components/organisms/AuthLayout/AuthLayout.vue.d.ts +42 -0
  119. package/dist/components/organisms/AuthLayout/index.d.ts +2 -0
  120. package/dist/components/organisms/BottomNavigation/BottomNavigation.stories.d.ts +8 -0
  121. package/dist/components/organisms/BottomNavigation/BottomNavigation.vue.d.ts +38 -0
  122. package/dist/components/organisms/BottomNavigation/index.d.ts +2 -0
  123. package/dist/components/organisms/ConsentForm/ConsentForm.stories.d.ts +9 -0
  124. package/dist/components/organisms/ConsentForm/ConsentForm.vue.d.ts +45 -0
  125. package/dist/components/organisms/ConsentForm/TermModal.vue.d.ts +37 -0
  126. package/dist/components/organisms/ConsentForm/index.d.ts +4 -0
  127. package/dist/components/organisms/ContractCard/ContractCard.stories.d.ts +12 -0
  128. package/dist/components/organisms/ContractCard/ContractCard.vue.d.ts +41 -0
  129. package/dist/components/organisms/ContractCard/index.d.ts +2 -0
  130. package/dist/components/organisms/ContractDetails/ContractDetails.stories.d.ts +9 -0
  131. package/dist/components/organisms/ContractDetails/ContractDetails.vue.d.ts +53 -0
  132. package/dist/components/organisms/ContractDetails/index.d.ts +2 -0
  133. package/dist/components/organisms/CreatePasswordForm/CreatePasswordForm.stories.d.ts +12 -0
  134. package/dist/components/organisms/CreatePasswordForm/CreatePasswordForm.vue.d.ts +52 -0
  135. package/dist/components/organisms/CreatePasswordForm/index.d.ts +2 -0
  136. package/dist/components/organisms/DashboardHeader/DashboardHeader.stories.d.ts +8 -0
  137. package/dist/components/organisms/DashboardHeader/DashboardHeader.vue.d.ts +14 -0
  138. package/dist/components/organisms/DashboardHeader/index.d.ts +2 -0
  139. package/dist/components/organisms/DocumentUploadSection/DocumentUploadSection.stories.d.ts +10 -0
  140. package/dist/components/organisms/DocumentUploadSection/DocumentUploadSection.vue.d.ts +72 -0
  141. package/dist/components/organisms/DocumentUploadSection/index.d.ts +2 -0
  142. package/dist/components/organisms/Footer/Footer.stories.d.ts +10 -0
  143. package/dist/components/organisms/Footer/Footer.vue.d.ts +50 -0
  144. package/dist/components/organisms/Footer/index.d.ts +2 -0
  145. package/dist/components/organisms/ForgotPasswordForm/ForgotPasswordForm.stories.d.ts +12 -0
  146. package/dist/components/organisms/ForgotPasswordForm/ForgotPasswordForm.vue.d.ts +64 -0
  147. package/dist/components/organisms/ForgotPasswordForm/index.d.ts +2 -0
  148. package/dist/components/organisms/Header/Header.stories.d.ts +9 -0
  149. package/dist/components/organisms/Header/Header.vue.d.ts +36 -0
  150. package/dist/components/organisms/Header/index.d.ts +2 -0
  151. package/dist/components/organisms/InstallmentHistory/InstallmentHistory.stories.d.ts +10 -0
  152. package/dist/components/organisms/InstallmentHistory/InstallmentHistory.vue.d.ts +42 -0
  153. package/dist/components/organisms/InstallmentHistory/index.d.ts +2 -0
  154. package/dist/components/organisms/LoginForm/LoginForm.stories.d.ts +10 -0
  155. package/dist/components/organisms/LoginForm/LoginForm.vue.d.ts +51 -0
  156. package/dist/components/organisms/LoginForm/index.d.ts +2 -0
  157. package/dist/components/organisms/ManualInputModal/ManualInputModal.stories.d.ts +9 -0
  158. package/dist/components/organisms/ManualInputModal/ManualInputModal.vue.d.ts +41 -0
  159. package/dist/components/organisms/ManualInputModal/index.d.ts +2 -0
  160. package/dist/components/organisms/OfferCard/OfferCard.stories.d.ts +11 -0
  161. package/dist/components/organisms/OfferCard/OfferCard.vue.d.ts +39 -0
  162. package/dist/components/organisms/OfferCard/index.d.ts +2 -0
  163. package/dist/components/organisms/ProfileForm/ProfileForm.stories.d.ts +10 -0
  164. package/dist/components/organisms/ProfileForm/ProfileForm.vue.d.ts +62 -0
  165. package/dist/components/organisms/ProfileForm/index.d.ts +2 -0
  166. package/dist/components/organisms/QuickActions/QuickActions.stories.d.ts +9 -0
  167. package/dist/components/organisms/QuickActions/QuickActions.vue.d.ts +24 -0
  168. package/dist/components/organisms/QuickActions/index.d.ts +2 -0
  169. package/dist/components/organisms/ResetPasswordForm/ResetPasswordForm.stories.d.ts +12 -0
  170. package/dist/components/organisms/ResetPasswordForm/ResetPasswordForm.vue.d.ts +52 -0
  171. package/dist/components/organisms/ResetPasswordForm/index.d.ts +2 -0
  172. package/dist/components/organisms/SCRConsentModal/SCRConsentModal.stories.d.ts +8 -0
  173. package/dist/components/organisms/SCRConsentModal/SCRConsentModal.vue.d.ts +18 -0
  174. package/dist/components/organisms/SCRConsentModal/index.d.ts +2 -0
  175. package/dist/components/organisms/Sidebar/Sidebar.stories.d.ts +8 -0
  176. package/dist/components/organisms/Sidebar/Sidebar.vue.d.ts +78 -0
  177. package/dist/components/organisms/Sidebar/SidebarItem.vue.d.ts +28 -0
  178. package/dist/components/organisms/Sidebar/index.d.ts +4 -0
  179. package/dist/components/organisms/SimulationResult/SimulationResult.stories.d.ts +11 -0
  180. package/dist/components/organisms/SimulationResult/SimulationResult.vue.d.ts +44 -0
  181. package/dist/components/organisms/SimulationResult/index.d.ts +2 -0
  182. package/dist/components/organisms/TopNavigation/TopNavigation.stories.d.ts +8 -0
  183. package/dist/components/organisms/TopNavigation/TopNavigation.vue.d.ts +48 -0
  184. package/dist/components/organisms/TopNavigation/index.d.ts +2 -0
  185. package/dist/components/organisms/index.d.ts +26 -0
  186. package/dist/components/templates/FormLayout/FormLayout.stories.d.ts +65 -0
  187. package/dist/components/templates/FormLayout/FormLayout.vue.d.ts +84 -0
  188. package/dist/components/templates/FormLayout/index.d.ts +2 -0
  189. package/dist/components/templates/index.d.ts +1 -0
  190. package/dist/composables/index.d.ts +4 -0
  191. package/dist/composables/useTheme.d.ts +66 -0
  192. package/dist/credit-ui.cjs.js +90 -0
  193. package/dist/credit-ui.css +1 -0
  194. package/dist/credit-ui.es.js +8936 -0
  195. package/dist/images/auth-background.jpg +0 -0
  196. package/dist/index.d.ts +20 -0
  197. package/dist/logo.png +0 -0
  198. package/dist/nuxt/index.d.ts +5 -0
  199. package/dist/nuxt/module.d.ts +17 -0
  200. package/dist/nuxt.cjs.js +1 -0
  201. package/dist/nuxt.es.js +31 -0
  202. package/dist/themes/defaults.d.ts +96 -0
  203. package/dist/themes/index.d.ts +8 -0
  204. package/dist/themes/utils.d.ts +35 -0
  205. package/dist/themes.cjs.js +6 -0
  206. package/dist/themes.es.js +163 -0
  207. package/dist/tokens.css +124 -0
  208. package/dist/types/index.d.ts +6 -0
  209. package/dist/types/theme.d.ts +142 -0
  210. package/package.json +75 -0
  211. package/src/nuxt/runtime/composables/useTheme.ts +86 -0
  212. package/src/nuxt/runtime/plugin.server.ts +32 -0
  213. package/src/nuxt/runtime/plugin.ts +22 -0
package/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ PROPRIETARY LICENSE
2
+
3
+ Copyright (c) 2026 Thatix.io
4
+
5
+ All rights reserved.
6
+
7
+ This software and associated documentation files (the "Software") are the exclusive
8
+ property of Thatix.io. No part of this Software may be reproduced, distributed, or
9
+ transmitted in any form or by any means, including photocopying, recording, or other
10
+ electronic or mechanical methods, without the prior written permission of Thatix.io.
11
+
12
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
13
+ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
14
+ PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
15
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
16
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
17
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
+
19
+ For licensing inquiries, contact: legal@thatix.io
package/README.md ADDED
@@ -0,0 +1,186 @@
1
+ # @thatix.io/credit-ui
2
+
3
+ UI Kit para esteiras de crédito da Thatix com sistema de theming configurável.
4
+
5
+ ## Instalação
6
+
7
+ ```bash
8
+ pnpm add @thatix.io/credit-ui
9
+ ```
10
+
11
+ ## Uso com Nuxt
12
+
13
+ ### 1. Configurar módulo
14
+
15
+ ```typescript
16
+ // nuxt.config.ts
17
+ export default defineNuxtConfig({
18
+ modules: ['@thatix.io/credit-ui/nuxt'],
19
+ creditUi: {
20
+ theme: {
21
+ colors: {
22
+ primary: '#06012C',
23
+ accent: '#FFCA46',
24
+ },
25
+ fonts: {
26
+ heading: 'Montserrat',
27
+ base: 'Galano Grotesque',
28
+ }
29
+ }
30
+ }
31
+ })
32
+ ```
33
+
34
+ ### 2. Usar o composable
35
+
36
+ ```vue
37
+ <script setup>
38
+ // Auto-importado pelo módulo
39
+ const { getColor, getToken, colors } = useTheme()
40
+
41
+ const primaryColor = getColor('primary')
42
+ </script>
43
+
44
+ <template>
45
+ <div :style="{ color: colors.primary }">
46
+ Themed content
47
+ </div>
48
+ </template>
49
+ ```
50
+
51
+ ## Uso com Vue (sem Nuxt)
52
+
53
+ ```typescript
54
+ import { useTheme } from '@thatix.io/credit-ui'
55
+ import '@thatix.io/credit-ui/themes/tokens.css'
56
+
57
+ const { getColor, applyTheme, colors } = useTheme()
58
+
59
+ // Aplicar tema customizado
60
+ applyTheme({
61
+ colors: { primary: '#FF0000' }
62
+ })
63
+ ```
64
+
65
+ ## CSS Variables
66
+
67
+ O pacote disponibiliza CSS Variables que podem ser usadas diretamente:
68
+
69
+ ```css
70
+ .my-component {
71
+ color: var(--color-primary);
72
+ font-family: var(--font-family-heading);
73
+ padding: var(--spacing-4);
74
+ border-radius: var(--radius-md);
75
+ box-shadow: var(--shadow-md);
76
+ }
77
+ ```
78
+
79
+ ### Tokens disponíveis
80
+
81
+ #### Colors
82
+ - `--color-primary`, `--color-primary-dark`, `--color-primary-light`
83
+ - `--color-secondary`, `--color-accent`
84
+ - `--color-background`, `--color-background-alt`
85
+ - `--color-surface`, `--color-surface-accent`
86
+ - `--color-text`, `--color-text-muted`, `--color-text-inverse`
87
+ - `--color-error`, `--color-warning`, `--color-success`, `--color-info`
88
+
89
+ #### Typography
90
+ - `--font-family-heading`, `--font-family-base`
91
+ - `--font-size-xs` ... `--font-size-4xl`
92
+ - `--font-weight-normal`, `medium`, `semibold`, `bold`
93
+ - `--line-height-tight`, `normal`, `relaxed`
94
+
95
+ #### Spacing
96
+ - `--spacing-0` ... `--spacing-16` (escala 4px)
97
+
98
+ #### Radius
99
+ - `--radius-none`, `sm`, `md`, `lg`, `xl`, `2xl`, `full`
100
+
101
+ #### Shadows
102
+ - `--shadow-sm`, `md`, `lg`, `xl`
103
+
104
+ #### Transitions
105
+ - `--transition-fast` (150ms), `normal` (300ms), `slow` (500ms)
106
+ - `--easing-default`, `in`, `out`
107
+
108
+ ## Customização
109
+
110
+ Apenas cores e fontes são customizáveis. Spacing, radius, shadows e transitions são fixos para manter consistência do design system.
111
+
112
+ ```typescript
113
+ interface ThemeConfig {
114
+ colors?: {
115
+ primary?: string
116
+ primaryDark?: string
117
+ primaryLight?: string
118
+ secondary?: string
119
+ accent?: string
120
+ background?: string
121
+ backgroundAlt?: string
122
+ surface?: string
123
+ surfaceAccent?: string
124
+ text?: string
125
+ textMuted?: string
126
+ textInverse?: string
127
+ error?: string
128
+ warning?: string
129
+ success?: string
130
+ info?: string
131
+ }
132
+ fonts?: {
133
+ heading?: string
134
+ base?: string
135
+ }
136
+ }
137
+ ```
138
+
139
+ ## Exports
140
+
141
+ ```typescript
142
+ // Main entry
143
+ import { useTheme, version } from '@thatix.io/credit-ui'
144
+ import type { ThemeConfig, ThemeColors } from '@thatix.io/credit-ui'
145
+
146
+ // Nuxt module
147
+ import CreditUIModule from '@thatix.io/credit-ui/nuxt'
148
+
149
+ // Theme utilities
150
+ import { mergeTheme, defaultTokens } from '@thatix.io/credit-ui/themes'
151
+
152
+ // CSS only
153
+ import '@thatix.io/credit-ui/themes/tokens.css'
154
+ ```
155
+
156
+ ## Desenvolvimento
157
+
158
+ ```bash
159
+ pnpm install # Instalar dependências
160
+ pnpm build # Build
161
+ pnpm typecheck # Type check
162
+ pnpm lint # Lint
163
+ pnpm lint:fix # Corrigir lint
164
+ pnpm format # Formatar código
165
+ ```
166
+
167
+ ## Estrutura
168
+
169
+ ```
170
+ src/
171
+ ├── components/ # Componentes UI (GC-3)
172
+ ├── composables/ # useTheme (Vue puro)
173
+ ├── nuxt/ # Módulo Nuxt
174
+ │ ├── module.ts # defineNuxtModule
175
+ │ └── runtime/ # Plugins e composables
176
+ ├── themes/ # Sistema de theming
177
+ │ ├── tokens.css # CSS Variables
178
+ │ ├── defaults.ts # Valores default
179
+ │ └── utils.ts # Utilities
180
+ ├── types/ # TypeScript types
181
+ └── index.ts # Entry point
182
+ ```
183
+
184
+ ## Licença
185
+
186
+ Proprietário - Thatix.io
@@ -0,0 +1,11 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as Avatar } from './Avatar.vue';
3
+ declare const meta: Meta<typeof Avatar>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithImage: Story;
8
+ export declare const SingleName: Story;
9
+ export declare const Sizes: Story;
10
+ export declare const WithImageSizes: Story;
11
+ export declare const BrokenImage: Story;
@@ -0,0 +1,16 @@
1
+ export interface AvatarProps {
2
+ /** URL da imagem do avatar */
3
+ src?: string;
4
+ /** Nome completo do usuário */
5
+ name: string;
6
+ /** Tamanho do avatar */
7
+ size?: 'sm' | 'md' | 'lg';
8
+ }
9
+ declare const _default: import('vue').DefineComponent<AvatarProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
10
+ click: () => any;
11
+ }, string, import('vue').PublicProps, Readonly<AvatarProps> & Readonly<{
12
+ onClick?: (() => any) | undefined;
13
+ }>, {
14
+ size: "sm" | "md" | "lg";
15
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLButtonElement>;
16
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as Avatar } from './Avatar.vue';
2
+ export type { AvatarProps } from './Avatar.vue';
@@ -0,0 +1,11 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as Badge } from './Badge.vue';
3
+ declare const meta: Meta<typeof Badge>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const AllVariants: Story;
8
+ export declare const Sizes: Story;
9
+ export declare const Dismissible: Story;
10
+ export declare const DotVariant: Story;
11
+ export declare const DotSizes: Story;
@@ -0,0 +1,40 @@
1
+ export interface BadgeProps {
2
+ /** Variante semântica do badge */
3
+ variant?: 'success' | 'error' | 'warning' | 'info' | 'neutral' | 'primary';
4
+ /** Tamanho do badge */
5
+ size?: 'sm' | 'md' | 'lg';
6
+ /** Label exibido no badge */
7
+ label?: string;
8
+ /** Permite remover o badge */
9
+ dismissible?: boolean;
10
+ /** Renderiza apenas um ponto colorido */
11
+ dot?: boolean;
12
+ }
13
+ declare function __VLS_template(): {
14
+ attrs: Partial<{}>;
15
+ slots: {
16
+ 'leading-icon'?(_: {}): any;
17
+ 'trailing-icon'?(_: {}): any;
18
+ };
19
+ refs: {};
20
+ rootEl: any;
21
+ };
22
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
23
+ declare const __VLS_component: import('vue').DefineComponent<BadgeProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
24
+ dismiss: () => any;
25
+ }, string, import('vue').PublicProps, Readonly<BadgeProps> & Readonly<{
26
+ onDismiss?: (() => any) | undefined;
27
+ }>, {
28
+ size: "sm" | "md" | "lg";
29
+ label: string;
30
+ variant: "success" | "error" | "warning" | "info" | "neutral" | "primary";
31
+ dismissible: boolean;
32
+ dot: boolean;
33
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
34
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
35
+ export default _default;
36
+ type __VLS_WithTemplateSlots<T, S> = T & {
37
+ new (): {
38
+ $slots: S;
39
+ };
40
+ };
@@ -0,0 +1,2 @@
1
+ export { default as Badge } from './Badge.vue';
2
+ export type { BadgeProps } from './Badge.vue';
@@ -0,0 +1,15 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import { default as Button } from './Button.vue';
3
+ declare const meta: Meta<typeof Button>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Button>;
6
+ export declare const Primary: Story;
7
+ export declare const Secondary: Story;
8
+ export declare const Outline: Story;
9
+ export declare const Ghost: Story;
10
+ export declare const Accent: Story;
11
+ export declare const Sizes: Story;
12
+ export declare const States: Story;
13
+ export declare const Block: Story;
14
+ export declare const AllVariants: Story;
15
+ export declare const Playground: Story;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Props do componente Button
3
+ */
4
+ export interface ButtonProps {
5
+ /** Variante visual do botão */
6
+ variant?: 'primary' | 'secondary' | 'accent' | 'outline' | 'ghost';
7
+ /** Tamanho do botão */
8
+ size?: 'sm' | 'md' | 'lg';
9
+ /** Border radius */
10
+ rounded?: 'sm' | 'md' | 'lg' | 'full';
11
+ /** Estado desabilitado */
12
+ disabled?: boolean;
13
+ /** Estado de loading */
14
+ loading?: boolean;
15
+ /** Botão ocupa 100% da largura */
16
+ block?: boolean;
17
+ }
18
+ declare function __VLS_template(): {
19
+ attrs: Partial<{}>;
20
+ slots: {
21
+ 'leading-icon'?(_: {}): any;
22
+ default?(_: {}): any;
23
+ 'trailing-icon'?(_: {}): any;
24
+ };
25
+ refs: {};
26
+ rootEl: HTMLButtonElement;
27
+ };
28
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
29
+ declare const __VLS_component: import('vue').DefineComponent<ButtonProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
30
+ click: (event: MouseEvent) => any;
31
+ }, string, import('vue').PublicProps, Readonly<ButtonProps> & Readonly<{
32
+ onClick?: ((event: MouseEvent) => any) | undefined;
33
+ }>, {
34
+ size: "sm" | "md" | "lg";
35
+ loading: boolean;
36
+ variant: "primary" | "secondary" | "accent" | "outline" | "ghost";
37
+ rounded: "sm" | "md" | "lg" | "full";
38
+ disabled: boolean;
39
+ block: boolean;
40
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLButtonElement>;
41
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
42
+ export default _default;
43
+ type __VLS_WithTemplateSlots<T, S> = T & {
44
+ new (): {
45
+ $slots: S;
46
+ };
47
+ };
@@ -0,0 +1,2 @@
1
+ export { default as Button } from './Button.vue';
2
+ export type { ButtonProps } from './Button.vue';
@@ -0,0 +1,9 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as Card } from './Card.vue';
3
+ declare const meta: Meta<typeof Card>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Variants: Story;
8
+ export declare const Padding: Story;
9
+ export declare const Clickable: Story;
@@ -0,0 +1,33 @@
1
+ export interface CardProps {
2
+ /** Variante visual do card */
3
+ variant?: 'default' | 'outlined' | 'elevated';
4
+ /** Espaçamento interno do card */
5
+ padding?: 'none' | 'sm' | 'md' | 'lg';
6
+ /** Torna o card clicável com efeito hover */
7
+ clickable?: boolean;
8
+ }
9
+ declare function __VLS_template(): {
10
+ attrs: Partial<{}>;
11
+ slots: {
12
+ default?(_: {}): any;
13
+ };
14
+ refs: {};
15
+ rootEl: HTMLDivElement;
16
+ };
17
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
18
+ declare const __VLS_component: import('vue').DefineComponent<CardProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
19
+ click: (event: MouseEvent) => any;
20
+ }, string, import('vue').PublicProps, Readonly<CardProps> & Readonly<{
21
+ onClick?: ((event: MouseEvent) => any) | undefined;
22
+ }>, {
23
+ variant: "default" | "outlined" | "elevated";
24
+ padding: "none" | "sm" | "md" | "lg";
25
+ clickable: boolean;
26
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
27
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
28
+ export default _default;
29
+ type __VLS_WithTemplateSlots<T, S> = T & {
30
+ new (): {
31
+ $slots: S;
32
+ };
33
+ };
@@ -0,0 +1,2 @@
1
+ export { default as Card } from './Card.vue';
2
+ export type { CardProps } from './Card.vue';
@@ -0,0 +1,11 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as Checkbox } from './Checkbox.vue';
3
+ declare const meta: Meta<typeof Checkbox>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Checked: Story;
8
+ export declare const Required: Story;
9
+ export declare const Disabled: Story;
10
+ export declare const WithoutLabel: Story;
11
+ export declare const MultipleOptions: Story;
@@ -0,0 +1,28 @@
1
+ export interface CheckboxProps {
2
+ /** Valor do checkbox (v-model) */
3
+ modelValue?: boolean;
4
+ /** Label do checkbox */
5
+ label?: string;
6
+ /** Campo obrigatório */
7
+ required?: boolean;
8
+ /** Checkbox desabilitado */
9
+ disabled?: boolean;
10
+ /** ID do checkbox */
11
+ id?: string;
12
+ /** Name do checkbox */
13
+ name?: string;
14
+ /** aria-label para acessibilidade */
15
+ ariaLabel?: string;
16
+ }
17
+ declare const _default: import('vue').DefineComponent<CheckboxProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
18
+ "update:modelValue": (value: boolean) => any;
19
+ change: (event: Event) => any;
20
+ }, string, import('vue').PublicProps, Readonly<CheckboxProps> & Readonly<{
21
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
22
+ onChange?: ((event: Event) => any) | undefined;
23
+ }>, {
24
+ required: boolean;
25
+ disabled: boolean;
26
+ modelValue: boolean;
27
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
28
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as Checkbox } from './Checkbox.vue';
2
+ export type { CheckboxProps } from './Checkbox.vue';
@@ -0,0 +1,10 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as CurrencyDisplay } from './CurrencyDisplay.vue';
3
+ declare const meta: Meta<typeof CurrencyDisplay>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Sizes: Story;
8
+ export declare const Animated: Story;
9
+ export declare const Colorized: Story;
10
+ export declare const Interactive: Story;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * CurrencyDisplay - Componente para exibição de valores monetários
3
+ *
4
+ * Suporta animação count-up, tamanhos variados e colorização baseada no valor.
5
+ */
6
+ export interface CurrencyDisplayProps {
7
+ /** Valor em centavos (ex: 1542000 = R$ 15.420,00) */
8
+ value: number;
9
+ /** Habilitar animação count-up */
10
+ animated?: boolean;
11
+ /** Duração da animação em ms */
12
+ duration?: number;
13
+ /** Tamanho do texto */
14
+ size?: 'sm' | 'md' | 'lg';
15
+ /** Colorir baseado no valor positivo/negativo/zero */
16
+ colorize?: boolean;
17
+ }
18
+ declare const _default: import('vue').DefineComponent<CurrencyDisplayProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<CurrencyDisplayProps> & Readonly<{}>, {
19
+ size: "sm" | "md" | "lg";
20
+ animated: boolean;
21
+ duration: number;
22
+ colorize: boolean;
23
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
24
+ elementRef: HTMLSpanElement;
25
+ }, HTMLSpanElement>;
26
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as CurrencyDisplay } from './CurrencyDisplay.vue';
2
+ export type { CurrencyDisplayProps } from './CurrencyDisplay.vue';
@@ -0,0 +1,9 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as Divider } from './Divider.vue';
3
+ declare const meta: Meta<typeof Divider>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const HorizontalSpacing: Story;
8
+ export declare const Vertical: Story;
9
+ export declare const InCard: Story;
@@ -0,0 +1,11 @@
1
+ export interface DividerProps {
2
+ /** Orientação do divider */
3
+ orientation?: 'horizontal' | 'vertical';
4
+ /** Espaçamento ao redor do divider */
5
+ spacing?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
6
+ }
7
+ declare const _default: import('vue').DefineComponent<DividerProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<DividerProps> & Readonly<{}>, {
8
+ orientation: "horizontal" | "vertical";
9
+ spacing: "none" | "xs" | "sm" | "md" | "lg" | "xl";
10
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLHRElement>;
11
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as Divider } from './Divider.vue';
2
+ export type { DividerProps } from './Divider.vue';
@@ -0,0 +1,13 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as GradientMesh } from './GradientMesh.vue';
3
+ declare const meta: Meta<typeof GradientMesh>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const PurpleBlue: Story;
8
+ export declare const Sunset: Story;
9
+ export declare const Ocean: Story;
10
+ export declare const Forest: Story;
11
+ export declare const SlowAnimation: Story;
12
+ export declare const HighDistortion: Story;
13
+ export declare const AsBackground: Story;
@@ -0,0 +1,43 @@
1
+ export interface GradientMeshProps {
2
+ /** Cores do gradiente (array de 3 cores hex) */
3
+ colors?: string[];
4
+ /** Nível de distorção */
5
+ distortion?: number;
6
+ /** Intensidade do swirl */
7
+ swirl?: number;
8
+ /** Velocidade da animação */
9
+ speed?: number;
10
+ /** Escala */
11
+ scale?: number;
12
+ /** Offset X */
13
+ offsetX?: number;
14
+ /** Offset Y */
15
+ offsetY?: number;
16
+ /** Rotação em graus */
17
+ rotation?: number;
18
+ /** Amplitude das ondas */
19
+ waveAmp?: number;
20
+ /** Frequência das ondas */
21
+ waveFreq?: number;
22
+ /** Velocidade das ondas */
23
+ waveSpeed?: number;
24
+ /** Intensidade do grain */
25
+ grain?: number;
26
+ }
27
+ declare const _default: import('vue').DefineComponent<GradientMeshProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<GradientMeshProps> & Readonly<{}>, {
28
+ colors: string[];
29
+ distortion: number;
30
+ swirl: number;
31
+ speed: number;
32
+ scale: number;
33
+ offsetX: number;
34
+ offsetY: number;
35
+ rotation: number;
36
+ waveAmp: number;
37
+ waveFreq: number;
38
+ waveSpeed: number;
39
+ grain: number;
40
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
41
+ ctnDom: HTMLDivElement;
42
+ }, HTMLDivElement>;
43
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as GradientMesh } from './GradientMesh.vue';
2
+ export type { GradientMeshProps } from './GradientMesh.vue';
@@ -0,0 +1,11 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as Icon } from './Icon.vue';
3
+ declare const meta: Meta<typeof Icon>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Sizes: Story;
8
+ export declare const Variants: Story;
9
+ export declare const CommonIcons: Story;
10
+ export declare const StatusIcons: Story;
11
+ export declare const NavigationIcons: Story;
@@ -0,0 +1,23 @@
1
+ export type IconName = 'home' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-down' | 'chevron-down' | 'chevron-right' | 'chevron-left' | 'chevron-up' | 'x' | 'x-mark' | 'check' | 'magnifying-glass' | 'search' | 'exclamation-circle' | 'alert-circle' | 'exclamation-triangle' | 'alert-triangle' | 'check-circle' | 'information-circle' | 'info' | 'question-mark-circle' | 'user' | 'user-circle' | 'cog' | 'bell' | 'eye' | 'eye-off' | 'eye-slash' | 'document-text' | 'document-check' | 'file-check' | 'chart-pie' | 'pie-chart' | 'chart-bar' | 'bar-chart-2' | 'banknotes' | 'banknote' | 'calculator' | 'clock' | 'calendar' | 'bolt' | 'sparkles' | 'list-bullet' | 'chat-bubble-left-right' | 'shield-check' | 'shield-exclamation' | 'identification' | 'arrow-path' | 'loader' | 'refresh-cw' | 'rotate-ccw' | 'arrow-uturn-left' | 'arrow-up-tray' | 'arrow-down-tray' | 'upload' | 'download' | 'trash' | 'bars-3' | 'menu' | 'arrow-right-on-rectangle' | 'logout' | 'pencil' | 'phone' | 'envelope' | 'building-office' | 'minus' | 'plus' | 'photograph' | 'photo';
2
+ export type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
3
+ export type IconVariant = 'outline' | 'solid';
4
+ export interface IconProps {
5
+ /** Nome do ícone Heroicons */
6
+ name: IconName;
7
+ /** Tamanho do ícone */
8
+ size?: IconSize | number | string;
9
+ /** Variante do ícone */
10
+ variant?: IconVariant;
11
+ /** Cor do ícone */
12
+ color?: string;
13
+ /** Label ARIA para ícones semânticos */
14
+ ariaLabel?: string;
15
+ /** Se true, ícone é decorativo */
16
+ decorative?: boolean;
17
+ }
18
+ declare const _default: import('vue').DefineComponent<IconProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<IconProps> & Readonly<{}>, {
19
+ size: IconSize | number | string;
20
+ variant: IconVariant;
21
+ decorative: boolean;
22
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
23
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as Icon } from './Icon.vue';
2
+ export type { IconProps, IconName, IconSize, IconVariant } from './Icon.vue';
@@ -0,0 +1,13 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as Input } from './Input.vue';
3
+ declare const meta: Meta<typeof Input>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Types: Story;
8
+ export declare const WithError: Story;
9
+ export declare const Disabled: Story;
10
+ export declare const Readonly: Story;
11
+ export declare const WithLeadingIcon: Story;
12
+ export declare const WithTrailingIcon: Story;
13
+ export declare const WithBothIcons: Story;