@businessdash/sdk 0.9.80 → 0.9.90

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 (264) hide show
  1. package/README.md +133 -949
  2. package/assets/{biab-sw.js → bd-sw.js} +2 -2
  3. package/dist/account-core/index.d.ts +1 -1
  4. package/dist/account-core/index.d.ts.map +1 -1
  5. package/dist/adapters-revalidate.d.ts +2 -2
  6. package/dist/adapters-revalidate.js +2 -2
  7. package/dist/adapters-revalidate.js.map +1 -1
  8. package/dist/analytics-core.d.ts +6 -6
  9. package/dist/analytics-core.d.ts.map +1 -1
  10. package/dist/analytics-core.js +4 -4
  11. package/dist/analytics-core.js.map +1 -1
  12. package/dist/analytics-server.d.ts +6 -6
  13. package/dist/analytics-server.d.ts.map +1 -1
  14. package/dist/analytics-server.js +5 -5
  15. package/dist/auth-handler.d.ts +14 -14
  16. package/dist/auth-handler.d.ts.map +1 -1
  17. package/dist/auth-handler.js +16 -16
  18. package/dist/auth-handler.js.map +1 -1
  19. package/dist/auth-links.d.ts +2 -2
  20. package/dist/auth-links.d.ts.map +1 -1
  21. package/dist/auth-links.js +2 -2
  22. package/dist/auth-links.js.map +1 -1
  23. package/dist/{biab-forms.css → bd-forms.css} +158 -158
  24. package/dist/cli.d.ts +4 -4
  25. package/dist/cli.js +78 -78
  26. package/dist/cli.js.map +1 -1
  27. package/dist/client.d.ts +158 -147
  28. package/dist/client.d.ts.map +1 -1
  29. package/dist/client.js +156 -137
  30. package/dist/client.js.map +1 -1
  31. package/dist/consent-core/index.cjs +2 -2
  32. package/dist/consent-core/index.d.ts +2 -2
  33. package/dist/consent-core/index.d.ts.map +1 -1
  34. package/dist/consent-core/index.js +10 -8
  35. package/dist/consent-core/index.js.map +1 -1
  36. package/dist/contracts.d.ts +411 -52
  37. package/dist/contracts.d.ts.map +1 -1
  38. package/dist/contracts.js +89 -15
  39. package/dist/contracts.js.map +1 -1
  40. package/dist/data-model-schema.d.ts +15 -15
  41. package/dist/data-model-schema.d.ts.map +1 -1
  42. package/dist/data-model-schema.js +19 -17
  43. package/dist/data-model-schema.js.map +1 -1
  44. package/dist/distribution.d.ts +5 -5
  45. package/dist/distribution.d.ts.map +1 -1
  46. package/dist/distribution.js +4 -4
  47. package/dist/element.d.ts +36 -36
  48. package/dist/element.d.ts.map +1 -1
  49. package/dist/element.js +43 -43
  50. package/dist/element.js.map +1 -1
  51. package/dist/embed-protocol.d.ts +11 -11
  52. package/dist/embed-protocol.d.ts.map +1 -1
  53. package/dist/embed-protocol.js +1 -1
  54. package/dist/embed-protocol.js.map +1 -1
  55. package/dist/errors.d.ts +15 -15
  56. package/dist/errors.d.ts.map +1 -1
  57. package/dist/errors.js +18 -18
  58. package/dist/errors.js.map +1 -1
  59. package/dist/forms-core/autocomplete.d.ts +3 -3
  60. package/dist/forms-core/autocomplete.d.ts.map +1 -1
  61. package/dist/forms-core/autocomplete.js +2 -2
  62. package/dist/forms-core/controller.d.ts +10 -10
  63. package/dist/forms-core/controller.d.ts.map +1 -1
  64. package/dist/forms-core/controller.js +4 -4
  65. package/dist/forms-core/controller.js.map +1 -1
  66. package/dist/forms-core/elements.d.ts +4 -4
  67. package/dist/forms-core/elements.d.ts.map +1 -1
  68. package/dist/forms-core/elements.js +7 -7
  69. package/dist/forms-core/elements.js.map +1 -1
  70. package/dist/forms-core/formula.d.ts +1 -1
  71. package/dist/forms-core/formula.js +1 -1
  72. package/dist/forms-core/index.d.ts +6 -6
  73. package/dist/forms-core/index.d.ts.map +1 -1
  74. package/dist/forms-core/index.js +5 -5
  75. package/dist/forms-core/index.js.map +1 -1
  76. package/dist/forms-core/units.d.ts +1 -1
  77. package/dist/forms-core/units.js +1 -1
  78. package/dist/forms-core/us-states.d.ts +1 -1
  79. package/dist/forms-core/us-states.js +1 -1
  80. package/dist/forms-core/validation.d.ts +12 -3
  81. package/dist/forms-core/validation.d.ts.map +1 -1
  82. package/dist/forms-core/validation.js +152 -17
  83. package/dist/forms-core/validation.js.map +1 -1
  84. package/dist/forms.d.ts +2 -2
  85. package/dist/forms.d.ts.map +1 -1
  86. package/dist/forms.js +2 -2
  87. package/dist/forms.js.map +1 -1
  88. package/dist/framework-support.js +1 -1
  89. package/dist/framework-support.js.map +1 -1
  90. package/dist/gallery-types.d.ts +1 -1
  91. package/dist/graphql.d.ts +3 -3
  92. package/dist/graphql.d.ts.map +1 -1
  93. package/dist/graphql.js +3 -3
  94. package/dist/graphql.js.map +1 -1
  95. package/dist/index.cjs +351 -272
  96. package/dist/index.d.cts +5 -5
  97. package/dist/index.d.mts +5 -5
  98. package/dist/index.d.ts +5 -5
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +5 -5
  101. package/dist/index.js.map +1 -1
  102. package/dist/legal-core/index.cjs +8 -8
  103. package/dist/legal-core/index.d.ts +3 -3
  104. package/dist/legal-core/index.d.ts.map +1 -1
  105. package/dist/legal-core/index.js +11 -11
  106. package/dist/legal-core/index.js.map +1 -1
  107. package/dist/marketing-core/index.d.ts +51 -1
  108. package/dist/marketing-core/index.d.ts.map +1 -1
  109. package/dist/marketing-core/index.js +35 -0
  110. package/dist/marketing-core/index.js.map +1 -1
  111. package/dist/marketing-schema.d.ts +9 -9
  112. package/dist/marketing-schema.d.ts.map +1 -1
  113. package/dist/marketing-schema.js +1 -1
  114. package/dist/mcp.d.ts +4 -4
  115. package/dist/mcp.js +4 -4
  116. package/dist/native.d.ts +6 -6
  117. package/dist/native.d.ts.map +1 -1
  118. package/dist/native.js +4 -4
  119. package/dist/native.js.map +1 -1
  120. package/dist/next-revalidate.d.ts +8 -8
  121. package/dist/next-revalidate.d.ts.map +1 -1
  122. package/dist/next-revalidate.js +7 -7
  123. package/dist/next-revalidate.js.map +1 -1
  124. package/dist/notifications-core/index.d.ts +1 -1
  125. package/dist/notifications-core/index.js +1 -1
  126. package/dist/parallel-pages.d.ts +4 -4
  127. package/dist/parallel-pages.d.ts.map +1 -1
  128. package/dist/parallel-pages.js +5 -5
  129. package/dist/parallel-pages.js.map +1 -1
  130. package/dist/portal-core/index.d.ts +1 -1
  131. package/dist/portal-core/index.js +1 -1
  132. package/dist/proxy.d.ts +18 -18
  133. package/dist/proxy.d.ts.map +1 -1
  134. package/dist/proxy.js +10 -10
  135. package/dist/proxy.js.map +1 -1
  136. package/dist/push-core/index.cjs +6 -2
  137. package/dist/push-core/index.d.ts +1 -1
  138. package/dist/push-core/index.d.ts.map +1 -1
  139. package/dist/push-core/index.js +6 -2
  140. package/dist/push-core/index.js.map +1 -1
  141. package/dist/react-analytics.d.ts +14 -14
  142. package/dist/react-analytics.d.ts.map +1 -1
  143. package/dist/react-analytics.js +15 -15
  144. package/dist/react-analytics.js.map +1 -1
  145. package/dist/react-attribution.d.ts +2 -2
  146. package/dist/react-attribution.d.ts.map +1 -1
  147. package/dist/react-attribution.js +1 -1
  148. package/dist/react-marketing.js +5 -5
  149. package/dist/react-marketing.js.map +1 -1
  150. package/dist/react.d.ts +38 -61
  151. package/dist/react.d.ts.map +1 -1
  152. package/dist/react.js +247 -261
  153. package/dist/react.js.map +1 -1
  154. package/dist/reserved-paths.d.ts +2 -2
  155. package/dist/reserved-paths.js +3 -3
  156. package/dist/reserved-paths.js.map +1 -1
  157. package/dist/revalidate-verify.d.ts +3 -3
  158. package/dist/revalidate-verify.d.ts.map +1 -1
  159. package/dist/revalidate-verify.js +1 -1
  160. package/dist/revalidate-verify.js.map +1 -1
  161. package/dist/sdk.d.ts +51 -45
  162. package/dist/sdk.d.ts.map +1 -1
  163. package/dist/sdk.js +48 -50
  164. package/dist/sdk.js.map +1 -1
  165. package/dist/seed-core/index.js +8 -8
  166. package/dist/seed-core/index.js.map +1 -1
  167. package/dist/seo-core/blog.d.ts +1 -1
  168. package/dist/seo-core/blog.js +1 -1
  169. package/dist/seo-core/blog.js.map +1 -1
  170. package/dist/seo-core/index.cjs +2 -2
  171. package/dist/seo-core/index.js +1 -1
  172. package/dist/seo-core/index.js.map +1 -1
  173. package/dist/seo.d.ts +1 -1
  174. package/dist/seo.d.ts.map +1 -1
  175. package/dist/seo.js +1 -1
  176. package/dist/seo.js.map +1 -1
  177. package/dist/sitemap-core/index.cjs +5 -5
  178. package/dist/sitemap-core/index.d.ts +13 -5
  179. package/dist/sitemap-core/index.d.ts.map +1 -1
  180. package/dist/sitemap-core/index.js +4 -4
  181. package/dist/sitemap-core/index.js.map +1 -1
  182. package/dist/socials.d.ts +6 -6
  183. package/dist/socials.d.ts.map +1 -1
  184. package/dist/socials.js +5 -5
  185. package/dist/socials.js.map +1 -1
  186. package/dist/solid-compat.d.ts +1 -1
  187. package/dist/solid-compat.js +4 -4
  188. package/dist/solid-compat.js.map +1 -1
  189. package/dist/store-core/index.d.ts +1 -1
  190. package/dist/vanilla.d.ts +12 -12
  191. package/dist/vanilla.d.ts.map +1 -1
  192. package/dist/vanilla.js +192 -145
  193. package/dist/vanilla.js.map +1 -1
  194. package/openapi.json +264 -1
  195. package/package.json +8 -8
  196. package/src/account-core/index.ts +1 -1
  197. package/src/adapters-revalidate.ts +3 -3
  198. package/src/analytics-core.ts +8 -8
  199. package/src/analytics-server.ts +6 -6
  200. package/src/angular/{biab-form.component.ts → bd-form.component.ts} +269 -161
  201. package/src/angular/headless.ts +12 -12
  202. package/src/angular/index.ts +9 -9
  203. package/src/auth-handler.ts +22 -22
  204. package/src/auth-links.ts +2 -2
  205. package/src/cli.ts +81 -81
  206. package/src/client.ts +218 -193
  207. package/src/consent-core/index.ts +10 -8
  208. package/src/contracts.ts +99 -15
  209. package/src/data-model-schema.ts +29 -26
  210. package/src/distribution.ts +5 -5
  211. package/src/element.ts +54 -54
  212. package/src/embed-protocol.ts +14 -14
  213. package/src/errors.ts +27 -27
  214. package/src/forms-core/autocomplete.ts +3 -3
  215. package/src/forms-core/controller.ts +12 -12
  216. package/src/forms-core/elements.ts +7 -7
  217. package/src/forms-core/formula.ts +1 -1
  218. package/src/forms-core/index.ts +8 -8
  219. package/src/forms-core/units.ts +1 -1
  220. package/src/forms-core/us-states.ts +1 -1
  221. package/src/forms-core/validation.ts +158 -14
  222. package/src/forms.ts +2 -2
  223. package/src/framework-support.ts +1 -1
  224. package/src/gallery-types.ts +1 -1
  225. package/src/graphql.ts +4 -4
  226. package/src/index.ts +38 -38
  227. package/src/legal-core/index.ts +12 -12
  228. package/src/marketing-core/index.ts +62 -0
  229. package/src/marketing-schema.ts +9 -9
  230. package/src/mcp.ts +4 -4
  231. package/src/native.ts +14 -14
  232. package/src/next-revalidate.ts +10 -10
  233. package/src/notifications-core/index.ts +1 -1
  234. package/src/parallel-pages.ts +6 -6
  235. package/src/portal-core/index.ts +1 -1
  236. package/src/proxy.ts +28 -28
  237. package/src/push-core/index.ts +11 -5
  238. package/src/qwik.tsx +262 -166
  239. package/src/react-analytics.tsx +17 -17
  240. package/src/react-attribution.tsx +2 -2
  241. package/src/react-marketing.tsx +5 -5
  242. package/src/react.tsx +541 -500
  243. package/src/reserved-paths.ts +3 -3
  244. package/src/revalidate-verify.ts +5 -5
  245. package/src/sdk.ts +131 -101
  246. package/src/seed-core/index.ts +8 -8
  247. package/src/seo-core/blog.ts +2 -2
  248. package/src/seo-core/index.ts +1 -1
  249. package/src/seo.ts +1 -1
  250. package/src/sitemap-core/index.ts +17 -9
  251. package/src/socials.ts +6 -6
  252. package/src/solid-compat.tsx +5 -5
  253. package/src/solid-surfaces.tsx +28 -28
  254. package/src/solid.tsx +264 -175
  255. package/src/store-core/index.ts +1 -1
  256. package/src/styles/{biab-forms.css → bd-forms.css} +158 -158
  257. package/src/svelte/{BiabForm.svelte → BdForm.svelte} +240 -173
  258. package/src/svelte/context.ts +16 -16
  259. package/src/svelte/headless.ts +10 -10
  260. package/src/svelte/index.ts +16 -16
  261. package/src/vanilla.ts +250 -169
  262. package/src/vue/{BiabForm.vue → BdForm.vue} +270 -157
  263. package/src/vue/headless.ts +11 -11
  264. package/src/vue/index.ts +26 -26
@@ -1,12 +1,12 @@
1
1
  /*
2
2
  * @businessdash/sdk — optional form styles.
3
3
  *
4
- * Styles the parts of `<BiabForm>` that benefit from non-trivial layout: the
4
+ * Styles the parts of `<BdForm>` that benefit from non-trivial layout: the
5
5
  * date-range / slot pickers, the file-upload field, and the multi-step progress
6
6
  * header (numbered-steps and bar variants). Base field/label/input chrome is
7
7
  * left to the host app so the form adopts your design. Import once:
8
8
  *
9
- * import "@businessdash/sdk/biab-forms.css";
9
+ * import "@businessdash/sdk/bd-forms.css";
10
10
  *
11
11
  * It is theme-aware: it reads the standard shadcn/COSS CSS variables
12
12
  * (--primary, --muted, --border, --radius-md, …) and falls back to the COSS
@@ -15,82 +15,82 @@
15
15
  * background-LESS — add a surface fill in your own app if you want one.
16
16
  */
17
17
 
18
- .biab-daterange {
19
- --biab-cell-size: 2rem;
20
- --biab-radius: var(--radius-md, 0.375rem);
21
- --biab-primary: var(--primary, oklch(0.205 0 0));
22
- --biab-primary-fg: var(--primary-foreground, oklch(0.985 0 0));
23
- --biab-muted: var(--muted, oklch(0.97 0 0));
24
- --biab-muted-fg: var(--muted-foreground, oklch(0.556 0 0));
25
- --biab-border: var(--border, oklch(0.922 0 0));
26
- --biab-popover: var(--popover, oklch(1 0 0));
27
- --biab-popover-fg: var(--popover-foreground, oklch(0.145 0 0));
28
- --biab-accent: var(--accent, oklch(0.97 0 0));
18
+ .bd-daterange {
19
+ --bd-cell-size: 2rem;
20
+ --bd-radius: var(--radius-md, 0.375rem);
21
+ --bd-primary: var(--primary, oklch(0.205 0 0));
22
+ --bd-primary-fg: var(--primary-foreground, oklch(0.985 0 0));
23
+ --bd-muted: var(--muted, oklch(0.97 0 0));
24
+ --bd-muted-fg: var(--muted-foreground, oklch(0.556 0 0));
25
+ --bd-border: var(--border, oklch(0.922 0 0));
26
+ --bd-popover: var(--popover, oklch(1 0 0));
27
+ --bd-popover-fg: var(--popover-foreground, oklch(0.145 0 0));
28
+ --bd-accent: var(--accent, oklch(0.97 0 0));
29
29
  position: relative;
30
30
  }
31
31
 
32
32
  /* Trigger — mirrors the COSS outline button (w-full justify-start). */
33
- .biab-daterange__trigger {
33
+ .bd-daterange__trigger {
34
34
  display: flex;
35
35
  width: 100%;
36
36
  align-items: center;
37
37
  gap: 0.5rem;
38
38
  height: 2.25rem;
39
39
  padding: 0 0.75rem;
40
- border: 1px solid var(--biab-border);
41
- border-radius: var(--biab-radius);
40
+ border: 1px solid var(--bd-border);
41
+ border-radius: var(--bd-radius);
42
42
  background: transparent;
43
43
  color: inherit;
44
44
  font-size: 0.875rem;
45
45
  text-align: left;
46
46
  cursor: pointer;
47
47
  }
48
- .biab-daterange__trigger:hover {
49
- background: var(--biab-accent);
48
+ .bd-daterange__trigger:hover {
49
+ background: var(--bd-accent);
50
50
  }
51
51
 
52
52
  /* Popover card — matches the COSS popover (bg-popover, border, rounded, shadow). */
53
- .biab-daterange__popover {
53
+ .bd-daterange__popover {
54
54
  top: calc(100% + 4px);
55
55
  left: 0;
56
56
  width: max-content;
57
57
  padding: 0.75rem;
58
- border: 1px solid var(--biab-border);
59
- border-radius: calc(var(--biab-radius) + 0.25rem);
60
- background: var(--biab-popover);
61
- color: var(--biab-popover-fg);
58
+ border: 1px solid var(--bd-border);
59
+ border-radius: calc(var(--bd-radius) + 0.25rem);
60
+ background: var(--bd-popover);
61
+ color: var(--bd-popover-fg);
62
62
  box-shadow:
63
63
  0 4px 6px -1px rgb(0 0 0 / 0.1),
64
64
  0 2px 4px -2px rgb(0 0 0 / 0.1);
65
65
  }
66
66
 
67
67
  /* Month nav — ghost prev/next flanking a centered caption. */
68
- .biab-daterange__nav {
68
+ .bd-daterange__nav {
69
69
  display: flex;
70
70
  align-items: center;
71
71
  justify-content: space-between;
72
72
  gap: 0.25rem;
73
73
  margin-bottom: 0.5rem;
74
74
  }
75
- .biab-daterange__navbtn {
75
+ .bd-daterange__navbtn {
76
76
  display: inline-flex;
77
77
  align-items: center;
78
78
  justify-content: center;
79
- width: var(--biab-cell-size);
80
- height: var(--biab-cell-size);
79
+ width: var(--bd-cell-size);
80
+ height: var(--bd-cell-size);
81
81
  padding: 0;
82
82
  border: none;
83
- border-radius: var(--biab-radius);
83
+ border-radius: var(--bd-radius);
84
84
  background: transparent;
85
85
  color: inherit;
86
86
  font-size: 1rem;
87
87
  line-height: 1;
88
88
  cursor: pointer;
89
89
  }
90
- .biab-daterange__navbtn:hover {
91
- background: var(--biab-accent);
90
+ .bd-daterange__navbtn:hover {
91
+ background: var(--bd-accent);
92
92
  }
93
- .biab-daterange__title {
93
+ .bd-daterange__title {
94
94
  flex: 1;
95
95
  text-align: center;
96
96
  font-size: 0.875rem;
@@ -99,30 +99,30 @@
99
99
  }
100
100
 
101
101
  /* Day grid. */
102
- .biab-daterange__grid {
102
+ .bd-daterange__grid {
103
103
  display: grid;
104
- grid-template-columns: repeat(7, var(--biab-cell-size));
104
+ grid-template-columns: repeat(7, var(--bd-cell-size));
105
105
  gap: 0;
106
106
  }
107
- .biab-daterange__dow {
107
+ .bd-daterange__dow {
108
108
  display: flex;
109
109
  align-items: center;
110
110
  justify-content: center;
111
- height: var(--biab-cell-size);
111
+ height: var(--bd-cell-size);
112
112
  font-size: 0.8rem;
113
113
  font-weight: 400;
114
- color: var(--biab-muted-fg);
114
+ color: var(--bd-muted-fg);
115
115
  user-select: none;
116
116
  }
117
- .biab-daterange__blank {
118
- width: var(--biab-cell-size);
119
- height: var(--biab-cell-size);
117
+ .bd-daterange__blank {
118
+ width: var(--bd-cell-size);
119
+ height: var(--bd-cell-size);
120
120
  }
121
- .biab-daterange__day {
122
- width: var(--biab-cell-size);
123
- height: var(--biab-cell-size);
121
+ .bd-daterange__day {
122
+ width: var(--bd-cell-size);
123
+ height: var(--bd-cell-size);
124
124
  border: none;
125
- border-radius: var(--biab-radius);
125
+ border-radius: var(--bd-radius);
126
126
  background: transparent;
127
127
  color: inherit;
128
128
  font-size: 0.875rem;
@@ -130,104 +130,104 @@
130
130
  cursor: pointer;
131
131
  user-select: none;
132
132
  }
133
- .biab-daterange__day:hover {
134
- background: var(--biab-accent);
133
+ .bd-daterange__day:hover {
134
+ background: var(--bd-accent);
135
135
  }
136
136
 
137
137
  /* today (when not selected) — matches COSS `today` (bg-muted). */
138
- .biab-daterange__day[data-today]:not([data-selected-single]):not(
138
+ .bd-daterange__day[data-today]:not([data-selected-single]):not(
139
139
  [data-range-start]
140
140
  ):not([data-range-end]):not([data-range-middle]) {
141
- background: var(--biab-muted);
141
+ background: var(--bd-muted);
142
142
  font-weight: 500;
143
143
  }
144
144
 
145
145
  /* Range middle — muted fill, square corners (connects the pill). */
146
- .biab-daterange__day[data-range-middle] {
147
- background: var(--biab-muted);
148
- color: var(--biab-popover-fg);
146
+ .bd-daterange__day[data-range-middle] {
147
+ background: var(--bd-muted);
148
+ color: var(--bd-popover-fg);
149
149
  border-radius: 0;
150
150
  }
151
151
 
152
152
  /* Range start / end + single selection — solid primary, rounded on the outer
153
153
  * edge so start→end reads as one connected pill (exactly like COSS). */
154
- .biab-daterange__day[data-range-start],
155
- .biab-daterange__day[data-range-end],
156
- .biab-daterange__day[data-selected-single] {
157
- background: var(--biab-primary);
158
- color: var(--biab-primary-fg);
154
+ .bd-daterange__day[data-range-start],
155
+ .bd-daterange__day[data-range-end],
156
+ .bd-daterange__day[data-selected-single] {
157
+ background: var(--bd-primary);
158
+ color: var(--bd-primary-fg);
159
159
  }
160
- .biab-daterange__day[data-range-start] {
160
+ .bd-daterange__day[data-range-start] {
161
161
  border-top-right-radius: 0;
162
162
  border-bottom-right-radius: 0;
163
163
  }
164
- .biab-daterange__day[data-range-end] {
164
+ .bd-daterange__day[data-range-end] {
165
165
  border-top-left-radius: 0;
166
166
  border-bottom-left-radius: 0;
167
167
  }
168
- .biab-daterange__day[data-range-start]:hover,
169
- .biab-daterange__day[data-range-end]:hover,
170
- .biab-daterange__day[data-selected-single]:hover {
171
- background: var(--biab-primary);
168
+ .bd-daterange__day[data-range-start]:hover,
169
+ .bd-daterange__day[data-range-end]:hover,
170
+ .bd-daterange__day[data-selected-single]:hover {
171
+ background: var(--bd-primary);
172
172
  }
173
173
 
174
174
  /* ── Auto-schedule (instant booking) slot picker ─────────────────────────── */
175
- .biab-field__schedule-auto {
175
+ .bd-field__schedule-auto {
176
176
  display: flex;
177
177
  flex-direction: column;
178
178
  gap: 0.75rem;
179
179
  max-height: 18rem;
180
180
  overflow-y: auto;
181
181
  }
182
- .biab-field__schedule-day-label {
182
+ .bd-field__schedule-day-label {
183
183
  margin: 0 0 0.25rem;
184
184
  font-size: 0.8125rem;
185
185
  font-weight: 600;
186
186
  }
187
- .biab-field__schedule-times {
187
+ .bd-field__schedule-times {
188
188
  display: flex;
189
189
  flex-wrap: wrap;
190
190
  gap: 0.375rem;
191
191
  }
192
- .biab-field__schedule-slot {
193
- border: 1px solid var(--biab-border, #d4d4d8);
194
- background: var(--biab-card, #fff);
192
+ .bd-field__schedule-slot {
193
+ border: 1px solid var(--bd-border, #d4d4d8);
194
+ background: var(--bd-card, #fff);
195
195
  border-radius: 9999px;
196
196
  padding: 0.25rem 0.75rem;
197
197
  font-size: 0.875rem;
198
198
  cursor: pointer;
199
199
  }
200
- .biab-field__schedule-slot:hover {
201
- background: var(--biab-muted, #f4f4f5);
200
+ .bd-field__schedule-slot:hover {
201
+ background: var(--bd-muted, #f4f4f5);
202
202
  }
203
- .biab-field__schedule-slot[data-selected="true"] {
204
- background: var(--biab-primary);
205
- color: var(--biab-primary-fg);
206
- border-color: var(--biab-primary);
203
+ .bd-field__schedule-slot[data-selected="true"] {
204
+ background: var(--bd-primary);
205
+ color: var(--bd-primary-fg);
206
+ border-color: var(--bd-primary);
207
207
  }
208
- .biab-field__schedule-hint {
208
+ .bd-field__schedule-hint {
209
209
  font-size: 0.875rem;
210
- color: var(--biab-muted-fg, #71717a);
210
+ color: var(--bd-muted-fg, #71717a);
211
211
  }
212
212
 
213
213
  /* ── Shared theme tokens for the components below ─────────────────────────── */
214
- /* Same theme-aware pattern as `.biab-daterange`: read the host's shadcn/COSS
214
+ /* Same theme-aware pattern as `.bd-daterange`: read the host's shadcn/COSS
215
215
  * vars, fall back to neutral light defaults. Containers are intentionally
216
216
  * background-LESS — the host app adds a surface fill if it wants one. */
217
- .biab-field__files,
218
- .biab-field__schedule,
219
- .biab-progress {
220
- --biab-radius: var(--radius-md, 0.5rem);
221
- --biab-primary: var(--primary, oklch(0.205 0 0));
222
- --biab-primary-fg: var(--primary-foreground, oklch(0.985 0 0));
223
- --biab-muted: var(--muted, oklch(0.97 0 0));
224
- --biab-muted-fg: var(--muted-foreground, oklch(0.556 0 0));
225
- --biab-border: var(--border, oklch(0.922 0 0));
226
- --biab-accent: var(--accent, oklch(0.97 0 0));
217
+ .bd-field__files,
218
+ .bd-field__schedule,
219
+ .bd-progress {
220
+ --bd-radius: var(--radius-md, 0.5rem);
221
+ --bd-primary: var(--primary, oklch(0.205 0 0));
222
+ --bd-primary-fg: var(--primary-foreground, oklch(0.985 0 0));
223
+ --bd-muted: var(--muted, oklch(0.97 0 0));
224
+ --bd-muted-fg: var(--muted-foreground, oklch(0.556 0 0));
225
+ --bd-border: var(--border, oklch(0.922 0 0));
226
+ --bd-accent: var(--accent, oklch(0.97 0 0));
227
227
  }
228
228
 
229
229
  /* ── File upload ─────────────────────────────────────────────────────────── */
230
- .biab-field__files {
230
+ .bd-field__files {
231
231
  display: flex;
232
232
  flex-direction: column;
233
233
  gap: 0.5rem;
@@ -236,7 +236,7 @@
236
236
  * `appearance: auto` + the text resets defend the NATIVE file control against a
237
237
  * host app's global input styling (e.g. `appearance: none` / letter-spacing),
238
238
  * which otherwise glitches the "Choose file" text and its layout in Safari. */
239
- .biab-field__fileinput {
239
+ .bd-field__fileinput {
240
240
  -webkit-appearance: auto;
241
241
  appearance: auto;
242
242
  box-sizing: border-box;
@@ -244,38 +244,38 @@
244
244
  width: 100%;
245
245
  max-width: 100%;
246
246
  padding: 0.75rem;
247
- border: 1.5px dashed var(--biab-border);
248
- border-radius: var(--biab-radius);
247
+ border: 1.5px dashed var(--bd-border);
248
+ border-radius: var(--bd-radius);
249
249
  background: transparent;
250
- color: var(--biab-muted-fg);
250
+ color: var(--bd-muted-fg);
251
251
  font-size: 0.875rem;
252
252
  line-height: normal;
253
253
  letter-spacing: normal;
254
254
  cursor: pointer;
255
255
  transition: border-color 0.15s ease;
256
256
  }
257
- .biab-field__fileinput:hover:not(:disabled) {
258
- border-color: var(--biab-primary);
257
+ .bd-field__fileinput:hover:not(:disabled) {
258
+ border-color: var(--bd-primary);
259
259
  }
260
- .biab-field__fileinput:disabled {
260
+ .bd-field__fileinput:disabled {
261
261
  opacity: 0.55;
262
262
  cursor: not-allowed;
263
263
  }
264
264
  /* The native "choose file" control — styled as an obvious button (it's a
265
265
  * control, not a container, so it carries a fill). */
266
- .biab-field__fileinput::file-selector-button {
266
+ .bd-field__fileinput::file-selector-button {
267
267
  margin-right: 0.75rem;
268
268
  padding: 0.35rem 0.75rem;
269
269
  border: none;
270
- border-radius: calc(var(--biab-radius) - 0.15rem);
271
- background: var(--biab-primary);
272
- color: var(--biab-primary-fg);
270
+ border-radius: calc(var(--bd-radius) - 0.15rem);
271
+ background: var(--bd-primary);
272
+ color: var(--bd-primary-fg);
273
273
  font-size: 0.8125rem;
274
274
  font-weight: 600;
275
275
  cursor: pointer;
276
276
  }
277
277
  /* Selected-file rows — bordered, no fill. */
278
- .biab-field__filelist {
278
+ .bd-field__filelist {
279
279
  list-style: none;
280
280
  margin: 0;
281
281
  padding: 0;
@@ -283,29 +283,29 @@
283
283
  flex-direction: column;
284
284
  gap: 0.375rem;
285
285
  }
286
- .biab-field__fileitem {
286
+ .bd-field__fileitem {
287
287
  display: flex;
288
288
  align-items: center;
289
289
  gap: 0.5rem;
290
290
  padding: 0.4rem 0.625rem;
291
- border: 1px solid var(--biab-border);
292
- border-radius: var(--biab-radius);
291
+ border: 1px solid var(--bd-border);
292
+ border-radius: var(--bd-radius);
293
293
  background: transparent;
294
294
  font-size: 0.8125rem;
295
295
  }
296
- .biab-field__filename {
296
+ .bd-field__filename {
297
297
  flex: 1;
298
298
  overflow: hidden;
299
299
  text-overflow: ellipsis;
300
300
  white-space: nowrap;
301
301
  }
302
- .biab-field__filepending {
302
+ .bd-field__filepending {
303
303
  flex-shrink: 0;
304
- color: var(--biab-muted-fg);
304
+ color: var(--bd-muted-fg);
305
305
  font-size: 0.75rem;
306
306
  white-space: nowrap;
307
307
  }
308
- .biab-field__fileremove {
308
+ .bd-field__fileremove {
309
309
  flex-shrink: 0;
310
310
  display: inline-flex;
311
311
  align-items: center;
@@ -315,47 +315,47 @@
315
315
  border: none;
316
316
  border-radius: 9999px;
317
317
  background: transparent;
318
- color: var(--biab-muted-fg);
318
+ color: var(--bd-muted-fg);
319
319
  font-size: 1.1rem;
320
320
  line-height: 1;
321
321
  cursor: pointer;
322
322
  transition: color 0.15s ease;
323
323
  }
324
- .biab-field__fileremove:hover {
325
- color: var(--biab-primary);
324
+ .bd-field__fileremove:hover {
325
+ color: var(--bd-primary);
326
326
  }
327
327
 
328
328
  /* ── Progress header — steps ─────────────────────────────────────────────── */
329
- .biab-progress {
329
+ .bd-progress {
330
330
  margin-bottom: 1.25rem;
331
331
  }
332
- .biab-progress--steps {
332
+ .bd-progress--steps {
333
333
  display: flex;
334
334
  align-items: center;
335
335
  gap: 0.25rem;
336
336
  }
337
- .biab-progress__line {
337
+ .bd-progress__line {
338
338
  flex: 1;
339
339
  height: 2px;
340
340
  border-radius: 1px;
341
- background: var(--biab-border);
341
+ background: var(--bd-border);
342
342
  }
343
- .biab-progress__line--done {
344
- background: var(--biab-primary);
343
+ .bd-progress__line--done {
344
+ background: var(--bd-primary);
345
345
  }
346
- .biab-progress__step {
346
+ .bd-progress__step {
347
347
  display: inline-flex;
348
348
  align-items: center;
349
349
  gap: 0.4rem;
350
350
  padding: 0.25rem 0.4rem;
351
351
  border: none;
352
352
  background: transparent;
353
- color: var(--biab-muted-fg);
353
+ color: var(--bd-muted-fg);
354
354
  font-size: 0.8125rem;
355
355
  cursor: pointer;
356
356
  }
357
357
  /* The step number/check — a small indicator circle (filled only once done). */
358
- .biab-progress__num {
358
+ .bd-progress__num {
359
359
  display: inline-flex;
360
360
  align-items: center;
361
361
  justify-content: center;
@@ -363,102 +363,102 @@
363
363
  width: 1.5rem;
364
364
  height: 1.5rem;
365
365
  border-radius: 9999px;
366
- border: 1.5px solid var(--biab-border);
366
+ border: 1.5px solid var(--bd-border);
367
367
  background: transparent;
368
- color: var(--biab-muted-fg);
368
+ color: var(--bd-muted-fg);
369
369
  font-size: 0.8125rem;
370
370
  font-weight: 600;
371
371
  }
372
- .biab-progress__step--current .biab-progress__num {
373
- border-color: var(--biab-primary);
374
- color: var(--biab-primary);
372
+ .bd-progress__step--current .bd-progress__num {
373
+ border-color: var(--bd-primary);
374
+ color: var(--bd-primary);
375
375
  }
376
- .biab-progress__step--done .biab-progress__num {
377
- border-color: var(--biab-primary);
378
- background: var(--biab-primary);
379
- color: var(--biab-primary-fg);
376
+ .bd-progress__step--done .bd-progress__num {
377
+ border-color: var(--bd-primary);
378
+ background: var(--bd-primary);
379
+ color: var(--bd-primary-fg);
380
380
  }
381
- .biab-progress__title {
381
+ .bd-progress__title {
382
382
  white-space: nowrap;
383
383
  }
384
- .biab-progress__step--current .biab-progress__title {
385
- color: var(--biab-primary);
384
+ .bd-progress__step--current .bd-progress__title {
385
+ color: var(--bd-primary);
386
386
  font-weight: 600;
387
387
  }
388
388
  /* Compact: drop step labels on narrow viewports so the row doesn't wrap. */
389
389
  @media (max-width: 520px) {
390
- .biab-progress__title {
390
+ .bd-progress__title {
391
391
  display: none;
392
392
  }
393
393
  }
394
394
 
395
395
  /* ── Progress header — bar ───────────────────────────────────────────────── */
396
- .biab-progress--bar {
396
+ .bd-progress--bar {
397
397
  display: flex;
398
398
  flex-direction: column;
399
399
  gap: 0.375rem;
400
400
  }
401
- .biab-progress__count {
401
+ .bd-progress__count {
402
402
  font-size: 0.8125rem;
403
403
  font-weight: 500;
404
- color: var(--biab-muted-fg);
404
+ color: var(--bd-muted-fg);
405
405
  }
406
406
  /* The track is intrinsic to a progress bar (it shows the unfilled portion), so
407
407
  * it keeps a muted fill — it's the control, not a layout container. */
408
- .biab-progress__track {
408
+ .bd-progress__track {
409
409
  width: 100%;
410
410
  height: 0.5rem;
411
411
  border-radius: 9999px;
412
- background: var(--biab-muted);
412
+ background: var(--bd-muted);
413
413
  overflow: hidden;
414
414
  }
415
- .biab-progress__fill {
415
+ .bd-progress__fill {
416
416
  height: 100%;
417
417
  border-radius: 9999px;
418
- background: var(--biab-primary);
418
+ background: var(--bd-primary);
419
419
  transition: width 0.3s ease;
420
420
  }
421
421
 
422
422
  /* ── Availability (capture mode) — ASAP + day/time chips ──────────────────── */
423
- .biab-field__schedule {
423
+ .bd-field__schedule {
424
424
  display: flex;
425
425
  flex-direction: column;
426
426
  gap: 0.875rem;
427
427
  }
428
- .biab-field__schedule-asap {
428
+ .bd-field__schedule-asap {
429
429
  display: flex;
430
430
  align-items: center;
431
431
  gap: 0.5rem;
432
432
  cursor: pointer;
433
433
  }
434
- .biab-field__schedule-asap input {
434
+ .bd-field__schedule-asap input {
435
435
  width: 1rem;
436
436
  height: 1rem;
437
- accent-color: var(--biab-primary);
437
+ accent-color: var(--bd-primary);
438
438
  }
439
- .biab-field__schedule-group {
439
+ .bd-field__schedule-group {
440
440
  display: flex;
441
441
  flex-direction: column;
442
442
  gap: 0.4rem;
443
443
  }
444
- .biab-field__schedule-label {
444
+ .bd-field__schedule-label {
445
445
  font-size: 0.8125rem;
446
446
  font-weight: 600;
447
- color: var(--biab-muted-fg);
447
+ color: var(--bd-muted-fg);
448
448
  }
449
- .biab-field__schedule-chips {
449
+ .bd-field__schedule-chips {
450
450
  display: flex;
451
451
  flex-wrap: wrap;
452
452
  gap: 0.4rem;
453
453
  }
454
454
 
455
- /* Toggle chips (day/time choices, and any `biab-field__chip` elsewhere). The
455
+ /* Toggle chips (day/time choices, and any `bd-field__chip` elsewhere). The
456
456
  * selected state (`--on`) is a solid primary fill so a pick is unmistakable. */
457
- .biab-field__chip {
457
+ .bd-field__chip {
458
458
  -webkit-appearance: none;
459
459
  appearance: none;
460
460
  padding: 0.35rem 0.85rem;
461
- border: 1px solid var(--biab-border);
461
+ border: 1px solid var(--bd-border);
462
462
  border-radius: 9999px;
463
463
  background: transparent;
464
464
  color: inherit;
@@ -470,15 +470,15 @@
470
470
  border-color 0.15s ease,
471
471
  color 0.15s ease;
472
472
  }
473
- .biab-field__chip:hover {
474
- border-color: var(--biab-primary);
475
- background: var(--biab-accent);
473
+ .bd-field__chip:hover {
474
+ border-color: var(--bd-primary);
475
+ background: var(--bd-accent);
476
476
  }
477
- .biab-field__chip--on {
478
- border-color: var(--biab-primary);
479
- background: var(--biab-primary);
480
- color: var(--biab-primary-fg);
477
+ .bd-field__chip--on {
478
+ border-color: var(--bd-primary);
479
+ background: var(--bd-primary);
480
+ color: var(--bd-primary-fg);
481
481
  }
482
- .biab-field__chip--on:hover {
483
- background: var(--biab-primary);
482
+ .bd-field__chip--on:hover {
483
+ background: var(--bd-primary);
484
484
  }
package/dist/cli.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * `biab-dev` CLI entry point.
3
+ * `bd` CLI entry point.
4
4
  *
5
5
  * Two independent flows, deliberately sharing nothing but transport
6
6
  * conventions — a website's content shape and an org's database shape are
7
7
  * different artifacts, with different review cadence and blast radius.
8
8
  *
9
- * WEBSITE CONTENT (`biab.config.{ts,mjs,js}`):
9
+ * WEBSITE CONTENT (`bd.config.{ts,mjs,js}`):
10
10
  * - `sync-schema` — resolve the config, compute the canonical SHA-256,
11
11
  * POST to the draft-schema endpoint. Idempotent.
12
12
  * - `sync-content` — walk `<contentSync.rootDir>/<locale>/<page>/
@@ -14,7 +14,7 @@
14
14
  * Per-row failures are reported but don't abort.
15
15
  * - `print-schema` — resolved schema + checksum, no upload.
16
16
  *
17
- * CUSTOM DATABASE (`biab.data-model.config.{ts,mjs,js}`):
17
+ * CUSTOM DATABASE (`bd.data-model.config.{ts,mjs,js}`):
18
18
  * - `view-data-model` — what's LIVE (not what was last pushed — the
19
19
  * dashboard writes this model too). `--diff` for the
20
20
  * migration plan, `--out` to scaffold a config.
@@ -36,7 +36,7 @@
36
36
  * change record contents, so its backup and confirmation guards are
37
37
  * load-bearing.
38
38
  *
39
- * Auth: `BIAB_API_KEY`, `BIAB_SITE_ID`, and `BIAB_PACKAGE_API_BASE_URL` from
39
+ * Auth: `BD_API_KEY`, `BD_SITE_ID`, and `BD_PACKAGE_API_BASE_URL` from
40
40
  * the environment (or a `.env` / `.env.local` in the cwd). Scopes:
41
41
  * `marketing:write_schema` / `marketing:write_content` for the website flow;
42
42
  * `metadata:read_schema` (view/plan), `metadata:write_schema` (push), and