@typlog/ui 0.14.0 → 0.16.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.
package/addons.css CHANGED
@@ -1,163 +1,289 @@
1
1
 
2
+ @layer components {
2
3
  .ui-SocialButton:where(.r-variant-classic) {
3
- background-color: var(--social-button-background-color);
4
- color: var(--social-button-text-color);
5
- box-shadow: 0px 1px 2px 0px #0A0D120D, 0px -2px 0px 0px #0A0D120D inset, 0px 0px 0px 1px #0A0D122E inset;
6
- --social-button-background-color: black;
7
- --social-button-text-color: white;
8
- --social-button-hover-filter: brightness(0.92) saturate(1.1);
4
+ background-color: var(--social-button-background-color);
5
+ color: var(--social-button-text-color);
6
+ box-shadow: 0px 1px 2px 0px #0A0D120D, 0px -2px 0px 0px #0A0D120D inset, 0px 0px 0px 1px #0A0D122E inset;
7
+ --social-button-background-color: black;
8
+ --social-button-text-color: white;
9
+ --social-button-hover-filter: brightness(0.92) saturate(1.1);
9
10
  }
10
11
  @media (hover: hover) {
11
12
  .ui-SocialButton:where(:hover) {
12
- filter: var(--social-button-hover-filter);
13
+ filter: var(--social-button-hover-filter);
13
14
  }
14
15
  }
15
16
  .ui-SocialButton:where(.r-brand-google) {
16
- --social-button-background-color: var(--color-background);
17
- --social-button-text-color: var(--gray-12);
17
+ --social-button-background-color: var(--color-background);
18
+ --social-button-text-color: var(--gray-12);
18
19
  }
19
20
  .ui-SocialButton:where(.r-brand-facebook) {
20
- --social-button-background-color: #1877F2;
21
+ --social-button-background-color: #1877F2;
21
22
  }
22
23
  .ui-SocialButton:where(.r-brand-github) {
23
- --social-button-background-color: #333;
24
+ --social-button-background-color: #333;
24
25
  }
25
26
  .ui-SocialButton:where(.r-variant-classic):where(.r-brand-slack) {
26
- --social-button-background-color: #611f69;
27
+ --social-button-background-color: #611f69;
27
28
  }
28
29
  .ui-SocialButton:where(.r-variant-classic):where(:focus-visible) {
29
- outline: 2px solid var(--focus-8);
30
- outline-offset: 2px;
30
+ outline: 2px solid var(--focus-8);
31
+ outline-offset: 2px;
31
32
  }
32
33
  .ui-SocialButton:where(.r-variant-classic):where(:active) {
33
- box-shadow: var(--shadow-1);
34
+ box-shadow: var(--shadow-1);
34
35
  }
35
36
  .ui-SocialButton:where(.r-variant-classic):where([data-disabled]) {
36
- color: var(--gray-a10);
37
- background-color: var(--gray-a2);
37
+ color: var(--gray-a10);
38
+ background-color: var(--gray-a2);
38
39
  }
39
-
40
- .ui-IconifySample {
41
- display: flex;
42
- gap: var(--space-4);
43
- padding: var(--space-2);
44
- justify-content: space-between;
45
- align-items: center;
46
- text-align: left;
47
- border-radius: var(--radius-3);
48
- background: var(--gray-a2);
49
- }
50
- .ui-IconifySample:hover {
51
- background: var(--gray-a3);
52
- }
53
- .ui-IconifySampleInfo {
54
- display: flex;
55
- flex-direction: column;
56
- gap: var(--space-1);
57
- }
58
- .ui-IconifySampleInfo > strong {
59
- font-weight: var(--font-weight-medium);
60
- font-size: var(--font-size-2);
61
- line-height: var(--line-height-2);
62
- }
63
- .ui-IconifySampleInfo > span {
64
- font-weight: var(--font-weight-regular);
65
- font-size: var(--font-size-1);
66
- line-height: var(--line-height-1);
67
- color: var(--gray-a10);
68
- }
69
- .ui-IconifySampleIcons {
70
- display: grid;
71
- grid-template-columns: repeat(3, minmax(0, 1fr));
72
- gap: var(--space-2);
73
40
  }
74
41
 
75
- .ui-IconifyCollection {
76
- container-name: icon-collection;
77
- container-type: inline-size;
78
- }
79
- .ui-IconifyCollectionForm {
80
- display: flex;
81
- flex-grow: 1;
82
- align-items: center;
83
- gap: var(--space-4);
84
- }
85
- .ui-IconifyCollectionForm .ui-TextField {
86
- flex-grow: 1;
87
- }
88
- .ui-IconifyCollectionGroupsHead {
89
- display: flex;
90
- flex-direction: column;
91
- align-items: center;
92
- gap: var(--space-8);
93
- margin-bottom: var(--space-4);
42
+ @layer components {
43
+ .ui-IconGrid {
44
+ display: flex;
45
+ min-width: 0;
46
+ flex-direction: column;
47
+ gap: var(--space-3);
48
+ }
49
+ .ui-IconGridHeader {
50
+ display: flex;
51
+ gap: var(--space-4);
52
+ align-items: center;
53
+ }
54
+ .ui-IconGridSearch {
55
+ width: 100%;
56
+ }
57
+ .ui-IconGridTabs {
58
+ display: inline-flex;
59
+ align-self: flex-start;
60
+ max-width: 100%;
61
+ overflow-x: auto;
62
+ padding: 2px;
63
+ gap: 2px;
64
+ background: var(--gray-a3);
65
+ border-radius: var(--radius-3);
66
+ }
67
+ .ui-IconGridTabs button {
68
+ padding: var(--space-1) var(--space-3);
69
+ color: var(--gray-a11);
70
+ font-size: var(--font-size-1);
71
+ line-height: var(--line-height-1);
72
+ white-space: nowrap;
73
+ background: transparent;
74
+ border: 1px solid transparent;
75
+ border-radius: var(--radius-2);
76
+ cursor: pointer;
77
+ }
78
+ .ui-IconGridTabs button:hover,
79
+ .ui-IconGridTabs button.is-active {
80
+ color: var(--gray-12);
81
+ background: var(--color-panel-solid);
82
+ border-color: var(--gray-a5);
83
+ }
84
+ .ui-IconGridTabs button:focus-visible,
85
+ .ui-IconGridCell:focus-visible {
86
+ outline: 2px solid var(--focus-8);
87
+ outline-offset: 2px;
88
+ }
89
+ .ui-IconGridViewport {
90
+ position: relative;
91
+ box-sizing: border-box;
92
+ min-width: 0;
93
+ overflow: auto;
94
+ overscroll-behavior: contain;
95
+ border-radius: var(--radius-3);
96
+ outline: none;
97
+ }
98
+ .ui-IconGridViewport:focus-visible {
99
+ outline: 2px solid var(--focus-8);
100
+ outline-offset: 2px;
101
+ }
102
+ .ui-IconGridContent {
103
+ position: relative;
104
+ width: 100%;
105
+ }
106
+ .ui-IconGridRow {
107
+ position: absolute;
108
+ top: 0;
109
+ left: 0;
110
+ display: flex;
111
+ width: 100%;
112
+ align-items: stretch;
113
+ }
114
+ .ui-IconGridCell {
115
+ display: grid;
116
+ flex: 0 0 auto;
117
+ place-items: center;
118
+ min-width: 0;
119
+ height: 100%;
120
+ padding: var(--space-2);
121
+ color: var(--gray-12);
122
+ background: transparent;
123
+ border: 1px solid transparent;
124
+ border-radius: var(--radius-3);
125
+ cursor: pointer;
126
+ }
127
+ .ui-IconGridCell:hover,
128
+ .ui-IconGridCell[aria-pressed='true'] {
129
+ background: var(--gray-a3);
130
+ }
131
+ .ui-IconGridMessage {
132
+ display: grid;
133
+ height: 100%;
134
+ min-height: 8rem;
135
+ place-items: center;
136
+ padding: var(--space-6);
137
+ color: var(--gray-a11);
138
+ text-align: center;
94
139
  }
95
- @container icon-collection (min-width: 768px) {
96
- .ui-IconifyCollectionGroupsHead {
97
- flex-direction: row;
98
140
  }
141
+
142
+ @layer components {
143
+ .ui-IconCollection {
144
+ container-name: icon-collection;
145
+ container-type: inline-size;
146
+ min-width: 0;
147
+ }
148
+ .ui-IconCollectionBrowser {
149
+ box-sizing: border-box;
150
+ min-width: 0;
151
+ overflow: auto;
152
+ overscroll-behavior: contain;
153
+ border-radius: var(--radius-3);
154
+ outline: none;
155
+ }
156
+ .ui-IconCollectionBrowser:focus-visible {
157
+ outline: 2px solid var(--focus-8);
158
+ outline-offset: 2px;
159
+ }
160
+ .ui-IconCollectionToolbar {
161
+ display: flex;
162
+ flex-direction: column;
163
+ align-items: stretch;
164
+ gap: var(--space-4);
165
+ margin-bottom: var(--space-4);
166
+ }
167
+ .ui-IconCollectionFilter {
168
+ flex: 1 1 auto;
169
+ }
170
+ .ui-IconCollectionTitle,
171
+ .ui-IconCollectionGroupTitle {
172
+ font-weight: var(--font-weight-medium);
173
+ }
174
+ .ui-IconCollectionTitle {
175
+ font-size: var(--font-size-4);
176
+ line-height: var(--line-height-4);
177
+ }
178
+ .ui-IconCollectionGroupTitle span:last-child,
179
+ .ui-IconCollectionInfo span {
180
+ color: var(--gray-a10);
181
+ font-size: var(--font-size-1);
182
+ line-height: var(--line-height-1);
183
+ }
184
+ .ui-IconCollectionGroup {
185
+ margin-bottom: var(--space-4);
186
+ }
187
+ .ui-IconCollectionGroup:last-child {
188
+ margin-bottom: 0;
189
+ }
190
+ .ui-IconCollectionGroupTitle {
191
+ display: flex;
192
+ align-items: baseline;
193
+ gap: var(--space-1);
194
+ margin-bottom: var(--space-2);
195
+ font-size: var(--font-size-3);
196
+ line-height: var(--line-height-3);
197
+ }
198
+ .ui-IconCollectionCards {
199
+ display: grid;
200
+ grid-template-columns: repeat(1, minmax(0, 1fr));
201
+ gap: var(--space-2);
202
+ }
203
+ .ui-IconCollectionCard {
204
+ display: flex;
205
+ align-items: center;
206
+ justify-content: space-between;
207
+ gap: var(--space-3);
208
+ width: 100%;
209
+ padding: var(--space-2);
210
+ color: inherit;
211
+ text-align: start;
212
+ background: var(--gray-a2);
213
+ border: 1px solid transparent;
214
+ border-radius: var(--radius-3);
215
+ cursor: pointer;
216
+ }
217
+ .ui-IconCollectionCard:hover {
218
+ background: var(--gray-a3);
219
+ border-color: var(--accent-6);
220
+ }
221
+ .ui-IconCollectionCard:focus-visible {
222
+ outline: 2px solid var(--focus-8);
223
+ outline-offset: 2px;
224
+ }
225
+ .ui-IconCollectionInfo {
226
+ display: flex;
227
+ min-width: 0;
228
+ flex-direction: column;
229
+ gap: var(--space-1);
230
+ }
231
+ .ui-IconCollectionInfo strong {
232
+ overflow: hidden;
233
+ font-size: var(--font-size-2);
234
+ line-height: var(--line-height-2);
235
+ font-weight: var(--font-weight-medium);
236
+ text-overflow: ellipsis;
237
+ white-space: nowrap;
238
+ }
239
+ .ui-IconCollectionSamples {
240
+ display: grid;
241
+ flex: none;
242
+ grid-template-columns: repeat(3, minmax(0, 1fr));
243
+ gap: var(--space-2);
99
244
  }
100
- .ui-IconifyCollectionGroupsHead > h1 {
101
- font-weight: var(--font-weight-medium);
102
- font-size: var(--font-size-4);
103
- line-height: var(--line-height-4);
245
+ .ui-IconCollectionMessage {
246
+ display: grid;
247
+ min-height: 8rem;
248
+ place-items: center;
249
+ padding: var(--space-6);
250
+ color: var(--gray-a11);
251
+ text-align: center;
104
252
  }
105
- .ui-IconifyCollectionSample {
106
- margin-bottom: var(--space-4);
253
+ @container icon-collection (min-width: 768px) {
254
+ .ui-IconCollectionToolbar {
255
+ flex-direction: row;
256
+ align-items: center;
107
257
  }
108
- .ui-IconifyCollectionSampleGrid {
109
- margin-top: var(--space-2);
110
- display: grid;
111
- gap: var(--space-2);
112
- grid-template-columns: repeat(1, minmax(0, 1fr));
258
+ .ui-IconCollectionFilter {
259
+ max-width: 28rem;
113
260
  }
114
- @container icon-collection (min-width: 768px) {
115
- .ui-IconifyCollectionSampleGrid {
116
- grid-template-columns: repeat(2, minmax(0, 1fr));
261
+ .ui-IconCollectionCards {
262
+ grid-template-columns: repeat(2, minmax(0, 1fr));
117
263
  }
118
264
  }
119
265
  @container icon-collection (min-width: 1024px) {
120
- .ui-IconifyCollectionSampleGrid {
121
- grid-template-columns: repeat(3, minmax(0, 1fr));
266
+ .ui-IconCollectionCards {
267
+ grid-template-columns: repeat(3, minmax(0, 1fr));
122
268
  }
123
269
  }
124
270
  @container icon-collection (min-width: 1280px) {
125
- .ui-IconifyCollectionSampleGrid {
126
- grid-template-columns: repeat(4, minmax(0, 1fr));
127
- }
128
- }
129
- .ui-IconifyCollectionSuffixes {
130
- display: flex;
131
- flex-wrap: wrap;
132
- gap: var(--space-2);
133
- flex-grow: 1;
134
- margin-top: var(--space-4);
271
+ .ui-IconCollectionCards {
272
+ grid-template-columns: repeat(4, minmax(0, 1fr));
135
273
  }
136
- .ui-IconifyCollectionIconGrid {
137
- display: flex;
138
- flex-wrap: wrap;
139
- gap: var(--space-3);
140
- flex-grow: 1;
141
- margin-top: var(--space-4);
142
- margin-bottom: var(--space-4);
143
274
  }
144
- .ui-IconifyCollectionIconGrid button {
145
- border: 0;
146
- padding: var(--space-2);
147
- border-radius: max(var(--radius-2), var(--radius-full));
148
- }
149
- .ui-IconifyCollectionIconGrid button:hover {
150
- background-color: var(--gray-a4);
151
275
  }
152
276
 
277
+ @layer components {
153
278
  .ui-Turnstile {
154
- background: var(--gray-a3);
279
+ background: var(--gray-a3);
155
280
  }
156
281
  .ui-Turnstile:where(.r-size-normal) {
157
- width: 300px;
158
- height: 65px;
282
+ width: 300px;
283
+ height: 65px;
159
284
  }
160
285
  .ui-Turnstile:where(.r-size-compact) {
161
- width: 150px;
162
- height: 140px;
286
+ width: 150px;
287
+ height: 140px;
288
+ }
163
289
  }
package/addons.d.ts CHANGED
@@ -6,7 +6,84 @@ import { DefineComponent } from 'vue';
6
6
  import { PrimitiveProps } from 'reka-ui';
7
7
  import { PublicProps } from 'vue';
8
8
 
9
- declare type __VLS_WithTemplateSlots<T, S> = T & {
9
+ declare const __VLS_export: __VLS_WithSlots< DefineComponent<SocialButtonProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<SocialButtonProps> & Readonly<{}>, {
10
+ as: AsTag | Component;
11
+ size: "1" | "2" | "3" | "4";
12
+ variant: "classic" | "solid" | "soft" | "surface" | "outline";
13
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>, {
14
+ default?: (props: {}) => any;
15
+ }>;
16
+
17
+ declare const __VLS_export_2: DefineComponent<IconCollectionProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
18
+ select: (icon: string) => any;
19
+ "update:modelValue": (icon: string) => any;
20
+ "update:query": (query: string) => any;
21
+ "update:collection": (prefix: string) => any;
22
+ "update:filter": (filter: string) => any;
23
+ }, string, PublicProps, Readonly<IconCollectionProps> & Readonly<{
24
+ onSelect?: ((icon: string) => any) | undefined;
25
+ "onUpdate:modelValue"?: ((icon: string) => any) | undefined;
26
+ "onUpdate:query"?: ((query: string) => any) | undefined;
27
+ "onUpdate:collection"?: ((prefix: string) => any) | undefined;
28
+ "onUpdate:filter"?: ((filter: string) => any) | undefined;
29
+ }>, {
30
+ filter: string;
31
+ overscan: number;
32
+ height: string | number;
33
+ query: string;
34
+ iconSize: string | number;
35
+ cellSize: number;
36
+ collection: string;
37
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
38
+
39
+ declare const __VLS_export_3: __VLS_WithSlots_2< DefineComponent<IconGridProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
40
+ select: (icon: string) => any;
41
+ "update:modelValue": (icon: string) => any;
42
+ "update:query": (query: string) => any;
43
+ "update:activeCollection": (prefix: string) => any;
44
+ }, string, PublicProps, Readonly<IconGridProps> & Readonly<{
45
+ onSelect?: ((icon: string) => any) | undefined;
46
+ "onUpdate:modelValue"?: ((icon: string) => any) | undefined;
47
+ "onUpdate:query"?: ((query: string) => any) | undefined;
48
+ "onUpdate:activeCollection"?: ((prefix: string) => any) | undefined;
49
+ }>, {
50
+ overscan: number;
51
+ height: string | number;
52
+ collections: string[];
53
+ query: string;
54
+ activeCollection: string;
55
+ iconSize: string | number;
56
+ cellSize: number;
57
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>, {
58
+ 'header-leading'?: (props: {}) => any;
59
+ } & {
60
+ 'header-search'?: (props: {}) => any;
61
+ }>;
62
+
63
+ declare const __VLS_export_4: DefineComponent<TurnstileProps, {
64
+ render: () => Promise<void>;
65
+ reset: () => void;
66
+ remove: () => void;
67
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
68
+ "update:modelValue": (args_0: string) => any;
69
+ }, string, PublicProps, Readonly<TurnstileProps> & Readonly<{
70
+ "onUpdate:modelValue"?: ((args_0: string) => any) | undefined;
71
+ }>, {
72
+ size: "normal" | "compact";
73
+ theme: "light" | "dark" | "auto";
74
+ action: string;
75
+ resetInterval: number;
76
+ appearance: "always" | "execute" | "interaction-only";
77
+ renderOnMount: boolean;
78
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
79
+
80
+ declare type __VLS_WithSlots<T, S> = T & {
81
+ new (): {
82
+ $slots: S;
83
+ };
84
+ };
85
+
86
+ declare type __VLS_WithSlots_2<T, S> = T & {
10
87
  new (): {
11
88
  $slots: S;
12
89
  };
@@ -14,31 +91,120 @@ declare type __VLS_WithTemplateSlots<T, S> = T & {
14
91
 
15
92
  declare type BrandType = 'google' | 'facebook' | 'x' | 'github' | 'apple' | 'slack' | 'figma';
16
93
 
17
- export declare const IconifyCollection: DefineComponent<IconifyCollectionProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
18
- select: (icon: string) => any;
19
- }, string, PublicProps, Readonly<IconifyCollectionProps> & Readonly<{
20
- onSelect?: ((icon: string) => any) | undefined;
21
- }>, {
22
- perpage: number;
23
- iconSize: string | number;
24
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
94
+ export declare const IconCollection: typeof __VLS_export_2;
25
95
 
26
- export declare interface IconifyCollectionProps {
27
- prefix?: string;
28
- search?: string;
29
- perpage?: number;
96
+ export declare interface IconCollectionEmits {
97
+ (event: 'update:modelValue', icon: string): void;
98
+ (event: 'update:collection', prefix: string): void;
99
+ (event: 'update:query', query: string): void;
100
+ (event: 'update:filter', filter: string): void;
101
+ (event: 'select', icon: string): void;
102
+ }
103
+
104
+ export declare interface IconCollectionProps {
105
+ /** The selected icon name, such as `lucide:heart`. */
106
+ modelValue?: string;
107
+ /** The current icon set prefix. An empty value displays the collection catalog. */
108
+ collection?: string;
109
+ /** The current search query within the selected icon set. */
110
+ query?: string;
111
+ /** The current collection catalog filter. */
112
+ filter?: string;
113
+ /** Size of each rendered icon. @default 20 */
30
114
  iconSize?: string | number;
115
+ /** Width and height of each icon button. @default 40 */
116
+ cellSize?: number;
117
+ /** Height of the catalog or icon grid scroll viewport. @default 420 */
118
+ height?: string | number;
119
+ /** Number of extra icon rows rendered outside the viewport. @default 4 */
120
+ overscan?: number;
121
+ /** Classes for the component's stable visual parts. */
122
+ ui?: IconCollectionUI;
123
+ }
124
+
125
+ export declare interface IconCollectionUI {
126
+ base?: string;
127
+ browser?: string;
128
+ toolbar?: string;
129
+ title?: string;
130
+ filter?: string;
131
+ groups?: string;
132
+ group?: string;
133
+ groupTitle?: string;
134
+ cards?: string;
135
+ card?: string;
136
+ info?: string;
137
+ samples?: string;
138
+ message?: string;
139
+ back?: string;
140
+ grid?: IconGridUI;
141
+ }
142
+
143
+ export declare const IconGrid: typeof __VLS_export_3;
144
+
145
+ export declare interface IconGridEmits {
146
+ (event: 'update:modelValue', icon: string): void;
147
+ (event: 'update:query', query: string): void;
148
+ (event: 'update:activeCollection', prefix: string): void;
149
+ (event: 'select', icon: string): void;
150
+ }
151
+
152
+ export declare interface IconGridProps {
153
+ /** Iconify collection prefixes to display. */
154
+ collections?: string[];
155
+ /** The selected icon name, such as `lucide:heart`. */
156
+ modelValue?: string;
157
+ /** The current icon search query. */
158
+ query?: string;
159
+ /** Active collection prefix; an empty value displays all collections. */
160
+ activeCollection?: string;
161
+ /** Size of each rendered icon. @default 20 */
162
+ iconSize?: string | number;
163
+ /** Width and height of each icon button. @default 40 */
164
+ cellSize?: number;
165
+ /** Height of the scroll viewport. @default 420 */
166
+ height?: string | number;
167
+ /** Classes for the component's stable visual parts. */
168
+ ui?: IconGridUI;
169
+ /** Number of extra rows rendered outside the viewport. @default 4 */
170
+ overscan?: number;
171
+ }
172
+
173
+ export declare interface IconGridUI {
174
+ base?: string;
175
+ header?: string;
176
+ search?: string;
177
+ tabs?: string;
178
+ tab?: string;
179
+ viewport?: string;
180
+ content?: string;
181
+ cell?: string;
182
+ message?: string;
183
+ }
184
+
185
+ export declare interface IconifyCollectionGroup {
186
+ category: string;
187
+ items: IconifyCollectionItem[];
188
+ }
189
+
190
+ export declare interface IconifyCollectionItem {
191
+ prefix: string;
192
+ category: string;
193
+ name: string;
194
+ samples: string[];
195
+ total: number;
196
+ license?: {
197
+ title: string;
198
+ spdx?: string;
199
+ url?: string;
200
+ };
201
+ hidden?: boolean;
202
+ [key: string]: unknown;
31
203
  }
32
204
 
33
205
  declare type RadiusType = 'none' | 'small' | 'medium' | 'large' | 'full';
34
206
 
35
- export declare const SocialButton: __VLS_WithTemplateSlots<DefineComponent<SocialButtonProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<SocialButtonProps> & Readonly<{}>, {
36
- as: AsTag | Component;
37
- size: "1" | "2" | "3" | "4";
38
- variant: "classic" | "solid" | "soft" | "surface" | "outline";
39
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>, {
40
- default?(_: {}): any;
41
- }>;
207
+ export declare const SocialButton: typeof __VLS_export;
42
208
 
43
209
  export declare interface SocialButtonProps extends PrimitiveProps {
44
210
  brand: BrandType;
@@ -52,20 +218,7 @@ export declare interface SocialButtonProps extends PrimitiveProps {
52
218
  disabled?: boolean;
53
219
  }
54
220
 
55
- export declare const Turnstile: DefineComponent<TurnstileProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
56
- "update:modelValue": (args_0: string) => any;
57
- }, string, PublicProps, Readonly<TurnstileProps> & Readonly<{
58
- "onUpdate:modelValue"?: ((args_0: string) => any) | undefined;
59
- }>, {
60
- size: "normal" | "compact";
61
- theme: "light" | "dark" | "auto";
62
- action: string;
63
- resetInterval: number;
64
- appearance: "always" | "execute" | "interaction-only";
65
- renderOnMount: boolean;
66
- }, {}, {}, {}, string, ComponentProvideOptions, false, {
67
- element: HTMLDivElement;
68
- }, HTMLDivElement>;
221
+ export declare const Turnstile: typeof __VLS_export_4;
69
222
 
70
223
  export declare interface TurnstileProps {
71
224
  sitekey: string;
@@ -79,3 +232,11 @@ export declare interface TurnstileProps {
79
232
  }
80
233
 
81
234
  export { }
235
+
236
+
237
+ declare global {
238
+ interface Window {
239
+ turnstile?: TurnstileApi;
240
+ cfTurnstileOnLoad?: () => void;
241
+ }
242
+ }