@ggui-ai/dev-stack 0.14.0 → 0.16.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.
- package/dist/dev-server/auth.js +1 -1
- package/dist/hub-preview/client.js +715 -588
- package/package.json +7 -7
|
@@ -19930,47 +19930,18 @@ var __export2 = (target, all) => {
|
|
|
19930
19930
|
__defProp2(target, name, { get: all[name], enumerable: true });
|
|
19931
19931
|
};
|
|
19932
19932
|
|
|
19933
|
-
// ../protocol/dist/
|
|
19934
|
-
var
|
|
19935
|
-
var
|
|
19936
|
-
var
|
|
19937
|
-
|
|
19938
|
-
]);
|
|
19933
|
+
// ../protocol/dist/validation/ajv-runtime.js
|
|
19934
|
+
var import_ajv = __toESM(require_ajv(), 1);
|
|
19935
|
+
var import_ajv_formats = __toESM(require_dist(), 1);
|
|
19936
|
+
var import_equal = __toESM(require_equal(), 1);
|
|
19937
|
+
var import_ucs2length = __toESM(require_ucs2length(), 1);
|
|
19939
19938
|
|
|
19940
19939
|
// ../protocol/dist/validation/is-record.js
|
|
19941
19940
|
function isRecord(value) {
|
|
19942
19941
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
19943
19942
|
}
|
|
19944
19943
|
|
|
19945
|
-
// ../protocol/dist/validation/hygiene-rules.js
|
|
19946
|
-
var KNOWN_PERMISSION_NAMES = [
|
|
19947
|
-
// Web Permissions API names
|
|
19948
|
-
"geolocation",
|
|
19949
|
-
"notifications",
|
|
19950
|
-
"microphone",
|
|
19951
|
-
"camera",
|
|
19952
|
-
"persistent-storage",
|
|
19953
|
-
"midi",
|
|
19954
|
-
"clipboard-read",
|
|
19955
|
-
"clipboard-write",
|
|
19956
|
-
"speaker-selection",
|
|
19957
|
-
"storage-access",
|
|
19958
|
-
"background-sync",
|
|
19959
|
-
"accelerometer",
|
|
19960
|
-
"gyroscope",
|
|
19961
|
-
"magnetometer",
|
|
19962
|
-
"ambient-light-sensor",
|
|
19963
|
-
"screen-wake-lock"
|
|
19964
|
-
// MCP Apps `_meta.ui.permissions` mirror (matches the Web Permissions
|
|
19965
|
-
// API names today; future spec additions go here).
|
|
19966
|
-
];
|
|
19967
|
-
var KNOWN_PERMISSION_NAMES_SET = new Set(KNOWN_PERMISSION_NAMES);
|
|
19968
|
-
|
|
19969
19944
|
// ../protocol/dist/validation/ajv-runtime.js
|
|
19970
|
-
var import_ajv = __toESM(require_ajv(), 1);
|
|
19971
|
-
var import_ajv_formats = __toESM(require_dist(), 1);
|
|
19972
|
-
var import_equal = __toESM(require_equal(), 1);
|
|
19973
|
-
var import_ucs2length = __toESM(require_ucs2length(), 1);
|
|
19974
19945
|
function resolveHelperFn(imported) {
|
|
19975
19946
|
if (typeof imported === "function") {
|
|
19976
19947
|
return imported;
|
|
@@ -20412,6 +20383,37 @@ function validateActionEnvelope(envelope, spec, precompiledActions) {
|
|
|
20412
20383
|
return validateActionData(envelope.payload, spec, precompiledActions);
|
|
20413
20384
|
}
|
|
20414
20385
|
|
|
20386
|
+
// ../protocol/dist/validation/hygiene-rules.js
|
|
20387
|
+
var KNOWN_PERMISSION_NAMES = [
|
|
20388
|
+
// Web Permissions API names
|
|
20389
|
+
"geolocation",
|
|
20390
|
+
"notifications",
|
|
20391
|
+
"microphone",
|
|
20392
|
+
"camera",
|
|
20393
|
+
"persistent-storage",
|
|
20394
|
+
"midi",
|
|
20395
|
+
"clipboard-read",
|
|
20396
|
+
"clipboard-write",
|
|
20397
|
+
"speaker-selection",
|
|
20398
|
+
"storage-access",
|
|
20399
|
+
"background-sync",
|
|
20400
|
+
"accelerometer",
|
|
20401
|
+
"gyroscope",
|
|
20402
|
+
"magnetometer",
|
|
20403
|
+
"ambient-light-sensor",
|
|
20404
|
+
"screen-wake-lock"
|
|
20405
|
+
// MCP Apps `_meta.ui.permissions` mirror (matches the Web Permissions
|
|
20406
|
+
// API names today; future spec additions go here).
|
|
20407
|
+
];
|
|
20408
|
+
var KNOWN_PERMISSION_NAMES_SET = new Set(KNOWN_PERMISSION_NAMES);
|
|
20409
|
+
|
|
20410
|
+
// ../protocol/dist/version.js
|
|
20411
|
+
var PROTOCOL_VERSION = "draft-2026-09-10";
|
|
20412
|
+
var PROTOCOL_SCHEMA_VERSION = PROTOCOL_VERSION;
|
|
20413
|
+
var CLIENT_SUPPORTED_VERSIONS = Object.freeze([
|
|
20414
|
+
PROTOCOL_SCHEMA_VERSION
|
|
20415
|
+
]);
|
|
20416
|
+
|
|
20415
20417
|
// ../protocol/dist/envelopes/builders.js
|
|
20416
20418
|
function resolveSchemaVersion(parts) {
|
|
20417
20419
|
if ("schemaVersion" in parts) {
|
|
@@ -20448,8 +20450,7 @@ __export(dist_exports, {
|
|
|
20448
20450
|
StreamBus: () => StreamBus,
|
|
20449
20451
|
buildActionEnvelope: () => buildActionEnvelope,
|
|
20450
20452
|
buildWireConfig: () => buildWireConfig,
|
|
20451
|
-
|
|
20452
|
-
createConnectionStore: () => createConnectionStore,
|
|
20453
|
+
connectionSource: () => connectionSource,
|
|
20453
20454
|
useAction: () => useAction,
|
|
20454
20455
|
useApp: () => useApp,
|
|
20455
20456
|
useAuth: () => useAuth,
|
|
@@ -20602,10 +20603,46 @@ function useApp() {
|
|
|
20602
20603
|
var import_react5 = __toESM(require_react(), 1);
|
|
20603
20604
|
|
|
20604
20605
|
// ../wire/dist/connection-store.js
|
|
20606
|
+
var ConnectionWriterConflictError = class extends Error {
|
|
20607
|
+
owner;
|
|
20608
|
+
attemptedBy;
|
|
20609
|
+
constructor(owner, attemptedBy) {
|
|
20610
|
+
super(owner === attemptedBy ? `connection writer: '${owner}' already holds the claim and '${attemptedBy}' is claiming it again \u2014 two copies of '${owner}' in one document (a duplicate bundle of the runtime)` : `connection writer: '${owner}' holds the claim; '${attemptedBy}' cannot take it \u2014 exactly one party writes the connection state`);
|
|
20611
|
+
this.name = "ConnectionWriterConflictError";
|
|
20612
|
+
this.owner = owner;
|
|
20613
|
+
this.attemptedBy = attemptedBy;
|
|
20614
|
+
}
|
|
20615
|
+
};
|
|
20616
|
+
var ConnectionWriterReleasedError = class extends Error {
|
|
20617
|
+
claimant;
|
|
20618
|
+
constructor(claimant) {
|
|
20619
|
+
super(`connection writer: '${claimant}' released its claim and cannot set the connection state`);
|
|
20620
|
+
this.name = "ConnectionWriterReleasedError";
|
|
20621
|
+
this.claimant = claimant;
|
|
20622
|
+
}
|
|
20623
|
+
};
|
|
20624
|
+
var DOCUMENT_STORE_KEY = /* @__PURE__ */ Symbol.for("ai.ggui.wire/connection-store");
|
|
20625
|
+
var ConnectionStoreSlotError = class extends Error {
|
|
20626
|
+
key;
|
|
20627
|
+
constructor(key) {
|
|
20628
|
+
super(`connection store: the document slot ${String(key)} holds a value that is not a connection store \u2014 another copy of @ggui-ai/wire with an incompatible shape, or a foreign object. Refusing to adopt or overwrite it.`);
|
|
20629
|
+
this.key = key;
|
|
20630
|
+
this.name = "ConnectionStoreSlotError";
|
|
20631
|
+
}
|
|
20632
|
+
};
|
|
20633
|
+
function isConnectionStore(value) {
|
|
20634
|
+
if (typeof value !== "object" || value === null)
|
|
20635
|
+
return false;
|
|
20636
|
+
const source = Reflect.get(value, "source");
|
|
20637
|
+
if (typeof source !== "object" || source === null)
|
|
20638
|
+
return false;
|
|
20639
|
+
return typeof Reflect.get(value, "claim") === "function" && typeof Reflect.get(source, "subscribe") === "function" && typeof Reflect.get(source, "getSnapshot") === "function";
|
|
20640
|
+
}
|
|
20605
20641
|
function createConnectionStore(initial = true) {
|
|
20606
20642
|
let value = initial;
|
|
20643
|
+
let owner;
|
|
20607
20644
|
const listeners = /* @__PURE__ */ new Set();
|
|
20608
|
-
|
|
20645
|
+
const source = {
|
|
20609
20646
|
subscribe(listener) {
|
|
20610
20647
|
listeners.add(listener);
|
|
20611
20648
|
return () => {
|
|
@@ -20614,22 +20651,53 @@ function createConnectionStore(initial = true) {
|
|
|
20614
20651
|
},
|
|
20615
20652
|
getSnapshot() {
|
|
20616
20653
|
return value;
|
|
20617
|
-
},
|
|
20618
|
-
set(connected) {
|
|
20619
|
-
if (connected === value)
|
|
20620
|
-
return;
|
|
20621
|
-
value = connected;
|
|
20622
|
-
for (const l of listeners)
|
|
20623
|
-
l();
|
|
20624
20654
|
}
|
|
20625
20655
|
};
|
|
20656
|
+
return {
|
|
20657
|
+
source,
|
|
20658
|
+
claim(claimant) {
|
|
20659
|
+
if (owner !== void 0)
|
|
20660
|
+
throw new ConnectionWriterConflictError(owner, claimant);
|
|
20661
|
+
owner = claimant;
|
|
20662
|
+
let released = false;
|
|
20663
|
+
return {
|
|
20664
|
+
set(connected) {
|
|
20665
|
+
if (released)
|
|
20666
|
+
throw new ConnectionWriterReleasedError(claimant);
|
|
20667
|
+
if (connected === value)
|
|
20668
|
+
return;
|
|
20669
|
+
value = connected;
|
|
20670
|
+
for (const l of listeners)
|
|
20671
|
+
l();
|
|
20672
|
+
},
|
|
20673
|
+
release() {
|
|
20674
|
+
if (released)
|
|
20675
|
+
return;
|
|
20676
|
+
released = true;
|
|
20677
|
+
owner = void 0;
|
|
20678
|
+
}
|
|
20679
|
+
};
|
|
20680
|
+
}
|
|
20681
|
+
};
|
|
20682
|
+
}
|
|
20683
|
+
function documentConnectionStore() {
|
|
20684
|
+
const existing = Reflect.get(globalThis, DOCUMENT_STORE_KEY);
|
|
20685
|
+
if (existing !== void 0) {
|
|
20686
|
+
if (isConnectionStore(existing))
|
|
20687
|
+
return existing;
|
|
20688
|
+
throw new ConnectionStoreSlotError(DOCUMENT_STORE_KEY);
|
|
20689
|
+
}
|
|
20690
|
+
const created = createConnectionStore(true);
|
|
20691
|
+
Reflect.set(globalThis, DOCUMENT_STORE_KEY, created);
|
|
20692
|
+
return created;
|
|
20626
20693
|
}
|
|
20627
|
-
var
|
|
20694
|
+
var documentStore = documentConnectionStore();
|
|
20695
|
+
var connectionSource = documentStore.source;
|
|
20628
20696
|
|
|
20629
20697
|
// ../wire/dist/useRender.js
|
|
20630
20698
|
function useRender() {
|
|
20631
20699
|
const { render } = useWireContext();
|
|
20632
|
-
const isConnected = (0, import_react5.useSyncExternalStore)(
|
|
20700
|
+
const isConnected = (0, import_react5.useSyncExternalStore)(connectionSource.subscribe, connectionSource.getSnapshot, connectionSource.getSnapshot);
|
|
20633
20701
|
return { sessionId: render.sessionId, isConnected };
|
|
20634
20702
|
}
|
|
20635
20703
|
|
|
@@ -20899,6 +20967,42 @@ __export2(primitives_exports, {
|
|
|
20899
20967
|
useAnimationKey: () => useAnimationKey,
|
|
20900
20968
|
useMotion: () => useMotion
|
|
20901
20969
|
});
|
|
20970
|
+
var spacing = {
|
|
20971
|
+
0: "0",
|
|
20972
|
+
0.5: "2px",
|
|
20973
|
+
1: "4px",
|
|
20974
|
+
1.5: "6px",
|
|
20975
|
+
2: "8px",
|
|
20976
|
+
2.5: "10px",
|
|
20977
|
+
3: "12px",
|
|
20978
|
+
3.5: "14px",
|
|
20979
|
+
4: "16px",
|
|
20980
|
+
5: "20px",
|
|
20981
|
+
6: "24px",
|
|
20982
|
+
7: "28px",
|
|
20983
|
+
8: "32px",
|
|
20984
|
+
9: "36px",
|
|
20985
|
+
10: "40px",
|
|
20986
|
+
11: "44px",
|
|
20987
|
+
12: "48px",
|
|
20988
|
+
14: "56px",
|
|
20989
|
+
16: "64px",
|
|
20990
|
+
20: "80px",
|
|
20991
|
+
24: "96px",
|
|
20992
|
+
28: "112px",
|
|
20993
|
+
32: "128px",
|
|
20994
|
+
36: "144px",
|
|
20995
|
+
40: "160px",
|
|
20996
|
+
44: "176px",
|
|
20997
|
+
48: "192px",
|
|
20998
|
+
52: "208px",
|
|
20999
|
+
56: "224px",
|
|
21000
|
+
60: "240px",
|
|
21001
|
+
64: "256px",
|
|
21002
|
+
72: "288px",
|
|
21003
|
+
80: "320px",
|
|
21004
|
+
96: "384px"
|
|
21005
|
+
};
|
|
20902
21006
|
var maxWidth = {
|
|
20903
21007
|
xs: "320px",
|
|
20904
21008
|
sm: "480px",
|
|
@@ -20990,22 +21094,23 @@ function renderWithTrait(trait, traitProps, root, children) {
|
|
|
20990
21094
|
function resolveToneCss(tone) {
|
|
20991
21095
|
switch (tone) {
|
|
20992
21096
|
case "default":
|
|
20993
|
-
return "var(--ggui-color-
|
|
21097
|
+
return "var(--ggui-color-onContainer, #18181b)";
|
|
20994
21098
|
case "muted":
|
|
20995
|
-
return "var(--ggui-color-
|
|
21099
|
+
return "var(--ggui-color-onSunken, #52525b)";
|
|
20996
21100
|
case "subtle":
|
|
20997
21101
|
return "var(--ggui-color-neutral-500, #71717a)";
|
|
20998
21102
|
case "emphasized":
|
|
20999
21103
|
return "var(--ggui-color-primary-700, #0369a1)";
|
|
21000
21104
|
case "loud":
|
|
21001
21105
|
return "var(--ggui-color-primary-500, #0ea5e9)";
|
|
21106
|
+
case "error":
|
|
21107
|
+
return `var(--ggui-color-error, var(--ggui-color-error-500, ${SEMANTIC_TONE_FALLBACK.error}))`;
|
|
21002
21108
|
case "success":
|
|
21003
21109
|
case "warning":
|
|
21004
|
-
case "error":
|
|
21005
21110
|
case "info":
|
|
21006
21111
|
return `var(--ggui-color-${tone}-500, ${SEMANTIC_TONE_FALLBACK[tone]})`;
|
|
21007
21112
|
case "inverse":
|
|
21008
|
-
return "var(--ggui-color-
|
|
21113
|
+
return "var(--ggui-color-container, #ffffff)";
|
|
21009
21114
|
case "inherit":
|
|
21010
21115
|
return "inherit";
|
|
21011
21116
|
}
|
|
@@ -21019,14 +21124,15 @@ var SEMANTIC_TONE_FALLBACK = {
|
|
|
21019
21124
|
function resolveSurfaceCss(surface) {
|
|
21020
21125
|
switch (surface) {
|
|
21021
21126
|
case "default":
|
|
21127
|
+
return "var(--ggui-color-container, #ffffff)";
|
|
21022
21128
|
case "elevated":
|
|
21023
|
-
return "var(--ggui-color-
|
|
21129
|
+
return "var(--ggui-color-elevated, #ffffff)";
|
|
21024
21130
|
case "sunken":
|
|
21025
|
-
return "var(--ggui-color-
|
|
21131
|
+
return "var(--ggui-color-sunken, #f4f4f5)";
|
|
21026
21132
|
case "accent":
|
|
21027
21133
|
return "var(--ggui-color-primary-50, #f0f9ff)";
|
|
21028
21134
|
case "inverted":
|
|
21029
|
-
return "var(--ggui-color-
|
|
21135
|
+
return "var(--ggui-color-onContainer, #18181b)";
|
|
21030
21136
|
case "transparent":
|
|
21031
21137
|
return "transparent";
|
|
21032
21138
|
}
|
|
@@ -21246,7 +21352,7 @@ var lineHeightMap = {
|
|
|
21246
21352
|
"4xl": 1.25
|
|
21247
21353
|
};
|
|
21248
21354
|
function Text({ children, size = "base", weight = "normal", caps = false, tone, align, truncate, is = "p", id, htmlFor, style, className }) {
|
|
21249
|
-
const resolvedColor = tone ? resolveToneCss(tone) : "var(--ggui-color-
|
|
21355
|
+
const resolvedColor = tone ? resolveToneCss(tone) : "var(--ggui-color-onContainer, #18181b)";
|
|
21250
21356
|
const textStyle = {
|
|
21251
21357
|
fontSize: sizeMap[size],
|
|
21252
21358
|
fontWeight: weightMap[weight],
|
|
@@ -21268,6 +21374,10 @@ function Text({ children, size = "base", weight = "normal", caps = false, tone,
|
|
|
21268
21374
|
const elementProps = { id, htmlFor, className, style: textStyle };
|
|
21269
21375
|
return (0, import_react11.createElement)(is, elementProps, children);
|
|
21270
21376
|
}
|
|
21377
|
+
var fontFamily = {
|
|
21378
|
+
sans: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
21379
|
+
mono: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace'
|
|
21380
|
+
};
|
|
21271
21381
|
var fontSize = {
|
|
21272
21382
|
xs: "12px",
|
|
21273
21383
|
sm: "14px",
|
|
@@ -21345,10 +21455,25 @@ var headingStyles = {
|
|
|
21345
21455
|
letterSpacing: letterSpacing.normal
|
|
21346
21456
|
}
|
|
21347
21457
|
};
|
|
21458
|
+
var HEADING_SIZE = {
|
|
21459
|
+
h1: "var(--ggui-font-size-4xl, 36px)",
|
|
21460
|
+
h2: "var(--ggui-font-size-3xl, 30px)",
|
|
21461
|
+
h3: "var(--ggui-font-size-2xl, 24px)",
|
|
21462
|
+
h4: "var(--ggui-font-size-xl, 20px)",
|
|
21463
|
+
h5: "var(--ggui-font-size-lg, 18px)",
|
|
21464
|
+
h6: "var(--ggui-font-size-base, 16px)"
|
|
21465
|
+
};
|
|
21348
21466
|
function Heading({ children, level = 2, tone, align, style, className }) {
|
|
21349
21467
|
const tag = `h${level}`;
|
|
21350
|
-
const
|
|
21351
|
-
const
|
|
21468
|
+
const fallback = headingStyles[tag] || headingStyles.h2;
|
|
21469
|
+
const headingStyle = {
|
|
21470
|
+
fontSize: HEADING_SIZE[tag],
|
|
21471
|
+
fontWeight: `var(--ggui-font-weight-heading, ${fallback.fontWeight})`,
|
|
21472
|
+
fontFamily: "var(--ggui-font-family-heading, var(--ggui-font-family-sans, inherit))",
|
|
21473
|
+
lineHeight: fallback.lineHeight,
|
|
21474
|
+
letterSpacing: `var(--ggui-letter-spacing-heading, ${fallback.letterSpacing})`
|
|
21475
|
+
};
|
|
21476
|
+
const resolvedColor = tone ? resolveToneCss(tone) : "var(--ggui-color-onContainer, #18181b)";
|
|
21352
21477
|
return (0, import_react12.createElement)(tag, {
|
|
21353
21478
|
className,
|
|
21354
21479
|
style: {
|
|
@@ -21422,8 +21547,8 @@ var variantStyles = {
|
|
|
21422
21547
|
border: "none"
|
|
21423
21548
|
},
|
|
21424
21549
|
secondary: {
|
|
21425
|
-
backgroundColor: "var(--ggui-color-
|
|
21426
|
-
color: "var(--ggui-color-
|
|
21550
|
+
backgroundColor: "var(--ggui-color-sunken, #f4f4f5)",
|
|
21551
|
+
color: "var(--ggui-color-onSunken, #52525b)",
|
|
21427
21552
|
border: "none"
|
|
21428
21553
|
},
|
|
21429
21554
|
outline: {
|
|
@@ -21433,7 +21558,7 @@ var variantStyles = {
|
|
|
21433
21558
|
},
|
|
21434
21559
|
ghost: {
|
|
21435
21560
|
backgroundColor: "transparent",
|
|
21436
|
-
color: "var(--ggui-color-
|
|
21561
|
+
color: "var(--ggui-color-onSunken, #52525b)",
|
|
21437
21562
|
border: "none"
|
|
21438
21563
|
},
|
|
21439
21564
|
danger: {
|
|
@@ -21490,19 +21615,19 @@ function Input({ label, placeholder, value, onChange, type = "text", error: erro
|
|
|
21490
21615
|
}, children: [label && (0, import_jsx_runtime9.jsxs)("label", { htmlFor: inputId, style: {
|
|
21491
21616
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
21492
21617
|
fontWeight: "var(--ggui-font-weight-medium, 500)",
|
|
21493
|
-
color: "var(--ggui-color-
|
|
21618
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
21494
21619
|
}, children: [label, required && (0, import_jsx_runtime9.jsx)("span", { "aria-hidden": "true", style: { color: "var(--ggui-color-error-500, #ef4444)", marginLeft: "2px" }, children: "*" })] }), (0, import_jsx_runtime9.jsx)("input", { id: inputId, type, placeholder, value, onChange: (e) => onChange?.(e.target.value), disabled, required, "aria-invalid": hasError || void 0, "aria-describedby": hasMessage ? messageId : void 0, style: {
|
|
21495
21620
|
...sizeStyles2[size],
|
|
21496
21621
|
width: "100%",
|
|
21497
21622
|
borderRadius: "var(--ggui-shape-radius-md, 8px)",
|
|
21498
21623
|
border: `1px solid ${hasError ? "var(--ggui-color-error-500, #ef4444)" : "var(--ggui-color-outline, #d4d4d8)"}`,
|
|
21499
|
-
backgroundColor: disabled ? "var(--ggui-color-
|
|
21500
|
-
color: "var(--ggui-color-
|
|
21624
|
+
backgroundColor: disabled ? "var(--ggui-color-sunken, #fafafa)" : "var(--ggui-color-sunken, #ffffff)",
|
|
21625
|
+
color: "var(--ggui-color-onContainer, #18181b)",
|
|
21501
21626
|
transition: `border-color ${duration.normal} ${easing.easeInOut}, box-shadow ${duration.normal} ${easing.easeInOut}`,
|
|
21502
21627
|
boxSizing: "border-box"
|
|
21503
21628
|
}, ...rest }), hasMessage && (0, import_jsx_runtime9.jsx)("span", { id: messageId, role: hasError ? "alert" : void 0, style: {
|
|
21504
21629
|
fontSize: "var(--ggui-font-size-xs, 12px)",
|
|
21505
|
-
color: hasError ? "var(--ggui-color-error-500, #ef4444)" : "var(--ggui-color-
|
|
21630
|
+
color: hasError ? "var(--ggui-color-error-500, #ef4444)" : "var(--ggui-color-onSunken, #52525b)"
|
|
21506
21631
|
}, children: error2 || helperText })] });
|
|
21507
21632
|
}
|
|
21508
21633
|
function TextArea({ label, placeholder, value, onChange, rows = 4, error: error2, helperText, required, disabled, maxLength, showCount, autoResize, style, className, ...rest }) {
|
|
@@ -21520,14 +21645,14 @@ function TextArea({ label, placeholder, value, onChange, rows = 4, error: error2
|
|
|
21520
21645
|
}, children: [label && (0, import_jsx_runtime10.jsxs)("label", { htmlFor: textareaId, style: {
|
|
21521
21646
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
21522
21647
|
fontWeight: "var(--ggui-font-weight-medium, 500)",
|
|
21523
|
-
color: "var(--ggui-color-
|
|
21648
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
21524
21649
|
}, children: [label, required && (0, import_jsx_runtime10.jsx)("span", { "aria-hidden": "true", style: { color: "var(--ggui-color-error-500, #ef4444)", marginLeft: "2px" }, children: "*" })] }), (0, import_jsx_runtime10.jsx)("textarea", { id: textareaId, placeholder, value, onChange: (e) => onChange?.(e.target.value), rows, disabled, required, maxLength, "aria-invalid": hasError || void 0, "aria-describedby": hasMessage ? messageId : void 0, style: {
|
|
21525
21650
|
padding: "10px 12px",
|
|
21526
21651
|
width: "100%",
|
|
21527
21652
|
borderRadius: "var(--ggui-shape-radius-md, 8px)",
|
|
21528
21653
|
border: `1px solid ${hasError ? "var(--ggui-color-error-500, #ef4444)" : "var(--ggui-color-outline, #d4d4d8)"}`,
|
|
21529
|
-
backgroundColor: disabled ? "var(--ggui-color-
|
|
21530
|
-
color: "var(--ggui-color-
|
|
21654
|
+
backgroundColor: disabled ? "var(--ggui-color-sunken, #fafafa)" : "var(--ggui-color-sunken, #ffffff)",
|
|
21655
|
+
color: "var(--ggui-color-onContainer, #18181b)",
|
|
21531
21656
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
21532
21657
|
fontFamily: "inherit",
|
|
21533
21658
|
transition: `border-color ${duration.normal} ${easing.easeInOut}, box-shadow ${duration.normal} ${easing.easeInOut}`,
|
|
@@ -21535,10 +21660,10 @@ function TextArea({ label, placeholder, value, onChange, rows = 4, error: error2
|
|
|
21535
21660
|
resize: autoResize ? "none" : "vertical"
|
|
21536
21661
|
}, ...rest }), (0, import_jsx_runtime10.jsxs)("div", { style: { display: "flex", justifyContent: "space-between" }, children: [hasMessage && (0, import_jsx_runtime10.jsx)("span", { id: messageId, role: hasError ? "alert" : void 0, style: {
|
|
21537
21662
|
fontSize: "var(--ggui-font-size-xs, 12px)",
|
|
21538
|
-
color: hasError ? "var(--ggui-color-error-500, #ef4444)" : "var(--ggui-color-
|
|
21663
|
+
color: hasError ? "var(--ggui-color-error-500, #ef4444)" : "var(--ggui-color-onSunken, #52525b)"
|
|
21539
21664
|
}, children: error2 || helperText }), showCount && maxLength && (0, import_jsx_runtime10.jsxs)("span", { style: {
|
|
21540
21665
|
fontSize: "var(--ggui-font-size-xs, 12px)",
|
|
21541
|
-
color: "var(--ggui-color-
|
|
21666
|
+
color: "var(--ggui-color-onSunken, #52525b)",
|
|
21542
21667
|
marginLeft: "auto"
|
|
21543
21668
|
}, children: [charCount, "/", maxLength] })] })] });
|
|
21544
21669
|
}
|
|
@@ -21556,14 +21681,14 @@ function Select({ label, value, onChange, options, placeholder, error: error2, h
|
|
|
21556
21681
|
return (0, import_jsx_runtime11.jsxs)("div", { className, style: { display: "flex", flexDirection: "column", gap: "var(--ggui-spacing-1, 4px)", ...style }, children: [label && (0, import_jsx_runtime11.jsxs)("label", { htmlFor: selectId, style: {
|
|
21557
21682
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
21558
21683
|
fontWeight: "var(--ggui-font-weight-medium, 500)",
|
|
21559
|
-
color: "var(--ggui-color-
|
|
21684
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
21560
21685
|
}, children: [label, required && (0, import_jsx_runtime11.jsx)("span", { "aria-hidden": "true", style: { color: "var(--ggui-color-error-500, #ef4444)", marginLeft: "2px" }, children: "*" })] }), (0, import_jsx_runtime11.jsxs)("select", { id: selectId, value, onChange: (e) => onChange?.(e.target.value), disabled, required, "aria-invalid": hasError || void 0, "aria-describedby": hasMessage ? messageId : void 0, style: {
|
|
21561
21686
|
...sizeStyles3[size],
|
|
21562
21687
|
width: "100%",
|
|
21563
21688
|
borderRadius: "var(--ggui-shape-radius-md, 8px)",
|
|
21564
21689
|
border: `1px solid ${hasError ? "var(--ggui-color-error-500, #ef4444)" : "var(--ggui-color-outline, #d4d4d8)"}`,
|
|
21565
|
-
backgroundColor: disabled ? "var(--ggui-color-
|
|
21566
|
-
color: value ? "var(--ggui-color-
|
|
21690
|
+
backgroundColor: disabled ? "var(--ggui-color-sunken, #fafafa)" : "var(--ggui-color-sunken, #ffffff)",
|
|
21691
|
+
color: value ? "var(--ggui-color-onContainer, #18181b)" : "var(--ggui-color-onSunken, #52525b)",
|
|
21567
21692
|
cursor: disabled ? "not-allowed" : "pointer",
|
|
21568
21693
|
appearance: "none",
|
|
21569
21694
|
backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M3 4.5L6 7.5L9 4.5'/%3E%3C/svg%3E")`,
|
|
@@ -21574,7 +21699,7 @@ function Select({ label, value, onChange, options, placeholder, error: error2, h
|
|
|
21574
21699
|
transition: `border-color ${duration.normal} ${easing.easeInOut}, box-shadow ${duration.normal} ${easing.easeInOut}`
|
|
21575
21700
|
}, ...rest, children: [placeholder && (0, import_jsx_runtime11.jsx)("option", { value: "", disabled: true, children: placeholder }), options.map((opt) => (0, import_jsx_runtime11.jsx)("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value))] }), hasMessage && (0, import_jsx_runtime11.jsx)("span", { id: messageId, role: hasError ? "alert" : void 0, style: {
|
|
21576
21701
|
fontSize: "var(--ggui-font-size-xs, 12px)",
|
|
21577
|
-
color: hasError ? "var(--ggui-color-error-500, #ef4444)" : "var(--ggui-color-
|
|
21702
|
+
color: hasError ? "var(--ggui-color-error-500, #ef4444)" : "var(--ggui-color-onSunken, #52525b)"
|
|
21578
21703
|
}, children: error2 || helperText })] });
|
|
21579
21704
|
}
|
|
21580
21705
|
function Checkbox({ label, checked, onChange, disabled, description, indeterminate, style, className }) {
|
|
@@ -21606,7 +21731,7 @@ function Checkbox({ label, checked, onChange, disabled, description, indetermina
|
|
|
21606
21731
|
height: "18px",
|
|
21607
21732
|
borderRadius: "var(--ggui-shape-radius-sm, 4px)",
|
|
21608
21733
|
border: `2px solid ${checked || indeterminate ? "var(--ggui-color-primary-600, #0284c7)" : "var(--ggui-color-outline, #d4d4d8)"}`,
|
|
21609
|
-
backgroundColor: checked || indeterminate ? "var(--ggui-color-primary-600, #0284c7)" : "var(--ggui-color-
|
|
21734
|
+
backgroundColor: checked || indeterminate ? "var(--ggui-color-primary-600, #0284c7)" : "var(--ggui-color-sunken, #ffffff)",
|
|
21610
21735
|
display: "flex",
|
|
21611
21736
|
alignItems: "center",
|
|
21612
21737
|
justifyContent: "center",
|
|
@@ -21614,10 +21739,10 @@ function Checkbox({ label, checked, onChange, disabled, description, indetermina
|
|
|
21614
21739
|
}, children: (checked || indeterminate) && (0, import_jsx_runtime12.jsx)("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", style: { color: "var(--ggui-color-onPrimary, #ffffff)" }, children: indeterminate ? (0, import_jsx_runtime12.jsx)("path", { d: "M2.5 6H9.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) : (0, import_jsx_runtime12.jsx)("path", { d: "M2.5 6L5 8.5L9.5 3.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) })] }), (label || description) && (0, import_jsx_runtime12.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "2px" }, children: [label && (0, import_jsx_runtime12.jsx)("span", { style: {
|
|
21615
21740
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
21616
21741
|
fontWeight: "var(--ggui-font-weight-medium, 500)",
|
|
21617
|
-
color: "var(--ggui-color-
|
|
21742
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
21618
21743
|
}, children: label }), description && (0, import_jsx_runtime12.jsx)("span", { style: {
|
|
21619
21744
|
fontSize: "var(--ggui-font-size-xs, 12px)",
|
|
21620
|
-
color: "var(--ggui-color-
|
|
21745
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
21621
21746
|
}, children: description })] })] });
|
|
21622
21747
|
}
|
|
21623
21748
|
var sizeConfig = {
|
|
@@ -21665,7 +21790,7 @@ function Toggle({ label, checked, onChange, disabled, size = "md", style, classN
|
|
|
21665
21790
|
} }) }), label && (0, import_jsx_runtime13.jsx)("span", { style: {
|
|
21666
21791
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
21667
21792
|
fontWeight: "var(--ggui-font-weight-medium, 500)",
|
|
21668
|
-
color: "var(--ggui-color-
|
|
21793
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
21669
21794
|
}, children: label })] });
|
|
21670
21795
|
}
|
|
21671
21796
|
function RadioGroup({ label, value, onChange, options, direction = "vertical", disabled, error: error2, style, className }) {
|
|
@@ -21677,7 +21802,7 @@ function RadioGroup({ label, value, onChange, options, direction = "vertical", d
|
|
|
21677
21802
|
return (0, import_jsx_runtime14.jsxs)("div", { role: "radiogroup", "aria-labelledby": label ? labelId : void 0, "aria-describedby": hasError ? errorId : void 0, className, style: { display: "flex", flexDirection: "column", gap: "var(--ggui-spacing-2, 8px)", ...style }, children: [label && (0, import_jsx_runtime14.jsx)("span", { id: labelId, style: {
|
|
21678
21803
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
21679
21804
|
fontWeight: "var(--ggui-font-weight-medium, 500)",
|
|
21680
|
-
color: "var(--ggui-color-
|
|
21805
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
21681
21806
|
}, children: label }), (0, import_jsx_runtime14.jsx)("div", { style: {
|
|
21682
21807
|
display: "flex",
|
|
21683
21808
|
flexDirection: direction === "vertical" ? "column" : "row",
|
|
@@ -21710,7 +21835,7 @@ function RadioGroup({ label, value, onChange, options, direction = "vertical", d
|
|
|
21710
21835
|
height: "18px",
|
|
21711
21836
|
borderRadius: "var(--ggui-shape-radius-full, 9999px)",
|
|
21712
21837
|
border: `2px solid ${isSelected ? "var(--ggui-color-primary-600, #0284c7)" : "var(--ggui-color-outline, #d4d4d8)"}`,
|
|
21713
|
-
backgroundColor: "var(--ggui-color-
|
|
21838
|
+
backgroundColor: "var(--ggui-color-sunken, #ffffff)",
|
|
21714
21839
|
display: "flex",
|
|
21715
21840
|
alignItems: "center",
|
|
21716
21841
|
justifyContent: "center",
|
|
@@ -21723,10 +21848,10 @@ function RadioGroup({ label, value, onChange, options, direction = "vertical", d
|
|
|
21723
21848
|
} }) })] }), (0, import_jsx_runtime14.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "2px" }, children: [(0, import_jsx_runtime14.jsx)("span", { style: {
|
|
21724
21849
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
21725
21850
|
fontWeight: "var(--ggui-font-weight-medium, 500)",
|
|
21726
|
-
color: "var(--ggui-color-
|
|
21851
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
21727
21852
|
}, children: option.label }), option.description && (0, import_jsx_runtime14.jsx)("span", { style: {
|
|
21728
21853
|
fontSize: "var(--ggui-font-size-xs, 12px)",
|
|
21729
|
-
color: "var(--ggui-color-
|
|
21854
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
21730
21855
|
}, children: option.description })] })] }, option.value);
|
|
21731
21856
|
}) }), error2 && (0, import_jsx_runtime14.jsx)("span", { id: errorId, role: "alert", style: {
|
|
21732
21857
|
fontSize: "var(--ggui-font-size-xs, 12px)",
|
|
@@ -21741,7 +21866,7 @@ function Slider({ label, value = 0, onChange, min = 0, max = 100, step = 1, disa
|
|
|
21741
21866
|
return (0, import_jsx_runtime15.jsxs)("div", { className, style: { display: "flex", flexDirection: "column", gap: "var(--ggui-spacing-2, 8px)", ...style }, children: [(label || showValue) && (0, import_jsx_runtime15.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [label && (0, import_jsx_runtime15.jsx)("span", { id: labelId, style: {
|
|
21742
21867
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
21743
21868
|
fontWeight: "var(--ggui-font-weight-medium, 500)",
|
|
21744
|
-
color: "var(--ggui-color-
|
|
21869
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
21745
21870
|
}, children: label }), showValue && (0, import_jsx_runtime15.jsx)("span", { style: {
|
|
21746
21871
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
21747
21872
|
fontWeight: "var(--ggui-font-weight-medium, 500)",
|
|
@@ -21782,8 +21907,8 @@ function Slider({ label, value = 0, onChange, min = 0, max = 100, step = 1, disa
|
|
|
21782
21907
|
}
|
|
21783
21908
|
var variantStyles2 = {
|
|
21784
21909
|
default: {
|
|
21785
|
-
backgroundColor: "var(--ggui-color-
|
|
21786
|
-
color: "var(--ggui-color-
|
|
21910
|
+
backgroundColor: "var(--ggui-color-sunken, #f4f4f5)",
|
|
21911
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
21787
21912
|
},
|
|
21788
21913
|
primary: {
|
|
21789
21914
|
backgroundColor: "var(--ggui-color-primary-100, #e0f2fe)",
|
|
@@ -21791,7 +21916,7 @@ var variantStyles2 = {
|
|
|
21791
21916
|
},
|
|
21792
21917
|
secondary: {
|
|
21793
21918
|
backgroundColor: "var(--ggui-color-outlineVariant, #e4e4e7)",
|
|
21794
|
-
color: "var(--ggui-color-
|
|
21919
|
+
color: "var(--ggui-color-onContainer, #18181b)"
|
|
21795
21920
|
},
|
|
21796
21921
|
success: {
|
|
21797
21922
|
backgroundColor: "var(--ggui-color-success-100, #dcfce7)",
|
|
@@ -21808,6 +21933,11 @@ var variantStyles2 = {
|
|
|
21808
21933
|
info: {
|
|
21809
21934
|
backgroundColor: "var(--ggui-color-info-100, #cffafe)",
|
|
21810
21935
|
color: "var(--ggui-color-info-700, #0e7490)"
|
|
21936
|
+
},
|
|
21937
|
+
// The second accent (ggui#987 §2.1): the tertiary container pair.
|
|
21938
|
+
tertiary: {
|
|
21939
|
+
backgroundColor: "var(--ggui-color-tertiaryContainer, #ccfbf1)",
|
|
21940
|
+
color: "var(--ggui-color-onTertiaryContainer, #134e4a)"
|
|
21811
21941
|
}
|
|
21812
21942
|
};
|
|
21813
21943
|
var sizeStyles4 = {
|
|
@@ -21839,7 +21969,7 @@ function Skeleton({ variant = "rect", width, height, radius: radius2 = "sm", sty
|
|
|
21839
21969
|
width: resolvedWidth,
|
|
21840
21970
|
height: resolvedHeight,
|
|
21841
21971
|
borderRadius: isCircle ? "9999px" : resolveRadius(radius2),
|
|
21842
|
-
backgroundColor: "var(--ggui-color-
|
|
21972
|
+
backgroundColor: "var(--ggui-color-sunken, #f4f4f5)",
|
|
21843
21973
|
animation: "ggui-skeleton-pulse 1.5s ease-in-out infinite",
|
|
21844
21974
|
...style
|
|
21845
21975
|
};
|
|
@@ -21969,10 +22099,10 @@ function Progress({ value, max = 100, variant = "default", size = "md", label, s
|
|
|
21969
22099
|
const height = sizeHeights[size];
|
|
21970
22100
|
const barColor = variantColors[variant];
|
|
21971
22101
|
const accessibleName = label ?? "Progress";
|
|
21972
|
-
return (0, import_jsx_runtime20.jsxs)("div", { className, style: { display: "flex", flexDirection: "column", gap: "var(--ggui-spacing-1, 4px)", ...style }, children: [showLabel && (0, import_jsx_runtime20.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [(0, import_jsx_runtime20.jsx)("span", { style: { fontSize: "var(--ggui-font-size-sm, 14px)", color: "var(--ggui-color-
|
|
22102
|
+
return (0, import_jsx_runtime20.jsxs)("div", { className, style: { display: "flex", flexDirection: "column", gap: "var(--ggui-spacing-1, 4px)", ...style }, children: [showLabel && (0, import_jsx_runtime20.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [(0, import_jsx_runtime20.jsx)("span", { style: { fontSize: "var(--ggui-font-size-sm, 14px)", color: "var(--ggui-color-onSunken, #52525b)" }, children: accessibleName }), (0, import_jsx_runtime20.jsxs)("span", { style: {
|
|
21973
22103
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
21974
22104
|
fontWeight: "var(--ggui-font-weight-medium, 500)",
|
|
21975
|
-
color: "var(--ggui-color-
|
|
22105
|
+
color: "var(--ggui-color-onContainer, #18181b)"
|
|
21976
22106
|
}, children: [Math.round(percentage), "%"] })] }), (0, import_jsx_runtime20.jsxs)("div", { role: "progressbar", "aria-valuenow": indeterminate ? void 0 : value, "aria-valuemin": 0, "aria-valuemax": max, "aria-label": accessibleName, style: {
|
|
21977
22107
|
width: "100%",
|
|
21978
22108
|
height,
|
|
@@ -22010,7 +22140,7 @@ function Image({ src, alt, width, height, objectFit = "cover", radius: radius2,
|
|
|
22010
22140
|
width: resolveSize2(width) || "100%",
|
|
22011
22141
|
height: resolveSize2(height) || "auto",
|
|
22012
22142
|
borderRadius: resolveRadius(radius2),
|
|
22013
|
-
backgroundColor: "var(--ggui-color-
|
|
22143
|
+
backgroundColor: "var(--ggui-color-sunken, #f4f4f5)",
|
|
22014
22144
|
display: "flex",
|
|
22015
22145
|
alignItems: "center",
|
|
22016
22146
|
justifyContent: "center",
|
|
@@ -26048,7 +26178,7 @@ function Icon({ name, size = 24, tone, children, style, className, "aria-label":
|
|
|
26048
26178
|
}, children: "?" });
|
|
26049
26179
|
}
|
|
26050
26180
|
function Link({ children, href, external, tone, underline = "hover", style, className, ...rest }) {
|
|
26051
|
-
const linkColor = tone ? resolveToneCss(tone) : "var(--ggui-color-primary-600, #0284c7)";
|
|
26181
|
+
const linkColor = tone ? resolveToneCss(tone) : "var(--ggui-color-link, var(--ggui-color-primary-600, #0284c7))";
|
|
26052
26182
|
const underlineStyle = {
|
|
26053
26183
|
always: "underline",
|
|
26054
26184
|
hover: "none",
|
|
@@ -26140,10 +26270,10 @@ function Tooltip({ children, content, position = "top", delay = 200, style, clas
|
|
|
26140
26270
|
top: coords.top,
|
|
26141
26271
|
left: coords.left,
|
|
26142
26272
|
transform: getTransform(),
|
|
26143
|
-
|
|
26144
|
-
//
|
|
26145
|
-
|
|
26146
|
-
color: "var(--ggui-color-
|
|
26273
|
+
// The inverse container pair (ggui#987 §2.1): a tooltip is
|
|
26274
|
+
// legible by inversion, not by lift — never `elevated`.
|
|
26275
|
+
backgroundColor: "var(--ggui-color-onContainer, #18181b)",
|
|
26276
|
+
color: "var(--ggui-color-container, #ffffff)",
|
|
26147
26277
|
padding: "6px 10px",
|
|
26148
26278
|
borderRadius: "var(--ggui-shape-radius-md, 8px)",
|
|
26149
26279
|
fontSize: "var(--ggui-font-size-xs, 12px)",
|
|
@@ -26175,7 +26305,7 @@ function Table({ columns, data, sortKey, sortDirection = "asc", onSort, striped
|
|
|
26175
26305
|
textAlign: "left",
|
|
26176
26306
|
fontWeight: "var(--ggui-font-weight-semibold, 600)",
|
|
26177
26307
|
fontSize: "var(--ggui-font-size-xs, 12px)",
|
|
26178
|
-
color: "var(--ggui-color-
|
|
26308
|
+
color: "var(--ggui-color-onSunken, #52525b)",
|
|
26179
26309
|
textTransform: "uppercase",
|
|
26180
26310
|
letterSpacing: "0.05em",
|
|
26181
26311
|
borderBottom: "2px solid var(--ggui-color-outlineVariant, #e4e4e7)",
|
|
@@ -26191,11 +26321,11 @@ function Table({ columns, data, sortKey, sortDirection = "asc", onSort, striped
|
|
|
26191
26321
|
width: "100%",
|
|
26192
26322
|
borderCollapse: "collapse",
|
|
26193
26323
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
26194
|
-
color: "var(--ggui-color-
|
|
26324
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
26195
26325
|
}, children: [caption && (0, import_jsx_runtime25.jsx)("caption", { style: {
|
|
26196
26326
|
padding: cellPadding,
|
|
26197
26327
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
26198
|
-
color: "var(--ggui-color-
|
|
26328
|
+
color: "var(--ggui-color-onSunken, #52525b)",
|
|
26199
26329
|
textAlign: "left",
|
|
26200
26330
|
captionSide: "top"
|
|
26201
26331
|
}, children: caption }), (0, import_jsx_runtime25.jsx)("thead", { children: (0, import_jsx_runtime25.jsx)("tr", { children: columns.map((col) => (0, import_jsx_runtime25.jsx)("th", { scope: "col", "aria-sort": sortKey === col.key ? sortDirection === "asc" ? "ascending" : "descending" : void 0, onClick: col.sortable ? () => handleSort(col.key) : void 0, onKeyDown: col.sortable ? (e) => {
|
|
@@ -26209,13 +26339,13 @@ function Table({ columns, data, sortKey, sortDirection = "asc", onSort, striped
|
|
|
26209
26339
|
width: col.width,
|
|
26210
26340
|
cursor: col.sortable ? "pointer" : "default"
|
|
26211
26341
|
}, children: (0, import_jsx_runtime25.jsxs)("span", { style: { display: "inline-flex", alignItems: "center" }, children: [col.header, col.sortable && sortIndicator(sortKey === col.key, sortDirection)] }) }, col.key)) }) }), (0, import_jsx_runtime25.jsx)("tbody", { children: data.map((row, rowIndex) => (0, import_jsx_runtime25.jsx)("tr", { onMouseEnter: hoverable ? () => setHoveredRow(rowIndex) : void 0, onMouseLeave: hoverable ? () => setHoveredRow(null) : void 0, style: {
|
|
26212
|
-
backgroundColor: hoverable && hoveredRow === rowIndex ? "var(--ggui-color-
|
|
26342
|
+
backgroundColor: hoverable && hoveredRow === rowIndex ? "var(--ggui-color-sunken, #fafafa)" : striped && rowIndex % 2 === 1 ? "var(--ggui-color-sunken, #fafafa)" : "transparent",
|
|
26213
26343
|
transition: "background-color 0.15s ease"
|
|
26214
26344
|
}, children: columns.map((col) => (0, import_jsx_runtime25.jsx)("td", { style: {
|
|
26215
26345
|
padding: cellPadding,
|
|
26216
26346
|
textAlign: col.align || "left",
|
|
26217
|
-
borderBottom: "1px solid var(--ggui-color-
|
|
26218
|
-
borderRight: bordered ? "1px solid var(--ggui-color-
|
|
26347
|
+
borderBottom: "1px solid var(--ggui-color-sunken, #f4f4f5)",
|
|
26348
|
+
borderRight: bordered ? "1px solid var(--ggui-color-sunken, #f4f4f5)" : void 0
|
|
26219
26349
|
}, children: col.render ? col.render(row[col.key], row, rowIndex) : row[col.key] }, col.key)) }, rowIndex)) })] }) });
|
|
26220
26350
|
}
|
|
26221
26351
|
var sizeStyles5 = {
|
|
@@ -26288,7 +26418,7 @@ function Tabs({ items, activeKey, onChange, variant = "line", size = "md", fullW
|
|
|
26288
26418
|
if (variant === "line") {
|
|
26289
26419
|
return {
|
|
26290
26420
|
...base,
|
|
26291
|
-
color: isActive ? "var(--ggui-color-primary-600, #0284c7)" : "var(--ggui-color-
|
|
26421
|
+
color: isActive ? "var(--ggui-color-primary-600, #0284c7)" : "var(--ggui-color-onSunken, #52525b)",
|
|
26292
26422
|
borderBottom: isActive ? "2px solid var(--ggui-color-primary-600, #0284c7)" : "2px solid transparent",
|
|
26293
26423
|
marginBottom: "-1px"
|
|
26294
26424
|
};
|
|
@@ -26296,17 +26426,17 @@ function Tabs({ items, activeKey, onChange, variant = "line", size = "md", fullW
|
|
|
26296
26426
|
if (variant === "pills") {
|
|
26297
26427
|
return {
|
|
26298
26428
|
...base,
|
|
26299
|
-
color: isActive ? "var(--ggui-color-onPrimary, #ffffff)" : "var(--ggui-color-
|
|
26429
|
+
color: isActive ? "var(--ggui-color-onPrimary, #ffffff)" : "var(--ggui-color-onSunken, #52525b)",
|
|
26300
26430
|
backgroundColor: isActive ? "var(--ggui-color-primary-600, #0284c7)" : "transparent",
|
|
26301
26431
|
borderRadius: "var(--ggui-shape-radius-md, 6px)"
|
|
26302
26432
|
};
|
|
26303
26433
|
}
|
|
26304
26434
|
return {
|
|
26305
26435
|
...base,
|
|
26306
|
-
color: isActive ? "var(--ggui-color-primary-600, #0284c7)" : "var(--ggui-color-
|
|
26307
|
-
backgroundColor: isActive ? "var(--ggui-color-
|
|
26436
|
+
color: isActive ? "var(--ggui-color-primary-600, #0284c7)" : "var(--ggui-color-onSunken, #52525b)",
|
|
26437
|
+
backgroundColor: isActive ? "var(--ggui-color-container, #ffffff)" : "transparent",
|
|
26308
26438
|
border: isActive ? "1px solid var(--ggui-color-outlineVariant, #e4e4e7)" : "1px solid transparent",
|
|
26309
|
-
borderBottom: isActive ? "1px solid var(--ggui-color-
|
|
26439
|
+
borderBottom: isActive ? "1px solid var(--ggui-color-container, #ffffff)" : "1px solid transparent",
|
|
26310
26440
|
borderRadius: "var(--ggui-shape-radius-md, 6px) var(--ggui-shape-radius-md, 6px) 0 0",
|
|
26311
26441
|
marginBottom: "-1px"
|
|
26312
26442
|
};
|
|
@@ -26315,7 +26445,7 @@ function Tabs({ items, activeKey, onChange, variant = "line", size = "md", fullW
|
|
|
26315
26445
|
display: "flex",
|
|
26316
26446
|
gap: variant === "pills" ? "var(--ggui-spacing-1, 4px)" : "0",
|
|
26317
26447
|
borderBottom: variant === "line" || variant === "enclosed" ? "1px solid var(--ggui-color-outlineVariant, #e4e4e7)" : void 0,
|
|
26318
|
-
backgroundColor: variant === "pills" ? "var(--ggui-color-
|
|
26448
|
+
backgroundColor: variant === "pills" ? "var(--ggui-color-sunken, #f4f4f5)" : void 0,
|
|
26319
26449
|
borderRadius: variant === "pills" ? "var(--ggui-shape-radius-lg, 8px)" : void 0,
|
|
26320
26450
|
padding: variant === "pills" ? "var(--ggui-spacing-1, 4px)" : void 0
|
|
26321
26451
|
};
|
|
@@ -26478,25 +26608,25 @@ var reducedMotionCSS = `@media (prefers-reduced-motion: reduce) {
|
|
|
26478
26608
|
}`;
|
|
26479
26609
|
var variantStyles4 = {
|
|
26480
26610
|
info: {
|
|
26481
|
-
bg: "var(--ggui-color-
|
|
26611
|
+
bg: "var(--ggui-color-elevated, #ecfeff)",
|
|
26482
26612
|
border: "var(--ggui-color-info-200, #a5f3fc)",
|
|
26483
26613
|
text: "var(--ggui-color-info-800, #155e75)",
|
|
26484
26614
|
icon: "var(--ggui-color-info-500, #06b6d4)"
|
|
26485
26615
|
},
|
|
26486
26616
|
success: {
|
|
26487
|
-
bg: "var(--ggui-color-
|
|
26617
|
+
bg: "var(--ggui-color-elevated, #f0fdf4)",
|
|
26488
26618
|
border: "var(--ggui-color-success-200, #bbf7d0)",
|
|
26489
26619
|
text: "var(--ggui-color-success-800, #166534)",
|
|
26490
26620
|
icon: "var(--ggui-color-success-500, #22c55e)"
|
|
26491
26621
|
},
|
|
26492
26622
|
warning: {
|
|
26493
|
-
bg: "var(--ggui-color-
|
|
26623
|
+
bg: "var(--ggui-color-elevated, #fffbeb)",
|
|
26494
26624
|
border: "var(--ggui-color-warning-200, #fde68a)",
|
|
26495
26625
|
text: "var(--ggui-color-warning-800, #92400e)",
|
|
26496
26626
|
icon: "var(--ggui-color-warning-500, #f59e0b)"
|
|
26497
26627
|
},
|
|
26498
26628
|
error: {
|
|
26499
|
-
bg: "var(--ggui-color-
|
|
26629
|
+
bg: "var(--ggui-color-elevated, #fef2f2)",
|
|
26500
26630
|
border: "var(--ggui-color-error-200, #fecaca)",
|
|
26501
26631
|
text: "var(--ggui-color-error-800, #991b1b)",
|
|
26502
26632
|
icon: "var(--ggui-color-error-500, #ef4444)"
|
|
@@ -26633,7 +26763,7 @@ function Accordion({ items, expandedKeys, onChange, multiple = false, variant =
|
|
|
26633
26763
|
opacity: isDisabled ? 0.5 : 1,
|
|
26634
26764
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
26635
26765
|
fontWeight: "var(--ggui-font-weight-medium, 500)",
|
|
26636
|
-
color: "var(--ggui-color-
|
|
26766
|
+
color: "var(--ggui-color-onContainer, #18181b)",
|
|
26637
26767
|
textAlign: "left",
|
|
26638
26768
|
transition: `background-color ${duration.fast} ${easing.easeInOut}`
|
|
26639
26769
|
}, children: [(0, import_jsx_runtime28.jsx)("span", { children: item.title }), chevron(isExpanded)] }) }), (0, import_jsx_runtime28.jsx)("div", { id: `${uniqueId}-panel-${item.key}`, role: "region", "aria-labelledby": `${uniqueId}-header-${item.key}`, hidden: !isExpanded, style: {
|
|
@@ -26641,7 +26771,7 @@ function Accordion({ items, expandedKeys, onChange, multiple = false, variant =
|
|
|
26641
26771
|
}, children: isExpanded && (0, import_jsx_runtime28.jsx)("div", { style: {
|
|
26642
26772
|
padding: "0 var(--ggui-spacing-4, 16px) var(--ggui-spacing-4, 16px)",
|
|
26643
26773
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
26644
|
-
color: "var(--ggui-color-
|
|
26774
|
+
color: "var(--ggui-color-onSunken, #52525b)",
|
|
26645
26775
|
lineHeight: "var(--ggui-font-lineHeight-normal, 1.5)"
|
|
26646
26776
|
}, children: item.content }) })] }, item.key);
|
|
26647
26777
|
}) });
|
|
@@ -26888,9 +27018,9 @@ function FormField({ label, children, error: error2, helperText, required, descr
|
|
|
26888
27018
|
}, children: error2 || helperText })] });
|
|
26889
27019
|
}
|
|
26890
27020
|
function MenuItem({ label, icon, rightElement, onClick, disabled, active, danger, style, className }) {
|
|
26891
|
-
const baseColor = danger ?
|
|
26892
|
-
const hoverBg = danger ?
|
|
26893
|
-
const activeBg = danger ?
|
|
27021
|
+
const baseColor = danger ? "var(--ggui-color-error-600, #dc2626)" : "var(--ggui-color-onElevated, #3f3f46)";
|
|
27022
|
+
const hoverBg = danger ? "var(--ggui-color-error-50, #fef2f2)" : "var(--ggui-color-sunken, #f4f4f5)";
|
|
27023
|
+
const activeBg = danger ? "var(--ggui-color-error-100, #fee2e2)" : "var(--ggui-color-primary-50, #f0f9ff)";
|
|
26894
27024
|
return (0, import_jsx_runtime31.jsxs)("button", { onClick: disabled ? void 0 : onClick, disabled, className, style: {
|
|
26895
27025
|
display: "flex",
|
|
26896
27026
|
alignItems: "center",
|
|
@@ -27030,7 +27160,8 @@ function Dropdown({ trigger, options, value, onChange, placement = "bottom-start
|
|
|
27030
27160
|
position: "absolute",
|
|
27031
27161
|
...getMenuPosition(),
|
|
27032
27162
|
minWidth: "160px",
|
|
27033
|
-
backgroundColor:
|
|
27163
|
+
backgroundColor: "var(--ggui-color-elevated, #ffffff)",
|
|
27164
|
+
color: "var(--ggui-color-onElevated, #18181b)",
|
|
27034
27165
|
border: `1px solid ${colors.gray[200]}`,
|
|
27035
27166
|
borderRadius: radius.lg,
|
|
27036
27167
|
boxShadow: shadow.lg,
|
|
@@ -27248,9 +27379,9 @@ var markerStyles = {
|
|
|
27248
27379
|
color: "var(--ggui-color-onPrimary, #ffffff)"
|
|
27249
27380
|
},
|
|
27250
27381
|
upcoming: {
|
|
27251
|
-
backgroundColor: "var(--ggui-color-
|
|
27382
|
+
backgroundColor: "var(--ggui-color-sunken, #fafafa)",
|
|
27252
27383
|
border: "1px solid var(--ggui-color-outline, #d4d4d8)",
|
|
27253
|
-
color: "var(--ggui-color-
|
|
27384
|
+
color: "var(--ggui-color-onSunken, #52525b)"
|
|
27254
27385
|
}
|
|
27255
27386
|
};
|
|
27256
27387
|
function Marker({ index, state }) {
|
|
@@ -27651,15 +27782,15 @@ function parseRichText(text) {
|
|
|
27651
27782
|
var CODE_INLINE = {
|
|
27652
27783
|
fontFamily: "var(--ggui-font-family-mono, ui-monospace, monospace)",
|
|
27653
27784
|
fontSize: "0.9em",
|
|
27654
|
-
background: "var(--ggui-color-
|
|
27655
|
-
borderRadius: "var(--ggui-radius-sm, 4px)",
|
|
27785
|
+
background: "var(--ggui-color-sunken, rgba(0,0,0,0.06))",
|
|
27786
|
+
borderRadius: "var(--ggui-shape-radius-sm, 4px)",
|
|
27656
27787
|
padding: "0.1em 0.35em"
|
|
27657
27788
|
};
|
|
27658
27789
|
var CODE_FENCE = {
|
|
27659
27790
|
fontFamily: "var(--ggui-font-family-mono, ui-monospace, monospace)",
|
|
27660
27791
|
fontSize: "var(--ggui-font-size-sm, 14px)",
|
|
27661
|
-
background: "var(--ggui-color-
|
|
27662
|
-
borderRadius: "var(--ggui-radius-md, 8px)",
|
|
27792
|
+
background: "var(--ggui-color-sunken, rgba(0,0,0,0.06))",
|
|
27793
|
+
borderRadius: "var(--ggui-shape-radius-md, 8px)",
|
|
27663
27794
|
padding: "var(--ggui-spacing-sm, 12px)",
|
|
27664
27795
|
overflowX: "auto",
|
|
27665
27796
|
whiteSpace: "pre",
|
|
@@ -27688,7 +27819,7 @@ var TABLE_CELL = {
|
|
|
27688
27819
|
var TABLE_HEADER_CELL = {
|
|
27689
27820
|
...TABLE_CELL,
|
|
27690
27821
|
fontWeight: "var(--ggui-font-weight-semibold, 600)",
|
|
27691
|
-
background: "var(--ggui-color-
|
|
27822
|
+
background: "var(--ggui-color-sunken, rgba(0,0,0,0.06))"
|
|
27692
27823
|
};
|
|
27693
27824
|
function renderRichTextInlines(inlines) {
|
|
27694
27825
|
return inlines.map((node, i) => {
|
|
@@ -28266,7 +28397,8 @@ function Modal({ open, onClose, title, children, footer, size = "md", closeOnOve
|
|
|
28266
28397
|
width: sizeWidths[size],
|
|
28267
28398
|
maxWidth: isFullscreen ? "100%" : "calc(100vw - 48px)",
|
|
28268
28399
|
maxHeight: isFullscreen ? "100%" : "calc(100vh - 48px)",
|
|
28269
|
-
backgroundColor:
|
|
28400
|
+
backgroundColor: "var(--ggui-color-elevated, #ffffff)",
|
|
28401
|
+
color: "var(--ggui-color-onElevated, #18181b)",
|
|
28270
28402
|
borderRadius: isFullscreen ? 0 : radius.xl,
|
|
28271
28403
|
boxShadow: shadow["2xl"],
|
|
28272
28404
|
display: "flex",
|
|
@@ -28698,95 +28830,12 @@ var Pressable = (0, import_react40.forwardRef)(function Pressable2({ children, o
|
|
|
28698
28830
|
function stripMarkers(code) {
|
|
28699
28831
|
return code.replace(/__GGUI_META__[\s\S]*?__GGUI_META_END__/g, "").replace(/__GGUI_STREAM_SPEC__[\s\S]*?__GGUI_STREAM_SPEC_END__/g, "");
|
|
28700
28832
|
}
|
|
28701
|
-
function formatValue(token) {
|
|
28702
|
-
const v = token.$value;
|
|
28703
|
-
if (Array.isArray(v)) {
|
|
28704
|
-
return v.join(", ");
|
|
28705
|
-
}
|
|
28706
|
-
if (v !== null && typeof v === "object") {
|
|
28707
|
-
const obj = v;
|
|
28708
|
-
if (token.$type === "shadow" && "offsetX" in obj) {
|
|
28709
|
-
return `${obj.offsetX} ${obj.offsetY} ${obj.blur} ${obj.spread} ${obj.color}`;
|
|
28710
|
-
}
|
|
28711
|
-
if (token.$type === "transition" && "duration" in obj && "timingFunction" in obj) {
|
|
28712
|
-
const prop = typeof obj.property === "string" && obj.property ? `${obj.property} ` : "";
|
|
28713
|
-
return `${prop}${obj.duration} ${obj.timingFunction}`;
|
|
28714
|
-
}
|
|
28715
|
-
}
|
|
28716
|
-
return String(v);
|
|
28717
|
-
}
|
|
28718
|
-
function walkTokens(obj, prefix, out) {
|
|
28719
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
28720
|
-
if (key.startsWith("$"))
|
|
28721
|
-
continue;
|
|
28722
|
-
if (value !== null && typeof value === "object" && "$value" in value) {
|
|
28723
|
-
out.push(` --ggui-${prefix}-${key}: ${formatValue(value)};`);
|
|
28724
|
-
} else if (value !== null && typeof value === "object") {
|
|
28725
|
-
walkTokens(value, `${prefix}-${key}`, out);
|
|
28726
|
-
}
|
|
28727
|
-
}
|
|
28728
|
-
}
|
|
28729
|
-
function buildCssVariables(theme9) {
|
|
28730
|
-
const lines = [];
|
|
28731
|
-
walkTokens(theme9.color, "color", lines);
|
|
28732
|
-
walkTokens(theme9.font, "font", lines);
|
|
28733
|
-
walkTokens(theme9.spacing, "spacing", lines);
|
|
28734
|
-
walkTokens(theme9.shape, "shape", lines);
|
|
28735
|
-
walkTokens({
|
|
28736
|
-
duration: theme9.motion.duration,
|
|
28737
|
-
easing: theme9.motion.easing,
|
|
28738
|
-
transition: theme9.motion.transition
|
|
28739
|
-
}, "motion", lines);
|
|
28740
|
-
walkTokens(theme9.accessibility, "accessibility", lines);
|
|
28741
|
-
walkTokens(theme9.zIndex, "zIndex", lines);
|
|
28742
|
-
return lines.join("\n");
|
|
28743
|
-
}
|
|
28744
|
-
function expandKeyframe(name, compact) {
|
|
28745
|
-
const stopRegex = /([\d.]+%|from|to)\s*\{([^}]*)\}/g;
|
|
28746
|
-
const stops = [];
|
|
28747
|
-
let match;
|
|
28748
|
-
while ((match = stopRegex.exec(compact)) !== null) {
|
|
28749
|
-
const selector = match[1];
|
|
28750
|
-
const rawProps = match[2].trim();
|
|
28751
|
-
const props = rawProps.split(";").map((p) => p.trim()).filter(Boolean).map((p) => p.endsWith(";") ? p : `${p};`).join(" ");
|
|
28752
|
-
stops.push(` ${selector} { ${props} }`);
|
|
28753
|
-
}
|
|
28754
|
-
return `@keyframes ggui-${name} {
|
|
28755
|
-
${stops.join("\n")}
|
|
28756
|
-
}`;
|
|
28757
|
-
}
|
|
28758
|
-
function buildCssKeyframes(theme9) {
|
|
28759
|
-
const blocks = [];
|
|
28760
|
-
for (const [name, token] of Object.entries(theme9.motion.keyframes)) {
|
|
28761
|
-
if (name.startsWith("$"))
|
|
28762
|
-
continue;
|
|
28763
|
-
blocks.push(expandKeyframe(name, String(token.$value)));
|
|
28764
|
-
}
|
|
28765
|
-
return blocks.join("\n\n");
|
|
28766
|
-
}
|
|
28767
|
-
function parseTheme(id, theme9) {
|
|
28768
|
-
const cssVariablesBody = buildCssVariables(theme9);
|
|
28769
|
-
const cssVariables = `:root {
|
|
28770
|
-
${cssVariablesBody}
|
|
28771
|
-
}`;
|
|
28772
|
-
const cssKeyframes = buildCssKeyframes(theme9);
|
|
28773
|
-
const css = cssKeyframes ? `${cssVariables}
|
|
28774
|
-
|
|
28775
|
-
${cssKeyframes}` : cssVariables;
|
|
28776
|
-
return {
|
|
28777
|
-
id,
|
|
28778
|
-
name: theme9.$name,
|
|
28779
|
-
description: theme9.$description,
|
|
28780
|
-
metadata: theme9.$metadata,
|
|
28781
|
-
cssVariables,
|
|
28782
|
-
cssKeyframes,
|
|
28783
|
-
css
|
|
28784
|
-
};
|
|
28785
|
-
}
|
|
28786
28833
|
var consumed_tokens_manifest_default = {
|
|
28787
|
-
version:
|
|
28834
|
+
version: 2,
|
|
28788
28835
|
tokens: [
|
|
28789
28836
|
"--ggui-color-container",
|
|
28837
|
+
"--ggui-color-elevated",
|
|
28838
|
+
"--ggui-color-error",
|
|
28790
28839
|
"--ggui-color-error-100",
|
|
28791
28840
|
"--ggui-color-error-200",
|
|
28792
28841
|
"--ggui-color-error-50",
|
|
@@ -28794,12 +28843,16 @@ var consumed_tokens_manifest_default = {
|
|
|
28794
28843
|
"--ggui-color-error-600",
|
|
28795
28844
|
"--ggui-color-error-700",
|
|
28796
28845
|
"--ggui-color-error-800",
|
|
28846
|
+
"--ggui-color-ground",
|
|
28847
|
+
"--ggui-color-ground-gradient",
|
|
28848
|
+
"--ggui-color-ground-subtle",
|
|
28797
28849
|
"--ggui-color-info-100",
|
|
28798
28850
|
"--ggui-color-info-200",
|
|
28799
28851
|
"--ggui-color-info-50",
|
|
28800
28852
|
"--ggui-color-info-500",
|
|
28801
28853
|
"--ggui-color-info-700",
|
|
28802
28854
|
"--ggui-color-info-800",
|
|
28855
|
+
"--ggui-color-link",
|
|
28803
28856
|
"--ggui-color-neutral-100",
|
|
28804
28857
|
"--ggui-color-neutral-200",
|
|
28805
28858
|
"--ggui-color-neutral-300",
|
|
@@ -28807,11 +28860,14 @@ var consumed_tokens_manifest_default = {
|
|
|
28807
28860
|
"--ggui-color-neutral-50",
|
|
28808
28861
|
"--ggui-color-neutral-500",
|
|
28809
28862
|
"--ggui-color-neutral-600",
|
|
28863
|
+
"--ggui-color-neutral-900",
|
|
28810
28864
|
"--ggui-color-onContainer",
|
|
28865
|
+
"--ggui-color-onElevated",
|
|
28811
28866
|
"--ggui-color-onError",
|
|
28867
|
+
"--ggui-color-onGround",
|
|
28812
28868
|
"--ggui-color-onPrimary",
|
|
28813
|
-
"--ggui-color-
|
|
28814
|
-
"--ggui-color-
|
|
28869
|
+
"--ggui-color-onSunken",
|
|
28870
|
+
"--ggui-color-onTertiaryContainer",
|
|
28815
28871
|
"--ggui-color-outline",
|
|
28816
28872
|
"--ggui-color-outlineVariant",
|
|
28817
28873
|
"--ggui-color-primary",
|
|
@@ -28831,11 +28887,8 @@ var consumed_tokens_manifest_default = {
|
|
|
28831
28887
|
"--ggui-color-success-500",
|
|
28832
28888
|
"--ggui-color-success-700",
|
|
28833
28889
|
"--ggui-color-success-800",
|
|
28834
|
-
"--ggui-color-
|
|
28835
|
-
"--ggui-color-
|
|
28836
|
-
"--ggui-color-surface-subtle",
|
|
28837
|
-
"--ggui-color-surface-sunken",
|
|
28838
|
-
"--ggui-color-surfaceVariant",
|
|
28890
|
+
"--ggui-color-sunken",
|
|
28891
|
+
"--ggui-color-tertiaryContainer",
|
|
28839
28892
|
"--ggui-color-warning-100",
|
|
28840
28893
|
"--ggui-color-warning-200",
|
|
28841
28894
|
"--ggui-color-warning-50",
|
|
@@ -28843,6 +28896,7 @@ var consumed_tokens_manifest_default = {
|
|
|
28843
28896
|
"--ggui-color-warning-700",
|
|
28844
28897
|
"--ggui-color-warning-800",
|
|
28845
28898
|
"--ggui-flash-color",
|
|
28899
|
+
"--ggui-font-family-heading",
|
|
28846
28900
|
"--ggui-font-family-mono",
|
|
28847
28901
|
"--ggui-font-family-sans",
|
|
28848
28902
|
"--ggui-font-lineHeight-normal",
|
|
@@ -28855,11 +28909,11 @@ var consumed_tokens_manifest_default = {
|
|
|
28855
28909
|
"--ggui-font-size-xl",
|
|
28856
28910
|
"--ggui-font-size-xs",
|
|
28857
28911
|
"--ggui-font-weight-bold",
|
|
28912
|
+
"--ggui-font-weight-heading",
|
|
28858
28913
|
"--ggui-font-weight-medium",
|
|
28859
28914
|
"--ggui-font-weight-normal",
|
|
28860
28915
|
"--ggui-font-weight-semibold",
|
|
28861
|
-
"--ggui-
|
|
28862
|
-
"--ggui-radius-sm",
|
|
28916
|
+
"--ggui-letter-spacing-heading",
|
|
28863
28917
|
"--ggui-shape-radius-full",
|
|
28864
28918
|
"--ggui-shape-radius-lg",
|
|
28865
28919
|
"--ggui-shape-radius-md",
|
|
@@ -28887,6 +28941,312 @@ var consumed_tokens_manifest_default = {
|
|
|
28887
28941
|
]
|
|
28888
28942
|
};
|
|
28889
28943
|
var consumedTokenManifest = consumed_tokens_manifest_default.tokens;
|
|
28944
|
+
var NON_THEME_DEFINABLE_TOKENS = [
|
|
28945
|
+
"--ggui-color-primary",
|
|
28946
|
+
"--ggui-color-ground-gradient",
|
|
28947
|
+
"--ggui-color-ground-subtle",
|
|
28948
|
+
"--ggui-flash-color"
|
|
28949
|
+
];
|
|
28950
|
+
var ThemeDocumentInvalidError = class extends Error {
|
|
28951
|
+
missing;
|
|
28952
|
+
constructor(missing) {
|
|
28953
|
+
super(`theme document invalid: missing ${missing.join(", ")}`);
|
|
28954
|
+
this.name = "ThemeDocumentInvalidError";
|
|
28955
|
+
this.missing = missing;
|
|
28956
|
+
}
|
|
28957
|
+
};
|
|
28958
|
+
function clamp01(v) {
|
|
28959
|
+
return v < 0 ? 0 : v > 1 ? 1 : v;
|
|
28960
|
+
}
|
|
28961
|
+
function srgbToLinear(c) {
|
|
28962
|
+
const v = c / 255;
|
|
28963
|
+
return v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;
|
|
28964
|
+
}
|
|
28965
|
+
function linearToSrgb8(v) {
|
|
28966
|
+
const c = v <= 31308e-7 ? 12.92 * v : 1.055 * v ** (1 / 2.4) - 0.055;
|
|
28967
|
+
return Math.round(clamp01(c) * 255);
|
|
28968
|
+
}
|
|
28969
|
+
function parseHex(hex) {
|
|
28970
|
+
const h = hex.trim().replace(/^#/, "");
|
|
28971
|
+
const full = h.length === 3 ? h.split("").map((ch) => ch + ch).join("") : h;
|
|
28972
|
+
if (!/^[0-9a-fA-F]{6}$/.test(full))
|
|
28973
|
+
throw new ThemeDocumentInvalidError([`colour ${JSON.stringify(hex)} is not 6-digit hex`]);
|
|
28974
|
+
return [parseInt(full.slice(0, 2), 16), parseInt(full.slice(2, 4), 16), parseInt(full.slice(4, 6), 16)];
|
|
28975
|
+
}
|
|
28976
|
+
function linearToOklab(r, g, b) {
|
|
28977
|
+
const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);
|
|
28978
|
+
const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);
|
|
28979
|
+
const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);
|
|
28980
|
+
return [
|
|
28981
|
+
0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,
|
|
28982
|
+
1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,
|
|
28983
|
+
0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s
|
|
28984
|
+
];
|
|
28985
|
+
}
|
|
28986
|
+
function oklabToLinear(L, a, b) {
|
|
28987
|
+
const l = (L + 0.3963377774 * a + 0.2158037573 * b) ** 3;
|
|
28988
|
+
const m = (L - 0.1055613458 * a - 0.0638541728 * b) ** 3;
|
|
28989
|
+
const s = (L - 0.0894841775 * a - 1.291485548 * b) ** 3;
|
|
28990
|
+
return [
|
|
28991
|
+
4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,
|
|
28992
|
+
-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,
|
|
28993
|
+
-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s
|
|
28994
|
+
];
|
|
28995
|
+
}
|
|
28996
|
+
function hexToOklch(hex) {
|
|
28997
|
+
const [r8, g8, b8] = parseHex(hex);
|
|
28998
|
+
const [L, a, b] = linearToOklab(srgbToLinear(r8), srgbToLinear(g8), srgbToLinear(b8));
|
|
28999
|
+
const c = Math.hypot(a, b);
|
|
29000
|
+
const h = c < 1e-6 ? 0 : (Math.atan2(b, a) * 180 / Math.PI + 360) % 360;
|
|
29001
|
+
return { l: L, c, h };
|
|
29002
|
+
}
|
|
29003
|
+
var round4 = (v) => Math.round(v * 1e4) / 1e4;
|
|
29004
|
+
function inGamut(rgb) {
|
|
29005
|
+
const eps = 1e-6;
|
|
29006
|
+
return rgb.every((v) => v >= -eps && v <= 1 + eps);
|
|
29007
|
+
}
|
|
29008
|
+
function oklchToHex(color) {
|
|
29009
|
+
const l = clamp01(round4(color.l));
|
|
29010
|
+
const h = round4((color.h % 360 + 360) % 360);
|
|
29011
|
+
let c = Math.max(0, round4(color.c));
|
|
29012
|
+
const toLinear = (chroma) => {
|
|
29013
|
+
const rad = h * Math.PI / 180;
|
|
29014
|
+
return oklabToLinear(l, chroma * Math.cos(rad), chroma * Math.sin(rad));
|
|
29015
|
+
};
|
|
29016
|
+
let rgb = toLinear(c);
|
|
29017
|
+
if (!inGamut(rgb)) {
|
|
29018
|
+
let lo = 0;
|
|
29019
|
+
let hi = c;
|
|
29020
|
+
for (let i = 0; i < 24; i++) {
|
|
29021
|
+
const mid = (lo + hi) / 2;
|
|
29022
|
+
if (inGamut(toLinear(mid)))
|
|
29023
|
+
lo = mid;
|
|
29024
|
+
else
|
|
29025
|
+
hi = mid;
|
|
29026
|
+
}
|
|
29027
|
+
c = lo;
|
|
29028
|
+
rgb = toLinear(c);
|
|
29029
|
+
}
|
|
29030
|
+
const [r, g, b] = rgb.map(clamp01);
|
|
29031
|
+
return `#${[r, g, b].map((v) => linearToSrgb8(v).toString(16).padStart(2, "0")).join("")}`;
|
|
29032
|
+
}
|
|
29033
|
+
function mixOklch(a, b, t) {
|
|
29034
|
+
const A = hexToOklch(a);
|
|
29035
|
+
const B = hexToOklch(b);
|
|
29036
|
+
let dh = B.h - A.h;
|
|
29037
|
+
if (A.c < 1e-4)
|
|
29038
|
+
dh = 0;
|
|
29039
|
+
else if (B.c < 1e-4)
|
|
29040
|
+
dh = 0;
|
|
29041
|
+
else if (dh > 180)
|
|
29042
|
+
dh -= 360;
|
|
29043
|
+
else if (dh < -180)
|
|
29044
|
+
dh += 360;
|
|
29045
|
+
const h = A.c < 1e-4 ? B.h : A.h + dh * t;
|
|
29046
|
+
return oklchToHex({ l: A.l + (B.l - A.l) * t, c: A.c + (B.c - A.c) * t, h });
|
|
29047
|
+
}
|
|
29048
|
+
function relativeLuminance(hex) {
|
|
29049
|
+
const [r8, g8, b8] = parseHex(hex);
|
|
29050
|
+
return 0.2126 * srgbToLinear(r8) + 0.7152 * srgbToLinear(g8) + 0.0722 * srgbToLinear(b8);
|
|
29051
|
+
}
|
|
29052
|
+
function contrastRatio(a, b) {
|
|
29053
|
+
const la = relativeLuminance(a);
|
|
29054
|
+
const lb = relativeLuminance(b);
|
|
29055
|
+
const [hi, lo] = la > lb ? [la, lb] : [lb, la];
|
|
29056
|
+
return (hi + 0.05) / (lo + 0.05);
|
|
29057
|
+
}
|
|
29058
|
+
var STOPS = ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900"];
|
|
29059
|
+
var RAMP_L = [0.97, 0.93, 0.86, 0.76, 0.66, NaN, 0.5, 0.42, 0.34, 0.26];
|
|
29060
|
+
var RAMP_C = [0.15, 0.3, 0.5, 0.75, 0.9, 1, 0.95, 0.85, 0.7, 0.55];
|
|
29061
|
+
var NEUTRAL_T = [0.04, 0.08, 0.16, 0.28, 0.44, 0.58, 0.7, 0.8, 0.9, 0.96];
|
|
29062
|
+
var FAMILIES = ["primary", "tertiary", "success", "warning", "error", "info"];
|
|
29063
|
+
var NAMED_SPACING = { xs: "4px", sm: "8px", md: "16px", lg: "24px", xl: "32px", "2xl": "48px" };
|
|
29064
|
+
var SIZE_EXP = { xs: -2, sm: -1, base: 0, lg: 1, xl: 2, "2xl": 3, "3xl": 4, "4xl": 5 };
|
|
29065
|
+
function tokenValue(t) {
|
|
29066
|
+
if (t === void 0 || t === null || typeof t !== "object" || !("$value" in t))
|
|
29067
|
+
return void 0;
|
|
29068
|
+
const v = t.$value;
|
|
29069
|
+
if (typeof v === "number")
|
|
29070
|
+
return String(v);
|
|
29071
|
+
if (typeof v !== "string")
|
|
29072
|
+
return void 0;
|
|
29073
|
+
return /^#[0-9a-fA-F]{3,6}$/.test(v) ? `#${parseHex(v).map((n) => n.toString(16).padStart(2, "0")).join("")}` : v;
|
|
29074
|
+
}
|
|
29075
|
+
function stated(group, key) {
|
|
29076
|
+
return tokenValue(group?.[key]);
|
|
29077
|
+
}
|
|
29078
|
+
function familyRamp(group, anchor) {
|
|
29079
|
+
const a = hexToOklch(anchor);
|
|
29080
|
+
const out = {};
|
|
29081
|
+
STOPS.forEach((stop, i) => {
|
|
29082
|
+
const s = stated(group, stop);
|
|
29083
|
+
if (s !== void 0) {
|
|
29084
|
+
out[stop] = s;
|
|
29085
|
+
return;
|
|
29086
|
+
}
|
|
29087
|
+
out[stop] = stop === "500" ? anchor : oklchToHex({ l: RAMP_L[i], c: a.c * RAMP_C[i], h: a.h });
|
|
29088
|
+
});
|
|
29089
|
+
return out;
|
|
29090
|
+
}
|
|
29091
|
+
function onColourFor(base) {
|
|
29092
|
+
return contrastRatio("#ffffff", base) >= contrastRatio("#000000", base) ? "#ffffff" : "#000000";
|
|
29093
|
+
}
|
|
29094
|
+
function parseSize(value) {
|
|
29095
|
+
const m = /^([0-9.]+)\s*(rem|px|em)$/.exec(value.trim());
|
|
29096
|
+
return m ? { n: Number(m[1]), unit: m[2] } : void 0;
|
|
29097
|
+
}
|
|
29098
|
+
function deriveThemeVariables(doc, mode) {
|
|
29099
|
+
const c = Object.fromEntries(Object.entries(doc.color));
|
|
29100
|
+
const single = (key) => tokenValue(c[key]);
|
|
29101
|
+
const group = (key) => c[key];
|
|
29102
|
+
const V = {};
|
|
29103
|
+
const missing = [];
|
|
29104
|
+
const need = (key) => {
|
|
29105
|
+
const v = single(key);
|
|
29106
|
+
if (v === void 0)
|
|
29107
|
+
missing.push(`color.${key}`);
|
|
29108
|
+
return v ?? "#000000";
|
|
29109
|
+
};
|
|
29110
|
+
const ground = need("ground");
|
|
29111
|
+
const onGround = need("onGround");
|
|
29112
|
+
const container = need("container");
|
|
29113
|
+
const onContainer = need("onContainer");
|
|
29114
|
+
const sunken = need("sunken");
|
|
29115
|
+
const onSunken = need("onSunken");
|
|
29116
|
+
Object.assign(V, {
|
|
29117
|
+
"--ggui-color-ground": ground,
|
|
29118
|
+
"--ggui-color-onGround": onGround,
|
|
29119
|
+
"--ggui-color-container": container,
|
|
29120
|
+
"--ggui-color-onContainer": onContainer,
|
|
29121
|
+
"--ggui-color-sunken": sunken,
|
|
29122
|
+
"--ggui-color-onSunken": onSunken,
|
|
29123
|
+
"--ggui-color-elevated": mode === "light" ? container : mixOklch(container, onContainer, 0.08),
|
|
29124
|
+
"--ggui-color-onElevated": onContainer
|
|
29125
|
+
});
|
|
29126
|
+
const neutral = group("neutral");
|
|
29127
|
+
STOPS.forEach((stop, i) => {
|
|
29128
|
+
V[`--ggui-color-neutral-${stop}`] = stated(neutral, stop) ?? mixOklch(ground, onGround, NEUTRAL_T[i]);
|
|
29129
|
+
});
|
|
29130
|
+
V["--ggui-color-outline"] = single("outline") ?? V["--ggui-color-neutral-300"];
|
|
29131
|
+
V["--ggui-color-outlineVariant"] = single("outlineVariant") ?? V["--ggui-color-neutral-200"];
|
|
29132
|
+
const primaryAnchor = stated(group("primary"), "500");
|
|
29133
|
+
if (primaryAnchor === void 0)
|
|
29134
|
+
missing.push("color.primary.500");
|
|
29135
|
+
for (const fam of FAMILIES) {
|
|
29136
|
+
const g = group(fam);
|
|
29137
|
+
let anchor = fam === "tertiary" ? single("tertiary") : stated(g, "500");
|
|
29138
|
+
if (anchor === void 0) {
|
|
29139
|
+
if (fam === "tertiary")
|
|
29140
|
+
anchor = primaryAnchor ?? "#000000";
|
|
29141
|
+
else {
|
|
29142
|
+
missing.push(`color.${fam}.500`);
|
|
29143
|
+
anchor = "#000000";
|
|
29144
|
+
}
|
|
29145
|
+
}
|
|
29146
|
+
const ramp2 = familyRamp(g, anchor);
|
|
29147
|
+
for (const stop of STOPS)
|
|
29148
|
+
V[`--ggui-color-${fam}-${stop}`] = ramp2[stop];
|
|
29149
|
+
const cap = fam[0].toUpperCase() + fam.slice(1);
|
|
29150
|
+
V[`--ggui-color-on${cap}`] = single(`on${cap}`) ?? onColourFor(ramp2["500"]);
|
|
29151
|
+
V[`--ggui-color-${fam}Container`] = single(`${fam}Container`) ?? (mode === "light" ? ramp2["100"] : ramp2["800"]);
|
|
29152
|
+
V[`--ggui-color-on${cap}Container`] = single(`on${cap}Container`) ?? (mode === "light" ? ramp2["900"] : ramp2["100"]);
|
|
29153
|
+
}
|
|
29154
|
+
V["--ggui-color-error"] = V["--ggui-color-error-500"];
|
|
29155
|
+
V["--ggui-color-link"] = single("link") ?? V["--ggui-color-primary-600"];
|
|
29156
|
+
const family = doc.font.family;
|
|
29157
|
+
const sans = tokenValue(family.sans) ?? fontFamily.sans;
|
|
29158
|
+
V["--ggui-font-family-sans"] = sans;
|
|
29159
|
+
V["--ggui-font-family-mono"] = tokenValue(family.mono) ?? fontFamily.mono;
|
|
29160
|
+
V["--ggui-font-family-heading"] = tokenValue(family.heading) ?? sans;
|
|
29161
|
+
const weights = doc.font.weight;
|
|
29162
|
+
for (const w of ["normal", "medium", "semibold", "bold"])
|
|
29163
|
+
V[`--ggui-font-weight-${w}`] = stated(weights, w) ?? String(fontWeight[w]);
|
|
29164
|
+
V["--ggui-font-weight-heading"] = stated(weights, "heading") ?? String(fontWeight.bold);
|
|
29165
|
+
const spacingT = doc.font.letterSpacing;
|
|
29166
|
+
V["--ggui-letter-spacing-body"] = stated(spacingT, "body") ?? "0em";
|
|
29167
|
+
V["--ggui-letter-spacing-heading"] = stated(spacingT, "heading") ?? "-0.01em";
|
|
29168
|
+
for (const lh of Object.keys(lineHeight))
|
|
29169
|
+
V[`--ggui-font-lineHeight-${lh}`] = String(lineHeight[lh]);
|
|
29170
|
+
const ramp = doc.font.ramp;
|
|
29171
|
+
const base = ramp ? parseSize(tokenValue(ramp.base) ?? "") : void 0;
|
|
29172
|
+
const ratio = ramp ? Number(tokenValue(ramp.ratio)) : NaN;
|
|
29173
|
+
for (const [stop, exp] of Object.entries(SIZE_EXP)) {
|
|
29174
|
+
V[`--ggui-font-size-${stop}`] = base && Number.isFinite(ratio) && ratio > 0 ? `${Math.round(base.n * ratio ** exp * 1e3) / 1e3}${base.unit}` : fontSize[stop];
|
|
29175
|
+
}
|
|
29176
|
+
const sp = doc.spacing;
|
|
29177
|
+
for (const [key, value] of Object.entries(spacing))
|
|
29178
|
+
V[`--ggui-spacing-${key}`] = stated(sp, key) ?? String(value);
|
|
29179
|
+
for (const [key, value] of Object.entries(NAMED_SPACING))
|
|
29180
|
+
V[`--ggui-spacing-${key}`] = stated(sp, key) ?? value;
|
|
29181
|
+
const rad = doc.shape?.radius;
|
|
29182
|
+
for (const [key, value] of Object.entries(radius))
|
|
29183
|
+
V[`--ggui-shape-radius-${key}`] = stated(rad, key) ?? String(value);
|
|
29184
|
+
const sh = doc.shape?.shadow;
|
|
29185
|
+
for (const [key, value] of Object.entries(shadow))
|
|
29186
|
+
V[`--ggui-shape-shadow-${key}`] = stated(sh, key) ?? String(value);
|
|
29187
|
+
if (missing.length > 0)
|
|
29188
|
+
throw new ThemeDocumentInvalidError(missing);
|
|
29189
|
+
const floor = new Set(NON_THEME_DEFINABLE_TOKENS);
|
|
29190
|
+
const out = {};
|
|
29191
|
+
const gaps = [];
|
|
29192
|
+
for (const name of consumedTokenManifest) {
|
|
29193
|
+
if (floor.has(name))
|
|
29194
|
+
continue;
|
|
29195
|
+
const v = V[name];
|
|
29196
|
+
if (v === void 0)
|
|
29197
|
+
gaps.push(name);
|
|
29198
|
+
else
|
|
29199
|
+
out[name] = v;
|
|
29200
|
+
}
|
|
29201
|
+
if (gaps.length > 0)
|
|
29202
|
+
throw new Error(`deriveThemeVariables: no rule for manifest token(s) ${gaps.join(", ")} \u2014 extend the \xA72.4 table`);
|
|
29203
|
+
return out;
|
|
29204
|
+
}
|
|
29205
|
+
function buildCssVariables(theme9, mode) {
|
|
29206
|
+
return Object.entries(deriveThemeVariables(theme9, mode)).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([name, value]) => ` ${name}: ${value};`).join("\n");
|
|
29207
|
+
}
|
|
29208
|
+
function expandKeyframe(name, compact) {
|
|
29209
|
+
const stopRegex = /([\d.]+%|from|to)\s*\{([^}]*)\}/g;
|
|
29210
|
+
const stops = [];
|
|
29211
|
+
let match;
|
|
29212
|
+
while ((match = stopRegex.exec(compact)) !== null) {
|
|
29213
|
+
const selector = match[1];
|
|
29214
|
+
const rawProps = match[2].trim();
|
|
29215
|
+
const props = rawProps.split(";").map((p) => p.trim()).filter(Boolean).map((p) => p.endsWith(";") ? p : `${p};`).join(" ");
|
|
29216
|
+
stops.push(` ${selector} { ${props} }`);
|
|
29217
|
+
}
|
|
29218
|
+
return `@keyframes ggui-${name} {
|
|
29219
|
+
${stops.join("\n")}
|
|
29220
|
+
}`;
|
|
29221
|
+
}
|
|
29222
|
+
function buildCssKeyframes(theme9) {
|
|
29223
|
+
const blocks = [];
|
|
29224
|
+
for (const [name, token] of Object.entries(theme9.motion.keyframes)) {
|
|
29225
|
+
if (name.startsWith("$"))
|
|
29226
|
+
continue;
|
|
29227
|
+
blocks.push(expandKeyframe(name, String(token.$value)));
|
|
29228
|
+
}
|
|
29229
|
+
return blocks.join("\n\n");
|
|
29230
|
+
}
|
|
29231
|
+
function parseTheme(id, theme9, mode = "light") {
|
|
29232
|
+
const cssVariablesBody = buildCssVariables(theme9, mode);
|
|
29233
|
+
const cssVariables = `:root {
|
|
29234
|
+
${cssVariablesBody}
|
|
29235
|
+
}`;
|
|
29236
|
+
const cssKeyframes = buildCssKeyframes(theme9);
|
|
29237
|
+
const css = cssKeyframes ? `${cssVariables}
|
|
29238
|
+
|
|
29239
|
+
${cssKeyframes}` : cssVariables;
|
|
29240
|
+
return {
|
|
29241
|
+
id,
|
|
29242
|
+
name: theme9.$name,
|
|
29243
|
+
description: theme9.$description,
|
|
29244
|
+
metadata: theme9.$metadata,
|
|
29245
|
+
cssVariables,
|
|
29246
|
+
cssKeyframes,
|
|
29247
|
+
css
|
|
29248
|
+
};
|
|
29249
|
+
}
|
|
28890
29250
|
var standardSemanticScales = {
|
|
28891
29251
|
light: {
|
|
28892
29252
|
success: {
|
|
@@ -29042,28 +29402,11 @@ var shared = {
|
|
|
29042
29402
|
$type: "fontFamily"
|
|
29043
29403
|
}
|
|
29044
29404
|
},
|
|
29045
|
-
size: {
|
|
29046
|
-
sm: { $value: "0.8125rem", $type: "dimension" },
|
|
29047
|
-
// 13px
|
|
29048
|
-
base: { $value: "0.875rem", $type: "dimension" },
|
|
29049
|
-
// 14px — brand-kit body
|
|
29050
|
-
lg: { $value: "1rem", $type: "dimension" },
|
|
29051
|
-
// 16px
|
|
29052
|
-
xl: { $value: "1.125rem", $type: "dimension" },
|
|
29053
|
-
// 18px
|
|
29054
|
-
"2xl": { $value: "1.375rem", $type: "dimension" }
|
|
29055
|
-
// 22px — brand-kit hero tag
|
|
29056
|
-
},
|
|
29057
29405
|
weight: {
|
|
29058
29406
|
normal: { $value: "400", $type: "fontWeight" },
|
|
29059
29407
|
medium: { $value: "500", $type: "fontWeight" },
|
|
29060
29408
|
semibold: { $value: "600", $type: "fontWeight" },
|
|
29061
29409
|
bold: { $value: "700", $type: "fontWeight" }
|
|
29062
|
-
},
|
|
29063
|
-
lineHeight: {
|
|
29064
|
-
tight: { $value: "1.2", $type: "number" },
|
|
29065
|
-
normal: { $value: "1.5", $type: "number" },
|
|
29066
|
-
relaxed: { $value: "1.6", $type: "number" }
|
|
29067
29410
|
}
|
|
29068
29411
|
},
|
|
29069
29412
|
spacing: {
|
|
@@ -29124,26 +29467,6 @@ var shared = {
|
|
|
29124
29467
|
}
|
|
29125
29468
|
},
|
|
29126
29469
|
motion: {
|
|
29127
|
-
duration: {
|
|
29128
|
-
fast: { $value: "120ms", $type: "duration" },
|
|
29129
|
-
normal: { $value: "200ms", $type: "duration" },
|
|
29130
|
-
slow: { $value: "400ms", $type: "duration" },
|
|
29131
|
-
ambient: { $value: "2000ms", $type: "duration" }
|
|
29132
|
-
},
|
|
29133
|
-
easing: {
|
|
29134
|
-
default: {
|
|
29135
|
-
$value: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
29136
|
-
$type: "cubicBezier"
|
|
29137
|
-
},
|
|
29138
|
-
bounce: {
|
|
29139
|
-
$value: "cubic-bezier(0.34, 1.56, 0.64, 1)",
|
|
29140
|
-
$type: "cubicBezier"
|
|
29141
|
-
},
|
|
29142
|
-
spring: {
|
|
29143
|
-
$value: "cubic-bezier(0.22, 1, 0.36, 1)",
|
|
29144
|
-
$type: "cubicBezier"
|
|
29145
|
-
}
|
|
29146
|
-
},
|
|
29147
29470
|
transition: standardTransitions,
|
|
29148
29471
|
keyframes: {
|
|
29149
29472
|
"accent-pulse": {
|
|
@@ -29166,7 +29489,6 @@ var gguiLight = {
|
|
|
29166
29489
|
$description: "The default ggui theme \u2014 monochrome paper + ink, architectural, no decorative flourish.",
|
|
29167
29490
|
$metadata: {
|
|
29168
29491
|
font: "Inter",
|
|
29169
|
-
fontUrl: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Geist+Mono:wght@400;500;700&display=swap",
|
|
29170
29492
|
philosophy: "The interface is the artifact, not the chrome around it."
|
|
29171
29493
|
},
|
|
29172
29494
|
color: {
|
|
@@ -29259,15 +29581,15 @@ var gguiLight = {
|
|
|
29259
29581
|
"800": { $value: "#181818", $type: "color" }
|
|
29260
29582
|
},
|
|
29261
29583
|
// Semantic surface roles
|
|
29262
|
-
|
|
29584
|
+
ground: { $value: "#f4f3ed", $type: "color" },
|
|
29263
29585
|
// paper
|
|
29264
|
-
|
|
29586
|
+
onGround: { $value: "#292929", $type: "color" },
|
|
29265
29587
|
// ink
|
|
29266
|
-
|
|
29588
|
+
sunken: { $value: "#ebe9e1", $type: "color" },
|
|
29267
29589
|
// paper-2
|
|
29268
|
-
|
|
29590
|
+
onSunken: { $value: "#5a5a5a", $type: "color" },
|
|
29269
29591
|
// ink-3
|
|
29270
|
-
container: { $value: "#
|
|
29592
|
+
container: { $value: "#f4f3ed", $type: "color" },
|
|
29271
29593
|
// paper-2
|
|
29272
29594
|
onContainer: { $value: "#292929", $type: "color" },
|
|
29273
29595
|
// ink
|
|
@@ -29322,7 +29644,6 @@ var gguiDark = {
|
|
|
29322
29644
|
$description: "The default ggui theme (dark) \u2014 ink canvas, paper text, architectural and flat.",
|
|
29323
29645
|
$metadata: {
|
|
29324
29646
|
font: "Inter",
|
|
29325
|
-
fontUrl: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Geist+Mono:wght@400;500;700&display=swap",
|
|
29326
29647
|
philosophy: "The interface is the artifact, not the chrome around it."
|
|
29327
29648
|
},
|
|
29328
29649
|
color: {
|
|
@@ -29412,15 +29733,15 @@ var gguiDark = {
|
|
|
29412
29733
|
"700": { $value: "#e8e8e8", $type: "color" },
|
|
29413
29734
|
"800": { $value: "#f0f0f0", $type: "color" }
|
|
29414
29735
|
},
|
|
29415
|
-
|
|
29736
|
+
ground: { $value: "#1f1f1f", $type: "color" },
|
|
29416
29737
|
// surface above ink base
|
|
29417
|
-
|
|
29738
|
+
onGround: { $value: "#f4f3ed", $type: "color" },
|
|
29418
29739
|
// paper
|
|
29419
|
-
|
|
29740
|
+
sunken: { $value: "#292929", $type: "color" },
|
|
29420
29741
|
// ink
|
|
29421
|
-
|
|
29742
|
+
onSunken: { $value: "#d9d9d9", $type: "color" },
|
|
29422
29743
|
// chrome
|
|
29423
|
-
container: { $value: "#
|
|
29744
|
+
container: { $value: "#1f1f1f", $type: "color" },
|
|
29424
29745
|
// ink
|
|
29425
29746
|
onContainer: { $value: "#f4f3ed", $type: "color" },
|
|
29426
29747
|
// paper
|
|
@@ -29483,23 +29804,11 @@ var shared2 = {
|
|
|
29483
29804
|
$type: "fontFamily"
|
|
29484
29805
|
}
|
|
29485
29806
|
},
|
|
29486
|
-
size: {
|
|
29487
|
-
sm: { $value: "0.8rem", $type: "dimension" },
|
|
29488
|
-
base: { $value: "0.95rem", $type: "dimension" },
|
|
29489
|
-
lg: { $value: "1.1rem", $type: "dimension" },
|
|
29490
|
-
xl: { $value: "1.3rem", $type: "dimension" },
|
|
29491
|
-
"2xl": { $value: "1.6rem", $type: "dimension" }
|
|
29492
|
-
},
|
|
29493
29807
|
weight: {
|
|
29494
29808
|
normal: { $value: "400", $type: "fontWeight" },
|
|
29495
29809
|
medium: { $value: "500", $type: "fontWeight" },
|
|
29496
29810
|
semibold: { $value: "600", $type: "fontWeight" },
|
|
29497
29811
|
bold: { $value: "700", $type: "fontWeight" }
|
|
29498
|
-
},
|
|
29499
|
-
lineHeight: {
|
|
29500
|
-
tight: { $value: "1.2", $type: "number" },
|
|
29501
|
-
normal: { $value: "1.5", $type: "number" },
|
|
29502
|
-
relaxed: { $value: "1.7", $type: "number" }
|
|
29503
29812
|
}
|
|
29504
29813
|
},
|
|
29505
29814
|
spacing: {
|
|
@@ -29532,26 +29841,6 @@ var shared2 = {
|
|
|
29532
29841
|
}
|
|
29533
29842
|
},
|
|
29534
29843
|
motion: {
|
|
29535
|
-
duration: {
|
|
29536
|
-
fast: { $value: "100ms", $type: "duration" },
|
|
29537
|
-
normal: { $value: "200ms", $type: "duration" },
|
|
29538
|
-
slow: { $value: "600ms", $type: "duration" },
|
|
29539
|
-
ambient: { $value: "2000ms", $type: "duration" }
|
|
29540
|
-
},
|
|
29541
|
-
easing: {
|
|
29542
|
-
default: {
|
|
29543
|
-
$value: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
29544
|
-
$type: "cubicBezier"
|
|
29545
|
-
},
|
|
29546
|
-
bounce: {
|
|
29547
|
-
$value: "cubic-bezier(0.68, -0.55, 0.27, 1.55)",
|
|
29548
|
-
$type: "cubicBezier"
|
|
29549
|
-
},
|
|
29550
|
-
spring: {
|
|
29551
|
-
$value: "cubic-bezier(0.22, 1, 0.36, 1)",
|
|
29552
|
-
$type: "cubicBezier"
|
|
29553
|
-
}
|
|
29554
|
-
},
|
|
29555
29844
|
keyframes: {
|
|
29556
29845
|
"glitch-flicker": {
|
|
29557
29846
|
$value: "0%{opacity:1;transform:none}7%{opacity:0.8;transform:translateX(-2px) skewX(-1deg)}10%{opacity:1;transform:none}47%{opacity:1;transform:none}50%{opacity:0.6;transform:translateX(3px) skewX(2deg)}53%{opacity:1;transform:none}100%{opacity:1;transform:none}",
|
|
@@ -29602,7 +29891,6 @@ var cyberpunkLight = {
|
|
|
29602
29891
|
$description: "Neon-lit dystopian tech \u2014 cyan neon on dark chrome with glitch animations.",
|
|
29603
29892
|
$metadata: {
|
|
29604
29893
|
font: "Orbitron",
|
|
29605
|
-
fontUrl: "https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;600;700&display=swap",
|
|
29606
29894
|
philosophy: "Chromatic noise, electric tension, digital rebellion."
|
|
29607
29895
|
},
|
|
29608
29896
|
color: {
|
|
@@ -29671,12 +29959,12 @@ var cyberpunkLight = {
|
|
|
29671
29959
|
"800": { $value: "#005266", $type: "color" }
|
|
29672
29960
|
},
|
|
29673
29961
|
// Semantic roles (dark theme — inverted neutral scale)
|
|
29674
|
-
|
|
29675
|
-
|
|
29676
|
-
|
|
29677
|
-
|
|
29678
|
-
container: { $value: "#
|
|
29679
|
-
onContainer: { $value: "#
|
|
29962
|
+
ground: { $value: "#0a0a0f", $type: "color" },
|
|
29963
|
+
onGround: { $value: "#e8e8f0", $type: "color" },
|
|
29964
|
+
sunken: { $value: "#111118", $type: "color" },
|
|
29965
|
+
onSunken: { $value: "#8888a0", $type: "color" },
|
|
29966
|
+
container: { $value: "#0a0a0f", $type: "color" },
|
|
29967
|
+
onContainer: { $value: "#e8e8f0", $type: "color" },
|
|
29680
29968
|
outline: { $value: "#3a3a48", $type: "color" },
|
|
29681
29969
|
outlineVariant: { $value: "#25252f", $type: "color" },
|
|
29682
29970
|
// Primary role pair — onPrimary is the deep night chrome, container
|
|
@@ -29723,7 +30011,6 @@ var cyberpunkDark = {
|
|
|
29723
30011
|
$description: "Neon-lit dystopian tech (dark) \u2014 brighter cyan on pure-black chrome, cranked neon contrast.",
|
|
29724
30012
|
$metadata: {
|
|
29725
30013
|
font: "Orbitron",
|
|
29726
|
-
fontUrl: "https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;600;700&display=swap",
|
|
29727
30014
|
philosophy: "Chromatic noise, electric tension, digital rebellion."
|
|
29728
30015
|
},
|
|
29729
30016
|
color: {
|
|
@@ -29798,13 +30085,13 @@ var cyberpunkDark = {
|
|
|
29798
30085
|
"700": { $value: "#85e6ff", $type: "color" },
|
|
29799
30086
|
"800": { $value: "#adeeff", $type: "color" }
|
|
29800
30087
|
},
|
|
29801
|
-
|
|
29802
|
-
|
|
29803
|
-
|
|
29804
|
-
|
|
29805
|
-
container: { $value: "#
|
|
30088
|
+
ground: { $value: "#000005", $type: "color" },
|
|
30089
|
+
onGround: { $value: "#e8e8f0", $type: "color" },
|
|
30090
|
+
sunken: { $value: "#0a0a0f", $type: "color" },
|
|
30091
|
+
onSunken: { $value: "#aaaabe", $type: "color" },
|
|
30092
|
+
container: { $value: "#000005", $type: "color" },
|
|
29806
30093
|
// deeper teal
|
|
29807
|
-
onContainer: { $value: "#
|
|
30094
|
+
onContainer: { $value: "#e8e8f0", $type: "color" },
|
|
29808
30095
|
outline: { $value: "#1a1a24", $type: "color" },
|
|
29809
30096
|
outlineVariant: { $value: "#111118", $type: "color" },
|
|
29810
30097
|
// Primary role pair — dark: onPrimary is pure-black-ish, container = deeper teal.
|
|
@@ -29858,23 +30145,11 @@ var shared3 = {
|
|
|
29858
30145
|
$type: "fontFamily"
|
|
29859
30146
|
}
|
|
29860
30147
|
},
|
|
29861
|
-
size: {
|
|
29862
|
-
sm: { $value: "0.875rem", $type: "dimension" },
|
|
29863
|
-
base: { $value: "1rem", $type: "dimension" },
|
|
29864
|
-
lg: { $value: "1.125rem", $type: "dimension" },
|
|
29865
|
-
xl: { $value: "1.3rem", $type: "dimension" },
|
|
29866
|
-
"2xl": { $value: "1.6rem", $type: "dimension" }
|
|
29867
|
-
},
|
|
29868
30148
|
weight: {
|
|
29869
30149
|
normal: { $value: "400", $type: "fontWeight" },
|
|
29870
30150
|
medium: { $value: "500", $type: "fontWeight" },
|
|
29871
30151
|
semibold: { $value: "600", $type: "fontWeight" },
|
|
29872
30152
|
bold: { $value: "700", $type: "fontWeight" }
|
|
29873
|
-
},
|
|
29874
|
-
lineHeight: {
|
|
29875
|
-
tight: { $value: "1.3", $type: "number" },
|
|
29876
|
-
normal: { $value: "1.6", $type: "number" },
|
|
29877
|
-
relaxed: { $value: "1.9", $type: "number" }
|
|
29878
30153
|
}
|
|
29879
30154
|
},
|
|
29880
30155
|
spacing: {
|
|
@@ -29916,26 +30191,6 @@ var shared3 = {
|
|
|
29916
30191
|
}
|
|
29917
30192
|
},
|
|
29918
30193
|
motion: {
|
|
29919
|
-
duration: {
|
|
29920
|
-
fast: { $value: "200ms", $type: "duration" },
|
|
29921
|
-
normal: { $value: "500ms", $type: "duration" },
|
|
29922
|
-
slow: { $value: "1500ms", $type: "duration" },
|
|
29923
|
-
ambient: { $value: "6000ms", $type: "duration" }
|
|
29924
|
-
},
|
|
29925
|
-
easing: {
|
|
29926
|
-
default: {
|
|
29927
|
-
$value: "cubic-bezier(0.33, 0, 0.67, 1)",
|
|
29928
|
-
$type: "cubicBezier"
|
|
29929
|
-
},
|
|
29930
|
-
bounce: {
|
|
29931
|
-
$value: "cubic-bezier(0.34, 1.2, 0.64, 1)",
|
|
29932
|
-
$type: "cubicBezier"
|
|
29933
|
-
},
|
|
29934
|
-
spring: {
|
|
29935
|
-
$value: "cubic-bezier(0.22, 1, 0.36, 1)",
|
|
29936
|
-
$type: "cubicBezier"
|
|
29937
|
-
}
|
|
29938
|
-
},
|
|
29939
30194
|
keyframes: {
|
|
29940
30195
|
"slow-breathe": {
|
|
29941
30196
|
$value: "0%{opacity:0.85}50%{opacity:1}100%{opacity:0.85}",
|
|
@@ -29965,7 +30220,6 @@ var zenLight = {
|
|
|
29965
30220
|
$description: "Minimalist Japanese aesthetic \u2014 warm stone tones, deliberate space, and unhurried motion.",
|
|
29966
30221
|
$metadata: {
|
|
29967
30222
|
font: "Noto Serif JP",
|
|
29968
|
-
fontUrl: "https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@400;500;600;700&display=swap",
|
|
29969
30223
|
philosophy: "Beauty in imperfection. Stillness as presence."
|
|
29970
30224
|
},
|
|
29971
30225
|
color: {
|
|
@@ -30033,12 +30287,12 @@ var zenLight = {
|
|
|
30033
30287
|
"800": { $type: "color", $value: "#2c3d46" }
|
|
30034
30288
|
},
|
|
30035
30289
|
// Semantic roles
|
|
30036
|
-
|
|
30037
|
-
|
|
30038
|
-
|
|
30039
|
-
|
|
30040
|
-
container: { $value: "#
|
|
30041
|
-
onContainer: { $value: "#
|
|
30290
|
+
ground: { $value: "#faf9f7", $type: "color" },
|
|
30291
|
+
onGround: { $value: "#2a2724", $type: "color" },
|
|
30292
|
+
sunken: { $value: "#f3f1ed", $type: "color" },
|
|
30293
|
+
onSunken: { $value: "#6b635b", $type: "color" },
|
|
30294
|
+
container: { $value: "#faf9f7", $type: "color" },
|
|
30295
|
+
onContainer: { $value: "#2a2724", $type: "color" },
|
|
30042
30296
|
outline: { $value: "#d5d0c8", $type: "color" },
|
|
30043
30297
|
outlineVariant: { $value: "#e7e4de", $type: "color" },
|
|
30044
30298
|
// Primary role pair — onPrimary is stone ivory on moss.
|
|
@@ -30082,7 +30336,6 @@ var zenDark = {
|
|
|
30082
30336
|
$description: "Minimalist Japanese aesthetic (dark) \u2014 dusk stone surfaces with restrained moss accents and unhurried motion.",
|
|
30083
30337
|
$metadata: {
|
|
30084
30338
|
font: "Noto Serif JP",
|
|
30085
|
-
fontUrl: "https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@400;500;600;700&display=swap",
|
|
30086
30339
|
philosophy: "Beauty in imperfection. Stillness as presence."
|
|
30087
30340
|
},
|
|
30088
30341
|
color: {
|
|
@@ -30151,14 +30404,14 @@ var zenDark = {
|
|
|
30151
30404
|
"700": { $type: "color", $value: "#546771" },
|
|
30152
30405
|
"800": { $type: "color", $value: "#38454d" }
|
|
30153
30406
|
},
|
|
30154
|
-
|
|
30155
|
-
|
|
30407
|
+
ground: { $value: "#2a2724", $type: "color" },
|
|
30408
|
+
onGround: { $value: "#f3f1ed", $type: "color" },
|
|
30156
30409
|
// muted off-cream, not pure white
|
|
30157
|
-
|
|
30158
|
-
|
|
30159
|
-
container: { $value: "#
|
|
30410
|
+
sunken: { $value: "#3e3a36", $type: "color" },
|
|
30411
|
+
onSunken: { $value: "#b8b0a4", $type: "color" },
|
|
30412
|
+
container: { $value: "#2a2724", $type: "color" },
|
|
30160
30413
|
// deep moss
|
|
30161
|
-
onContainer: { $value: "#
|
|
30414
|
+
onContainer: { $value: "#f3f1ed", $type: "color" },
|
|
30162
30415
|
// primary-100 in dark tree
|
|
30163
30416
|
outline: { $value: "#5e5650", $type: "color" },
|
|
30164
30417
|
outlineVariant: { $value: "#3e3a36", $type: "color" },
|
|
@@ -30212,23 +30465,11 @@ var shared4 = {
|
|
|
30212
30465
|
$type: "fontFamily"
|
|
30213
30466
|
}
|
|
30214
30467
|
},
|
|
30215
|
-
size: {
|
|
30216
|
-
sm: { $value: "0.875rem", $type: "dimension" },
|
|
30217
|
-
base: { $value: "1rem", $type: "dimension" },
|
|
30218
|
-
lg: { $value: "1.125rem", $type: "dimension" },
|
|
30219
|
-
xl: { $value: "1.25rem", $type: "dimension" },
|
|
30220
|
-
"2xl": { $value: "1.5rem", $type: "dimension" }
|
|
30221
|
-
},
|
|
30222
30468
|
weight: {
|
|
30223
30469
|
normal: { $value: "400", $type: "fontWeight" },
|
|
30224
30470
|
medium: { $value: "500", $type: "fontWeight" },
|
|
30225
30471
|
semibold: { $value: "600", $type: "fontWeight" },
|
|
30226
30472
|
bold: { $value: "700", $type: "fontWeight" }
|
|
30227
|
-
},
|
|
30228
|
-
lineHeight: {
|
|
30229
|
-
tight: { $value: "1.25", $type: "number" },
|
|
30230
|
-
normal: { $value: "1.5", $type: "number" },
|
|
30231
|
-
relaxed: { $value: "1.75", $type: "number" }
|
|
30232
30473
|
}
|
|
30233
30474
|
},
|
|
30234
30475
|
spacing: {
|
|
@@ -30261,26 +30502,6 @@ var shared4 = {
|
|
|
30261
30502
|
}
|
|
30262
30503
|
},
|
|
30263
30504
|
motion: {
|
|
30264
|
-
duration: {
|
|
30265
|
-
fast: { $value: "120ms", $type: "duration" },
|
|
30266
|
-
normal: { $value: "250ms", $type: "duration" },
|
|
30267
|
-
slow: { $value: "800ms", $type: "duration" },
|
|
30268
|
-
ambient: { $value: "2500ms", $type: "duration" }
|
|
30269
|
-
},
|
|
30270
|
-
easing: {
|
|
30271
|
-
default: {
|
|
30272
|
-
$value: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
30273
|
-
$type: "cubicBezier"
|
|
30274
|
-
},
|
|
30275
|
-
bounce: {
|
|
30276
|
-
$value: "cubic-bezier(0.68, -0.55, 0.27, 1.55)",
|
|
30277
|
-
$type: "cubicBezier"
|
|
30278
|
-
},
|
|
30279
|
-
spring: {
|
|
30280
|
-
$value: "cubic-bezier(0.22, 1, 0.36, 1)",
|
|
30281
|
-
$type: "cubicBezier"
|
|
30282
|
-
}
|
|
30283
|
-
},
|
|
30284
30505
|
transition: {
|
|
30285
30506
|
fast: {
|
|
30286
30507
|
$value: "120ms cubic-bezier(0.4, 0, 0.2, 1)",
|
|
@@ -30328,7 +30549,6 @@ var neonNoirLight = {
|
|
|
30328
30549
|
$description: "Hot pink neon on dark \u2014 electric glow effects, neon flicker, and flowing magenta particles.",
|
|
30329
30550
|
$metadata: {
|
|
30330
30551
|
font: "Outfit",
|
|
30331
|
-
fontUrl: "https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap",
|
|
30332
30552
|
philosophy: "Midnight electricity. The city never sleeps."
|
|
30333
30553
|
},
|
|
30334
30554
|
color: {
|
|
@@ -30373,12 +30593,12 @@ var neonNoirLight = {
|
|
|
30373
30593
|
"500": { $value: "#38bdf8", $type: "color" }
|
|
30374
30594
|
},
|
|
30375
30595
|
// Semantic roles (dark theme — inverted neutral scale)
|
|
30376
|
-
|
|
30377
|
-
|
|
30378
|
-
|
|
30379
|
-
|
|
30380
|
-
container: { $value: "#
|
|
30381
|
-
onContainer: { $value: "#
|
|
30596
|
+
ground: { $value: "#09090b", $type: "color" },
|
|
30597
|
+
onGround: { $value: "#ececf0", $type: "color" },
|
|
30598
|
+
sunken: { $value: "#111114", $type: "color" },
|
|
30599
|
+
onSunken: { $value: "#8a8a9a", $type: "color" },
|
|
30600
|
+
container: { $value: "#09090b", $type: "color" },
|
|
30601
|
+
onContainer: { $value: "#ececf0", $type: "color" },
|
|
30382
30602
|
outline: { $value: "#3b3b44", $type: "color" },
|
|
30383
30603
|
outlineVariant: { $value: "#232329", $type: "color" },
|
|
30384
30604
|
// Primary role pair — onPrimary is deep noir so hot pink CTAs pop.
|
|
@@ -30420,7 +30640,6 @@ var neonNoirDark = {
|
|
|
30420
30640
|
$description: "Hot pink neon on pure black (dark) \u2014 sharper noir contrast, brighter electric glow, deeper magenta containers.",
|
|
30421
30641
|
$metadata: {
|
|
30422
30642
|
font: "Outfit",
|
|
30423
|
-
fontUrl: "https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap",
|
|
30424
30643
|
philosophy: "Midnight electricity. The city never sleeps."
|
|
30425
30644
|
},
|
|
30426
30645
|
color: {
|
|
@@ -30466,13 +30685,13 @@ var neonNoirDark = {
|
|
|
30466
30685
|
...standardSemanticScales.dark.info,
|
|
30467
30686
|
"500": { $value: "#5acdff", $type: "color" }
|
|
30468
30687
|
},
|
|
30469
|
-
|
|
30470
|
-
|
|
30471
|
-
|
|
30472
|
-
|
|
30473
|
-
container: { $value: "#
|
|
30688
|
+
ground: { $value: "#000000", $type: "color" },
|
|
30689
|
+
onGround: { $value: "#ececf0", $type: "color" },
|
|
30690
|
+
sunken: { $value: "#09090b", $type: "color" },
|
|
30691
|
+
onSunken: { $value: "#b0b0be", $type: "color" },
|
|
30692
|
+
container: { $value: "#000000", $type: "color" },
|
|
30474
30693
|
// richer magenta
|
|
30475
|
-
onContainer: { $value: "#
|
|
30694
|
+
onContainer: { $value: "#ececf0", $type: "color" },
|
|
30476
30695
|
outline: { $value: "#19191e", $type: "color" },
|
|
30477
30696
|
outlineVariant: { $value: "#111114", $type: "color" },
|
|
30478
30697
|
// Primary role pair — dark: onPrimary is pure black, container = richer magenta.
|
|
@@ -30522,23 +30741,11 @@ var shared5 = {
|
|
|
30522
30741
|
$type: "fontFamily"
|
|
30523
30742
|
}
|
|
30524
30743
|
},
|
|
30525
|
-
size: {
|
|
30526
|
-
sm: { $value: "0.875rem", $type: "dimension" },
|
|
30527
|
-
base: { $value: "1rem", $type: "dimension" },
|
|
30528
|
-
lg: { $value: "1.15rem", $type: "dimension" },
|
|
30529
|
-
xl: { $value: "1.3rem", $type: "dimension" },
|
|
30530
|
-
"2xl": { $value: "1.625rem", $type: "dimension" }
|
|
30531
|
-
},
|
|
30532
30744
|
weight: {
|
|
30533
30745
|
normal: { $value: "400", $type: "fontWeight" },
|
|
30534
30746
|
medium: { $value: "500", $type: "fontWeight" },
|
|
30535
30747
|
semibold: { $value: "600", $type: "fontWeight" },
|
|
30536
30748
|
bold: { $value: "700", $type: "fontWeight" }
|
|
30537
|
-
},
|
|
30538
|
-
lineHeight: {
|
|
30539
|
-
tight: { $value: "1.3", $type: "number" },
|
|
30540
|
-
normal: { $value: "1.6", $type: "number" },
|
|
30541
|
-
relaxed: { $value: "1.85", $type: "number" }
|
|
30542
30749
|
}
|
|
30543
30750
|
},
|
|
30544
30751
|
spacing: {
|
|
@@ -30580,26 +30787,6 @@ var shared5 = {
|
|
|
30580
30787
|
}
|
|
30581
30788
|
},
|
|
30582
30789
|
motion: {
|
|
30583
|
-
duration: {
|
|
30584
|
-
fast: { $value: "200ms", $type: "duration" },
|
|
30585
|
-
normal: { $value: "400ms", $type: "duration" },
|
|
30586
|
-
slow: { $value: "1200ms", $type: "duration" },
|
|
30587
|
-
ambient: { $value: "5000ms", $type: "duration" }
|
|
30588
|
-
},
|
|
30589
|
-
easing: {
|
|
30590
|
-
default: {
|
|
30591
|
-
$value: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
30592
|
-
$type: "cubicBezier"
|
|
30593
|
-
},
|
|
30594
|
-
bounce: {
|
|
30595
|
-
$value: "cubic-bezier(0.34, 1.3, 0.64, 1)",
|
|
30596
|
-
$type: "cubicBezier"
|
|
30597
|
-
},
|
|
30598
|
-
spring: {
|
|
30599
|
-
$value: "cubic-bezier(0.22, 1, 0.36, 1)",
|
|
30600
|
-
$type: "cubicBezier"
|
|
30601
|
-
}
|
|
30602
|
-
},
|
|
30603
30790
|
keyframes: {
|
|
30604
30791
|
"leaf-float": {
|
|
30605
30792
|
$value: "0%{transform:translateY(0) rotate(0deg);opacity:0.7}25%{transform:translateY(-6px) rotate(3deg)}50%{transform:translateY(-2px) rotate(-2deg);opacity:1}75%{transform:translateY(-8px) rotate(2deg)}100%{transform:translateY(0) rotate(0deg);opacity:0.7}",
|
|
@@ -30622,7 +30809,6 @@ var botanicalLight = {
|
|
|
30622
30809
|
$description: "Organic greens on warm cream \u2014 leaf-float animations and vine-grow motion.",
|
|
30623
30810
|
$metadata: {
|
|
30624
30811
|
font: "Lora",
|
|
30625
|
-
fontUrl: "https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap",
|
|
30626
30812
|
philosophy: "Rooted in nature. Growing with intention."
|
|
30627
30813
|
},
|
|
30628
30814
|
color: {
|
|
@@ -30671,12 +30857,12 @@ var botanicalLight = {
|
|
|
30671
30857
|
},
|
|
30672
30858
|
info: standardSemanticScales.light.info,
|
|
30673
30859
|
// Semantic roles
|
|
30674
|
-
|
|
30675
|
-
|
|
30676
|
-
|
|
30677
|
-
|
|
30678
|
-
container: { $value: "#
|
|
30679
|
-
onContainer: { $value: "#
|
|
30860
|
+
ground: { $value: "#fefcf8", $type: "color" },
|
|
30861
|
+
onGround: { $value: "#352e20", $type: "color" },
|
|
30862
|
+
sunken: { $value: "#fdf8ef", $type: "color" },
|
|
30863
|
+
onSunken: { $value: "#746448", $type: "color" },
|
|
30864
|
+
container: { $value: "#fefcf8", $type: "color" },
|
|
30865
|
+
onContainer: { $value: "#352e20", $type: "color" },
|
|
30680
30866
|
outline: { $value: "#f0e4c9", $type: "color" },
|
|
30681
30867
|
outlineVariant: { $value: "#f8f0df", $type: "color" },
|
|
30682
30868
|
// Primary role pair — onPrimary is cream for the leaf-green brand hex.
|
|
@@ -30718,7 +30904,6 @@ var botanicalDark = {
|
|
|
30718
30904
|
$description: "Forest at night (dark) \u2014 deep soil surfaces with lifted leaf-green accents and gentle organic motion.",
|
|
30719
30905
|
$metadata: {
|
|
30720
30906
|
font: "Lora",
|
|
30721
|
-
fontUrl: "https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap",
|
|
30722
30907
|
philosophy: "Rooted in nature. Growing with intention."
|
|
30723
30908
|
},
|
|
30724
30909
|
color: {
|
|
@@ -30753,13 +30938,13 @@ var botanicalDark = {
|
|
|
30753
30938
|
warning: standardSemanticScales.dark.warning,
|
|
30754
30939
|
error: standardSemanticScales.dark.error,
|
|
30755
30940
|
info: standardSemanticScales.dark.info,
|
|
30756
|
-
|
|
30757
|
-
|
|
30758
|
-
|
|
30759
|
-
|
|
30760
|
-
container: { $value: "#
|
|
30941
|
+
ground: { $value: "#1f1c18", $type: "color" },
|
|
30942
|
+
onGround: { $value: "#fefcf8", $type: "color" },
|
|
30943
|
+
sunken: { $value: "#352e20", $type: "color" },
|
|
30944
|
+
onSunken: { $value: "#dccba5", $type: "color" },
|
|
30945
|
+
container: { $value: "#1f1c18", $type: "color" },
|
|
30761
30946
|
// deep forest
|
|
30762
|
-
onContainer: { $value: "#
|
|
30947
|
+
onContainer: { $value: "#fefcf8", $type: "color" },
|
|
30763
30948
|
outline: { $value: "#504530", $type: "color" },
|
|
30764
30949
|
outlineVariant: { $value: "#352e20", $type: "color" },
|
|
30765
30950
|
// Primary role pair — dark: lifted leaf-green, onPrimary = forest soil.
|
|
@@ -30826,24 +31011,11 @@ var shared6 = {
|
|
|
30826
31011
|
$type: "fontFamily"
|
|
30827
31012
|
}
|
|
30828
31013
|
},
|
|
30829
|
-
size: {
|
|
30830
|
-
sm: { $value: "0.875rem", $type: "dimension" },
|
|
30831
|
-
base: { $value: "1rem", $type: "dimension" },
|
|
30832
|
-
lg: { $value: "1.125rem", $type: "dimension" },
|
|
30833
|
-
xl: { $value: "1.25rem", $type: "dimension" },
|
|
30834
|
-
"2xl": { $value: "1.5rem", $type: "dimension" }
|
|
30835
|
-
},
|
|
30836
31014
|
weight: {
|
|
30837
31015
|
normal: { $value: "400", $type: "fontWeight" },
|
|
30838
31016
|
medium: { $value: "500", $type: "fontWeight" },
|
|
30839
31017
|
semibold: { $value: "600", $type: "fontWeight" },
|
|
30840
31018
|
bold: { $value: "700", $type: "fontWeight" }
|
|
30841
|
-
},
|
|
30842
|
-
lineHeight: {
|
|
30843
|
-
tight: { $value: "1.25", $type: "number" },
|
|
30844
|
-
normal: { $value: "1.55", $type: "number" },
|
|
30845
|
-
// claude.ai-ish — slightly looser than Indigo
|
|
30846
|
-
relaxed: { $value: "1.75", $type: "number" }
|
|
30847
31019
|
}
|
|
30848
31020
|
},
|
|
30849
31021
|
// Same dual-key spacing scale as Indigo so primitives that
|
|
@@ -30901,21 +31073,6 @@ var shared6 = {
|
|
|
30901
31073
|
motion: {
|
|
30902
31074
|
// Claudic is calmer than Indigo — no `ambient` 3s breathing
|
|
30903
31075
|
// duration is exposed. Animations stay snappy + functional only.
|
|
30904
|
-
duration: {
|
|
30905
|
-
fast: { $value: "120ms", $type: "duration" },
|
|
30906
|
-
normal: { $value: "240ms", $type: "duration" },
|
|
30907
|
-
slow: { $value: "480ms", $type: "duration" }
|
|
30908
|
-
},
|
|
30909
|
-
easing: {
|
|
30910
|
-
default: {
|
|
30911
|
-
$value: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
30912
|
-
$type: "cubicBezier"
|
|
30913
|
-
},
|
|
30914
|
-
spring: {
|
|
30915
|
-
$value: "cubic-bezier(0.22, 1, 0.36, 1)",
|
|
30916
|
-
$type: "cubicBezier"
|
|
30917
|
-
}
|
|
30918
|
-
},
|
|
30919
31076
|
keyframes: {
|
|
30920
31077
|
entrance: {
|
|
30921
31078
|
$value: "0%{opacity:0;transform:translateY(4px)}100%{opacity:1;transform:none}",
|
|
@@ -31016,15 +31173,15 @@ var claudicLight = {
|
|
|
31016
31173
|
"800": { $value: "#363432", $type: "color" }
|
|
31017
31174
|
},
|
|
31018
31175
|
// Two-tier semantic roles
|
|
31019
|
-
|
|
31176
|
+
ground: { $value: "#faf9f5", $type: "color" },
|
|
31020
31177
|
// Ivory
|
|
31021
|
-
|
|
31178
|
+
onGround: { $value: "#141413", $type: "color" },
|
|
31022
31179
|
// Slate
|
|
31023
|
-
|
|
31024
|
-
|
|
31025
|
-
container: { $value: "#
|
|
31180
|
+
sunken: { $value: "#f5f4ee", $type: "color" },
|
|
31181
|
+
onSunken: { $value: "#56544f", $type: "color" },
|
|
31182
|
+
container: { $value: "#faf9f5", $type: "color" },
|
|
31026
31183
|
// primary-50
|
|
31027
|
-
onContainer: { $value: "#
|
|
31184
|
+
onContainer: { $value: "#141413", $type: "color" },
|
|
31028
31185
|
// primary-900
|
|
31029
31186
|
outline: { $value: "#dad8cc", $type: "color" },
|
|
31030
31187
|
outlineVariant: { $value: "#ebe9df", $type: "color" },
|
|
@@ -31156,14 +31313,14 @@ var claudicDark = {
|
|
|
31156
31313
|
"700": { $value: "#d1cfca", $type: "color" },
|
|
31157
31314
|
"800": { $value: "#e6e4e0", $type: "color" }
|
|
31158
31315
|
},
|
|
31159
|
-
|
|
31316
|
+
ground: { $value: "#262624", $type: "color" },
|
|
31160
31317
|
// Charcoal
|
|
31161
|
-
|
|
31318
|
+
onGround: { $value: "#faf9f5", $type: "color" },
|
|
31162
31319
|
// Ivory
|
|
31163
|
-
|
|
31164
|
-
|
|
31165
|
-
container: { $value: "#
|
|
31166
|
-
onContainer: { $value: "#
|
|
31320
|
+
sunken: { $value: "#2d2c2a", $type: "color" },
|
|
31321
|
+
onSunken: { $value: "#a8a59f", $type: "color" },
|
|
31322
|
+
container: { $value: "#262624", $type: "color" },
|
|
31323
|
+
onContainer: { $value: "#faf9f5", $type: "color" },
|
|
31167
31324
|
outline: { $value: "#3d3b39", $type: "color" },
|
|
31168
31325
|
outlineVariant: { $value: "#2d2c2a", $type: "color" },
|
|
31169
31326
|
// Primary role pair — dark: onPrimary is charcoal so text reads on the
|
|
@@ -31228,31 +31385,12 @@ var shared7 = {
|
|
|
31228
31385
|
$type: "fontFamily"
|
|
31229
31386
|
}
|
|
31230
31387
|
},
|
|
31231
|
-
size: {
|
|
31232
|
-
sm: { $value: "0.8125rem", $type: "dimension" },
|
|
31233
|
-
// 13px
|
|
31234
|
-
base: { $value: "0.9375rem", $type: "dimension" },
|
|
31235
|
-
// 15px
|
|
31236
|
-
lg: { $value: "1.0625rem", $type: "dimension" },
|
|
31237
|
-
// 17px
|
|
31238
|
-
xl: { $value: "1.3125rem", $type: "dimension" },
|
|
31239
|
-
// 21px — bumped for display headings
|
|
31240
|
-
"2xl": { $value: "1.75rem", $type: "dimension" }
|
|
31241
|
-
// 28px — generous display
|
|
31242
|
-
},
|
|
31243
31388
|
weight: {
|
|
31244
31389
|
normal: { $value: "400", $type: "fontWeight" },
|
|
31245
31390
|
medium: { $value: "500", $type: "fontWeight" },
|
|
31246
31391
|
semibold: { $value: "600", $type: "fontWeight" },
|
|
31247
31392
|
bold: { $value: "680", $type: "fontWeight" }
|
|
31248
31393
|
// variable-axis weight; reads bold without going harsh on Inter
|
|
31249
|
-
},
|
|
31250
|
-
lineHeight: {
|
|
31251
|
-
tight: { $value: "1.1", $type: "number" },
|
|
31252
|
-
// headings
|
|
31253
|
-
normal: { $value: "1.55", $type: "number" },
|
|
31254
|
-
// body — generous, editorial
|
|
31255
|
-
relaxed: { $value: "1.7", $type: "number" }
|
|
31256
31394
|
}
|
|
31257
31395
|
},
|
|
31258
31396
|
spacing: {
|
|
@@ -31309,24 +31447,6 @@ var shared7 = {
|
|
|
31309
31447
|
}
|
|
31310
31448
|
},
|
|
31311
31449
|
motion: {
|
|
31312
|
-
duration: {
|
|
31313
|
-
fast: { $value: "150ms", $type: "duration" },
|
|
31314
|
-
normal: { $value: "250ms", $type: "duration" },
|
|
31315
|
-
slow: { $value: "420ms", $type: "duration" },
|
|
31316
|
-
ambient: { $value: "8000ms", $type: "duration" }
|
|
31317
|
-
// background breathing
|
|
31318
|
-
},
|
|
31319
|
-
easing: {
|
|
31320
|
-
// Linear's signature easing — confident, slightly overshoots arrival.
|
|
31321
|
-
default: {
|
|
31322
|
-
$value: "cubic-bezier(0.32, 0.72, 0, 1)",
|
|
31323
|
-
$type: "cubicBezier"
|
|
31324
|
-
},
|
|
31325
|
-
spring: {
|
|
31326
|
-
$value: "cubic-bezier(0.16, 1, 0.3, 1)",
|
|
31327
|
-
$type: "cubicBezier"
|
|
31328
|
-
}
|
|
31329
|
-
},
|
|
31330
31450
|
keyframes: {
|
|
31331
31451
|
entrance: {
|
|
31332
31452
|
$value: "0%{opacity:0;transform:translateY(6px)}100%{opacity:1;transform:none}",
|
|
@@ -31425,15 +31545,15 @@ var indigoLight = {
|
|
|
31425
31545
|
"700": { $value: "#155e75", $type: "color" },
|
|
31426
31546
|
"800": { $value: "#164e63", $type: "color" }
|
|
31427
31547
|
},
|
|
31428
|
-
|
|
31548
|
+
ground: { $value: "#fafaf7", $type: "color" },
|
|
31429
31549
|
// Paper
|
|
31430
|
-
|
|
31550
|
+
onGround: { $value: "#15131f", $type: "color" },
|
|
31431
31551
|
// Ink
|
|
31432
|
-
|
|
31433
|
-
|
|
31434
|
-
container: { $value: "#
|
|
31552
|
+
sunken: { $value: "#f4f4f0", $type: "color" },
|
|
31553
|
+
onSunken: { $value: "#4a4954", $type: "color" },
|
|
31554
|
+
container: { $value: "#fafaf7", $type: "color" },
|
|
31435
31555
|
// primary-50 — pale indigo whisper
|
|
31436
|
-
onContainer: { $value: "#
|
|
31556
|
+
onContainer: { $value: "#15131f", $type: "color" },
|
|
31437
31557
|
// primary-900
|
|
31438
31558
|
outline: { $value: "#d4d3cf", $type: "color" },
|
|
31439
31559
|
outlineVariant: { $value: "#e8e7e3", $type: "color" },
|
|
@@ -31567,13 +31687,13 @@ var indigoDark = {
|
|
|
31567
31687
|
// indistinguishable from default. Variant is now #221e35 (visible
|
|
31568
31688
|
// 1-tier step) and outline #3e3c50 (matches neutral-400, gives
|
|
31569
31689
|
// borders a hairline visibility on dark).
|
|
31570
|
-
|
|
31571
|
-
|
|
31572
|
-
|
|
31573
|
-
|
|
31574
|
-
container: { $value: "#
|
|
31690
|
+
ground: { $value: "#15131f", $type: "color" },
|
|
31691
|
+
onGround: { $value: "#f5f4f9", $type: "color" },
|
|
31692
|
+
sunken: { $value: "#221e35", $type: "color" },
|
|
31693
|
+
onSunken: { $value: "#c8c6d2", $type: "color" },
|
|
31694
|
+
container: { $value: "#15131f", $type: "color" },
|
|
31575
31695
|
// primary-100 dark
|
|
31576
|
-
onContainer: { $value: "#
|
|
31696
|
+
onContainer: { $value: "#f5f4f9", $type: "color" },
|
|
31577
31697
|
outline: { $value: "#3e3c50", $type: "color" },
|
|
31578
31698
|
outlineVariant: { $value: "#2a2839", $type: "color" },
|
|
31579
31699
|
// Primary role pair — dark: onPrimary is midnight, container = deep indigo.
|
|
@@ -31632,23 +31752,11 @@ var shared8 = {
|
|
|
31632
31752
|
$type: "fontFamily"
|
|
31633
31753
|
}
|
|
31634
31754
|
},
|
|
31635
|
-
size: {
|
|
31636
|
-
sm: { $value: "0.875rem", $type: "dimension" },
|
|
31637
|
-
base: { $value: "1rem", $type: "dimension" },
|
|
31638
|
-
lg: { $value: "1.125rem", $type: "dimension" },
|
|
31639
|
-
xl: { $value: "1.25rem", $type: "dimension" },
|
|
31640
|
-
"2xl": { $value: "1.5rem", $type: "dimension" }
|
|
31641
|
-
},
|
|
31642
31755
|
weight: {
|
|
31643
31756
|
normal: { $value: "400", $type: "fontWeight" },
|
|
31644
31757
|
medium: { $value: "500", $type: "fontWeight" },
|
|
31645
31758
|
semibold: { $value: "600", $type: "fontWeight" },
|
|
31646
31759
|
bold: { $value: "700", $type: "fontWeight" }
|
|
31647
|
-
},
|
|
31648
|
-
lineHeight: {
|
|
31649
|
-
tight: { $value: "1.25", $type: "number" },
|
|
31650
|
-
normal: { $value: "1.5", $type: "number" },
|
|
31651
|
-
relaxed: { $value: "1.75", $type: "number" }
|
|
31652
31760
|
}
|
|
31653
31761
|
},
|
|
31654
31762
|
spacing: {
|
|
@@ -31668,20 +31776,6 @@ var shared8 = {
|
|
|
31668
31776
|
// round-3 "borders looking ugly" residual's shadow half), light
|
|
31669
31777
|
// wants classic soft grey.
|
|
31670
31778
|
motion: {
|
|
31671
|
-
duration: {
|
|
31672
|
-
fast: { $value: "120ms", $type: "duration" },
|
|
31673
|
-
normal: { $value: "200ms", $type: "duration" },
|
|
31674
|
-
slow: { $value: "400ms", $type: "duration" },
|
|
31675
|
-
ambient: { $value: "2000ms", $type: "duration" }
|
|
31676
|
-
},
|
|
31677
|
-
easing: {
|
|
31678
|
-
default: { $value: "cubic-bezier(0.4, 0, 0.2, 1)", $type: "cubicBezier" },
|
|
31679
|
-
bounce: {
|
|
31680
|
-
$value: "cubic-bezier(0.68, -0.55, 0.27, 1.55)",
|
|
31681
|
-
$type: "cubicBezier"
|
|
31682
|
-
},
|
|
31683
|
-
spring: { $value: "cubic-bezier(0.22, 1, 0.36, 1)", $type: "cubicBezier" }
|
|
31684
|
-
},
|
|
31685
31779
|
transition: {
|
|
31686
31780
|
fast: { $value: "120ms cubic-bezier(0.4, 0, 0.2, 1)", $type: "transition" },
|
|
31687
31781
|
normal: { $value: "200ms cubic-bezier(0.4, 0, 0.2, 1)", $type: "transition" },
|
|
@@ -31750,7 +31844,6 @@ var guueyBrandDark = {
|
|
|
31750
31844
|
$description: "The guuey product brand (dark) \u2014 slate-ink surfaces, slime #B8FF3A accent, DM Sans.",
|
|
31751
31845
|
$metadata: {
|
|
31752
31846
|
font: "DM Sans",
|
|
31753
|
-
fontUrl: "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap",
|
|
31754
31847
|
philosophy: "Agent-native. Slime on slate.",
|
|
31755
31848
|
// Round 5 (founder-ruled): the guuey host clips the view with its
|
|
31756
31849
|
// own rounded rim — the HOST owns the card silhouette; the theme
|
|
@@ -31840,11 +31933,11 @@ var guueyBrandDark = {
|
|
|
31840
31933
|
"800": { $value: "#BFECFF", $type: "color" }
|
|
31841
31934
|
},
|
|
31842
31935
|
// M3 roles — portal values verbatim.
|
|
31843
|
-
|
|
31844
|
-
|
|
31845
|
-
|
|
31846
|
-
|
|
31847
|
-
container: { $value: "#
|
|
31936
|
+
ground: { $value: "#1A1D24", $type: "color" },
|
|
31937
|
+
onGround: { $value: "#F6F5EE", $type: "color" },
|
|
31938
|
+
sunken: { $value: "#242938", $type: "color" },
|
|
31939
|
+
onSunken: { $value: "#B7BAC4", $type: "color" },
|
|
31940
|
+
container: { $value: "#1A1D24", $type: "color" },
|
|
31848
31941
|
// elevated
|
|
31849
31942
|
onContainer: { $value: "#F6F5EE", $type: "color" },
|
|
31850
31943
|
// Round 4 (portal stops): .14 IS the base hairline; .18 is the
|
|
@@ -31943,11 +32036,11 @@ var guueyBrandLight = {
|
|
|
31943
32036
|
"700": { $value: "#06455D", $type: "color" },
|
|
31944
32037
|
"800": { $value: "#0A3346", $type: "color" }
|
|
31945
32038
|
},
|
|
31946
|
-
|
|
31947
|
-
|
|
31948
|
-
|
|
31949
|
-
|
|
31950
|
-
container: { $value: "#
|
|
32039
|
+
ground: { $value: "#FFFFFF", $type: "color" },
|
|
32040
|
+
onGround: { $value: "#1A1D24", $type: "color" },
|
|
32041
|
+
sunken: { $value: "#F6F5EE", $type: "color" },
|
|
32042
|
+
onSunken: { $value: "#4A4F5C", $type: "color" },
|
|
32043
|
+
container: { $value: "#FFFFFF", $type: "color" },
|
|
31951
32044
|
onContainer: { $value: "#1A1D24", $type: "color" },
|
|
31952
32045
|
outline: { $value: "rgba(26, 29, 36, 0.18)", $type: "color" },
|
|
31953
32046
|
outlineVariant: { $value: "rgba(26, 29, 36, 0.10)", $type: "color" },
|
|
@@ -32091,28 +32184,34 @@ function getScopedThemeCss(themeId, scopeClass, mode = "light") {
|
|
|
32091
32184
|
}
|
|
32092
32185
|
const primary500 = resolvePrimary500Hex(theme9.cssVariables);
|
|
32093
32186
|
const scoped = withColorMixFallback(theme9.cssVariables.replace(/^:root\s*\{/, `.${scopeClass} {`), `.${scopeClass}`, primary500);
|
|
32094
|
-
const baseInherits =
|
|
32095
|
-
font-family: var(--ggui-font-family-sans);
|
|
32096
|
-
color: var(--ggui-color-onSurface);
|
|
32097
|
-
background-color: transparent;
|
|
32098
|
-
}`;
|
|
32187
|
+
const baseInherits = baseInheritsRule(scopeClass);
|
|
32099
32188
|
const gradientTokens = buildGradientTokens(scopeClass, primary500);
|
|
32100
|
-
const framelessRule = theme9.metadata?.frameless === true ?
|
|
32101
|
-
.${scopeClass} > :where(:not(style)) { border: none !important; }` : "";
|
|
32189
|
+
const framelessRule = theme9.metadata?.frameless === true ? framelessSuppressionRule(scopeClass) : "";
|
|
32102
32190
|
return `${scoped}
|
|
32103
32191
|
${baseInherits}
|
|
32104
32192
|
${gradientTokens}
|
|
32105
32193
|
${theme9.cssKeyframes}
|
|
32106
32194
|
${structuralScaffolding(scopeClass)}${framelessRule}`;
|
|
32107
32195
|
}
|
|
32196
|
+
function framelessSuppressionRule(scopeClass) {
|
|
32197
|
+
return `
|
|
32198
|
+
.${scopeClass} > :where(:not(style)) { border: none !important; }`;
|
|
32199
|
+
}
|
|
32108
32200
|
function structuralScaffolding(scopeClass) {
|
|
32109
32201
|
return `.${scopeClass} *, .${scopeClass} *::before, .${scopeClass} *::after { box-sizing: border-box; }
|
|
32110
32202
|
.${scopeClass} h1, .${scopeClass} h2, .${scopeClass} h3, .${scopeClass} h4, .${scopeClass} h5, .${scopeClass} h6, .${scopeClass} button, .${scopeClass} input, .${scopeClass} textarea, .${scopeClass} select { font-family: inherit; }`;
|
|
32111
32203
|
}
|
|
32204
|
+
function baseInheritsRule(scopeClass) {
|
|
32205
|
+
return `.${scopeClass} {
|
|
32206
|
+
font-family: var(--ggui-font-family-sans);
|
|
32207
|
+
color: var(--ggui-color-onGround);
|
|
32208
|
+
background-color: transparent;
|
|
32209
|
+
}`;
|
|
32210
|
+
}
|
|
32112
32211
|
function buildGradientTokens(scopeClass, primary500Hex) {
|
|
32113
32212
|
const selector = `.${scopeClass}`;
|
|
32114
32213
|
const primaryGradient = ` --ggui-color-primary-gradient: linear-gradient(135deg, var(--ggui-color-primary-500) 0%, var(--ggui-color-primary-600) 100%);`;
|
|
32115
|
-
const surfaceGradientModern = ` --ggui-color-
|
|
32214
|
+
const surfaceGradientModern = ` --ggui-color-ground-gradient: linear-gradient(180deg, var(--ggui-color-ground) 0%, color-mix(in srgb, var(--ggui-color-primary-500) 4%, var(--ggui-color-ground)) 100%);`;
|
|
32116
32215
|
const glowModern = ` --ggui-effect-glow-primary: 0 0 0 4px color-mix(in srgb, var(--ggui-color-primary-500) 18%, transparent);`;
|
|
32117
32216
|
const glowStrongModern = ` --ggui-effect-glow-primary-strong: 0 8px 24px -4px color-mix(in srgb, var(--ggui-color-primary-500) 40%, transparent), 0 0 0 1px color-mix(in srgb, var(--ggui-color-primary-500) 30%, transparent) inset;`;
|
|
32118
32217
|
if (!primary500Hex) {
|
|
@@ -32123,7 +32222,7 @@ ${glowModern}
|
|
|
32123
32222
|
${glowStrongModern}
|
|
32124
32223
|
}`;
|
|
32125
32224
|
}
|
|
32126
|
-
const surfaceGradientFallback = ` --ggui-color-
|
|
32225
|
+
const surfaceGradientFallback = ` --ggui-color-ground-gradient: linear-gradient(180deg, var(--ggui-color-ground) 0%, var(--ggui-color-ground) 100%);`;
|
|
32127
32226
|
const glowFallback = ` --ggui-effect-glow-primary: ${precomputePrimaryColorMix("0 0 0 4px color-mix(in srgb, var(--ggui-color-primary-500) 18%, transparent)", primary500Hex)};`;
|
|
32128
32227
|
const glowStrongFallback = ` --ggui-effect-glow-primary-strong: ${precomputePrimaryColorMix("0 8px 24px -4px color-mix(in srgb, var(--ggui-color-primary-500) 40%, transparent), 0 0 0 1px color-mix(in srgb, var(--ggui-color-primary-500) 30%, transparent) inset", primary500Hex)};`;
|
|
32129
32228
|
const baseBlock = `${selector} {
|
|
@@ -32484,6 +32583,20 @@ var ASSET_SHIM_FOR_SPECIFIER = {
|
|
|
32484
32583
|
"@ggui-ai/wire": "wire",
|
|
32485
32584
|
"@ggui-ai/gadgets": "gadgets"
|
|
32486
32585
|
};
|
|
32586
|
+
function findBareImportSpecifiers(code) {
|
|
32587
|
+
const out = /* @__PURE__ */ new Set();
|
|
32588
|
+
const re = /(?:^|[^.\w$])(?:import|from)\s*['"]([^'"]+)['"]/g;
|
|
32589
|
+
let m;
|
|
32590
|
+
while ((m = re.exec(code)) !== null) {
|
|
32591
|
+
const spec = m[1];
|
|
32592
|
+
if (spec === void 0)
|
|
32593
|
+
continue;
|
|
32594
|
+
if (/^(?:[a-z][a-z0-9+.-]*:|\.{0,2}\/)/i.test(spec))
|
|
32595
|
+
continue;
|
|
32596
|
+
out.add(spec);
|
|
32597
|
+
}
|
|
32598
|
+
return [...out];
|
|
32599
|
+
}
|
|
32487
32600
|
function rewriteAssetUrl(code, opts) {
|
|
32488
32601
|
const base = opts.shimBaseUrl.replace(/\/$/, "");
|
|
32489
32602
|
for (const [specifier, shimName] of Object.entries(ASSET_SHIM_FOR_SPECIFIER)) {
|
|
@@ -32498,7 +32611,21 @@ function rewriteImportmap(code, opts) {
|
|
|
32498
32611
|
code = replaceSpecifier(code, "react", base);
|
|
32499
32612
|
return code;
|
|
32500
32613
|
}
|
|
32614
|
+
var FORBIDDEN_IMPORT_SPECIFIERS = ["@ggui-ai/wire/internal"];
|
|
32615
|
+
var ForbiddenImportSpecifierError = class extends Error {
|
|
32616
|
+
specifier;
|
|
32617
|
+
constructor(specifier) {
|
|
32618
|
+
super(`import rewriter: generated component code imported '${specifier}', which is not available to components \u2014 it is the writer side of the wire; components read \`useRender().isConnected\` and never write it`);
|
|
32619
|
+
this.name = "ForbiddenImportSpecifierError";
|
|
32620
|
+
this.specifier = specifier;
|
|
32621
|
+
}
|
|
32622
|
+
};
|
|
32501
32623
|
function rewriteImports(code, options) {
|
|
32624
|
+
const bare = findBareImportSpecifiers(code);
|
|
32625
|
+
for (const specifier of FORBIDDEN_IMPORT_SPECIFIERS) {
|
|
32626
|
+
if (bare.includes(specifier))
|
|
32627
|
+
throw new ForbiddenImportSpecifierError(specifier);
|
|
32628
|
+
}
|
|
32502
32629
|
switch (options.mode) {
|
|
32503
32630
|
case "data-url":
|
|
32504
32631
|
return rewriteDataUrl(code, options);
|
|
@@ -32577,7 +32704,7 @@ var ErrorBoundary = class extends import_react8.default.Component {
|
|
|
32577
32704
|
gap: 8,
|
|
32578
32705
|
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
|
|
32579
32706
|
fontSize: 13,
|
|
32580
|
-
color: "var(--ggui-color-
|
|
32707
|
+
color: "var(--ggui-color-onContainer, inherit)",
|
|
32581
32708
|
opacity: 0.6
|
|
32582
32709
|
}, children: [
|
|
32583
32710
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { style: {
|
|
@@ -32602,7 +32729,7 @@ var ErrorBoundary = class extends import_react8.default.Component {
|
|
|
32602
32729
|
gap: 12,
|
|
32603
32730
|
textAlign: "center",
|
|
32604
32731
|
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
|
|
32605
|
-
color: "var(--ggui-color-
|
|
32732
|
+
color: "var(--ggui-color-onContainer, inherit)"
|
|
32606
32733
|
}, children: [
|
|
32607
32734
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { style: {
|
|
32608
32735
|
width: 48,
|