@fangxinyan/lumina 0.6.16 → 0.6.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/DatePicker.cjs +3 -2
  2. package/dist/DatePicker.js +2 -1
  3. package/dist/DateTimePicker.cjs +3 -2
  4. package/dist/DateTimePicker.js +2 -1
  5. package/dist/{Image-TDCXJISG.css → Image-NISJRUWX.css} +80 -1
  6. package/dist/Image.cjs +6 -5
  7. package/dist/Image.d.cts +18 -1
  8. package/dist/Image.d.ts +18 -1
  9. package/dist/Image.js +2 -1
  10. package/dist/Pagination.cjs +3 -3
  11. package/dist/Pagination.js +2 -2
  12. package/dist/Select.cjs +2 -2
  13. package/dist/Select.js +1 -1
  14. package/dist/Table.cjs +4 -4
  15. package/dist/Table.js +3 -3
  16. package/dist/TablePro.cjs +5 -5
  17. package/dist/TablePro.js +4 -4
  18. package/dist/TimePicker.cjs +3 -2
  19. package/dist/TimePicker.js +2 -1
  20. package/dist/{chunk-QNN3YV2P.js → chunk-2FOC3D6X.js} +1 -1
  21. package/dist/chunk-35RCCUGO.cjs +62 -0
  22. package/dist/{chunk-PBT4UKPL.cjs → chunk-4ACCOYBY.cjs} +2 -2
  23. package/dist/chunk-5VOUUQF5.js +736 -0
  24. package/dist/{chunk-FKP5D5IS.js → chunk-7NTTRKNT.js} +8 -2
  25. package/dist/{chunk-6PHPRZTT.js → chunk-E22OIVYP.js} +17 -1
  26. package/dist/{chunk-DU4VSUBF.js → chunk-HG6YS4I7.js} +8 -2
  27. package/dist/chunk-HSAJUEO7.cjs +764 -0
  28. package/dist/{chunk-ZBWUIR2J.cjs → chunk-L6GIV5DQ.cjs} +2 -2
  29. package/dist/{chunk-32FWB5NO.cjs → chunk-MWEHU7YO.cjs} +8 -2
  30. package/dist/{chunk-7YJV45U6.cjs → chunk-NXBFEIUX.cjs} +2 -2
  31. package/dist/chunk-RC6ULCQP.js +40 -0
  32. package/dist/{chunk-YPE6CDXQ.js → chunk-SOCYOUGM.js} +8 -2
  33. package/dist/{chunk-KHRYPNUV.cjs → chunk-T2O4DTDE.cjs} +8 -2
  34. package/dist/{chunk-4YSGGZDB.js → chunk-UGAN4BBW.js} +1 -1
  35. package/dist/{chunk-IVFVLRWJ.cjs → chunk-UW57F3UO.cjs} +17 -1
  36. package/dist/{chunk-SFEWMO45.cjs → chunk-UWL6DRZW.cjs} +8 -2
  37. package/dist/{chunk-6LC4QROE.js → chunk-V5SQOZPF.js} +1 -1
  38. package/dist/index.cjs +21 -20
  39. package/dist/index.d.cts +2 -2
  40. package/dist/index.d.ts +2 -2
  41. package/dist/index.js +10 -9
  42. package/dist/styles.css +79 -1
  43. package/docs/llms/image.md +21 -0
  44. package/docs/llms.md +1 -1
  45. package/package.json +1 -1
  46. package/dist/chunk-EQ4FPOQQ.js +0 -253
  47. package/dist/chunk-RMFSX7DO.cjs +0 -281
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkIVFVLRWJ_cjs = require('./chunk-IVFVLRWJ.cjs');
3
+ var chunkUW57F3UO_cjs = require('./chunk-UW57F3UO.cjs');
4
4
  var chunkQMX67CVT_cjs = require('./chunk-QMX67CVT.cjs');
5
5
  require('./tokens-RYJ3DFTU.css');
6
6
  require('./shared-NJHRNLRH.css');
@@ -124,7 +124,7 @@ var Pagination = React__namespace.forwardRef(({
124
124
  }
125
125
  ),
126
126
  showSizeChanger && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pg-size-changer", children: /* @__PURE__ */ jsxRuntime.jsx(
127
- chunkIVFVLRWJ_cjs.Select,
127
+ chunkUW57F3UO_cjs.Select,
128
128
  {
129
129
  value: pageSize,
130
130
  size: "sm",
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var chunk35RCCUGO_cjs = require('./chunk-35RCCUGO.cjs');
3
4
  var chunkYB3IWIOJ_cjs = require('./chunk-YB3IWIOJ.cjs');
4
5
  var chunkVS3I5OKA_cjs = require('./chunk-VS3I5OKA.cjs');
5
6
  var chunkSW2HMNCA_cjs = require('./chunk-SW2HMNCA.cjs');
@@ -166,6 +167,12 @@ var DateTimePicker = React__namespace.forwardRef(
166
167
  },
167
168
  [disabled, onOpenChange, openControlled, readOnly]
168
169
  );
170
+ const inputTriggerHandlers = chunk35RCCUGO_cjs.useInputTriggerToggle({
171
+ open,
172
+ disabled,
173
+ readOnly,
174
+ setOpen
175
+ });
169
176
  const rootRef = React__namespace.useRef(null);
170
177
  const panelRef = React__namespace.useRef(null);
171
178
  const { triggerRef, floatingStyle } = chunkYB3IWIOJ_cjs.useFloating({
@@ -430,8 +437,7 @@ var DateTimePicker = React__namespace.forwardRef(
430
437
  invalid,
431
438
  allowClear,
432
439
  leadingIcon: "calendar",
433
- onFocus: () => setOpen(true),
434
- onClick: () => setOpen(true),
440
+ ...inputTriggerHandlers,
435
441
  onValueChange: handleInputChange,
436
442
  onBlur: handleInputBlur,
437
443
  inputMode: "numeric",
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkZBWUIR2J_cjs = require('./chunk-ZBWUIR2J.cjs');
3
+ var chunkL6GIV5DQ_cjs = require('./chunk-L6GIV5DQ.cjs');
4
4
  var chunkATUPFAPZ_cjs = require('./chunk-ATUPFAPZ.cjs');
5
5
  var chunkYB3IWIOJ_cjs = require('./chunk-YB3IWIOJ.cjs');
6
6
  var chunkQMX67CVT_cjs = require('./chunk-QMX67CVT.cjs');
@@ -398,7 +398,7 @@ var TableInner = ({
398
398
  }
399
399
  ),
400
400
  pagEnabled && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-pagination", children: /* @__PURE__ */ jsxRuntime.jsx(
401
- chunkZBWUIR2J_cjs.Pagination,
401
+ chunkL6GIV5DQ_cjs.Pagination,
402
402
  {
403
403
  total: totalCount,
404
404
  pageSize: curPageSize,
@@ -0,0 +1,40 @@
1
+ import * as React from 'react';
2
+
3
+ // src/utils/useInputTriggerToggle.ts
4
+ function useInputTriggerToggle({
5
+ open,
6
+ disabled,
7
+ readOnly,
8
+ setOpen
9
+ }) {
10
+ const pointerDownOpenRef = React.useRef(false);
11
+ const focusOpenedRef = React.useRef(false);
12
+ const handlePointerDown = React.useCallback(() => {
13
+ pointerDownOpenRef.current = open;
14
+ focusOpenedRef.current = false;
15
+ }, [open]);
16
+ const handleFocus = React.useCallback(() => {
17
+ if (disabled || readOnly || open) return;
18
+ focusOpenedRef.current = true;
19
+ setOpen(true);
20
+ }, [disabled, open, readOnly, setOpen]);
21
+ const handleClick = React.useCallback(() => {
22
+ if (disabled || readOnly) return;
23
+ if (focusOpenedRef.current) {
24
+ focusOpenedRef.current = false;
25
+ pointerDownOpenRef.current = false;
26
+ return;
27
+ }
28
+ const nextOpen = !(pointerDownOpenRef.current || open);
29
+ pointerDownOpenRef.current = false;
30
+ setOpen(nextOpen);
31
+ }, [disabled, open, readOnly, setOpen]);
32
+ return {
33
+ onPointerDown: handlePointerDown,
34
+ onMouseDown: handlePointerDown,
35
+ onFocus: handleFocus,
36
+ onClick: handleClick
37
+ };
38
+ }
39
+
40
+ export { useInputTriggerToggle };
@@ -1,3 +1,4 @@
1
+ import { useInputTriggerToggle } from './chunk-RC6ULCQP.js';
1
2
  import { useFloating } from './chunk-DUFRASGO.js';
2
3
  import { Input } from './chunk-IOAOG5L7.js';
3
4
  import { Button } from './chunk-IPSNC5VZ.js';
@@ -144,6 +145,12 @@ var DateTimePicker = React.forwardRef(
144
145
  },
145
146
  [disabled, onOpenChange, openControlled, readOnly]
146
147
  );
148
+ const inputTriggerHandlers = useInputTriggerToggle({
149
+ open,
150
+ disabled,
151
+ readOnly,
152
+ setOpen
153
+ });
147
154
  const rootRef = React.useRef(null);
148
155
  const panelRef = React.useRef(null);
149
156
  const { triggerRef, floatingStyle } = useFloating({
@@ -408,8 +415,7 @@ var DateTimePicker = React.forwardRef(
408
415
  invalid,
409
416
  allowClear,
410
417
  leadingIcon: "calendar",
411
- onFocus: () => setOpen(true),
412
- onClick: () => setOpen(true),
418
+ ...inputTriggerHandlers,
413
419
  onValueChange: handleInputChange,
414
420
  onBlur: handleInputBlur,
415
421
  inputMode: "numeric",
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var chunk35RCCUGO_cjs = require('./chunk-35RCCUGO.cjs');
3
4
  var chunkYB3IWIOJ_cjs = require('./chunk-YB3IWIOJ.cjs');
4
5
  var chunkVS3I5OKA_cjs = require('./chunk-VS3I5OKA.cjs');
5
6
  var chunkSW2HMNCA_cjs = require('./chunk-SW2HMNCA.cjs');
@@ -108,6 +109,12 @@ var DatePicker = React__namespace.forwardRef(
108
109
  },
109
110
  [disabled, onOpenChange, openControlled, readOnly]
110
111
  );
112
+ const inputTriggerHandlers = chunk35RCCUGO_cjs.useInputTriggerToggle({
113
+ open,
114
+ disabled,
115
+ readOnly,
116
+ setOpen
117
+ });
111
118
  const rootRef = React__namespace.useRef(null);
112
119
  const panelRef = React__namespace.useRef(null);
113
120
  const { triggerRef, floatingStyle } = chunkYB3IWIOJ_cjs.useFloating({
@@ -229,8 +236,7 @@ var DatePicker = React__namespace.forwardRef(
229
236
  invalid,
230
237
  allowClear,
231
238
  leadingIcon: "calendar",
232
- onFocus: () => setOpen(true),
233
- onClick: () => setOpen(true),
239
+ ...inputTriggerHandlers,
234
240
  onValueChange: handleInputChange,
235
241
  onBlur: handleInputBlur,
236
242
  inputMode: "numeric",
@@ -1,4 +1,4 @@
1
- import { Pagination } from './chunk-6LC4QROE.js';
1
+ import { Pagination } from './chunk-V5SQOZPF.js';
2
2
  import { Checkbox } from './chunk-ZD3L4V3H.js';
3
3
  import { useFloating } from './chunk-DUFRASGO.js';
4
4
  import { Icon } from './chunk-FDZG27IG.js';
@@ -159,7 +159,12 @@ var SelectInner = (props, forwardedRef) => {
159
159
  if (!multiControlled) setInnerMulti(next);
160
160
  props.onChange?.(next);
161
161
  };
162
+ const stopClearActivation = (e) => {
163
+ e.preventDefault();
164
+ e.stopPropagation();
165
+ };
162
166
  const clearAll = (e) => {
167
+ e.preventDefault();
163
168
  e.stopPropagation();
164
169
  if (isMulti) {
165
170
  if (!multiControlled) setInnerMulti([]);
@@ -296,7 +301,18 @@ var SelectInner = (props, forwardedRef) => {
296
301
  onClick: () => !disabled && setOpen(!open),
297
302
  children: [
298
303
  renderTrigger(),
299
- showClear && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "select-clear", role: "button", "aria-label": "Clear", onClick: clearAll, children: /* @__PURE__ */ jsxRuntime.jsx(chunkQMX67CVT_cjs.Icon, { name: "x", size: 12 }) }),
304
+ showClear && /* @__PURE__ */ jsxRuntime.jsx(
305
+ "span",
306
+ {
307
+ className: "select-clear",
308
+ role: "button",
309
+ "aria-label": "Clear",
310
+ onPointerDown: stopClearActivation,
311
+ onMouseDown: stopClearActivation,
312
+ onClick: clearAll,
313
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkQMX67CVT_cjs.Icon, { name: "x", size: 12 })
314
+ }
315
+ ),
300
316
  /* @__PURE__ */ jsxRuntime.jsx(chunkQMX67CVT_cjs.Icon, { name: "chevDown", size: 14, className: "select-caret" })
301
317
  ]
302
318
  }
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var chunk35RCCUGO_cjs = require('./chunk-35RCCUGO.cjs');
3
4
  var chunkYB3IWIOJ_cjs = require('./chunk-YB3IWIOJ.cjs');
4
5
  var chunkVS3I5OKA_cjs = require('./chunk-VS3I5OKA.cjs');
5
6
  var chunkSW2HMNCA_cjs = require('./chunk-SW2HMNCA.cjs');
@@ -136,6 +137,12 @@ var TimePicker = React__namespace.forwardRef(
136
137
  },
137
138
  [disabled, onOpenChange, openControlled, readOnly]
138
139
  );
140
+ const inputTriggerHandlers = chunk35RCCUGO_cjs.useInputTriggerToggle({
141
+ open,
142
+ disabled,
143
+ readOnly,
144
+ setOpen
145
+ });
139
146
  const rootRef = React__namespace.useRef(null);
140
147
  const panelRef = React__namespace.useRef(null);
141
148
  const { triggerRef, floatingStyle } = chunkYB3IWIOJ_cjs.useFloating({
@@ -353,8 +360,7 @@ var TimePicker = React__namespace.forwardRef(
353
360
  invalid,
354
361
  allowClear,
355
362
  leadingIcon: "clock",
356
- onFocus: () => setOpen(true),
357
- onClick: () => setOpen(true),
363
+ ...inputTriggerHandlers,
358
364
  onValueChange: handleInputChange,
359
365
  onBlur: handleInputBlur,
360
366
  inputMode: "numeric",
@@ -1,4 +1,4 @@
1
- import { Select } from './chunk-6PHPRZTT.js';
1
+ import { Select } from './chunk-E22OIVYP.js';
2
2
  import { Icon } from './chunk-FDZG27IG.js';
3
3
  import './tokens-RYJ3DFTU.css';
4
4
  import './shared-NJHRNLRH.css';
package/dist/index.cjs CHANGED
@@ -3,11 +3,11 @@
3
3
  var chunk6Q76VLCE_cjs = require('./chunk-6Q76VLCE.cjs');
4
4
  var chunkV5KUC5VH_cjs = require('./chunk-V5KUC5VH.cjs');
5
5
  var chunkX5MYHDEQ_cjs = require('./chunk-X5MYHDEQ.cjs');
6
- var chunkPBT4UKPL_cjs = require('./chunk-PBT4UKPL.cjs');
7
- var chunk7YJV45U6_cjs = require('./chunk-7YJV45U6.cjs');
6
+ var chunk4ACCOYBY_cjs = require('./chunk-4ACCOYBY.cjs');
7
+ var chunkNXBFEIUX_cjs = require('./chunk-NXBFEIUX.cjs');
8
8
  var chunk5A6KSYWA_cjs = require('./chunk-5A6KSYWA.cjs');
9
9
  var chunkA4Z7PLHV_cjs = require('./chunk-A4Z7PLHV.cjs');
10
- var chunkSFEWMO45_cjs = require('./chunk-SFEWMO45.cjs');
10
+ var chunkUWL6DRZW_cjs = require('./chunk-UWL6DRZW.cjs');
11
11
  var chunkM4NJTJKV_cjs = require('./chunk-M4NJTJKV.cjs');
12
12
  var chunkMPOO5VPW_cjs = require('./chunk-MPOO5VPW.cjs');
13
13
  var chunkN7OQNSII_cjs = require('./chunk-N7OQNSII.cjs');
@@ -20,18 +20,18 @@ var chunk5QEI7GGA_cjs = require('./chunk-5QEI7GGA.cjs');
20
20
  var chunkSOQ56ZI2_cjs = require('./chunk-SOQ56ZI2.cjs');
21
21
  var chunkRFI5R42I_cjs = require('./chunk-RFI5R42I.cjs');
22
22
  var chunkBT2RXFT4_cjs = require('./chunk-BT2RXFT4.cjs');
23
- var chunkZBWUIR2J_cjs = require('./chunk-ZBWUIR2J.cjs');
24
- var chunkIVFVLRWJ_cjs = require('./chunk-IVFVLRWJ.cjs');
23
+ var chunkL6GIV5DQ_cjs = require('./chunk-L6GIV5DQ.cjs');
24
+ var chunkUW57F3UO_cjs = require('./chunk-UW57F3UO.cjs');
25
25
  var chunk5ERD3W24_cjs = require('./chunk-5ERD3W24.cjs');
26
26
  var chunkJMFHL7GN_cjs = require('./chunk-JMFHL7GN.cjs');
27
27
  var chunkX7XP6GEI_cjs = require('./chunk-X7XP6GEI.cjs');
28
28
  var chunkPSQ3HNZP_cjs = require('./chunk-PSQ3HNZP.cjs');
29
- var chunk32FWB5NO_cjs = require('./chunk-32FWB5NO.cjs');
29
+ var chunkMWEHU7YO_cjs = require('./chunk-MWEHU7YO.cjs');
30
30
  var chunkP2OQTJZP_cjs = require('./chunk-P2OQTJZP.cjs');
31
31
  var chunkULUD3FED_cjs = require('./chunk-ULUD3FED.cjs');
32
32
  var chunkES7AWMNH_cjs = require('./chunk-ES7AWMNH.cjs');
33
33
  var chunkFDUQPAQE_cjs = require('./chunk-FDUQPAQE.cjs');
34
- var chunkRMFSX7DO_cjs = require('./chunk-RMFSX7DO.cjs');
34
+ var chunkHSAJUEO7_cjs = require('./chunk-HSAJUEO7.cjs');
35
35
  var chunk262ED6WQ_cjs = require('./chunk-262ED6WQ.cjs');
36
36
  var chunkBW76ENTW_cjs = require('./chunk-BW76ENTW.cjs');
37
37
  var chunkRSSOX4RQ_cjs = require('./chunk-RSSOX4RQ.cjs');
@@ -40,7 +40,8 @@ var chunkBNY2NVTL_cjs = require('./chunk-BNY2NVTL.cjs');
40
40
  var chunkS2ZGXBUH_cjs = require('./chunk-S2ZGXBUH.cjs');
41
41
  var chunk4TTRHEGM_cjs = require('./chunk-4TTRHEGM.cjs');
42
42
  var chunkVA2I7ZAL_cjs = require('./chunk-VA2I7ZAL.cjs');
43
- var chunkKHRYPNUV_cjs = require('./chunk-KHRYPNUV.cjs');
43
+ var chunkT2O4DTDE_cjs = require('./chunk-T2O4DTDE.cjs');
44
+ require('./chunk-35RCCUGO.cjs');
44
45
  var chunkLEMMFFEY_cjs = require('./chunk-LEMMFFEY.cjs');
45
46
  var chunkIOUAZYK2_cjs = require('./chunk-IOUAZYK2.cjs');
46
47
  var chunk7IO3EOHN_cjs = require('./chunk-7IO3EOHN.cjs');
@@ -54,7 +55,7 @@ var chunk4KDABJSY_cjs = require('./chunk-4KDABJSY.cjs');
54
55
  var chunkQMX67CVT_cjs = require('./chunk-QMX67CVT.cjs');
55
56
 
56
57
  // src/index.ts
57
- var VERSION = "0.6.16";
58
+ var VERSION = "0.6.18";
58
59
 
59
60
  Object.defineProperty(exports, "Timeline", {
60
61
  enumerable: true,
@@ -86,11 +87,11 @@ Object.defineProperty(exports, "Typography", {
86
87
  });
87
88
  Object.defineProperty(exports, "TablePro", {
88
89
  enumerable: true,
89
- get: function () { return chunkPBT4UKPL_cjs.TablePro; }
90
+ get: function () { return chunk4ACCOYBY_cjs.TablePro; }
90
91
  });
91
92
  Object.defineProperty(exports, "Table", {
92
93
  enumerable: true,
93
- get: function () { return chunk7YJV45U6_cjs.Table; }
94
+ get: function () { return chunkNXBFEIUX_cjs.Table; }
94
95
  });
95
96
  Object.defineProperty(exports, "Tabs", {
96
97
  enumerable: true,
@@ -110,7 +111,7 @@ Object.defineProperty(exports, "ThemePanel", {
110
111
  });
111
112
  Object.defineProperty(exports, "TimePicker", {
112
113
  enumerable: true,
113
- get: function () { return chunkSFEWMO45_cjs.TimePicker; }
114
+ get: function () { return chunkUWL6DRZW_cjs.TimePicker; }
114
115
  });
115
116
  Object.defineProperty(exports, "Skeleton", {
116
117
  enumerable: true,
@@ -214,11 +215,11 @@ Object.defineProperty(exports, "Modal", {
214
215
  });
215
216
  Object.defineProperty(exports, "Pagination", {
216
217
  enumerable: true,
217
- get: function () { return chunkZBWUIR2J_cjs.Pagination; }
218
+ get: function () { return chunkL6GIV5DQ_cjs.Pagination; }
218
219
  });
219
220
  Object.defineProperty(exports, "Select", {
220
221
  enumerable: true,
221
- get: function () { return chunkIVFVLRWJ_cjs.Select; }
222
+ get: function () { return chunkUW57F3UO_cjs.Select; }
222
223
  });
223
224
  Object.defineProperty(exports, "Tag", {
224
225
  enumerable: true,
@@ -242,7 +243,7 @@ Object.defineProperty(exports, "RadioGroup", {
242
243
  });
243
244
  Object.defineProperty(exports, "DateTimePicker", {
244
245
  enumerable: true,
245
- get: function () { return chunk32FWB5NO_cjs.DateTimePicker; }
246
+ get: function () { return chunkMWEHU7YO_cjs.DateTimePicker; }
246
247
  });
247
248
  Object.defineProperty(exports, "Divider", {
248
249
  enumerable: true,
@@ -270,19 +271,19 @@ Object.defineProperty(exports, "useForm", {
270
271
  });
271
272
  Object.defineProperty(exports, "Image", {
272
273
  enumerable: true,
273
- get: function () { return chunkRMFSX7DO_cjs.Image; }
274
+ get: function () { return chunkHSAJUEO7_cjs.Image; }
274
275
  });
275
276
  Object.defineProperty(exports, "ImageGrid", {
276
277
  enumerable: true,
277
- get: function () { return chunkRMFSX7DO_cjs.ImageGrid; }
278
+ get: function () { return chunkHSAJUEO7_cjs.ImageGrid; }
278
279
  });
279
280
  Object.defineProperty(exports, "LayeredImage", {
280
281
  enumerable: true,
281
- get: function () { return chunkRMFSX7DO_cjs.LayeredImage; }
282
+ get: function () { return chunkHSAJUEO7_cjs.LayeredImage; }
282
283
  });
283
284
  Object.defineProperty(exports, "SpriteImage", {
284
285
  enumerable: true,
285
- get: function () { return chunkRMFSX7DO_cjs.SpriteImage; }
286
+ get: function () { return chunkHSAJUEO7_cjs.SpriteImage; }
286
287
  });
287
288
  Object.defineProperty(exports, "Card", {
288
289
  enumerable: true,
@@ -318,7 +319,7 @@ Object.defineProperty(exports, "ContextMenu", {
318
319
  });
319
320
  Object.defineProperty(exports, "DatePicker", {
320
321
  enumerable: true,
321
- get: function () { return chunkKHRYPNUV_cjs.DatePicker; }
322
+ get: function () { return chunkT2O4DTDE_cjs.DatePicker; }
322
323
  });
323
324
  Object.defineProperty(exports, "Alert", {
324
325
  enumerable: true,
package/dist/index.d.cts CHANGED
@@ -40,7 +40,7 @@ export { ErrorField, Form, FormInstance, FormItem, FormItemProps, FormLayout, Fo
40
40
  export { Empty, EmptyProps } from './Empty.cjs';
41
41
  export { Spin, SpinProps, SpinSize } from './Spin.cjs';
42
42
  export { Skeleton, SkeletonAvatarConfig, SkeletonParagraphConfig, SkeletonProps, SkeletonTitleConfig } from './Skeleton.cjs';
43
- export { Image, ImageGrid, ImageGridItem, ImageGridProps, ImageProps, ImageVariant, LayeredImage, LayeredImageInset, LayeredImageLayer, LayeredImageProps, SpriteImage, SpriteImageProps, SpriteRect } from './Image.cjs';
43
+ export { Image, ImageGrid, ImageGridItem, ImageGridProps, ImagePreviewMode, ImagePreviewToolbarRenderProps, ImageProps, ImageVariant, LayeredImage, LayeredImageInset, LayeredImageLayer, LayeredImageProps, SpriteImage, SpriteImageProps, SpriteRect } from './Image.cjs';
44
44
  export { Cascader, CascaderOption, CascaderProps, CascaderShowSearchConfig } from './Cascader.cjs';
45
45
  export { BaseTypographyProps, CopyableConfig, EditableConfig, EllipsisConfig, Link, LinkProps, Paragraph, ParagraphProps, Text, TextProps, Title, TitleLevel, TitleProps, Typography, TypographyProps, TypographyType } from './Typography.cjs';
46
46
  export { ColorPicker, ColorPickerProps } from './ColorPicker.cjs';
@@ -52,6 +52,6 @@ import 'react/jsx-runtime';
52
52
  import 'react';
53
53
 
54
54
  /** Package version — bumped by release scripts. */
55
- declare const VERSION = "0.6.16";
55
+ declare const VERSION = "0.6.18";
56
56
 
57
57
  export { VERSION };
package/dist/index.d.ts CHANGED
@@ -40,7 +40,7 @@ export { ErrorField, Form, FormInstance, FormItem, FormItemProps, FormLayout, Fo
40
40
  export { Empty, EmptyProps } from './Empty.js';
41
41
  export { Spin, SpinProps, SpinSize } from './Spin.js';
42
42
  export { Skeleton, SkeletonAvatarConfig, SkeletonParagraphConfig, SkeletonProps, SkeletonTitleConfig } from './Skeleton.js';
43
- export { Image, ImageGrid, ImageGridItem, ImageGridProps, ImageProps, ImageVariant, LayeredImage, LayeredImageInset, LayeredImageLayer, LayeredImageProps, SpriteImage, SpriteImageProps, SpriteRect } from './Image.js';
43
+ export { Image, ImageGrid, ImageGridItem, ImageGridProps, ImagePreviewMode, ImagePreviewToolbarRenderProps, ImageProps, ImageVariant, LayeredImage, LayeredImageInset, LayeredImageLayer, LayeredImageProps, SpriteImage, SpriteImageProps, SpriteRect } from './Image.js';
44
44
  export { Cascader, CascaderOption, CascaderProps, CascaderShowSearchConfig } from './Cascader.js';
45
45
  export { BaseTypographyProps, CopyableConfig, EditableConfig, EllipsisConfig, Link, LinkProps, Paragraph, ParagraphProps, Text, TextProps, Title, TitleLevel, TitleProps, Typography, TypographyProps, TypographyType } from './Typography.js';
46
46
  export { ColorPicker, ColorPickerProps } from './ColorPicker.js';
@@ -52,6 +52,6 @@ import 'react/jsx-runtime';
52
52
  import 'react';
53
53
 
54
54
  /** Package version — bumped by release scripts. */
55
- declare const VERSION = "0.6.16";
55
+ declare const VERSION = "0.6.18";
56
56
 
57
57
  export { VERSION };
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  export { Timeline } from './chunk-OTSDPQPV.js';
2
2
  export { Tooltip } from './chunk-MOZ52KN6.js';
3
3
  export { Link, Paragraph, Text, Title, Typography } from './chunk-6HF6UF73.js';
4
- export { TablePro } from './chunk-QNN3YV2P.js';
5
- export { Table } from './chunk-4YSGGZDB.js';
4
+ export { TablePro } from './chunk-2FOC3D6X.js';
5
+ export { Table } from './chunk-UGAN4BBW.js';
6
6
  export { Tabs } from './chunk-ZTCRD2FL.js';
7
7
  export { THEME_PANEL_DEFAULT_PRESET_OPTIONS, THEME_PANEL_DEFAULT_THEME_PRESETS, ThemePanel } from './chunk-3VSHGM54.js';
8
- export { TimePicker } from './chunk-DU4VSUBF.js';
8
+ export { TimePicker } from './chunk-HG6YS4I7.js';
9
9
  export { Skeleton } from './chunk-R3DTXVP2.js';
10
10
  export { Slider } from './chunk-D7GK6H6V.js';
11
11
  export { Splitter } from './chunk-IZHH6CVY.js';
@@ -18,18 +18,18 @@ export { InputNumber } from './chunk-3VXGZ3SJ.js';
18
18
  export { List } from './chunk-YAFDVNXT.js';
19
19
  export { MessageContainer, ToastContainer, message, toast } from './chunk-P64NPZBG.js';
20
20
  export { Modal } from './chunk-BVQOJKRX.js';
21
- export { Pagination } from './chunk-6LC4QROE.js';
22
- export { Select } from './chunk-6PHPRZTT.js';
21
+ export { Pagination } from './chunk-V5SQOZPF.js';
22
+ export { Select } from './chunk-E22OIVYP.js';
23
23
  export { Tag } from './chunk-6K5YI4ZE.js';
24
24
  export { Popover } from './chunk-I777JTTG.js';
25
25
  export { Progress } from './chunk-KMPFESEV.js';
26
26
  export { Radio, RadioGroup } from './chunk-KYV75JPQ.js';
27
- export { DateTimePicker } from './chunk-YPE6CDXQ.js';
27
+ export { DateTimePicker } from './chunk-SOCYOUGM.js';
28
28
  export { Divider } from './chunk-HBO7ZDEQ.js';
29
29
  export { Drawer } from './chunk-WMGMIE2D.js';
30
30
  export { Empty } from './chunk-6MEOLYNQ.js';
31
31
  export { Form, FormItem, useForm } from './chunk-ZR4IMROK.js';
32
- export { Image, ImageGrid, LayeredImage, SpriteImage } from './chunk-EQ4FPOQQ.js';
32
+ export { Image, ImageGrid, LayeredImage, SpriteImage } from './chunk-5VOUUQF5.js';
33
33
  export { Card } from './chunk-ARUPS7JH.js';
34
34
  export { Spin } from './chunk-FYSXJXNW.js';
35
35
  export { Cascader } from './chunk-4HJBF4GY.js';
@@ -38,7 +38,8 @@ export { Collapse } from './chunk-6LN4VVX7.js';
38
38
  export { ColorPicker } from './chunk-TJECLLN4.js';
39
39
  export { CommandPalette } from './chunk-5MOYKVB7.js';
40
40
  export { ContextMenu } from './chunk-AAPZLBHQ.js';
41
- export { DatePicker } from './chunk-FKP5D5IS.js';
41
+ export { DatePicker } from './chunk-7NTTRKNT.js';
42
+ import './chunk-RC6ULCQP.js';
42
43
  export { Alert } from './chunk-A6O25EP2.js';
43
44
  export { AppShell, Sidebar, TitleBar, WindowControls } from './chunk-XCXUGHDF.js';
44
45
  export { AutoComplete } from './chunk-CFZVWY5N.js';
@@ -52,6 +53,6 @@ export { Calendar } from './chunk-I7TOBKJO.js';
52
53
  export { AimOutlined, AppstoreOutlined, BarChartOutlined, BlockOutlined, BorderOutlined, CameraOutlined, CaretDownOutlined, CaretUpOutlined, CheckCircleFilled, CheckCircleOutlined, CheckOutlined, ClockCircleFilled, CloseCircleOutlined, CloseOutlined, CopyOutlined, DashboardOutlined, DeleteOutlined, DownOutlined, EnvironmentOutlined, ExclamationCircleOutlined, FolderOpenOutlined, ICON_NAMES, Icon, LeftOutlined, LoadingOutlined, MinusCircleOutlined, MinusOutlined, NAMED_ICON_MAP, PictureOutlined, PlusOutlined, QqOutlined, ReloadOutlined, RightOutlined, RobotOutlined, SearchOutlined, SettingOutlined, StarFilled, StarOutlined, SwapOutlined, SwapRightOutlined, SyncOutlined, ThunderboltOutlined, TranslationOutlined, UnorderedListOutlined, UserOutlined, isIconName, renderIconSlot, resolveIconName } from './chunk-FDZG27IG.js';
53
54
 
54
55
  // src/index.ts
55
- var VERSION = "0.6.16";
56
+ var VERSION = "0.6.18";
56
57
 
57
58
  export { VERSION };
package/dist/styles.css CHANGED
@@ -3191,14 +3191,92 @@ input, textarea, select { font-family: inherit; color: inherit; }
3191
3191
  background: var(--image-preview-mask-bg, var(--mask-bg));
3192
3192
  backdrop-filter: blur(16px);
3193
3193
  display: grid; place-items: center;
3194
+ overflow: hidden;
3195
+ padding: min(8vh, 72px) var(--gap-8) var(--gap-8);
3194
3196
  z-index: 500;
3195
3197
  animation: fadeIn var(--dur) var(--ease);
3196
3198
  }
3197
- .image-preview-overlay img {
3199
+ .image-preview-overlay:focus {
3200
+ outline: none;
3201
+ }
3202
+ .image-preview-toolbar {
3203
+ --image-preview-toolbar-ink: color-mix(in oklch, var(--accent) 42%, var(--fg-muted));
3204
+ --image-preview-toolbar-ink-hover: color-mix(in oklch, var(--accent) 48%, var(--fg));
3205
+ position: absolute;
3206
+ top: var(--gap-5);
3207
+ left: 50%;
3208
+ z-index: 1;
3209
+ display: flex;
3210
+ align-items: center;
3211
+ gap: var(--gap-2);
3212
+ max-width: min(calc(100vw - 32px), 720px);
3213
+ padding: 6px;
3214
+ overflow-x: auto;
3215
+ color: var(--image-preview-toolbar-ink);
3216
+ border: 1px solid color-mix(in oklch, var(--accent) 14%, var(--border));
3217
+ border-radius: var(--r-pill);
3218
+ background: color-mix(in oklch, var(--bg-raised) 92%, var(--accent-soft));
3219
+ box-shadow:
3220
+ var(--neu-float),
3221
+ 0 0 0 1px color-mix(in oklch, var(--accent-glow) 22%, transparent);
3222
+ backdrop-filter: blur(18px) saturate(1.2);
3223
+ transform: translateX(-50%);
3224
+ }
3225
+ .image-preview-toolbar .btn {
3226
+ flex: 0 0 auto;
3227
+ }
3228
+ .image-preview-toolbar .btn.ghost {
3229
+ color: var(--image-preview-toolbar-ink);
3230
+ }
3231
+ .image-preview-toolbar .btn.ghost:hover {
3232
+ color: var(--image-preview-toolbar-ink-hover);
3233
+ background: color-mix(in oklch, var(--accent-soft) 36%, var(--bg));
3234
+ box-shadow: var(--neu-shadow-subtle);
3235
+ }
3236
+ .image-preview-toolbar .btn.ghost:active,
3237
+ .image-preview-toolbar .btn.ghost.pressed {
3238
+ color: var(--image-preview-toolbar-ink-hover);
3239
+ background: color-mix(in oklch, var(--accent-soft) 48%, var(--bg));
3240
+ box-shadow: var(--neu-shadow-inset-strong);
3241
+ }
3242
+ .image-preview-scale {
3243
+ min-width: 48px;
3244
+ color: var(--image-preview-toolbar-ink);
3245
+ font-family: var(--font-mono);
3246
+ font-size: var(--fs-sm);
3247
+ font-weight: 500;
3248
+ line-height: 1;
3249
+ text-align: center;
3250
+ }
3251
+ .image-preview-ratio {
3252
+ min-width: 46px;
3253
+ padding-inline: 10px;
3254
+ font-family: var(--font-mono);
3255
+ }
3256
+ .image-preview-toolbar-slot {
3257
+ display: inline-flex;
3258
+ flex: 0 0 auto;
3259
+ align-items: center;
3260
+ gap: var(--gap-2);
3261
+ }
3262
+ .image-preview-img {
3198
3263
  max-width: 80vw;
3199
3264
  max-height: 80vh;
3200
3265
  border-radius: var(--r-lg);
3201
3266
  box-shadow: var(--neu-shadow-float);
3267
+ transform-origin: center;
3268
+ transition: transform var(--dur-fast) var(--ease);
3269
+ user-select: none;
3270
+ will-change: transform;
3271
+ }
3272
+ @media (max-width: 640px) {
3273
+ .image-preview-overlay {
3274
+ padding: 76px var(--gap-4) var(--gap-4);
3275
+ }
3276
+ .image-preview-toolbar {
3277
+ top: var(--gap-4);
3278
+ border-radius: var(--r-lg);
3279
+ }
3202
3280
  }
3203
3281
  /* ============ SpriteImage / LayeredImage ============ */
3204
3282
  .n-sprite-image,
@@ -28,6 +28,25 @@ import { Image, ImageGrid, SpriteImage, LayeredImage } from "@fangxinyan/lumina"
28
28
  />
29
29
  ```
30
30
 
31
+ ### 精细预览
32
+
33
+ 预览层内置放大、缩小、适配窗口、1:1、滚轮缩放和拖拽平移;previewMaxWidth / previewMaxHeight 控制适配态尺寸,renderPreviewToolbar 可追加业务按钮。
34
+
35
+ ```tsx
36
+ <Image
37
+ src={url}
38
+ width={260}
39
+ height={180}
40
+ previewMaxWidth="90vw"
41
+ previewMaxHeight="76vh"
42
+ renderPreviewToolbar={({ fitToWindow, scale }) => (
43
+ <Button size="sm" variant="ghost" icon="star" onClick={fitToWindow}>
44
+ 标记 {Math.round(scale * 100)}%
45
+ </Button>
46
+ )}
47
+ />
48
+ ```
49
+
31
50
  ### 图标 / 原始资源
32
51
 
33
52
  variant="icon" 会默认去掉外层 padding,适合 1:1 装备、物品、头像缩略图;variant="raw" 保留原始图片比例。
@@ -82,6 +101,8 @@ LayeredImage 将多张图片叠在同一个盒子里,适合头像 + 头像框、
82
101
  | preview | `boolean` | `true` | 支持点击全屏预览 |
83
102
  | previewClassName | `string` | — | 预览蒙层 className |
84
103
  | previewStyle | `CSSProperties` | — | 预览蒙层内联样式 |
104
+ | previewMaxWidth / previewMaxHeight | `number | string` | `"80vw" / "80vh"` | 预览适配态的最大尺寸 |
105
+ | renderPreviewToolbar | `(controls) => ReactNode` | — | 在预览工具栏追加自定义按钮 |
85
106
  | hover | `boolean` | `true` | 悬浮放大 |
86
107
  | placeholder | `ReactNode` | — | 占位/错误时内容 |
87
108
  | imgProps | `ImgHTMLAttributes` | — | 透传到底层 img 的属性 |
package/docs/llms.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > 拟态风格的 React 18 组件库,目标是 Electron 桌面应用。**写给 AI 编程助手**的按需文档 —— 每个组件单独一个 `.md`,避免一次性读取全部。示例源自 playground 的 demo,可直接复制运行。
4
4
 
5
5
  - **包名**: `@fangxinyan/lumina`
6
- - **版本**: `0.6.16`
6
+ - **版本**: `0.6.18`
7
7
  - **React 最低版本**: 18
8
8
  - **环境**: 带打包器的 React 工程(Vite / Next.js / Webpack / Remix / Electron + Vite 等)
9
9
  - **零运行时依赖**: 只依赖 `react` / `react-dom` (peer deps)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fangxinyan/lumina",
3
- "version": "0.6.16",
3
+ "version": "0.6.18",
4
4
  "description": "Lumina — Neumorphic component library for Electron & React apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",