entasis 0.4.1 → 0.5.0

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 (164) hide show
  1. package/README.md +1 -0
  2. package/dist/attachments/spinnerOverlay.theme.d.ts +2 -36
  3. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.d.ts +2 -30
  4. package/dist/components/AIChat/aiChat.theme.d.ts +2 -14
  5. package/dist/components/AIComposer/aiComposer.theme.d.ts +2 -50
  6. package/dist/components/AIContext/aiContext.theme.d.ts +2 -37
  7. package/dist/components/AIConversation/aiConversation.theme.d.ts +2 -4
  8. package/dist/components/AIFilePreview/aiFilePreview.theme.d.ts +2 -17
  9. package/dist/components/AIMarker/aiMarker.theme.d.ts +2 -18
  10. package/dist/components/AIMessage/aiMessage.theme.d.ts +2 -72
  11. package/dist/components/AIMessageActions/aiMessageActions.theme.d.ts +2 -29
  12. package/dist/components/AIModelSelector/aiModelSelector.theme.d.ts +2 -25
  13. package/dist/components/AIReasoning/aiReasoning.theme.d.ts +2 -9
  14. package/dist/components/AISuggestion/aiSuggestion.theme.d.ts +2 -6
  15. package/dist/components/AIThread/aiThread.theme.d.ts +2 -35
  16. package/dist/components/AIThreadToc/aiThreadToc.theme.d.ts +2 -44
  17. package/dist/components/AITool/aiTool.mcp.d.ts +1 -1
  18. package/dist/components/AITool/aiTool.mcp.js +1 -1
  19. package/dist/components/AITool/aiTool.theme.d.ts +2 -170
  20. package/dist/components/AITool/aiTool.theme.js +14 -12
  21. package/dist/components/Accordion/accordion.theme.d.ts +2 -135
  22. package/dist/components/Alert/alert.theme.d.ts +2 -88
  23. package/dist/components/AppShell/appShell.theme.d.ts +2 -34
  24. package/dist/components/AspectRatio/aspectRatio.theme.d.ts +2 -5
  25. package/dist/components/AudioPlayer/audioPlayer.theme.d.ts +2 -179
  26. package/dist/components/Avatar/avatar.theme.d.ts +2 -38
  27. package/dist/components/Avatar/avatarGroup.theme.d.ts +2 -17
  28. package/dist/components/Breadcrumbs/breadcrumbs.theme.d.ts +2 -33
  29. package/dist/components/Button/Button.svelte +15 -13
  30. package/dist/components/Button/button.theme.d.ts +2 -55
  31. package/dist/components/ButtonGroup/buttonGroup.theme.d.ts +2 -4
  32. package/dist/components/Card/card.theme.d.ts +2 -119
  33. package/dist/components/Carousel/carousel.theme.d.ts +2 -73
  34. package/dist/components/Chart/chart.theme.d.ts +2 -24
  35. package/dist/components/Chip/chip.theme.d.ts +2 -56
  36. package/dist/components/Code/code.theme.d.ts +2 -9
  37. package/dist/components/Collapsible/collapsible.theme.d.ts +2 -44
  38. package/dist/components/Command/command.theme.d.ts +2 -103
  39. package/dist/components/Confirmation/confirmation.theme.d.ts +2 -10
  40. package/dist/components/ContextMenu/contextMenu.theme.d.ts +2 -10
  41. package/dist/components/DataTable/dataTable.theme.d.ts +2 -160
  42. package/dist/components/Dialog/Dialog.svelte +16 -0
  43. package/dist/components/Dialog/dialog.mcp.d.ts +1 -1
  44. package/dist/components/Dialog/dialog.mcp.js +2 -1
  45. package/dist/components/Dialog/dialog.props.d.ts +5 -0
  46. package/dist/components/Dialog/dialog.theme.d.ts +2 -137
  47. package/dist/components/Dialog/dialog.theme.js +12 -8
  48. package/dist/components/Diff/diff.theme.d.ts +2 -6
  49. package/dist/components/DocumentViewer/documentViewer.theme.d.ts +2 -87
  50. package/dist/components/Empty/empty.theme.d.ts +2 -71
  51. package/dist/components/EventCalendar/eventCalendar.theme.d.ts +2 -3171
  52. package/dist/components/FloatingWindow/floatingWindow.theme.d.ts +2 -96
  53. package/dist/components/Form/Calendar/CalendarPrimitive.svelte.d.ts +2 -63
  54. package/dist/components/Form/Calendar/calendar.theme.d.ts +2 -63
  55. package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.d.ts +2 -100
  56. package/dist/components/Form/ColorInput/colorInput.theme.d.ts +2 -32
  57. package/dist/components/Form/ColorPicker/colorPicker.theme.d.ts +2 -127
  58. package/dist/components/Form/Combobox/combobox.theme.d.ts +2 -50
  59. package/dist/components/Form/DateInput/dateInput.theme.d.ts +2 -26
  60. package/dist/components/Form/DateSelector/dateSelector.theme.d.ts +2 -17
  61. package/dist/components/Form/Field/field.theme.d.ts +2 -146
  62. package/dist/components/Form/File/fileInput.theme.d.ts +2 -41
  63. package/dist/components/Form/Form/form.theme.d.ts +2 -129
  64. package/dist/components/Form/KeyValueInput/keyValueInput.theme.d.ts +2 -50
  65. package/dist/components/Form/MultiStepForm/multiStepForm.theme.d.ts +2 -25
  66. package/dist/components/Form/NumberInput/numberInput.theme.d.ts +2 -25
  67. package/dist/components/Form/PasswordInput/passwordInput.theme.d.ts +2 -25
  68. package/dist/components/Form/PhoneInput/phoneInput.theme.d.ts +2 -112
  69. package/dist/components/Form/PinInput/pinInput.theme.d.ts +2 -38
  70. package/dist/components/Form/RadioInput/radioInput.theme.d.ts +2 -94
  71. package/dist/components/Form/Select/select.theme.d.ts +2 -71
  72. package/dist/components/Form/Slider/slider.theme.d.ts +2 -266
  73. package/dist/components/Form/Switch/switch.theme.d.ts +2 -40
  74. package/dist/components/Form/TagGroup/tagGroup.theme.d.ts +2 -19
  75. package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +2 -53
  76. package/dist/components/Form/TextArea/textArea.theme.d.ts +2 -25
  77. package/dist/components/Form/TextInput/textInput.theme.d.ts +2 -25
  78. package/dist/components/Form/TimeInput/timeInput.theme.d.ts +2 -47
  79. package/dist/components/Form/VoiceInput/voiceInput.theme.d.ts +2 -155
  80. package/dist/components/GanttChart/ganttChart.theme.d.ts +2 -2478
  81. package/dist/components/Globe/globe.theme.d.ts +2 -13
  82. package/dist/components/Grid/grid.theme.d.ts +2 -18
  83. package/dist/components/Grid/gridSpan.theme.d.ts +2 -4
  84. package/dist/components/Heading/heading.theme.d.ts +2 -41
  85. package/dist/components/Hitbox/hitbox.theme.d.ts +2 -10
  86. package/dist/components/HoverCard/hoverCard.theme.d.ts +11 -27
  87. package/dist/components/HoverCard/hoverCard.theme.js +9 -4
  88. package/dist/components/ImageGallery/imageGallery.theme.d.ts +2 -6
  89. package/dist/components/ImageZoom/imageZoom.theme.d.ts +2 -16
  90. package/dist/components/Kanban/kanban.theme.d.ts +2 -60
  91. package/dist/components/Kbd/kbd.theme.d.ts +2 -33
  92. package/dist/components/Layout/layoutSpacing.d.ts +1 -1
  93. package/dist/components/LinkPreview/linkPreview.theme.d.ts +2 -58
  94. package/dist/components/Map/map.theme.d.ts +2 -14
  95. package/dist/components/Markdown/markdown.theme.d.ts +2 -10
  96. package/dist/components/Marquee/marquee.theme.d.ts +2 -37
  97. package/dist/components/MediaVolume/mediaVolumeControl.theme.d.ts +2 -22
  98. package/dist/components/Menu/menu.theme.d.ts +2 -12
  99. package/dist/components/MenuBar/menuBar.theme.d.ts +2 -16
  100. package/dist/components/MenuOption/menuOption.theme.d.ts +2 -75
  101. package/dist/components/Mermaid/mermaid.theme.d.ts +2 -15
  102. package/dist/components/MetadataList/metadataList.theme.d.ts +2 -97
  103. package/dist/components/Meter/meter.theme.d.ts +2 -111
  104. package/dist/components/MiniCalendar/miniCalendar.theme.d.ts +2 -71
  105. package/dist/components/NetworkIndicator/networkIndicator.theme.d.ts +2 -41
  106. package/dist/components/Overlay/overlay.theme.d.ts +2 -92
  107. package/dist/components/PageShell/pageShell.theme.d.ts +2 -36
  108. package/dist/components/Pagination/pagination.theme.d.ts +2 -108
  109. package/dist/components/Popover/popover.theme.d.ts +2 -40
  110. package/dist/components/PopupMenu/popupMenu.theme.d.ts +2 -4
  111. package/dist/components/ProgressCircle/progressCircle.theme.d.ts +2 -22
  112. package/dist/components/QRCode/qrCode.theme.d.ts +2 -19
  113. package/dist/components/Rating/rating.theme.d.ts +2 -37
  114. package/dist/components/Resizable/resizable.theme.d.ts +2 -65
  115. package/dist/components/RichTextInput/richTextInput.theme.d.ts +2 -167
  116. package/dist/components/ScrollArea/scrollArea.theme.d.ts +2 -15
  117. package/dist/components/SegmentedControl/segmentedControl.theme.d.ts +2 -76
  118. package/dist/components/SelectionMenu/selectionMenu.theme.d.ts +2 -5
  119. package/dist/components/Separator/separator.theme.d.ts +2 -33
  120. package/dist/components/Sidebar/SidebarAction.svelte +2 -2
  121. package/dist/components/Sidebar/SidebarActivityBar.svelte +3 -3
  122. package/dist/components/Sidebar/SidebarGroup.svelte +6 -6
  123. package/dist/components/Sidebar/SidebarMenuButton.svelte +15 -18
  124. package/dist/components/Sidebar/SidebarMenuItem.svelte +15 -21
  125. package/dist/components/Sidebar/SidebarMenuSubItem.svelte +5 -6
  126. package/dist/components/Sidebar/SidebarPanel.svelte +3 -6
  127. package/dist/components/Sidebar/SidebarTreeNode.svelte +2 -2
  128. package/dist/components/Sidebar/sidebar.theme.d.ts +86 -540
  129. package/dist/components/Sidebar/sidebar.theme.js +69 -67
  130. package/dist/components/Skeleton/skeleton.theme.d.ts +2 -14
  131. package/dist/components/SortableList/sortableList.theme.d.ts +2 -43
  132. package/dist/components/Spinner/spinner.theme.d.ts +2 -41
  133. package/dist/components/SpinnerText/spinnerText.theme.d.ts +2 -49
  134. package/dist/components/Stack/stack.theme.d.ts +2 -12
  135. package/dist/components/Stat/stat.theme.d.ts +2 -132
  136. package/dist/components/Stepper/stepper.theme.d.ts +2 -22
  137. package/dist/components/Tabbar/tabbar.theme.d.ts +2 -110
  138. package/dist/components/Table/table.theme.d.ts +2 -42
  139. package/dist/components/TableOfContents/tableOfContents.theme.d.ts +2 -28
  140. package/dist/components/Tabs/tabs.theme.d.ts +2 -20
  141. package/dist/components/Theme/Theme.svelte +4 -4
  142. package/dist/components/Theme/theme.designTokens.d.ts +10 -0
  143. package/dist/components/Theme/theme.designTokens.js +14 -1
  144. package/dist/components/Theme/theme.state.svelte.js +3 -3
  145. package/dist/components/Timeline/timeline.theme.d.ts +2 -226
  146. package/dist/components/Toast/toast.theme.d.ts +2 -236
  147. package/dist/components/ToggleButton/toggleButton.theme.d.ts +2 -57
  148. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +2 -9
  149. package/dist/components/ToggleMenu/toggleMenu.theme.d.ts +2 -7
  150. package/dist/components/Tooltip/tooltip.theme.d.ts +2 -25
  151. package/dist/components/Tree/tree.theme.d.ts +2 -7
  152. package/dist/components/VideoPlayer/videoPlayer.theme.d.ts +2 -145
  153. package/dist/generated/componentContract.d.ts +1 -1
  154. package/dist/generated/componentContract.js +2 -0
  155. package/dist/generated/componentMcpRegistry.d.ts +3 -3
  156. package/dist/tailwind/colors.js +7 -1
  157. package/dist/tailwind/spacing.d.ts +13 -0
  158. package/dist/tailwind/spacing.js +5 -2
  159. package/dist/utils/cva/cva.mcp.d.ts +1 -1
  160. package/dist/utils/cva/cva.mcp.js +1 -1
  161. package/dist/utils/cva/index.d.ts +1 -1
  162. package/dist/utils/cva/theme.d.ts +36 -1
  163. package/dist/utils/cva/theme.js +25 -2
  164. package/package.json +1 -1
@@ -151,7 +151,7 @@ export declare const setSegmentedControlTheme: (theme: InferComponentTheme<{
151
151
  };
152
152
  }> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
153
153
  }>) => void;
154
- export declare const useSegmentedControlTheme: (theme?: InferComponentTheme<{
154
+ export declare const useSegmentedControlTheme: import("../../utils/cva/theme.js").UseComponentTheme<{
155
155
  root: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
156
156
  size: {
157
157
  small: string;
@@ -225,78 +225,4 @@ export declare const useSegmentedControlTheme: (theme?: InferComponentTheme<{
225
225
  info: string;
226
226
  };
227
227
  }> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
228
- }> | undefined) => {
229
- root: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
230
- size: {
231
- small: string;
232
- normal: string;
233
- large: string;
234
- };
235
- variant: {
236
- normal: string;
237
- pill: string;
238
- };
239
- disabled: {
240
- true: string;
241
- false: string;
242
- };
243
- }> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
244
- item: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
245
- size: {
246
- small: string;
247
- normal: string;
248
- large: string;
249
- };
250
- variant: {
251
- normal: string;
252
- pill: string;
253
- };
254
- color: {
255
- primary: string;
256
- secondary: string;
257
- neutral: string;
258
- danger: string;
259
- success: string;
260
- warning: string;
261
- info: string;
262
- };
263
- selected: {
264
- true: string;
265
- false: string;
266
- };
267
- disabled: {
268
- true: string;
269
- false: string;
270
- };
271
- }> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
272
- indicator: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
273
- variant: {
274
- normal: string;
275
- pill: string;
276
- };
277
- color: {
278
- primary: string;
279
- secondary: string;
280
- neutral: string;
281
- danger: string;
282
- success: string;
283
- warning: string;
284
- info: string;
285
- };
286
- }> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
287
- staticIndicator: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
288
- variant: {
289
- normal: string;
290
- pill: string;
291
- };
292
- color: {
293
- primary: string;
294
- secondary: string;
295
- neutral: string;
296
- danger: string;
297
- success: string;
298
- warning: string;
299
- info: string;
300
- };
301
- }> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
302
- };
228
+ }>;
@@ -9,10 +9,7 @@ export declare const setSelectionMenuTheme: (theme: InferComponentTheme<{
9
9
  popover: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
10
10
  content: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
11
11
  }>) => void;
12
- export declare const useSelectionMenuTheme: (theme?: InferComponentTheme<{
12
+ export declare const useSelectionMenuTheme: import("../../utils/cva/theme.js").UseComponentTheme<{
13
13
  popover: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
14
14
  content: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
15
- }> | undefined) => {
16
- popover: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
17
- content: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
18
- };
15
+ }>;
@@ -65,7 +65,7 @@ export declare const setSeparatorTheme: (theme: InferComponentTheme<{
65
65
  };
66
66
  }> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
67
67
  }>) => void;
68
- export declare const useSeparatorTheme: (theme?: InferComponentTheme<{
68
+ export declare const useSeparatorTheme: import("../../utils/cva/theme.js").UseComponentTheme<{
69
69
  root: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
70
70
  orientation: {
71
71
  horizontal: string;
@@ -96,35 +96,4 @@ export declare const useSeparatorTheme: (theme?: InferComponentTheme<{
96
96
  vertical: string;
97
97
  };
98
98
  }> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
99
- }> | undefined) => {
100
- root: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
101
- orientation: {
102
- horizontal: string;
103
- vertical: string;
104
- };
105
- align: {
106
- start: string;
107
- center: string;
108
- end: string;
109
- };
110
- line: {
111
- true: string;
112
- false: string;
113
- };
114
- color: {
115
- primary: string;
116
- secondary: string;
117
- neutral: string;
118
- danger: string;
119
- success: string;
120
- warning: string;
121
- info: string;
122
- };
123
- }> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
124
- label: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
125
- orientation: {
126
- horizontal: string;
127
- vertical: string;
128
- };
129
- }> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
130
- };
99
+ }>;
@@ -37,7 +37,7 @@
37
37
  {#snippet trigger(popover)}
38
38
  <button
39
39
  type="button"
40
- class={classes.actionTrigger({ componentSize: size })}
40
+ class={classes.actionTrigger({ size })}
41
41
  aria-label={actionLabel}
42
42
  aria-expanded={popover.isOpen}
43
43
  aria-haspopup="menu"
@@ -53,7 +53,7 @@
53
53
  {:else}
54
54
  <button
55
55
  type="button"
56
- class={classes.actionTrigger({ componentSize: size })}
56
+ class={classes.actionTrigger({ size })}
57
57
  aria-label={actionLabel}
58
58
  onclick={(event) => action.onclick?.(event, api)}
59
59
  >
@@ -108,7 +108,7 @@
108
108
  data-slot="sidebar-activity-bar-badge"
109
109
  data-color={resolvedColor}
110
110
  aria-hidden="true"
111
- class={classes.activityBarBadge({ componentSize: size, dot: isDot(item.badge) })}
111
+ class={classes.activityBarBadge({ size, dot: isDot(item.badge) })}
112
112
  >
113
113
  {#if typeof item.badge === 'number'}
114
114
  {item.badge}
@@ -134,7 +134,7 @@
134
134
  aria-label={accessibleName(item)}
135
135
  aria-disabled={item.disabled || undefined}
136
136
  class={classes.activityBarItem({
137
- componentSize: size,
137
+ size,
138
138
  density,
139
139
  active: !!item.isActive,
140
140
  disabled: !!item.disabled
@@ -158,7 +158,7 @@
158
158
  aria-label={accessibleName(item)}
159
159
  disabled={item.disabled || undefined}
160
160
  class={classes.activityBarItem({
161
- componentSize: size,
161
+ size,
162
162
  density,
163
163
  active: !!item.isActive,
164
164
  disabled: !!item.disabled
@@ -135,7 +135,7 @@
135
135
  <button
136
136
  bind:this={labelRef}
137
137
  type="button"
138
- class={classes.groupLabel({ interactive: true, componentSize: size, density })}
138
+ class={classes.groupLabel({ interactive: true, size, density })}
139
139
  disabled={isIconCollapsed || undefined}
140
140
  inert={isIconCollapsed ? true : undefined}
141
141
  aria-hidden={isIconCollapsed ? 'true' : undefined}
@@ -156,13 +156,13 @@
156
156
  inert={isIconCollapsed ? true : undefined}
157
157
  aria-hidden={isIconCollapsed ? 'true' : undefined}
158
158
  class={classes.groupAction({
159
- componentSize: size,
159
+ size,
160
160
  density,
161
161
  hasToggle: true
162
162
  })}
163
163
  >
164
164
  {#each actions as action, index (index)}
165
- <div class={classes.actionSlot({ componentSize: actionSize(action) })}>
165
+ <div class={classes.actionSlot({ size: actionSize(action) })}>
166
166
  <SidebarAction {action} {api} size={actionSize(action)} {theme} />
167
167
  </div>
168
168
  {/each}
@@ -183,7 +183,7 @@
183
183
  data-slot="sidebar-group-label"
184
184
  data-sidebar="group-label"
185
185
  aria-hidden={isIconCollapsed ? 'true' : undefined}
186
- class={classes.groupLabel({ componentSize: size, density })}
186
+ class={classes.groupLabel({ size, density })}
187
187
  >
188
188
  {group.label}
189
189
  </div>
@@ -195,10 +195,10 @@
195
195
  data-sidebar="group-action"
196
196
  inert={isIconCollapsed ? true : undefined}
197
197
  aria-hidden={isIconCollapsed ? 'true' : undefined}
198
- class={classes.groupAction({ componentSize: size, density, hasToggle: false })}
198
+ class={classes.groupAction({ size, density, hasToggle: false })}
199
199
  >
200
200
  {#each actions as action, index (index)}
201
- <div class={classes.actionSlot({ componentSize: actionSize(action) })}>
201
+ <div class={classes.actionSlot({ size: actionSize(action) })}>
202
202
  <SidebarAction {action} {api} size={actionSize(action)} {theme} />
203
203
  </div>
204
204
  {/each}
@@ -61,6 +61,8 @@
61
61
  const classes = $derived(useSidebarTheme(theme));
62
62
  const compact = $derived(variant === 'compact');
63
63
  const brand = $derived(variant === 'brand');
64
+ // The brand row is the tall two-line row; `compact` drops it to a normal menu row.
65
+ const rowSize = $derived(compact ? 'normal' : 'large');
64
66
  // A descriptor is an object that is neither a snippet nor a string: it becomes a real control
65
67
  // beside the row, because a button cannot be nested inside a button.
66
68
  const trailingAction = $derived<SidebarMenuActionDescriptor | undefined>(
@@ -88,9 +90,9 @@
88
90
  );
89
91
  const buttonClass = $derived(
90
92
  classes.menuButton({
91
- componentSize: size,
93
+ size,
92
94
  density,
93
- size: compact ? 'default' : 'lg',
95
+ itemSize: rowSize,
94
96
  className: [
95
97
  compact && 'w-fit group-data-[collapsible=icon]:w-full',
96
98
  trailingAction && 'min-w-0 flex-1 group-data-[collapsible=icon]:flex-none',
@@ -119,7 +121,7 @@
119
121
 
120
122
  {#snippet media()}
121
123
  {#if avatar}
122
- <div class={classes.avatar({ componentSize: size, className: mediaClass })}>
124
+ <div class={classes.avatar({ size, className: mediaClass })}>
123
125
  {#if avatar.src && !avatarImageFailed}
124
126
  <img
125
127
  src={avatar.src}
@@ -134,8 +136,8 @@
134
136
  {:else if icon}
135
137
  <div
136
138
  class={classes.media({
137
- size: compact ? 'compact' : 'default',
138
- componentSize: size,
139
+ itemSize: rowSize,
140
+ size,
139
141
  className: mediaClass
140
142
  })}
141
143
  >
@@ -151,14 +153,14 @@
151
153
  <div class={classes.menuLabel({ className: 'flex flex-col gap-0.5 leading-none' })}>
152
154
  <span class="truncate font-medium">{title}</span>
153
155
  {#if subtitle}
154
- <span class={classes.menuSecondary({ componentSize: size })}>{subtitle}</span>
156
+ <span class={classes.menuSecondary({ size })}>{subtitle}</span>
155
157
  {/if}
156
158
  </div>
157
159
  {:else}
158
160
  <div class={classes.menuLabel({ className: 'grid text-left leading-tight' })}>
159
161
  <span class="truncate font-medium">{title}</span>
160
162
  {#if subtitle}
161
- <span class={classes.menuSecondary({ componentSize: size })}>{subtitle}</span>
163
+ <span class={classes.menuSecondary({ size })}>{subtitle}</span>
162
164
  {/if}
163
165
  </div>
164
166
  {/if}
@@ -171,7 +173,7 @@
171
173
  <SidebarIcon
172
174
  icon={resolvedTrailing}
173
175
  class={classes.menuTrailing({
174
- componentSize: size,
176
+ size,
175
177
  className: compact ? 'opacity-50' : undefined
176
178
  })}
177
179
  />
@@ -184,7 +186,7 @@
184
186
  <div class="grid min-w-0 flex-1 leading-tight">
185
187
  <span class="text-neutral truncate font-medium">{title}</span>
186
188
  {#if subtitle}
187
- <span class={classes.menuSecondary({ componentSize: size })}>{subtitle}</span>
189
+ <span class={classes.menuSecondary({ size })}>{subtitle}</span>
188
190
  {/if}
189
191
  </div>
190
192
  </div>
@@ -206,7 +208,7 @@
206
208
  <button
207
209
  type="button"
208
210
  data-slot="sidebar-menu-button"
209
- data-size={compact ? 'default' : 'lg'}
211
+ data-size={rowSize}
210
212
  class={buttonClass}
211
213
  aria-expanded={popover.isOpen}
212
214
  aria-haspopup="menu"
@@ -220,12 +222,7 @@
220
222
  </PopupMenu>
221
223
  {:else if href}
222
224
  <!-- eslint-disable svelte/no-navigation-without-resolve -- Package consumers supply URLs; library links cannot depend on SvelteKit routing. -->
223
- <a
224
- {href}
225
- data-slot="sidebar-menu-button"
226
- data-size={compact ? 'default' : 'lg'}
227
- class={buttonClass}
228
- >
225
+ <a {href} data-slot="sidebar-menu-button" data-size={rowSize} class={buttonClass}>
229
226
  {@render buttonInner()}
230
227
  </a>
231
228
  <!-- eslint-enable svelte/no-navigation-without-resolve -->
@@ -234,7 +231,7 @@
234
231
  type="button"
235
232
  onclick={(event) => onclick?.(event, api as SidebarApi)}
236
233
  data-slot="sidebar-menu-button"
237
- data-size={compact ? 'default' : 'lg'}
234
+ data-size={rowSize}
238
235
  class={buttonClass}
239
236
  >
240
237
  {@render buttonInner()}
@@ -247,7 +244,7 @@
247
244
  {@render control()}
248
245
  <div
249
246
  class={classes.actionSlot({
250
- componentSize: trailingActionSize,
247
+ size: trailingActionSize,
251
248
  className: 'group-data-[collapsible=icon]:hidden'
252
249
  })}
253
250
  >
@@ -54,9 +54,6 @@
54
54
  const resolveMotion = useSidebarMotion();
55
55
  const slideTransition = slide();
56
56
  const collapseMotion = $derived(resolveMotion(undefined, { motion: theme?.motion }));
57
- const menuSize = $derived(
58
- item.size ? ({ small: 'sm', normal: 'default', large: 'lg' } as const)[item.size] : undefined
59
- );
60
57
  const t = $derived(useI18n());
61
58
  const isOpen = $derived(open ?? item.defaultOpen ?? false);
62
59
  // A hover peek renders the collapsed panel at full width, so icon-mode behaviour has to
@@ -108,7 +105,7 @@
108
105
  <span
109
106
  data-slot="sidebar-menu-icon"
110
107
  data-color={item.iconColor}
111
- class={classes.menuIcon({ variant: item.iconVariant ?? 'bare', componentSize: size })}
108
+ class={classes.menuIcon({ variant: item.iconVariant ?? 'bare', size })}
112
109
  >
113
110
  <SidebarIcon icon={item.icon} />
114
111
  </span>
@@ -122,15 +119,12 @@
122
119
  {#if collapseIcon === 'none'}
123
120
  <!-- No disclosure indicator. -->
124
121
  {:else if collapseIcon === 'plus-minus'}
125
- <SidebarIcon
126
- icon={isOpen ? minusIcon : plusIcon}
127
- class={classes.menuTrailing({ componentSize: size })}
128
- />
122
+ <SidebarIcon icon={isOpen ? minusIcon : plusIcon} class={classes.menuTrailing({ size })} />
129
123
  {:else}
130
124
  <SidebarIcon
131
125
  icon={caretRightIcon}
132
126
  class={classes.menuTrailing({
133
- componentSize: size,
127
+ size,
134
128
  className: ['transition-transform', isOpen && 'rotate-90']
135
129
  })}
136
130
  />
@@ -155,9 +149,9 @@
155
149
  class={classes.menuButton({
156
150
  variant: item.variant,
157
151
  activeVariant,
158
- componentSize: size,
152
+ size,
159
153
  density,
160
- size: menuSize,
154
+ itemSize: item.size,
161
155
  className: item.class
162
156
  })}
163
157
  {@attach tooltipContent ? tooltip({ content: tooltipContent, position: 'right' }) : undefined}
@@ -180,9 +174,9 @@
180
174
  class={classes.menuButton({
181
175
  variant: item.variant,
182
176
  activeVariant,
183
- componentSize: size,
177
+ size,
184
178
  density,
185
- size: menuSize,
179
+ itemSize: item.size,
186
180
  className: item.class
187
181
  })}
188
182
  {@attach tooltipContent ? tooltip({ content: tooltipContent, position: 'right' }) : undefined}
@@ -211,9 +205,9 @@
211
205
  class={classes.menuButton({
212
206
  variant: item.variant,
213
207
  activeVariant,
214
- componentSize: size,
208
+ size,
215
209
  density,
216
- size: menuSize,
210
+ itemSize: item.size,
217
211
  className: ['aria-expanded:bg-neutral-muted', item.class]
218
212
  })}
219
213
  aria-expanded={popover.isOpen}
@@ -226,7 +220,7 @@
226
220
  onclick={() => popover.toggle()}
227
221
  >
228
222
  {@render entryContent()}
229
- <SidebarIcon icon={dotsThreeIcon} class={classes.menuTrailing({ componentSize: size })} />
223
+ <SidebarIcon icon={dotsThreeIcon} class={classes.menuTrailing({ size })} />
230
224
  </button>
231
225
  {/snippet}
232
226
  </PopupMenu>
@@ -262,7 +256,7 @@
262
256
  bind:this={submenuTriggerRef}
263
257
  type="button"
264
258
  class={classes.menuAction({
265
- componentSize: size,
259
+ size,
266
260
  density,
267
261
  className: 'bg-neutral-muted right-auto left-1 data-[open=true]:rotate-90'
268
262
  })}
@@ -287,9 +281,9 @@
287
281
  class={classes.menuButton({
288
282
  variant: item.variant,
289
283
  activeVariant,
290
- componentSize: size,
284
+ size,
291
285
  density,
292
- size: menuSize,
286
+ itemSize: item.size,
293
287
  className: item.class
294
288
  })}
295
289
  aria-expanded={showSubmenu}
@@ -310,7 +304,7 @@
310
304
  <div
311
305
  data-slot="sidebar-menu-badge"
312
306
  data-sidebar="menu-badge"
313
- class={classes.badge({ componentSize: size, density })}
307
+ class={classes.badge({ size, density })}
314
308
  >
315
309
  {item.badge}
316
310
  </div>
@@ -322,7 +316,7 @@
322
316
  data-sidebar="menu-action"
323
317
  inert={isIconCollapsed ? true : undefined}
324
318
  aria-hidden={isIconCollapsed ? 'true' : undefined}
325
- class={classes.menuAction({ componentSize: size, density })}
319
+ class={classes.menuAction({ size, density })}
326
320
  >
327
321
  <SidebarAction action={item.action} {api} {size} {theme} />
328
322
  </div>
@@ -23,8 +23,7 @@
23
23
  } = $props();
24
24
 
25
25
  const classes = $derived(useSidebarTheme(theme));
26
- const componentSize = $derived(sub.size ?? size);
27
- const textSize = $derived(sub.size === 'small' ? 'sm' : 'md');
26
+ const subSize = $derived(sub.size ?? size);
28
27
 
29
28
  function handleClick(event: MouseEvent) {
30
29
  if (sub.disabled) {
@@ -48,13 +47,13 @@
48
47
  role={sub.disabled ? 'link' : undefined}
49
48
  data-slot="sidebar-menu-sub-button"
50
49
  data-sidebar="menu-sub-button"
51
- data-size={componentSize}
50
+ data-size={subSize}
52
51
  data-active={sub.isActive ? 'true' : undefined}
53
52
  data-active-variant={activeVariant}
54
53
  aria-current={sub.isActive ? 'page' : undefined}
55
54
  aria-disabled={sub.disabled || undefined}
56
55
  tabindex={sub.disabled ? -1 : undefined}
57
- class={classes.subButton({ componentSize, activeVariant, density, size: textSize })}
56
+ class={classes.subButton({ size: subSize, itemSize: sub.size, activeVariant, density })}
58
57
  onclick={handleClick}
59
58
  >
60
59
  <SidebarIcon icon={sub.icon} />
@@ -66,11 +65,11 @@
66
65
  type="button"
67
66
  data-slot="sidebar-menu-sub-button"
68
67
  data-sidebar="menu-sub-button"
69
- data-size={componentSize}
68
+ data-size={subSize}
70
69
  data-active={sub.isActive ? 'true' : undefined}
71
70
  data-active-variant={activeVariant}
72
71
  disabled={sub.disabled || undefined}
73
- class={classes.subButton({ componentSize, activeVariant, density, size: textSize })}
72
+ class={classes.subButton({ size: subSize, itemSize: sub.size, activeVariant, density })}
74
73
  onclick={handleClick}
75
74
  >
76
75
  <SidebarIcon icon={sub.icon} />
@@ -109,7 +109,7 @@
109
109
  <form
110
110
  bind:this={searchRef}
111
111
  data-slot="sidebar-search"
112
- class={classes.searchContainer({ componentSize: size, collapsed })}
112
+ class={classes.searchContainer({ size, collapsed })}
113
113
  inert={collapsed ? true : undefined}
114
114
  aria-hidden={collapsed ? 'true' : undefined}
115
115
  onsubmit={(event) => event.preventDefault()}
@@ -119,12 +119,9 @@
119
119
  aria-label={search.label ?? t.search}
120
120
  value={search.value}
121
121
  oninput={search.oninput}
122
- class={classes.search({ componentSize: size, density, className: search.class })}
123
- />
124
- <SidebarIcon
125
- icon={magnifyingGlassIcon}
126
- class={classes.searchIcon({ componentSize: size, density })}
122
+ class={classes.search({ size, density, className: search.class })}
127
123
  />
124
+ <SidebarIcon icon={magnifyingGlassIcon} class={classes.searchIcon({ size, density })} />
128
125
  </form>
129
126
  {/if}
130
127
  {#if headerMenu}
@@ -62,8 +62,8 @@
62
62
  const tooltipContent = $derived(showTooltip ? node.label : undefined);
63
63
  const rowClass = $derived(
64
64
  isSubNode
65
- ? classes.subButton({ componentSize: size, activeVariant, density })
66
- : classes.menuButton({ componentSize: size, activeVariant, density })
65
+ ? classes.subButton({ size, activeVariant, density })
66
+ : classes.menuButton({ size, activeVariant, density })
67
67
  );
68
68
  const rowSlot = $derived(isSubNode ? 'sidebar-menu-sub-button' : 'sidebar-menu-button');
69
69
  const rowData = $derived(isSubNode ? 'menu-sub-button' : 'menu-button');