@noxlovette/material 0.6.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 (176) hide show
  1. package/claude-skill/material-design/SKILL.md +5 -2
  2. package/claude-skill/material-design/references/accessibility-checklist.md +5 -0
  3. package/claude-skill/material-design/references/component-patterns.md +24 -3
  4. package/claude-skill/material-design/references/motion-guide.md +53 -11
  5. package/claude-skill/material-design/references/tokens-and-styles.md +4 -0
  6. package/dist/animation/TransitionPatterns.stories.svelte +50 -0
  7. package/dist/animation/containerTransform.js +10 -4
  8. package/dist/animation/reducedMotion.d.ts +2 -0
  9. package/dist/animation/reducedMotion.js +2 -0
  10. package/dist/animation/sharedAxisTransition.d.ts +20 -3
  11. package/dist/animation/sharedAxisTransition.js +67 -8
  12. package/dist/attachments/drag.d.ts +52 -0
  13. package/dist/attachments/drag.js +217 -0
  14. package/dist/attachments/index.d.ts +1 -0
  15. package/dist/attachments/index.js +1 -0
  16. package/dist/components/badge/theme.js +1 -1
  17. package/dist/components/buttons/button-group/theme.d.ts +1 -1
  18. package/dist/components/buttons/button-group/theme.js +1 -1
  19. package/dist/components/buttons/connected/theme.d.ts +1 -1
  20. package/dist/components/buttons/connected/theme.js +1 -1
  21. package/dist/components/buttons/split-button/SplitButton.svelte +1 -1
  22. package/dist/components/buttons/split-button/theme.d.ts +1 -1
  23. package/dist/components/buttons/split-button/theme.js +1 -1
  24. package/dist/components/buttons/theme.d.ts +1 -1
  25. package/dist/components/buttons/theme.js +3 -3
  26. package/dist/components/cards/theme.js +1 -1
  27. package/dist/components/chips/Chip.mdx +24 -11
  28. package/dist/components/chips/Chip.stories.svelte +10 -0
  29. package/dist/components/chips/Chip.svelte +58 -18
  30. package/dist/components/chips/Chip.svelte.d.ts +3 -1
  31. package/dist/components/chips/ChipGroup.stories.svelte +73 -0
  32. package/dist/components/chips/ChipGroup.stories.svelte.d.ts +4 -0
  33. package/dist/components/chips/ChipGroup.svelte +242 -0
  34. package/dist/components/chips/ChipGroup.svelte.d.ts +33 -0
  35. package/dist/components/chips/index.d.ts +1 -0
  36. package/dist/components/chips/index.js +1 -0
  37. package/dist/components/chips/theme.d.ts +183 -22
  38. package/dist/components/chips/theme.js +117 -26
  39. package/dist/components/chips/types.d.ts +36 -2
  40. package/dist/components/containers/action-rail/theme.d.ts +1 -1
  41. package/dist/components/containers/action-rail/theme.js +2 -2
  42. package/dist/components/containers/app/theme.d.ts +2 -2
  43. package/dist/components/containers/app/theme.js +2 -2
  44. package/dist/components/containers/bottom-sheet/BottomSheet.stories.svelte +1 -1
  45. package/dist/components/containers/bottom-sheet/theme.d.ts +1 -1
  46. package/dist/components/containers/bottom-sheet/theme.js +2 -2
  47. package/dist/components/containers/carousel/theme.d.ts +1 -1
  48. package/dist/components/containers/carousel/theme.js +1 -1
  49. package/dist/components/containers/context-menu/theme.d.ts +1 -1
  50. package/dist/components/containers/context-menu/theme.js +2 -2
  51. package/dist/components/containers/dialogue/Dialogue.svelte +1 -1
  52. package/dist/components/containers/dialogue/theme.d.ts +1 -1
  53. package/dist/components/containers/dialogue/theme.js +3 -3
  54. package/dist/components/containers/dialogue/types.d.ts +1 -1
  55. package/dist/components/containers/divider/theme.d.ts +1 -1
  56. package/dist/components/containers/divider/theme.js +1 -1
  57. package/dist/components/containers/link-preview/theme.d.ts +1 -1
  58. package/dist/components/containers/link-preview/theme.js +2 -2
  59. package/dist/components/containers/list/List.svelte +8 -2
  60. package/dist/components/containers/list/ListItem.mdx +6 -0
  61. package/dist/components/containers/list/ListItem.svelte +77 -2
  62. package/dist/components/containers/list/context.d.ts +14 -0
  63. package/dist/components/containers/list/theme.d.ts +7 -1
  64. package/dist/components/containers/list/theme.js +11 -3
  65. package/dist/components/containers/menu/Menu.svelte +1 -1
  66. package/dist/components/containers/menu/MenuSub.svelte +1 -1
  67. package/dist/components/containers/menu/theme.d.ts +1 -1
  68. package/dist/components/containers/menu/theme.js +1 -1
  69. package/dist/components/containers/pane/DraggablePane.svelte +25 -63
  70. package/dist/components/containers/pane/Pane.svelte +1 -1
  71. package/dist/components/containers/pane/theme.d.ts +1 -1
  72. package/dist/components/containers/pane/theme.js +35 -9
  73. package/dist/components/containers/popover/theme.d.ts +4 -4
  74. package/dist/components/containers/popover/theme.js +2 -2
  75. package/dist/components/containers/scroll-area/theme.js +1 -1
  76. package/dist/components/containers/side-sheet/theme.d.ts +1 -1
  77. package/dist/components/containers/side-sheet/theme.js +1 -1
  78. package/dist/components/date/theme.d.ts +7 -7
  79. package/dist/components/date/theme.js +1 -1
  80. package/dist/components/forms/checkbox/theme.d.ts +1 -1
  81. package/dist/components/forms/checkbox/theme.js +2 -2
  82. package/dist/components/forms/command/theme.d.ts +4 -4
  83. package/dist/components/forms/command/theme.js +1 -1
  84. package/dist/components/forms/pin/theme.d.ts +1 -1
  85. package/dist/components/forms/pin/theme.js +1 -1
  86. package/dist/components/forms/radio-group/theme.d.ts +1 -1
  87. package/dist/components/forms/radio-group/theme.js +1 -1
  88. package/dist/components/forms/search/theme.d.ts +1 -1
  89. package/dist/components/forms/search/theme.js +1 -1
  90. package/dist/components/forms/select/Select.svelte +2 -2
  91. package/dist/components/forms/select/theme.d.ts +1 -1
  92. package/dist/components/forms/select/theme.js +2 -2
  93. package/dist/components/forms/slider/theme.d.ts +1 -1
  94. package/dist/components/forms/slider/theme.js +1 -1
  95. package/dist/components/forms/switch/theme.d.ts +1 -1
  96. package/dist/components/forms/switch/theme.js +1 -1
  97. package/dist/components/forms/textfield/theme.d.ts +1 -1
  98. package/dist/components/forms/textfield/theme.js +1 -1
  99. package/dist/components/forms/toggle-group/theme.d.ts +1 -1
  100. package/dist/components/forms/toggle-group/theme.js +1 -1
  101. package/dist/components/forms/tooltip/theme.d.ts +1 -1
  102. package/dist/components/forms/tooltip/theme.js +2 -2
  103. package/dist/components/misc/Avatar.stories.svelte +56 -7
  104. package/dist/components/misc/Avatar.stories.svelte.d.ts +2 -17
  105. package/dist/components/misc/Avatar.svelte +82 -8
  106. package/dist/components/misc/Avatar.svelte.d.ts +5 -0
  107. package/dist/components/misc/ThemeSwitcher.svelte +1 -1
  108. package/dist/components/misc/theme.d.ts +6 -0
  109. package/dist/components/misc/theme.js +6 -4
  110. package/dist/components/misc/types.d.ts +17 -1
  111. package/dist/components/nav/appbar/theme.d.ts +1 -1
  112. package/dist/components/nav/appbar/theme.js +3 -2
  113. package/dist/components/nav/breadcrumb/theme.d.ts +1 -1
  114. package/dist/components/nav/breadcrumb/theme.js +1 -1
  115. package/dist/components/nav/currentRoute.d.ts +11 -0
  116. package/dist/components/nav/currentRoute.js +28 -0
  117. package/dist/components/nav/navbar/NavbarItem.svelte +3 -6
  118. package/dist/components/nav/navbar/theme.d.ts +3 -3
  119. package/dist/components/nav/navbar/theme.js +2 -2
  120. package/dist/components/nav/rail/Rail.mdx +65 -23
  121. package/dist/components/nav/rail/Rail.stories.svelte +24 -4
  122. package/dist/components/nav/rail/Rail.stories.svelte.d.ts +2 -17
  123. package/dist/components/nav/rail/Rail.svelte +165 -48
  124. package/dist/components/nav/rail/Rail.svelte.d.ts +6 -3
  125. package/dist/components/nav/rail/RailItem.svelte +122 -65
  126. package/dist/components/nav/rail/RailItem.svelte.d.ts +3 -2
  127. package/dist/components/nav/rail/theme.d.ts +70 -85
  128. package/dist/components/nav/rail/theme.js +80 -67
  129. package/dist/components/nav/rail/types.d.ts +4 -0
  130. package/dist/components/nav/tabs/Tabs.stories.svelte +2 -1
  131. package/dist/components/nav/tabs/theme.d.ts +1 -1
  132. package/dist/components/nav/tabs/theme.js +1 -1
  133. package/dist/components/pill/theme.d.ts +1 -1
  134. package/dist/components/pill/theme.js +1 -1
  135. package/dist/components/progress/LinearProgress.svelte +1 -1
  136. package/dist/components/snackbar/theme.d.ts +1 -1
  137. package/dist/components/snackbar/theme.js +2 -2
  138. package/dist/components/table/theme.d.ts +1 -1
  139. package/dist/components/table/theme.js +1 -1
  140. package/dist/components/time/TimeField.svelte +1 -1
  141. package/dist/components/time/theme.d.ts +1 -1
  142. package/dist/components/time/theme.js +1 -1
  143. package/dist/components/toolbar/theme.d.ts +1 -1
  144. package/dist/components/toolbar/theme.js +2 -2
  145. package/dist/components/typography/body/theme.d.ts +1 -1
  146. package/dist/components/typography/body/theme.js +1 -1
  147. package/dist/components/typography/display/theme.d.ts +1 -1
  148. package/dist/components/typography/display/theme.js +1 -1
  149. package/dist/components/typography/headline/theme.d.ts +1 -1
  150. package/dist/components/typography/headline/theme.js +1 -1
  151. package/dist/components/typography/kbd/theme.d.ts +1 -1
  152. package/dist/components/typography/kbd/theme.js +1 -1
  153. package/dist/components/typography/label/theme.js +1 -1
  154. package/dist/components/typography/title/theme.d.ts +1 -1
  155. package/dist/components/typography/title/theme.js +1 -1
  156. package/dist/index.css +3 -0
  157. package/dist/styles/components.css +50 -0
  158. package/dist/styles/icon.css +13 -0
  159. package/dist/styles/layers.css +33 -0
  160. package/dist/utils/icon/Icon.stories.svelte +97 -0
  161. package/dist/utils/icon/Icon.stories.svelte.d.ts +4 -0
  162. package/dist/utils/icon/Icon.svelte +101 -12
  163. package/dist/utils/icon/Icon.svelte.d.ts +9 -0
  164. package/dist/utils/icon/MaterialSymbolsProvider.svelte +11 -4
  165. package/dist/utils/icon/base-icons.d.ts +1 -1
  166. package/dist/utils/icon/base-icons.js +1 -1
  167. package/dist/utils/icon/icon-names.d.ts +2 -0
  168. package/dist/utils/icon/icon-names.js +2 -0
  169. package/dist/utils/icon/swap.d.ts +6 -0
  170. package/dist/utils/icon/swap.js +45 -0
  171. package/dist/utils/icon/theme.d.ts +1 -1
  172. package/dist/utils/icon/theme.js +1 -1
  173. package/dist/utils/icon/types.d.ts +59 -7
  174. package/dist/utils/tv.d.ts +5 -0
  175. package/dist/utils/tv.js +20 -0
  176. package/package.json +2 -1
@@ -2,17 +2,23 @@
2
2
  @component
3
3
  Material 3 Navigation Rail Item.
4
4
 
5
- A single destination within a navigation rail.
6
- In mobile (navbar) mode the same item renders as a bottom-bar tab.
5
+ A single destination within a navigation rail. Collapsed, the label sits under the icon;
6
+ expanded, beside it inside the active indicator, and it moves between the two as the rail
7
+ springs. The active icon fills, per M3's icon guidance.
7
8
  -->
8
9
  <script lang="ts">
9
10
  import { page } from '$app/state';
10
- import { getContext } from 'svelte';
11
+ import { base } from '$app/paths';
12
+ import { getContext, untrack } from 'svelte';
13
+ import { animate, type AnimationPlaybackControls } from 'motion';
14
+ import { springTokens, springTransition } from '../../../animation/spring.js';
11
15
  import type { RailItemProps } from './types.js';
12
16
  import { railElement } from './theme.js';
13
- import { Icon, Layer } from '../../../utils/index.js';
17
+ import { Icon } from '../../../utils/index.js';
14
18
  import Badge from '../../badge/Badge.svelte';
15
19
  import { NavigationMenu } from 'bits-ui';
20
+ import clsx from 'clsx';
21
+ import { isCurrentRoute } from '../currentRoute.js';
16
22
 
17
23
  let {
18
24
  href = '/',
@@ -27,12 +33,12 @@ In mobile (navbar) mode the same item renders as a bottom-bar tab.
27
33
  ...rest
28
34
  }: RailItemProps = $props();
29
35
 
30
- const railCtx = getContext<{ collapsed: boolean } | undefined>('rail');
31
- const railModeCtx = getContext<{ mobile: boolean } | undefined>('railMode');
32
- const isMobile = $derived(railModeCtx?.mobile ?? false);
33
-
34
- // Mobile items always render in collapsed (icon+label stacked) layout
35
- const collapsed = $derived(isMobile ? true : (collapsedProp ?? railCtx?.collapsed ?? true));
36
+ const railCtx = getContext<{ collapsed: boolean; progress: number } | undefined>('rail');
37
+ /* The rail's expand progress (0–1); a `collapsed` prop pins this item to an end state. */
38
+ const progress = $derived(
39
+ collapsedProp !== undefined ? (collapsedProp ? 0 : 1) : (railCtx?.progress ?? 0)
40
+ );
41
+ const layout = $derived(progress < 0.5 ? 'top' : 'start');
36
42
 
37
43
  const isDisabled = $derived(!!disabled);
38
44
  const target = $derived(!isDisabled && external ? '_blank' : undefined);
@@ -40,49 +46,45 @@ In mobile (navbar) mode the same item renders as a bottom-bar tab.
40
46
  const hrefValue = $derived(isDisabled ? undefined : href);
41
47
  const ariaDisabled = $derived(isDisabled ? true : undefined);
42
48
  const tabIndex = $derived(isDisabled ? -1 : undefined);
43
- const hrefPathname = $derived.by(() => {
44
- try {
45
- return new URL(href).pathname;
46
- } catch {
47
- return href;
48
- }
49
- });
50
- const isActive = $derived(
51
- selected ||
52
- page.url.pathname === hrefPathname ||
53
- (hrefPathname !== '/' && page.url.pathname.startsWith(hrefPathname + '/'))
54
- );
55
- const {
56
- base,
57
- content,
58
- icon,
59
- iconContainer,
60
- label: labelClass
61
- } = $derived(
62
- railElement({
63
- active: isActive,
64
- expanded: !collapsed,
65
- disabled: isDisabled,
66
- mobile: isMobile
67
- })
68
- );
69
- const rootClass = $derived([base(), className].filter(Boolean).join(' '));
49
+ const isActive = $derived(selected || isCurrentRoute(href, page.url, base));
50
+ const styles = $derived(railElement({ active: isActive, layout, disabled: isDisabled }));
70
51
 
71
- const itemClass = $derived(
72
- isMobile
73
- ? 'flex h-full flex-1 justify-center'
74
- : ['flex w-full items-center', collapsed && 'justify-center'].filter(Boolean).join(' ')
75
- );
52
+ /*
53
+ The selected fill's size, 0 to 1, on fastSpatial: selecting grows it from the indicator's
54
+ centre out to its edges, deselecting shrinks it back (it may overshoot a little, as the
55
+ spring does). SSR and reduced motion render the end state.
56
+ */
57
+ let selection = $state(untrack(() => (isActive ? 1 : 0)));
58
+ let selectionSpring: AnimationPlaybackControls | undefined;
59
+ $effect(() => {
60
+ const target = isActive ? 1 : 0;
61
+ untrack(() => {
62
+ if (selection === target) return;
63
+ selectionSpring?.stop();
64
+ if (matchMedia('(prefers-reduced-motion: reduce)').matches) {
65
+ selection = target;
66
+ return;
67
+ }
68
+ selectionSpring = animate(selection, target, {
69
+ ...springTransition(springTokens.fastSpatial),
70
+ onUpdate: (v) => (selection = v)
71
+ });
72
+ });
73
+ return () => selectionSpring?.stop();
74
+ });
76
75
 
77
- function handleClick(event: MouseEvent) {
76
+ // Placed after {...rest}, so it forwards a consumer's onclick instead of replacing it.
77
+ function handleClick(event: MouseEvent & { currentTarget: HTMLAnchorElement }) {
78
78
  if (isDisabled) {
79
79
  event.preventDefault();
80
80
  event.stopPropagation();
81
+ return;
81
82
  }
83
+ rest.onclick?.(event);
82
84
  }
83
85
  </script>
84
86
 
85
- <NavigationMenu.Item class={itemClass}>
87
+ <NavigationMenu.Item class="flex w-full">
86
88
  <NavigationMenu.Link active={isActive} href={hrefValue}>
87
89
  {#snippet child({ props })}
88
90
  <a
@@ -94,29 +96,84 @@ In mobile (navbar) mode the same item renders as a bottom-bar tab.
94
96
  aria-disabled={ariaDisabled}
95
97
  tabindex={tabIndex}
96
98
  onclick={handleClick}
97
- class={rootClass}
99
+ class={styles.base({ class: clsx(className) })}
100
+ data-layout={layout}
101
+ style:--rail-p={collapsedProp !== undefined ? progress : undefined}
102
+ style:--rail-sel={selection}
98
103
  >
99
- <div class={content()}>
100
- <div class={iconContainer()}>
101
- <Layer />
102
- <!-- Badge offsets are measured from the icon's corner, not the indicator's. -->
103
- <span class="relative inline-flex">
104
- <Icon
105
- {...iconProps}
106
- class={icon()}
107
- wght={isActive ? 600 : 400}
108
- fill={isActive ? 1 : 0}
109
- />
110
- {#if badge}
111
- <Badge size={badge === -1 ? 'sm' : 'lg'} number={badge} />
112
- {/if}
113
- </span>
114
- </div>
115
- <p class={labelClass()}>
116
- {label}
117
- </p>
118
- </div>
104
+ <span class={styles.sizer()}>
105
+ <span class={styles.measure()} aria-hidden="true">{label}</span>
106
+ <span class={styles.indicator()}>
107
+ <span class={styles.fill()}></span>
108
+ </span>
109
+ <!-- Badge offsets are measured from the icon's corner, not the indicator's. -->
110
+ <span class={styles.icon()}>
111
+ <Icon {...iconProps} fill={isActive ? 1 : 0} />
112
+ {#if badge}
113
+ <Badge size={badge === -1 ? 'sm' : 'lg'} number={badge} />
114
+ {/if}
115
+ </span>
116
+ <span class={styles.label()}>{label}</span>
117
+ </span>
119
118
  </a>
120
119
  {/snippet}
121
120
  </NavigationMenu.Link>
122
121
  </NavigationMenu.Item>
122
+
123
+ <style>
124
+ /*
125
+ Geometry, interpolated on --rail-p (the rail's expand progress, 0 collapsed to 1 expanded)
126
+ after Compose's AnimatedNavigationItem. The indicator stays anchored 20dp in and the icon
127
+ keeps its x, so nothing moves sideways; only the label changes sides, while invisible.
128
+ Coordinates are inside the sizer, which starts 20dp in and is as wide as the expanded pill.
129
+ */
130
+ .rail-item {
131
+ /* 64dp (6 + 32 + 4 + 16 label + 6) → 56dp */
132
+ height: calc(var(--spacing-spacing-800) - var(--spacing-spacing-100) * var(--rail-p, 0));
133
+ }
134
+
135
+ .rail-indicator {
136
+ /* 56×32, 6dp down → the full pill, 56dp tall */
137
+ top: calc(var(--spacing-spacing-75) * (1 - var(--rail-p, 0)));
138
+ width: calc(
139
+ var(--spacing-spacing-700) + (100% - var(--spacing-spacing-700)) * var(--rail-p, 0)
140
+ );
141
+ height: calc(var(--spacing-spacing-400) + var(--spacing-spacing-300) * var(--rail-p, 0));
142
+ }
143
+
144
+ /* Grows from the centre: full height, width and opacity on --rail-sel. */
145
+ .rail-fill {
146
+ inset-block: 0;
147
+ left: 50%;
148
+ width: calc(100% * var(--rail-sel, 0));
149
+ translate: -50% 0;
150
+ opacity: var(--rail-sel, 0);
151
+ }
152
+
153
+ .rail-icon {
154
+ /* 4dp into the indicator → centred in the 56dp pill */
155
+ top: calc(var(--spacing-spacing-125) + var(--spacing-spacing-75) * var(--rail-p, 0));
156
+ }
157
+
158
+ .rail-label {
159
+ /* Fades out to nothing at the halfway point and back in: 4(p − ½)². */
160
+ opacity: calc(4 * (var(--rail-p, 0) - 0.5) * (var(--rail-p, 0) - 0.5));
161
+ }
162
+
163
+ /* Under the indicator, centred on it. */
164
+ .rail-item[data-layout='top'] .rail-label {
165
+ top: calc(var(--spacing-spacing-75) + var(--spacing-spacing-400) + var(--spacing-spacing-50));
166
+ left: calc(var(--spacing-spacing-700) / 2);
167
+ translate: -50% 0;
168
+ }
169
+
170
+ /* Beside the icon, 8dp after it, sliding in from the left as it fades back. */
171
+ .rail-item[data-layout='start'] .rail-label {
172
+ top: 50%;
173
+ left: calc(
174
+ (var(--spacing-spacing-600) + var(--spacing-spacing-250)) * var(--rail-p, 0) -
175
+ var(--spacing-spacing-250)
176
+ );
177
+ translate: 0 -50%;
178
+ }
179
+ </style>
@@ -2,8 +2,9 @@ import type { RailItemProps } from './types.js';
2
2
  /**
3
3
  * Material 3 Navigation Rail Item.
4
4
  *
5
- * A single destination within a navigation rail.
6
- * In mobile (navbar) mode the same item renders as a bottom-bar tab.
5
+ * A single destination within a navigation rail. Collapsed, the label sits under the icon;
6
+ * expanded, beside it inside the active indicator, and it moves between the two as the rail
7
+ * springs. The active icon fills, per M3's icon guidance.
7
8
  */
8
9
  declare const RailItem: import("svelte").Component<RailItemProps, {}, "">;
9
10
  type RailItem = ReturnType<typeof RailItem>;
@@ -1,4 +1,4 @@
1
- import { type VariantProps } from 'tailwind-variants';
1
+ import { type VariantProps } from '../../../utils/tv.js';
2
2
  export type RailVariants = VariantProps<typeof rail>;
3
3
  export type RailItemVariants = VariantProps<typeof railElement>;
4
4
  export declare const rail: import("tailwind-variants").TVReturnType<{
@@ -15,14 +15,19 @@ export declare const rail: import("tailwind-variants").TVReturnType<{
15
15
  expanded: {
16
16
  true: {
17
17
  base: string;
18
- ghost: string;
18
+ scrim: string;
19
19
  };
20
20
  false: {
21
21
  base: string;
22
- items: string;
23
- ghost: string;
22
+ scrim: string;
24
23
  };
25
24
  };
25
+ header: {
26
+ true: {
27
+ nav: string;
28
+ };
29
+ false: {};
30
+ };
26
31
  rounded: {
27
32
  true: {
28
33
  base: string;
@@ -31,6 +36,9 @@ export declare const rail: import("tailwind-variants").TVReturnType<{
31
36
  };
32
37
  }, {
33
38
  base: string;
39
+ header: string;
40
+ menu: string;
41
+ nav: string;
34
42
  items: string;
35
43
  ghost: string;
36
44
  scrim: string;
@@ -48,14 +56,19 @@ export declare const rail: import("tailwind-variants").TVReturnType<{
48
56
  expanded: {
49
57
  true: {
50
58
  base: string;
51
- ghost: string;
59
+ scrim: string;
52
60
  };
53
61
  false: {
54
62
  base: string;
55
- items: string;
56
- ghost: string;
63
+ scrim: string;
57
64
  };
58
65
  };
66
+ header: {
67
+ true: {
68
+ nav: string;
69
+ };
70
+ false: {};
71
+ };
59
72
  rounded: {
60
73
  true: {
61
74
  base: string;
@@ -64,6 +77,9 @@ export declare const rail: import("tailwind-variants").TVReturnType<{
64
77
  };
65
78
  }, {
66
79
  base: string;
80
+ header: string;
81
+ menu: string;
82
+ nav: string;
67
83
  items: string;
68
84
  ghost: string;
69
85
  scrim: string;
@@ -81,14 +97,19 @@ export declare const rail: import("tailwind-variants").TVReturnType<{
81
97
  expanded: {
82
98
  true: {
83
99
  base: string;
84
- ghost: string;
100
+ scrim: string;
85
101
  };
86
102
  false: {
87
103
  base: string;
88
- items: string;
89
- ghost: string;
104
+ scrim: string;
90
105
  };
91
106
  };
107
+ header: {
108
+ true: {
109
+ nav: string;
110
+ };
111
+ false: {};
112
+ };
92
113
  rounded: {
93
114
  true: {
94
115
  base: string;
@@ -97,6 +118,9 @@ export declare const rail: import("tailwind-variants").TVReturnType<{
97
118
  };
98
119
  }, {
99
120
  base: string;
121
+ header: string;
122
+ menu: string;
123
+ nav: string;
100
124
  items: string;
101
125
  ghost: string;
102
126
  scrim: string;
@@ -104,26 +128,18 @@ export declare const rail: import("tailwind-variants").TVReturnType<{
104
128
  export declare const railElement: import("tailwind-variants").TVReturnType<{
105
129
  active: {
106
130
  true: {
107
- content: string;
108
- label: string;
109
- iconContainer: string;
131
+ icon: string;
110
132
  };
111
133
  false: {
112
- content: string;
113
- iconContainer: string;
134
+ icon: string;
135
+ label: string;
114
136
  };
115
137
  };
116
- expanded: {
117
- true: {
118
- base: string;
119
- content: string;
120
- iconContainer: string;
138
+ layout: {
139
+ top: {
121
140
  label: string;
122
141
  };
123
- false: {
124
- base: string;
125
- content: string;
126
- iconContainer: string;
142
+ start: {
127
143
  label: string;
128
144
  };
129
145
  };
@@ -131,46 +147,33 @@ export declare const railElement: import("tailwind-variants").TVReturnType<{
131
147
  true: {
132
148
  base: string;
133
149
  };
134
- };
135
- mobile: {
136
- true: {
137
- base: string;
138
- content: string;
139
- iconContainer: string;
140
- icon: string;
141
- label: string;
150
+ false: {
151
+ indicator: string;
142
152
  };
143
- false: {};
144
153
  };
145
154
  }, {
146
155
  base: string;
147
- content: string;
148
- iconContainer: string;
156
+ sizer: string;
157
+ measure: string;
158
+ indicator: string;
159
+ fill: string;
149
160
  icon: string;
150
161
  label: string;
151
162
  }, undefined, {
152
163
  active: {
153
164
  true: {
154
- content: string;
155
- label: string;
156
- iconContainer: string;
165
+ icon: string;
157
166
  };
158
167
  false: {
159
- content: string;
160
- iconContainer: string;
168
+ icon: string;
169
+ label: string;
161
170
  };
162
171
  };
163
- expanded: {
164
- true: {
165
- base: string;
166
- content: string;
167
- iconContainer: string;
172
+ layout: {
173
+ top: {
168
174
  label: string;
169
175
  };
170
- false: {
171
- base: string;
172
- content: string;
173
- iconContainer: string;
176
+ start: {
174
177
  label: string;
175
178
  };
176
179
  };
@@ -178,46 +181,33 @@ export declare const railElement: import("tailwind-variants").TVReturnType<{
178
181
  true: {
179
182
  base: string;
180
183
  };
181
- };
182
- mobile: {
183
- true: {
184
- base: string;
185
- content: string;
186
- iconContainer: string;
187
- icon: string;
188
- label: string;
184
+ false: {
185
+ indicator: string;
189
186
  };
190
- false: {};
191
187
  };
192
188
  }, {
193
189
  base: string;
194
- content: string;
195
- iconContainer: string;
190
+ sizer: string;
191
+ measure: string;
192
+ indicator: string;
193
+ fill: string;
196
194
  icon: string;
197
195
  label: string;
198
196
  }, import("tailwind-variants").TVReturnTypeLike<{
199
197
  active: {
200
198
  true: {
201
- content: string;
202
- label: string;
203
- iconContainer: string;
199
+ icon: string;
204
200
  };
205
201
  false: {
206
- content: string;
207
- iconContainer: string;
202
+ icon: string;
203
+ label: string;
208
204
  };
209
205
  };
210
- expanded: {
211
- true: {
212
- base: string;
213
- content: string;
214
- iconContainer: string;
206
+ layout: {
207
+ top: {
215
208
  label: string;
216
209
  };
217
- false: {
218
- base: string;
219
- content: string;
220
- iconContainer: string;
210
+ start: {
221
211
  label: string;
222
212
  };
223
213
  };
@@ -225,21 +215,16 @@ export declare const railElement: import("tailwind-variants").TVReturnType<{
225
215
  true: {
226
216
  base: string;
227
217
  };
228
- };
229
- mobile: {
230
- true: {
231
- base: string;
232
- content: string;
233
- iconContainer: string;
234
- icon: string;
235
- label: string;
218
+ false: {
219
+ indicator: string;
236
220
  };
237
- false: {};
238
221
  };
239
222
  }, {
240
223
  base: string;
241
- content: string;
242
- iconContainer: string;
224
+ sizer: string;
225
+ measure: string;
226
+ indicator: string;
227
+ fill: string;
243
228
  icon: string;
244
229
  label: string;
245
230
  }>>;