@incodetech/prizma-core-icons 0.1.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 (82) hide show
  1. package/package.json +28 -0
  2. package/src/icon-base.tsx +121 -0
  3. package/src/icons/icon-approval.tsx +15 -0
  4. package/src/icons/icon-arrow-down.tsx +14 -0
  5. package/src/icons/icon-arrow-left.tsx +14 -0
  6. package/src/icons/icon-arrow-right.tsx +14 -0
  7. package/src/icons/icon-arrow-up.tsx +14 -0
  8. package/src/icons/icon-audio-off.tsx +15 -0
  9. package/src/icons/icon-audio-on.tsx +16 -0
  10. package/src/icons/icon-barcode.tsx +20 -0
  11. package/src/icons/icon-brand-badge.tsx +15 -0
  12. package/src/icons/icon-calendar-3-dots.tsx +20 -0
  13. package/src/icons/icon-calendar-6-dots.tsx +23 -0
  14. package/src/icons/icon-calendar-line.tsx +18 -0
  15. package/src/icons/icon-calendar-lines.tsx +19 -0
  16. package/src/icons/icon-calendar-slashes.tsx +19 -0
  17. package/src/icons/icon-calendar.tsx +17 -0
  18. package/src/icons/icon-camera-flip.tsx +16 -0
  19. package/src/icons/icon-camera.tsx +16 -0
  20. package/src/icons/icon-captcha-otp.tsx +19 -0
  21. package/src/icons/icon-chat.tsx +17 -0
  22. package/src/icons/icon-check.tsx +15 -0
  23. package/src/icons/icon-chevron-down.tsx +14 -0
  24. package/src/icons/icon-chevron-left.tsx +14 -0
  25. package/src/icons/icon-chevron-right.tsx +14 -0
  26. package/src/icons/icon-chevron-up.tsx +14 -0
  27. package/src/icons/icon-chip-not-found.tsx +19 -0
  28. package/src/icons/icon-credit-card.tsx +17 -0
  29. package/src/icons/icon-curp-hash.tsx +15 -0
  30. package/src/icons/icon-document-scan.tsx +19 -0
  31. package/src/icons/icon-email-opened.tsx +16 -0
  32. package/src/icons/icon-email.tsx +16 -0
  33. package/src/icons/icon-face-match.tsx +15 -0
  34. package/src/icons/icon-file.tsx +16 -0
  35. package/src/icons/icon-folder-file-open.tsx +15 -0
  36. package/src/icons/icon-geo-pin.tsx +15 -0
  37. package/src/icons/icon-government.tsx +33 -0
  38. package/src/icons/icon-hide.tsx +14 -0
  39. package/src/icons/icon-id-back-scan.tsx +19 -0
  40. package/src/icons/icon-id-front-scan.tsx +19 -0
  41. package/src/icons/icon-id-front.tsx +17 -0
  42. package/src/icons/icon-id-too-far.tsx +17 -0
  43. package/src/icons/icon-image.tsx +17 -0
  44. package/src/icons/icon-info.tsx +15 -0
  45. package/src/icons/icon-intro.tsx +19 -0
  46. package/src/icons/icon-lock-check.tsx +15 -0
  47. package/src/icons/icon-lock-circled-hole.tsx +16 -0
  48. package/src/icons/icon-lock-keyhole.tsx +16 -0
  49. package/src/icons/icon-lock.tsx +16 -0
  50. package/src/icons/icon-magnifying-glass.tsx +15 -0
  51. package/src/icons/icon-microphone.tsx +16 -0
  52. package/src/icons/icon-mobile-phone.tsx +16 -0
  53. package/src/icons/icon-name.tsx +15 -0
  54. package/src/icons/icon-numbered-list.tsx +16 -0
  55. package/src/icons/icon-paper-upload.tsx +17 -0
  56. package/src/icons/icon-passport-cover.tsx +21 -0
  57. package/src/icons/icon-passport-too-far.tsx +23 -0
  58. package/src/icons/icon-passport.tsx +18 -0
  59. package/src/icons/icon-phone-cover.tsx +17 -0
  60. package/src/icons/icon-phone-moved.tsx +17 -0
  61. package/src/icons/icon-qr.tsx +23 -0
  62. package/src/icons/icon-question-bubble-1.tsx +16 -0
  63. package/src/icons/icon-question-bubble-2.tsx +16 -0
  64. package/src/icons/icon-question-camera.tsx +17 -0
  65. package/src/icons/icon-question-circle.tsx +16 -0
  66. package/src/icons/icon-question-square.tsx +16 -0
  67. package/src/icons/icon-question.tsx +15 -0
  68. package/src/icons/icon-show.tsx +15 -0
  69. package/src/icons/icon-signature.tsx +16 -0
  70. package/src/icons/icon-sound-wave.tsx +15 -0
  71. package/src/icons/icon-status-negative.tsx +15 -0
  72. package/src/icons/icon-status-positive.tsx +15 -0
  73. package/src/icons/icon-status-warning.tsx +16 -0
  74. package/src/icons/icon-user-consent.tsx +17 -0
  75. package/src/icons/icon-user-score.tsx +17 -0
  76. package/src/icons/icon-user-selfie.tsx +16 -0
  77. package/src/icons/icon-video-conference.tsx +19 -0
  78. package/src/icons/icon-video-selfie.tsx +16 -0
  79. package/src/icons/icon-wifi-off.tsx +14 -0
  80. package/src/icons/icon-wifi.tsx +18 -0
  81. package/src/icons/icon-x-mark.tsx +14 -0
  82. package/src/index.ts +82 -0
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@incodetech/prizma-core-icons",
3
+ "version": "0.1.0",
4
+ "description": "Prizma Design System — the icon bank as one React component per icon (pay-per-icon: tree-shaking keeps only what you import).",
5
+ "license": "UNLICENSED",
6
+ "type": "module",
7
+ "main": "./src/index.ts",
8
+ "types": "./src/index.ts",
9
+ "exports": {
10
+ ".": "./src/index.ts"
11
+ },
12
+ "files": [
13
+ "src"
14
+ ],
15
+ "sideEffects": false,
16
+ "scripts": {
17
+ "build": "echo \"@incodetech/prizma-core-icons ships source; consumers transpile it (Next.js transpilePackages).\"",
18
+ "generate": "node ../../scripts/generate-icon-vectors.mjs",
19
+ "typecheck": "tsc --noEmit"
20
+ },
21
+ "peerDependencies": {
22
+ "react": ">=18"
23
+ },
24
+ "devDependencies": {
25
+ "@types/react": "^18.3.12",
26
+ "typescript": "^5.6.3"
27
+ }
28
+ }
@@ -0,0 +1,121 @@
1
+ // icon-base.tsx — the shared runtime every generated icon component uses.
2
+ // Hand-written; the per-icon files under src/icons/ are generated from
3
+ // core/icons/bank by core/scripts/generate-icon-vectors.mjs.
4
+ import * as React from 'react';
5
+
6
+ /** Canonical Prizma icon sizes (Figma Size axis → px). */
7
+ export type IconSize = 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl';
8
+ export const ICON_SIZE_PX: Record<IconSize, number> = {
9
+ xs: 8,
10
+ s: 16,
11
+ m: 24,
12
+ l: 32,
13
+ xl: 40,
14
+ '2xl': 48,
15
+ '3xl': 64,
16
+ };
17
+
18
+ export type IconStyle = 'outline' | 'filled';
19
+
20
+ /** One designed variant straight from the bank (style null = single-style family).
21
+ * `paths` are filled shapes (Figma extraction, strokes pre-converted to fills);
22
+ * `strokePaths` are REAL strokes (owner-approved literal SVGs) drawn with
23
+ * stroke="currentColor" so they tint exactly like the fills. */
24
+ export interface IconGlyph {
25
+ size: IconSize;
26
+ style: IconStyle | null;
27
+ w: number;
28
+ h: number;
29
+ paths?: { d: string; fr: 'evenodd' | 'nonzero' }[];
30
+ strokePaths?: { d: string; sw: number; cap: 'round' | 'butt' | 'square'; join: 'round' | 'miter' | 'bevel' }[];
31
+ }
32
+
33
+ export interface PrizmaIconProps {
34
+ /** Requested size token. Undrawn sizes warn once and fall back to the nearest designed one. */
35
+ size?: IconSize;
36
+ /** Requested style. Families without the style fall back to the one they have. */
37
+ style?: IconStyle;
38
+ /**
39
+ * Accessible name. Icons are decorative by default (aria-hidden); passing a
40
+ * label switches the SVG to role="img" with that aria-label.
41
+ */
42
+ label?: string;
43
+ className?: string;
44
+ }
45
+
46
+ // Same guardrail pattern as Button's DESIGNED_SIZES: warn once per
47
+ // icon × request, then render the nearest designed variant.
48
+ const warned = new Set<string>();
49
+ function warnOnce(key: string, message: string): void {
50
+ if (warned.has(key)) return;
51
+ warned.add(key);
52
+ // eslint-disable-next-line no-console
53
+ console.warn(message);
54
+ }
55
+
56
+ function resolveGlyph(name: string, glyphs: IconGlyph[], size: IconSize, style: IconStyle): IconGlyph {
57
+ let candidates = glyphs.filter((g) => g.style === null || g.style === style);
58
+ if (candidates.length === 0) {
59
+ warnOnce(
60
+ `${name}|style|${style}`,
61
+ `[Prizma Icon] "${name}" is not designed in style "${style}" — rendering the designed style.`,
62
+ );
63
+ candidates = glyphs;
64
+ }
65
+ // An exact size × style drawing beats the single-style (null) family —
66
+ // that lets an owner-approved outline coexist with the extracted default.
67
+ const exact =
68
+ candidates.find((g) => g.size === size && g.style === style) ??
69
+ candidates.find((g) => g.size === size);
70
+ if (exact) return exact;
71
+ const want = ICON_SIZE_PX[size];
72
+ // Nearest designed size; on a tie prefer the larger drawing.
73
+ const nearest = [...candidates].sort(
74
+ (a, b) =>
75
+ Math.abs(ICON_SIZE_PX[a.size] - want) - Math.abs(ICON_SIZE_PX[b.size] - want) ||
76
+ ICON_SIZE_PX[b.size] - ICON_SIZE_PX[a.size],
77
+ )[0];
78
+ const designed = [...new Set(candidates.map((g) => g.size))].join(', ');
79
+ warnOnce(
80
+ `${name}|size|${size}|${style}`,
81
+ `[Prizma Icon] "${name}" is not designed at size ${size} — rendering ${nearest.size}. Designed sizes: ${designed}.`,
82
+ );
83
+ return nearest;
84
+ }
85
+
86
+ /** Builds one tree-shakable icon component from its designed variants. */
87
+ export function createIcon(name: string, glyphs: IconGlyph[]): React.FC<PrizmaIconProps> {
88
+ const Icon: React.FC<PrizmaIconProps> = ({ size = 'm', style = 'outline', label, className }) => {
89
+ const glyph = resolveGlyph(name, glyphs, size, style);
90
+ return (
91
+ <svg
92
+ xmlns="http://www.w3.org/2000/svg"
93
+ width={glyph.w}
94
+ height={glyph.h}
95
+ viewBox={`0 0 ${glyph.w} ${glyph.h}`}
96
+ fill="currentColor"
97
+ aria-hidden={label ? undefined : true}
98
+ role={label ? 'img' : undefined}
99
+ aria-label={label}
100
+ className={className}
101
+ >
102
+ {(glyph.paths ?? []).map((p, i) => (
103
+ <path key={i} d={p.d} fillRule={p.fr} clipRule={p.fr} />
104
+ ))}
105
+ {(glyph.strokePaths ?? []).map((p, i) => (
106
+ <path
107
+ key={`s${i}`}
108
+ d={p.d}
109
+ fill="none"
110
+ stroke="currentColor"
111
+ strokeWidth={p.sw}
112
+ strokeLinecap={p.cap}
113
+ strokeLinejoin={p.join}
114
+ />
115
+ ))}
116
+ </svg>
117
+ );
118
+ };
119
+ Icon.displayName = `Icon(${name})`;
120
+ return Icon;
121
+ }
@@ -0,0 +1,15 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconApproval = createIcon('approval', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M21 12 C21 7.0291 16.9709 3 12 3 C7.0291 3 3 7.0291 3 12 C3 16.9699 7.0291 21 12 21 C16.9709 21 21 16.9699 21 12 Z', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M8.5359 12.0002 L10.8458 14.309 L15.4634 9.6914', sw: 1.5, cap: 'round', join: 'round' },
13
+ ],
14
+ },
15
+ ]);
@@ -0,0 +1,14 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconArrowDown = createIcon('arrow-down', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M6 9 L12 15 L18 9', sw: 1.5, cap: 'round', join: 'round' },
12
+ ],
13
+ },
14
+ ]);
@@ -0,0 +1,14 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconArrowLeft = createIcon('arrow-left', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M15 6 L9 12 L15 18', sw: 1.5, cap: 'round', join: 'round' },
12
+ ],
13
+ },
14
+ ]);
@@ -0,0 +1,14 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconArrowRight = createIcon('arrow-right', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M9 6 L15 12 L9 18', sw: 1.5, cap: 'round', join: 'round' },
12
+ ],
13
+ },
14
+ ]);
@@ -0,0 +1,14 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconArrowUp = createIcon('arrow-up', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M6 15 L12 9 L18 15', sw: 1.5, cap: 'round', join: 'round' },
12
+ ],
13
+ },
14
+ ]);
@@ -0,0 +1,15 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconAudioOff = createIcon('audio-off', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M6.4344 7.4906 C6.8144 7.4906 7.2599 7.3835 7.583 7.181 L10.3634 5.4432 C12.0318 4.4006 14.0686 5.6524 14.1863 7.5957 C14.4004 10.5323 14.4004 13.4689 14.1863 16.4055 C14.085 18.3459 12.0318 19.6006 10.3624 18.5581 L7.583 16.8202 C7.2599 16.6177 6.8201 16.5106 6.4392 16.5106 C5.0138 16.4036 4.5567 16.5714 3.7707 15.9233 C2.9394 15.227 3.0011 13.3657 3.0011 12.0001 C3.0011 10.6355 2.9375 8.7742 3.7707 8.0779 C4.5509 7.4289 5.0157 7.5957 6.4344 7.4906 Z', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M20.9959 10.3273 L17.6513 13.6709 M20.9998 13.6755 L17.6504 10.3262', sw: 1.5, cap: 'round', join: 'round' },
13
+ ],
14
+ },
15
+ ]);
@@ -0,0 +1,16 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconAudioOn = createIcon('audio-on', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M5.7298 7.1014 C6.1425 7.1014 6.6263 6.9852 6.9772 6.7652 L9.9967 4.8779 C11.8087 3.7457 14.0207 5.1052 14.1495 7.2156 C14.381 10.4048 14.381 13.594 14.1495 16.7832 C14.0385 18.8905 11.8087 20.2531 9.9967 19.1209 L6.9772 17.2336 C6.6263 17.0136 6.1487 16.8974 5.735 16.8974 C4.1871 16.7811 3.6906 16.9634 2.837 16.2595 C1.9342 15.5033 2.0012 13.4819 2.0012 11.9989 C2.0012 10.5169 1.9321 8.4955 2.837 7.7393 C3.6843 7.0344 4.1891 7.2156 5.7298 7.1014 Z', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M17.5723 8.3066 C18.8857 10.593 18.8857 13.4062 17.5723 15.6926', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M20.0801 5.8926 C22.6398 9.5625 22.6398 14.439 20.0801 18.1089', sw: 1.5, cap: 'round', join: 'round' },
14
+ ],
15
+ },
16
+ ]);
@@ -0,0 +1,20 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconBarcode = createIcon('barcode', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M6.8443 3.8242 L17.1567 3.8242 C19.8259 3.8242 21.5 5.715 21.5 8.3894 L21.5 15.6083 C21.5 18.2827 19.8342 20.1735 17.1567 20.1735 L6.8453 20.1735 C4.1669 20.1735 2.5 18.2827 2.5 15.6083 L2.5 8.3894 C2.5 5.715 4.1669 3.8242 6.8443 3.8242 Z', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M6.7752 8.0273 L6.7752 15.9673', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M13.74 8.0273 L13.74 15.9673', sw: 1.5, cap: 'round', join: 'round' },
14
+ { d: 'M17.2246 8.0273 L17.2246 11.8181', sw: 1.5, cap: 'round', join: 'round' },
15
+ { d: 'M17.2246 14.8732 L17.2246 15.8725', sw: 1.5, cap: 'round', join: 'round' },
16
+ { d: 'M10.2578 15.8747 L10.2578 12.084', sw: 1.5, cap: 'round', join: 'round' },
17
+ { d: 'M10.2578 9.0288 L10.2578 8.0295', sw: 1.5, cap: 'round', join: 'round' },
18
+ ],
19
+ },
20
+ ]);
@@ -0,0 +1,15 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconBrandBadge = createIcon('brand-badge', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M4.9902 7.1898 C4.9902 5.9751 5.9744 4.9909 7.1891 4.9899 L8.1899 4.9899 C8.7705 4.9899 9.3268 4.7594 9.7391 4.3509 L10.4384 3.6507 C11.2952 2.789 12.6878 2.7851 13.5496 3.641 L13.5505 3.6419 L13.5593 3.6497 L14.2595 4.35 C14.6708 4.7594 15.2282 4.9889 15.8088 4.9889 L16.8115 4.9889 C18.0262 4.9889 19.0114 5.9741 19.0114 7.1888 L19.0114 8.1886 C19.0114 8.7702 19.2409 9.3265 19.6502 9.7388 L20.3506 10.439 C21.2122 11.2959 21.2171 12.6886 20.3612 13.5502 L19.6513 14.2602 C19.2419 14.6716 19.0124 15.2288 19.0124 15.8086 L19.0124 16.8121 C19.0104 18.0268 18.0252 19.0091 16.8115 19.0081 L15.8068 19.0081 C15.2262 19.0081 14.669 19.2386 14.2576 19.6481 L13.5574 20.3473 C12.7025 21.21 11.3098 21.2158 10.4481 20.3609 L10.4452 20.359 L9.7372 19.651 C9.3258 19.2415 8.7685 19.012 8.1879 19.0111 L7.1891 19.0111 C5.9744 19.0111 4.9902 18.0268 4.9902 16.8121 L4.9902 15.8065 C4.9902 15.226 4.7597 14.6696 4.3503 14.2582 L3.651 13.558 C2.7884 12.7031 2.7825 11.3124 3.6364 10.4497 C3.6364 10.4497 3.6393 10.4478 3.6403 10.4459 L4.3483 9.7369 C4.7578 9.3255 4.9883 8.7682 4.9883 8.1866 L4.9883 7.1898', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M9.0047 12.122 L10.9819 14.1022 L15.0548 10.0272', sw: 1.5, cap: 'round', join: 'round' },
13
+ ],
14
+ },
15
+ ]);
@@ -0,0 +1,20 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCalendar3Dots = createIcon('calendar-3-dots', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M3.9838 9.6622 L20.0244 9.6622', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M15.6404 3 L15.6404 5.9616', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M8.3678 3 L8.3678 5.9616', sw: 1.5, cap: 'round', join: 'round' },
14
+ { d: 'M15.8137 4.4214 L8.1938 4.4214 C5.5504 4.4214 3.9003 5.8944 3.9003 8.6001 L3.9003 16.7444 C3.9003 19.4929 5.5504 21 8.1938 21 L15.806 21 C18.4572 21 20.0995 19.5192 20.0995 16.8125 L20.0995 8.6001 C20.1073 5.8944 18.465 4.4214 15.8137 4.4214 Z', sw: 1.5, cap: 'round', join: 'round' },
15
+ { d: 'M7.9901 14.9804 L8.0001 14.9804', sw: 1.5, cap: 'round', join: 'round' },
16
+ { d: 'M12.0097 14.9804 L12.0197 14.9804', sw: 1.5, cap: 'round', join: 'round' },
17
+ { d: 'M16.0195 14.9804 L16.0295 14.9804', sw: 1.5, cap: 'round', join: 'round' },
18
+ ],
19
+ },
20
+ ]);
@@ -0,0 +1,23 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCalendar6Dots = createIcon('calendar-6-dots', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M3.9838 9.6645 L20.0252 9.6645', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M15.6386 3 L15.6386 5.9617', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M8.3684 3 L8.3684 5.9617', sw: 1.5, cap: 'round', join: 'round' },
14
+ { d: 'M15.8144 4.4214 L8.194 4.4214 C5.5505 4.4214 3.9003 5.8935 3.9003 8.5994 L3.9003 16.7452 C3.9003 19.4938 5.5505 20.9999 8.194 20.9999 L15.8066 20.9999 C18.458 20.9999 20.1004 19.52 20.1004 16.8132 L20.1004 8.5994 C20.1082 5.8935 18.4657 4.4214 15.8144 4.4214 Z', sw: 1.5, cap: 'round', join: 'round' },
15
+ { d: 'M7.9901 13.3711 L8.0001 13.3711', sw: 1.5, cap: 'round', join: 'round' },
16
+ { d: 'M7.9901 16.8476 L8.0001 16.8476', sw: 1.5, cap: 'round', join: 'round' },
17
+ { d: 'M12.0097 13.3711 L12.0197 13.3711', sw: 1.5, cap: 'round', join: 'round' },
18
+ { d: 'M12.0097 16.8476 L12.0197 16.8476', sw: 1.5, cap: 'round', join: 'round' },
19
+ { d: 'M16.0195 13.3711 L16.0295 13.3711', sw: 1.5, cap: 'round', join: 'round' },
20
+ { d: 'M16.0195 16.8476 L16.0295 16.8476', sw: 1.5, cap: 'round', join: 'round' },
21
+ ],
22
+ },
23
+ ]);
@@ -0,0 +1,18 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCalendarLine = createIcon('calendar-line', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M3.9838 9.6645 L20.0252 9.6645', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M15.6407 3 L15.6407 5.9617', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M8.3698 3 L8.3698 5.9617', sw: 1.5, cap: 'round', join: 'round' },
14
+ { d: 'M15.8144 4.4214 L8.194 4.4214 C5.5505 4.4214 3.9003 5.8935 3.9003 8.5994 L3.9003 16.7452 C3.9003 19.4938 5.5505 20.9999 8.194 20.9999 L15.8066 20.9999 C18.458 20.9999 20.1004 19.52 20.1004 16.8132 L20.1004 8.5994 C20.1082 5.8935 18.4657 4.4214 15.8144 4.4214 Z', sw: 1.5, cap: 'round', join: 'round' },
15
+ { d: 'M15.0079 15.1636 L9.0015 15.1636', sw: 1.5, cap: 'round', join: 'round' },
16
+ ],
17
+ },
18
+ ]);
@@ -0,0 +1,19 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCalendarLines = createIcon('calendar-lines', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M3.9838 9.6645 L20.0252 9.6645', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M15.6407 3 L15.6407 5.9617', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M8.3698 3 L8.3698 5.9617', sw: 1.5, cap: 'round', join: 'round' },
14
+ { d: 'M15.8144 4.4214 L8.194 4.4214 C5.5505 4.4214 3.9003 5.8935 3.9003 8.5994 L3.9003 16.7452 C3.9003 19.4938 5.5505 20.9999 8.194 20.9999 L15.8066 20.9999 C18.458 20.9999 20.1004 19.52 20.1004 16.8132 L20.1004 8.5994 C20.1082 5.8935 18.4657 4.4214 15.8144 4.4214 Z', sw: 1.5, cap: 'round', join: 'round' },
15
+ { d: 'M12.0342 16.9201 L8.4595 16.9201', sw: 1.5, cap: 'round', join: 'round' },
16
+ { d: 'M15.5441 13.6667 L11.9692 13.6667', sw: 1.5, cap: 'round', join: 'round' },
17
+ ],
18
+ },
19
+ ]);
@@ -0,0 +1,19 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCalendarSlashes = createIcon('calendar-slashes', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M3.9838 9.6645 L20.0252 9.6645', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M15.6386 3 L15.6386 5.9617', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M8.3684 3 L8.3684 5.9617', sw: 1.5, cap: 'round', join: 'round' },
14
+ { d: 'M15.8144 4.4215 L8.194 4.4215 C5.5505 4.4215 3.9003 5.8936 3.9003 8.5995 L3.9003 16.7452 C3.9003 19.4939 5.5505 21.0001 8.194 21.0001 L15.8066 21.0001 C18.458 21.0001 20.1004 19.5202 20.1004 16.8133 L20.1004 8.5995 C20.1082 5.8936 18.4657 4.4215 15.8144 4.4215 Z', sw: 1.5, cap: 'round', join: 'round' },
15
+ { d: 'M10.5431 13.642 L9.1128 16.558', sw: 1.5, cap: 'round', join: 'round' },
16
+ { d: 'M14.635 13.642 L13.2047 16.558', sw: 1.5, cap: 'round', join: 'round' },
17
+ ],
18
+ },
19
+ ]);
@@ -0,0 +1,17 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCalendar = createIcon('calendar', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M3.9838 9.6645 L20.0252 9.6645', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M15.6386 3 L15.6386 5.9617', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M8.3684 3 L8.3684 5.9617', sw: 1.5, cap: 'round', join: 'round' },
14
+ { d: 'M15.8144 4.4215 L8.194 4.4215 C5.5505 4.4215 3.9003 5.8936 3.9003 8.5995 L3.9003 16.7452 C3.9003 19.4939 5.5505 21.0001 8.194 21.0001 L15.8066 21.0001 C18.458 21.0001 20.1004 19.5202 20.1004 16.8133 L20.1004 8.5995 C20.1082 5.8936 18.4657 4.4215 15.8144 4.4215 Z', sw: 1.5, cap: 'round', join: 'round' },
15
+ ],
16
+ },
17
+ ]);
@@ -0,0 +1,16 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCameraFlip = createIcon('camera-flip', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M12.5228 11.5578 L14.0455 10.7852 C13.4996 10.3026 12.7835 10.0117 11.9993 10.0117 C10.2908 10.0117 8.9063 11.3963 8.9063 13.1038', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M11.4757 14.6525 L9.953 15.425 C10.4989 15.9067 11.215 16.1984 11.9992 16.1984 C13.7077 16.1984 15.0923 14.814 15.0923 13.1054', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M13.9654 4.1367 C14.7905 4.1367 15.5455 4.5921 15.9347 5.3189 C16.1876 5.7927 16.465 6.2714 16.643 6.467 C16.9816 6.8221 17.4467 7.0323 17.9381 7.0498 C19.6291 7.0498 21 8.4207 21 10.1117 L21 10.1137 L21 15.756 C21 18.024 19.1611 19.8629 16.8941 19.8629 L7.1059 19.8629 C4.8379 19.8629 3 18.024 3 15.756 L3 10.1137 C3.0019 8.4236 4.3719 7.0556 6.062 7.0556 C6.5533 7.0362 7.0174 6.827 7.357 6.4709 C7.5389 6.2705 7.8318 5.7733 8.0994 5.2897 C8.4924 4.5785 9.2397 4.1367 10.0531 4.1367 L13.9654 4.1367 Z', sw: 1.5, cap: 'round', join: 'round' },
14
+ ],
15
+ },
16
+ ]);
@@ -0,0 +1,16 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCamera = createIcon('camera', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M13.9654 4.1367 C14.7905 4.1367 15.5455 4.5921 15.9347 5.3189 C16.1876 5.7927 16.465 6.2714 16.643 6.467 C16.9816 6.8221 17.4467 7.0323 17.9381 7.0498 C19.6291 7.0498 21 8.4207 21 10.1117 L21 10.1137 L21 15.756 C21 18.024 19.1611 19.8629 16.8941 19.8629 L7.1059 19.8629 C4.8379 19.8629 3 18.024 3 15.756 L3 10.1137 C3.0019 8.4236 4.3719 7.0556 6.062 7.0556 C6.5533 7.0362 7.0174 6.827 7.357 6.4709 C7.5389 6.2705 7.8318 5.7733 8.0994 5.2897 C8.4924 4.5785 9.2397 4.1367 10.0531 4.1367 L13.9654 4.1367 Z', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M17.173 9.8284 L17.173 9.8868', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M15.0924 13.1048 C15.0924 11.3972 13.7078 10.0117 11.9993 10.0117 C10.2908 10.0117 8.9063 11.3972 8.9063 13.1048 C8.9063 14.8133 10.2908 16.198 11.9993 16.198 C13.7078 16.198 15.0924 14.8133 15.0924 13.1048 Z', sw: 1.5, cap: 'round', join: 'round' },
14
+ ],
15
+ },
16
+ ]);
@@ -0,0 +1,19 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCaptchaOtp = createIcon('captcha-otp', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M7.7829 3.0005 L16.2171 3.0005 C19.1651 3.0005 20.9991 5.0816 20.9991 8.0266 L20.9991 15.9734 C20.9991 18.9185 19.1651 20.9995 16.2162 20.9995 L7.7829 20.9995 C4.8349 20.9995 3 18.9185 3 15.9734 L3 8.0266 C3 5.0816 4.8437 3.0005 7.7829 3.0005 Z', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M8.606 14.1121 L6.6602 16.0579 M8.606 16.0579 L6.6602 14.1121', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M12.9732 14.1121 L11.0273 16.0579 M12.9732 16.0579 L11.0273 14.1121', sw: 1.5, cap: 'round', join: 'round' },
14
+ { d: 'M17.3404 14.1121 L15.3945 16.0579 M17.3404 16.0579 L15.3945 14.1121', sw: 1.5, cap: 'round', join: 'round' },
15
+ { d: 'M20.9991 9.4917 L3 9.4917', sw: 1.5, cap: 'round', join: 'round' },
16
+ { d: 'M6.3445 6.55 L6.2891 6.55 M8.831 6.55 L8.7755 6.55 M11.3165 6.55 L11.261 6.55', sw: 1.5, cap: 'round', join: 'round' },
17
+ ],
18
+ },
19
+ ]);
@@ -0,0 +1,17 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconChat = createIcon('chat', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M17.5987 17.5976 C15.179 20.0177 11.5959 20.5405 8.6637 19.1845 C8.2308 19.0103 7.876 18.8694 7.5386 18.8694 C6.5988 18.8749 5.4291 19.7861 4.8212 19.1789 C4.2133 18.571 5.1252 17.4004 5.1252 16.4549 C5.1252 16.1174 4.9899 15.769 4.8157 15.3353 C3.459 12.4036 3.9825 8.8192 6.4023 6.4 C9.4913 3.3099 14.5098 3.3099 17.5987 6.3992 C20.6933 9.4941 20.6878 14.5084 17.5987 17.5976 Z', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M15.1189 12.327 L15.1266 12.327', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M11.9449 12.327 L11.9526 12.327', sw: 1.5, cap: 'round', join: 'round' },
14
+ { d: 'M8.7706 12.327 L8.7783 12.327', sw: 1.5, cap: 'round', join: 'round' },
15
+ ],
16
+ },
17
+ ]);
@@ -0,0 +1,15 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCheck = createIcon('check', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M21 12 C21 7.0291 16.9709 3 12 3 C7.0291 3 3 7.0291 3 12 C3 16.9699 7.0291 21 12 21 C16.9709 21 21 16.9699 21 12 Z', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M8.5359 12.0002 L10.8458 14.309 L15.4634 9.6914', sw: 1.5, cap: 'round', join: 'round' },
13
+ ],
14
+ },
15
+ ]);
@@ -0,0 +1,14 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconChevronDown = createIcon('chevron-down', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M6 9 L12 15 L18 9', sw: 1.5, cap: 'round', join: 'round' },
12
+ ],
13
+ },
14
+ ]);
@@ -0,0 +1,14 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconChevronLeft = createIcon('chevron-left', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M15 6 L9 12 L15 18', sw: 1.5, cap: 'round', join: 'round' },
12
+ ],
13
+ },
14
+ ]);
@@ -0,0 +1,14 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconChevronRight = createIcon('chevron-right', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M9 6 L15 12 L9 18', sw: 1.5, cap: 'round', join: 'round' },
12
+ ],
13
+ },
14
+ ]);
@@ -0,0 +1,14 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconChevronUp = createIcon('chevron-up', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M6 15 L12 9 L18 15', sw: 1.5, cap: 'round', join: 'round' },
12
+ ],
13
+ },
14
+ ]);
@@ -0,0 +1,19 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconChipNotFound = createIcon('chip-not-found', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M8.4913 4.5371 L15.5133 4.5371 C17.9564 4.5371 19.4694 5.8633 19.4626 8.2996 L19.4626 15.6952 C19.4626 18.1315 17.9486 19.4645 15.5055 19.4645 L8.4913 19.4645 C6.0559 19.4645 4.5352 18.1082 4.5352 15.6329 L4.5352 8.2996 C4.5352 5.8633 6.0559 4.5371 8.4913 4.5371 Z', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M16.0485 4.5373 L16.0485 3 M11.9989 4.5373 L11.9989 3 M7.9492 4.5373 L7.9492 3', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M7.9492 19.4629 L7.9492 21.0002 M11.9989 19.4629 L11.9989 21.0002 M16.0485 19.4629 L16.0485 21.0002', sw: 1.5, cap: 'round', join: 'round' },
14
+ { d: 'M4.5373 7.9492 L3 7.9492 M4.5373 11.9989 L3 11.9989 M4.5373 16.0485 L3 16.0485', sw: 1.5, cap: 'round', join: 'round' },
15
+ { d: 'M19.4629 16.0485 L21.0002 16.0485 M19.4629 11.9989 L21.0002 11.9989 M19.4629 7.9492 L21.0002 7.9492', sw: 1.5, cap: 'round', join: 'round' },
16
+ { d: 'M13.6741 8.4453 L10.329 8.4453 C9.1682 8.4453 8.4434 9.0768 8.4434 10.2375 L8.4434 13.7325 C8.4434 14.9117 9.1682 15.5578 10.329 15.5578 L13.6702 15.5578 C14.8348 15.5578 15.5558 14.9224 15.5558 13.7617 L15.5558 10.2375 C15.5597 9.0768 14.8378 8.4453 13.6741 8.4453 Z', sw: 1.5, cap: 'round', join: 'round' },
17
+ ],
18
+ },
19
+ ]);
@@ -0,0 +1,17 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCreditCard = createIcon('credit-card', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M18.4375 7.5861 L9.3862 7.5861 C7.1971 7.5861 5.8242 9.1363 5.8242 11.3308 L5.8242 17.2514 C5.8242 19.446 7.1895 20.996 9.3862 20.996 L18.4364 20.996 C20.6341 20.996 22.0004 19.446 22.0004 17.2514 L22.0004 11.3308 C22.0004 9.1363 20.6341 7.5861 18.4375 7.5861 Z', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M9.3703 12.048 L12.8058 12.048', sw: 1.5, cap: 'round', join: 'round' },
13
+ { d: 'M9.3703 16.1935 L18.4454 16.1935', sw: 1.5, cap: 'round', join: 'round' },
14
+ { d: 'M18.0844 7.5835 L16.4986 4.9404 C15.3624 3.0691 13.3972 2.4378 11.5108 3.575 L3.7621 8.2385 C1.8832 9.3671 1.5049 11.4027 2.6335 13.2892 L5.6949 18.3547 C5.8376 18.6001 5.9954 18.8206 6.176 19.0184 L6.176 19.026', sw: 1.5, cap: 'round', join: 'round' },
15
+ ],
16
+ },
17
+ ]);
@@ -0,0 +1,15 @@
1
+ // Generated — do not edit. Source: core/icons/bank/*.json · generator: core/scripts/generate-icon-vectors.mjs
2
+ import { createIcon } from '../icon-base';
3
+
4
+ export const IconCurpHash = createIcon('curp-hash', [
5
+ {
6
+ size: 'm',
7
+ style: 'outline',
8
+ w: 24,
9
+ h: 24,
10
+ strokePaths: [
11
+ { d: 'M7.7822 3 L16.2169 3 C19.165 3 21 5.0812 21 8.0264 L21 15.9736 C21 18.9188 19.165 21 16.2159 21 L7.7822 21 C4.8341 21 3 18.9188 3 15.9736 L3 8.0264 C3 5.0812 4.8428 3 7.7822 3 Z', sw: 1.5, cap: 'round', join: 'round' },
12
+ { d: 'M9.5976 15.8544 L10.5744 8.1445 M13.4524 15.8544 L14.4293 8.1445 M16.0756 10.1009 L8.2597 10.1009 M15.7407 13.8978 L7.9248 13.8978', sw: 1.5, cap: 'round', join: 'round' },
13
+ ],
14
+ },
15
+ ]);