tera-system-ui 0.1.64 → 0.1.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/COMPONENT_API.md +2 -539
- package/dist/components/accordion/Accordion.d.ts +24 -0
- package/dist/components/accordion/Accordion.js +4 -0
- package/dist/components/accordion/components/Accordion.svelte +2 -8
- package/dist/components/accordion/components/AccordionContent.svelte +5 -12
- package/dist/components/accordion/components/AccordionItem.svelte +3 -9
- package/dist/components/accordion/components/AccordionTrigger.svelte +5 -15
- package/dist/components/ai/ChatBubble.svelte +35 -0
- package/dist/components/ai/ChatBubble.svelte.d.ts +12 -0
- package/dist/components/ai/PromptInput.svelte +58 -0
- package/dist/components/ai/PromptInput.svelte.d.ts +13 -0
- package/dist/components/ai/StreamText.svelte +41 -0
- package/dist/components/ai/StreamText.svelte.d.ts +11 -0
- package/dist/components/ai/SuggestionChips.svelte +34 -0
- package/dist/components/ai/SuggestionChips.svelte.d.ts +10 -0
- package/dist/components/ai/ThinkingLoader.svelte +34 -0
- package/dist/components/ai/ThinkingLoader.svelte.d.ts +11 -0
- package/dist/components/ai/index.d.ts +5 -0
- package/dist/components/ai/index.js +5 -0
- package/dist/components/alert/Alert.svelte +47 -0
- package/dist/components/alert/Alert.svelte.d.ts +15 -0
- package/dist/components/alert/index.d.ts +1 -0
- package/dist/components/alert/index.js +1 -0
- package/dist/components/avatar/Avatar.svelte +9 -25
- package/dist/components/badge/Badge.d.ts +52 -0
- package/dist/components/badge/Badge.js +22 -0
- package/dist/components/badge/Badge.svelte +22 -0
- package/dist/components/badge/Badge.svelte.d.ts +4 -0
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/badge/index.js +1 -0
- package/dist/components/brand-logo/BrandLogo.svelte +12 -10
- package/dist/components/button/Button.d.ts +2 -2
- package/dist/components/button/Button.js +12 -12
- package/dist/components/button/Button.svelte +7 -34
- package/dist/components/card/Card.d.ts +68 -0
- package/dist/components/card/Card.js +28 -0
- package/dist/components/card/Card.svelte +33 -0
- package/dist/components/card/Card.svelte.d.ts +4 -0
- package/dist/components/card/index.d.ts +2 -0
- package/dist/components/card/index.js +1 -0
- package/dist/components/checkbox/Checkbox.d.ts +25 -4
- package/dist/components/checkbox/Checkbox.js +4 -0
- package/dist/components/checkbox/Checkbox.svelte +13 -16
- package/dist/components/checkbox/Checkbox.svelte.d.ts +2 -2
- package/dist/components/combobox/Combobox.d.ts +45 -9
- package/dist/components/combobox/Combobox.js +5 -7
- package/dist/components/combobox/Combobox.svelte +226 -8
- package/dist/components/combobox/Combobox.svelte.d.ts +2 -2
- package/dist/components/combobox/index.d.ts +1 -1
- package/dist/components/command/components/command-empty.svelte +3 -8
- package/dist/components/command/components/command-group.svelte +3 -13
- package/dist/components/command/components/command-input.svelte +5 -13
- package/dist/components/command/components/command-item.svelte +3 -9
- package/dist/components/command/components/command-link-item.svelte +3 -8
- package/dist/components/command/components/command-list.svelte +3 -8
- package/dist/components/command/components/command-separator.svelte +3 -8
- package/dist/components/command/components/command-shortcut.svelte +2 -10
- package/dist/components/command/components/command.svelte +29 -42
- package/dist/components/date-range-picker/DateRangePicker.svelte +490 -0
- package/dist/components/date-range-picker/DateRangePicker.svelte.d.ts +4 -0
- package/dist/components/date-range-picker/DateRangePicker.types.d.ts +38 -0
- package/dist/components/date-range-picker/DateRangePicker.types.js +1 -0
- package/dist/components/date-range-picker/index.d.ts +2 -0
- package/dist/components/date-range-picker/index.js +1 -0
- package/dist/components/dialog/Dialog.d.ts +43 -121
- package/dist/components/dialog/Dialog.js +1 -39
- package/dist/components/dialog/Dialog.svelte +103 -113
- package/dist/components/dialog/Dialog.svelte.d.ts +1 -2
- package/dist/components/dialog/dialog.scss +21 -24
- package/dist/components/drawer/Drawer.svelte +63 -0
- package/dist/components/drawer/Drawer.svelte.d.ts +16 -0
- package/dist/components/drawer/index.d.ts +1 -0
- package/dist/components/drawer/index.js +1 -0
- package/dist/components/dropdown-menu/DropdownMenu.d.ts +51 -24
- package/dist/components/dropdown-menu/DropdownMenu.js +1 -15
- package/dist/components/dropdown-menu/components/DropdownMenu.svelte +36 -34
- package/dist/components/dropdown-menu/components/DropdownMenu.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte +8 -12
- package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte.d.ts +2 -4
- package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte +11 -12
- package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte.d.ts +2 -4
- package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte +27 -30
- package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte.d.ts +1 -1
- package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte +9 -11
- package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte.d.ts +2 -4
- package/dist/components/fonts/TeraFontMono.svelte +4 -4
- package/dist/components/fonts/TeraFontMono.svelte.d.ts +1 -0
- package/dist/components/fonts/TeraFontSansSerif.svelte +4 -4
- package/dist/components/fonts/TeraFontSansSerif.svelte.d.ts +1 -1
- package/dist/components/header/Header.svelte +6 -9
- package/dist/components/header/header.scss +1 -1
- package/dist/components/icons/IconArrowBigRightFilled.svelte +3 -7
- package/dist/components/icons/IconBook.svelte +3 -6
- package/dist/components/icons/IconBookmarkPlus.svelte +3 -6
- package/dist/components/icons/IconCalculator.svelte +3 -6
- package/dist/components/icons/IconCheck.svelte +3 -6
- package/dist/components/icons/IconChevronDown.svelte +3 -6
- package/dist/components/icons/IconCoin.svelte +3 -6
- package/dist/components/icons/IconCoinConvert.svelte +2 -5
- package/dist/components/icons/IconCopy.svelte +3 -6
- package/dist/components/icons/IconCopyCheckFilled.svelte +3 -6
- package/dist/components/icons/IconHamburger.svelte +3 -6
- package/dist/components/icons/IconLanguage.svelte +3 -6
- package/dist/components/icons/IconLoader2.svelte +3 -6
- package/dist/components/icons/IconLogout.svelte +3 -6
- package/dist/components/icons/IconMoon.svelte +3 -6
- package/dist/components/icons/IconPointFilled.svelte +3 -6
- package/dist/components/icons/IconSearch.svelte +3 -6
- package/dist/components/icons/IconSettings.svelte +3 -6
- package/dist/components/icons/IconSun.svelte +3 -6
- package/dist/components/icons/IconSwitchHorizontal.svelte +3 -6
- package/dist/components/icons/IconSwitchVertical.svelte +3 -6
- package/dist/components/icons/IconTransform.svelte +3 -6
- package/dist/components/icons/IconX.svelte +3 -6
- package/dist/components/input/Input.d.ts +2 -2
- package/dist/components/input/Input.js +10 -10
- package/dist/components/input/Input.svelte +10 -26
- package/dist/components/label/Label.d.ts +2 -2
- package/dist/components/label/Label.js +2 -2
- package/dist/components/label/Label.svelte +4 -12
- package/dist/components/language-picker-button/LanguagePickerButton.svelte +23 -42
- package/dist/components/light-dark-toggle/LightDarkToggle.svelte +21 -26
- package/dist/components/marketing/FeatureCard.svelte +37 -0
- package/dist/components/marketing/FeatureCard.svelte.d.ts +13 -0
- package/dist/components/marketing/PricingCard.svelte +48 -0
- package/dist/components/marketing/PricingCard.svelte.d.ts +15 -0
- package/dist/components/marketing/StatBlock.svelte +14 -0
- package/dist/components/marketing/StatBlock.svelte.d.ts +10 -0
- package/dist/components/marketing/TestimonialCard.svelte +24 -0
- package/dist/components/marketing/TestimonialCard.svelte.d.ts +12 -0
- package/dist/components/marketing/index.d.ts +4 -0
- package/dist/components/marketing/index.js +4 -0
- package/dist/components/popover/Popover.d.ts +32 -13
- package/dist/components/popover/Popover.js +1 -7
- package/dist/components/popover/Popover.svelte +40 -158
- package/dist/components/popover/Popover.svelte.d.ts +2 -2
- package/dist/components/popover-responsive/PopoverResponsive.d.ts +18 -7
- package/dist/components/popover-responsive/PopoverResponsive.js +1 -7
- package/dist/components/popover-responsive/PopoverResponsive.svelte +25 -87
- package/dist/components/popover-responsive/PopoverResponsive.svelte.d.ts +2 -11
- package/dist/components/select/Select.d.ts +60 -23
- package/dist/components/select/Select.js +14 -35
- package/dist/components/select/Select.svelte +157 -28
- package/dist/components/select/Select.svelte.d.ts +2 -3
- package/dist/components/select/index.d.ts +1 -1
- package/dist/components/side-navigation/SideNavigation.svelte +73 -96
- package/dist/components/side-navigation/SideNavigationItem.svelte +2 -2
- package/dist/components/side-navigation/SideNavigationLayout.svelte +3 -5
- package/dist/components/side-navigation/sidenav.scss +17 -13
- package/dist/components/skeleton/Skeleton.svelte +48 -0
- package/dist/components/skeleton/Skeleton.svelte.d.ts +12 -0
- package/dist/components/skeleton/index.d.ts +1 -0
- package/dist/components/skeleton/index.js +1 -0
- package/dist/components/slider/Slider.d.ts +25 -15
- package/dist/components/slider/Slider.js +1 -7
- package/dist/components/slider/Slider.svelte +38 -164
- package/dist/components/slider/Slider.svelte.d.ts +1 -1
- package/dist/components/spinner/Spinner.svelte +39 -0
- package/dist/components/spinner/Spinner.svelte.d.ts +10 -0
- package/dist/components/spinner/index.d.ts +1 -0
- package/dist/components/spinner/index.js +1 -0
- package/dist/components/star-rating/StarRating.svelte +33 -49
- package/dist/components/switch/Switch.d.ts +19 -4
- package/dist/components/switch/Switch.js +4 -0
- package/dist/components/switch/Switch.svelte +13 -17
- package/dist/components/switch/Switch.svelte.d.ts +2 -2
- package/dist/components/table/Table.svelte +68 -0
- package/dist/components/table/Table.svelte.d.ts +40 -0
- package/dist/components/table/index.d.ts +1 -0
- package/dist/components/table/index.js +1 -0
- package/dist/components/tabs/Tabs.svelte.d.ts +45 -16
- package/dist/components/tabs/Tabs.svelte.js +8 -18
- package/dist/components/tabs/components/Tabs.svelte +27 -33
- package/dist/components/tabs/components/Tabs.svelte.d.ts +1 -1
- package/dist/components/tabs/components/TabsContent.svelte +13 -36
- package/dist/components/tabs/components/TabsContent.svelte.d.ts +2 -5
- package/dist/components/tabs/components/TabsItem.svelte +43 -32
- package/dist/components/tabs/components/TabsItem.svelte.d.ts +2 -5
- package/dist/components/tabs/components/TabsList.svelte +90 -58
- package/dist/components/tabs/components/TabsList.svelte.d.ts +2 -4
- package/dist/components/tera-ui-context/TeraUiContext.svelte +13 -26
- package/dist/components/text-area/TextArea.d.ts +2 -2
- package/dist/components/text-area/TextArea.js +9 -9
- package/dist/components/text-area/TextArea.svelte +41 -65
- package/dist/components/toast/ToastContainer.svelte +50 -0
- package/dist/components/toast/ToastContainer.svelte.d.ts +18 -0
- package/dist/components/toast/index.d.ts +3 -0
- package/dist/components/toast/index.js +2 -0
- package/dist/components/toast/toast.svelte.d.ts +22 -0
- package/dist/components/toast/toast.svelte.js +18 -0
- package/dist/components/tooltip/Tooltip.d.ts +23 -0
- package/dist/components/tooltip/Tooltip.js +1 -0
- package/dist/components/tooltip/Tooltip.svelte +30 -0
- package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/index.js +1 -0
- package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.svelte +48 -69
- package/dist/index.d.ts +19 -2
- package/dist/index.js +12 -0
- package/dist/llms/accordion.md +90 -0
- package/dist/llms/ai.md +110 -0
- package/dist/llms/alert.md +29 -0
- package/dist/llms/avatar.md +34 -0
- package/dist/llms/badge.md +31 -0
- package/dist/llms/brand-logo.md +30 -0
- package/dist/llms/button.md +37 -0
- package/dist/llms/card.md +32 -0
- package/dist/llms/checkbox.md +35 -0
- package/dist/llms/colors.md +161 -0
- package/dist/llms/combobox.md +40 -0
- package/dist/llms/command.md +7 -0
- package/dist/llms/date-range-picker.md +36 -0
- package/dist/llms/dialog.md +45 -0
- package/dist/llms/drawer.md +30 -0
- package/dist/llms/dropdown-menu.md +112 -0
- package/dist/llms/fonts.md +7 -0
- package/dist/llms/header.md +26 -0
- package/dist/llms/icons.md +43 -0
- package/dist/llms/index.md +65 -0
- package/dist/llms/input.md +37 -0
- package/dist/llms/label.md +30 -0
- package/dist/llms/language-picker-button.md +30 -0
- package/dist/llms/light-dark-toggle.md +26 -0
- package/dist/llms/marketing.md +95 -0
- package/dist/llms/popover-responsive.md +32 -0
- package/dist/llms/popover.md +40 -0
- package/dist/llms/select.md +44 -0
- package/dist/llms/side-navigation.md +30 -0
- package/dist/llms/skeleton.md +28 -0
- package/dist/llms/slider.md +36 -0
- package/dist/llms/spinner.md +25 -0
- package/dist/llms/star-rating.md +31 -0
- package/dist/llms/switch.md +33 -0
- package/dist/llms/table.md +30 -0
- package/dist/llms/tabs.md +92 -0
- package/dist/llms/tera-ui-context.md +30 -0
- package/dist/llms/text-area.md +39 -0
- package/dist/llms/toast.md +7 -0
- package/dist/llms/tooltip.md +32 -0
- package/dist/llms/user-avatar-with-menu.md +28 -0
- package/dist/paraglide/README.md +72 -3
- package/dist/paraglide/messages/text_account_settings.d.ts +14 -2
- package/dist/paraglide/messages/text_account_settings.js +53 -58
- package/dist/paraglide/messages/text_calces_documentation.d.ts +14 -2
- package/dist/paraglide/messages/text_calces_documentation.js +53 -58
- package/dist/paraglide/messages/text_calces_scientific_calculator.d.ts +14 -2
- package/dist/paraglide/messages/text_calces_scientific_calculator.js +53 -58
- package/dist/paraglide/messages/text_currency_converter.d.ts +14 -2
- package/dist/paraglide/messages/text_currency_converter.js +53 -58
- package/dist/paraglide/messages/text_logout.d.ts +14 -2
- package/dist/paraglide/messages/text_logout.js +53 -58
- package/dist/paraglide/messages/text_select_language.d.ts +14 -2
- package/dist/paraglide/messages/text_select_language.js +53 -58
- package/dist/paraglide/messages/text_unit_converter.d.ts +14 -2
- package/dist/paraglide/messages/text_unit_converter.js +53 -58
- package/dist/paraglide/registry.d.ts +13 -0
- package/dist/paraglide/registry.js +15 -0
- package/dist/paraglide/runtime.d.ts +243 -126
- package/dist/paraglide/runtime.js +473 -148
- package/dist/paraglide/server.d.ts +13 -20
- package/dist/paraglide/server.js +92 -40
- package/dist/stories/ComponentOverview.stories.svelte +533 -0
- package/dist/stories/ComponentOverview.stories.svelte.d.ts +6 -0
- package/dist/themes/tera-ui-base.css +242 -77
- package/dist/themes/theme-ai.css +100 -0
- package/dist/themes/theme-marketing.css +91 -0
- package/dist/themes/theme-professional.css +41 -0
- package/package.json +35 -29
- package/dist/tera-i18n/projects/tera-system-ui/project.inlang/.meta.json +0 -3
- package/dist/tera-i18n/projects/tera-system-ui/project.inlang/README.md +0 -103
- package/dist/tera-i18n/projects/tera-system-ui/project.inlang/project_id +0 -1
- package/dist/themes/tw-preset.cjs +0 -160
- package/dist/themes/tw-preset.d.cts +0 -157
|
@@ -14,64 +14,14 @@ body:has(dialog[open]) {
|
|
|
14
14
|
overflow: hidden
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
/* AntD-style Wave Animation for Buttons */
|
|
18
|
-
.btn-wave {
|
|
19
|
-
position: relative;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.btn-wave::after {
|
|
23
|
-
content: '';
|
|
24
|
-
position: absolute;
|
|
25
|
-
inset: 0;
|
|
26
|
-
border-radius: inherit;
|
|
27
|
-
opacity: 0;
|
|
28
|
-
pointer-events: none;
|
|
29
|
-
box-shadow: 0 0 0 0 var(--wave-color, var(--color-primary-600));
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.btn-wave.wave-active::after {
|
|
33
|
-
animation: ant-wave 0.4s cubic-bezier(0.08, 0.82, 0.17, 1);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/* Wave color based on button variant */
|
|
37
|
-
.btn-wave[data-variant="primary"]::after {
|
|
38
|
-
--wave-color: var(--color-primary-600);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.btn-wave[data-variant="default"]::after,
|
|
42
|
-
.btn-wave[data-variant="dashed"]::after {
|
|
43
|
-
--wave-color: var(--color-primary-600);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.btn-wave[data-variant="text"]::after,
|
|
47
|
-
.btn-wave[data-variant="link"]::after {
|
|
48
|
-
--wave-color: transparent;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/* Danger wave color */
|
|
52
|
-
.btn-wave[data-danger="true"]::after {
|
|
53
|
-
--wave-color: var(--color-error-500);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
@keyframes ant-wave {
|
|
57
|
-
0% {
|
|
58
|
-
box-shadow: 0 0 0 0 var(--wave-color);
|
|
59
|
-
opacity: 0.4;
|
|
60
|
-
}
|
|
61
|
-
100% {
|
|
62
|
-
box-shadow: 0 0 0 6px var(--wave-color);
|
|
63
|
-
opacity: 0;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
17
|
body {
|
|
68
18
|
background: var(--color-neutral-token-1);
|
|
69
19
|
color: var(--color-neutral-token-13);
|
|
70
20
|
}
|
|
71
21
|
|
|
72
22
|
:root {
|
|
73
|
-
--font-sans: "
|
|
74
|
-
--font-mono: "Roboto Mono Variable", "ui-monospace", "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New";
|
|
23
|
+
--font-sans: "Inter Variable", "ui-sans-serif", "system-ui", "sans-serif", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
24
|
+
--font-mono: "Geist Mono", "Roboto Mono Variable", "ui-monospace", "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New";
|
|
75
25
|
}
|
|
76
26
|
|
|
77
27
|
|
|
@@ -199,6 +149,7 @@ html.dark, .dark * {
|
|
|
199
149
|
--color-success-700: rgb(24, 140, 67);
|
|
200
150
|
--color-success-800: rgb(19, 108, 52);
|
|
201
151
|
--color-success-900: rgb(14, 83, 39);
|
|
152
|
+
/* primitives — do not use in components */
|
|
202
153
|
--color-neutral-1: rgb(255, 255, 255);
|
|
203
154
|
--color-neutral-2: rgb(252, 252, 252);
|
|
204
155
|
--color-neutral-3: rgb(245, 245, 245);
|
|
@@ -222,16 +173,16 @@ html.dark, .dark * {
|
|
|
222
173
|
--color-warning-700: rgb(177, 82, 16);
|
|
223
174
|
--color-warning-800: rgb(137, 63, 12);
|
|
224
175
|
--color-warning-900: rgb(105, 48, 9);
|
|
225
|
-
--color-information-50:
|
|
226
|
-
--color-information-100: rgb(
|
|
227
|
-
--color-information-200: rgb(
|
|
228
|
-
--color-information-300: rgb(
|
|
229
|
-
--color-information-400: rgb(
|
|
230
|
-
--color-information-500: rgb(
|
|
231
|
-
--color-information-600: rgb(
|
|
232
|
-
--color-information-700: rgb(
|
|
233
|
-
--color-information-800: rgb(
|
|
234
|
-
--color-information-900: rgb(
|
|
176
|
+
--color-information-50: rgb(240, 249, 255);
|
|
177
|
+
--color-information-100: rgb(186, 230, 253);
|
|
178
|
+
--color-information-200: rgb(125, 211, 252);
|
|
179
|
+
--color-information-300: rgb(56, 189, 248);
|
|
180
|
+
--color-information-400: rgb(14, 165, 233);
|
|
181
|
+
--color-information-500: rgb(2, 132, 199); /* sky — distinct from primary */
|
|
182
|
+
--color-information-600: rgb(3, 105, 161);
|
|
183
|
+
--color-information-700: rgb(7, 89, 133);
|
|
184
|
+
--color-information-800: rgb(12, 74, 110);
|
|
185
|
+
--color-information-900: rgb(8, 47, 73);
|
|
235
186
|
--color-secondary-50: rgb(253, 237, 245);
|
|
236
187
|
--color-secondary-100: rgb(249, 198, 223);
|
|
237
188
|
--color-secondary-200: rgb(246, 171, 208);
|
|
@@ -242,8 +193,8 @@ html.dark, .dark * {
|
|
|
242
193
|
--color-secondary-700: rgb(168, 51, 109);
|
|
243
194
|
--color-secondary-800: rgb(130, 40, 84);
|
|
244
195
|
--color-secondary-900: rgb(99, 30, 64);
|
|
245
|
-
--color-brand-500:
|
|
246
|
-
--color-brand-token-5:
|
|
196
|
+
--color-brand-500: var(--color-primary-500);
|
|
197
|
+
--color-brand-token-5: var(--color-primary-500);
|
|
247
198
|
--color-neutral-token-1: rgb(255, 255, 255);
|
|
248
199
|
--color-neutral-token-2: rgb(252, 252, 252);
|
|
249
200
|
--color-neutral-token-3: rgb(245, 245, 245);
|
|
@@ -273,12 +224,12 @@ html.dark, .dark * {
|
|
|
273
224
|
|
|
274
225
|
:root.dark {
|
|
275
226
|
--color-brand-token-5: rgb(0, 111, 238);
|
|
276
|
-
--color-neutral-token-1: rgb(
|
|
227
|
+
--color-neutral-token-1: rgb(9, 9, 9); /* near-black — not pure, less harsh */
|
|
277
228
|
--color-neutral-token-2: rgb(20, 20, 20);
|
|
278
|
-
--color-neutral-token-3: rgb(
|
|
279
|
-
--color-neutral-token-4: rgb(
|
|
280
|
-
--color-neutral-token-5: rgb(
|
|
281
|
-
--color-neutral-token-6: rgb(
|
|
229
|
+
--color-neutral-token-3: rgb(32, 32, 32);
|
|
230
|
+
--color-neutral-token-4: rgb(48, 48, 48); /* wider gap — clear hover state */
|
|
231
|
+
--color-neutral-token-5: rgb(70, 70, 70); /* visible border */
|
|
232
|
+
--color-neutral-token-6: rgb(95, 95, 95);
|
|
282
233
|
--color-neutral-token-7: rgb(140, 140, 140);
|
|
283
234
|
--color-neutral-token-8: rgb(191, 191, 191);
|
|
284
235
|
--color-neutral-token-9: rgb(217, 217, 217);
|
|
@@ -299,11 +250,118 @@ html.dark, .dark * {
|
|
|
299
250
|
}
|
|
300
251
|
|
|
301
252
|
/* ============================================= */
|
|
302
|
-
/* ===
|
|
253
|
+
/* === Semantic Alias Layer (additive) === */
|
|
254
|
+
/* Convention: {role}-{modifier} — role-first, modifier describes prominence or state */
|
|
255
|
+
/* Naming influenced by: Ant Design 5 (state modifiers), GitHub Primer (subtle/muted */
|
|
256
|
+
/* scale), shadcn/ui (CSS-var-as-utility, 'default' for resting state). */
|
|
257
|
+
/* Components use ONLY these tokens — primitives stay as the underlying scale. */
|
|
258
|
+
/* ============================================= */
|
|
259
|
+
:root {
|
|
260
|
+
/* ── Surfaces (backgrounds by elevation) ─────────────────── */
|
|
261
|
+
--color-surface: var(--color-neutral-token-1); /* Page / app background */
|
|
262
|
+
--color-surface-raised: var(--color-neutral-token-2); /* Cards, panels */
|
|
263
|
+
--color-surface-sunken: var(--color-neutral-token-3); /* Inputs, disabled areas */
|
|
264
|
+
--color-surface-hover: var(--color-neutral-token-4); /* Hover / pressed neutral bg */
|
|
265
|
+
--color-surface-control: var(--color-neutral-token-1); /* Interactive control bg (button, input, checkbox) */
|
|
266
|
+
|
|
267
|
+
/* ── Borders ─────────────────────────────────────────────── */
|
|
268
|
+
--color-border-default: var(--color-neutral-token-5); /* Default border */
|
|
269
|
+
--color-border-strong: var(--color-neutral-token-6); /* Focus ring, separator */
|
|
270
|
+
|
|
271
|
+
/* ── Text (prominence scale) ─────────────────────────────── */
|
|
272
|
+
--color-text-primary: var(--color-neutral-token-13); /* Body text, headings */
|
|
273
|
+
--color-text-secondary: var(--color-neutral-token-8); /* Supporting / label text */
|
|
274
|
+
--color-text-tertiary: var(--color-neutral-token-7); /* Placeholder, hints */
|
|
275
|
+
--color-text-disabled: var(--color-neutral-token-6); /* Disabled labels */
|
|
276
|
+
|
|
277
|
+
/* ── Interactive (primary action — hover darkens, active darkest) ── */
|
|
278
|
+
--color-interactive: var(--color-primary-500); /* Base link / CTA color */
|
|
279
|
+
--color-interactive-hover: var(--color-primary-600); /* Hover: darker */
|
|
280
|
+
--color-interactive-active: var(--color-primary-700); /* Pressed: darkest */
|
|
281
|
+
--color-interactive-subtle: var(--color-primary-50); /* Ghost bg, tinted area */
|
|
282
|
+
--color-interactive-border: var(--color-primary-200); /* Subtle border on tinted bg */
|
|
283
|
+
--color-interactive-text: var(--color-primary-700); /* Readable text on tinted bg */
|
|
284
|
+
--color-interactive-on: #ffffff; /* Text/icon ON filled interactive bg */
|
|
285
|
+
--color-overlay: rgb(0 0 0 / 0.45); /* Modal / drawer backdrop scrim */
|
|
286
|
+
|
|
287
|
+
/* ── Status: Error ── subtle/muted/border/text adapt in dark mode ── */
|
|
288
|
+
--color-error-subtle: var(--color-error-50); /* Light tint bg */
|
|
289
|
+
--color-error-muted: var(--color-error-100); /* Medium tint / pressed bg */
|
|
290
|
+
--color-error-border: var(--color-error-200); /* Subtle border stroke */
|
|
291
|
+
--color-error-hover: var(--color-error-400); /* Lighter hover (softens) */
|
|
292
|
+
--color-error-default: var(--color-error-500); /* Main error color */
|
|
293
|
+
--color-error-active: var(--color-error-600); /* Pressed / active (stronger) */
|
|
294
|
+
--color-error-text: var(--color-error-700); /* Readable text on light bg */
|
|
295
|
+
|
|
296
|
+
/* ── Status: Warning ──────────────────────────────────────── */
|
|
297
|
+
--color-warning-subtle: var(--color-warning-50);
|
|
298
|
+
--color-warning-muted: var(--color-warning-100);
|
|
299
|
+
--color-warning-border: var(--color-warning-200);
|
|
300
|
+
--color-warning-hover: var(--color-warning-400);
|
|
301
|
+
--color-warning-default: var(--color-warning-500);
|
|
302
|
+
--color-warning-active: var(--color-warning-600);
|
|
303
|
+
--color-warning-text: var(--color-warning-700);
|
|
304
|
+
|
|
305
|
+
/* ── Status: Success ──────────────────────────────────────── */
|
|
306
|
+
--color-success-subtle: var(--color-success-50);
|
|
307
|
+
--color-success-muted: var(--color-success-100);
|
|
308
|
+
--color-success-border: var(--color-success-200);
|
|
309
|
+
--color-success-hover: var(--color-success-400);
|
|
310
|
+
--color-success-default: var(--color-success-500);
|
|
311
|
+
--color-success-active: var(--color-success-600);
|
|
312
|
+
--color-success-text: var(--color-success-700);
|
|
313
|
+
|
|
314
|
+
/* ── Status: Information ──────────────────────────────────── */
|
|
315
|
+
--color-information-subtle: var(--color-information-50);
|
|
316
|
+
--color-information-muted: var(--color-information-100);
|
|
317
|
+
--color-information-border: var(--color-information-200);
|
|
318
|
+
--color-information-hover: var(--color-information-400);
|
|
319
|
+
--color-information-default: var(--color-information-500);
|
|
320
|
+
--color-information-active: var(--color-information-600);
|
|
321
|
+
--color-information-text: var(--color-information-700);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/* Dark mode overrides — only tokens that change value in dark mode */
|
|
325
|
+
/* Scale tops at 900 (no 950 primitives defined) */
|
|
326
|
+
:root.dark {
|
|
327
|
+
--color-error-subtle: var(--color-error-900); /* darkest tint bg */
|
|
328
|
+
--color-error-muted: var(--color-error-800); /* medium tint bg */
|
|
329
|
+
--color-error-border: var(--color-error-700); /* subtle border */
|
|
330
|
+
--color-error-text: var(--color-error-400); /* lighter text for dark bg */
|
|
331
|
+
|
|
332
|
+
--color-warning-subtle: var(--color-warning-900);
|
|
333
|
+
--color-warning-muted: var(--color-warning-800);
|
|
334
|
+
--color-warning-border: var(--color-warning-700);
|
|
335
|
+
--color-warning-text: var(--color-warning-400);
|
|
336
|
+
|
|
337
|
+
--color-success-subtle: var(--color-success-900);
|
|
338
|
+
--color-success-muted: var(--color-success-800);
|
|
339
|
+
--color-success-border: var(--color-success-700);
|
|
340
|
+
--color-success-text: var(--color-success-400);
|
|
341
|
+
|
|
342
|
+
--color-information-subtle: var(--color-information-900);
|
|
343
|
+
--color-information-muted: var(--color-information-800);
|
|
344
|
+
--color-information-border: var(--color-information-700);
|
|
345
|
+
--color-information-text: var(--color-information-400);
|
|
346
|
+
|
|
347
|
+
--color-interactive-subtle: var(--color-primary-900); /* Dark tint bg */
|
|
348
|
+
--color-interactive-border: var(--color-primary-700); /* Subtle border on dark tinted bg */
|
|
349
|
+
--color-interactive-text: var(--color-primary-300); /* Readable text on dark tinted bg */
|
|
350
|
+
--color-overlay: rgb(255 255 255 / 0.12); /* Darker scrim for dark mode */
|
|
351
|
+
--color-surface-control: var(--color-neutral-token-3); /* Controls elevated above surfaces in dark mode */
|
|
352
|
+
|
|
353
|
+
/* Elevation shadows — use white glow instead of black drop shadows on dark bg */
|
|
354
|
+
--shadow-sm: 0 1px 3px rgba(0,0,0,0.4), 0 0 0 1px rgba(255,255,255,0.04);
|
|
355
|
+
--shadow-md: 0 4px 12px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.06);
|
|
356
|
+
--shadow-lg: 0 12px 32px rgba(0,0,0,0.6), 0 4px 8px rgba(0,0,0,0.4), 0 0 0 1px rgba(255,255,255,0.06);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/* ============================================= */
|
|
360
|
+
/* === TeraUI Design System === */
|
|
303
361
|
/* ============================================= */
|
|
304
362
|
/* Consistent design tokens for all components */
|
|
305
363
|
:root {
|
|
306
|
-
/* TeraUI Border Radius -
|
|
364
|
+
/* TeraUI Border Radius - uses 6px as base */
|
|
307
365
|
--tera-radius-sm: 2px;
|
|
308
366
|
--tera-radius-base: 6px;
|
|
309
367
|
--tera-radius-lg: 8px;
|
|
@@ -314,20 +372,45 @@ html.dark, .dark * {
|
|
|
314
372
|
--tera-control-height-base: 32px;
|
|
315
373
|
--tera-control-height-lg: 40px;
|
|
316
374
|
|
|
317
|
-
/* TeraUI Transitions -
|
|
375
|
+
/* TeraUI Transitions - easing */
|
|
318
376
|
--tera-transition-fast: 0.1s cubic-bezier(0.645, 0.045, 0.355, 1);
|
|
319
377
|
--tera-transition-base: 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
|
|
320
378
|
--tera-transition-slow: 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
|
321
379
|
|
|
322
|
-
/*
|
|
323
|
-
--
|
|
324
|
-
--
|
|
325
|
-
--
|
|
326
|
-
--
|
|
380
|
+
/* Focus Shadows */
|
|
381
|
+
--shadow-focus: 0 0 0 3px color-mix(in srgb, var(--color-primary-500) 20%, transparent);
|
|
382
|
+
--shadow-focus-error: 0 0 0 3px color-mix(in srgb, var(--color-error-500) 20%, transparent);
|
|
383
|
+
--shadow-focus-warning: 0 0 0 3px color-mix(in srgb, var(--color-warning-500) 20%, transparent);
|
|
384
|
+
--shadow-focus-success: 0 0 0 3px color-mix(in srgb, var(--color-success-500) 20%, transparent);
|
|
385
|
+
|
|
386
|
+
/* Elevation system */
|
|
387
|
+
--shadow-none: none;
|
|
388
|
+
--shadow-sm: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
|
|
389
|
+
--shadow-md: 0 4px 12px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.06);
|
|
390
|
+
--shadow-lg: 0 12px 32px rgba(0,0,0,0.12), 0 4px 8px rgba(0,0,0,0.06);
|
|
391
|
+
--shadow-glow: 0 0 0 1px var(--color-primary-200),
|
|
392
|
+
0 4px 16px color-mix(in srgb, var(--color-primary-500) 20%, transparent);
|
|
393
|
+
|
|
394
|
+
/* Easing functions */
|
|
395
|
+
--ease-ui: cubic-bezier(0.16, 1, 0.3, 1);
|
|
396
|
+
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
397
|
+
--ease-out: cubic-bezier(0.0, 0.0, 0.2, 1.0);
|
|
398
|
+
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
|
399
|
+
|
|
400
|
+
/* Extended radius */
|
|
401
|
+
--tera-radius-xl: 20px;
|
|
327
402
|
}
|
|
328
403
|
|
|
329
404
|
|
|
330
405
|
|
|
406
|
+
/* Reduced-motion guard */
|
|
407
|
+
@media (prefers-reduced-motion: reduce) {
|
|
408
|
+
*, ::before, ::after {
|
|
409
|
+
transition-duration: 1ms !important;
|
|
410
|
+
animation-duration: 1ms !important;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
331
414
|
/* Base responsive variable */
|
|
332
415
|
:root {
|
|
333
416
|
--header-height: 3rem;
|
|
@@ -467,4 +550,86 @@ html.dark, .dark * {
|
|
|
467
550
|
--color-information: var(--color-information-500);
|
|
468
551
|
--color-secondary: var(--color-secondary-500);
|
|
469
552
|
--color-brand: var(--color-brand-500);
|
|
553
|
+
|
|
554
|
+
/* ── Semantic surface & text tokens ─────────────────────── */
|
|
555
|
+
--color-surface: var(--color-surface);
|
|
556
|
+
--color-surface-raised: var(--color-surface-raised);
|
|
557
|
+
--color-surface-sunken: var(--color-surface-sunken);
|
|
558
|
+
--color-surface-hover: var(--color-surface-hover);
|
|
559
|
+
--color-surface-control: var(--color-surface-control);
|
|
560
|
+
--color-border-default: var(--color-border-default);
|
|
561
|
+
--color-border-strong: var(--color-border-strong);
|
|
562
|
+
--color-text-primary: var(--color-text-primary);
|
|
563
|
+
--color-text-secondary: var(--color-text-secondary);
|
|
564
|
+
--color-text-tertiary: var(--color-text-tertiary);
|
|
565
|
+
--color-text-disabled: var(--color-text-disabled);
|
|
566
|
+
--color-interactive: var(--color-interactive);
|
|
567
|
+
--color-interactive-hover: var(--color-interactive-hover);
|
|
568
|
+
--color-interactive-active: var(--color-interactive-active);
|
|
569
|
+
--color-interactive-subtle: var(--color-interactive-subtle);
|
|
570
|
+
--color-interactive-border: var(--color-interactive-border);
|
|
571
|
+
--color-interactive-text: var(--color-interactive-text);
|
|
572
|
+
--color-interactive-on: var(--color-interactive-on);
|
|
573
|
+
--color-overlay: var(--color-overlay);
|
|
574
|
+
|
|
575
|
+
/* ── Semantic status tokens ──────────────────────────────── */
|
|
576
|
+
--color-error-subtle: var(--color-error-subtle);
|
|
577
|
+
--color-error-muted: var(--color-error-muted);
|
|
578
|
+
--color-error-border: var(--color-error-border);
|
|
579
|
+
--color-error-hover: var(--color-error-hover);
|
|
580
|
+
--color-error-default: var(--color-error-default);
|
|
581
|
+
--color-error-active: var(--color-error-active);
|
|
582
|
+
--color-error-text: var(--color-error-text);
|
|
583
|
+
|
|
584
|
+
--color-warning-subtle: var(--color-warning-subtle);
|
|
585
|
+
--color-warning-muted: var(--color-warning-muted);
|
|
586
|
+
--color-warning-border: var(--color-warning-border);
|
|
587
|
+
--color-warning-hover: var(--color-warning-hover);
|
|
588
|
+
--color-warning-default: var(--color-warning-default);
|
|
589
|
+
--color-warning-active: var(--color-warning-active);
|
|
590
|
+
--color-warning-text: var(--color-warning-text);
|
|
591
|
+
|
|
592
|
+
--color-success-subtle: var(--color-success-subtle);
|
|
593
|
+
--color-success-muted: var(--color-success-muted);
|
|
594
|
+
--color-success-border: var(--color-success-border);
|
|
595
|
+
--color-success-hover: var(--color-success-hover);
|
|
596
|
+
--color-success-default: var(--color-success-default);
|
|
597
|
+
--color-success-active: var(--color-success-active);
|
|
598
|
+
--color-success-text: var(--color-success-text);
|
|
599
|
+
|
|
600
|
+
--color-information-subtle: var(--color-information-subtle);
|
|
601
|
+
--color-information-muted: var(--color-information-muted);
|
|
602
|
+
--color-information-border: var(--color-information-border);
|
|
603
|
+
--color-information-hover: var(--color-information-hover);
|
|
604
|
+
--color-information-default: var(--color-information-default);
|
|
605
|
+
--color-information-active: var(--color-information-active);
|
|
606
|
+
--color-information-text: var(--color-information-text);
|
|
607
|
+
|
|
608
|
+
/* Elevation shadows */
|
|
609
|
+
--shadow-sm: var(--shadow-sm);
|
|
610
|
+
--shadow-md: var(--shadow-md);
|
|
611
|
+
--shadow-lg: var(--shadow-lg);
|
|
612
|
+
--shadow-glow: var(--shadow-glow);
|
|
613
|
+
--shadow-focus: var(--shadow-focus);
|
|
614
|
+
--shadow-focus-error: var(--shadow-focus-error);
|
|
615
|
+
--shadow-focus-warning: var(--shadow-focus-warning);
|
|
616
|
+
--shadow-focus-success: var(--shadow-focus-success);
|
|
617
|
+
|
|
618
|
+
/* Easing functions */
|
|
619
|
+
--ease-ui: var(--ease-ui);
|
|
620
|
+
--ease-spring: var(--ease-spring);
|
|
621
|
+
|
|
622
|
+
/* Accordion animations */
|
|
623
|
+
--animate-accordion-down: accordion-down 0.2s ease-out;
|
|
624
|
+
--animate-accordion-up: accordion-up 0.2s ease-out;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
@keyframes accordion-down {
|
|
628
|
+
from { height: 0; }
|
|
629
|
+
to { height: var(--bits-accordion-content-height); }
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
@keyframes accordion-up {
|
|
633
|
+
from { height: var(--bits-accordion-content-height); }
|
|
634
|
+
to { height: 0; }
|
|
470
635
|
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/* ============================================= */
|
|
2
|
+
/* === TeraUI — AI / Innovation Theme === */
|
|
3
|
+
/* Target: AI tools, chat interfaces, interactive labs */
|
|
4
|
+
/* Dark mode is the primary experience */
|
|
5
|
+
/* Load after tera-ui-base.css */
|
|
6
|
+
/* Gradient rule: allowed ONLY on primary button bg, hero headline accent, AI card border */
|
|
7
|
+
/* ============================================= */
|
|
8
|
+
|
|
9
|
+
[data-theme='ai'] {
|
|
10
|
+
/* Primary: violet-700 */
|
|
11
|
+
--color-primary-500: rgb(124, 58, 237); /* #7C3AED */
|
|
12
|
+
--color-primary-600: rgb(109, 40, 217); /* #6D28D9 */
|
|
13
|
+
--color-primary-700: rgb(91, 33, 182);
|
|
14
|
+
--color-primary-400: rgb(167, 139, 250);
|
|
15
|
+
--color-primary-300: rgb(196, 181, 253);
|
|
16
|
+
--color-primary-200: rgb(221, 214, 254);
|
|
17
|
+
--color-primary-50: rgb(245, 243, 255);
|
|
18
|
+
|
|
19
|
+
/* Secondary: cyan — authentic AI aesthetic, pairs with violet */
|
|
20
|
+
--color-secondary-500: rgb(6, 182, 212);
|
|
21
|
+
--color-secondary-400: rgb(34, 211, 238);
|
|
22
|
+
--color-secondary-300: rgb(103, 232, 249);
|
|
23
|
+
--color-secondary-200: rgb(165, 243, 252);
|
|
24
|
+
--color-secondary-50: rgb(236, 254, 255);
|
|
25
|
+
|
|
26
|
+
/* Light mode: barely perceptible violet surface tint */
|
|
27
|
+
--color-surface: rgb(254, 252, 255);
|
|
28
|
+
--color-surface-raised: rgb(250, 247, 255);
|
|
29
|
+
|
|
30
|
+
/* Border radius — rounder = friendlier, more approachable */
|
|
31
|
+
--border-radius-base: 0.75rem; /* 12px */
|
|
32
|
+
--border-radius-container: 1rem; /* 16px — pillowy cards */
|
|
33
|
+
|
|
34
|
+
/* Motion: springier = energetic */
|
|
35
|
+
--tera-theme-duration: 250ms;
|
|
36
|
+
--tera-theme-easing: var(--ease-spring);
|
|
37
|
+
--tera-transition-base: var(--tera-theme-duration) var(--tera-theme-easing);
|
|
38
|
+
|
|
39
|
+
/* Card style: glassmorphism */
|
|
40
|
+
--tera-card-shadow: var(--shadow-glow);
|
|
41
|
+
--tera-card-radius: var(--border-radius-container);
|
|
42
|
+
--tera-card-backdrop: blur(8px);
|
|
43
|
+
|
|
44
|
+
/* Gradient: violet → cyan (more dimensional than violet → blue) */
|
|
45
|
+
--tera-gradient-primary: linear-gradient(135deg, rgb(124, 58, 237) 0%, rgb(6, 182, 212) 100%);
|
|
46
|
+
|
|
47
|
+
/* Glow shadow: violet-tinted (not plain black-opacity) */
|
|
48
|
+
--shadow-glow: 0 0 0 1px rgba(124, 58, 237, 0.25),
|
|
49
|
+
0 4px 24px rgba(124, 58, 237, 0.18),
|
|
50
|
+
0 1px 4px rgba(124, 58, 237, 0.12);
|
|
51
|
+
|
|
52
|
+
/* Focus glow: violet */
|
|
53
|
+
--shadow-focus: 0 0 0 3px rgba(124, 58, 237, 0.28);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* AI dark mode: zinc-950 with violet temperature + atmospheric shadows */
|
|
57
|
+
[data-theme='ai'].dark,
|
|
58
|
+
[data-theme='ai'] .dark {
|
|
59
|
+
/* Elevation steps — slight purple temperature throughout */
|
|
60
|
+
--color-neutral-token-1: rgb(7, 7, 11); /* near-black with violet hint */
|
|
61
|
+
--color-neutral-token-2: rgb(16, 16, 24); /* zinc-900 + violet */
|
|
62
|
+
--color-neutral-token-3: rgb(28, 28, 40); /* clear jump */
|
|
63
|
+
--color-neutral-token-4: rgb(45, 45, 62); /* obvious hover state */
|
|
64
|
+
--color-neutral-token-5: rgb(72, 72, 95); /* visible border */
|
|
65
|
+
--color-neutral-token-13: rgb(250, 250, 252);
|
|
66
|
+
|
|
67
|
+
/* Violet-tinted atmospheric shadows */
|
|
68
|
+
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(124, 58, 237, 0.08);
|
|
69
|
+
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(124, 58, 237, 0.12);
|
|
70
|
+
--shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.7), 0 4px 8px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(124, 58, 237, 0.14);
|
|
71
|
+
--shadow-glow: 0 0 0 1px rgba(124, 58, 237, 0.35),
|
|
72
|
+
0 4px 24px rgba(124, 58, 237, 0.25),
|
|
73
|
+
0 0 48px rgba(124, 58, 237, 0.12);
|
|
74
|
+
|
|
75
|
+
/* Interactive: brighter violet — better contrast on dark bg */
|
|
76
|
+
--color-interactive: rgb(167, 139, 250); /* violet-400 */
|
|
77
|
+
--color-interactive-hover: rgb(196, 181, 253); /* violet-300 */
|
|
78
|
+
--color-interactive-active: rgb(124, 58, 237); /* violet-600 */
|
|
79
|
+
--color-interactive-subtle: rgba(124, 58, 237, 0.12);
|
|
80
|
+
--color-interactive-border: rgba(124, 58, 237, 0.30);
|
|
81
|
+
--color-interactive-text: rgb(167, 139, 250);
|
|
82
|
+
|
|
83
|
+
/* Focus shadow — softer for dark bg */
|
|
84
|
+
--shadow-focus: 0 0 0 3px rgba(167, 139, 250, 0.35);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* AI primary button: gradient fill */
|
|
88
|
+
[data-theme='ai'] .btn-primary,
|
|
89
|
+
[data-theme='ai'] [data-variant='primary'] {
|
|
90
|
+
background: var(--tera-gradient-primary);
|
|
91
|
+
border-color: transparent;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* AI card glassmorphism */
|
|
95
|
+
[data-theme='ai'] .card-glass {
|
|
96
|
+
background: rgba(255, 255, 255, 0.05);
|
|
97
|
+
backdrop-filter: var(--tera-card-backdrop);
|
|
98
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
99
|
+
box-shadow: var(--shadow-glow);
|
|
100
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/* ============================================= */
|
|
2
|
+
/* === TeraUI — Marketing / Editorial Theme === */
|
|
3
|
+
/* Target: Landing pages, product marketing, blog posts */
|
|
4
|
+
/* Load after tera-ui-base.css */
|
|
5
|
+
/* ============================================= */
|
|
6
|
+
|
|
7
|
+
[data-theme='marketing'] {
|
|
8
|
+
/* Primary: brand blue — connects to brand identity */
|
|
9
|
+
--color-primary-500: rgb(0, 111, 238); /* #006FEE */
|
|
10
|
+
--color-primary-600: rgb(0, 87, 200);
|
|
11
|
+
--color-primary-700: rgb(0, 68, 160);
|
|
12
|
+
--color-primary-400: rgb(51, 147, 255);
|
|
13
|
+
--color-primary-300: rgb(100, 175, 255);
|
|
14
|
+
--color-primary-200: rgb(153, 208, 255);
|
|
15
|
+
--color-primary-50: rgb(230, 244, 255);
|
|
16
|
+
|
|
17
|
+
/* Secondary: rose/coral — editorial pop, distinct from brand blue */
|
|
18
|
+
--color-secondary-500: rgb(244, 63, 94);
|
|
19
|
+
--color-secondary-400: rgb(251, 113, 133);
|
|
20
|
+
--color-secondary-300: rgb(253, 164, 175);
|
|
21
|
+
--color-secondary-200: rgb(254, 205, 211);
|
|
22
|
+
--color-secondary-50: rgb(255, 241, 242);
|
|
23
|
+
|
|
24
|
+
/* Border radius — balanced, friendly but not casual */
|
|
25
|
+
--border-radius-base: 0.625rem; /* 10px */
|
|
26
|
+
--border-radius-container: 1rem; /* 16px — modern editorial card feel */
|
|
27
|
+
|
|
28
|
+
/* Font: display font for large headlines */
|
|
29
|
+
--font-display: 'Cal Sans', 'Syne', 'Instrument Serif', 'Georgia', serif;
|
|
30
|
+
|
|
31
|
+
/* Motion: cinematic — suits scroll reveals */
|
|
32
|
+
--tera-theme-duration: 300ms;
|
|
33
|
+
--tera-theme-easing: var(--ease-in-out);
|
|
34
|
+
--tera-transition-base: var(--tera-theme-duration) var(--tera-theme-easing);
|
|
35
|
+
|
|
36
|
+
/* CTA button: taller for conversion */
|
|
37
|
+
--tera-control-height-lg: 52px;
|
|
38
|
+
|
|
39
|
+
/* Card style */
|
|
40
|
+
--tera-card-shadow: var(--shadow-sm);
|
|
41
|
+
--tera-card-radius: var(--border-radius-container);
|
|
42
|
+
|
|
43
|
+
/* No AI gradient — marketing uses flat brand color */
|
|
44
|
+
--tera-gradient-primary: none;
|
|
45
|
+
|
|
46
|
+
/* Section spacing: py-24 minimum */
|
|
47
|
+
--marketing-section-py: 6rem;
|
|
48
|
+
|
|
49
|
+
/* Stronger glow for CTAs — brand blue hue */
|
|
50
|
+
--shadow-glow: 0 0 0 1px rgba(0, 111, 238, 0.20),
|
|
51
|
+
0 8px 32px rgba(0, 111, 238, 0.15);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Marketing dark: deep navy-black — editorial premium, not generic gray */
|
|
55
|
+
[data-theme='marketing'].dark,
|
|
56
|
+
[data-theme='marketing'] .dark {
|
|
57
|
+
/* Elevation steps — navy-blue temperature throughout */
|
|
58
|
+
--color-neutral-token-1: rgb(8, 10, 18); /* very deep navy-black */
|
|
59
|
+
--color-neutral-token-2: rgb(14, 18, 32); /* visible step */
|
|
60
|
+
--color-neutral-token-3: rgb(22, 27, 48); /* mid dark */
|
|
61
|
+
--color-neutral-token-4: rgb(33, 42, 70); /* clear hover state */
|
|
62
|
+
--color-neutral-token-5: rgb(50, 62, 100); /* blue-tinted border */
|
|
63
|
+
--color-neutral-token-6: rgb(72, 88, 135); /* strong border */
|
|
64
|
+
|
|
65
|
+
/* Blue-tinted atmospheric shadows */
|
|
66
|
+
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(0, 111, 238, 0.06);
|
|
67
|
+
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(0, 111, 238, 0.08);
|
|
68
|
+
--shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.7), 0 4px 8px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(0, 111, 238, 0.10);
|
|
69
|
+
--shadow-glow: 0 0 0 1px rgba(0, 111, 238, 0.30),
|
|
70
|
+
0 4px 24px rgba(0, 111, 238, 0.20),
|
|
71
|
+
0 0 48px rgba(0, 111, 238, 0.10);
|
|
72
|
+
|
|
73
|
+
/* Interactive: brighter brand blue — better contrast on dark bg */
|
|
74
|
+
--color-interactive: rgb(51, 147, 255); /* primary-400 */
|
|
75
|
+
--color-interactive-hover: rgb(100, 175, 255); /* primary-300 */
|
|
76
|
+
--color-interactive-active: rgb(0, 111, 238); /* primary-500 */
|
|
77
|
+
--color-interactive-subtle: rgba(0, 111, 238, 0.12);
|
|
78
|
+
--color-interactive-border: rgba(0, 111, 238, 0.30);
|
|
79
|
+
--color-interactive-text: rgb(100, 175, 255);
|
|
80
|
+
|
|
81
|
+
/* Focus shadow — blue-tinted */
|
|
82
|
+
--shadow-focus: 0 0 0 3px rgba(51, 147, 255, 0.35);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Marketing CTA button: full-sized */
|
|
86
|
+
[data-theme='marketing'] [data-variant='primary'] {
|
|
87
|
+
height: var(--tera-control-height-lg);
|
|
88
|
+
padding-left: 2rem;
|
|
89
|
+
padding-right: 2rem;
|
|
90
|
+
font-weight: 600;
|
|
91
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/* ============================================= */
|
|
2
|
+
/* === TeraUI — Professional Theme === */
|
|
3
|
+
/* Target: SaaS dashboards, calculators, CV builders, education tools */
|
|
4
|
+
/* Load after tera-ui-base.css */
|
|
5
|
+
/* ============================================= */
|
|
6
|
+
|
|
7
|
+
[data-theme='professional'],
|
|
8
|
+
:root {
|
|
9
|
+
/* Primary: Tailwind blue-600 — more saturated than blue-500 */
|
|
10
|
+
--color-primary-500: rgb(37, 99, 235); /* #2563EB */
|
|
11
|
+
--color-primary-600: rgb(29, 78, 216); /* #1D4ED8 */
|
|
12
|
+
--color-primary-400: rgb(96, 165, 250);
|
|
13
|
+
--color-primary-200: rgb(191, 219, 254);
|
|
14
|
+
--color-primary-50: rgb(239, 246, 255);
|
|
15
|
+
|
|
16
|
+
/* Border radius — 2px more modern than AntDesign */
|
|
17
|
+
--border-radius-base: 0.5rem; /* 8px */
|
|
18
|
+
--border-radius-container: 0.625rem; /* 10px — cards, dialogs */
|
|
19
|
+
|
|
20
|
+
/* Page background: cool off-white, softer than pure white */
|
|
21
|
+
--color-neutral-token-1: rgb(248, 250, 252); /* #F8FAFC */
|
|
22
|
+
|
|
23
|
+
/* Motion: fast, responsive */
|
|
24
|
+
--tera-theme-duration: 150ms;
|
|
25
|
+
--tera-theme-easing: var(--ease-ui);
|
|
26
|
+
--tera-transition-base: var(--tera-theme-duration) var(--tera-theme-easing);
|
|
27
|
+
|
|
28
|
+
/* Card style: subtle shadow */
|
|
29
|
+
--tera-card-shadow: var(--shadow-sm);
|
|
30
|
+
--tera-card-radius: var(--border-radius-container);
|
|
31
|
+
|
|
32
|
+
/* No gradients in Professional */
|
|
33
|
+
--tera-gradient-primary: none;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
[data-theme='professional'].dark,
|
|
37
|
+
[data-theme='professional'] .dark {
|
|
38
|
+
--color-neutral-token-1: rgb(15, 23, 42); /* slate-900 */
|
|
39
|
+
--color-neutral-token-2: rgb(30, 41, 59); /* slate-800 */
|
|
40
|
+
--color-neutral-token-3: rgb(51, 65, 85); /* slate-700 */
|
|
41
|
+
}
|