@fangxinyan/lumina 0.6.2 → 0.6.4
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 +2 -1
- package/dist/{Alert-JJ7GB3UU.css → Alert-HVPI6L4V.css} +9 -2
- package/dist/Alert.cjs +3 -3
- package/dist/Alert.d.cts +3 -2
- package/dist/Alert.d.ts +3 -2
- package/dist/Alert.js +2 -2
- package/dist/{AppShell-RCALXUCZ.css → AppShell-FZCD4C56.css} +4 -4
- package/dist/AppShell.cjs +5 -5
- package/dist/AppShell.js +1 -1
- package/dist/{AutoComplete-P5KZMZO5.css → AutoComplete-4YZBMW4E.css} +2 -2
- package/dist/AutoComplete.cjs +5 -5
- package/dist/AutoComplete.js +4 -4
- package/dist/{Avatar-R5A4AFKZ.css → Avatar-TNPOHVY5.css} +1 -1
- package/dist/Avatar.cjs +2 -2
- package/dist/Avatar.js +1 -1
- package/dist/Badge.cjs +2 -2
- package/dist/Badge.d.cts +1 -0
- package/dist/Badge.d.ts +1 -0
- package/dist/Badge.js +1 -1
- package/dist/Button-TUMZUQLI.css +118 -0
- package/dist/Button.cjs +3 -3
- package/dist/Button.d.cts +6 -5
- package/dist/Button.d.ts +6 -5
- package/dist/Button.js +2 -2
- package/dist/{Calendar-LHZELUDL.css → Calendar-RUTPKREW.css} +4 -4
- package/dist/Calendar.cjs +3 -3
- package/dist/Calendar.js +2 -2
- package/dist/{Card-6RMVIHWX.css → Card-MA6SV7D5.css} +6 -6
- package/dist/Card.cjs +2 -2
- package/dist/Card.js +1 -1
- package/dist/{Cascader-C2DFSMKJ.css → Cascader-ANEQUPMI.css} +21 -8
- package/dist/Cascader.cjs +5 -5
- package/dist/Cascader.d.cts +4 -2
- package/dist/Cascader.d.ts +4 -2
- package/dist/Cascader.js +4 -4
- package/dist/{Checkbox-U5EUDSYS.css → Checkbox-EDNPZRIP.css} +3 -3
- package/dist/Checkbox.cjs +3 -3
- package/dist/Checkbox.js +2 -2
- package/dist/{Collapse-66U5YJFY.css → Collapse-UNBHEPYP.css} +2 -2
- package/dist/Collapse.cjs +3 -3
- package/dist/Collapse.js +2 -2
- package/dist/{ColorPicker-SDDQGHCM.css → ColorPicker-LPG6QPYF.css} +7 -7
- package/dist/ColorPicker.cjs +2 -2
- package/dist/ColorPicker.js +1 -1
- package/dist/{CommandPalette-T45DBMPY.css → CommandPalette-RTKWNH2D.css} +3 -3
- package/dist/CommandPalette.cjs +5 -5
- package/dist/CommandPalette.js +4 -4
- package/dist/{ContextMenu-FKW6CQW4.css → ContextMenu-WRR2SSWL.css} +3 -3
- package/dist/ContextMenu.cjs +2 -2
- package/dist/ContextMenu.js +1 -1
- package/dist/{Divider-OEE4Q2KS.css → Divider-RPQCVH3J.css} +2 -2
- package/dist/Divider.cjs +2 -2
- package/dist/Divider.js +1 -1
- package/dist/{Drawer-IPGB4CXH.css → Drawer-7N3URAJ6.css} +8 -5
- package/dist/Drawer.cjs +3 -3
- package/dist/Drawer.js +2 -2
- package/dist/{Empty-DC2LPORC.css → Empty-CZTRZMZQ.css} +1 -1
- package/dist/Empty.cjs +2 -2
- package/dist/Empty.js +1 -1
- package/dist/{Form-5GRVZNDO.css → Form-NGCQWTMZ.css} +1 -1
- package/dist/Form.cjs +4 -4
- package/dist/Form.js +1 -1
- package/dist/Icon.cjs +55 -47
- package/dist/Icon.d.cts +9 -1
- package/dist/Icon.d.ts +9 -1
- package/dist/Icon.js +1 -1
- package/dist/{Image-4MN34O6P.css → Image-SGSRTHQX.css} +81 -3
- package/dist/Image.cjs +12 -4
- package/dist/Image.d.cts +79 -6
- package/dist/Image.d.ts +79 -6
- package/dist/Image.js +2 -2
- package/dist/{Input-3G4ONWNU.css → Input-7GDPGP3E.css} +22 -12
- package/dist/Input.cjs +5 -5
- package/dist/Input.d.cts +4 -3
- package/dist/Input.d.ts +4 -3
- package/dist/Input.js +3 -3
- package/dist/InputNumber.cjs +5 -5
- package/dist/InputNumber.js +4 -4
- package/dist/{List-W5BW4D2P.css → List-LSMU5QAC.css} +3 -3
- package/dist/List.cjs +2 -2
- package/dist/List.js +1 -1
- package/dist/{Message-2MZ3LFPU.css → Message-H222YGR6.css} +1 -1
- package/dist/Message.cjs +6 -6
- package/dist/Message.js +2 -2
- package/dist/{Modal-2QNDW4SO.css → Modal-MCFDYVUQ.css} +3 -3
- package/dist/Modal.cjs +4 -4
- package/dist/Modal.d.cts +1 -0
- package/dist/Modal.d.ts +1 -0
- package/dist/Modal.js +3 -3
- package/dist/{Pagination-YIRYJUXP.css → Pagination-YSZSNFHG.css} +5 -5
- package/dist/Pagination.cjs +7 -7
- package/dist/Pagination.js +6 -6
- package/dist/{Popover-DVGQGWX6.css → Popover-Y3LDCJPW.css} +1 -1
- package/dist/Popover.cjs +2 -2
- package/dist/Popover.js +1 -1
- package/dist/{Progress-CHV7DN6Y.css → Progress-CZNXCYGW.css} +1 -1
- package/dist/Progress.cjs +2 -2
- package/dist/Progress.js +1 -1
- package/dist/{Radio-GVFDPAZM.css → Radio-IQKASYDF.css} +4 -4
- package/dist/Radio.cjs +3 -3
- package/dist/Radio.js +1 -1
- package/dist/{Select-JVBQAZBG.css → Select-YZ2NUJSX.css} +44 -19
- package/dist/Select.cjs +6 -6
- package/dist/Select.d.cts +4 -3
- package/dist/Select.d.ts +4 -3
- package/dist/Select.js +5 -5
- package/dist/Skeleton.cjs +2 -2
- package/dist/Skeleton.js +1 -1
- package/dist/{Slider-3JKA5EW6.css → Slider-UM2IZZBH.css} +7 -7
- package/dist/Slider.cjs +2 -2
- package/dist/Slider.js +1 -1
- package/dist/{Spin-3GJNMSIH.css → Spin-GONGPV4Q.css} +1 -1
- package/dist/Spin.cjs +2 -2
- package/dist/Spin.js +1 -1
- package/dist/Splitter.cjs +2 -2
- package/dist/Splitter.js +1 -1
- package/dist/{StatusBar-CDS2GPSI.css → StatusBar-FJKEEPXU.css} +3 -7
- package/dist/StatusBar.cjs +3 -3
- package/dist/StatusBar.js +1 -1
- package/dist/Surface-UDDN3DGL.css +42 -0
- package/dist/Surface.cjs +16 -0
- package/dist/Surface.d.cts +60 -0
- package/dist/Surface.d.ts +60 -0
- package/dist/Surface.js +3 -0
- package/dist/{Switch-36KJNDXM.css → Switch-COAQIOMH.css} +8 -5
- package/dist/Switch.cjs +2 -2
- package/dist/Switch.js +1 -1
- package/dist/{Table-ATJJQLKU.css → Table-IYJTPY6J.css} +16 -16
- package/dist/Table.cjs +9 -9
- package/dist/Table.js +8 -8
- package/dist/{TablePro-3XVHYLSL.css → TablePro-JRSBPXB5.css} +1 -1
- package/dist/TablePro.cjs +10 -10
- package/dist/TablePro.js +9 -9
- package/dist/{Tabs-BLSNI2T5.css → Tabs-X5U5PCPV.css} +2 -2
- package/dist/Tabs.cjs +2 -2
- package/dist/Tabs.js +1 -1
- package/dist/{Tag-LB3OOJAO.css → Tag-G2XWAL7A.css} +15 -2
- package/dist/Tag.cjs +3 -3
- package/dist/Tag.d.cts +4 -3
- package/dist/Tag.d.ts +4 -3
- package/dist/Tag.js +2 -2
- package/dist/{Textarea-YNET7IBH.css → Textarea-YHWKHIFE.css} +3 -3
- package/dist/Textarea.cjs +4 -4
- package/dist/Textarea.js +2 -2
- package/dist/Theme.cjs +14 -10
- package/dist/Theme.d.cts +34 -7
- package/dist/Theme.d.ts +34 -7
- package/dist/Theme.js +1 -1
- package/dist/ThemePanel-76LB3YA5.css +509 -0
- package/dist/ThemePanel.cjs +29 -0
- package/dist/ThemePanel.d.cts +80 -0
- package/dist/ThemePanel.d.ts +80 -0
- package/dist/ThemePanel.js +12 -0
- package/dist/{Timeline-3ZHOHPXT.css → Timeline-ZIM7QFQC.css} +1 -1
- package/dist/Timeline.cjs +3 -3
- package/dist/Timeline.js +2 -2
- package/dist/{Tooltip-DMKUPC24.css → Tooltip-WI23DSRQ.css} +1 -1
- package/dist/Tooltip.cjs +2 -2
- package/dist/Tooltip.js +1 -1
- package/dist/{Typography-NKPWTJCV.css → Typography-GQNIJ4XD.css} +5 -5
- package/dist/Typography.cjs +7 -7
- package/dist/Typography.d.cts +1 -0
- package/dist/Typography.d.ts +1 -0
- package/dist/Typography.js +2 -2
- package/dist/chunk-2NT5QKEX.js +243 -0
- package/dist/{chunk-6BWELOCT.js → chunk-2SCXQ7QS.js} +2 -2
- package/dist/{chunk-5WAXZJG5.cjs → chunk-2ZADGBUN.cjs} +6 -6
- package/dist/{chunk-7NGMQIST.js → chunk-2ZFJTMEF.js} +4 -4
- package/dist/{chunk-UMDGS4BP.js → chunk-3YP7CBJT.js} +5 -5
- package/dist/{chunk-UUHFKIWP.cjs → chunk-4UKM4KAC.cjs} +2 -2
- package/dist/{chunk-WGZ2KJTZ.js → chunk-56PHETWO.js} +3 -3
- package/dist/{chunk-MQV2XN4B.cjs → chunk-5JPAUQ5H.cjs} +7 -7
- package/dist/{chunk-OQBDU5I2.cjs → chunk-5NFSDFBB.cjs} +4 -4
- package/dist/{chunk-SKMP2A5O.cjs → chunk-66GXZQKL.cjs} +4 -4
- package/dist/{chunk-TZJH5HBT.cjs → chunk-66T76GII.cjs} +6 -6
- package/dist/chunk-6EOSMK34.cjs +194 -0
- package/dist/{chunk-WNM5RVXR.cjs → chunk-6GQPF3EI.cjs} +2 -2
- package/dist/{chunk-TJII7BQ2.cjs → chunk-6LARTGLP.cjs} +11 -1
- package/dist/chunk-6SPMHY54.js +191 -0
- package/dist/{chunk-YLIQ37KY.cjs → chunk-6XVLERA3.cjs} +2 -2
- package/dist/{chunk-WKKSAGYH.js → chunk-7D76MI37.js} +8 -8
- package/dist/chunk-7NZ2A4MA.js +495 -0
- package/dist/{chunk-KLEKKZ73.js → chunk-7ZNGHWVS.js} +1 -1
- package/dist/{chunk-4WTU5P3O.cjs → chunk-ACQSRMLF.cjs} +5 -5
- package/dist/{chunk-FFZ6OMZI.js → chunk-AJH2O4WC.js} +3 -3
- package/dist/{chunk-CXWEOAVU.js → chunk-BCFCSVGJ.js} +3 -3
- package/dist/{chunk-NTS5L4NQ.cjs → chunk-BJ6WUVEG.cjs} +4 -4
- package/dist/{chunk-S3VXH5L4.cjs → chunk-C24W6PTJ.cjs} +2 -2
- package/dist/{chunk-GMN74OEY.cjs → chunk-CBKJXKVI.cjs} +2 -2
- package/dist/{chunk-33NCTOEB.js → chunk-CEZ2DR4R.js} +3 -3
- package/dist/{chunk-JD7A6VM3.js → chunk-CNGKJYGZ.js} +6 -6
- package/dist/{chunk-TEG7NJHS.cjs → chunk-D5PCIVID.cjs} +4 -4
- package/dist/{chunk-K2KYM7LW.cjs → chunk-D64IPDUE.cjs} +4 -4
- package/dist/chunk-DYHNOYRC.cjs +271 -0
- package/dist/{chunk-CUXV6QNN.cjs → chunk-DYSGXQUK.cjs} +7 -7
- package/dist/{chunk-3YJU3D5S.cjs → chunk-F3LHLYX6.cjs} +2 -2
- package/dist/{chunk-HPFQXYKG.cjs → chunk-GBKUGKIY.cjs} +11 -11
- package/dist/{chunk-MUXP7ASL.js → chunk-GUZ2DNDC.js} +3 -3
- package/dist/{chunk-K6F25JXT.js → chunk-GZCU6HXD.js} +2 -2
- package/dist/{chunk-USQ43DJ5.js → chunk-HFUHQUPQ.js} +2 -2
- package/dist/{chunk-7JN6FJ55.js → chunk-HU7T64Y3.js} +2 -2
- package/dist/{chunk-OYMJVU66.cjs → chunk-IDJCFYPP.cjs} +16 -16
- package/dist/{chunk-KD4YYIIO.cjs → chunk-IHK2FRTS.cjs} +2 -2
- package/dist/{chunk-Q5SZIU7Z.cjs → chunk-JFQ53MO4.cjs} +1 -1
- package/dist/{chunk-7PQJCLIR.js → chunk-KMG7OMOS.js} +2 -2
- package/dist/{chunk-MT7UWY6T.cjs → chunk-L27C5O4W.cjs} +4 -4
- package/dist/chunk-LFTCK2VM.cjs +1194 -0
- package/dist/{chunk-EJBHR2P5.js → chunk-LI4XJTEA.js} +3 -3
- package/dist/{chunk-45VJGBGN.js → chunk-LQLOOUS3.js} +2 -2
- package/dist/{chunk-PL6DRFUO.cjs → chunk-MOMLQP7B.cjs} +2 -2
- package/dist/{chunk-OF7JIYBY.cjs → chunk-MYHBC3HA.cjs} +2 -2
- package/dist/{chunk-LKK2AA7W.js → chunk-MYRLCN6V.js} +2 -2
- package/dist/{chunk-6ACKL3WH.cjs → chunk-N2BTMKF2.cjs} +5 -5
- package/dist/chunk-N2COYOXE.cjs +526 -0
- package/dist/{chunk-2TL37AP5.cjs → chunk-N3OLFKV5.cjs} +1 -1
- package/dist/{chunk-5JSDQ6QQ.cjs → chunk-NDO22RER.cjs} +2 -2
- package/dist/{chunk-XD3JGL5O.js → chunk-NE7IUGMK.js} +3 -3
- package/dist/{chunk-F6RYCBQG.js → chunk-NFXHIO3G.js} +1 -1
- package/dist/chunk-NJCHFXGC.js +1170 -0
- package/dist/chunk-NT6CJYI3.cjs +129 -0
- package/dist/chunk-O43DOE7V.js +106 -0
- package/dist/{chunk-GNEZD7KE.cjs → chunk-O4BOBOYV.cjs} +2 -2
- package/dist/{chunk-3AS5B7MQ.cjs → chunk-OGPDCBPD.cjs} +12 -12
- package/dist/{chunk-6YQTMI55.js → chunk-OHFZ7L4T.js} +2 -2
- package/dist/{chunk-CEJ7VBR6.js → chunk-OHIFKN4E.js} +4 -4
- package/dist/{chunk-46VXFTEC.js → chunk-OQU3TJCF.js} +3 -3
- package/dist/{chunk-5TKC6IEN.js → chunk-PEJLXJQD.js} +1 -1
- package/dist/{chunk-HWFM4MAT.js → chunk-PKHITACT.js} +2 -2
- package/dist/{chunk-CHMCL7AV.js → chunk-PNZJFLMY.js} +3 -3
- package/dist/{chunk-XRR3CYQL.js → chunk-QP7RXZES.js} +2 -2
- package/dist/{chunk-QGHYQCF3.cjs → chunk-QY76WTO5.cjs} +9 -9
- package/dist/{chunk-EIY7KEJ3.cjs → chunk-R74TZKJS.cjs} +4 -4
- package/dist/{chunk-GNEZQMKH.js → chunk-REMJWNAT.js} +5 -5
- package/dist/{chunk-SWBWZIL4.cjs → chunk-S6OKX4H7.cjs} +2 -2
- package/dist/{chunk-EC4WGEAJ.js → chunk-SABWUELE.js} +2 -2
- package/dist/{chunk-QKQHZIF3.cjs → chunk-SG42F5VB.cjs} +2 -2
- package/dist/{chunk-5C2AI2SD.js → chunk-SQIWPU6V.js} +2 -2
- package/dist/{chunk-ZIP7F4UF.cjs → chunk-SYWTT5TY.cjs} +5 -5
- package/dist/{chunk-OBEKX4VR.js → chunk-TVUBGXWA.js} +2 -2
- package/dist/{chunk-7PNJI5UE.cjs → chunk-U2H4DRMV.cjs} +2 -2
- package/dist/{chunk-6LZ54NPO.cjs → chunk-VAXWWJJP.cjs} +34 -24
- package/dist/{chunk-DQTSTJ6O.js → chunk-VNNQYJLT.js} +4 -4
- package/dist/{chunk-KGSADAOD.cjs → chunk-VSUMJX6Z.cjs} +2 -2
- package/dist/{chunk-ON4DEDMI.js → chunk-W5CJC7S7.js} +3 -3
- package/dist/{chunk-AXZ7ELMA.js → chunk-WEJKY3DF.js} +2 -2
- package/dist/{chunk-EQEJTN3V.js → chunk-WXWFMWWF.js} +3 -3
- package/dist/{chunk-TEEFR2FD.js → chunk-XHQGMMH7.js} +2 -2
- package/dist/{chunk-XTIN5545.js → chunk-XVP7IKLZ.js} +32 -22
- package/dist/{chunk-ELNT3CFO.js → chunk-Y5F7ZTBH.js} +2 -2
- package/dist/{chunk-QCILPZWP.js → chunk-YJEXAO2I.js} +2 -2
- package/dist/{chunk-7ABFUIOB.cjs → chunk-YNCDTKAE.cjs} +2 -2
- package/dist/{chunk-35ZGBAA3.cjs → chunk-YSCIMHOI.cjs} +6 -6
- package/dist/{chunk-AWXCSX6J.js → chunk-YSXD344H.js} +5 -5
- package/dist/{chunk-OF3SGLZY.js → chunk-YT5NLCRC.js} +10 -2
- package/dist/{chunk-HZSIUOCN.cjs → chunk-YUKXNWVE.cjs} +1 -1
- package/dist/{chunk-65FIH5A3.js → chunk-YVTLHTG6.js} +2 -2
- package/dist/{chunk-GENABQYA.cjs → chunk-Z4PZ2ZHI.cjs} +2 -2
- package/dist/{chunk-FBVVRTX2.cjs → chunk-ZPKHGKVL.cjs} +4 -4
- package/dist/{chunk-FJNWUELL.js → chunk-ZPP7LTHP.js} +3 -3
- package/dist/{chunk-IZOHYJUQ.cjs → chunk-ZWCDB5PP.cjs} +2 -2
- package/dist/index.cjs +226 -183
- package/dist/index.d.cts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +49 -46
- package/dist/styles.css +873 -200
- package/dist/{tokens-BIIUTPKN.css → tokens-EF34LSWI.css} +42 -17
- package/dist/tokens.css +42 -17
- package/docs/llms/alert.md +4 -3
- package/docs/llms/button.md +4 -3
- package/docs/llms/cascader.md +3 -0
- package/docs/llms/image.md +72 -1
- package/docs/llms/input.md +3 -2
- package/docs/llms/select.md +2 -2
- package/docs/llms/surface.md +90 -0
- package/docs/llms/tag.md +3 -2
- package/docs/llms/theme.md +65 -6
- package/docs/llms/themepanel.md +128 -0
- package/docs/llms.md +6 -4
- package/package.json +16 -1
- package/dist/Button-SDQD25AG.css +0 -98
- package/dist/chunk-B2KEZQ6S.cjs +0 -116
- package/dist/chunk-NN25YMOL.js +0 -251
- package/dist/chunk-PH3YECMF.js +0 -90
- package/dist/chunk-RF2EY5JS.cjs +0 -281
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ThemeMode, ThemePreset, ThemeBaseMode } from './Theme.cjs';
|
|
3
|
+
|
|
4
|
+
type ThemePanelSection = "mode" | "presets" | "accent" | "shadow" | "intensity" | "radius" | "font" | "density";
|
|
5
|
+
interface ThemePanelPresetOption {
|
|
6
|
+
/** Mode key. If it exists in `theme.themes`, the registered preset is used. */
|
|
7
|
+
key: ThemeMode;
|
|
8
|
+
label: React.ReactNode;
|
|
9
|
+
description?: React.ReactNode;
|
|
10
|
+
/** Optional preset to apply and register on click. */
|
|
11
|
+
preset?: ThemePreset;
|
|
12
|
+
}
|
|
13
|
+
interface ThemePanelModeOption {
|
|
14
|
+
key: ThemeMode;
|
|
15
|
+
label: React.ReactNode;
|
|
16
|
+
}
|
|
17
|
+
interface ThemePanelCreatedThemeMeta {
|
|
18
|
+
key: ThemeMode;
|
|
19
|
+
label: string;
|
|
20
|
+
description: string;
|
|
21
|
+
}
|
|
22
|
+
interface ThemePanelCreateThemePayload extends ThemePanelCreatedThemeMeta {
|
|
23
|
+
preset: ThemePreset;
|
|
24
|
+
/** Ready-to-append preset option for callers that control `presetOptions`. */
|
|
25
|
+
presetOption: ThemePanelPresetOption;
|
|
26
|
+
}
|
|
27
|
+
interface ThemePanelDeleteThemePayload extends ThemePanelCreatedThemeMeta {
|
|
28
|
+
preset?: ThemePreset;
|
|
29
|
+
}
|
|
30
|
+
type ThemePanelDefaultPresetKey = "light" | "dark" | "porcelain" | "assistant" | "assistantDark";
|
|
31
|
+
type ThemePanelDefaultPreset = ThemePreset & {
|
|
32
|
+
base: ThemeBaseMode;
|
|
33
|
+
tokens: NonNullable<ThemePreset["tokens"]>;
|
|
34
|
+
};
|
|
35
|
+
declare const THEME_PANEL_DEFAULT_THEME_PRESETS: Record<ThemePanelDefaultPresetKey, ThemePanelDefaultPreset>;
|
|
36
|
+
declare const THEME_PANEL_DEFAULT_PRESET_OPTIONS: ThemePanelPresetOption[];
|
|
37
|
+
interface ThemePanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
38
|
+
/** Header title. Pass `null` to hide the title text while keeping the panel layout. */
|
|
39
|
+
title?: React.ReactNode;
|
|
40
|
+
/** Secondary header text. */
|
|
41
|
+
description?: React.ReactNode;
|
|
42
|
+
/** Sections to render, in order. */
|
|
43
|
+
sections?: ThemePanelSection[];
|
|
44
|
+
/** Built-in mode buttons. */
|
|
45
|
+
modeOptions?: ThemePanelModeOption[];
|
|
46
|
+
/** Named theme preset cards. Defaults to Lumina presets plus registered `theme.themes`. */
|
|
47
|
+
presetOptions?: ThemePanelPresetOption[];
|
|
48
|
+
/** Initial color used by the custom accent picker. */
|
|
49
|
+
defaultCustomAccent?: string;
|
|
50
|
+
/** Show the inline create-theme flow in the preset section. */
|
|
51
|
+
allowCreateTheme?: boolean;
|
|
52
|
+
/** Default name for a newly created theme. */
|
|
53
|
+
defaultCreateThemeName?: string;
|
|
54
|
+
/** Prefix used when generating a mode key for a created theme. */
|
|
55
|
+
createThemeKeyPrefix?: string;
|
|
56
|
+
/** Called after a custom theme is saved into the nearest ThemeProvider. */
|
|
57
|
+
onCreateTheme?: (payload: ThemePanelCreateThemePayload) => void;
|
|
58
|
+
/** Show delete actions for non-default named themes. */
|
|
59
|
+
allowDeleteTheme?: boolean;
|
|
60
|
+
/** Called after a non-default theme is removed from the nearest ThemeProvider. */
|
|
61
|
+
onDeleteTheme?: (payload: ThemePanelDeleteThemePayload) => void;
|
|
62
|
+
/** Show the reset button. */
|
|
63
|
+
showReset?: boolean;
|
|
64
|
+
/** Compact typography and spacing. */
|
|
65
|
+
compact?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* `ThemePanel` — ready-made controls for quickly editing and saving the nearest Lumina theme.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```tsx
|
|
72
|
+
* <ThemeProvider>
|
|
73
|
+
* <ThemePanel />
|
|
74
|
+
* <App />
|
|
75
|
+
* </ThemeProvider>
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
declare const ThemePanel: React.ForwardRefExoticComponent<ThemePanelProps & React.RefAttributes<HTMLDivElement>>;
|
|
79
|
+
|
|
80
|
+
export { THEME_PANEL_DEFAULT_PRESET_OPTIONS, THEME_PANEL_DEFAULT_THEME_PRESETS, ThemePanel, type ThemePanelCreateThemePayload, type ThemePanelCreatedThemeMeta, type ThemePanelDeleteThemePayload, type ThemePanelModeOption, type ThemePanelPresetOption, type ThemePanelProps, type ThemePanelSection };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ThemeMode, ThemePreset, ThemeBaseMode } from './Theme.js';
|
|
3
|
+
|
|
4
|
+
type ThemePanelSection = "mode" | "presets" | "accent" | "shadow" | "intensity" | "radius" | "font" | "density";
|
|
5
|
+
interface ThemePanelPresetOption {
|
|
6
|
+
/** Mode key. If it exists in `theme.themes`, the registered preset is used. */
|
|
7
|
+
key: ThemeMode;
|
|
8
|
+
label: React.ReactNode;
|
|
9
|
+
description?: React.ReactNode;
|
|
10
|
+
/** Optional preset to apply and register on click. */
|
|
11
|
+
preset?: ThemePreset;
|
|
12
|
+
}
|
|
13
|
+
interface ThemePanelModeOption {
|
|
14
|
+
key: ThemeMode;
|
|
15
|
+
label: React.ReactNode;
|
|
16
|
+
}
|
|
17
|
+
interface ThemePanelCreatedThemeMeta {
|
|
18
|
+
key: ThemeMode;
|
|
19
|
+
label: string;
|
|
20
|
+
description: string;
|
|
21
|
+
}
|
|
22
|
+
interface ThemePanelCreateThemePayload extends ThemePanelCreatedThemeMeta {
|
|
23
|
+
preset: ThemePreset;
|
|
24
|
+
/** Ready-to-append preset option for callers that control `presetOptions`. */
|
|
25
|
+
presetOption: ThemePanelPresetOption;
|
|
26
|
+
}
|
|
27
|
+
interface ThemePanelDeleteThemePayload extends ThemePanelCreatedThemeMeta {
|
|
28
|
+
preset?: ThemePreset;
|
|
29
|
+
}
|
|
30
|
+
type ThemePanelDefaultPresetKey = "light" | "dark" | "porcelain" | "assistant" | "assistantDark";
|
|
31
|
+
type ThemePanelDefaultPreset = ThemePreset & {
|
|
32
|
+
base: ThemeBaseMode;
|
|
33
|
+
tokens: NonNullable<ThemePreset["tokens"]>;
|
|
34
|
+
};
|
|
35
|
+
declare const THEME_PANEL_DEFAULT_THEME_PRESETS: Record<ThemePanelDefaultPresetKey, ThemePanelDefaultPreset>;
|
|
36
|
+
declare const THEME_PANEL_DEFAULT_PRESET_OPTIONS: ThemePanelPresetOption[];
|
|
37
|
+
interface ThemePanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
38
|
+
/** Header title. Pass `null` to hide the title text while keeping the panel layout. */
|
|
39
|
+
title?: React.ReactNode;
|
|
40
|
+
/** Secondary header text. */
|
|
41
|
+
description?: React.ReactNode;
|
|
42
|
+
/** Sections to render, in order. */
|
|
43
|
+
sections?: ThemePanelSection[];
|
|
44
|
+
/** Built-in mode buttons. */
|
|
45
|
+
modeOptions?: ThemePanelModeOption[];
|
|
46
|
+
/** Named theme preset cards. Defaults to Lumina presets plus registered `theme.themes`. */
|
|
47
|
+
presetOptions?: ThemePanelPresetOption[];
|
|
48
|
+
/** Initial color used by the custom accent picker. */
|
|
49
|
+
defaultCustomAccent?: string;
|
|
50
|
+
/** Show the inline create-theme flow in the preset section. */
|
|
51
|
+
allowCreateTheme?: boolean;
|
|
52
|
+
/** Default name for a newly created theme. */
|
|
53
|
+
defaultCreateThemeName?: string;
|
|
54
|
+
/** Prefix used when generating a mode key for a created theme. */
|
|
55
|
+
createThemeKeyPrefix?: string;
|
|
56
|
+
/** Called after a custom theme is saved into the nearest ThemeProvider. */
|
|
57
|
+
onCreateTheme?: (payload: ThemePanelCreateThemePayload) => void;
|
|
58
|
+
/** Show delete actions for non-default named themes. */
|
|
59
|
+
allowDeleteTheme?: boolean;
|
|
60
|
+
/** Called after a non-default theme is removed from the nearest ThemeProvider. */
|
|
61
|
+
onDeleteTheme?: (payload: ThemePanelDeleteThemePayload) => void;
|
|
62
|
+
/** Show the reset button. */
|
|
63
|
+
showReset?: boolean;
|
|
64
|
+
/** Compact typography and spacing. */
|
|
65
|
+
compact?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* `ThemePanel` — ready-made controls for quickly editing and saving the nearest Lumina theme.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```tsx
|
|
72
|
+
* <ThemeProvider>
|
|
73
|
+
* <ThemePanel />
|
|
74
|
+
* <App />
|
|
75
|
+
* </ThemeProvider>
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
declare const ThemePanel: React.ForwardRefExoticComponent<ThemePanelProps & React.RefAttributes<HTMLDivElement>>;
|
|
79
|
+
|
|
80
|
+
export { THEME_PANEL_DEFAULT_PRESET_OPTIONS, THEME_PANEL_DEFAULT_THEME_PRESETS, ThemePanel, type ThemePanelCreateThemePayload, type ThemePanelCreatedThemeMeta, type ThemePanelDeleteThemePayload, type ThemePanelModeOption, type ThemePanelPresetOption, type ThemePanelProps, type ThemePanelSection };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { THEME_PANEL_DEFAULT_PRESET_OPTIONS, THEME_PANEL_DEFAULT_THEME_PRESETS, ThemePanel } from './chunk-NJCHFXGC.js';
|
|
2
|
+
import './chunk-HU7T64Y3.js';
|
|
3
|
+
import './chunk-6SPMHY54.js';
|
|
4
|
+
import './chunk-7NZ2A4MA.js';
|
|
5
|
+
import './chunk-YJEXAO2I.js';
|
|
6
|
+
import './chunk-HFUHQUPQ.js';
|
|
7
|
+
import './chunk-GZCU6HXD.js';
|
|
8
|
+
import './chunk-DUFRASGO.js';
|
|
9
|
+
import './chunk-XVP7IKLZ.js';
|
|
10
|
+
import './chunk-56PHETWO.js';
|
|
11
|
+
import './chunk-CNGKJYGZ.js';
|
|
12
|
+
import './chunk-YT5NLCRC.js';
|
package/dist/Timeline.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var chunkBJ6WUVEG_cjs = require('./chunk-BJ6WUVEG.cjs');
|
|
4
|
+
require('./chunk-SG42F5VB.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "Timeline", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkBJ6WUVEG_cjs.Timeline; }
|
|
11
11
|
});
|
package/dist/Timeline.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Timeline } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { Timeline } from './chunk-OQU3TJCF.js';
|
|
2
|
+
import './chunk-Y5F7ZTBH.js';
|
package/dist/Tooltip.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkF3LHLYX6_cjs = require('./chunk-F3LHLYX6.cjs');
|
|
4
4
|
require('./chunk-YB3IWIOJ.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "Tooltip", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkF3LHLYX6_cjs.Tooltip; }
|
|
11
11
|
});
|
package/dist/Tooltip.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Tooltip } from './chunk-
|
|
1
|
+
export { Tooltip } from './chunk-XHQGMMH7.js';
|
|
2
2
|
import './chunk-DUFRASGO.js';
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
padding: 1px 6px;
|
|
49
49
|
border-radius: 5px;
|
|
50
50
|
background: var(--bg-sunken);
|
|
51
|
-
box-shadow: var(--neu-
|
|
51
|
+
box-shadow: var(--neu-shadow-inset);
|
|
52
52
|
color: var(--accent-ink);
|
|
53
53
|
margin: 0 2px;
|
|
54
54
|
}
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
padding: 1px 7px;
|
|
60
60
|
border-radius: 5px;
|
|
61
61
|
background: var(--bg-raised);
|
|
62
|
-
box-shadow: var(--neu-
|
|
62
|
+
box-shadow: var(--neu-shadow-subtle);
|
|
63
63
|
border: 1px solid var(--border);
|
|
64
64
|
color: var(--fg);
|
|
65
65
|
margin: 0 2px;
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
.typo-action:hover {
|
|
146
146
|
color: var(--accent-ink);
|
|
147
147
|
background: var(--bg);
|
|
148
|
-
box-shadow: var(--neu-
|
|
148
|
+
box-shadow: var(--neu-shadow-subtle);
|
|
149
149
|
}
|
|
150
150
|
.typo-action:focus-visible {
|
|
151
151
|
outline: 2px solid var(--accent-glow);
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
font: inherit;
|
|
170
170
|
color: inherit;
|
|
171
171
|
background: var(--bg-sunken);
|
|
172
|
-
box-shadow: var(--neu-
|
|
172
|
+
box-shadow: var(--neu-shadow-inset-strong);
|
|
173
173
|
border: none;
|
|
174
174
|
outline: none;
|
|
175
175
|
width: 100%;
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
font-family: inherit;
|
|
185
185
|
}
|
|
186
186
|
.typo-editor:focus {
|
|
187
|
-
box-shadow: var(--neu-
|
|
187
|
+
box-shadow: var(--neu-shadow-inset-strong), 0 0 0 3px var(--accent-glow);
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
/* ---- Ellipsis ---- */
|
package/dist/Typography.cjs
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var chunk5JPAUQ5H_cjs = require('./chunk-5JPAUQ5H.cjs');
|
|
4
|
+
require('./chunk-6LARTGLP.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "Link", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunk5JPAUQ5H_cjs.Link; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "Paragraph", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunk5JPAUQ5H_cjs.Paragraph; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "Text", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunk5JPAUQ5H_cjs.Text; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "Title", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunk5JPAUQ5H_cjs.Title; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "Typography", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunk5JPAUQ5H_cjs.Typography; }
|
|
27
27
|
});
|
package/dist/Typography.d.cts
CHANGED
package/dist/Typography.d.ts
CHANGED
package/dist/Typography.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Link, Paragraph, Text, Title, Typography } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { Link, Paragraph, Text, Title, Typography } from './chunk-BCFCSVGJ.js';
|
|
2
|
+
import './chunk-YT5NLCRC.js';
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { Icon } from './chunk-YT5NLCRC.js';
|
|
2
|
+
import './tokens-EF34LSWI.css';
|
|
3
|
+
import './shared-NJHRNLRH.css';
|
|
4
|
+
import './Image-SGSRTHQX.css';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import ReactDOM from 'react-dom';
|
|
7
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
var Image = React.forwardRef(({
|
|
10
|
+
src,
|
|
11
|
+
alt,
|
|
12
|
+
width = 200,
|
|
13
|
+
height,
|
|
14
|
+
variant = "framed",
|
|
15
|
+
frame,
|
|
16
|
+
padding,
|
|
17
|
+
objectFit,
|
|
18
|
+
objectPosition,
|
|
19
|
+
preview,
|
|
20
|
+
hover = true,
|
|
21
|
+
placeholder,
|
|
22
|
+
imgProps,
|
|
23
|
+
className = "",
|
|
24
|
+
style,
|
|
25
|
+
...rest
|
|
26
|
+
}, ref) => {
|
|
27
|
+
const [loaded, setLoaded] = React.useState(false);
|
|
28
|
+
const [err, setErr] = React.useState(false);
|
|
29
|
+
const [open, setOpen] = React.useState(false);
|
|
30
|
+
const visualFrame = frame ?? variant === "framed";
|
|
31
|
+
const resolvedHeight = height ?? (variant === "icon" ? width : 140);
|
|
32
|
+
const resolvedPadding = padding ?? (visualFrame ? void 0 : 0);
|
|
33
|
+
const resolvedObjectFit = objectFit ?? (variant === "icon" ? "contain" : "cover");
|
|
34
|
+
const canPreview = (preview ?? variant === "framed") && loaded && !err;
|
|
35
|
+
const {
|
|
36
|
+
className: imgClassName = "",
|
|
37
|
+
style: imgStyle,
|
|
38
|
+
onLoad,
|
|
39
|
+
onError,
|
|
40
|
+
...imageRest
|
|
41
|
+
} = imgProps ?? {};
|
|
42
|
+
React.useEffect(() => {
|
|
43
|
+
setLoaded(false);
|
|
44
|
+
setErr(false);
|
|
45
|
+
setOpen(false);
|
|
46
|
+
}, [src]);
|
|
47
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
48
|
+
/* @__PURE__ */ jsx(
|
|
49
|
+
"div",
|
|
50
|
+
{
|
|
51
|
+
ref,
|
|
52
|
+
className: `n-image ${variant} ${visualFrame ? "framed" : "unframed"} ${hover ? "hover" : ""} ${canPreview ? "clickable" : ""} ${className}`,
|
|
53
|
+
style: { width, ...resolvedPadding !== void 0 ? { padding: resolvedPadding } : {}, ...style },
|
|
54
|
+
onClick: () => canPreview && setOpen(true),
|
|
55
|
+
...rest,
|
|
56
|
+
children: /* @__PURE__ */ jsxs("div", { className: "n-image-frame", style: { width: "100%", height: resolvedHeight }, children: [
|
|
57
|
+
!err && src && /* @__PURE__ */ jsx(
|
|
58
|
+
"img",
|
|
59
|
+
{
|
|
60
|
+
...imageRest,
|
|
61
|
+
src,
|
|
62
|
+
alt,
|
|
63
|
+
className: imgClassName,
|
|
64
|
+
style: { objectFit: resolvedObjectFit, objectPosition, ...imgStyle },
|
|
65
|
+
onLoad: (event) => {
|
|
66
|
+
setLoaded(true);
|
|
67
|
+
onLoad?.(event);
|
|
68
|
+
},
|
|
69
|
+
onError: (event) => {
|
|
70
|
+
setErr(true);
|
|
71
|
+
onError?.(event);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
),
|
|
75
|
+
/* @__PURE__ */ jsx("div", { className: `n-image-placeholder ${loaded && !err ? "loaded" : ""}`, children: placeholder ?? /* @__PURE__ */ jsx(Icon, { name: "image", size: 28 }) }),
|
|
76
|
+
canPreview && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
77
|
+
/* @__PURE__ */ jsxs("div", { className: "image-hint", children: [
|
|
78
|
+
/* @__PURE__ */ jsx(Icon, { name: "eye", size: 14 }),
|
|
79
|
+
/* @__PURE__ */ jsx("span", { children: "\u70B9\u51FB\u67E5\u770B" })
|
|
80
|
+
] }),
|
|
81
|
+
/* @__PURE__ */ jsxs("div", { className: "image-actions", onClick: (e) => e.stopPropagation(), children: [
|
|
82
|
+
/* @__PURE__ */ jsx(
|
|
83
|
+
"button",
|
|
84
|
+
{
|
|
85
|
+
type: "button",
|
|
86
|
+
className: "ia-btn",
|
|
87
|
+
onClick: () => setOpen(true),
|
|
88
|
+
"aria-label": "\u9884\u89C8",
|
|
89
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "eye", size: 13 })
|
|
90
|
+
}
|
|
91
|
+
),
|
|
92
|
+
src && /* @__PURE__ */ jsx("a", { className: "ia-btn", href: src, download: true, "aria-label": "\u4E0B\u8F7D", children: /* @__PURE__ */ jsx(Icon, { name: "download", size: 13 }) })
|
|
93
|
+
] })
|
|
94
|
+
] })
|
|
95
|
+
] })
|
|
96
|
+
}
|
|
97
|
+
),
|
|
98
|
+
open && typeof document !== "undefined" && ReactDOM.createPortal(
|
|
99
|
+
/* @__PURE__ */ jsx("div", { className: "image-preview-overlay", onClick: () => setOpen(false), children: /* @__PURE__ */ jsx("img", { src, alt, onClick: (e) => e.stopPropagation() }) }),
|
|
100
|
+
document.body
|
|
101
|
+
)
|
|
102
|
+
] });
|
|
103
|
+
});
|
|
104
|
+
Image.displayName = "Image";
|
|
105
|
+
var ImageGrid = React.forwardRef(({
|
|
106
|
+
images,
|
|
107
|
+
columns,
|
|
108
|
+
itemHeight = 130,
|
|
109
|
+
minItemWidth = 160,
|
|
110
|
+
gap = 14,
|
|
111
|
+
imageProps,
|
|
112
|
+
className = "",
|
|
113
|
+
style,
|
|
114
|
+
...rest
|
|
115
|
+
}, ref) => /* @__PURE__ */ jsx(
|
|
116
|
+
"div",
|
|
117
|
+
{
|
|
118
|
+
ref,
|
|
119
|
+
className,
|
|
120
|
+
style: {
|
|
121
|
+
display: "grid",
|
|
122
|
+
gap,
|
|
123
|
+
gridTemplateColumns: columns ? `repeat(${columns}, 1fr)` : `repeat(auto-fill, minmax(${typeof minItemWidth === "number" ? `${minItemWidth}px` : minItemWidth}, 1fr))`,
|
|
124
|
+
...style
|
|
125
|
+
},
|
|
126
|
+
...rest,
|
|
127
|
+
children: images.map((img, i) => /* @__PURE__ */ jsx(
|
|
128
|
+
Image,
|
|
129
|
+
{
|
|
130
|
+
...imageProps,
|
|
131
|
+
...img,
|
|
132
|
+
src: img.src,
|
|
133
|
+
alt: img.alt,
|
|
134
|
+
width: img.width ?? "100%",
|
|
135
|
+
height: img.height ?? itemHeight
|
|
136
|
+
},
|
|
137
|
+
i
|
|
138
|
+
))
|
|
139
|
+
}
|
|
140
|
+
));
|
|
141
|
+
ImageGrid.displayName = "ImageGrid";
|
|
142
|
+
var SpriteImage = React.forwardRef(({
|
|
143
|
+
src,
|
|
144
|
+
sprite,
|
|
145
|
+
alt,
|
|
146
|
+
width,
|
|
147
|
+
height,
|
|
148
|
+
scale = 1,
|
|
149
|
+
backgroundSize,
|
|
150
|
+
variant = "icon",
|
|
151
|
+
frame,
|
|
152
|
+
padding,
|
|
153
|
+
className = "",
|
|
154
|
+
style,
|
|
155
|
+
...rest
|
|
156
|
+
}, ref) => {
|
|
157
|
+
const visualFrame = frame ?? variant === "framed";
|
|
158
|
+
const resolvedWidth = width ?? sprite.width * scale;
|
|
159
|
+
const resolvedHeight = height ?? sprite.height * scale;
|
|
160
|
+
const resolvedPadding = padding ?? (visualFrame ? void 0 : 0);
|
|
161
|
+
return /* @__PURE__ */ jsx(
|
|
162
|
+
"div",
|
|
163
|
+
{
|
|
164
|
+
ref,
|
|
165
|
+
className: `n-sprite-image ${variant} ${visualFrame ? "framed" : "unframed"} ${className}`,
|
|
166
|
+
role: alt ? "img" : void 0,
|
|
167
|
+
"aria-label": alt || void 0,
|
|
168
|
+
"aria-hidden": alt === "" ? true : void 0,
|
|
169
|
+
style: { width: resolvedWidth, ...resolvedPadding !== void 0 ? { padding: resolvedPadding } : {}, ...style },
|
|
170
|
+
...rest,
|
|
171
|
+
children: /* @__PURE__ */ jsx("div", { className: "n-sprite-image-frame", style: { height: resolvedHeight }, children: /* @__PURE__ */ jsx(
|
|
172
|
+
"span",
|
|
173
|
+
{
|
|
174
|
+
className: "n-sprite-image-sprite",
|
|
175
|
+
style: {
|
|
176
|
+
width: sprite.width,
|
|
177
|
+
height: sprite.height,
|
|
178
|
+
backgroundImage: `url(${JSON.stringify(src)})`,
|
|
179
|
+
backgroundPosition: `${-sprite.x}px ${-sprite.y}px`,
|
|
180
|
+
backgroundSize,
|
|
181
|
+
transform: scale !== 1 ? `scale(${scale})` : void 0
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
) })
|
|
185
|
+
}
|
|
186
|
+
);
|
|
187
|
+
});
|
|
188
|
+
SpriteImage.displayName = "SpriteImage";
|
|
189
|
+
var insetStyle = (inset) => {
|
|
190
|
+
if (inset == null) return { inset: 0 };
|
|
191
|
+
if (typeof inset === "number" || typeof inset === "string") return { inset };
|
|
192
|
+
return inset;
|
|
193
|
+
};
|
|
194
|
+
var LayeredImage = React.forwardRef(({
|
|
195
|
+
layers,
|
|
196
|
+
width = 64,
|
|
197
|
+
height = 64,
|
|
198
|
+
variant = "icon",
|
|
199
|
+
frame,
|
|
200
|
+
padding,
|
|
201
|
+
className = "",
|
|
202
|
+
style,
|
|
203
|
+
...rest
|
|
204
|
+
}, ref) => {
|
|
205
|
+
const visualFrame = frame ?? variant === "framed";
|
|
206
|
+
const resolvedPadding = padding ?? (visualFrame ? void 0 : 0);
|
|
207
|
+
return /* @__PURE__ */ jsx(
|
|
208
|
+
"div",
|
|
209
|
+
{
|
|
210
|
+
ref,
|
|
211
|
+
className: `n-layered-image ${variant} ${visualFrame ? "framed" : "unframed"} ${className}`,
|
|
212
|
+
style: { width, ...resolvedPadding !== void 0 ? { padding: resolvedPadding } : {}, ...style },
|
|
213
|
+
...rest,
|
|
214
|
+
children: /* @__PURE__ */ jsx("div", { className: "n-layered-image-frame", style: { height }, children: layers.map(({ src: layerSrc, alt: layerAlt = "", fit = "contain", inset, zIndex, className: layerClassName = "", style: layerStyle, ...layerRest }, index) => /* @__PURE__ */ jsx(
|
|
215
|
+
"span",
|
|
216
|
+
{
|
|
217
|
+
className: "n-layered-image-layer",
|
|
218
|
+
style: {
|
|
219
|
+
zIndex,
|
|
220
|
+
...insetStyle(inset)
|
|
221
|
+
},
|
|
222
|
+
children: /* @__PURE__ */ jsx(
|
|
223
|
+
"img",
|
|
224
|
+
{
|
|
225
|
+
...layerRest,
|
|
226
|
+
src: layerSrc,
|
|
227
|
+
alt: layerAlt,
|
|
228
|
+
className: layerClassName,
|
|
229
|
+
style: {
|
|
230
|
+
objectFit: fit,
|
|
231
|
+
...layerStyle
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
)
|
|
235
|
+
},
|
|
236
|
+
`${layerSrc}-${index}`
|
|
237
|
+
)) })
|
|
238
|
+
}
|
|
239
|
+
);
|
|
240
|
+
});
|
|
241
|
+
LayeredImage.displayName = "LayeredImage";
|
|
242
|
+
|
|
243
|
+
export { Image, ImageGrid, LayeredImage, SpriteImage };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import './tokens-
|
|
1
|
+
import './tokens-EF34LSWI.css';
|
|
2
2
|
import './shared-NJHRNLRH.css';
|
|
3
|
-
import './StatusBar-
|
|
3
|
+
import './StatusBar-FJKEEPXU.css';
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./tokens-
|
|
3
|
+
var chunk6LARTGLP_cjs = require('./chunk-6LARTGLP.cjs');
|
|
4
|
+
require('./tokens-EF34LSWI.css');
|
|
5
5
|
require('./shared-NJHRNLRH.css');
|
|
6
|
-
require('./Button-
|
|
6
|
+
require('./Button-TUMZUQLI.css');
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
9
|
|
|
@@ -64,12 +64,12 @@ var Button = React__namespace.forwardRef(
|
|
|
64
64
|
className: cls,
|
|
65
65
|
disabled: disabled || loading,
|
|
66
66
|
title: tip,
|
|
67
|
-
"aria-label": ariaLabel ?? (onlyIcon ? tip ?? icon : void 0),
|
|
67
|
+
"aria-label": ariaLabel ?? (onlyIcon ? tip ?? (typeof icon === "string" ? icon : void 0) : void 0),
|
|
68
68
|
...rest,
|
|
69
69
|
children: [
|
|
70
|
-
loading ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "spinner", "aria-hidden": true }) :
|
|
70
|
+
loading ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "spinner", "aria-hidden": true }) : chunk6LARTGLP_cjs.renderIconSlot(icon, { size: 15, className: "btn-icon-slot" }),
|
|
71
71
|
content,
|
|
72
|
-
|
|
72
|
+
chunk6LARTGLP_cjs.renderIconSlot(trailingIcon, { size: 15, className: "btn-icon-slot" })
|
|
73
73
|
]
|
|
74
74
|
}
|
|
75
75
|
);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Select } from './chunk-
|
|
2
|
-
import { Icon } from './chunk-
|
|
3
|
-
import './tokens-
|
|
1
|
+
import { Select } from './chunk-7D76MI37.js';
|
|
2
|
+
import { Icon } from './chunk-YT5NLCRC.js';
|
|
3
|
+
import './tokens-EF34LSWI.css';
|
|
4
4
|
import './shared-NJHRNLRH.css';
|
|
5
|
-
import './Pagination-
|
|
5
|
+
import './Pagination-YSZSNFHG.css';
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
8
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Icon } from './chunk-
|
|
2
|
-
import './tokens-
|
|
1
|
+
import { renderIconSlot, Icon } from './chunk-YT5NLCRC.js';
|
|
2
|
+
import './tokens-EF34LSWI.css';
|
|
3
3
|
import './shared-NJHRNLRH.css';
|
|
4
|
-
import './Alert-
|
|
4
|
+
import './Alert-HVPI6L4V.css';
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
@@ -17,7 +17,7 @@ var Alert = React.forwardRef(({
|
|
|
17
17
|
className = "",
|
|
18
18
|
...rest
|
|
19
19
|
}, ref) => {
|
|
20
|
-
const
|
|
20
|
+
const iconNode = icon ?? (tone === "success" ? "check2" : tone === "warning" || tone === "danger" ? "alert" : "info");
|
|
21
21
|
return /* @__PURE__ */ jsxs(
|
|
22
22
|
"div",
|
|
23
23
|
{
|
|
@@ -26,7 +26,7 @@ var Alert = React.forwardRef(({
|
|
|
26
26
|
role: "alert",
|
|
27
27
|
...rest,
|
|
28
28
|
children: [
|
|
29
|
-
showIcon && /* @__PURE__ */ jsx("span", { className: "alert-ico", children:
|
|
29
|
+
showIcon && /* @__PURE__ */ jsx("span", { className: "alert-ico", children: renderIconSlot(iconNode, { size: 14 }) }),
|
|
30
30
|
/* @__PURE__ */ jsxs("div", { className: "alert-body", children: [
|
|
31
31
|
title && /* @__PURE__ */ jsx("div", { className: "alert-title", children: title }),
|
|
32
32
|
children && /* @__PURE__ */ jsx("div", { className: "alert-desc", children })
|