@proyecto-viviana/silapse 0.4.0
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 +21 -0
- package/README.md +192 -0
- package/dist/accordion/index.d.ts +6 -0
- package/dist/accordion/index.d.ts.map +1 -0
- package/dist/actionbar/index.d.ts +34 -0
- package/dist/actionbar/index.d.ts.map +1 -0
- package/dist/actiongroup/index.d.ts +42 -0
- package/dist/actiongroup/index.d.ts.map +1 -0
- package/dist/alert/index.d.ts +13 -0
- package/dist/alert/index.d.ts.map +1 -0
- package/dist/autocomplete/index.d.ts +51 -0
- package/dist/autocomplete/index.d.ts.map +1 -0
- package/dist/avatar/index.d.ts +18 -0
- package/dist/avatar/index.d.ts.map +1 -0
- package/dist/badge/index.d.ts +12 -0
- package/dist/badge/index.d.ts.map +1 -0
- package/dist/breadcrumbs/index.d.ts +38 -0
- package/dist/breadcrumbs/index.d.ts.map +1 -0
- package/dist/button/ActionButton.d.ts +21 -0
- package/dist/button/ActionButton.d.ts.map +1 -0
- package/dist/button/Button.d.ts +19 -0
- package/dist/button/Button.d.ts.map +1 -0
- package/dist/button/ClearButton.d.ts +19 -0
- package/dist/button/ClearButton.d.ts.map +1 -0
- package/dist/button/FieldButton.d.ts +16 -0
- package/dist/button/FieldButton.d.ts.map +1 -0
- package/dist/button/LogicButton.d.ts +16 -0
- package/dist/button/LogicButton.d.ts.map +1 -0
- package/dist/button/ToggleButton.d.ts +19 -0
- package/dist/button/ToggleButton.d.ts.map +1 -0
- package/dist/button/index.d.ts +13 -0
- package/dist/button/index.d.ts.map +1 -0
- package/dist/button/types.d.ts +23 -0
- package/dist/button/types.d.ts.map +1 -0
- package/dist/buttongroup/index.d.ts +11 -0
- package/dist/buttongroup/index.d.ts.map +1 -0
- package/dist/calendar/DateField.d.ts +47 -0
- package/dist/calendar/DateField.d.ts.map +1 -0
- package/dist/calendar/DatePicker.d.ts +28 -0
- package/dist/calendar/DatePicker.d.ts.map +1 -0
- package/dist/calendar/DateRangePicker.d.ts +26 -0
- package/dist/calendar/DateRangePicker.d.ts.map +1 -0
- package/dist/calendar/RangeCalendar.d.ts +42 -0
- package/dist/calendar/RangeCalendar.d.ts.map +1 -0
- package/dist/calendar/TimeField.d.ts +44 -0
- package/dist/calendar/TimeField.d.ts.map +1 -0
- package/dist/calendar/index.d.ts +50 -0
- package/dist/calendar/index.d.ts.map +1 -0
- package/dist/card/index.d.ts +11 -0
- package/dist/card/index.d.ts.map +1 -0
- package/dist/checkbox/index.d.ts +43 -0
- package/dist/checkbox/index.d.ts.map +1 -0
- package/dist/color/ColorEditor.d.ts +17 -0
- package/dist/color/ColorEditor.d.ts.map +1 -0
- package/dist/color/ColorSwatchPicker.d.ts +36 -0
- package/dist/color/ColorSwatchPicker.d.ts.map +1 -0
- package/dist/color/index.d.ts +233 -0
- package/dist/color/index.d.ts.map +1 -0
- package/dist/combobox/index.d.ts +81 -0
- package/dist/combobox/index.d.ts.map +1 -0
- package/dist/components.css +1152 -0
- package/dist/contextualhelp/index.d.ts +18 -0
- package/dist/contextualhelp/index.d.ts.map +1 -0
- package/dist/custom/calendar-card/index.d.ts +12 -0
- package/dist/custom/calendar-card/index.d.ts.map +1 -0
- package/dist/custom/chip/index.d.ts +16 -0
- package/dist/custom/chip/index.d.ts.map +1 -0
- package/dist/custom/conversation/index.d.ts +32 -0
- package/dist/custom/conversation/index.d.ts.map +1 -0
- package/dist/custom/event-card/index.d.ts +30 -0
- package/dist/custom/event-card/index.d.ts.map +1 -0
- package/dist/custom/header/index.d.ts +16 -0
- package/dist/custom/header/index.d.ts.map +1 -0
- package/dist/custom/lateral-nav/index.d.ts +32 -0
- package/dist/custom/lateral-nav/index.d.ts.map +1 -0
- package/dist/custom/logo/index.d.ts +28 -0
- package/dist/custom/logo/index.d.ts.map +1 -0
- package/dist/custom/nav-header/index.d.ts +13 -0
- package/dist/custom/nav-header/index.d.ts.map +1 -0
- package/dist/custom/page-layout/index.d.ts +13 -0
- package/dist/custom/page-layout/index.d.ts.map +1 -0
- package/dist/custom/profile-card/index.d.ts +16 -0
- package/dist/custom/profile-card/index.d.ts.map +1 -0
- package/dist/custom/project-card/index.d.ts +24 -0
- package/dist/custom/project-card/index.d.ts.map +1 -0
- package/dist/custom/timeline-item/index.d.ts +28 -0
- package/dist/custom/timeline-item/index.d.ts.map +1 -0
- package/dist/datepicker/index.d.ts +10 -0
- package/dist/datepicker/index.d.ts.map +1 -0
- package/dist/dialog/AlertDialog.d.ts +41 -0
- package/dist/dialog/AlertDialog.d.ts.map +1 -0
- package/dist/dialog/Dialog.d.ts +62 -0
- package/dist/dialog/Dialog.d.ts.map +1 -0
- package/dist/dialog/index.d.ts +5 -0
- package/dist/dialog/index.d.ts.map +1 -0
- package/dist/disclosure/index.d.ts +84 -0
- package/dist/disclosure/index.d.ts.map +1 -0
- package/dist/divider/index.d.ts +6 -0
- package/dist/divider/index.d.ts.map +1 -0
- package/dist/dnd/index.d.ts +7 -0
- package/dist/dnd/index.d.ts.map +1 -0
- package/dist/dropzone/index.d.ts +13 -0
- package/dist/dropzone/index.d.ts.map +1 -0
- package/dist/filetrigger/index.d.ts +13 -0
- package/dist/filetrigger/index.d.ts.map +1 -0
- package/dist/form/Field.d.ts +35 -0
- package/dist/form/Field.d.ts.map +1 -0
- package/dist/form/HelpText.d.ts +23 -0
- package/dist/form/HelpText.d.ts.map +1 -0
- package/dist/form/index.d.ts +20 -0
- package/dist/form/index.d.ts.map +1 -0
- package/dist/gridlist/index.d.ts +92 -0
- package/dist/gridlist/index.d.ts.map +1 -0
- package/dist/icon/Illustration.d.ts +22 -0
- package/dist/icon/Illustration.d.ts.map +1 -0
- package/dist/icon/UIIcon.d.ts +24 -0
- package/dist/icon/UIIcon.d.ts.map +1 -0
- package/dist/icon/icons/GitHubIcon.d.ts +8 -0
- package/dist/icon/icons/GitHubIcon.d.ts.map +1 -0
- package/dist/icon/index.d.ts +40 -0
- package/dist/icon/index.d.ts.map +1 -0
- package/dist/illustratedmessage/index.d.ts +14 -0
- package/dist/illustratedmessage/index.d.ts.map +1 -0
- package/dist/image/index.d.ts +11 -0
- package/dist/image/index.d.ts.map +1 -0
- package/dist/index.d.ts +231 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10697 -0
- package/dist/index.js.map +1 -0
- package/dist/index.ssr.js +8944 -0
- package/dist/index.ssr.js.map +1 -0
- package/dist/inlinealert/index.d.ts +6 -0
- package/dist/inlinealert/index.d.ts.map +1 -0
- package/dist/label/index.d.ts +14 -0
- package/dist/label/index.d.ts.map +1 -0
- package/dist/labeledvalue/index.d.ts +25 -0
- package/dist/labeledvalue/index.d.ts.map +1 -0
- package/dist/landmark/index.d.ts +83 -0
- package/dist/landmark/index.d.ts.map +1 -0
- package/dist/layout/Flex.d.ts +29 -0
- package/dist/layout/Flex.d.ts.map +1 -0
- package/dist/layout/Grid.d.ts +37 -0
- package/dist/layout/Grid.d.ts.map +1 -0
- package/dist/layout/css-utils.d.ts +23 -0
- package/dist/layout/css-utils.d.ts.map +1 -0
- package/dist/layout/index.d.ts +11 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/link/index.d.ts +39 -0
- package/dist/link/index.d.ts.map +1 -0
- package/dist/list/index.d.ts +6 -0
- package/dist/list/index.d.ts.map +1 -0
- package/dist/listbox/index.d.ts +47 -0
- package/dist/listbox/index.d.ts.map +1 -0
- package/dist/menu/ActionMenu.d.ts +24 -0
- package/dist/menu/ActionMenu.d.ts.map +1 -0
- package/dist/menu/ContextualHelpTrigger.d.ts +36 -0
- package/dist/menu/ContextualHelpTrigger.d.ts.map +1 -0
- package/dist/menu/SubmenuTrigger.d.ts +14 -0
- package/dist/menu/SubmenuTrigger.d.ts.map +1 -0
- package/dist/menu/index.d.ts +80 -0
- package/dist/menu/index.d.ts.map +1 -0
- package/dist/meter/index.d.ts +51 -0
- package/dist/meter/index.d.ts.map +1 -0
- package/dist/numberfield/index.d.ts +32 -0
- package/dist/numberfield/index.d.ts.map +1 -0
- package/dist/overlays/Modal.d.ts +21 -0
- package/dist/overlays/Modal.d.ts.map +1 -0
- package/dist/overlays/OpenTransition.d.ts +46 -0
- package/dist/overlays/OpenTransition.d.ts.map +1 -0
- package/dist/overlays/Overlay.d.ts +21 -0
- package/dist/overlays/Overlay.d.ts.map +1 -0
- package/dist/overlays/Tray.d.ts +18 -0
- package/dist/overlays/Tray.d.ts.map +1 -0
- package/dist/overlays/index.d.ts +18 -0
- package/dist/overlays/index.d.ts.map +1 -0
- package/dist/picker/index.d.ts +6 -0
- package/dist/picker/index.d.ts.map +1 -0
- package/dist/popover/index.d.ts +86 -0
- package/dist/popover/index.d.ts.map +1 -0
- package/dist/progress/ProgressCircle.d.ts +31 -0
- package/dist/progress/ProgressCircle.d.ts.map +1 -0
- package/dist/progress/index.d.ts +8 -0
- package/dist/progress/index.d.ts.map +1 -0
- package/dist/progress-bar/index.d.ts +51 -0
- package/dist/progress-bar/index.d.ts.map +1 -0
- package/dist/provider/index.d.ts +77 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/radio/index.d.ts +39 -0
- package/dist/radio/index.d.ts.map +1 -0
- package/dist/searchfield/index.d.ts +29 -0
- package/dist/searchfield/index.d.ts.map +1 -0
- package/dist/select/index.d.ts +72 -0
- package/dist/select/index.d.ts.map +1 -0
- package/dist/separator/index.d.ts +38 -0
- package/dist/separator/index.d.ts.map +1 -0
- package/dist/shared-element/index.d.ts +10 -0
- package/dist/shared-element/index.d.ts.map +1 -0
- package/dist/slider/RangeSlider.d.ts +48 -0
- package/dist/slider/RangeSlider.d.ts.map +1 -0
- package/dist/slider/index.d.ts +32 -0
- package/dist/slider/index.d.ts.map +1 -0
- package/dist/statuslight/index.d.ts +22 -0
- package/dist/statuslight/index.d.ts.map +1 -0
- package/dist/steplist/index.d.ts +15 -0
- package/dist/steplist/index.d.ts.map +1 -0
- package/dist/story-utils/ErrorBoundary.d.ts +17 -0
- package/dist/story-utils/ErrorBoundary.d.ts.map +1 -0
- package/dist/story-utils/generatePowerset.d.ts +32 -0
- package/dist/story-utils/generatePowerset.d.ts.map +1 -0
- package/dist/story-utils/index.d.ts +9 -0
- package/dist/story-utils/index.d.ts.map +1 -0
- package/dist/style-macro-s1/index.d.ts +5 -0
- package/dist/style-macro-s1/index.d.ts.map +1 -0
- package/dist/styles.css +487 -0
- package/dist/switch/ToggleSwitch.d.ts +28 -0
- package/dist/switch/ToggleSwitch.d.ts.map +1 -0
- package/dist/switch/index.d.ts +26 -0
- package/dist/switch/index.d.ts.map +1 -0
- package/dist/table/index.d.ts +140 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/tabs/index.d.ts +56 -0
- package/dist/tabs/index.d.ts.map +1 -0
- package/dist/tag/index.d.ts +6 -0
- package/dist/tag/index.d.ts.map +1 -0
- package/dist/tag-group/index.d.ts +84 -0
- package/dist/tag-group/index.d.ts.map +1 -0
- package/dist/text/Heading.d.ts +22 -0
- package/dist/text/Heading.d.ts.map +1 -0
- package/dist/text/Keyboard.d.ts +16 -0
- package/dist/text/Keyboard.d.ts.map +1 -0
- package/dist/text/index.d.ts +20 -0
- package/dist/text/index.d.ts.map +1 -0
- package/dist/textfield/TextArea.d.ts +30 -0
- package/dist/textfield/TextArea.d.ts.map +1 -0
- package/dist/textfield/index.d.ts +27 -0
- package/dist/textfield/index.d.ts.map +1 -0
- package/dist/theme/types.d.ts +10 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme-dark/index.d.ts +10 -0
- package/dist/theme-dark/index.d.ts.map +1 -0
- package/dist/theme-default/index.d.ts +8 -0
- package/dist/theme-default/index.d.ts.map +1 -0
- package/dist/theme-express/index.d.ts +5 -0
- package/dist/theme-express/index.d.ts.map +1 -0
- package/dist/theme-light/index.d.ts +10 -0
- package/dist/theme-light/index.d.ts.map +1 -0
- package/dist/theme.css +360 -0
- package/dist/toast/index.d.ts +101 -0
- package/dist/toast/index.d.ts.map +1 -0
- package/dist/toolbar/index.d.ts +42 -0
- package/dist/toolbar/index.d.ts.map +1 -0
- package/dist/tooltip/index.d.ts +78 -0
- package/dist/tooltip/index.d.ts.map +1 -0
- package/dist/tree/index.d.ts +99 -0
- package/dist/tree/index.d.ts.map +1 -0
- package/dist/view/Content.d.ts +37 -0
- package/dist/view/Content.d.ts.map +1 -0
- package/dist/view/index.d.ts +13 -0
- package/dist/view/index.d.ts.map +1 -0
- package/dist/well/index.d.ts +11 -0
- package/dist/well/index.d.ts.map +1 -0
- package/package.json +67 -0
- package/src/accordion/index.tsx +19 -0
- package/src/actionbar/index.tsx +92 -0
- package/src/actiongroup/index.tsx +110 -0
- package/src/alert/index.tsx +59 -0
- package/src/assets/favicon.png +0 -0
- package/src/assets/fire.gif +0 -0
- package/src/autocomplete/index.tsx +151 -0
- package/src/avatar/index.tsx +75 -0
- package/src/badge/index.tsx +43 -0
- package/src/breadcrumbs/index.tsx +212 -0
- package/src/button/ActionButton.tsx +80 -0
- package/src/button/Button.tsx +76 -0
- package/src/button/ClearButton.tsx +81 -0
- package/src/button/FieldButton.tsx +60 -0
- package/src/button/LogicButton.tsx +62 -0
- package/src/button/ToggleButton.tsx +77 -0
- package/src/button/index.ts +12 -0
- package/src/button/types.ts +24 -0
- package/src/buttongroup/index.tsx +25 -0
- package/src/calendar/DateField.tsx +208 -0
- package/src/calendar/DatePicker.tsx +257 -0
- package/src/calendar/DateRangePicker.tsx +254 -0
- package/src/calendar/RangeCalendar.tsx +238 -0
- package/src/calendar/TimeField.tsx +204 -0
- package/src/calendar/index.tsx +225 -0
- package/src/card/index.tsx +24 -0
- package/src/checkbox/index.tsx +259 -0
- package/src/color/ColorEditor.tsx +60 -0
- package/src/color/ColorSwatchPicker.tsx +169 -0
- package/src/color/index.tsx +725 -0
- package/src/combobox/index.tsx +398 -0
- package/src/components.css +1152 -0
- package/src/contextualhelp/index.tsx +42 -0
- package/src/custom/calendar-card/index.tsx +66 -0
- package/src/custom/chip/index.tsx +47 -0
- package/src/custom/conversation/index.tsx +107 -0
- package/src/custom/event-card/index.tsx +133 -0
- package/src/custom/header/index.tsx +33 -0
- package/src/custom/lateral-nav/index.tsx +88 -0
- package/src/custom/logo/index.tsx +58 -0
- package/src/custom/nav-header/index.tsx +45 -0
- package/src/custom/page-layout/index.tsx +29 -0
- package/src/custom/profile-card/index.tsx +64 -0
- package/src/custom/project-card/index.tsx +59 -0
- package/src/custom/timeline-item/index.tsx +105 -0
- package/src/datepicker/index.tsx +23 -0
- package/src/dialog/AlertDialog.tsx +140 -0
- package/src/dialog/Dialog.tsx +195 -0
- package/src/dialog/index.tsx +5 -0
- package/src/disclosure/index.tsx +310 -0
- package/src/divider/index.tsx +11 -0
- package/src/dnd/index.tsx +23 -0
- package/src/dropzone/index.tsx +48 -0
- package/src/filetrigger/index.tsx +28 -0
- package/src/form/Field.tsx +94 -0
- package/src/form/HelpText.tsx +48 -0
- package/src/form/index.tsx +48 -0
- package/src/gridlist/index.tsx +403 -0
- package/src/icon/Illustration.tsx +55 -0
- package/src/icon/UIIcon.tsx +59 -0
- package/src/icon/icons/GitHubIcon.tsx +22 -0
- package/src/icon/index.tsx +81 -0
- package/src/illustratedmessage/index.tsx +44 -0
- package/src/image/index.tsx +22 -0
- package/src/index.ts +666 -0
- package/src/inlinealert/index.tsx +10 -0
- package/src/label/index.tsx +36 -0
- package/src/labeledvalue/index.tsx +62 -0
- package/src/landmark/index.tsx +231 -0
- package/src/layout/Flex.tsx +94 -0
- package/src/layout/Grid.tsx +98 -0
- package/src/layout/css-utils.ts +31 -0
- package/src/layout/index.tsx +12 -0
- package/src/link/index.tsx +132 -0
- package/src/list/index.tsx +17 -0
- package/src/listbox/index.tsx +251 -0
- package/src/menu/ActionMenu.tsx +117 -0
- package/src/menu/ContextualHelpTrigger.tsx +122 -0
- package/src/menu/SubmenuTrigger.tsx +28 -0
- package/src/menu/index.tsx +309 -0
- package/src/meter/index.tsx +141 -0
- package/src/numberfield/index.tsx +282 -0
- package/src/overlays/Modal.tsx +64 -0
- package/src/overlays/OpenTransition.tsx +110 -0
- package/src/overlays/Overlay.tsx +47 -0
- package/src/overlays/Tray.tsx +48 -0
- package/src/overlays/index.tsx +55 -0
- package/src/picker/index.tsx +20 -0
- package/src/popover/index.tsx +261 -0
- package/src/progress/ProgressCircle.tsx +114 -0
- package/src/progress/index.tsx +14 -0
- package/src/progress-bar/index.tsx +144 -0
- package/src/provider/index.tsx +358 -0
- package/src/radio/index.tsx +192 -0
- package/src/searchfield/index.tsx +274 -0
- package/src/select/index.tsx +366 -0
- package/src/separator/index.tsx +110 -0
- package/src/shared-element/index.tsx +38 -0
- package/src/slider/RangeSlider.tsx +344 -0
- package/src/slider/index.tsx +232 -0
- package/src/statuslight/index.tsx +54 -0
- package/src/steplist/index.tsx +40 -0
- package/src/story-utils/ErrorBoundary.tsx +50 -0
- package/src/story-utils/generatePowerset.ts +63 -0
- package/src/story-utils/index.ts +13 -0
- package/src/style-macro-s1/index.ts +8 -0
- package/src/styles.css +487 -0
- package/src/switch/ToggleSwitch.tsx +114 -0
- package/src/switch/index.tsx +95 -0
- package/src/table/index.tsx +534 -0
- package/src/tabs/index.tsx +276 -0
- package/src/tag/index.tsx +12 -0
- package/src/tag-group/index.tsx +246 -0
- package/src/test-utils/index.ts +40 -0
- package/src/text/Heading.tsx +61 -0
- package/src/text/Keyboard.tsx +38 -0
- package/src/text/index.tsx +52 -0
- package/src/textfield/TextArea.tsx +193 -0
- package/src/textfield/index.tsx +191 -0
- package/src/theme/types.ts +10 -0
- package/src/theme-dark/index.ts +63 -0
- package/src/theme-default/index.ts +8 -0
- package/src/theme-express/index.ts +6 -0
- package/src/theme-light/index.ts +63 -0
- package/src/theme.css +360 -0
- package/src/toast/index.tsx +328 -0
- package/src/toolbar/index.tsx +110 -0
- package/src/tooltip/index.tsx +197 -0
- package/src/tree/index.tsx +496 -0
- package/src/view/Content.tsx +76 -0
- package/src/view/index.tsx +28 -0
- package/src/well/index.tsx +24 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text component for proyecto-viviana-silapse
|
|
3
|
+
*
|
|
4
|
+
* Styling-only wrapper around solidaria-components Text.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { type JSX, splitProps } from 'solid-js';
|
|
8
|
+
import {
|
|
9
|
+
Text as HeadlessText,
|
|
10
|
+
type TextProps as HeadlessTextProps,
|
|
11
|
+
} from '@proyecto-viviana/solidaria-components';
|
|
12
|
+
|
|
13
|
+
export type TextVariant = 'default' | 'muted' | 'success' | 'danger';
|
|
14
|
+
export type TextSize = 'sm' | 'md' | 'lg';
|
|
15
|
+
|
|
16
|
+
export interface TextProps extends Omit<HeadlessTextProps, 'class'> {
|
|
17
|
+
variant?: TextVariant;
|
|
18
|
+
size?: TextSize;
|
|
19
|
+
class?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const variantStyles: Record<TextVariant, string> = {
|
|
23
|
+
default: 'text-primary-100',
|
|
24
|
+
muted: 'text-primary-400',
|
|
25
|
+
success: 'text-green-500',
|
|
26
|
+
danger: 'text-danger-400',
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const sizeStyles: Record<TextSize, string> = {
|
|
30
|
+
sm: 'text-sm',
|
|
31
|
+
md: 'text-base',
|
|
32
|
+
lg: 'text-lg',
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export function Text(props: TextProps): JSX.Element {
|
|
36
|
+
const [local, headlessProps] = splitProps(props, ['variant', 'size', 'class']);
|
|
37
|
+
const variant = () => local.variant ?? 'default';
|
|
38
|
+
const size = () => local.size ?? 'md';
|
|
39
|
+
return (
|
|
40
|
+
<HeadlessText
|
|
41
|
+
{...headlessProps}
|
|
42
|
+
class={`${variantStyles[variant()]} ${sizeStyles[size()]} ${local.class ?? ''}`}
|
|
43
|
+
/>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Sub-component re-exports
|
|
48
|
+
export { Heading } from './Heading';
|
|
49
|
+
export type { HeadingProps, HeadingLevel } from './Heading';
|
|
50
|
+
export { StyledKeyboard } from './Keyboard';
|
|
51
|
+
export type { KeyboardProps as StyledKeyboardProps } from './Keyboard';
|
|
52
|
+
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TextArea component for proyecto-viviana-silapse
|
|
3
|
+
*
|
|
4
|
+
* Styled multiline text field with auto-resize support.
|
|
5
|
+
* Built on top of solidaria-components TextField + TextArea.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { type JSX, splitProps, Show, useContext } from 'solid-js'
|
|
9
|
+
import {
|
|
10
|
+
TextField as HeadlessTextField,
|
|
11
|
+
Label as HeadlessLabel,
|
|
12
|
+
TextArea as HeadlessTextArea,
|
|
13
|
+
TextFieldContext,
|
|
14
|
+
type TextFieldProps as HeadlessTextFieldProps,
|
|
15
|
+
type TextFieldRenderProps,
|
|
16
|
+
} from '@proyecto-viviana/solidaria-components'
|
|
17
|
+
import { useProviderProps } from '../provider'
|
|
18
|
+
|
|
19
|
+
// ============================================
|
|
20
|
+
// TYPES
|
|
21
|
+
// ============================================
|
|
22
|
+
|
|
23
|
+
export type TextAreaSize = 'sm' | 'md' | 'lg'
|
|
24
|
+
export type TextAreaVariant = 'outline' | 'filled'
|
|
25
|
+
|
|
26
|
+
export interface TextAreaProps extends Omit<HeadlessTextFieldProps, 'class' | 'style' | 'children'> {
|
|
27
|
+
/** The size of the text area. */
|
|
28
|
+
size?: TextAreaSize
|
|
29
|
+
/** The visual variant of the text area. */
|
|
30
|
+
variant?: TextAreaVariant
|
|
31
|
+
/** Additional CSS class name. */
|
|
32
|
+
class?: string
|
|
33
|
+
/** Label text for the textarea. */
|
|
34
|
+
label?: string
|
|
35
|
+
/** Description text shown below the textarea. */
|
|
36
|
+
description?: string
|
|
37
|
+
/** Error message shown when invalid. */
|
|
38
|
+
errorMessage?: string
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// ============================================
|
|
42
|
+
// STYLES
|
|
43
|
+
// ============================================
|
|
44
|
+
|
|
45
|
+
const sizeStyles = {
|
|
46
|
+
sm: {
|
|
47
|
+
textarea: 'min-h-[60px] px-2 py-1.5 text-sm',
|
|
48
|
+
label: 'text-sm',
|
|
49
|
+
description: 'text-xs',
|
|
50
|
+
},
|
|
51
|
+
md: {
|
|
52
|
+
textarea: 'min-h-[80px] px-3 py-2 text-base',
|
|
53
|
+
label: 'text-sm',
|
|
54
|
+
description: 'text-sm',
|
|
55
|
+
},
|
|
56
|
+
lg: {
|
|
57
|
+
textarea: 'min-h-[100px] px-4 py-3 text-lg',
|
|
58
|
+
label: 'text-base',
|
|
59
|
+
description: 'text-sm',
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function TextAreaDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {
|
|
64
|
+
const context = useContext(TextFieldContext)
|
|
65
|
+
if (!context) return null
|
|
66
|
+
const descriptionProps = () => {
|
|
67
|
+
const { ref: _ref, ...rest } = context.descriptionProps as Record<string, unknown>
|
|
68
|
+
return rest
|
|
69
|
+
}
|
|
70
|
+
return (
|
|
71
|
+
<p {...descriptionProps()} class={props.class}>
|
|
72
|
+
{props.children}
|
|
73
|
+
</p>
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function TextAreaError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {
|
|
78
|
+
const context = useContext(TextFieldContext)
|
|
79
|
+
if (!context) return null
|
|
80
|
+
const errorMessageProps = () => {
|
|
81
|
+
const { ref: _ref, ...rest } = context.errorMessageProps as Record<string, unknown>
|
|
82
|
+
return rest
|
|
83
|
+
}
|
|
84
|
+
return (
|
|
85
|
+
<p {...errorMessageProps()} class={props.class}>
|
|
86
|
+
{props.children}
|
|
87
|
+
</p>
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// ============================================
|
|
92
|
+
// COMPONENT
|
|
93
|
+
// ============================================
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* TextAreas are multiline text inputs, useful for cases where users have
|
|
97
|
+
* a sizable amount of text to enter.
|
|
98
|
+
*/
|
|
99
|
+
export function TextArea(props: TextAreaProps): JSX.Element {
|
|
100
|
+
const mergedProps = useProviderProps(props)
|
|
101
|
+
const [local, headlessProps] = splitProps(mergedProps, [
|
|
102
|
+
'size',
|
|
103
|
+
'variant',
|
|
104
|
+
'class',
|
|
105
|
+
'label',
|
|
106
|
+
'description',
|
|
107
|
+
'errorMessage',
|
|
108
|
+
])
|
|
109
|
+
|
|
110
|
+
const size = () => sizeStyles[local.size ?? 'md']
|
|
111
|
+
|
|
112
|
+
const containerClasses = () => {
|
|
113
|
+
const base = 'flex flex-col'
|
|
114
|
+
const custom = local.class ?? ''
|
|
115
|
+
return [base, custom].filter(Boolean).join(' ')
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const textareaClasses = (renderProps: TextFieldRenderProps) => {
|
|
119
|
+
const base = 'w-full rounded-md transition-all duration-200 outline-none resize-none overflow-hidden'
|
|
120
|
+
const sizeClass = size().textarea
|
|
121
|
+
|
|
122
|
+
const variantClass = local.variant === 'filled'
|
|
123
|
+
? 'bg-bg-200 border border-transparent'
|
|
124
|
+
: 'bg-transparent border border-bg-400'
|
|
125
|
+
|
|
126
|
+
let stateClass = ''
|
|
127
|
+
if (renderProps.isDisabled) {
|
|
128
|
+
stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'
|
|
129
|
+
} else if (renderProps.isInvalid) {
|
|
130
|
+
stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'
|
|
131
|
+
} else {
|
|
132
|
+
stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'
|
|
136
|
+
|
|
137
|
+
return [base, sizeClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const labelClasses = () => {
|
|
141
|
+
const base = 'block font-medium text-primary-200 mb-1'
|
|
142
|
+
const sizeClass = size().label
|
|
143
|
+
return [base, sizeClass].filter(Boolean).join(' ')
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const descriptionClasses = () => {
|
|
147
|
+
const base = 'mt-1 text-primary-400'
|
|
148
|
+
const sizeClass = size().description
|
|
149
|
+
return [base, sizeClass].filter(Boolean).join(' ')
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const errorClasses = () => {
|
|
153
|
+
const base = 'mt-1 text-danger-400'
|
|
154
|
+
const sizeClass = size().description
|
|
155
|
+
return [base, sizeClass].filter(Boolean).join(' ')
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return (
|
|
159
|
+
<HeadlessTextField
|
|
160
|
+
{...headlessProps}
|
|
161
|
+
label={local.label}
|
|
162
|
+
description={local.description}
|
|
163
|
+
errorMessage={local.errorMessage}
|
|
164
|
+
class={containerClasses()}
|
|
165
|
+
children={(renderProps) => (
|
|
166
|
+
<>
|
|
167
|
+
<Show when={local.label}>
|
|
168
|
+
<HeadlessLabel class={labelClasses()}>
|
|
169
|
+
{local.label}
|
|
170
|
+
<Show when={renderProps.isRequired}>
|
|
171
|
+
<span class="text-danger-400 ml-0.5">*</span>
|
|
172
|
+
</Show>
|
|
173
|
+
</HeadlessLabel>
|
|
174
|
+
</Show>
|
|
175
|
+
|
|
176
|
+
<HeadlessTextArea class={textareaClasses(renderProps)} />
|
|
177
|
+
|
|
178
|
+
<Show when={local.description && !renderProps.isInvalid}>
|
|
179
|
+
<TextAreaDescription class={descriptionClasses()}>
|
|
180
|
+
{local.description}
|
|
181
|
+
</TextAreaDescription>
|
|
182
|
+
</Show>
|
|
183
|
+
|
|
184
|
+
<Show when={local.errorMessage && renderProps.isInvalid}>
|
|
185
|
+
<TextAreaError class={errorClasses()}>
|
|
186
|
+
{local.errorMessage}
|
|
187
|
+
</TextAreaError>
|
|
188
|
+
</Show>
|
|
189
|
+
</>
|
|
190
|
+
)}
|
|
191
|
+
/>
|
|
192
|
+
)
|
|
193
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TextField component for proyecto-viviana-silapse
|
|
3
|
+
*
|
|
4
|
+
* Styled text field built on top of solidaria-components.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { type JSX, splitProps, Show, useContext } from 'solid-js'
|
|
8
|
+
import {
|
|
9
|
+
TextField as HeadlessTextField,
|
|
10
|
+
Label as HeadlessLabel,
|
|
11
|
+
Input as HeadlessInput,
|
|
12
|
+
TextFieldContext,
|
|
13
|
+
type TextFieldProps as HeadlessTextFieldProps,
|
|
14
|
+
type TextFieldRenderProps,
|
|
15
|
+
} from '@proyecto-viviana/solidaria-components'
|
|
16
|
+
import { useProviderProps } from '../provider'
|
|
17
|
+
|
|
18
|
+
// ============================================
|
|
19
|
+
// TYPES
|
|
20
|
+
// ============================================
|
|
21
|
+
|
|
22
|
+
export type TextFieldSize = 'sm' | 'md' | 'lg'
|
|
23
|
+
export type TextFieldVariant = 'outline' | 'filled'
|
|
24
|
+
|
|
25
|
+
export interface TextFieldProps extends Omit<HeadlessTextFieldProps, 'class' | 'style' | 'children'> {
|
|
26
|
+
/** The size of the text field. */
|
|
27
|
+
size?: TextFieldSize
|
|
28
|
+
/** The visual variant of the text field. */
|
|
29
|
+
variant?: TextFieldVariant
|
|
30
|
+
/** Additional CSS class name. */
|
|
31
|
+
class?: string
|
|
32
|
+
/** Label text for the input. */
|
|
33
|
+
label?: string
|
|
34
|
+
/** Description text shown below the input. */
|
|
35
|
+
description?: string
|
|
36
|
+
/** Error message shown when invalid. */
|
|
37
|
+
errorMessage?: string
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// ============================================
|
|
41
|
+
// STYLES
|
|
42
|
+
// ============================================
|
|
43
|
+
|
|
44
|
+
const sizeStyles = {
|
|
45
|
+
sm: {
|
|
46
|
+
input: 'h-8 px-2 text-sm',
|
|
47
|
+
label: 'text-sm',
|
|
48
|
+
description: 'text-xs',
|
|
49
|
+
},
|
|
50
|
+
md: {
|
|
51
|
+
input: 'h-10 px-3 text-base',
|
|
52
|
+
label: 'text-sm',
|
|
53
|
+
description: 'text-sm',
|
|
54
|
+
},
|
|
55
|
+
lg: {
|
|
56
|
+
input: 'h-12 px-4 text-lg',
|
|
57
|
+
label: 'text-base',
|
|
58
|
+
description: 'text-sm',
|
|
59
|
+
},
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function TextFieldDescription(props: { class?: string; children?: JSX.Element }): JSX.Element | null {
|
|
63
|
+
const context = useContext(TextFieldContext)
|
|
64
|
+
if (!context) return null
|
|
65
|
+
const descriptionProps = () => {
|
|
66
|
+
const { ref: _ref, ...rest } = context.descriptionProps as Record<string, unknown>
|
|
67
|
+
return rest
|
|
68
|
+
}
|
|
69
|
+
return (
|
|
70
|
+
<p {...descriptionProps()} class={props.class}>
|
|
71
|
+
{props.children}
|
|
72
|
+
</p>
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function TextFieldError(props: { class?: string; children?: JSX.Element }): JSX.Element | null {
|
|
77
|
+
const context = useContext(TextFieldContext)
|
|
78
|
+
if (!context) return null
|
|
79
|
+
const errorMessageProps = () => {
|
|
80
|
+
const { ref: _ref, ...rest } = context.errorMessageProps as Record<string, unknown>
|
|
81
|
+
return rest
|
|
82
|
+
}
|
|
83
|
+
return (
|
|
84
|
+
<p {...errorMessageProps()} class={props.class}>
|
|
85
|
+
{props.children}
|
|
86
|
+
</p>
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ============================================
|
|
91
|
+
// COMPONENT
|
|
92
|
+
// ============================================
|
|
93
|
+
|
|
94
|
+
export { TextArea } from './TextArea';
|
|
95
|
+
export type { TextAreaProps, TextAreaSize, TextAreaVariant } from './TextArea';
|
|
96
|
+
|
|
97
|
+
export function TextField(props: TextFieldProps): JSX.Element {
|
|
98
|
+
const mergedProps = useProviderProps(props)
|
|
99
|
+
const [local, headlessProps] = splitProps(mergedProps, [
|
|
100
|
+
'size',
|
|
101
|
+
'variant',
|
|
102
|
+
'class',
|
|
103
|
+
'label',
|
|
104
|
+
'description',
|
|
105
|
+
'errorMessage',
|
|
106
|
+
])
|
|
107
|
+
|
|
108
|
+
const size = () => sizeStyles[local.size ?? 'md']
|
|
109
|
+
|
|
110
|
+
const containerClasses = () => {
|
|
111
|
+
const base = 'flex flex-col'
|
|
112
|
+
const custom = local.class ?? ''
|
|
113
|
+
return [base, custom].filter(Boolean).join(' ')
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const inputClasses = (renderProps: TextFieldRenderProps) => {
|
|
117
|
+
const base = 'w-full rounded-md transition-all duration-200 outline-none'
|
|
118
|
+
const sizeClass = size().input
|
|
119
|
+
|
|
120
|
+
const variantClass = local.variant === 'filled'
|
|
121
|
+
? 'bg-bg-200 border border-transparent'
|
|
122
|
+
: 'bg-transparent border border-bg-400'
|
|
123
|
+
|
|
124
|
+
let stateClass = ''
|
|
125
|
+
if (renderProps.isDisabled) {
|
|
126
|
+
stateClass = 'bg-bg-200 text-primary-500 cursor-not-allowed'
|
|
127
|
+
} else if (renderProps.isInvalid) {
|
|
128
|
+
stateClass = 'border-danger-500 focus:border-danger-400 focus:ring-2 focus:ring-danger-400/20'
|
|
129
|
+
} else {
|
|
130
|
+
stateClass = 'text-primary-100 placeholder:text-primary-500 focus:border-accent focus:ring-2 focus:ring-accent/20'
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const hoverClass = renderProps.isDisabled ? '' : 'hover:border-accent-300'
|
|
134
|
+
|
|
135
|
+
return [base, sizeClass, variantClass, stateClass, hoverClass].filter(Boolean).join(' ')
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const labelClasses = () => {
|
|
139
|
+
const base = 'block font-medium text-primary-200 mb-1'
|
|
140
|
+
const sizeClass = size().label
|
|
141
|
+
return [base, sizeClass].filter(Boolean).join(' ')
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const descriptionClasses = () => {
|
|
145
|
+
const base = 'mt-1 text-primary-400'
|
|
146
|
+
const sizeClass = size().description
|
|
147
|
+
return [base, sizeClass].filter(Boolean).join(' ')
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const errorClasses = () => {
|
|
151
|
+
const base = 'mt-1 text-danger-400'
|
|
152
|
+
const sizeClass = size().description
|
|
153
|
+
return [base, sizeClass].filter(Boolean).join(' ')
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return (
|
|
157
|
+
<HeadlessTextField
|
|
158
|
+
{...headlessProps}
|
|
159
|
+
label={local.label}
|
|
160
|
+
description={local.description}
|
|
161
|
+
errorMessage={local.errorMessage}
|
|
162
|
+
class={containerClasses()}
|
|
163
|
+
children={(renderProps) => (
|
|
164
|
+
<>
|
|
165
|
+
<Show when={local.label}>
|
|
166
|
+
<HeadlessLabel class={labelClasses()}>
|
|
167
|
+
{local.label}
|
|
168
|
+
<Show when={renderProps.isRequired}>
|
|
169
|
+
<span class="text-danger-400 ml-0.5">*</span>
|
|
170
|
+
</Show>
|
|
171
|
+
</HeadlessLabel>
|
|
172
|
+
</Show>
|
|
173
|
+
|
|
174
|
+
<HeadlessInput class={inputClasses(renderProps)} />
|
|
175
|
+
|
|
176
|
+
<Show when={local.description && !renderProps.isInvalid}>
|
|
177
|
+
<TextFieldDescription class={descriptionClasses()}>
|
|
178
|
+
{local.description}
|
|
179
|
+
</TextFieldDescription>
|
|
180
|
+
</Show>
|
|
181
|
+
|
|
182
|
+
<Show when={local.errorMessage && renderProps.isInvalid}>
|
|
183
|
+
<TextFieldError class={errorClasses()}>
|
|
184
|
+
{local.errorMessage}
|
|
185
|
+
</TextFieldError>
|
|
186
|
+
</Show>
|
|
187
|
+
</>
|
|
188
|
+
)}
|
|
189
|
+
/>
|
|
190
|
+
)
|
|
191
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme Dark module for proyecto-viviana-silapse
|
|
3
|
+
*
|
|
4
|
+
* Dark mode CSS custom properties. Apply the class to the root element
|
|
5
|
+
* or use the Provider component with colorScheme="dark".
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Theme } from '../theme/types';
|
|
9
|
+
|
|
10
|
+
export const themeDarkClass = 'vui-theme-dark';
|
|
11
|
+
|
|
12
|
+
export const darkTheme: Theme = {
|
|
13
|
+
className: themeDarkClass,
|
|
14
|
+
properties: {
|
|
15
|
+
// Backgrounds
|
|
16
|
+
'--vui-bg-100': '#0a0a0a',
|
|
17
|
+
'--vui-bg-200': '#141414',
|
|
18
|
+
'--vui-bg-300': '#1e1e1e',
|
|
19
|
+
'--vui-bg-400': '#282828',
|
|
20
|
+
'--vui-bg-500': '#333333',
|
|
21
|
+
|
|
22
|
+
// Text / Primary
|
|
23
|
+
'--vui-text-primary': '#f5f5f5',
|
|
24
|
+
'--vui-text-secondary': '#a3a3a3',
|
|
25
|
+
'--vui-text-tertiary': '#737373',
|
|
26
|
+
'--vui-text-disabled': '#525252',
|
|
27
|
+
|
|
28
|
+
// Accent
|
|
29
|
+
'--vui-accent': '#818cf8',
|
|
30
|
+
'--vui-accent-hover': '#a5b4fc',
|
|
31
|
+
'--vui-accent-active': '#6366f1',
|
|
32
|
+
'--vui-accent-subtle': 'rgba(129, 140, 248, 0.15)',
|
|
33
|
+
|
|
34
|
+
// Border
|
|
35
|
+
'--vui-border': '#374151',
|
|
36
|
+
'--vui-border-hover': '#4b5563',
|
|
37
|
+
'--vui-border-focus': '#818cf8',
|
|
38
|
+
|
|
39
|
+
// Focus
|
|
40
|
+
'--vui-focus-ring': 'rgba(129, 140, 248, 0.5)',
|
|
41
|
+
|
|
42
|
+
// Status: Error/Danger
|
|
43
|
+
'--vui-danger': '#f87171',
|
|
44
|
+
'--vui-danger-subtle': 'rgba(248, 113, 113, 0.15)',
|
|
45
|
+
|
|
46
|
+
// Status: Success
|
|
47
|
+
'--vui-success': '#4ade80',
|
|
48
|
+
'--vui-success-subtle': 'rgba(74, 222, 128, 0.15)',
|
|
49
|
+
|
|
50
|
+
// Status: Warning
|
|
51
|
+
'--vui-warning': '#fbbf24',
|
|
52
|
+
'--vui-warning-subtle': 'rgba(251, 191, 36, 0.15)',
|
|
53
|
+
|
|
54
|
+
// Status: Info
|
|
55
|
+
'--vui-info': '#60a5fa',
|
|
56
|
+
'--vui-info-subtle': 'rgba(96, 165, 250, 0.15)',
|
|
57
|
+
|
|
58
|
+
// Overlay
|
|
59
|
+
'--vui-overlay-bg': 'rgba(0, 0, 0, 0.6)',
|
|
60
|
+
'--vui-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.3)',
|
|
61
|
+
'--vui-shadow-lg': '0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.3)',
|
|
62
|
+
},
|
|
63
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme Light module for proyecto-viviana-silapse
|
|
3
|
+
*
|
|
4
|
+
* Light theme CSS custom properties. Apply the class to the root element
|
|
5
|
+
* or use the Provider component with colorScheme="light".
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Theme } from '../theme/types';
|
|
9
|
+
|
|
10
|
+
export const themeLightClass = 'vui-theme-light';
|
|
11
|
+
|
|
12
|
+
export const lightTheme: Theme = {
|
|
13
|
+
className: themeLightClass,
|
|
14
|
+
properties: {
|
|
15
|
+
// Backgrounds
|
|
16
|
+
'--vui-bg-100': '#ffffff',
|
|
17
|
+
'--vui-bg-200': '#fafafa',
|
|
18
|
+
'--vui-bg-300': '#f5f5f5',
|
|
19
|
+
'--vui-bg-400': '#eeeeee',
|
|
20
|
+
'--vui-bg-500': '#e0e0e0',
|
|
21
|
+
|
|
22
|
+
// Text / Primary
|
|
23
|
+
'--vui-text-primary': '#1a1a1a',
|
|
24
|
+
'--vui-text-secondary': '#666666',
|
|
25
|
+
'--vui-text-tertiary': '#999999',
|
|
26
|
+
'--vui-text-disabled': '#bdbdbd',
|
|
27
|
+
|
|
28
|
+
// Accent
|
|
29
|
+
'--vui-accent': '#6366f1',
|
|
30
|
+
'--vui-accent-hover': '#5558e6',
|
|
31
|
+
'--vui-accent-active': '#4f46e5',
|
|
32
|
+
'--vui-accent-subtle': 'rgba(99, 102, 241, 0.1)',
|
|
33
|
+
|
|
34
|
+
// Border
|
|
35
|
+
'--vui-border': '#e5e7eb',
|
|
36
|
+
'--vui-border-hover': '#d1d5db',
|
|
37
|
+
'--vui-border-focus': '#6366f1',
|
|
38
|
+
|
|
39
|
+
// Focus
|
|
40
|
+
'--vui-focus-ring': 'rgba(99, 102, 241, 0.5)',
|
|
41
|
+
|
|
42
|
+
// Status: Error/Danger
|
|
43
|
+
'--vui-danger': '#ef4444',
|
|
44
|
+
'--vui-danger-subtle': 'rgba(239, 68, 68, 0.1)',
|
|
45
|
+
|
|
46
|
+
// Status: Success
|
|
47
|
+
'--vui-success': '#22c55e',
|
|
48
|
+
'--vui-success-subtle': 'rgba(34, 197, 94, 0.1)',
|
|
49
|
+
|
|
50
|
+
// Status: Warning
|
|
51
|
+
'--vui-warning': '#f59e0b',
|
|
52
|
+
'--vui-warning-subtle': 'rgba(245, 158, 11, 0.1)',
|
|
53
|
+
|
|
54
|
+
// Status: Info
|
|
55
|
+
'--vui-info': '#3b82f6',
|
|
56
|
+
'--vui-info-subtle': 'rgba(59, 130, 246, 0.1)',
|
|
57
|
+
|
|
58
|
+
// Overlay
|
|
59
|
+
'--vui-overlay-bg': 'rgba(0, 0, 0, 0.4)',
|
|
60
|
+
'--vui-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)',
|
|
61
|
+
'--vui-shadow-lg': '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)',
|
|
62
|
+
},
|
|
63
|
+
};
|