paris 0.17.1 → 0.17.3
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/CHANGELOG.md +6 -0
- package/package.json +7 -4
- package/src/stories/select/Select.tsx +13 -5
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "paris",
|
|
3
3
|
"author": "Sanil Chawla <sanil@slingshot.fm> (https://sanil.co)",
|
|
4
4
|
"description": "Paris is Slingshot's React design system. It's a collection of reusable components, design tokens, and guidelines that help us build consistent, accessible, and performant user interfaces.",
|
|
5
|
-
"version": "0.17.
|
|
5
|
+
"version": "0.17.3",
|
|
6
6
|
"homepage": "https://paris.slingshot.fm",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"repository": {
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
"dependencies": {
|
|
65
65
|
"@ariakit/react": "^0.4.20",
|
|
66
66
|
"@emotion/is-prop-valid": "^1.4.0",
|
|
67
|
-
"@fortawesome/fontawesome-svg-core": "^6.
|
|
68
|
-
"@fortawesome/free-regular-svg-icons": "^6.
|
|
69
|
-
"@fortawesome/free-solid-svg-icons": "^6.
|
|
67
|
+
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
|
68
|
+
"@fortawesome/free-regular-svg-icons": "^6.7.2",
|
|
69
|
+
"@fortawesome/free-solid-svg-icons": "^6.7.2",
|
|
70
70
|
"@fortawesome/react-fontawesome": "^0.2.2",
|
|
71
71
|
"@headlessui/react": "^2.2.4",
|
|
72
72
|
"@radix-ui/react-checkbox": "^1.3.3",
|
|
@@ -81,6 +81,8 @@
|
|
|
81
81
|
"ts-deepmerge": "^6.0.3"
|
|
82
82
|
},
|
|
83
83
|
"peerDependencies": {
|
|
84
|
+
"@types/react": "^19",
|
|
85
|
+
"@types/react-dom": "^19",
|
|
84
86
|
"react": "^19.x",
|
|
85
87
|
"react-dom": "^19.x",
|
|
86
88
|
"sass": "^1.x",
|
|
@@ -144,6 +146,7 @@
|
|
|
144
146
|
"generate:theme": "pte export ./src/stories/theme/themes.ts LightTheme -o ./public/pte.css",
|
|
145
147
|
"generate:text": "ts-node --esm ./scripts/text.ts",
|
|
146
148
|
"release": "pnpm generate:exports && pnpm changeset publish",
|
|
149
|
+
"typecheck": "tsc --noEmit",
|
|
147
150
|
"lint": "eslint ."
|
|
148
151
|
}
|
|
149
152
|
}
|
|
@@ -151,6 +151,14 @@ export const Select = forwardRef(<T = Record<string, any>>({
|
|
|
151
151
|
}: SelectProps<T>, ref: ForwardedRef<any>) => {
|
|
152
152
|
const inputID = useId();
|
|
153
153
|
const multiItems = multipleItemsName || 'items';
|
|
154
|
+
|
|
155
|
+
// TypeScript can't track discriminated union correlation through destructuring and JSX conditionals.
|
|
156
|
+
// For Listbox: supports both single and multi via overloads, needs explicit union types
|
|
157
|
+
// For RadioGroup: only supports single-select, needs narrowed types
|
|
158
|
+
const listboxValue = value as string | string[] | null | undefined;
|
|
159
|
+
const listboxOnChange = onChange as ((value: string | string[] | null) => void) | undefined;
|
|
160
|
+
const singleValue = value as string | null | undefined;
|
|
161
|
+
const singleOnChange = onChange as ((value: string | null) => void) | undefined;
|
|
154
162
|
const buttonText = () => {
|
|
155
163
|
if (!value || value.length === 0) {
|
|
156
164
|
return placeholder || 'Select an option';
|
|
@@ -182,8 +190,8 @@ export const Select = forwardRef(<T = Record<string, any>>({
|
|
|
182
190
|
<Listbox
|
|
183
191
|
as="div"
|
|
184
192
|
ref={ref}
|
|
185
|
-
value={
|
|
186
|
-
onChange={
|
|
193
|
+
value={listboxValue}
|
|
194
|
+
onChange={listboxOnChange}
|
|
187
195
|
multiple={multiple}
|
|
188
196
|
>
|
|
189
197
|
<ListboxButton
|
|
@@ -273,7 +281,7 @@ export const Select = forwardRef(<T = Record<string, any>>({
|
|
|
273
281
|
</Listbox>
|
|
274
282
|
)}
|
|
275
283
|
{kind === 'radio' && (
|
|
276
|
-
<RadioGroup ref={ref} as="div" className={styles.radioContainer} value={
|
|
284
|
+
<RadioGroup ref={ref} as="div" className={styles.radioContainer} value={singleValue} onChange={singleOnChange}>
|
|
277
285
|
{options.map((option) => (
|
|
278
286
|
<Radio
|
|
279
287
|
as="div"
|
|
@@ -294,7 +302,7 @@ export const Select = forwardRef(<T = Record<string, any>>({
|
|
|
294
302
|
</RadioGroup>
|
|
295
303
|
)}
|
|
296
304
|
{kind === 'card' && (
|
|
297
|
-
<RadioGroup ref={ref} as="div" className={styles.cardContainer} value={
|
|
305
|
+
<RadioGroup ref={ref} as="div" className={styles.cardContainer} value={singleValue} onChange={singleOnChange}>
|
|
298
306
|
{options.map((option) => (
|
|
299
307
|
<Radio
|
|
300
308
|
as="div"
|
|
@@ -316,7 +324,7 @@ export const Select = forwardRef(<T = Record<string, any>>({
|
|
|
316
324
|
</RadioGroup>
|
|
317
325
|
)}
|
|
318
326
|
{kind === 'segmented' && (
|
|
319
|
-
<RadioGroup ref={ref} as="div" className={styles.segmentedContainer} value={
|
|
327
|
+
<RadioGroup ref={ref} as="div" className={styles.segmentedContainer} value={singleValue || options[0].id} onChange={singleOnChange}>
|
|
320
328
|
{options.map((option) => (
|
|
321
329
|
<Radio
|
|
322
330
|
as="div"
|