@tutti-os/ui-system 0.0.7 → 0.0.9

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 (35) hide show
  1. package/AGENTS.md +3 -3
  2. package/README.md +11 -11
  3. package/agent/install-skill.mjs +8 -8
  4. package/agent/{nextop-ui-system → tutti-ui-system}/SKILL.md +4 -4
  5. package/agent/{nextop-ui-system → tutti-ui-system}/scripts/create-business-preview.mjs +8 -8
  6. package/dist/{chunk-GX3U3V36.js → chunk-K57FUMQG.js} +11 -11
  7. package/dist/chunk-K57FUMQG.js.map +1 -0
  8. package/dist/{chunk-XHA7R2WC.js → chunk-RKQ4FPGY.js} +4 -4
  9. package/dist/chunk-RKQ4FPGY.js.map +1 -0
  10. package/dist/{chunk-QXXI5OBT.js → chunk-YIAY5DKS.js} +2 -2
  11. package/dist/chunk-YIAY5DKS.js.map +1 -0
  12. package/dist/components/index.js +1 -1
  13. package/dist/date-format.d.ts +5 -5
  14. package/dist/date-format.js +7 -7
  15. package/dist/dev-vite.d.ts +3 -3
  16. package/dist/dev-vite.js +6 -6
  17. package/dist/dev-vite.js.map +1 -1
  18. package/dist/icons/index.d.ts +2 -2
  19. package/dist/icons/index.js +3 -3
  20. package/dist/index.d.ts +2 -2
  21. package/dist/index.js +11 -11
  22. package/dist/metadata/components.json +5 -5
  23. package/dist/metadata/components.schema.json +2 -2
  24. package/dist/metadata/index.js +5 -5
  25. package/dist/metadata/index.js.map +1 -1
  26. package/dist/styles/base.css +5 -5
  27. package/package.json +3 -3
  28. package/ui-system.md +18 -18
  29. package/dist/chunk-GX3U3V36.js.map +0 -1
  30. package/dist/chunk-QXXI5OBT.js.map +0 -1
  31. package/dist/chunk-XHA7R2WC.js.map +0 -1
  32. /package/agent/{nextop-ui-system → tutti-ui-system}/references/extract-base-component.md +0 -0
  33. /package/agent/{nextop-ui-system → tutti-ui-system}/references/maintain-inventory.md +0 -0
  34. /package/agent/{nextop-ui-system → tutti-ui-system}/references/promote-business-component.md +0 -0
  35. /package/agent/{nextop-ui-system → tutti-ui-system}/references/use-existing-component.md +0 -0
package/AGENTS.md CHANGED
@@ -5,10 +5,10 @@
5
5
  This file applies to `packages/ui/system/*`.
6
6
 
7
7
  `packages/ui/system` is the source package for `@tutti-os/ui-system`, the
8
- shared Nextop UI component library. It owns shared CSS tokens, theme styles,
8
+ shared Tutti UI component library. It owns shared CSS tokens, theme styles,
9
9
  icon exports, presentation primitives, reusable host-agnostic business display
10
10
  components, component metadata, storyboard inventory, and the bundled
11
- `nextop-ui-system` agent skill.
11
+ `tutti-ui-system` agent skill.
12
12
 
13
13
  Before changing components, icons, metadata, styles, storyboard examples, or
14
14
  the bundled skill, read `ui-system.md`.
@@ -83,7 +83,7 @@ Rules:
83
83
  - build primitives for a calm workbench shell, not for marketing-card theatrics
84
84
  - every public component, icon, utility, or style entry must have metadata with
85
85
  a stable readable `id` and `layer`
86
- - use the single `nextop-ui-system` skill for component reuse, extraction,
86
+ - use the single `tutti-ui-system` skill for component reuse, extraction,
87
87
  base/business classification, metadata, and storyboard work
88
88
 
89
89
  ## React Component Splitting Rules
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @tutti-os/ui-system
2
2
 
3
- Shared Nextop UI tokens, styles, icons, and low-level React primitives.
3
+ Shared Tutti UI tokens, styles, icons, and low-level React primitives.
4
4
 
5
5
  This package is published to npm as `@tutti-os/ui-system`.
6
6
 
@@ -21,7 +21,7 @@ External consumers should install the package normally:
21
21
  pnpm add @tutti-os/ui-system
22
22
  ```
23
23
 
24
- For local source sync from a Nextop checkout, start the UI system dev server:
24
+ For local source sync from a Tutti checkout, start the UI system dev server:
25
25
 
26
26
  ```bash
27
27
  pnpm --filter @tutti-os/ui-system dev:server
@@ -30,22 +30,22 @@ pnpm --filter @tutti-os/ui-system dev:server
30
30
  Then add the Vite plugin in the external app:
31
31
 
32
32
  ```ts
33
- import { nextopUISystemDev } from "@tutti-os/ui-system/dev-vite";
33
+ import { tuttiUISystemDev } from "@tutti-os/ui-system/dev-vite";
34
34
 
35
35
  export default defineConfig({
36
- plugins: [nextopUISystemDev()]
36
+ plugins: [tuttiUISystemDev()]
37
37
  });
38
38
  ```
39
39
 
40
40
  When the dev server is reachable, the plugin mirrors the allowed UI-system
41
- source and skill-support files into `.nextop-ui-system-dev/` and aliases the
41
+ source and skill-support files into `.tutti-ui-system-dev/` and aliases the
42
42
  stable package entrypoints to that cache. When the dev server is unavailable,
43
43
  resolution falls back to the installed package in `node_modules`.
44
44
 
45
45
  Add the generated cache to the external app's `.gitignore`:
46
46
 
47
47
  ```text
48
- .nextop-ui-system-dev/
48
+ .tutti-ui-system-dev/
49
49
  ```
50
50
 
51
51
  If the external app uses Tailwind CSS, include both the installed package output
@@ -53,7 +53,7 @@ and the generated dev cache in the app's Tailwind source scan:
53
53
 
54
54
  ```css
55
55
  @source "../node_modules/@tutti-os/ui-system/dist";
56
- @source "../.nextop-ui-system-dev";
56
+ @source "../.tutti-ui-system-dev";
57
57
  ```
58
58
 
59
59
  ## Agent Usage
@@ -65,7 +65,7 @@ import { uiSystemMetadata } from "@tutti-os/ui-system/metadata";
65
65
  ```
66
66
 
67
67
  When promoting business UI into this package, use the bundled
68
- `agent/nextop-ui-system/SKILL.md` skill when it is available. In the source
68
+ `agent/tutti-ui-system/SKILL.md` skill when it is available. In the source
69
69
  checkout, also read `AGENTS.md`, `ui-system.md`, and
70
70
  `docs/conventions/desktop-visual-language.md`. The durable rules are:
71
71
 
@@ -82,16 +82,16 @@ External repositories can install the bundled skill into their local Codex
82
82
  skill directory with one command:
83
83
 
84
84
  ```bash
85
- pnpm exec nextop-ui-system-install-skill
85
+ pnpm exec tutti-ui-system-install-skill
86
86
  ```
87
87
 
88
88
  This copies the package skill into:
89
89
 
90
90
  ```text
91
- .codex/skills/nextop-ui-system/SKILL.md
91
+ .codex/skills/tutti-ui-system/SKILL.md
92
92
  ```
93
93
 
94
- When `.nextop-ui-system-dev/` is present, the installer prefers the synced
94
+ When `.tutti-ui-system-dev/` is present, the installer prefers the synced
95
95
  source checkout so the installed skill and bundled UI-system rules stay aligned
96
96
  with the current local UI-system source. The installer does not overwrite a
97
97
  locally modified skill unless `--force` is provided.
@@ -14,8 +14,8 @@ import { dirname, join, relative, resolve } from "node:path";
14
14
  import { fileURLToPath } from "node:url";
15
15
 
16
16
  const packageRoot = dirname(dirname(fileURLToPath(import.meta.url)));
17
- const skillName = "nextop-ui-system";
18
- const devCacheDirectoryName = ".nextop-ui-system-dev";
17
+ const skillName = "tutti-ui-system";
18
+ const devCacheDirectoryName = ".tutti-ui-system-dev";
19
19
  const companionFiles = ["AGENTS.md", "ui-system.md"];
20
20
 
21
21
  const options = parseArgs(process.argv.slice(2));
@@ -48,7 +48,7 @@ if (await pathExists(targetDirectory)) {
48
48
  if (!options.force) {
49
49
  if (await directoriesMatch(sourceRoot, sourceDirectory, targetDirectory)) {
50
50
  console.log(
51
- `nextop-ui-system skill already configured at ${targetDirectory}`
51
+ `tutti-ui-system skill already configured at ${targetDirectory}`
52
52
  );
53
53
  process.exit(0);
54
54
  }
@@ -77,9 +77,9 @@ await Promise.all(
77
77
  )
78
78
  );
79
79
 
80
- console.log(`Installed nextop-ui-system skill to ${targetDirectory}`);
80
+ console.log(`Installed tutti-ui-system skill to ${targetDirectory}`);
81
81
  console.log(
82
- "Agents can now load it from .codex/skills/nextop-ui-system/SKILL.md"
82
+ "Agents can now load it from .codex/skills/tutti-ui-system/SKILL.md"
83
83
  );
84
84
 
85
85
  function parseArgs(args) {
@@ -119,13 +119,13 @@ function parseArgs(args) {
119
119
  }
120
120
 
121
121
  function printHelp() {
122
- console.log(`Usage: nextop-ui-system-install-skill [options]
122
+ console.log(`Usage: tutti-ui-system-install-skill [options]
123
123
 
124
- Copies the bundled Nextop UI System skill into the current repository.
124
+ Copies the bundled Tutti UI System skill into the current repository.
125
125
 
126
126
  Options:
127
127
  --cwd <path> Repository root to configure. Defaults to the current directory.
128
- --force Replace an existing .codex/skills/nextop-ui-system directory.
128
+ --force Replace an existing .codex/skills/tutti-ui-system directory.
129
129
  -h, --help Show this help message.`);
130
130
  }
131
131
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: nextop-ui-system
2
+ name: tutti-ui-system
3
3
  description: Use when working with @tutti-os/ui-system components, replacing local UI with shared components, querying component ids or metadata, promoting UI into shared base or business components, or maintaining UI-system storyboard inventory.
4
4
  ---
5
5
 
6
- # Nextop UI System
6
+ # Tutti UI System
7
7
 
8
8
  Use this skill as the single entrypoint for `@tutti-os/ui-system` component
9
9
  reuse, extraction, promotion, metadata, and storyboard work.
@@ -150,8 +150,8 @@ Explicitly check and report all of these before completion:
150
150
  - migrated consumers no longer depend on a separate visual token system for the
151
151
  promoted surface
152
152
 
153
- Run the Nextop promotion review gate before reporting completion. The gate is
154
- adapted from frontend design review practice but constrained to Nextop's dense
153
+ Run the Tutti promotion review gate before reporting completion. The gate is
154
+ adapted from frontend design review practice but constrained to Tutti's dense
155
155
  workbench product language:
156
156
 
157
157
  - Frictionless: the migrated consumer preserves the original task path, keeps a
@@ -35,7 +35,7 @@ const componentId = normalizeComponentId(options.componentId);
35
35
  const componentName = normalizeComponentName(options.componentName);
36
36
  const serverUrl = options.serverUrl || "http://127.0.0.1:4100";
37
37
  const outputDirectory = resolve(
38
- options.outDir || join(tmpdir(), `nextop-ui-system-preview-${componentId}`)
38
+ options.outDir || join(tmpdir(), `tutti-ui-system-preview-${componentId}`)
39
39
  );
40
40
  const stateMatrix = normalizeStateMatrix(
41
41
  JSON.parse(await readFile(resolve(options.stateMatrixPath), "utf8"))
@@ -164,7 +164,7 @@ Options:
164
164
  --component-id <id> Stable kebab-case component id.
165
165
  --component-name <Name> Proposed React export name.
166
166
  --state-matrix <path> JSON file with an array of states or { "states": [] }.
167
- --out-dir <path> Output directory. Defaults to $TMPDIR/nextop-ui-system-preview-<id>.
167
+ --out-dir <path> Output directory. Defaults to $TMPDIR/tutti-ui-system-preview-<id>.
168
168
  --server-url <url> UI-system dev server URL. Defaults to http://127.0.0.1:4100.
169
169
  --force Replace an existing output directory.
170
170
  -h, --help Show this help message.
@@ -275,7 +275,7 @@ async function resolvePackageRoot(sourceCandidate) {
275
275
  entrypoint = cwdRequire.resolve("@tutti-os/ui-system");
276
276
  } catch {
277
277
  throw new Error(
278
- "Unable to resolve @tutti-os/ui-system. Run this from a Nextop checkout " +
278
+ "Unable to resolve @tutti-os/ui-system. Run this from a Tutti checkout " +
279
279
  "or a project with @tutti-os/ui-system installed."
280
280
  );
281
281
  }
@@ -333,7 +333,7 @@ async function pathExists(path) {
333
333
  function packageJson(componentId) {
334
334
  return `${JSON.stringify(
335
335
  {
336
- name: `nextop-ui-system-preview-${componentId}`,
336
+ name: `tutti-ui-system-preview-${componentId}`,
337
337
  private: true,
338
338
  type: "module",
339
339
  scripts: {
@@ -377,11 +377,11 @@ function indexHtml(componentName) {
377
377
  function viteConfig(serverUrl) {
378
378
  return `import react from "@vitejs/plugin-react";
379
379
  import { defineConfig } from "vite";
380
- import { nextopUISystemDev } from "@tutti-os/ui-system/dev-vite";
380
+ import { tuttiUISystemDev } from "@tutti-os/ui-system/dev-vite";
381
381
 
382
382
  export default defineConfig({
383
383
  plugins: [
384
- nextopUISystemDev({ serverUrl: ${JSON.stringify(serverUrl)} }),
384
+ tuttiUISystemDev({ serverUrl: ${JSON.stringify(serverUrl)} }),
385
385
  react()
386
386
  ],
387
387
  server: {
@@ -514,7 +514,7 @@ export function Preview() {
514
514
  return (
515
515
  <main className="preview-shell">
516
516
  <header className="preview-header">
517
- <p className="preview-kicker">Nextop UI-system business promotion</p>
517
+ <p className="preview-kicker">Tutti UI-system business promotion</p>
518
518
  <h1>${componentName} Preview</h1>
519
519
  <p>
520
520
  Review the state coverage, visual behavior, props boundary, and
@@ -556,7 +556,7 @@ export const stateMatrix = ${JSON.stringify(stateMatrix, null, 2)} satisfies Pre
556
556
  }
557
557
 
558
558
  function styleCss() {
559
- return `@source "../.nextop-ui-system-dev";
559
+ return `@source "../.tutti-ui-system-dev";
560
560
  @source "../node_modules/@tutti-os/ui-system/dist";
561
561
 
562
562
  :root {
@@ -1,23 +1,23 @@
1
1
  // src/lib/date-format.ts
2
2
  var fullDateTimeFormatterByLocale = /* @__PURE__ */ new Map();
3
3
  var shortDateTimeFormatterByLocale = /* @__PURE__ */ new Map();
4
- function getCurrentNextopDateLocale() {
4
+ function getCurrentTuttiDateLocale() {
5
5
  if (typeof document !== "undefined") {
6
- const locale = normalizeNextopDateLocale(document.documentElement.lang);
6
+ const locale = normalizeTuttiDateLocale(document.documentElement.lang);
7
7
  if (locale) {
8
8
  return locale;
9
9
  }
10
10
  }
11
11
  return "en";
12
12
  }
13
- function formatNextopDateTime(value, locale = getCurrentNextopDateLocale()) {
13
+ function formatTuttiDateTime(value, locale = getCurrentTuttiDateLocale()) {
14
14
  return getFullDateTimeFormatter(locale).format(value);
15
15
  }
16
- function formatNextopShortDateTime(value, locale = getCurrentNextopDateLocale()) {
16
+ function formatTuttiShortDateTime(value, locale = getCurrentTuttiDateLocale()) {
17
17
  return getShortDateTimeFormatter(locale).format(value);
18
18
  }
19
19
  function getFullDateTimeFormatter(locale) {
20
- const normalizedLocale = normalizeNextopDateLocale(locale) ?? "en";
20
+ const normalizedLocale = normalizeTuttiDateLocale(locale) ?? "en";
21
21
  const cached = fullDateTimeFormatterByLocale.get(normalizedLocale);
22
22
  if (cached) {
23
23
  return cached;
@@ -33,7 +33,7 @@ function getFullDateTimeFormatter(locale) {
33
33
  return formatter;
34
34
  }
35
35
  function getShortDateTimeFormatter(locale) {
36
- const normalizedLocale = normalizeNextopDateLocale(locale) ?? "en";
36
+ const normalizedLocale = normalizeTuttiDateLocale(locale) ?? "en";
37
37
  const cached = shortDateTimeFormatterByLocale.get(normalizedLocale);
38
38
  if (cached) {
39
39
  return cached;
@@ -48,7 +48,7 @@ function getShortDateTimeFormatter(locale) {
48
48
  shortDateTimeFormatterByLocale.set(normalizedLocale, formatter);
49
49
  return formatter;
50
50
  }
51
- function normalizeNextopDateLocale(locale) {
51
+ function normalizeTuttiDateLocale(locale) {
52
52
  const normalized = locale?.trim().toLowerCase() ?? "";
53
53
  if (!normalized) {
54
54
  return null;
@@ -63,8 +63,8 @@ function normalizeNextopDateLocale(locale) {
63
63
  }
64
64
 
65
65
  export {
66
- getCurrentNextopDateLocale,
67
- formatNextopDateTime,
68
- formatNextopShortDateTime
66
+ getCurrentTuttiDateLocale,
67
+ formatTuttiDateTime,
68
+ formatTuttiShortDateTime
69
69
  };
70
- //# sourceMappingURL=chunk-GX3U3V36.js.map
70
+ //# sourceMappingURL=chunk-K57FUMQG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/date-format.ts"],"sourcesContent":["export type TuttiDateLocale = \"en\" | \"zh-CN\";\n\nconst fullDateTimeFormatterByLocale = new Map<string, Intl.DateTimeFormat>();\nconst shortDateTimeFormatterByLocale = new Map<string, Intl.DateTimeFormat>();\n\nexport function getCurrentTuttiDateLocale(): TuttiDateLocale {\n if (typeof document !== \"undefined\") {\n const locale = normalizeTuttiDateLocale(document.documentElement.lang);\n if (locale) {\n return locale;\n }\n }\n\n return \"en\";\n}\n\nexport function formatTuttiDateTime(\n value: Date | number,\n locale = getCurrentTuttiDateLocale()\n): string {\n return getFullDateTimeFormatter(locale).format(value);\n}\n\nexport function formatTuttiShortDateTime(\n value: Date | number,\n locale = getCurrentTuttiDateLocale()\n): string {\n return getShortDateTimeFormatter(locale).format(value);\n}\n\nfunction getFullDateTimeFormatter(locale: string): Intl.DateTimeFormat {\n const normalizedLocale = normalizeTuttiDateLocale(locale) ?? \"en\";\n const cached = fullDateTimeFormatterByLocale.get(normalizedLocale);\n if (cached) {\n return cached;\n }\n\n const formatter = new Intl.DateTimeFormat(normalizedLocale, {\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\"\n });\n fullDateTimeFormatterByLocale.set(normalizedLocale, formatter);\n return formatter;\n}\n\nfunction getShortDateTimeFormatter(locale: string): Intl.DateTimeFormat {\n const normalizedLocale = normalizeTuttiDateLocale(locale) ?? \"en\";\n const cached = shortDateTimeFormatterByLocale.get(normalizedLocale);\n if (cached) {\n return cached;\n }\n\n const formatter = new Intl.DateTimeFormat(normalizedLocale, {\n day: \"numeric\",\n hour: \"2-digit\",\n hourCycle: \"h23\",\n minute: \"2-digit\",\n month: normalizedLocale === \"en\" ? \"short\" : \"long\"\n });\n shortDateTimeFormatterByLocale.set(normalizedLocale, formatter);\n return formatter;\n}\n\nfunction normalizeTuttiDateLocale(\n locale: string | null | undefined\n): TuttiDateLocale | null {\n const normalized = locale?.trim().toLowerCase() ?? \"\";\n if (!normalized) {\n return null;\n }\n if (normalized === \"zh\" || normalized.startsWith(\"zh-\")) {\n return \"zh-CN\";\n }\n if (normalized === \"en\" || normalized.startsWith(\"en-\")) {\n return \"en\";\n }\n return null;\n}\n"],"mappings":";AAEA,IAAM,gCAAgC,oBAAI,IAAiC;AAC3E,IAAM,iCAAiC,oBAAI,IAAiC;AAErE,SAAS,4BAA6C;AAC3D,MAAI,OAAO,aAAa,aAAa;AACnC,UAAM,SAAS,yBAAyB,SAAS,gBAAgB,IAAI;AACrE,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,oBACd,OACA,SAAS,0BAA0B,GAC3B;AACR,SAAO,yBAAyB,MAAM,EAAE,OAAO,KAAK;AACtD;AAEO,SAAS,yBACd,OACA,SAAS,0BAA0B,GAC3B;AACR,SAAO,0BAA0B,MAAM,EAAE,OAAO,KAAK;AACvD;AAEA,SAAS,yBAAyB,QAAqC;AACrE,QAAM,mBAAmB,yBAAyB,MAAM,KAAK;AAC7D,QAAM,SAAS,8BAA8B,IAAI,gBAAgB;AACjE,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,IAAI,KAAK,eAAe,kBAAkB;AAAA,IAC1D,KAAK;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACR,CAAC;AACD,gCAA8B,IAAI,kBAAkB,SAAS;AAC7D,SAAO;AACT;AAEA,SAAS,0BAA0B,QAAqC;AACtE,QAAM,mBAAmB,yBAAyB,MAAM,KAAK;AAC7D,QAAM,SAAS,+BAA+B,IAAI,gBAAgB;AAClE,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,IAAI,KAAK,eAAe,kBAAkB;AAAA,IAC1D,KAAK;AAAA,IACL,MAAM;AAAA,IACN,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,OAAO,qBAAqB,OAAO,UAAU;AAAA,EAC/C,CAAC;AACD,iCAA+B,IAAI,kBAAkB,SAAS;AAC9D,SAAO;AACT;AAEA,SAAS,yBACP,QACwB;AACxB,QAAM,aAAa,QAAQ,KAAK,EAAE,YAAY,KAAK;AACnD,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,EACT;AACA,MAAI,eAAe,QAAQ,WAAW,WAAW,KAAK,GAAG;AACvD,WAAO;AAAA,EACT;AACA,MAAI,eAAe,QAAQ,WAAW,WAAW,KAAK,GAAG;AACvD,WAAO;AAAA,EACT;AACA,SAAO;AACT;","names":[]}
@@ -233,9 +233,9 @@ function ColumnLayoutPresetGlyph() {
233
233
  ] });
234
234
  }
235
235
 
236
- // src/icons/nextop-mark.tsx
236
+ // src/icons/tutti-mark.tsx
237
237
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
238
- function NextopMark({
238
+ function TuttiMark({
239
239
  className,
240
240
  size = 28,
241
241
  title,
@@ -287,6 +287,6 @@ function NextopMark({
287
287
 
288
288
  export {
289
289
  LayoutPresetIcon,
290
- NextopMark
290
+ TuttiMark
291
291
  };
292
- //# sourceMappingURL=chunk-XHA7R2WC.js.map
292
+ //# sourceMappingURL=chunk-RKQ4FPGY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons/layout-preset-icons.tsx","../src/icons/tutti-mark.tsx"],"sourcesContent":["import type { IconProps } from \"./types\";\n\ntype LayoutPresetIconVariant = \"balanced\" | \"row\" | \"column\";\n\nexport interface LayoutPresetIconProps extends IconProps {\n selectedCount?: number;\n variant: LayoutPresetIconVariant;\n}\n\nexport function LayoutPresetIcon({\n className,\n selectedCount = 0,\n size = 24,\n title,\n variant,\n ...props\n}: LayoutPresetIconProps) {\n const dimension = typeof size === \"number\" ? `${size}` : size;\n\n return (\n <svg\n aria-hidden={title ? undefined : true}\n className={className}\n fill=\"none\"\n height={dimension}\n viewBox=\"0 0 24 24\"\n width={dimension}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n {title ? <title>{title}</title> : null}\n <LayoutPresetFrame />\n {variant === \"balanced\" ? (\n <BalancedLayoutPresetGlyph selectedCount={selectedCount} />\n ) : null}\n {variant === \"row\" ? <RowLayoutPresetGlyph /> : null}\n {variant === \"column\" ? <ColumnLayoutPresetGlyph /> : null}\n </svg>\n );\n}\n\nfunction LayoutPresetFrame() {\n return (\n <>\n <rect\n x=\"3\"\n y=\"3\"\n width=\"18\"\n height=\"18\"\n rx=\"4\"\n fill=\"currentColor\"\n opacity=\"0.12\"\n />\n <rect\n x=\"3\"\n y=\"3\"\n width=\"18\"\n height=\"18\"\n rx=\"4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.7\"\n />\n </>\n );\n}\n\nfunction BalancedLayoutPresetGlyph({\n selectedCount\n}: {\n selectedCount: number;\n}) {\n if (selectedCount <= 2) {\n return (\n <>\n <rect\n x=\"5.5\"\n y=\"5.5\"\n width=\"6.4\"\n height=\"13\"\n rx=\"1.4\"\n fill=\"currentColor\"\n />\n <rect\n x=\"12.8\"\n y=\"5.5\"\n width=\"5.7\"\n height=\"13\"\n rx=\"1.4\"\n fill=\"currentColor\"\n opacity=\"0.32\"\n />\n </>\n );\n }\n\n if (selectedCount === 3) {\n return (\n <>\n <rect\n x=\"5.25\"\n y=\"5.25\"\n width=\"7.2\"\n height=\"13.5\"\n rx=\"1.4\"\n fill=\"currentColor\"\n />\n <rect\n x=\"13.75\"\n y=\"5.25\"\n width=\"5\"\n height=\"6.15\"\n rx=\"1.2\"\n fill=\"currentColor\"\n opacity=\"0.5\"\n />\n <rect\n x=\"13.75\"\n y=\"12.6\"\n width=\"5\"\n height=\"6.15\"\n rx=\"1.2\"\n fill=\"currentColor\"\n opacity=\"0.3\"\n />\n </>\n );\n }\n\n return (\n <>\n <rect\n x=\"5.25\"\n y=\"5.25\"\n width=\"6\"\n height=\"6\"\n rx=\"1.2\"\n fill=\"currentColor\"\n />\n <rect\n x=\"12.75\"\n y=\"5.25\"\n width=\"6\"\n height=\"6\"\n rx=\"1.2\"\n fill=\"currentColor\"\n opacity=\"0.5\"\n />\n <rect\n x=\"5.25\"\n y=\"12.75\"\n width=\"6\"\n height=\"6\"\n rx=\"1.2\"\n fill=\"currentColor\"\n opacity=\"0.5\"\n />\n <rect\n x=\"12.75\"\n y=\"12.75\"\n width=\"6\"\n height=\"6\"\n rx=\"1.2\"\n fill=\"currentColor\"\n opacity=\"0.3\"\n />\n </>\n );\n}\n\nfunction RowLayoutPresetGlyph() {\n return (\n <>\n <rect\n x=\"5.25\"\n y=\"5.25\"\n width=\"6.2\"\n height=\"13.5\"\n rx=\"1.3\"\n fill=\"currentColor\"\n />\n <rect\n x=\"12.55\"\n y=\"5.25\"\n width=\"6.2\"\n height=\"13.5\"\n rx=\"1.3\"\n fill=\"currentColor\"\n opacity=\"0.34\"\n />\n </>\n );\n}\n\nfunction ColumnLayoutPresetGlyph() {\n return (\n <>\n <rect\n x=\"5.25\"\n y=\"5.25\"\n width=\"13.5\"\n height=\"6.2\"\n rx=\"1.3\"\n fill=\"currentColor\"\n />\n <rect\n x=\"5.25\"\n y=\"12.55\"\n width=\"13.5\"\n height=\"6.2\"\n rx=\"1.3\"\n fill=\"currentColor\"\n opacity=\"0.34\"\n />\n </>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TuttiMark({\n className,\n size = 28,\n title,\n ...props\n}: IconProps) {\n const dimension = typeof size === \"number\" ? `${size}` : size;\n\n return (\n <svg\n aria-hidden={title ? undefined : true}\n className={className}\n fill=\"none\"\n height={dimension}\n viewBox=\"0 0 28 28\"\n width={dimension}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n {title ? <title>{title}</title> : null}\n <rect\n fill=\"var(--panel)\"\n height=\"27\"\n rx=\"13.5\"\n width=\"27\"\n x=\"0.5\"\n y=\"0.5\"\n />\n <path\n d=\"M8.5 18.4V9.6H11.1L16.5 16.35V9.6H19.5V18.4H16.95L11.5 11.58V18.4H8.5Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M19.48 8.55L21.6 6.44L21.57 11.12L16.9 11.08L19.48 8.55Z\"\n fill=\"var(--primary)\"\n />\n </svg>\n );\n}\n"],"mappings":"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","names":["jsx","jsxs"]}
@@ -2258,7 +2258,7 @@ function SelectContent({
2258
2258
  {
2259
2259
  "data-position": position,
2260
2260
  className: cn(
2261
- "flex flex-col gap-0.5 data-[position=popper]:w-full data-[position=popper]:[min-width:var(--nextop-select-content-min-width,var(--radix-select-trigger-width))]"
2261
+ "flex flex-col gap-0.5 data-[position=popper]:w-full data-[position=popper]:[min-width:var(--tutti-select-content-min-width,var(--radix-select-trigger-width))]"
2262
2262
  ),
2263
2263
  children
2264
2264
  }
@@ -3532,4 +3532,4 @@ export {
3532
3532
  UnderlineTabs,
3533
3533
  ViewportMenuSurface
3534
3534
  };
3535
- //# sourceMappingURL=chunk-QXXI5OBT.js.map
3535
+ //# sourceMappingURL=chunk-YIAY5DKS.js.map