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,212 +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 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
- .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
- }
212
- }
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
+ }