@infonomic/uikit 6.4.0 → 6.5.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 (29) hide show
  1. package/dist/components/inputs/@types/autocomplete.d.ts +35 -0
  2. package/dist/components/inputs/@types/autocomplete.d.ts.map +1 -0
  3. package/dist/components/inputs/@types/autocomplete.js +11 -0
  4. package/dist/components/inputs/autocomplete.d.ts +42 -0
  5. package/dist/components/inputs/autocomplete.d.ts.map +1 -0
  6. package/dist/components/inputs/autocomplete.js +87 -0
  7. package/dist/components/inputs/autocomplete.module.css +371 -0
  8. package/dist/components/inputs/autocomplete.module.js +36 -0
  9. package/dist/components/inputs/autocomplete_module.css +312 -0
  10. package/dist/components/inputs/calendar.js +2 -2
  11. package/dist/components/inputs/index.js +1 -0
  12. package/dist/components/notifications/@types/alert.js +1 -0
  13. package/dist/components/notifications/@types/toast.js +1 -0
  14. package/dist/components/pager/hooks/types/usePagination.js +1 -0
  15. package/dist/components/tooltip/tooltip_module.css +1 -1
  16. package/dist/icons/types/icon.js +1 -0
  17. package/dist/loaders/@types/index.js +1 -0
  18. package/dist/react.d.ts +1 -0
  19. package/dist/react.d.ts.map +1 -1
  20. package/dist/react.js +1 -0
  21. package/dist/utils/polymorphic.js +1 -0
  22. package/package.json +23 -19
  23. package/src/components/inputs/@types/autocomplete.ts +39 -0
  24. package/src/components/inputs/autocomplete.module.css +371 -0
  25. package/src/components/inputs/autocomplete.stories.tsx +184 -0
  26. package/src/components/inputs/autocomplete.tsx +173 -0
  27. package/src/components/inputs/index.tsx +1 -0
  28. package/src/react.ts +1 -0
  29. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,173 @@
1
+ 'use client'
2
+
3
+ import type React from 'react'
4
+
5
+ import { Autocomplete as AutocompletePrimitive } from '@base-ui/react/autocomplete'
6
+ import cx from 'classnames'
7
+
8
+ import styles from './autocomplete.module.css'
9
+ import { ErrorText } from './error-text.jsx'
10
+ import { HelpText } from './help-text.jsx'
11
+ import { Label } from './label.jsx'
12
+ import type { Intent, Size, Variant } from './@types/autocomplete.js'
13
+
14
+ type AutocompleteRootProps = React.ComponentProps<typeof AutocompletePrimitive.Root>
15
+
16
+ export interface AutocompleteProps<Item = string>
17
+ extends Omit<AutocompleteRootProps, 'items' | 'children'> {
18
+ id: string
19
+ label?: string
20
+ variant?: Variant
21
+ inputSize?: Size
22
+ intent?: Intent
23
+ required?: boolean
24
+ placeholder?: string
25
+ autoComplete?: string
26
+ error?: boolean
27
+ helpText?: string
28
+ errorText?: string
29
+ emptyText?: string
30
+ className?: string
31
+ inputClassName?: string
32
+ wrapperClassName?: string
33
+ items: Item[]
34
+ children: React.ComponentProps<typeof AutocompletePrimitive.List>['children']
35
+ sideOffset?: number
36
+ }
37
+
38
+ export function Autocomplete<Item = string>({
39
+ id,
40
+ label,
41
+ variant = 'outlined',
42
+ inputSize = 'md',
43
+ intent = 'primary',
44
+ required,
45
+ placeholder = '',
46
+ autoComplete = 'off',
47
+ error = false,
48
+ helpText = '',
49
+ errorText = '',
50
+ emptyText = 'No results found.',
51
+ className,
52
+ inputClassName,
53
+ wrapperClassName,
54
+ items,
55
+ children,
56
+ sideOffset = 4,
57
+ ...rest
58
+ }: AutocompleteProps<Item>) {
59
+ return (
60
+ <div className={cx('infonomic-autocomplete-wrapper', styles['autocomplete-wrapper'], wrapperClassName)}>
61
+ <AutocompletePrimitive.Root items={items} {...rest}>
62
+ {label != null && <Label id={id} htmlFor={id} required={required} label={label} />}
63
+ <AutocompletePrimitive.Input
64
+ id={id}
65
+ placeholder={placeholder}
66
+ autoComplete={autoComplete}
67
+ aria-labelledby={label ? `label-for-${id}` : undefined}
68
+ aria-invalid={error}
69
+ aria-required={required}
70
+ aria-errormessage={error ? errorText : undefined}
71
+ aria-describedby={error ? `error-for-${id}` : undefined}
72
+ className={cx(
73
+ 'infonomic-autocomplete-input',
74
+ `infonomic-autocomplete-input-${variant}`,
75
+ `infonomic-autocomplete-input-${inputSize}`,
76
+ `infonomic-autocomplete-input-${intent}`,
77
+ styles.input,
78
+ styles[variant],
79
+ styles[inputSize],
80
+ styles[intent],
81
+ { [styles.error]: error },
82
+ className,
83
+ inputClassName,
84
+ )}
85
+ />
86
+
87
+ <AutocompletePrimitive.Portal>
88
+ <AutocompletePrimitive.Positioner
89
+ className={cx('infonomic-autocomplete-positioner', styles.positioner)}
90
+ sideOffset={sideOffset}
91
+ >
92
+ <AutocompletePrimitive.Popup
93
+ className={cx(
94
+ 'infonomic-autocomplete-popup',
95
+ styles.popup,
96
+ inputSize != null && styles[`popup-${inputSize}`],
97
+ )}
98
+ >
99
+ <AutocompletePrimitive.Empty
100
+ className={cx('infonomic-autocomplete-empty', styles.empty)}
101
+ >
102
+ {emptyText}
103
+ </AutocompletePrimitive.Empty>
104
+ <AutocompletePrimitive.List
105
+ className={cx('infonomic-autocomplete-list', styles.list)}
106
+ >
107
+ {children}
108
+ </AutocompletePrimitive.List>
109
+ </AutocompletePrimitive.Popup>
110
+ </AutocompletePrimitive.Positioner>
111
+ </AutocompletePrimitive.Portal>
112
+ </AutocompletePrimitive.Root>
113
+ {error ? (
114
+ <ErrorText id={`error-for-${id}`} size={inputSize} text={errorText ?? helpText} />
115
+ ) : (
116
+ helpText?.length > 0 && <HelpText size={inputSize} text={helpText} />
117
+ )}
118
+ </div>
119
+ )
120
+ }
121
+
122
+ export const AutocompleteItem = ({
123
+ ref: forwardedRef,
124
+ children,
125
+ className,
126
+ ...props
127
+ }: React.ComponentProps<typeof AutocompletePrimitive.Item> & {
128
+ ref?: React.RefObject<HTMLDivElement>
129
+ }) => {
130
+ return (
131
+ <AutocompletePrimitive.Item
132
+ className={cx('infonomic-autocomplete-item', styles['autocomplete-item'], className)}
133
+ {...props}
134
+ ref={forwardedRef}
135
+ >
136
+ {children}
137
+ </AutocompletePrimitive.Item>
138
+ )
139
+ }
140
+
141
+ AutocompleteItem.displayName = 'AutocompleteItem'
142
+
143
+ export const AutocompleteGroup = AutocompletePrimitive.Group
144
+ export const AutocompleteGroupLabel = ({
145
+ children,
146
+ className,
147
+ ...props
148
+ }: React.ComponentProps<typeof AutocompletePrimitive.GroupLabel>) => {
149
+ return (
150
+ <AutocompletePrimitive.GroupLabel
151
+ className={cx('infonomic-autocomplete-group-label', styles['group-label'], className)}
152
+ {...props}
153
+ >
154
+ {children}
155
+ </AutocompletePrimitive.GroupLabel>
156
+ )
157
+ }
158
+
159
+ AutocompleteGroupLabel.displayName = 'AutocompleteGroupLabel'
160
+
161
+ export const AutocompleteSeparator = ({
162
+ className,
163
+ ...props
164
+ }: React.ComponentProps<typeof AutocompletePrimitive.Separator>) => {
165
+ return (
166
+ <AutocompletePrimitive.Separator
167
+ className={cx('infonomic-autocomplete-separator', styles.separator, className)}
168
+ {...props}
169
+ />
170
+ )
171
+ }
172
+
173
+ AutocompleteSeparator.displayName = 'AutocompleteSeparator'
@@ -1,3 +1,4 @@
1
+ export * from './autocomplete.jsx'
1
2
  export * from './checkbox.jsx'
2
3
  export * from './help-text.jsx'
3
4
  export * from './input.jsx'
package/src/react.ts CHANGED
@@ -22,6 +22,7 @@ export * from './components/chips/chip.js'
22
22
  export * from './components/container/container.js'
23
23
  export * from './components/dropdown/dropdown.js'
24
24
  export * from './components/hamburger/hamburger.js'
25
+ export * from './components/inputs/autocomplete.jsx'
25
26
  export * from './components/inputs/calendar.jsx'
26
27
  export * from './components/inputs/checkbox.jsx'
27
28
  export * from './components/inputs/checkbox-group.jsx'
@@ -1 +0,0 @@
1
- {"version":"5.9.3"}