entasis 0.5.0 → 0.7.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 (80) hide show
  1. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.js +1 -1
  2. package/dist/components/AIChat/aiChat.theme.js +2 -2
  3. package/dist/components/AIComposer/aiComposer.theme.js +2 -2
  4. package/dist/components/AIContext/aiContext.theme.js +2 -2
  5. package/dist/components/AIFilePreview/aiFilePreview.theme.js +1 -1
  6. package/dist/components/AIMarker/aiMarker.theme.js +2 -2
  7. package/dist/components/AIMessage/aiMessage.theme.js +2 -2
  8. package/dist/components/AIMessageActions/aiMessageActions.theme.js +1 -1
  9. package/dist/components/AIModelSelector/aiModelSelector.theme.js +1 -1
  10. package/dist/components/AIReasoning/aiReasoning.theme.js +1 -1
  11. package/dist/components/AISuggestion/aiSuggestion.theme.js +1 -1
  12. package/dist/components/AIThread/aiThread.theme.js +2 -2
  13. package/dist/components/AIThreadToc/aiThreadToc.theme.js +1 -1
  14. package/dist/components/AITool/aiTool.theme.js +2 -2
  15. package/dist/components/AudioPlayer/audioPlayer.theme.js +2 -2
  16. package/dist/components/Avatar/avatarGroup.theme.js +1 -1
  17. package/dist/components/Button/button.mcp.d.ts +1 -1
  18. package/dist/components/Button/button.mcp.js +2 -2
  19. package/dist/components/ButtonGroup/buttonGroup.theme.js +1 -1
  20. package/dist/components/DocumentViewer/documentViewer.theme.js +1 -1
  21. package/dist/components/EventCalendar/eventCalendar.theme.js +1 -1
  22. package/dist/components/Form/ColorInput/colorInput.theme.js +2 -2
  23. package/dist/components/Form/ColorPicker/colorPicker.theme.js +2 -2
  24. package/dist/components/Form/DateInput/dateInput.theme.js +2 -2
  25. package/dist/components/Form/DateSelector/dateSelector.theme.js +1 -1
  26. package/dist/components/Form/File/fileInput.theme.js +2 -2
  27. package/dist/components/Form/Form/form.state.svelte.d.ts +4 -4
  28. package/dist/components/Form/Form/visibility.d.ts +54 -54
  29. package/dist/components/Form/KeyValueInput/keyValueInput.theme.js +2 -2
  30. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +4 -4
  31. package/dist/components/Form/MultiStepForm/multiStepForm.theme.js +1 -1
  32. package/dist/components/Form/NumberInput/numberInput.theme.js +2 -2
  33. package/dist/components/Form/PasswordInput/passwordInput.theme.js +2 -2
  34. package/dist/components/Form/PhoneInput/phoneInput.theme.js +2 -2
  35. package/dist/components/Form/PinInput/pinInput.theme.js +2 -2
  36. package/dist/components/Form/TagsInput/tagsInput.theme.js +2 -2
  37. package/dist/components/Form/TextArea/textArea.theme.js +2 -2
  38. package/dist/components/Form/TextInput/textInput.theme.js +2 -2
  39. package/dist/components/Form/TimeInput/timeInput.theme.js +2 -2
  40. package/dist/components/Form/VoiceInput/voiceInput.theme.js +2 -2
  41. package/dist/components/GanttChart/ganttChart.theme.js +2 -2
  42. package/dist/components/Grid/gridSpan.theme.js +2 -2
  43. package/dist/components/MediaVolume/mediaVolumeControl.theme.js +1 -1
  44. package/dist/components/MenuBar/menuBar.theme.js +2 -2
  45. package/dist/components/MenuOption/menuOption.theme.js +2 -2
  46. package/dist/components/MetadataList/metadataList.theme.js +2 -2
  47. package/dist/components/MiniCalendar/miniCalendar.theme.js +2 -2
  48. package/dist/components/NetworkIndicator/networkIndicator.mcp.d.ts +1 -1
  49. package/dist/components/NetworkIndicator/networkIndicator.mcp.js +1 -1
  50. package/dist/components/NetworkIndicator/networkIndicator.theme.js +2 -2
  51. package/dist/components/QRCode/qrCode.theme.js +2 -2
  52. package/dist/components/RichTextInput/richTextInput.theme.js +2 -2
  53. package/dist/components/ScrollArea/scrollArea.theme.js +2 -2
  54. package/dist/components/SegmentedControl/segmentedControl.theme.js +1 -1
  55. package/dist/components/SelectionMenu/selectionMenu.theme.js +1 -1
  56. package/dist/components/Sidebar/Sidebar.svelte +8 -2
  57. package/dist/components/Sidebar/SidebarDesktopShell.svelte +3 -0
  58. package/dist/components/Sidebar/SidebarDesktopShell.svelte.d.ts +1 -0
  59. package/dist/components/Sidebar/SidebarMobileDrawer.svelte +3 -1
  60. package/dist/components/Sidebar/SidebarMobileDrawer.svelte.d.ts +1 -0
  61. package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
  62. package/dist/components/Sidebar/sidebar.mcp.js +24 -1
  63. package/dist/components/Sidebar/sidebar.props.d.ts +2 -0
  64. package/dist/components/Sidebar/sidebar.theme.d.ts +30 -0
  65. package/dist/components/Sidebar/sidebar.theme.js +46 -43
  66. package/dist/components/SortableList/sortableList.theme.js +2 -2
  67. package/dist/components/SpinnerText/spinnerText.mcp.d.ts +1 -1
  68. package/dist/components/SpinnerText/spinnerText.mcp.js +1 -1
  69. package/dist/components/SpinnerText/spinnerText.theme.js +2 -2
  70. package/dist/components/ToggleButton/toggleButton.theme.js +1 -1
  71. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +1 -1
  72. package/dist/components/ToggleMenu/toggleMenu.theme.js +2 -2
  73. package/dist/components/VideoPlayer/videoPlayer.theme.js +2 -2
  74. package/dist/generated/componentMcpRegistry.d.ts +5 -5
  75. package/dist/tailwind/global.js +4 -1
  76. package/dist/tailwind/theme.mcp.d.ts +1 -1
  77. package/dist/tailwind/theme.mcp.js +1 -1
  78. package/dist/utils/cva/merge.d.ts +108 -0
  79. package/dist/utils/cva/merge.js +6 -2
  80. package/package.json +1 -1
@@ -29,6 +29,11 @@ export declare const sidebarTheme: {
29
29
  normal: string;
30
30
  large: string;
31
31
  };
32
+ iconSize: {
33
+ small: string;
34
+ normal: string;
35
+ large: string;
36
+ };
32
37
  density: {
33
38
  compact: string;
34
39
  normal: string;
@@ -412,6 +417,11 @@ export declare const sidebarTheme: {
412
417
  normal: string;
413
418
  large: string;
414
419
  };
420
+ iconSize: {
421
+ small: string;
422
+ normal: string;
423
+ large: string;
424
+ };
415
425
  density: {
416
426
  compact: string;
417
427
  normal: string;
@@ -490,6 +500,11 @@ export declare const setSidebarTheme: (theme: InferComponentTheme<{
490
500
  normal: string;
491
501
  large: string;
492
502
  };
503
+ iconSize: {
504
+ small: string;
505
+ normal: string;
506
+ large: string;
507
+ };
493
508
  density: {
494
509
  compact: string;
495
510
  normal: string;
@@ -873,6 +888,11 @@ export declare const setSidebarTheme: (theme: InferComponentTheme<{
873
888
  normal: string;
874
889
  large: string;
875
890
  };
891
+ iconSize: {
892
+ small: string;
893
+ normal: string;
894
+ large: string;
895
+ };
876
896
  density: {
877
897
  compact: string;
878
898
  normal: string;
@@ -949,6 +969,11 @@ export declare const useSidebarTheme: import("../../utils/cva/theme.js").UseComp
949
969
  normal: string;
950
970
  large: string;
951
971
  };
972
+ iconSize: {
973
+ small: string;
974
+ normal: string;
975
+ large: string;
976
+ };
952
977
  density: {
953
978
  compact: string;
954
979
  normal: string;
@@ -1332,6 +1357,11 @@ export declare const useSidebarTheme: import("../../utils/cva/theme.js").UseComp
1332
1357
  normal: string;
1333
1358
  large: string;
1334
1359
  };
1360
+ iconSize: {
1361
+ small: string;
1362
+ normal: string;
1363
+ large: string;
1364
+ };
1335
1365
  density: {
1336
1366
  compact: string;
1337
1367
  normal: string;
@@ -19,10 +19,14 @@ const activeVariants = {
19
19
  // The `--sidebar-*` properties are INTERNAL: one `size` step publishes the icon, media and
20
20
  // compact-media dimensions the rows read back, so every part scales together. A consumer
21
21
  // changes `size`, never one of these properties.
22
+ // Icon and leading-media sizes. `size` sets them by default; `iconSize`, declared after it on the
23
+ // panel parts, publishes the same variables and wins when a consumer sets it on its own.
22
24
  const sidebarSizeVariables = {
23
- small: '[--sidebar-icon-size:0.875rem] [--sidebar-media-size:1.75rem] [--sidebar-compact-media-size:1rem]',
24
- normal: '[--sidebar-icon-size:1rem] [--sidebar-media-size:2rem] [--sidebar-compact-media-size:1.25rem]',
25
- large: '[--sidebar-icon-size:1.25rem] [--sidebar-media-size:2.25rem] [--sidebar-compact-media-size:1.5rem]'
25
+ // The same tokens the rest of the kit sizes icons and media by, so a `spacing` retune still
26
+ // reaches the sidebar; `iconSize` simply republishes them one step up or down.
27
+ small: '[--sidebar-icon-size:var(--icon-size-sm)] [--sidebar-media-size:calc(var(--spacing)*7)] [--sidebar-compact-media-size:calc(var(--spacing)*4)]',
28
+ normal: '[--sidebar-icon-size:var(--icon-size-md)] [--sidebar-media-size:calc(var(--spacing)*8)] [--sidebar-compact-media-size:calc(var(--spacing)*5)]',
29
+ large: '[--sidebar-icon-size:var(--icon-size-lg)] [--sidebar-media-size:calc(var(--spacing)*9)] [--sidebar-compact-media-size:calc(var(--spacing)*6)]'
26
30
  };
27
31
  const sidebarDensityVariables = {
28
32
  // The same spacing tokens the group's `p-sm/md/lg` resolve to, so anything positioned from
@@ -63,6 +67,7 @@ const defaultPanel = cva({
63
67
  positioned: 'w-full'
64
68
  },
65
69
  size: sidebarSizeVariables,
70
+ iconSize: sidebarSizeVariables,
66
71
  density: sidebarDensityVariables
67
72
  },
68
73
  compoundVariants: [
@@ -120,16 +125,16 @@ const defaultGroup = cva({
120
125
  }
121
126
  });
122
127
  const defaultGroupLabel = cva({
123
- base: 'text-neutral/70 flex shrink-0 items-center rounded-sm font-medium outline-none transition-[height,margin,padding,opacity] duration-normal ease-linear group-data-[collapsible=icon]:opacity-0 disabled:pointer-events-none [&>svg]:shrink-0',
128
+ base: 'text-neutral/70 flex shrink-0 items-center rounded-sm font-medium outline-none transition-[height,margin,padding,opacity] duration-normal ease-linear group-data-[collapsible=icon]:opacity-0 disabled:pointer-events-none [&>svg]:shrink-0 [&>svg]:size-[var(--sidebar-icon-size)]',
124
129
  variants: {
125
130
  interactive: {
126
131
  true: 'state-layer hover:text-neutral focus-visible:ring-2 focus-visible:ring-focus/50',
127
132
  false: null
128
133
  },
129
134
  size: {
130
- small: 'h-control-sm text-xs group-data-[collapsible=icon]:-mt-layout-md [&>svg]:size-icon-sm',
131
- normal: 'h-control-md text-sm group-data-[collapsible=icon]:-mt-layout-lg [&>svg]:size-icon-md',
132
- large: 'h-control-lg text-sm group-data-[collapsible=icon]:-mt-layout-lg [&>svg]:size-icon-lg'
135
+ small: 'h-control-sm text-xs group-data-[collapsible=icon]:-mt-layout-md',
136
+ normal: 'h-control-md text-sm group-data-[collapsible=icon]:-mt-layout-lg',
137
+ large: 'h-control-lg text-sm group-data-[collapsible=icon]:-mt-layout-lg'
133
138
  },
134
139
  density: {
135
140
  compact: 'px-md',
@@ -190,7 +195,7 @@ const defaultMenu = cva({
190
195
  }
191
196
  });
192
197
  const defaultMenuButton = cva({
193
- base: 'state-layer peer/menu-button group/menu-button flex w-full items-center overflow-hidden rounded-sm text-left outline-none transition-[background,color,width,height,padding,margin,border-radius] duration-normal ease-linear hover:text-neutral focus-visible:ring-2 focus-visible:ring-focus/50 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:font-medium group-has-data-[sidebar=menu-action]/menu-item:pr-layout-lg group-data-[collapsible=icon]:mx-[calc((var(--sidebar-width-icon)-var(--sidebar-icon-button-width))/2-var(--sidebar-group-padding))] group-data-[collapsible=icon]:w-[var(--sidebar-icon-button-width)] group-data-[collapsible=icon]:rounded-none group-data-[variant=admin]:group-data-[collapsible=icon]:rounded-sm group-data-[variant=framed]:group-data-[collapsible=icon]:rounded-sm group-data-[variant=inset]:group-data-[collapsible=icon]:rounded-sm group-data-[collapsible=icon]:![padding-inline:calc((var(--sidebar-icon-button-width)-var(--sidebar-icon-size))/2)] group-data-[collapsible=icon]:ring-inset [&_svg]:shrink-0',
198
+ base: 'state-layer peer/menu-button group/menu-button flex w-full items-center overflow-hidden rounded-sm text-left outline-none transition-[background,color,width,height,padding,margin,border-radius] duration-normal ease-linear hover:text-neutral focus-visible:ring-2 focus-visible:ring-focus/50 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:font-medium group-has-data-[sidebar=menu-action]/menu-item:pr-layout-lg group-data-[collapsible=icon]:mx-[calc((var(--sidebar-width-icon)-var(--sidebar-icon-button-width))/2-var(--sidebar-group-padding))] group-data-[collapsible=icon]:w-[var(--sidebar-icon-button-width)] group-data-[collapsible=icon]:rounded-none group-data-[variant=admin]:group-data-[collapsible=icon]:rounded-sm group-data-[variant=framed]:group-data-[collapsible=icon]:rounded-sm group-data-[variant=inset]:group-data-[collapsible=icon]:rounded-sm group-data-[collapsible=icon]:![padding-inline:calc((var(--sidebar-icon-button-width)-var(--sidebar-icon-size))/2)] group-data-[collapsible=icon]:ring-inset [&_svg]:shrink-0 [&_svg]:size-[var(--sidebar-icon-size)]',
194
199
  variants: {
195
200
  activeVariant: activeVariants,
196
201
  variant: {
@@ -198,9 +203,9 @@ const defaultMenuButton = cva({
198
203
  outline: 'border border-neutral-muted bg-surface'
199
204
  },
200
205
  size: {
201
- small: 'text-xs leading-4 [&_svg]:size-icon-sm',
202
- normal: 'text-sm leading-5 [&_svg]:size-icon-md',
203
- large: 'text-base leading-6 [&_svg]:size-icon-lg'
206
+ small: 'text-xs leading-4',
207
+ normal: 'text-sm leading-5',
208
+ large: 'text-base leading-6'
204
209
  },
205
210
  density: {
206
211
  compact: 'gap-sm px-sm',
@@ -250,12 +255,12 @@ const defaultMenuSecondary = cva({
250
255
  }
251
256
  });
252
257
  const defaultMenuTrailing = cva({
253
- base: 'ml-auto shrink-0 opacity-100 transition-[opacity,transform] duration-normal ease-standard group-data-[collapsible=icon]:pointer-events-none group-data-[collapsible=icon]:translate-x-1 group-data-[collapsible=icon]:opacity-0',
258
+ base: 'ml-auto shrink-0 opacity-100 transition-[opacity,transform] duration-normal ease-standard group-data-[collapsible=icon]:pointer-events-none group-data-[collapsible=icon]:translate-x-1 group-data-[collapsible=icon]:opacity-0 [&>svg]:size-[var(--sidebar-icon-size)]',
254
259
  variants: {
255
260
  size: {
256
- small: '[&>svg]:size-icon-sm',
257
- normal: '[&>svg]:size-icon-md',
258
- large: '[&>svg]:size-icon-lg'
261
+ small: '',
262
+ normal: '',
263
+ large: ''
259
264
  }
260
265
  },
261
266
  defaultVariants: {
@@ -289,13 +294,13 @@ const defaultTreeSubMenu = cva({
289
294
  }
290
295
  });
291
296
  const defaultSubButton = cva({
292
- base: 'state-layer text-neutral/70 hover:text-neutral flex min-w-0 -translate-x-px items-center overflow-hidden rounded-sm outline-none transition-[background,color,height,padding] duration-normal ease-linear focus-visible:ring-2 focus-visible:ring-focus/50 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0',
297
+ base: 'state-layer text-neutral/70 hover:text-neutral flex min-w-0 -translate-x-px items-center overflow-hidden rounded-sm outline-none transition-[background,color,height,padding] duration-normal ease-linear focus-visible:ring-2 focus-visible:ring-focus/50 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0 [&>svg]:size-[var(--sidebar-icon-size)]',
293
298
  variants: {
294
299
  activeVariant: activeVariants,
295
300
  size: {
296
- small: 'h-6 text-xs leading-4 [&>svg]:size-icon-sm',
297
- normal: 'h-control-sm text-sm leading-5 [&>svg]:size-icon-md',
298
- large: 'h-control-md text-base leading-6 [&>svg]:size-icon-lg'
301
+ small: 'h-6 text-xs leading-4',
302
+ normal: 'h-control-sm text-sm leading-5',
303
+ large: 'h-control-md text-base leading-6'
299
304
  },
300
305
  density: {
301
306
  compact: 'gap-sm px-md',
@@ -316,12 +321,12 @@ const defaultSubButton = cva({
316
321
  }
317
322
  });
318
323
  const defaultMenuAction = cva({
319
- base: 'state-layer text-neutral hover:text-neutral peer-hover/menu-button:text-neutral absolute top-1/2 flex aspect-square -translate-y-1/2 items-center justify-center rounded-sm p-0 opacity-100 outline-none transition group-data-[collapsible=icon]:hidden focus-visible:ring-2 focus-visible:ring-focus/50 md:opacity-0 group-focus-within/menu-row:opacity-100 group-hover/menu-row:opacity-100 has-[[aria-expanded=true]]:opacity-100 [&>svg]:shrink-0',
324
+ base: 'state-layer text-neutral hover:text-neutral peer-hover/menu-button:text-neutral absolute top-1/2 flex aspect-square -translate-y-1/2 items-center justify-center rounded-sm p-0 opacity-100 outline-none transition group-data-[collapsible=icon]:hidden focus-visible:ring-2 focus-visible:ring-focus/50 md:opacity-0 group-focus-within/menu-row:opacity-100 group-hover/menu-row:opacity-100 has-[[aria-expanded=true]]:opacity-100 [&>svg]:shrink-0 [&>svg]:size-[var(--sidebar-icon-size)]',
320
325
  variants: {
321
326
  size: {
322
- small: 'size-4.5 [&>svg]:size-icon-sm',
323
- normal: 'size-5 [&>svg]:size-icon-md',
324
- large: 'size-6 [&>svg]:size-icon-lg'
327
+ small: 'size-4.5',
328
+ normal: 'size-5',
329
+ large: 'size-6'
325
330
  },
326
331
  density: {
327
332
  compact: 'right-0.5',
@@ -337,12 +342,12 @@ const defaultMenuAction = cva({
337
342
  // One icon-only ghost button box. `size` follows the descriptor, defaulting to the Sidebar size,
338
343
  // so a group's `+` lands at row scale instead of at the group label's scale.
339
344
  const defaultActionSlot = cva({
340
- base: 'state-layer text-neutral hover:text-neutral flex aspect-square shrink-0 items-center justify-center rounded-sm p-0 outline-none transition focus-visible:ring-2 focus-visible:ring-focus/50 [&>svg]:shrink-0',
345
+ base: 'state-layer text-neutral hover:text-neutral flex aspect-square shrink-0 items-center justify-center rounded-sm p-0 outline-none transition focus-visible:ring-2 focus-visible:ring-focus/50 [&>svg]:shrink-0 [&>svg]:size-[var(--sidebar-icon-size)]',
341
346
  variants: {
342
347
  size: {
343
- small: 'h-control-sm [&>svg]:size-icon-sm',
344
- normal: 'h-control-md [&>svg]:size-icon-md',
345
- large: 'h-control-lg [&>svg]:size-icon-lg'
348
+ small: 'h-control-sm',
349
+ normal: 'h-control-md',
350
+ large: 'h-control-lg'
346
351
  }
347
352
  },
348
353
  defaultVariants: {
@@ -380,12 +385,12 @@ const defaultButtonRow = cva({
380
385
  base: 'flex w-full min-w-0 items-center gap-micro'
381
386
  });
382
387
  const defaultActionTrigger = cva({
383
- base: 'flex size-full items-center justify-center rounded-sm bg-transparent outline-none [&>svg]:shrink-0',
388
+ base: 'flex size-full items-center justify-center rounded-sm bg-transparent outline-none [&>svg]:shrink-0 [&>svg]:size-[var(--sidebar-icon-size)]',
384
389
  variants: {
385
390
  size: {
386
- small: '[&>svg]:size-icon-sm',
387
- normal: '[&>svg]:size-icon-md',
388
- large: '[&>svg]:size-icon-lg'
391
+ small: '',
392
+ normal: '',
393
+ large: ''
389
394
  }
390
395
  },
391
396
  defaultVariants: {
@@ -662,6 +667,7 @@ const defaultMobilePanel = cva({
662
667
  right: ''
663
668
  },
664
669
  size: sidebarSizeVariables,
670
+ iconSize: sidebarSizeVariables,
665
671
  density: sidebarDensityVariables
666
672
  },
667
673
  defaultVariants: {
@@ -674,8 +680,8 @@ const defaultMedia = cva({
674
680
  base: 'bg-neutral text-neutral-contrast flex aspect-square shrink-0 items-center justify-center rounded-sm',
675
681
  variants: {
676
682
  itemSize: {
677
- normal: 'text-xs',
678
- large: ''
683
+ normal: 'text-xs size-[var(--sidebar-compact-media-size)]',
684
+ large: `size-[var(--sidebar-media-size)] [&_svg]:size-[var(--sidebar-icon-size)]`
679
685
  },
680
686
  size: {
681
687
  small: '',
@@ -684,12 +690,9 @@ const defaultMedia = cva({
684
690
  }
685
691
  },
686
692
  compoundVariants: [
687
- { itemSize: 'large', size: 'small', class: 'size-7 [&_svg]:size-icon-sm' },
688
- { itemSize: 'large', size: 'normal', class: 'size-8 [&_svg]:size-icon-md' },
689
- { itemSize: 'large', size: 'large', class: 'size-9 [&_svg]:size-icon-lg' },
690
- { itemSize: 'normal', size: 'small', class: 'size-4 [&_svg]:size-icon-xs' },
691
- { itemSize: 'normal', size: 'normal', class: 'size-5 [&_svg]:size-icon-xs' },
692
- { itemSize: 'normal', size: 'large', class: 'size-6 [&_svg]:size-icon-sm' }
693
+ { itemSize: 'normal', size: 'small', class: '[&_svg]:size-icon-xs' },
694
+ { itemSize: 'normal', size: 'normal', class: '[&_svg]:size-icon-xs' },
695
+ { itemSize: 'normal', size: 'large', class: '[&_svg]:size-icon-sm' }
693
696
  ],
694
697
  defaultVariants: {
695
698
  itemSize: 'large',
@@ -697,12 +700,12 @@ const defaultMedia = cva({
697
700
  }
698
701
  });
699
702
  const defaultAvatar = cva({
700
- base: 'bg-neutral-muted text-neutral-muted-readable flex shrink-0 items-center justify-center overflow-hidden rounded-sm font-medium',
703
+ base: 'bg-neutral-muted text-neutral-muted-readable flex shrink-0 items-center justify-center overflow-hidden rounded-sm font-medium size-[var(--sidebar-media-size)]',
701
704
  variants: {
702
705
  size: {
703
- small: 'size-7 text-xs',
704
- normal: 'size-8 text-sm',
705
- large: 'size-9 text-sm'
706
+ small: 'text-xs',
707
+ normal: 'text-sm',
708
+ large: 'text-sm'
706
709
  }
707
710
  },
708
711
  defaultVariants: {
@@ -85,5 +85,5 @@ export const sortableListTheme = {
85
85
  handle: defaultHandle,
86
86
  empty: defaultEmpty
87
87
  };
88
- export const setSortableListTheme = setComponentTheme('sortableList');
89
- export const useSortableListTheme = useComponentTheme('sortableList', sortableListTheme);
88
+ export const setSortableListTheme = setComponentTheme('sortable-list');
89
+ export const useSortableListTheme = useComponentTheme('sortable-list', sortableListTheme);
@@ -1 +1 @@
1
- export declare const spinnerTextDescription = "\n# SpinnerText Component\n\nSpinnerText combines the existing Spinner with a stable-width sequence of loading messages. Messages cycle on a configurable delay and transition vertically or through a left-to-right reveal without shifting surrounding layout.\n\n## Import\n\n```svelte\n<script lang=\"ts\">\n\timport { SpinnerText } from 'entasis/spinner-text';\n</script>\n```\n\n## Basic usage\n\n```svelte\n<SpinnerText\n\ttexts={['Reading files', 'Building context', 'Preparing answer']}\n\tdelay={1800}\n\tshimmer\n/>\n```\n\n## Props\n\n- **texts**: `readonly string[]` (required) - Messages displayed in sequence. The first message is rendered during SSR.\n- **delay**: `number` (default: `2200`) - Milliseconds between message changes. Zero, negative, and non-finite values pause cycling.\n- **transition**: `'vertical' | 'reveal'` (default: `'vertical'`) - Moves the outgoing message down while the next enters from above, or replaces both through opposing left-to-right clip reveals.\n- **shimmer**: `boolean` (default: `false`) - Applies the Entasis shimmer utility to the active message.\n- **showSpinner**: `boolean` (default: `true`) - Shows or hides the leading Spinner.\n- **spinnerVariant**: `'default' | 'grid' | 'pulse' | 'puff' | 'lines' | 'circles'` (default: Theme `spinnerVariant`, then `'default'`) - Overrides the global spinner animation for this instance.\n- **spinner**: `Snippet<[SpinnerTextSpinnerPayload]>` - Replaces the default visual spinner. Receives the resolved `color`, `size`, and `variant`.\n- **size**: `'small' | 'normal' | 'large'` (default: `'normal'`) - Controls spinner dimensions, gap, text size, and line height.\n- **color**: `Colors` (default: `'neutral'`) - Semantic color applied to both spinner and text.\n- **label**: `string` (default: `'Loading'`) - Accessible fallback when `texts` is empty.\n- **ref**: `HTMLElement | null` (bindable) - Root status element.\n- **class**: `string` - Additional root classes.\n- **theme**: `SpinnerTextThemeProps` - Per-instance theme overrides.\n\nStandard Svelte attachments are spread onto the root status element.\n\n## Custom spinner\n\n```svelte\n<script lang=\"ts\">\n\timport { Spinner } from 'entasis/spinner';\n\timport { SpinnerText } from 'entasis/spinner-text';\n</script>\n\n<SpinnerText texts={['Thinking', 'Composing']} color=\"primary\">\n\t{#snippet spinner({ size, color })}\n\t\t<Spinner variant=\"circles\" decorative {size} {color} />\n\t{/snippet}\n</SpinnerText>\n```\n\n## Behavior\n\n- A root attachment owns the interval and restarts it when `texts` length or `delay` changes.\n- One or zero messages do not create an interval.\n- All messages occupy the same hidden CSS grid cell, so the component reserves the width of its longest message and does not resize on every transition.\n- The vertical transition uses the design system's configured duration and easing.\n- The reveal transition clips the outgoing text from the left while revealing the incoming text from the left.\n- Vertical uses 1.5 times the configured theme duration; reveal uses 2.5 times that duration. Both use the configured easing.\n- The default Spinner is visually reduced one step relative to the message line height. Custom spinner snippets retain full control over their dimensions.\n- Shimmer behavior remains owned by the existing global shimmer utility.\n- The default indicator delegates to Spinner and remains compatible with global spinner theme configuration.\n\n## Accessibility\n\n- The root uses `role=\"status\"`, `aria-live=\"polite\"`, and `aria-atomic=\"true\"`.\n- Visual transition layers and the spinner are hidden from assistive technology.\n- A single screen-reader-only message changes with the active text, avoiding duplicate announcements while outgoing and incoming visual layers overlap.\n- When `texts` is empty, `label` supplies the accessible status name.\n\n## Theme parts\n\n- **root** - Inline status wrapper, semantic color, and size-specific gap.\n- **spinner** - Default or custom spinner container.\n- **viewport** - Clipped text transition viewport.\n- **sizer** - Hidden grid that reserves the longest message width.\n- **sizerItem** - Individual hidden sizing message.\n- **message** - Active visual message and optional shimmer state.\n\n## Motion\n\n- **motion** theme slot, keyed by `mode`: the `vertical` slide runs on `slow`, the `reveal`\n wipe on `slower`. Only `duration` / `easing` are read; the geometry is fixed.\n- Ladder: `<Theme components={{ spinnerText: { motion } }}>` \u2192 `setSpinnerTextTheme({ motion })`\n \u2192 `theme.motion`. Reduced motion collapses it to 0 (the text swaps instantly).\n";
1
+ export declare const spinnerTextDescription = "\n# SpinnerText Component\n\nSpinnerText combines the existing Spinner with a stable-width sequence of loading messages. Messages cycle on a configurable delay and transition vertically or through a left-to-right reveal without shifting surrounding layout.\n\n## Import\n\n```svelte\n<script lang=\"ts\">\n\timport { SpinnerText } from 'entasis/spinner-text';\n</script>\n```\n\n## Basic usage\n\n```svelte\n<SpinnerText\n\ttexts={['Reading files', 'Building context', 'Preparing answer']}\n\tdelay={1800}\n\tshimmer\n/>\n```\n\n## Props\n\n- **texts**: `readonly string[]` (required) - Messages displayed in sequence. The first message is rendered during SSR.\n- **delay**: `number` (default: `2200`) - Milliseconds between message changes. Zero, negative, and non-finite values pause cycling.\n- **transition**: `'vertical' | 'reveal'` (default: `'vertical'`) - Moves the outgoing message down while the next enters from above, or replaces both through opposing left-to-right clip reveals.\n- **shimmer**: `boolean` (default: `false`) - Applies the Entasis shimmer utility to the active message.\n- **showSpinner**: `boolean` (default: `true`) - Shows or hides the leading Spinner.\n- **spinnerVariant**: `'default' | 'grid' | 'pulse' | 'puff' | 'lines' | 'circles'` (default: Theme `spinnerVariant`, then `'default'`) - Overrides the global spinner animation for this instance.\n- **spinner**: `Snippet<[SpinnerTextSpinnerPayload]>` - Replaces the default visual spinner. Receives the resolved `color`, `size`, and `variant`.\n- **size**: `'small' | 'normal' | 'large'` (default: `'normal'`) - Controls spinner dimensions, gap, text size, and line height.\n- **color**: `Colors` (default: `'neutral'`) - Semantic color applied to both spinner and text.\n- **label**: `string` (default: `'Loading'`) - Accessible fallback when `texts` is empty.\n- **ref**: `HTMLElement | null` (bindable) - Root status element.\n- **class**: `string` - Additional root classes.\n- **theme**: `SpinnerTextThemeProps` - Per-instance theme overrides.\n\nStandard Svelte attachments are spread onto the root status element.\n\n## Custom spinner\n\n```svelte\n<script lang=\"ts\">\n\timport { Spinner } from 'entasis/spinner';\n\timport { SpinnerText } from 'entasis/spinner-text';\n</script>\n\n<SpinnerText texts={['Thinking', 'Composing']} color=\"primary\">\n\t{#snippet spinner({ size, color })}\n\t\t<Spinner variant=\"circles\" decorative {size} {color} />\n\t{/snippet}\n</SpinnerText>\n```\n\n## Behavior\n\n- A root attachment owns the interval and restarts it when `texts` length or `delay` changes.\n- One or zero messages do not create an interval.\n- All messages occupy the same hidden CSS grid cell, so the component reserves the width of its longest message and does not resize on every transition.\n- The vertical transition uses the design system's configured duration and easing.\n- The reveal transition clips the outgoing text from the left while revealing the incoming text from the left.\n- Vertical uses 1.5 times the configured theme duration; reveal uses 2.5 times that duration. Both use the configured easing.\n- The default Spinner is visually reduced one step relative to the message line height. Custom spinner snippets retain full control over their dimensions.\n- Shimmer behavior remains owned by the existing global shimmer utility.\n- The default indicator delegates to Spinner and remains compatible with global spinner theme configuration.\n\n## Accessibility\n\n- The root uses `role=\"status\"`, `aria-live=\"polite\"`, and `aria-atomic=\"true\"`.\n- Visual transition layers and the spinner are hidden from assistive technology.\n- A single screen-reader-only message changes with the active text, avoiding duplicate announcements while outgoing and incoming visual layers overlap.\n- When `texts` is empty, `label` supplies the accessible status name.\n\n## Theme parts\n\n- **root** - Inline status wrapper, semantic color, and size-specific gap.\n- **spinner** - Default or custom spinner container.\n- **viewport** - Clipped text transition viewport.\n- **sizer** - Hidden grid that reserves the longest message width.\n- **sizerItem** - Individual hidden sizing message.\n- **message** - Active visual message and optional shimmer state.\n\n## Motion\n\n- **motion** theme slot, keyed by `mode`: the `vertical` slide runs on `slow`, the `reveal`\n wipe on `slower`. Only `duration` / `easing` are read; the geometry is fixed.\n- Ladder: `<Theme components={{ 'spinner-text': { motion } }}>` \u2192 `setSpinnerTextTheme({ motion })`\n \u2192 `theme.motion`. Reduced motion collapses it to 0 (the text swaps instantly).\n";
@@ -86,6 +86,6 @@ Standard Svelte attachments are spread onto the root status element.
86
86
 
87
87
  - **motion** theme slot, keyed by \`mode\`: the \`vertical\` slide runs on \`slow\`, the \`reveal\`
88
88
  wipe on \`slower\`. Only \`duration\` / \`easing\` are read; the geometry is fixed.
89
- - Ladder: \`<Theme components={{ spinnerText: { motion } }}>\` → \`setSpinnerTextTheme({ motion })\`
89
+ - Ladder: \`<Theme components={{ 'spinner-text': { motion } }}>\` → \`setSpinnerTextTheme({ motion })\`
90
90
  → \`theme.motion\`. Reduced motion collapses it to 0 (the text swaps instantly).
91
91
  `;
@@ -98,6 +98,6 @@ export const spinnerTextTheme = {
98
98
  sizerItem: defaultSizerItem,
99
99
  message: defaultMessage
100
100
  };
101
- export const setSpinnerTextTheme = setComponentTheme('spinnerText');
101
+ export const setSpinnerTextTheme = setComponentTheme('spinner-text');
102
102
  export const useSpinnerTextTheme = useComponentTheme('spinnerText', spinnerTextTheme);
103
- export const useSpinnerTextMotion = () => useComponentMotion('spinnerText', defaultSpinnerTextMotion);
103
+ export const useSpinnerTextMotion = () => useComponentMotion('spinner-text', defaultSpinnerTextMotion);
@@ -97,5 +97,5 @@ export const toggleButtonTheme = {
97
97
  prefix: defaultToggleButtonPrefix,
98
98
  suffix: defaultToggleButtonSuffix
99
99
  };
100
- export const setToggleButtonTheme = setComponentTheme('toggleButton');
100
+ export const setToggleButtonTheme = setComponentTheme('toggle-button');
101
101
  export const useToggleButtonTheme = useComponentTheme('toggleButton', toggleButtonTheme);
@@ -15,5 +15,5 @@ const defaultToggleButtonGroup = cva({
15
15
  export const toggleButtonGroupTheme = {
16
16
  root: defaultToggleButtonGroup
17
17
  };
18
- export const setToggleButtonGroupTheme = setComponentTheme('toggleButtonGroup');
18
+ export const setToggleButtonGroupTheme = setComponentTheme('toggle-button-group');
19
19
  export const useToggleButtonGroupTheme = useComponentTheme('toggleButtonGroup', toggleButtonGroupTheme);
@@ -18,5 +18,5 @@ export const toggleMenuTheme = {
18
18
  unit: defaultToggleMenuUnit,
19
19
  more: defaultToggleMenuMore
20
20
  };
21
- export const setToggleMenuTheme = setComponentTheme('toggleMenu');
22
- export const useToggleMenuTheme = useComponentTheme('toggleMenu', toggleMenuTheme);
21
+ export const setToggleMenuTheme = setComponentTheme('toggle-menu');
22
+ export const useToggleMenuTheme = useComponentTheme('toggle-menu', toggleMenuTheme);
@@ -314,5 +314,5 @@ export const videoPlayerTheme = {
314
314
  popoverPanel: defaultVideoPlayerPopoverPanel,
315
315
  volumePanel: defaultVideoPlayerVolumePanel
316
316
  };
317
- export const setVideoPlayerTheme = setComponentTheme('videoPlayer');
318
- export const useVideoPlayerTheme = useComponentTheme('videoPlayer', videoPlayerTheme);
317
+ export const setVideoPlayerTheme = setComponentTheme('video-player');
318
+ export const useVideoPlayerTheme = useComponentTheme('video-player', videoPlayerTheme);