gbs-add-block 2.0.4 → 2.3.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 (129) hide show
  1. package/.gbs/skills/gbs-components/SKILL.md +190 -134
  2. package/.gbs/skills/gbs-components/references/install.md +25 -3
  3. package/.gbs/skills/gbs-components/references/styling.md +246 -201
  4. package/CHANGELOG.md +74 -0
  5. package/README.md +157 -11
  6. package/index.cjs +212 -3
  7. package/package.json +41 -10
  8. package/schema/passport-v1.schema.json +204 -0
  9. package/source/beta-components/accordion/passport.json +259 -0
  10. package/source/beta-components/accordion/styles.css +207 -208
  11. package/source/beta-components/alert/passport.json +250 -0
  12. package/source/beta-components/alert/styles.css +154 -155
  13. package/source/beta-components/avatar/passport.json +294 -0
  14. package/source/beta-components/avatar/styles.css +201 -203
  15. package/source/beta-components/badge/passport.json +332 -0
  16. package/source/beta-components/badge/styles.css +203 -204
  17. package/source/beta-components/breadcrumb/passport.json +243 -0
  18. package/source/beta-components/breadcrumb/styles.css +138 -139
  19. package/source/beta-components/button/passport.json +402 -0
  20. package/source/beta-components/button/passport.manual.json +31 -0
  21. package/source/beta-components/button/styles.css +232 -233
  22. package/source/beta-components/card/passport.json +337 -0
  23. package/source/beta-components/card/styles.css +230 -231
  24. package/source/beta-components/checkbox/passport.json +456 -0
  25. package/source/beta-components/checkbox/styles.css +211 -212
  26. package/source/beta-components/combobox/passport.json +456 -0
  27. package/source/beta-components/combobox/styles.css +419 -417
  28. package/source/beta-components/data-grid/agent/coerce.ts +368 -0
  29. package/source/beta-components/data-grid/agent/contract.ts +410 -0
  30. package/source/beta-components/data-grid/agent/dataset.ts +92 -0
  31. package/source/beta-components/data-grid/agent/engine.ts +470 -0
  32. package/source/beta-components/data-grid/agent/executors.ts +155 -0
  33. package/source/beta-components/data-grid/agent/index.ts +79 -0
  34. package/source/beta-components/data-grid/agent/intent.ts +324 -0
  35. package/source/beta-components/data-grid/agent/operations.ts +335 -0
  36. package/source/beta-components/data-grid/agent/validate.ts +630 -0
  37. package/source/beta-components/data-grid/agent/webmcp.ts +107 -0
  38. package/source/beta-components/data-grid/index.ts +14 -7
  39. package/source/beta-components/data-grid/passport.json +1051 -0
  40. package/source/beta-components/data-grid/passport.manual.json +255 -0
  41. package/source/beta-components/data-grid/react/AskGrid.tsx +164 -0
  42. package/source/beta-components/data-grid/react/DataGrid.tsx +39 -0
  43. package/source/beta-components/data-grid/styles.css +874 -717
  44. package/source/beta-components/date-picker/passport.json +407 -0
  45. package/source/beta-components/date-picker/styles.css +445 -446
  46. package/source/beta-components/dialog/passport.json +344 -0
  47. package/source/beta-components/dialog/styles.css +280 -278
  48. package/source/beta-components/file-uploader/passport.json +518 -0
  49. package/source/beta-components/file-uploader/styles.css +394 -395
  50. package/source/beta-components/input/passport.json +536 -0
  51. package/source/beta-components/input/styles.css +295 -296
  52. package/source/beta-components/menu/passport.json +322 -0
  53. package/source/beta-components/menu/styles.css +224 -222
  54. package/source/beta-components/modal/passport.json +289 -0
  55. package/source/beta-components/modal/styles.css +241 -239
  56. package/source/beta-components/number-input/passport.json +541 -0
  57. package/source/beta-components/number-input/styles.css +230 -231
  58. package/source/beta-components/popover/passport.json +238 -0
  59. package/source/beta-components/popover/styles.css +148 -146
  60. package/source/beta-components/progress/passport.json +270 -0
  61. package/source/beta-components/progress/styles.css +200 -202
  62. package/source/beta-components/radio-group/passport.json +477 -0
  63. package/source/beta-components/radio-group/styles.css +241 -242
  64. package/source/beta-components/shared/core/agent/adapter.ts +65 -0
  65. package/source/beta-components/shared/core/agent/history.ts +120 -0
  66. package/source/beta-components/shared/core/agent/index.ts +46 -0
  67. package/source/beta-components/shared/core/agent/numbers.ts +217 -0
  68. package/source/beta-components/shared/core/agent/schema.ts +180 -0
  69. package/source/beta-components/shared/core/agent/types.ts +169 -0
  70. package/source/beta-components/shared/core/agent/webmcp.ts +328 -0
  71. package/source/beta-components/shared/index.ts +9 -0
  72. package/source/beta-components/shared/react/GramproAIProvider.tsx +50 -0
  73. package/source/beta-components/shared/react/useAskAgent.ts +217 -0
  74. package/source/beta-components/shared/styles.css +79 -0
  75. package/source/beta-components/shared/version.json +4 -4
  76. package/source/beta-components/shared/version.ts +6 -6
  77. package/source/beta-components/skeleton/passport.json +251 -0
  78. package/source/beta-components/skeleton/styles.css +185 -186
  79. package/source/beta-components/spinner/passport.json +245 -0
  80. package/source/beta-components/spinner/styles.css +145 -146
  81. package/source/beta-components/switch/passport.json +421 -0
  82. package/source/beta-components/switch/styles.css +194 -196
  83. package/source/beta-components/tabs/passport.json +315 -0
  84. package/source/beta-components/tabs/styles.css +234 -235
  85. package/source/beta-components/textarea/passport.json +382 -0
  86. package/source/beta-components/textarea/styles.css +158 -159
  87. package/source/beta-components/toaster/passport.json +221 -0
  88. package/source/beta-components/toaster/styles.css +282 -283
  89. package/source/beta-components/tooltip/passport.json +170 -0
  90. package/source/beta-components/tooltip/styles.css +71 -72
  91. package/tools/env.cjs +61 -0
  92. package/tools/passport/cli.cjs +79 -0
  93. package/tools/passport/extract.cjs +493 -0
  94. package/tools/passport/index.cjs +185 -0
  95. package/tools/passport/merge.cjs +131 -0
  96. package/tools/passport/policy.cjs +65 -0
  97. package/tools/passport/validate.cjs +277 -0
  98. package/tools/ts-require.cjs +79 -0
  99. package/source/beta-components/accordion/__tests__/core.test.ts +0 -58
  100. package/source/beta-components/alert/__tests__/core.test.ts +0 -17
  101. package/source/beta-components/avatar/__tests__/core.test.ts +0 -88
  102. package/source/beta-components/badge/__tests__/core.test.ts +0 -46
  103. package/source/beta-components/breadcrumb/__tests__/core.test.ts +0 -58
  104. package/source/beta-components/button/__tests__/core.test.ts +0 -31
  105. package/source/beta-components/card/__tests__/core.test.ts +0 -57
  106. package/source/beta-components/checkbox/__tests__/core.test.ts +0 -40
  107. package/source/beta-components/combobox/__tests__/core.test.ts +0 -134
  108. package/source/beta-components/data-grid/__tests__/core.test.ts +0 -356
  109. package/source/beta-components/data-grid/__tests__/export.test.ts +0 -70
  110. package/source/beta-components/data-grid/__tests__/pdf.test.ts +0 -209
  111. package/source/beta-components/date-picker/__tests__/core.test.ts +0 -273
  112. package/source/beta-components/dialog/__tests__/core.test.ts +0 -86
  113. package/source/beta-components/file-uploader/__tests__/core.test.ts +0 -395
  114. package/source/beta-components/input/__tests__/core.test.ts +0 -75
  115. package/source/beta-components/menu/__tests__/core.test.ts +0 -120
  116. package/source/beta-components/modal/__tests__/core.test.ts +0 -55
  117. package/source/beta-components/number-input/__tests__/core.test.ts +0 -151
  118. package/source/beta-components/progress/__tests__/core.test.ts +0 -56
  119. package/source/beta-components/radio-group/__tests__/core.test.ts +0 -64
  120. package/source/beta-components/shared/__tests__/boundaries.test.ts +0 -95
  121. package/source/beta-components/shared/__tests__/core.test.ts +0 -55
  122. package/source/beta-components/shared/__tests__/position.test.ts +0 -143
  123. package/source/beta-components/skeleton/__tests__/core.test.ts +0 -41
  124. package/source/beta-components/spinner/__tests__/core.test.ts +0 -48
  125. package/source/beta-components/switch/__tests__/core.test.ts +0 -64
  126. package/source/beta-components/tabs/__tests__/core.test.ts +0 -51
  127. package/source/beta-components/textarea/__tests__/core.test.ts +0 -38
  128. package/source/beta-components/toaster/__tests__/core.test.ts +0 -256
  129. package/source/beta-components/tooltip/__tests__/core.test.ts +0 -42
@@ -1,186 +1,185 @@
1
- /*
2
- * Skeleton and Empty styles.
3
- *
4
- * Tokens read the shared --gbs-* variables when they are set on an ancestor
5
- * (set them on :root to theme every component at once) and fall back to the
6
- * same default palette otherwise. Rules live in the `components` layer, so utility classes passed
7
- * through `className` / `classNames` override them.
8
- */
9
- @layer theme, base, components, utilities;
10
-
11
- @layer components {
12
- .sk-root,
13
- .em-root {
14
- --sk-fg: var(--gbs-fg, var(--dg-fg, light-dark(#18181b, #f4f4f5)));
15
- --sk-muted: var(--gbs-muted, var(--dg-muted, light-dark(#71717a, #a1a1aa)));
16
- --sk-border: var(--gbs-border, var(--dg-border, light-dark(#e4e4e7, #27272a)));
17
- --sk-base: var(--gbs-skeleton, var(--gbs-hover, var(--dg-hover, light-dark(#ececee, #232329))));
18
- --sk-sheen: light-dark(rgb(255 255 255 / 0.65), rgb(255 255 255 / 0.06));
19
- --sk-radius: var(--gbs-radius, var(--dg-radius, 8px));
20
- --sk-font-size: var(--gbs-font-size, var(--dg-font-size, 13px));
21
- --sk-duration: 1.4s;
22
-
23
- color-scheme: inherit;
24
- font-size: var(--sk-font-size);
25
- line-height: 1.5;
26
- }
27
-
28
- :where(.dark, [data-theme="dark"]) :is(.sk-root, .em-root) {
29
- color-scheme: dark;
30
- }
31
- :where(.light, [data-theme="light"]) :is(.sk-root, .em-root) {
32
- color-scheme: light;
33
- }
34
-
35
- :where(.sk-root, .em-root) *,
36
- :where(.sk-root, .em-root) *::before,
37
- :where(.sk-root, .em-root) *::after {
38
- box-sizing: border-box;
39
- }
40
-
41
- /* ------------------------------------------------------------ skeleton */
42
-
43
- .sk-root {
44
- display: flex;
45
- flex-direction: column;
46
- gap: 8px;
47
- width: var(--sk-width, 100%);
48
- height: var(--sk-height);
49
- }
50
-
51
- .sk-line {
52
- flex: none;
53
- height: 100%;
54
- border-radius: var(--sk-radius);
55
- background: var(--sk-base);
56
- }
57
-
58
- /* Text bars are sized from the font, so a paragraph placeholder takes the
59
- space the paragraph will. */
60
- .sk-root[data-variant="text"] {
61
- height: var(--sk-height);
62
- }
63
- .sk-root[data-variant="text"] .sk-line {
64
- height: var(--sk-height, 0.85em);
65
- border-radius: 4px;
66
- }
67
-
68
- .sk-root[data-variant="circle"] {
69
- width: var(--sk-width, 40px);
70
- height: var(--sk-height, var(--sk-width, 40px));
71
- }
72
- .sk-root[data-variant="circle"] .sk-line {
73
- border-radius: 50%;
74
- }
75
-
76
- .sk-root[data-variant="rect"] {
77
- height: var(--sk-height, 80px);
78
- }
79
-
80
- .sk-root[data-animation="pulse"] .sk-line {
81
- animation: sk-pulse var(--sk-duration) ease-in-out infinite;
82
- }
83
- @keyframes sk-pulse {
84
- 50% {
85
- opacity: 0.45;
86
- }
87
- }
88
-
89
- .sk-root[data-animation="wave"] .sk-line {
90
- position: relative;
91
- overflow: hidden;
92
- }
93
- .sk-root[data-animation="wave"] .sk-line::after {
94
- content: "";
95
- position: absolute;
96
- inset: 0;
97
- background: linear-gradient(90deg, transparent, var(--sk-sheen), transparent);
98
- animation: sk-wave var(--sk-duration) linear infinite;
99
- }
100
- @keyframes sk-wave {
101
- from {
102
- translate: -100% 0;
103
- }
104
- to {
105
- translate: 100% 0;
106
- }
107
- }
108
-
109
- .sk-sr-only,
110
- .em-sr-only {
111
- position: absolute;
112
- width: 1px;
113
- height: 1px;
114
- margin: -1px;
115
- padding: 0;
116
- overflow: hidden;
117
- border: 0;
118
- clip-path: inset(50%);
119
- white-space: nowrap;
120
- }
121
-
122
- /* --------------------------------------------------------------- empty */
123
-
124
- .em-root {
125
- display: flex;
126
- flex-direction: column;
127
- align-items: center;
128
- gap: 6px;
129
- padding: 40px 24px;
130
- color: var(--sk-fg);
131
- text-align: center;
132
- text-wrap: pretty;
133
- }
134
- .em-root[data-size="sm"] {
135
- padding: 24px 16px;
136
- }
137
- .em-root[data-size="lg"] {
138
- padding: 64px 24px;
139
- }
140
-
141
- .em-icon {
142
- display: inline-flex;
143
- margin-bottom: 4px;
144
- color: var(--sk-muted);
145
- }
146
- .em-root[data-size="sm"] .em-icon {
147
- margin-bottom: 0;
148
- }
149
-
150
- .em-title {
151
- margin: 0;
152
- font-size: 1.05em;
153
- font-weight: 600;
154
- }
155
- .em-root[data-size="lg"] .em-title {
156
- font-size: 1.2em;
157
- }
158
-
159
- .em-description {
160
- max-width: 46ch;
161
- margin: 0;
162
- color: var(--sk-muted);
163
- }
164
-
165
- .em-actions {
166
- display: flex;
167
- flex-wrap: wrap;
168
- justify-content: center;
169
- gap: 8px;
170
- margin-top: 10px;
171
- }
172
-
173
- /* Movement that repeats forever is the kind reduced-motion means. */
174
- @media (prefers-reduced-motion: reduce) {
175
- .sk-root .sk-line,
176
- .sk-root .sk-line::after {
177
- animation: none;
178
- }
179
- }
180
-
181
- @media (forced-colors: active) {
182
- .sk-line {
183
- border: 1px solid CanvasText;
184
- }
185
- }
186
- }
1
+ /*
2
+ * Skeleton and Empty styles.
3
+ *
4
+ * Tokens read the shared --gbs-* variables when they are set on an ancestor
5
+ * (set them on :root to theme every component at once) and fall back to the
6
+ * same default palette otherwise. Rules are unlayered: they beat a framework
7
+ * reset on specificity, and lose to anything you pass through `className`.
8
+ * With Tailwind v4, import this file after the framework and inside its
9
+ * components layer - see the README.
10
+ */
11
+
12
+ .sk-root,
13
+ .em-root {
14
+ --sk-fg: var(--gbs-fg, var(--dg-fg, light-dark(#18181b, #f4f4f5)));
15
+ --sk-muted: var(--gbs-muted, var(--dg-muted, light-dark(#71717a, #a1a1aa)));
16
+ --sk-border: var(--gbs-border, var(--dg-border, light-dark(#e4e4e7, #27272a)));
17
+ --sk-base: var(--gbs-skeleton, var(--gbs-hover, var(--dg-hover, light-dark(#ececee, #232329))));
18
+ --sk-sheen: light-dark(rgb(255 255 255 / 0.65), rgb(255 255 255 / 0.06));
19
+ --sk-radius: var(--gbs-radius, var(--dg-radius, 8px));
20
+ --sk-font-size: var(--gbs-font-size, var(--dg-font-size, 13px));
21
+ --sk-duration: 1.4s;
22
+
23
+ color-scheme: inherit;
24
+ font-size: var(--sk-font-size);
25
+ line-height: 1.5;
26
+ }
27
+
28
+ :where(.dark, [data-theme="dark"]) :is(.sk-root, .em-root) {
29
+ color-scheme: dark;
30
+ }
31
+ :where(.light, [data-theme="light"]) :is(.sk-root, .em-root) {
32
+ color-scheme: light;
33
+ }
34
+
35
+ :where(.sk-root, .em-root) *,
36
+ :where(.sk-root, .em-root) *::before,
37
+ :where(.sk-root, .em-root) *::after {
38
+ box-sizing: border-box;
39
+ }
40
+
41
+ /* ------------------------------------------------------------ skeleton */
42
+
43
+ .sk-root {
44
+ display: flex;
45
+ flex-direction: column;
46
+ gap: 8px;
47
+ width: var(--sk-width, 100%);
48
+ height: var(--sk-height);
49
+ }
50
+
51
+ .sk-line {
52
+ flex: none;
53
+ height: 100%;
54
+ border-radius: var(--sk-radius);
55
+ background: var(--sk-base);
56
+ }
57
+
58
+ /* Text bars are sized from the font, so a paragraph placeholder takes the
59
+ space the paragraph will. */
60
+ .sk-root[data-variant="text"] {
61
+ height: var(--sk-height);
62
+ }
63
+ .sk-root[data-variant="text"] .sk-line {
64
+ height: var(--sk-height, 0.85em);
65
+ border-radius: 4px;
66
+ }
67
+
68
+ .sk-root[data-variant="circle"] {
69
+ width: var(--sk-width, 40px);
70
+ height: var(--sk-height, var(--sk-width, 40px));
71
+ }
72
+ .sk-root[data-variant="circle"] .sk-line {
73
+ border-radius: 50%;
74
+ }
75
+
76
+ .sk-root[data-variant="rect"] {
77
+ height: var(--sk-height, 80px);
78
+ }
79
+
80
+ .sk-root[data-animation="pulse"] .sk-line {
81
+ animation: sk-pulse var(--sk-duration) ease-in-out infinite;
82
+ }
83
+ @keyframes sk-pulse {
84
+ 50% {
85
+ opacity: 0.45;
86
+ }
87
+ }
88
+
89
+ .sk-root[data-animation="wave"] .sk-line {
90
+ position: relative;
91
+ overflow: hidden;
92
+ }
93
+ .sk-root[data-animation="wave"] .sk-line::after {
94
+ content: "";
95
+ position: absolute;
96
+ inset: 0;
97
+ background: linear-gradient(90deg, transparent, var(--sk-sheen), transparent);
98
+ animation: sk-wave var(--sk-duration) linear infinite;
99
+ }
100
+ @keyframes sk-wave {
101
+ from {
102
+ translate: -100% 0;
103
+ }
104
+ to {
105
+ translate: 100% 0;
106
+ }
107
+ }
108
+
109
+ .sk-sr-only,
110
+ .em-sr-only {
111
+ position: absolute;
112
+ width: 1px;
113
+ height: 1px;
114
+ margin: -1px;
115
+ padding: 0;
116
+ overflow: hidden;
117
+ border: 0;
118
+ clip-path: inset(50%);
119
+ white-space: nowrap;
120
+ }
121
+
122
+ /* --------------------------------------------------------------- empty */
123
+
124
+ .em-root {
125
+ display: flex;
126
+ flex-direction: column;
127
+ align-items: center;
128
+ gap: 6px;
129
+ padding: 40px 24px;
130
+ color: var(--sk-fg);
131
+ text-align: center;
132
+ text-wrap: pretty;
133
+ }
134
+ .em-root[data-size="sm"] {
135
+ padding: 24px 16px;
136
+ }
137
+ .em-root[data-size="lg"] {
138
+ padding: 64px 24px;
139
+ }
140
+
141
+ .em-icon {
142
+ display: inline-flex;
143
+ margin-bottom: 4px;
144
+ color: var(--sk-muted);
145
+ }
146
+ .em-root[data-size="sm"] .em-icon {
147
+ margin-bottom: 0;
148
+ }
149
+
150
+ .em-title {
151
+ margin: 0;
152
+ font-size: 1.05em;
153
+ font-weight: 600;
154
+ }
155
+ .em-root[data-size="lg"] .em-title {
156
+ font-size: 1.2em;
157
+ }
158
+
159
+ .em-description {
160
+ max-width: 46ch;
161
+ margin: 0;
162
+ color: var(--sk-muted);
163
+ }
164
+
165
+ .em-actions {
166
+ display: flex;
167
+ flex-wrap: wrap;
168
+ justify-content: center;
169
+ gap: 8px;
170
+ margin-top: 10px;
171
+ }
172
+
173
+ /* Movement that repeats forever is the kind reduced-motion means. */
174
+ @media (prefers-reduced-motion: reduce) {
175
+ .sk-root .sk-line,
176
+ .sk-root .sk-line::after {
177
+ animation: none;
178
+ }
179
+ }
180
+
181
+ @media (forced-colors: active) {
182
+ .sk-line {
183
+ border: 1px solid CanvasText;
184
+ }
185
+ }
@@ -0,0 +1,245 @@
1
+ {
2
+ "passportVersion": "1.0.0",
3
+ "identity": {
4
+ "component": "Spinner",
5
+ "folder": "spinner",
6
+ "exports": [
7
+ "Spinner"
8
+ ]
9
+ },
10
+ "source": {
11
+ "libraryVersion": "2.3.0",
12
+ "files": [
13
+ "core/index.ts",
14
+ "core/types.ts",
15
+ "core/visibility.ts",
16
+ "index.ts",
17
+ "react/Spinner.tsx",
18
+ "react/locale.ts",
19
+ "react/props.ts",
20
+ "react/useDelayedLoading.ts"
21
+ ],
22
+ "sourceHash": "sha256:2fa8e093614019fb84f1acc9820f25c9175d0711384c48094e81cb089f9d0a98"
23
+ },
24
+ "props": [
25
+ {
26
+ "name": "aria-describedby",
27
+ "type": "string",
28
+ "typeText": "string | undefined",
29
+ "required": false,
30
+ "origin": "inherited"
31
+ },
32
+ {
33
+ "name": "aria-label",
34
+ "type": "string",
35
+ "typeText": "string | undefined",
36
+ "required": false,
37
+ "origin": "inherited"
38
+ },
39
+ {
40
+ "name": "aria-labelledby",
41
+ "type": "string",
42
+ "typeText": "string | undefined",
43
+ "required": false,
44
+ "origin": "inherited"
45
+ },
46
+ {
47
+ "name": "children",
48
+ "type": "other",
49
+ "typeText": "ReactNode",
50
+ "required": false,
51
+ "origin": "derived",
52
+ "description": "Content to cover while loading. It becomes inert, so it can't be clicked or focused.",
53
+ "descriptionOrigin": "jsdoc"
54
+ },
55
+ {
56
+ "name": "className",
57
+ "type": "string",
58
+ "typeText": "string | undefined",
59
+ "required": false,
60
+ "origin": "inherited"
61
+ },
62
+ {
63
+ "name": "classNames",
64
+ "type": "other",
65
+ "typeText": "Partial<Record<SpinnerSlot, string>> | undefined",
66
+ "required": false,
67
+ "origin": "derived"
68
+ },
69
+ {
70
+ "name": "delay",
71
+ "type": "number",
72
+ "typeText": "number | undefined",
73
+ "required": false,
74
+ "default": 0,
75
+ "origin": "derived",
76
+ "description": "Milliseconds to wait before showing, so fast work doesn't flash. Default 0.",
77
+ "descriptionOrigin": "jsdoc"
78
+ },
79
+ {
80
+ "name": "hidden",
81
+ "type": "boolean",
82
+ "typeText": "boolean | undefined",
83
+ "required": false,
84
+ "origin": "inherited"
85
+ },
86
+ {
87
+ "name": "id",
88
+ "type": "string",
89
+ "typeText": "string | undefined",
90
+ "required": false,
91
+ "origin": "inherited"
92
+ },
93
+ {
94
+ "name": "label",
95
+ "type": "string",
96
+ "typeText": "string | undefined",
97
+ "required": false,
98
+ "origin": "derived",
99
+ "description": "What screen readers announce. Default \"Loading\".",
100
+ "descriptionOrigin": "jsdoc"
101
+ },
102
+ {
103
+ "name": "loading",
104
+ "type": "boolean",
105
+ "typeText": "boolean | undefined",
106
+ "required": false,
107
+ "default": true,
108
+ "origin": "derived",
109
+ "description": "Default true. With `children`, the spinner covers them while this is true.",
110
+ "descriptionOrigin": "jsdoc"
111
+ },
112
+ {
113
+ "name": "localeText",
114
+ "type": "other",
115
+ "typeText": "Partial<SpinnerLocaleText> | undefined",
116
+ "required": false,
117
+ "origin": "derived"
118
+ },
119
+ {
120
+ "name": "minDuration",
121
+ "type": "number",
122
+ "typeText": "number | undefined",
123
+ "required": false,
124
+ "default": 0,
125
+ "origin": "derived",
126
+ "description": "Once shown, stay at least this many milliseconds. Default 0.",
127
+ "descriptionOrigin": "jsdoc"
128
+ },
129
+ {
130
+ "name": "role",
131
+ "type": "other",
132
+ "typeText": "AriaRole | undefined",
133
+ "required": false,
134
+ "origin": "inherited"
135
+ },
136
+ {
137
+ "name": "showLabel",
138
+ "type": "boolean",
139
+ "typeText": "boolean | undefined",
140
+ "required": false,
141
+ "default": false,
142
+ "origin": "derived",
143
+ "description": "Show the label next to the spinner.",
144
+ "descriptionOrigin": "jsdoc"
145
+ },
146
+ {
147
+ "name": "size",
148
+ "type": "other",
149
+ "typeText": "number | SpinnerSize | undefined",
150
+ "required": false,
151
+ "default": "md",
152
+ "origin": "derived",
153
+ "description": "Default `md` (24 px); a number is pixels.",
154
+ "descriptionOrigin": "jsdoc"
155
+ },
156
+ {
157
+ "name": "style",
158
+ "type": "other",
159
+ "typeText": "CSSProperties | undefined",
160
+ "required": false,
161
+ "origin": "inherited"
162
+ },
163
+ {
164
+ "name": "tabIndex",
165
+ "type": "number",
166
+ "typeText": "number | undefined",
167
+ "required": false,
168
+ "origin": "inherited"
169
+ },
170
+ {
171
+ "name": "title",
172
+ "type": "string",
173
+ "typeText": "string | undefined",
174
+ "required": false,
175
+ "origin": "inherited"
176
+ },
177
+ {
178
+ "name": "variant",
179
+ "type": "enum",
180
+ "values": [
181
+ "dots",
182
+ "ring"
183
+ ],
184
+ "typeText": "SpinnerVariant | undefined",
185
+ "required": false,
186
+ "default": "ring",
187
+ "origin": "derived",
188
+ "description": "Default `ring`.",
189
+ "descriptionOrigin": "jsdoc"
190
+ }
191
+ ],
192
+ "inherits": [
193
+ {
194
+ "from": "HTMLAttributes<HTMLElement>",
195
+ "omitted": [
196
+ "children"
197
+ ],
198
+ "passthrough": true
199
+ }
200
+ ],
201
+ "events": [],
202
+ "slots": [
203
+ "root",
204
+ "status",
205
+ "indicator",
206
+ "label",
207
+ "content",
208
+ "overlay"
209
+ ],
210
+ "states": [
211
+ {
212
+ "attr": "data-loading"
213
+ },
214
+ {
215
+ "attr": "data-theme",
216
+ "values": [
217
+ "dark",
218
+ "light"
219
+ ]
220
+ },
221
+ {
222
+ "attr": "data-variant",
223
+ "values": [
224
+ "dots"
225
+ ]
226
+ }
227
+ ],
228
+ "accessibility": {
229
+ "supplied": [],
230
+ "required": []
231
+ },
232
+ "composition": {},
233
+ "operations": {},
234
+ "intentDomains": [],
235
+ "safeMutations": {},
236
+ "examples": [],
237
+ "coverage": {
238
+ "propsTotal": 20,
239
+ "propsDescribed": 8,
240
+ "describedPct": 40,
241
+ "authoredSections": [
242
+ "accessibility"
243
+ ]
244
+ }
245
+ }