@lmb-it/kitsconcerto-native 0.1.284 → 0.1.286

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 (75) hide show
  1. package/apps/mobile/src/Core/AutoComplete/index.cjs +12 -4
  2. package/apps/mobile/src/Core/AutoComplete/index.cjs.map +1 -1
  3. package/apps/mobile/src/Core/AutoComplete/index.js +12 -4
  4. package/apps/mobile/src/Core/AutoComplete/index.js.map +1 -1
  5. package/apps/mobile/src/Core/MultiSelect/index.cjs +7 -4
  6. package/apps/mobile/src/Core/MultiSelect/index.cjs.map +1 -1
  7. package/apps/mobile/src/Core/MultiSelect/index.js +7 -4
  8. package/apps/mobile/src/Core/MultiSelect/index.js.map +1 -1
  9. package/apps/mobile/src/ui/accordion/index.js +2 -2
  10. package/components/ImageCropper/compression.cjs +63 -0
  11. package/components/ImageCropper/compression.cjs.map +1 -0
  12. package/components/ImageCropper/compression.js +58 -0
  13. package/components/ImageCropper/compression.js.map +1 -0
  14. package/components/ImageCropper/constants.cjs +35 -0
  15. package/components/ImageCropper/constants.cjs.map +1 -0
  16. package/components/ImageCropper/constants.js +23 -0
  17. package/components/ImageCropper/constants.js.map +1 -0
  18. package/components/ImageCropper/cropperState.cjs +119 -0
  19. package/components/ImageCropper/cropperState.cjs.map +1 -0
  20. package/components/ImageCropper/cropperState.js +114 -0
  21. package/components/ImageCropper/cropperState.js.map +1 -0
  22. package/components/ImageCropper/encode.cjs +45 -0
  23. package/components/ImageCropper/encode.cjs.map +1 -0
  24. package/components/ImageCropper/encode.js +42 -0
  25. package/components/ImageCropper/encode.js.map +1 -0
  26. package/components/ImageCropper/encoderRegistry.cjs +13 -0
  27. package/components/ImageCropper/encoderRegistry.cjs.map +1 -0
  28. package/components/ImageCropper/encoderRegistry.js +9 -0
  29. package/components/ImageCropper/encoderRegistry.js.map +1 -0
  30. package/components/ImageCropper/encoders/rnImageEncoder.cjs +54 -0
  31. package/components/ImageCropper/encoders/rnImageEncoder.cjs.map +1 -0
  32. package/components/ImageCropper/encoders/rnImageEncoder.js +51 -0
  33. package/components/ImageCropper/encoders/rnImageEncoder.js.map +1 -0
  34. package/components/ImageCropper/geometry.cjs +208 -0
  35. package/components/ImageCropper/geometry.cjs.map +1 -0
  36. package/components/ImageCropper/geometry.js +186 -0
  37. package/components/ImageCropper/geometry.js.map +1 -0
  38. package/components/ImageCropper/index.cjs +436 -0
  39. package/components/ImageCropper/index.cjs.map +1 -0
  40. package/components/ImageCropper/index.js +434 -0
  41. package/components/ImageCropper/index.js.map +1 -0
  42. package/components/ImageCropper/pinchZoom.cjs +8 -0
  43. package/components/ImageCropper/pinchZoom.cjs.map +1 -0
  44. package/components/ImageCropper/pinchZoom.js +5 -0
  45. package/components/ImageCropper/pinchZoom.js.map +1 -0
  46. package/components/ImageCropper/useImageSource.cjs +87 -0
  47. package/components/ImageCropper/useImageSource.cjs.map +1 -0
  48. package/components/ImageCropper/useImageSource.js +84 -0
  49. package/components/ImageCropper/useImageSource.js.map +1 -0
  50. package/form/helpers/FormContainer/index.cjs +12 -2
  51. package/form/helpers/FormContainer/index.cjs.map +1 -1
  52. package/form/helpers/FormContainer/index.js +12 -2
  53. package/form/helpers/FormContainer/index.js.map +1 -1
  54. package/form/selects/AutoComplete/index.cjs +10 -1
  55. package/form/selects/AutoComplete/index.cjs.map +1 -1
  56. package/form/selects/AutoComplete/index.js +11 -2
  57. package/form/selects/AutoComplete/index.js.map +1 -1
  58. package/form/selects/MultiSelect/index.cjs +8 -1
  59. package/form/selects/MultiSelect/index.cjs.map +1 -1
  60. package/form/selects/MultiSelect/index.js +9 -2
  61. package/form/selects/MultiSelect/index.js.map +1 -1
  62. package/hooks/useComponentDefaults.cjs +62 -8
  63. package/hooks/useComponentDefaults.cjs.map +1 -1
  64. package/hooks/useComponentDefaults.js +62 -8
  65. package/hooks/useComponentDefaults.js.map +1 -1
  66. package/index.cjs +120 -115
  67. package/index.cjs.map +1 -1
  68. package/index.d.ts +494 -16
  69. package/index.js +2 -0
  70. package/index.js.map +1 -1
  71. package/package.json +13 -1
  72. package/packages/types/src/Theme/defaultTheme.cjs +135 -4
  73. package/packages/types/src/Theme/defaultTheme.cjs.map +1 -1
  74. package/packages/types/src/Theme/defaultTheme.js +135 -4
  75. package/packages/types/src/Theme/defaultTheme.js.map +1 -1
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lmb-it/kitsconcerto-native",
3
- "version": "0.1.284",
3
+ "version": "0.1.286",
4
4
  "description": "KitsConcerto — Native (React Native) UI components",
5
5
  "main": "index.cjs",
6
6
  "module": "index.js",
@@ -38,15 +38,24 @@
38
38
  "yup-password": "^0.4.0"
39
39
  },
40
40
  "peerDependencies": {
41
+ "@bam.tech/react-native-image-resizer": "^3.0.11",
42
+ "@react-native-community/image-editor": "^5.0.0",
41
43
  "chart.js": "^4.5.0",
42
44
  "jspdf": "^3.0.1",
43
45
  "lucide-react": "^0.400.0 || ^1.0.0",
44
46
  "react": "^19.0.0",
45
47
  "react-native": ">=0.70.0",
48
+ "react-native-gesture-handler": ">=2.0.0",
46
49
  "react-router-dom": "^7.9.4",
47
50
  "xlsx": "^0.18.4"
48
51
  },
49
52
  "peerDependenciesMeta": {
53
+ "@bam.tech/react-native-image-resizer": {
54
+ "optional": true
55
+ },
56
+ "@react-native-community/image-editor": {
57
+ "optional": true
58
+ },
50
59
  "chart.js": {
51
60
  "optional": true
52
61
  },
@@ -59,6 +68,9 @@
59
68
  "react-native": {
60
69
  "optional": true
61
70
  },
71
+ "react-native-gesture-handler": {
72
+ "optional": true
73
+ },
62
74
  "react-router-dom": {
63
75
  "optional": true
64
76
  },
@@ -797,10 +797,14 @@ const defaultTheme = {
797
797
  },
798
798
  itemDisabled: {
799
799
  style: { color: "text-muted", opacity: 0.55, cursor: "not-allowed" }
800
- }
801
- },
802
- // ─── MultiSelect (chip + per-item checkbox slots) ─────
803
- MultiSelect: {
800
+ },
801
+ /* ─── Chips (MultiSelect display="chip" AND Tags) ───────
802
+ ⛔ THESE LIVE ON THE BASE GROUP BECAUSE TWO CONTROLS DRAW CHIPS
803
+ AND THEY DISAGREED. The values below used to sit under
804
+ `MultiSelect`, so MultiSelect drew a pill and the Tags field —
805
+ AutoComplete with `isMultiple`, which hardcoded its own
806
+ background+colour and read no slot at all — drew PrimeReact's
807
+ square token right next to it. One definition, both readers. */
804
808
  token: {
805
809
  style: {
806
810
  backgroundColor: "brand-tint",
@@ -819,6 +823,22 @@ const defaultTheme = {
819
823
  tokenIcon: {
820
824
  style: { color: "brand-deep", marginLeft: 4, fontSize: 12, cursor: "pointer" }
821
825
  },
826
+ /* ⚠️ THE CHIPS BOX IS FLAT BY DEFAULT, AND THAT IS NOT THE SAME AS
827
+ UNSTYLEABLE. `KitsContainer` already paints the `inputGroup`
828
+ border around the field, so a second border here would double it.
829
+ The slot exists so a consumer CAN paint it — an `attached` tags
830
+ field has no KitsContainer at all and needs to draw its own
831
+ chrome. See `IChipInputSlots.tokenContainer`. */
832
+ tokenContainer: {
833
+ style: {
834
+ backgroundColor: "transparent",
835
+ borderWidth: 0
836
+ }
837
+ }
838
+ },
839
+ // ─── MultiSelect (per-item checkbox slots; chips inherit
840
+ // from the Select base group above) ───────────────────
841
+ MultiSelect: {
822
842
  checkboxBox: {
823
843
  style: {
824
844
  borderColor: "border-strong",
@@ -1182,6 +1202,117 @@ const defaultTheme = {
1182
1202
  }
1183
1203
  },
1184
1204
  // ─── Sidebar ──────────────────────────────────────────
1205
+ // ─── ImageCropper ─────────────────────────────────
1206
+ // ⚠️ NUMBERS, NOT CSS STRINGS, FOR ANYTHING NATIVE ALSO READS — the
1207
+ // same rule `Input.inputGroup` carries: React Native's ViewStyle wants
1208
+ // `borderWidth: 1`, web treats the bare `1` as `1px`, and one shared
1209
+ // declaration then renders the same frame on both.
1210
+ ImageCropper: {
1211
+ root: {
1212
+ style: {
1213
+ backgroundColor: "surface-card",
1214
+ borderRadius: 16,
1215
+ overflow: "hidden"
1216
+ }
1217
+ },
1218
+ header: {
1219
+ style: {
1220
+ paddingLeft: 16,
1221
+ paddingRight: 16,
1222
+ paddingTop: 12,
1223
+ paddingBottom: 12,
1224
+ borderBottomWidth: 1,
1225
+ borderColor: "border"
1226
+ }
1227
+ },
1228
+ title: {
1229
+ style: { fontSize: 16, fontWeight: "600", fontColor: "text-primary" }
1230
+ },
1231
+ content: {
1232
+ style: { padding: 16, gap: 12 }
1233
+ },
1234
+ /* The stage. Dark on purpose: a photo reads against it in either
1235
+ colour mode, and a light stage makes every pale image look like
1236
+ it has no edges. */
1237
+ container: {
1238
+ style: {
1239
+ backgroundColor: "black-alpha-90",
1240
+ borderRadius: 12,
1241
+ overflow: "hidden"
1242
+ }
1243
+ },
1244
+ footer: {
1245
+ style: {
1246
+ paddingLeft: 16,
1247
+ paddingRight: 16,
1248
+ paddingTop: 12,
1249
+ paddingBottom: 12,
1250
+ borderTopWidth: 1,
1251
+ borderColor: "border",
1252
+ gap: 8
1253
+ }
1254
+ },
1255
+ icon: { style: { fontColor: "text-primary" } },
1256
+ text: { style: { fontSize: 12, fontColor: "text-secondary" } },
1257
+ /* ⛔ THE SCRIM IS AN ALPHA TOKEN, NOT A SOLID. `black-alpha-*` is
1258
+ literal in both colour modes — a scrim that inverted in dark mode
1259
+ would light UP the area the user is cropping away. */
1260
+ shade: { style: { backgroundColor: "black-alpha-60" } },
1261
+ cropWindow: { style: { borderWidth: 2, borderColor: "#FFFFFF" } },
1262
+ gridLine: { style: { backgroundColor: "white-alpha-40" } },
1263
+ handle: {
1264
+ style: {
1265
+ backgroundColor: "#FFFFFF",
1266
+ borderRadius: 2,
1267
+ width: 14,
1268
+ height: 14
1269
+ }
1270
+ },
1271
+ zoomChip: {
1272
+ style: {
1273
+ backgroundColor: "black-alpha-60",
1274
+ fontColor: "#FFFFFF",
1275
+ borderRadius: 999,
1276
+ paddingLeft: 10,
1277
+ paddingRight: 10,
1278
+ paddingTop: 2,
1279
+ paddingBottom: 2,
1280
+ fontSize: 12,
1281
+ fontWeight: "600"
1282
+ }
1283
+ },
1284
+ previewFrame: {
1285
+ style: {
1286
+ borderWidth: 1,
1287
+ borderColor: "border",
1288
+ borderRadius: 12,
1289
+ overflow: "hidden",
1290
+ backgroundColor: "bg-subtle"
1291
+ }
1292
+ },
1293
+ dropZone: {
1294
+ style: {
1295
+ borderWidth: 1,
1296
+ borderStyle: "dashed",
1297
+ borderColor: "border-strong",
1298
+ borderRadius: 12,
1299
+ backgroundColor: "bg-subtle",
1300
+ padding: 24
1301
+ }
1302
+ },
1303
+ progressFill: { style: { backgroundColor: "primary", height: 4 } },
1304
+ /* ⛔ THE SHAPE SLOT, AND IT CARRIES THE *RECTANGLE'S* RADIUS. The
1305
+ circle is NOT a 999 pill set here — `maskShape: 'circle'` makes
1306
+ the component use a true 50%, because a pill radius on a window
1307
+ that is wider than it is tall gives a STADIUM, not a circle.
1308
+ That is exactly what shipped for one render of the 16:9 cover
1309
+ story: 999 leaked out of this slot into the rectangle case and
1310
+ drew a lozenge. What belongs here is the corner rounding a
1311
+ RECTANGULAR window should have; the circle overrides it. */
1312
+ mask: { style: { borderRadius: 12 } },
1313
+ track: { style: { backgroundColor: "bg-accent", borderRadius: 999, height: 4 } },
1314
+ thumb: { style: { backgroundColor: "primary", borderRadius: 999 } }
1315
+ },
1185
1316
  Sidebar: {
1186
1317
  root: {
1187
1318
  style: {