@fangxinyan/lumina 0.9.0 → 0.9.1

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 (118) hide show
  1. package/dist/Alert.d.cts +1 -1
  2. package/dist/Alert.d.ts +1 -1
  3. package/dist/AppShell.d.cts +1 -1
  4. package/dist/AppShell.d.ts +1 -1
  5. package/dist/AutoComplete.d.cts +1 -1
  6. package/dist/AutoComplete.d.ts +1 -1
  7. package/dist/Avatar.d.cts +1 -1
  8. package/dist/Avatar.d.ts +1 -1
  9. package/dist/Badge.d.cts +1 -1
  10. package/dist/Badge.d.ts +1 -1
  11. package/dist/Button.d.cts +1 -1
  12. package/dist/Button.d.ts +1 -1
  13. package/dist/Calendar.d.cts +1 -1
  14. package/dist/Calendar.d.ts +1 -1
  15. package/dist/Card.d.cts +1 -1
  16. package/dist/Card.d.ts +1 -1
  17. package/dist/Cascader.d.cts +1 -1
  18. package/dist/Cascader.d.ts +1 -1
  19. package/dist/Checkbox.d.cts +1 -1
  20. package/dist/Checkbox.d.ts +1 -1
  21. package/dist/Collapse.d.cts +1 -1
  22. package/dist/Collapse.d.ts +1 -1
  23. package/dist/ColorPicker.d.cts +1 -1
  24. package/dist/ColorPicker.d.ts +1 -1
  25. package/dist/CommandPalette.d.cts +1 -1
  26. package/dist/CommandPalette.d.ts +1 -1
  27. package/dist/ContextMenu.d.cts +1 -1
  28. package/dist/ContextMenu.d.ts +1 -1
  29. package/dist/DatePicker.d.cts +1 -1
  30. package/dist/DatePicker.d.ts +1 -1
  31. package/dist/DateTimePicker.d.cts +1 -1
  32. package/dist/DateTimePicker.d.ts +1 -1
  33. package/dist/Divider.d.cts +1 -1
  34. package/dist/Divider.d.ts +1 -1
  35. package/dist/Drawer.d.cts +1 -1
  36. package/dist/Drawer.d.ts +1 -1
  37. package/dist/Empty.d.cts +1 -1
  38. package/dist/Empty.d.ts +1 -1
  39. package/dist/Form.d.cts +1 -1
  40. package/dist/Form.d.ts +1 -1
  41. package/dist/Icon.d.cts +1 -1
  42. package/dist/Icon.d.ts +1 -1
  43. package/dist/Image.d.cts +1 -1
  44. package/dist/Image.d.ts +1 -1
  45. package/dist/Input.d.cts +1 -1
  46. package/dist/Input.d.ts +1 -1
  47. package/dist/InputNumber.d.cts +1 -1
  48. package/dist/InputNumber.d.ts +1 -1
  49. package/dist/List.d.cts +1 -1
  50. package/dist/List.d.ts +1 -1
  51. package/dist/Message.d.cts +1 -1
  52. package/dist/Message.d.ts +1 -1
  53. package/dist/{Modal-UI2FXNDR.css → Modal-KLLX3Z2M.css} +23 -6
  54. package/dist/Modal.cjs +2 -2
  55. package/dist/Modal.d.cts +1 -1
  56. package/dist/Modal.d.ts +1 -1
  57. package/dist/Modal.js +1 -1
  58. package/dist/Pagination.d.cts +1 -1
  59. package/dist/Pagination.d.ts +1 -1
  60. package/dist/Popover.d.cts +1 -1
  61. package/dist/Popover.d.ts +1 -1
  62. package/dist/Progress.d.cts +1 -1
  63. package/dist/Progress.d.ts +1 -1
  64. package/dist/Radio.d.cts +1 -1
  65. package/dist/Radio.d.ts +1 -1
  66. package/dist/Select.d.cts +1 -1
  67. package/dist/Select.d.ts +1 -1
  68. package/dist/Skeleton.d.cts +1 -1
  69. package/dist/Skeleton.d.ts +1 -1
  70. package/dist/Slider.d.cts +1 -1
  71. package/dist/Slider.d.ts +1 -1
  72. package/dist/Spin.d.cts +1 -1
  73. package/dist/Spin.d.ts +1 -1
  74. package/dist/Splitter.d.cts +1 -1
  75. package/dist/Splitter.d.ts +1 -1
  76. package/dist/StatusBar.d.cts +1 -1
  77. package/dist/StatusBar.d.ts +1 -1
  78. package/dist/Surface.d.cts +2 -2
  79. package/dist/Surface.d.ts +2 -2
  80. package/dist/Switch.d.cts +1 -1
  81. package/dist/Switch.d.ts +1 -1
  82. package/dist/Table.d.cts +1 -1
  83. package/dist/Table.d.ts +1 -1
  84. package/dist/TablePro.d.cts +1 -1
  85. package/dist/TablePro.d.ts +1 -1
  86. package/dist/Tabs.d.cts +1 -1
  87. package/dist/Tabs.d.ts +1 -1
  88. package/dist/Tag.d.cts +1 -1
  89. package/dist/Tag.d.ts +1 -1
  90. package/dist/Textarea.d.cts +1 -1
  91. package/dist/Textarea.d.ts +1 -1
  92. package/dist/{Theme-uQq2B0Yk.d.cts → Theme-BJa0Nb3w.d.cts} +1 -1
  93. package/dist/{Theme-CLedeJ_C.d.ts → Theme-DTtq_WWg.d.ts} +1 -1
  94. package/dist/Theme.d.cts +4 -4
  95. package/dist/Theme.d.ts +4 -4
  96. package/dist/ThemePanel.d.cts +2 -2
  97. package/dist/ThemePanel.d.ts +2 -2
  98. package/dist/TimePicker.d.cts +1 -1
  99. package/dist/TimePicker.d.ts +1 -1
  100. package/dist/Timeline.d.cts +1 -1
  101. package/dist/Timeline.d.ts +1 -1
  102. package/dist/Tooltip.d.cts +1 -1
  103. package/dist/Tooltip.d.ts +1 -1
  104. package/dist/Typography.d.cts +1 -1
  105. package/dist/Typography.d.ts +1 -1
  106. package/dist/{chunk-GMFOY7RD.js → chunk-RJCPXAZ3.js} +10 -4
  107. package/dist/{chunk-I2YL5XE4.cjs → chunk-SOAGRYM3.cjs} +10 -4
  108. package/dist/{componentThemeTypes-Jt4B5aU8.d.cts → componentThemeTypes-C7lS3Hi8.d.cts} +6 -2
  109. package/dist/{componentThemeTypes-Jt4B5aU8.d.ts → componentThemeTypes-C7lS3Hi8.d.ts} +6 -2
  110. package/dist/index.cjs +3 -3
  111. package/dist/index.d.cts +3 -3
  112. package/dist/index.d.ts +3 -3
  113. package/dist/index.js +2 -2
  114. package/dist/styles.css +23 -6
  115. package/docs/llms/modal.md +24 -2
  116. package/docs/llms/theme.md +1 -1
  117. package/docs/llms.md +1 -1
  118. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -1997,6 +1997,8 @@ button.collapse-chev {
1997
1997
  }
1998
1998
  .modal-head {
1999
1999
  display: flex;
2000
+ flex: 0 0 auto;
2001
+ min-width: 0;
2000
2002
  align-items: flex-start;
2001
2003
  justify-content: space-between;
2002
2004
  gap: var(--gap-3);
@@ -2011,26 +2013,41 @@ button.collapse-chev {
2011
2013
  .modal-body {
2012
2014
  min-width: 0;
2013
2015
  min-height: 0;
2014
- margin-inline: calc(var(--gap-6) * -1);
2016
+ margin-inline: calc(var(--overlay-shadow-safe-area) * -1);
2015
2017
  padding: var(--overlay-shadow-safe-area);
2016
2018
  color: var(--lmn-modal-fg-muted, var(--fg-muted));
2017
2019
  font-size: 13px;
2018
2020
  line-height: 1.6;
2019
- flex: 1;
2021
+ flex: 1 1 auto;
2022
+ overflow-x: hidden;
2020
2023
  overflow-y: auto;
2021
2024
  }
2022
2025
  .modal-body:first-child {
2023
- margin-top: calc(var(--gap-6) * -1);
2026
+ margin-top: calc(var(--overlay-shadow-safe-area) * -1);
2024
2027
  }
2025
- .modal-body:last-child {
2026
- margin-bottom: calc(var(--gap-6) * -1);
2028
+ .modal-body.default-overflow > * {
2029
+ min-width: 0;
2030
+ max-width: 100%;
2031
+ flex-shrink: 0;
2027
2032
  }
2028
2033
  .modal-body.inset-none {
2034
+ margin-inline: calc(var(--gap-6) * -1);
2029
2035
  padding: 0;
2030
2036
  }
2037
+ .modal-body.inset-none:first-child {
2038
+ margin-top: calc(var(--gap-6) * -1);
2039
+ }
2040
+ .modal-body.inset-none:last-child {
2041
+ margin-bottom: calc(var(--gap-6) * -1);
2042
+ }
2031
2043
  .modal-foot {
2032
2044
  display: flex;
2033
- gap: 10px;
2045
+ flex: 0 0 auto;
2046
+ min-width: 0;
2047
+ min-height: var(--lmn-modal-footer-min-height, var(--ctrl-h));
2048
+ margin-top: var(--lmn-modal-footer-gap, var(--gap-4));
2049
+ align-items: center;
2050
+ gap: var(--lmn-modal-footer-action-gap, var(--gap-3));
2034
2051
  justify-content: flex-end;
2035
2052
  }
2036
2053
  .modal-close {
@@ -104,6 +104,28 @@ closable={false} 隐藏右上角 ×,closeIcon 可自定义。
104
104
  </Modal>
105
105
  ```
106
106
 
107
+ ### 长内容与独立 footer
108
+
109
+ 默认正文只纵向滚动并保留底部安全区;直接子控件不会被纵向压缩。footer 独立于滚动区,bodyOverflow="hidden" 仍可交给内层容器滚动。
110
+
111
+ ```tsx
112
+ <Modal
113
+ footer={null}
114
+ bodyStyle={{ maxHeight: 360, display: "flex", flexDirection: "column" }}
115
+ >
116
+ <Input placeholder="固定高度的搜索框" />
117
+ <LongList />
118
+ </Modal>
119
+
120
+ <Modal bodyStyle={{ maxHeight: 360 }}>
121
+ <LongForm />
122
+ </Modal>
123
+
124
+ <Modal bodyOverflow="hidden">
125
+ <InnerScrollableLayout />
126
+ </Modal>
127
+ ```
128
+
107
129
  ### 嵌套浮层与 Esc 顺序
108
130
 
109
131
  子 Select 即使 Portal 到对话框之外,也会保持在 Modal 上方并参与同一焦点范围;连续按 Esc 会先关 Select,再关 Modal。
@@ -125,14 +147,14 @@ closable={false} 隐藏右上角 ×,closeIcon 可自定义。
125
147
  | onOk | `() => void` | — | 默认 OK 按钮点击 |
126
148
  | onCancel | `() => void` | — | 默认 Cancel 按钮 / Esc / 关闭 / 遮罩触发,缺省则用 onClose |
127
149
  | title / description | `ReactNode` | — | 标题/说明 |
128
- | footer | `ReactNode` | — | 自定义底部(null 去除) |
150
+ | footer | `ReactNode` | — | 独立于正文滚动区的底部区域;自定义内容,null 去除 |
129
151
  | okText / cancelText | `ReactNode` | `"确定" / "取消"` | 默认按钮文案 |
130
152
  | okButtonProps / cancelButtonProps | `Partial<ButtonProps>` | — | 透传给默认按钮 |
131
153
  | confirmLoading | `boolean` | `false` | OK 按钮显示 spinner 并禁用 |
132
154
  | bodyClassName | `string` | — | 正文容器 className |
133
155
  | bodyStyle | `CSSProperties` | — | 正文容器内联样式 |
134
156
  | bodyProps | `HTMLAttributes<HTMLDivElement>` | — | 透传给正文容器的 DOM props |
135
- | bodyOverflow | `CSSProperties['overflow']` | — | 正文容器 overflow 快捷控制 |
157
+ | bodyOverflow | `CSSProperties['overflow']` | — | 正文容器 overflow 快捷控制;hidden 可让复杂内层布局接管滚动 |
136
158
  | bodyInset | `"safe" | "none"` | `"safe"` | 正文边缘留白;safe 自动保护拟态阴影,none 用于贴边内容 |
137
159
  | closable | `boolean` | `true` | 显示右上角 × |
138
160
  | closeIcon | `ReactNode` | — | 自定义关闭图标 |
@@ -272,7 +272,7 @@ applyTheme(document.documentElement, {
272
272
  | tokens | `ThemeTokens` | — | 短键会写入组件前缀变量;以 -- 开头的键作为高级原始变量逃生口 |
273
273
  | components | `ComponentThemeOverrides` | — | 继续定向配置当前组件内部或 subtree 后代的组件类型 |
274
274
  | styles.root | `CSSProperties` | — | 所有组件都支持真实视觉根节点;调用方 style 仍保持最高优先级 |
275
- | styles.popup / overlay / body | `CSSProperties` | — | 浮层、遮罩和正文等组件专用静态插槽;定位与用户 popupStyle 不会被覆盖 |
275
+ | styles.popup / overlay / header / body / footer | `CSSProperties` | — | 浮层、遮罩和 Modal 头部/正文/footer 等稳定静态插槽;定位与用户实例样式不会被覆盖 |
276
276
 
277
277
 
278
278
  ---
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.9.0`
6
+ - **版本**: `0.9.1`
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.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "Lumina — Neumorphic component library for Electron & React apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",