eidos-ui 3.1.1 → 3.2.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 +4 -0
- package/dist/Header.types-0XovUp0T.d.ts +79 -0
- package/dist/Header.types-Ce5Cj301.d.cts +79 -0
- package/dist/{Navigation.types-CpS3EYNz.d.ts → Navigation.types-By5HfPTi.d.ts} +8 -0
- package/dist/{Navigation.types-sUO9wqOp.d.cts → Navigation.types-_MrYqqUI.d.cts} +8 -0
- package/dist/{SegmentedControl.types-Dm4SnwCK.d.cts → SegmentedControl.types-BofrEYyd.d.cts} +16 -1
- package/dist/{SegmentedControl.types-CK8EiShd.d.ts → SegmentedControl.types-cjLwwBAm.d.ts} +16 -1
- package/dist/alert/index.cjs +4 -4
- package/dist/alert/index.js +3 -3
- package/dist/button/index.cjs +3 -3
- package/dist/button/index.js +2 -2
- package/dist/chip/index.cjs +3 -3
- package/dist/chip/index.js +2 -2
- package/dist/{chunk-RWOX2NJN.js → chunk-25PSIDPC.js} +2 -2
- package/dist/{chunk-IFVT5UCY.js → chunk-2QEKSRVX.js} +14 -10
- package/dist/chunk-2QEKSRVX.js.map +1 -0
- package/dist/{chunk-4BKTBV2I.js → chunk-2R77XZEP.js} +6 -2
- package/dist/chunk-2R77XZEP.js.map +1 -0
- package/dist/{chunk-SYWSXSHY.js → chunk-2WP27QAN.js} +8 -8
- package/dist/{chunk-EXITZVB2.js → chunk-3RLGH45H.js} +6 -6
- package/dist/{chunk-442U3W6R.cjs → chunk-4MZ7HEQC.cjs} +5 -5
- package/dist/{chunk-442U3W6R.cjs.map → chunk-4MZ7HEQC.cjs.map} +1 -1
- package/dist/{chunk-R4PU2TBM.js → chunk-4ZWAJTNH.js} +3 -3
- package/dist/{chunk-RHOT7AEI.cjs → chunk-55J4LEKT.cjs} +8 -7
- package/dist/chunk-55J4LEKT.cjs.map +1 -0
- package/dist/{chunk-REVK7IGN.js → chunk-5WH3JMR5.js} +8 -7
- package/dist/chunk-5WH3JMR5.js.map +1 -0
- package/dist/{chunk-GT22EGJP.cjs → chunk-65PC3YDT.cjs} +14 -10
- package/dist/chunk-65PC3YDT.cjs.map +1 -0
- package/dist/{chunk-KQD7CQ4Z.cjs → chunk-6CSUUQ5M.cjs} +10 -6
- package/dist/chunk-6CSUUQ5M.cjs.map +1 -0
- package/dist/{chunk-GR2PMCVN.cjs → chunk-75TDY7XF.cjs} +5 -5
- package/dist/{chunk-GR2PMCVN.cjs.map → chunk-75TDY7XF.cjs.map} +1 -1
- package/dist/{chunk-FRUOA2QU.cjs → chunk-75VXB3H2.cjs} +7 -3
- package/dist/chunk-75VXB3H2.cjs.map +1 -0
- package/dist/{chunk-F26VIKNF.js → chunk-ATL7325T.js} +3 -3
- package/dist/{chunk-TEJIPPZR.js → chunk-BC5I2MYB.js} +7 -4
- package/dist/chunk-BC5I2MYB.js.map +1 -0
- package/dist/{chunk-GHQ6SQPI.js → chunk-BHVHM66Z.js} +6 -6
- package/dist/{chunk-N2IGZIEX.cjs → chunk-CJGFRPAS.cjs} +3 -3
- package/dist/{chunk-N2IGZIEX.cjs.map → chunk-CJGFRPAS.cjs.map} +1 -1
- package/dist/{chunk-GEHL4LKK.cjs → chunk-CUJBNRJJ.cjs} +8 -2
- package/dist/chunk-CUJBNRJJ.cjs.map +1 -0
- package/dist/{chunk-DAXZRNNO.cjs → chunk-D2SKXRKP.cjs} +8 -8
- package/dist/{chunk-DAXZRNNO.cjs.map → chunk-D2SKXRKP.cjs.map} +1 -1
- package/dist/{chunk-KBG77JHC.js → chunk-EAJHEYZM.js} +8 -2
- package/dist/chunk-EAJHEYZM.js.map +1 -0
- package/dist/{chunk-G77YR73R.cjs → chunk-EBSKRZXI.cjs} +8 -8
- package/dist/{chunk-G77YR73R.cjs.map → chunk-EBSKRZXI.cjs.map} +1 -1
- package/dist/{chunk-B5G5XVFJ.cjs → chunk-EH42ND5Q.cjs} +5 -5
- package/dist/{chunk-B5G5XVFJ.cjs.map → chunk-EH42ND5Q.cjs.map} +1 -1
- package/dist/{chunk-WUBQJVB7.cjs → chunk-EL3YXTOW.cjs} +9 -6
- package/dist/chunk-EL3YXTOW.cjs.map +1 -0
- package/dist/{chunk-Y53HCLGW.js → chunk-FALDCW2E.js} +2 -2
- package/dist/{chunk-D5IY2HUV.cjs → chunk-FXZJL2AM.cjs} +5 -5
- package/dist/{chunk-D5IY2HUV.cjs.map → chunk-FXZJL2AM.cjs.map} +1 -1
- package/dist/{chunk-KJZUYC4X.cjs → chunk-HI6WCX4T.cjs} +10 -9
- package/dist/chunk-HI6WCX4T.cjs.map +1 -0
- package/dist/{chunk-LFWPQYWX.cjs → chunk-I3CSPYHG.cjs} +3 -3
- package/dist/{chunk-LFWPQYWX.cjs.map → chunk-I3CSPYHG.cjs.map} +1 -1
- package/dist/{chunk-EZME5CLK.cjs → chunk-J5RMLZ4P.cjs} +3 -3
- package/dist/{chunk-EZME5CLK.cjs.map → chunk-J5RMLZ4P.cjs.map} +1 -1
- package/dist/{chunk-VHMOKXUT.js → chunk-JRLUZDKA.js} +8 -7
- package/dist/chunk-JRLUZDKA.js.map +1 -0
- package/dist/{chunk-LIFUHQH5.cjs → chunk-KBGFDHKD.cjs} +19 -19
- package/dist/{chunk-LIFUHQH5.cjs.map → chunk-KBGFDHKD.cjs.map} +1 -1
- package/dist/{chunk-ZHFPV43D.js → chunk-KNQ6NN6L.js} +5 -5
- package/dist/{chunk-GWQEADRJ.js → chunk-KQJ3IAFT.js} +2 -2
- package/dist/{chunk-74MBKLYI.js → chunk-L23WWO3D.js} +9 -5
- package/dist/chunk-L23WWO3D.js.map +1 -0
- package/dist/{chunk-YJXZR7RL.js → chunk-L5Q6UDY3.js} +4 -4
- package/dist/{chunk-5BX4Q76D.cjs → chunk-LVHZBCTA.cjs} +3 -3
- package/dist/{chunk-5BX4Q76D.cjs.map → chunk-LVHZBCTA.cjs.map} +1 -1
- package/dist/{chunk-SENVA467.js → chunk-M7PF4FKQ.js} +6 -2
- package/dist/chunk-M7PF4FKQ.js.map +1 -0
- package/dist/chunk-ND526PMG.cjs +145 -0
- package/dist/chunk-ND526PMG.cjs.map +1 -0
- package/dist/{chunk-TRLBYA5G.cjs → chunk-NEYLNRVG.cjs} +5 -5
- package/dist/{chunk-TRLBYA5G.cjs.map → chunk-NEYLNRVG.cjs.map} +1 -1
- package/dist/{chunk-ZEZK664O.js → chunk-NWJ6NETE.js} +13 -13
- package/dist/{chunk-SEDKUITE.cjs → chunk-NZO2I5AL.cjs} +7 -7
- package/dist/{chunk-SEDKUITE.cjs.map → chunk-NZO2I5AL.cjs.map} +1 -1
- package/dist/{chunk-5ZL6PYU3.js → chunk-O2AACVSF.js} +3 -3
- package/dist/chunk-O3LG7B2J.cjs +186 -0
- package/dist/chunk-O3LG7B2J.cjs.map +1 -0
- package/dist/{chunk-SHYSLWQG.js → chunk-OAK7HFOJ.js} +4 -4
- package/dist/{chunk-QF2RAUPB.cjs → chunk-OAPOGYA5.cjs} +7 -3
- package/dist/chunk-OAPOGYA5.cjs.map +1 -0
- package/dist/{chunk-SKEWTQJ7.cjs → chunk-OMLXP2CK.cjs} +7 -7
- package/dist/{chunk-SKEWTQJ7.cjs.map → chunk-OMLXP2CK.cjs.map} +1 -1
- package/dist/{chunk-VSTQEHVZ.js → chunk-PR7CVQ4R.js} +10 -7
- package/dist/chunk-PR7CVQ4R.js.map +1 -0
- package/dist/{chunk-6HUHH6Y4.cjs → chunk-Q6ICDKQZ.cjs} +22 -19
- package/dist/chunk-Q6ICDKQZ.cjs.map +1 -0
- package/dist/{chunk-NGVOXM7P.js → chunk-QIITXVRG.js} +4 -4
- package/dist/{chunk-GI6VJYOS.js → chunk-QUDVJUZU.js} +3 -3
- package/dist/chunk-QZX3A4FX.js +886 -0
- package/dist/chunk-QZX3A4FX.js.map +1 -0
- package/dist/chunk-R3WPVTGY.cjs +886 -0
- package/dist/chunk-R3WPVTGY.cjs.map +1 -0
- package/dist/{chunk-SN6EWQDJ.js → chunk-RYOQYYDO.js} +3 -3
- package/dist/chunk-S4S4LB63.js +186 -0
- package/dist/chunk-S4S4LB63.js.map +1 -0
- package/dist/{chunk-67RFMV6K.js → chunk-T2KB3DJJ.js} +2 -2
- package/dist/{chunk-5VM2256W.cjs → chunk-TEVZHN5I.cjs} +11 -10
- package/dist/chunk-TEVZHN5I.cjs.map +1 -0
- package/dist/{chunk-RKA2OJRT.js → chunk-TJC7UELT.js} +18 -18
- package/dist/{chunk-SKTDGCWJ.cjs → chunk-UOOGS6N7.cjs} +48 -48
- package/dist/{chunk-SKTDGCWJ.cjs.map → chunk-UOOGS6N7.cjs.map} +1 -1
- package/dist/{chunk-JRYTZ5B2.cjs → chunk-VRQBDTLT.cjs} +32 -32
- package/dist/{chunk-JRYTZ5B2.cjs.map → chunk-VRQBDTLT.cjs.map} +1 -1
- package/dist/{chunk-AXBYJ2OY.cjs → chunk-WFEORBLC.cjs} +8 -8
- package/dist/{chunk-AXBYJ2OY.cjs.map → chunk-WFEORBLC.cjs.map} +1 -1
- package/dist/chunk-WKDT2XFQ.js +145 -0
- package/dist/chunk-WKDT2XFQ.js.map +1 -0
- package/dist/{chunk-APK5OQRV.cjs → chunk-WWYJNWJY.cjs} +6 -6
- package/dist/{chunk-APK5OQRV.cjs.map → chunk-WWYJNWJY.cjs.map} +1 -1
- package/dist/{chunk-A7WQINIG.js → chunk-X3U7SDOZ.js} +7 -6
- package/dist/chunk-X3U7SDOZ.js.map +1 -0
- package/dist/{chunk-LEMCJW57.js → chunk-YDPEHUMH.js} +2 -2
- package/dist/{chunk-GGSII6Y2.cjs → chunk-ZGT4LT5Y.cjs} +33 -33
- package/dist/{chunk-GGSII6Y2.cjs.map → chunk-ZGT4LT5Y.cjs.map} +1 -1
- package/dist/{chunk-LUL6RZ4M.cjs → chunk-ZNWIHUHZ.cjs} +3 -3
- package/dist/{chunk-LUL6RZ4M.cjs.map → chunk-ZNWIHUHZ.cjs.map} +1 -1
- package/dist/{chunk-S3CT536K.js → chunk-ZPDETHQ7.js} +2 -2
- package/dist/color-picker/index.cjs +4 -3
- package/dist/color-picker/index.cjs.map +1 -1
- package/dist/color-picker/index.js +3 -2
- package/dist/combobox/index.cjs +5 -5
- package/dist/combobox/index.js +4 -4
- package/dist/context-menu/index.cjs +5 -5
- package/dist/context-menu/index.js +4 -4
- package/dist/conversation/index.cjs +28 -0
- package/dist/conversation/index.cjs.map +1 -0
- package/dist/conversation/index.d.cts +254 -0
- package/dist/conversation/index.d.ts +254 -0
- package/dist/conversation/index.js +28 -0
- package/dist/conversation/index.js.map +1 -0
- package/dist/data-grid/index.cjs +16 -16
- package/dist/data-grid/index.d.cts +1 -1
- package/dist/data-grid/index.d.ts +1 -1
- package/dist/data-grid/index.js +15 -15
- package/dist/date-picker/index.cjs +7 -7
- package/dist/date-picker/index.js +6 -6
- package/dist/drawer/index.cjs +4 -4
- package/dist/drawer/index.js +3 -3
- package/dist/dropdown/index.cjs +3 -2
- package/dist/dropdown/index.cjs.map +1 -1
- package/dist/dropdown/index.js +2 -1
- package/dist/header/index.cjs +8 -4
- package/dist/header/index.cjs.map +1 -1
- package/dist/header/index.d.cts +35 -4
- package/dist/header/index.d.ts +35 -4
- package/dist/header/index.js +9 -5
- package/dist/index.cjs +66 -56
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1015 -167
- package/dist/index.d.cts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.js +84 -74
- package/dist/inline-edit/index.cjs +4 -4
- package/dist/inline-edit/index.js +3 -3
- package/dist/input/index.cjs +3 -3
- package/dist/input/index.js +2 -2
- package/dist/menu/index.cjs +4 -4
- package/dist/menu/index.js +3 -3
- package/dist/modal/index.cjs +4 -4
- package/dist/modal/index.js +3 -3
- package/dist/navigation/index.cjs +4 -4
- package/dist/navigation/index.d.cts +2 -2
- package/dist/navigation/index.d.ts +2 -2
- package/dist/navigation/index.js +3 -3
- package/dist/number-input/index.cjs +3 -2
- package/dist/number-input/index.cjs.map +1 -1
- package/dist/number-input/index.js +2 -1
- package/dist/page-layout/index.cjs +10 -9
- package/dist/page-layout/index.cjs.map +1 -1
- package/dist/page-layout/index.d.cts +2 -2
- package/dist/page-layout/index.d.ts +2 -2
- package/dist/page-layout/index.js +9 -8
- package/dist/pagination/index.cjs +7 -7
- package/dist/pagination/index.js +6 -6
- package/dist/segmented-control/index.cjs +3 -3
- package/dist/segmented-control/index.d.cts +2 -2
- package/dist/segmented-control/index.d.ts +2 -2
- package/dist/segmented-control/index.js +2 -2
- package/dist/select/index.cjs +5 -5
- package/dist/select/index.js +4 -4
- package/dist/snackbar/index.cjs +4 -4
- package/dist/snackbar/index.js +3 -3
- package/dist/split-button/index.cjs +5 -5
- package/dist/split-button/index.js +4 -4
- package/dist/table/index.cjs +16 -16
- package/dist/table/index.cjs.map +1 -1
- package/dist/table/index.js +15 -15
- package/dist/tabs/index.cjs +3 -3
- package/dist/tabs/index.js +2 -2
- package/dist/tag-input/index.cjs +5 -5
- package/dist/tag-input/index.js +4 -4
- package/dist/textarea/index.cjs +3 -3
- package/dist/textarea/index.js +2 -2
- package/dist/theme-editor/index.cjs +11 -11
- package/dist/theme-editor/index.js +10 -10
- package/dist/theme-provider/index.cjs +3 -3
- package/dist/theme-provider/index.js +2 -2
- package/dist/toolbar/index.cjs +6 -6
- package/dist/toolbar/index.js +5 -5
- package/package.json +1 -1
- package/dist/Header.types-B3QtuiL-.d.cts +0 -21
- package/dist/Header.types-C6w0FBY8.d.ts +0 -21
- package/dist/chunk-4BKTBV2I.js.map +0 -1
- package/dist/chunk-5VM2256W.cjs.map +0 -1
- package/dist/chunk-6HUHH6Y4.cjs.map +0 -1
- package/dist/chunk-74MBKLYI.js.map +0 -1
- package/dist/chunk-A7WQINIG.js.map +0 -1
- package/dist/chunk-AAA6TR5I.cjs +0 -67
- package/dist/chunk-AAA6TR5I.cjs.map +0 -1
- package/dist/chunk-FRUOA2QU.cjs.map +0 -1
- package/dist/chunk-GEHL4LKK.cjs.map +0 -1
- package/dist/chunk-GT22EGJP.cjs.map +0 -1
- package/dist/chunk-IFVT5UCY.js.map +0 -1
- package/dist/chunk-KBG77JHC.js.map +0 -1
- package/dist/chunk-KJZUYC4X.cjs.map +0 -1
- package/dist/chunk-KQD7CQ4Z.cjs.map +0 -1
- package/dist/chunk-O5WEKLNF.js +0 -21
- package/dist/chunk-O5WEKLNF.js.map +0 -1
- package/dist/chunk-P7IQY5YH.js +0 -67
- package/dist/chunk-P7IQY5YH.js.map +0 -1
- package/dist/chunk-QF2RAUPB.cjs.map +0 -1
- package/dist/chunk-REVK7IGN.js.map +0 -1
- package/dist/chunk-RHOT7AEI.cjs.map +0 -1
- package/dist/chunk-SENVA467.js.map +0 -1
- package/dist/chunk-TEJIPPZR.js.map +0 -1
- package/dist/chunk-VHMOKXUT.js.map +0 -1
- package/dist/chunk-VSTQEHVZ.js.map +0 -1
- package/dist/chunk-WUBQJVB7.cjs.map +0 -1
- package/dist/chunk-Z4SLV6WG.cjs +0 -21
- package/dist/chunk-Z4SLV6WG.cjs.map +0 -1
- /package/dist/{chunk-RWOX2NJN.js.map → chunk-25PSIDPC.js.map} +0 -0
- /package/dist/{chunk-SYWSXSHY.js.map → chunk-2WP27QAN.js.map} +0 -0
- /package/dist/{chunk-EXITZVB2.js.map → chunk-3RLGH45H.js.map} +0 -0
- /package/dist/{chunk-R4PU2TBM.js.map → chunk-4ZWAJTNH.js.map} +0 -0
- /package/dist/{chunk-F26VIKNF.js.map → chunk-ATL7325T.js.map} +0 -0
- /package/dist/{chunk-GHQ6SQPI.js.map → chunk-BHVHM66Z.js.map} +0 -0
- /package/dist/{chunk-Y53HCLGW.js.map → chunk-FALDCW2E.js.map} +0 -0
- /package/dist/{chunk-ZHFPV43D.js.map → chunk-KNQ6NN6L.js.map} +0 -0
- /package/dist/{chunk-GWQEADRJ.js.map → chunk-KQJ3IAFT.js.map} +0 -0
- /package/dist/{chunk-YJXZR7RL.js.map → chunk-L5Q6UDY3.js.map} +0 -0
- /package/dist/{chunk-ZEZK664O.js.map → chunk-NWJ6NETE.js.map} +0 -0
- /package/dist/{chunk-5ZL6PYU3.js.map → chunk-O2AACVSF.js.map} +0 -0
- /package/dist/{chunk-SHYSLWQG.js.map → chunk-OAK7HFOJ.js.map} +0 -0
- /package/dist/{chunk-NGVOXM7P.js.map → chunk-QIITXVRG.js.map} +0 -0
- /package/dist/{chunk-GI6VJYOS.js.map → chunk-QUDVJUZU.js.map} +0 -0
- /package/dist/{chunk-SN6EWQDJ.js.map → chunk-RYOQYYDO.js.map} +0 -0
- /package/dist/{chunk-67RFMV6K.js.map → chunk-T2KB3DJJ.js.map} +0 -0
- /package/dist/{chunk-RKA2OJRT.js.map → chunk-TJC7UELT.js.map} +0 -0
- /package/dist/{chunk-LEMCJW57.js.map → chunk-YDPEHUMH.js.map} +0 -0
- /package/dist/{chunk-S3CT536K.js.map → chunk-ZPDETHQ7.js.map} +0 -0
package/README.md
CHANGED
|
@@ -87,6 +87,7 @@ These are the same groups used in Storybook, so the README and the docs sidebar
|
|
|
87
87
|
|
|
88
88
|
- PageLayout
|
|
89
89
|
- Header
|
|
90
|
+
- IdentityHeader
|
|
90
91
|
- Footer
|
|
91
92
|
- Navigation
|
|
92
93
|
- Toolbar
|
|
@@ -149,6 +150,9 @@ These are the same groups used in Storybook, so the README and the docs sidebar
|
|
|
149
150
|
- DatePicker
|
|
150
151
|
- Timeline
|
|
151
152
|
- VirtualList
|
|
153
|
+
- Chat
|
|
154
|
+
- CommentThread
|
|
155
|
+
- MessageComposer
|
|
152
156
|
|
|
153
157
|
**Overlays**
|
|
154
158
|
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { I as IconType } from './renderIcon-C2lEMMzb.js';
|
|
2
|
+
import { T as TextButtonProps, I as IconButtonProps } from './Button.types-BH0CPyPx.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* `hero` raises the header's prominence with a larger title - the
|
|
6
|
+
* account/profile landing-area treatment. `default` is the standard page
|
|
7
|
+
* header.
|
|
8
|
+
*
|
|
9
|
+
* Neither paints a surface: no background, border or padding. The header is
|
|
10
|
+
* normally rendered inside an already-padded region (`PageLayout` pads its
|
|
11
|
+
* header area), so a second inset here would misalign it against the rest of
|
|
12
|
+
* the page. Wrap the header in a `Card` if a surface is wanted.
|
|
13
|
+
*/
|
|
14
|
+
type HeaderVariant = 'default' | 'hero';
|
|
15
|
+
/** A single supporting fact in the header's `meta` row. */
|
|
16
|
+
interface HeaderMetaItem {
|
|
17
|
+
/** Leading label for the fact - "Role", "Joined". Omit for a bare value. */
|
|
18
|
+
label?: React.ReactNode;
|
|
19
|
+
/** The fact itself. */
|
|
20
|
+
value: React.ReactNode;
|
|
21
|
+
/** Leading icon, resolved like every other icon prop in the library. */
|
|
22
|
+
icon?: IconType;
|
|
23
|
+
}
|
|
24
|
+
interface HeaderProps {
|
|
25
|
+
/**
|
|
26
|
+
* Page or section title. Accepts inline nodes alongside the text - a
|
|
27
|
+
* status `Pill`/`Chip` beside the title is the common case - not just a
|
|
28
|
+
* string. Keep the children inline-level; the title is a heading.
|
|
29
|
+
*/
|
|
30
|
+
title: React.ReactNode;
|
|
31
|
+
/** Supporting text rendered below the title. */
|
|
32
|
+
subtitle?: React.ReactNode;
|
|
33
|
+
/**
|
|
34
|
+
* Leading media - an `Avatar`, a logo, an icon block - rendered before the
|
|
35
|
+
* title/subtitle stack and omitted entirely when not passed.
|
|
36
|
+
*
|
|
37
|
+
* Deliberately any node rather than an `Avatar` config: it is also the
|
|
38
|
+
* escape hatch for identity media larger than `Avatar`'s own `lg` size
|
|
39
|
+
* (48px), which a hero header usually wants.
|
|
40
|
+
*/
|
|
41
|
+
media?: React.ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Supporting facts rendered below the subtitle - role, plan, joined date.
|
|
44
|
+
* The row wraps one whole item at a time rather than splitting a fact
|
|
45
|
+
* across lines.
|
|
46
|
+
*/
|
|
47
|
+
meta?: HeaderMetaItem[];
|
|
48
|
+
/** Surface treatment. @default 'default' */
|
|
49
|
+
variant?: HeaderVariant;
|
|
50
|
+
/** Trailing action buttons, rendered right-aligned. */
|
|
51
|
+
actions?: HeaderActionProps[];
|
|
52
|
+
/**
|
|
53
|
+
* Header width, in px, at or below which actions past
|
|
54
|
+
* `actionsVisibleWhenCollapsed` fold into an overflow popover.
|
|
55
|
+
*
|
|
56
|
+
* Measured against the header's **own** width rather than the viewport, so
|
|
57
|
+
* it still behaves correctly next to `PageLayout`'s navigation rail or in
|
|
58
|
+
* any other narrow column. Pass `0` to opt out and always render every
|
|
59
|
+
* action inline.
|
|
60
|
+
*
|
|
61
|
+
* @default 640
|
|
62
|
+
*/
|
|
63
|
+
collapseActionsBelow?: number;
|
|
64
|
+
/**
|
|
65
|
+
* How many actions stay outside the overflow popover once collapsed. The
|
|
66
|
+
* **last** actions are the ones kept, since a primary call to action is
|
|
67
|
+
* conventionally rightmost.
|
|
68
|
+
*
|
|
69
|
+
* @default 1
|
|
70
|
+
*/
|
|
71
|
+
actionsVisibleWhenCollapsed?: number;
|
|
72
|
+
className?: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Restricted, discriminated subset of ButtonProps for Header actions.
|
|
76
|
+
*/
|
|
77
|
+
type HeaderActionProps = Pick<TextButtonProps, 'variant' | 'color' | 'loading' | 'disabled' | 'preIcon' | 'posIcon' | 'icon' | 'children' | 'onClick' | 'tooltip'> | Pick<IconButtonProps, 'variant' | 'color' | 'loading' | 'disabled' | 'preIcon' | 'posIcon' | 'icon' | 'children' | 'onClick' | 'tooltip'>;
|
|
78
|
+
|
|
79
|
+
export type { HeaderActionProps as H, HeaderMetaItem as a, HeaderProps as b, HeaderVariant as c };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { I as IconType } from './renderIcon-C2lEMMzb.cjs';
|
|
2
|
+
import { T as TextButtonProps, I as IconButtonProps } from './Button.types-DZRCVqyN.cjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* `hero` raises the header's prominence with a larger title - the
|
|
6
|
+
* account/profile landing-area treatment. `default` is the standard page
|
|
7
|
+
* header.
|
|
8
|
+
*
|
|
9
|
+
* Neither paints a surface: no background, border or padding. The header is
|
|
10
|
+
* normally rendered inside an already-padded region (`PageLayout` pads its
|
|
11
|
+
* header area), so a second inset here would misalign it against the rest of
|
|
12
|
+
* the page. Wrap the header in a `Card` if a surface is wanted.
|
|
13
|
+
*/
|
|
14
|
+
type HeaderVariant = 'default' | 'hero';
|
|
15
|
+
/** A single supporting fact in the header's `meta` row. */
|
|
16
|
+
interface HeaderMetaItem {
|
|
17
|
+
/** Leading label for the fact - "Role", "Joined". Omit for a bare value. */
|
|
18
|
+
label?: React.ReactNode;
|
|
19
|
+
/** The fact itself. */
|
|
20
|
+
value: React.ReactNode;
|
|
21
|
+
/** Leading icon, resolved like every other icon prop in the library. */
|
|
22
|
+
icon?: IconType;
|
|
23
|
+
}
|
|
24
|
+
interface HeaderProps {
|
|
25
|
+
/**
|
|
26
|
+
* Page or section title. Accepts inline nodes alongside the text - a
|
|
27
|
+
* status `Pill`/`Chip` beside the title is the common case - not just a
|
|
28
|
+
* string. Keep the children inline-level; the title is a heading.
|
|
29
|
+
*/
|
|
30
|
+
title: React.ReactNode;
|
|
31
|
+
/** Supporting text rendered below the title. */
|
|
32
|
+
subtitle?: React.ReactNode;
|
|
33
|
+
/**
|
|
34
|
+
* Leading media - an `Avatar`, a logo, an icon block - rendered before the
|
|
35
|
+
* title/subtitle stack and omitted entirely when not passed.
|
|
36
|
+
*
|
|
37
|
+
* Deliberately any node rather than an `Avatar` config: it is also the
|
|
38
|
+
* escape hatch for identity media larger than `Avatar`'s own `lg` size
|
|
39
|
+
* (48px), which a hero header usually wants.
|
|
40
|
+
*/
|
|
41
|
+
media?: React.ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Supporting facts rendered below the subtitle - role, plan, joined date.
|
|
44
|
+
* The row wraps one whole item at a time rather than splitting a fact
|
|
45
|
+
* across lines.
|
|
46
|
+
*/
|
|
47
|
+
meta?: HeaderMetaItem[];
|
|
48
|
+
/** Surface treatment. @default 'default' */
|
|
49
|
+
variant?: HeaderVariant;
|
|
50
|
+
/** Trailing action buttons, rendered right-aligned. */
|
|
51
|
+
actions?: HeaderActionProps[];
|
|
52
|
+
/**
|
|
53
|
+
* Header width, in px, at or below which actions past
|
|
54
|
+
* `actionsVisibleWhenCollapsed` fold into an overflow popover.
|
|
55
|
+
*
|
|
56
|
+
* Measured against the header's **own** width rather than the viewport, so
|
|
57
|
+
* it still behaves correctly next to `PageLayout`'s navigation rail or in
|
|
58
|
+
* any other narrow column. Pass `0` to opt out and always render every
|
|
59
|
+
* action inline.
|
|
60
|
+
*
|
|
61
|
+
* @default 640
|
|
62
|
+
*/
|
|
63
|
+
collapseActionsBelow?: number;
|
|
64
|
+
/**
|
|
65
|
+
* How many actions stay outside the overflow popover once collapsed. The
|
|
66
|
+
* **last** actions are the ones kept, since a primary call to action is
|
|
67
|
+
* conventionally rightmost.
|
|
68
|
+
*
|
|
69
|
+
* @default 1
|
|
70
|
+
*/
|
|
71
|
+
actionsVisibleWhenCollapsed?: number;
|
|
72
|
+
className?: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Restricted, discriminated subset of ButtonProps for Header actions.
|
|
76
|
+
*/
|
|
77
|
+
type HeaderActionProps = Pick<TextButtonProps, 'variant' | 'color' | 'loading' | 'disabled' | 'preIcon' | 'posIcon' | 'icon' | 'children' | 'onClick' | 'tooltip'> | Pick<IconButtonProps, 'variant' | 'color' | 'loading' | 'disabled' | 'preIcon' | 'posIcon' | 'icon' | 'children' | 'onClick' | 'tooltip'>;
|
|
78
|
+
|
|
79
|
+
export type { HeaderActionProps as H, HeaderMetaItem as a, HeaderProps as b, HeaderVariant as c };
|
|
@@ -86,6 +86,14 @@ interface NavigationProps {
|
|
|
86
86
|
* still narrower than this) is respected until the viewport crosses the
|
|
87
87
|
* breakpoint again. Pass `collapseBelow={0}` to opt out entirely (no
|
|
88
88
|
* viewport is ever narrower than `0px`).
|
|
89
|
+
*
|
|
90
|
+
* **On mount it can only collapse, never expand.** Loading on a viewport
|
|
91
|
+
* narrower than this collapses the rail; loading on a wider one leaves
|
|
92
|
+
* `defaultCollapsed` (or a controlled `collapsed`) exactly as given. The
|
|
93
|
+
* re-expansion above only happens on an actual crossing - applying the
|
|
94
|
+
* breakpoint's answer on mount instead made `defaultCollapsed` useless on
|
|
95
|
+
* any wide viewport, since the rail sprang open one commit after the
|
|
96
|
+
* first paint.
|
|
89
97
|
* @default 768
|
|
90
98
|
*/
|
|
91
99
|
collapseBelow?: number;
|
|
@@ -86,6 +86,14 @@ interface NavigationProps {
|
|
|
86
86
|
* still narrower than this) is respected until the viewport crosses the
|
|
87
87
|
* breakpoint again. Pass `collapseBelow={0}` to opt out entirely (no
|
|
88
88
|
* viewport is ever narrower than `0px`).
|
|
89
|
+
*
|
|
90
|
+
* **On mount it can only collapse, never expand.** Loading on a viewport
|
|
91
|
+
* narrower than this collapses the rail; loading on a wider one leaves
|
|
92
|
+
* `defaultCollapsed` (or a controlled `collapsed`) exactly as given. The
|
|
93
|
+
* re-expansion above only happens on an actual crossing - applying the
|
|
94
|
+
* breakpoint's answer on mount instead made `defaultCollapsed` useless on
|
|
95
|
+
* any wide viewport, since the rail sprang open one commit after the
|
|
96
|
+
* first paint.
|
|
89
97
|
* @default 768
|
|
90
98
|
*/
|
|
91
99
|
collapseBelow?: number;
|
package/dist/{SegmentedControl.types-Dm4SnwCK.d.cts → SegmentedControl.types-BofrEYyd.d.cts}
RENAMED
|
@@ -14,6 +14,17 @@ interface SegmentedOption {
|
|
|
14
14
|
/** Tooltip shown on hover. */
|
|
15
15
|
tooltip?: string;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* How an overflowing segment track is scrolled. Mirrors `TabsScrollButtonsProps`
|
|
19
|
+
* - the two components solve the same problem the same way.
|
|
20
|
+
*
|
|
21
|
+
* - `auto` - previous/next buttons appear only while the track overflows, and
|
|
22
|
+
* the native scrollbar is hidden because the buttons are the affordance.
|
|
23
|
+
* - `none` - no buttons; the track keeps its native scrollbar.
|
|
24
|
+
*
|
|
25
|
+
* Native scrolling (touch swipe, trackpad, shift+wheel) works either way.
|
|
26
|
+
*/
|
|
27
|
+
type SegmentedControlScrollButtonsProps = 'auto' | 'none';
|
|
17
28
|
interface SegmentedControlProps {
|
|
18
29
|
/** Segment definitions. */
|
|
19
30
|
options: SegmentedOption[];
|
|
@@ -29,7 +40,11 @@ interface SegmentedControlProps {
|
|
|
29
40
|
disabled?: boolean;
|
|
30
41
|
/** Stretch to fill the parent's width. */
|
|
31
42
|
fullWidth?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Scroll affordance for a track too wide for its container. @default 'auto'
|
|
45
|
+
*/
|
|
46
|
+
scrollButtons?: SegmentedControlScrollButtonsProps;
|
|
32
47
|
className?: string;
|
|
33
48
|
}
|
|
34
49
|
|
|
35
|
-
export type { SegmentedControlColorProps as S, SegmentedControlProps as a,
|
|
50
|
+
export type { SegmentedControlColorProps as S, SegmentedControlProps as a, SegmentedControlScrollButtonsProps as b, SegmentedOption as c };
|
|
@@ -14,6 +14,17 @@ interface SegmentedOption {
|
|
|
14
14
|
/** Tooltip shown on hover. */
|
|
15
15
|
tooltip?: string;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* How an overflowing segment track is scrolled. Mirrors `TabsScrollButtonsProps`
|
|
19
|
+
* - the two components solve the same problem the same way.
|
|
20
|
+
*
|
|
21
|
+
* - `auto` - previous/next buttons appear only while the track overflows, and
|
|
22
|
+
* the native scrollbar is hidden because the buttons are the affordance.
|
|
23
|
+
* - `none` - no buttons; the track keeps its native scrollbar.
|
|
24
|
+
*
|
|
25
|
+
* Native scrolling (touch swipe, trackpad, shift+wheel) works either way.
|
|
26
|
+
*/
|
|
27
|
+
type SegmentedControlScrollButtonsProps = 'auto' | 'none';
|
|
17
28
|
interface SegmentedControlProps {
|
|
18
29
|
/** Segment definitions. */
|
|
19
30
|
options: SegmentedOption[];
|
|
@@ -29,7 +40,11 @@ interface SegmentedControlProps {
|
|
|
29
40
|
disabled?: boolean;
|
|
30
41
|
/** Stretch to fill the parent's width. */
|
|
31
42
|
fullWidth?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Scroll affordance for a track too wide for its container. @default 'auto'
|
|
45
|
+
*/
|
|
46
|
+
scrollButtons?: SegmentedControlScrollButtonsProps;
|
|
32
47
|
className?: string;
|
|
33
48
|
}
|
|
34
49
|
|
|
35
|
-
export type { SegmentedControlColorProps as S, SegmentedControlProps as a,
|
|
50
|
+
export type { SegmentedControlColorProps as S, SegmentedControlProps as a, SegmentedControlScrollButtonsProps as b, SegmentedOption as c };
|
package/dist/alert/index.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
3
|
+
var _chunkEH42ND5Qcjs = require('../chunk-EH42ND5Q.cjs');
|
|
4
|
+
require('../chunk-WWYJNWJY.cjs');
|
|
5
5
|
require('../chunk-I6UOIS4J.cjs');
|
|
6
|
-
require('../chunk-GEHL4LKK.cjs');
|
|
7
6
|
require('../chunk-Z5U4NJTW.cjs');
|
|
7
|
+
require('../chunk-CUJBNRJJ.cjs');
|
|
8
8
|
require('../chunk-DZUJEN5N.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
exports.Alert =
|
|
11
|
+
exports.Alert = _chunkEH42ND5Qcjs.Alert;
|
|
12
12
|
//# sourceMappingURL=index.cjs.map
|
package/dist/alert/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Alert
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-O2AACVSF.js";
|
|
4
|
+
import "../chunk-L5Q6UDY3.js";
|
|
5
5
|
import "../chunk-66R54X6R.js";
|
|
6
|
-
import "../chunk-KBG77JHC.js";
|
|
7
6
|
import "../chunk-YV57RSPD.js";
|
|
7
|
+
import "../chunk-EAJHEYZM.js";
|
|
8
8
|
import "../chunk-5WRI5ZAA.js";
|
|
9
9
|
export {
|
|
10
10
|
Alert
|
package/dist/button/index.cjs
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkWWYJNWJYcjs = require('../chunk-WWYJNWJY.cjs');
|
|
6
6
|
require('../chunk-I6UOIS4J.cjs');
|
|
7
|
-
require('../chunk-GEHL4LKK.cjs');
|
|
8
7
|
require('../chunk-Z5U4NJTW.cjs');
|
|
8
|
+
require('../chunk-CUJBNRJJ.cjs');
|
|
9
9
|
require('../chunk-DZUJEN5N.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
exports.Button =
|
|
13
|
+
exports.Button = _chunkWWYJNWJYcjs.Button; exports.IconButton = _chunkWWYJNWJYcjs.IconButton;
|
|
14
14
|
//# sourceMappingURL=index.cjs.map
|
package/dist/button/index.js
CHANGED
|
@@ -2,10 +2,10 @@ import "../chunk-N5JDL4VE.js";
|
|
|
2
2
|
import {
|
|
3
3
|
Button,
|
|
4
4
|
IconButton
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-L5Q6UDY3.js";
|
|
6
6
|
import "../chunk-66R54X6R.js";
|
|
7
|
-
import "../chunk-KBG77JHC.js";
|
|
8
7
|
import "../chunk-YV57RSPD.js";
|
|
8
|
+
import "../chunk-EAJHEYZM.js";
|
|
9
9
|
import "../chunk-5WRI5ZAA.js";
|
|
10
10
|
export {
|
|
11
11
|
Button,
|
package/dist/chip/index.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-FQZ6F7FQ.cjs');
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
require('../chunk-GEHL4LKK.cjs');
|
|
4
|
+
var _chunkNEYLNRVGcjs = require('../chunk-NEYLNRVG.cjs');
|
|
6
5
|
require('../chunk-Z5U4NJTW.cjs');
|
|
6
|
+
require('../chunk-CUJBNRJJ.cjs');
|
|
7
7
|
require('../chunk-DZUJEN5N.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
exports.Chip =
|
|
10
|
+
exports.Chip = _chunkNEYLNRVGcjs.Chip;
|
|
11
11
|
//# sourceMappingURL=index.cjs.map
|
package/dist/chip/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../chunk-TPNCV7KA.js";
|
|
2
2
|
import {
|
|
3
3
|
Chip
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-KBG77JHC.js";
|
|
4
|
+
} from "../chunk-OAK7HFOJ.js";
|
|
6
5
|
import "../chunk-YV57RSPD.js";
|
|
6
|
+
import "../chunk-EAJHEYZM.js";
|
|
7
7
|
import "../chunk-5WRI5ZAA.js";
|
|
8
8
|
export {
|
|
9
9
|
Chip
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Button
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-L5Q6UDY3.js";
|
|
4
4
|
|
|
5
5
|
// src/components/Snackbar/Snackbar.context.tsx
|
|
6
6
|
import { createContext, useContext, useState, useCallback, useRef } from "react";
|
|
@@ -235,4 +235,4 @@ export {
|
|
|
235
235
|
SnackbarContainer,
|
|
236
236
|
useSnackbar
|
|
237
237
|
};
|
|
238
|
-
//# sourceMappingURL=chunk-
|
|
238
|
+
//# sourceMappingURL=chunk-25PSIDPC.js.map
|
|
@@ -3,16 +3,16 @@ import {
|
|
|
3
3
|
} from "./chunk-XJBWFDDE.js";
|
|
4
4
|
import {
|
|
5
5
|
IconButton
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import {
|
|
8
|
-
renderIcon
|
|
9
|
-
} from "./chunk-KBG77JHC.js";
|
|
6
|
+
} from "./chunk-L5Q6UDY3.js";
|
|
10
7
|
import {
|
|
11
8
|
Tooltip
|
|
12
9
|
} from "./chunk-YV57RSPD.js";
|
|
10
|
+
import {
|
|
11
|
+
renderIcon
|
|
12
|
+
} from "./chunk-EAJHEYZM.js";
|
|
13
13
|
|
|
14
14
|
// src/components/Navigation/Navigation.component.tsx
|
|
15
|
-
import { useCallback, useEffect, useState } from "react";
|
|
15
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
16
16
|
import { SquareChevronLeft, SquareChevronRight } from "lucide-react";
|
|
17
17
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
18
18
|
var NavigationBrandLogo = ({ logo }) => /* @__PURE__ */ jsx("img", { src: logo.src, alt: logo.alt, className: "eidos-navigation__brand-logo" });
|
|
@@ -40,15 +40,19 @@ var Navigation = ({
|
|
|
40
40
|
const toggleCollapsed = useCallback(() => {
|
|
41
41
|
applyCollapsed(!collapsed);
|
|
42
42
|
}, [applyCollapsed, collapsed]);
|
|
43
|
+
const applyCollapsedRef = useRef(applyCollapsed);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
applyCollapsedRef.current = applyCollapsed;
|
|
46
|
+
});
|
|
43
47
|
useEffect(() => {
|
|
44
|
-
if (collapseBelow
|
|
48
|
+
if (!collapseBelow) return;
|
|
45
49
|
if (typeof window === "undefined" || !window.matchMedia) return;
|
|
46
50
|
const query = window.matchMedia(`(max-width: ${collapseBelow}px)`);
|
|
47
|
-
|
|
48
|
-
const handleChange = (
|
|
51
|
+
if (query.matches) applyCollapsedRef.current(true);
|
|
52
|
+
const handleChange = (event) => applyCollapsedRef.current(event.matches);
|
|
49
53
|
query.addEventListener("change", handleChange);
|
|
50
54
|
return () => query.removeEventListener("change", handleChange);
|
|
51
|
-
}, [collapseBelow
|
|
55
|
+
}, [collapseBelow]);
|
|
52
56
|
const classes = ["eidos-navigation", collapsed && "eidos-navigation--collapsed", className].filter(Boolean).join(" ");
|
|
53
57
|
const brandClasses = [
|
|
54
58
|
"eidos-navigation__brand",
|
|
@@ -122,4 +126,4 @@ Navigation.displayName = "Navigation";
|
|
|
122
126
|
export {
|
|
123
127
|
Navigation
|
|
124
128
|
};
|
|
125
|
-
//# sourceMappingURL=chunk-
|
|
129
|
+
//# sourceMappingURL=chunk-2QEKSRVX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Navigation/Navigation.component.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { SquareChevronLeft, SquareChevronRight } from 'lucide-react';\nimport type { NavigationLogo, NavigationProps } from './Navigation.types';\nimport { Avatar } from '../Avatar';\nimport { IconButton } from '../Button';\nimport { Tooltip } from '../Tooltip';\nimport { renderIcon } from '../../utils';\nimport './Navigation.scss';\n\n/**\n * Renders a custom brand logo, guaranteeing correct aspect-ratio rendering\n * regardless of whether the source image is vertical, horizontal, or square\n * - and regardless of how much width is actually available, expanded or\n * collapsed. Deliberately no JS sizing/measurement at all: a fixed `height`,\n * `width: auto` (derived from the image's own intrinsic ratio), a `max-width`\n * expressed as `min(72px, 100%)` (see `.eidos-navigation__brand-logo` in\n * Navigation.scss) so it never renders wider than whatever space its\n * container - the rail, expanded or collapsed - actually has, and\n * `object-fit: contain` so it's letterboxed rather than distorted if that\n * ever clamps it below its natural width-at-32px-tall. Centering is handled\n * separately, at the row level - see `&__brand--logo-only` in Navigation.scss.\n */\nconst NavigationBrandLogo: React.FC<{ logo: NavigationLogo }> = ({ logo }) => (\n <img src={logo.src} alt={logo.alt} className=\"eidos-navigation__brand-logo\" />\n);\n\nexport const Navigation: React.FC<NavigationProps> = ({\n brand,\n items,\n footer,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n collapseBelow = 768,\n collapsible = true,\n className = '',\n}) => {\n // ── Controlled / uncontrolled collapsed state ─────────────────────────────\n // Mirrors CommandPalette's `open`/`defaultOpen` pattern - omitting\n // `collapsed` lets Navigation own its state entirely, while passing it\n // (+ `onCollapsedChange`) keeps full external control for consumers who\n // need to persist the preference or drive it from a responsive breakpoint.\n const isControlled = collapsedProp !== undefined;\n const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);\n const collapsed = isControlled ? collapsedProp : internalCollapsed;\n\n // Shared by the manual toggle button and `collapseBelow` below - uncontrolled\n // flips the internal state directly, controlled defers to `onCollapsedChange`\n // since Navigation can't change `collapsed` itself.\n const applyCollapsed = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalCollapsed(next);\n onCollapsedChange?.(next);\n },\n [isControlled, onCollapsedChange],\n );\n\n const toggleCollapsed = useCallback(() => {\n applyCollapsed(!collapsed);\n }, [applyCollapsed, collapsed]);\n\n // Read by the breakpoint effect below so it does not depend on\n // `applyCollapsed`'s identity. A consumer passing an inline\n // `onCollapsedChange` gives that callback a new identity every render,\n // which would re-run the effect - and re-apply the media query's answer -\n // on every render, overriding any manual toggle made in between crossings.\n // That is the one thing `collapseBelow` is documented not to do.\n const applyCollapsedRef = useRef(applyCollapsed);\n useEffect(() => {\n applyCollapsedRef.current = applyCollapsed;\n });\n\n // Auto-collapse/expand at a viewport breakpoint. `matchMedia`'s `change`\n // event only fires exactly at the crossing point, not on every resize\n // tick, so a manual toggle in between crossings is left alone until the\n // viewport actually crosses the breakpoint again.\n useEffect(() => {\n // `0` opts out, as documented - and it has to be checked here rather\n // than relying on `(max-width: 0px)` never matching, because the mount\n // pass below would otherwise still run.\n if (!collapseBelow) return;\n if (typeof window === 'undefined' || !window.matchMedia) return;\n\n const query = window.matchMedia(`(max-width: ${collapseBelow}px)`);\n\n // On mount this may only *collapse*, never expand. `defaultCollapsed`\n // (or a controlled `collapsed`) is the consumer's stated starting point,\n // and applying `query.matches` unconditionally threw it away one commit\n // after the first paint: on any viewport wider than the breakpoint the\n // rail visibly started collapsed and then sprang open. Crossings below\n // still drive both directions, which is what \"collapses and re-expands\"\n // refers to.\n if (query.matches) applyCollapsedRef.current(true);\n\n const handleChange = (event: MediaQueryListEvent) => applyCollapsedRef.current(event.matches);\n query.addEventListener('change', handleChange);\n return () => query.removeEventListener('change', handleChange);\n }, [collapseBelow]);\n\n const classes = ['eidos-navigation', collapsed && 'eidos-navigation--collapsed', className]\n .filter(Boolean)\n .join(' ');\n\n // A `logo` brand has no `name` text alongside it (see the discriminated\n // union in Navigation.types.ts), so there's never a second, variable-width\n // sibling competing for space - unlike the `name` variant, it's always\n // safe to just center it outright, in both expanded and collapsed states,\n // with nothing further to compute. See `&__brand--logo-only` in\n // Navigation.scss.\n const brandClasses = [\n 'eidos-navigation__brand',\n brand.logo && 'eidos-navigation__brand--logo-only',\n brand.onClick && 'eidos-navigation__brand--clickable',\n ]\n .filter(Boolean)\n .join(' ');\n\n const brandAccessibleName = brand.logo ? brand.logo.alt : brand.name;\n\n return (\n <nav className={classes} aria-label=\"Main\">\n <div\n className={brandClasses}\n onClick={brand.onClick}\n role={brand.onClick ? 'button' : undefined}\n tabIndex={brand.onClick ? 0 : undefined}\n // Only a real interactive control (role=\"button\") reliably exposes\n // `aria-label` as its accessible name - a plain, non-interactive div\n // doesn't, so the visible (if currently faded) text remains the only\n // way assistive tech gets the brand name in that case.\n aria-label={brand.onClick ? brandAccessibleName : undefined}\n onKeyDown={\n brand.onClick\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n brand.onClick?.();\n }\n }\n : undefined\n }\n >\n {brand.logo ? (\n <NavigationBrandLogo logo={brand.logo} />\n ) : (\n <>\n <Avatar name={brand.name} shape=\"square\" size=\"sm\" />\n {/* Only redundant with the wrapper's own `aria-label` when\n `brand.onClick` is set (see the note on it above) - otherwise\n this is the only accessible text for the brand at all. */}\n <span\n className=\"eidos-navigation__brand-name\"\n aria-hidden={brand.onClick ? true : undefined}\n >\n {brand.name}\n </span>\n </>\n )}\n </div>\n\n <ul className=\"eidos-navigation__items\">\n {items.map((item) => (\n <li key={item.id} className=\"eidos-navigation__item-wrapper\">\n {/* Always wrapped (disabled rather than omitted while expanded)\n so the button underneath is never unmounted/remounted across\n a collapse toggle - that would otherwise reset its own CSS\n transitions (gap, padding, justify-content) partway through\n the rail's width animation, snapping instead of easing. */}\n <Tooltip message={item.label} placement=\"right\" disabled={!collapsed}>\n <button\n type=\"button\"\n className={[\n 'eidos-navigation__item',\n item.active && 'eidos-navigation__item--active',\n ]\n .filter(Boolean)\n .join(' ')}\n disabled={item.disabled}\n onClick={item.onClick}\n aria-current={item.active ? 'page' : undefined}\n // The label fades out visually while collapsed (see\n // `.eidos-navigation__item-label` in Navigation.scss) but\n // isn't removed from the DOM, so it's given directly as the\n // accessible name here instead of relying on the (also\n // fading) visible text, and hidden from assistive tech below\n // to avoid it being announced twice alongside the `Tooltip`.\n aria-label={collapsed ? item.label : undefined}\n >\n {item.icon && renderIcon(item.icon, 'eidos-navigation__item-icon')}\n <span className=\"eidos-navigation__item-label\" aria-hidden={collapsed || undefined}>\n {item.label}\n </span>\n </button>\n </Tooltip>\n </li>\n ))}\n </ul>\n\n {footer && <div className=\"eidos-navigation__footer\">{footer}</div>}\n\n {/* Floats half in/half out of the rail's right edge (see `&__toggle`\n in Navigation.scss) rather than sitting in its own row - a\n dedicated row reserved space in the flex column even when there\n were too few items to need it.\n\n The positioning has to live on this wrapping `<span>`, not on the\n `IconButton` itself: its `tooltip` prop makes `Button` wrap it in\n `Tooltip`'s own `.eidos-tooltip-trigger` div, which - not the\n button - is the actual flex child of `.eidos-navigation`. Removing\n only the inner button from flow left that outer wrapper still\n in-flow, still consuming space and still getting `gap` applied\n around it, which is exactly why a gap remained. */}\n {collapsible && (\n <span className=\"eidos-navigation__toggle\">\n <IconButton\n icon={collapsed ? SquareChevronRight : SquareChevronLeft}\n variant=\"text\"\n color=\"secondary\"\n size=\"sm\"\n tooltip={collapsed ? 'Expand navigation' : 'Collapse navigation'}\n aria-label={collapsed ? 'Expand navigation' : 'Collapse navigation'}\n onClick={toggleCollapsed}\n />\n </span>\n )}\n </nav>\n );\n};\n\nNavigation.displayName = 'Navigation';\n"],"mappings":"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","names":[]}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
fullWidthModifier
|
|
3
|
+
} from "./chunk-EAJHEYZM.js";
|
|
4
|
+
|
|
1
5
|
// src/components/Dropdown/Dropdown.context.types.ts
|
|
2
6
|
import { createContext } from "react";
|
|
3
7
|
var DropdownContext = createContext({ level: 0 });
|
|
@@ -356,7 +360,7 @@ var DropdownInternal = ({
|
|
|
356
360
|
{
|
|
357
361
|
ref: triggerRef,
|
|
358
362
|
onClick: handleTriggerClick,
|
|
359
|
-
className: `eidos-dropdown-trigger ${fullWidth ? "eidos-dropdown-trigger
|
|
363
|
+
className: `eidos-dropdown-trigger ${fullWidth ? fullWidthModifier("eidos-dropdown-trigger") : ""} ${triggerClassName}`,
|
|
360
364
|
role: "button",
|
|
361
365
|
tabIndex: -1,
|
|
362
366
|
children: trigger
|
|
@@ -398,4 +402,4 @@ export {
|
|
|
398
402
|
useDropdownContext,
|
|
399
403
|
Dropdown
|
|
400
404
|
};
|
|
401
|
-
//# sourceMappingURL=chunk-
|
|
405
|
+
//# sourceMappingURL=chunk-2R77XZEP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Dropdown/Dropdown.context.types.ts","../src/components/Dropdown/Dropdown.context.tsx","../src/components/Dropdown/Dropdown.hooks.ts","../src/components/Dropdown/Dropdown.component.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport interface DropdownContextValue {\n level: number;\n}\n\nexport const DropdownContext = createContext<DropdownContextValue>({ level: 0 });\n","import React from 'react';\nimport { DropdownContext } from './Dropdown.context.types';\n\nexport const DropdownProvider: React.FC<{ children: React.ReactNode; level?: number }> = ({\n children,\n level = 0,\n}) => {\n return <DropdownContext.Provider value={{ level }}>{children}</DropdownContext.Provider>;\n};\n","import { useContext } from 'react';\nimport { DropdownContext } from './Dropdown.context.types';\n\nexport const useDropdownContext = () => {\n return useContext(DropdownContext);\n};\n","import React, { useState, useRef, useCallback, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { fullWidthModifier } from '../../utils';\nimport type { DropdownProps, DropdownState } from './Dropdown.types';\nimport { DropdownProvider } from './Dropdown.context';\nimport { useDropdownContext } from './Dropdown.hooks';\n\nconst DropdownInternal: React.FC<DropdownProps> = ({\n trigger,\n content,\n placement: preferredPlacement = 'bottom',\n align = 'start',\n delay = 0,\n disabled = false,\n defaultOpen = false,\n triggerClassName = '',\n contentClassName = '',\n closeOnClickOutside = true,\n closeOnEscape = true,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n autoWidth = true,\n fullWidth = false,\n triggerRef: externalTriggerRef,\n isNested = false,\n dropdownLevel,\n dropdownGroup,\n}) => {\n const context = useDropdownContext();\n const actualLevel = dropdownLevel !== undefined ? dropdownLevel : context.level;\n const [dropdownState, setDropdownState] = useState<DropdownState>({\n isVisible: defaultOpen,\n isPositioned: false,\n position: { top: 0, left: 0, placement: preferredPlacement },\n });\n const triggerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const animationFrameRef = useRef<number | undefined>(undefined);\n const isScrollingRef = useRef(false);\n\n // The element to actually measure/anchor against. When a consumer passes\n // `triggerRef`, that's an explicit statement of \"this is what I want the\n // dropdown positioned relative to\" - it must win over the internal wrapper\n // div, not just inform sizing. Consumers occasionally need `trigger` to be\n // a small anchor node (e.g. a 0-height span) sitting inside a larger,\n // variable-content field (chips, wrapped text); anchoring position to the\n // wrapper instead of that field silently drifts as soon as the field's\n // internal layout changes, since the wrapper only ever contains `trigger`\n // itself, never the field around it.\n const getTriggerElement = useCallback(\n (): HTMLElement | null => externalTriggerRef?.current ?? triggerRef.current,\n [externalTriggerRef],\n );\n\n const calculateDynamicSizing = useCallback(\n (triggerRect: DOMRect) => {\n // Shrink the panel to its content by default. This prevents the\n // position:fixed element from expanding to viewport width when children\n // use `width:100%` or `flex:1`. `minWidth` (set below) still wins when\n // the trigger is wider than the content, as CSS min-width overrides width.\n const styles: Record<string, string | number> = { width: 'max-content' };\n\n if (autoWidth && (externalTriggerRef?.current || triggerRef.current)) {\n const triggerWidth = triggerRect.width;\n styles.minWidth = triggerWidth;\n }\n\n if (minWidth !== undefined) {\n styles.minWidth = typeof minWidth === 'number' ? `${minWidth}px` : minWidth;\n }\n if (maxWidth !== undefined) {\n if (maxWidth === 'auto') {\n styles.maxWidth = 'none';\n } else {\n styles.maxWidth = typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth;\n }\n }\n if (minHeight !== undefined) {\n styles.minHeight = typeof minHeight === 'number' ? `${minHeight}px` : minHeight;\n }\n if (maxHeight !== undefined) {\n if (maxHeight === 'auto') {\n styles.maxHeight = 'none';\n } else {\n styles.maxHeight = typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight;\n }\n }\n\n const hasHeightConstraint = minHeight !== undefined || maxHeight !== undefined;\n if (hasHeightConstraint) {\n styles.overflowY = 'auto';\n } else {\n styles.overflowY = 'visible';\n }\n\n return styles;\n },\n [autoWidth, externalTriggerRef, minWidth, maxWidth, minHeight, maxHeight],\n );\n\n const calculateOptimalPosition = useCallback(\n (triggerRect: DOMRect, contentRect: DOMRect) => {\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const gap = 8;\n\n let placement: 'top' | 'bottom' | 'left' | 'right' = preferredPlacement;\n let top = 0;\n let left = 0;\n\n // Helpers for cross-axis alignment\n const alignedLeft = (() => {\n switch (align) {\n case 'end':\n return triggerRect.right - contentRect.width;\n case 'center':\n return triggerRect.left + (triggerRect.width - contentRect.width) / 2;\n default:\n return triggerRect.left; // \"start\"\n }\n })();\n const alignedTop = (() => {\n switch (align) {\n case 'end':\n return triggerRect.bottom - contentRect.height;\n case 'center':\n return triggerRect.top + (triggerRect.height - contentRect.height) / 2;\n default:\n return triggerRect.top; // \"start\"\n }\n })();\n\n switch (preferredPlacement) {\n case 'top':\n top = triggerRect.top - contentRect.height - gap;\n left = alignedLeft;\n break;\n case 'bottom':\n top = triggerRect.bottom + gap;\n left = alignedLeft;\n break;\n case 'left':\n top = alignedTop;\n left = triggerRect.left - contentRect.width - gap;\n break;\n case 'right':\n top = alignedTop;\n left = triggerRect.right + gap;\n break;\n }\n\n if (placement === 'top' && top < gap) {\n placement = 'bottom';\n top = triggerRect.bottom + gap;\n } else if (placement === 'bottom' && top + contentRect.height > viewportHeight - gap) {\n placement = 'top';\n top = triggerRect.top - contentRect.height - gap;\n } else if (placement === 'left' && left < gap) {\n placement = 'right';\n left = triggerRect.right + gap;\n } else if (placement === 'right' && left + contentRect.width > viewportWidth - gap) {\n placement = 'left';\n left = triggerRect.left - contentRect.width - gap;\n }\n\n // Always clamp to both viewport edges - not just the near one - regardless\n // of whether an explicit min/max size was passed. `autoWidth` consumers\n // (Combobox, Select, TagInput suggestions, Menu, ...) never set\n // minWidth/maxWidth, so gating this on those props left the far edge\n // (right/bottom) completely unclamped and let content overflow the\n // viewport whenever it rendered wider/taller than its trigger.\n top = Math.max(gap, Math.min(top, viewportHeight - contentRect.height - gap));\n\n left = Math.max(gap, Math.min(left, viewportWidth - contentRect.width - gap));\n\n return { top, left, placement };\n },\n [preferredPlacement, align],\n );\n\n const handleScroll = useCallback(() => {\n if (!dropdownState.isVisible || !dropdownState.isPositioned || isScrollingRef.current) return;\n\n isScrollingRef.current = true;\n\n animationFrameRef.current = requestAnimationFrame(() => {\n const triggerElement = getTriggerElement();\n if (triggerElement && contentRef.current) {\n const triggerRect = triggerElement.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n const { top, left, placement } = calculateOptimalPosition(triggerRect, contentRect);\n\n setDropdownState((prev) => ({\n ...prev,\n position: { top, left, placement },\n }));\n }\n\n isScrollingRef.current = false;\n });\n }, [\n dropdownState.isVisible,\n dropdownState.isPositioned,\n calculateOptimalPosition,\n getTriggerElement,\n ]);\n\n const handleTriggerClick = useCallback(() => {\n if (disabled) return;\n\n if (dropdownState.isVisible) {\n setDropdownState((prev) => ({\n ...prev,\n isVisible: false,\n isPositioned: false,\n }));\n } else {\n if (dropdownGroup) {\n const siblingDropdowns = document.querySelectorAll(\n `[data-dropdown-group=\"${dropdownGroup}\"][data-dropdown-content]`,\n );\n siblingDropdowns.forEach((dropdown) => {\n const dropdownElement = dropdown as HTMLElement;\n\n dropdownElement.dispatchEvent(new CustomEvent('closeSibling'));\n });\n }\n\n if (delay > 0) {\n timeoutRef.current = setTimeout(() => {\n setDropdownState((prev) => ({\n ...prev,\n isVisible: true,\n isPositioned: false,\n }));\n }, delay);\n } else {\n setDropdownState((prev) => ({\n ...prev,\n isVisible: true,\n isPositioned: false,\n }));\n }\n }\n }, [disabled, dropdownState.isVisible, delay, dropdownGroup]);\n\n useEffect(() => {\n const handleCloseSibling = () => {\n if (dropdownState.isVisible) {\n setDropdownState((prev) => ({\n ...prev,\n isVisible: false,\n isPositioned: false,\n }));\n }\n };\n\n const currentContentRef = contentRef.current;\n if (currentContentRef) {\n currentContentRef.addEventListener('closeSibling', handleCloseSibling);\n }\n\n return () => {\n if (currentContentRef) {\n currentContentRef.removeEventListener('closeSibling', handleCloseSibling);\n }\n };\n }, [dropdownState.isVisible]);\n\n const handleClickOutside = useCallback(\n (event: MouseEvent) => {\n if (!closeOnClickOutside || !dropdownState.isVisible) return;\n\n const target = event.target as Node;\n\n if (contentRef.current?.contains(target)) {\n return;\n }\n\n if (getTriggerElement()?.contains(target)) {\n return;\n }\n\n const allDropdowns = document.querySelectorAll('[data-dropdown-content]');\n for (const dropdown of allDropdowns) {\n if (dropdown === contentRef.current) continue;\n\n if (dropdown.contains(target)) {\n const clickedDropdownLevel = parseInt(\n dropdown.getAttribute('data-dropdown-level') || '0',\n );\n\n if (clickedDropdownLevel > actualLevel) {\n return;\n }\n }\n }\n\n setDropdownState((prev) => ({\n ...prev,\n isVisible: false,\n isPositioned: false,\n }));\n },\n [closeOnClickOutside, dropdownState.isVisible, actualLevel, getTriggerElement],\n );\n\n const handleEscapeKey = useCallback(\n (event: KeyboardEvent) => {\n if (closeOnEscape && event.key === 'Escape' && dropdownState.isVisible) {\n setDropdownState((prev) => ({\n ...prev,\n isVisible: false,\n isPositioned: false,\n }));\n }\n },\n [closeOnEscape, dropdownState.isVisible],\n );\n\n useEffect(() => {\n const triggerElement = getTriggerElement();\n if (\n dropdownState.isVisible &&\n !dropdownState.isPositioned &&\n contentRef.current &&\n triggerElement\n ) {\n const triggerRect = triggerElement.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n const { top, left, placement } = calculateOptimalPosition(triggerRect, contentRect);\n\n setDropdownState((prev) => ({\n ...prev,\n position: { top, left, placement },\n isPositioned: true,\n }));\n }\n }, [\n dropdownState.isVisible,\n dropdownState.isPositioned,\n calculateOptimalPosition,\n getTriggerElement,\n ]);\n\n useEffect(() => {\n const handleResize = () => {\n const triggerElement = getTriggerElement();\n if (\n dropdownState.isVisible &&\n dropdownState.isPositioned &&\n contentRef.current &&\n triggerElement\n ) {\n const triggerRect = triggerElement.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n const { top, left, placement } = calculateOptimalPosition(triggerRect, contentRect);\n\n setDropdownState((prev) => ({\n ...prev,\n position: { top, left, placement },\n }));\n }\n };\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [\n dropdownState.isVisible,\n dropdownState.isPositioned,\n calculateOptimalPosition,\n getTriggerElement,\n ]);\n\n useEffect(() => {\n if (dropdownState.isVisible) {\n window.addEventListener('scroll', handleScroll, { passive: true });\n\n document.body.addEventListener('scroll', handleScroll, { passive: true });\n }\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n document.body.removeEventListener('scroll', handleScroll);\n };\n }, [dropdownState.isVisible, handleScroll]);\n\n useEffect(() => {\n if (dropdownState.isVisible) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscapeKey);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscapeKey);\n };\n }, [dropdownState.isVisible, handleClickOutside, handleEscapeKey]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n };\n }, []);\n\n return (\n <>\n <div\n ref={triggerRef}\n onClick={handleTriggerClick}\n className={`eidos-dropdown-trigger ${fullWidth ? fullWidthModifier('eidos-dropdown-trigger') : ''} ${triggerClassName}`}\n role=\"button\"\n tabIndex={-1}\n >\n {trigger}\n </div>\n {dropdownState.isVisible &&\n createPortal(\n <div\n ref={contentRef}\n data-dropdown-content\n data-dropdown-level={actualLevel}\n data-dropdown-group={dropdownGroup || ''}\n className={`eidos-dropdown-content eidos-dropdown-content--${dropdownState.position.placement} ${isNested ? 'eidos-dropdown-content--nested' : ''} ${dropdownState.isPositioned ? 'eidos-dropdown-content--positioned' : ''} ${contentClassName || ''}`}\n style={{\n top: dropdownState.position.top,\n left: dropdownState.position.left,\n ...calculateDynamicSizing(\n getTriggerElement()?.getBoundingClientRect() || new DOMRect(),\n ),\n }}\n role=\"menu\"\n >\n {content}\n </div>,\n document.body,\n )}\n </>\n );\n};\n\nexport const Dropdown: React.FC<DropdownProps> = (props) => {\n const context = useDropdownContext();\n const nextLevel = props.dropdownLevel !== undefined ? props.dropdownLevel : context.level + 1;\n\n return (\n <DropdownProvider level={nextLevel}>\n <DropdownInternal {...props} />\n </DropdownProvider>\n );\n};\n\nDropdown.displayName = 'Dropdown';\n"],"mappings":"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","names":["jsx"]}
|
|
@@ -13,26 +13,26 @@ import {
|
|
|
13
13
|
subscribeToFontLoads,
|
|
14
14
|
toFontStack,
|
|
15
15
|
useTheme
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-KQJ3IAFT.js";
|
|
17
17
|
import {
|
|
18
18
|
Slider
|
|
19
19
|
} from "./chunk-2BC4M4QZ.js";
|
|
20
|
+
import {
|
|
21
|
+
Select
|
|
22
|
+
} from "./chunk-X3U7SDOZ.js";
|
|
20
23
|
import {
|
|
21
24
|
Card
|
|
22
25
|
} from "./chunk-EF4Y6Q35.js";
|
|
23
26
|
import {
|
|
24
27
|
ColorPicker
|
|
25
|
-
} from "./chunk-
|
|
26
|
-
import {
|
|
27
|
-
Select
|
|
28
|
-
} from "./chunk-A7WQINIG.js";
|
|
28
|
+
} from "./chunk-YDPEHUMH.js";
|
|
29
29
|
import {
|
|
30
30
|
Alert
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-O2AACVSF.js";
|
|
32
32
|
import {
|
|
33
33
|
Button,
|
|
34
34
|
IconButton
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-L5Q6UDY3.js";
|
|
36
36
|
import {
|
|
37
37
|
Tooltip
|
|
38
38
|
} from "./chunk-YV57RSPD.js";
|
|
@@ -387,4 +387,4 @@ ThemeEditor.displayName = "ThemeEditor";
|
|
|
387
387
|
export {
|
|
388
388
|
ThemeEditor
|
|
389
389
|
};
|
|
390
|
-
//# sourceMappingURL=chunk-
|
|
390
|
+
//# sourceMappingURL=chunk-2WP27QAN.js.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DatePicker
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PR7CVQ4R.js";
|
|
4
4
|
import {
|
|
5
5
|
Select
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-X3U7SDOZ.js";
|
|
7
7
|
import {
|
|
8
8
|
Input
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-JRLUZDKA.js";
|
|
10
10
|
import {
|
|
11
11
|
Dropdown
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-2R77XZEP.js";
|
|
13
13
|
import {
|
|
14
14
|
Badge
|
|
15
15
|
} from "./chunk-3SKI6FXB.js";
|
|
16
16
|
import {
|
|
17
17
|
Button
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-L5Q6UDY3.js";
|
|
19
19
|
|
|
20
20
|
// src/components/Table/TableFiltersDropdown.component.tsx
|
|
21
21
|
import { useMemo, useState, useEffect, useRef } from "react";
|
|
@@ -4433,4 +4433,4 @@ export {
|
|
|
4433
4433
|
sortableKeyboardCoordinates,
|
|
4434
4434
|
TableFiltersDropdown
|
|
4435
4435
|
};
|
|
4436
|
-
//# sourceMappingURL=chunk-
|
|
4436
|
+
//# sourceMappingURL=chunk-3RLGH45H.js.map
|