@alexgorbatchev/shadcn 0.0.0-stage → 0.0.12

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 (158) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +349 -2
  3. package/THIRD_PARTY_NOTICES.md +105 -0
  4. package/dist/chunk-1j2hz3w9.js +16 -0
  5. package/dist/chunk-5wvvqege.js +259 -0
  6. package/dist/chunk-8a7dn9ps.js +93 -0
  7. package/dist/chunk-cp2m7y7v.js +26 -0
  8. package/dist/chunk-jpvw9xqy.js +4 -0
  9. package/dist/chunk-rajgnfbr.js +24 -0
  10. package/dist/chunk-rjjwytbx.js +12 -0
  11. package/dist/chunk-tnktkgvp.js +63 -0
  12. package/dist/chunk-z1fy613d.js +64 -0
  13. package/dist/components/Accordion.d.ts +12 -0
  14. package/dist/components/Alert.d.ts +15 -0
  15. package/dist/components/AlertDialog.d.ts +28 -0
  16. package/dist/components/AspectRatio.d.ts +5 -0
  17. package/dist/components/Attachment.d.ts +36 -0
  18. package/dist/components/Avatar.d.ts +19 -0
  19. package/dist/components/Badge.d.ts +15 -0
  20. package/dist/components/Breadcrumb.d.ts +18 -0
  21. package/dist/components/Bubble.d.ts +25 -0
  22. package/dist/components/Button.d.ts +13 -0
  23. package/dist/components/ButtonGroup.d.ts +14 -0
  24. package/dist/components/Card.d.ts +19 -0
  25. package/dist/components/Checkbox.d.ts +6 -0
  26. package/dist/components/Collapsible.d.ts +6 -0
  27. package/dist/components/Combobox.d.ts +39 -0
  28. package/dist/components/ConfirmationDialog.d.ts +11 -0
  29. package/dist/components/ContextMenu.d.ts +24 -0
  30. package/dist/components/DensityProvider.d.ts +7 -0
  31. package/dist/components/Dialog.d.ts +25 -0
  32. package/dist/components/DirectionProvider.d.ts +1 -0
  33. package/dist/components/DragDropPreview.d.ts +7 -0
  34. package/dist/components/DragDropProvider.d.ts +6 -0
  35. package/dist/components/DragSource.d.ts +10 -0
  36. package/dist/components/Drawer.d.ts +25 -0
  37. package/dist/components/DropTarget.d.ts +11 -0
  38. package/dist/components/DropdownMenu.d.ts +26 -0
  39. package/dist/components/Empty.d.ts +19 -0
  40. package/dist/components/EmptyState.d.ts +8 -0
  41. package/dist/components/Field.d.ts +36 -0
  42. package/dist/components/HoverCard.d.ts +8 -0
  43. package/dist/components/ImagePicker.d.ts +11 -0
  44. package/dist/components/InlineEdit.d.ts +14 -0
  45. package/dist/components/Input.d.ts +6 -0
  46. package/dist/components/InputGroup.d.ts +26 -0
  47. package/dist/components/Item.d.ts +32 -0
  48. package/dist/components/JsonViewer.d.ts +8 -0
  49. package/dist/components/Kbd.d.ts +7 -0
  50. package/dist/components/Label.d.ts +5 -0
  51. package/dist/components/Marker.d.ts +19 -0
  52. package/dist/components/Menubar.d.ts +29 -0
  53. package/dist/components/Message.d.ts +17 -0
  54. package/dist/components/NativeSelect.d.ts +11 -0
  55. package/dist/components/NavigationMenu.d.ts +21 -0
  56. package/dist/components/Pagination.d.ts +21 -0
  57. package/dist/components/Popover.d.ts +14 -0
  58. package/dist/components/Progress.d.ts +14 -0
  59. package/dist/components/RadioGroup.d.ts +9 -0
  60. package/dist/components/ScrollArea.d.ts +10 -0
  61. package/dist/components/Select.d.ts +25 -0
  62. package/dist/components/Separator.d.ts +8 -0
  63. package/dist/components/Sheet.d.ts +20 -0
  64. package/dist/components/Sidebar.d.ts +60 -0
  65. package/dist/components/Skeleton.d.ts +5 -0
  66. package/dist/components/Slider.d.ts +6 -0
  67. package/dist/components/Spinner.d.ts +5 -0
  68. package/dist/components/StarRating.d.ts +10 -0
  69. package/dist/components/Switch.d.ts +8 -0
  70. package/dist/components/Table.d.ts +28 -0
  71. package/dist/components/Tabs.d.ts +16 -0
  72. package/dist/components/Textarea.d.ts +5 -0
  73. package/dist/components/ThemeProvider.d.ts +9 -0
  74. package/dist/components/Toast.d.ts +18 -0
  75. package/dist/components/Toggle.d.ts +11 -0
  76. package/dist/components/ToggleGroup.d.ts +12 -0
  77. package/dist/components/Tooltip.d.ts +9 -0
  78. package/dist/components/calendar/Calendar.d.ts +6 -0
  79. package/dist/components/calendar/getCalendarClassNames.d.ts +3 -0
  80. package/dist/components/calendar/index.d.ts +1 -0
  81. package/dist/components/calendar/index.js +10 -0
  82. package/dist/components/calendar/types.d.ts +9 -0
  83. package/dist/components/carousel/Carousel.d.ts +9 -0
  84. package/dist/components/carousel/CarouselContext.d.ts +2 -0
  85. package/dist/components/carousel/hooks/useCarousel.d.ts +2 -0
  86. package/dist/components/carousel/index.d.ts +3 -0
  87. package/dist/components/carousel/index.js +207 -0
  88. package/dist/components/carousel/types.d.ts +23 -0
  89. package/dist/components/chart/Chart.d.ts +10 -0
  90. package/dist/components/chart/ChartContext.d.ts +2 -0
  91. package/dist/components/chart/ChartStyle.d.ts +3 -0
  92. package/dist/components/chart/getPayloadConfigFromPayload.d.ts +2 -0
  93. package/dist/components/chart/hooks/useChart.d.ts +2 -0
  94. package/dist/components/chart/index.d.ts +3 -0
  95. package/dist/components/chart/index.js +284 -0
  96. package/dist/components/chart/types.d.ts +50 -0
  97. package/dist/components/command/Command.d.ts +21 -0
  98. package/dist/components/command/index.d.ts +1 -0
  99. package/dist/components/command/index.js +142 -0
  100. package/dist/components/input-otp/InputOTP.d.ts +12 -0
  101. package/dist/components/input-otp/index.d.ts +1 -0
  102. package/dist/components/input-otp/index.js +303 -0
  103. package/dist/components/message-scroller/MessageScroller.d.ts +16 -0
  104. package/dist/components/message-scroller/hooks/useMessageScroller.d.ts +1 -0
  105. package/dist/components/message-scroller/hooks/useMessageScrollerScrollable.d.ts +1 -0
  106. package/dist/components/message-scroller/hooks/useMessageScrollerVisibility.d.ts +1 -0
  107. package/dist/components/message-scroller/index.d.ts +5 -0
  108. package/dist/components/message-scroller/index.js +600 -0
  109. package/dist/components/persian-calendar/PersianCalendar.d.ts +6 -0
  110. package/dist/components/persian-calendar/index.d.ts +1 -0
  111. package/dist/components/persian-calendar/index.js +36 -0
  112. package/dist/components/questionnaire/Questionnaire.d.ts +20 -0
  113. package/dist/components/questionnaire/index.d.ts +2 -0
  114. package/dist/components/questionnaire/index.js +747 -0
  115. package/dist/components/resizable/Resizable.d.ts +10 -0
  116. package/dist/components/resizable/SplitView.d.ts +12 -0
  117. package/dist/components/resizable/index.d.ts +2 -0
  118. package/dist/components/resizable/index.js +147 -0
  119. package/dist/components/sonner/Sonner.d.ts +7 -0
  120. package/dist/components/sonner/hooks/useSonner.d.ts +1 -0
  121. package/dist/components/sonner/index.d.ts +2 -0
  122. package/dist/components/sonner/index.js +1273 -0
  123. package/dist/density/DensityContext.d.ts +2 -0
  124. package/dist/density/types.d.ts +4 -0
  125. package/dist/drag-drop/DragDropContext.d.ts +2 -0
  126. package/dist/drag-drop/types.d.ts +45 -0
  127. package/dist/drawer/DrawerContext.d.ts +2 -0
  128. package/dist/drawer/types.d.ts +7 -0
  129. package/dist/fonts.css +1 -0
  130. package/dist/hooks/useComboboxAnchor.d.ts +2 -0
  131. package/dist/hooks/useDensity.d.ts +2 -0
  132. package/dist/hooks/useDragDrop.d.ts +2 -0
  133. package/dist/hooks/useDragSource.d.ts +2 -0
  134. package/dist/hooks/useDrawer.d.ts +2 -0
  135. package/dist/hooks/useDropTarget.d.ts +2 -0
  136. package/dist/hooks/useMediaQuery.d.ts +1 -0
  137. package/dist/hooks/useObjectURL.d.ts +1 -0
  138. package/dist/hooks/useSidebar.d.ts +2 -0
  139. package/dist/hooks/useTheme.d.ts +2 -0
  140. package/dist/hooks/useToastManager.d.ts +2 -0
  141. package/dist/index.d.ts +82 -0
  142. package/dist/index.js +4908 -0
  143. package/dist/menu/types.d.ts +14 -0
  144. package/dist/message/MessageContext.d.ts +2 -0
  145. package/dist/message/types.d.ts +7 -0
  146. package/dist/sidebar/SidebarContext.d.ts +2 -0
  147. package/dist/sidebar/types.d.ts +32 -0
  148. package/dist/theme/ThemeContext.d.ts +2 -0
  149. package/dist/theme/types.d.ts +8 -0
  150. package/dist/theme.css +454 -0
  151. package/dist/toggle-group/ToggleGroupContext.d.ts +2 -0
  152. package/dist/toggle-group/types.d.ts +5 -0
  153. package/dist/typeset.css +444 -0
  154. package/dist/utils/cn.d.ts +2 -0
  155. package/package.json +193 -4
  156. package/patches/@shadcn%2Freact@0.3.1.patch +35 -0
  157. package/patches/input-otp@1.5.0.patch +20 -0
  158. package/patches/sonner@2.0.8.patch +87 -0
@@ -0,0 +1,14 @@
1
+ import type { Menu } from "@base-ui/react/menu";
2
+ import type { IDensityProps } from "../density/types.js";
3
+ interface IMenuInsetProps extends IDensityProps {
4
+ inset?: boolean;
5
+ }
6
+ interface IMenuItemOptions extends IMenuInsetProps {
7
+ variant?: "default" | "destructive";
8
+ }
9
+ export type MenuLabelProps = Menu.GroupLabel.Props & IMenuInsetProps;
10
+ export type MenuItemProps = Menu.Item.Props & IMenuItemOptions;
11
+ export type MenuSubTriggerProps = Menu.SubmenuTrigger.Props & IMenuInsetProps;
12
+ export type MenuCheckboxItemProps = Menu.CheckboxItem.Props & IMenuInsetProps;
13
+ export type MenuRadioItemProps = Menu.RadioItem.Props & IMenuInsetProps;
14
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { IMessageContextValue } from "./types.js";
2
+ export declare const MessageContext: import("react").Context<IMessageContextValue | null>;
@@ -0,0 +1,7 @@
1
+ import type { CSSProperties } from "react";
2
+ export interface IMessageContextValue {
3
+ setFooterOffset: (offset: number) => void;
4
+ }
5
+ export type MessageStyle = CSSProperties & {
6
+ "--message-footer-offset": string;
7
+ };
@@ -0,0 +1,2 @@
1
+ import type { SidebarContextProps } from "./types.js";
2
+ export declare const SidebarContext: import("react").Context<SidebarContextProps | null>;
@@ -0,0 +1,32 @@
1
+ import type { CSSProperties, Dispatch, SetStateAction } from "react";
2
+ import type { IDensityProps } from "../density/types.js";
3
+ export type SidebarPartState = IDensityProps & {
4
+ slot: string;
5
+ sidebar: string;
6
+ };
7
+ export type SidebarMenuButtonState = SidebarPartState & {
8
+ active: boolean;
9
+ size: "default" | "sm" | "lg" | null;
10
+ };
11
+ export type SidebarMenuSubButtonState = SidebarPartState & {
12
+ active: boolean;
13
+ size: "sm" | "md";
14
+ };
15
+ export type SidebarContextProps = {
16
+ state: "expanded" | "collapsed";
17
+ open: boolean;
18
+ setOpen: Dispatch<SetStateAction<boolean>>;
19
+ openMobile: boolean;
20
+ setOpenMobile: Dispatch<SetStateAction<boolean>>;
21
+ isMobile: boolean;
22
+ toggleSidebar: () => void;
23
+ mobileWidth: string;
24
+ };
25
+ export interface SidebarStyle extends CSSProperties {
26
+ "--sidebar-width"?: string;
27
+ "--sidebar-width-mobile"?: string;
28
+ "--sidebar-width-icon"?: string;
29
+ }
30
+ export interface SidebarSkeletonStyle extends CSSProperties {
31
+ "--skeleton-width": string;
32
+ }
@@ -0,0 +1,2 @@
1
+ import type { IThemeContextValue } from "./types.js";
2
+ export declare const ThemeContext: import("react").Context<IThemeContextValue | null>;
@@ -0,0 +1,8 @@
1
+ import type { TernaryDarkMode } from "usehooks-ts";
2
+ export type ThemeMode = TernaryDarkMode;
3
+ export type ResolvedTheme = "light" | "dark";
4
+ export interface IThemeContextValue {
5
+ theme: ThemeMode;
6
+ resolvedTheme: ResolvedTheme;
7
+ setTheme: (theme: ThemeMode) => void;
8
+ }
package/dist/theme.css ADDED
@@ -0,0 +1,454 @@
1
+ @import "tw-animate-css";
2
+
3
+ @custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));
4
+
5
+ @theme inline {
6
+ --color-background: var(--background);
7
+ --color-foreground: var(--foreground);
8
+ --color-card: var(--card);
9
+ --color-card-foreground: var(--card-foreground);
10
+ --color-popover: var(--popover);
11
+ --color-popover-foreground: var(--popover-foreground);
12
+ --color-primary: var(--primary);
13
+ --color-primary-foreground: var(--primary-foreground);
14
+ --color-secondary: var(--secondary);
15
+ --color-secondary-foreground: var(--secondary-foreground);
16
+ --color-muted: var(--muted);
17
+ --color-muted-foreground: var(--muted-foreground);
18
+ --color-faint-foreground: var(--faint-foreground);
19
+ --color-accent: var(--accent);
20
+ --color-accent-foreground: var(--accent-foreground);
21
+ --color-destructive: var(--destructive);
22
+ --color-destructive-foreground: var(--destructive-foreground);
23
+ --color-destructive-soft: var(--destructive-soft);
24
+ --color-success: var(--success);
25
+ --color-success-foreground: var(--success-foreground);
26
+ --color-warning: var(--warning);
27
+ --color-warning-foreground: var(--warning-foreground);
28
+ --color-border: var(--border);
29
+ --color-input: var(--input);
30
+ --color-ring: var(--ring);
31
+ --color-frame-edge: var(--frame-edge);
32
+ --color-frame-halo: var(--frame-halo);
33
+ --color-backdrop: var(--backdrop);
34
+ --color-terminal-background: var(--terminal-background);
35
+ --color-sidebar: var(--sidebar);
36
+ --color-sidebar-foreground: var(--sidebar-foreground);
37
+ --color-sidebar-primary: var(--sidebar-primary);
38
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
39
+ --color-sidebar-accent: var(--sidebar-accent);
40
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
41
+ --color-sidebar-border: var(--sidebar-border);
42
+ --color-sidebar-ring: var(--sidebar-ring);
43
+ --font-sans: var(--ag-font);
44
+ --font-mono: var(--ag-font);
45
+ --text-xs: var(--ag-text-xs);
46
+ --text-sm: var(--ag-control-text);
47
+ --text-base: var(--ag-text);
48
+ --text-lg: var(--ag-heading);
49
+ --radius-xs: 2px;
50
+ --radius-sm: 2px;
51
+ --radius-md: 4px;
52
+ --radius-lg: 4px;
53
+ --radius-xl: 4px;
54
+ --spacing-control: var(--ag-control-h);
55
+ --spacing-control-xs: calc(var(--ag-control-h) - 4px);
56
+ --spacing-control-sm: calc(var(--ag-control-h) - 2px);
57
+ --spacing-control-lg: calc(var(--ag-control-h) + 4px);
58
+ --spacing-control-x: var(--ag-control-x);
59
+ --spacing-control-gap: var(--ag-control-gap);
60
+ --spacing-tag: var(--ag-tag-h);
61
+ --spacing-tag-x: var(--ag-tag-x);
62
+ --spacing-panel: var(--ag-panel-padding);
63
+ --spacing-field-gap: var(--ag-field-gap);
64
+ --shadow-frame: 0 0 0 1px var(--frame-halo), var(--ag-shadow);
65
+ }
66
+
67
+ @layer base {
68
+ :root {
69
+ --ag-font: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
70
+ --radius: 4px;
71
+ --sidebar: var(--background);
72
+ --sidebar-foreground: var(--foreground);
73
+ --sidebar-primary: var(--primary);
74
+ --sidebar-primary-foreground: var(--primary-foreground);
75
+ --sidebar-accent: var(--accent);
76
+ --sidebar-accent-foreground: var(--accent-foreground);
77
+ --sidebar-border: var(--border);
78
+ --sidebar-ring: var(--ring);
79
+ --ag-text-xs: 11px;
80
+ --ag-control-text: 12px;
81
+ --ag-text: 14px;
82
+ --ag-heading: 18px;
83
+ --ag-leading: 1.65;
84
+ --ag-control-h: 28px;
85
+ --ag-control-x: 10px;
86
+ --ag-control-gap: 6px;
87
+ --ag-tag-h: 18px;
88
+ --ag-tag-x: 5px;
89
+ --ag-panel-padding: 16px;
90
+ --ag-panel-padding-sm: 12px;
91
+ --ag-field-gap: 20px;
92
+ color-scheme: dark;
93
+ --background: #121417;
94
+ --foreground: #eceff3;
95
+ --card: #121417;
96
+ --card-foreground: #eceff3;
97
+ --popover: #121417;
98
+ --popover-foreground: #eceff3;
99
+ --primary: #ff5cd6;
100
+ --primary-foreground: #1a0014;
101
+ --secondary: #1c1f24;
102
+ --secondary-foreground: #eceff3;
103
+ --muted: #282c33;
104
+ --muted-foreground: #a3abb6;
105
+ --faint-foreground: #929ba7;
106
+ --accent: #282c33;
107
+ --accent-foreground: #eceff3;
108
+ --destructive: #ff6159;
109
+ --destructive-foreground: #1f0000;
110
+ --destructive-soft: rgb(255 97 89 / 0.16);
111
+ --success: #3ddc84;
112
+ --success-foreground: #00210f;
113
+ --warning: #ffb224;
114
+ --warning-foreground: #231500;
115
+ --border: #353b44;
116
+ --input: #6f7783;
117
+ --ring: #ff5cd6;
118
+ --frame-edge: rgb(255 255 255 / 0.24);
119
+ --frame-halo: rgb(0 0 0 / 0.92);
120
+ --backdrop: rgb(4 5 7 / 0.7);
121
+ --terminal-background: #0b0c0f;
122
+ --ag-shadow: 0 6px 22px rgb(0 0 0 / 0.5);
123
+ }
124
+
125
+ [data-theme="dark"] {
126
+ color-scheme: dark;
127
+ --background: #121417;
128
+ --foreground: #eceff3;
129
+ --card: #121417;
130
+ --card-foreground: #eceff3;
131
+ --popover: #121417;
132
+ --popover-foreground: #eceff3;
133
+ --primary: #ff5cd6;
134
+ --primary-foreground: #1a0014;
135
+ --secondary: #1c1f24;
136
+ --secondary-foreground: #eceff3;
137
+ --muted: #282c33;
138
+ --muted-foreground: #a3abb6;
139
+ --faint-foreground: #929ba7;
140
+ --accent: #282c33;
141
+ --accent-foreground: #eceff3;
142
+ --destructive: #ff6159;
143
+ --destructive-foreground: #1f0000;
144
+ --destructive-soft: rgb(255 97 89 / 0.16);
145
+ --success: #3ddc84;
146
+ --success-foreground: #00210f;
147
+ --warning: #ffb224;
148
+ --warning-foreground: #231500;
149
+ --border: #353b44;
150
+ --input: #6f7783;
151
+ --ring: #ff5cd6;
152
+ --frame-edge: rgb(255 255 255 / 0.24);
153
+ --frame-halo: rgb(0 0 0 / 0.92);
154
+ --backdrop: rgb(4 5 7 / 0.7);
155
+ --terminal-background: #0b0c0f;
156
+ --ag-shadow: 0 6px 22px rgb(0 0 0 / 0.5);
157
+ }
158
+
159
+ [data-theme="light"] {
160
+ color-scheme: light;
161
+ --background: #fcfcfd;
162
+ --foreground: #0c0e11;
163
+ --card: #fcfcfd;
164
+ --card-foreground: #0c0e11;
165
+ --popover: #fcfcfd;
166
+ --popover-foreground: #0c0e11;
167
+ --primary: #b8168c;
168
+ --primary-foreground: #ffffff;
169
+ --secondary: #eef0f3;
170
+ --secondary-foreground: #0c0e11;
171
+ --muted: #e0e4ea;
172
+ --muted-foreground: #4b535e;
173
+ --faint-foreground: #5b6470;
174
+ --accent: #e0e4ea;
175
+ --accent-foreground: #0c0e11;
176
+ --destructive: #cc1f1f;
177
+ --destructive-foreground: #ffffff;
178
+ --destructive-soft: rgb(204 31 31 / 0.1);
179
+ --success: #0a7d40;
180
+ --success-foreground: #ffffff;
181
+ --warning: #a35400;
182
+ --warning-foreground: #ffffff;
183
+ --border: #c7ccd4;
184
+ --input: #747c88;
185
+ --ring: #b8168c;
186
+ --frame-edge: rgb(0 0 0 / 0.42);
187
+ --frame-halo: rgb(255 255 255 / 0.95);
188
+ --backdrop: rgb(10 12 16 / 0.55);
189
+ --terminal-background: #ffffff;
190
+ --ag-shadow: 0 6px 22px rgb(0 0 0 / 0.3);
191
+ }
192
+
193
+ [data-density="comfortable"] {
194
+ --ag-text: 14px;
195
+ --ag-heading: 18px;
196
+ --ag-leading: 1.65;
197
+ --ag-control-h: 28px;
198
+ --ag-control-x: 10px;
199
+ --ag-control-gap: 6px;
200
+ --ag-tag-h: 18px;
201
+ --ag-tag-x: 5px;
202
+ --ag-panel-padding: 16px;
203
+ --ag-panel-padding-sm: 12px;
204
+ --ag-field-gap: 20px;
205
+ }
206
+
207
+ [data-density="compact"] {
208
+ --ag-text: 12px;
209
+ --ag-heading: 13px;
210
+ --ag-leading: 1.35;
211
+ --ag-control-h: 20px;
212
+ --ag-control-x: 6px;
213
+ --ag-control-gap: 4px;
214
+ --ag-tag-h: 16px;
215
+ --ag-tag-x: 4px;
216
+ --ag-panel-padding: 8px;
217
+ --ag-panel-padding-sm: 6px;
218
+ --ag-field-gap: 8px;
219
+ }
220
+
221
+ * {
222
+ @apply border-border;
223
+ }
224
+ body {
225
+ position: relative;
226
+ @apply bg-background text-foreground font-sans text-base;
227
+ }
228
+
229
+ @media (prefers-reduced-motion: reduce) {
230
+ *,
231
+ *::before,
232
+ *::after {
233
+ animation-duration: 0s !important;
234
+ animation-iteration-count: 1 !important;
235
+ transition-duration: 0s !important;
236
+ scroll-behavior: auto !important;
237
+ }
238
+ }
239
+ }
240
+
241
+ @utility no-scrollbar {
242
+ scrollbar-width: none;
243
+
244
+ &::-webkit-scrollbar {
245
+ display: none;
246
+ }
247
+ }
248
+
249
+ @property --scroll-fade-s {
250
+ syntax: "<length-percentage>";
251
+ inherits: false;
252
+ initial-value: 0px;
253
+ }
254
+ @property --scroll-fade-e {
255
+ syntax: "<length-percentage>";
256
+ inherits: false;
257
+ initial-value: 0px;
258
+ }
259
+ @property --scroll-fade-mask {
260
+ syntax: "*";
261
+ inherits: false;
262
+ }
263
+
264
+ @theme inline {
265
+ @keyframes scroll-fade-reveal-s {
266
+ from {
267
+ --scroll-fade-s: 0px;
268
+ }
269
+ to {
270
+ --scroll-fade-s: var(--_scroll-fade-size-s, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
271
+ }
272
+ }
273
+ @keyframes scroll-fade-reveal-e {
274
+ from {
275
+ --scroll-fade-e: var(--_scroll-fade-size-e, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
276
+ }
277
+ to {
278
+ --scroll-fade-e: 0px;
279
+ }
280
+ }
281
+ }
282
+
283
+ @utility scroll-fade-x {
284
+ --_scroll-fade-size-s: var(--scroll-fade-s-size, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
285
+ --_scroll-fade-size-e: var(--scroll-fade-e-size, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
286
+ --scroll-fade-inline: linear-gradient(
287
+ to right,
288
+ transparent 0,
289
+ #000 var(--scroll-fade-s, 0px),
290
+ #000 calc(100% - var(--scroll-fade-e, 0px)),
291
+ transparent 100%
292
+ );
293
+ &:dir(rtl) {
294
+ --scroll-fade-inline: linear-gradient(
295
+ to left,
296
+ transparent 0,
297
+ #000 var(--scroll-fade-s, 0px),
298
+ #000 calc(100% - var(--scroll-fade-e, 0px)),
299
+ transparent 100%
300
+ );
301
+ }
302
+ -webkit-mask-image: var(--scroll-fade-mask, var(--scroll-fade-inline));
303
+ mask-image: var(--scroll-fade-mask, var(--scroll-fade-inline));
304
+ -webkit-mask-composite: source-in;
305
+ mask-composite: intersect;
306
+ -webkit-mask-repeat: no-repeat;
307
+ mask-repeat: no-repeat;
308
+
309
+ @supports (animation-timeline: scroll()) {
310
+ animation:
311
+ scroll-fade-reveal-s 1ms ease-in-out,
312
+ scroll-fade-reveal-e 1ms ease-in-out;
313
+ animation-timeline: scroll(self inline), scroll(self inline);
314
+ animation-range:
315
+ 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
316
+ calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
317
+ animation-fill-mode: both;
318
+ }
319
+
320
+ @supports not (animation-timeline: scroll()) {
321
+ --scroll-fade-s: var(--_scroll-fade-size-s);
322
+ --scroll-fade-e: var(--_scroll-fade-size-e);
323
+ }
324
+ }
325
+
326
+ @property --shimmer-angle {
327
+ syntax: "<angle>";
328
+ inherits: true;
329
+ initial-value: 20deg;
330
+ }
331
+ @property --shimmer-image {
332
+ syntax: "*";
333
+ inherits: false;
334
+ }
335
+ @property --shimmer-text-fill {
336
+ syntax: "*";
337
+ inherits: false;
338
+ }
339
+
340
+ @theme inline {
341
+ @keyframes tw-shimmer {
342
+ from {
343
+ background-position: 100% 0;
344
+ }
345
+ to {
346
+ background-position: 0 0;
347
+ }
348
+ }
349
+ }
350
+
351
+ @utility shimmer {
352
+ --_spread: var(--shimmer-spread, calc(3ch + 40px));
353
+ --_base: currentColor;
354
+ --_highlight: var(--shimmer-color, oklch(from currentColor l c h / calc(alpha* 0.2)));
355
+
356
+ background-image: var(
357
+ --shimmer-image,
358
+ linear-gradient(
359
+ calc(90deg + var(--shimmer-angle)),
360
+ var(--_base) calc(50% - var(--_spread)),
361
+ color-mix(in oklch, var(--_highlight), var(--_base) 50%) calc(50% - var(--_spread) * 0.5),
362
+ var(--_highlight) 50%,
363
+ color-mix(in oklch, var(--_highlight), var(--_base) 50%) calc(50% + var(--_spread) * 0.5),
364
+ var(--_base) calc(50% + var(--_spread))
365
+ )
366
+ );
367
+ background-repeat: no-repeat;
368
+ background-size: calc(200% + var(--_spread) * 2) 100%;
369
+ background-position: 0 0;
370
+ background-clip: text;
371
+ -webkit-background-clip: text;
372
+ -webkit-text-fill-color: var(--shimmer-text-fill, transparent);
373
+ animation: tw-shimmer var(--shimmer-duration, 2s) linear infinite;
374
+
375
+ &:dir(rtl) {
376
+ animation-direction: reverse;
377
+ }
378
+
379
+ @media (prefers-reduced-motion: reduce) {
380
+ animation: none;
381
+ background-image: none;
382
+ -webkit-text-fill-color: currentColor;
383
+ }
384
+ }
385
+
386
+ @utility shimmer-once {
387
+ animation-iteration-count: 1;
388
+ }
389
+
390
+ @utility shimmer-reverse {
391
+ animation-direction: reverse;
392
+ }
393
+
394
+ @utility shimmer-none {
395
+ --shimmer-image: none;
396
+ --shimmer-text-fill: currentColor;
397
+ }
398
+
399
+ @utility shimmer-color-* {
400
+ --shimmer-color: --value(--color, [color]);
401
+ --shimmer-color: color-mix(in oklch, --value(--color, [color]) calc(--modifier(integer) * 1%), transparent);
402
+ }
403
+
404
+ @utility shimmer-duration-* {
405
+ --shimmer-duration: calc(--value(integer) * 1ms);
406
+ }
407
+
408
+ @utility shimmer-spread-* {
409
+ --shimmer-spread: calc(var(--spacing) * --value(integer));
410
+ --shimmer-spread: --value([length], [percentage]);
411
+ }
412
+
413
+ @utility shimmer-angle-* {
414
+ --shimmer-angle: calc(--value(integer) * 1deg);
415
+ }
416
+
417
+ @property --scroll-fade-b {
418
+ syntax: "<length-percentage>";
419
+ inherits: false;
420
+ initial-value: 0px;
421
+ }
422
+
423
+ @theme inline {
424
+ @keyframes scroll-fade-reveal-b {
425
+ from {
426
+ --scroll-fade-b: var(--_scroll-fade-size-b, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
427
+ }
428
+ to {
429
+ --scroll-fade-b: 0px;
430
+ }
431
+ }
432
+ }
433
+
434
+ @utility scroll-fade-b {
435
+ --_scroll-fade-size-b: var(--scroll-fade-b-size, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
436
+ --scroll-fade-mask: linear-gradient(to bottom, #000 0, #000 calc(100% - var(--scroll-fade-b, 0px)), transparent 100%);
437
+ -webkit-mask-image: var(--scroll-fade-mask);
438
+ mask-image: var(--scroll-fade-mask);
439
+ -webkit-mask-composite: source-in;
440
+ mask-composite: intersect;
441
+ -webkit-mask-repeat: no-repeat;
442
+ mask-repeat: no-repeat;
443
+
444
+ @supports (animation-timeline: scroll()) {
445
+ animation: scroll-fade-reveal-b 1ms ease-in-out;
446
+ animation-timeline: scroll(self y);
447
+ animation-range: calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
448
+ animation-fill-mode: both;
449
+ }
450
+
451
+ @supports not (animation-timeline: scroll()) {
452
+ --scroll-fade-b: var(--_scroll-fade-size-b);
453
+ }
454
+ }
@@ -0,0 +1,2 @@
1
+ import type { IToggleGroupContext } from "./types.js";
2
+ export declare const ToggleGroupContext: import("react").Context<IToggleGroupContext>;
@@ -0,0 +1,5 @@
1
+ import type { VariantProps } from "class-variance-authority";
2
+ import type { toggleVariants } from "../components/Toggle.js";
3
+ export interface IToggleGroupContext extends VariantProps<typeof toggleVariants> {
4
+ spacing: number;
5
+ }