@upstart.gg/sdk 0.0.51

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 (126) hide show
  1. package/LICENSE +633 -0
  2. package/README.md +11 -0
  3. package/custom-attrs.d.ts +63 -0
  4. package/dist/node/cli/api.js +3 -0
  5. package/dist/node/cli/commands/build/cmd-build.js +3 -0
  6. package/dist/node/cli/commands/login/cmd-login.js +10 -0
  7. package/dist/node/cli/commands/logout/cmd-logout.js +3 -0
  8. package/dist/node/cli/commands/publish/cmd-publish.js +36 -0
  9. package/dist/node/cli/commands/publish/parse-gitignore.js +14 -0
  10. package/dist/node/cli/commands/publish/uploader.js +17 -0
  11. package/dist/node/cli/constants.js +2 -0
  12. package/dist/node/cli/program.js +48 -0
  13. package/dist/node/cli/store.js +3 -0
  14. package/dist/node/cli/types.js +1 -0
  15. package/dist/node/cli/utils.js +2 -0
  16. package/dist/node/metafile-esm.json +1 -0
  17. package/dist/node/shared/config.js +12 -0
  18. package/dist/node/shared/logger.js +3 -0
  19. package/dist/shared/ajv.d.ts +6 -0
  20. package/dist/shared/ajv.js +2 -0
  21. package/dist/shared/attributes.d.ts +102 -0
  22. package/dist/shared/attributes.js +2 -0
  23. package/dist/shared/bricks.d.ts +140 -0
  24. package/dist/shared/bricks.js +2 -0
  25. package/dist/shared/datasources/external/facebook/posts/fetcher.d.ts +16 -0
  26. package/dist/shared/datasources/external/facebook/posts/fetcher.js +2 -0
  27. package/dist/shared/datasources/external/facebook/posts/schema.d.ts +31 -0
  28. package/dist/shared/datasources/external/facebook/posts/schema.js +2 -0
  29. package/dist/shared/datasources/external/instagram/feed/fetcher.d.ts +16 -0
  30. package/dist/shared/datasources/external/instagram/feed/fetcher.js +2 -0
  31. package/dist/shared/datasources/external/instagram/feed/schema.d.ts +23 -0
  32. package/dist/shared/datasources/external/instagram/feed/schema.js +2 -0
  33. package/dist/shared/datasources/external/json/fetcher.d.ts +17 -0
  34. package/dist/shared/datasources/external/json/fetcher.js +2 -0
  35. package/dist/shared/datasources/external/json/options.d.ts +11 -0
  36. package/dist/shared/datasources/external/json/options.js +2 -0
  37. package/dist/shared/datasources/external/mastodon/account/fetcher.d.ts +15 -0
  38. package/dist/shared/datasources/external/mastodon/account/fetcher.js +2 -0
  39. package/dist/shared/datasources/external/mastodon/account/schema.d.ts +43 -0
  40. package/dist/shared/datasources/external/mastodon/account/schema.js +2 -0
  41. package/dist/shared/datasources/external/mastodon/options.d.ts +10 -0
  42. package/dist/shared/datasources/external/mastodon/options.js +2 -0
  43. package/dist/shared/datasources/external/mastodon/status/fetcher.d.ts +15 -0
  44. package/dist/shared/datasources/external/mastodon/status/fetcher.js +2 -0
  45. package/dist/shared/datasources/external/mastodon/status/sample.array.d.ts +53 -0
  46. package/dist/shared/datasources/external/mastodon/status/sample.array.js +2 -0
  47. package/dist/shared/datasources/external/mastodon/status/sample.single.d.ts +53 -0
  48. package/dist/shared/datasources/external/mastodon/status/sample.single.js +2 -0
  49. package/dist/shared/datasources/external/mastodon/status/schema.d.ts +261 -0
  50. package/dist/shared/datasources/external/mastodon/status/schema.js +2 -0
  51. package/dist/shared/datasources/external/meta/oauth/config.d.ts +21 -0
  52. package/dist/shared/datasources/external/meta/oauth/config.js +1 -0
  53. package/dist/shared/datasources/external/meta/options.d.ts +10 -0
  54. package/dist/shared/datasources/external/meta/options.js +2 -0
  55. package/dist/shared/datasources/external/rss/fetcher.d.ts +15 -0
  56. package/dist/shared/datasources/external/rss/fetcher.js +2 -0
  57. package/dist/shared/datasources/external/rss/options.d.ts +10 -0
  58. package/dist/shared/datasources/external/rss/options.js +2 -0
  59. package/dist/shared/datasources/external/rss/schema.d.ts +19 -0
  60. package/dist/shared/datasources/external/rss/schema.js +2 -0
  61. package/dist/shared/datasources/external/threads/media/fetcher.d.ts +19 -0
  62. package/dist/shared/datasources/external/threads/media/fetcher.js +2 -0
  63. package/dist/shared/datasources/external/threads/media/schema.d.ts +30 -0
  64. package/dist/shared/datasources/external/threads/media/schema.js +2 -0
  65. package/dist/shared/datasources/external/tiktok/oauth/config.d.ts +22 -0
  66. package/dist/shared/datasources/external/tiktok/oauth/config.js +1 -0
  67. package/dist/shared/datasources/external/tiktok/video/fetcher.d.ts +16 -0
  68. package/dist/shared/datasources/external/tiktok/video/fetcher.js +2 -0
  69. package/dist/shared/datasources/external/tiktok/video/options.d.ts +10 -0
  70. package/dist/shared/datasources/external/tiktok/video/options.js +2 -0
  71. package/dist/shared/datasources/external/tiktok/video/schema.d.ts +25 -0
  72. package/dist/shared/datasources/external/tiktok/video/schema.js +2 -0
  73. package/dist/shared/datasources/external/youtube/list/fetcher.d.ts +16 -0
  74. package/dist/shared/datasources/external/youtube/list/fetcher.js +2 -0
  75. package/dist/shared/datasources/external/youtube/list/options.d.ts +14 -0
  76. package/dist/shared/datasources/external/youtube/list/options.js +2 -0
  77. package/dist/shared/datasources/external/youtube/list/schema.d.ts +43 -0
  78. package/dist/shared/datasources/external/youtube/list/schema.js +2 -0
  79. package/dist/shared/datasources/external/youtube/oauth/config.d.ts +22 -0
  80. package/dist/shared/datasources/external/youtube/oauth/config.js +1 -0
  81. package/dist/shared/datasources/internal/contact-info/schema.d.ts +17 -0
  82. package/dist/shared/datasources/internal/contact-info/schema.js +2 -0
  83. package/dist/shared/datasources/internal/faq/schema.d.ts +12 -0
  84. package/dist/shared/datasources/internal/faq/schema.js +2 -0
  85. package/dist/shared/datasources/internal/links/schema.d.ts +12 -0
  86. package/dist/shared/datasources/internal/links/schema.js +2 -0
  87. package/dist/shared/datasources/samples.d.ts +13 -0
  88. package/dist/shared/datasources/samples.js +2 -0
  89. package/dist/shared/datasources/types.d.ts +9 -0
  90. package/dist/shared/datasources/types.js +2 -0
  91. package/dist/shared/datasources/utils.d.ts +3 -0
  92. package/dist/shared/datasources/utils.js +2 -0
  93. package/dist/shared/datasources-DAysbbXK.d.ts +201 -0
  94. package/dist/shared/datasources.d.ts +9 -0
  95. package/dist/shared/datasources.js +2 -0
  96. package/dist/shared/env.d.ts +27 -0
  97. package/dist/shared/env.js +1 -0
  98. package/dist/shared/errors.d.ts +1 -0
  99. package/dist/shared/errors.js +2 -0
  100. package/dist/shared/index.d.ts +5 -0
  101. package/dist/shared/index.js +2 -0
  102. package/dist/shared/layout-constants.d.ts +20 -0
  103. package/dist/shared/layout-constants.js +2 -0
  104. package/dist/shared/manifest.d.ts +34 -0
  105. package/dist/shared/manifest.js +2 -0
  106. package/dist/shared/metafile-esm.json +1 -0
  107. package/dist/shared/page.d.ts +9 -0
  108. package/dist/shared/page.js +2 -0
  109. package/dist/shared/responsive.d.ts +6 -0
  110. package/dist/shared/responsive.js +2 -0
  111. package/dist/shared/social-icons.d.ts +6 -0
  112. package/dist/shared/social-icons.js +2 -0
  113. package/dist/shared/template-config.d.ts +9 -0
  114. package/dist/shared/template-config.js +1 -0
  115. package/dist/shared/theme.d.ts +37 -0
  116. package/dist/shared/theme.js +2 -0
  117. package/dist/shared/themes/all-themes.d.ts +6 -0
  118. package/dist/shared/themes/all-themes.js +2 -0
  119. package/dist/shared/themes/color-system.d.ts +323 -0
  120. package/dist/shared/themes/color-system.js +2 -0
  121. package/dist/shared/utils/invariant.d.ts +8 -0
  122. package/dist/shared/utils/invariant.js +2 -0
  123. package/dist/shared/utils/layout-utils.d.ts +24 -0
  124. package/dist/shared/utils/layout-utils.js +2 -0
  125. package/env.d.ts +24 -0
  126. package/package.json +162 -0
@@ -0,0 +1,323 @@
1
+ import { Theme } from '../theme.js';
2
+ export { default as chroma } from 'chroma-js';
3
+ import '@sinclair/typebox';
4
+
5
+ type ColorType = "primary" | "secondary" | "accent" | "neutral";
6
+ type ElementColorType = "page-background" | "background" | "text" | "page-text" | "border" | "shadow" | "accent";
7
+ type HarmonyType = "complementary" | "analogous" | "triadic" | "split-complementary" | "tetradic";
8
+ declare const colorAdjustments: readonly ["pastel", "soft", "default", "bold", "vibrant", "muted", "deep"];
9
+ declare const colorAdjustmentsLuminous: readonly ["pastel", "soft", "default", "bold", "vibrant"];
10
+ declare const colorAdjustmentsSubdued: readonly ["muted", "deep"];
11
+ type ColorAdjustment = (typeof colorAdjustments)[number];
12
+ declare const shades: readonly ["900", "800", "700", "600", "500", "400", "300", "200", "100", "50"];
13
+ type ElementColor = string;
14
+ interface ColorConstraints {
15
+ lightness: number;
16
+ saturation: number;
17
+ }
18
+ declare const getHarmoniousHues: (baseHue: number, harmonyType: HarmonyType) => number[];
19
+ declare function getColorsSuggestions(baseHueOrColor: number | string, theme: Theme): number[];
20
+ declare const generateShades: (baseColor: string) => Record<string, string>;
21
+ interface ContrastRequirements {
22
+ minContrast: number;
23
+ preferredContrast: number;
24
+ }
25
+ declare function isStandardColor(color: unknown): boolean;
26
+ /**
27
+ * @deprecated Not working well with gradients
28
+ */
29
+ declare const generateReadableTextColor: (backgroundColor: string, requirements?: ContrastRequirements) => string;
30
+ declare function propToStyle(prop: string | number | undefined, cssAttr: string): string | undefined;
31
+ declare function generateColorsVars(theme: Theme): Record<string, string>;
32
+ interface TextColors {
33
+ base: string;
34
+ subtle: string;
35
+ strong: string;
36
+ tonal: string;
37
+ "tonal-subtle": string;
38
+ "tonal-strong": string;
39
+ }
40
+ declare const generateTextColors: (backgroundColor: string, requirements?: ContrastRequirements) => TextColors;
41
+ declare const colorFamilies: {
42
+ readonly Reds: readonly [{
43
+ readonly name: "Red";
44
+ readonly base: 0;
45
+ readonly description: "Pure red";
46
+ }, {
47
+ readonly name: "Vermilion";
48
+ readonly base: 5;
49
+ readonly description: "Bright red-orange";
50
+ }, {
51
+ readonly name: "Scarlet";
52
+ readonly base: 10;
53
+ readonly description: "Bright orange-red";
54
+ }, {
55
+ readonly name: "Carmine";
56
+ readonly base: 345;
57
+ readonly description: "Deep red with purple";
58
+ }, {
59
+ readonly name: "Ruby";
60
+ readonly base: 350;
61
+ readonly description: "Deep, rich red";
62
+ }, {
63
+ readonly name: "Cherry";
64
+ readonly base: 355;
65
+ readonly description: "Deep red with slight blue";
66
+ }];
67
+ readonly Pinks: readonly [{
68
+ readonly name: "Coral";
69
+ readonly base: 15;
70
+ readonly description: "Orange-pink";
71
+ }, {
72
+ readonly name: "Rose";
73
+ readonly base: 330;
74
+ readonly description: "Deep pink";
75
+ }, {
76
+ readonly name: "Hot Pink";
77
+ readonly base: 335;
78
+ readonly description: "Vivid pink";
79
+ }, {
80
+ readonly name: "Pink";
81
+ readonly base: 340;
82
+ readonly description: "True pink";
83
+ }, {
84
+ readonly name: "Rose Gold";
85
+ readonly base: 345;
86
+ readonly description: "Metallic pink";
87
+ }, {
88
+ readonly name: "Fuchsia";
89
+ readonly base: 320;
90
+ readonly description: "Vivid purple-pink";
91
+ }, {
92
+ readonly name: "Magenta";
93
+ readonly base: 300;
94
+ readonly description: "Pure magenta";
95
+ }];
96
+ readonly Purples: readonly [{
97
+ readonly name: "Purple";
98
+ readonly base: 270;
99
+ readonly description: "True purple";
100
+ }, {
101
+ readonly name: "Lavender";
102
+ readonly base: 275;
103
+ readonly description: "Light purple";
104
+ }, {
105
+ readonly name: "Violet";
106
+ readonly base: 280;
107
+ readonly description: "Blue-purple";
108
+ }, {
109
+ readonly name: "Mauve";
110
+ readonly base: 285;
111
+ readonly description: "Muted purple";
112
+ }, {
113
+ readonly name: "Plum";
114
+ readonly base: 290;
115
+ readonly description: "Deep purple";
116
+ }, {
117
+ readonly name: "Orchid";
118
+ readonly base: 295;
119
+ readonly description: "Light violet-purple";
120
+ }];
121
+ readonly Blues: readonly [{
122
+ readonly name: "Arctic";
123
+ readonly base: 200;
124
+ readonly description: "Icy blue";
125
+ }, {
126
+ readonly name: "Cerulean";
127
+ readonly base: 205;
128
+ readonly description: "Sky-ocean blue";
129
+ }, {
130
+ readonly name: "Blue";
131
+ readonly base: 210;
132
+ readonly description: "True blue";
133
+ }, {
134
+ readonly name: "Cobalt";
135
+ readonly base: 215;
136
+ readonly description: "Pure deep blue";
137
+ }, {
138
+ readonly name: "Navy";
139
+ readonly base: 220;
140
+ readonly description: "Dark blue";
141
+ }, {
142
+ readonly name: "Indigo";
143
+ readonly base: 230;
144
+ readonly description: "Deep blue-purple";
145
+ }];
146
+ readonly Cyans: readonly [{
147
+ readonly name: "Aquamarine";
148
+ readonly base: 160;
149
+ readonly description: "Light blue-green";
150
+ }, {
151
+ readonly name: "Teal";
152
+ readonly base: 170;
153
+ readonly description: "Dark blue-green";
154
+ }, {
155
+ readonly name: "Turquoise";
156
+ readonly base: 175;
157
+ readonly description: "Blue-green";
158
+ }, {
159
+ readonly name: "Cyan";
160
+ readonly base: 180;
161
+ readonly description: "Pure cyan";
162
+ }, {
163
+ readonly name: "Ocean";
164
+ readonly base: 185;
165
+ readonly description: "Deep water blue";
166
+ }, {
167
+ readonly name: "Aqua";
168
+ readonly base: 190;
169
+ readonly description: "Light blue-green";
170
+ }];
171
+ readonly Greens: readonly [{
172
+ readonly name: "Lime";
173
+ readonly base: 90;
174
+ readonly description: "Yellow-tinted green";
175
+ }, {
176
+ readonly name: "Olive";
177
+ readonly base: 110;
178
+ readonly description: "Yellow-green";
179
+ }, {
180
+ readonly name: "Green";
181
+ readonly base: 120;
182
+ readonly description: "True green";
183
+ }, {
184
+ readonly name: "Jade";
185
+ readonly base: 130;
186
+ readonly description: "Rich medium green";
187
+ }, {
188
+ readonly name: "Sage";
189
+ readonly base: 135;
190
+ readonly description: "Muted green";
191
+ }, {
192
+ readonly name: "Emerald";
193
+ readonly base: 140;
194
+ readonly description: "Bright green";
195
+ }, {
196
+ readonly name: "Forest";
197
+ readonly base: 150;
198
+ readonly description: "Dark green";
199
+ }, {
200
+ readonly name: "Mint";
201
+ readonly base: 160;
202
+ readonly description: "Light cool green";
203
+ }];
204
+ readonly Yellows: readonly [{
205
+ readonly name: "Honey";
206
+ readonly base: 43;
207
+ readonly description: "Warm yellow";
208
+ }, {
209
+ readonly name: "Gold";
210
+ readonly base: 45;
211
+ readonly description: "Yellow-orange";
212
+ }, {
213
+ readonly name: "Banana";
214
+ readonly base: 52;
215
+ readonly description: "Warm light yellow";
216
+ }, {
217
+ readonly name: "Butter";
218
+ readonly base: 55;
219
+ readonly description: "Soft yellow";
220
+ }, {
221
+ readonly name: "Lemon";
222
+ readonly base: 58;
223
+ readonly description: "Light yellow";
224
+ }, {
225
+ readonly name: "Yellow";
226
+ readonly base: 60;
227
+ readonly description: "True yellow";
228
+ }];
229
+ readonly Oranges: readonly [{
230
+ readonly name: "Rust";
231
+ readonly base: 20;
232
+ readonly description: "Dark orange-brown";
233
+ }, {
234
+ readonly name: "Tangerine";
235
+ readonly base: 25;
236
+ readonly description: "Bright orange";
237
+ }, {
238
+ readonly name: "Orange";
239
+ readonly base: 30;
240
+ readonly description: "True orange";
241
+ }, {
242
+ readonly name: "Marigold";
243
+ readonly base: 35;
244
+ readonly description: "Deep yellow-orange";
245
+ }];
246
+ readonly Browns: readonly [{
247
+ readonly name: "Sienna";
248
+ readonly base: 20;
249
+ readonly description: "Reddish brown";
250
+ }, {
251
+ readonly name: "Cedar";
252
+ readonly base: 22;
253
+ readonly description: "Red-tinted brown";
254
+ }, {
255
+ readonly name: "Brown";
256
+ readonly base: 25;
257
+ readonly description: "True brown";
258
+ }, {
259
+ readonly name: "Sepia";
260
+ readonly base: 30;
261
+ readonly description: "Warm dark brown";
262
+ }, {
263
+ readonly name: "Tan";
264
+ readonly base: 34;
265
+ readonly description: "Light brown";
266
+ }, {
267
+ readonly name: "Khaki";
268
+ readonly base: 37;
269
+ readonly description: "Yellow-brown";
270
+ }];
271
+ readonly Grays: readonly [{
272
+ readonly name: "Charcoal";
273
+ readonly base: 200;
274
+ readonly description: "Dark gray";
275
+ readonly lowSaturation: true;
276
+ }, {
277
+ readonly name: "Silver";
278
+ readonly base: 210;
279
+ readonly description: "Light metallic gray";
280
+ readonly lowSaturation: true;
281
+ }, {
282
+ readonly name: "Slate";
283
+ readonly base: 215;
284
+ readonly description: "Blue-gray";
285
+ readonly lowSaturation: true;
286
+ }, {
287
+ readonly name: "Gray";
288
+ readonly base: 220;
289
+ readonly description: "True gray";
290
+ readonly lowSaturation: true;
291
+ }, {
292
+ readonly name: "Steel";
293
+ readonly base: 225;
294
+ readonly description: "Cool gray";
295
+ readonly lowSaturation: true;
296
+ }];
297
+ };
298
+ declare const colorAdjustmentBaseValues: Record<ColorAdjustment, Record<ColorType, ColorConstraints>>;
299
+ /**
300
+ * Color Variants
301
+ * Different visual variants for color application
302
+ */
303
+ type ColorVariant = "surface" | "filled" | "soft" | "ghost" | "outlined" | "faded" | "glazed" | "solid";
304
+ declare const generateVariantClasses: (variant: ColorVariant, colorType: ColorType) => {
305
+ base: {
306
+ background: string;
307
+ content: string;
308
+ };
309
+ hover: {
310
+ background: string;
311
+ content: string;
312
+ };
313
+ active: {
314
+ background: string;
315
+ content: string;
316
+ };
317
+ disabled: {
318
+ background: string;
319
+ content: string;
320
+ };
321
+ };
322
+
323
+ export { type ColorAdjustment, type ColorType, type ColorVariant, type ElementColor, type ElementColorType, type HarmonyType, colorAdjustmentBaseValues, colorAdjustments, colorAdjustmentsLuminous, colorAdjustmentsSubdued, colorFamilies, generateColorsVars, generateReadableTextColor, generateShades, generateTextColors, generateVariantClasses, getColorsSuggestions, getHarmoniousHues, isStandardColor, propToStyle, shades };
@@ -0,0 +1,2 @@
1
+ /*! Enpage - Copyright (C) 2024 Flippable - https://github.com/enpage/enpage/blob/main/LICENSE */
2
+ import a from"chroma-js";import{default as U}from"chroma-js";import{colors as d,css as F}from"@upstart.gg/style-system/twind";var A=["pastel","soft","default","bold","vibrant","muted","deep"],O=["pastel","soft","default","bold","vibrant"],P=["muted","deep"],V=["900","800","700","600","500","400","300","200","100","50"],C=(e,n)=>{switch(n){case"complementary":return[e,(e+180)%360];case"analogous":return[(e-30+360)%360,e,(e+30)%360];case"triadic":return[e,(e+120)%360,(e+240)%360];case"split-complementary":return[e,(e+150)%360,(e+210)%360];case"tetradic":return[e,(e+90)%360,(e+180)%360,(e+270)%360]}};function I(e,n){let t=typeof e=="string"?a(e).get("hsl.h"):e,i=[...Object.values(n.colors).map(l=>a(l).get("hsl.h")),t];return console.log({baseHueOrColor:e,excluded:i}),Array.from(new Set([...C(t,"complementary"),...C(t,"analogous"),...C(t,"triadic"),...C(t,"tetradic"),...C(t,"split-complementary")])).sort().filter(l=>i.includes(l)===!1).slice(0,8)}var M=e=>{let n=a(e).oklab(),[t,s,i]=n,l=Math.sqrt(s*s+i*i),r=Math.atan2(i,s),u={50:[.3,.12],100:[.25,.25],200:[.2,.4],300:[.1,.7],400:[.05,.85],500:[0,1],600:[-.05,1.1],700:[-.1,1.2],800:[-.15,1.3],900:[-.2,1.4]},o={},g=new Set;return Object.entries(u).forEach(([c,[w,b]])=>{try{let y=Math.max(.01,Math.min(.99,t+w)),h=l*b,f=h*Math.cos(r),m=h*Math.sin(r),p=a.oklab(y,f,m).hex();if(g.has(p)){let x=y+(c>"500"?-.02:.02),v=h*(c>"500"?1.05:.95),$=v*Math.cos(r),T=v*Math.sin(r);o[c]=a.oklab(x,$,T).hex()}else o[c]=p;g.add(o[c])}catch(y){console.error(`Error generating shade ${c}:`,y),o[c]=e}}),new Set(Object.values(o)).size!==Object.keys(u).length&&Object.entries(o).forEach(([c,w],b)=>{if(b>0&&o[Object.keys(o)[b-1]]===w){let y=Object.keys(o)[b-1],[h,f]=u[c],m=t+h*1.2,p=l*(f*1.1),x=p*Math.cos(r),v=p*Math.sin(r);o[c]=a.oklab(m,x,v).hex()}}),o};function S(e){return typeof e!="string"?!1:e.startsWith("rgb")||e.startsWith("hsl")||e.startsWith("#")||e.startsWith("var(--")}function B(e){let n=e.match(/\s((from|to-)[\S]+)/);return n?n[1]:e}var q=(e,n={minContrast:4.5,preferredContrast:7})=>{if(!S(e)){e=B(e),console.log("backgroundColor rewrite to",e);let t=document.querySelector(`.${e}`);if(!t)return console.warn("No matching element:",e),"#000000";e=window.getComputedStyle(t).backgroundColor,console.log("backgroundColor from element",e)}try{let t=a(e).luminance(),s=a.contrast(e,"#000000"),i=a.contrast(e,"#FFFFFF");return i>=n.minContrast||s>=n.minContrast?i>s?"#FFFFFF":"#000000":t>.5?"#FFFFFF":"#000000"}catch{return console.warn("Invalid color provided:",e),"#000000"}};function W(e,n){if(!(typeof e>"u"))return S(e)||typeof e=="number"?F({[n]:e}):e}function E(e){let n=Object.entries(e.colors).reduce((t,[s,i])=>{t[`color-${s}`]=i;for(let[l,r]of Object.entries(M(i))){t[`color-${s}-${l}`]=r;for(let[u,o]of Object.entries(L(r)))u==="base"?t[`text-${s}-${l}`]=o:t[`text-${s}-${l}-${u}`]=o}return t},{});return n["color-gray-50"]=d.gray[50],n["color-gray-100"]=d.gray[100],n["color-gray-200"]=d.gray[200],n["color-gray-300"]=d.gray[300],n["color-gray-400"]=d.gray[400],n["color-gray-500"]=d.gray[500],n["color-gray-600"]=d.gray[600],n["color-gray-700"]=d.gray[700],n["color-gray-800"]=d.gray[800],n["color-gray-900"]=d.gray[900],n}var L=(e,n={minContrast:4.5,preferredContrast:7})=>{try{let t=a(e),s=t.luminance(),[i,l,r]=t.hsl(),u=s>.5?"#000000":"#FFFFFF",o={base:u,subtle:a.mix(e,u,.4).hex(),strong:a.mix(e,u,.9).hex()},g=f=>{let m=l,p=a.hsl(i,m,f);for(;a.contrast(e,p)<n.minContrast&&m<1;)m=Math.min(1,m+.1),p=a.hsl(i,m,f);return p.hex()},k=g(Math.min(.95,r+.4)),c=g(Math.max(.05,r-.4)),w=a.contrast(e,k),b=a.contrast(e,c),h={tonal:w>b?k:c,"tonal-subtle":s>.5?g(Math.max(.1,r-.2)):g(Math.min(.9,r+.2)),"tonal-strong":s>.5?g(Math.max(.05,r-.6)):g(Math.min(.95,r+.6))};return{...o,...h}}catch{return console.warn("Invalid color provided:",e),{base:"#000000",subtle:"#000000",strong:"#000000",tonal:"#000000","tonal-subtle":"#000000","tonal-strong":"#000000"}}},G={Reds:[{name:"Red",base:0,description:"Pure red"},{name:"Vermilion",base:5,description:"Bright red-orange"},{name:"Scarlet",base:10,description:"Bright orange-red"},{name:"Carmine",base:345,description:"Deep red with purple"},{name:"Ruby",base:350,description:"Deep, rich red"},{name:"Cherry",base:355,description:"Deep red with slight blue"}],Pinks:[{name:"Coral",base:15,description:"Orange-pink"},{name:"Rose",base:330,description:"Deep pink"},{name:"Hot Pink",base:335,description:"Vivid pink"},{name:"Pink",base:340,description:"True pink"},{name:"Rose Gold",base:345,description:"Metallic pink"},{name:"Fuchsia",base:320,description:"Vivid purple-pink"},{name:"Magenta",base:300,description:"Pure magenta"}],Purples:[{name:"Purple",base:270,description:"True purple"},{name:"Lavender",base:275,description:"Light purple"},{name:"Violet",base:280,description:"Blue-purple"},{name:"Mauve",base:285,description:"Muted purple"},{name:"Plum",base:290,description:"Deep purple"},{name:"Orchid",base:295,description:"Light violet-purple"}],Blues:[{name:"Arctic",base:200,description:"Icy blue"},{name:"Cerulean",base:205,description:"Sky-ocean blue"},{name:"Blue",base:210,description:"True blue"},{name:"Cobalt",base:215,description:"Pure deep blue"},{name:"Navy",base:220,description:"Dark blue"},{name:"Indigo",base:230,description:"Deep blue-purple"}],Cyans:[{name:"Aquamarine",base:160,description:"Light blue-green"},{name:"Teal",base:170,description:"Dark blue-green"},{name:"Turquoise",base:175,description:"Blue-green"},{name:"Cyan",base:180,description:"Pure cyan"},{name:"Ocean",base:185,description:"Deep water blue"},{name:"Aqua",base:190,description:"Light blue-green"}],Greens:[{name:"Lime",base:90,description:"Yellow-tinted green"},{name:"Olive",base:110,description:"Yellow-green"},{name:"Green",base:120,description:"True green"},{name:"Jade",base:130,description:"Rich medium green"},{name:"Sage",base:135,description:"Muted green"},{name:"Emerald",base:140,description:"Bright green"},{name:"Forest",base:150,description:"Dark green"},{name:"Mint",base:160,description:"Light cool green"}],Yellows:[{name:"Honey",base:43,description:"Warm yellow"},{name:"Gold",base:45,description:"Yellow-orange"},{name:"Banana",base:52,description:"Warm light yellow"},{name:"Butter",base:55,description:"Soft yellow"},{name:"Lemon",base:58,description:"Light yellow"},{name:"Yellow",base:60,description:"True yellow"}],Oranges:[{name:"Rust",base:20,description:"Dark orange-brown"},{name:"Tangerine",base:25,description:"Bright orange"},{name:"Orange",base:30,description:"True orange"},{name:"Marigold",base:35,description:"Deep yellow-orange"}],Browns:[{name:"Sienna",base:20,description:"Reddish brown"},{name:"Cedar",base:22,description:"Red-tinted brown"},{name:"Brown",base:25,description:"True brown"},{name:"Sepia",base:30,description:"Warm dark brown"},{name:"Tan",base:34,description:"Light brown"},{name:"Khaki",base:37,description:"Yellow-brown"}],Grays:[{name:"Charcoal",base:200,description:"Dark gray",lowSaturation:!0},{name:"Silver",base:210,description:"Light metallic gray",lowSaturation:!0},{name:"Slate",base:215,description:"Blue-gray",lowSaturation:!0},{name:"Gray",base:220,description:"True gray",lowSaturation:!0},{name:"Steel",base:225,description:"Cool gray",lowSaturation:!0}]},Y={default:{primary:{saturation:65,lightness:50},secondary:{saturation:65,lightness:50},accent:{saturation:65,lightness:50},neutral:{saturation:10,lightness:50}},pastel:{primary:{saturation:55,lightness:68},secondary:{saturation:55,lightness:68},accent:{saturation:55,lightness:68},neutral:{saturation:5,lightness:68}},soft:{primary:{saturation:45,lightness:60},secondary:{saturation:45,lightness:60},accent:{saturation:45,lightness:60},neutral:{saturation:8,lightness:60}},bold:{primary:{saturation:70,lightness:45},secondary:{saturation:70,lightness:45},accent:{saturation:70,lightness:45},neutral:{saturation:12,lightness:45}},deep:{primary:{saturation:60,lightness:40},secondary:{saturation:60,lightness:40},accent:{saturation:60,lightness:40},neutral:{saturation:10,lightness:40}},vibrant:{primary:{saturation:75,lightness:55},secondary:{saturation:75,lightness:55},accent:{saturation:75,lightness:55},neutral:{saturation:15,lightness:55}},muted:{primary:{saturation:37,lightness:48},secondary:{saturation:37,lightness:48},accent:{saturation:37,lightness:48},neutral:{saturation:8,lightness:48}}},j={surface:{background:{base:"50",hover:"100",active:"200",disabled:"50"},content:{useContrast:!0,useTonal:!1},description:"Light backgrounds for large surfaces and containers",usage:["Page backgrounds","Cards","Containers","Panels","Sidebars"]},filled:{background:{base:"600",hover:"700",active:"800",disabled:"400"},content:{useContrast:!0,useTonal:!1},description:"Solid colored backgrounds with contrasting content",usage:["Primary buttons","Call-to-action elements","Selected states","Important UI elements","Navigation items"]},soft:{background:{base:"100",hover:"200",active:"300",disabled:"50"},content:{useContrast:!1,useTonal:!0},description:"Subtle, gentle color application for secondary elements",usage:["Secondary buttons","Background highlights","Selected items","Tags","Chips"]},ghost:{background:{base:"transparent",hover:"50",active:"100",disabled:"transparent"},content:{useContrast:!1,useTonal:!0},description:"Transparent background with colored content",usage:["Text buttons","Links","Menu items","Low-emphasis actions","Inline elements"]},outlined:{background:{base:"transparent",hover:"50",active:"100",disabled:"transparent"},content:{useContrast:!1,useTonal:!0},description:"Bordered elements with optional light background on interaction",usage:["Secondary buttons","Selectable cards","Input fields","Dropdown triggers","Menu items"]},faded:{background:{base:"50",hover:"100",active:"100",disabled:"50"},content:{useContrast:!1,useTonal:!0},description:"Very light, subtle color application",usage:["Background accents","Disabled states","Inactive elements","Secondary information","Subtle indicators"]},glazed:{background:{base:"100",hover:"200",active:"300",disabled:"50"},content:{useContrast:!0,useTonal:!1},description:"Semi-transparent color application with blur effect",usage:["Modal backgrounds","Overlay panels","Floating elements","Tooltips","Context menus"]},solid:{background:{base:"500",hover:"600",active:"700",disabled:"300"},content:{useContrast:!0,useTonal:!1},description:"Full solid color application with medium emphasis",usage:["Headers","Navigation bars","Important sections","Progress indicators","Status indicators"]}},z=(e,n)=>{let t=j[e];return{base:{background:`bg-${n}-${t.background.base}`,content:t.content.useTonal?`text-${n}-${t.background.base}-tonal`:`text-${n}-${t.background.base}-base`},hover:{background:`hover:bg-${n}-${t.background.hover}`,content:t.content.useTonal?`hover:text-${n}-${t.background.hover}-tonal`:`hover:text-${n}-${t.background.hover}-base`},active:{background:`active:bg-${n}-${t.background.active}`,content:t.content.useTonal?`active:text-${n}-${t.background.active}-tonal`:`active:text-${n}-${t.background.active}-base`},disabled:{background:`bg-${n}-${t.background.disabled}`,content:t.content.useTonal?`text-${n}-${t.background.disabled}-tonal`:`text-${n}-${t.background.disabled}-base`}}};export{U as chroma,Y as colorAdjustmentBaseValues,A as colorAdjustments,O as colorAdjustmentsLuminous,P as colorAdjustmentsSubdued,G as colorFamilies,E as generateColorsVars,q as generateReadableTextColor,M as generateShades,L as generateTextColors,z as generateVariantClasses,I as getColorsSuggestions,C as getHarmoniousHues,S as isStandardColor,W as propToStyle,V as shades};
@@ -0,0 +1,8 @@
1
+ declare function invariant(condition: any,
2
+ /**
3
+ * Can provide a string, or a function that returns a string for cases where
4
+ * the message takes a fair amount of effort to compute
5
+ */
6
+ message?: string | (() => string)): asserts condition;
7
+
8
+ export { invariant as default };
@@ -0,0 +1,2 @@
1
+ /*! Enpage - Copyright (C) 2024 Flippable - https://github.com/enpage/enpage/blob/main/LICENSE */
2
+ var i="Invariant failed";function e(r,n){if(r)return;let t=typeof n=="function"?n():n,o=t?`${i}: ${t}`:i;throw new Error(o)}export{e as default};
@@ -0,0 +1,24 @@
1
+ import { Brick, BrickConstraints } from '../bricks.js';
2
+ import { ResponsiveMode } from '../responsive.js';
3
+ import '@sinclair/typebox';
4
+ import 'zod';
5
+
6
+ /**
7
+ * Adjust the bricks "mobile" position based on the "desktop" position by:
8
+ * - Setting each brick to 100% width
9
+ * - Guess the order based on the desktop position
10
+ * - Respecting the optional "manualHeight" that could be already set on the brick's mobile position
11
+ * - Add a blank row between each brick
12
+ */
13
+ declare function adjustMobileLayout(layout: Brick[]): Brick[];
14
+ declare function canDropOnLayout(bricks: Brick[], currentBp: ResponsiveMode, dropPosition: {
15
+ y: number;
16
+ x: number;
17
+ }, constraints: BrickConstraints): {
18
+ y: number;
19
+ x: number;
20
+ w: number;
21
+ h: number;
22
+ } | false;
23
+
24
+ export { adjustMobileLayout, canDropOnLayout };
@@ -0,0 +1,2 @@
1
+ /*! Enpage - Copyright (C) 2024 Flippable - https://github.com/enpage/enpage/blob/main/LICENSE */
2
+ var t={desktop:36,mobile:18};var y={mobile:{width:t.mobile/2,height:Math.round(t.mobile/4)},desktop:{width:t.desktop/3,height:t.desktop/3}};function L(h){let o=[...h].sort((n,r)=>{let e=n.position.desktop,s=r.position.desktop;return e.y===s.y?e.x-s.x:e.y-s.y}),i=0,p=1;return o.map(n=>{let r={...n},e=n.position.mobile;return r.position={...n.position,mobile:{...e,x:0,y:i,w:t.mobile,h:e.manualHeight||e.h}},i+=r.position.mobile.h+p,r})}function g(h,o,i,p){function n(a,c,l,u,b){return c<0||c+u>t[o]||l<0?!1:!a.some(d=>{let m=d.position[o],f=c<m.x+m.w&&c+u>m.x,k=l<m.y+m.h&&l+b>m.y;return f&&k})}let r=Math.max(p.minWidth[o],1),e=Math.min(p.preferredWidth[o]||r,t[o]),s=p.preferredHeight[o]||y[o].height;return n(h,i.x,i.y,e,s)?{x:i.x,y:i.y,w:e,h:s}:!1}export{L as adjustMobileLayout,g as canDropOnLayout};
package/env.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ import type { Locals } from "@hattip/compose";
2
+ import type { CloudflareWorkersPlatformInfo } from "@hattip/adapter-cloudflare-workers";
3
+
4
+ // augment window object with custom properties
5
+ declare global {
6
+ interface Window {
7
+ enpage: import("./src/browser/js-api").EnpageJavascriptAPI;
8
+ __ENPAGE_STATE__: import("./src/browser/js-api").State;
9
+ __ENPAGE_ROUTING__: import("./src/browser/js-api").Routing;
10
+ }
11
+ }
12
+
13
+ declare module "@hattip/compose" {
14
+ interface Locals {
15
+ pageConfig: import("./src/shared/page").GenericPageConfig;
16
+ vite: import("vite").ViteDevServer;
17
+ }
18
+ }
19
+
20
+ declare module "@hattip/adapter-cloudflare-workers" {
21
+ interface CloudflareWorkersPlatformInfo {
22
+ env: import("./src/shared/env").EnpageEnv;
23
+ }
24
+ }
package/package.json ADDED
@@ -0,0 +1,162 @@
1
+ {
2
+ "name": "@upstart.gg/sdk",
3
+ "version": "0.0.51",
4
+ "type": "module",
5
+ "files": [
6
+ "dist",
7
+ "env.d.ts",
8
+ "custom-attrs.d.ts"
9
+ ],
10
+ "sideEffects": false,
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/shared/index.js",
14
+ "types": "./dist/shared/index.d.ts"
15
+ },
16
+ "./shared/*": {
17
+ "types": "./dist/shared/*.d.ts",
18
+ "import": "./dist/shared/*.js"
19
+ },
20
+ "./builder/*": {
21
+ "import": "./dist/node/builder/*.js"
22
+ },
23
+ "./cli/*": {
24
+ "import": "./dist/node/cli/*.js"
25
+ },
26
+ "./env.d.ts": {
27
+ "types": "./env.d.ts",
28
+ "require": "./env.d.ts",
29
+ "import": "./env.d.ts"
30
+ },
31
+ "./custom-attrs.d.ts": "./custom-attrs.d.ts",
32
+ "./*": {
33
+ "types": "./dist/shared/*.d.ts",
34
+ "import": "./dist/shared/*.js"
35
+ }
36
+ },
37
+ "bin": {
38
+ "enpage": "dist/node/cli/program.js"
39
+ },
40
+ "dependencies": {
41
+ "@csstools/postcss-global-data": "3.0.0",
42
+ "@date-fns/utc": "1.2.0",
43
+ "@dnd-kit/core": "6.1.0",
44
+ "@dnd-kit/modifiers": "7.0.0",
45
+ "@dnd-kit/sortable": "8.0.0",
46
+ "@dnd-kit/utilities": "3.2.2",
47
+ "@fullhuman/postcss-purgecss": "6.0.0",
48
+ "@hattip/adapter-cloudflare-workers": "0.0.47",
49
+ "@hattip/adapter-node": "0.0.47",
50
+ "@hattip/compose": "0.0.47",
51
+ "@hattip/core": "0.0.47",
52
+ "@headlessui/react": "2.1.2",
53
+ "@inquirer/prompts": "5.3.8",
54
+ "@radix-ui/react-context-menu": "2.2.2",
55
+ "@radix-ui/react-toggle-group": "1.1.0",
56
+ "@radix-ui/themes": "3.1.4",
57
+ "@sinclair/typebox": "0.33.7",
58
+ "@tiptap/extension-code": "2.8.0",
59
+ "@tiptap/extension-text-align": "2.8.0",
60
+ "@tiptap/pm": "2.8.0",
61
+ "@tiptap/react": "2.8.0",
62
+ "@tiptap/starter-kit": "2.8.0",
63
+ "@vitejs/plugin-react": "^4.3.1",
64
+ "ajv": "8.17.1",
65
+ "ajv-formats": "3.0.1",
66
+ "autoprefixer": "10.4.20",
67
+ "aws4fetch": "1.0.20",
68
+ "axe-core": "4.10.0",
69
+ "chalk": "5.3.0",
70
+ "chroma-js": "3.1.2",
71
+ "clsx": "2.1.1",
72
+ "commander": "12.1.0",
73
+ "conf": "13.0.1",
74
+ "cssnano": "7.0.5",
75
+ "csstype": "3.1.3",
76
+ "date-fns": "3.6.0",
77
+ "debug": "4.3.6",
78
+ "dompurify": "3.1.6",
79
+ "express": "^4.20.0",
80
+ "fast-glob": "3.3.2",
81
+ "form-data": "4.0.0",
82
+ "get-port": "7.1.0",
83
+ "htmlparser2": "9.1.0",
84
+ "http-cache-semantics": "4.1.1",
85
+ "http-errors-enhanced": "2.0.8",
86
+ "immer": "10.1.1",
87
+ "import-meta-resolve": "4.1.0",
88
+ "jsdom": "25.0.0",
89
+ "lodash-es": "4.17.21",
90
+ "marked": "14.1.2",
91
+ "merge-refs": "1.3.0",
92
+ "nanoid": "5.0.7",
93
+ "open": "10.1.0",
94
+ "open-props": "1.7.6",
95
+ "ora": "8.1.0",
96
+ "p-queue": "8.0.1",
97
+ "polished": "4.3.1",
98
+ "postcss": "8.4.42",
99
+ "postcss-custom-media": "11.0.1",
100
+ "postcss-import": "16.1.0",
101
+ "postcss-jit-props": "1.0.14",
102
+ "postcss-nested": "6.2.0",
103
+ "postcss-preset-env": "10.0.2",
104
+ "react-hotkeys-hook": "4.5.1",
105
+ "react-icons": "5.3.0",
106
+ "react-selecto": "1.26.3",
107
+ "rimraf": "6.0.1",
108
+ "rollup-plugin-strip-banner": "3.1.0",
109
+ "serve-favicon": "2.5.0",
110
+ "sharp": "0.33.5",
111
+ "svgo": "3.3.2",
112
+ "tailwindcss": "3.4.10",
113
+ "unstorage": "1.10.2",
114
+ "usehooks-ts": "3.1.0",
115
+ "vite": "5.4.6",
116
+ "vite-plugin-dts": "4.2.1",
117
+ "vite-plugin-image-optimizer": "1.1.8",
118
+ "vite-plugin-inspect": "0.8.7",
119
+ "vite-plugin-virtual": "0.3.0",
120
+ "vite-tsconfig-paths": "5.0.1",
121
+ "zod": "3.23.8",
122
+ "zod-validation-error": "3.3.1",
123
+ "zundo": "2.1.0",
124
+ "zustand": "4.5.5"
125
+ },
126
+ "peerDependencies": {
127
+ "react": "^18.3.1",
128
+ "react-dom": "^18.3.1",
129
+ "@upstart.gg/style-system": "0.0.23"
130
+ },
131
+ "devDependencies": {
132
+ "@cloudflare/workers-types": "4.20240806.0",
133
+ "@types/chroma-js": "2.4.4",
134
+ "@types/cli-progress": "3.11.6",
135
+ "@types/debug": "4.1.12",
136
+ "@types/dompurify": "3.0.5",
137
+ "@types/express": "^4.17.21",
138
+ "@types/jsdom": "21.1.7",
139
+ "@types/lodash-es": "4.17.12",
140
+ "@types/node": "^20.14.10",
141
+ "@types/react": "18.3.3",
142
+ "@types/react-dom": "^18.3.0",
143
+ "@types/serve-favicon": "2.5.7",
144
+ "@types/sortablejs": "1.15.8",
145
+ "concurrently": "8.2.2",
146
+ "react": "^18.3.1",
147
+ "react-dom": "^18.3.1",
148
+ "tsup": "8.2.4"
149
+ },
150
+ "author": "Matthias Etienne",
151
+ "publishConfig": {
152
+ "access": "public"
153
+ },
154
+ "scripts": {
155
+ "build": "NODE_OPTIONS='--max-old-space-size=12384' tsup --clean",
156
+ "dev": "NODE_OPTIONS='--max-old-space-size=12384' tsup --watch",
157
+ "sizetest": "pnpm build && du -sh dist",
158
+ "lint": "biome check --write . && tsc --noEmit",
159
+ "ci:lint": "tsc --noEmit",
160
+ "test": "vitest"
161
+ }
162
+ }