gbs-add-block 2.1.0 → 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 -207
  4. package/CHANGELOG.md +74 -0
  5. package/README.md +154 -23
  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 +225 -226
  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 -140
  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 -234
  22. package/source/beta-components/card/passport.json +337 -0
  23. package/source/beta-components/card/styles.css +230 -232
  24. package/source/beta-components/checkbox/passport.json +456 -0
  25. package/source/beta-components/checkbox/styles.css +211 -213
  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 -716
  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 -279
  48. package/source/beta-components/file-uploader/passport.json +518 -0
  49. package/source/beta-components/file-uploader/styles.css +394 -396
  50. package/source/beta-components/input/passport.json +536 -0
  51. package/source/beta-components/input/styles.css +295 -297
  52. package/source/beta-components/menu/passport.json +322 -0
  53. package/source/beta-components/menu/styles.css +224 -223
  54. package/source/beta-components/modal/passport.json +289 -0
  55. package/source/beta-components/modal/styles.css +241 -240
  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 -147
  60. package/source/beta-components/progress/passport.json +270 -0
  61. package/source/beta-components/progress/styles.css +200 -201
  62. package/source/beta-components/radio-group/passport.json +477 -0
  63. package/source/beta-components/radio-group/styles.css +269 -270
  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 -187
  79. package/source/beta-components/spinner/passport.json +245 -0
  80. package/source/beta-components/spinner/styles.css +173 -174
  81. package/source/beta-components/switch/passport.json +421 -0
  82. package/source/beta-components/switch/styles.css +227 -229
  83. package/source/beta-components/tabs/passport.json +315 -0
  84. package/source/beta-components/tabs/styles.css +263 -264
  85. package/source/beta-components/textarea/passport.json +382 -0
  86. package/source/beta-components/textarea/styles.css +158 -160
  87. package/source/beta-components/toaster/passport.json +221 -0
  88. package/source/beta-components/toaster/styles.css +282 -282
  89. package/source/beta-components/tooltip/passport.json +170 -0
  90. package/source/beta-components/tooltip/styles.css +71 -73
  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,213 +1,211 @@
1
- /*
2
- * Checkbox and CheckboxGroup styles.
3
- *
4
- * The box is the native <input> with `appearance: none`, so it keeps native
5
- * behavior. Tokens read the shared --gbs-* variables when they are set on an
6
- * ancestor (set them on :root to theme every component at once). Rules live
7
- * in the `gbs` layer. Declare where that sits in your global CSS — e.g.
8
- * `@layer reset, gbs, app, utilities;` — and anything in a later layer,
9
- * Tailwind utilities included, overrides them.
10
- */
11
-
12
- @layer gbs {
13
- .ck-root,
14
- .ck-group {
15
- --ck-fg: var(--gbs-fg, var(--dg-fg, light-dark(#18181b, #f4f4f5)));
16
- --ck-muted: var(--gbs-muted, var(--dg-muted, light-dark(#71717a, #a1a1aa)));
17
- --ck-border: var(--gbs-border-control, light-dark(#a1a1aa, #52525b));
18
- --ck-input-bg: var(--gbs-input-bg, var(--dg-input-bg, light-dark(#ffffff, #121216)));
19
- --ck-accent: var(--gbs-accent, var(--dg-accent, light-dark(#2563eb, #60a5fa)));
20
- --ck-accent-fg: var(--gbs-accent-fg, var(--dg-accent-fg, light-dark(#ffffff, #0b1220)));
21
- --ck-focus: var(--gbs-focus, var(--dg-focus, light-dark(#2563eb, #60a5fa)));
22
- --ck-danger: var(--gbs-danger, var(--dg-danger, light-dark(#dc2626, #f87171)));
23
- --ck-font-size: var(--gbs-font-size, var(--dg-font-size, 13px));
24
- --ck-size: 16px;
25
- --ck-radius: 4px;
26
-
27
- color-scheme: inherit;
28
- font-size: var(--ck-font-size);
29
- line-height: 1.4;
30
- color: var(--ck-fg);
31
- }
32
-
33
- :where(.dark, [data-theme="dark"]) :is(.ck-root, .ck-group) {
34
- color-scheme: dark;
35
- }
36
- :where(.light, [data-theme="light"]) :is(.ck-root, .ck-group) {
37
- color-scheme: light;
38
- }
39
-
40
- :where(.ck-root, .ck-group) *,
41
- :where(.ck-root, .ck-group) *::before,
42
- :where(.ck-root, .ck-group) *::after {
43
- box-sizing: border-box;
44
- }
45
-
46
- .ck-root {
47
- display: flex;
48
- align-items: flex-start;
49
- gap: 8px;
50
- min-width: 0;
51
- }
52
- .ck-root[data-size="sm"] {
53
- --ck-size: 14px;
54
- --ck-font-size: 12px;
55
- }
56
- .ck-root[data-size="lg"] {
57
- --ck-size: 20px;
58
- --ck-font-size: 14px;
59
- --ck-radius: 5px;
60
- }
61
-
62
- /* ---------------------------------------------------------------- box */
63
-
64
- .ck-control {
65
- position: relative;
66
- display: grid;
67
- flex: none;
68
- width: var(--ck-size);
69
- height: var(--ck-size);
70
- /* Center the box on the first line of the label. */
71
- margin-top: calc((1.4em - var(--ck-size)) / 2);
72
- }
73
-
74
- .ck-input {
75
- grid-area: 1 / 1;
76
- width: 100%;
77
- height: 100%;
78
- margin: 0;
79
- appearance: none;
80
- border: 1.5px solid var(--ck-border);
81
- border-radius: var(--ck-radius);
82
- background: var(--ck-input-bg);
83
- cursor: pointer;
84
- transition:
85
- background-color 120ms ease,
86
- border-color 120ms ease;
87
- }
88
- .ck-input:hover:not(:disabled) {
89
- border-color: color-mix(in oklab, var(--ck-border), var(--ck-fg) 35%);
90
- }
91
- .ck-input:focus-visible {
92
- outline: 2px solid var(--ck-focus);
93
- outline-offset: 2px;
94
- }
95
- .ck-input:is(:checked, :indeterminate) {
96
- border-color: var(--ck-accent);
97
- background: var(--ck-accent);
98
- }
99
- .ck-root[data-invalid] .ck-input:not(:checked, :indeterminate) {
100
- border-color: var(--ck-danger);
101
- }
102
- .ck-input:disabled {
103
- opacity: 0.5;
104
- cursor: not-allowed;
105
- }
106
-
107
- .ck-icon {
108
- grid-area: 1 / 1;
109
- width: 100%;
110
- height: 100%;
111
- fill: none;
112
- stroke: var(--ck-accent-fg);
113
- stroke-width: 2;
114
- stroke-linecap: round;
115
- stroke-linejoin: round;
116
- pointer-events: none;
117
- }
118
- .ck-check {
119
- stroke-dasharray: 1;
120
- stroke-dashoffset: 1;
121
- transition: stroke-dashoffset 160ms ease;
122
- }
123
- .ck-dash {
124
- opacity: 0;
125
- }
126
- .ck-input:checked:not(:indeterminate) + .ck-icon .ck-check {
127
- stroke-dashoffset: 0;
128
- }
129
- .ck-input:indeterminate + .ck-icon .ck-dash {
130
- opacity: 1;
131
- }
132
-
133
- /* --------------------------------------------------------------- text */
134
-
135
- .ck-text {
136
- display: flex;
137
- flex-direction: column;
138
- gap: 1px;
139
- min-width: 0;
140
- }
141
- .ck-label {
142
- cursor: pointer;
143
- }
144
- .ck-root[data-disabled] .ck-label {
145
- color: var(--ck-muted);
146
- cursor: not-allowed;
147
- }
148
- .ck-label[data-required]::after,
149
- .ck-legend[data-required]::after {
150
- content: " *";
151
- color: var(--ck-danger);
152
- }
153
- .ck-description {
154
- color: var(--ck-muted);
155
- font-size: 0.92em;
156
- }
157
- .ck-error {
158
- color: var(--ck-danger);
159
- font-size: 0.92em;
160
- }
161
-
162
- /* -------------------------------------------------------------- group */
163
-
164
- .ck-group {
165
- display: flex;
166
- flex-direction: column;
167
- gap: 8px;
168
- min-width: 0;
169
- margin: 0;
170
- padding: 0;
171
- border: 0;
172
- }
173
- .ck-legend {
174
- /* A floated legend joins the flex gap like any other child. */
175
- float: left;
176
- width: 100%;
177
- margin-bottom: 2px;
178
- padding: 0;
179
- font-weight: 500;
180
- }
181
- .ck-legend + * {
182
- clear: both;
183
- }
184
- .ck-items {
185
- display: flex;
186
- flex-direction: column;
187
- gap: 8px;
188
- }
189
- .ck-group[data-orientation="horizontal"] .ck-items {
190
- flex-flow: row wrap;
191
- gap: 8px 20px;
192
- }
193
- .ck-group[data-select-all] .ck-items {
194
- padding-inline-start: calc(var(--ck-size) + 8px);
195
- }
196
-
197
- @media (prefers-reduced-motion: reduce) {
198
- .ck-input,
199
- .ck-check {
200
- transition: none;
201
- }
202
- }
203
-
204
- @media (forced-colors: active) {
205
- .ck-input:is(:checked, :indeterminate) {
206
- background: Highlight;
207
- border-color: Highlight;
208
- }
209
- .ck-icon {
210
- stroke: HighlightText;
211
- }
212
- }
213
- }
1
+ /*
2
+ * Checkbox and CheckboxGroup styles.
3
+ *
4
+ * The box is the native <input> with `appearance: none`, so it keeps native
5
+ * behavior. Tokens read the shared --gbs-* variables when they are set on an
6
+ * ancestor (set them on :root to theme every component at once). Rules are
7
+ * unlayered: they beat a framework reset on specificity, and lose to anything
8
+ * you pass through `className`. With Tailwind v4, import this file after the
9
+ * framework and inside its components layer - see the README.
10
+ */
11
+
12
+ .ck-root,
13
+ .ck-group {
14
+ --ck-fg: var(--gbs-fg, var(--dg-fg, light-dark(#18181b, #f4f4f5)));
15
+ --ck-muted: var(--gbs-muted, var(--dg-muted, light-dark(#71717a, #a1a1aa)));
16
+ --ck-border: var(--gbs-border-control, light-dark(#a1a1aa, #52525b));
17
+ --ck-input-bg: var(--gbs-input-bg, var(--dg-input-bg, light-dark(#ffffff, #121216)));
18
+ --ck-accent: var(--gbs-accent, var(--dg-accent, light-dark(#2563eb, #60a5fa)));
19
+ --ck-accent-fg: var(--gbs-accent-fg, var(--dg-accent-fg, light-dark(#ffffff, #0b1220)));
20
+ --ck-focus: var(--gbs-focus, var(--dg-focus, light-dark(#2563eb, #60a5fa)));
21
+ --ck-danger: var(--gbs-danger, var(--dg-danger, light-dark(#dc2626, #f87171)));
22
+ --ck-font-size: var(--gbs-font-size, var(--dg-font-size, 13px));
23
+ --ck-size: 16px;
24
+ --ck-radius: 4px;
25
+
26
+ color-scheme: inherit;
27
+ font-size: var(--ck-font-size);
28
+ line-height: 1.4;
29
+ color: var(--ck-fg);
30
+ }
31
+
32
+ :where(.dark, [data-theme="dark"]) :is(.ck-root, .ck-group) {
33
+ color-scheme: dark;
34
+ }
35
+ :where(.light, [data-theme="light"]) :is(.ck-root, .ck-group) {
36
+ color-scheme: light;
37
+ }
38
+
39
+ :where(.ck-root, .ck-group) *,
40
+ :where(.ck-root, .ck-group) *::before,
41
+ :where(.ck-root, .ck-group) *::after {
42
+ box-sizing: border-box;
43
+ }
44
+
45
+ .ck-root {
46
+ display: flex;
47
+ align-items: flex-start;
48
+ gap: 8px;
49
+ min-width: 0;
50
+ }
51
+ .ck-root[data-size="sm"] {
52
+ --ck-size: 14px;
53
+ --ck-font-size: 12px;
54
+ }
55
+ .ck-root[data-size="lg"] {
56
+ --ck-size: 20px;
57
+ --ck-font-size: 14px;
58
+ --ck-radius: 5px;
59
+ }
60
+
61
+ /* ---------------------------------------------------------------- box */
62
+
63
+ .ck-control {
64
+ position: relative;
65
+ display: grid;
66
+ flex: none;
67
+ width: var(--ck-size);
68
+ height: var(--ck-size);
69
+ /* Center the box on the first line of the label. */
70
+ margin-top: calc((1.4em - var(--ck-size)) / 2);
71
+ }
72
+
73
+ .ck-input {
74
+ grid-area: 1 / 1;
75
+ width: 100%;
76
+ height: 100%;
77
+ margin: 0;
78
+ appearance: none;
79
+ border: 1.5px solid var(--ck-border);
80
+ border-radius: var(--ck-radius);
81
+ background: var(--ck-input-bg);
82
+ cursor: pointer;
83
+ transition:
84
+ background-color 120ms ease,
85
+ border-color 120ms ease;
86
+ }
87
+ .ck-input:hover:not(:disabled) {
88
+ border-color: color-mix(in oklab, var(--ck-border), var(--ck-fg) 35%);
89
+ }
90
+ .ck-input:focus-visible {
91
+ outline: 2px solid var(--ck-focus);
92
+ outline-offset: 2px;
93
+ }
94
+ .ck-input:is(:checked, :indeterminate) {
95
+ border-color: var(--ck-accent);
96
+ background: var(--ck-accent);
97
+ }
98
+ .ck-root[data-invalid] .ck-input:not(:checked, :indeterminate) {
99
+ border-color: var(--ck-danger);
100
+ }
101
+ .ck-input:disabled {
102
+ opacity: 0.5;
103
+ cursor: not-allowed;
104
+ }
105
+
106
+ .ck-icon {
107
+ grid-area: 1 / 1;
108
+ width: 100%;
109
+ height: 100%;
110
+ fill: none;
111
+ stroke: var(--ck-accent-fg);
112
+ stroke-width: 2;
113
+ stroke-linecap: round;
114
+ stroke-linejoin: round;
115
+ pointer-events: none;
116
+ }
117
+ .ck-check {
118
+ stroke-dasharray: 1;
119
+ stroke-dashoffset: 1;
120
+ transition: stroke-dashoffset 160ms ease;
121
+ }
122
+ .ck-dash {
123
+ opacity: 0;
124
+ }
125
+ .ck-input:checked:not(:indeterminate) + .ck-icon .ck-check {
126
+ stroke-dashoffset: 0;
127
+ }
128
+ .ck-input:indeterminate + .ck-icon .ck-dash {
129
+ opacity: 1;
130
+ }
131
+
132
+ /* --------------------------------------------------------------- text */
133
+
134
+ .ck-text {
135
+ display: flex;
136
+ flex-direction: column;
137
+ gap: 1px;
138
+ min-width: 0;
139
+ }
140
+ .ck-label {
141
+ cursor: pointer;
142
+ }
143
+ .ck-root[data-disabled] .ck-label {
144
+ color: var(--ck-muted);
145
+ cursor: not-allowed;
146
+ }
147
+ .ck-label[data-required]::after,
148
+ .ck-legend[data-required]::after {
149
+ content: " *";
150
+ color: var(--ck-danger);
151
+ }
152
+ .ck-description {
153
+ color: var(--ck-muted);
154
+ font-size: 0.92em;
155
+ }
156
+ .ck-error {
157
+ color: var(--ck-danger);
158
+ font-size: 0.92em;
159
+ }
160
+
161
+ /* -------------------------------------------------------------- group */
162
+
163
+ .ck-group {
164
+ display: flex;
165
+ flex-direction: column;
166
+ gap: 8px;
167
+ min-width: 0;
168
+ margin: 0;
169
+ padding: 0;
170
+ border: 0;
171
+ }
172
+ .ck-legend {
173
+ /* A floated legend joins the flex gap like any other child. */
174
+ float: left;
175
+ width: 100%;
176
+ margin-bottom: 2px;
177
+ padding: 0;
178
+ font-weight: 500;
179
+ }
180
+ .ck-legend + * {
181
+ clear: both;
182
+ }
183
+ .ck-items {
184
+ display: flex;
185
+ flex-direction: column;
186
+ gap: 8px;
187
+ }
188
+ .ck-group[data-orientation="horizontal"] .ck-items {
189
+ flex-flow: row wrap;
190
+ gap: 8px 20px;
191
+ }
192
+ .ck-group[data-select-all] .ck-items {
193
+ padding-inline-start: calc(var(--ck-size) + 8px);
194
+ }
195
+
196
+ @media (prefers-reduced-motion: reduce) {
197
+ .ck-input,
198
+ .ck-check {
199
+ transition: none;
200
+ }
201
+ }
202
+
203
+ @media (forced-colors: active) {
204
+ .ck-input:is(:checked, :indeterminate) {
205
+ background: Highlight;
206
+ border-color: Highlight;
207
+ }
208
+ .ck-icon {
209
+ stroke: HighlightText;
210
+ }
211
+ }