@zentauri-ui/zentauri-components 2.2.2 → 2.3.1

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 (194) hide show
  1. package/README.md +10 -6
  2. package/cli/props.json +526 -0
  3. package/cli/registry.json +11 -0
  4. package/dist/chunk-4U6PVVST.mjs +15 -0
  5. package/dist/chunk-4U6PVVST.mjs.map +1 -0
  6. package/dist/{chunk-DIAA5VH4.mjs → chunk-CIZQQ32L.mjs} +3 -3
  7. package/dist/chunk-CIZQQ32L.mjs.map +1 -0
  8. package/dist/chunk-EZNR7VLJ.js +65 -0
  9. package/dist/chunk-EZNR7VLJ.js.map +1 -0
  10. package/dist/{chunk-PQ2XTY3M.js → chunk-G36ZV446.js} +13 -13
  11. package/dist/{chunk-PQ2XTY3M.js.map → chunk-G36ZV446.js.map} +1 -1
  12. package/dist/{chunk-H3BJOK22.js → chunk-HNAUUCR5.js} +3 -3
  13. package/dist/chunk-HNAUUCR5.js.map +1 -0
  14. package/dist/{chunk-UZ6Y5CSV.js → chunk-K7UU3K54.js} +39 -18
  15. package/dist/chunk-K7UU3K54.js.map +1 -0
  16. package/dist/chunk-MY3DQVNF.js +19 -0
  17. package/dist/{chunk-ILPPXWR3.js.map → chunk-MY3DQVNF.js.map} +1 -1
  18. package/dist/{chunk-ATE5SCTR.mjs → chunk-N6Q4ZLQR.mjs} +3 -3
  19. package/dist/{chunk-ATE5SCTR.mjs.map → chunk-N6Q4ZLQR.mjs.map} +1 -1
  20. package/dist/{chunk-GFE6ZX5Y.mjs → chunk-PJATBFEK.mjs} +30 -9
  21. package/dist/chunk-PJATBFEK.mjs.map +1 -0
  22. package/dist/chunk-PVVYOIU2.js +38 -0
  23. package/dist/chunk-PVVYOIU2.js.map +1 -0
  24. package/dist/chunk-PWEZB53R.js +90 -0
  25. package/dist/chunk-PWEZB53R.js.map +1 -0
  26. package/dist/chunk-PWYEC3KY.mjs +30 -0
  27. package/dist/chunk-PWYEC3KY.mjs.map +1 -0
  28. package/dist/{chunk-5I4GAURE.js → chunk-RBNZNWYQ.js} +6 -6
  29. package/dist/{chunk-5I4GAURE.js.map → chunk-RBNZNWYQ.js.map} +1 -1
  30. package/dist/chunk-RDYR4DHG.mjs +62 -0
  31. package/dist/chunk-RDYR4DHG.mjs.map +1 -0
  32. package/dist/chunk-RWF3NVZP.mjs +29 -0
  33. package/dist/chunk-RWF3NVZP.mjs.map +1 -0
  34. package/dist/{chunk-NUV2I337.mjs → chunk-STWXN5EM.mjs} +3 -3
  35. package/dist/{chunk-NUV2I337.mjs.map → chunk-STWXN5EM.mjs.map} +1 -1
  36. package/dist/{chunk-W5MTZJPE.mjs → chunk-TTKTPERV.mjs} +3 -3
  37. package/dist/{chunk-W5MTZJPE.mjs.map → chunk-TTKTPERV.mjs.map} +1 -1
  38. package/dist/chunk-UBQY572I.mjs +81 -0
  39. package/dist/chunk-UBQY572I.mjs.map +1 -0
  40. package/dist/{chunk-IY72Z65Z.js → chunk-UN5RRNPV.js} +12 -12
  41. package/dist/{chunk-IY72Z65Z.js.map → chunk-UN5RRNPV.js.map} +1 -1
  42. package/dist/{chunk-N2G7IWHS.mjs → chunk-VMVG2RVZ.mjs} +4 -4
  43. package/dist/{chunk-N2G7IWHS.mjs.map → chunk-VMVG2RVZ.mjs.map} +1 -1
  44. package/dist/chunk-XUK5P37Y.js +19 -0
  45. package/dist/chunk-XUK5P37Y.js.map +1 -0
  46. package/dist/chunk-YRQN3AV4.js +38 -0
  47. package/dist/chunk-YRQN3AV4.js.map +1 -0
  48. package/dist/design-system/facade.js +12 -9
  49. package/dist/design-system/facade.js.map +1 -1
  50. package/dist/design-system/facade.mjs +11 -8
  51. package/dist/design-system/facade.mjs.map +1 -1
  52. package/dist/design-system/hash-generator.d.ts +15 -0
  53. package/dist/design-system/hash-generator.d.ts.map +1 -0
  54. package/dist/design-system/index.d.ts +3 -0
  55. package/dist/design-system/index.d.ts.map +1 -1
  56. package/dist/design-system/qr-code.d.ts +4 -0
  57. package/dist/design-system/qr-code.d.ts.map +1 -0
  58. package/dist/design-system/qr-scanner.d.ts +11 -0
  59. package/dist/design-system/qr-scanner.d.ts.map +1 -0
  60. package/dist/design-system/secret-reveal.d.ts +1 -1
  61. package/dist/design-system/secret-reveal.d.ts.map +1 -1
  62. package/dist/hooks/index.d.ts +1 -0
  63. package/dist/hooks/index.d.ts.map +1 -1
  64. package/dist/hooks/useHash/index.d.ts +2 -0
  65. package/dist/hooks/useHash/index.d.ts.map +1 -0
  66. package/dist/hooks/useHash/useHash.d.ts +20 -0
  67. package/dist/hooks/useHash/useHash.d.ts.map +1 -0
  68. package/dist/hooks/useHash.js +18 -0
  69. package/dist/hooks/useHash.js.map +1 -0
  70. package/dist/hooks/useHash.mjs +5 -0
  71. package/dist/hooks/useHash.mjs.map +1 -0
  72. package/dist/ui/buttons/animated.js +14 -11
  73. package/dist/ui/buttons/animated.js.map +1 -1
  74. package/dist/ui/buttons/animated.mjs +12 -9
  75. package/dist/ui/buttons/animated.mjs.map +1 -1
  76. package/dist/ui/buttons.js +15 -12
  77. package/dist/ui/buttons.mjs +13 -10
  78. package/dist/ui/data-table.js +24 -21
  79. package/dist/ui/data-table.js.map +1 -1
  80. package/dist/ui/data-table.mjs +14 -11
  81. package/dist/ui/data-table.mjs.map +1 -1
  82. package/dist/ui/dynamic-stepper.js +24 -21
  83. package/dist/ui/dynamic-stepper.js.map +1 -1
  84. package/dist/ui/dynamic-stepper.mjs +13 -10
  85. package/dist/ui/dynamic-stepper.mjs.map +1 -1
  86. package/dist/ui/hash-generator/hash-generator-base.d.ts +6 -0
  87. package/dist/ui/hash-generator/hash-generator-base.d.ts.map +1 -0
  88. package/dist/ui/hash-generator/hash-generator.d.ts +2 -0
  89. package/dist/ui/hash-generator/hash-generator.d.ts.map +1 -0
  90. package/dist/ui/hash-generator/index.d.ts +5 -0
  91. package/dist/ui/hash-generator/index.d.ts.map +1 -0
  92. package/dist/ui/hash-generator/types.d.ts +17 -0
  93. package/dist/ui/hash-generator/types.d.ts.map +1 -0
  94. package/dist/ui/hash-generator/variants.d.ts +10 -0
  95. package/dist/ui/hash-generator/variants.d.ts.map +1 -0
  96. package/dist/ui/hash-generator.js +126 -0
  97. package/dist/ui/hash-generator.js.map +1 -0
  98. package/dist/ui/hash-generator.mjs +117 -0
  99. package/dist/ui/hash-generator.mjs.map +1 -0
  100. package/dist/ui/pagination.js +16 -13
  101. package/dist/ui/pagination.mjs +13 -10
  102. package/dist/ui/qr-code/animated/animations.d.ts +8 -0
  103. package/dist/ui/qr-code/animated/animations.d.ts.map +1 -0
  104. package/dist/ui/qr-code/animated/index.d.ts +4 -0
  105. package/dist/ui/qr-code/animated/index.d.ts.map +1 -0
  106. package/dist/ui/qr-code/animated/qr-code-animated.d.ts +6 -0
  107. package/dist/ui/qr-code/animated/qr-code-animated.d.ts.map +1 -0
  108. package/dist/ui/qr-code/animated/types.d.ts +9 -0
  109. package/dist/ui/qr-code/animated/types.d.ts.map +1 -0
  110. package/dist/ui/qr-code/animated.js +156 -0
  111. package/dist/ui/qr-code/animated.js.map +1 -0
  112. package/dist/ui/qr-code/animated.mjs +149 -0
  113. package/dist/ui/qr-code/animated.mjs.map +1 -0
  114. package/dist/ui/qr-code/index.d.ts +5 -0
  115. package/dist/ui/qr-code/index.d.ts.map +1 -0
  116. package/dist/ui/qr-code/qr-code-base.d.ts +47 -0
  117. package/dist/ui/qr-code/qr-code-base.d.ts.map +1 -0
  118. package/dist/ui/qr-code/qr-code.d.ts +2 -0
  119. package/dist/ui/qr-code/qr-code.d.ts.map +1 -0
  120. package/dist/ui/qr-code/types.d.ts +14 -0
  121. package/dist/ui/qr-code/types.d.ts.map +1 -0
  122. package/dist/ui/qr-code/variants.d.ts +4 -0
  123. package/dist/ui/qr-code/variants.d.ts.map +1 -0
  124. package/dist/ui/qr-code.js +35 -0
  125. package/dist/ui/qr-code.js.map +1 -0
  126. package/dist/ui/qr-code.mjs +17 -0
  127. package/dist/ui/qr-code.mjs.map +1 -0
  128. package/dist/ui/qr-scanner/index.d.ts +4 -0
  129. package/dist/ui/qr-scanner/index.d.ts.map +1 -0
  130. package/dist/ui/qr-scanner/qr-scanner-base.d.ts +62 -0
  131. package/dist/ui/qr-scanner/qr-scanner-base.d.ts.map +1 -0
  132. package/dist/ui/qr-scanner/qr-scanner.d.ts +2 -0
  133. package/dist/ui/qr-scanner/qr-scanner.d.ts.map +1 -0
  134. package/dist/ui/qr-scanner/types.d.ts +28 -0
  135. package/dist/ui/qr-scanner/types.d.ts.map +1 -0
  136. package/dist/ui/qr-scanner/variants.d.ts +9 -0
  137. package/dist/ui/qr-scanner/variants.d.ts.map +1 -0
  138. package/dist/ui/qr-scanner.js +316 -0
  139. package/dist/ui/qr-scanner.js.map +1 -0
  140. package/dist/ui/qr-scanner.mjs +308 -0
  141. package/dist/ui/qr-scanner.mjs.map +1 -0
  142. package/dist/ui/secret-reveal/animated/secret-reveal-animated.d.ts.map +1 -1
  143. package/dist/ui/secret-reveal/animated.js +10 -7
  144. package/dist/ui/secret-reveal/animated.js.map +1 -1
  145. package/dist/ui/secret-reveal/animated.mjs +6 -3
  146. package/dist/ui/secret-reveal/animated.mjs.map +1 -1
  147. package/dist/ui/secret-reveal/secret-reveal-base.d.ts.map +1 -1
  148. package/dist/ui/secret-reveal.js +14 -11
  149. package/dist/ui/secret-reveal.js.map +1 -1
  150. package/dist/ui/secret-reveal.mjs +7 -4
  151. package/dist/ui/secret-reveal.mjs.map +1 -1
  152. package/dist/ui/split-button.js +26 -23
  153. package/dist/ui/split-button.js.map +1 -1
  154. package/dist/ui/split-button.mjs +13 -10
  155. package/dist/ui/split-button.mjs.map +1 -1
  156. package/package.json +5 -2
  157. package/src/design-system/hash-generator.ts +34 -0
  158. package/src/design-system/index.ts +3 -0
  159. package/src/design-system/qr-code.ts +13 -0
  160. package/src/design-system/qr-scanner.ts +32 -0
  161. package/src/design-system/secret-reveal.ts +1 -1
  162. package/src/hooks/index.ts +6 -0
  163. package/src/hooks/useHash/index.ts +6 -0
  164. package/src/hooks/useHash/useHash.test.ts +77 -0
  165. package/src/hooks/useHash/useHash.ts +89 -0
  166. package/src/ui/hash-generator/hash-generator-base.tsx +106 -0
  167. package/src/ui/hash-generator/hash-generator.test.tsx +73 -0
  168. package/src/ui/hash-generator/hash-generator.tsx +1 -0
  169. package/src/ui/hash-generator/index.ts +18 -0
  170. package/src/ui/hash-generator/types.ts +29 -0
  171. package/src/ui/hash-generator/variants.ts +31 -0
  172. package/src/ui/qr-code/animated/animations.ts +51 -0
  173. package/src/ui/qr-code/animated/index.ts +5 -0
  174. package/src/ui/qr-code/animated/qr-code-animated.tsx +111 -0
  175. package/src/ui/qr-code/animated/types.ts +10 -0
  176. package/src/ui/qr-code/index.ts +10 -0
  177. package/src/ui/qr-code/qr-code-base.tsx +149 -0
  178. package/src/ui/qr-code/qr-code.test.tsx +58 -0
  179. package/src/ui/qr-code/qr-code.tsx +2 -0
  180. package/src/ui/qr-code/types.ts +22 -0
  181. package/src/ui/qr-code/variants.ts +11 -0
  182. package/src/ui/qr-scanner/index.ts +17 -0
  183. package/src/ui/qr-scanner/qr-scanner-base.tsx +568 -0
  184. package/src/ui/qr-scanner/qr-scanner.test.tsx +61 -0
  185. package/src/ui/qr-scanner/qr-scanner.tsx +2 -0
  186. package/src/ui/qr-scanner/types.ts +32 -0
  187. package/src/ui/qr-scanner/variants.ts +26 -0
  188. package/src/ui/secret-reveal/animated/secret-reveal-animated.tsx +4 -1
  189. package/src/ui/secret-reveal/secret-reveal-base.tsx +4 -1
  190. package/dist/chunk-DIAA5VH4.mjs.map +0 -1
  191. package/dist/chunk-GFE6ZX5Y.mjs.map +0 -1
  192. package/dist/chunk-H3BJOK22.js.map +0 -1
  193. package/dist/chunk-ILPPXWR3.js +0 -19
  194. package/dist/chunk-UZ6Y5CSV.js.map +0 -1
package/README.md CHANGED
@@ -29,14 +29,14 @@ Generated from the component package Vitest JSON report via `pnpm --filter @zent
29
29
 
30
30
  | Metric | Result |
31
31
  | ---------- | ---------------- |
32
- | Test files | 102 passed (102) |
33
- | Tests | 858 passed (858) |
32
+ | Test files | 106 passed (106) |
33
+ | Tests | 885 passed (885) |
34
34
 
35
35
  | Area | Test files | Tests |
36
36
  | ------------------------------ | ---------- | ----- |
37
- | Components and UI utilities | 53 | 553 |
37
+ | Components and UI utilities | 56 | 574 |
38
38
  | Standalone animations | 1 | 45 |
39
- | React hooks | 41 | 174 |
39
+ | React hooks | 42 | 180 |
40
40
  | Design system facade | 1 | 11 |
41
41
  | CLI and import rewriting | 4 | 33 |
42
42
  | Accessibility (axe + keyboard) | 2 | 42 |
@@ -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` | 32 |
52
+ | `src/ui/peer-isolation.test.ts` | 33 |
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 |
@@ -73,6 +73,7 @@ Generated from the component package Vitest JSON report via `pnpm --filter @zent
73
73
  | `src/hooks/useLongPress/useLongPress.test.ts` | 9 |
74
74
  | `src/hooks/useTableFilter/useTableFilter.test.ts` | 9 |
75
75
  | `src/ui/animated-number/animated-number.test.tsx` | 9 |
76
+ | `src/ui/hash-generator/hash-generator.test.tsx` | 9 |
76
77
  | `src/ui/secret-reveal/secret-reveal.test.tsx` | 9 |
77
78
  | `src/ui/skeleton/skeleton.test.tsx` | 9 |
78
79
  | `src/ui/slider/slider.test.tsx` | 9 |
@@ -97,6 +98,7 @@ Generated from the component package Vitest JSON report via `pnpm --filter @zent
97
98
  | `src/hooks/useClipboard/useClipboard.test.ts` | 6 |
98
99
  | `src/hooks/useCountdown/useCountdown.test.ts` | 6 |
99
100
  | `src/hooks/useGeolocation/useGeolocation.test.ts` | 6 |
101
+ | `src/hooks/useHash/useHash.test.ts` | 6 |
100
102
  | `src/hooks/useIdleTimeout/useIdleTimeout.test.ts` | 6 |
101
103
  | `src/hooks/useKeyPress/useKeyPress.test.ts` | 6 |
102
104
  | `src/hooks/useLocalStorage/useLocalStorage.test.ts` | 6 |
@@ -106,6 +108,7 @@ Generated from the component package Vitest JSON report via `pnpm --filter @zent
106
108
  | `src/ui/divider/divider.test.tsx` | 6 |
107
109
  | `src/ui/dropdown/dropdown.test.tsx` | 6 |
108
110
  | `src/ui/empty-state/empty-state.test.tsx` | 6 |
111
+ | `src/ui/qr-code/qr-code.test.tsx` | 6 |
109
112
  | `src/ui/search/filter-search-suggestions.test.ts` | 6 |
110
113
  | `src/ui/toast/toast.test.tsx` | 6 |
111
114
  | `src/hooks/useCookie/useCookie.test.ts` | 5 |
@@ -114,6 +117,7 @@ Generated from the component package Vitest JSON report via `pnpm --filter @zent
114
117
  | `src/hooks/useScrollPosition/useScrollPosition.test.ts` | 5 |
115
118
  | `src/hooks/useTimeout/useTimeout.test.ts` | 5 |
116
119
  | `src/ui/popover/popover.test.tsx` | 5 |
120
+ | `src/ui/qr-scanner/qr-scanner.test.tsx` | 5 |
117
121
  | `src/ui/radio-group/radio-group.test.tsx` | 5 |
118
122
  | `src/ui/toggle/toggle.test.tsx` | 5 |
119
123
  | `cli/index.test.ts` | 4 |
@@ -858,7 +862,7 @@ From this package directory in the monorepo:
858
862
 
859
863
  - `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)
860
864
  - `pnpm dev` — `tsup` watch mode (same `onSuccess` hook after each rebuild)
861
- - `pnpm test` / `pnpm test:watch` — **Vitest** and **Testing Library** unit tests // currently covered 858 test cases in total
865
+ - `pnpm test` / `pnpm test:watch` — **Vitest** and **Testing Library** unit tests // currently covered 885 test cases in total
862
866
  - `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
863
867
  - `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
864
868
  - **`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
@@ -7257,6 +7257,146 @@
7257
7257
  }
7258
7258
  ]
7259
7259
  },
7260
+ "hash-generator": {
7261
+ "slug": "hash-generator",
7262
+ "subcomponents": [
7263
+ {
7264
+ "name": "static:HashGenerator",
7265
+ "displayName": "HashGenerator",
7266
+ "propsType": "HashGeneratorProps",
7267
+ "source": "static",
7268
+ "props": [
7269
+ {
7270
+ "name": "appearance",
7271
+ "type": "enum",
7272
+ "required": false,
7273
+ "default": "default",
7274
+ "group": "variant",
7275
+ "isVariant": true,
7276
+ "options": [
7277
+ "default"
7278
+ ],
7279
+ "variantGroup": "appearance",
7280
+ "deprecated": false
7281
+ },
7282
+ {
7283
+ "name": "size",
7284
+ "type": "enum",
7285
+ "required": false,
7286
+ "default": "md",
7287
+ "group": "variant",
7288
+ "isVariant": true,
7289
+ "options": [
7290
+ "lg",
7291
+ "md",
7292
+ "sm"
7293
+ ],
7294
+ "variantGroup": "size",
7295
+ "deprecated": false
7296
+ },
7297
+ {
7298
+ "name": "onValueChange",
7299
+ "type": "((value: string) => void) | undefined",
7300
+ "required": false,
7301
+ "group": "controlled",
7302
+ "deprecated": false
7303
+ },
7304
+ {
7305
+ "name": "value",
7306
+ "type": "string | undefined",
7307
+ "required": false,
7308
+ "group": "controlled",
7309
+ "deprecated": false
7310
+ },
7311
+ {
7312
+ "name": "algorithm",
7313
+ "type": "HashGeneratorAlgorithm | undefined",
7314
+ "required": false,
7315
+ "group": "behavior",
7316
+ "deprecated": false
7317
+ },
7318
+ {
7319
+ "name": "readOnly",
7320
+ "type": "boolean | undefined",
7321
+ "required": false,
7322
+ "group": "behavior",
7323
+ "deprecated": false
7324
+ },
7325
+ {
7326
+ "name": "showCopyButton",
7327
+ "type": "boolean | undefined",
7328
+ "required": false,
7329
+ "group": "behavior",
7330
+ "deprecated": false
7331
+ },
7332
+ {
7333
+ "name": "children",
7334
+ "type": "ReactNode",
7335
+ "required": false,
7336
+ "group": "dom",
7337
+ "deprecated": false
7338
+ },
7339
+ {
7340
+ "name": "className",
7341
+ "type": "string | undefined",
7342
+ "required": false,
7343
+ "group": "dom",
7344
+ "deprecated": false
7345
+ },
7346
+ {
7347
+ "name": "id",
7348
+ "type": "string | undefined",
7349
+ "required": false,
7350
+ "group": "dom",
7351
+ "deprecated": false
7352
+ },
7353
+ {
7354
+ "name": "onClick",
7355
+ "type": "MouseEventHandler<HTMLDivElement> | undefined",
7356
+ "required": false,
7357
+ "group": "dom",
7358
+ "deprecated": false
7359
+ },
7360
+ {
7361
+ "name": "style",
7362
+ "type": "CSSProperties | undefined",
7363
+ "required": false,
7364
+ "group": "dom",
7365
+ "deprecated": false
7366
+ },
7367
+ {
7368
+ "name": "title",
7369
+ "type": "string | undefined",
7370
+ "required": false,
7371
+ "group": "dom",
7372
+ "deprecated": false
7373
+ }
7374
+ ]
7375
+ },
7376
+ {
7377
+ "name": "static:HashGeneratorVariant",
7378
+ "displayName": "HashGeneratorVariant",
7379
+ "propsType": "HashGeneratorVariantProps",
7380
+ "source": "static",
7381
+ "props": [
7382
+ {
7383
+ "name": "appearance",
7384
+ "type": "'default' | null | undefined",
7385
+ "required": false,
7386
+ "group": "behavior",
7387
+ "deprecated": false
7388
+ },
7389
+ {
7390
+ "name": "size",
7391
+ "type": "'md' | 'sm' | 'lg' | null | undefined",
7392
+ "required": false,
7393
+ "group": "behavior",
7394
+ "deprecated": false
7395
+ }
7396
+ ]
7397
+ }
7398
+ ]
7399
+ },
7260
7400
  "inputs": {
7261
7401
  "slug": "inputs",
7262
7402
  "subcomponents": [
@@ -10041,6 +10181,392 @@
10041
10181
  }
10042
10182
  ]
10043
10183
  },
10184
+ "qr-code": {
10185
+ "slug": "qr-code",
10186
+ "subcomponents": [
10187
+ {
10188
+ "name": "static:QrCode",
10189
+ "displayName": "QrCode",
10190
+ "propsType": "QrCodeProps",
10191
+ "source": "static",
10192
+ "props": [
10193
+ {
10194
+ "name": "value",
10195
+ "type": "string",
10196
+ "required": true,
10197
+ "group": "controlled",
10198
+ "deprecated": false
10199
+ },
10200
+ {
10201
+ "name": "bgColor",
10202
+ "type": "string | undefined",
10203
+ "required": false,
10204
+ "group": "behavior",
10205
+ "deprecated": false
10206
+ },
10207
+ {
10208
+ "name": "canvasSize",
10209
+ "type": "number | undefined",
10210
+ "required": false,
10211
+ "group": "behavior",
10212
+ "deprecated": false
10213
+ },
10214
+ {
10215
+ "name": "caption",
10216
+ "type": "ReactNode",
10217
+ "required": false,
10218
+ "group": "behavior",
10219
+ "deprecated": false
10220
+ },
10221
+ {
10222
+ "name": "fgColor",
10223
+ "type": "string | undefined",
10224
+ "required": false,
10225
+ "group": "behavior",
10226
+ "deprecated": false
10227
+ },
10228
+ {
10229
+ "name": "level",
10230
+ "type": "QrCodeLevel | undefined",
10231
+ "required": false,
10232
+ "group": "behavior",
10233
+ "deprecated": false
10234
+ },
10235
+ {
10236
+ "name": "margin",
10237
+ "type": "number | undefined",
10238
+ "required": false,
10239
+ "group": "behavior",
10240
+ "deprecated": false
10241
+ },
10242
+ {
10243
+ "name": "children",
10244
+ "type": "ReactNode",
10245
+ "required": false,
10246
+ "group": "dom",
10247
+ "deprecated": false
10248
+ },
10249
+ {
10250
+ "name": "className",
10251
+ "type": "string | undefined",
10252
+ "required": false,
10253
+ "group": "dom",
10254
+ "deprecated": false
10255
+ },
10256
+ {
10257
+ "name": "id",
10258
+ "type": "string | undefined",
10259
+ "required": false,
10260
+ "group": "dom",
10261
+ "deprecated": false
10262
+ },
10263
+ {
10264
+ "name": "onClick",
10265
+ "type": "MouseEventHandler<HTMLDivElement> | undefined",
10266
+ "required": false,
10267
+ "group": "dom",
10268
+ "deprecated": false
10269
+ },
10270
+ {
10271
+ "name": "style",
10272
+ "type": "CSSProperties | undefined",
10273
+ "required": false,
10274
+ "group": "dom",
10275
+ "deprecated": false
10276
+ },
10277
+ {
10278
+ "name": "title",
10279
+ "type": "string | undefined",
10280
+ "required": false,
10281
+ "group": "dom",
10282
+ "deprecated": false
10283
+ }
10284
+ ]
10285
+ },
10286
+ {
10287
+ "name": "animated:QrCodeAnimated",
10288
+ "displayName": "QrCodeAnimated",
10289
+ "propsType": "QrCodeAnimatedProps",
10290
+ "source": "animated",
10291
+ "props": [
10292
+ {
10293
+ "name": "value",
10294
+ "type": "string",
10295
+ "required": true,
10296
+ "group": "controlled",
10297
+ "deprecated": false
10298
+ },
10299
+ {
10300
+ "name": "animation",
10301
+ "type": "QrCodeAnimation | undefined",
10302
+ "required": false,
10303
+ "group": "behavior",
10304
+ "deprecated": false
10305
+ },
10306
+ {
10307
+ "name": "bgColor",
10308
+ "type": "string | undefined",
10309
+ "required": false,
10310
+ "group": "behavior",
10311
+ "deprecated": false
10312
+ },
10313
+ {
10314
+ "name": "canvasSize",
10315
+ "type": "number | undefined",
10316
+ "required": false,
10317
+ "group": "behavior",
10318
+ "deprecated": false
10319
+ },
10320
+ {
10321
+ "name": "caption",
10322
+ "type": "ReactNode",
10323
+ "required": false,
10324
+ "group": "behavior",
10325
+ "deprecated": false
10326
+ },
10327
+ {
10328
+ "name": "fgColor",
10329
+ "type": "string | undefined",
10330
+ "required": false,
10331
+ "group": "behavior",
10332
+ "deprecated": false
10333
+ },
10334
+ {
10335
+ "name": "level",
10336
+ "type": "QrCodeLevel | undefined",
10337
+ "required": false,
10338
+ "group": "behavior",
10339
+ "deprecated": false
10340
+ },
10341
+ {
10342
+ "name": "margin",
10343
+ "type": "number | undefined",
10344
+ "required": false,
10345
+ "group": "behavior",
10346
+ "deprecated": false
10347
+ },
10348
+ {
10349
+ "name": "ref",
10350
+ "type": "Ref<HTMLDivElement> | undefined",
10351
+ "required": false,
10352
+ "group": "behavior",
10353
+ "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).",
10354
+ "deprecated": false
10355
+ },
10356
+ {
10357
+ "name": "children",
10358
+ "type": "ReactNode",
10359
+ "required": false,
10360
+ "group": "dom",
10361
+ "deprecated": false
10362
+ },
10363
+ {
10364
+ "name": "className",
10365
+ "type": "string | undefined",
10366
+ "required": false,
10367
+ "group": "dom",
10368
+ "deprecated": false
10369
+ },
10370
+ {
10371
+ "name": "id",
10372
+ "type": "string | undefined",
10373
+ "required": false,
10374
+ "group": "dom",
10375
+ "deprecated": false
10376
+ },
10377
+ {
10378
+ "name": "onClick",
10379
+ "type": "MouseEventHandler<HTMLDivElement> | undefined",
10380
+ "required": false,
10381
+ "group": "dom",
10382
+ "deprecated": false
10383
+ },
10384
+ {
10385
+ "name": "style",
10386
+ "type": "CSSProperties | undefined",
10387
+ "required": false,
10388
+ "group": "dom",
10389
+ "deprecated": false
10390
+ },
10391
+ {
10392
+ "name": "title",
10393
+ "type": "string | undefined",
10394
+ "required": false,
10395
+ "group": "dom",
10396
+ "deprecated": false
10397
+ }
10398
+ ]
10399
+ }
10400
+ ]
10401
+ },
10402
+ "qr-scanner": {
10403
+ "slug": "qr-scanner",
10404
+ "subcomponents": [
10405
+ {
10406
+ "name": "static:QrScanner",
10407
+ "displayName": "QrScanner",
10408
+ "propsType": "QrScannerProps",
10409
+ "source": "static",
10410
+ "props": [
10411
+ {
10412
+ "name": "appearance",
10413
+ "type": "enum",
10414
+ "required": false,
10415
+ "default": "default",
10416
+ "group": "variant",
10417
+ "isVariant": true,
10418
+ "options": [
10419
+ "default",
10420
+ "muted"
10421
+ ],
10422
+ "variantGroup": "appearance",
10423
+ "deprecated": false
10424
+ },
10425
+ {
10426
+ "name": "autoStart",
10427
+ "type": "boolean | undefined",
10428
+ "required": false,
10429
+ "group": "behavior",
10430
+ "deprecated": false
10431
+ },
10432
+ {
10433
+ "name": "constraints",
10434
+ "type": "MediaTrackConstraints | undefined",
10435
+ "required": false,
10436
+ "group": "behavior",
10437
+ "deprecated": false
10438
+ },
10439
+ {
10440
+ "name": "continuous",
10441
+ "type": "boolean | undefined",
10442
+ "required": false,
10443
+ "group": "behavior",
10444
+ "deprecated": false
10445
+ },
10446
+ {
10447
+ "name": "facingMode",
10448
+ "type": "'user' | 'environment' | undefined",
10449
+ "required": false,
10450
+ "group": "behavior",
10451
+ "deprecated": false
10452
+ },
10453
+ {
10454
+ "name": "fallbackText",
10455
+ "type": "ReactNode",
10456
+ "required": false,
10457
+ "group": "behavior",
10458
+ "deprecated": false
10459
+ },
10460
+ {
10461
+ "name": "loadingText",
10462
+ "type": "ReactNode",
10463
+ "required": false,
10464
+ "group": "behavior",
10465
+ "deprecated": false
10466
+ },
10467
+ {
10468
+ "name": "noCameraText",
10469
+ "type": "ReactNode",
10470
+ "required": false,
10471
+ "group": "behavior",
10472
+ "deprecated": false
10473
+ },
10474
+ {
10475
+ "name": "onError",
10476
+ "type": "((error: unknown) => void) | undefined",
10477
+ "required": false,
10478
+ "group": "behavior",
10479
+ "deprecated": false
10480
+ },
10481
+ {
10482
+ "name": "onResult",
10483
+ "type": "(data: string) => void",
10484
+ "required": true,
10485
+ "group": "behavior",
10486
+ "deprecated": false
10487
+ },
10488
+ {
10489
+ "name": "onStart",
10490
+ "type": "(() => void) | undefined",
10491
+ "required": false,
10492
+ "group": "behavior",
10493
+ "deprecated": false
10494
+ },
10495
+ {
10496
+ "name": "onStop",
10497
+ "type": "(() => void) | undefined",
10498
+ "required": false,
10499
+ "group": "behavior",
10500
+ "deprecated": false
10501
+ },
10502
+ {
10503
+ "name": "scanDelay",
10504
+ "type": "number | undefined",
10505
+ "required": false,
10506
+ "group": "behavior",
10507
+ "deprecated": false
10508
+ },
10509
+ {
10510
+ "name": "children",
10511
+ "type": "ReactNode",
10512
+ "required": false,
10513
+ "group": "dom",
10514
+ "deprecated": false
10515
+ },
10516
+ {
10517
+ "name": "className",
10518
+ "type": "string | undefined",
10519
+ "required": false,
10520
+ "group": "dom",
10521
+ "deprecated": false
10522
+ },
10523
+ {
10524
+ "name": "id",
10525
+ "type": "string | undefined",
10526
+ "required": false,
10527
+ "group": "dom",
10528
+ "deprecated": false
10529
+ },
10530
+ {
10531
+ "name": "onClick",
10532
+ "type": "MouseEventHandler<HTMLDivElement> | undefined",
10533
+ "required": false,
10534
+ "group": "dom",
10535
+ "deprecated": false
10536
+ },
10537
+ {
10538
+ "name": "style",
10539
+ "type": "CSSProperties | undefined",
10540
+ "required": false,
10541
+ "group": "dom",
10542
+ "deprecated": false
10543
+ },
10544
+ {
10545
+ "name": "title",
10546
+ "type": "string | undefined",
10547
+ "required": false,
10548
+ "group": "dom",
10549
+ "deprecated": false
10550
+ }
10551
+ ]
10552
+ },
10553
+ {
10554
+ "name": "static:QrScannerVariant",
10555
+ "displayName": "QrScannerVariant",
10556
+ "propsType": "QrScannerVariantProps",
10557
+ "source": "static",
10558
+ "props": [
10559
+ {
10560
+ "name": "appearance",
10561
+ "type": "'default' | 'muted' | null | undefined",
10562
+ "required": false,
10563
+ "group": "behavior",
10564
+ "deprecated": false
10565
+ }
10566
+ ]
10567
+ }
10568
+ ]
10569
+ },
10044
10570
  "radio-group": {
10045
10571
  "slug": "radio-group",
10046
10572
  "subcomponents": [
package/cli/registry.json CHANGED
@@ -24,6 +24,7 @@
24
24
  "dynamic-stepper",
25
25
  "empty-state",
26
26
  "file-upload",
27
+ "hash-generator",
27
28
  "inputs",
28
29
  "kbd",
29
30
  "marquee",
@@ -33,6 +34,8 @@
33
34
  "password-strength-meter",
34
35
  "popover",
35
36
  "progress",
37
+ "qr-code",
38
+ "qr-scanner",
36
39
  "radio-group",
37
40
  "rating",
38
41
  "scroll-area",
@@ -71,6 +74,7 @@
71
74
  "password-strength-meter",
72
75
  "popover",
73
76
  "progress",
77
+ "qr-code",
74
78
  "radio-group",
75
79
  "secret-reveal",
76
80
  "skeleton",
@@ -168,6 +172,7 @@
168
172
  "dynamic-stepper",
169
173
  "empty-state",
170
174
  "file-upload",
175
+ "hash-generator",
171
176
  "inputs",
172
177
  "kbd",
173
178
  "marquee",
@@ -177,6 +182,8 @@
177
182
  "password-strength-meter",
178
183
  "popover",
179
184
  "progress",
185
+ "qr-code",
186
+ "qr-scanner",
180
187
  "radio-group",
181
188
  "rating",
182
189
  "scroll-area",
@@ -254,6 +261,7 @@
254
261
  "useEventListener",
255
262
  "useFocusManagement",
256
263
  "useGeolocation",
264
+ "useHash",
257
265
  "useHotkeys",
258
266
  "useHover",
259
267
  "useIdleTimeout",
@@ -372,6 +380,9 @@
372
380
  "progress": [
373
381
  "framer-motion"
374
382
  ],
383
+ "qr-code": [
384
+ "framer-motion"
385
+ ],
375
386
  "radio-group": [
376
387
  "framer-motion"
377
388
  ],
@@ -0,0 +1,15 @@
1
+ // src/design-system/qr-code.ts
2
+ var zuiQrCodeBase = [
3
+ "inline-flex flex-col items-center gap-3 rounded-2xl border p-6",
4
+ "border-[color:var(--zui-qr-code-border,var(--zui-border,#0000001a))] dark:border-[color:var(--zui-qr-code-border-dark,var(--zui-border-dark,#ffffff1a))]",
5
+ "bg-[var(--zui-qr-code-bg,var(--zui-surface,oklch(98.4%_0.003_247.858)))] dark:bg-[var(--zui-qr-code-bg-dark,var(--zui-surface-dark,oklch(12.9%_0.042_264.695)))]"
6
+ ];
7
+ var zuiQrCodeCanvasWrapper = [
8
+ "overflow-hidden rounded-xl",
9
+ "bg-[var(--zui-qr-code-canvas-bg,var(--zui-surface-muted,oklch(92.9%_0.013_255.508)))] dark:bg-[var(--zui-qr-code-canvas-bg-dark,var(--zui-surface-muted-dark,oklch(27.9%_0.041_260.031)))]"
10
+ ];
11
+ var zuiQrCodeCaptionBase = "text-xs text-center text-[color:var(--zui-qr-code-caption-fg,var(--zui-fg-muted,oklch(55.2%_0.046_257.417)))] dark:text-[color:var(--zui-qr-code-caption-fg-dark,var(--zui-fg-muted-dark,oklch(70.8%_0.015_256.243)))] max-w-full truncate px-2";
12
+
13
+ export { zuiQrCodeBase, zuiQrCodeCanvasWrapper, zuiQrCodeCaptionBase };
14
+ //# sourceMappingURL=chunk-4U6PVVST.mjs.map
15
+ //# sourceMappingURL=chunk-4U6PVVST.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/design-system/qr-code.ts"],"names":[],"mappings":";AAAO,IAAM,aAAA,GAAgB;AAAA,EAC3B,gEAAA;AAAA,EACA,0JAAA;AAAA,EACA;AACF;AAEO,IAAM,sBAAA,GAAyB;AAAA,EACpC,4BAAA;AAAA,EACA;AACF;AAEO,IAAM,oBAAA,GACX","file":"chunk-4U6PVVST.mjs","sourcesContent":["export const zuiQrCodeBase = [\n \"inline-flex flex-col items-center gap-3 rounded-2xl border p-6\",\n \"border-[color:var(--zui-qr-code-border,var(--zui-border,#0000001a))] dark:border-[color:var(--zui-qr-code-border-dark,var(--zui-border-dark,#ffffff1a))]\",\n \"bg-[var(--zui-qr-code-bg,var(--zui-surface,oklch(98.4%_0.003_247.858)))] dark:bg-[var(--zui-qr-code-bg-dark,var(--zui-surface-dark,oklch(12.9%_0.042_264.695)))]\",\n] as const;\n\nexport const zuiQrCodeCanvasWrapper = [\n \"overflow-hidden rounded-xl\",\n \"bg-[var(--zui-qr-code-canvas-bg,var(--zui-surface-muted,oklch(92.9%_0.013_255.508)))] dark:bg-[var(--zui-qr-code-canvas-bg-dark,var(--zui-surface-muted-dark,oklch(27.9%_0.041_260.031)))]\",\n] as const;\n\nexport const zuiQrCodeCaptionBase =\n \"text-xs text-center text-[color:var(--zui-qr-code-caption-fg,var(--zui-fg-muted,oklch(55.2%_0.046_257.417)))] dark:text-[color:var(--zui-qr-code-caption-fg-dark,var(--zui-fg-muted-dark,oklch(70.8%_0.015_256.243)))] max-w-full truncate px-2\";\n"]}