@happlyui/cli 0.3.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +1951 -702
  2. package/package.json +46 -46
package/dist/index.js CHANGED
@@ -2092,7 +2092,7 @@ var require_clear = __commonJS((exports, module) => {
2092
2092
  if (it)
2093
2093
  o = it;
2094
2094
  var i = 0;
2095
- var F = function F() {};
2095
+ var F = function F2() {};
2096
2096
  return { s: F, n: function n() {
2097
2097
  if (i >= o.length)
2098
2098
  return { done: true };
@@ -4424,7 +4424,7 @@ var require_dist = __commonJS((exports, module) => {
4424
4424
  if (it)
4425
4425
  o = it;
4426
4426
  var i = 0;
4427
- var F = function F() {};
4427
+ var F = function F2() {};
4428
4428
  return { s: F, n: function n() {
4429
4429
  if (i >= o.length)
4430
4430
  return { done: true };
@@ -4527,7 +4527,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
4527
4527
  }
4528
4528
  return question2.format ? yield question2.format(answer2, answers) : answer2;
4529
4529
  });
4530
- return function getFormattedAnswer(_x, _x2) {
4530
+ return function getFormattedAnswer2(_x, _x2) {
4531
4531
  return _ref.apply(this, arguments);
4532
4532
  };
4533
4533
  }();
@@ -13855,7 +13855,7 @@ var require_parent_module = __commonJS((exports, module) => {
13855
13855
 
13856
13856
  // ../../node_modules/.bun/import-fresh@3.3.1/node_modules/import-fresh/index.js
13857
13857
  var require_import_fresh = __commonJS((exports, module) => {
13858
- var __dirname = "/Users/inflex13/Happly/happly-ui/node_modules/.bun/import-fresh@3.3.1/node_modules/import-fresh", __filename = "/Users/inflex13/Happly/happly-ui/node_modules/.bun/import-fresh@3.3.1/node_modules/import-fresh/index.js";
13858
+ var __dirname = "C:\\Happly\\code\\happly-ui-npm\\node_modules\\.bun\\import-fresh@3.3.1\\node_modules\\import-fresh", __filename = "C:\\Happly\\code\\happly-ui-npm\\node_modules\\.bun\\import-fresh@3.3.1\\node_modules\\import-fresh\\index.js";
13859
13859
  var path2 = __require("path");
13860
13860
  var resolveFrom = require_resolve_from();
13861
13861
  var parentModule = require_parent_module();
@@ -13895,7 +13895,7 @@ var require_is_arrayish = __commonJS((exports, module) => {
13895
13895
  var require_error_ex = __commonJS((exports, module) => {
13896
13896
  var util = __require("util");
13897
13897
  var isArrayish = require_is_arrayish();
13898
- var errorEx = function errorEx(name, properties) {
13898
+ var errorEx = function errorEx2(name, properties) {
13899
13899
  if (!name || name.constructor !== String) {
13900
13900
  properties = name || {};
13901
13901
  name = Error.name;
@@ -17393,7 +17393,7 @@ var require_js_yaml = __commonJS((exports, module) => {
17393
17393
 
17394
17394
  // ../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/typescript.js
17395
17395
  var require_typescript = __commonJS((exports, module) => {
17396
- var __dirname = "/Users/inflex13/Happly/happly-ui/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib", __filename = "/Users/inflex13/Happly/happly-ui/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/typescript.js";
17396
+ var __dirname = "C:\\Happly\\code\\happly-ui-npm\\node_modules\\.bun\\typescript@5.9.3\\node_modules\\typescript\\lib", __filename = "C:\\Happly\\code\\happly-ui-npm\\node_modules\\.bun\\typescript@5.9.3\\node_modules\\typescript\\lib\\typescript.js";
17397
17397
  /*! *****************************************************************************
17398
17398
  Copyright (c) Microsoft Corporation. All rights reserved.
17399
17399
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
@@ -186124,14 +186124,14 @@ var require_loaders = __commonJS((exports) => {
186124
186124
  var path_1 = __importDefault(__require("path"));
186125
186125
  var url_1 = __require("url");
186126
186126
  var importFresh;
186127
- var loadJsSync = function loadJsSync(filepath) {
186127
+ var loadJsSync = function loadJsSync2(filepath) {
186128
186128
  if (importFresh === undefined) {
186129
186129
  importFresh = require_import_fresh();
186130
186130
  }
186131
186131
  return importFresh(filepath);
186132
186132
  };
186133
186133
  exports.loadJsSync = loadJsSync;
186134
- var loadJs = async function loadJs(filepath) {
186134
+ var loadJs = async function loadJs2(filepath) {
186135
186135
  try {
186136
186136
  const { href } = (0, url_1.pathToFileURL)(filepath);
186137
186137
  return (await import(href)).default;
@@ -186148,7 +186148,7 @@ var require_loaders = __commonJS((exports) => {
186148
186148
  };
186149
186149
  exports.loadJs = loadJs;
186150
186150
  var parseJson;
186151
- var loadJson = function loadJson(filepath, content) {
186151
+ var loadJson = function loadJson2(filepath, content) {
186152
186152
  if (parseJson === undefined) {
186153
186153
  parseJson = require_parse_json();
186154
186154
  }
@@ -186162,7 +186162,7 @@ ${error.message}`;
186162
186162
  };
186163
186163
  exports.loadJson = loadJson;
186164
186164
  var yaml;
186165
- var loadYaml = function loadYaml(filepath, content) {
186165
+ var loadYaml = function loadYaml2(filepath, content) {
186166
186166
  if (yaml === undefined) {
186167
186167
  yaml = require_js_yaml();
186168
186168
  }
@@ -186176,7 +186176,7 @@ ${error.message}`;
186176
186176
  };
186177
186177
  exports.loadYaml = loadYaml;
186178
186178
  var typescript;
186179
- var loadTsSync = function loadTsSync(filepath, content) {
186179
+ var loadTsSync = function loadTsSync2(filepath, content) {
186180
186180
  if (typescript === undefined) {
186181
186181
  typescript = require_typescript();
186182
186182
  }
@@ -186204,7 +186204,7 @@ ${error.message}`;
186204
186204
  }
186205
186205
  };
186206
186206
  exports.loadTsSync = loadTsSync;
186207
- var loadTs = async function loadTs(filepath, content) {
186207
+ var loadTs = async function loadTs2(filepath, content) {
186208
186208
  if (typescript === undefined) {
186209
186209
  typescript = (await Promise.resolve().then(() => __toESM(require_typescript()))).default;
186210
186210
  }
@@ -186997,7 +186997,7 @@ var require_dist2 = __commonJS((exports) => {
186997
186997
  var Explorer_js_1 = require_Explorer();
186998
186998
  var ExplorerSync_js_1 = require_ExplorerSync();
186999
186999
  var util_1 = require_util3();
187000
- var identity = function identity(x) {
187000
+ var identity = function identity2(x) {
187001
187001
  return x;
187002
187002
  };
187003
187003
  function getUserDefinedOptionsFromMetaConfig() {
@@ -187131,16 +187131,8 @@ var require_dist2 = __commonJS((exports) => {
187131
187131
  });
187132
187132
 
187133
187133
  // src/types/index.ts
187134
- var REGISTRY_URL = "https://raw.githubusercontent.com/Mindful-Connect/happly-ui-npm/production/packages/registry", CONFIG_FILE = "components.json", BASE_COLORS;
187135
- var init_types = __esm(() => {
187136
- BASE_COLORS = [
187137
- "slate",
187138
- "gray",
187139
- "zinc",
187140
- "neutral",
187141
- "stone"
187142
- ];
187143
- });
187134
+ var REGISTRY_URL = "https://raw.githubusercontent.com/Mindful-Connect/happly-ui-npm/production/packages/registry", CONFIG_FILE = "happly-ui-components.json";
187135
+ var init_types = () => {};
187144
187136
 
187145
187137
  // src/utils/config.ts
187146
187138
  var exports_config = {};
@@ -187205,7 +187197,9 @@ function getComponentPath(componentName, componentType, config, fileName) {
187205
187197
  case "registry:hook":
187206
187198
  return path2.join(srcPrefix + (config.aliases.hooks || "@/hooks").replace("@/", ""), finalFileName);
187207
187199
  case "registry:lib":
187208
- return path2.join(srcPrefix + (config.aliases.lib || "@/lib").replace("@/", ""), finalFileName);
187200
+ return path2.join(srcPrefix + (config.aliases.lib || "@/lib").replace("@/", ""), "happly-ui", finalFileName);
187201
+ case "registry:style":
187202
+ return path2.join(srcPrefix + config.aliases.ui.replace("@/", ""), "styles", finalFileName);
187209
187203
  default:
187210
187204
  return path2.join(srcPrefix + config.aliases.ui.replace("@/", ""), finalFileName);
187211
187205
  }
@@ -187247,7 +187241,7 @@ function getRegistryUrl(config) {
187247
187241
  return config?.registry || REGISTRY_URL;
187248
187242
  }
187249
187243
  function isLocalRegistry(registry) {
187250
- return registry.startsWith("/") || registry.startsWith("./") || registry.startsWith("file://");
187244
+ return registry.startsWith("/") || registry.startsWith("./") || registry.startsWith("file://") || /^[a-zA-Z]:[\\/]/.test(registry);
187251
187245
  }
187252
187246
  async function fetchOrRead(url) {
187253
187247
  if (isLocalRegistry(url)) {
@@ -188793,6 +188787,8 @@ async function detectTailwindCss(cwd) {
188793
188787
  "src/globals.css",
188794
188788
  "src/app/globals.css",
188795
188789
  "app/globals.css",
188790
+ "src/app/[locale]/globals.css",
188791
+ "app/[locale]/globals.css",
188796
188792
  "styles/globals.css",
188797
188793
  "src/styles/globals.css"
188798
188794
  ];
@@ -189161,69 +189157,47 @@ var shadows = {
189161
189157
  "regular-xs": "0 1px 2px 0 #0a0d1408",
189162
189158
  "regular-sm": "0 2px 4px #1b1c1d0a",
189163
189159
  "regular-md": "0 16px 32px -12px #0e121b1a",
189164
- "regular-deep": "0 0 0 1px rgba(14, 18, 27, 0.04), 0 1px 1px 0.5px rgba(14, 18, 27, 0.04), 0 3px 3px -1.5px rgba(14, 18, 27, 0.02), 0 6px 6px -3px rgba(14, 18, 27, 0.04), 0 12px 12px -6px rgba(14, 18, 27, 0.04), 0 24px 24px -12px rgba(14, 18, 27, 0.04), 0 48px 48px -24px rgba(14, 18, 27, 0.04), 0 -1px 1px -0.5px rgba(14, 18, 27, 0.06) inset",
189165
- "toggle-switch": "0 6px 10px 0 rgba(14, 18, 27, 0.06), 0 2px 4px 0 rgba(14, 18, 27, 0.03)",
189166
- "fancy-buttons-stroke": "0 1px 3px 0 rgba(14, 18, 27, 0.12), 0 0 0 1px var(--stroke-soft-200, #E1E4EA)",
189167
- "button-primary-focus": [
189168
- '0 0 0 2px theme("colors.ds.white-0")',
189169
- '0 0 0 4px theme("colors.ds.primary-alpha-10")'
189170
- ].join(", "),
189171
- "button-important-focus": [
189172
- '0 0 0 2px theme("colors.ds.white-0")',
189173
- '0 0 0 4px theme("colors.ds.alpha.neutral[16]")'
189174
- ].join(", "),
189175
- "button-error-focus": [
189176
- '0 0 0 2px theme("colors.ds.white-0")',
189177
- '0 0 0 4px theme("colors.ds.error-alpha-10")'
189178
- ].join(", ")
189160
+ "button-primary-focus": "0 0 0 2px var(--color-bg-white-0), 0 0 0 4px var(--color-primary-alpha-10)",
189161
+ "button-important-focus": "0 0 0 2px var(--color-bg-white-0), 0 0 0 4px var(--color-neutral-alpha-16)",
189162
+ "button-error-focus": "0 0 0 2px var(--color-bg-white-0), 0 0 0 4px var(--color-red-alpha-10)",
189163
+ "button-warning-focus": "0 0 0 2px var(--color-bg-white-0), 0 0 0 4px var(--color-orange-alpha-10)",
189164
+ "button-success-focus": "0 0 0 2px var(--color-bg-white-0), 0 0 0 4px var(--color-green-alpha-10)",
189165
+ "fancy-buttons-neutral": "0 1px 2px 0 #1b1c1d7a, 0 0 0 1px #242628",
189166
+ "fancy-buttons-primary": "0 1px 2px 0 #0e121b3d, 0 0 0 1px var(--color-primary-base)",
189167
+ "fancy-buttons-error": "0 1px 2px 0 #0e121b3d, 0 0 0 1px var(--color-error-base)",
189168
+ "fancy-buttons-stroke": "0 1px 3px 0 #0e121b1f, 0 0 0 1px var(--color-stroke-soft-200)",
189169
+ "toggle-switch": "0 6px 10px 0 #0e121b0f, 0 2px 4px 0 #0e121b08",
189170
+ "switch-thumb": "0 4px 8px 0 #1b1c1d0f, 0 2px 4px 0 #0e121b14",
189171
+ tooltip: "0 12px 24px 0 #0e121b0f, 0 1px 2px 0 #0e121b08",
189172
+ "custom-xs": "0 0 0 1px rgba(51, 51, 51, 0.04), 0 4px 8px -2px rgba(51, 51, 51, 0.06), 0 2px 4px rgba(51, 51, 51, 0.04), 0 1px 2px rgba(51, 51, 51, 0.04), inset 0 -1px 1px -0.5px rgba(51, 51, 51, 0.06)",
189173
+ "custom-sm": "0 0 0 1px rgba(51, 51, 51, 0.04), 0 16px 8px -8px rgba(51, 51, 51, 0.01), 0 12px 6px -6px rgba(51, 51, 51, 0.02), 0 5px 5px -2.5px rgba(51, 51, 51, 0.08), 0 1px 3px -1.5px rgba(51, 51, 51, 0.16), inset 0 -0.5px 0.5px rgba(51, 51, 51, 0.08)",
189174
+ "custom-md": "0 0 0 1px rgba(51, 51, 51, 0.04), 0 1px 1px 0.5px rgba(51, 51, 51, 0.04), 0 3px 3px -1.5px rgba(51, 51, 51, 0.02), 0 6px 6px -3px rgba(51, 51, 51, 0.04), 0 12px 12px -6px rgba(51, 51, 51, 0.04), 0 24px 24px -12px rgba(51, 51, 51, 0.04), 0 48px 48px -24px rgba(51, 51, 51, 0.04), inset 0 -1px 1px -0.5px rgba(51, 51, 51, 0.06)",
189175
+ "custom-lg": "0 0 0 1px rgba(51, 51, 51, 0.04), 0 1px 1px 0.5px rgba(51, 51, 51, 0.04), 0 3px 3px -1.5px rgba(51, 51, 51, 0.02), 0 6px 6px -3px rgba(51, 51, 51, 0.04), 0 12px 12px -6px rgba(51, 51, 51, 0.04), 0 24px 24px -12px rgba(51, 51, 51, 0.04), 0 48px 48px -24px rgba(51, 51, 51, 0.04), 0 96px 96px -32px rgba(51, 51, 51, 0.06), inset 0 -1px 1px -0.5px rgba(51, 51, 51, 0.06)",
189176
+ "complex-12": "0 80px 80px -40px rgba(23, 23, 23, 0.04), 0 48px 48px -24px rgba(23, 23, 23, 0.04)",
189177
+ complex: "0 20px 20px -10px rgba(23, 23, 23, 0.04), 0 10px 10px -5px rgba(23, 23, 23, 0.04), 0 6px 6px -3px rgba(23, 23, 23, 0.04), 0 3px 3px -1.5px rgba(23, 23, 23, 0.04), 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.08), 0 -1px 1px -0.5px rgba(23, 23, 23, 0.06) inset",
189178
+ "complex-2": "0 10px 10px -5px rgba(23, 23, 23, 0.02), 0 6px 6px -3px rgba(23, 23, 23, 0.04), 0 3px 3px -1.5px rgba(23, 23, 23, 0.04), 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.02)",
189179
+ "complex-4": "0 3px 3px -1.5px rgba(23, 23, 23, 0.04), 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.02)",
189180
+ "complex-5": "0 0 6px 0 rgba(255, 255, 255, 0.24) inset, 0 40px 40px -20px rgba(23, 23, 23, 0.06), 0 10px 10px -5px rgba(23, 23, 23, 0.06), 0 6px 6px -3px rgba(23, 23, 23, 0.04), 0 3px 3px -1.5px rgba(23, 23, 23, 0.04), 0 1px 1px -0.5px rgba(23, 23, 23, 0.04)",
189181
+ "complex-6": "0 40px 40px -20px rgba(23, 23, 23, 0.06), 0 10px 10px -5px rgba(23, 23, 23, 0.06), 0 6px 6px -3px rgba(23, 23, 23, 0.04), 0 3px 3px -1.5px rgba(23, 23, 23, 0.04), 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 6px 0 rgba(255, 255, 255, 0.24) inset",
189182
+ "complex-7": "0 1px 2px 0 rgba(14, 18, 27, 0.24), 0 0 0 1px #335cff",
189183
+ "complex-8": "0 20px 20px -10px rgba(23, 23, 23, 0), 0 10px 10px -5px rgba(23, 23, 23, 0), 0 6px 6px -3px rgba(23, 23, 23, 0), 0 3px 3px -1.5px rgba(23, 23, 23, 0), 0 1px 1px -0.5px rgba(23, 23, 23, 0), 0 0 0 1px rgba(23, 23, 23, 0.08), 0 -1px 1px -0.5px rgba(23, 23, 23, 0.06) inset",
189184
+ "complex-9": "0 80px 40px -20px rgba(23, 23, 23, 0.06), 0 40px 40px -20px rgba(23, 23, 23, 0.06), 0 10px 10px -5px rgba(23, 23, 23, 0.06), 0 6px 6px -3px rgba(23, 23, 23, 0.04), 0 3px 3px -1.5px rgba(23, 23, 23, 0.04), 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 6px 0 rgba(255, 255, 255, 0.04) inset",
189185
+ "complex-10": "0 3px 3px -1.5px rgba(23, 23, 23, 0.04), 0 1px 1px -0.5px rgba(23, 23, 23, 0.04)",
189186
+ "complex-11": "0 -1px 1px -0.5px rgba(23, 23, 23, 0.06) inset, 0 20px 20px -10px rgba(23, 23, 23, 0.04), 0 10px 10px -5px rgba(23, 23, 23, 0.04), 0 6px 6px -3px rgba(23, 23, 23, 0.04), 0 3px 3px -1.5px rgba(23, 23, 23, 0.04), 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.04)",
189187
+ "custom-input": "0 3px 3px -1.5px rgba(23, 23, 23, 0.04), 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.08)",
189188
+ "custom-input-2": "0 3px 3px -1.5px rgba(23, 23, 23, 0.04), 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px var(--color-bg-soft-200)",
189189
+ "custom-input-4": "0 3px 3px -1.5px rgba(23, 23, 23, 0.06), 0 1px 1px -0.5px rgba(23, 23, 23, 0.06), 0 0 0 1px rgba(23, 23, 23, 0.02)",
189190
+ "custom-input-active": "0 6px 6px -3px rgba(23, 23, 23, 0.02), 0 3px 3px -1.5px rgba(23, 23, 23, 0.04), 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1.4px #335cff",
189191
+ "gray-shadow": "0 0 0 1px rgba(23, 23, 23, 0.08)"
189179
189192
  };
189180
189193
  var borderRadii = {
189181
- lg: "var(--radius)",
189182
- md: "calc(var(--radius) - 2px)",
189183
- sm: "calc(var(--radius) - 4px)",
189184
189194
  "8": "0.5rem",
189185
- "10": ".625rem",
189195
+ "10": "0.625rem",
189186
189196
  "12": "0.75rem",
189187
189197
  "16": "1rem",
189188
189198
  "20": "1.25rem"
189189
189199
  };
189190
189200
  var colors = {
189191
- primaryColor: "rgb(var(--primary-color-rgb) / <alpha-value>)",
189192
- primaryColorText: "var(--primary-color-text)",
189193
- secondaryColor: "var(--secondary-color)",
189194
- secondaryColorText: "var(--secondary-color-text)",
189195
- primaryBase: "#335CFF",
189196
- turquoise: "#2aceb6",
189197
- glitter: "#e4e9fe",
189198
- clarity: {
189199
- "0.1": "#484854",
189200
- 0: "#575759",
189201
- 1: "#7F7F82",
189202
- 2: "#95A0BC",
189203
- 3: "#B1B1C4",
189204
- "3.5": "#CFCFD4",
189205
- "3.75": "#D9D9E2",
189206
- 4: "#E6E6EC",
189207
- 5: "#F9FAFB",
189208
- black: "#2f2f30",
189209
- blue: {
189210
- 0: "#595782",
189211
- 25: "#F8F9FF",
189212
- 40: "#E6E6EC",
189213
- 50: "#E6ECFF"
189214
- },
189215
- bg: "#f5f6ff",
189216
- bg2: "#F7F7FC",
189217
- cyan: "#13B6E7",
189218
- gray: "#9292A1",
189219
- verified: "#1393E7",
189220
- green: "#2AAF3C",
189221
- pink: "#DD438E",
189222
- purple: "#4A4DEE",
189223
- red: "#FF472E",
189224
- yellow: "#E9A91E",
189225
- orange: "#FF8447"
189226
- },
189227
189201
  ds: {
189228
189202
  "static-black": "var(--color-static-black)",
189229
189203
  "static-white": "var(--color-static-white)",
@@ -189258,9 +189232,11 @@ var colors = {
189258
189232
  "information-light": "var(--color-information-light)",
189259
189233
  "information-lighter": "var(--color-information-lighter)",
189260
189234
  "warning-dark": "var(--color-warning-dark)",
189235
+ "warning-darker": "var(--color-warning-darker)",
189261
189236
  "warning-base": "var(--color-warning-base)",
189262
189237
  "warning-light": "var(--color-warning-light)",
189263
189238
  "warning-lighter": "var(--color-warning-lighter)",
189239
+ "warning-alpha-10": "var(--color-warning-alpha-10)",
189264
189240
  "error-darker": "var(--color-error-darker)",
189265
189241
  "error-dark": "var(--color-error-dark)",
189266
189242
  "error-base": "var(--color-error-base)",
@@ -189268,9 +189244,11 @@ var colors = {
189268
189244
  "error-lighter": "var(--color-error-lighter)",
189269
189245
  "error-alpha-10": "var(--color-error-alpha-10)",
189270
189246
  "success-dark": "var(--color-success-dark)",
189247
+ "success-darker": "var(--color-success-darker)",
189271
189248
  "success-base": "var(--color-success-base)",
189272
189249
  "success-light": "var(--color-success-light)",
189273
189250
  "success-lighter": "var(--color-success-lighter)",
189251
+ "success-alpha-10": "var(--color-success-alpha-10)",
189274
189252
  "away-dark": "var(--color-away-dark)",
189275
189253
  "away-base": "var(--color-away-base)",
189276
189254
  "away-light": "var(--color-away-light)",
@@ -189305,317 +189283,361 @@ var colors = {
189305
189283
  950: "var(--color-primary-950)"
189306
189284
  },
189307
189285
  neutral: {
189308
- 0: "#FFFFFF",
189309
- 50: "#F5F7FA",
189310
- 100: "#F2F5F8",
189311
- 200: "#E1E4EA",
189312
- 300: "#CACFD8",
189313
- 400: "#99A0AE",
189314
- 500: "#717784",
189315
- 600: "#525866",
189316
- 700: "#2B303B",
189317
- 800: "#222530",
189318
- 900: "#181B25",
189319
- 950: "#0E121B"
189320
- },
189321
- blue: {
189322
- 50: "#EBF1FF",
189323
- 100: "#D5E2FF",
189324
- 200: "#C0D5FF",
189325
- 300: "#97BAFF",
189326
- 400: "#6895FF",
189327
- 500: "#335CFF",
189328
- 600: "#3559E9",
189329
- 700: "#2547D0",
189330
- 800: "#1F3BAD",
189331
- 900: "#182F8B",
189332
- 950: "#122368"
189333
- },
189334
- orange: {
189335
- 50: "#FFF3EB",
189336
- 100: "#FFE6D5",
189337
- 200: "#FFD9C0",
189338
- 300: "#FFC197",
189339
- 400: "#FFA468",
189340
- 500: "#FF9147",
189341
- 600: "#E97D35",
189342
- 700: "#D06925",
189343
- 800: "#AD581F",
189344
- 900: "#8B4618",
189345
- 950: "#683412"
189346
- },
189347
- red: {
189348
- 50: "#FFEBEC",
189349
- 100: "#FFD5D8",
189350
- 200: "#FFC0C5",
189351
- 300: "#FF97A0",
189352
- 400: "#FF6875",
189353
- 500: "#FB3748",
189354
- 600: "#E93544",
189355
- 700: "#D02533",
189356
- 800: "#AD1F2B",
189357
- 900: "#8B1822",
189358
- 950: "#681219"
189359
- },
189360
- green: {
189361
- 50: "#E0FAEC",
189362
- 100: "#D0FBE9",
189363
- 200: "#C2F5DA",
189364
- 300: "#84EBB4",
189365
- 400: "#3EE089",
189366
- 500: "#1FC16B",
189367
- 600: "#1DAF61",
189368
- 700: "#178C4E",
189369
- 800: "#1A7544",
189370
- 900: "#16643B",
189371
- 950: "#0B4627"
189372
- },
189373
- yellow: {
189374
- 50: "#FFF4D6",
189375
- 100: "#FFEFCC",
189376
- 200: "#FFECC0",
189377
- 300: "#FFE097",
189378
- 400: "#FFD268",
189379
- 500: "#F6B51E",
189380
- 600: "#E6A819",
189381
- 700: "#C99A2C",
189382
- 800: "#A78025",
189383
- 900: "#86661D",
189384
- 950: "#624C18"
189385
- },
189386
- purple: {
189387
- 50: "#EFEBFF",
189388
- 100: "#DCD5FF",
189389
- 200: "#CAC0FF",
189390
- 300: "#A897FF",
189391
- 400: "#8C71F6",
189392
- 500: "#7D52F4",
189393
- 600: "#693EE0",
189394
- 700: "#5B2CC9",
189395
- 800: "#4C25A7",
189396
- 900: "#3D1D86",
189397
- 950: "#351A75"
189398
- },
189399
- sky: {
189400
- 50: "#EBF8FF",
189401
- 100: "#D5F1FF",
189402
- 200: "#C0EAFF",
189403
- 300: "#97DCFF",
189404
- 400: "#68CDFF",
189405
- 500: "#47C2FF",
189406
- 600: "#35ADE9",
189407
- 700: "#2597D0",
189408
- 800: "#1F7EAD",
189409
- 900: "#18658B",
189410
- 950: "#124B68"
189411
- },
189412
- pink: {
189413
- 50: "#FFEBF4",
189414
- 100: "#FFD5EA",
189415
- 200: "#FFC0DF",
189416
- 300: "#FF97CB",
189417
- 400: "#FF68B3",
189418
- 500: "#FB4BA3",
189419
- 600: "#E9358F",
189420
- 700: "#D0257A",
189421
- 800: "#AD1F66",
189422
- 900: "#8B1852",
189423
- 950: "#68123D"
189424
- },
189425
- teal: {
189426
- 50: "#E4FBF8",
189427
- 100: "#D0FBF5",
189428
- 200: "#C2F5EE",
189429
- 300: "#84EBDD",
189430
- 400: "#3FDEC9",
189431
- 500: "#22D3BB",
189432
- 600: "#1DAF9C",
189433
- 700: "#178C7D",
189434
- 800: "#1A7569",
189435
- 900: "#16645A",
189436
- 950: "#0B463E"
189286
+ 0: "var(--color-neutral-0)",
189287
+ 50: "var(--color-neutral-50)",
189288
+ 100: "var(--color-neutral-100)",
189289
+ 200: "var(--color-neutral-200)",
189290
+ 300: "var(--color-neutral-300)",
189291
+ 400: "var(--color-neutral-400)",
189292
+ 500: "var(--color-neutral-500)",
189293
+ 600: "var(--color-neutral-600)",
189294
+ 700: "var(--color-neutral-700)",
189295
+ 800: "var(--color-neutral-800)",
189296
+ 900: "var(--color-neutral-900)",
189297
+ 950: "var(--color-neutral-950)"
189437
189298
  },
189438
189299
  alpha: {
189439
189300
  neutral: {
189440
- 24: "rgba(153, 160, 174, 0.24)",
189441
- 16: "rgba(153, 160, 174, 0.16)",
189442
- 10: "rgba(153, 160, 174, 0.10)"
189301
+ 24: "var(--color-neutral-alpha-24)",
189302
+ 16: "var(--color-neutral-alpha-16)",
189303
+ 10: "var(--color-neutral-alpha-10)"
189443
189304
  },
189444
189305
  blue: {
189445
- 24: "rgba(71, 108, 255, 0.24)",
189446
- 16: "rgba(71, 108, 255, 0.16)",
189447
- 10: "rgba(71, 108, 255, 0.10)"
189306
+ 24: "var(--color-blue-alpha-24)",
189307
+ 16: "var(--color-blue-alpha-16)",
189308
+ 10: "var(--color-blue-alpha-10)"
189448
189309
  },
189449
189310
  orange: {
189450
- 24: "rgba(255, 145, 71, 0.24)",
189451
- 16: "rgba(255, 145, 71, 0.16)",
189452
- 10: "rgba(255, 145, 71, 0.10)"
189311
+ 24: "var(--color-orange-alpha-24)",
189312
+ 16: "var(--color-orange-alpha-16)",
189313
+ 10: "var(--color-orange-alpha-10)"
189453
189314
  },
189454
189315
  red: {
189455
- 24: "rgba(251, 55, 72, 0.24)",
189456
- 16: "rgba(251, 55, 72, 0.16)",
189457
- 10: "rgba(251, 55, 72, 0.10)"
189316
+ 24: "var(--color-red-alpha-24)",
189317
+ 16: "var(--color-red-alpha-16)",
189318
+ 10: "var(--color-red-alpha-10)"
189458
189319
  },
189459
189320
  green: {
189460
- 24: "rgba(31, 193, 107, 0.24)",
189461
- 16: "rgba(31, 193, 107, 0.16)",
189462
- 10: "rgba(31, 193, 107, 0.10)"
189321
+ 24: "var(--color-green-alpha-24)",
189322
+ 16: "var(--color-green-alpha-16)",
189323
+ 10: "var(--color-green-alpha-10)"
189463
189324
  },
189464
189325
  yellow: {
189465
- 24: "rgba(251, 198, 75, 0.24)",
189466
- 16: "rgba(251, 198, 75, 0.16)",
189467
- 10: "rgba(251, 198, 75, 0.10)"
189326
+ 24: "var(--color-yellow-alpha-24)",
189327
+ 16: "var(--color-yellow-alpha-16)",
189328
+ 10: "var(--color-yellow-alpha-10)"
189468
189329
  },
189469
189330
  purple: {
189470
- 24: "rgba(120, 77, 239, 0.24)",
189471
- 16: "rgba(120, 77, 239, 0.16)",
189472
- 10: "rgba(120, 77, 239, 0.10)"
189331
+ 24: "var(--color-purple-alpha-24)",
189332
+ 16: "var(--color-purple-alpha-16)",
189333
+ 10: "var(--color-purple-alpha-10)"
189473
189334
  },
189474
189335
  sky: {
189475
- 24: "rgba(71, 194, 255, 0.24)",
189476
- 16: "rgba(71, 194, 255, 0.16)",
189477
- 10: "rgba(71, 194, 255, 0.10)"
189336
+ 24: "var(--color-sky-alpha-24)",
189337
+ 16: "var(--color-sky-alpha-16)",
189338
+ 10: "var(--color-sky-alpha-10)"
189478
189339
  },
189479
189340
  pink: {
189480
- 24: "rgba(251, 75, 163, 0.24)",
189481
- 16: "rgba(251, 75, 163, 0.16)",
189482
- 10: "rgba(251, 75, 163, 0.10)"
189341
+ 24: "var(--color-pink-alpha-24)",
189342
+ 16: "var(--color-pink-alpha-16)",
189343
+ 10: "var(--color-pink-alpha-10)"
189483
189344
  },
189484
189345
  teal: {
189485
- 24: "rgba(34, 211, 187, 0.24)",
189486
- 16: "rgba(34, 211, 187, 0.16)",
189487
- 10: "rgba(34, 211, 187, 0.10)"
189346
+ 24: "var(--color-teal-alpha-24)",
189347
+ 16: "var(--color-teal-alpha-16)",
189348
+ 10: "var(--color-teal-alpha-10)"
189488
189349
  },
189489
189350
  black: {
189490
- 24: "rgba(0, 0, 0, 0.24)",
189491
- 16: "rgba(0, 0, 0, 0.16)",
189492
- 10: "rgba(0, 0, 0, 0.10)"
189351
+ 24: "var(--color-black-alpha-24)",
189352
+ 16: "var(--color-black-alpha-16)",
189353
+ 10: "var(--color-black-alpha-10)"
189493
189354
  }
189494
189355
  },
189495
189356
  white: {
189496
- 16: "rgba(255, 255, 255, 0.16)"
189357
+ 24: "var(--color-white-alpha-24)",
189358
+ 16: "var(--color-white-alpha-16)",
189359
+ 10: "var(--color-white-alpha-10)"
189497
189360
  }
189498
189361
  },
189499
- overlay: {
189500
- DEFAULT: "rgb(var(--color-overlay))"
189501
- }
189502
- };
189503
- var semanticMappings = {
189504
- "static-black": "#171717",
189505
- "static-white": "var(--color-neutral-0)",
189506
- "text-strong-950": "var(--color-neutral-950)",
189507
- "text-sub-600": "var(--color-neutral-600)",
189508
- "text-soft-400": "var(--color-neutral-400)",
189509
- "text-disabled-300": "var(--color-neutral-300)",
189510
- "text-white-0": "var(--color-neutral-0)",
189511
- overlay: "0 0 0 / 0.75",
189512
- "bg-strong-950": "var(--color-neutral-950)",
189513
- "bg-surface-800": "var(--color-neutral-800)",
189514
- "bg-sub-300": "var(--color-neutral-300)",
189515
- "bg-soft-200": "var(--color-neutral-200)",
189516
- "bg-weak-50": "var(--color-neutral-50)",
189517
- "bg-white-0": "var(--color-neutral-0)",
189518
- "stroke-strong-950": "var(--color-neutral-950)",
189519
- "stroke-sub-300": "var(--color-neutral-300)",
189520
- "stroke-soft-200": "var(--color-neutral-200)",
189521
- "stroke-white-0": "var(--color-neutral-0)",
189522
- "primary-darker": "var(--color-blue-800)",
189523
- "primary-dark": "var(--color-blue-700)",
189524
- "primary-base": "var(--color-blue-500)",
189525
- "primary-light": "var(--color-blue-200)",
189526
- "primary-lighter": "var(--color-blue-100)",
189527
- "primary-alpha-24": "var(--color-blue-alpha-24)",
189528
- "primary-alpha-20": "var(--color-blue-alpha-20)",
189529
- "primary-alpha-16": "var(--color-blue-alpha-16)",
189530
- "primary-alpha-10": "var(--color-blue-alpha-10)",
189531
- "primary-50": "var(--color-blue-50)",
189532
- "primary-100": "var(--color-blue-100)",
189533
- "primary-200": "var(--color-blue-200)",
189534
- "primary-300": "var(--color-blue-300)",
189535
- "primary-400": "var(--color-blue-400)",
189536
- "primary-500": "var(--color-blue-500)",
189537
- "primary-600": "var(--color-blue-600)",
189538
- "primary-700": "var(--color-blue-700)",
189539
- "primary-800": "var(--color-blue-800)",
189540
- "primary-900": "var(--color-blue-900)",
189541
- "primary-950": "var(--color-blue-950)",
189542
- "faded-dark": "var(--color-neutral-800)",
189543
- "faded-base": "var(--color-neutral-500)",
189544
- "faded-light": "var(--color-neutral-200)",
189545
- "faded-lighter": "var(--color-neutral-100)",
189546
- "information-dark": "var(--color-blue-950)",
189547
- "information-base": "var(--color-blue-500)",
189548
- "information-light": "var(--color-blue-200)",
189549
- "information-lighter": "var(--color-blue-50)",
189550
- "warning-dark": "var(--color-yellow-950)",
189551
- "warning-base": "var(--color-yellow-500)",
189552
- "warning-light": "var(--color-yellow-200)",
189553
- "warning-lighter": "var(--color-yellow-50)",
189554
- "error-darker": "var(--color-red-950)",
189555
- "error-dark": "var(--color-red-700)",
189556
- "error-base": "var(--color-red-500)",
189557
- "error-light": "var(--color-red-200)",
189558
- "error-lighter": "var(--color-red-50)",
189559
- "error-alpha-10": "var(--color-red-alpha-10)",
189560
- "success-dark": "var(--color-green-950)",
189561
- "success-base": "var(--color-green-500)",
189562
- "success-light": "var(--color-green-200)",
189563
- "success-lighter": "var(--color-green-50)",
189564
- "away-dark": "var(--color-yellow-950)",
189565
- "away-base": "var(--color-yellow-500)",
189566
- "away-light": "var(--color-yellow-200)",
189567
- "away-lighter": "var(--color-yellow-50)",
189568
- "feature-dark": "var(--color-purple-950)",
189569
- "feature-base": "var(--color-purple-500)",
189570
- "feature-light": "var(--color-purple-200)",
189571
- "feature-lighter": "var(--color-purple-50)",
189572
- "verified-dark": "var(--color-sky-950)",
189573
- "verified-base": "var(--color-sky-500)",
189574
- "verified-light": "var(--color-sky-200)",
189575
- "verified-lighter": "var(--color-sky-50)",
189576
- "highlighted-dark": "var(--color-pink-950)",
189577
- "highlighted-base": "var(--color-pink-500)",
189578
- "highlighted-light": "var(--color-pink-200)",
189579
- "highlighted-lighter": "var(--color-pink-50)",
189580
- "stable-dark": "var(--color-teal-950)",
189581
- "stable-base": "var(--color-teal-500)",
189582
- "stable-light": "var(--color-teal-200)",
189583
- "stable-lighter": "var(--color-teal-50)"
189584
- };
189585
- var baseSemanticColors = {
189586
- background: "hsl(var(--background))",
189587
- foreground: "hsl(var(--foreground))",
189588
- card: {
189589
- DEFAULT: "hsl(var(--card))",
189590
- foreground: "hsl(var(--card-foreground))"
189362
+ bg: {
189363
+ "strong-950": "var(--color-bg-strong-950)",
189364
+ "surface-800": "var(--color-bg-surface-800)",
189365
+ "sub-300": "var(--color-bg-sub-300)",
189366
+ "soft-200": "var(--color-bg-soft-200)",
189367
+ "soft-600": "var(--color-bg-soft-600)",
189368
+ "weak-50": "var(--color-bg-weak-50)",
189369
+ "weak-25": "var(--color-bg-weak-25)",
189370
+ "white-0": "var(--color-bg-white-0)"
189371
+ },
189372
+ text: {
189373
+ "strong-950": "var(--color-text-strong-950)",
189374
+ "sub-600": "var(--color-text-sub-600)",
189375
+ "soft-400": "var(--color-text-soft-400)",
189376
+ "disabled-300": "var(--color-text-disabled-300)",
189377
+ "white-0": "var(--color-text-white-0)"
189378
+ },
189379
+ stroke: {
189380
+ "strong-950": "var(--color-stroke-strong-950)",
189381
+ "sub-300": "var(--color-stroke-sub-300)",
189382
+ "soft-200": "var(--color-stroke-soft-200)",
189383
+ "white-0": "var(--color-stroke-white-0)"
189591
189384
  },
189592
- popover: {
189593
- DEFAULT: "hsl(var(--popover))",
189594
- foreground: "hsl(var(--popover-foreground))"
189385
+ static: {
189386
+ black: "var(--color-static-black)",
189387
+ white: "var(--color-static-white)"
189595
189388
  },
189596
189389
  primary: {
189597
- DEFAULT: "hsl(var(--primary))",
189598
- foreground: "hsl(var(--primary-foreground))"
189390
+ 50: "var(--color-primary-50)",
189391
+ 100: "var(--color-primary-100)",
189392
+ 200: "var(--color-primary-200)",
189393
+ 300: "var(--color-primary-300)",
189394
+ 400: "var(--color-primary-400)",
189395
+ 500: "var(--color-primary-500)",
189396
+ 600: "var(--color-primary-600)",
189397
+ 700: "var(--color-primary-700)",
189398
+ 800: "var(--color-primary-800)",
189399
+ 900: "var(--color-primary-900)",
189400
+ 950: "var(--color-primary-950)",
189401
+ darker: "var(--color-primary-darker)",
189402
+ dark: "var(--color-primary-dark)",
189403
+ base: "var(--color-primary-base)",
189404
+ light: "var(--color-primary-light)",
189405
+ lighter: "var(--color-primary-lighter)",
189406
+ "alpha-24": "var(--color-primary-alpha-24)",
189407
+ "alpha-20": "var(--color-primary-alpha-20)",
189408
+ "alpha-16": "var(--color-primary-alpha-16)",
189409
+ "alpha-10": "var(--color-primary-alpha-10)"
189410
+ },
189411
+ faded: {
189412
+ dark: "var(--color-faded-dark)",
189413
+ base: "var(--color-faded-base)",
189414
+ light: "var(--color-faded-light)",
189415
+ lighter: "var(--color-faded-lighter)"
189416
+ },
189417
+ information: {
189418
+ dark: "var(--color-information-dark)",
189419
+ base: "var(--color-information-base)",
189420
+ light: "var(--color-information-light)",
189421
+ lighter: "var(--color-information-lighter)"
189422
+ },
189423
+ warning: {
189424
+ darker: "var(--color-warning-darker)",
189425
+ dark: "var(--color-warning-dark)",
189426
+ base: "var(--color-warning-base)",
189427
+ light: "var(--color-warning-light)",
189428
+ lighter: "var(--color-warning-lighter)",
189429
+ "alpha-10": "var(--color-warning-alpha-10)"
189430
+ },
189431
+ error: {
189432
+ darker: "var(--color-error-darker)",
189433
+ dark: "var(--color-error-dark)",
189434
+ base: "var(--color-error-base)",
189435
+ light: "var(--color-error-light)",
189436
+ lighter: "var(--color-error-lighter)",
189437
+ "alpha-10": "var(--color-error-alpha-10)"
189438
+ },
189439
+ success: {
189440
+ darker: "var(--color-success-darker)",
189441
+ dark: "var(--color-success-dark)",
189442
+ base: "var(--color-success-base)",
189443
+ light: "var(--color-success-light)",
189444
+ lighter: "var(--color-success-lighter)",
189445
+ "alpha-10": "var(--color-success-alpha-10)"
189446
+ },
189447
+ away: {
189448
+ dark: "var(--color-away-dark)",
189449
+ base: "var(--color-away-base)",
189450
+ light: "var(--color-away-light)",
189451
+ lighter: "var(--color-away-lighter)"
189452
+ },
189453
+ feature: {
189454
+ dark: "var(--color-feature-dark)",
189455
+ base: "var(--color-feature-base)",
189456
+ light: "var(--color-feature-light)",
189457
+ lighter: "var(--color-feature-lighter)"
189458
+ },
189459
+ verified: {
189460
+ dark: "var(--color-verified-dark)",
189461
+ base: "var(--color-verified-base)",
189462
+ light: "var(--color-verified-light)",
189463
+ lighter: "var(--color-verified-lighter)"
189464
+ },
189465
+ highlighted: {
189466
+ dark: "var(--color-highlighted-dark)",
189467
+ base: "var(--color-highlighted-base)",
189468
+ light: "var(--color-highlighted-light)",
189469
+ lighter: "var(--color-highlighted-lighter)"
189470
+ },
189471
+ stable: {
189472
+ dark: "var(--color-stable-dark)",
189473
+ base: "var(--color-stable-base)",
189474
+ light: "var(--color-stable-light)",
189475
+ lighter: "var(--color-stable-lighter)"
189476
+ },
189477
+ neutral: {
189478
+ 0: "var(--color-neutral-0)",
189479
+ 50: "var(--color-neutral-50)",
189480
+ 100: "var(--color-neutral-100)",
189481
+ 200: "var(--color-neutral-200)",
189482
+ 300: "var(--color-neutral-300)",
189483
+ 400: "var(--color-neutral-400)",
189484
+ 500: "var(--color-neutral-500)",
189485
+ 600: "var(--color-neutral-600)",
189486
+ 700: "var(--color-neutral-700)",
189487
+ 800: "var(--color-neutral-800)",
189488
+ 900: "var(--color-neutral-900)",
189489
+ 950: "var(--color-neutral-950)"
189490
+ },
189491
+ overlay: {
189492
+ DEFAULT: "var(--color-overlay)",
189493
+ gray: "var(--color-overlay-gray)",
189494
+ slate: "var(--color-overlay-slate)"
189495
+ },
189496
+ gray: {
189497
+ 0: "#ffffff",
189498
+ 50: "#f7f7f7",
189499
+ 100: "#f5f5f5",
189500
+ 200: "#ebebeb",
189501
+ 300: "#d1d1d1",
189502
+ 400: "#a3a3a3",
189503
+ 500: "#7b7b7b",
189504
+ 600: "#5c5c5c",
189505
+ 700: "#333333",
189506
+ 800: "#262626",
189507
+ 900: "#1c1c1c",
189508
+ 950: "#171717"
189509
+ },
189510
+ slate: {
189511
+ 0: "#ffffff",
189512
+ 50: "#f5f7fa",
189513
+ 100: "#f2f5f8",
189514
+ 200: "#eaecf0",
189515
+ 300: "#cacfd8",
189516
+ 400: "#99a0ae",
189517
+ 500: "#717784",
189518
+ 600: "#525866",
189519
+ 700: "#2b303b",
189520
+ 800: "#222530",
189521
+ 900: "#181b25",
189522
+ 950: "#0e121b"
189523
+ },
189524
+ blue: {
189525
+ 50: "#ebf1ff",
189526
+ 100: "#d5e2ff",
189527
+ 200: "#c0d5ff",
189528
+ 300: "#97baff",
189529
+ 400: "#4d82ff",
189530
+ 500: "#335cff",
189531
+ 600: "#3559e9",
189532
+ 700: "#2547d0",
189533
+ 800: "#1f3bad",
189534
+ 900: "#182f8b",
189535
+ 950: "#122368"
189536
+ },
189537
+ orange: {
189538
+ 50: "#fff3eb",
189539
+ 100: "#ffe6d5",
189540
+ 200: "#ffd9c0",
189541
+ 300: "#ffc197",
189542
+ 400: "#ffa468",
189543
+ 500: "#fa7319",
189544
+ 600: "#e16614",
189545
+ 700: "#ce5e12",
189546
+ 800: "#b75310",
189547
+ 900: "#96440d",
189548
+ 950: "#71330a"
189599
189549
  },
189600
- secondary: {
189601
- DEFAULT: "hsl(var(--secondary))",
189602
- foreground: "hsl(var(--secondary-foreground))"
189550
+ red: {
189551
+ 50: "#ffebec",
189552
+ 100: "#ffd5d8",
189553
+ 200: "#ffc0c5",
189554
+ 300: "#ff97a0",
189555
+ 400: "#ff6875",
189556
+ 500: "#fb3748",
189557
+ 600: "#e93544",
189558
+ 700: "#d02533",
189559
+ 800: "#ad1f2b",
189560
+ 900: "#8b1822",
189561
+ 950: "#681219"
189603
189562
  },
189604
- muted: {
189605
- DEFAULT: "hsl(var(--muted))",
189606
- foreground: "hsl(var(--muted-foreground))"
189563
+ green: {
189564
+ 50: "#e3f7ec",
189565
+ 100: "#d6f5e8",
189566
+ 200: "#c2f5da",
189567
+ 300: "#84ebb4",
189568
+ 400: "#3ee089",
189569
+ 500: "#1fc16b",
189570
+ 600: "#1daf61",
189571
+ 700: "#178c4e",
189572
+ 800: "#1a7544",
189573
+ 900: "#16643b",
189574
+ 950: "#0b4627"
189607
189575
  },
189608
- accent: {
189609
- DEFAULT: "hsl(var(--accent))",
189610
- foreground: "hsl(var(--accent-foreground))"
189576
+ yellow: {
189577
+ 50: "#fffaeb",
189578
+ 100: "#ffefcc",
189579
+ 200: "#ffecc0",
189580
+ 300: "#ffe097",
189581
+ 400: "#ffd268",
189582
+ 500: "#f6b51e",
189583
+ 600: "#e6a819",
189584
+ 700: "#c99a2c",
189585
+ 800: "#a78025",
189586
+ 900: "#86661d",
189587
+ 950: "#624c18"
189611
189588
  },
189612
- destructive: {
189613
- DEFAULT: "hsl(var(--destructive))",
189614
- foreground: "hsl(var(--destructive-foreground))"
189589
+ purple: {
189590
+ 50: "#efebff",
189591
+ 100: "#dcd5ff",
189592
+ 200: "#cac0ff",
189593
+ 300: "#a897ff",
189594
+ 400: "#8c71f6",
189595
+ 500: "#7d52f4",
189596
+ 600: "#693ee0",
189597
+ 700: "#5b2cc9",
189598
+ 800: "#4c25a7",
189599
+ 900: "#3d1d86",
189600
+ 950: "#351a75"
189615
189601
  },
189616
- border: "hsl(var(--border))",
189617
- input: "hsl(var(--input))",
189618
- ring: "hsl(var(--ring))"
189602
+ sky: {
189603
+ 50: "#ebf8ff",
189604
+ 100: "#d5f1ff",
189605
+ 200: "#c0eaff",
189606
+ 300: "#97dcff",
189607
+ 400: "#68cdff",
189608
+ 500: "#47c2ff",
189609
+ 600: "#35ade9",
189610
+ 700: "#2597d0",
189611
+ 800: "#1f7ead",
189612
+ 900: "#18658b",
189613
+ 950: "#124b68"
189614
+ },
189615
+ pink: {
189616
+ 50: "#ffebf4",
189617
+ 100: "#ffd5ea",
189618
+ 200: "#ffc0df",
189619
+ 300: "#ff97cb",
189620
+ 400: "#ff68b3",
189621
+ 500: "#fb4ba3",
189622
+ 600: "#e9358f",
189623
+ 700: "#d0257a",
189624
+ 800: "#ad1f66",
189625
+ 900: "#8b1852",
189626
+ 950: "#68123d"
189627
+ },
189628
+ teal: {
189629
+ 50: "#e4fbf8",
189630
+ 100: "#d0fbf5",
189631
+ 200: "#c2f5ee",
189632
+ 300: "#84ebdd",
189633
+ 400: "#3fdec9",
189634
+ 500: "#22d3bb",
189635
+ 600: "#1daf9c",
189636
+ 700: "#178c7d",
189637
+ 800: "#1a7569",
189638
+ 900: "#16645a",
189639
+ 950: "#0b463e"
189640
+ }
189619
189641
  };
189620
189642
  var fontFamilies = {
189621
189643
  thunder: [
@@ -189671,123 +189693,27 @@ var keyframes = {
189671
189693
  "0%": { transform: "scale(0.5)", opacity: "0" },
189672
189694
  "50%": { transform: "scale(1.2)" },
189673
189695
  "100%": { transform: "scale(1)", opacity: "1" }
189696
+ },
189697
+ shimmer: {
189698
+ "0%": { backgroundPosition: "200% 0" },
189699
+ "100%": { backgroundPosition: "-200% 0" }
189674
189700
  }
189675
189701
  };
189676
189702
  var animations = {
189677
189703
  "accordion-down": "accordion-down 0.2s ease-out",
189678
189704
  "accordion-up": "accordion-up 0.2s ease-out",
189679
189705
  "spin-smooth": "spin-smooth 1s linear infinite",
189680
- "copy-success": "copy-success 0.3s ease-out forwards"
189706
+ "copy-success": "copy-success 0.3s ease-out forwards",
189707
+ shimmer: "shimmer 2s infinite linear"
189681
189708
  };
189682
189709
 
189683
189710
  // src/utils/transformers/tailwind.ts
189711
+ var HAPPLY_PLUGIN_FILE = "happly-ui-tailwind.cjs";
189684
189712
  async function updateTailwindConfig(cwd, config, tailwindVersion) {
189685
189713
  if (tailwindVersion === 4) {
189686
- await updateCssV4(cwd, config);
189714
+ logger.success("Happly tokens applied via happly-theme.css (v4)");
189687
189715
  } else {
189688
189716
  await updateConfigV3(cwd, config);
189689
- await updateCssV3(cwd, config);
189690
- }
189691
- }
189692
- function generateCssVariables() {
189693
- const vars = [];
189694
- const ds = colors.ds || {};
189695
- Object.entries(ds).forEach(([key, value]) => {
189696
- if (key === "primary")
189697
- return;
189698
- if (typeof value === "object" && value !== null) {
189699
- const palette = value;
189700
- Object.entries(palette).forEach(([shade, colorValue]) => {
189701
- if (typeof colorValue === "string" && !colorValue.startsWith("var(")) {
189702
- vars.push(` --color-${key}-${shade}: ${colorValue};`);
189703
- }
189704
- });
189705
- }
189706
- });
189707
- Object.entries(semanticMappings).forEach(([key, value]) => {
189708
- vars.push(` --color-${key}: ${value};`);
189709
- });
189710
- return `:root {
189711
- ${vars.join(`
189712
- `)}
189713
- }
189714
- `;
189715
- }
189716
- function generateThemeBlock() {
189717
- const lines = [];
189718
- Object.entries(texts).forEach(([key, value]) => {
189719
- const [fontSize, options] = value;
189720
- lines.push(` --text-${key}: ${fontSize};`);
189721
- if (options.lineHeight)
189722
- lines.push(` --text-${key}--line-height: ${options.lineHeight};`);
189723
- if (options.letterSpacing)
189724
- lines.push(` --text-${key}--letter-spacing: ${options.letterSpacing};`);
189725
- if (options.fontWeight)
189726
- lines.push(` --text-${key}--font-weight: ${options.fontWeight};`);
189727
- });
189728
- Object.entries(shadows).forEach(([key, value]) => {
189729
- lines.push(` --shadow-${key}: ${value};`);
189730
- });
189731
- Object.entries(borderRadii).forEach(([key, value]) => {
189732
- lines.push(` --radius-${key}: ${value};`);
189733
- });
189734
- const ds = colors.ds || {};
189735
- const flattenDs = (obj, prefix) => {
189736
- Object.entries(obj).forEach(([key, value]) => {
189737
- if (typeof value === "object" && value !== null) {
189738
- flattenDs(value, `${prefix}-${key}`);
189739
- } else if (typeof value === "string") {
189740
- lines.push(` --color-${prefix}-${key}: ${value};`);
189741
- }
189742
- });
189743
- };
189744
- flattenDs(ds, "ds");
189745
- return `@theme {
189746
- ${lines.join(`
189747
- `)}
189748
- }
189749
- `;
189750
- }
189751
- async function updateCssV4(cwd, config) {
189752
- const cssPath = path3.join(cwd, config.tailwind.css);
189753
- if (!existsSync3(path3.dirname(cssPath)))
189754
- return;
189755
- let content = "";
189756
- if (existsSync3(cssPath)) {
189757
- content = await readFile3(cssPath, "utf-8");
189758
- }
189759
- const themeBlock = generateThemeBlock();
189760
- const varsBlock = generateCssVariables();
189761
- if (!content.includes("@import")) {
189762
- content = `@import "tailwindcss";
189763
-
189764
- ${content}`;
189765
- }
189766
- if (!content.includes("--color-ds-primary-dark:")) {
189767
- content += `
189768
-
189769
- ${themeBlock}`;
189770
- }
189771
- if (!content.includes("--color-primary-500:")) {
189772
- content += `
189773
-
189774
- ${varsBlock}`;
189775
- }
189776
- await writeFile2(cssPath, content, "utf-8");
189777
- logger.success(`Updated ${config.tailwind.css} with Happly tokens (v4)`);
189778
- }
189779
- async function updateCssV3(cwd, config) {
189780
- const cssPath = path3.join(cwd, config.tailwind.css);
189781
- if (!existsSync3(cssPath))
189782
- return;
189783
- let content = await readFile3(cssPath, "utf-8");
189784
- const varsBlock = generateCssVariables();
189785
- if (!content.includes("--color-primary-500:")) {
189786
- content += `
189787
-
189788
- ${varsBlock}`;
189789
- await writeFile2(cssPath, content, "utf-8");
189790
- logger.success(`Updated ${config.tailwind.css} with CSS variables`);
189791
189717
  }
189792
189718
  }
189793
189719
  async function updateConfigV3(cwd, config) {
@@ -189796,75 +189722,64 @@ async function updateConfigV3(cwd, config) {
189796
189722
  logger.warn(`Tailwind config file not found at ${configPath}`);
189797
189723
  return;
189798
189724
  }
189725
+ const pluginPath = path3.join(cwd, HAPPLY_PLUGIN_FILE);
189726
+ const pluginContent = generatePluginFile();
189727
+ if (existsSync3(pluginPath)) {
189728
+ logger.info(`Overwriting existing ${HAPPLY_PLUGIN_FILE}`);
189729
+ }
189730
+ await writeFile2(pluginPath, pluginContent, "utf-8");
189731
+ logger.success(`Created ${HAPPLY_PLUGIN_FILE}`);
189799
189732
  let content = await readFile3(configPath, "utf-8");
189800
- if (content.includes("ds:")) {
189801
- logger.info("Tailwind config already has 'ds' colors. Skipping update.");
189733
+ if (content.includes(HAPPLY_PLUGIN_FILE)) {
189734
+ logger.info(`${HAPPLY_PLUGIN_FILE} already registered in tailwind config.`);
189802
189735
  return;
189803
189736
  }
189804
- const extendContent = generateV3ExtendObject();
189805
- const extendRegex = /extend:\s*\{/;
189806
- if (extendRegex.test(content)) {
189807
- content = content.replace(extendRegex, (match) => `${match}
189808
- ${extendContent},`);
189737
+ const pluginsRegex = /plugins:\s*\[/;
189738
+ if (pluginsRegex.test(content)) {
189739
+ content = content.replace(pluginsRegex, (match) => `${match}
189740
+ require('./${HAPPLY_PLUGIN_FILE}'),`);
189809
189741
  await writeFile2(configPath, content, "utf-8");
189810
- logger.success(`Updated ${config.tailwind.config} with Happly tokens`);
189742
+ logger.success(`Registered ${HAPPLY_PLUGIN_FILE} in ${config.tailwind.config}`);
189811
189743
  } else {
189812
- const themeRegex = /theme:\s*\{/;
189813
- if (themeRegex.test(content)) {
189814
- content = content.replace(themeRegex, (match) => `${match}
189815
- extend: {
189816
- ${extendContent}
189817
- },`);
189744
+ const closingBrace = /}\s*;?\s*$/;
189745
+ if (closingBrace.test(content)) {
189746
+ content = content.replace(closingBrace, ` plugins: [require('./${HAPPLY_PLUGIN_FILE}')],
189747
+ };`);
189818
189748
  await writeFile2(configPath, content, "utf-8");
189819
- logger.success(`Updated ${config.tailwind.config} with Happly tokens (new extend block)`);
189749
+ logger.success(`Added plugins array with ${HAPPLY_PLUGIN_FILE} to ${config.tailwind.config}`);
189820
189750
  } else {
189821
- logger.warn(`Could not update ${config.tailwind.config}. Please add Happly tokens manually.`);
189751
+ logger.warn(`Could not update ${config.tailwind.config}. Add manually:
189752
+ ` + ` plugins: [require('./${HAPPLY_PLUGIN_FILE}')]`);
189822
189753
  }
189823
189754
  }
189824
189755
  }
189825
- function generateV3ExtendObject() {
189826
- const allColors = {
189827
- ...colors,
189828
- ...baseSemanticColors
189756
+ function generatePluginFile() {
189757
+ const config = {
189758
+ theme: {
189759
+ extend: {
189760
+ colors,
189761
+ fontSize: texts,
189762
+ boxShadow: shadows,
189763
+ borderRadius: borderRadii,
189764
+ fontFamily: fontFamilies,
189765
+ backgroundImage,
189766
+ screens,
189767
+ keyframes,
189768
+ animation: animations
189769
+ }
189770
+ }
189829
189771
  };
189830
- const colorsJson = JSON.stringify(allColors, null, 6).slice(2, -2);
189831
- const colorsStr = ` colors: {
189832
- ${colorsJson}
189833
- }`;
189834
- const fontSizeJson = JSON.stringify(texts, null, 6).slice(2, -2);
189835
- const fontSizeStr = ` fontSize: {
189836
- ${fontSizeJson}
189837
- }`;
189838
- const shadowJson = JSON.stringify(shadows, null, 6).slice(2, -2);
189839
- const shadowStr = ` boxShadow: {
189840
- ${shadowJson}
189841
- }`;
189842
- const radiusJson = JSON.stringify(borderRadii, null, 6).slice(2, -2);
189843
- const radiusStr = ` borderRadius: {
189844
- ${radiusJson}
189845
- }`;
189846
- return [
189847
- colorsStr,
189848
- fontSizeStr,
189849
- shadowStr,
189850
- radiusStr,
189851
- ` fontFamily: {
189852
- ${JSON.stringify(fontFamilies, null, 6).slice(2, -2)}
189853
- }`,
189854
- ` backgroundImage: {
189855
- ${JSON.stringify(backgroundImage, null, 6).slice(2, -2)}
189856
- }`,
189857
- ` screens: {
189858
- ${JSON.stringify(screens, null, 6).slice(2, -2)}
189859
- }`,
189860
- ` keyframes: {
189861
- ${JSON.stringify(keyframes, null, 6).slice(2, -2)}
189862
- }`,
189863
- ` animation: {
189864
- ${JSON.stringify(animations, null, 6).slice(2, -2)}
189865
- }`
189866
- ].join(`,
189867
- `);
189772
+ return `// HapplyUI Design Tokens — https://ui.happly.cloud
189773
+ // Auto-generated by @happlyui/cli — do not edit manually
189774
+ // This plugin extends your Tailwind config with HapplyUI design tokens.
189775
+ // It uses Tailwind's plugin API for proper deep-merging with your existing config.
189776
+
189777
+ const plugin = require('tailwindcss/plugin');
189778
+
189779
+ module.exports = plugin(function() {
189780
+ // No base styles needed CSS variables are in happly-theme.css
189781
+ }, ${JSON.stringify(config, null, 2)});
189782
+ `;
189868
189783
  }
189869
189784
 
189870
189785
  // src/utils/env.ts
@@ -189931,136 +189846,1416 @@ function getAgentName() {
189931
189846
 
189932
189847
  // src/commands/init.ts
189933
189848
  init_types();
189934
- var UTILS_TEMPLATE = `import { type ClassValue, clsx } from "clsx";
189935
- import { twMerge } from "tailwind-merge";
189936
189849
 
189937
- export function cn(...inputs: ClassValue[]) {
189938
- return twMerge(clsx(inputs));
189939
- }
189940
- `;
189941
- var UTILS_JS_TEMPLATE = `import { clsx } from "clsx";
189942
- import { twMerge } from "tailwind-merge";
189850
+ // src/utils/templates/happly-theme.ts
189851
+ var HAPPLY_THEME_V4 = `/* HapplyUI Design Tokens — https://ui.happly.cloud */
189852
+ /* Auto-generated by @happlyui/cli — do not edit manually */
189943
189853
 
189944
- export function cn(...inputs) {
189945
- return twMerge(clsx(inputs));
189854
+ @theme {
189855
+ /* HapplyUI Raw Colors */
189856
+ --color-gray-950: #171717;
189857
+ --color-gray-900: #1c1c1c;
189858
+ --color-gray-800: #262626;
189859
+ --color-gray-700: #333333;
189860
+ --color-gray-600: #5c5c5c;
189861
+ --color-gray-500: #7b7b7b;
189862
+ --color-gray-400: #a3a3a3;
189863
+ --color-gray-300: #d1d1d1;
189864
+ --color-gray-200: #ebebeb;
189865
+ --color-gray-100: #f5f5f5;
189866
+ --color-gray-50: #f7f7f7;
189867
+ --color-gray-0: #ffffff;
189868
+ --color-gray-alpha-24: #a3a3a33d;
189869
+ --color-gray-alpha-16: #a3a3a329;
189870
+ --color-gray-alpha-10: #a3a3a31a;
189871
+
189872
+ --color-slate-950: #0e121b;
189873
+ --color-slate-900: #181b25;
189874
+ --color-slate-800: #222530;
189875
+ --color-slate-700: #2b303b;
189876
+ --color-slate-600: #525866;
189877
+ --color-slate-500: #717784;
189878
+ --color-slate-400: #99a0ae;
189879
+ --color-slate-300: #cacfd8;
189880
+ --color-slate-200: #eaecf0;
189881
+ --color-slate-100: #f2f5f8;
189882
+ --color-slate-50: #f5f7fa;
189883
+ --color-slate-0: #ffffff;
189884
+ --color-slate-alpha-24: #99a0ae3d;
189885
+ --color-slate-alpha-16: #99a0ae29;
189886
+ --color-slate-alpha-10: #99a0ae1a;
189887
+
189888
+ --color-blue-950: #122368;
189889
+ --color-blue-900: #182f8b;
189890
+ --color-blue-800: #1f3bad;
189891
+ --color-blue-700: #2547d0;
189892
+ --color-blue-600: #3559e9;
189893
+ --color-blue-500: #335cff;
189894
+ --color-blue-400: #4d82ff;
189895
+ --color-blue-300: #97baff;
189896
+ --color-blue-200: #c0d5ff;
189897
+ --color-blue-100: #d5e2ff;
189898
+ --color-blue-50: #ebf1ff;
189899
+ --color-blue-alpha-24: #476cff3d;
189900
+ --color-blue-alpha-16: #476cff29;
189901
+ --color-blue-alpha-10: #476cff1a;
189902
+
189903
+ --color-orange-950: #71330a;
189904
+ --color-orange-900: #96440d;
189905
+ --color-orange-800: #b75310;
189906
+ --color-orange-700: #ce5e12;
189907
+ --color-orange-600: #e16614;
189908
+ --color-orange-500: #fa7319;
189909
+ --color-orange-400: #ffa468;
189910
+ --color-orange-300: #ffc197;
189911
+ --color-orange-200: #ffd9c0;
189912
+ --color-orange-100: #ffe6d5;
189913
+ --color-orange-50: #fff3eb;
189914
+ --color-orange-alpha-24: #fa73193d;
189915
+ --color-orange-alpha-16: #fa731929;
189916
+ --color-orange-alpha-10: #fa73191a;
189917
+
189918
+ --color-red-950: #681219;
189919
+ --color-red-900: #8b1822;
189920
+ --color-red-800: #ad1f2b;
189921
+ --color-red-700: #d02533;
189922
+ --color-red-600: #e93544;
189923
+ --color-red-500: #fb3748;
189924
+ --color-red-400: #ff6875;
189925
+ --color-red-300: #ff97a0;
189926
+ --color-red-200: #ffc0c5;
189927
+ --color-red-100: #ffd5d8;
189928
+ --color-red-50: #ffebec;
189929
+ --color-red-alpha-24: #fb37483d;
189930
+ --color-red-alpha-16: #fb374829;
189931
+ --color-red-alpha-10: #fb37481a;
189932
+
189933
+ --color-green-950: #0b4627;
189934
+ --color-green-900: #16643b;
189935
+ --color-green-800: #1a7544;
189936
+ --color-green-700: #178c4e;
189937
+ --color-green-600: #1daf61;
189938
+ --color-green-500: #1fc16b;
189939
+ --color-green-400: #3ee089;
189940
+ --color-green-300: #84ebb4;
189941
+ --color-green-200: #c2f5da;
189942
+ --color-green-100: #d6f5e8;
189943
+ --color-green-50: #e3f7ec;
189944
+ --color-green-alpha-24: #1fc16b3d;
189945
+ --color-green-alpha-16: #1fc16b29;
189946
+ --color-green-alpha-10: #1fc16b1a;
189947
+
189948
+ --color-yellow-950: #624c18;
189949
+ --color-yellow-900: #86661d;
189950
+ --color-yellow-800: #a78025;
189951
+ --color-yellow-700: #c99a2c;
189952
+ --color-yellow-600: #e6a819;
189953
+ --color-yellow-500: #f6b51e;
189954
+ --color-yellow-400: #ffd268;
189955
+ --color-yellow-300: #ffe097;
189956
+ --color-yellow-200: #ffecc0;
189957
+ --color-yellow-100: #ffefcc;
189958
+ --color-yellow-50: #fffaeb;
189959
+ --color-yellow-alpha-24: #fbc64b3d;
189960
+ --color-yellow-alpha-16: #fbc64b29;
189961
+ --color-yellow-alpha-10: #fbc64b1a;
189962
+
189963
+ --color-purple-950: #351a75;
189964
+ --color-purple-900: #3d1d86;
189965
+ --color-purple-800: #4c25a7;
189966
+ --color-purple-700: #5b2cc9;
189967
+ --color-purple-600: #693ee0;
189968
+ --color-purple-500: #7d52f4;
189969
+ --color-purple-400: #8c71f6;
189970
+ --color-purple-300: #a897ff;
189971
+ --color-purple-200: #cac0ff;
189972
+ --color-purple-100: #dcd5ff;
189973
+ --color-purple-50: #efebff;
189974
+ --color-purple-alpha-24: #784def3d;
189975
+ --color-purple-alpha-16: #784def29;
189976
+ --color-purple-alpha-10: #784def1a;
189977
+
189978
+ --color-sky-950: #124b68;
189979
+ --color-sky-900: #18658b;
189980
+ --color-sky-800: #1f7ead;
189981
+ --color-sky-700: #2597d0;
189982
+ --color-sky-600: #35ade9;
189983
+ --color-sky-500: #47c2ff;
189984
+ --color-sky-400: #68cdff;
189985
+ --color-sky-300: #97dcff;
189986
+ --color-sky-200: #c0eaff;
189987
+ --color-sky-100: #d5f1ff;
189988
+ --color-sky-50: #ebf8ff;
189989
+ --color-sky-alpha-24: #47c2ff3d;
189990
+ --color-sky-alpha-16: #47c2ff29;
189991
+ --color-sky-alpha-10: #47c2ff1a;
189992
+
189993
+ --color-pink-950: #68123d;
189994
+ --color-pink-900: #8b1852;
189995
+ --color-pink-800: #ad1f66;
189996
+ --color-pink-700: #d0257a;
189997
+ --color-pink-600: #e9358f;
189998
+ --color-pink-500: #fb4ba3;
189999
+ --color-pink-400: #ff68b3;
190000
+ --color-pink-300: #ff97cb;
190001
+ --color-pink-200: #ffc0df;
190002
+ --color-pink-100: #ffd5ea;
190003
+ --color-pink-50: #ffebf4;
190004
+ --color-pink-alpha-24: #fb4ba33d;
190005
+ --color-pink-alpha-16: #fb4ba329;
190006
+ --color-pink-alpha-10: #fb4ba31a;
190007
+
190008
+ --color-teal-950: #0b463e;
190009
+ --color-teal-900: #16645a;
190010
+ --color-teal-800: #1a7569;
190011
+ --color-teal-700: #178c7d;
190012
+ --color-teal-600: #1daf9c;
190013
+ --color-teal-500: #22d3bb;
190014
+ --color-teal-400: #3fdec9;
190015
+ --color-teal-300: #84ebdd;
190016
+ --color-teal-200: #c2f5ee;
190017
+ --color-teal-100: #d0fbf5;
190018
+ --color-teal-50: #e4fbf8;
190019
+ --color-teal-alpha-24: #22d3bb3d;
190020
+ --color-teal-alpha-16: #22d3bb29;
190021
+ --color-teal-alpha-10: #22d3bb1a;
190022
+
190023
+ --color-white-alpha-24: #ffffff3d;
190024
+ --color-white-alpha-16: #ffffff29;
190025
+ --color-white-alpha-10: #ffffff1a;
190026
+
190027
+ --color-black-alpha-24: #1717173d;
190028
+ --color-black-alpha-16: #17171729;
190029
+ --color-black-alpha-10: #1717171a;
190030
+
190031
+ /* HapplyUI Dynamic Neutral Colors */
190032
+ --color-neutral-950: var(--color-gray-950);
190033
+ --color-neutral-900: var(--color-gray-900);
190034
+ --color-neutral-800: var(--color-gray-800);
190035
+ --color-neutral-700: var(--color-gray-700);
190036
+ --color-neutral-600: var(--color-gray-600);
190037
+ --color-neutral-500: var(--color-gray-500);
190038
+ --color-neutral-400: var(--color-gray-400);
190039
+ --color-neutral-300: var(--color-gray-300);
190040
+ --color-neutral-200: var(--color-gray-200);
190041
+ --color-neutral-100: var(--color-gray-100);
190042
+ --color-neutral-50: var(--color-gray-50);
190043
+ --color-neutral-0: var(--color-gray-0);
190044
+ --color-neutral-alpha-24: var(--color-gray-alpha-24);
190045
+ --color-neutral-alpha-16: var(--color-gray-alpha-16);
190046
+ --color-neutral-alpha-10: var(--color-gray-alpha-10);
190047
+
190048
+ /* HapplyUI Dynamic Primary Colors */
190049
+ --color-primary-50: var(--color-purple-50);
190050
+ --color-primary-100: var(--color-purple-100);
190051
+ --color-primary-200: var(--color-purple-200);
190052
+ --color-primary-300: var(--color-purple-300);
190053
+ --color-primary-400: var(--color-purple-400);
190054
+ --color-primary-500: var(--color-purple-500);
190055
+ --color-primary-600: var(--color-purple-600);
190056
+ --color-primary-700: var(--color-purple-700);
190057
+ --color-primary-800: var(--color-purple-800);
190058
+ --color-primary-900: var(--color-purple-900);
190059
+ --color-primary-950: var(--color-purple-950);
190060
+ --color-primary-dark: var(--color-purple-800);
190061
+ --color-primary-darker: var(--color-purple-700);
190062
+ --color-primary-base: var(--color-purple-500);
190063
+ --color-primary-light: var(--color-purple-100);
190064
+ --color-primary-lighter: var(--color-purple-50);
190065
+ --color-primary-alpha-24: var(--color-purple-alpha-24);
190066
+ --color-primary-alpha-16: var(--color-purple-alpha-16);
190067
+ --color-primary-alpha-10: var(--color-purple-alpha-10);
190068
+
190069
+ /* HapplyUI Social Colors */
190070
+ --color-social-apple: #000;
190071
+ --color-social-twitter: #010101;
190072
+ --color-social-github: #24292f;
190073
+ --color-social-notion: #1e2226;
190074
+ --color-social-tidal: #000;
190075
+ --color-social-amazon: #353e47;
190076
+ --color-social-zendesk: #16140d;
190077
+
190078
+ /* HapplyUI Overlay Colors */
190079
+ --color-overlay-gray: #3333333d;
190080
+ --color-overlay-slate: #2b303b3d;
190081
+ --color-overlay: var(--color-overlay-gray);
190082
+
190083
+ /* HapplyUI Semantic Colors */
190084
+ --color-static-black: var(--color-neutral-950);
190085
+ --color-static-white: var(--color-neutral-0);
190086
+
190087
+ --color-bg-strong-950: var(--color-neutral-950);
190088
+ --color-bg-surface-800: var(--color-neutral-800);
190089
+ --color-bg-sub-300: var(--color-neutral-300);
190090
+ --color-bg-soft-200: var(--color-neutral-200);
190091
+ --color-bg-weak-50: var(--color-neutral-50);
190092
+ --color-bg-weak-25: var(--color-neutral-50);
190093
+ --color-bg-white-0: var(--color-neutral-0);
190094
+
190095
+ --color-text-strong-950: var(--color-neutral-950);
190096
+ --color-text-sub-600: var(--color-neutral-600);
190097
+ --color-text-soft-400: var(--color-neutral-400);
190098
+ --color-text-disabled-300: var(--color-neutral-300);
190099
+ --color-text-white-0: var(--color-neutral-0);
190100
+
190101
+ --color-stroke-strong-950: var(--color-neutral-950);
190102
+ --color-stroke-sub-300: var(--color-neutral-300);
190103
+ --color-stroke-soft-200: var(--color-neutral-200);
190104
+ --color-stroke-white-0: var(--color-neutral-0);
190105
+
190106
+ --color-faded-dark: var(--color-neutral-800);
190107
+ --color-faded-base: var(--color-neutral-500);
190108
+ --color-faded-light: var(--color-neutral-200);
190109
+ --color-faded-lighter: var(--color-neutral-100);
190110
+
190111
+ --color-information-dark: var(--color-blue-950);
190112
+ --color-information-base: var(--color-blue-500);
190113
+ --color-information-light: var(--color-blue-200);
190114
+ --color-information-lighter: var(--color-blue-50);
190115
+
190116
+ --color-warning-dark: var(--color-orange-950);
190117
+ --color-warning-darker: var(--color-orange-700);
190118
+ --color-warning-base: var(--color-orange-500);
190119
+ --color-warning-light: var(--color-orange-200);
190120
+ --color-warning-lighter: var(--color-orange-50);
190121
+ --color-warning-alpha-10: var(--color-orange-alpha-10);
190122
+
190123
+ --color-error-dark: var(--color-red-950);
190124
+ --color-error-base: var(--color-red-500);
190125
+ --color-error-light: var(--color-red-200);
190126
+ --color-error-lighter: var(--color-red-50);
190127
+
190128
+ --color-success-dark: var(--color-green-950);
190129
+ --color-success-darker: var(--color-green-700);
190130
+ --color-success-base: var(--color-green-500);
190131
+ --color-success-light: var(--color-green-200);
190132
+ --color-success-lighter: var(--color-green-50);
190133
+ --color-success-alpha-10: var(--color-green-alpha-10);
190134
+
190135
+ --color-away-dark: var(--color-yellow-950);
190136
+ --color-away-base: var(--color-yellow-500);
190137
+ --color-away-light: var(--color-yellow-200);
190138
+ --color-away-lighter: var(--color-yellow-50);
190139
+
190140
+ --color-feature-dark: var(--color-purple-950);
190141
+ --color-feature-base: var(--color-purple-500);
190142
+ --color-feature-light: var(--color-purple-200);
190143
+ --color-feature-lighter: var(--color-purple-50);
190144
+
190145
+ --color-verified-dark: var(--color-sky-950);
190146
+ --color-verified-base: var(--color-sky-500);
190147
+ --color-verified-light: var(--color-sky-200);
190148
+ --color-verified-lighter: var(--color-sky-50);
190149
+
190150
+ --color-highlighted-dark: var(--color-pink-950);
190151
+ --color-highlighted-base: var(--color-pink-500);
190152
+ --color-highlighted-light: var(--color-pink-200);
190153
+ --color-highlighted-lighter: var(--color-pink-50);
190154
+
190155
+ --color-stable-dark: var(--color-teal-950);
190156
+ --color-stable-base: var(--color-teal-500);
190157
+ --color-stable-light: var(--color-teal-200);
190158
+ --color-stable-lighter: var(--color-teal-50);
190159
+
190160
+ /* HapplyUI Typography System */
190161
+
190162
+ --text-title-h1: 3.5rem;
190163
+ --text-title-h1--line-height: 4rem;
190164
+ --text-title-h1--letter-spacing: -0.01em;
190165
+ --text-title-h1--font-weight: 500;
190166
+
190167
+ --text-title-h2: 3rem;
190168
+ --text-title-h2--line-height: 3.5rem;
190169
+ --text-title-h2--letter-spacing: -0.01em;
190170
+ --text-title-h2--font-weight: 500;
190171
+
190172
+ --text-title-h3: 2.5rem;
190173
+ --text-title-h3--line-height: 3rem;
190174
+ --text-title-h3--letter-spacing: -0.01em;
190175
+ --text-title-h3--font-weight: 500;
190176
+
190177
+ --text-title-h4: 2rem;
190178
+ --text-title-h4--line-height: 2.5rem;
190179
+ --text-title-h4--letter-spacing: -0.005em;
190180
+ --text-title-h4--font-weight: 500;
190181
+
190182
+ --text-title-h5: 1.5rem;
190183
+ --text-title-h5--line-height: 2rem;
190184
+ --text-title-h5--letter-spacing: 0em;
190185
+ --text-title-h5--font-weight: 500;
190186
+
190187
+ --text-title-h6: 1.25rem;
190188
+ --text-title-h6--line-height: 1.75rem;
190189
+ --text-title-h6--letter-spacing: 0em;
190190
+ --text-title-h6--font-weight: 500;
190191
+
190192
+ --text-label-xl: 1.5rem;
190193
+ --text-label-xl--line-height: 2rem;
190194
+ --text-label-xl--letter-spacing: -0.015em;
190195
+ --text-label-xl--font-weight: 500;
190196
+
190197
+ --text-label-lg: 1.125rem;
190198
+ --text-label-lg--line-height: 1.5rem;
190199
+ --text-label-lg--letter-spacing: -0.015em;
190200
+ --text-label-lg--font-weight: 500;
190201
+
190202
+ --text-label-md: 1rem;
190203
+ --text-label-md--line-height: 1.5rem;
190204
+ --text-label-md--letter-spacing: -0.011em;
190205
+ --text-label-md--font-weight: 500;
190206
+
190207
+ --text-label-sm: 0.875rem;
190208
+ --text-label-sm--line-height: 1.25rem;
190209
+ --text-label-sm--letter-spacing: -0.006em;
190210
+ --text-label-sm--font-weight: 500;
190211
+
190212
+ --text-label-xs: 0.75rem;
190213
+ --text-label-xs--line-height: 1rem;
190214
+ --text-label-xs--letter-spacing: 0em;
190215
+ --text-label-xs--font-weight: 500;
190216
+
190217
+ --text-label-2xs: 0.6875rem;
190218
+ --text-label-2xs--line-height: 1rem;
190219
+ --text-label-2xs--letter-spacing: 0em;
190220
+ --text-label-2xs--font-weight: 500;
190221
+
190222
+ --text-paragraph-xl: 1.5rem;
190223
+ --text-paragraph-xl--line-height: 2rem;
190224
+ --text-paragraph-xl--letter-spacing: -0.015em;
190225
+ --text-paragraph-xl--font-weight: 400;
190226
+
190227
+ --text-paragraph-lg: 1.125rem;
190228
+ --text-paragraph-lg--line-height: 1.5rem;
190229
+ --text-paragraph-lg--letter-spacing: -0.015em;
190230
+ --text-paragraph-lg--font-weight: 400;
190231
+
190232
+ --text-paragraph-md: 1rem;
190233
+ --text-paragraph-md--line-height: 1.5rem;
190234
+ --text-paragraph-md--letter-spacing: -0.011em;
190235
+ --text-paragraph-md--font-weight: 400;
190236
+
190237
+ --text-paragraph-sm: 0.875rem;
190238
+ --text-paragraph-sm--line-height: 1.25rem;
190239
+ --text-paragraph-sm--letter-spacing: -0.006em;
190240
+ --text-paragraph-sm--font-weight: 400;
190241
+
190242
+ --text-paragraph-xs: 0.75rem;
190243
+ --text-paragraph-xs--line-height: 1rem;
190244
+ --text-paragraph-xs--letter-spacing: 0em;
190245
+ --text-paragraph-xs--font-weight: 400;
190246
+
190247
+ --text-subheading-md: 1rem;
190248
+ --text-subheading-md--line-height: 1.5rem;
190249
+ --text-subheading-md--letter-spacing: 0.06em;
190250
+ --text-subheading-md--font-weight: 500;
190251
+
190252
+ --text-subheading-sm: 0.875rem;
190253
+ --text-subheading-sm--line-height: 1.25rem;
190254
+ --text-subheading-sm--letter-spacing: 0.06em;
190255
+ --text-subheading-sm--font-weight: 500;
190256
+
190257
+ --text-subheading-xs: 0.75rem;
190258
+ --text-subheading-xs--line-height: 1rem;
190259
+ --text-subheading-xs--letter-spacing: 0.04em;
190260
+ --text-subheading-xs--font-weight: 500;
190261
+
190262
+ --text-subheading-2xs: 0.6875rem;
190263
+ --text-subheading-2xs--line-height: 0.75rem;
190264
+ --text-subheading-2xs--letter-spacing: 0.02em;
190265
+ --text-subheading-2xs--font-weight: 500;
190266
+
190267
+ --text-doc-label: 1.125rem;
190268
+ --text-doc-label--line-height: 2rem;
190269
+ --text-doc-label--letter-spacing: -0.015em;
190270
+ --text-doc-label--font-weight: 500;
190271
+
190272
+ --text-doc-paragraph: 1.125rem;
190273
+ --text-doc-paragraph--line-height: 2rem;
190274
+ --text-doc-paragraph--letter-spacing: -0.015em;
190275
+ --text-doc-paragraph--font-weight: 400;
190276
+
190277
+ /* HapplyUI Shadow System */
190278
+
190279
+ --shadow-regular-xs: 0 1px 2px 0 #0a0d1408;
190280
+ --shadow-regular-sm: 0 2px 4px #1b1c1d0a;
190281
+ --shadow-regular-md: 0 16px 32px -12px #0e121b1a;
190282
+
190283
+ --shadow-button-primary-focus:
190284
+ 0 0 0 2px var(--color-bg-white-0), 0 0 0 4px var(--color-primary-alpha-10);
190285
+ --shadow-button-important-focus:
190286
+ 0 0 0 2px var(--color-bg-white-0), 0 0 0 4px var(--color-neutral-alpha-16);
190287
+ --shadow-button-error-focus:
190288
+ 0 0 0 2px var(--color-bg-white-0), 0 0 0 4px var(--color-red-alpha-10);
190289
+ --shadow-button-warning-focus:
190290
+ 0 0 0 2px var(--color-bg-white-0), 0 0 0 4px var(--color-orange-alpha-10);
190291
+ --shadow-button-success-focus:
190292
+ 0 0 0 2px var(--color-bg-white-0), 0 0 0 4px var(--color-green-alpha-10);
190293
+
190294
+ --shadow-fancy-buttons-neutral: 0 1px 2px 0 #1b1c1d7a, 0 0 0 1px #242628;
190295
+ --shadow-fancy-buttons-primary:
190296
+ 0 1px 2px 0 #0e121b3d, 0 0 0 1px var(--color-primary-base);
190297
+ --shadow-fancy-buttons-error:
190298
+ 0 1px 2px 0 #0e121b3d, 0 0 0 1px var(--color-error-base);
190299
+ --shadow-fancy-buttons-stroke:
190300
+ 0 1px 3px 0 #0e121b1f, 0 0 0 1px var(--color-stroke-soft-200);
190301
+
190302
+ --shadow-toggle-switch: 0 6px 10px 0 #0e121b0f, 0 2px 4px 0 #0e121b08;
190303
+ --shadow-switch-thumb: 0 4px 8px 0 #1b1c1d0f, 0 2px 4px 0 #0e121b14;
190304
+ --shadow-tooltip: 0 12px 24px 0 #0e121b0f, 0 1px 2px 0 #0e121b08;
190305
+
190306
+ --shadow-custom-xs:
190307
+ 0 0 0 1px rgba(51, 51, 51, 0.04), 0 4px 8px -2px rgba(51, 51, 51, 0.06),
190308
+ 0 2px 4px rgba(51, 51, 51, 0.04), 0 1px 2px rgba(51, 51, 51, 0.04),
190309
+ inset 0 -1px 1px -0.5px rgba(51, 51, 51, 0.06);
190310
+ --shadow-custom-sm:
190311
+ 0 0 0 1px rgba(51, 51, 51, 0.04), 0 16px 8px -8px rgba(51, 51, 51, 0.01),
190312
+ 0 12px 6px -6px rgba(51, 51, 51, 0.02),
190313
+ 0 5px 5px -2.5px rgba(51, 51, 51, 0.08),
190314
+ 0 1px 3px -1.5px rgba(51, 51, 51, 0.16),
190315
+ inset 0 -0.5px 0.5px rgba(51, 51, 51, 0.08);
190316
+ --shadow-custom-md:
190317
+ 0 0 0 1px rgba(51, 51, 51, 0.04), 0 1px 1px 0.5px rgba(51, 51, 51, 0.04),
190318
+ 0 3px 3px -1.5px rgba(51, 51, 51, 0.02),
190319
+ 0 6px 6px -3px rgba(51, 51, 51, 0.04),
190320
+ 0 12px 12px -6px rgba(51, 51, 51, 0.04),
190321
+ 0 24px 24px -12px rgba(51, 51, 51, 0.04),
190322
+ 0 48px 48px -24px rgba(51, 51, 51, 0.04),
190323
+ inset 0 -1px 1px -0.5px rgba(51, 51, 51, 0.06);
190324
+ --shadow-custom-lg:
190325
+ 0 0 0 1px rgba(51, 51, 51, 0.04), 0 1px 1px 0.5px rgba(51, 51, 51, 0.04),
190326
+ 0 3px 3px -1.5px rgba(51, 51, 51, 0.02),
190327
+ 0 6px 6px -3px rgba(51, 51, 51, 0.04),
190328
+ 0 12px 12px -6px rgba(51, 51, 51, 0.04),
190329
+ 0 24px 24px -12px rgba(51, 51, 51, 0.04),
190330
+ 0 48px 48px -24px rgba(51, 51, 51, 0.04),
190331
+ 0 96px 96px -32px rgba(51, 51, 51, 0.06),
190332
+ inset 0 -1px 1px -0.5px rgba(51, 51, 51, 0.06);
190333
+
190334
+ --shadow-complex-12:
190335
+ 0 80px 80px -40px rgba(23, 23, 23, 0.04),
190336
+ 0 48px 48px -24px rgba(23, 23, 23, 0.04);
190337
+ --shadow-complex:
190338
+ 0 20px 20px -10px rgba(23, 23, 23, 0.04),
190339
+ 0 10px 10px -5px rgba(23, 23, 23, 0.04),
190340
+ 0 6px 6px -3px rgba(23, 23, 23, 0.04),
190341
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190342
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.08),
190343
+ 0 -1px 1px -0.5px rgba(23, 23, 23, 0.06) inset;
190344
+ --shadow-complex-2:
190345
+ 0 10px 10px -5px rgba(23, 23, 23, 0.02),
190346
+ 0 6px 6px -3px rgba(23, 23, 23, 0.04),
190347
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190348
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.02);
190349
+ --shadow-complex-4:
190350
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190351
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.02);
190352
+ --shadow-complex-5:
190353
+ 0 0 6px 0 rgba(255, 255, 255, 0.24) inset,
190354
+ 0 40px 40px -20px rgba(23, 23, 23, 0.06),
190355
+ 0 10px 10px -5px rgba(23, 23, 23, 0.06),
190356
+ 0 6px 6px -3px rgba(23, 23, 23, 0.04),
190357
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190358
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04);
190359
+ --shadow-complex-6:
190360
+ 0 40px 40px -20px rgba(23, 23, 23, 0.06),
190361
+ 0 10px 10px -5px rgba(23, 23, 23, 0.06),
190362
+ 0 6px 6px -3px rgba(23, 23, 23, 0.04),
190363
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190364
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04),
190365
+ 0 0 6px 0 rgba(255, 255, 255, 0.24) inset;
190366
+ --shadow-complex-7: 0 1px 2px 0 rgba(14, 18, 27, 0.24), 0 0 0 1px #335cff;
190367
+ --shadow-complex-8:
190368
+ 0 20px 20px -10px rgba(23, 23, 23, 0), 0 10px 10px -5px rgba(23, 23, 23, 0),
190369
+ 0 6px 6px -3px rgba(23, 23, 23, 0), 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190370
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0), 0 0 0 1px rgba(23, 23, 23, 0.08),
190371
+ 0 -1px 1px -0.5px rgba(23, 23, 23, 0.06) inset;
190372
+ --shadow-complex-9:
190373
+ 0 80px 40px -20px rgba(23, 23, 23, 0.06),
190374
+ 0 40px 40px -20px rgba(23, 23, 23, 0.06),
190375
+ 0 10px 10px -5px rgba(23, 23, 23, 0.06),
190376
+ 0 6px 6px -3px rgba(23, 23, 23, 0.04),
190377
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190378
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04),
190379
+ 0 0 6px 0 rgba(255, 255, 255, 0.04) inset;
190380
+ --shadow-complex-10:
190381
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190382
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04);
190383
+ --shadow-complex-11:
190384
+ 0 -1px 1px -0.5px rgba(23, 23, 23, 0.06) inset,
190385
+ 0 20px 20px -10px rgba(23, 23, 23, 0.04),
190386
+ 0 10px 10px -5px rgba(23, 23, 23, 0.04),
190387
+ 0 6px 6px -3px rgba(23, 23, 23, 0.04),
190388
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190389
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.04);
190390
+
190391
+ --shadow-custom-input:
190392
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190393
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.08);
190394
+ --shadow-custom-input-2:
190395
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190396
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px var(--color-bg-soft-200);
190397
+ --shadow-custom-input-4:
190398
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.06),
190399
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.06), 0 0 0 1px rgba(23, 23, 23, 0.02);
190400
+ --shadow-custom-input-active:
190401
+ 0 6px 6px -3px rgba(23, 23, 23, 0.02),
190402
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190403
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1.4px #335cff;
190404
+
190405
+ --shadow-gray-shadow: 0 0 0 1px rgba(23, 23, 23, 0.08);
190406
+
190407
+ /* HapplyUI Border Radius System */
190408
+ --radius-10: 0.625rem;
190409
+ --radius-20: 1.25rem;
190410
+
190411
+ /* HapplyUI Animation System */
190412
+ --animate-accordion-down: accordion-down 0.2s ease-out;
190413
+ --animate-accordion-up: accordion-up 0.2s ease-out;
190414
+ --animate-shimmer: shimmer 2s infinite linear;
189946
190415
  }
189947
- `;
189948
- var CSS_TEMPLATE_V3 = `@tailwind base;
189949
- @tailwind components;
189950
- @tailwind utilities;
189951
190416
 
189952
- @layer base {
190417
+ /* Dark Mode — prefers-color-scheme */
190418
+ @media (prefers-color-scheme: dark) {
189953
190419
  :root {
189954
- --background: 0 0% 100%;
189955
- --foreground: 222.2 84% 4.9%;
189956
- --card: 0 0% 100%;
189957
- --card-foreground: 222.2 84% 4.9%;
189958
- --popover: 0 0% 100%;
189959
- --popover-foreground: 222.2 84% 4.9%;
189960
- --primary: 222.2 47.4% 11.2%;
189961
- --primary-foreground: 210 40% 98%;
189962
- --secondary: 210 40% 96.1%;
189963
- --secondary-foreground: 222.2 47.4% 11.2%;
189964
- --muted: 210 40% 96.1%;
189965
- --muted-foreground: 215.4 16.3% 46.9%;
189966
- --accent: 210 40% 96.1%;
189967
- --accent-foreground: 222.2 47.4% 11.2%;
189968
- --destructive: 0 84.2% 60.2%;
189969
- --destructive-foreground: 210 40% 98%;
189970
- --border: 214.3 31.8% 91.4%;
189971
- --input: 214.3 31.8% 91.4%;
189972
- --ring: 222.2 84% 4.9%;
189973
- --radius: 0.5rem;
190420
+ --color-bg-strong-950: var(--color-neutral-0);
190421
+ --color-bg-surface-800: var(--color-neutral-200);
190422
+ --color-bg-sub-300: var(--color-neutral-600);
190423
+ --color-bg-soft-200: var(--color-neutral-700);
190424
+ --color-bg-weak-50: var(--color-neutral-800);
190425
+ --color-bg-weak-25: var(--color-neutral-900);
190426
+ --color-bg-white-0: var(--color-neutral-950);
190427
+
190428
+ --color-text-strong-950: var(--color-neutral-0);
190429
+ --color-text-sub-600: var(--color-neutral-400);
190430
+ --color-text-soft-400: var(--color-neutral-500);
190431
+ --color-text-disabled-300: var(--color-neutral-600);
190432
+ --color-text-white-0: var(--color-neutral-950);
190433
+
190434
+ --color-stroke-strong-950: var(--color-neutral-0);
190435
+ --color-stroke-sub-300: var(--color-neutral-600);
190436
+ --color-stroke-soft-200: var(--color-neutral-800);
190437
+ --color-stroke-white-0: var(--color-neutral-950);
190438
+
190439
+ --color-faded-dark: var(--color-neutral-300);
190440
+ --color-faded-base: var(--color-neutral-500);
190441
+ --color-faded-light: var(--color-neutral-alpha-24);
190442
+ --color-faded-lighter: var(--color-neutral-alpha-10);
190443
+
190444
+ --color-information-dark: var(--color-blue-400);
190445
+ --color-information-base: var(--color-blue-500);
190446
+ --color-information-light: var(--color-blue-alpha-24);
190447
+ --color-information-lighter: var(--color-blue-alpha-16);
190448
+
190449
+ --color-warning-dark: var(--color-orange-400);
190450
+ --color-warning-base: var(--color-orange-600);
190451
+ --color-warning-light: var(--color-orange-alpha-24);
190452
+ --color-warning-lighter: var(--color-orange-alpha-16);
190453
+
190454
+ --color-error-dark: var(--color-red-400);
190455
+ --color-error-base: var(--color-red-600);
190456
+ --color-error-light: var(--color-red-alpha-24);
190457
+ --color-error-lighter: var(--color-red-alpha-16);
190458
+
190459
+ --color-success-dark: var(--color-green-400);
190460
+ --color-success-base: var(--color-green-600);
190461
+ --color-success-light: var(--color-green-alpha-16);
190462
+ --color-success-lighter: var(--color-green-alpha-10);
190463
+
190464
+ --color-away-dark: var(--color-yellow-400);
190465
+ --color-away-base: var(--color-yellow-600);
190466
+ --color-away-light: var(--color-yellow-alpha-24);
190467
+ --color-away-lighter: var(--color-yellow-alpha-16);
190468
+
190469
+ --color-feature-dark: var(--color-purple-400);
190470
+ --color-feature-base: var(--color-purple-500);
190471
+ --color-feature-light: var(--color-purple-alpha-24);
190472
+ --color-feature-lighter: var(--color-purple-alpha-16);
190473
+
190474
+ --color-verified-dark: var(--color-sky-400);
190475
+ --color-verified-base: var(--color-sky-600);
190476
+ --color-verified-light: var(--color-sky-alpha-24);
190477
+ --color-verified-lighter: var(--color-sky-alpha-16);
190478
+
190479
+ --color-highlighted-dark: var(--color-pink-400);
190480
+ --color-highlighted-base: var(--color-pink-600);
190481
+ --color-highlighted-light: var(--color-pink-alpha-24);
190482
+ --color-highlighted-lighter: var(--color-pink-alpha-16);
190483
+
190484
+ --color-stable-dark: var(--color-teal-400);
190485
+ --color-stable-base: var(--color-teal-600);
190486
+ --color-stable-light: var(--color-teal-alpha-24);
190487
+ --color-stable-lighter: var(--color-teal-alpha-16);
190488
+
190489
+ --color-primary-base: var(--color-purple-400);
190490
+ --color-primary-light: var(--color-purple-alpha-16);
190491
+ --color-primary-lighter: var(--color-purple-alpha-10);
190492
+
190493
+ --color-overlay-gray: #3333338f;
190494
+ --color-overlay-slate: #2b303b8f;
190495
+ --color-overlay: var(--color-overlay-gray);
190496
+
190497
+ --color-social-apple: #fff;
190498
+ --color-social-twitter: #fff;
190499
+ --color-social-github: #fff;
190500
+ --color-social-notion: #fff;
190501
+ --color-social-tidal: #fff;
190502
+ --color-social-amazon: #fff;
190503
+ --color-social-zendesk: #fff;
190504
+
190505
+ --shadow-complex-12:
190506
+ 0 80px 80px -40px rgba(23, 23, 23, 0),
190507
+ 0 48px 48px -24px rgba(23, 23, 23, 0);
190508
+ --shadow-complex:
190509
+ 0 20px 20px -10px rgba(23, 23, 23, 0),
190510
+ 0 10px 10px -5px rgba(23, 23, 23, 0), 0 6px 6px -3px rgba(23, 23, 23, 0),
190511
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190512
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0), 0 0 0 1px #262626,
190513
+ 0 -1px 1px -0.5px rgba(23, 23, 23, 0.04) inset;
190514
+ --shadow-complex-2:
190515
+ 0 10px 10px -5px rgba(23, 23, 23, 0), 0 6px 6px -3px rgba(23, 23, 23, 0),
190516
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190517
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0), 0 0 0 1px rgba(23, 23, 23, 0);
190518
+ --shadow-complex-4:
190519
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190520
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.02);
190521
+ --shadow-complex-5:
190522
+ 0 0 6px 0 rgba(255, 255, 255, 0.24) inset,
190523
+ 0 40px 40px -20px rgba(23, 23, 23, 0.04),
190524
+ 0 10px 10px -5px rgba(23, 23, 23, 0.04),
190525
+ 0 6px 6px -3px rgba(23, 23, 23, 0), 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190526
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0);
190527
+ --shadow-complex-6:
190528
+ 0 40px 40px -20px rgba(23, 23, 23, 0.04),
190529
+ 0 10px 10px -5px rgba(23, 23, 23, 0.04),
190530
+ 0 6px 6px -3px rgba(23, 23, 23, 0), 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190531
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0),
190532
+ 0 0 6px 0 rgba(255, 255, 255, 0.24) inset;
190533
+ --shadow-complex-7: 0 1px 2px 0 rgba(14, 18, 27, 0.24), 0 0 0 1px #4d82ff;
190534
+ --shadow-complex-8:
190535
+ 0 20px 20px -10px rgba(23, 23, 23, 0.04),
190536
+ 0 10px 10px -5px rgba(23, 23, 23, 0.04),
190537
+ 0 6px 6px -3px rgba(23, 23, 23, 0.04),
190538
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190539
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.08),
190540
+ 0 -1px 1px -0.5px rgba(23, 23, 23, 0.06) inset;
190541
+ --shadow-complex-9:
190542
+ 0 80px 40px -20px rgba(23, 23, 23, 0.04),
190543
+ 0 40px 40px -20px rgba(23, 23, 23, 0.04),
190544
+ 0 10px 10px -5px rgba(23, 23, 23, 0.04),
190545
+ 0 6px 6px -3px rgba(23, 23, 23, 0), 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190546
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0),
190547
+ 0 0 6px 0 rgba(255, 255, 255, 0.04) inset;
190548
+ --shadow-complex-10:
190549
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190550
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0);
190551
+ --shadow-complex-11:
190552
+ 0 -1px 1px -0.5px rgba(23, 23, 23, 0.04) inset,
190553
+ 0 20px 20px -10px rgba(23, 23, 23, 0),
190554
+ 0 10px 10px -5px rgba(23, 23, 23, 0), 0 6px 6px -3px rgba(23, 23, 23, 0),
190555
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190556
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0), 0 0 0 1px rgba(23, 23, 23, 0);
190557
+ --shadow-custom-input:
190558
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190559
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0), 0 0 0 1px #262626;
190560
+ --shadow-custom-input-2:
190561
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190562
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0), 0 0 0 1px #262626;
190563
+ --shadow-custom-input-4:
190564
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190565
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0);
190566
+ --shadow-custom-input-active:
190567
+ 0 6px 6px -3px rgba(23, 23, 23, 0.02),
190568
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190569
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1.4px #335cff;
190570
+ --shadow-gray-shadow: 0 0 0 1px #262626;
189974
190571
  }
190572
+ }
189975
190573
 
189976
- .dark {
189977
- --background: 222.2 84% 4.9%;
189978
- --foreground: 210 40% 98%;
189979
- --card: 222.2 84% 4.9%;
189980
- --card-foreground: 210 40% 98%;
189981
- --popover: 222.2 84% 4.9%;
189982
- --popover-foreground: 210 40% 98%;
189983
- --primary: 210 40% 98%;
189984
- --primary-foreground: 222.2 47.4% 11.2%;
189985
- --secondary: 217.2 32.6% 17.5%;
189986
- --secondary-foreground: 210 40% 98%;
189987
- --muted: 217.2 32.6% 17.5%;
189988
- --muted-foreground: 215 20.2% 65.1%;
189989
- --accent: 217.2 32.6% 17.5%;
189990
- --accent-foreground: 210 40% 98%;
189991
- --destructive: 0 62.8% 30.6%;
189992
- --destructive-foreground: 210 40% 98%;
189993
- --border: 217.2 32.6% 17.5%;
189994
- --input: 217.2 32.6% 17.5%;
189995
- --ring: 212.7 26.8% 83.9%;
190574
+ /* Class-based Dark Mode Support */
190575
+ .dark {
190576
+ --color-bg-strong-950: var(--color-neutral-0);
190577
+ --color-bg-surface-800: var(--color-neutral-200);
190578
+ --color-bg-sub-300: var(--color-neutral-600);
190579
+ --color-bg-soft-200: var(--color-neutral-700);
190580
+ --color-bg-weak-50: var(--color-neutral-800);
190581
+ --color-bg-weak-25: var(--color-neutral-900);
190582
+ --color-bg-white-0: var(--color-neutral-950);
190583
+
190584
+ --color-text-strong-950: var(--color-neutral-0);
190585
+ --color-text-sub-600: var(--color-neutral-400);
190586
+ --color-text-soft-400: var(--color-neutral-500);
190587
+ --color-text-disabled-300: var(--color-neutral-600);
190588
+ --color-text-white-0: var(--color-neutral-950);
190589
+
190590
+ --color-stroke-strong-950: var(--color-neutral-0);
190591
+ --color-stroke-sub-300: var(--color-neutral-600);
190592
+ --color-stroke-soft-200: var(--color-neutral-800);
190593
+ --color-stroke-white-0: var(--color-neutral-950);
190594
+
190595
+ --color-faded-dark: var(--color-neutral-300);
190596
+ --color-faded-base: var(--color-neutral-500);
190597
+ --color-faded-light: var(--color-neutral-alpha-24);
190598
+ --color-faded-lighter: var(--color-neutral-alpha-10);
190599
+
190600
+ --color-information-dark: var(--color-blue-400);
190601
+ --color-information-base: var(--color-blue-500);
190602
+ --color-information-light: var(--color-blue-alpha-24);
190603
+ --color-information-lighter: var(--color-blue-alpha-16);
190604
+
190605
+ --color-warning-dark: var(--color-orange-400);
190606
+ --color-warning-base: var(--color-orange-600);
190607
+ --color-warning-light: var(--color-orange-alpha-24);
190608
+ --color-warning-lighter: var(--color-orange-alpha-16);
190609
+
190610
+ --color-error-dark: var(--color-red-400);
190611
+ --color-error-base: var(--color-red-600);
190612
+ --color-error-light: var(--color-red-alpha-24);
190613
+ --color-error-lighter: var(--color-red-alpha-16);
190614
+
190615
+ --color-success-dark: var(--color-green-400);
190616
+ --color-success-base: var(--color-green-600);
190617
+ --color-success-light: var(--color-green-alpha-16);
190618
+ --color-success-lighter: var(--color-green-alpha-10);
190619
+
190620
+ --color-away-dark: var(--color-yellow-400);
190621
+ --color-away-base: var(--color-yellow-600);
190622
+ --color-away-light: var(--color-yellow-alpha-24);
190623
+ --color-away-lighter: var(--color-yellow-alpha-16);
190624
+
190625
+ --color-feature-dark: var(--color-purple-400);
190626
+ --color-feature-base: var(--color-purple-500);
190627
+ --color-feature-light: var(--color-purple-alpha-24);
190628
+ --color-feature-lighter: var(--color-purple-alpha-16);
190629
+
190630
+ --color-verified-dark: var(--color-sky-400);
190631
+ --color-verified-base: var(--color-sky-600);
190632
+ --color-verified-light: var(--color-sky-alpha-24);
190633
+ --color-verified-lighter: var(--color-sky-alpha-16);
190634
+
190635
+ --color-highlighted-dark: var(--color-pink-400);
190636
+ --color-highlighted-base: var(--color-pink-600);
190637
+ --color-highlighted-light: var(--color-pink-alpha-24);
190638
+ --color-highlighted-lighter: var(--color-pink-alpha-16);
190639
+
190640
+ --color-stable-dark: var(--color-teal-400);
190641
+ --color-stable-base: var(--color-teal-600);
190642
+ --color-stable-light: var(--color-teal-alpha-24);
190643
+ --color-stable-lighter: var(--color-teal-alpha-16);
190644
+
190645
+ --color-primary-base: var(--color-purple-400);
190646
+ --color-primary-light: var(--color-purple-alpha-16);
190647
+ --color-primary-lighter: var(--color-purple-alpha-10);
190648
+
190649
+ --color-overlay-gray: #3333338f;
190650
+ --color-overlay-slate: #2b303b8f;
190651
+ --color-overlay: var(--color-overlay-gray);
190652
+
190653
+ --color-social-apple: #fff;
190654
+ --color-social-twitter: #fff;
190655
+ --color-social-github: #fff;
190656
+ --color-social-notion: #fff;
190657
+ --color-social-tidal: #fff;
190658
+ --color-social-amazon: #fff;
190659
+ --color-social-zendesk: #fff;
190660
+
190661
+ --shadow-complex-12:
190662
+ 0 80px 80px -40px rgba(23, 23, 23, 0),
190663
+ 0 48px 48px -24px rgba(23, 23, 23, 0);
190664
+ --shadow-complex:
190665
+ 0 20px 20px -10px rgba(23, 23, 23, 0), 0 10px 10px -5px rgba(23, 23, 23, 0),
190666
+ 0 6px 6px -3px rgba(23, 23, 23, 0), 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190667
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0), 0 0 0 1px #262626,
190668
+ 0 -1px 1px -0.5px rgba(23, 23, 23, 0.04) inset;
190669
+ --shadow-complex-2:
190670
+ 0 10px 10px -5px rgba(23, 23, 23, 0), 0 6px 6px -3px rgba(23, 23, 23, 0),
190671
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0), 0 1px 1px -0.5px rgba(23, 23, 23, 0),
190672
+ 0 0 0 1px rgba(23, 23, 23, 0);
190673
+ --shadow-complex-4:
190674
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190675
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.02);
190676
+ --shadow-complex-5:
190677
+ 0 0 6px 0 rgba(255, 255, 255, 0.24) inset,
190678
+ 0 40px 40px -20px rgba(23, 23, 23, 0.04),
190679
+ 0 10px 10px -5px rgba(23, 23, 23, 0.04), 0 6px 6px -3px rgba(23, 23, 23, 0),
190680
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0), 0 1px 1px -0.5px rgba(23, 23, 23, 0);
190681
+ --shadow-complex-6:
190682
+ 0 40px 40px -20px rgba(23, 23, 23, 0.04),
190683
+ 0 10px 10px -5px rgba(23, 23, 23, 0.04), 0 6px 6px -3px rgba(23, 23, 23, 0),
190684
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0), 0 1px 1px -0.5px rgba(23, 23, 23, 0),
190685
+ 0 0 6px 0 rgba(255, 255, 255, 0.24) inset;
190686
+ --shadow-complex-7: 0 1px 2px 0 rgba(14, 18, 27, 0.24), 0 0 0 1px #4d82ff;
190687
+ --shadow-complex-8:
190688
+ 0 20px 20px -10px rgba(23, 23, 23, 0.04),
190689
+ 0 10px 10px -5px rgba(23, 23, 23, 0.04),
190690
+ 0 6px 6px -3px rgba(23, 23, 23, 0.04),
190691
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190692
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0.08),
190693
+ 0 -1px 1px -0.5px rgba(23, 23, 23, 0.06) inset;
190694
+ --shadow-complex-9:
190695
+ 0 80px 40px -20px rgba(23, 23, 23, 0.04),
190696
+ 0 40px 40px -20px rgba(23, 23, 23, 0.04),
190697
+ 0 10px 10px -5px rgba(23, 23, 23, 0.04), 0 6px 6px -3px rgba(23, 23, 23, 0),
190698
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0), 0 1px 1px -0.5px rgba(23, 23, 23, 0),
190699
+ 0 0 6px 0 rgba(255, 255, 255, 0.04) inset;
190700
+ --shadow-complex-10:
190701
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0), 0 1px 1px -0.5px rgba(23, 23, 23, 0);
190702
+ --shadow-complex-11:
190703
+ 0 -1px 1px -0.5px rgba(23, 23, 23, 0.04) inset,
190704
+ 0 20px 20px -10px rgba(23, 23, 23, 0), 0 10px 10px -5px rgba(23, 23, 23, 0),
190705
+ 0 6px 6px -3px rgba(23, 23, 23, 0), 0 3px 3px -1.5px rgba(23, 23, 23, 0),
190706
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0), 0 0 0 1px rgba(23, 23, 23, 0);
190707
+ --shadow-custom-input:
190708
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0), 0 1px 1px -0.5px rgba(23, 23, 23, 0),
190709
+ 0 0 0 1px #262626;
190710
+ --shadow-custom-input-2:
190711
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0), 0 1px 1px -0.5px rgba(23, 23, 23, 0),
190712
+ 0 0 0 1px #262626;
190713
+ --shadow-custom-input-4:
190714
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190715
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1px rgba(23, 23, 23, 0);
190716
+ --shadow-custom-input-active:
190717
+ 0 6px 6px -3px rgba(23, 23, 23, 0.02),
190718
+ 0 3px 3px -1.5px rgba(23, 23, 23, 0.04),
190719
+ 0 1px 1px -0.5px rgba(23, 23, 23, 0.04), 0 0 0 1.4px #335cff;
190720
+ --shadow-gray-shadow: 0 0 0 1px #262626;
190721
+ }
190722
+
190723
+ /* Keyframe Animations */
190724
+ @keyframes spin {
190725
+ to {
190726
+ transform: rotate(360deg);
190727
+ }
190728
+ }
190729
+
190730
+ @keyframes ping {
190731
+ 75%,
190732
+ 100% {
190733
+ transform: scale(2);
190734
+ opacity: 0;
190735
+ }
190736
+ }
190737
+
190738
+ @keyframes pulse {
190739
+ 50% {
190740
+ opacity: 0.5;
190741
+ }
190742
+ }
190743
+
190744
+ @keyframes bounce {
190745
+ 0%,
190746
+ 100% {
190747
+ transform: translateY(-25%);
190748
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
190749
+ }
190750
+ 50% {
190751
+ transform: none;
190752
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
190753
+ }
190754
+ }
190755
+
190756
+ @property --radix-accordion-content-height {
190757
+ syntax: "<length>";
190758
+ inherits: false;
190759
+ initial-value: 0px;
190760
+ }
190761
+
190762
+ @keyframes accordion-down {
190763
+ from {
190764
+ height: 0;
190765
+ opacity: 0;
190766
+ }
190767
+ to {
190768
+ height: var(--radix-accordion-content-height);
190769
+ opacity: 1;
190770
+ }
190771
+ }
190772
+
190773
+ @keyframes accordion-up {
190774
+ from {
190775
+ height: var(--radix-accordion-content-height);
190776
+ opacity: 1;
190777
+ }
190778
+ to {
190779
+ height: 0;
190780
+ opacity: 0;
189996
190781
  }
189997
190782
  }
189998
190783
 
189999
- @layer base {
190000
- * {
190001
- @apply border-border;
190784
+ @keyframes shimmer {
190785
+ 0% {
190786
+ background-position: 200% 0;
190002
190787
  }
190003
- body {
190004
- @apply bg-background text-foreground;
190788
+ 100% {
190789
+ background-position: -200% 0;
190005
190790
  }
190006
190791
  }
190792
+
190793
+ /* HapplyUI Body Styles */
190794
+ body {
190795
+ background: var(--color-bg-white-0);
190796
+ color: var(--color-text-strong-950);
190797
+ font-family: Inter, Arial, Helvetica, sans-serif;
190798
+ margin: 0;
190799
+ padding: 0;
190800
+ }
190007
190801
  `;
190008
- var CSS_TEMPLATE_V4 = `@import "tailwindcss";
190802
+ var HAPPLY_THEME_V3 = `/* HapplyUI Design Tokens — https://ui.happly.cloud */
190803
+ /* Auto-generated by @happlyui/cli — do not edit manually */
190009
190804
 
190010
- @layer base {
190011
- :root {
190012
- --background: 0 0% 100%;
190013
- --foreground: 222.2 84% 4.9%;
190014
- --card: 0 0% 100%;
190015
- --card-foreground: 222.2 84% 4.9%;
190016
- --popover: 0 0% 100%;
190017
- --popover-foreground: 222.2 84% 4.9%;
190018
- --primary: 222.2 47.4% 11.2%;
190019
- --primary-foreground: 210 40% 98%;
190020
- --secondary: 210 40% 96.1%;
190021
- --secondary-foreground: 222.2 47.4% 11.2%;
190022
- --muted: 210 40% 96.1%;
190023
- --muted-foreground: 215.4 16.3% 46.9%;
190024
- --accent: 210 40% 96.1%;
190025
- --accent-foreground: 222.2 47.4% 11.2%;
190026
- --destructive: 0 84.2% 60.2%;
190027
- --destructive-foreground: 210 40% 98%;
190028
- --border: 214.3 31.8% 91.4%;
190029
- --input: 214.3 31.8% 91.4%;
190030
- --ring: 222.2 84% 4.9%;
190031
- --radius: 0.5rem;
190805
+ :root {
190806
+ /* HapplyUI Raw Colors */
190807
+ --color-gray-950: #171717;
190808
+ --color-gray-900: #1c1c1c;
190809
+ --color-gray-800: #262626;
190810
+ --color-gray-700: #333333;
190811
+ --color-gray-600: #5c5c5c;
190812
+ --color-gray-500: #7b7b7b;
190813
+ --color-gray-400: #a3a3a3;
190814
+ --color-gray-300: #d1d1d1;
190815
+ --color-gray-200: #ebebeb;
190816
+ --color-gray-100: #f5f5f5;
190817
+ --color-gray-50: #f7f7f7;
190818
+ --color-gray-0: #ffffff;
190819
+ --color-gray-alpha-24: #a3a3a33d;
190820
+ --color-gray-alpha-16: #a3a3a329;
190821
+ --color-gray-alpha-10: #a3a3a31a;
190822
+
190823
+ --color-slate-950: #0e121b;
190824
+ --color-slate-900: #181b25;
190825
+ --color-slate-800: #222530;
190826
+ --color-slate-700: #2b303b;
190827
+ --color-slate-600: #525866;
190828
+ --color-slate-500: #717784;
190829
+ --color-slate-400: #99a0ae;
190830
+ --color-slate-300: #cacfd8;
190831
+ --color-slate-200: #eaecf0;
190832
+ --color-slate-100: #f2f5f8;
190833
+ --color-slate-50: #f5f7fa;
190834
+ --color-slate-0: #ffffff;
190835
+ --color-slate-alpha-24: #99a0ae3d;
190836
+ --color-slate-alpha-16: #99a0ae29;
190837
+ --color-slate-alpha-10: #99a0ae1a;
190838
+
190839
+ --color-blue-950: #122368;
190840
+ --color-blue-900: #182f8b;
190841
+ --color-blue-800: #1f3bad;
190842
+ --color-blue-700: #2547d0;
190843
+ --color-blue-600: #3559e9;
190844
+ --color-blue-500: #335cff;
190845
+ --color-blue-400: #4d82ff;
190846
+ --color-blue-300: #97baff;
190847
+ --color-blue-200: #c0d5ff;
190848
+ --color-blue-100: #d5e2ff;
190849
+ --color-blue-50: #ebf1ff;
190850
+ --color-blue-alpha-24: #476cff3d;
190851
+ --color-blue-alpha-16: #476cff29;
190852
+ --color-blue-alpha-10: #476cff1a;
190853
+
190854
+ --color-orange-950: #71330a;
190855
+ --color-orange-900: #96440d;
190856
+ --color-orange-800: #b75310;
190857
+ --color-orange-700: #ce5e12;
190858
+ --color-orange-600: #e16614;
190859
+ --color-orange-500: #fa7319;
190860
+ --color-orange-400: #ffa468;
190861
+ --color-orange-300: #ffc197;
190862
+ --color-orange-200: #ffd9c0;
190863
+ --color-orange-100: #ffe6d5;
190864
+ --color-orange-50: #fff3eb;
190865
+ --color-orange-alpha-24: #fa73193d;
190866
+ --color-orange-alpha-16: #fa731929;
190867
+ --color-orange-alpha-10: #fa73191a;
190868
+
190869
+ --color-red-950: #681219;
190870
+ --color-red-900: #8b1822;
190871
+ --color-red-800: #ad1f2b;
190872
+ --color-red-700: #d02533;
190873
+ --color-red-600: #e93544;
190874
+ --color-red-500: #fb3748;
190875
+ --color-red-400: #ff6875;
190876
+ --color-red-300: #ff97a0;
190877
+ --color-red-200: #ffc0c5;
190878
+ --color-red-100: #ffd5d8;
190879
+ --color-red-50: #ffebec;
190880
+ --color-red-alpha-24: #fb37483d;
190881
+ --color-red-alpha-16: #fb374829;
190882
+ --color-red-alpha-10: #fb37481a;
190883
+
190884
+ --color-green-950: #0b4627;
190885
+ --color-green-900: #16643b;
190886
+ --color-green-800: #1a7544;
190887
+ --color-green-700: #178c4e;
190888
+ --color-green-600: #1daf61;
190889
+ --color-green-500: #1fc16b;
190890
+ --color-green-400: #3ee089;
190891
+ --color-green-300: #84ebb4;
190892
+ --color-green-200: #c2f5da;
190893
+ --color-green-100: #d6f5e8;
190894
+ --color-green-50: #e3f7ec;
190895
+ --color-green-alpha-24: #1fc16b3d;
190896
+ --color-green-alpha-16: #1fc16b29;
190897
+ --color-green-alpha-10: #1fc16b1a;
190898
+
190899
+ --color-yellow-950: #624c18;
190900
+ --color-yellow-900: #86661d;
190901
+ --color-yellow-800: #a78025;
190902
+ --color-yellow-700: #c99a2c;
190903
+ --color-yellow-600: #e6a819;
190904
+ --color-yellow-500: #f6b51e;
190905
+ --color-yellow-400: #ffd268;
190906
+ --color-yellow-300: #ffe097;
190907
+ --color-yellow-200: #ffecc0;
190908
+ --color-yellow-100: #ffefcc;
190909
+ --color-yellow-50: #fffaeb;
190910
+ --color-yellow-alpha-24: #fbc64b3d;
190911
+ --color-yellow-alpha-16: #fbc64b29;
190912
+ --color-yellow-alpha-10: #fbc64b1a;
190913
+
190914
+ --color-purple-950: #351a75;
190915
+ --color-purple-900: #3d1d86;
190916
+ --color-purple-800: #4c25a7;
190917
+ --color-purple-700: #5b2cc9;
190918
+ --color-purple-600: #693ee0;
190919
+ --color-purple-500: #7d52f4;
190920
+ --color-purple-400: #8c71f6;
190921
+ --color-purple-300: #a897ff;
190922
+ --color-purple-200: #cac0ff;
190923
+ --color-purple-100: #dcd5ff;
190924
+ --color-purple-50: #efebff;
190925
+ --color-purple-alpha-24: #784def3d;
190926
+ --color-purple-alpha-16: #784def29;
190927
+ --color-purple-alpha-10: #784def1a;
190928
+
190929
+ --color-sky-950: #124b68;
190930
+ --color-sky-900: #18658b;
190931
+ --color-sky-800: #1f7ead;
190932
+ --color-sky-700: #2597d0;
190933
+ --color-sky-600: #35ade9;
190934
+ --color-sky-500: #47c2ff;
190935
+ --color-sky-400: #68cdff;
190936
+ --color-sky-300: #97dcff;
190937
+ --color-sky-200: #c0eaff;
190938
+ --color-sky-100: #d5f1ff;
190939
+ --color-sky-50: #ebf8ff;
190940
+ --color-sky-alpha-24: #47c2ff3d;
190941
+ --color-sky-alpha-16: #47c2ff29;
190942
+ --color-sky-alpha-10: #47c2ff1a;
190943
+
190944
+ --color-pink-950: #68123d;
190945
+ --color-pink-900: #8b1852;
190946
+ --color-pink-800: #ad1f66;
190947
+ --color-pink-700: #d0257a;
190948
+ --color-pink-600: #e9358f;
190949
+ --color-pink-500: #fb4ba3;
190950
+ --color-pink-400: #ff68b3;
190951
+ --color-pink-300: #ff97cb;
190952
+ --color-pink-200: #ffc0df;
190953
+ --color-pink-100: #ffd5ea;
190954
+ --color-pink-50: #ffebf4;
190955
+ --color-pink-alpha-24: #fb4ba33d;
190956
+ --color-pink-alpha-16: #fb4ba329;
190957
+ --color-pink-alpha-10: #fb4ba31a;
190958
+
190959
+ --color-teal-950: #0b463e;
190960
+ --color-teal-900: #16645a;
190961
+ --color-teal-800: #1a7569;
190962
+ --color-teal-700: #178c7d;
190963
+ --color-teal-600: #1daf9c;
190964
+ --color-teal-500: #22d3bb;
190965
+ --color-teal-400: #3fdec9;
190966
+ --color-teal-300: #84ebdd;
190967
+ --color-teal-200: #c2f5ee;
190968
+ --color-teal-100: #d0fbf5;
190969
+ --color-teal-50: #e4fbf8;
190970
+ --color-teal-alpha-24: #22d3bb3d;
190971
+ --color-teal-alpha-16: #22d3bb29;
190972
+ --color-teal-alpha-10: #22d3bb1a;
190973
+
190974
+ --color-white-alpha-24: #ffffff3d;
190975
+ --color-white-alpha-16: #ffffff29;
190976
+ --color-white-alpha-10: #ffffff1a;
190977
+
190978
+ --color-black-alpha-24: #1717173d;
190979
+ --color-black-alpha-16: #17171729;
190980
+ --color-black-alpha-10: #1717171a;
190981
+
190982
+ /* HapplyUI Dynamic Neutral Colors */
190983
+ --color-neutral-950: var(--color-gray-950);
190984
+ --color-neutral-900: var(--color-gray-900);
190985
+ --color-neutral-800: var(--color-gray-800);
190986
+ --color-neutral-700: var(--color-gray-700);
190987
+ --color-neutral-600: var(--color-gray-600);
190988
+ --color-neutral-500: var(--color-gray-500);
190989
+ --color-neutral-400: var(--color-gray-400);
190990
+ --color-neutral-300: var(--color-gray-300);
190991
+ --color-neutral-200: var(--color-gray-200);
190992
+ --color-neutral-100: var(--color-gray-100);
190993
+ --color-neutral-50: var(--color-gray-50);
190994
+ --color-neutral-0: var(--color-gray-0);
190995
+ --color-neutral-alpha-24: var(--color-gray-alpha-24);
190996
+ --color-neutral-alpha-16: var(--color-gray-alpha-16);
190997
+ --color-neutral-alpha-10: var(--color-gray-alpha-10);
190998
+
190999
+ /* HapplyUI Dynamic Primary Colors */
191000
+ --color-primary-50: var(--color-purple-50);
191001
+ --color-primary-100: var(--color-purple-100);
191002
+ --color-primary-200: var(--color-purple-200);
191003
+ --color-primary-300: var(--color-purple-300);
191004
+ --color-primary-400: var(--color-purple-400);
191005
+ --color-primary-500: var(--color-purple-500);
191006
+ --color-primary-600: var(--color-purple-600);
191007
+ --color-primary-700: var(--color-purple-700);
191008
+ --color-primary-800: var(--color-purple-800);
191009
+ --color-primary-900: var(--color-purple-900);
191010
+ --color-primary-950: var(--color-purple-950);
191011
+ --color-primary-dark: var(--color-purple-800);
191012
+ --color-primary-darker: var(--color-purple-700);
191013
+ --color-primary-base: var(--color-purple-500);
191014
+ --color-primary-light: var(--color-purple-100);
191015
+ --color-primary-lighter: var(--color-purple-50);
191016
+ --color-primary-alpha-24: var(--color-purple-alpha-24);
191017
+ --color-primary-alpha-16: var(--color-purple-alpha-16);
191018
+ --color-primary-alpha-10: var(--color-purple-alpha-10);
191019
+
191020
+ /* HapplyUI Social Colors */
191021
+ --color-social-apple: #000;
191022
+ --color-social-twitter: #010101;
191023
+ --color-social-github: #24292f;
191024
+ --color-social-notion: #1e2226;
191025
+ --color-social-tidal: #000;
191026
+ --color-social-amazon: #353e47;
191027
+ --color-social-zendesk: #16140d;
191028
+
191029
+ /* HapplyUI Overlay Colors */
191030
+ --color-overlay-gray: #3333333d;
191031
+ --color-overlay-slate: #2b303b3d;
191032
+ --color-overlay: var(--color-overlay-gray);
191033
+
191034
+ /* HapplyUI Semantic Colors */
191035
+ --color-static-black: var(--color-neutral-950);
191036
+ --color-static-white: var(--color-neutral-0);
191037
+
191038
+ --color-bg-strong-950: var(--color-neutral-950);
191039
+ --color-bg-surface-800: var(--color-neutral-800);
191040
+ --color-bg-sub-300: var(--color-neutral-300);
191041
+ --color-bg-soft-200: var(--color-neutral-200);
191042
+ --color-bg-weak-50: var(--color-neutral-50);
191043
+ --color-bg-weak-25: var(--color-neutral-50);
191044
+ --color-bg-white-0: var(--color-neutral-0);
191045
+
191046
+ --color-text-strong-950: var(--color-neutral-950);
191047
+ --color-text-sub-600: var(--color-neutral-600);
191048
+ --color-text-soft-400: var(--color-neutral-400);
191049
+ --color-text-disabled-300: var(--color-neutral-300);
191050
+ --color-text-white-0: var(--color-neutral-0);
191051
+
191052
+ --color-stroke-strong-950: var(--color-neutral-950);
191053
+ --color-stroke-sub-300: var(--color-neutral-300);
191054
+ --color-stroke-soft-200: var(--color-neutral-200);
191055
+ --color-stroke-white-0: var(--color-neutral-0);
191056
+
191057
+ --color-faded-dark: var(--color-neutral-800);
191058
+ --color-faded-base: var(--color-neutral-500);
191059
+ --color-faded-light: var(--color-neutral-200);
191060
+ --color-faded-lighter: var(--color-neutral-100);
191061
+
191062
+ --color-information-dark: var(--color-blue-950);
191063
+ --color-information-base: var(--color-blue-500);
191064
+ --color-information-light: var(--color-blue-200);
191065
+ --color-information-lighter: var(--color-blue-50);
191066
+
191067
+ --color-warning-dark: var(--color-orange-950);
191068
+ --color-warning-darker: var(--color-orange-700);
191069
+ --color-warning-base: var(--color-orange-500);
191070
+ --color-warning-light: var(--color-orange-200);
191071
+ --color-warning-lighter: var(--color-orange-50);
191072
+ --color-warning-alpha-10: var(--color-orange-alpha-10);
191073
+
191074
+ --color-error-dark: var(--color-red-950);
191075
+ --color-error-base: var(--color-red-500);
191076
+ --color-error-light: var(--color-red-200);
191077
+ --color-error-lighter: var(--color-red-50);
191078
+
191079
+ --color-success-dark: var(--color-green-950);
191080
+ --color-success-darker: var(--color-green-700);
191081
+ --color-success-base: var(--color-green-500);
191082
+ --color-success-light: var(--color-green-200);
191083
+ --color-success-lighter: var(--color-green-50);
191084
+ --color-success-alpha-10: var(--color-green-alpha-10);
191085
+
191086
+ --color-away-dark: var(--color-yellow-950);
191087
+ --color-away-base: var(--color-yellow-500);
191088
+ --color-away-light: var(--color-yellow-200);
191089
+ --color-away-lighter: var(--color-yellow-50);
191090
+
191091
+ --color-feature-dark: var(--color-purple-950);
191092
+ --color-feature-base: var(--color-purple-500);
191093
+ --color-feature-light: var(--color-purple-200);
191094
+ --color-feature-lighter: var(--color-purple-50);
191095
+
191096
+ --color-verified-dark: var(--color-sky-950);
191097
+ --color-verified-base: var(--color-sky-500);
191098
+ --color-verified-light: var(--color-sky-200);
191099
+ --color-verified-lighter: var(--color-sky-50);
191100
+
191101
+ --color-highlighted-dark: var(--color-pink-950);
191102
+ --color-highlighted-base: var(--color-pink-500);
191103
+ --color-highlighted-light: var(--color-pink-200);
191104
+ --color-highlighted-lighter: var(--color-pink-50);
191105
+
191106
+ --color-stable-dark: var(--color-teal-950);
191107
+ --color-stable-base: var(--color-teal-500);
191108
+ --color-stable-light: var(--color-teal-200);
191109
+ --color-stable-lighter: var(--color-teal-50);
190032
191110
  }
190033
191111
 
190034
191112
  .dark {
190035
- --background: 222.2 84% 4.9%;
190036
- --foreground: 210 40% 98%;
190037
- --card: 222.2 84% 4.9%;
190038
- --card-foreground: 210 40% 98%;
190039
- --popover: 222.2 84% 4.9%;
190040
- --popover-foreground: 210 40% 98%;
190041
- --primary: 210 40% 98%;
190042
- --primary-foreground: 222.2 47.4% 11.2%;
190043
- --secondary: 217.2 32.6% 17.5%;
190044
- --secondary-foreground: 210 40% 98%;
190045
- --muted: 217.2 32.6% 17.5%;
190046
- --muted-foreground: 215 20.2% 65.1%;
190047
- --accent: 217.2 32.6% 17.5%;
190048
- --accent-foreground: 210 40% 98%;
190049
- --destructive: 0 62.8% 30.6%;
190050
- --destructive-foreground: 210 40% 98%;
190051
- --border: 217.2 32.6% 17.5%;
190052
- --input: 217.2 32.6% 17.5%;
190053
- --ring: 212.7 26.8% 83.9%;
191113
+ --color-bg-strong-950: var(--color-neutral-0);
191114
+ --color-bg-surface-800: var(--color-neutral-200);
191115
+ --color-bg-sub-300: var(--color-neutral-600);
191116
+ --color-bg-soft-200: var(--color-neutral-700);
191117
+ --color-bg-weak-50: var(--color-neutral-800);
191118
+ --color-bg-weak-25: var(--color-neutral-900);
191119
+ --color-bg-white-0: var(--color-neutral-950);
191120
+
191121
+ --color-text-strong-950: var(--color-neutral-0);
191122
+ --color-text-sub-600: var(--color-neutral-400);
191123
+ --color-text-soft-400: var(--color-neutral-500);
191124
+ --color-text-disabled-300: var(--color-neutral-600);
191125
+ --color-text-white-0: var(--color-neutral-950);
191126
+
191127
+ --color-stroke-strong-950: var(--color-neutral-0);
191128
+ --color-stroke-sub-300: var(--color-neutral-600);
191129
+ --color-stroke-soft-200: var(--color-neutral-800);
191130
+ --color-stroke-white-0: var(--color-neutral-950);
191131
+
191132
+ --color-faded-dark: var(--color-neutral-300);
191133
+ --color-faded-base: var(--color-neutral-500);
191134
+ --color-faded-light: var(--color-neutral-alpha-24);
191135
+ --color-faded-lighter: var(--color-neutral-alpha-10);
191136
+
191137
+ --color-information-dark: var(--color-blue-400);
191138
+ --color-information-base: var(--color-blue-500);
191139
+ --color-information-light: var(--color-blue-alpha-24);
191140
+ --color-information-lighter: var(--color-blue-alpha-16);
191141
+
191142
+ --color-warning-dark: var(--color-orange-400);
191143
+ --color-warning-base: var(--color-orange-600);
191144
+ --color-warning-light: var(--color-orange-alpha-24);
191145
+ --color-warning-lighter: var(--color-orange-alpha-16);
191146
+
191147
+ --color-error-dark: var(--color-red-400);
191148
+ --color-error-base: var(--color-red-600);
191149
+ --color-error-light: var(--color-red-alpha-24);
191150
+ --color-error-lighter: var(--color-red-alpha-16);
191151
+
191152
+ --color-success-dark: var(--color-green-400);
191153
+ --color-success-base: var(--color-green-600);
191154
+ --color-success-light: var(--color-green-alpha-16);
191155
+ --color-success-lighter: var(--color-green-alpha-10);
191156
+
191157
+ --color-away-dark: var(--color-yellow-400);
191158
+ --color-away-base: var(--color-yellow-600);
191159
+ --color-away-light: var(--color-yellow-alpha-24);
191160
+ --color-away-lighter: var(--color-yellow-alpha-16);
191161
+
191162
+ --color-feature-dark: var(--color-purple-400);
191163
+ --color-feature-base: var(--color-purple-500);
191164
+ --color-feature-light: var(--color-purple-alpha-24);
191165
+ --color-feature-lighter: var(--color-purple-alpha-16);
191166
+
191167
+ --color-verified-dark: var(--color-sky-400);
191168
+ --color-verified-base: var(--color-sky-600);
191169
+ --color-verified-light: var(--color-sky-alpha-24);
191170
+ --color-verified-lighter: var(--color-sky-alpha-16);
191171
+
191172
+ --color-highlighted-dark: var(--color-pink-400);
191173
+ --color-highlighted-base: var(--color-pink-600);
191174
+ --color-highlighted-light: var(--color-pink-alpha-24);
191175
+ --color-highlighted-lighter: var(--color-pink-alpha-16);
191176
+
191177
+ --color-stable-dark: var(--color-teal-400);
191178
+ --color-stable-base: var(--color-teal-600);
191179
+ --color-stable-light: var(--color-teal-alpha-24);
191180
+ --color-stable-lighter: var(--color-teal-alpha-16);
191181
+
191182
+ --color-primary-base: var(--color-purple-400);
191183
+ --color-primary-light: var(--color-purple-alpha-16);
191184
+ --color-primary-lighter: var(--color-purple-alpha-10);
191185
+
191186
+ --color-overlay-gray: #3333338f;
191187
+ --color-overlay-slate: #2b303b8f;
191188
+ --color-overlay: var(--color-overlay-gray);
191189
+
191190
+ --color-social-apple: #fff;
191191
+ --color-social-twitter: #fff;
191192
+ --color-social-github: #fff;
191193
+ --color-social-notion: #fff;
191194
+ --color-social-tidal: #fff;
191195
+ --color-social-amazon: #fff;
191196
+ --color-social-zendesk: #fff;
191197
+ }
191198
+
191199
+ @property --radix-accordion-content-height {
191200
+ syntax: "<length>";
191201
+ inherits: false;
191202
+ initial-value: 0px;
191203
+ }
191204
+
191205
+ @keyframes accordion-down {
191206
+ from {
191207
+ height: 0;
191208
+ opacity: 0;
191209
+ }
191210
+ to {
191211
+ height: var(--radix-accordion-content-height);
191212
+ opacity: 1;
190054
191213
  }
191214
+ }
190055
191215
 
190056
- * {
190057
- border-color: hsl(var(--border));
191216
+ @keyframes accordion-up {
191217
+ from {
191218
+ height: var(--radix-accordion-content-height);
191219
+ opacity: 1;
191220
+ }
191221
+ to {
191222
+ height: 0;
191223
+ opacity: 0;
190058
191224
  }
191225
+ }
190059
191226
 
190060
- body {
190061
- background-color: hsl(var(--background));
190062
- color: hsl(var(--foreground));
191227
+ @keyframes shimmer {
191228
+ 0% {
191229
+ background-position: 200% 0;
190063
191230
  }
191231
+ 100% {
191232
+ background-position: -200% 0;
191233
+ }
191234
+ }
191235
+
191236
+ body {
191237
+ background: var(--color-bg-white-0);
191238
+ color: var(--color-text-strong-950);
191239
+ font-family: Inter, Arial, Helvetica, sans-serif;
191240
+ margin: 0;
191241
+ padding: 0;
191242
+ }
191243
+ `;
191244
+
191245
+ // src/commands/init.ts
191246
+ var HAPPLY_THEME_FILE = "happly-theme.css";
191247
+ var UTILS_TEMPLATE = `import { type ClassValue, clsx } from "clsx";
191248
+ import { twMerge } from "tailwind-merge";
191249
+
191250
+ export function cn(...inputs: ClassValue[]) {
191251
+ return twMerge(clsx(inputs));
191252
+ }
191253
+ `;
191254
+ var UTILS_JS_TEMPLATE = `import { clsx } from "clsx";
191255
+ import { twMerge } from "tailwind-merge";
191256
+
191257
+ export function cn(...inputs) {
191258
+ return twMerge(clsx(inputs));
190064
191259
  }
190065
191260
  `;
190066
191261
  async function init(options) {
@@ -190102,44 +191297,22 @@ async function init(options) {
190102
191297
  let config;
190103
191298
  if (useDefaults) {
190104
191299
  config = createDefaultConfig(projectInfo);
190105
- if (options.baseColor && BASE_COLORS.includes(options.baseColor)) {
190106
- config.tailwind.baseColor = options.baseColor;
190107
- }
190108
- if (options.cssVariables === false) {
190109
- config.tailwind.cssVariables = false;
190110
- }
190111
191300
  } else {
190112
191301
  const responses = await import_prompts.default([
190113
- {
190114
- type: "select",
190115
- name: "baseColor",
190116
- message: "Which base color would you like to use?",
190117
- choices: BASE_COLORS.map((color) => ({
190118
- title: color.charAt(0).toUpperCase() + color.slice(1),
190119
- value: color
190120
- })),
190121
- initial: 0
190122
- },
190123
- {
190124
- type: "confirm",
190125
- name: "cssVariables",
190126
- message: "Would you like to use CSS variables for colors?",
190127
- initial: true
190128
- },
190129
191302
  {
190130
191303
  type: "text",
190131
191304
  name: "componentsPath",
190132
191305
  message: "Where should components be installed?",
190133
- initial: projectInfo.isSrcDir ? "src/components/ui" : "components/ui"
191306
+ initial: projectInfo.isSrcDir ? "src/components/happly-ui" : "components/happly-ui"
190134
191307
  },
190135
191308
  {
190136
191309
  type: "text",
190137
191310
  name: "utilsPath",
190138
191311
  message: "Where should utils be installed?",
190139
- initial: projectInfo.isSrcDir ? "src/lib/utils" : "lib/utils"
191312
+ initial: projectInfo.isSrcDir ? "src/lib/happly-ui/happly-ui-utils" : "lib/happly-ui/happly-ui-utils"
190140
191313
  }
190141
191314
  ]);
190142
- if (!responses.baseColor) {
191315
+ if (responses.componentsPath === undefined) {
190143
191316
  logger.error("Initialization cancelled.");
190144
191317
  process.exit(1);
190145
191318
  }
@@ -190148,7 +191321,7 @@ async function init(options) {
190148
191321
  const writeSpinner = ora("Writing configuration...").start();
190149
191322
  try {
190150
191323
  await writeConfig(cwd, config);
190151
- writeSpinner.text = "Created components.json";
191324
+ writeSpinner.text = `Created ${CONFIG_FILE}`;
190152
191325
  const srcPrefix = config.srcDir ? "src/" : "";
190153
191326
  const utilsPath = srcPrefix + config.aliases.utils.replace("@/", "");
190154
191327
  const utilsContent = config.tsx ? UTILS_TEMPLATE : UTILS_JS_TEMPLATE;
@@ -190156,29 +191329,60 @@ async function init(options) {
190156
191329
  await writeComponentFile(cwd, `${utilsPath}${utilsExt}`, utilsContent);
190157
191330
  writeSpinner.text = `Created ${utilsPath}${utilsExt}`;
190158
191331
  const cssPath = config.tailwind.css;
190159
- const fullCssPath = path4.join(cwd, cssPath);
190160
- const cssTemplate = projectInfo.tailwindVersion === 4 ? CSS_TEMPLATE_V4 : CSS_TEMPLATE_V3;
190161
- if (!existsSync4(fullCssPath)) {
190162
- await writeComponentFile(cwd, cssPath, cssTemplate);
190163
- writeSpinner.text = `Created ${cssPath}`;
191332
+ const cssDir = path4.dirname(path4.join(cwd, cssPath));
191333
+ const themePath = path4.join(cssDir, HAPPLY_THEME_FILE);
191334
+ const themeContent = projectInfo.tailwindVersion === 4 ? HAPPLY_THEME_V4 : HAPPLY_THEME_V3;
191335
+ if (existsSync4(themePath) && !useDefaults) {
191336
+ const { overwriteTheme } = await import_prompts.default({
191337
+ type: "confirm",
191338
+ name: "overwriteTheme",
191339
+ message: `${HAPPLY_THEME_FILE} already exists. Overwrite?`,
191340
+ initial: true
191341
+ });
191342
+ if (overwriteTheme) {
191343
+ await writeFile3(themePath, themeContent, "utf-8");
191344
+ writeSpinner.text = `Updated ${HAPPLY_THEME_FILE}`;
191345
+ }
190164
191346
  } else {
190165
- const existingCss = await readFile4(fullCssPath, "utf-8");
190166
- if (!existingCss.includes("--background:")) {
190167
- if (projectInfo.tailwindVersion === 4 && existingCss.includes('@import "tailwindcss"')) {
190168
- const updatedCss = existingCss.replace('@import "tailwindcss";', cssTemplate);
190169
- await writeFile3(fullCssPath, updatedCss, "utf-8");
190170
- } else {
190171
- if (existingCss.includes("@tailwind base")) {
190172
- const templateWithoutDirectives = cssTemplate.replace(/@tailwind\s+(base|components|utilities);\n?/g, "");
190173
- await writeFile3(fullCssPath, existingCss + `
190174
- ` + templateWithoutDirectives, "utf-8");
191347
+ await writeFile3(themePath, themeContent, "utf-8");
191348
+ writeSpinner.text = `Created ${HAPPLY_THEME_FILE}`;
191349
+ }
191350
+ const fullCssPath = path4.join(cwd, cssPath);
191351
+ if (existsSync4(fullCssPath)) {
191352
+ let existingCss = await readFile4(fullCssPath, "utf-8");
191353
+ if (existingCss.includes("--background:") || existingCss.includes("--foreground:")) {
191354
+ logger.info("Existing shadcn design tokens detected. These will continue to work alongside HapplyUI tokens.");
191355
+ }
191356
+ if (existingCss.includes("--color-neutral-") || existingCss.includes("--color-primary-")) {
191357
+ logger.info("Existing design system tokens detected. Your tokens will take precedence over happly-theme.css defaults.");
191358
+ }
191359
+ if (!existingCss.includes(HAPPLY_THEME_FILE)) {
191360
+ const importStatement = `@import "./${HAPPLY_THEME_FILE}";
191361
+ `;
191362
+ if (projectInfo.tailwindVersion === 4) {
191363
+ if (existingCss.includes('@import "tailwindcss"')) {
191364
+ existingCss = existingCss.replace('@import "tailwindcss";', `@import "tailwindcss";
191365
+ ${importStatement}`);
190175
191366
  } else {
190176
- await writeFile3(fullCssPath, cssTemplate + `
190177
- ` + existingCss, "utf-8");
191367
+ existingCss = importStatement + existingCss;
190178
191368
  }
191369
+ } else {
191370
+ existingCss = importStatement + existingCss;
190179
191371
  }
190180
- writeSpinner.text = `Updated ${cssPath}`;
191372
+ await writeFile3(fullCssPath, existingCss, "utf-8");
191373
+ writeSpinner.text = `Updated ${cssPath} with happly-theme import`;
190181
191374
  }
191375
+ } else {
191376
+ const cssContent = projectInfo.tailwindVersion === 4 ? `@import "tailwindcss";
191377
+ @import "./${HAPPLY_THEME_FILE}";
191378
+ ` : `@import "./${HAPPLY_THEME_FILE}";
191379
+
191380
+ @tailwind base;
191381
+ @tailwind components;
191382
+ @tailwind utilities;
191383
+ `;
191384
+ await writeComponentFile(cwd, cssPath, cssContent);
191385
+ writeSpinner.text = `Created ${cssPath}`;
190182
191386
  }
190183
191387
  writeSpinner.text = "Applying Happly UI design tokens...";
190184
191388
  await updateTailwindConfig(cwd, config, projectInfo.tailwindVersion);
@@ -190193,37 +191397,32 @@ async function init(options) {
190193
191397
  await installDependencies(cwd, deps, {
190194
191398
  packageManager: projectInfo.packageManager
190195
191399
  });
190196
- await installDependencies(cwd, ["class-variance-authority"], {
190197
- packageManager: projectInfo.packageManager
190198
- });
190199
191400
  installSpinner.succeed("Dependencies installed");
190200
191401
  } catch {
190201
191402
  installSpinner.fail("Failed to install dependencies");
190202
- logger.warn("Please install manually: clsx tailwind-merge class-variance-authority");
191403
+ logger.warn("Please install manually: clsx tailwind-merge");
190203
191404
  }
190204
191405
  logger.break();
190205
191406
  logger.success("Project initialized successfully!");
190206
191407
  logger.break();
190207
191408
  logger.info("You can now add components:");
190208
- logger.log(` ${logger.highlight("bunx --bun happlyui add button")}`);
191409
+ logger.log(` ${logger.highlight("bunx --bun @happlyui/cli add button")}`);
190209
191410
  logger.break();
190210
191411
  }
190211
191412
  function createDefaultConfig(projectInfo) {
190212
191413
  const isSrcDir = projectInfo.isSrcDir;
190213
191414
  return {
190214
- $schema: "https://cdn.jsdelivr.net/gh/Mindful-Connect/happly-ui-npm@production/schemas/components.json",
191415
+ $schema: "https://cdn.jsdelivr.net/gh/Mindful-Connect/happly-ui-npm@production/schemas/happly-ui-components.json",
190215
191416
  srcDir: isSrcDir,
190216
191417
  tailwind: {
190217
191418
  config: projectInfo.tailwindConfig || "tailwind.config.ts",
190218
- css: projectInfo.tailwindCss || (isSrcDir ? "src/index.css" : "index.css"),
190219
- baseColor: "slate",
190220
- cssVariables: true
191419
+ css: projectInfo.tailwindCss || (isSrcDir ? "src/index.css" : "index.css")
190221
191420
  },
190222
191421
  tsx: projectInfo.isTypeScript,
190223
191422
  aliases: {
190224
191423
  components: "@/components",
190225
- utils: "@/lib/utils",
190226
- ui: "@/components/ui",
191424
+ utils: "@/lib/happly-ui/happly-ui-utils",
191425
+ ui: "@/components/happly-ui",
190227
191426
  hooks: "@/hooks",
190228
191427
  lib: "@/lib"
190229
191428
  }
@@ -190231,13 +191430,11 @@ function createDefaultConfig(projectInfo) {
190231
191430
  }
190232
191431
  function createConfig(projectInfo, responses) {
190233
191432
  return {
190234
- $schema: "https://cdn.jsdelivr.net/gh/Mindful-Connect/happly-ui-npm@production/schemas/components.json",
191433
+ $schema: "https://cdn.jsdelivr.net/gh/Mindful-Connect/happly-ui-npm@production/schemas/happly-ui-components.json",
190235
191434
  srcDir: projectInfo.isSrcDir,
190236
191435
  tailwind: {
190237
191436
  config: projectInfo.tailwindConfig || "tailwind.config.ts",
190238
- css: projectInfo.tailwindCss || (projectInfo.isSrcDir ? "src/index.css" : "index.css"),
190239
- baseColor: responses.baseColor,
190240
- cssVariables: responses.cssVariables
191437
+ css: projectInfo.tailwindCss || (projectInfo.isSrcDir ? "src/index.css" : "index.css")
190241
191438
  },
190242
191439
  tsx: projectInfo.isTypeScript,
190243
191440
  aliases: {
@@ -190252,6 +191449,8 @@ function createConfig(projectInfo, responses) {
190252
191449
 
190253
191450
  // src/commands/add.ts
190254
191451
  var import_prompts2 = __toESM(require_prompts3(), 1);
191452
+ import { readFile as readFile6, writeFile as writeFile4 } from "fs/promises";
191453
+ import { existsSync as existsSync6 } from "fs";
190255
191454
  import path6 from "path";
190256
191455
  init_config();
190257
191456
  init_registry();
@@ -190259,6 +191458,9 @@ init_registry();
190259
191458
  // src/utils/transform.ts
190260
191459
  function transformComponent(file, config) {
190261
191460
  let content = file.content;
191461
+ if (file.type === "registry:style" || file.path.endsWith(".css")) {
191462
+ return content;
191463
+ }
190262
191464
  content = transformImports(content, config);
190263
191465
  if (!config.tsx) {
190264
191466
  content = transformToJs(content);
@@ -190270,22 +191472,21 @@ function transformImports(content, config) {
190270
191472
  "@/components/ui": config.aliases.ui,
190271
191473
  "@/components": config.aliases.components,
190272
191474
  "@/lib/utils": config.aliases.utils,
190273
- "@/lib": config.aliases.lib || "@/lib",
191475
+ "@/lib/happly-ui-utils": config.aliases.utils,
191476
+ "@/lib": (config.aliases.lib || "@/lib") + "/happly-ui",
190274
191477
  "@/hooks": config.aliases.hooks || "@/hooks"
190275
191478
  };
190276
- let result = content;
190277
- for (const [from, to] of Object.entries(pathMappings)) {
190278
- const patterns = [
190279
- new RegExp(`from ["']${escapeRegex(from)}(/[^"']*)?["']`, "g"),
190280
- new RegExp(`import ["']${escapeRegex(from)}(/[^"']*)?["']`, "g")
190281
- ];
190282
- for (const pattern of patterns) {
190283
- result = result.replace(pattern, (match) => {
190284
- return match.replace(from, to);
190285
- });
191479
+ const keys = Object.keys(pathMappings).sort((a, b) => b.length - a.length);
191480
+ return content.replace(/((?:from|import)\s+["'])([^"']*)(["'])/g, (match, prefix, path6, suffix) => {
191481
+ for (const key of keys) {
191482
+ if (path6 === key || path6.startsWith(key + "/")) {
191483
+ const to = pathMappings[key];
191484
+ const newPath = path6.replace(key, to);
191485
+ return `${prefix}${newPath}${suffix}`;
191486
+ }
190286
191487
  }
190287
- }
190288
- return result;
191488
+ return match;
191489
+ });
190289
191490
  }
190290
191491
  function transformToJs(content) {
190291
191492
  content = content.replace(/import\s+type\s*\{[^}]*\}\s*from\s*['"][^'"]+['"];?\n?/g, "");
@@ -190296,9 +191497,6 @@ function transformToJs(content) {
190296
191497
  content = content.replace(/\s+as\s+\w+(\[\])?/g, "");
190297
191498
  return content;
190298
191499
  }
190299
- function escapeRegex(str) {
190300
- return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
190301
- }
190302
191500
 
190303
191501
  // src/commands/add.ts
190304
191502
  async function add(components, options) {
@@ -190367,7 +191565,12 @@ async function add(components, options) {
190367
191565
  for (const item of items) {
190368
191566
  for (const file of item.files) {
190369
191567
  const fileType = file.type || item.type;
190370
- const fileName = path6.basename(file.path);
191568
+ let fileName = path6.basename(file.path);
191569
+ if (fileType === "registry:lib") {
191570
+ if (file.path.startsWith("lib/")) {
191571
+ fileName = file.path.substring(4);
191572
+ }
191573
+ }
190371
191574
  const targetPath = getComponentPath(item.name, fileType, config, fileName);
190372
191575
  if (componentExists(cwd, targetPath)) {
190373
191576
  existingFiles.push(targetPath);
@@ -190395,7 +191598,12 @@ async function add(components, options) {
190395
191598
  for (const item of items) {
190396
191599
  for (const file of item.files) {
190397
191600
  const fileType = file.type || item.type;
190398
- const fileName = path6.basename(file.path);
191601
+ let fileName = path6.basename(file.path);
191602
+ if (fileType === "registry:lib") {
191603
+ if (file.path.startsWith("lib/")) {
191604
+ fileName = file.path.substring(4);
191605
+ }
191606
+ }
190399
191607
  const targetPath = getComponentPath(item.name, fileType, config, fileName);
190400
191608
  const transformedContent = transformComponent(file, config);
190401
191609
  await writeComponentFile(cwd, targetPath, transformedContent);
@@ -190407,6 +191615,10 @@ async function add(components, options) {
190407
191615
  writeSpinner.fail("Failed to install components");
190408
191616
  throw error;
190409
191617
  }
191618
+ const styleFiles = writtenFiles.filter((f) => f.endsWith(".css"));
191619
+ if (styleFiles.length > 0) {
191620
+ await injectStyleImports(cwd, config, styleFiles);
191621
+ }
190410
191622
  const { dependencies, devDependencies } = collectDependencies(items);
190411
191623
  if (dependencies.length > 0) {
190412
191624
  const depsSpinner = ora("Installing dependencies...").start();
@@ -190461,6 +191673,43 @@ async function add(components, options) {
190461
191673
  function pascalCase(str) {
190462
191674
  return str.split("-").map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
190463
191675
  }
191676
+ async function injectStyleImports(cwd, config, styleFiles) {
191677
+ const cssPath = path6.join(cwd, config.tailwind.css);
191678
+ if (!existsSync6(cssPath))
191679
+ return;
191680
+ let css = await readFile6(cssPath, "utf-8");
191681
+ let added = false;
191682
+ for (const styleFile of styleFiles) {
191683
+ const cssDir = path6.dirname(cssPath);
191684
+ let rel = path6.relative(cssDir, path6.join(cwd, styleFile));
191685
+ rel = rel.split(path6.sep).join("/");
191686
+ if (!rel.startsWith("."))
191687
+ rel = "./" + rel;
191688
+ if (css.includes(rel))
191689
+ continue;
191690
+ const importStatement = `@import '${rel}';`;
191691
+ const lines = css.split(`
191692
+ `);
191693
+ let lastImportIndex = -1;
191694
+ for (let i = 0;i < lines.length; i++) {
191695
+ if (lines[i].trimStart().startsWith("@import ")) {
191696
+ lastImportIndex = i;
191697
+ }
191698
+ }
191699
+ if (lastImportIndex >= 0) {
191700
+ lines.splice(lastImportIndex + 1, 0, importStatement);
191701
+ } else {
191702
+ lines.unshift(importStatement);
191703
+ }
191704
+ css = lines.join(`
191705
+ `);
191706
+ added = true;
191707
+ }
191708
+ if (added) {
191709
+ await writeFile4(cssPath, css, "utf-8");
191710
+ logger.info(`Added style import${styleFiles.length > 1 ? "s" : ""} to ${config.tailwind.css}`);
191711
+ }
191712
+ }
190464
191713
 
190465
191714
  // src/index.ts
190466
191715
  var import_picocolors2 = __toESM(require_picocolors(), 1);
@@ -190468,7 +191717,7 @@ var require2 = createRequire2(import.meta.url);
190468
191717
  var { version } = require2("../package.json");
190469
191718
  var program2 = new Command;
190470
191719
  program2.name("happlyui").description("Add HapplyUI components to your project").version(version);
190471
- program2.command("init").description("Initialize your project with HapplyUI").option("-c, --cwd <path>", "Working directory", process.cwd()).option("-y, --yes", "Skip prompts and use defaults").option("--defaults", "Use default configuration").option("--base-color <color>", "Base color theme (slate, gray, zinc, neutral, stone)").option("--no-css-variables", "Disable CSS variables for colors").action(init);
191720
+ program2.command("init").description("Initialize your project with HapplyUI").option("-c, --cwd <path>", "Working directory", process.cwd()).option("-y, --yes", "Skip prompts and use defaults").option("--defaults", "Use default configuration").action(init);
190472
191721
  program2.command("add").description("Add components to your project").argument("[components...]", "Components to add").option("-c, --cwd <path>", "Working directory", process.cwd()).option("-y, --yes", "Skip prompts").option("-o, --overwrite", "Overwrite existing files").option("-a, --all", "Add all available components").option("-p, --path <path>", "Custom path for components").action(add);
190473
191722
  program2.command("list").description("List all available components").option("-c, --cwd <path>", "Working directory", process.cwd()).action(async (options) => {
190474
191723
  const { getAvailableComponents: getAvailableComponents2 } = await Promise.resolve().then(() => (init_registry(), exports_registry));