panelui-native 0.46.0 → 0.49.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/README.md +5 -1
- package/lib/module/components/accordion/index.js +32 -4
- package/lib/module/components/accordion/index.js.map +1 -1
- package/lib/module/components/button/index.js +83 -15
- package/lib/module/components/button/index.js.map +1 -1
- package/lib/module/components/button-group/index.js +186 -0
- package/lib/module/components/button-group/index.js.map +1 -0
- package/lib/module/components/color-picker/index.js +110 -1
- package/lib/module/components/color-picker/index.js.map +1 -1
- package/lib/module/components/date-time-picker/index.js +23 -5
- package/lib/module/components/date-time-picker/index.js.map +1 -1
- package/lib/module/components/fab/index.js +514 -0
- package/lib/module/components/fab/index.js.map +1 -0
- package/lib/module/components/markdown-editor/index.js +406 -0
- package/lib/module/components/markdown-editor/index.js.map +1 -0
- package/lib/module/components/markdown-editor/markdown-transforms.js +243 -0
- package/lib/module/components/markdown-editor/markdown-transforms.js.map +1 -0
- package/lib/module/components/questionnaire/index.js +1312 -0
- package/lib/module/components/questionnaire/index.js.map +1 -0
- package/lib/module/components/tabs/index.js +94 -18
- package/lib/module/components/tabs/index.js.map +1 -1
- package/lib/module/components/time-picker/index.js +34 -6
- package/lib/module/components/time-picker/index.js.map +1 -1
- package/lib/module/components/tree/index.js +500 -0
- package/lib/module/components/tree/index.js.map +1 -0
- package/lib/module/icons/index.js +217 -0
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/index.js +6 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/components/accordion/index.d.ts +21 -0
- package/lib/typescript/src/components/accordion/index.d.ts.map +1 -1
- package/lib/typescript/src/components/button/index.d.ts +21 -0
- package/lib/typescript/src/components/button/index.d.ts.map +1 -1
- package/lib/typescript/src/components/button-group/index.d.ts +212 -0
- package/lib/typescript/src/components/button-group/index.d.ts.map +1 -0
- package/lib/typescript/src/components/color-picker/index.d.ts +82 -1
- package/lib/typescript/src/components/color-picker/index.d.ts.map +1 -1
- package/lib/typescript/src/components/date-time-picker/index.d.ts +7 -1
- package/lib/typescript/src/components/date-time-picker/index.d.ts.map +1 -1
- package/lib/typescript/src/components/fab/index.d.ts +285 -0
- package/lib/typescript/src/components/fab/index.d.ts.map +1 -0
- package/lib/typescript/src/components/markdown-editor/index.d.ts +102 -0
- package/lib/typescript/src/components/markdown-editor/index.d.ts.map +1 -0
- package/lib/typescript/src/components/markdown-editor/markdown-transforms.d.ts +76 -0
- package/lib/typescript/src/components/markdown-editor/markdown-transforms.d.ts.map +1 -0
- package/lib/typescript/src/components/questionnaire/index.d.ts +336 -0
- package/lib/typescript/src/components/questionnaire/index.d.ts.map +1 -0
- package/lib/typescript/src/components/tabs/index.d.ts +9 -0
- package/lib/typescript/src/components/tabs/index.d.ts.map +1 -1
- package/lib/typescript/src/components/time-picker/index.d.ts +19 -1
- package/lib/typescript/src/components/time-picker/index.d.ts.map +1 -1
- package/lib/typescript/src/components/tree/index.d.ts +125 -0
- package/lib/typescript/src/components/tree/index.d.ts.map +1 -0
- package/lib/typescript/src/icons/index.d.ts +22 -0
- package/lib/typescript/src/icons/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +8 -3
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/accordion/index.tsx +48 -6
- package/src/components/button/index.tsx +97 -15
- package/src/components/button-group/index.tsx +199 -0
- package/src/components/color-picker/index.tsx +140 -3
- package/src/components/date-time-picker/index.tsx +39 -3
- package/src/components/fab/index.tsx +583 -0
- package/src/components/markdown-editor/index.tsx +526 -0
- package/src/components/markdown-editor/markdown-transforms.ts +228 -0
- package/src/components/questionnaire/index.tsx +1615 -0
- package/src/components/tabs/index.tsx +100 -28
- package/src/components/time-picker/index.tsx +42 -6
- package/src/components/tree/index.tsx +564 -0
- package/src/icons/index.tsx +154 -0
- package/src/index.ts +77 -1
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# PanelUI — React Native UI components for Expo, styled with Tailwind CSS
|
|
2
2
|
|
|
3
3
|
**PanelUI** (`panelui-native`) is an accessible, high-performance React Native component
|
|
4
|
-
library for Expo apps.
|
|
4
|
+
library for Expo apps. 92 typed components — buttons, bottom sheets, dialogs, selects,
|
|
5
5
|
toasts, forms — styled with Tailwind CSS v4 and animated on the UI thread with Reanimated.
|
|
6
6
|
Zero native code, so it runs in Expo Go.
|
|
7
7
|
|
|
@@ -175,6 +175,7 @@ you are done. Unstyled text on a white screen means the styles are not reaching
|
|
|
175
175
|
| `BottomSheet` | Draggable sheet anchored to the bottom of the screen |
|
|
176
176
|
| `Breadcrumb` | The trail of links back up the hierarchy to the current page |
|
|
177
177
|
| `Button` | Pressable action with variants, sizes, loading state and icon slots |
|
|
178
|
+
| `ButtonGroup` | Several buttons drawn as one control |
|
|
178
179
|
| `Calendar` | A month of days, for picking one, several, or a range |
|
|
179
180
|
| `Card` | Content surface with header, body and footer |
|
|
180
181
|
| `Carousel` | A run of slides, one at a time, dragged with a finger |
|
|
@@ -188,6 +189,7 @@ you are done. Unstyled text on a white screen means the styles are not reaching
|
|
|
188
189
|
| `Direction` | Reading direction for everything below it |
|
|
189
190
|
| `Drawer` | Panel that slides in from an edge of the screen |
|
|
190
191
|
| `EmptyState` | Placeholder for a list or screen with no content |
|
|
192
|
+
| `Fab` | The floating action button, and the dial behind it |
|
|
191
193
|
| `Field` | Layout and validation-state kit a form control composes into |
|
|
192
194
|
| `Flow` | Pan-and-zoom canvas of draggable nodes joined by animated edges |
|
|
193
195
|
| `Form` | Form state — values, validation and submission — with no form library underneath |
|
|
@@ -200,6 +202,7 @@ you are done. Unstyled text on a white screen means the styles are not reaching
|
|
|
200
202
|
| `LineChart` | Animated time series, drawn on the UI thread |
|
|
201
203
|
| `Loader` | Nine loading animations behind one variant prop |
|
|
202
204
|
| `Map` | Vector map whose basemap is drawn from your theme tokens |
|
|
205
|
+
| `MarkdownEditor` | A field for writing markdown, with a toolbar and a preview |
|
|
203
206
|
| `Marker` | Inline note between conversation turns |
|
|
204
207
|
| `Menu` | The list of things you can do to something |
|
|
205
208
|
| `Message` | Chat turn with avatar, bubble, header and footer |
|
|
@@ -246,6 +249,7 @@ you are done. Unstyled text on a white screen means the styles are not reaching
|
|
|
246
249
|
| `Toast` | Transient notification queue with swipe to dismiss |
|
|
247
250
|
| `ToggleButton` | A button that stays down, on its own or in a group |
|
|
248
251
|
| `Tooltip` | A small label that names the control under your finger |
|
|
252
|
+
| `Tree` | A hierarchy you can open a level at a time |
|
|
249
253
|
| `Typography` | Semantic text presets |
|
|
250
254
|
|
|
251
255
|
Plus `PanelUIProvider`, `Portal`, `AnimatedPressable`, `KeyboardAvoider`, `ScrollProgress`,
|
|
@@ -11,6 +11,14 @@
|
|
|
11
11
|
* `selectionMode` decides whether opening one section closes the others, which
|
|
12
12
|
* also changes the shape of `value`: a string when single, an array when
|
|
13
13
|
* multiple.
|
|
14
|
+
*
|
|
15
|
+
* A closed section costs nothing, because its body is unmounted. That is the
|
|
16
|
+
* right default and the wrong one for a body with state in it: a half-filled
|
|
17
|
+
* form, a list scrolled to the middle, a video part-way through. Collapsing
|
|
18
|
+
* such a section throws that away and reopening it starts over. `keepMounted`
|
|
19
|
+
* is the way out — the body stays mounted and is hidden from layout instead,
|
|
20
|
+
* so it takes up no room, the same layout transition carries the change, and
|
|
21
|
+
* everything inside is exactly where it was left.
|
|
14
22
|
*/
|
|
15
23
|
import { Children, createContext, forwardRef, isValidElement, useCallback, useContext, useMemo, useState } from 'react';
|
|
16
24
|
import { Pressable, View } from 'react-native';
|
|
@@ -87,6 +95,7 @@ const AccordionRoot = /*#__PURE__*/forwardRef(({
|
|
|
87
95
|
defaultValue,
|
|
88
96
|
onValueChange,
|
|
89
97
|
hideSeparator = false,
|
|
98
|
+
keepMounted = false,
|
|
90
99
|
children,
|
|
91
100
|
...props
|
|
92
101
|
}, ref) => {
|
|
@@ -103,8 +112,9 @@ const AccordionRoot = /*#__PURE__*/forwardRef(({
|
|
|
103
112
|
const context = useMemo(() => ({
|
|
104
113
|
expanded,
|
|
105
114
|
toggle,
|
|
106
|
-
variant
|
|
107
|
-
|
|
115
|
+
variant,
|
|
116
|
+
keepMounted
|
|
117
|
+
}), [expanded, toggle, variant, keepMounted]);
|
|
108
118
|
const {
|
|
109
119
|
root,
|
|
110
120
|
separator
|
|
@@ -251,14 +261,25 @@ AccordionIndicator.displayName = 'Accordion.Indicator';
|
|
|
251
261
|
* The collapsible body. Unmounts when closed, per the repo's convention for
|
|
252
262
|
* conditionally shown content — the layout transition on the item animates
|
|
253
263
|
* the height change.
|
|
264
|
+
*
|
|
265
|
+
* `keepMounted` swaps the unmount for `display: 'none'`, which is the one way
|
|
266
|
+
* to hide a view that also takes it out of Yoga's layout. That matters twice
|
|
267
|
+
* over: the item's height changes by exactly as much as it would have on an
|
|
268
|
+
* unmount, so the same layout transition plays and the two modes are
|
|
269
|
+
* indistinguishable to look at — and everything inside stays mounted, so a
|
|
270
|
+
* text field keeps what was typed into it. A hidden subtree is still in the
|
|
271
|
+
* accessibility tree, though, so it is explicitly taken out of that too;
|
|
272
|
+
* otherwise a screen reader would read out a section the eye cannot see.
|
|
254
273
|
*/
|
|
255
274
|
const AccordionContent = /*#__PURE__*/forwardRef(({
|
|
256
275
|
className,
|
|
276
|
+
keepMounted,
|
|
257
277
|
children,
|
|
258
278
|
...props
|
|
259
279
|
}, ref) => {
|
|
260
280
|
const {
|
|
261
|
-
variant
|
|
281
|
+
variant,
|
|
282
|
+
keepMounted: keepMountedDefault
|
|
262
283
|
} = useAccordion('Accordion.Content');
|
|
263
284
|
const {
|
|
264
285
|
isExpanded
|
|
@@ -269,9 +290,16 @@ const AccordionContent = /*#__PURE__*/forwardRef(({
|
|
|
269
290
|
} = accordionVariants({
|
|
270
291
|
variant
|
|
271
292
|
});
|
|
272
|
-
|
|
293
|
+
const stayMounted = keepMounted ?? keepMountedDefault;
|
|
294
|
+
if (!isExpanded && !stayMounted) return null;
|
|
295
|
+
const isHidden = !isExpanded;
|
|
273
296
|
return /*#__PURE__*/_jsx(View, {
|
|
274
297
|
ref: ref,
|
|
298
|
+
style: isHidden ? {
|
|
299
|
+
display: 'none'
|
|
300
|
+
} : undefined,
|
|
301
|
+
accessibilityElementsHidden: isHidden,
|
|
302
|
+
importantForAccessibility: isHidden ? 'no-hide-descendants' : 'auto',
|
|
275
303
|
className: content({
|
|
276
304
|
className
|
|
277
305
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Children","createContext","forwardRef","isValidElement","useCallback","useContext","useMemo","useState","Pressable","View","Animated","LinearTransition","useAnimatedStyle","useDerivedValue","withTiming","tv","ChevronDownIcon","Text","textChildren","jsx","_jsx","jsxs","_jsxs","accordionVariants","slots","root","separator","item","trigger","title","indicator","content","contentText","variants","variant","default","surface","separated","bordered","ghost","defaultVariants","AccordionContext","AccordionItemContext","useAccordion","component","context","Error","useAccordionItem","toArray","value","undefined","Array","isArray","AccordionRoot","className","selectionMode","defaultValue","onValueChange","hideSeparator","children","props","ref","internal","setInternal","isControlled","expanded","toggle","itemValue","isOpen","includes","next","filter","entry","items","Provider","layout","duration","map","child","index","length","key","displayName","AccordionItem","isDisabled","isExpanded","AccordionTrigger","accessibilityRole","accessibilityState","disabled","onPress","text","AccordionIndicator","rotation","style","transform","rotate","size","AccordionContent","AccordionTitle","Accordion","Object","assign","Item","Trigger","Title","Indicator","Content"],"sourceRoot":"../../../../src","sources":["components/accordion/index.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SACEA,QAAQ,EACRC,aAAa,EACbC,UAAU,EACVC,cAAc,EACdC,WAAW,EACXC,UAAU,EACVC,OAAO,EACPC,QAAQ,QAEH,OAAO;AACd,SAASC,SAAS,EAAEC,IAAI,QAA6C,cAAc;AACnF,OAAOC,QAAQ,IACbC,gBAAgB,EAChBC,gBAAgB,EAChBC,eAAe,EACfC,UAAU,QACL,yBAAyB;AAChC,SAASC,EAAE,QAAQ,mBAAmB;AACtC,SAASC,eAAe,QAAQ,sBAAa;AAC7C,SAASC,IAAI,EAAkBC,YAAY,QAAQ,0BAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAW3E,MAAMC,iBAAiB,GAAGR,EAAE,CAAC;EAC3BS,KAAK,EAAE;IACLC,IAAI,EAAE,iCAAiC;IACvCC,SAAS,EAAE,gBAAgB;IAC3BC,IAAI,EAAE,0BAA0B;IAChCC,OAAO,EAAE,kDAAkD;IAC3DC,KAAK,EAAE,8CAA8C;IACrDC,SAAS,EAAE,6BAA6B;IACxCC,OAAO,EAAE,MAAM;IACfC,WAAW,EAAE;EACf,CAAC;EACDC,QAAQ,EAAE;IACRC,OAAO,EAAE;MACPC,OAAO,EAAE;QAAEP,OAAO,EAAE,MAAM;QAAEG,OAAO,EAAE;MAAO,CAAC;MAC7CK,OAAO,EAAE;QACPX,IAAI,EAAE,6CAA6C;QACnDC,SAAS,EAAE,MAAM;QACjBE,OAAO,EAAE,MAAM;QACfG,OAAO,EAAE;MACX,CAAC;MACDM,SAAS,EAAE;QACTZ,IAAI,EAAE,0BAA0B;QAChCC,SAAS,EAAE,QAAQ;QACnBC,IAAI,EAAE,yCAAyC;QAC/CC,OAAO,EAAE,MAAM;QACfG,OAAO,EAAE;MACX,CAAC;MACDO,QAAQ,EAAE;QACRZ,SAAS,EAAE,QAAQ;QACnBC,IAAI,EAAE,sCAAsC;QAC5CC,OAAO,EAAE,MAAM;QACfG,OAAO,EAAE;MACX,CAAC;MACDQ,KAAK,EAAE;QACLb,SAAS,EAAE,QAAQ;QACnBE,OAAO,EAAE,MAAM;QACfG,OAAO,EAAE;MACX;IACF;EACF,CAAC;EACDS,eAAe,EAAE;IACfN,OAAO,EAAE;EACX;AACF,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["Children","createContext","forwardRef","isValidElement","useCallback","useContext","useMemo","useState","Pressable","View","Animated","LinearTransition","useAnimatedStyle","useDerivedValue","withTiming","tv","ChevronDownIcon","Text","textChildren","jsx","_jsx","jsxs","_jsxs","accordionVariants","slots","root","separator","item","trigger","title","indicator","content","contentText","variants","variant","default","surface","separated","bordered","ghost","defaultVariants","AccordionContext","AccordionItemContext","useAccordion","component","context","Error","useAccordionItem","toArray","value","undefined","Array","isArray","AccordionRoot","className","selectionMode","defaultValue","onValueChange","hideSeparator","keepMounted","children","props","ref","internal","setInternal","isControlled","expanded","toggle","itemValue","isOpen","includes","next","filter","entry","items","Provider","layout","duration","map","child","index","length","key","displayName","AccordionItem","isDisabled","isExpanded","AccordionTrigger","accessibilityRole","accessibilityState","disabled","onPress","text","AccordionIndicator","rotation","style","transform","rotate","size","AccordionContent","keepMountedDefault","stayMounted","isHidden","display","accessibilityElementsHidden","importantForAccessibility","AccordionTitle","Accordion","Object","assign","Item","Trigger","Title","Indicator","Content"],"sourceRoot":"../../../../src","sources":["components/accordion/index.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SACEA,QAAQ,EACRC,aAAa,EACbC,UAAU,EACVC,cAAc,EACdC,WAAW,EACXC,UAAU,EACVC,OAAO,EACPC,QAAQ,QAEH,OAAO;AACd,SAASC,SAAS,EAAEC,IAAI,QAA6C,cAAc;AACnF,OAAOC,QAAQ,IACbC,gBAAgB,EAChBC,gBAAgB,EAChBC,eAAe,EACfC,UAAU,QACL,yBAAyB;AAChC,SAASC,EAAE,QAAQ,mBAAmB;AACtC,SAASC,eAAe,QAAQ,sBAAa;AAC7C,SAASC,IAAI,EAAkBC,YAAY,QAAQ,0BAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAW3E,MAAMC,iBAAiB,GAAGR,EAAE,CAAC;EAC3BS,KAAK,EAAE;IACLC,IAAI,EAAE,iCAAiC;IACvCC,SAAS,EAAE,gBAAgB;IAC3BC,IAAI,EAAE,0BAA0B;IAChCC,OAAO,EAAE,kDAAkD;IAC3DC,KAAK,EAAE,8CAA8C;IACrDC,SAAS,EAAE,6BAA6B;IACxCC,OAAO,EAAE,MAAM;IACfC,WAAW,EAAE;EACf,CAAC;EACDC,QAAQ,EAAE;IACRC,OAAO,EAAE;MACPC,OAAO,EAAE;QAAEP,OAAO,EAAE,MAAM;QAAEG,OAAO,EAAE;MAAO,CAAC;MAC7CK,OAAO,EAAE;QACPX,IAAI,EAAE,6CAA6C;QACnDC,SAAS,EAAE,MAAM;QACjBE,OAAO,EAAE,MAAM;QACfG,OAAO,EAAE;MACX,CAAC;MACDM,SAAS,EAAE;QACTZ,IAAI,EAAE,0BAA0B;QAChCC,SAAS,EAAE,QAAQ;QACnBC,IAAI,EAAE,yCAAyC;QAC/CC,OAAO,EAAE,MAAM;QACfG,OAAO,EAAE;MACX,CAAC;MACDO,QAAQ,EAAE;QACRZ,SAAS,EAAE,QAAQ;QACnBC,IAAI,EAAE,sCAAsC;QAC5CC,OAAO,EAAE,MAAM;QACfG,OAAO,EAAE;MACX,CAAC;MACDQ,KAAK,EAAE;QACLb,SAAS,EAAE,QAAQ;QACnBE,OAAO,EAAE,MAAM;QACfG,OAAO,EAAE;MACX;IACF;EACF,CAAC;EACDS,eAAe,EAAE;IACfN,OAAO,EAAE;EACX;AACF,CAAC,CAAC;AAeF,MAAMO,gBAAgB,gBAAGxC,aAAa,CAA+B,IAAI,CAAC;AAC1E,MAAMyC,oBAAoB,gBAAGzC,aAAa,CAAmC,IAAI,CAAC;AAElF,SAAS0C,YAAYA,CAACC,SAAiB,EAAyB;EAC9D,MAAMC,OAAO,GAAGxC,UAAU,CAACoC,gBAAgB,CAAC;EAC5C,IAAI,CAACI,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,GAAGF,SAAS,qCAAqC,CAAC;EAChF,OAAOC,OAAO;AAChB;AAEA,SAASE,gBAAgBA,CAACH,SAAiB,EAA6B;EACtE,MAAMC,OAAO,GAAGxC,UAAU,CAACqC,oBAAoB,CAAC;EAChD,IAAI,CAACG,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,GAAGF,SAAS,0CAA0C,CAAC;EACrF,OAAOC,OAAO;AAChB;AAuBA,MAAMG,OAAO,GAAIC,KAAoC,IACnDA,KAAK,KAAKC,SAAS,GAAG,EAAE,GAAGC,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,GAAGA,KAAK,GAAG,CAACA,KAAK,CAAC;AAEnE,MAAMI,aAAa,gBAAGnD,UAAU,CAC9B,CACE;EACEoD,SAAS;EACTpB,OAAO,GAAG,SAAS;EACnBqB,aAAa,GAAG,QAAQ;EACxBN,KAAK;EACLO,YAAY;EACZC,aAAa;EACbC,aAAa,GAAG,KAAK;EACrBC,WAAW,GAAG,KAAK;EACnBC,QAAQ;EACR,GAAGC;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGzD,QAAQ,CAAW,MAAMyC,OAAO,CAACQ,YAAY,CAAC,CAAC;EAC/E,MAAMS,YAAY,GAAGhB,KAAK,KAAKC,SAAS;EACxC,MAAMgB,QAAQ,GAAGD,YAAY,GAAGjB,OAAO,CAACC,KAAK,CAAC,GAAGc,QAAQ;EAEzD,MAAMI,MAAM,GAAG/D,WAAW,CACvBgE,SAAiB,IAAK;IACrB,MAAMC,MAAM,GAAGH,QAAQ,CAACI,QAAQ,CAACF,SAAS,CAAC;IAC3C,MAAMG,IAAI,GACRhB,aAAa,KAAK,QAAQ,GACtBc,MAAM,GACJ,EAAE,GACF,CAACD,SAAS,CAAC,GACbC,MAAM,GACJH,QAAQ,CAACM,MAAM,CAAEC,KAAK,IAAKA,KAAK,KAAKL,SAAS,CAAC,GAC/C,CAAC,GAAGF,QAAQ,EAAEE,SAAS,CAAC;IAEhC,IAAI,CAACH,YAAY,EAAED,WAAW,CAACO,IAAI,CAAC;IACpC;IACAd,aAAa,GAAGF,aAAa,KAAK,QAAQ,GAAIgB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GAAIA,IAAI,CAAC;EACtE,CAAC,EACD,CAACL,QAAQ,EAAEX,aAAa,EAAEU,YAAY,EAAER,aAAa,CACvD,CAAC;EAED,MAAMZ,OAAO,GAAGvC,OAAO,CACrB,OAAO;IAAE4D,QAAQ;IAAEC,MAAM;IAAEjC,OAAO;IAAEyB;EAAY,CAAC,CAAC,EAClD,CAACO,QAAQ,EAAEC,MAAM,EAAEjC,OAAO,EAAEyB,WAAW,CACzC,CAAC;EAED,MAAM;IAAElC,IAAI;IAAEC;EAAU,CAAC,GAAGH,iBAAiB,CAAC;IAAEW;EAAQ,CAAC,CAAC;EAC1D,MAAMwC,KAAK,GAAG1E,QAAQ,CAACgD,OAAO,CAACY,QAAQ,CAAC,CAACY,MAAM,CAACrE,cAAc,CAAC;EAE/D,oBACEiB,IAAA,CAACqB,gBAAgB,CAACkC,QAAQ;IAAC1B,KAAK,EAAEJ,OAAQ;IAAAe,QAAA,eACxCxC,IAAA,CAACV,QAAQ,CAACD,IAAI;MACZqD,GAAG,EAAEA,GAAI;MACTc,MAAM,EAAEjE,gBAAgB,CAACkE,QAAQ,CAAC,GAAG,CAAE;MACvCvB,SAAS,EAAE7B,IAAI,CAAC;QAAE6B;MAAU,CAAC,CAAE;MAAA,GAC3BO,KAAK;MAAAD,QAAA,EAERc,KAAK,CAACI,GAAG,CAAC,CAACC,KAAK,EAAEC,KAAK,kBACtB1D,KAAA,CAACb,IAAI;QAAAmD,QAAA,GACFmB,KAAK,EACL,CAACrB,aAAa,IAAIsB,KAAK,GAAGN,KAAK,CAACO,MAAM,GAAG,CAAC,gBACzC7D,IAAA,CAACX,IAAI;UAAC6C,SAAS,EAAE5B,SAAS,CAAC;QAAE,CAAE,CAAC,GAC9B,IAAI;MAAA,GAJCqD,KAAK,CAACG,GAAG,IAAIF,KAKlB,CACP;IAAC,CACW;EAAC,CACS,CAAC;AAEhC,CACF,CAAC;AACD3B,aAAa,CAAC8B,WAAW,GAAG,WAAW;AAUvC,MAAMC,aAAa,gBAAGlF,UAAU,CAC9B,CAAC;EAAEoD,SAAS;EAAEL,KAAK;EAAEoC,UAAU,GAAG,KAAK;EAAEzB,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EACrE,MAAM;IAAEI,QAAQ;IAAEhC;EAAQ,CAAC,GAAGS,YAAY,CAAC,gBAAgB,CAAC;EAC5D,MAAM2C,UAAU,GAAGpB,QAAQ,CAACI,QAAQ,CAACrB,KAAK,CAAC;EAC3C,MAAM;IAAEtB;EAAK,CAAC,GAAGJ,iBAAiB,CAAC;IAAEW;EAAQ,CAAC,CAAC;EAE/C,MAAMW,OAAO,GAAGvC,OAAO,CACrB,OAAO;IAAE2C,KAAK;IAAEqC,UAAU;IAAED;EAAW,CAAC,CAAC,EACzC,CAACpC,KAAK,EAAEqC,UAAU,EAAED,UAAU,CAChC,CAAC;EAED,oBACEjE,IAAA,CAACsB,oBAAoB,CAACiC,QAAQ;IAAC1B,KAAK,EAAEJ,OAAQ;IAAAe,QAAA,eAC5CxC,IAAA,CAACV,QAAQ,CAACD,IAAI;MACZqD,GAAG,EAAEA,GAAI;MACTc,MAAM,EAAEjE,gBAAgB,CAACkE,QAAQ,CAAC,GAAG,CAAE;MACvCvB,SAAS,EAAE3B,IAAI,CAAC;QAAE2B;MAAU,CAAC,CAAE;MAAA,GAC3BO,KAAK;MAAAD,QAAA,EAER1C,YAAY,CAAC0C,QAAQ;IAAC,CACV;EAAC,CACa,CAAC;AAEpC,CACF,CAAC;AACDwB,aAAa,CAACD,WAAW,GAAG,gBAAgB;AAO5C;AACA,MAAMI,gBAAgB,gBAAGrF,UAAU,CACjC,CAAC;EAAEoD,SAAS;EAAEM,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EAC1C,MAAM;IAAEK,MAAM;IAAEjC;EAAQ,CAAC,GAAGS,YAAY,CAAC,mBAAmB,CAAC;EAC7D,MAAM;IAAEM,KAAK;IAAEqC,UAAU;IAAED;EAAW,CAAC,GAAGtC,gBAAgB,CAAC,mBAAmB,CAAC;EAC/E,MAAM;IAAEnB,OAAO;IAAEC;EAAM,CAAC,GAAGN,iBAAiB,CAAC;IAAEW;EAAQ,CAAC,CAAC;EAEzD,oBACEd,IAAA,CAACZ,SAAS;IACRsD,GAAG,EAAEA,GAAI;IACT0B,iBAAiB,EAAC,QAAQ;IAC1BC,kBAAkB,EAAE;MAAEvB,QAAQ,EAAEoB,UAAU;MAAEI,QAAQ,EAAEL;IAAW,CAAE;IACnEK,QAAQ,EAAEL,UAAW;IACrBM,OAAO,EAAEA,CAAA,KAAMxB,MAAM,CAAClB,KAAK,CAAE;IAC7BK,SAAS,EAAE1B,OAAO,CAAC;MAAE0B;IAAU,CAAC,CAAE;IAAA,GAC9BO,KAAK;IAAAD,QAAA,EAER1C,YAAY,CAAC0C,QAAQ,EAAGgC,IAAI,iBAC3BxE,IAAA,CAACH,IAAI;MAACqC,SAAS,EAAEzB,KAAK,CAAC,CAAE;MAAA+B,QAAA,EAAEgC;IAAI,CAAO,CACvC;EAAC,CACO,CAAC;AAEhB,CACF,CAAC;AACDL,gBAAgB,CAACJ,WAAW,GAAG,mBAAmB;AAQlD;AACA,MAAMU,kBAAkB,gBAAG3F,UAAU,CACnC,CAAC;EAAEoD,SAAS;EAAEM,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EAC1C,MAAM;IAAE5B;EAAQ,CAAC,GAAGS,YAAY,CAAC,qBAAqB,CAAC;EACvD,MAAM;IAAE2C;EAAW,CAAC,GAAGvC,gBAAgB,CAAC,qBAAqB,CAAC;EAC9D,MAAM;IAAEjB;EAAU,CAAC,GAAGP,iBAAiB,CAAC;IAAEW;EAAQ,CAAC,CAAC;EAEpD,MAAM4D,QAAQ,GAAGjF,eAAe,CAC9B,MAAMC,UAAU,CAACwE,UAAU,GAAG,GAAG,GAAG,CAAC,EAAE;IAAET,QAAQ,EAAE;EAAI,CAAC,CAAC,EACzD,CAACS,UAAU,CACb,CAAC;EACD,MAAMS,KAAK,GAAGnF,gBAAgB,CAAC,OAAO;IACpCoF,SAAS,EAAE,CAAC;MAAEC,MAAM,EAAE,GAAGH,QAAQ,CAAC7C,KAAK;IAAM,CAAC;EAChD,CAAC,CAAC,CAAC;EAEH,oBACE7B,IAAA,CAACV,QAAQ,CAACD,IAAI;IAACsF,KAAK,EAAEA,KAAM;IAAAnC,QAAA,eAC1BxC,IAAA,CAACX,IAAI;MAACqD,GAAG,EAAEA,GAAI;MAACR,SAAS,EAAExB,SAAS,CAAC;QAAEwB;MAAU,CAAC,CAAE;MAAA,GAAKO,KAAK;MAAAD,QAAA,EAC3DA,QAAQ,iBAAIxC,IAAA,CAACJ,eAAe;QAACkF,IAAI,EAAE;MAAG,CAAE;IAAC,CACtC;EAAC,CACM,CAAC;AAEpB,CACF,CAAC;AACDL,kBAAkB,CAACV,WAAW,GAAG,qBAAqB;AAatD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMgB,gBAAgB,gBAAGjG,UAAU,CACjC,CAAC;EAAEoD,SAAS;EAAEK,WAAW;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EACvD,MAAM;IAAE5B,OAAO;IAAEyB,WAAW,EAAEyC;EAAmB,CAAC,GAAGzD,YAAY,CAAC,mBAAmB,CAAC;EACtF,MAAM;IAAE2C;EAAW,CAAC,GAAGvC,gBAAgB,CAAC,mBAAmB,CAAC;EAC5D,MAAM;IAAEhB,OAAO;IAAEC;EAAY,CAAC,GAAGT,iBAAiB,CAAC;IAAEW;EAAQ,CAAC,CAAC;EAE/D,MAAMmE,WAAW,GAAG1C,WAAW,IAAIyC,kBAAkB;EACrD,IAAI,CAACd,UAAU,IAAI,CAACe,WAAW,EAAE,OAAO,IAAI;EAE5C,MAAMC,QAAQ,GAAG,CAAChB,UAAU;EAE5B,oBACElE,IAAA,CAACX,IAAI;IACHqD,GAAG,EAAEA,GAAI;IACTiC,KAAK,EAAEO,QAAQ,GAAG;MAAEC,OAAO,EAAE;IAAO,CAAC,GAAGrD,SAAU;IAClDsD,2BAA2B,EAAEF,QAAS;IACtCG,yBAAyB,EAAEH,QAAQ,GAAG,qBAAqB,GAAG,MAAO;IACrEhD,SAAS,EAAEvB,OAAO,CAAC;MAAEuB;IAAU,CAAC,CAAE;IAAA,GAC9BO,KAAK;IAAAD,QAAA,EAER1C,YAAY,CAAC0C,QAAQ,EAAGgC,IAAI,iBAC3BxE,IAAA,CAACH,IAAI;MAACqC,SAAS,EAAEtB,WAAW,CAAC,CAAE;MAAA4B,QAAA,EAAEgC;IAAI,CAAO,CAC7C;EAAC,CACE,CAAC;AAEX,CACF,CAAC;AACDO,gBAAgB,CAAChB,WAAW,GAAG,mBAAmB;AAElD,MAAMuB,cAAc,gBAAGxG,UAAU,CAAoB,CAAC;EAAEoD,SAAS;EAAE,GAAGO;AAAM,CAAC,EAAEC,GAAG,KAAK;EACrF,MAAM;IAAE5B;EAAQ,CAAC,GAAGS,YAAY,CAAC,iBAAiB,CAAC;EACnD,MAAM;IAAEd;EAAM,CAAC,GAAGN,iBAAiB,CAAC;IAAEW;EAAQ,CAAC,CAAC;EAChD,oBAAOd,IAAA,CAACH,IAAI;IAAC6C,GAAG,EAAEA,GAAI;IAACR,SAAS,EAAEzB,KAAK,CAAC;MAAEyB;IAAU,CAAC,CAAE;IAAA,GAAKO;EAAK,CAAG,CAAC;AACvE,CAAC,CAAC;AACF6C,cAAc,CAACvB,WAAW,GAAG,iBAAiB;AAE9C,OAAO,MAAMwB,SAAS,GAAGC,MAAM,CAACC,MAAM,CAACxD,aAAa,EAAE;EACpDyD,IAAI,EAAE1B,aAAa;EACnB2B,OAAO,EAAExB,gBAAgB;EACzByB,KAAK,EAAEN,cAAc;EACrBO,SAAS,EAAEpB,kBAAkB;EAC7BqB,OAAO,EAAEf;AACX,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { forwardRef } from 'react';
|
|
3
|
+
import { createContext, forwardRef, useContext } from 'react';
|
|
4
4
|
import { View } from 'react-native';
|
|
5
5
|
import { tv } from 'tailwind-variants';
|
|
6
6
|
import { useCSSVariable } from 'uniwind';
|
|
7
7
|
import { AnimatedPressable } from "../../primitives/animated-pressable.js";
|
|
8
8
|
import { Text, textChildren } from "../../primitives/text.js";
|
|
9
|
+
import { cn } from "../../utils/cn.js";
|
|
9
10
|
import { IconColorProvider } from "../../icons/index.js";
|
|
10
11
|
import { getNativeUI, getSwiftUIModifiers } from "../../native/index.js";
|
|
11
12
|
import { Spinner } from "../spinner/index.js";
|
|
@@ -83,6 +84,53 @@ const buttonVariants = tv({
|
|
|
83
84
|
size: 'md'
|
|
84
85
|
}
|
|
85
86
|
});
|
|
87
|
+
|
|
88
|
+
/** How a button looks. */
|
|
89
|
+
|
|
90
|
+
/** How big a button is. `icon` is a square. */
|
|
91
|
+
|
|
92
|
+
/* -------------------------------------------------------------------------- *
|
|
93
|
+
* Grouping
|
|
94
|
+
*
|
|
95
|
+
* A button reads this; `ButtonGroup` writes it. The context lives here rather
|
|
96
|
+
* than beside the group because the button is the consumer, and a component
|
|
97
|
+
* should not have to import the thing that contains it to find out that it is
|
|
98
|
+
* contained — which would also make the two import each other.
|
|
99
|
+
* -------------------------------------------------------------------------- */
|
|
100
|
+
|
|
101
|
+
const ButtonGroupContext = /*#__PURE__*/createContext(null);
|
|
102
|
+
|
|
103
|
+
/** Announces to every button below it that it is part of one control. */
|
|
104
|
+
export function ButtonGroupProvider({
|
|
105
|
+
value,
|
|
106
|
+
children
|
|
107
|
+
}) {
|
|
108
|
+
return /*#__PURE__*/_jsx(ButtonGroupContext.Provider, {
|
|
109
|
+
value: value,
|
|
110
|
+
children: children
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** The enclosing group, if there is one. `null` for a button standing alone. */
|
|
115
|
+
export function useButtonGroup() {
|
|
116
|
+
return useContext(ButtonGroupContext);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* What an attached button gives up so the group can draw the shape once.
|
|
121
|
+
*
|
|
122
|
+
* The radius and the shadow go because the group owns both — a rounded,
|
|
123
|
+
* shadowed segment inside a rounded, shadowed container is two shapes where
|
|
124
|
+
* there should be one. The border stays but turns transparent rather than
|
|
125
|
+
* being removed: it is holding a pixel of the button's height, and dropping it
|
|
126
|
+
* would make an `outline` segment a hair shorter than a `ghost` one beside it.
|
|
127
|
+
*
|
|
128
|
+
* The press feedback changes too. A button on its own shrinks slightly when
|
|
129
|
+
* pressed, which inside a joined run would pull the segment away from its
|
|
130
|
+
* neighbours and show the container through the gap. A background is the same
|
|
131
|
+
* signal without the movement.
|
|
132
|
+
*/
|
|
133
|
+
const ATTACHED = 'rounded-none border-transparent shadow-none active:bg-accent';
|
|
86
134
|
const SPINNER_SIZE = {
|
|
87
135
|
sm: 'sm',
|
|
88
136
|
md: 'sm',
|
|
@@ -192,22 +240,39 @@ export const Button = /*#__PURE__*/forwardRef(({
|
|
|
192
240
|
}, ref) => {
|
|
193
241
|
const isDisabled = disabled || loading;
|
|
194
242
|
const nativeUI = native ? getNativeUI() : null;
|
|
243
|
+
|
|
244
|
+
/*
|
|
245
|
+
* A group fills in what a button did not say for itself, and never
|
|
246
|
+
* overrides what it did: a run of buttons should look like one control
|
|
247
|
+
* without every segment repeating the same two props, and the odd segment
|
|
248
|
+
* that wants to stand out — the selected one, the destructive one — has to
|
|
249
|
+
* be able to say so.
|
|
250
|
+
*
|
|
251
|
+
* `native` is deliberately outside all of this. The platform draws that
|
|
252
|
+
* button, so it has no border, radius or shadow for a group to take over,
|
|
253
|
+
* and joining several of them would produce a row of platform buttons with
|
|
254
|
+
* a border drawn around it rather than a segmented control.
|
|
255
|
+
*/
|
|
256
|
+
const group = useButtonGroup();
|
|
257
|
+
const attached = !native && group?.attached === true;
|
|
258
|
+
const resolvedVariant = variant ?? group?.variant;
|
|
259
|
+
const resolvedSize = size ?? group?.size;
|
|
195
260
|
const {
|
|
196
261
|
root,
|
|
197
262
|
label,
|
|
198
263
|
spinner
|
|
199
264
|
} = buttonVariants({
|
|
200
|
-
variant,
|
|
201
|
-
size,
|
|
202
|
-
fullWidth,
|
|
265
|
+
variant: resolvedVariant,
|
|
266
|
+
size: resolvedSize,
|
|
267
|
+
fullWidth: fullWidth ?? (attached && group?.fullWidth),
|
|
203
268
|
disabled: isDisabled
|
|
204
269
|
});
|
|
205
270
|
|
|
206
271
|
// Icons in the content slots inherit this, so they stay legible when the
|
|
207
272
|
// theme inverts the button's background. Without it every caller has to
|
|
208
273
|
// hardcode a hex that is wrong in one theme or the other.
|
|
209
|
-
const themedColor = useCSSVariable(CONTENT_COLOR_VAR[
|
|
210
|
-
const contentColor =
|
|
274
|
+
const themedColor = useCSSVariable(CONTENT_COLOR_VAR[resolvedVariant === 'destructive' ? 'primary' : resolvedVariant ?? 'primary']);
|
|
275
|
+
const contentColor = resolvedVariant === 'destructive' ? '#ffffff' : typeof themedColor === 'string' ? themedColor : undefined;
|
|
211
276
|
if (nativeUI) {
|
|
212
277
|
const {
|
|
213
278
|
Host,
|
|
@@ -215,7 +280,7 @@ export const Button = /*#__PURE__*/forwardRef(({
|
|
|
215
280
|
RNHostView
|
|
216
281
|
} = nativeUI;
|
|
217
282
|
const isStringLabel = typeof children === 'string';
|
|
218
|
-
const prominent =
|
|
283
|
+
const prominent = resolvedVariant === 'primary' || resolvedVariant === 'destructive';
|
|
219
284
|
|
|
220
285
|
/*
|
|
221
286
|
* Looks the portable props cannot ask for.
|
|
@@ -232,7 +297,7 @@ export const Button = /*#__PURE__*/forwardRef(({
|
|
|
232
297
|
* button somebody forgot to label. It shapes the glass too.
|
|
233
298
|
*/
|
|
234
299
|
const swiftUI = getSwiftUIModifiers();
|
|
235
|
-
const nativeModifiers = swiftUI ? [glass ? swiftUI.buttonStyle(prominent ? 'glassProminent' : 'glass') : null,
|
|
300
|
+
const nativeModifiers = swiftUI ? [glass ? swiftUI.buttonStyle(prominent ? 'glassProminent' : 'glass') : null, resolvedSize === 'icon' ? swiftUI.buttonBorderShape('circle') : null, isStringLabel ? swiftUI.controlSize(NATIVE_CONTROL_SIZE[resolvedSize ?? 'md']) : null].filter(Boolean) : [];
|
|
236
301
|
|
|
237
302
|
/*
|
|
238
303
|
* The platform paints the background, not the theme — so a hosted icon
|
|
@@ -246,7 +311,7 @@ export const Button = /*#__PURE__*/forwardRef(({
|
|
|
246
311
|
matchContents: true,
|
|
247
312
|
children: /*#__PURE__*/_jsx(NativeButton, {
|
|
248
313
|
label: isStringLabel ? children : undefined,
|
|
249
|
-
variant: NATIVE_VARIANT[
|
|
314
|
+
variant: NATIVE_VARIANT[resolvedVariant ?? 'primary'],
|
|
250
315
|
disabled: isDisabled
|
|
251
316
|
/*
|
|
252
317
|
* A square for an icon button, a height for a labelled one — and
|
|
@@ -258,18 +323,18 @@ export const Button = /*#__PURE__*/forwardRef(({
|
|
|
258
323
|
* background around. The frame only has to be large enough to hold
|
|
259
324
|
* the result.
|
|
260
325
|
*/,
|
|
261
|
-
style:
|
|
326
|
+
style: resolvedSize === 'icon' ? {
|
|
262
327
|
width: NATIVE_ICON_FRAME,
|
|
263
328
|
height: NATIVE_ICON_FRAME
|
|
264
329
|
} : {
|
|
265
|
-
height: NATIVE_HEIGHT[
|
|
330
|
+
height: NATIVE_HEIGHT[resolvedSize ?? 'md']
|
|
266
331
|
},
|
|
267
332
|
modifiers: nativeModifiers.length ? nativeModifiers : undefined,
|
|
268
333
|
onPress: props.onPress,
|
|
269
334
|
children: isStringLabel ? undefined : /*#__PURE__*/_jsx(RNHostView, {
|
|
270
335
|
matchContents: true,
|
|
271
336
|
children: /*#__PURE__*/_jsx(View, {
|
|
272
|
-
style:
|
|
337
|
+
style: resolvedSize === 'icon' ? {
|
|
273
338
|
padding: NATIVE_ICON_PADDING,
|
|
274
339
|
alignItems: 'center',
|
|
275
340
|
justifyContent: 'center'
|
|
@@ -297,13 +362,16 @@ export const Button = /*#__PURE__*/forwardRef(({
|
|
|
297
362
|
disabled: isDisabled,
|
|
298
363
|
busy: loading
|
|
299
364
|
},
|
|
300
|
-
disabled: isDisabled
|
|
365
|
+
disabled: isDisabled
|
|
366
|
+
// Before the spread, so a caller can still ask for the scale back.
|
|
367
|
+
,
|
|
368
|
+
pressScale: attached ? 1 : undefined,
|
|
301
369
|
className: root({
|
|
302
|
-
className
|
|
370
|
+
className: cn(attached && ATTACHED, className)
|
|
303
371
|
}),
|
|
304
372
|
...props,
|
|
305
373
|
children: [loading ? /*#__PURE__*/_jsx(Spinner, {
|
|
306
|
-
size: SPINNER_SIZE[
|
|
374
|
+
size: SPINNER_SIZE[resolvedSize ?? 'md'],
|
|
307
375
|
className: spinner()
|
|
308
376
|
}) : startContent, textChildren(children, text => /*#__PURE__*/_jsx(Text, {
|
|
309
377
|
className: label({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","View","tv","useCSSVariable","AnimatedPressable","Text","textChildren","IconColorProvider","getNativeUI","getSwiftUIModifiers","Spinner","jsx","_jsx","jsxs","_jsxs","buttonVariants","slots","root","label","spinner","variants","variant","primary","secondary","outline","ghost","destructive","social","size","sm","md","lg","icon","fullWidth","true","disabled","defaultVariants","SPINNER_SIZE","CONTENT_COLOR_VAR","NATIVE_HEIGHT","NATIVE_ICON_PADDING","NATIVE_ICON_FRAME","NATIVE_CONTROL_SIZE","NATIVE_VARIANT","Button","
|
|
1
|
+
{"version":3,"names":["createContext","forwardRef","useContext","View","tv","useCSSVariable","AnimatedPressable","Text","textChildren","cn","IconColorProvider","getNativeUI","getSwiftUIModifiers","Spinner","jsx","_jsx","jsxs","_jsxs","buttonVariants","slots","root","label","spinner","variants","variant","primary","secondary","outline","ghost","destructive","social","size","sm","md","lg","icon","fullWidth","true","disabled","defaultVariants","ButtonGroupContext","ButtonGroupProvider","value","children","Provider","useButtonGroup","ATTACHED","SPINNER_SIZE","CONTENT_COLOR_VAR","NATIVE_HEIGHT","NATIVE_ICON_PADDING","NATIVE_ICON_FRAME","NATIVE_CONTROL_SIZE","NATIVE_VARIANT","Button","className","labelClassName","loading","startContent","endContent","native","glass","props","ref","isDisabled","nativeUI","group","attached","resolvedVariant","resolvedSize","themedColor","contentColor","undefined","Host","NativeButton","RNHostView","isStringLabel","prominent","swiftUI","nativeModifiers","buttonStyle","buttonBorderShape","controlSize","filter","Boolean","nativeContent","matchContents","style","width","height","modifiers","length","onPress","padding","alignItems","justifyContent","color","text","accessibilityRole","accessibilityState","busy","pressScale","displayName"],"sourceRoot":"../../../../src","sources":["components/button/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ButtonGroup — several buttons drawn as one control.
|
|
5
|
+
*
|
|
6
|
+
* ```tsx
|
|
7
|
+
* <ButtonGroup>
|
|
8
|
+
* <Button startContent={<ListChecksIcon size={16} />}>Tasks</Button>
|
|
9
|
+
* <Button startContent={<CalendarIcon size={16} />}>Agenda</Button>
|
|
10
|
+
* <Button startContent={<ChartIcon size={16} />}>Board</Button>
|
|
11
|
+
* </ButtonGroup>
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* The buttons stay buttons. Anything a `Button` does — an icon, a badge, a
|
|
15
|
+
* loading state, a disabled segment, opening a Popover — it still does inside a
|
|
16
|
+
* group, because the group is a container rather than a component that takes a
|
|
17
|
+
* list of items and renders them for you. A list-of-items API has to grow a
|
|
18
|
+
* prop for every one of those things; this one has none of them and can do all
|
|
19
|
+
* of them.
|
|
20
|
+
*
|
|
21
|
+
* ## Why the container draws the border
|
|
22
|
+
*
|
|
23
|
+
* A joined run could be built by giving the first and last segments their
|
|
24
|
+
* corners and squaring the ones between, then collapsing every shared edge with
|
|
25
|
+
* a negative margin. That works on the web and is a stack of off-by-one
|
|
26
|
+
* problems on a phone: the hairlines land on different fractions of a pixel per
|
|
27
|
+
* device, and a run that wraps has no first or last segment any more.
|
|
28
|
+
*
|
|
29
|
+
* So the group draws the shape once — one border, one radius, one shadow,
|
|
30
|
+
* clipped — and the buttons inside it draw none of their own. The dividers are
|
|
31
|
+
* real one-pixel views the group puts between its children, which is also why
|
|
32
|
+
* they are always exactly one pixel and always in the same place.
|
|
33
|
+
*
|
|
34
|
+
* ## What it passes down
|
|
35
|
+
*
|
|
36
|
+
* `variant` and `size` fill in for a button that did not choose its own, so a
|
|
37
|
+
* run of six does not repeat the same two props six times. A segment that wants
|
|
38
|
+
* to stand out — the selected one, the destructive one — sets its own and wins.
|
|
39
|
+
*
|
|
40
|
+
* ```tsx
|
|
41
|
+
* <ButtonGroup size="sm">
|
|
42
|
+
* <Button>Day</Button>
|
|
43
|
+
* <Button variant="secondary">Week</Button> {/* the selected one *\/}
|
|
44
|
+
* <Button>Month</Button>
|
|
45
|
+
* </ButtonGroup>
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* ## Not a selection control
|
|
49
|
+
*
|
|
50
|
+
* This joins buttons; what they mean is yours. For a control that owns which
|
|
51
|
+
* one is on, reach for `ToggleButtonGroup`, and for switching between panels of
|
|
52
|
+
* content reach for `Tabs` — a segmented run of buttons that swaps a screen is
|
|
53
|
+
* navigation, and navigation should say so to a screen reader.
|
|
54
|
+
*/
|
|
55
|
+
import { Children, Fragment, forwardRef, useMemo } from 'react';
|
|
56
|
+
import { View } from 'react-native';
|
|
57
|
+
import { tv } from 'tailwind-variants';
|
|
58
|
+
import { ButtonGroupProvider } from "../button/index.js";
|
|
59
|
+
|
|
60
|
+
/** Which way the run reads. */
|
|
61
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
62
|
+
const buttonGroupVariants = tv({
|
|
63
|
+
slots: {
|
|
64
|
+
root: 'items-stretch',
|
|
65
|
+
divider: 'bg-border'
|
|
66
|
+
},
|
|
67
|
+
variants: {
|
|
68
|
+
orientation: {
|
|
69
|
+
horizontal: {
|
|
70
|
+
root: 'flex-row',
|
|
71
|
+
divider: 'w-px'
|
|
72
|
+
},
|
|
73
|
+
vertical: {
|
|
74
|
+
root: 'flex-col',
|
|
75
|
+
divider: 'h-px'
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
attached: {
|
|
79
|
+
// `overflow-hidden` is what squares the inner corners and rounds the
|
|
80
|
+
// outer ones without any segment knowing which it is.
|
|
81
|
+
true: {
|
|
82
|
+
root: 'overflow-hidden border border-input bg-popover shadow-sm'
|
|
83
|
+
},
|
|
84
|
+
false: {
|
|
85
|
+
root: 'gap-2'
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
/* Matched to the height the buttons will be, since a radius that suited a
|
|
89
|
+
36pt run reads as a rectangle around a 48pt one. */
|
|
90
|
+
size: {
|
|
91
|
+
sm: {
|
|
92
|
+
root: 'rounded-lg'
|
|
93
|
+
},
|
|
94
|
+
md: {
|
|
95
|
+
root: 'rounded-xl'
|
|
96
|
+
},
|
|
97
|
+
lg: {
|
|
98
|
+
root: 'rounded-xl'
|
|
99
|
+
},
|
|
100
|
+
icon: {
|
|
101
|
+
root: 'rounded-xl'
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
fullWidth: {
|
|
105
|
+
true: {
|
|
106
|
+
root: 'w-full'
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
compoundVariants: [
|
|
111
|
+
// Nothing is being joined, so the radius belongs to each button instead.
|
|
112
|
+
{
|
|
113
|
+
attached: false,
|
|
114
|
+
class: {
|
|
115
|
+
root: 'rounded-none'
|
|
116
|
+
}
|
|
117
|
+
}],
|
|
118
|
+
defaultVariants: {
|
|
119
|
+
orientation: 'horizontal',
|
|
120
|
+
attached: true,
|
|
121
|
+
size: 'md'
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
const ButtonGroupRoot = /*#__PURE__*/forwardRef(({
|
|
125
|
+
className,
|
|
126
|
+
orientation = 'horizontal',
|
|
127
|
+
variant,
|
|
128
|
+
size = 'md',
|
|
129
|
+
attached = true,
|
|
130
|
+
fullWidth = false,
|
|
131
|
+
children,
|
|
132
|
+
...props
|
|
133
|
+
}, ref) => {
|
|
134
|
+
const {
|
|
135
|
+
root,
|
|
136
|
+
divider
|
|
137
|
+
} = buttonGroupVariants({
|
|
138
|
+
orientation,
|
|
139
|
+
attached,
|
|
140
|
+
size,
|
|
141
|
+
fullWidth
|
|
142
|
+
});
|
|
143
|
+
const context = useMemo(() => ({
|
|
144
|
+
variant,
|
|
145
|
+
size,
|
|
146
|
+
attached,
|
|
147
|
+
fullWidth
|
|
148
|
+
}), [variant, size, attached, fullWidth]);
|
|
149
|
+
|
|
150
|
+
/*
|
|
151
|
+
* `Children.toArray` rather than the raw children: it drops the nulls a
|
|
152
|
+
* conditional segment leaves behind and flattens fragments, so a run built
|
|
153
|
+
* by a `map` or by `{canEdit && <Button/>}` gets its dividers in the right
|
|
154
|
+
* places instead of one before a segment that is not there.
|
|
155
|
+
*/
|
|
156
|
+
const items = Children.toArray(children);
|
|
157
|
+
return /*#__PURE__*/_jsx(ButtonGroupProvider, {
|
|
158
|
+
value: context,
|
|
159
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
160
|
+
ref: ref
|
|
161
|
+
// A run of related actions is a toolbar; a screen reader announcing
|
|
162
|
+
// the group is what tells someone the buttons in it belong together.
|
|
163
|
+
,
|
|
164
|
+
accessibilityRole: "toolbar",
|
|
165
|
+
className: root({
|
|
166
|
+
className
|
|
167
|
+
}),
|
|
168
|
+
...props,
|
|
169
|
+
children: items.map((child, index) =>
|
|
170
|
+
/*#__PURE__*/
|
|
171
|
+
// Index keys: these fragments have no identity of their own, and
|
|
172
|
+
// the children keep whatever keys they were already given.
|
|
173
|
+
_jsxs(Fragment, {
|
|
174
|
+
children: [index > 0 && attached ? /*#__PURE__*/_jsx(View, {
|
|
175
|
+
className: divider()
|
|
176
|
+
}) : null, fullWidth ? /*#__PURE__*/_jsx(View, {
|
|
177
|
+
className: "flex-1",
|
|
178
|
+
children: child
|
|
179
|
+
}) : child]
|
|
180
|
+
}, index))
|
|
181
|
+
})
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
ButtonGroupRoot.displayName = 'ButtonGroup';
|
|
185
|
+
export const ButtonGroup = ButtonGroupRoot;
|
|
186
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Children","Fragment","forwardRef","useMemo","View","tv","ButtonGroupProvider","jsx","_jsx","jsxs","_jsxs","buttonGroupVariants","slots","root","divider","variants","orientation","horizontal","vertical","attached","true","false","size","sm","md","lg","icon","fullWidth","compoundVariants","class","defaultVariants","ButtonGroupRoot","className","variant","children","props","ref","context","items","toArray","value","accessibilityRole","map","child","index","displayName","ButtonGroup"],"sourceRoot":"../../../../src","sources":["components/button-group/index.tsx"],"mappings":"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","ignoreList":[]}
|