@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.
- package/LICENSE +19 -0
- package/README.md +186 -0
- package/dist/components/atoms/Avatar/Avatar.stories.d.ts +11 -0
- package/dist/components/atoms/Avatar/Avatar.vue.d.ts +16 -0
- package/dist/components/atoms/Avatar/index.d.ts +2 -0
- package/dist/components/atoms/Badge/Badge.stories.d.ts +11 -0
- package/dist/components/atoms/Badge/Badge.vue.d.ts +40 -0
- package/dist/components/atoms/Badge/index.d.ts +2 -0
- package/dist/components/atoms/Button/Button.stories.d.ts +15 -0
- package/dist/components/atoms/Button/Button.vue.d.ts +47 -0
- package/dist/components/atoms/Button/index.d.ts +2 -0
- package/dist/components/atoms/Card/Card.stories.d.ts +9 -0
- package/dist/components/atoms/Card/Card.vue.d.ts +33 -0
- package/dist/components/atoms/Card/index.d.ts +2 -0
- package/dist/components/atoms/Checkbox/Checkbox.stories.d.ts +11 -0
- package/dist/components/atoms/Checkbox/Checkbox.vue.d.ts +28 -0
- package/dist/components/atoms/Checkbox/index.d.ts +2 -0
- package/dist/components/atoms/CurrencyDisplay/CurrencyDisplay.stories.d.ts +10 -0
- package/dist/components/atoms/CurrencyDisplay/CurrencyDisplay.vue.d.ts +26 -0
- package/dist/components/atoms/CurrencyDisplay/index.d.ts +2 -0
- package/dist/components/atoms/Divider/Divider.stories.d.ts +9 -0
- package/dist/components/atoms/Divider/Divider.vue.d.ts +11 -0
- package/dist/components/atoms/Divider/index.d.ts +2 -0
- package/dist/components/atoms/GradientMesh/GradientMesh.stories.d.ts +13 -0
- package/dist/components/atoms/GradientMesh/GradientMesh.vue.d.ts +43 -0
- package/dist/components/atoms/GradientMesh/index.d.ts +2 -0
- package/dist/components/atoms/Icon/Icon.stories.d.ts +11 -0
- package/dist/components/atoms/Icon/Icon.vue.d.ts +23 -0
- package/dist/components/atoms/Icon/index.d.ts +2 -0
- package/dist/components/atoms/Input/Input.stories.d.ts +13 -0
- package/dist/components/atoms/Input/Input.vue.d.ts +73 -0
- package/dist/components/atoms/Input/index.d.ts +2 -0
- package/dist/components/atoms/Label/Label.stories.d.ts +11 -0
- package/dist/components/atoms/Label/Label.vue.d.ts +28 -0
- package/dist/components/atoms/Label/index.d.ts +2 -0
- package/dist/components/atoms/Logo/Logo.stories.d.ts +10 -0
- package/dist/components/atoms/Logo/Logo.vue.d.ts +17 -0
- package/dist/components/atoms/Logo/index.d.ts +2 -0
- package/dist/components/atoms/Spinner/Spinner.stories.d.ts +11 -0
- package/dist/components/atoms/Spinner/Spinner.vue.d.ts +11 -0
- package/dist/components/atoms/Spinner/index.d.ts +2 -0
- package/dist/components/atoms/Typography/Typography.stories.d.ts +12 -0
- package/dist/components/atoms/Typography/Typography.vue.d.ts +32 -0
- package/dist/components/atoms/Typography/index.d.ts +2 -0
- package/dist/components/atoms/index.d.ts +14 -0
- package/dist/components/index.d.ts +14 -0
- package/dist/components/molecules/ActionButton/ActionButton.stories.d.ts +11 -0
- package/dist/components/molecules/ActionButton/ActionButton.vue.d.ts +31 -0
- package/dist/components/molecules/ActionButton/index.d.ts +2 -0
- package/dist/components/molecules/Alert/Alert.stories.d.ts +12 -0
- package/dist/components/molecules/Alert/Alert.vue.d.ts +20 -0
- package/dist/components/molecules/Alert/index.d.ts +2 -0
- package/dist/components/molecules/AnalysisStatus/AnalysisStatus.stories.d.ts +14 -0
- package/dist/components/molecules/AnalysisStatus/AnalysisStatus.vue.d.ts +16 -0
- package/dist/components/molecules/AnalysisStatus/index.d.ts +2 -0
- package/dist/components/molecules/ContractPaidCelebration/ContractPaidCelebration.stories.d.ts +9 -0
- package/dist/components/molecules/ContractPaidCelebration/ContractPaidCelebration.vue.d.ts +25 -0
- package/dist/components/molecules/ContractPaidCelebration/index.d.ts +2 -0
- package/dist/components/molecules/DocumentUpload/DocumentUpload.stories.d.ts +10 -0
- package/dist/components/molecules/DocumentUpload/DocumentUpload.vue.d.ts +40 -0
- package/dist/components/molecules/DocumentUpload/index.d.ts +2 -0
- package/dist/components/molecules/FilePreview/FilePreview.stories.d.ts +13 -0
- package/dist/components/molecules/FilePreview/FilePreview.vue.d.ts +32 -0
- package/dist/components/molecules/FilePreview/index.d.ts +2 -0
- package/dist/components/molecules/FormField/FormField.stories.d.ts +9 -0
- package/dist/components/molecules/FormField/FormField.vue.d.ts +39 -0
- package/dist/components/molecules/FormField/index.d.ts +2 -0
- package/dist/components/molecules/IdentifierInput/IdentifierInput.stories.d.ts +14 -0
- package/dist/components/molecules/IdentifierInput/IdentifierInput.vue.d.ts +29 -0
- package/dist/components/molecules/IdentifierInput/index.d.ts +2 -0
- package/dist/components/molecules/InfoCard/InfoCard.stories.d.ts +13 -0
- package/dist/components/molecules/InfoCard/InfoCard.vue.d.ts +53 -0
- package/dist/components/molecules/InfoCard/index.d.ts +2 -0
- package/dist/components/molecules/InputRangeMoney/InputRangeMoney.stories.d.ts +9 -0
- package/dist/components/molecules/InputRangeMoney/InputRangeMoney.vue.d.ts +19 -0
- package/dist/components/molecules/InputRangeMoney/index.d.ts +2 -0
- package/dist/components/molecules/InstallmentCard/InstallmentCard.stories.d.ts +9 -0
- package/dist/components/molecules/InstallmentCard/InstallmentCard.vue.d.ts +29 -0
- package/dist/components/molecules/InstallmentCard/index.d.ts +2 -0
- package/dist/components/molecules/InstallmentSelector/InstallmentSelector.stories.d.ts +10 -0
- package/dist/components/molecules/InstallmentSelector/InstallmentSelector.vue.d.ts +28 -0
- package/dist/components/molecules/InstallmentSelector/index.d.ts +2 -0
- package/dist/components/molecules/MarginIndicator/MarginIndicator.stories.d.ts +12 -0
- package/dist/components/molecules/MarginIndicator/MarginIndicator.vue.d.ts +18 -0
- package/dist/components/molecules/MarginIndicator/index.d.ts +2 -0
- package/dist/components/molecules/Modal/Modal.stories.d.ts +8 -0
- package/dist/components/molecules/Modal/Modal.vue.d.ts +38 -0
- package/dist/components/molecules/Modal/index.d.ts +2 -0
- package/dist/components/molecules/PasswordInput/PasswordInput.stories.d.ts +11 -0
- package/dist/components/molecules/PasswordInput/PasswordInput.vue.d.ts +30 -0
- package/dist/components/molecules/PasswordInput/index.d.ts +2 -0
- package/dist/components/molecules/PendingProposalBanner/PendingProposalBanner.stories.d.ts +10 -0
- package/dist/components/molecules/PendingProposalBanner/PendingProposalBanner.vue.d.ts +24 -0
- package/dist/components/molecules/PendingProposalBanner/index.d.ts +2 -0
- package/dist/components/molecules/PinInput/PinInput.stories.d.ts +13 -0
- package/dist/components/molecules/PinInput/PinInput.vue.d.ts +36 -0
- package/dist/components/molecules/PinInput/index.d.ts +2 -0
- package/dist/components/molecules/ProgressBar/ProgressBar.stories.d.ts +12 -0
- package/dist/components/molecules/ProgressBar/ProgressBar.vue.d.ts +24 -0
- package/dist/components/molecules/ProgressBar/index.d.ts +2 -0
- package/dist/components/molecules/SearchBar/SearchBar.stories.d.ts +11 -0
- package/dist/components/molecules/SearchBar/SearchBar.vue.d.ts +30 -0
- package/dist/components/molecules/SearchBar/index.d.ts +2 -0
- package/dist/components/molecules/SimulationLoading/SimulationLoading.stories.d.ts +10 -0
- package/dist/components/molecules/SimulationLoading/SimulationLoading.vue.d.ts +17 -0
- package/dist/components/molecules/SimulationLoading/index.d.ts +2 -0
- package/dist/components/molecules/StatusBadge/StatusBadge.stories.d.ts +12 -0
- package/dist/components/molecules/StatusBadge/StatusBadge.vue.d.ts +38 -0
- package/dist/components/molecules/StatusBadge/index.d.ts +2 -0
- package/dist/components/molecules/StepperProgress/StepperProgress.stories.d.ts +11 -0
- package/dist/components/molecules/StepperProgress/StepperProgress.vue.d.ts +22 -0
- package/dist/components/molecules/StepperProgress/index.d.ts +2 -0
- package/dist/components/molecules/WelcomeCard/WelcomeCard.stories.d.ts +11 -0
- package/dist/components/molecules/WelcomeCard/WelcomeCard.vue.d.ts +33 -0
- package/dist/components/molecules/WelcomeCard/index.d.ts +2 -0
- package/dist/components/molecules/index.d.ts +23 -0
- package/dist/components/organisms/AuthLayout/AuthLayout.stories.d.ts +10 -0
- package/dist/components/organisms/AuthLayout/AuthLayout.vue.d.ts +42 -0
- package/dist/components/organisms/AuthLayout/index.d.ts +2 -0
- package/dist/components/organisms/BottomNavigation/BottomNavigation.stories.d.ts +8 -0
- package/dist/components/organisms/BottomNavigation/BottomNavigation.vue.d.ts +38 -0
- package/dist/components/organisms/BottomNavigation/index.d.ts +2 -0
- package/dist/components/organisms/ConsentForm/ConsentForm.stories.d.ts +9 -0
- package/dist/components/organisms/ConsentForm/ConsentForm.vue.d.ts +45 -0
- package/dist/components/organisms/ConsentForm/TermModal.vue.d.ts +37 -0
- package/dist/components/organisms/ConsentForm/index.d.ts +4 -0
- package/dist/components/organisms/ContractCard/ContractCard.stories.d.ts +12 -0
- package/dist/components/organisms/ContractCard/ContractCard.vue.d.ts +41 -0
- package/dist/components/organisms/ContractCard/index.d.ts +2 -0
- package/dist/components/organisms/ContractDetails/ContractDetails.stories.d.ts +9 -0
- package/dist/components/organisms/ContractDetails/ContractDetails.vue.d.ts +53 -0
- package/dist/components/organisms/ContractDetails/index.d.ts +2 -0
- package/dist/components/organisms/CreatePasswordForm/CreatePasswordForm.stories.d.ts +12 -0
- package/dist/components/organisms/CreatePasswordForm/CreatePasswordForm.vue.d.ts +52 -0
- package/dist/components/organisms/CreatePasswordForm/index.d.ts +2 -0
- package/dist/components/organisms/DashboardHeader/DashboardHeader.stories.d.ts +8 -0
- package/dist/components/organisms/DashboardHeader/DashboardHeader.vue.d.ts +14 -0
- package/dist/components/organisms/DashboardHeader/index.d.ts +2 -0
- package/dist/components/organisms/DocumentUploadSection/DocumentUploadSection.stories.d.ts +10 -0
- package/dist/components/organisms/DocumentUploadSection/DocumentUploadSection.vue.d.ts +72 -0
- package/dist/components/organisms/DocumentUploadSection/index.d.ts +2 -0
- package/dist/components/organisms/Footer/Footer.stories.d.ts +10 -0
- package/dist/components/organisms/Footer/Footer.vue.d.ts +50 -0
- package/dist/components/organisms/Footer/index.d.ts +2 -0
- package/dist/components/organisms/ForgotPasswordForm/ForgotPasswordForm.stories.d.ts +12 -0
- package/dist/components/organisms/ForgotPasswordForm/ForgotPasswordForm.vue.d.ts +64 -0
- package/dist/components/organisms/ForgotPasswordForm/index.d.ts +2 -0
- package/dist/components/organisms/Header/Header.stories.d.ts +9 -0
- package/dist/components/organisms/Header/Header.vue.d.ts +36 -0
- package/dist/components/organisms/Header/index.d.ts +2 -0
- package/dist/components/organisms/InstallmentHistory/InstallmentHistory.stories.d.ts +10 -0
- package/dist/components/organisms/InstallmentHistory/InstallmentHistory.vue.d.ts +42 -0
- package/dist/components/organisms/InstallmentHistory/index.d.ts +2 -0
- package/dist/components/organisms/LoginForm/LoginForm.stories.d.ts +10 -0
- package/dist/components/organisms/LoginForm/LoginForm.vue.d.ts +51 -0
- package/dist/components/organisms/LoginForm/index.d.ts +2 -0
- package/dist/components/organisms/ManualInputModal/ManualInputModal.stories.d.ts +9 -0
- package/dist/components/organisms/ManualInputModal/ManualInputModal.vue.d.ts +41 -0
- package/dist/components/organisms/ManualInputModal/index.d.ts +2 -0
- package/dist/components/organisms/OfferCard/OfferCard.stories.d.ts +11 -0
- package/dist/components/organisms/OfferCard/OfferCard.vue.d.ts +39 -0
- package/dist/components/organisms/OfferCard/index.d.ts +2 -0
- package/dist/components/organisms/ProfileForm/ProfileForm.stories.d.ts +10 -0
- package/dist/components/organisms/ProfileForm/ProfileForm.vue.d.ts +62 -0
- package/dist/components/organisms/ProfileForm/index.d.ts +2 -0
- package/dist/components/organisms/QuickActions/QuickActions.stories.d.ts +9 -0
- package/dist/components/organisms/QuickActions/QuickActions.vue.d.ts +24 -0
- package/dist/components/organisms/QuickActions/index.d.ts +2 -0
- package/dist/components/organisms/ResetPasswordForm/ResetPasswordForm.stories.d.ts +12 -0
- package/dist/components/organisms/ResetPasswordForm/ResetPasswordForm.vue.d.ts +52 -0
- package/dist/components/organisms/ResetPasswordForm/index.d.ts +2 -0
- package/dist/components/organisms/SCRConsentModal/SCRConsentModal.stories.d.ts +8 -0
- package/dist/components/organisms/SCRConsentModal/SCRConsentModal.vue.d.ts +18 -0
- package/dist/components/organisms/SCRConsentModal/index.d.ts +2 -0
- package/dist/components/organisms/Sidebar/Sidebar.stories.d.ts +8 -0
- package/dist/components/organisms/Sidebar/Sidebar.vue.d.ts +78 -0
- package/dist/components/organisms/Sidebar/SidebarItem.vue.d.ts +28 -0
- package/dist/components/organisms/Sidebar/index.d.ts +4 -0
- package/dist/components/organisms/SimulationResult/SimulationResult.stories.d.ts +11 -0
- package/dist/components/organisms/SimulationResult/SimulationResult.vue.d.ts +44 -0
- package/dist/components/organisms/SimulationResult/index.d.ts +2 -0
- package/dist/components/organisms/TopNavigation/TopNavigation.stories.d.ts +8 -0
- package/dist/components/organisms/TopNavigation/TopNavigation.vue.d.ts +48 -0
- package/dist/components/organisms/TopNavigation/index.d.ts +2 -0
- package/dist/components/organisms/index.d.ts +26 -0
- package/dist/components/templates/FormLayout/FormLayout.stories.d.ts +65 -0
- package/dist/components/templates/FormLayout/FormLayout.vue.d.ts +84 -0
- package/dist/components/templates/FormLayout/index.d.ts +2 -0
- package/dist/components/templates/index.d.ts +1 -0
- package/dist/composables/index.d.ts +4 -0
- package/dist/composables/useTheme.d.ts +66 -0
- package/dist/credit-ui.cjs.js +90 -0
- package/dist/credit-ui.css +1 -0
- package/dist/credit-ui.es.js +8936 -0
- package/dist/images/auth-background.jpg +0 -0
- package/dist/index.d.ts +20 -0
- package/dist/logo.png +0 -0
- package/dist/nuxt/index.d.ts +5 -0
- package/dist/nuxt/module.d.ts +17 -0
- package/dist/nuxt.cjs.js +1 -0
- package/dist/nuxt.es.js +31 -0
- package/dist/themes/defaults.d.ts +96 -0
- package/dist/themes/index.d.ts +8 -0
- package/dist/themes/utils.d.ts +35 -0
- package/dist/themes.cjs.js +6 -0
- package/dist/themes.es.js +163 -0
- package/dist/tokens.css +124 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/theme.d.ts +142 -0
- package/package.json +75 -0
- package/src/nuxt/runtime/composables/useTheme.ts +86 -0
- package/src/nuxt/runtime/plugin.server.ts +32 -0
- package/src/nuxt/runtime/plugin.ts +22 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/vue3';
|
|
2
|
+
import { default as Sidebar } from './Sidebar.vue';
|
|
3
|
+
declare const meta: Meta<typeof Sidebar>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const Collapsed: Story;
|
|
8
|
+
export declare const SimulationActive: Story;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { IconName } from '../../atoms';
|
|
2
|
+
/**
|
|
3
|
+
* Sidebar Component (Organism)
|
|
4
|
+
*
|
|
5
|
+
* Menu lateral de navegação para área logada.
|
|
6
|
+
* Componente colapsável com ícones e labels.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Itens de menu configuráveis via props
|
|
10
|
+
* - Highlight automático do item ativo
|
|
11
|
+
* - Modo colapsável (expandido/compacto)
|
|
12
|
+
* - Persistência de estado em localStorage (opcional)
|
|
13
|
+
* - Responsivo (oculto em mobile)
|
|
14
|
+
* - Animações suaves
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```vue
|
|
18
|
+
* <Sidebar
|
|
19
|
+
* :items="menuItems"
|
|
20
|
+
* :current-path="route.path"
|
|
21
|
+
* v-model:collapsed="isCollapsed"
|
|
22
|
+
* logo-src="/logo.svg"
|
|
23
|
+
* @navigate="router.push"
|
|
24
|
+
* />
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export interface SidebarMenuItem {
|
|
28
|
+
/** ID único do item */
|
|
29
|
+
id: string;
|
|
30
|
+
/** Label do item */
|
|
31
|
+
label: string;
|
|
32
|
+
/** Nome do ícone */
|
|
33
|
+
icon: IconName;
|
|
34
|
+
/** Rota para navegação */
|
|
35
|
+
to: string;
|
|
36
|
+
}
|
|
37
|
+
export interface SidebarProps {
|
|
38
|
+
/** Itens do menu */
|
|
39
|
+
items: SidebarMenuItem[];
|
|
40
|
+
/** Path atual para highlight */
|
|
41
|
+
currentPath?: string;
|
|
42
|
+
/** Se o sidebar está colapsado (apenas ícones) */
|
|
43
|
+
collapsed?: boolean;
|
|
44
|
+
/** Persistir estado de collapsed em localStorage */
|
|
45
|
+
persistState?: boolean;
|
|
46
|
+
/** Chave para localStorage */
|
|
47
|
+
storageKey?: string;
|
|
48
|
+
/** URL do logo */
|
|
49
|
+
logoSrc?: string;
|
|
50
|
+
}
|
|
51
|
+
declare function __VLS_template(): {
|
|
52
|
+
attrs: Partial<{}>;
|
|
53
|
+
slots: {
|
|
54
|
+
logo?(_: {}): any;
|
|
55
|
+
};
|
|
56
|
+
refs: {};
|
|
57
|
+
rootEl: HTMLElement;
|
|
58
|
+
};
|
|
59
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
60
|
+
declare const __VLS_component: import('vue').DefineComponent<SidebarProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
61
|
+
navigate: (to: string) => any;
|
|
62
|
+
"update:collapsed": (value: boolean) => any;
|
|
63
|
+
}, string, import('vue').PublicProps, Readonly<SidebarProps> & Readonly<{
|
|
64
|
+
onNavigate?: ((to: string) => any) | undefined;
|
|
65
|
+
"onUpdate:collapsed"?: ((value: boolean) => any) | undefined;
|
|
66
|
+
}>, {
|
|
67
|
+
currentPath: string;
|
|
68
|
+
collapsed: boolean;
|
|
69
|
+
persistState: boolean;
|
|
70
|
+
storageKey: string;
|
|
71
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
|
|
72
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
73
|
+
export default _default;
|
|
74
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
75
|
+
new (): {
|
|
76
|
+
$slots: S;
|
|
77
|
+
};
|
|
78
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { IconName } from '../../atoms';
|
|
2
|
+
/**
|
|
3
|
+
* SidebarItem Component (internal)
|
|
4
|
+
*
|
|
5
|
+
* Item individual do menu do Sidebar.
|
|
6
|
+
* Usado internamente pelo Sidebar para renderizar cada item de navegação.
|
|
7
|
+
*/
|
|
8
|
+
export interface SidebarItemProps {
|
|
9
|
+
/** Rota para navegação */
|
|
10
|
+
to: string;
|
|
11
|
+
/** Nome do ícone */
|
|
12
|
+
icon: IconName;
|
|
13
|
+
/** Label do item */
|
|
14
|
+
label: string;
|
|
15
|
+
/** Se o item está ativo (rota atual) */
|
|
16
|
+
active?: boolean;
|
|
17
|
+
/** Se o sidebar está colapsado (oculta label) */
|
|
18
|
+
collapsed?: boolean;
|
|
19
|
+
}
|
|
20
|
+
declare const _default: import('vue').DefineComponent<SidebarItemProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
21
|
+
click: (to: string) => any;
|
|
22
|
+
}, string, import('vue').PublicProps, Readonly<SidebarItemProps> & Readonly<{
|
|
23
|
+
onClick?: ((to: string) => any) | undefined;
|
|
24
|
+
}>, {
|
|
25
|
+
active: boolean;
|
|
26
|
+
collapsed: boolean;
|
|
27
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLButtonElement>;
|
|
28
|
+
export default _default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/vue3';
|
|
2
|
+
import { default as SimulationResult } from './SimulationResult.vue';
|
|
3
|
+
declare const meta: Meta<typeof SimulationResult>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Loading: Story;
|
|
7
|
+
export declare const WithOffers: Story;
|
|
8
|
+
export declare const WithAcceptDisabled: Story;
|
|
9
|
+
export declare const WithError: Story;
|
|
10
|
+
export declare const Empty: Story;
|
|
11
|
+
export declare const SingleOffer: Story;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface SimulationOffer {
|
|
2
|
+
/** ID da oferta */
|
|
3
|
+
id: string;
|
|
4
|
+
/** Valor da parcela em centavos */
|
|
5
|
+
installmentValue: number;
|
|
6
|
+
/** Quantidade de parcelas */
|
|
7
|
+
installments: number;
|
|
8
|
+
/** Taxa de juros mensal */
|
|
9
|
+
monthlyRate: number;
|
|
10
|
+
/** Valor total em centavos */
|
|
11
|
+
totalValue: number;
|
|
12
|
+
/** CET anual */
|
|
13
|
+
cetYearly?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface SimulationResultProps {
|
|
16
|
+
/** Estado de carregamento */
|
|
17
|
+
loading?: boolean;
|
|
18
|
+
/** Mensagem de erro */
|
|
19
|
+
error?: string;
|
|
20
|
+
/** Lista de ofertas */
|
|
21
|
+
offers?: SimulationOffer[];
|
|
22
|
+
/** Mostrar botão de aceitar proposta */
|
|
23
|
+
showAcceptButton?: boolean;
|
|
24
|
+
/** Desabilitar botão de aceitar */
|
|
25
|
+
acceptDisabled?: boolean;
|
|
26
|
+
/** Mensagem de aviso sobre aceite */
|
|
27
|
+
acceptWarningMessage?: string;
|
|
28
|
+
}
|
|
29
|
+
declare const _default: import('vue').DefineComponent<SimulationResultProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
30
|
+
"new-simulation": () => any;
|
|
31
|
+
retry: () => any;
|
|
32
|
+
"accept-proposal": (offerId: string) => any;
|
|
33
|
+
}, string, import('vue').PublicProps, Readonly<SimulationResultProps> & Readonly<{
|
|
34
|
+
"onNew-simulation"?: (() => any) | undefined;
|
|
35
|
+
onRetry?: (() => any) | undefined;
|
|
36
|
+
"onAccept-proposal"?: ((offerId: string) => any) | undefined;
|
|
37
|
+
}>, {
|
|
38
|
+
loading: boolean;
|
|
39
|
+
error: string;
|
|
40
|
+
showAcceptButton: boolean;
|
|
41
|
+
acceptDisabled: boolean;
|
|
42
|
+
acceptWarningMessage: string;
|
|
43
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
44
|
+
export default _default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/vue3';
|
|
2
|
+
import { default as TopNavigation } from './TopNavigation.vue';
|
|
3
|
+
declare const meta: Meta<typeof TopNavigation>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const SimulationActive: Story;
|
|
8
|
+
export declare const NonSticky: Story;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { IconName } from '../../atoms';
|
|
2
|
+
/**
|
|
3
|
+
* TopNavigation - Organism de navegação desktop
|
|
4
|
+
*
|
|
5
|
+
* Exibe navegação horizontal com logo e links para telas >= 768px (md breakpoint).
|
|
6
|
+
* Oculto em mobile, onde BottomNavigation assume.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```vue
|
|
10
|
+
* <TopNavigation
|
|
11
|
+
* :items="navItems"
|
|
12
|
+
* :current-path="currentRoute"
|
|
13
|
+
* :sticky="true"
|
|
14
|
+
* brand-name="Giro Crédito"
|
|
15
|
+
* @navigate="handleNav"
|
|
16
|
+
* />
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export interface NavigationItem {
|
|
20
|
+
/** Label do item */
|
|
21
|
+
label: string;
|
|
22
|
+
/** Rota/path do item */
|
|
23
|
+
to: string;
|
|
24
|
+
/** Nome do ícone */
|
|
25
|
+
icon: IconName;
|
|
26
|
+
}
|
|
27
|
+
export interface TopNavigationProps {
|
|
28
|
+
/** Itens de navegação */
|
|
29
|
+
items: NavigationItem[];
|
|
30
|
+
/** Path atual para highlight */
|
|
31
|
+
currentPath?: string;
|
|
32
|
+
/** Se deve usar posicionamento sticky no topo */
|
|
33
|
+
sticky?: boolean;
|
|
34
|
+
/** Nome da marca/produto */
|
|
35
|
+
brandName?: string;
|
|
36
|
+
/** URL do logo (opcional) */
|
|
37
|
+
logoUrl?: string;
|
|
38
|
+
}
|
|
39
|
+
declare const _default: import('vue').DefineComponent<TopNavigationProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
40
|
+
navigate: (to: string) => any;
|
|
41
|
+
}, string, import('vue').PublicProps, Readonly<TopNavigationProps> & Readonly<{
|
|
42
|
+
onNavigate?: ((to: string) => any) | undefined;
|
|
43
|
+
}>, {
|
|
44
|
+
sticky: boolean;
|
|
45
|
+
currentPath: string;
|
|
46
|
+
brandName: string;
|
|
47
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
|
|
48
|
+
export default _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export * from './AuthLayout';
|
|
2
|
+
export * from './CreatePasswordForm';
|
|
3
|
+
export * from './DashboardHeader';
|
|
4
|
+
export * from './Footer';
|
|
5
|
+
export * from './ForgotPasswordForm';
|
|
6
|
+
export * from './Header';
|
|
7
|
+
export * from './LoginForm';
|
|
8
|
+
export * from './ManualInputModal';
|
|
9
|
+
export * from './OfferCard';
|
|
10
|
+
export * from './QuickActions';
|
|
11
|
+
export * from './ResetPasswordForm';
|
|
12
|
+
export * from './SCRConsentModal';
|
|
13
|
+
export * from './SimulationResult';
|
|
14
|
+
export { ContractCard } from './ContractCard';
|
|
15
|
+
export type { ContractCardProps } from './ContractCard';
|
|
16
|
+
export { BottomNavigation } from './BottomNavigation';
|
|
17
|
+
export type { BottomNavigationProps, NavigationItem as BottomNavigationItem } from './BottomNavigation';
|
|
18
|
+
export { TopNavigation } from './TopNavigation';
|
|
19
|
+
export type { TopNavigationProps, NavigationItem as TopNavigationItem } from './TopNavigation';
|
|
20
|
+
export * from './Sidebar';
|
|
21
|
+
export { ContractDetails } from './ContractDetails';
|
|
22
|
+
export type { ContractDetailsProps, ContractSummary as ContractDetailsSummary, NextInstallment as ContractDetailsNextInstallment } from './ContractDetails';
|
|
23
|
+
export * from './InstallmentHistory';
|
|
24
|
+
export * from './DocumentUploadSection';
|
|
25
|
+
export * from './ConsentForm';
|
|
26
|
+
export * from './ProfileForm';
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/vue3';
|
|
2
|
+
import { default as FormLayout } from './FormLayout.vue';
|
|
3
|
+
declare const meta: Meta<typeof FormLayout>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof FormLayout>;
|
|
6
|
+
/**
|
|
7
|
+
* Story: Default
|
|
8
|
+
*
|
|
9
|
+
* Visualização padrão do Form Layout com todas as opções.
|
|
10
|
+
*/
|
|
11
|
+
export declare const Default: Story;
|
|
12
|
+
/**
|
|
13
|
+
* Story: First Step
|
|
14
|
+
*
|
|
15
|
+
* Primeiro step com botão voltar oculto.
|
|
16
|
+
*/
|
|
17
|
+
export declare const FirstStep: Story;
|
|
18
|
+
/**
|
|
19
|
+
* Story: Middle Step
|
|
20
|
+
*
|
|
21
|
+
* Step intermediário com ambos os botões visíveis.
|
|
22
|
+
*/
|
|
23
|
+
export declare const MiddleStep: Story;
|
|
24
|
+
/**
|
|
25
|
+
* Story: Last Step
|
|
26
|
+
*
|
|
27
|
+
* Último step com label customizado "Finalizar".
|
|
28
|
+
*/
|
|
29
|
+
export declare const LastStep: Story;
|
|
30
|
+
/**
|
|
31
|
+
* Story: Loading State
|
|
32
|
+
*
|
|
33
|
+
* Estado de loading no botão próximo.
|
|
34
|
+
*/
|
|
35
|
+
export declare const Loading: Story;
|
|
36
|
+
/**
|
|
37
|
+
* Story: Next Disabled
|
|
38
|
+
*
|
|
39
|
+
* Botão próximo desabilitado (formulário incompleto).
|
|
40
|
+
*/
|
|
41
|
+
export declare const NextDisabled: Story;
|
|
42
|
+
/**
|
|
43
|
+
* Story: No Security Footer
|
|
44
|
+
*
|
|
45
|
+
* Layout sem footer de segurança.
|
|
46
|
+
*/
|
|
47
|
+
export declare const NoSecurityFooter: Story;
|
|
48
|
+
/**
|
|
49
|
+
* Story: Custom Labels
|
|
50
|
+
*
|
|
51
|
+
* Labels customizados para os botões.
|
|
52
|
+
*/
|
|
53
|
+
export declare const CustomLabels: Story;
|
|
54
|
+
/**
|
|
55
|
+
* Story: Hidden Buttons
|
|
56
|
+
*
|
|
57
|
+
* Layout com botões de navegação ocultos (para páginas que controlam própria navegação).
|
|
58
|
+
*/
|
|
59
|
+
export declare const HiddenButtons: Story;
|
|
60
|
+
/**
|
|
61
|
+
* Story: Playground
|
|
62
|
+
*
|
|
63
|
+
* Playground interativo para customização do Form Layout.
|
|
64
|
+
*/
|
|
65
|
+
export declare const Playground: Story;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Step } from '../../molecules/StepperProgress/StepperProgress.vue';
|
|
2
|
+
/**
|
|
3
|
+
* FormLayout - Template para formulários multi-step
|
|
4
|
+
*
|
|
5
|
+
* Centraliza a estrutura comum de formulários multi-step (simulação, KYC, etc.):
|
|
6
|
+
* - Header com título gradiente e subtítulo
|
|
7
|
+
* - StepperProgress para indicador de progresso
|
|
8
|
+
* - Slot para conteúdo dinâmico
|
|
9
|
+
* - Botões de navegação (Voltar/Continuar)
|
|
10
|
+
* - Footer com informações de segurança
|
|
11
|
+
*
|
|
12
|
+
* Seguindo Atomic Design: Template que agrupa Organisms/Molecules/Atoms
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```vue
|
|
16
|
+
* <FormLayout
|
|
17
|
+
* title="Simulação de Crédito"
|
|
18
|
+
* subtitle="Descubra as melhores condições"
|
|
19
|
+
* :steps="steps"
|
|
20
|
+
* :current-step="currentStep"
|
|
21
|
+
* @back="handleBack"
|
|
22
|
+
* @next="handleNext"
|
|
23
|
+
* >
|
|
24
|
+
* <SimulationForm />
|
|
25
|
+
* </FormLayout>
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export type { Step };
|
|
29
|
+
export interface FormLayoutProps {
|
|
30
|
+
/** Título principal exibido no header */
|
|
31
|
+
title: string;
|
|
32
|
+
/** Subtítulo opcional abaixo do título */
|
|
33
|
+
subtitle?: string;
|
|
34
|
+
/** Array de etapas para o StepperProgress */
|
|
35
|
+
steps: Step[];
|
|
36
|
+
/** Etapa atual (1-indexed) */
|
|
37
|
+
currentStep: number;
|
|
38
|
+
/** Label do botão voltar */
|
|
39
|
+
backLabel?: string;
|
|
40
|
+
/** Label do botão próximo */
|
|
41
|
+
nextLabel?: string;
|
|
42
|
+
/** Estado de loading do botão próximo */
|
|
43
|
+
loading?: boolean;
|
|
44
|
+
/** Desabilita o botão próximo */
|
|
45
|
+
nextDisabled?: boolean;
|
|
46
|
+
/** Esconde o botão voltar */
|
|
47
|
+
hideBack?: boolean;
|
|
48
|
+
/** Exibe footer de segurança */
|
|
49
|
+
showSecurityFooter?: boolean;
|
|
50
|
+
/** Esconde botões de navegação (para páginas que controlam própria navegação) */
|
|
51
|
+
hideButtons?: boolean;
|
|
52
|
+
}
|
|
53
|
+
declare function __VLS_template(): {
|
|
54
|
+
attrs: Partial<{}>;
|
|
55
|
+
slots: {
|
|
56
|
+
default?(_: {}): any;
|
|
57
|
+
};
|
|
58
|
+
refs: {};
|
|
59
|
+
rootEl: HTMLDivElement;
|
|
60
|
+
};
|
|
61
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
62
|
+
declare const __VLS_component: import('vue').DefineComponent<FormLayoutProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
63
|
+
back: () => any;
|
|
64
|
+
next: () => any;
|
|
65
|
+
}, string, import('vue').PublicProps, Readonly<FormLayoutProps> & Readonly<{
|
|
66
|
+
onBack?: (() => any) | undefined;
|
|
67
|
+
onNext?: (() => any) | undefined;
|
|
68
|
+
}>, {
|
|
69
|
+
loading: boolean;
|
|
70
|
+
subtitle: string;
|
|
71
|
+
backLabel: string;
|
|
72
|
+
nextLabel: string;
|
|
73
|
+
nextDisabled: boolean;
|
|
74
|
+
hideBack: boolean;
|
|
75
|
+
showSecurityFooter: boolean;
|
|
76
|
+
hideButtons: boolean;
|
|
77
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
78
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
79
|
+
export default _default;
|
|
80
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
81
|
+
new (): {
|
|
82
|
+
$slots: S;
|
|
83
|
+
};
|
|
84
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './FormLayout';
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ThemeConfig, ThemeTokens } from '../types/theme';
|
|
2
|
+
/**
|
|
3
|
+
* Vue composable for theme management
|
|
4
|
+
* @param initialConfig - Optional initial theme configuration
|
|
5
|
+
*/
|
|
6
|
+
export declare function useTheme(initialConfig?: ThemeConfig): {
|
|
7
|
+
tokens: import('vue').ComputedRef<ThemeTokens>;
|
|
8
|
+
colors: import('vue').ComputedRef<Required<import('..').ThemeColors>>;
|
|
9
|
+
fonts: import('vue').ComputedRef<Required<import('..').ThemeFonts>>;
|
|
10
|
+
isReady: import('vue').Ref<boolean, boolean>;
|
|
11
|
+
currentConfig: import('vue').Ref<{
|
|
12
|
+
colors?: {
|
|
13
|
+
primary?: string | undefined;
|
|
14
|
+
primaryDark?: string | undefined;
|
|
15
|
+
primaryLight?: string | undefined;
|
|
16
|
+
secondary?: string | undefined;
|
|
17
|
+
accent?: string | undefined;
|
|
18
|
+
background?: string | undefined;
|
|
19
|
+
backgroundAlt?: string | undefined;
|
|
20
|
+
surface?: string | undefined;
|
|
21
|
+
surfaceAccent?: string | undefined;
|
|
22
|
+
text?: string | undefined;
|
|
23
|
+
textMuted?: string | undefined;
|
|
24
|
+
textInverse?: string | undefined;
|
|
25
|
+
error?: string | undefined;
|
|
26
|
+
warning?: string | undefined;
|
|
27
|
+
success?: string | undefined;
|
|
28
|
+
info?: string | undefined;
|
|
29
|
+
} | undefined;
|
|
30
|
+
fonts?: {
|
|
31
|
+
heading?: string | undefined;
|
|
32
|
+
base?: string | undefined;
|
|
33
|
+
} | undefined;
|
|
34
|
+
}, ThemeConfig | {
|
|
35
|
+
colors?: {
|
|
36
|
+
primary?: string | undefined;
|
|
37
|
+
primaryDark?: string | undefined;
|
|
38
|
+
primaryLight?: string | undefined;
|
|
39
|
+
secondary?: string | undefined;
|
|
40
|
+
accent?: string | undefined;
|
|
41
|
+
background?: string | undefined;
|
|
42
|
+
backgroundAlt?: string | undefined;
|
|
43
|
+
surface?: string | undefined;
|
|
44
|
+
surfaceAccent?: string | undefined;
|
|
45
|
+
text?: string | undefined;
|
|
46
|
+
textMuted?: string | undefined;
|
|
47
|
+
textInverse?: string | undefined;
|
|
48
|
+
error?: string | undefined;
|
|
49
|
+
warning?: string | undefined;
|
|
50
|
+
success?: string | undefined;
|
|
51
|
+
info?: string | undefined;
|
|
52
|
+
} | undefined;
|
|
53
|
+
fonts?: {
|
|
54
|
+
heading?: string | undefined;
|
|
55
|
+
base?: string | undefined;
|
|
56
|
+
} | undefined;
|
|
57
|
+
}>;
|
|
58
|
+
getColor: (name: keyof ThemeTokens["colors"]) => string;
|
|
59
|
+
getFont: (name: keyof ThemeTokens["fonts"]) => string;
|
|
60
|
+
getToken: (name: string) => string;
|
|
61
|
+
getCSSToken: (name: string) => string;
|
|
62
|
+
getSpacing: (size: keyof ThemeTokens["spacing"]) => string;
|
|
63
|
+
getRadius: (size: keyof ThemeTokens["radius"]) => string;
|
|
64
|
+
applyTheme: (config: ThemeConfig) => void;
|
|
65
|
+
resetTheme: () => void;
|
|
66
|
+
};
|