@astralform/ui 0.0.0-stage → 0.3.6
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.
- package/DESIGN.md +243 -0
- package/LICENSE +21 -0
- package/README.md +128 -2
- package/dist/components/Alert.d.ts +7 -0
- package/dist/components/Alert.js +40 -0
- package/dist/components/Alert.js.map +1 -0
- package/dist/components/AvatarEditor.d.ts +13 -0
- package/dist/components/AvatarEditor.js +44 -0
- package/dist/components/AvatarEditor.js.map +1 -0
- package/dist/components/Badge.d.ts +16 -0
- package/dist/components/Badge.js +38 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Button.d.ts +8 -0
- package/dist/components/Button.js +21 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Card.d.ts +10 -0
- package/dist/components/Card.js +22 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/CompactResourceRow.d.ts +34 -0
- package/dist/components/CompactResourceRow.js +11 -0
- package/dist/components/CompactResourceRow.js.map +1 -0
- package/dist/components/ConfirmDialog.d.ts +12 -0
- package/dist/components/ConfirmDialog.js +7 -0
- package/dist/components/ConfirmDialog.js.map +1 -0
- package/dist/components/CookieConsent.d.ts +1 -0
- package/dist/components/CookieConsent.js +42 -0
- package/dist/components/CookieConsent.js.map +1 -0
- package/dist/components/DataTable.d.ts +53 -0
- package/dist/components/DataTable.js +79 -0
- package/dist/components/DataTable.js.map +1 -0
- package/dist/components/DevTools.d.ts +6 -0
- package/dist/components/DevTools.js +59 -0
- package/dist/components/DevTools.js.map +1 -0
- package/dist/components/EmptyState.d.ts +11 -0
- package/dist/components/EmptyState.js +6 -0
- package/dist/components/EmptyState.js.map +1 -0
- package/dist/components/ImageCropModal.d.ts +18 -0
- package/dist/components/ImageCropModal.js +67 -0
- package/dist/components/ImageCropModal.js.map +1 -0
- package/dist/components/InlineBanner.d.ts +20 -0
- package/dist/components/InlineBanner.js +53 -0
- package/dist/components/InlineBanner.js.map +1 -0
- package/dist/components/Input.d.ts +8 -0
- package/dist/components/Input.js +10 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/InventoryCard.d.ts +20 -0
- package/dist/components/InventoryCard.js +22 -0
- package/dist/components/InventoryCard.js.map +1 -0
- package/dist/components/LoadingSpinner.d.ts +26 -0
- package/dist/components/LoadingSpinner.js +32 -0
- package/dist/components/LoadingSpinner.js.map +1 -0
- package/dist/components/Modal.d.ts +10 -0
- package/dist/components/Modal.js +38 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/PageHeader.d.ts +11 -0
- package/dist/components/PageHeader.js +5 -0
- package/dist/components/PageHeader.js.map +1 -0
- package/dist/components/PreviewModal.d.ts +24 -0
- package/dist/components/PreviewModal.js +69 -0
- package/dist/components/PreviewModal.js.map +1 -0
- package/dist/components/ProgressBar.d.ts +8 -0
- package/dist/components/ProgressBar.js +12 -0
- package/dist/components/ProgressBar.js.map +1 -0
- package/dist/components/ProviderIcon.d.ts +7 -0
- package/dist/components/ProviderIcon.js +34 -0
- package/dist/components/ProviderIcon.js.map +1 -0
- package/dist/components/ResizeHandle.d.ts +56 -0
- package/dist/components/ResizeHandle.js +166 -0
- package/dist/components/ResizeHandle.js.map +1 -0
- package/dist/components/SegmentedProgressBar.d.ts +9 -0
- package/dist/components/SegmentedProgressBar.js +23 -0
- package/dist/components/SegmentedProgressBar.js.map +1 -0
- package/dist/components/Select.d.ts +13 -0
- package/dist/components/Select.js +14 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/SpotlightButton.d.ts +10 -0
- package/dist/components/SpotlightButton.js +51 -0
- package/dist/components/SpotlightButton.js.map +1 -0
- package/dist/components/StatCard.d.ts +9 -0
- package/dist/components/StatCard.js +8 -0
- package/dist/components/StatCard.js.map +1 -0
- package/dist/components/StatusBadge.d.ts +4 -0
- package/dist/components/StatusBadge.js +10 -0
- package/dist/components/StatusBadge.js.map +1 -0
- package/dist/components/TabNav.d.ts +39 -0
- package/dist/components/TabNav.js +25 -0
- package/dist/components/TabNav.js.map +1 -0
- package/dist/components/TableShell.d.ts +21 -0
- package/dist/components/TableShell.js +19 -0
- package/dist/components/TableShell.js.map +1 -0
- package/dist/components/Textarea.d.ts +7 -0
- package/dist/components/Textarea.js +10 -0
- package/dist/components/Textarea.js.map +1 -0
- package/dist/components/Toggle.d.ts +16 -0
- package/dist/components/Toggle.js +25 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/Toolbar.d.ts +34 -0
- package/dist/components/Toolbar.js +30 -0
- package/dist/components/Toolbar.js.map +1 -0
- package/dist/components/TypeToConfirmModal.d.ts +15 -0
- package/dist/components/TypeToConfirmModal.js +14 -0
- package/dist/components/TypeToConfirmModal.js.map +1 -0
- package/dist/components/UnsavedChangesModal.d.ts +7 -0
- package/dist/components/UnsavedChangesModal.js +7 -0
- package/dist/components/UnsavedChangesModal.js.map +1 -0
- package/dist/components/UsageCard.d.ts +11 -0
- package/dist/components/UsageCard.js +9 -0
- package/dist/components/UsageCard.js.map +1 -0
- package/dist/components/avatar.d.ts +79 -0
- package/dist/components/avatar.js +88 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge-config.d.ts +16 -0
- package/dist/components/badge-config.js +48 -0
- package/dist/components/badge-config.js.map +1 -0
- package/dist/components/glowing-effect.d.ts +14 -0
- package/dist/components/glowing-effect.js +108 -0
- package/dist/components/glowing-effect.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cookies.d.ts +36 -0
- package/dist/lib/cookies.js +78 -0
- package/dist/lib/cookies.js.map +1 -0
- package/dist/lib/environment.d.ts +24 -0
- package/dist/lib/environment.js +52 -0
- package/dist/lib/environment.js.map +1 -0
- package/dist/lib/utils.d.ts +4 -0
- package/dist/lib/utils.js +8 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/package.json +89 -4
- package/src/styles/base.css +779 -0
- package/src/styles/fonts.css +25 -0
- package/src/styles/theme-default.css +164 -0
- package/src/styles/tokens/_foundations.css +28 -0
- package/src/styles/tokens/_semantics.css +72 -0
- package/themes/chat.DESIGN.md +197 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const PREVIEW_MODE_KEY = "astralform_preview_production";
|
|
2
|
+
/**
|
|
3
|
+
* Get the actual environment based on hostname
|
|
4
|
+
*/
|
|
5
|
+
export function getActualEnvironment() {
|
|
6
|
+
const hostname = window.location.hostname;
|
|
7
|
+
if (hostname === "localhost" || hostname === "127.0.0.1") {
|
|
8
|
+
return "local";
|
|
9
|
+
}
|
|
10
|
+
return "production";
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Check if production preview mode is enabled (dev only)
|
|
14
|
+
*/
|
|
15
|
+
export function isPreviewModeEnabled() {
|
|
16
|
+
if (getActualEnvironment() !== "local") {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
return localStorage.getItem(PREVIEW_MODE_KEY) === "true";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Toggle production preview mode (dev only)
|
|
23
|
+
*/
|
|
24
|
+
export function setPreviewMode(enabled) {
|
|
25
|
+
if (getActualEnvironment() !== "local") {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (enabled) {
|
|
29
|
+
localStorage.setItem(PREVIEW_MODE_KEY, "true");
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
localStorage.removeItem(PREVIEW_MODE_KEY);
|
|
33
|
+
}
|
|
34
|
+
// Dispatch event so components can react
|
|
35
|
+
window.dispatchEvent(new CustomEvent("previewModeChange", { detail: enabled }));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get the effective environment (respects preview mode)
|
|
39
|
+
*/
|
|
40
|
+
export function getEnvironment() {
|
|
41
|
+
if (isPreviewModeEnabled()) {
|
|
42
|
+
return "production";
|
|
43
|
+
}
|
|
44
|
+
return getActualEnvironment();
|
|
45
|
+
}
|
|
46
|
+
export function isLocalEnvironment() {
|
|
47
|
+
return getEnvironment() === "local";
|
|
48
|
+
}
|
|
49
|
+
export function isProductionEnvironment() {
|
|
50
|
+
return getEnvironment() === "production";
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/lib/environment.ts"],"names":[],"mappings":"AAOA,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1C,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QACzD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,oBAAoB,EAAE,KAAK,OAAO,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,IAAI,oBAAoB,EAAE,KAAK,OAAO,EAAE,CAAC;QACvC,OAAO;IACT,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IACD,yCAAyC;IACzC,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,oBAAoB,EAAE,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,cAAc,EAAE,KAAK,OAAO,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,cAAc,EAAE,KAAK,YAAY,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { clsx } from "clsx";
|
|
2
|
+
import { twMerge } from "tailwind-merge";
|
|
3
|
+
export function cn(...inputs) {
|
|
4
|
+
return twMerge(clsx(inputs));
|
|
5
|
+
}
|
|
6
|
+
/** Max upload size — must match backend MAX_SIZE_BYTES (256 KB). */
|
|
7
|
+
export const MAX_UPLOAD_SIZE = 256 * 1024;
|
|
8
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for @astralform/ui components.
|
|
3
|
+
*
|
|
4
|
+
* Kept intentionally small — only the types that the component layer itself
|
|
5
|
+
* needs. Domain types live in the consuming app, not here.
|
|
6
|
+
*/
|
|
7
|
+
/** Setup/readiness status surfaced by {@link StatusBadge} and inventory cards. */
|
|
8
|
+
export declare const InventoryStatus: {
|
|
9
|
+
readonly Ready: "ready";
|
|
10
|
+
readonly SetupRequired: "setup_required";
|
|
11
|
+
};
|
|
12
|
+
export type InventoryStatus = (typeof InventoryStatus)[keyof typeof InventoryStatus];
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for @astralform/ui components.
|
|
3
|
+
*
|
|
4
|
+
* Kept intentionally small — only the types that the component layer itself
|
|
5
|
+
* needs. Domain types live in the consuming app, not here.
|
|
6
|
+
*/
|
|
7
|
+
/** Setup/readiness status surfaced by {@link StatusBadge} and inventory cards. */
|
|
8
|
+
export const InventoryStatus = {
|
|
9
|
+
Ready: "ready",
|
|
10
|
+
SetupRequired: "setup_required",
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,gBAAgB;CACvB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,91 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astralform/ui",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.3.6",
|
|
4
|
+
"description": "Astralform's shared, theme-swappable React component system — driven by a DESIGN.md token contract.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Astralform",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/astralform-ai/Astralform.git"
|
|
11
|
+
},
|
|
12
|
+
"publishConfig": {
|
|
13
|
+
"access": "public",
|
|
14
|
+
"registry": "https://registry.npmjs.org"
|
|
15
|
+
},
|
|
16
|
+
"sideEffects": [
|
|
17
|
+
"**/*.css"
|
|
18
|
+
],
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"src/styles",
|
|
22
|
+
"DESIGN.md",
|
|
23
|
+
"themes",
|
|
24
|
+
"README.md"
|
|
25
|
+
],
|
|
26
|
+
"exports": {
|
|
27
|
+
".": {
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"import": "./dist/index.js"
|
|
30
|
+
},
|
|
31
|
+
"./data-table": {
|
|
32
|
+
"types": "./dist/components/DataTable.d.ts",
|
|
33
|
+
"import": "./dist/components/DataTable.js"
|
|
34
|
+
},
|
|
35
|
+
"./avatar-editor": {
|
|
36
|
+
"types": "./dist/components/AvatarEditor.d.ts",
|
|
37
|
+
"import": "./dist/components/AvatarEditor.js"
|
|
38
|
+
},
|
|
39
|
+
"./styles/fonts.css": "./src/styles/fonts.css",
|
|
40
|
+
"./styles/base.css": "./src/styles/base.css",
|
|
41
|
+
"./styles/theme-default.css": "./src/styles/theme-default.css",
|
|
42
|
+
"./styles/tokens/foundations.css": "./src/styles/tokens/_foundations.css",
|
|
43
|
+
"./styles/tokens/semantics.css": "./src/styles/tokens/_semantics.css",
|
|
44
|
+
"./DESIGN.md": "./DESIGN.md"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "rm -rf dist && tsc",
|
|
48
|
+
"dev": "tsc --watch",
|
|
49
|
+
"typecheck": "tsc --noEmit",
|
|
50
|
+
"design:lint": "design.md lint DESIGN.md",
|
|
51
|
+
"design:gen": "node scripts/gen-theme.mjs",
|
|
52
|
+
"prepublishOnly": "npm run build"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"@fontsource/outfit": "^5.2.8",
|
|
56
|
+
"@fontsource/plus-jakarta-sans": "^5.2.8"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"@headlessui/react": "^2.2.9",
|
|
60
|
+
"@phosphor-icons/react": "^2.1.10",
|
|
61
|
+
"class-variance-authority": "^0.7.1",
|
|
62
|
+
"clsx": "^2.1.1",
|
|
63
|
+
"motion": "^12.31.0",
|
|
64
|
+
"react": "^19.0.0",
|
|
65
|
+
"react-dom": "^19.0.0",
|
|
66
|
+
"react-router-dom": "^7.0.0",
|
|
67
|
+
"tailwind-merge": "^3.4.0"
|
|
68
|
+
},
|
|
69
|
+
"//peerDependencies-note": "Sub-paths need extra deps the consumer installs directly (npm won't auto-add them): @astralform/ui/data-table → @tanstack/react-table; @astralform/ui/avatar-editor → react-easy-crop + sonner. The core barrel needs none of these.",
|
|
70
|
+
"devDependencies": {
|
|
71
|
+
"@google/design.md": "^0.2.0",
|
|
72
|
+
"@headlessui/react": "^2.2.9",
|
|
73
|
+
"@phosphor-icons/react": "^2.1.10",
|
|
74
|
+
"@tanstack/react-table": "^8.21.3",
|
|
75
|
+
"@types/react": "^19.2.5",
|
|
76
|
+
"@types/react-dom": "^19.2.3",
|
|
77
|
+
"class-variance-authority": "^0.7.1",
|
|
78
|
+
"clsx": "^2.1.1",
|
|
79
|
+
"motion": "^12.31.0",
|
|
80
|
+
"react": "^19.2.0",
|
|
81
|
+
"react-dom": "^19.2.0",
|
|
82
|
+
"react-easy-crop": "^5.5.6",
|
|
83
|
+
"react-router-dom": "^7.12.0",
|
|
84
|
+
"sonner": "^2.0.7",
|
|
85
|
+
"tailwind-merge": "^3.4.0",
|
|
86
|
+
"typescript": "~5.9.3"
|
|
87
|
+
},
|
|
88
|
+
"engines": {
|
|
89
|
+
"node": ">=20"
|
|
90
|
+
}
|
|
91
|
+
}
|