@zentauri-ui/zentauri-components 2.1.8 → 2.2.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 (124) hide show
  1. package/README.md +7 -5
  2. package/cli/props.json +381 -0
  3. package/cli/registry.json +9 -1
  4. package/dist/{chunk-4PAHLHYF.mjs → chunk-37KMH77M.mjs} +3 -3
  5. package/dist/{chunk-4PAHLHYF.mjs.map → chunk-37KMH77M.mjs.map} +1 -1
  6. package/dist/chunk-4KOQS4DT.mjs +96 -0
  7. package/dist/chunk-4KOQS4DT.mjs.map +1 -0
  8. package/dist/{chunk-D7ZTSAA6.mjs → chunk-5XSW5JYA.mjs} +4 -4
  9. package/dist/{chunk-D7ZTSAA6.mjs.map → chunk-5XSW5JYA.mjs.map} +1 -1
  10. package/dist/{chunk-UVP3MUBU.mjs → chunk-AMNJ35TT.mjs} +29 -7
  11. package/dist/chunk-AMNJ35TT.mjs.map +1 -0
  12. package/dist/chunk-DXNIAFBG.js +103 -0
  13. package/dist/chunk-DXNIAFBG.js.map +1 -0
  14. package/dist/chunk-EMZC6ICD.mjs +55 -0
  15. package/dist/chunk-EMZC6ICD.mjs.map +1 -0
  16. package/dist/{chunk-BAAXQPZ7.js → chunk-EPJYLBXV.js} +6 -6
  17. package/dist/{chunk-BAAXQPZ7.js.map → chunk-EPJYLBXV.js.map} +1 -1
  18. package/dist/{chunk-DPNTQ4AK.js → chunk-F3G3RL2N.js} +29 -7
  19. package/dist/chunk-F3G3RL2N.js.map +1 -0
  20. package/dist/chunk-GP3FUS2H.mjs +26 -0
  21. package/dist/chunk-GP3FUS2H.mjs.map +1 -0
  22. package/dist/chunk-HNPGWFVY.js +65 -0
  23. package/dist/chunk-HNPGWFVY.js.map +1 -0
  24. package/dist/chunk-PAISX7YL.js +38 -0
  25. package/dist/chunk-PAISX7YL.js.map +1 -0
  26. package/dist/{chunk-OWVQVAOY.mjs → chunk-TACF7MJE.mjs} +3 -3
  27. package/dist/{chunk-OWVQVAOY.mjs.map → chunk-TACF7MJE.mjs.map} +1 -1
  28. package/dist/chunk-VQJXOJ7G.js +19 -0
  29. package/dist/{chunk-6OVDBAMI.js.map → chunk-VQJXOJ7G.js.map} +1 -1
  30. package/dist/{chunk-L5QORCUO.js → chunk-YTCVWOBC.js} +12 -12
  31. package/dist/{chunk-L5QORCUO.js.map → chunk-YTCVWOBC.js.map} +1 -1
  32. package/dist/design-system/code-diff.d.ts +18 -0
  33. package/dist/design-system/code-diff.d.ts.map +1 -0
  34. package/dist/design-system/facade.js +9 -7
  35. package/dist/design-system/facade.js.map +1 -1
  36. package/dist/design-system/facade.mjs +8 -6
  37. package/dist/design-system/facade.mjs.map +1 -1
  38. package/dist/design-system/index.d.ts +2 -0
  39. package/dist/design-system/index.d.ts.map +1 -1
  40. package/dist/design-system/typing-indicator.d.ts +47 -0
  41. package/dist/design-system/typing-indicator.d.ts.map +1 -0
  42. package/dist/ui/buttons/animated.js +11 -9
  43. package/dist/ui/buttons/animated.js.map +1 -1
  44. package/dist/ui/buttons/animated.mjs +9 -7
  45. package/dist/ui/buttons/animated.mjs.map +1 -1
  46. package/dist/ui/buttons.js +12 -10
  47. package/dist/ui/buttons.mjs +10 -8
  48. package/dist/ui/code-diff/code-diff-base.d.ts +6 -0
  49. package/dist/ui/code-diff/code-diff-base.d.ts.map +1 -0
  50. package/dist/ui/code-diff/code-diff.d.ts +6 -0
  51. package/dist/ui/code-diff/code-diff.d.ts.map +1 -0
  52. package/dist/ui/code-diff/index.d.ts +4 -0
  53. package/dist/ui/code-diff/index.d.ts.map +1 -0
  54. package/dist/ui/code-diff/types.d.ts +26 -0
  55. package/dist/ui/code-diff/types.d.ts.map +1 -0
  56. package/dist/ui/code-diff/variants.d.ts +11 -0
  57. package/dist/ui/code-diff/variants.d.ts.map +1 -0
  58. package/dist/ui/code-diff.js +302 -0
  59. package/dist/ui/code-diff.js.map +1 -0
  60. package/dist/ui/code-diff.mjs +297 -0
  61. package/dist/ui/code-diff.mjs.map +1 -0
  62. package/dist/ui/data-table.js +23 -21
  63. package/dist/ui/data-table.js.map +1 -1
  64. package/dist/ui/data-table.mjs +13 -11
  65. package/dist/ui/data-table.mjs.map +1 -1
  66. package/dist/ui/dynamic-stepper.js +21 -19
  67. package/dist/ui/dynamic-stepper.js.map +1 -1
  68. package/dist/ui/dynamic-stepper.mjs +10 -8
  69. package/dist/ui/dynamic-stepper.mjs.map +1 -1
  70. package/dist/ui/pagination.js +13 -11
  71. package/dist/ui/pagination.mjs +10 -8
  72. package/dist/ui/split-button.js +23 -21
  73. package/dist/ui/split-button.js.map +1 -1
  74. package/dist/ui/split-button.mjs +10 -8
  75. package/dist/ui/split-button.mjs.map +1 -1
  76. package/dist/ui/typing-indicator/animated/animations.d.ts +8 -0
  77. package/dist/ui/typing-indicator/animated/animations.d.ts.map +1 -0
  78. package/dist/ui/typing-indicator/animated/index.d.ts +4 -0
  79. package/dist/ui/typing-indicator/animated/index.d.ts.map +1 -0
  80. package/dist/ui/typing-indicator/animated/types.d.ts +9 -0
  81. package/dist/ui/typing-indicator/animated/types.d.ts.map +1 -0
  82. package/dist/ui/typing-indicator/animated/typing-indicator-animated.d.ts +6 -0
  83. package/dist/ui/typing-indicator/animated/typing-indicator-animated.d.ts.map +1 -0
  84. package/dist/ui/typing-indicator/animated.js +119 -0
  85. package/dist/ui/typing-indicator/animated.js.map +1 -0
  86. package/dist/ui/typing-indicator/animated.mjs +116 -0
  87. package/dist/ui/typing-indicator/animated.mjs.map +1 -0
  88. package/dist/ui/typing-indicator/index.d.ts +4 -0
  89. package/dist/ui/typing-indicator/index.d.ts.map +1 -0
  90. package/dist/ui/typing-indicator/types.d.ts +13 -0
  91. package/dist/ui/typing-indicator/types.d.ts.map +1 -0
  92. package/dist/ui/typing-indicator/typing-indicator-base.d.ts +13 -0
  93. package/dist/ui/typing-indicator/typing-indicator-base.d.ts.map +1 -0
  94. package/dist/ui/typing-indicator/typing-indicator.d.ts +2 -0
  95. package/dist/ui/typing-indicator/typing-indicator.d.ts.map +1 -0
  96. package/dist/ui/typing-indicator/variants.d.ts +16 -0
  97. package/dist/ui/typing-indicator/variants.d.ts.map +1 -0
  98. package/dist/ui/typing-indicator.js +32 -0
  99. package/dist/ui/typing-indicator.js.map +1 -0
  100. package/dist/ui/typing-indicator.mjs +7 -0
  101. package/dist/ui/typing-indicator.mjs.map +1 -0
  102. package/package.json +4 -1
  103. package/src/design-system/code-diff.ts +37 -0
  104. package/src/design-system/index.ts +2 -0
  105. package/src/design-system/typing-indicator.ts +74 -0
  106. package/src/ui/code-diff/code-diff-base.tsx +284 -0
  107. package/src/ui/code-diff/code-diff.test.tsx +50 -0
  108. package/src/ui/code-diff/code-diff.tsx +8 -0
  109. package/src/ui/code-diff/index.ts +15 -0
  110. package/src/ui/code-diff/types.ts +31 -0
  111. package/src/ui/code-diff/variants.ts +49 -0
  112. package/src/ui/typing-indicator/animated/animations.ts +58 -0
  113. package/src/ui/typing-indicator/animated/index.ts +8 -0
  114. package/src/ui/typing-indicator/animated/types.ts +11 -0
  115. package/src/ui/typing-indicator/animated/typing-indicator-animated.tsx +79 -0
  116. package/src/ui/typing-indicator/index.ts +15 -0
  117. package/src/ui/typing-indicator/types.ts +20 -0
  118. package/src/ui/typing-indicator/typing-indicator-base.tsx +75 -0
  119. package/src/ui/typing-indicator/typing-indicator.test.tsx +76 -0
  120. package/src/ui/typing-indicator/typing-indicator.tsx +2 -0
  121. package/src/ui/typing-indicator/variants.ts +49 -0
  122. package/dist/chunk-6OVDBAMI.js +0 -19
  123. package/dist/chunk-DPNTQ4AK.js.map +0 -1
  124. package/dist/chunk-UVP3MUBU.mjs.map +0 -1
package/README.md CHANGED
@@ -29,12 +29,12 @@ Generated from the component package Vitest JSON report via `pnpm --filter @zent
29
29
 
30
30
  | Metric | Result |
31
31
  | ---------- | ---------------- |
32
- | Test files | 98 passed (98) |
33
- | Tests | 819 passed (819) |
32
+ | Test files | 100 passed (100) |
33
+ | Tests | 836 passed (836) |
34
34
 
35
35
  | Area | Test files | Tests |
36
36
  | ------------------------------ | ---------- | ----- |
37
- | Components and UI utilities | 49 | 514 |
37
+ | Components and UI utilities | 51 | 531 |
38
38
  | Standalone animations | 1 | 45 |
39
39
  | React hooks | 41 | 174 |
40
40
  | Design system facade | 1 | 11 |
@@ -49,7 +49,7 @@ Generated from the component package Vitest JSON report via `pnpm --filter @zent
49
49
  | `src/ui/buttons/button.test.tsx` | 44 |
50
50
  | `src/ui/inputs/input.test.tsx` | 40 |
51
51
  | `src/ui/audio-player/audio-player.test.tsx` | 34 |
52
- | `src/ui/peer-isolation.test.ts` | 29 |
52
+ | `src/ui/peer-isolation.test.ts` | 30 |
53
53
  | `src/accessibility/axe-core.test.tsx` | 24 |
54
54
  | `src/ui/combobox/combobox.test.tsx` | 24 |
55
55
  | `cli/cli.integration.test.ts` | 21 |
@@ -74,6 +74,7 @@ Generated from the component package Vitest JSON report via `pnpm --filter @zent
74
74
  | `src/ui/animated-number/animated-number.test.tsx` | 9 |
75
75
  | `src/ui/skeleton/skeleton.test.tsx` | 9 |
76
76
  | `src/ui/slider/slider.test.tsx` | 9 |
77
+ | `src/ui/typing-indicator/typing-indicator.test.tsx` | 9 |
77
78
  | `src/ui/command/command.test.tsx` | 8 |
78
79
  | `src/ui/copy-button/copy-button.test.tsx` | 8 |
79
80
  | `src/ui/dynamic-stepper/dynamic-stepper.test.tsx` | 8 |
@@ -86,6 +87,7 @@ Generated from the component package Vitest JSON report via `pnpm --filter @zent
86
87
  | `src/hooks/useTableSort/useTableSort.test.ts` | 7 |
87
88
  | `src/ui/accordion/accordion.test.tsx` | 7 |
88
89
  | `src/ui/card/card.test.tsx` | 7 |
90
+ | `src/ui/code-diff/code-diff.test.tsx` | 7 |
89
91
  | `src/ui/drawer/drawer.test.tsx` | 7 |
90
92
  | `src/ui/kbd/kbd.test.tsx` | 7 |
91
93
  | `src/ui/typography/typography.test.tsx` | 7 |
@@ -854,7 +856,7 @@ From this package directory in the monorepo:
854
856
 
855
857
  - `pnpm build` (or `npm run build`) — production bundle via `tsup` (Rollup treeshake + `scripts/prepend-use-client.mjs` via `onSuccess` so each UI entry under `dist/ui/`, animation entry under `dist/animations/`, chart entry under `dist/charts/`, and `dist/ui/<name>/animated.*` starts with `"use client"` where needed)
856
858
  - `pnpm dev` — `tsup` watch mode (same `onSuccess` hook after each rebuild)
857
- - `pnpm test` / `pnpm test:watch` — **Vitest** and **Testing Library** unit tests // currently covered 819 test cases in total
859
+ - `pnpm test` / `pnpm test:watch` — **Vitest** and **Testing Library** unit tests // currently covered 836 test cases in total
858
860
  - `pnpm test:a11y` — focused accessibility coverage for package-level UI primitives and compound components: **axe-core** audits for every interactive component plus **keyboard-interaction** tests (focus order, arrow-key nav, Home/End, Escape/Enter) for the compound components
859
861
  - `pnpm check:tokens` — enforce the `--zui-*` token contract across design-system, variant, and local custom-property usage without generating a large checked-in token catalog
860
862
  - **`pnpm run generate:registry`** — runs `scripts/generate-registry.mjs`, which reads **`uiComponentNames`**, **`uiAnimatedComponentNames`**, **`animationEntryNames`**, **`chartEntryNames`**, and **`hooksEntryNames`** from `tsup.config.ts`, applies fixed **`nameAliases`**, scans each component/chart source to build **`peerHints`**, and writes **`cli/registry.json`** (`components` + `animations` + `hooks` + `peerHints`). Run this after adding or renaming UI, animation, chart, or hook entries so the CLI stays in sync (the script prints counts).
package/cli/props.json CHANGED
@@ -3134,6 +3134,167 @@
3134
3134
  }
3135
3135
  ]
3136
3136
  },
3137
+ "code-diff": {
3138
+ "slug": "code-diff",
3139
+ "subcomponents": [
3140
+ {
3141
+ "name": "static:CodeDiff",
3142
+ "displayName": "CodeDiff",
3143
+ "propsType": "CodeDiffProps",
3144
+ "source": "static",
3145
+ "props": [
3146
+ {
3147
+ "name": "appearance",
3148
+ "type": "enum",
3149
+ "required": false,
3150
+ "default": "default",
3151
+ "group": "variant",
3152
+ "isVariant": true,
3153
+ "options": [
3154
+ "default"
3155
+ ],
3156
+ "variantGroup": "appearance",
3157
+ "deprecated": false
3158
+ },
3159
+ {
3160
+ "name": "size",
3161
+ "type": "enum",
3162
+ "required": false,
3163
+ "default": "md",
3164
+ "group": "variant",
3165
+ "isVariant": true,
3166
+ "options": [
3167
+ "lg",
3168
+ "md",
3169
+ "sm"
3170
+ ],
3171
+ "variantGroup": "size",
3172
+ "deprecated": false
3173
+ },
3174
+ {
3175
+ "name": "language",
3176
+ "type": "string | undefined",
3177
+ "required": false,
3178
+ "group": "behavior",
3179
+ "deprecated": false
3180
+ },
3181
+ {
3182
+ "name": "newCode",
3183
+ "type": "string",
3184
+ "required": true,
3185
+ "group": "behavior",
3186
+ "deprecated": false
3187
+ },
3188
+ {
3189
+ "name": "newTitle",
3190
+ "type": "string | undefined",
3191
+ "required": false,
3192
+ "group": "behavior",
3193
+ "deprecated": false
3194
+ },
3195
+ {
3196
+ "name": "oldCode",
3197
+ "type": "string",
3198
+ "required": true,
3199
+ "group": "behavior",
3200
+ "deprecated": false
3201
+ },
3202
+ {
3203
+ "name": "oldTitle",
3204
+ "type": "string | undefined",
3205
+ "required": false,
3206
+ "group": "behavior",
3207
+ "deprecated": false
3208
+ },
3209
+ {
3210
+ "name": "showGutterMarkers",
3211
+ "type": "boolean | undefined",
3212
+ "required": false,
3213
+ "group": "behavior",
3214
+ "deprecated": false
3215
+ },
3216
+ {
3217
+ "name": "showLineNumbers",
3218
+ "type": "boolean | undefined",
3219
+ "required": false,
3220
+ "group": "behavior",
3221
+ "deprecated": false
3222
+ },
3223
+ {
3224
+ "name": "viewType",
3225
+ "type": "CodeDiffViewType | undefined",
3226
+ "required": false,
3227
+ "group": "behavior",
3228
+ "deprecated": false
3229
+ },
3230
+ {
3231
+ "name": "children",
3232
+ "type": "ReactNode",
3233
+ "required": false,
3234
+ "group": "dom",
3235
+ "deprecated": false
3236
+ },
3237
+ {
3238
+ "name": "className",
3239
+ "type": "string | undefined",
3240
+ "required": false,
3241
+ "group": "dom",
3242
+ "deprecated": false
3243
+ },
3244
+ {
3245
+ "name": "id",
3246
+ "type": "string | undefined",
3247
+ "required": false,
3248
+ "group": "dom",
3249
+ "deprecated": false
3250
+ },
3251
+ {
3252
+ "name": "onClick",
3253
+ "type": "MouseEventHandler<HTMLDivElement> | undefined",
3254
+ "required": false,
3255
+ "group": "dom",
3256
+ "deprecated": false
3257
+ },
3258
+ {
3259
+ "name": "style",
3260
+ "type": "CSSProperties | undefined",
3261
+ "required": false,
3262
+ "group": "dom",
3263
+ "deprecated": false
3264
+ },
3265
+ {
3266
+ "name": "title",
3267
+ "type": "string | undefined",
3268
+ "required": false,
3269
+ "group": "dom",
3270
+ "deprecated": false
3271
+ }
3272
+ ]
3273
+ },
3274
+ {
3275
+ "name": "static:CodeDiffVariant",
3276
+ "displayName": "CodeDiffVariant",
3277
+ "propsType": "CodeDiffVariantProps",
3278
+ "source": "static",
3279
+ "props": [
3280
+ {
3281
+ "name": "appearance",
3282
+ "type": "'default' | null | undefined",
3283
+ "required": false,
3284
+ "group": "behavior",
3285
+ "deprecated": false
3286
+ },
3287
+ {
3288
+ "name": "size",
3289
+ "type": "'md' | 'sm' | 'lg' | null | undefined",
3290
+ "required": false,
3291
+ "group": "behavior",
3292
+ "deprecated": false
3293
+ }
3294
+ ]
3295
+ }
3296
+ ]
3297
+ },
3137
3298
  "combobox": {
3138
3299
  "slug": "combobox",
3139
3300
  "subcomponents": [
@@ -15066,6 +15227,226 @@
15066
15227
  }
15067
15228
  ]
15068
15229
  },
15230
+ "typing-indicator": {
15231
+ "slug": "typing-indicator",
15232
+ "subcomponents": [
15233
+ {
15234
+ "name": "static:TypingIndicator",
15235
+ "displayName": "TypingIndicator",
15236
+ "propsType": "TypingIndicatorProps",
15237
+ "source": "static",
15238
+ "props": [
15239
+ {
15240
+ "name": "size",
15241
+ "type": "enum",
15242
+ "required": false,
15243
+ "default": "md",
15244
+ "group": "variant",
15245
+ "isVariant": true,
15246
+ "options": [
15247
+ "lg",
15248
+ "md",
15249
+ "sm"
15250
+ ],
15251
+ "variantGroup": "size",
15252
+ "deprecated": false
15253
+ },
15254
+ {
15255
+ "name": "appearance",
15256
+ "type": "'default' | 'blue' | 'cyan' | 'green' | 'lime' | 'red' | 'slate' | 'zinc' | 'sky' | 'rose' | 'purple' | 'pink' | 'orange' | 'yellow' | 'teal' | 'indigo' | 'emerald' | 'gradient-blue' | 'gradient-green' | 'gradient-purple' | 'gray' | 'muted' | 'subtle' | 'primary' | null | undefined",
15257
+ "required": false,
15258
+ "group": "behavior",
15259
+ "deprecated": false
15260
+ },
15261
+ {
15262
+ "name": "dots",
15263
+ "type": "TypingIndicatorDots | undefined",
15264
+ "required": false,
15265
+ "group": "behavior",
15266
+ "deprecated": false
15267
+ },
15268
+ {
15269
+ "name": "label",
15270
+ "type": "ReactNode",
15271
+ "required": false,
15272
+ "group": "behavior",
15273
+ "deprecated": false
15274
+ },
15275
+ {
15276
+ "name": "labelPosition",
15277
+ "type": "'before' | 'after' | undefined",
15278
+ "required": false,
15279
+ "group": "behavior",
15280
+ "deprecated": false
15281
+ },
15282
+ {
15283
+ "name": "children",
15284
+ "type": "ReactNode",
15285
+ "required": false,
15286
+ "group": "content",
15287
+ "deprecated": false
15288
+ },
15289
+ {
15290
+ "name": "className",
15291
+ "type": "string | undefined",
15292
+ "required": false,
15293
+ "group": "dom",
15294
+ "deprecated": false
15295
+ },
15296
+ {
15297
+ "name": "id",
15298
+ "type": "string | undefined",
15299
+ "required": false,
15300
+ "group": "dom",
15301
+ "deprecated": false
15302
+ },
15303
+ {
15304
+ "name": "onClick",
15305
+ "type": "MouseEventHandler<HTMLSpanElement> | undefined",
15306
+ "required": false,
15307
+ "group": "dom",
15308
+ "deprecated": false
15309
+ },
15310
+ {
15311
+ "name": "style",
15312
+ "type": "CSSProperties | undefined",
15313
+ "required": false,
15314
+ "group": "dom",
15315
+ "deprecated": false
15316
+ },
15317
+ {
15318
+ "name": "title",
15319
+ "type": "string | undefined",
15320
+ "required": false,
15321
+ "group": "dom",
15322
+ "deprecated": false
15323
+ }
15324
+ ]
15325
+ },
15326
+ {
15327
+ "name": "static:TypingIndicatorVariant",
15328
+ "displayName": "TypingIndicatorVariant",
15329
+ "propsType": "TypingIndicatorVariantProps",
15330
+ "source": "static",
15331
+ "props": [
15332
+ {
15333
+ "name": "appearance",
15334
+ "type": "'default' | 'blue' | 'cyan' | 'green' | 'lime' | 'red' | 'slate' | 'zinc' | 'sky' | 'rose' | 'purple' | 'pink' | 'orange' | 'yellow' | 'teal' | 'indigo' | 'emerald' | 'gradient-blue' | 'gradient-green' | 'gradient-purple' | 'gray' | 'muted' | 'subtle' | 'primary' | null | undefined",
15335
+ "required": false,
15336
+ "group": "behavior",
15337
+ "deprecated": false
15338
+ },
15339
+ {
15340
+ "name": "size",
15341
+ "type": "'md' | 'sm' | 'lg' | null | undefined",
15342
+ "required": false,
15343
+ "group": "behavior",
15344
+ "deprecated": false
15345
+ }
15346
+ ]
15347
+ },
15348
+ {
15349
+ "name": "animated:TypingIndicatorAnimated",
15350
+ "displayName": "TypingIndicatorAnimated",
15351
+ "propsType": "TypingIndicatorAnimatedProps",
15352
+ "source": "animated",
15353
+ "props": [
15354
+ {
15355
+ "name": "animation",
15356
+ "type": "TypingIndicatorAnimation | undefined",
15357
+ "required": false,
15358
+ "group": "behavior",
15359
+ "deprecated": false
15360
+ },
15361
+ {
15362
+ "name": "appearance",
15363
+ "type": "'default' | 'blue' | 'cyan' | 'green' | 'lime' | 'red' | 'slate' | 'zinc' | 'sky' | 'rose' | 'purple' | 'pink' | 'orange' | 'yellow' | 'teal' | 'indigo' | 'emerald' | 'gradient-blue' | 'gradient-green' | 'gradient-purple' | 'gray' | 'muted' | 'subtle' | 'primary' | null | undefined",
15364
+ "required": false,
15365
+ "group": "behavior",
15366
+ "deprecated": false
15367
+ },
15368
+ {
15369
+ "name": "dots",
15370
+ "type": "TypingIndicatorDots | undefined",
15371
+ "required": false,
15372
+ "group": "behavior",
15373
+ "deprecated": false
15374
+ },
15375
+ {
15376
+ "name": "label",
15377
+ "type": "ReactNode",
15378
+ "required": false,
15379
+ "group": "behavior",
15380
+ "deprecated": false
15381
+ },
15382
+ {
15383
+ "name": "labelPosition",
15384
+ "type": "'before' | 'after' | undefined",
15385
+ "required": false,
15386
+ "group": "behavior",
15387
+ "deprecated": false
15388
+ },
15389
+ {
15390
+ "name": "ref",
15391
+ "type": "Ref<HTMLSpanElement> | undefined",
15392
+ "required": false,
15393
+ "group": "behavior",
15394
+ "description": "Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).",
15395
+ "deprecated": false
15396
+ },
15397
+ {
15398
+ "name": "size",
15399
+ "type": "'md' | 'sm' | 'lg' | null | undefined",
15400
+ "required": false,
15401
+ "group": "behavior",
15402
+ "deprecated": false
15403
+ },
15404
+ {
15405
+ "name": "children",
15406
+ "type": "ReactNode",
15407
+ "required": false,
15408
+ "group": "content",
15409
+ "deprecated": false
15410
+ },
15411
+ {
15412
+ "name": "className",
15413
+ "type": "string | undefined",
15414
+ "required": false,
15415
+ "group": "dom",
15416
+ "deprecated": false
15417
+ },
15418
+ {
15419
+ "name": "id",
15420
+ "type": "string | undefined",
15421
+ "required": false,
15422
+ "group": "dom",
15423
+ "deprecated": false
15424
+ },
15425
+ {
15426
+ "name": "onClick",
15427
+ "type": "MouseEventHandler<HTMLSpanElement> | undefined",
15428
+ "required": false,
15429
+ "group": "dom",
15430
+ "deprecated": false
15431
+ },
15432
+ {
15433
+ "name": "style",
15434
+ "type": "CSSProperties | undefined",
15435
+ "required": false,
15436
+ "group": "dom",
15437
+ "deprecated": false
15438
+ },
15439
+ {
15440
+ "name": "title",
15441
+ "type": "string | undefined",
15442
+ "required": false,
15443
+ "group": "dom",
15444
+ "deprecated": false
15445
+ }
15446
+ ]
15447
+ }
15448
+ ]
15449
+ },
15069
15450
  "typography": {
15070
15451
  "slug": "typography",
15071
15452
  "subcomponents": [
package/cli/registry.json CHANGED
@@ -12,6 +12,7 @@
12
12
  "buttons",
13
13
  "card",
14
14
  "checkbox",
15
+ "code-diff",
15
16
  "combobox",
16
17
  "command",
17
18
  "context-menu",
@@ -46,6 +47,7 @@
46
47
  "toggle",
47
48
  "tooltip",
48
49
  "tree-view",
50
+ "typing-indicator",
49
51
  "typography"
50
52
  ],
51
53
  "animatedComponents": [
@@ -75,7 +77,8 @@
75
77
  "toast",
76
78
  "toggle",
77
79
  "tooltip",
78
- "tree-view"
80
+ "tree-view",
81
+ "typing-indicator"
79
82
  ],
80
83
  "charts": [
81
84
  "charts/area",
@@ -149,6 +152,7 @@
149
152
  "charts/scatter",
150
153
  "charts/stacked-bar",
151
154
  "checkbox",
155
+ "code-diff",
152
156
  "combobox",
153
157
  "command",
154
158
  "context-menu",
@@ -184,6 +188,7 @@
184
188
  "toggle",
185
189
  "tooltip",
186
190
  "tree-view",
191
+ "typing-indicator",
187
192
  "typography"
188
193
  ],
189
194
  "animations": [
@@ -392,6 +397,9 @@
392
397
  "react-icons",
393
398
  "framer-motion"
394
399
  ],
400
+ "typing-indicator": [
401
+ "framer-motion"
402
+ ],
395
403
  "spinner": [
396
404
  "framer-motion"
397
405
  ],
@@ -1,4 +1,4 @@
1
- import { zuiButtonBase, zuiButtonSizes, zuiButtonAppearances } from './chunk-UVP3MUBU.mjs';
1
+ import { zuiButtonBase, zuiButtonSizes, zuiButtonAppearances } from './chunk-AMNJ35TT.mjs';
2
2
  import { cva } from 'class-variance-authority';
3
3
 
4
4
  var buttonVariants = cva(zuiButtonBase, {
@@ -13,5 +13,5 @@ var buttonVariants = cva(zuiButtonBase, {
13
13
  });
14
14
 
15
15
  export { buttonVariants };
16
- //# sourceMappingURL=chunk-4PAHLHYF.mjs.map
17
- //# sourceMappingURL=chunk-4PAHLHYF.mjs.map
16
+ //# sourceMappingURL=chunk-37KMH77M.mjs.map
17
+ //# sourceMappingURL=chunk-37KMH77M.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/buttons/variants.ts"],"names":[],"mappings":";;;AAQO,IAAM,cAAA,GAAiB,IAAI,aAAA,EAAe;AAAA,EAC/C,QAAA,EAAU;AAAA,IACR,UAAA,EAAY,oBAAA;AAAA,IACZ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,IAAA,EAAM;AAAA;AAEV,CAAC","file":"chunk-4PAHLHYF.mjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nimport {\n zuiButtonAppearances,\n zuiButtonBase,\n zuiButtonSizes,\n} from \"../../design-system\";\n\nexport const buttonVariants = cva(zuiButtonBase, {\n variants: {\n appearance: zuiButtonAppearances,\n size: zuiButtonSizes,\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n});\n"]}
1
+ {"version":3,"sources":["../src/ui/buttons/variants.ts"],"names":[],"mappings":";;;AAQO,IAAM,cAAA,GAAiB,IAAI,aAAA,EAAe;AAAA,EAC/C,QAAA,EAAU;AAAA,IACR,UAAA,EAAY,oBAAA;AAAA,IACZ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,IAAA,EAAM;AAAA;AAEV,CAAC","file":"chunk-37KMH77M.mjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nimport {\n zuiButtonAppearances,\n zuiButtonBase,\n zuiButtonSizes,\n} from \"../../design-system\";\n\nexport const buttonVariants = cva(zuiButtonBase, {\n variants: {\n appearance: zuiButtonAppearances,\n size: zuiButtonSizes,\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n});\n"]}
@@ -0,0 +1,96 @@
1
+ import { zuiTypingIndicatorContainerBase, zuiTypingIndicatorSizes, zuiTypingIndicatorDotsBase, zuiTypingIndicatorDotBase, zuiTypingIndicatorDotSizes, zuiTypingIndicatorAppearances, zuiTypingIndicatorLabelBase, zuiTypingIndicatorLabelSizes, zuiTypingIndicatorDotDelays } from './chunk-EMZC6ICD.mjs';
2
+ import { cn } from './chunk-4D54YOL6.mjs';
3
+ import { cva } from 'class-variance-authority';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var typingIndicatorVariants = cva(zuiTypingIndicatorContainerBase, {
7
+ variants: {
8
+ size: zuiTypingIndicatorSizes
9
+ },
10
+ defaultVariants: {
11
+ size: "md"
12
+ }
13
+ });
14
+ var typingIndicatorDotsVariants = cva(zuiTypingIndicatorDotsBase, {
15
+ variants: {
16
+ size: zuiTypingIndicatorSizes
17
+ },
18
+ defaultVariants: { size: "md" }
19
+ });
20
+ var typingIndicatorDotVariants = cva(zuiTypingIndicatorDotBase, {
21
+ variants: {
22
+ appearance: zuiTypingIndicatorAppearances,
23
+ size: zuiTypingIndicatorDotSizes
24
+ },
25
+ defaultVariants: {
26
+ appearance: "default",
27
+ size: "md"
28
+ }
29
+ });
30
+ var typingIndicatorLabelVariants = cva(zuiTypingIndicatorLabelBase, {
31
+ variants: {
32
+ size: zuiTypingIndicatorLabelSizes
33
+ },
34
+ defaultVariants: { size: "md" }
35
+ });
36
+ function TypingIndicatorBase({
37
+ appearance,
38
+ size,
39
+ dots = 3,
40
+ label,
41
+ labelPosition = "before",
42
+ className,
43
+ ref,
44
+ ...rest
45
+ }) {
46
+ return /* @__PURE__ */ jsxs(
47
+ "span",
48
+ {
49
+ ref,
50
+ "data-slot": "typing-indicator",
51
+ className: cn(typingIndicatorVariants({ size }), className),
52
+ ...rest,
53
+ children: [
54
+ label && labelPosition === "before" && /* @__PURE__ */ jsx(TypingIndicatorLabel, { size, children: label }),
55
+ /* @__PURE__ */ jsx(
56
+ "span",
57
+ {
58
+ "data-slot": "typing-indicator-dots",
59
+ className: typingIndicatorDotsVariants({ size }),
60
+ children: Array.from({ length: dots }).map((_, i) => /* @__PURE__ */ jsx(
61
+ "span",
62
+ {
63
+ "data-slot": "typing-indicator-dot",
64
+ className: cn(
65
+ typingIndicatorDotVariants({ appearance, size }),
66
+ zuiTypingIndicatorDotDelays[i % zuiTypingIndicatorDotDelays.length]
67
+ )
68
+ },
69
+ i
70
+ ))
71
+ }
72
+ ),
73
+ label && labelPosition === "after" && /* @__PURE__ */ jsx(TypingIndicatorLabel, { size, children: label })
74
+ ]
75
+ }
76
+ );
77
+ }
78
+ TypingIndicatorBase.displayName = "TypingIndicator";
79
+ function TypingIndicatorLabel({
80
+ size,
81
+ children
82
+ }) {
83
+ return /* @__PURE__ */ jsx(
84
+ "span",
85
+ {
86
+ "data-slot": "typing-indicator-label",
87
+ className: typingIndicatorLabelVariants({ size }),
88
+ children
89
+ }
90
+ );
91
+ }
92
+ TypingIndicatorLabel.displayName = "TypingIndicatorLabel";
93
+
94
+ export { TypingIndicatorBase, TypingIndicatorLabel, typingIndicatorDotVariants, typingIndicatorDotsVariants, typingIndicatorLabelVariants, typingIndicatorVariants };
95
+ //# sourceMappingURL=chunk-4KOQS4DT.mjs.map
96
+ //# sourceMappingURL=chunk-4KOQS4DT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/typing-indicator/variants.ts","../src/ui/typing-indicator/typing-indicator-base.tsx"],"names":[],"mappings":";;;;;AAgBO,IAAM,uBAAA,GAA0B,IAAI,+BAAA,EAAiC;AAAA,EAC1E,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,2BAAA,GAA8B,IAAI,0BAAA,EAA4B;AAAA,EACzE,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,eAAA,EAAiB,EAAE,IAAA,EAAM,IAAA;AAC3B,CAAC;AAEM,IAAM,0BAAA,GAA6B,IAAI,yBAAA,EAA2B;AAAA,EACvE,QAAA,EAAU;AAAA,IACR,UAAA,EAAY,6BAAA;AAAA,IACZ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,IAAM,4BAAA,GAA+B,IAAI,2BAAA,EAA6B;AAAA,EAC3E,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,eAAA,EAAiB,EAAE,IAAA,EAAM,IAAA;AAC3B,CAAC;ACnCM,SAAS,mBAAA,CAAoB;AAAA,EAClC,UAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP,KAAA;AAAA,EACA,aAAA,GAAgB,QAAA;AAAA,EAChB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6B;AAC3B,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,kBAAA;AAAA,MACV,WAAW,EAAA,CAAG,uBAAA,CAAwB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MACzD,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,KAAA,IAAS,aAAA,KAAkB,QAAA,oBAC1B,GAAA,CAAC,oBAAA,EAAA,EAAqB,MAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBAE3C,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,WAAA,EAAU,uBAAA;AAAA,YACV,SAAA,EAAW,2BAAA,CAA4B,EAAE,IAAA,EAAM,CAAA;AAAA,YAE9C,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACpC,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBAEC,WAAA,EAAU,sBAAA;AAAA,gBACV,SAAA,EAAW,EAAA;AAAA,kBACT,0BAAA,CAA2B,EAAE,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,kBAC/C,2BAAA,CAAyB,CAAA,GAAI,2BAAA,CAAyB,MAAM;AAAA;AAC9D,eAAA;AAAA,cALK;AAAA,aAOR;AAAA;AAAA,SACH;AAAA,QACC,SAAS,aAAA,KAAkB,OAAA,oBAC1B,GAAA,CAAC,oBAAA,EAAA,EAAqB,MAAa,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,GAE7C;AAEJ;AAEA,mBAAA,CAAoB,WAAA,GAAc,iBAAA;AAE3B,SAAS,oBAAA,CAAqB;AAAA,EACnC,IAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,wBAAA;AAAA,MACV,SAAA,EAAW,4BAAA,CAA6B,EAAE,IAAA,EAAM,CAAA;AAAA,MAE/C;AAAA;AAAA,GACH;AAEJ;AAEA,oBAAA,CAAqB,WAAA,GAAc,sBAAA","file":"chunk-4KOQS4DT.mjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nimport {\n zuiTypingIndicatorAppearances,\n zuiTypingIndicatorContainerBase,\n zuiTypingIndicatorDotBase,\n zuiTypingIndicatorDotDelays,\n zuiTypingIndicatorDotSizes,\n zuiTypingIndicatorDotsBase,\n zuiTypingIndicatorLabelBase,\n zuiTypingIndicatorLabelSizes,\n zuiTypingIndicatorSizes,\n} from \"../../design-system/typing-indicator\";\n\nexport { zuiTypingIndicatorDotDelays as typingIndicatorDotDelays };\n\nexport const typingIndicatorVariants = cva(zuiTypingIndicatorContainerBase, {\n variants: {\n size: zuiTypingIndicatorSizes,\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nexport const typingIndicatorDotsVariants = cva(zuiTypingIndicatorDotsBase, {\n variants: {\n size: zuiTypingIndicatorSizes,\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport const typingIndicatorDotVariants = cva(zuiTypingIndicatorDotBase, {\n variants: {\n appearance: zuiTypingIndicatorAppearances,\n size: zuiTypingIndicatorDotSizes,\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n});\n\nexport const typingIndicatorLabelVariants = cva(zuiTypingIndicatorLabelBase, {\n variants: {\n size: zuiTypingIndicatorLabelSizes,\n },\n defaultVariants: { size: \"md\" },\n});\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { TypingIndicatorBaseProps } from \"./types\";\nimport {\n typingIndicatorDotDelays,\n typingIndicatorDotVariants,\n typingIndicatorDotsVariants,\n typingIndicatorLabelVariants,\n typingIndicatorVariants,\n} from \"./variants\";\n\nexport function TypingIndicatorBase({\n appearance,\n size,\n dots = 3,\n label,\n labelPosition = \"before\",\n className,\n ref,\n ...rest\n}: TypingIndicatorBaseProps) {\n return (\n <span\n ref={ref}\n data-slot=\"typing-indicator\"\n className={cn(typingIndicatorVariants({ size }), className)}\n {...rest}\n >\n {label && labelPosition === \"before\" && (\n <TypingIndicatorLabel size={size}>{label}</TypingIndicatorLabel>\n )}\n <span\n data-slot=\"typing-indicator-dots\"\n className={typingIndicatorDotsVariants({ size })}\n >\n {Array.from({ length: dots }).map((_, i) => (\n <span\n key={i}\n data-slot=\"typing-indicator-dot\"\n className={cn(\n typingIndicatorDotVariants({ appearance, size }),\n typingIndicatorDotDelays[i % typingIndicatorDotDelays.length],\n )}\n />\n ))}\n </span>\n {label && labelPosition === \"after\" && (\n <TypingIndicatorLabel size={size}>{label}</TypingIndicatorLabel>\n )}\n </span>\n );\n}\n\nTypingIndicatorBase.displayName = \"TypingIndicator\";\n\nexport function TypingIndicatorLabel({\n size,\n children,\n}: {\n size?: TypingIndicatorBaseProps[\"size\"];\n children: React.ReactNode;\n}) {\n return (\n <span\n data-slot=\"typing-indicator-label\"\n className={typingIndicatorLabelVariants({ size })}\n >\n {children}\n </span>\n );\n}\n\nTypingIndicatorLabel.displayName = \"TypingIndicatorLabel\";\n"]}
@@ -1,6 +1,6 @@
1
1
  import { usePagination } from './chunk-YNBJAFI2.mjs';
2
- import { buttonVariants } from './chunk-4PAHLHYF.mjs';
3
- import { zuiPaginationListBase, zuiPaginationListSizes, zuiPaginationListAppearances, zuiPaginationEllipsisBase, zuiPaginationEllipsisSizes } from './chunk-UVP3MUBU.mjs';
2
+ import { buttonVariants } from './chunk-37KMH77M.mjs';
3
+ import { zuiPaginationListBase, zuiPaginationListSizes, zuiPaginationListAppearances, zuiPaginationEllipsisBase, zuiPaginationEllipsisSizes } from './chunk-AMNJ35TT.mjs';
4
4
  import { cn, clampPage } from './chunk-4D54YOL6.mjs';
5
5
  import { useId, useCallback } from 'react';
6
6
  import { cva } from 'class-variance-authority';
@@ -217,5 +217,5 @@ var Pagination = ({
217
217
  Pagination.displayName = "Pagination";
218
218
 
219
219
  export { Pagination, paginationEllipsisVariants, paginationListVariants };
220
- //# sourceMappingURL=chunk-D7ZTSAA6.mjs.map
221
- //# sourceMappingURL=chunk-D7ZTSAA6.mjs.map
220
+ //# sourceMappingURL=chunk-5XSW5JYA.mjs.map
221
+ //# sourceMappingURL=chunk-5XSW5JYA.mjs.map