@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
@@ -72,7 +72,7 @@
72
72
  min-height: 100vh;
73
73
  }
74
74
 
75
- @keyframes nextop-dropdown-open {
75
+ @keyframes tutti-dropdown-open {
76
76
  from {
77
77
  transform: scale(var(--dropdown-pre-scale));
78
78
  opacity: 0;
@@ -84,7 +84,7 @@
84
84
  }
85
85
  }
86
86
 
87
- @keyframes nextop-dropdown-close {
87
+ @keyframes tutti-dropdown-close {
88
88
  from {
89
89
  transform: scale(1);
90
90
  opacity: 1;
@@ -107,15 +107,15 @@
107
107
  transform: scale(1);
108
108
  opacity: 1;
109
109
  pointer-events: auto;
110
- animation: nextop-dropdown-open var(--dropdown-open-dur)
111
- var(--dropdown-ease) both;
110
+ animation: tutti-dropdown-open var(--dropdown-open-dur) var(--dropdown-ease)
111
+ both;
112
112
  }
113
113
 
114
114
  .t-dropdown[data-state="closed"] {
115
115
  transform: scale(var(--dropdown-closing-scale));
116
116
  opacity: 0;
117
117
  pointer-events: none;
118
- animation: nextop-dropdown-close var(--dropdown-close-dur)
118
+ animation: tutti-dropdown-close var(--dropdown-close-dur)
119
119
  var(--dropdown-ease) both;
120
120
  }
121
121
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tutti-os/ui-system",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
@@ -10,7 +10,7 @@
10
10
  "./dist/styles.css"
11
11
  ],
12
12
  "bin": {
13
- "nextop-ui-system-install-skill": "./agent/install-skill.mjs"
13
+ "tutti-ui-system-install-skill": "./agent/install-skill.mjs"
14
14
  },
15
15
  "imports": {
16
16
  "#components/*": "./src/components/*/index.tsx",
@@ -85,7 +85,7 @@
85
85
  "react": "^19.1.0",
86
86
  "react-dom": "^19.1.0"
87
87
  },
88
- "nextop": {
88
+ "tutti": {
89
89
  "tailwindSourceRoot": "src"
90
90
  },
91
91
  "publishConfig": {
package/ui-system.md CHANGED
@@ -16,7 +16,7 @@ It is organized into two public component layers:
16
16
  Basic visual primitives and foundations such as tokens, icons, Button,
17
17
  Input, Dialog, Select, Card, Badge, and Toast.
18
18
  - `business`
19
- Multi-end reusable Nextop business display components. These components may
19
+ Multi-end reusable Tutti business display components. These components may
20
20
  expose domain display props such as workspace, file, task, or agent state, and
21
21
  should compose `base` primitives instead of recreating them.
22
22
 
@@ -127,7 +127,7 @@ The UI system follows a shadcn-like self-owned source model:
127
127
  behavior where a proven primitive exists
128
128
  - CVA-style variant definitions keep component variants explicit and typed
129
129
  - Tailwind classes consume shared semantic tokens instead of local palettes
130
- - Nextop owns the checked-in source, public exports, metadata, storyboard
130
+ - Tutti owns the checked-in source, public exports, metadata, storyboard
131
131
  examples, and boundary validation
132
132
 
133
133
  Before extracting a component, decide whether the target is `base`, `business`,
@@ -145,7 +145,7 @@ Promote to `base` when the component is a foundation primitive:
145
145
 
146
146
  Promote to `business` when the component is a reusable business display unit:
147
147
 
148
- - it represents a cross-surface Nextop concept such as workspace, file, task,
148
+ - it represents a cross-surface Tutti concept such as workspace, file, task,
149
149
  agent, run, project, or account display state
150
150
  - it receives all business data, labels, statuses, permissions, and callbacks
151
151
  from the host through props
@@ -201,7 +201,7 @@ For every promoted component, define this contract before editing code:
201
201
  - storyboard states and examples
202
202
  - validation commands
203
203
 
204
- The bundled `packages/ui/system/agent/nextop-ui-system/SKILL.md` skill is the
204
+ The bundled `packages/ui/system/agent/tutti-ui-system/SKILL.md` skill is the
205
205
  standard prompt-level workflow for this judgment-heavy promotion step. Boundary
206
206
  scripts are still required, but they only catch mechanical violations.
207
207
 
@@ -246,7 +246,7 @@ host-owned caller logic.
246
246
  - CSS variables are the source of truth for theme values
247
247
  - Tailwind utilities should consume the same token layer rather than defining a parallel color system
248
248
  - prefer semantic token names such as `background`, `foreground`, `primary`, `muted`, and `destructive` over raw palette leakage in public APIs
249
- - keep nextop-specific token extensions additive and minimal
249
+ - keep tutti-specific token extensions additive and minimal
250
250
  - Build primitives for a calm workbench shell, not for marketing-card
251
251
  theatrics.
252
252
 
@@ -359,7 +359,7 @@ should declare that requirement in their `package.json`:
359
359
 
360
360
  ```json
361
361
  {
362
- "nextop": {
362
+ "tutti": {
363
363
  "tailwindSourceRoot": "src"
364
364
  }
365
365
  }
@@ -367,13 +367,13 @@ should declare that requirement in their `package.json`:
367
367
 
368
368
  `pnpm check:ui-boundaries` validates that the desktop renderer entrypoint
369
369
  `apps/desktop/src/renderer/src/style.css` includes matching `@source` directives
370
- for any imported workspace package that declares `nextop.tailwindSourceRoot`.
370
+ for any imported workspace package that declares `tutti.tailwindSourceRoot`.
371
371
  It also validates that the path matches the declared source root and reports the
372
372
  exact `@source` line to add or replace.
373
373
 
374
374
  Tailwind source troubleshooting checklist:
375
375
 
376
- - if a reusable package introduces new utility classes but the desktop UI does not change at runtime, confirm the package declares `nextop.tailwindSourceRoot` when it renders runtime Tailwind classes
376
+ - if a reusable package introduces new utility classes but the desktop UI does not change at runtime, confirm the package declares `tutti.tailwindSourceRoot` when it renders runtime Tailwind classes
377
377
  - confirm the desktop renderer Tailwind entrypoint includes the package source path through `@source`
378
378
  - re-run `pnpm check:ui-boundaries` before assuming the issue is a hot-reload or build-cache problem
379
379
 
@@ -509,7 +509,7 @@ localStorage.setItem("workspace", id);
509
509
  ## Promotion Review Gate
510
510
 
511
511
  Use this gate for every base or business component promotion. It adapts
512
- frontend design review practice to Nextop's product standard; do not import
512
+ frontend design review practice to Tutti's product standard; do not import
513
513
  general marketing, portfolio, or decorative frontend heuristics into the shared
514
514
  workbench system.
515
515
 
@@ -564,9 +564,9 @@ Report the promotion review in this structure:
564
564
 
565
565
  ## Agent Skill Rules
566
566
 
567
- Use the bundled `nextop-ui-system` skill for prompt-level work involving
567
+ Use the bundled `tutti-ui-system` skill for prompt-level work involving
568
568
  `@tutti-os/ui-system`. The source lives under
569
- `packages/ui/system/agent/nextop-ui-system/SKILL.md` so it can ship with the UI
569
+ `packages/ui/system/agent/tutti-ui-system/SKILL.md` so it can ship with the UI
570
570
  system package.
571
571
 
572
572
  The skill should route internally across these scenarios:
@@ -586,18 +586,18 @@ a short agent instruction such as:
586
586
 
587
587
  ```md
588
588
  When promoting business UI into @tutti-os/ui-system, use the
589
- nextop-ui-system skill and follow packages/ui/system/ui-system.md.
589
+ tutti-ui-system skill and follow packages/ui/system/ui-system.md.
590
590
  ```
591
591
 
592
592
  After installing `@tutti-os/ui-system`, external repositories can configure the
593
593
  bundled skill with:
594
594
 
595
595
  ```bash
596
- pnpm exec nextop-ui-system-install-skill
596
+ pnpm exec tutti-ui-system-install-skill
597
597
  ```
598
598
 
599
- The command copies the bundled skill into `.codex/skills/nextop-ui-system` in
600
- the current repository. When `.nextop-ui-system-dev/` is present, the installer
599
+ The command copies the bundled skill into `.codex/skills/tutti-ui-system` in
600
+ the current repository. When `.tutti-ui-system-dev/` is present, the installer
601
601
  prefers the synced source checkout so the skill and bundled UI-system rules stay
602
602
  aligned with the current local UI-system source. It refuses to overwrite local
603
603
  changes unless run with `--force`.
@@ -626,16 +626,16 @@ external app keep normal `@tutti-os/ui-system` imports while temporarily resolvi
626
626
  the stable entrypoints to a generated local cache.
627
627
 
628
628
  - start it with `pnpm --filter @tutti-os/ui-system dev:server`
629
- - external Vite apps opt in with `nextopUISystemDev` from
629
+ - external Vite apps opt in with `tuttiUISystemDev` from
630
630
  `@tutti-os/ui-system/dev-vite`
631
631
  - when the server is unavailable, external apps must fall back to their
632
632
  installed package in `node_modules`
633
- - the generated `.nextop-ui-system-dev/` cache belongs in the external app's
633
+ - the generated `.tutti-ui-system-dev/` cache belongs in the external app's
634
634
  `.gitignore`
635
635
  - Tailwind consumers must include both the installed package output and the
636
636
  generated dev cache in source scanning, for example
637
637
  `@source "../node_modules/@tutti-os/ui-system/dist";` and
638
- `@source "../.nextop-ui-system-dev";`
638
+ `@source "../.tutti-ui-system-dev";`
639
639
  - do not make CI, production builds, or package publishing depend on the dev
640
640
  server
641
641
  - `@tutti-os/ui-system/dev-vite` may be imported only from bundler config or
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/date-format.ts"],"sourcesContent":["export type NextopDateLocale = \"en\" | \"zh-CN\";\n\nconst fullDateTimeFormatterByLocale = new Map<string, Intl.DateTimeFormat>();\nconst shortDateTimeFormatterByLocale = new Map<string, Intl.DateTimeFormat>();\n\nexport function getCurrentNextopDateLocale(): NextopDateLocale {\n if (typeof document !== \"undefined\") {\n const locale = normalizeNextopDateLocale(document.documentElement.lang);\n if (locale) {\n return locale;\n }\n }\n\n return \"en\";\n}\n\nexport function formatNextopDateTime(\n value: Date | number,\n locale = getCurrentNextopDateLocale()\n): string {\n return getFullDateTimeFormatter(locale).format(value);\n}\n\nexport function formatNextopShortDateTime(\n value: Date | number,\n locale = getCurrentNextopDateLocale()\n): string {\n return getShortDateTimeFormatter(locale).format(value);\n}\n\nfunction getFullDateTimeFormatter(locale: string): Intl.DateTimeFormat {\n const normalizedLocale = normalizeNextopDateLocale(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 = normalizeNextopDateLocale(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 normalizeNextopDateLocale(\n locale: string | null | undefined\n): NextopDateLocale | 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,6BAA+C;AAC7D,MAAI,OAAO,aAAa,aAAa;AACnC,UAAM,SAAS,0BAA0B,SAAS,gBAAgB,IAAI;AACtE,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,qBACd,OACA,SAAS,2BAA2B,GAC5B;AACR,SAAO,yBAAyB,MAAM,EAAE,OAAO,KAAK;AACtD;AAEO,SAAS,0BACd,OACA,SAAS,2BAA2B,GAC5B;AACR,SAAO,0BAA0B,MAAM,EAAE,OAAO,KAAK;AACvD;AAEA,SAAS,yBAAyB,QAAqC;AACrE,QAAM,mBAAmB,0BAA0B,MAAM,KAAK;AAC9D,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,0BAA0B,MAAM,KAAK;AAC9D,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,0BACP,QACyB;AACzB,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":[]}