@astryx-vue/core 0.1.3 → 0.2.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 (269) hide show
  1. package/dist/AlertDialog/index.js +1 -1
  2. package/dist/{AlertDialog-BylcA4vV.js → AlertDialog-ovx4cBjM.js} +1 -1
  3. package/dist/AppShell/index.js +1 -1
  4. package/dist/{AppShell-b0PWt9Fz.js → AppShell-1wNIEtK_.js} +2 -2
  5. package/dist/Avatar/index.d.ts +1 -1
  6. package/dist/Avatar/index.js +1 -1
  7. package/dist/Avatar-jmHInHwj.js +244 -0
  8. package/dist/AvatarGroup/index.d.ts +1 -1
  9. package/dist/AvatarGroup/index.js +1 -1
  10. package/dist/{AvatarGroup-CZcgAMjM.js → AvatarGroup-QyzSrpYA.js} +8 -7
  11. package/dist/Badge/index.d.ts +1 -1
  12. package/dist/Badge/index.js +1 -1
  13. package/dist/Badge-CjDQPF5g.js +30 -0
  14. package/dist/Banner/index.d.ts +1 -1
  15. package/dist/Breadcrumbs/index.d.ts +2 -2
  16. package/dist/Breadcrumbs/index.js +1 -1
  17. package/dist/{Breadcrumbs-C3YZFQ9w.js → Breadcrumbs-C97HmjkC.js} +45 -11
  18. package/dist/Button/index.d.ts +1 -1
  19. package/dist/ButtonGroup/index.d.ts +1 -1
  20. package/dist/Calendar/index.d.ts +2 -2
  21. package/dist/Calendar/index.js +1 -1
  22. package/dist/Calendar-DqC3EDN1.js +352 -0
  23. package/dist/Card/index.d.ts +1 -1
  24. package/dist/Carousel/index.d.ts +2 -0
  25. package/dist/Carousel/index.js +2 -0
  26. package/dist/Carousel-BGUnskjo.js +363 -0
  27. package/dist/Chat/index.js +1 -1
  28. package/dist/{Chat-C1aWl5V3.js → Chat-DCjXRiOF.js} +8 -8
  29. package/dist/CheckboxInput/index.d.ts +1 -1
  30. package/dist/CheckboxList/index.d.ts +1 -1
  31. package/dist/CheckboxList/index.js +1 -1
  32. package/dist/Citation/index.js +1 -1
  33. package/dist/{Citation-C1X0Rde8.js → Citation-DunoAqVH.js} +2 -2
  34. package/dist/ClickableCard/index.d.ts +1 -1
  35. package/dist/Code/index.d.ts +3 -2
  36. package/dist/Code/index.js +4 -2
  37. package/dist/Code-yb_KOFtJ.js +299 -0
  38. package/dist/{CodeBlock-BQdooQy2.js → CodeBlock-CAF-VJnh.js} +8 -2
  39. package/dist/Collapsible/index.js +1 -1
  40. package/dist/{Collapsible-BS9ctCQV.js → Collapsible-DvMiYJp7.js} +1 -1
  41. package/dist/CommandPalette/index.js +1 -1
  42. package/dist/{CommandPalette-u5h_E05P.js → CommandPalette-xfm9ldUI.js} +1 -1
  43. package/dist/ComplexSelector/index.d.ts +1 -1
  44. package/dist/ComplexSelector/index.js +1 -1
  45. package/dist/{ComplexSelector-BHmGWml0.js → ComplexSelector-B6lBTRhP.js} +2 -2
  46. package/dist/ContextMenu/index.d.ts +2 -2
  47. package/dist/ContextMenu/index.js +1 -1
  48. package/dist/{ContextMenu-dA-ppaRQ.js → ContextMenu-DUkED3Z3.js} +101 -63
  49. package/dist/DateInput/index.d.ts +2 -2
  50. package/dist/DateInput/index.js +1 -1
  51. package/dist/DateInput-Crcg-CCj.js +376 -0
  52. package/dist/DateRangeInput/index.d.ts +1 -1
  53. package/dist/DateRangeInput/index.js +1 -1
  54. package/dist/{DateRangeInput-fmQlr_A7.js → DateRangeInput-e9KSxBBK.js} +2 -2
  55. package/dist/DateTimeInput/index.d.ts +1 -1
  56. package/dist/DateTimeInput/index.js +1 -1
  57. package/dist/{DateTimeInput-Bs1JmcIp.js → DateTimeInput-fSOfuLex.js} +5 -3
  58. package/dist/DropdownMenu/index.d.ts +3 -2
  59. package/dist/DropdownMenu/index.js +3 -2
  60. package/dist/{DropdownMenu-B0gogrvG.js → DropdownMenu-8G0B1UND.js} +63 -16
  61. package/dist/DropdownMenu-XvW4BJob.js +164 -0
  62. package/dist/EmptyState/index.js +1 -1
  63. package/dist/{EmptyState-Bhlqgsg4.js → EmptyState-CUJdTYKV.js} +1 -1
  64. package/dist/FileInput/index.d.ts +1 -1
  65. package/dist/FileInput/index.js +1 -1
  66. package/dist/{FileInput-CmAfOpkA.js → FileInput-D-fchyQH.js} +2 -2
  67. package/dist/Icon/index.d.ts +4 -0
  68. package/dist/Icon/index.js +3 -0
  69. package/dist/Icon/plugin.d.ts +45 -0
  70. package/dist/Icon/plugin.js +177 -0
  71. package/dist/Icon-Bku25g_K.js +193 -0
  72. package/dist/Lightbox/index.d.ts +2 -0
  73. package/dist/Lightbox/index.js +2 -0
  74. package/dist/Lightbox-uuVGgHxW.js +384 -0
  75. package/dist/Link/index.d.ts +1 -1
  76. package/dist/Link/index.js +1 -1
  77. package/dist/Link-DqdQZ37C.js +141 -0
  78. package/dist/List/index.d.ts +1 -1
  79. package/dist/Markdown/index.js +1 -1
  80. package/dist/{Markdown-CwtLr3f_.js → Markdown-DLICa3db.js} +3 -3
  81. package/dist/MetadataList/index.d.ts +1 -1
  82. package/dist/MetadataList/index.js +1 -1
  83. package/dist/{MetadataList-DlXQTLog.js → MetadataList-h492rqEN.js} +1 -1
  84. package/dist/MobileNav/index.js +1 -1
  85. package/dist/{MobileNavToggle-CgQamG6E.js → MobileNavToggle-BMj3Wtuq.js} +1 -1
  86. package/dist/MoreMenu/index.d.ts +1 -1
  87. package/dist/MoreMenu/index.js +1 -1
  88. package/dist/{MoreMenu-BXL6Dqsu.js → MoreMenu-DkYi5az5.js} +2 -2
  89. package/dist/MultiSelector/index.d.ts +1 -1
  90. package/dist/MultiSelector/index.js +1 -1
  91. package/dist/{MultiSelector-DT8ZccMI.js → MultiSelector-C2IS-EaU.js} +2 -2
  92. package/dist/NavItem/index.d.ts +1 -1
  93. package/dist/NavMenu/index.d.ts +1 -1
  94. package/dist/NavMenu/index.js +1 -1
  95. package/dist/{NavMenuItem-mzNQESpB.js → NavMenuItem-B-k7olt5.js} +2 -1
  96. package/dist/NumberInput/index.d.ts +2 -2
  97. package/dist/NumberInput/index.js +1 -1
  98. package/dist/NumberInput-CjfAsFwj.js +210 -0
  99. package/dist/Outline/index.d.ts +2 -0
  100. package/dist/Outline/index.js +2 -0
  101. package/dist/Outline-BTmrtvXR.js +325 -0
  102. package/dist/OverflowList/index.d.ts +1 -1
  103. package/dist/OverflowList/index.js +1 -1
  104. package/dist/{OverflowList-zXg3g6fy.js → OverflowList-CRE8BE7V.js} +2 -2
  105. package/dist/Overlay/index.d.ts +1 -1
  106. package/dist/Pagination/index.d.ts +2 -2
  107. package/dist/Pagination/index.js +1 -1
  108. package/dist/{Pagination-DXfgMUKJ.js → Pagination-BpGXPmc7.js} +76 -22
  109. package/dist/Popover/index.d.ts +1 -1
  110. package/dist/ProgressBar/index.d.ts +1 -1
  111. package/dist/ProgressBar/index.js +1 -1
  112. package/dist/{ProgressBar-ChDp-7oe.js → ProgressBar-DO9Chic6.js} +31 -11
  113. package/dist/Radio/index.d.ts +1 -1
  114. package/dist/RadioList/index.d.ts +1 -1
  115. package/dist/Resizable/index.js +1 -1
  116. package/dist/{Resizable-BuGKvU9I.js → Resizable-CE8XQDL2.js} +1 -1
  117. package/dist/ScrollableArea/index.d.ts +1 -1
  118. package/dist/SegmentedControl/index.d.ts +1 -1
  119. package/dist/SelectableCard/index.d.ts +1 -1
  120. package/dist/Selector/index.d.ts +2 -2
  121. package/dist/Selector/index.js +1 -1
  122. package/dist/Selector-DkJOLZSR.js +468 -0
  123. package/dist/SideNav/index.d.ts +1 -1
  124. package/dist/SideNav/index.js +1 -1
  125. package/dist/{SideNav-Cdrigq2A.js → SideNav-DcDWBnXJ.js} +17 -17
  126. package/dist/Stepper/index.d.ts +1 -1
  127. package/dist/Stepper/index.js +1 -1
  128. package/dist/{Stepper-DxmLfh8O.js → Stepper-DZKaqEoz.js} +1 -1
  129. package/dist/Switch/index.d.ts +1 -1
  130. package/dist/TabList/index.d.ts +1 -1
  131. package/dist/TabList/index.js +1 -1
  132. package/dist/{TabList-C411uNQU.js → TabList-hm06QPiW.js} +10 -3
  133. package/dist/Table/index.js +1 -1
  134. package/dist/{Table-7qRmlIQd.js → Table-DwehtMap.js} +4 -4
  135. package/dist/Text/index.d.ts +3 -2
  136. package/dist/Text/index.js +1 -1
  137. package/dist/{Text-CKd7e3gK.js → Text-BHVghsWo.js} +12 -2
  138. package/dist/TextArea/index.d.ts +1 -1
  139. package/dist/TextArea/index.js +1 -1
  140. package/dist/{TextArea-Cv9UVbzS.js → TextArea-CPwSytdO.js} +12 -6
  141. package/dist/TextInput/index.d.ts +1 -1
  142. package/dist/Theme/index.d.ts +2 -0
  143. package/dist/Theme/index.js +2 -0
  144. package/dist/Theme-BuUiiJNr.js +429 -0
  145. package/dist/Thumbnail/index.js +1 -1
  146. package/dist/{Thumbnail-BWVzLLyI.js → Thumbnail-CAOYds8t.js} +11 -11
  147. package/dist/{TimeField-l3QzU6vC.js → TimeField-BGbxCoKU.js} +2 -2
  148. package/dist/TimeInput/index.d.ts +1 -1
  149. package/dist/TimeInput/index.js +1 -1
  150. package/dist/{TimeInput-OkgX-xbQ.js → TimeInput-DJP3l4ZS.js} +1 -1
  151. package/dist/Timer/index.d.ts +2 -0
  152. package/dist/Timer/index.js +2 -0
  153. package/dist/Timer-B7GV6hqd.js +134 -0
  154. package/dist/Timestamp/index.d.ts +1 -1
  155. package/dist/Timestamp/index.js +2 -1
  156. package/dist/{Timestamp-DUoP9ari.js → Timestamp-BzRp8uWc.js} +5 -122
  157. package/dist/Toast/index.d.ts +2 -2
  158. package/dist/Toast/index.js +1 -1
  159. package/dist/{Toast-BKXPvEMp.js → Toast-C2ML-bmi.js} +37 -7
  160. package/dist/ToggleButton/index.d.ts +1 -1
  161. package/dist/Token/index.d.ts +1 -1
  162. package/dist/Token/index.js +1 -1
  163. package/dist/{Token-C4KD0fZD.js → Token-CjocuhzE.js} +1 -1
  164. package/dist/Tokenizer/index.d.ts +1 -1
  165. package/dist/Tokenizer/index.js +1 -1
  166. package/dist/{Tokenizer-BA8sTMPZ.js → Tokenizer-mYES5SPM.js} +2 -2
  167. package/dist/Toolbar/index.d.ts +1 -1
  168. package/dist/TopNav/index.d.ts +1 -1
  169. package/dist/TopNav/index.js +1 -1
  170. package/dist/{TopNav-CZokS7E_.js → TopNav-C2t6JkZb.js} +4 -4
  171. package/dist/TreeList/index.d.ts +1 -1
  172. package/dist/TreeList/index.js +1 -1
  173. package/dist/{TreeList-CIbAGOMf.js → TreeList-THJ0KamE.js} +3 -3
  174. package/dist/Typeahead/index.d.ts +1 -1
  175. package/dist/Typeahead/index.js +1 -1
  176. package/dist/{Typeahead-DIw-K4aa.js → Typeahead-D7VnvRpK.js} +2 -2
  177. package/dist/{context-D6ECRdc5.js → context-DzcK4T_C.js} +58 -2
  178. package/dist/context-O2Vb8cJl.js +57 -0
  179. package/dist/formatInstant-BDWUIxS7.js +119 -0
  180. package/dist/index-1AZ4KZhg.d.ts +96 -0
  181. package/dist/index-3p2BDVHq.d.ts +31 -0
  182. package/dist/{index-BuubzuE8.d.ts → index-BDZCJ9ri.d.ts} +2 -2
  183. package/dist/{index-FEy8qFSD.d.ts → index-BHqRH7QW.d.ts} +2 -2
  184. package/dist/{index-CTolyeii.d.ts → index-BLOEjvaM.d.ts} +16 -2
  185. package/dist/index-BMrggCw-.d.ts +52 -0
  186. package/dist/{index-z4p2k9VR.d.ts → index-Bgv4ZmBl.d.ts} +20 -2
  187. package/dist/{index-BoRIw-bP.d.ts → index-Bt7ewoz2.d.ts} +32 -2
  188. package/dist/{index-CjtAH60j.d.ts → index-Bu0Zd1uw.d.ts} +1 -1
  189. package/dist/{index-uQrLBZfF.d.ts → index-Bu3oXIIS.d.ts} +24 -0
  190. package/dist/{index-CX97hlld.d.ts → index-CBym0hSq.d.ts} +2 -19
  191. package/dist/index-CJlBAXwj.d.ts +100 -0
  192. package/dist/{index-DT9S92sh.d.ts → index-CNjbOgty.d.ts} +15 -0
  193. package/dist/{index-gW0HW02U.d.ts → index-COxy6LEW.d.ts} +1 -1
  194. package/dist/index-CRizexSC.d.ts +147 -0
  195. package/dist/{index-DYChvBOM.d.ts → index-Clmz00IK.d.ts} +31 -0
  196. package/dist/index-Cm_TiLXU.d.ts +22 -0
  197. package/dist/index-Cn-sSds-.d.ts +68 -0
  198. package/dist/index-CsVS37na.d.ts +81 -0
  199. package/dist/{index-DRmb-oUa.d.ts → index-CuFLztiI.d.ts} +6 -1
  200. package/dist/{index-CT8KEpec.d.ts → index-D0TlUOtG.d.ts} +1 -1
  201. package/dist/{index-fa72tWIU.d.ts → index-D2bSSSBP.d.ts} +1 -1
  202. package/dist/{index-2u4l3wq8.d.ts → index-DAiGhkNZ.d.ts} +15 -2
  203. package/dist/{index-DGNqi2za.d.ts → index-DQAnGHu7.d.ts} +5 -5
  204. package/dist/{index-BfOtLyNH.d.ts → index-D_nYxnNv.d.ts} +1 -1
  205. package/dist/{index-Df2YvC8o.d.ts → index-DeOftUMq.d.ts} +191 -75
  206. package/dist/{index-DXDGk38y.d.ts → index-Dg3ZmwEg.d.ts} +11 -0
  207. package/dist/{index-BiMGXtD-.d.ts → index-DimuSES0.d.ts} +14 -1
  208. package/dist/{index-C_2Z65Rp.d.ts → index-DnEh-HA0.d.ts} +1 -1
  209. package/dist/{index-D-ZuubCK.d.ts → index-DnSrjbjP.d.ts} +1 -1
  210. package/dist/{index-mQ6EPmaG.d.ts → index-DsyKhauk.d.ts} +78 -9
  211. package/dist/{index-C6RecznD.d.ts → index-I4J7gwa1.d.ts} +51 -9
  212. package/dist/{index-utZGF4GR.d.ts → index-NOXYEdOI.d.ts} +1 -1
  213. package/dist/{index-B4OOtNP8.d.ts → index-Z_onS2lR.d.ts} +1 -1
  214. package/dist/{index-CVn0GBdB.d.ts → index-cG1E0U2s.d.ts} +1 -1
  215. package/dist/{index-DEeJowZf.d.ts → index-cGagYM1g.d.ts} +15 -2
  216. package/dist/{index-Ck8qy6Rf.d.ts → index-c_TaW8mM.d.ts} +24 -2
  217. package/dist/{index-Bqb_Fyju.d.ts → index-jdjcb3Js.d.ts} +2 -2
  218. package/dist/index.d.ts +78 -68
  219. package/dist/index.js +107 -96
  220. package/dist/locale/index.d.ts +1 -1
  221. package/dist/locale/index.js +1 -1
  222. package/dist/registry-B1ObuP--.d.ts +45 -0
  223. package/dist/registry-C7OZb0PJ.js +135 -0
  224. package/dist/syntaxTheme-Bcs1YMF7.d.ts +38 -0
  225. package/dist/syntaxTheme-ClpWALZX.js +75 -0
  226. package/dist/types-BKcxXW--.d.ts +114 -0
  227. package/dist/types-Bt-lSgYX.d.ts +65 -0
  228. package/dist/{index-B8MbfMwV.d.ts → types-DDAAT1Xd.d.ts} +36 -82
  229. package/package.json +30 -1
  230. package/styles/avatar.css +14 -0
  231. package/styles/badge.css +8 -0
  232. package/styles/breadcrumbs.css +6 -1
  233. package/styles/button.css +13 -0
  234. package/styles/calendar.css +16 -0
  235. package/styles/card.css +2 -0
  236. package/styles/carousel.css +120 -0
  237. package/styles/chat.css +5 -2
  238. package/styles/dropdown-menu.css +11 -0
  239. package/styles/heading.css +6 -2
  240. package/styles/icon.css +38 -8
  241. package/styles/lightbox.css +144 -0
  242. package/styles/link.css +5 -0
  243. package/styles/media-theme.css +51 -0
  244. package/styles/number-input.css +22 -0
  245. package/styles/outline.css +124 -0
  246. package/styles/pagination.css +45 -1
  247. package/styles/progress-bar.css +4 -0
  248. package/styles/selector.css +58 -0
  249. package/styles/tab-list.css +15 -0
  250. package/styles/text-area.css +17 -0
  251. package/styles/text-input.css +5 -0
  252. package/styles/text.css +63 -14
  253. package/styles/theme.css +29 -0
  254. package/styles/timer.css +34 -0
  255. package/styles/toast.css +7 -0
  256. package/styles/toolbar.css +11 -0
  257. package/styles.css +6 -0
  258. package/dist/Avatar-5s3HSrtN.js +0 -136
  259. package/dist/Badge-Ba0EwsTj.js +0 -19
  260. package/dist/Calendar-CYhGDT6f.js +0 -277
  261. package/dist/DateInput-D2ErjXYO.js +0 -250
  262. package/dist/Icon-5MdZQ18k.js +0 -86
  263. package/dist/Link-CprjOuTI.js +0 -92
  264. package/dist/NumberInput-DspJO6z6.js +0 -147
  265. package/dist/Selector-DlZpQh42.js +0 -325
  266. package/dist/index-BzqRns96.d.ts +0 -64
  267. package/dist/index-ZJyk8RtQ.d.ts +0 -68
  268. package/dist/{CheckboxList-EsIEXjK_.js → CheckboxList-BbCPiend.js} +1 -1
  269. package/dist/{index-4FM5lQdV.d.ts → index-BUXNRekN.d.ts} +1 -1
@@ -0,0 +1,114 @@
1
+ import { Component, VNodeChild } from "vue";
2
+ //#region src/Icon/types.d.ts
3
+ /**
4
+ * Icon sizes are expressed in `rem` so they scale with the root font-size.
5
+ * Values are the px-equivalents at a 16px root: 12, 16, 20, and 24px.
6
+ */
7
+ type IconSize = 'xsm' | 'sm' | 'md' | 'lg';
8
+ interface IconColorMap {
9
+ accent: true;
10
+ blue: true;
11
+ cyan: true;
12
+ disabled: true;
13
+ error: true;
14
+ gray: true;
15
+ green: true;
16
+ inherit: true;
17
+ orange: true;
18
+ pink: true;
19
+ primary: true;
20
+ purple: true;
21
+ red: true;
22
+ secondary: true;
23
+ success: true;
24
+ teal: true;
25
+ tertiary: true;
26
+ warning: true;
27
+ yellow: true;
28
+ }
29
+ type IconColor = Extract<keyof IconColorMap, string>;
30
+ /**
31
+ * The semantic names of the artwork astryx-vue keeps for its own chrome.
32
+ *
33
+ * A name describes what the icon is for, not one particular drawing, so a theme
34
+ * can replace the artwork with one declaration. Applications never pass these
35
+ * names: the artwork is a library implementation detail, and a `icon` prop or
36
+ * slot takes a CSS icon class or the application's own component instead.
37
+ */
38
+ type IconName = 'chevronDown' | 'chevronLeft' | 'chevronRight' | 'check' | 'moreHorizontal' | 'copy' | 'calendar' | 'clock' | 'upload' | 'arrowUp' | 'arrowDown' | 'close' | 'funnel' | 'image';
39
+ /**
40
+ * A built-in name, or any other string.
41
+ *
42
+ * The `(string & {})` intersection keeps the built-in names available for
43
+ * autocomplete while allowing keys contributed by a component or application.
44
+ */
45
+ type ExtendedIconName = IconName | (string & {});
46
+ interface IconProps {
47
+ /**
48
+ * Iconify icon to draw, as `collection:icon`.
49
+ *
50
+ * `carbon:settings` reads the `settings` icon from the Carbon collection.
51
+ * `carbon-settings` is the same icon when that collection is registered.
52
+ * The component does not ship the artwork: install `@iconify-json/carbon`
53
+ * (or another collection) and register it with the `astryxIcons` Vite
54
+ * plugin, or call `addIcon` / `addCollection`.
55
+ *
56
+ * With no `size`, the icon is `1em` square and uses `currentColor`, so it
57
+ * follows the surrounding text and the sized slots on Button, IconButton,
58
+ * and fields.
59
+ */
60
+ name?: string;
61
+ /**
62
+ * The icon to render. Three forms are accepted:
63
+ *
64
+ * - a string, treated as a CSS icon class you provide — for example an
65
+ * UnoCSS icon such as `'i-carbon-search'`, or your own class. The class
66
+ * paints the inside of the sized box, so a utility that sets
67
+ * `width`/`height: 100%` fills the icon instead of replacing its size;
68
+ * - a name from the library's own chrome, which only the components use;
69
+ * - a component, rendered as it is.
70
+ *
71
+ * Omit it when `name` or the default slot provides the artwork instead.
72
+ * `name` wins when both are set.
73
+ */
74
+ icon?: ExtendedIconName | Component;
75
+ /**
76
+ * The color of the icon.
77
+ *
78
+ * `inherit` (the default) leaves the icon at the surrounding text color,
79
+ * which is what you want for an icon next to a label. Use a semantic color
80
+ * only when the color itself carries meaning.
81
+ *
82
+ * @default 'inherit'
83
+ */
84
+ color?: IconColor;
85
+ /**
86
+ * The size of the icon.
87
+ *
88
+ * An explicit value wins. When omitted, a `name` icon stays `1em` so it
89
+ * scales with the text around it. Any other icon uses the nearest default
90
+ * supplied by an owning astryx-vue component, then falls back to `md`.
91
+ */
92
+ size?: IconSize;
93
+ /**
94
+ * Accessible name for the icon.
95
+ *
96
+ * Set it only when the icon is meaningful on its own, such as a standalone
97
+ * status glyph with no adjacent text. A non-empty `label` renders the icon as
98
+ * `role="img"` with this string as `aria-label`; omitting it (or passing an
99
+ * empty string) keeps the icon `aria-hidden="true"` as decoration.
100
+ *
101
+ * Do not set `label` when an interactive parent such as a button or a link
102
+ * already names the control, or screen readers announce the name twice.
103
+ */
104
+ label?: string;
105
+ }
106
+ interface IconSlots {
107
+ /**
108
+ * The SVG markup to render. Use it instead of the `icon` prop when the
109
+ * artwork is written inline.
110
+ */
111
+ default?: () => VNodeChild;
112
+ }
113
+ //#endregion
114
+ export { IconSize as a, IconProps as i, IconColor as n, IconSlots as o, IconName as r, ExtendedIconName as t };
@@ -0,0 +1,65 @@
1
+ //#region src/Text/types.d.ts
2
+ type TextType = 'body' | 'large' | 'label' | 'supporting' | 'code' | 'display-1' | 'display-2' | 'display-3';
3
+ type TextSize = 'sm' | 'md' | 'lg' | 'xl';
4
+ type TextColor = 'primary' | 'secondary' | 'accent' | 'disabled' | 'placeholder' | 'inherit';
5
+ type TextWeight = 'regular' | 'normal' | 'medium' | 'semibold' | 'bold';
6
+ type TextWrap = 'wrap' | 'nowrap' | 'balance' | 'pretty';
7
+ type TextWordBreak = 'normal' | 'break-word' | 'break-all';
8
+ type TextDisplay = 'block' | 'inline';
9
+ type TextAs = 'span' | 'p' | 'div' | 'label';
10
+ interface TextProps {
11
+ /**
12
+ * Semantic text type. Determines size, weight, and line-height.
13
+ * @default 'body'
14
+ */
15
+ type?: TextType;
16
+ /**
17
+ * Explicit font size override.
18
+ */
19
+ size?: TextSize;
20
+ /**
21
+ * Text color.
22
+ * @default 'primary'
23
+ */
24
+ color?: TextColor;
25
+ /**
26
+ * Font weight override. `normal` is the same weight as `regular`.
27
+ */
28
+ weight?: TextWeight;
29
+ /**
30
+ * CSS `text-wrap` behavior.
31
+ */
32
+ textWrap?: TextWrap;
33
+ /**
34
+ * How long unbroken strings break inside a constrained width.
35
+ */
36
+ wordBreak?: TextWordBreak;
37
+ /**
38
+ * Draws a line through the text.
39
+ * @default false
40
+ */
41
+ hasStrikethrough?: boolean;
42
+ /**
43
+ * Uses tabular figures so digits line up across rows.
44
+ * @default false
45
+ */
46
+ hasTabularNumbers?: boolean;
47
+ /**
48
+ * Display type.
49
+ * @default 'inline'
50
+ */
51
+ display?: TextDisplay;
52
+ /**
53
+ * HTML element to render.
54
+ * @default 'span'
55
+ */
56
+ as?: TextAs;
57
+ /**
58
+ * Maximum lines before truncation. 0 means no truncation.
59
+ * A positive value forces block layout so the ellipsis has a width.
60
+ * @default 0
61
+ */
62
+ maxLines?: number;
63
+ }
64
+ //#endregion
65
+ export { TextSize as a, TextWordBreak as c, TextProps as i, TextWrap as l, TextColor as n, TextType as o, TextDisplay as r, TextWeight as s, TextAs as t };
@@ -1,10 +1,17 @@
1
1
  import { a as ButtonProps } from "./types-WlmsNL1I.js";
2
- import { c as ItemTarget } from "./types-CAZY4Xua.js";
3
2
  import { n as LayerPlacement, t as LayerAlignment } from "./position-DFW5ymAF.js";
4
- import { Component, ComputedRef, InjectionKey, VNodeChild } from "vue";
3
+ import { c as ItemTarget } from "./types-CAZY4Xua.js";
4
+ import { Component, VNodeChild } from "vue";
5
5
  //#region src/DropdownMenu/types.d.ts
6
6
  /** Size of the menu, derived from the trigger button's size. */
7
7
  type DropdownMenuSize = 'sm' | 'md' | 'lg';
8
+ /**
9
+ * Where the menu opens.
10
+ *
11
+ * `popover` hangs off the trigger. `bottom-sheet` rises from the bottom edge.
12
+ * `adaptive` uses the sheet only on a compact touch surface.
13
+ */
14
+ type DropdownMenuPresentation = 'adaptive' | 'bottom-sheet' | 'popover';
8
15
  /** Visual variant of one menu row. */
9
16
  type DropdownMenuItemVariant = 'default' | 'destructive';
10
17
  /**
@@ -132,6 +139,13 @@ interface DropdownMenuProps {
132
139
  * @default 'below'
133
140
  */
134
141
  placement?: LayerPlacement;
142
+ /**
143
+ * `popover` anchors to the trigger. `bottom-sheet` uses a bottom sheet.
144
+ * `adaptive` chooses the sheet on a compact touch surface and a popover
145
+ * otherwise.
146
+ * @default 'popover'
147
+ */
148
+ presentation?: DropdownMenuPresentation;
135
149
  /**
136
150
  * How the menu aligns with the trigger along the placement axis.
137
151
  * @default 'start'
@@ -247,85 +261,25 @@ interface DropdownMenuGroupSlots {
247
261
  /** Rich content replacing the `title` prop, still used as the group's name. */
248
262
  title?: () => VNodeChild;
249
263
  }
250
- //#endregion
251
- //#region src/DropdownMenu/context.d.ts
252
- /**
253
- * What a `DropdownMenu` tells the rows inside it.
254
- *
255
- * `menuSize` is a computed ref rather than a plain value: a row reads it after
256
- * mount, so a snapshot would leave every row stuck at the size the trigger had
257
- * when the menu was created.
258
- */
259
- interface DropdownMenuContextValue {
260
- /** Closes the menu and returns focus to the trigger. */
261
- closeMenu: () => void;
262
- /** Size of the menu, derived from the trigger button's size. */
263
- menuSize: ComputedRef<DropdownMenuSize>;
264
+ interface DropdownMenuSubMenuProps {
265
+ /** Row label. */
266
+ label?: string | number;
267
+ /** Icon before the label. A CSS class or a component. */
268
+ icon?: string | Component;
269
+ /** Secondary line under the label. */
270
+ description?: string | number;
271
+ /**
272
+ * Whether the row can open its flyout.
273
+ * @default false
274
+ */
275
+ isDisabled?: boolean;
276
+ }
277
+ interface DropdownMenuSubMenuSlots {
278
+ /** The rows of the nested menu. */
279
+ default?: () => VNodeChild;
280
+ icon?: () => VNodeChild;
281
+ label?: () => VNodeChild;
282
+ description?: () => VNodeChild;
264
283
  }
265
- /** The surrounding menu, or `undefined` when a row stands alone. */
266
- declare function useDropdownMenuContext(): DropdownMenuContextValue | undefined;
267
- //#endregion
268
- //#region src/DropdownMenu/DropdownMenu.vue.d.ts
269
- type __VLS_Props = DropdownMenuProps;
270
- type __VLS_Slots$2 = DropdownMenuSlots;
271
- type __VLS_ModelProps = {
272
- 'isMenuOpen'?: boolean | undefined;
273
- };
274
- type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
275
- declare const __VLS_base$2: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
276
- click: () => any;
277
- openChange: (isOpen: boolean) => any;
278
- "update:isMenuOpen": (...args: unknown[]) => any;
279
- }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
280
- onClick?: (() => any) | undefined;
281
- onOpenChange?: ((isOpen: boolean) => any) | undefined;
282
- "onUpdate:isMenuOpen"?: ((...args: unknown[]) => any) | undefined;
283
- }>, {
284
- button: DropdownMenuButtonProps;
285
- placement: LayerPlacement;
286
- alignment: LayerAlignment;
287
- hasChevron: boolean;
288
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
289
- declare const __VLS_export$3: __VLS_WithSlots$2<typeof __VLS_base$2, __VLS_Slots$2>;
290
- declare const _default$3: typeof __VLS_export$3;
291
- type __VLS_WithSlots$2<T, S> = T & {
292
- new (): {
293
- $slots: S;
294
- };
295
- };
296
- //#endregion
297
- //#region src/DropdownMenu/DropdownMenuDivider.vue.d.ts
298
- declare const __VLS_export$2: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
299
- declare const _default$2: typeof __VLS_export$2;
300
- //#endregion
301
- //#region src/DropdownMenu/DropdownMenuGroup.vue.d.ts
302
- type __VLS_Slots$1 = DropdownMenuGroupSlots;
303
- declare const __VLS_base$1: import("vue").DefineComponent<DropdownMenuGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DropdownMenuGroupProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
304
- declare const __VLS_export$1: __VLS_WithSlots$1<typeof __VLS_base$1, __VLS_Slots$1>;
305
- declare const _default$1: typeof __VLS_export$1;
306
- type __VLS_WithSlots$1<T, S> = T & {
307
- new (): {
308
- $slots: S;
309
- };
310
- };
311
- //#endregion
312
- //#region src/DropdownMenu/DropdownMenuItem.vue.d.ts
313
- type __VLS_Slots = DropdownMenuItemSlots;
314
- declare const __VLS_base: import("vue").DefineComponent<DropdownMenuItemProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
315
- click: (event: MouseEvent) => any;
316
- }, string, import("vue").PublicProps, Readonly<DropdownMenuItemProps> & Readonly<{
317
- onClick?: ((event: MouseEvent) => any) | undefined;
318
- }>, {
319
- isDisabled: boolean;
320
- variant: DropdownMenuItemVariant;
321
- hasCloseOnSelect: boolean;
322
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
323
- declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
324
- declare const _default: typeof __VLS_export;
325
- type __VLS_WithSlots<T, S> = T & {
326
- new (): {
327
- $slots: S;
328
- };
329
- };
330
284
  //#endregion
331
- export { DropdownMenuTriggerProps as S, DropdownMenuOption as _, DropdownMenuContextValue as a, DropdownMenuSize as b, DropdownMenuDividerData as c, DropdownMenuGroupSlots as d, DropdownMenuItemData as f, DropdownMenuItemVariant as g, DropdownMenuItemSlots as h, _default$3 as i, DropdownMenuEmits as l, DropdownMenuItemProps as m, _default$1 as n, useDropdownMenuContext as o, DropdownMenuItemEmits as p, _default$2 as r, DropdownMenuButtonProps as s, _default as t, DropdownMenuGroupProps as u, DropdownMenuProps as v, DropdownMenuSlots as x, DropdownMenuSection as y };
285
+ export { DropdownMenuSubMenuProps as _, DropdownMenuGroupSlots as a, DropdownMenuItemProps as c, DropdownMenuOption as d, DropdownMenuPresentation as f, DropdownMenuSlots as g, DropdownMenuSize as h, DropdownMenuGroupProps as i, DropdownMenuItemSlots as l, DropdownMenuSection as m, DropdownMenuDividerData as n, DropdownMenuItemData as o, DropdownMenuProps as p, DropdownMenuEmits as r, DropdownMenuItemEmits as s, DropdownMenuButtonProps as t, DropdownMenuItemVariant as u, DropdownMenuSubMenuSlots as v, DropdownMenuTriggerProps as y };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@astryx-vue/core",
3
3
  "type": "module",
4
- "version": "0.1.3",
4
+ "version": "0.2.1",
5
5
  "description": "Vue components for the unofficial astryx-vue community project.",
6
6
  "author": "ShenQingchuan",
7
7
  "license": "MIT",
@@ -44,6 +44,10 @@
44
44
  "types": "./dist/AvatarGroup/index.d.ts",
45
45
  "import": "./dist/AvatarGroup/index.js"
46
46
  },
47
+ "./Carousel": {
48
+ "types": "./dist/Carousel/index.d.ts",
49
+ "import": "./dist/Carousel/index.js"
50
+ },
47
51
  "./CheckboxList": {
48
52
  "types": "./dist/CheckboxList/index.d.ts",
49
53
  "import": "./dist/CheckboxList/index.js"
@@ -80,14 +84,30 @@
80
84
  "types": "./dist/FormLayout/index.d.ts",
81
85
  "import": "./dist/FormLayout/index.js"
82
86
  },
87
+ "./Icon": {
88
+ "types": "./dist/Icon/index.d.ts",
89
+ "import": "./dist/Icon/index.js"
90
+ },
91
+ "./icons": {
92
+ "types": "./dist/Icon/plugin.d.ts",
93
+ "import": "./dist/Icon/plugin.js"
94
+ },
83
95
  "./Layout": {
84
96
  "types": "./dist/Layout/index.d.ts",
85
97
  "import": "./dist/Layout/index.js"
86
98
  },
99
+ "./Lightbox": {
100
+ "types": "./dist/Lightbox/index.d.ts",
101
+ "import": "./dist/Lightbox/index.js"
102
+ },
87
103
  "./MetadataList": {
88
104
  "types": "./dist/MetadataList/index.d.ts",
89
105
  "import": "./dist/MetadataList/index.js"
90
106
  },
107
+ "./Outline": {
108
+ "types": "./dist/Outline/index.d.ts",
109
+ "import": "./dist/Outline/index.js"
110
+ },
91
111
  "./RadioList": {
92
112
  "types": "./dist/RadioList/index.d.ts",
93
113
  "import": "./dist/RadioList/index.js"
@@ -168,6 +188,10 @@
168
188
  "types": "./dist/Table/index.d.ts",
169
189
  "import": "./dist/Table/index.js"
170
190
  },
191
+ "./Theme": {
192
+ "types": "./dist/Theme/index.d.ts",
193
+ "import": "./dist/Theme/index.js"
194
+ },
171
195
  "./Thumbnail": {
172
196
  "types": "./dist/Thumbnail/index.d.ts",
173
197
  "import": "./dist/Thumbnail/index.js"
@@ -176,6 +200,10 @@
176
200
  "types": "./dist/TimeInput/index.d.ts",
177
201
  "import": "./dist/TimeInput/index.js"
178
202
  },
203
+ "./Timer": {
204
+ "types": "./dist/Timer/index.d.ts",
205
+ "import": "./dist/Timer/index.js"
206
+ },
179
207
  "./Timestamp": {
180
208
  "types": "./dist/Timestamp/index.d.ts",
181
209
  "import": "./dist/Timestamp/index.js"
@@ -437,6 +465,7 @@
437
465
  "micromark-extension-gfm": "3.0.0"
438
466
  },
439
467
  "devDependencies": {
468
+ "@types/node": "26.6.4",
440
469
  "@vue/compiler-sfc": "3.5.43",
441
470
  "tsdown": "0.23.0",
442
471
  "typescript": "npm:@typescript/typescript6@6.0.2",
package/styles/avatar.css CHANGED
@@ -9,6 +9,20 @@
9
9
  vertical-align: middle;
10
10
  }
11
11
 
12
+ .astryx-avatar--interactive {
13
+ padding: 0;
14
+ border: 0;
15
+ background: transparent;
16
+ color: inherit;
17
+ font: inherit;
18
+ cursor: pointer;
19
+ }
20
+
21
+ .astryx-avatar--interactive:focus-visible {
22
+ outline: 2px solid var(--astryx-color-border-focus, #0074e2);
23
+ outline-offset: 2px;
24
+ }
25
+
12
26
  .astryx-avatar--circle {
13
27
  border-radius: var(--astryx-radius-full, 9999px);
14
28
  }
package/styles/badge.css CHANGED
@@ -17,6 +17,14 @@
17
17
  line-height: var(--astryx-text-supporting-leading, 1.6667);
18
18
  vertical-align: middle;
19
19
  white-space: nowrap;
20
+ max-width: 100%;
21
+ min-width: 0;
22
+ }
23
+
24
+ .astryx-badge__label {
25
+ min-width: 0;
26
+ overflow: hidden;
27
+ text-overflow: ellipsis;
20
28
  }
21
29
 
22
30
  .astryx-badge[data-variant='neutral'] {
@@ -68,9 +68,14 @@
68
68
  text-decoration: none;
69
69
  }
70
70
 
71
- .astryx-breadcrumb-item__icon {
71
+ .astryx-breadcrumb-item__icon,
72
+ .astryx-breadcrumb-item__chevron {
72
73
  display: inline-flex;
73
74
  align-items: center;
74
75
  flex-shrink: 0;
75
76
  }
77
+
78
+ .astryx-breadcrumb-item__chevron {
79
+ margin-inline-start: var(--astryx-spacing-0-5, 2px);
80
+ }
76
81
  }
package/styles/button.css CHANGED
@@ -181,6 +181,19 @@
181
181
  font-size: 20px;
182
182
  }
183
183
 
184
+ /* The end slot has no fixed box of its own. A named icon still matches the leading slot. */
185
+ .astryx-button__end > .astryx-icon {
186
+ width: 16px;
187
+ height: 16px;
188
+ font-size: 16px;
189
+ }
190
+
191
+ .astryx-button[data-size='lg'] .astryx-button__end > .astryx-icon {
192
+ width: 20px;
193
+ height: 20px;
194
+ font-size: 20px;
195
+ }
196
+
184
197
  .astryx-button__icon > *,
185
198
  .astryx-button__end > * {
186
199
  display: block;
@@ -114,6 +114,22 @@
114
114
  box-shadow: inset 0 0 0 1px var(--astryx-color-border-emphasized, #d4d4d4);
115
115
  }
116
116
 
117
+ .astryx-calendar[data-months='2'] {
118
+ display: flex;
119
+ gap: var(--astryx-spacing-4, 16px);
120
+ }
121
+
122
+ .astryx-calendar[data-months='2'] .astryx-calendar-header {
123
+ display: flex;
124
+ align-items: center;
125
+ justify-content: space-between;
126
+ }
127
+
128
+ .astryx-calendar-cell.is-in-range {
129
+ background: color-mix(in srgb, light-dark(#1b1b1b, #f1f1f1) 12%, transparent);
130
+ border-radius: 0;
131
+ }
132
+
117
133
  .astryx-calendar-cell.is-selected {
118
134
  background: light-dark(#1b1b1b, #f1f1f1);
119
135
  color: light-dark(#ffffff, #111111);
package/styles/card.css CHANGED
@@ -33,6 +33,8 @@
33
33
  --layout-padding-own-outer-y: initial;
34
34
  --layout-padding-outer-x: var(--_card-padding-inline-start);
35
35
  --layout-padding-outer-y: var(--_card-padding-block-start);
36
+ --layout-padding-inner-x: var(--_card-padding-inline-start);
37
+ --layout-padding-inner-y: var(--_card-padding-block-start);
36
38
  }
37
39
 
38
40
  .astryx-card[data-scrollable='true'] {
@@ -0,0 +1,120 @@
1
+ @layer astryx.reset, astryx.tokens, astryx.base, astryx.components, astryx.overrides;
2
+
3
+ @layer astryx.components {
4
+ .astryx-carousel {
5
+ position: relative;
6
+ display: flex;
7
+ align-items: center;
8
+ min-width: 0;
9
+ max-width: 100%;
10
+ }
11
+
12
+ .astryx-carousel__scroller {
13
+ display: flex;
14
+ align-items: center;
15
+ gap: var(--astryx-carousel-gap, var(--astryx-spacing-1, 4px));
16
+ width: 100%;
17
+ min-width: 0;
18
+ padding-inline: var(--astryx-carousel-padding, 0);
19
+ padding-bottom: 1px;
20
+ margin-bottom: -1px;
21
+ overflow-x: auto;
22
+ overflow-y: hidden;
23
+ overscroll-behavior-x: contain;
24
+ scroll-behavior: smooth;
25
+ scroll-padding-inline: var(--astryx-carousel-padding, 0);
26
+ scrollbar-width: none;
27
+ }
28
+
29
+ .astryx-carousel__scroller::-webkit-scrollbar {
30
+ display: none;
31
+ }
32
+
33
+ @media (prefers-reduced-motion: reduce) {
34
+ .astryx-carousel__scroller {
35
+ scroll-behavior: auto;
36
+ }
37
+ }
38
+
39
+ .astryx-carousel__scroller:focus-visible {
40
+ outline: var(--astryx-focus-outline-width, 2px) var(--astryx-focus-outline-style, solid) var(--astryx-focus-outline-color, var(--astryx-color-accent, #0074e2));
41
+ outline-offset: var(--astryx-focus-outline-offset, 3px);
42
+ }
43
+
44
+ .astryx-carousel__scroller[data-snap] {
45
+ scroll-snap-type: x mandatory;
46
+ }
47
+
48
+ .astryx-carousel__scroller[data-fade='start'] {
49
+ mask-image: linear-gradient(to right, transparent 0%, rgb(0 0 0 / 30%) 2px, #000 var(--astryx-spacing-1, 4px));
50
+ }
51
+
52
+ .astryx-carousel__scroller[data-fade='end'] {
53
+ mask-image: linear-gradient(to left, transparent 0%, rgb(0 0 0 / 30%) 2px, #000 var(--astryx-spacing-1, 4px));
54
+ }
55
+
56
+ .astryx-carousel__scroller[data-fade='both'] {
57
+ mask-image: linear-gradient(to right, transparent 0%, rgb(0 0 0 / 30%) 2px, #000 var(--astryx-spacing-1, 4px), #000 calc(100% - var(--astryx-spacing-1, 4px)), rgb(0 0 0 / 30%) calc(100% - 2px), transparent 100%);
58
+ }
59
+
60
+ [dir='rtl'] .astryx-carousel__scroller[data-fade='start'] {
61
+ mask-image: linear-gradient(to left, transparent 0%, rgb(0 0 0 / 30%) 2px, #000 var(--astryx-spacing-1, 4px));
62
+ }
63
+
64
+ [dir='rtl'] .astryx-carousel__scroller[data-fade='end'] {
65
+ mask-image: linear-gradient(to right, transparent 0%, rgb(0 0 0 / 30%) 2px, #000 var(--astryx-spacing-1, 4px));
66
+ }
67
+
68
+ .astryx-carousel__item {
69
+ display: flex;
70
+ flex-shrink: 0;
71
+ scroll-snap-align: start;
72
+ }
73
+
74
+ .astryx-carousel__controls {
75
+ position: absolute;
76
+ inset: 0;
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: space-between;
80
+ pointer-events: none;
81
+ }
82
+
83
+ .astryx-carousel__pill {
84
+ display: flex;
85
+ align-items: center;
86
+ justify-content: center;
87
+ border-radius: var(--astryx-radius-full, 9999px);
88
+ background-color: var(--astryx-color-background-popover, #fff);
89
+ box-shadow: var(--astryx-shadow-med, 0 2px 4px rgb(0 0 0 / 8%), 0 4px 12px rgb(0 0 0 / 10%));
90
+ pointer-events: auto;
91
+ opacity: 1;
92
+ transition: opacity var(--astryx-duration-fast, 125ms) var(--astryx-ease-standard, cubic-bezier(0.24, 1, 0.4, 1));
93
+ --astryx-button-radius: var(--astryx-radius-full, 9999px);
94
+ }
95
+
96
+ .astryx-carousel__pill--start {
97
+ transform: translateX(-50%);
98
+ }
99
+
100
+ .astryx-carousel__pill--end {
101
+ transform: translateX(50%);
102
+ }
103
+
104
+ [dir='rtl'] .astryx-carousel__pill--start {
105
+ transform: translateX(50%);
106
+ }
107
+
108
+ [dir='rtl'] .astryx-carousel__pill--end {
109
+ transform: translateX(-50%);
110
+ }
111
+
112
+ .astryx-carousel__pill[data-hidden] {
113
+ opacity: 0;
114
+ pointer-events: none;
115
+ }
116
+
117
+ [dir='rtl'] .astryx-carousel__pill .astryx-icon {
118
+ transform: scaleX(-1);
119
+ }
120
+ }
package/styles/chat.css CHANGED
@@ -296,7 +296,7 @@
296
296
  .astryx-chat-message__metadata {
297
297
  box-sizing: border-box;
298
298
  max-width: min(100%, max(80%, 280px));
299
- min-width: 0;
299
+ min-width: min(100%, 280px);
300
300
  }
301
301
 
302
302
  .astryx-chat-message-bubble__frame {
@@ -306,7 +306,10 @@
306
306
  box-sizing: border-box;
307
307
  width: fit-content;
308
308
  max-width: min(100%, max(80%, 280px));
309
- min-width: 0;
309
+ /* fit-content with min-width: 0 collapses to a few characters when the
310
+ parent's width is cyclic. 280px is the original floor; cap it at the
311
+ column so a narrow thread wraps the text instead of overflowing. */
312
+ min-width: min(100%, 280px);
310
313
  }
311
314
 
312
315
  /* Same column gap as the original bubble stack. Metadata’s -6px / +4px
@@ -20,6 +20,17 @@
20
20
  );
21
21
  }
22
22
 
23
+ .astryx-dropdown-menu.is-sheet {
24
+ position: static;
25
+ top: auto;
26
+ left: auto;
27
+ width: 100%;
28
+ max-width: none;
29
+ background: transparent;
30
+ box-shadow: none;
31
+ animation: none;
32
+ }
33
+
23
34
  .astryx-dropdown-menu {
24
35
  box-sizing: border-box;
25
36
  position: fixed;