@xmesh/system-design 0.0.4 → 0.0.6

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 (290) hide show
  1. package/README.md +2 -1
  2. package/custom-elements.json +18382 -0
  3. package/dist/lit/components/alert/index.d.ts +5 -0
  4. package/dist/lit/components/alert/index.js +8 -2
  5. package/dist/lit/components/alert/index.styles.js +215 -0
  6. package/dist/lit/components/app-bar/index.d.ts +1 -0
  7. package/dist/lit/components/app-bar/index.js +4 -2
  8. package/dist/lit/components/app-bar/index.styles.js +94 -0
  9. package/dist/lit/components/artifact/index.d.ts +5 -0
  10. package/dist/lit/components/artifact/index.js +14 -10
  11. package/dist/lit/components/artifact/index.styles.js +180 -0
  12. package/dist/lit/components/autocomplete/index.d.ts +5 -0
  13. package/dist/lit/components/autocomplete/index.js +11 -2
  14. package/dist/lit/components/autocomplete/index.styles.js +185 -0
  15. package/dist/lit/components/avatar/index.d.ts +1 -0
  16. package/dist/lit/components/avatar/index.js +4 -2
  17. package/dist/lit/components/avatar/index.styles.js +76 -0
  18. package/dist/lit/components/avatar-group/index.d.ts +1 -0
  19. package/dist/lit/components/avatar-group/index.js +4 -2
  20. package/dist/lit/components/avatar-group/index.styles.js +74 -0
  21. package/dist/lit/components/badge/index.d.ts +1 -0
  22. package/dist/lit/components/badge/index.js +4 -2
  23. package/dist/lit/components/badge/index.styles.js +86 -0
  24. package/dist/lit/components/brand-mark/index.js +8 -9
  25. package/dist/lit/components/brand-mark/index.styles.js +123 -0
  26. package/dist/lit/components/breadcrumbs/index.d.ts +1 -0
  27. package/dist/lit/components/breadcrumbs/index.js +5 -4
  28. package/dist/lit/components/breadcrumbs/index.styles.js +105 -0
  29. package/dist/lit/components/bubble/index.d.ts +4 -0
  30. package/dist/lit/components/bubble/index.js +14 -11
  31. package/dist/lit/components/bubble/index.styles.js +196 -0
  32. package/dist/lit/components/button/index.d.ts +1 -0
  33. package/dist/lit/components/button/index.js +6 -13
  34. package/dist/lit/components/button/index.styles.js +356 -0
  35. package/dist/lit/components/card/index.d.ts +1 -0
  36. package/dist/lit/components/card/index.js +4 -2
  37. package/dist/lit/components/card/index.styles.js +113 -0
  38. package/dist/lit/components/chat/index.d.ts +6 -0
  39. package/dist/lit/components/chat/index.js +15 -10
  40. package/dist/lit/components/chat/index.styles.js +306 -0
  41. package/dist/lit/components/checkbox/index.d.ts +1 -0
  42. package/dist/lit/components/checkbox/index.js +7 -4
  43. package/dist/lit/components/checkbox/index.styles.js +140 -0
  44. package/dist/lit/components/chip/index.d.ts +5 -0
  45. package/dist/lit/components/chip/index.js +8 -2
  46. package/dist/lit/components/chip/index.styles.js +159 -0
  47. package/dist/lit/components/chip-group/index.d.ts +4 -0
  48. package/dist/lit/components/chip-group/index.js +7 -2
  49. package/dist/lit/components/chip-group/index.styles.js +33 -0
  50. package/dist/lit/components/code/index.d.ts +1 -0
  51. package/dist/lit/components/code/index.js +4 -3
  52. package/dist/lit/components/code/index.styles.js +56 -0
  53. package/dist/lit/components/composer/index.d.ts +6 -0
  54. package/dist/lit/components/composer/index.js +15 -10
  55. package/dist/lit/components/composer/index.styles.js +562 -0
  56. package/dist/lit/components/data-table/index.css +18 -0
  57. package/dist/lit/components/data-table/index.d.ts +30 -0
  58. package/dist/lit/components/data-table/index.js +120 -34
  59. package/dist/lit/components/data-table/index.styles.js +198 -0
  60. package/dist/lit/components/date-range/index.d.ts +4 -0
  61. package/dist/lit/components/date-range/index.js +7 -2
  62. package/dist/lit/components/date-range/index.styles.js +338 -0
  63. package/dist/lit/components/dialog/index.d.ts +4 -0
  64. package/dist/lit/components/dialog/index.js +7 -2
  65. package/dist/lit/components/dialog/index.styles.js +138 -0
  66. package/dist/lit/components/divider/index.d.ts +1 -0
  67. package/dist/lit/components/divider/index.js +4 -2
  68. package/dist/lit/components/divider/index.styles.js +41 -0
  69. package/dist/lit/components/empty-state/index.d.ts +1 -0
  70. package/dist/lit/components/empty-state/index.js +4 -2
  71. package/dist/lit/components/empty-state/index.styles.js +83 -0
  72. package/dist/lit/components/expansion-panel/index.d.ts +5 -0
  73. package/dist/lit/components/expansion-panel/index.js +8 -2
  74. package/dist/lit/components/expansion-panel/index.styles.js +134 -0
  75. package/dist/lit/components/field/index.d.ts +4 -0
  76. package/dist/lit/components/field/index.js +9 -4
  77. package/dist/lit/components/field/index.styles.js +237 -0
  78. package/dist/lit/components/file-input/index.d.ts +4 -0
  79. package/dist/lit/components/file-input/index.js +10 -4
  80. package/dist/lit/components/file-input/index.styles.js +271 -0
  81. package/dist/lit/components/form/index.d.ts +4 -0
  82. package/dist/lit/components/form/index.js +7 -2
  83. package/dist/lit/components/form/index.styles.js +43 -0
  84. package/dist/lit/components/grid/index.d.ts +1 -0
  85. package/dist/lit/components/grid/index.js +4 -2
  86. package/dist/lit/components/grid/index.styles.js +67 -0
  87. package/dist/lit/components/kbd/index.d.ts +1 -0
  88. package/dist/lit/components/kbd/index.js +4 -2
  89. package/dist/lit/components/kbd/index.styles.js +49 -0
  90. package/dist/lit/components/list/index.d.ts +4 -0
  91. package/dist/lit/components/list/index.js +7 -2
  92. package/dist/lit/components/list/index.styles.js +29 -0
  93. package/dist/lit/components/list-item/index.d.ts +1 -0
  94. package/dist/lit/components/list-item/index.js +4 -2
  95. package/dist/lit/components/list-item/index.styles.js +133 -0
  96. package/dist/lit/components/menu/index.d.ts +8 -0
  97. package/dist/lit/components/menu/index.js +11 -3
  98. package/dist/lit/components/menu/index.styles.js +108 -0
  99. package/dist/lit/components/multi-select/index.css +156 -0
  100. package/dist/lit/components/multi-select/index.d.ts +70 -0
  101. package/dist/lit/components/multi-select/index.js +497 -0
  102. package/dist/lit/components/multi-select/index.styles.js +170 -0
  103. package/dist/lit/components/navigation-drawer/index.d.ts +4 -0
  104. package/dist/lit/components/navigation-drawer/index.js +7 -2
  105. package/dist/lit/components/navigation-drawer/index.styles.js +128 -0
  106. package/dist/lit/components/overlay/index.d.ts +5 -0
  107. package/dist/lit/components/overlay/index.js +8 -2
  108. package/dist/lit/components/overlay/index.styles.js +185 -0
  109. package/dist/lit/components/pagination/index.d.ts +17 -0
  110. package/dist/lit/components/pagination/index.js +53 -8
  111. package/dist/lit/components/pagination/index.styles.js +116 -0
  112. package/dist/lit/components/popover/index.d.ts +5 -0
  113. package/dist/lit/components/popover/index.js +8 -2
  114. package/dist/lit/components/popover/index.styles.js +48 -0
  115. package/dist/lit/components/primitives/index.js +8 -9
  116. package/dist/lit/components/primitives/index.styles.js +518 -0
  117. package/dist/lit/components/progress/index.d.ts +1 -0
  118. package/dist/lit/components/progress/index.js +4 -2
  119. package/dist/lit/components/progress/index.styles.js +157 -0
  120. package/dist/lit/components/radio-group/index.d.ts +5 -0
  121. package/dist/lit/components/radio-group/index.js +10 -6
  122. package/dist/lit/components/radio-group/index.styles.js +192 -0
  123. package/dist/lit/components/select/index.d.ts +4 -0
  124. package/dist/lit/components/select/index.js +10 -2
  125. package/dist/lit/components/select/index.styles.js +165 -0
  126. package/dist/lit/components/sidebar-item/index.js +8 -9
  127. package/dist/lit/components/sidebar-item/index.styles.js +147 -0
  128. package/dist/lit/components/skeleton/index.d.ts +1 -0
  129. package/dist/lit/components/skeleton/index.js +4 -2
  130. package/dist/lit/components/skeleton/index.styles.js +95 -0
  131. package/dist/lit/components/slider/index.d.ts +5 -0
  132. package/dist/lit/components/slider/index.js +11 -4
  133. package/dist/lit/components/slider/index.styles.js +185 -0
  134. package/dist/lit/components/snackbar/index.d.ts +4 -0
  135. package/dist/lit/components/snackbar/index.js +14 -10
  136. package/dist/lit/components/snackbar/index.styles.js +293 -0
  137. package/dist/lit/components/stack/index.d.ts +1 -0
  138. package/dist/lit/components/stack/index.js +4 -2
  139. package/dist/lit/components/stack/index.styles.js +55 -0
  140. package/dist/lit/components/switch/index.d.ts +1 -0
  141. package/dist/lit/components/switch/index.js +7 -4
  142. package/dist/lit/components/switch/index.styles.js +140 -0
  143. package/dist/lit/components/table/index.d.ts +1 -0
  144. package/dist/lit/components/table/index.js +4 -2
  145. package/dist/lit/components/table/index.styles.js +99 -0
  146. package/dist/lit/components/tabs/index.d.ts +4 -0
  147. package/dist/lit/components/tabs/index.js +8 -4
  148. package/dist/lit/components/tabs/index.styles.js +130 -0
  149. package/dist/lit/components/text-field/index.d.ts +1 -0
  150. package/dist/lit/components/text-field/index.js +7 -2
  151. package/dist/lit/components/text-field/index.styles.js +104 -0
  152. package/dist/lit/components/textarea/index.d.ts +1 -0
  153. package/dist/lit/components/textarea/index.js +7 -2
  154. package/dist/lit/components/textarea/index.styles.js +69 -0
  155. package/dist/lit/components/tooltip/index.d.ts +1 -0
  156. package/dist/lit/components/tooltip/index.js +4 -2
  157. package/dist/lit/components/tooltip/index.styles.js +51 -0
  158. package/dist/lit/components/validation/index.d.ts +6 -0
  159. package/dist/lit/components/validation/index.js +15 -10
  160. package/dist/lit/components/validation/index.styles.js +400 -0
  161. package/dist/lit/index.d.ts +1 -0
  162. package/dist/lit/index.js +1 -0
  163. package/dist/react/XmAlert.d.ts +99 -0
  164. package/dist/react/XmAlert.js +47 -0
  165. package/dist/react/XmAppBar.d.ts +59 -0
  166. package/dist/react/XmAppBar.js +34 -0
  167. package/dist/react/XmArtifact.d.ts +113 -0
  168. package/dist/react/XmArtifact.js +48 -0
  169. package/dist/react/XmArtifactChip.d.ts +56 -0
  170. package/dist/react/XmArtifactChip.js +32 -0
  171. package/dist/react/XmAutocomplete.d.ts +153 -0
  172. package/dist/react/XmAutocomplete.js +70 -0
  173. package/dist/react/XmAvatar.d.ts +71 -0
  174. package/dist/react/XmAvatar.js +40 -0
  175. package/dist/react/XmAvatarGroup.d.ts +59 -0
  176. package/dist/react/XmAvatarGroup.js +34 -0
  177. package/dist/react/XmBadge.d.ts +67 -0
  178. package/dist/react/XmBadge.js +38 -0
  179. package/dist/react/XmBrandGlyph.d.ts +46 -0
  180. package/dist/react/XmBrandGlyph.js +24 -0
  181. package/dist/react/XmBrandMark.d.ts +71 -0
  182. package/dist/react/XmBrandMark.js +40 -0
  183. package/dist/react/XmBreadcrumbs.d.ts +56 -0
  184. package/dist/react/XmBreadcrumbs.js +32 -0
  185. package/dist/react/XmBubble.d.ts +69 -0
  186. package/dist/react/XmBubble.js +38 -0
  187. package/dist/react/XmBubbleActions.d.ts +59 -0
  188. package/dist/react/XmBubbleActions.js +34 -0
  189. package/dist/react/XmBubbleGroup.d.ts +82 -0
  190. package/dist/react/XmBubbleGroup.js +38 -0
  191. package/dist/react/XmButton.d.ts +89 -0
  192. package/dist/react/XmButton.js +48 -0
  193. package/dist/react/XmCard.d.ts +59 -0
  194. package/dist/react/XmCard.js +34 -0
  195. package/dist/react/XmChatShell.d.ts +110 -0
  196. package/dist/react/XmChatShell.js +48 -0
  197. package/dist/react/XmCheckbox.d.ts +145 -0
  198. package/dist/react/XmCheckbox.js +60 -0
  199. package/dist/react/XmChip.d.ts +99 -0
  200. package/dist/react/XmChip.js +48 -0
  201. package/dist/react/XmChipGroup.d.ts +79 -0
  202. package/dist/react/XmChipGroup.js +36 -0
  203. package/dist/react/XmCode.d.ts +55 -0
  204. package/dist/react/XmCode.js +32 -0
  205. package/dist/react/XmComposer.d.ts +123 -0
  206. package/dist/react/XmComposer.js +56 -0
  207. package/dist/react/XmDataTable.d.ts +125 -0
  208. package/dist/react/XmDataTable.js +66 -0
  209. package/dist/react/XmDateRange.d.ts +93 -0
  210. package/dist/react/XmDateRange.js +42 -0
  211. package/dist/react/XmDialog.d.ts +87 -0
  212. package/dist/react/XmDialog.js +41 -0
  213. package/dist/react/XmDivider.d.ts +55 -0
  214. package/dist/react/XmDivider.js +32 -0
  215. package/dist/react/XmEmptyState.d.ts +61 -0
  216. package/dist/react/XmEmptyState.js +34 -0
  217. package/dist/react/XmExpansionPanel.d.ts +101 -0
  218. package/dist/react/XmExpansionPanel.js +49 -0
  219. package/dist/react/XmFileInput.d.ts +151 -0
  220. package/dist/react/XmFileInput.js +70 -0
  221. package/dist/react/XmFileValidationBlock.d.ts +111 -0
  222. package/dist/react/XmFileValidationBlock.js +50 -0
  223. package/dist/react/XmForm.d.ts +91 -0
  224. package/dist/react/XmForm.js +38 -0
  225. package/dist/react/XmGrid.d.ts +59 -0
  226. package/dist/react/XmGrid.js +34 -0
  227. package/dist/react/XmKbd.d.ts +46 -0
  228. package/dist/react/XmKbd.js +24 -0
  229. package/dist/react/XmList.d.ts +83 -0
  230. package/dist/react/XmList.js +38 -0
  231. package/dist/react/XmListItem.d.ts +67 -0
  232. package/dist/react/XmListItem.js +38 -0
  233. package/dist/react/XmMenu.d.ts +98 -0
  234. package/dist/react/XmMenu.js +46 -0
  235. package/dist/react/XmMenuItem.d.ts +63 -0
  236. package/dist/react/XmMenuItem.js +36 -0
  237. package/dist/react/XmMultiSelect.d.ts +161 -0
  238. package/dist/react/XmMultiSelect.js +74 -0
  239. package/dist/react/XmNavigationDrawer.d.ts +93 -0
  240. package/dist/react/XmNavigationDrawer.js +42 -0
  241. package/dist/react/XmOverlay.d.ts +120 -0
  242. package/dist/react/XmOverlay.js +56 -0
  243. package/dist/react/XmPagination.d.ts +117 -0
  244. package/dist/react/XmPagination.js +58 -0
  245. package/dist/react/XmPopover.d.ts +90 -0
  246. package/dist/react/XmPopover.js +42 -0
  247. package/dist/react/XmProgress.d.ts +75 -0
  248. package/dist/react/XmProgress.js +42 -0
  249. package/dist/react/XmRadio.d.ts +88 -0
  250. package/dist/react/XmRadio.js +42 -0
  251. package/dist/react/XmRadioGroup.d.ts +139 -0
  252. package/dist/react/XmRadioGroup.js +58 -0
  253. package/dist/react/XmSelect.d.ts +152 -0
  254. package/dist/react/XmSelect.js +70 -0
  255. package/dist/react/XmSidebarItem.d.ts +75 -0
  256. package/dist/react/XmSidebarItem.js +42 -0
  257. package/dist/react/XmSkeleton.d.ts +71 -0
  258. package/dist/react/XmSkeleton.js +40 -0
  259. package/dist/react/XmSlider.d.ts +160 -0
  260. package/dist/react/XmSlider.js +76 -0
  261. package/dist/react/XmSnackbar.d.ts +110 -0
  262. package/dist/react/XmSnackbar.js +51 -0
  263. package/dist/react/XmStack.d.ts +71 -0
  264. package/dist/react/XmStack.js +40 -0
  265. package/dist/react/XmSwitch.d.ts +136 -0
  266. package/dist/react/XmSwitch.js +58 -0
  267. package/dist/react/XmTab.d.ts +79 -0
  268. package/dist/react/XmTab.js +38 -0
  269. package/dist/react/XmTabPanel.d.ts +55 -0
  270. package/dist/react/XmTabPanel.js +32 -0
  271. package/dist/react/XmTable.d.ts +57 -0
  272. package/dist/react/XmTable.js +32 -0
  273. package/dist/react/XmTabs.d.ts +82 -0
  274. package/dist/react/XmTabs.js +38 -0
  275. package/dist/react/XmTextField.d.ts +147 -0
  276. package/dist/react/XmTextField.js +62 -0
  277. package/dist/react/XmTextarea.d.ts +155 -0
  278. package/dist/react/XmTextarea.js +66 -0
  279. package/dist/react/XmTooltip.d.ts +67 -0
  280. package/dist/react/XmTooltip.js +38 -0
  281. package/dist/react/index.d.ts +59 -0
  282. package/dist/react/index.js +59 -0
  283. package/dist/react/react-utils.js +67 -0
  284. package/package.json +37 -9
  285. package/styles/_base-typography.css +86 -0
  286. package/styles/_primitives.css +54 -0
  287. package/styles/_reset.css +58 -0
  288. package/styles/base.css +23 -0
  289. package/vscode.css-custom-data.json +6 -0
  290. package/vscode.html-custom-data.json +979 -0
@@ -36,22 +36,23 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
36
36
  };
37
37
  import { LitElement, html, nothing } from "lit";
38
38
  import { customElement, property } from "lit/decorators.js";
39
+ import primitivesSheets from "../primitives/index.styles.js";
40
+ import breadcrumbsSheets from "./index.styles.js";
39
41
  // Resolve CSS relative to the *built* file:
40
42
  // lit/build/components/breadcrumbs/index.js → ../...
41
- const BREADCRUMBS_CSS = new URL("../breadcrumbs/index.css", import.meta.url).href;
42
- const PRIMITIVES_CSS = new URL("../primitives/index.css", import.meta.url).href;
43
43
  let XmBreadcrumbs = class XmBreadcrumbs extends LitElement {
44
44
  constructor() {
45
45
  super(...arguments);
46
46
  this.items = [];
47
47
  this.separator = "chevron";
48
48
  }
49
+ // Adopted from the build-generated sheets (scripts/gen-styles.mjs) — no
50
+ // runtime URL fetch (ADR 0012). Cascade order preserved from the old <link>s.
51
+ static { this.styles = [...primitivesSheets, ...breadcrumbsSheets]; }
49
52
  render() {
50
53
  const items = Array.isArray(this.items) ? this.items : [];
51
54
  const lastIndex = items.length - 1;
52
55
  return html `
53
- <link rel="stylesheet" href="${PRIMITIVES_CSS}" />
54
- <link rel="stylesheet" href="${BREADCRUMBS_CSS}" />
55
56
  <style>
56
57
  :host {
57
58
  display: block;
@@ -0,0 +1,105 @@
1
+ // GENERATED by scripts/gen-styles.mjs — do not edit. Source: lit/components/breadcrumbs/index.css
2
+ // SSR-safe: constructable stylesheets need the DOM, so in a non-DOM context
3
+ // (Node/SSR import) this exports [] instead of throwing. The CSS self-declares
4
+ // the @layer order so the override contract holds even without ./base (AD-2).
5
+ let sheets = [];
6
+ if (typeof CSSStyleSheet !== "undefined") {
7
+ const sheet = new CSSStyleSheet();
8
+ sheet.replaceSync(`@layer reset, base, tokens, components, utilities;
9
+ @layer components {
10
+ /* ============================================
11
+ <xm-breadcrumbs> — location trail.
12
+
13
+ Surface / ink (AD-13): a transparent trail that traces its host surface.
14
+ On the desk family: link ink var(--md-sys-color-on-surface-variant), hover
15
+ var(--md-sys-color-on-surface); the CURRENT (last) item is coral
16
+ var(--md-sys-color-primary) — the page indicator. The divider glyph is a
17
+ muted neutral, never a status hue.
18
+
19
+ BEM: block \`breadcrumbs\`; elements \`__item\` \`__link\` \`__current\`
20
+ \`__separator\` \`__slash\`.
21
+ ============================================ */
22
+
23
+ .breadcrumbs {
24
+ display: flex;
25
+ flex-wrap: wrap;
26
+ align-items: center;
27
+ gap: var(--s-1);
28
+ margin: 0;
29
+ padding: 0;
30
+ list-style: none;
31
+ font-family: var(--md-sys-typescale-body-medium-font);
32
+ font-size: var(--md-sys-typescale-body-medium-size);
33
+ line-height: var(--md-sys-typescale-body-medium-line-height);
34
+ letter-spacing: var(--md-sys-typescale-body-medium-tracking);
35
+ }
36
+
37
+ .breadcrumbs__item {
38
+ display: inline-flex;
39
+ align-items: center;
40
+ gap: var(--s-1);
41
+ min-width: 0;
42
+ }
43
+
44
+ .breadcrumbs__link {
45
+ display: inline-block;
46
+ padding: var(--s-1) var(--s-2);
47
+ border-radius: var(--md-sys-shape-corner-small);
48
+ color: var(--md-sys-color-on-surface-variant);
49
+ text-decoration: none;
50
+ white-space: nowrap;
51
+ transition:
52
+ color var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-standard),
53
+ background var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-standard);
54
+ }
55
+ .breadcrumbs__link:hover {
56
+ color: var(--md-sys-color-on-surface);
57
+ background: color-mix(
58
+ in oklab,
59
+ var(--md-sys-color-on-surface) var(--md-sys-state-hover-state-layer-opacity),
60
+ transparent
61
+ );
62
+ }
63
+ .breadcrumbs__link:focus {
64
+ outline: none;
65
+ }
66
+ .breadcrumbs__link:focus-visible {
67
+ outline: none;
68
+ color: var(--md-sys-color-on-surface);
69
+ box-shadow: var(--xm-state-focus-ring);
70
+ }
71
+
72
+ .breadcrumbs__current {
73
+ display: inline-block;
74
+ padding: var(--s-1) var(--s-2);
75
+ color: var(--md-sys-color-primary);
76
+ font-weight: 600;
77
+ white-space: nowrap;
78
+ }
79
+
80
+ /* A non-last item with no href: plain, non-interactive text — NOT the coral
81
+ current-page treatment (only the last item is the current page). */
82
+ .breadcrumbs__text {
83
+ display: inline-block;
84
+ padding: var(--s-1) var(--s-2);
85
+ color: var(--md-sys-color-on-surface-variant);
86
+ white-space: nowrap;
87
+ }
88
+
89
+ .breadcrumbs__separator {
90
+ display: inline-flex;
91
+ align-items: center;
92
+ color: var(--md-sys-color-on-surface-variant);
93
+ opacity: 0.7;
94
+ flex-shrink: 0;
95
+ }
96
+
97
+ .breadcrumbs__slash {
98
+ font-size: var(--md-sys-typescale-body-medium-size);
99
+ line-height: 1;
100
+ }
101
+
102
+ }`);
103
+ sheets = [sheet];
104
+ }
105
+ export default sheets;
@@ -16,6 +16,10 @@ export interface BubbleArtifact {
16
16
  declare class LightElement extends LitElement {
17
17
  createRenderRoot(): HTMLElement | DocumentFragment;
18
18
  }
19
+ /**
20
+ * @fires artifact-download - Fired when an artifact download is requested.
21
+ * @fires artifact-open - Fired when an artifact is opened.
22
+ */
19
23
  export declare class XmBubbleGroup extends LightElement {
20
24
  variant: BubbleVariant;
21
25
  private _authoredChildren;
@@ -36,18 +36,17 @@ import { unsafeHTML } from "lit/directives/unsafe-html.js";
36
36
  import { customElement, property } from "lit/decorators.js";
37
37
  // Register <xm-button> for the artifact "Download" action below.
38
38
  import "../button/index.js";
39
+ import bubbleSheets from "./index.styles.js";
40
+ import composerSheets from "../composer/index.styles.js";
41
+ import primitivesSheets from "../primitives/index.styles.js";
42
+ // Light DOM: adopt the build-generated sheets into the document — no runtime
43
+ // URL fetch (ADR 0012). Deduped by sheet identity (the generated modules are
44
+ // singletons); the CSS is wrapped in @layer components (spine AD-2).
39
45
  if (typeof document !== "undefined") {
40
- for (const href of [
41
- new URL("../bubble/index.css", import.meta.url).href,
42
- new URL("../composer/index.css", import.meta.url).href,
43
- new URL("../primitives/index.css", import.meta.url).href,
44
- ]) {
45
- if (document.querySelector(`link[rel="stylesheet"][href="${href}"]`))
46
- continue;
47
- const link = document.createElement("link");
48
- link.rel = "stylesheet";
49
- link.href = href;
50
- document.head.appendChild(link);
46
+ for (const sheet of [...bubbleSheets, ...composerSheets, ...primitivesSheets]) {
47
+ if (!document.adoptedStyleSheets.includes(sheet)) {
48
+ document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
49
+ }
51
50
  }
52
51
  }
53
52
  class LightElement extends LitElement {
@@ -122,6 +121,10 @@ function applyBubbleClasses(root) {
122
121
  Authors put bubble + actions inside it; the group anchors the
123
122
  layout edge and reveals .bubble-actions on hover via CSS only.
124
123
  ─────────────────────────────────────────────────────────────*/
124
+ /**
125
+ * @fires artifact-download - Fired when an artifact download is requested.
126
+ * @fires artifact-open - Fired when an artifact is opened.
127
+ */
125
128
  let XmBubbleGroup = class XmBubbleGroup extends LightElement {
126
129
  constructor() {
127
130
  super(...arguments);
@@ -0,0 +1,196 @@
1
+ // GENERATED by scripts/gen-styles.mjs — do not edit. Source: lit/components/bubble/index.css
2
+ // SSR-safe: constructable stylesheets need the DOM, so in a non-DOM context
3
+ // (Node/SSR import) this exports [] instead of throwing. The CSS self-declares
4
+ // the @layer order so the override contract holds even without ./base (AD-2).
5
+ let sheets = [];
6
+ if (typeof CSSStyleSheet !== "undefined") {
7
+ const sheet = new CSSStyleSheet();
8
+ sheet.replaceSync(`@layer reset, base, tokens, components, utilities;
9
+ @layer components {
10
+ /* ============================================================
11
+ <Bubble /> — chat message vocabulary
12
+
13
+ Three exported components share this stylesheet:
14
+ • .bubble — the message body itself (--user | --bot)
15
+ • .bubble-group — column wrapping bubble + actions, anchored
16
+ left for bot, right for user
17
+ • .bubble-actions — hover-reveal toolbar (timestamp + icons)
18
+
19
+ Pairs with components/bubble/index.jsx. Loaded directly by every preview
20
+ page that renders a chat thread (bubbles.html, chat.html). No tag
21
+ selectors — paragraph, list, strong, code content is wrapped by the
22
+ JSX <BubbleBody> walker into .bubble__paragraph / .bubble__list / etc.
23
+ ============================================================ */
24
+
25
+ /* ---------- Bubble body ---------- */
26
+ .bubble {
27
+ max-width: 640px;
28
+ font:
29
+ var(--md-sys-typescale-body-large-weight)
30
+ var(--md-sys-typescale-body-large-size) /
31
+ var(--md-sys-typescale-body-large-line-height)
32
+ var(--md-sys-typescale-body-large-font);
33
+ }
34
+ /* User bubble shares the composer's raised family (surface-container-high)
35
+ so "your voice" reads as one surface across input and thread.
36
+ surface-container-lowest was ~black in dark and vanished into the desk;
37
+ the high container sits a clear step above \`surface\` in both themes. */
38
+ .bubble--user {
39
+ padding: 11px var(--s-4-5);
40
+ border-radius: var(--md-sys-shape-corner-large);
41
+ background: var(--md-sys-color-surface-container-high);
42
+ color: var(--md-sys-color-on-surface);
43
+ }
44
+ /* Bot bubble has no surface of its own — it rides whatever's behind it.
45
+ In the xmesh chat the thread sits on \`surface\` (the warm dark "desk"
46
+ in dark theme, cream in light), so the bot bubble uses on-surface. The
47
+ primitives flip per theme — a single rule covers both. If a host page
48
+ puts the thread on \`inverse-surface\` (a card) instead, override with
49
+ .bubble--bot { color: var(--md-sys-color-inverse-on-surface) } at the
50
+ page level. */
51
+ .bubble--bot {
52
+ padding: 0 var(--s-0-5);
53
+ color: var(--md-sys-color-on-surface);
54
+ max-width: 720px;
55
+ background: transparent;
56
+ }
57
+
58
+ /* ---------- Bubble body content (BEM-wrapped by <BubbleBody>) ---------- */
59
+ .bubble__paragraph { margin: 0 0 0.75em; }
60
+ .bubble__paragraph:last-child { margin-bottom: 0; }
61
+
62
+ .bubble__list { margin: var(--s-1) 0 0; padding-left: var(--s-5-5); }
63
+ .bubble__list--ordered { list-style: decimal; }
64
+ .bubble__list--unordered { list-style: none; padding-left: var(--s-5-5); }
65
+ .bubble__list-item { padding-left: var(--s-1-5); margin-bottom: var(--s-1-5); }
66
+ .bubble__list--ordered .bubble__list-item::marker {
67
+ color: var(--xm-color-on-surface-soft);
68
+ font-variant-numeric: tabular-nums;
69
+ }
70
+ .bubble__list--unordered .bubble__list-item {
71
+ position: relative;
72
+ padding-left: var(--s-3-5);
73
+ margin-bottom: var(--s-1);
74
+ }
75
+ .bubble__list--unordered .bubble__list-item::before {
76
+ content: "";
77
+ position: absolute;
78
+ left: 0; top: 0.7em;
79
+ width: 4px; height: 4px;
80
+ border-radius: 50%;
81
+ background: var(--xm-color-on-surface-soft);
82
+ }
83
+
84
+ .bubble__strong { font-weight: 600; color: var(--md-sys-color-on-surface); }
85
+
86
+ /* Inline code — flat: monospaced ink shift, no chip background.
87
+ The page can still override --xm-color-code-ink at :root for accent
88
+ variants (see bubbles.html for the canonical override). */
89
+ .bubble__code {
90
+ background: transparent;
91
+ color: var(--xm-color-code-ink, oklch(0.55 0.16 25));
92
+ padding: 0;
93
+ border-radius: 0;
94
+ font: 500 12.5px/1.4 var(--xm-typescale-mono-font);
95
+ }
96
+
97
+ /* ---------- Bubble group (column wrapper) ---------- */
98
+ .bubble-group {
99
+ display: flex;
100
+ flex-direction: column;
101
+ gap: var(--s-1-5);
102
+ max-width: 720px;
103
+ }
104
+ .bubble-group--user {
105
+ align-items: flex-end;
106
+ max-width: 640px;
107
+ }
108
+ .bubble-group--bot {
109
+ align-items: flex-start;
110
+ }
111
+
112
+ /* ---------- Bubble actions (hover-reveal toolbar) ---------- */
113
+ .bubble-actions {
114
+ display: inline-flex;
115
+ align-items: center;
116
+ gap: var(--s-2-5);
117
+ padding: 0 var(--s-1);
118
+ background: transparent;
119
+ border: 0;
120
+ color: var(--xm-color-on-surface-soft);
121
+ opacity: 0;
122
+ transform: translateY(-1px);
123
+ transition:
124
+ opacity var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-standard),
125
+ transform var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-standard);
126
+ pointer-events: none;
127
+ }
128
+ .bubble-group:hover .bubble-actions,
129
+ .bubble-group:focus-within .bubble-actions {
130
+ opacity: 1;
131
+ transform: none;
132
+ pointer-events: auto;
133
+ }
134
+
135
+ .bubble-actions__ts {
136
+ font: 400 12px/1 var(--xm-typescale-mono-font);
137
+ color: var(--xm-color-on-surface-soft);
138
+ letter-spacing: 0.02em;
139
+ }
140
+
141
+ .bubble-actions__btn {
142
+ appearance: none;
143
+ border: 0;
144
+ background: transparent;
145
+ color: var(--xm-color-on-surface-soft);
146
+ padding: var(--s-1);
147
+ border-radius: 6px;
148
+ display: inline-flex;
149
+ align-items: center;
150
+ justify-content: center;
151
+ cursor: pointer;
152
+ transition:
153
+ background var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-standard),
154
+ color var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-standard);
155
+ }
156
+ .bubble-actions__btn:hover {
157
+ background: color-mix(in oklch, currentColor 14%, transparent);
158
+ color: var(--md-sys-color-on-surface);
159
+ }
160
+ .bubble-actions__btn svg {
161
+ width: 16px; height: 16px;
162
+ stroke: currentColor;
163
+ fill: none;
164
+ stroke-width: 1.6;
165
+ stroke-linecap: round;
166
+ stroke-linejoin: round;
167
+ }
168
+
169
+ /* ---------- Attachment chips (used when user bubble carries files) ---------- */
170
+ .bubble__atts {
171
+ display: flex;
172
+ flex-wrap: wrap;
173
+ gap: var(--s-1-5);
174
+ margin-bottom: var(--s-1-5);
175
+ }
176
+ .bubble__att-mini {
177
+ display: inline-flex;
178
+ align-items: center;
179
+ gap: var(--s-1-5);
180
+ padding: var(--s-1) var(--s-2);
181
+ border-radius: 6px;
182
+ background: color-mix(in oklab, currentColor 12%, transparent);
183
+ font: 500 11px/1 var(--xm-typescale-mono-font);
184
+ }
185
+ .bubble__att-thumb {
186
+ width: 14px; height: 14px;
187
+ border-radius: 3px;
188
+ background-size: cover;
189
+ background-position: center;
190
+ flex-shrink: 0;
191
+ }
192
+
193
+ }`);
194
+ sheets = [sheet];
195
+ }
196
+ export default sheets;
@@ -5,6 +5,7 @@ type ButtonSize = "xs" | "sm" | "md" | "lg";
5
5
  type ButtonType = "button" | "submit" | "reset";
6
6
  type ForceState = "hover" | "active" | "focus" | null;
7
7
  export declare class XmButton extends LitElement {
8
+ static styles: CSSStyleSheet[];
8
9
  static shadowRootOptions: ShadowRootInit;
9
10
  variant: ButtonVariant;
10
11
  size: ButtonSize;
@@ -37,6 +37,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
37
37
  };
38
38
  import { LitElement, html, nothing } from "lit";
39
39
  import { customElement, property } from "lit/decorators.js";
40
+ import btnSheets from "./index.styles.js";
41
+ import primSheets from "../primitives/index.styles.js";
40
42
  const VARIANT_CLASS = {
41
43
  primary: "btn--primary",
42
44
  secondary: "btn--secondary",
@@ -48,17 +50,6 @@ const VARIANT_CLASS = {
48
50
  "ghost-canvas": "btn--ghost-canvas",
49
51
  "ghost-accent-canvas": "btn--ghost-accent-canvas",
50
52
  };
51
- // Resolve CSS path relative to this module so the previews can sit at
52
- // any depth without the component caring (e.g. lit/preview/buttons.html
53
- // → ../components/button/index.css).
54
- //
55
- // Paths are computed from the *built* file location:
56
- // `lit/build/components/button/index.js` — 3 levels of `..` to reach
57
- // `lit/`, then into `components/`. The .ts source under
58
- // `lit/components/button/` is never loaded by the browser; only the
59
- // tsc-emitted .js is.
60
- const BTN_CSS = new URL("../button/index.css", import.meta.url).href;
61
- const PRIMITIVES_CSS = new URL("../primitives/index.css", import.meta.url).href;
62
53
  let XmButton = class XmButton extends LitElement {
63
54
  constructor() {
64
55
  super(...arguments);
@@ -78,6 +69,10 @@ let XmButton = class XmButton extends LitElement {
78
69
  this.requestUpdate();
79
70
  };
80
71
  }
72
+ // Component CSS is adopted from the build-generated constructable sheets
73
+ // (scripts/gen-styles.mjs) — no runtime URL fetch (ADR 0012). primitives
74
+ // first so the button's own rules win on overlap.
75
+ static { this.styles = [...primSheets, ...btnSheets]; }
81
76
  // Forward focus to the inner native <button>. Required for Enter/Space
82
77
  // to fire a click when the host is focused via tabindex (used by toggle
83
78
  // and tab buttons that receive focus on the host element).
@@ -118,8 +113,6 @@ let XmButton = class XmButton extends LitElement {
118
113
  `;
119
114
  }
120
115
  return html `
121
- <link rel="stylesheet" href="${PRIMITIVES_CSS}">
122
- <link rel="stylesheet" href="${BTN_CSS}">
123
116
  <style>
124
117
  :host { display: inline-block; }
125
118
  :host([full-width]) { display: block; }