@proyecto-viviana/ui 0.2.3 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/index.js +192 -179
  2. package/dist/index.js.map +3 -3
  3. package/dist/index.ssr.js +24 -21
  4. package/dist/index.ssr.js.map +3 -3
  5. package/dist/radio/index.d.ts +27 -12
  6. package/dist/radio/index.d.ts.map +1 -1
  7. package/package.json +12 -13
  8. package/src/alert/index.tsx +0 -48
  9. package/src/assets/favicon.png +0 -0
  10. package/src/assets/fire.gif +0 -0
  11. package/src/autocomplete/index.tsx +0 -313
  12. package/src/avatar/index.tsx +0 -75
  13. package/src/badge/index.tsx +0 -43
  14. package/src/breadcrumbs/index.tsx +0 -207
  15. package/src/button/Button.tsx +0 -74
  16. package/src/button/index.ts +0 -2
  17. package/src/button/types.ts +0 -24
  18. package/src/calendar/DateField.tsx +0 -200
  19. package/src/calendar/DatePicker.tsx +0 -298
  20. package/src/calendar/RangeCalendar.tsx +0 -236
  21. package/src/calendar/TimeField.tsx +0 -196
  22. package/src/calendar/index.tsx +0 -223
  23. package/src/checkbox/index.tsx +0 -257
  24. package/src/color/index.tsx +0 -687
  25. package/src/combobox/index.tsx +0 -383
  26. package/src/components.css +0 -1077
  27. package/src/custom/calendar-card/index.tsx +0 -66
  28. package/src/custom/chip/index.tsx +0 -46
  29. package/src/custom/conversation/index.tsx +0 -105
  30. package/src/custom/event-card/index.tsx +0 -132
  31. package/src/custom/header/index.tsx +0 -33
  32. package/src/custom/lateral-nav/index.tsx +0 -88
  33. package/src/custom/logo/index.tsx +0 -58
  34. package/src/custom/nav-header/index.tsx +0 -42
  35. package/src/custom/page-layout/index.tsx +0 -29
  36. package/src/custom/profile-card/index.tsx +0 -64
  37. package/src/custom/project-card/index.tsx +0 -59
  38. package/src/custom/timeline-item/index.tsx +0 -105
  39. package/src/dialog/Dialog.tsx +0 -260
  40. package/src/dialog/index.tsx +0 -3
  41. package/src/disclosure/index.tsx +0 -307
  42. package/src/gridlist/index.tsx +0 -403
  43. package/src/icon/icons/GitHubIcon.tsx +0 -20
  44. package/src/icon/index.tsx +0 -48
  45. package/src/index.ts +0 -322
  46. package/src/landmark/index.tsx +0 -231
  47. package/src/link/index.tsx +0 -130
  48. package/src/listbox/index.tsx +0 -231
  49. package/src/menu/index.tsx +0 -297
  50. package/src/meter/index.tsx +0 -163
  51. package/src/numberfield/index.tsx +0 -482
  52. package/src/popover/index.tsx +0 -260
  53. package/src/progress-bar/index.tsx +0 -169
  54. package/src/radio/index.tsx +0 -173
  55. package/src/searchfield/index.tsx +0 -453
  56. package/src/select/index.tsx +0 -349
  57. package/src/separator/index.tsx +0 -141
  58. package/src/slider/index.tsx +0 -382
  59. package/src/styles.css +0 -450
  60. package/src/switch/ToggleSwitch.tsx +0 -112
  61. package/src/switch/index.tsx +0 -90
  62. package/src/table/index.tsx +0 -531
  63. package/src/tabs/index.tsx +0 -273
  64. package/src/tag-group/index.tsx +0 -240
  65. package/src/test-utils/index.ts +0 -32
  66. package/src/textfield/index.tsx +0 -211
  67. package/src/theme.css +0 -101
  68. package/src/toast/index.tsx +0 -324
  69. package/src/toolbar/index.tsx +0 -108
  70. package/src/tooltip/index.tsx +0 -197
  71. package/src/tree/index.tsx +0 -494
@@ -1,108 +0,0 @@
1
- /**
2
- * Toolbar component for proyecto-viviana-ui
3
- *
4
- * Styled toolbar component built on top of solidaria-components Toolbar.
5
- */
6
-
7
- import { type JSX, splitProps, createMemo } from 'solid-js'
8
- import {
9
- Toolbar as HeadlessToolbar,
10
- type ToolbarProps as HeadlessToolbarProps,
11
- type ToolbarRenderProps,
12
- } from '@proyecto-viviana/solidaria-components'
13
-
14
- // ============================================
15
- // TYPES
16
- // ============================================
17
-
18
- export type ToolbarSize = 'sm' | 'md' | 'lg'
19
- export type ToolbarVariant = 'default' | 'bordered' | 'ghost'
20
-
21
- export interface ToolbarProps extends Omit<HeadlessToolbarProps, 'class' | 'style'> {
22
- /** The visual variant of the toolbar. @default 'default' */
23
- variant?: ToolbarVariant
24
- /** The size of the toolbar. @default 'md' */
25
- size?: ToolbarSize
26
- /** Additional CSS class name. */
27
- class?: string
28
- /** Inline styles. */
29
- style?: JSX.CSSProperties
30
- }
31
-
32
- // ============================================
33
- // STYLES
34
- // ============================================
35
-
36
- const baseStyles = 'vui-toolbar inline-flex items-center'
37
-
38
- const variantStyles: Record<ToolbarVariant, string> = {
39
- default: 'bg-bg-50 rounded-md',
40
- bordered: 'border border-bg-200 rounded-md',
41
- ghost: '',
42
- }
43
-
44
- const sizeStyles: Record<ToolbarSize, string> = {
45
- sm: 'gap-1 p-1',
46
- md: 'gap-2 p-2',
47
- lg: 'gap-3 p-3',
48
- }
49
-
50
- const orientationStyles = {
51
- horizontal: 'flex-row',
52
- vertical: 'flex-col',
53
- }
54
-
55
- // ============================================
56
- // TOOLBAR COMPONENT
57
- // ============================================
58
-
59
- /**
60
- * A styled toolbar for grouping interactive controls with keyboard navigation.
61
- *
62
- * @example
63
- * ```tsx
64
- * <Toolbar aria-label="Text formatting">
65
- * <Button>Bold</Button>
66
- * <Button>Italic</Button>
67
- * <Separator orientation="vertical" />
68
- * <Button>Align Left</Button>
69
- * <Button>Align Center</Button>
70
- * </Toolbar>
71
- *
72
- * // Vertical toolbar
73
- * <Toolbar orientation="vertical" variant="bordered">
74
- * <Button>Cut</Button>
75
- * <Button>Copy</Button>
76
- * <Button>Paste</Button>
77
- * </Toolbar>
78
- * ```
79
- */
80
- export function Toolbar(props: ToolbarProps): JSX.Element {
81
- const [local, headlessProps] = splitProps(props, [
82
- 'variant',
83
- 'size',
84
- 'class',
85
- 'style',
86
- ])
87
-
88
- const variant = () => local.variant ?? 'default'
89
- const size = () => local.size ?? 'md'
90
-
91
- const getClassName = (renderProps: ToolbarRenderProps): string => {
92
- return [
93
- baseStyles,
94
- variantStyles[variant()],
95
- sizeStyles[size()],
96
- orientationStyles[renderProps.orientation],
97
- local.class ?? '',
98
- ].filter(Boolean).join(' ')
99
- }
100
-
101
- return (
102
- <HeadlessToolbar
103
- {...headlessProps}
104
- class={getClassName}
105
- style={local.style}
106
- />
107
- )
108
- }
@@ -1,197 +0,0 @@
1
- /**
2
- * Tooltip component for proyecto-viviana-ui
3
- *
4
- * A tooltip displays a description of an element on hover or focus.
5
- * Built on top of solidaria-components for accessibility.
6
- */
7
-
8
- import { type JSX, Show, splitProps } from 'solid-js'
9
- import {
10
- Tooltip as HeadlessTooltip,
11
- TooltipTrigger as HeadlessTooltipTrigger,
12
- type TooltipProps as HeadlessTooltipProps,
13
- type TooltipTriggerComponentProps as HeadlessTooltipTriggerProps,
14
- type TooltipRenderProps,
15
- } from '@proyecto-viviana/solidaria-components'
16
-
17
- // ============================================
18
- // TYPES
19
- // ============================================
20
-
21
- export type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right'
22
- export type TooltipVariant = 'default' | 'neutral' | 'info'
23
-
24
- export interface TooltipTriggerProps extends HeadlessTooltipTriggerProps {
25
- /** The children of the tooltip trigger (trigger element and tooltip). */
26
- children: JSX.Element
27
- }
28
-
29
- export interface TooltipProps extends Omit<HeadlessTooltipProps, 'class' | 'style' | 'children'> {
30
- /** The content of the tooltip. */
31
- children: JSX.Element
32
- /** The position of the tooltip relative to the trigger. */
33
- placement?: TooltipPlacement
34
- /** Visual variant of the tooltip. */
35
- variant?: TooltipVariant
36
- /** Additional CSS class name. */
37
- class?: string
38
- /** Whether to show an arrow pointing to the trigger. */
39
- showArrow?: boolean
40
- }
41
-
42
- // ============================================
43
- // STYLES
44
- // ============================================
45
-
46
- // Note: Position is now calculated by the headless layer (solidaria-components)
47
- // so we don't need CSS positioning classes here
48
- const baseStyles = [
49
- 'px-3 py-2 rounded-lg',
50
- 'text-sm font-medium',
51
- 'shadow-lg',
52
- 'pointer-events-auto',
53
- 'animate-in fade-in-0 zoom-in-95',
54
- 'data-[exiting]:animate-out data-[exiting]:fade-out-0 data-[exiting]:zoom-out-95',
55
- ].join(' ')
56
-
57
- const variantStyles: Record<TooltipVariant, string> = {
58
- default: 'bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900',
59
- neutral: 'bg-neutral-800 text-neutral-100 dark:bg-neutral-200 dark:text-neutral-900',
60
- info: 'bg-blue-600 text-white dark:bg-blue-500',
61
- }
62
-
63
- const arrowStyles: Record<TooltipPlacement, string> = {
64
- top: 'bottom-0 left-1/2 -translate-x-1/2 translate-y-full border-l-transparent border-r-transparent border-b-transparent',
65
- bottom: 'top-0 left-1/2 -translate-x-1/2 -translate-y-full border-l-transparent border-r-transparent border-t-transparent',
66
- left: 'right-0 top-1/2 -translate-y-1/2 translate-x-full border-t-transparent border-b-transparent border-r-transparent',
67
- right: 'left-0 top-1/2 -translate-y-1/2 -translate-x-full border-t-transparent border-b-transparent border-l-transparent',
68
- }
69
-
70
- const getArrowBorderColor = (variant: TooltipVariant): string => {
71
- const colors: Record<TooltipVariant, string> = {
72
- default: 'border-neutral-900 dark:border-neutral-100',
73
- neutral: 'border-neutral-800 dark:border-neutral-200',
74
- info: 'border-blue-600 dark:border-blue-500',
75
- }
76
- return colors[variant]
77
- }
78
-
79
- // ============================================
80
- // COMPONENTS
81
- // ============================================
82
-
83
- /**
84
- * TooltipTrigger wraps around a trigger element and a Tooltip.
85
- * It handles opening and closing the Tooltip when the user hovers
86
- * over or focuses the trigger.
87
- *
88
- * @example
89
- * ```tsx
90
- * <TooltipTrigger>
91
- * <Button>Hover me</Button>
92
- * <Tooltip>This is helpful information</Tooltip>
93
- * </TooltipTrigger>
94
- * ```
95
- */
96
- export function TooltipTrigger(props: TooltipTriggerProps): JSX.Element {
97
- return <HeadlessTooltipTrigger {...props} />
98
- }
99
-
100
- /**
101
- * Styled tooltip component that displays a description on hover or focus.
102
- *
103
- * @example
104
- * ```tsx
105
- * <TooltipTrigger>
106
- * <Button>Save</Button>
107
- * <Tooltip placement="top">Save your changes</Tooltip>
108
- * </TooltipTrigger>
109
- * ```
110
- */
111
- export function Tooltip(props: TooltipProps): JSX.Element {
112
- const [local, rest] = splitProps(props, [
113
- 'placement',
114
- 'variant',
115
- 'class',
116
- 'showArrow',
117
- ])
118
-
119
- const placement = () => local.placement ?? 'top'
120
- const variant = () => local.variant ?? 'default'
121
-
122
- return (
123
- <HeadlessTooltip
124
- {...rest}
125
- placement={placement()}
126
- class={(_renderProps: TooltipRenderProps) => {
127
- const classes = [
128
- baseStyles,
129
- variantStyles[variant()],
130
- local.class ?? '',
131
- ].filter(Boolean).join(' ')
132
- return classes
133
- }}
134
- >
135
- {(renderProps: TooltipRenderProps) => (
136
- <>
137
- {props.children}
138
- <Show when={local.showArrow}>
139
- <div
140
- class={[
141
- 'absolute w-0 h-0 border-4',
142
- arrowStyles[renderProps.placement ?? placement()],
143
- getArrowBorderColor(variant()),
144
- ].join(' ')}
145
- />
146
- </Show>
147
- </>
148
- )}
149
- </HeadlessTooltip>
150
- )
151
- }
152
-
153
- // ============================================
154
- // SIMPLE CSS-ONLY TOOLTIP (Legacy)
155
- // ============================================
156
-
157
- export interface SimpleTooltipProps {
158
- /** The content to show in the tooltip */
159
- label: string
160
- /** The trigger element */
161
- children: JSX.Element
162
- /** Position of the tooltip */
163
- position?: 'top' | 'bottom'
164
- /** Additional CSS class */
165
- class?: string
166
- }
167
-
168
- /**
169
- * Simple CSS-only tooltip component.
170
- * Uses CSS hover effect for performance. No JS state management.
171
- *
172
- * @deprecated Use the accessible Tooltip + TooltipTrigger components instead.
173
- *
174
- * @example
175
- * ```tsx
176
- * <SimpleTooltip label="Save your changes">
177
- * <button>Save</button>
178
- * </SimpleTooltip>
179
- * ```
180
- */
181
- export function SimpleTooltip(props: SimpleTooltipProps): JSX.Element {
182
- const position = () => props.position ?? 'bottom'
183
-
184
- return (
185
- <div class={`vui-tooltip ${props.class ?? ''}`}>
186
- <div class="vui-tooltip__trigger">
187
- {props.children}
188
- </div>
189
- <div class={`vui-tooltip__content vui-tooltip__content--${position()}`}>
190
- <span>{props.label}</span>
191
- </div>
192
- </div>
193
- )
194
- }
195
-
196
- // Re-export types
197
- export type { TooltipRenderProps }