@sewadah/selaras 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +14 -1
  3. package/dist/runtime/components/Autocomplete.vue +3 -1
  4. package/dist/runtime/components/Calendar.d.vue.ts +69 -0
  5. package/dist/runtime/components/Calendar.vue +163 -0
  6. package/dist/runtime/components/Calendar.vue.d.ts +69 -0
  7. package/dist/runtime/components/Callout.vue +12 -1
  8. package/dist/runtime/components/CodeGroup.vue +13 -3
  9. package/dist/runtime/components/CodeTree.d.vue.ts +2 -0
  10. package/dist/runtime/components/CodeTree.vue +52 -1
  11. package/dist/runtime/components/CodeTree.vue.d.ts +2 -0
  12. package/dist/runtime/components/ColorPicker.d.vue.ts +8 -0
  13. package/dist/runtime/components/ColorPicker.vue +66 -45
  14. package/dist/runtime/components/ColorPicker.vue.d.ts +8 -0
  15. package/dist/runtime/components/Column.js +1 -1
  16. package/dist/runtime/components/CommandPalette.d.vue.ts +3 -1
  17. package/dist/runtime/components/CommandPalette.vue +5 -0
  18. package/dist/runtime/components/CommandPalette.vue.d.ts +3 -1
  19. package/dist/runtime/components/ContentNavigation.d.vue.ts +8 -1
  20. package/dist/runtime/components/ContentNavigation.vue +9 -2
  21. package/dist/runtime/components/ContentNavigation.vue.d.ts +8 -1
  22. package/dist/runtime/components/ContextMenu.d.vue.ts +8 -1
  23. package/dist/runtime/components/ContextMenu.vue +16 -4
  24. package/dist/runtime/components/ContextMenu.vue.d.ts +8 -1
  25. package/dist/runtime/components/DatePicker.d.vue.ts +10 -3
  26. package/dist/runtime/components/DatePicker.vue +24 -16
  27. package/dist/runtime/components/DatePicker.vue.d.ts +10 -3
  28. package/dist/runtime/components/Dropdown.d.vue.ts +33 -6
  29. package/dist/runtime/components/Dropdown.vue +143 -11
  30. package/dist/runtime/components/Dropdown.vue.d.ts +33 -6
  31. package/dist/runtime/components/FileTree.d.vue.ts +2 -0
  32. package/dist/runtime/components/FileTree.vue +8 -4
  33. package/dist/runtime/components/FileTree.vue.d.ts +2 -0
  34. package/dist/runtime/components/FormField.d.vue.ts +4 -0
  35. package/dist/runtime/components/FormField.vue +19 -4
  36. package/dist/runtime/components/FormField.vue.d.ts +4 -0
  37. package/dist/runtime/components/Input.vue +3 -2
  38. package/dist/runtime/components/Kbd.vue +12 -2
  39. package/dist/runtime/components/NavigationMenu.d.vue.ts +10 -10
  40. package/dist/runtime/components/NavigationMenu.vue +13 -9
  41. package/dist/runtime/components/NavigationMenu.vue.d.ts +10 -10
  42. package/dist/runtime/components/NavigationMenuAccordionItem.vue +5 -1
  43. package/dist/runtime/components/NavigationMenuFlyoutList.vue +7 -4
  44. package/dist/runtime/components/Popover.d.vue.ts +8 -2
  45. package/dist/runtime/components/Popover.vue +9 -4
  46. package/dist/runtime/components/Popover.vue.d.ts +8 -2
  47. package/dist/runtime/components/ProsePre.d.vue.ts +2 -0
  48. package/dist/runtime/components/ProsePre.vue +2 -1
  49. package/dist/runtime/components/ProsePre.vue.d.ts +2 -0
  50. package/dist/runtime/components/Select.vue +3 -1
  51. package/dist/runtime/components/SplitterPanel.d.vue.ts +2 -2
  52. package/dist/runtime/components/SplitterPanel.vue.d.ts +2 -2
  53. package/dist/runtime/components/Table.vue +95 -26
  54. package/dist/runtime/components/Tabs.d.vue.ts +44 -4
  55. package/dist/runtime/components/Tabs.vue +171 -18
  56. package/dist/runtime/components/Tabs.vue.d.ts +44 -4
  57. package/dist/runtime/components/Textarea.vue +3 -2
  58. package/dist/runtime/components/Timeline.d.vue.ts +19 -0
  59. package/dist/runtime/components/Timeline.vue +99 -0
  60. package/dist/runtime/components/Timeline.vue.d.ts +19 -0
  61. package/dist/runtime/components/Toast.d.vue.ts +10 -1
  62. package/dist/runtime/components/Toast.vue +94 -8
  63. package/dist/runtime/components/Toast.vue.d.ts +10 -1
  64. package/dist/runtime/components/Tooltip.d.vue.ts +8 -2
  65. package/dist/runtime/components/Tooltip.vue +9 -4
  66. package/dist/runtime/components/Tooltip.vue.d.ts +8 -2
  67. package/dist/runtime/composables/use-form-field.d.ts +1 -0
  68. package/dist/runtime/composables/use-table.d.ts +3 -0
  69. package/dist/runtime/composables/use-table.js +10 -4
  70. package/dist/runtime/composables/use-toast.js +5 -1
  71. package/dist/runtime/directives/hotkey.d.ts +13 -0
  72. package/dist/runtime/directives/hotkey.js +107 -0
  73. package/dist/runtime/directives/index.d.ts +2 -0
  74. package/dist/runtime/directives/index.js +2 -0
  75. package/dist/runtime/directives/mask.d.ts +30 -0
  76. package/dist/runtime/directives/mask.js +165 -0
  77. package/dist/runtime/internal/ComboboxSelectBase.d.vue.ts +29 -25
  78. package/dist/runtime/internal/ComboboxSelectBase.vue +103 -19
  79. package/dist/runtime/internal/ComboboxSelectBase.vue.d.ts +29 -25
  80. package/dist/runtime/internal/ComboboxSelectBody.d.vue.ts +16 -11
  81. package/dist/runtime/internal/ComboboxSelectBody.vue +49 -10
  82. package/dist/runtime/internal/ComboboxSelectBody.vue.d.ts +16 -11
  83. package/dist/runtime/internal/DatePickerCalendarBody.vue +1 -1
  84. package/dist/runtime/internal/DatePickerRangeCalendarBody.vue +1 -1
  85. package/dist/runtime/internal/ShortcutHint.d.vue.ts +6 -0
  86. package/dist/runtime/internal/ShortcutHint.vue +13 -0
  87. package/dist/runtime/internal/ShortcutHint.vue.d.ts +6 -0
  88. package/dist/runtime/internal/ToastItemRenderer.d.vue.ts +9 -1
  89. package/dist/runtime/internal/ToastItemRenderer.vue +55 -8
  90. package/dist/runtime/internal/ToastItemRenderer.vue.d.ts +9 -1
  91. package/dist/runtime/internal/combobox-select.js +2 -1
  92. package/dist/runtime/internal/programmatic-services.d.ts +2 -0
  93. package/dist/runtime/internal/programmatic-services.js +8 -0
  94. package/dist/runtime/internal/toast-stack.d.ts +36 -0
  95. package/dist/runtime/internal/toast-stack.js +36 -0
  96. package/dist/runtime/structural.css +1 -1
  97. package/dist/runtime/table.d.ts +1 -1
  98. package/dist/runtime/theme/alert-dialog.js +1 -1
  99. package/dist/runtime/theme/calendar.d.ts +86 -0
  100. package/dist/runtime/theme/calendar.js +19 -0
  101. package/dist/runtime/theme/callout.d.ts +0 -12
  102. package/dist/runtime/theme/callout.js +8 -8
  103. package/dist/runtime/theme/code-tree.js +1 -1
  104. package/dist/runtime/theme/command-palette.js +1 -1
  105. package/dist/runtime/theme/content-navigation.d.ts +3 -0
  106. package/dist/runtime/theme/content-navigation.js +1 -0
  107. package/dist/runtime/theme/drawer.js +1 -1
  108. package/dist/runtime/theme/dropdown.d.ts +21 -0
  109. package/dist/runtime/theme/dropdown.js +15 -2
  110. package/dist/runtime/theme/file-tree.js +1 -1
  111. package/dist/runtime/theme/form-field.d.ts +18 -0
  112. package/dist/runtime/theme/form-field.js +6 -1
  113. package/dist/runtime/theme/modal.js +1 -1
  114. package/dist/runtime/theme/slideover.js +1 -1
  115. package/dist/runtime/theme/table.d.ts +27 -0
  116. package/dist/runtime/theme/table.js +11 -2
  117. package/dist/runtime/theme/tabs.d.ts +87 -3
  118. package/dist/runtime/theme/tabs.js +46 -22
  119. package/dist/runtime/theme/timeline.d.ts +251 -0
  120. package/dist/runtime/theme/timeline.js +84 -0
  121. package/dist/runtime/theme/toast.d.ts +92 -0
  122. package/dist/runtime/theme/toast.js +29 -7
  123. package/dist/runtime/theme-config.d.ts +12 -1
  124. package/dist/runtime/types/index.d.ts +6 -1
  125. package/dist/runtime/utils/arrow.d.ts +21 -0
  126. package/dist/runtime/utils/arrow.js +10 -0
  127. package/dist/runtime/utils/file-icons.js +2 -0
  128. package/dist/runtime/utils/icons.d.ts +2 -0
  129. package/dist/runtime/utils/icons.js +2 -0
  130. package/dist/runtime/utils/messages.d.ts +6 -0
  131. package/dist/runtime/utils/messages.js +6 -0
  132. package/dist/runtime/utils/navigation-menu.d.ts +7 -0
  133. package/dist/runtime/utils/navigation-menu.js +3 -0
  134. package/dist/runtime/utils/overlay.d.ts +17 -0
  135. package/dist/runtime/utils/overlay.js +7 -0
  136. package/dist/runtime/utils/select-contracts.d.ts +7 -1
  137. package/dist/runtime/utils/table-columns.js +1 -1
  138. package/dist/runtime/utils/table-contracts.d.ts +9 -1
  139. package/dist/runtime/utils/timeline-contracts.d.ts +42 -0
  140. package/dist/runtime/utils/timeline-contracts.js +0 -0
  141. package/package.json +2 -1
@@ -0,0 +1,251 @@
1
+ export declare const timelineTheme: import("tailwind-variants").TVReturnType<{
2
+ orientation: {
3
+ vertical: {
4
+ root: string;
5
+ item: string;
6
+ track: string;
7
+ connector: string;
8
+ content: string;
9
+ };
10
+ horizontal: {
11
+ root: string;
12
+ item: string;
13
+ track: string;
14
+ marker: string;
15
+ connector: string;
16
+ content: string;
17
+ };
18
+ };
19
+ align: {
20
+ start: {
21
+ item: string;
22
+ track: string;
23
+ content: string;
24
+ };
25
+ end: {
26
+ item: string;
27
+ track: string;
28
+ content: string;
29
+ };
30
+ alternate: {
31
+ item: string;
32
+ track: string;
33
+ content: string;
34
+ };
35
+ };
36
+ size: {
37
+ sm: {
38
+ marker: string;
39
+ title: string;
40
+ };
41
+ md: {
42
+ marker: string;
43
+ title: string;
44
+ };
45
+ lg: {
46
+ marker: string;
47
+ title: string;
48
+ };
49
+ };
50
+ color: {
51
+ primary: {
52
+ marker: string;
53
+ };
54
+ neutral: {
55
+ marker: string;
56
+ };
57
+ secondary: {
58
+ marker: string;
59
+ };
60
+ success: {
61
+ marker: string;
62
+ };
63
+ danger: {
64
+ marker: string;
65
+ };
66
+ info: {
67
+ marker: string;
68
+ };
69
+ warning: {
70
+ marker: string;
71
+ };
72
+ };
73
+ }, {
74
+ root: string;
75
+ item: string;
76
+ track: string;
77
+ marker: string;
78
+ icon: string;
79
+ connector: string;
80
+ content: string;
81
+ date: string;
82
+ title: string;
83
+ description: string;
84
+ }, undefined, {
85
+ orientation: {
86
+ vertical: {
87
+ root: string;
88
+ item: string;
89
+ track: string;
90
+ connector: string;
91
+ content: string;
92
+ };
93
+ horizontal: {
94
+ root: string;
95
+ item: string;
96
+ track: string;
97
+ marker: string;
98
+ connector: string;
99
+ content: string;
100
+ };
101
+ };
102
+ align: {
103
+ start: {
104
+ item: string;
105
+ track: string;
106
+ content: string;
107
+ };
108
+ end: {
109
+ item: string;
110
+ track: string;
111
+ content: string;
112
+ };
113
+ alternate: {
114
+ item: string;
115
+ track: string;
116
+ content: string;
117
+ };
118
+ };
119
+ size: {
120
+ sm: {
121
+ marker: string;
122
+ title: string;
123
+ };
124
+ md: {
125
+ marker: string;
126
+ title: string;
127
+ };
128
+ lg: {
129
+ marker: string;
130
+ title: string;
131
+ };
132
+ };
133
+ color: {
134
+ primary: {
135
+ marker: string;
136
+ };
137
+ neutral: {
138
+ marker: string;
139
+ };
140
+ secondary: {
141
+ marker: string;
142
+ };
143
+ success: {
144
+ marker: string;
145
+ };
146
+ danger: {
147
+ marker: string;
148
+ };
149
+ info: {
150
+ marker: string;
151
+ };
152
+ warning: {
153
+ marker: string;
154
+ };
155
+ };
156
+ }, {
157
+ root: string;
158
+ item: string;
159
+ track: string;
160
+ marker: string;
161
+ icon: string;
162
+ connector: string;
163
+ content: string;
164
+ date: string;
165
+ title: string;
166
+ description: string;
167
+ }, import("tailwind-variants").TVReturnTypeLike<{
168
+ orientation: {
169
+ vertical: {
170
+ root: string;
171
+ item: string;
172
+ track: string;
173
+ connector: string;
174
+ content: string;
175
+ };
176
+ horizontal: {
177
+ root: string;
178
+ item: string;
179
+ track: string;
180
+ marker: string;
181
+ connector: string;
182
+ content: string;
183
+ };
184
+ };
185
+ align: {
186
+ start: {
187
+ item: string;
188
+ track: string;
189
+ content: string;
190
+ };
191
+ end: {
192
+ item: string;
193
+ track: string;
194
+ content: string;
195
+ };
196
+ alternate: {
197
+ item: string;
198
+ track: string;
199
+ content: string;
200
+ };
201
+ };
202
+ size: {
203
+ sm: {
204
+ marker: string;
205
+ title: string;
206
+ };
207
+ md: {
208
+ marker: string;
209
+ title: string;
210
+ };
211
+ lg: {
212
+ marker: string;
213
+ title: string;
214
+ };
215
+ };
216
+ color: {
217
+ primary: {
218
+ marker: string;
219
+ };
220
+ neutral: {
221
+ marker: string;
222
+ };
223
+ secondary: {
224
+ marker: string;
225
+ };
226
+ success: {
227
+ marker: string;
228
+ };
229
+ danger: {
230
+ marker: string;
231
+ };
232
+ info: {
233
+ marker: string;
234
+ };
235
+ warning: {
236
+ marker: string;
237
+ };
238
+ };
239
+ }, {
240
+ root: string;
241
+ item: string;
242
+ track: string;
243
+ marker: string;
244
+ icon: string;
245
+ connector: string;
246
+ content: string;
247
+ date: string;
248
+ title: string;
249
+ description: string;
250
+ }>>;
251
+ export type TimelineThemeSlots = keyof (typeof timelineTheme)['slots'];
@@ -0,0 +1,84 @@
1
+ import { tv } from "tailwind-variants";
2
+ export const timelineTheme = tv({
3
+ slots: {
4
+ root: "relative flex w-full min-w-0 text-[var(--selaras-resolved-text-default)]",
5
+ item: "relative min-w-0",
6
+ track: "relative",
7
+ marker: "relative z-10 flex shrink-0 items-center justify-center rounded-full border-2 border-[var(--_selaras-color-fill)] bg-[var(--selaras-resolved-surface-default)] text-[var(--_selaras-color-text)] data-[marker-type=dot]:size-3 data-[marker-type=dot]:border-0 data-[marker-type=dot]:bg-[var(--_selaras-color-fill)] data-[marker-type=custom]:border-0 data-[marker-type=custom]:bg-transparent",
8
+ icon: "size-4 shrink-0",
9
+ connector: "pointer-events-none bg-[var(--selaras-resolved-border-default)]",
10
+ content: "min-w-0",
11
+ date: "mb-1 text-xs text-[var(--selaras-resolved-text-muted)]",
12
+ title: "font-medium",
13
+ description: "mt-1 text-sm text-[var(--selaras-resolved-text-muted)]"
14
+ },
15
+ variants: {
16
+ orientation: {
17
+ vertical: {
18
+ root: "flex-col",
19
+ item: "grid grid-cols-[1rem_minmax(0,1fr)] gap-x-4 py-4 first:pt-0 last:pb-0",
20
+ track: "col-start-1 row-start-1 row-span-2 flex flex-col items-center",
21
+ connector: "absolute start-1/2 top-4 -bottom-8 w-px -translate-x-1/2 rtl:translate-x-1/2",
22
+ content: "row-start-1"
23
+ },
24
+ horizontal: {
25
+ root: "flex-row items-stretch",
26
+ item: "grid flex-1 grid-rows-[minmax(0,1fr)_2rem_minmax(0,1fr)]",
27
+ track: "relative row-start-2 h-8 w-full",
28
+ marker: "absolute start-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rtl:translate-x-1/2",
29
+ connector: "absolute start-1/2 top-1/2 h-px w-full -translate-y-1/2",
30
+ content: "min-w-0 px-3 text-center"
31
+ }
32
+ },
33
+ align: {
34
+ start: {
35
+ item: "",
36
+ track: "",
37
+ content: ""
38
+ },
39
+ end: {
40
+ item: "",
41
+ track: "",
42
+ content: ""
43
+ },
44
+ alternate: {
45
+ item: "",
46
+ track: "",
47
+ content: ""
48
+ }
49
+ },
50
+ size: {
51
+ sm: { marker: "size-6 text-xs data-[marker-type=dot]:size-3", title: "text-sm" },
52
+ md: { marker: "size-8 text-sm data-[marker-type=dot]:size-4", title: "text-base" },
53
+ lg: { marker: "size-10 text-base data-[marker-type=dot]:size-5", title: "text-lg" }
54
+ },
55
+ color: {
56
+ primary: { marker: "border-[var(--_selaras-color-fill)] text-[var(--_selaras-color-text)]" },
57
+ neutral: { marker: "border-[var(--_selaras-color-fill)] text-[var(--_selaras-color-text)]" },
58
+ secondary: { marker: "border-[var(--_selaras-color-fill)] text-[var(--_selaras-color-text)]" },
59
+ success: { marker: "border-[var(--_selaras-color-fill)] text-[var(--_selaras-color-text)]" },
60
+ danger: { marker: "border-[var(--_selaras-color-fill)] text-[var(--_selaras-color-text)]" },
61
+ info: { marker: "border-[var(--_selaras-color-fill)] text-[var(--_selaras-color-text)]" },
62
+ warning: { marker: "border-[var(--_selaras-color-fill)] text-[var(--_selaras-color-text)]" }
63
+ }
64
+ },
65
+ compoundVariants: [
66
+ { orientation: "vertical", align: "end", class: {
67
+ item: "grid-cols-[minmax(0,1fr)_1rem]",
68
+ track: "col-start-2",
69
+ content: "col-start-1 text-end"
70
+ } },
71
+ { orientation: "vertical", align: "alternate", class: {
72
+ item: "grid-cols-[minmax(0,1fr)_1rem_minmax(0,1fr)]",
73
+ track: "col-start-2"
74
+ } },
75
+ { orientation: "horizontal", align: "start", class: { content: "row-start-3" } },
76
+ { orientation: "horizontal", align: "end", class: { content: "row-start-1" } }
77
+ ],
78
+ defaultVariants: {
79
+ orientation: "vertical",
80
+ align: "start",
81
+ size: "md",
82
+ color: "primary"
83
+ }
84
+ });
@@ -1,4 +1,35 @@
1
+ import type { VariantProps } from 'tailwind-variants';
1
2
  export declare const toastTheme: import("tailwind-variants").TVReturnType<{
3
+ position: {
4
+ 'top-left': {
5
+ viewport: string;
6
+ root: string;
7
+ };
8
+ 'top-center': {
9
+ viewport: string;
10
+ root: string;
11
+ };
12
+ 'top-right': {
13
+ viewport: string;
14
+ root: string;
15
+ };
16
+ 'bottom-left': {
17
+ viewport: string;
18
+ root: string;
19
+ };
20
+ 'bottom-center': {
21
+ viewport: string;
22
+ root: string;
23
+ };
24
+ 'bottom-right': {
25
+ viewport: string;
26
+ root: string;
27
+ };
28
+ };
29
+ expand: {
30
+ true: {};
31
+ false: {};
32
+ };
2
33
  color: {
3
34
  success: "";
4
35
  danger: "";
@@ -13,6 +44,36 @@ export declare const toastTheme: import("tailwind-variants").TVReturnType<{
13
44
  icon: string;
14
45
  close: string;
15
46
  }, undefined, {
47
+ position: {
48
+ 'top-left': {
49
+ viewport: string;
50
+ root: string;
51
+ };
52
+ 'top-center': {
53
+ viewport: string;
54
+ root: string;
55
+ };
56
+ 'top-right': {
57
+ viewport: string;
58
+ root: string;
59
+ };
60
+ 'bottom-left': {
61
+ viewport: string;
62
+ root: string;
63
+ };
64
+ 'bottom-center': {
65
+ viewport: string;
66
+ root: string;
67
+ };
68
+ 'bottom-right': {
69
+ viewport: string;
70
+ root: string;
71
+ };
72
+ };
73
+ expand: {
74
+ true: {};
75
+ false: {};
76
+ };
16
77
  color: {
17
78
  success: "";
18
79
  danger: "";
@@ -27,6 +88,36 @@ export declare const toastTheme: import("tailwind-variants").TVReturnType<{
27
88
  icon: string;
28
89
  close: string;
29
90
  }, import("tailwind-variants").TVReturnTypeLike<{
91
+ position: {
92
+ 'top-left': {
93
+ viewport: string;
94
+ root: string;
95
+ };
96
+ 'top-center': {
97
+ viewport: string;
98
+ root: string;
99
+ };
100
+ 'top-right': {
101
+ viewport: string;
102
+ root: string;
103
+ };
104
+ 'bottom-left': {
105
+ viewport: string;
106
+ root: string;
107
+ };
108
+ 'bottom-center': {
109
+ viewport: string;
110
+ root: string;
111
+ };
112
+ 'bottom-right': {
113
+ viewport: string;
114
+ root: string;
115
+ };
116
+ };
117
+ expand: {
118
+ true: {};
119
+ false: {};
120
+ };
30
121
  color: {
31
122
  success: "";
32
123
  danger: "";
@@ -42,3 +133,4 @@ export declare const toastTheme: import("tailwind-variants").TVReturnType<{
42
133
  close: string;
43
134
  }>>;
44
135
  export type ToastThemeSlots = keyof (typeof toastTheme)['slots'];
136
+ export type ToastPosition = NonNullable<VariantProps<typeof toastTheme>['position']>;
@@ -1,14 +1,22 @@
1
1
  import { tv } from "tailwind-variants";
2
2
  export const toastTheme = tv({
3
3
  slots: {
4
- viewport: "fixed bottom-0 end-0 z-[var(--selaras-resolved-z-toast)] flex w-full max-w-sm flex-col gap-2 p-4 outline-none",
5
- root: "relative flex items-start gap-3 rounded-[var(--selaras-resolved-radius-md)] bg-[var(--selaras-resolved-surface-default)] p-4 pe-10 shadow-[var(--selaras-resolved-shadow-lg)] ring-1 ring-[var(--selaras-resolved-border-default)] border-s-2 border-s-[var(--_selaras-color-fill,var(--selaras-resolved-border-default))] data-[state=open]:animate-in data-[state=open]:slide-in-from-bottom-2 data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-end-full",
4
+ // The cards are absolutely positioned inside it and moved with transforms
5
+ // (see internal/toast-stack.ts); Toast.vue sizes it to fit the stack.
6
+ viewport: "fixed z-[var(--selaras-resolved-z-toast)] w-full max-w-sm p-4 outline-none",
7
+ // Registered roles tint the surface softly; an uncolored toast falls
8
+ // back to the regular surface. Text stays neutral for readability.
9
+ //
10
+ // Cards behind the front one cover their own content with an overlay
11
+ // of the card surface (after:), so they read as a clean pile and fade
12
+ // their content back in when they move to the front or fan out.
13
+ root: "absolute inset-x-4 flex items-start gap-3 rounded-[var(--selaras-resolved-radius-md)] bg-[var(--_selaras-color-subtle,var(--selaras-resolved-surface-default))] p-4 pe-10 shadow-[var(--selaras-resolved-shadow-lg)] ring-1 ring-[var(--selaras-resolved-border-default)] transition-[transform,opacity,height] duration-400 ease-[cubic-bezier(0.22,1,0.36,1)] after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit] after:bg-[inherit] after:opacity-0 after:transition-opacity after:duration-400 data-[stack=behind]:overflow-hidden data-[stack=behind]:after:opacity-100 data-[stack=hidden]:pointer-events-none data-[stack=hidden]:overflow-hidden data-[stack=hidden]:opacity-0 data-[stack=hidden]:after:opacity-100 data-[state=open]:animate-[selaras-toast-in_400ms_cubic-bezier(0.22,1,0.36,1)] data-[state=closed]:animate-[selaras-toast-out_200ms_ease-in_forwards] data-[stack=behind]:[--_selaras-toast-exit:-25%] data-[stack=hidden]:[--_selaras-toast-exit:-25%] motion-reduce:transition-none motion-reduce:animate-none motion-reduce:after:transition-none",
6
14
  title: "text-sm font-medium text-[var(--selaras-resolved-text-default)]",
7
15
  description: "mt-1 text-sm text-[var(--selaras-resolved-text-muted)]",
8
16
  // Base (no color set) is a plain neutral glyph - only shown at all when
9
17
  // `icon` is set without a `color`, since a colorless toast otherwise
10
18
  // has nothing to render here.
11
- icon: "size-5 shrink-0 text-[var(--_selaras-color-fill,var(--selaras-resolved-text-muted))]",
19
+ icon: "size-5 shrink-0 text-[var(--_selaras-color-text,var(--selaras-resolved-text-muted))]",
12
20
  // Rendered as an <SButton> (ghost/neutral) - real chrome, focus ring and
13
21
  // touch target now come from Button's own theme; rounded-full overrides
14
22
  // its default rounded-md just for this dismiss-glyph family (close/clear).
@@ -17,15 +25,29 @@ export const toastTheme = tv({
17
25
  close: "absolute end-1.5 top-1.5 shrink-0 rounded-full"
18
26
  },
19
27
  variants: {
20
- // A colored icon + a matching left-edge accent border - not a full
21
- // colored card background, matching this library's existing restraint
22
- // elsewhere (Dropdown's own `destructive` only recolors text/icon + a
23
- // soft hover tint, never repaints the whole menu).
28
+ position: {
29
+ "top-left": { viewport: "top-0 start-0", root: "top-4 origin-top [--_selaras-toast-lift:1]" },
30
+ "top-center": { viewport: "top-0 left-1/2 -translate-x-1/2", root: "top-4 origin-top [--_selaras-toast-lift:1]" },
31
+ "top-right": { viewport: "top-0 end-0", root: "top-4 origin-top [--_selaras-toast-lift:1]" },
32
+ "bottom-left": { viewport: "bottom-0 start-0", root: "bottom-4 origin-bottom [--_selaras-toast-lift:-1]" },
33
+ "bottom-center": { viewport: "bottom-0 left-1/2 -translate-x-1/2", root: "bottom-4 origin-bottom [--_selaras-toast-lift:-1]" },
34
+ "bottom-right": { viewport: "bottom-0 end-0", root: "bottom-4 origin-bottom [--_selaras-toast-lift:-1]" }
35
+ },
36
+ expand: {
37
+ true: {},
38
+ false: {}
39
+ },
40
+ // Kept as pass-through variants so consumer recipe conditions can match
41
+ // every registered role, including custom roles beyond this built-in set.
24
42
  color: {
25
43
  success: "",
26
44
  danger: "",
27
45
  warning: "",
28
46
  info: ""
29
47
  }
48
+ },
49
+ defaultVariants: {
50
+ position: "bottom-right",
51
+ expand: false
30
52
  }
31
53
  });
@@ -8,6 +8,7 @@ import type { badgeTheme, BadgeThemeSlots } from './theme/badge.js';
8
8
  import type { breadcrumbTheme, BreadcrumbThemeSlots } from './theme/breadcrumb.js';
9
9
  import type { buttonTheme, ButtonThemeSlots } from './theme/button.js';
10
10
  import type { buttonGroupTheme, ButtonGroupThemeSlots } from './theme/button-group.js';
11
+ import type { calendarTheme, CalendarThemeSlots } from './theme/calendar.js';
11
12
  import type { calloutTheme, CalloutThemeSlots } from './theme/callout.js';
12
13
  import type { cardTheme, CardThemeSlots } from './theme/card.js';
13
14
  import type { cardGroupTheme, CardGroupThemeSlots } from './theme/card-group.js';
@@ -66,6 +67,7 @@ import type { switchTheme, SwitchThemeSlots } from './theme/switch.js';
66
67
  import type { tableTheme, TableThemeSlots } from './theme/table.js';
67
68
  import type { tabsTheme, TabsThemeSlots } from './theme/tabs.js';
68
69
  import type { textareaTheme, TextareaThemeSlots } from './theme/textarea.js';
70
+ import type { timelineTheme, TimelineThemeSlots } from './theme/timeline.js';
69
71
  import type { toastTheme, ToastThemeSlots } from './theme/toast.js';
70
72
  import type { toggleTheme, ToggleThemeSlots } from './theme/toggle.js';
71
73
  import type { toggleGroupTheme, ToggleGroupThemeSlots } from './theme/toggle-group.js';
@@ -116,6 +118,7 @@ type SkeletonVariants = VariantProps<typeof skeletonTheme>;
116
118
  type SliderVariants = VariantProps<typeof sliderTheme>;
117
119
  type SwitchVariants = VariantProps<typeof switchTheme>;
118
120
  type StepperVariants = VariantProps<typeof stepperTheme>;
121
+ type TimelineVariants = VariantProps<typeof timelineTheme>;
119
122
  type TabsVariants = VariantProps<typeof tabsTheme>;
120
123
  type TextareaVariants = VariantProps<typeof textareaTheme>;
121
124
  type ToastVariants = VariantProps<typeof toastTheme>;
@@ -143,6 +146,10 @@ export interface ThemeComponentRegistry {
143
146
  slots: AlertDialogThemeSlots;
144
147
  conditions: Pick<VariantProps<typeof alertDialogTheme>, 'transition'>;
145
148
  };
149
+ calendar: {
150
+ slots: CalendarThemeSlots;
151
+ conditions: Pick<VariantProps<typeof calendarTheme>, never>;
152
+ };
146
153
  codeButton: {
147
154
  slots: CodeButtonThemeSlots;
148
155
  conditions: Pick<VariantProps<typeof codeButtonTheme>, never>;
@@ -305,7 +312,7 @@ export interface ThemeComponentRegistry {
305
312
  };
306
313
  formField: {
307
314
  slots: FormFieldThemeSlots;
308
- conditions: Pick<FormFieldVariants, 'size' | 'orientation'>;
315
+ conditions: Pick<FormFieldVariants, 'size' | 'orientation' | 'labelMode'>;
309
316
  };
310
317
  header: {
311
318
  slots: HeaderThemeSlots;
@@ -392,6 +399,10 @@ export interface ThemeComponentRegistry {
392
399
  slots: StepperThemeSlots;
393
400
  conditions: WithRegisteredColor<Pick<StepperVariants, 'color' | 'size' | 'orientation'>>;
394
401
  };
402
+ timeline: {
403
+ slots: TimelineThemeSlots;
404
+ conditions: WithRegisteredColor<Pick<TimelineVariants, 'color' | 'size' | 'orientation' | 'align'>>;
405
+ };
395
406
  tabs: {
396
407
  slots: TabsThemeSlots;
397
408
  conditions: WithRegisteredColor<Pick<TabsVariants, 'color' | 'variant'>>;
@@ -9,6 +9,7 @@ export type * from '../components/Badge.vue';
9
9
  export type * from '../components/Breadcrumb.vue';
10
10
  export type * from '../components/Button.vue';
11
11
  export type * from '../components/ButtonGroup.vue';
12
+ export type * from '../components/Calendar.vue';
12
13
  export type * from '../components/Callout.vue';
13
14
  export type * from '../components/Card.vue';
14
15
  export type * from '../components/CardGroup.vue';
@@ -76,6 +77,7 @@ export type * from '../components/Switch.vue';
76
77
  export type * from '../components/Tabs.vue';
77
78
  export type * from '../components/Textarea.vue';
78
79
  export type * from '../components/Theme.vue';
80
+ export type * from '../components/Timeline.vue';
79
81
  export type * from '../components/Toast.vue';
80
82
  export type * from '../components/Toggle.vue';
81
83
  export type * from '../components/ToggleGroup.vue';
@@ -85,9 +87,10 @@ export type { UseCommandPaletteReturn } from '../composables/use-command-palette
85
87
  export type { UseDrawerOpenOptions, UseDrawerReturn } from '../composables/use-drawer.js';
86
88
  export type { UseModalOpenOptions, UseModalReturn } from '../composables/use-modal.js';
87
89
  export type { UseSlideoverOpenOptions, UseSlideoverReturn } from '../composables/use-slideover.js';
88
- export type { TableColumnDef, TableColumnVisibilityState, TableExpandedState, TableGetRowId, TableRowSelectionState, TableSortingState } from '../composables/use-table.js';
90
+ export type { TableColumnDef, TableColumnVisibilityState, TableExpandedState, TableGetRowId, TableGetSubRows, TableRowSelectionState, TableSortingState } from '../composables/use-table.js';
89
91
  export type { ToastOptions, UseToastReturn } from '../composables/use-toast.js';
90
92
  export type { ThemeComponentRegistry, ThemeConfiguration, ThemeDefaults, ThemeUiOverrides } from '../theme-config.js';
93
+ export type { ArrowConfig, RoundedArrowConfig } from '../utils/arrow.js';
91
94
  export type { AutocompleteValue } from '../utils/autocomplete-contracts.js';
92
95
  export type { BuiltinColorName, ColorRecipe, ColorRecipeInput, ColorRole, RuntimeColorOverrides, RuntimeThemeMode, RuntimeTokenOverrides } from '../utils/color-registry.js';
93
96
  export type { FunctionalTokenOverrides, GeometryTokenOverrides, ThemeTokenOverrides } from '../utils/functional-tokens.js';
@@ -95,6 +98,8 @@ export type { IconRegistry } from '../utils/icons.js';
95
98
  export { defaultIcons } from '../utils/icons.js';
96
99
  export type { MessageRegistry } from '../utils/messages.js';
97
100
  export { defaultMessages } from '../utils/messages.js';
101
+ export type { ContextMenuPositioning, OverlayPortal, OverlayPositioning } from '../utils/overlay.js';
98
102
  export type { SelectGroup, SelectIdentity, SelectModel, SelectResolvedOption, SelectValue } from '../utils/select-contracts.js';
99
103
  export type { TableEmits, TableProps, TableSlots } from '../utils/table-contracts.js';
104
+ export type { TimelineItem, TimelineProps, TimelineSlotProps, TimelineSlots } from '../utils/timeline-contracts.js';
100
105
  export type { SelarasRuntimeConfig } from './app-config.js';
@@ -0,0 +1,21 @@
1
+ /** Dimensions and edge clearance for a positioned pointer arrow. */
2
+ export interface ArrowConfig {
3
+ width?: number;
4
+ height?: number;
5
+ /** Minimum distance between the arrow and the content's corners, in pixels. */
6
+ padding?: number;
7
+ }
8
+ /** Reka's positioned SVG arrows also support a rounded tip. */
9
+ export interface RoundedArrowConfig extends ArrowConfig {
10
+ rounded?: boolean;
11
+ }
12
+ export declare function arrowElementProps(arrow: boolean | RoundedArrowConfig | undefined): {
13
+ rounded?: boolean;
14
+ width?: number;
15
+ height?: number;
16
+ };
17
+ export declare function arrowContentProps(arrow: boolean | ArrowConfig | undefined): {
18
+ arrowPadding?: undefined;
19
+ } | {
20
+ arrowPadding: number;
21
+ };
@@ -0,0 +1,10 @@
1
+ export function arrowElementProps(arrow) {
2
+ if (typeof arrow !== "object")
3
+ return {};
4
+ const { padding: _padding, ...props } = arrow;
5
+ return props;
6
+ }
7
+ export function arrowContentProps(arrow) {
8
+ const padding = typeof arrow === "object" ? arrow.padding : void 0;
9
+ return padding === void 0 ? {} : { arrowPadding: padding };
10
+ }
@@ -106,6 +106,8 @@ export const defaultFileIcons = {
106
106
  "git": "vscode-icons:file-type-git",
107
107
  "gitignore": "vscode-icons:file-type-git",
108
108
  "npm": "vscode-icons:file-type-npm",
109
+ "pnpm": "vscode-icons:file-type-pnpm",
110
+ "yarn": "vscode-icons:file-type-yarn",
109
111
  "nuxt": "vscode-icons:file-type-nuxt",
110
112
  "ansible": "vscode-icons:file-type-ansible",
111
113
  "bicep": "vscode-icons:file-type-bicep"
@@ -10,8 +10,10 @@ export interface IconRegistry {
10
10
  chevronsRight: string;
11
11
  loading: string;
12
12
  search: string;
13
+ sortUnsorted: string;
13
14
  sortAscending: string;
14
15
  sortDescending: string;
16
+ filter: string;
15
17
  columns: string;
16
18
  copy: string;
17
19
  lightMode: string;
@@ -16,10 +16,12 @@ export const defaultIcons = {
16
16
  chevronsRight: "hugeicons:next",
17
17
  loading: "hugeicons:loading-02",
18
18
  search: "hugeicons:search-01",
19
+ sortUnsorted: "hugeicons:sorting-05",
19
20
  // "arrow-*-02" (shaft + arrowhead) - kept visually distinct from the
20
21
  // plain chevrons above, matching the original caret-vs-arrow split.
21
22
  sortAscending: "hugeicons:arrow-up-02",
22
23
  sortDescending: "hugeicons:arrow-down-02",
24
+ filter: "hugeicons:filter",
23
25
  columns: "hugeicons:table-columns-split",
24
26
  copy: "hugeicons:copy",
25
27
  lightMode: "hugeicons:sun-01",