@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
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@thatix.io/credit-ui",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "UI Kit para esteiras de crédito da Thatix",
|
|
6
|
+
"author": "Thatix.io",
|
|
7
|
+
"license": "UNLICENSED",
|
|
8
|
+
"main": "./dist/credit-ui.cjs.js",
|
|
9
|
+
"module": "./dist/credit-ui.es.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/credit-ui.es.js",
|
|
15
|
+
"require": "./dist/credit-ui.cjs.js"
|
|
16
|
+
},
|
|
17
|
+
"./components": {
|
|
18
|
+
"types": "./dist/components/index.d.ts",
|
|
19
|
+
"import": "./dist/credit-ui.es.js",
|
|
20
|
+
"require": "./dist/credit-ui.cjs.js"
|
|
21
|
+
},
|
|
22
|
+
"./nuxt": {
|
|
23
|
+
"types": "./dist/nuxt/module.d.ts",
|
|
24
|
+
"import": "./dist/nuxt.es.js",
|
|
25
|
+
"require": "./dist/nuxt.cjs.js"
|
|
26
|
+
},
|
|
27
|
+
"./themes": {
|
|
28
|
+
"types": "./dist/themes/index.d.ts",
|
|
29
|
+
"import": "./dist/themes.es.js",
|
|
30
|
+
"require": "./dist/themes.cjs.js"
|
|
31
|
+
},
|
|
32
|
+
"./themes/tokens.css": {
|
|
33
|
+
"style": "./dist/tokens.css"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"dist",
|
|
38
|
+
"src/nuxt/runtime"
|
|
39
|
+
],
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "vite build",
|
|
42
|
+
"typecheck": "vue-tsc --noEmit",
|
|
43
|
+
"lint": "eslint src",
|
|
44
|
+
"lint:fix": "eslint src --fix",
|
|
45
|
+
"format": "prettier --write src",
|
|
46
|
+
"storybook": "storybook dev -p 6006",
|
|
47
|
+
"build-storybook": "storybook build"
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"vue": "^3.4.0"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@eslint/js": "^9.39.2",
|
|
54
|
+
"@storybook/vue3": "^10.2.1",
|
|
55
|
+
"@storybook/vue3-vite": "^10.2.1",
|
|
56
|
+
"@tailwindcss/postcss": "^4.1.18",
|
|
57
|
+
"@vitejs/plugin-vue": "^6.0.3",
|
|
58
|
+
"eslint": "^9.39.2",
|
|
59
|
+
"eslint-plugin-vue": "^10.7.0",
|
|
60
|
+
"postcss": "^8.5.6",
|
|
61
|
+
"prettier": "^3.8.1",
|
|
62
|
+
"storybook": "^10.2.1",
|
|
63
|
+
"tailwindcss": "^4.1.18",
|
|
64
|
+
"typescript": "^5.9.3",
|
|
65
|
+
"typescript-eslint": "^8.54.0",
|
|
66
|
+
"vite": "^7.3.1",
|
|
67
|
+
"vite-plugin-dts": "^4.5.4",
|
|
68
|
+
"vue": "^3.5.27",
|
|
69
|
+
"vue-tsc": "^3.2.4"
|
|
70
|
+
},
|
|
71
|
+
"dependencies": {
|
|
72
|
+
"@heroicons/vue": "^2.2.0",
|
|
73
|
+
"ogl": "^1.0.11"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nuxt composable for theme access
|
|
3
|
+
*
|
|
4
|
+
* Provides programmatic access to theme tokens within Nuxt applications.
|
|
5
|
+
* Uses runtimeConfig to access the merged theme configuration.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```vue
|
|
9
|
+
* <script setup>
|
|
10
|
+
* const { getColor, getToken, colors, fonts } = useTheme()
|
|
11
|
+
*
|
|
12
|
+
* const primaryColor = getColor('primary')
|
|
13
|
+
* const spacing = getToken('spacing-4')
|
|
14
|
+
* </script>
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { computed } from 'vue'
|
|
19
|
+
import { useRuntimeConfig } from '#app'
|
|
20
|
+
import { mergeTheme, getCSSVariable } from '../../../themes'
|
|
21
|
+
import type { ThemeTokens } from '../../../types/theme'
|
|
22
|
+
|
|
23
|
+
export function useTheme() {
|
|
24
|
+
const config = useRuntimeConfig()
|
|
25
|
+
const themeConfig = config.public.creditUi?.theme
|
|
26
|
+
|
|
27
|
+
// Merge user config with defaults
|
|
28
|
+
const tokens = computed<ThemeTokens>(() => mergeTheme(themeConfig))
|
|
29
|
+
|
|
30
|
+
// Get color from tokens
|
|
31
|
+
const colors = computed(() => tokens.value.colors)
|
|
32
|
+
const fonts = computed(() => tokens.value.fonts)
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Get a color token value
|
|
36
|
+
* @param name - Color name (e.g., 'primary', 'accent')
|
|
37
|
+
*/
|
|
38
|
+
function getColor(name: keyof ThemeTokens['colors']): string {
|
|
39
|
+
return tokens.value.colors[name]
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Get a font family value
|
|
44
|
+
* @param name - Font name ('heading' or 'base')
|
|
45
|
+
*/
|
|
46
|
+
function getFont(name: keyof ThemeTokens['fonts']): string {
|
|
47
|
+
return tokens.value.fonts[name]
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Get any CSS variable value from the document
|
|
52
|
+
* @param name - CSS variable name (e.g., '--color-primary', '--spacing-4')
|
|
53
|
+
*/
|
|
54
|
+
function getToken(name: string): string {
|
|
55
|
+
// Ensure name starts with --
|
|
56
|
+
const varName = name.startsWith('--') ? name : `--${name}`
|
|
57
|
+
return getCSSVariable(varName)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Get spacing token value
|
|
62
|
+
* @param size - Spacing size (0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16)
|
|
63
|
+
*/
|
|
64
|
+
function getSpacing(size: keyof ThemeTokens['spacing']): string {
|
|
65
|
+
return tokens.value.spacing[size]
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Get radius token value
|
|
70
|
+
* @param size - Radius size (none, sm, md, lg, xl, 2xl, full)
|
|
71
|
+
*/
|
|
72
|
+
function getRadius(size: keyof ThemeTokens['radius']): string {
|
|
73
|
+
return tokens.value.radius[size]
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return {
|
|
77
|
+
tokens,
|
|
78
|
+
colors,
|
|
79
|
+
fonts,
|
|
80
|
+
getColor,
|
|
81
|
+
getFont,
|
|
82
|
+
getToken,
|
|
83
|
+
getSpacing,
|
|
84
|
+
getRadius,
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side Nuxt plugin for theme injection
|
|
3
|
+
*
|
|
4
|
+
* Generates inline CSS for SSR to prevent FOUC (Flash of Unstyled Content).
|
|
5
|
+
* The CSS is injected into the head during server-side rendering.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { defineNuxtPlugin, useRuntimeConfig, useHead } from '#app'
|
|
9
|
+
import { mergeTheme, generateCSSString } from '../../themes'
|
|
10
|
+
|
|
11
|
+
export default defineNuxtPlugin({
|
|
12
|
+
name: 'credit-ui-theme-server',
|
|
13
|
+
enforce: 'pre',
|
|
14
|
+
setup() {
|
|
15
|
+
const config = useRuntimeConfig()
|
|
16
|
+
const themeConfig = config.public.creditUi?.theme
|
|
17
|
+
|
|
18
|
+
// Merge user config with defaults
|
|
19
|
+
const tokens = mergeTheme(themeConfig)
|
|
20
|
+
const cssString = generateCSSString(tokens)
|
|
21
|
+
|
|
22
|
+
// Inject CSS into head for SSR
|
|
23
|
+
useHead({
|
|
24
|
+
style: [
|
|
25
|
+
{
|
|
26
|
+
id: 'credit-ui-theme',
|
|
27
|
+
innerHTML: cssString,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
})
|
|
31
|
+
},
|
|
32
|
+
})
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side Nuxt plugin for theme injection
|
|
3
|
+
*
|
|
4
|
+
* Reads theme config from runtimeConfig and injects CSS variables
|
|
5
|
+
* into the document head, overriding defaults from tokens.css.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { defineNuxtPlugin, useRuntimeConfig } from '#app'
|
|
9
|
+
import { mergeTheme, injectThemeCSS } from '../../themes'
|
|
10
|
+
|
|
11
|
+
export default defineNuxtPlugin({
|
|
12
|
+
name: 'credit-ui-theme',
|
|
13
|
+
enforce: 'pre',
|
|
14
|
+
setup() {
|
|
15
|
+
const config = useRuntimeConfig()
|
|
16
|
+
const themeConfig = config.public.creditUi?.theme
|
|
17
|
+
|
|
18
|
+
// Merge user config with defaults and inject CSS
|
|
19
|
+
const tokens = mergeTheme(themeConfig)
|
|
20
|
+
injectThemeCSS(tokens)
|
|
21
|
+
},
|
|
22
|
+
})
|