lupine.components 1.1.55 → 1.1.57

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 (137) hide show
  1. package/LICENSE +21 -21
  2. package/package.json +1 -1
  3. package/src/component-pool/aspect-ratio/aspect-ratio-demo.tsx +103 -103
  4. package/src/component-pool/avatar/avatar-demo.tsx +127 -127
  5. package/src/component-pool/badge/badge-demo.tsx +152 -152
  6. package/src/component-pool/breadcrumbs/breadcrumbs-demo.tsx +105 -105
  7. package/src/component-pool/card/card-demo.tsx +179 -179
  8. package/src/component-pool/carousel/carousel-demo.tsx +191 -191
  9. package/src/component-pool/cascader/cascader-demo.tsx +127 -127
  10. package/src/component-pool/charts/area-chart-demo.tsx +106 -106
  11. package/src/component-pool/charts/area-chart.tsx +254 -254
  12. package/src/component-pool/charts/bar-chart-demo.tsx +107 -107
  13. package/src/component-pool/charts/bar-chart.tsx +223 -223
  14. package/src/component-pool/charts/chart-utils.ts +182 -182
  15. package/src/component-pool/charts/column-chart-demo.tsx +111 -111
  16. package/src/component-pool/charts/column-chart.tsx +230 -230
  17. package/src/component-pool/charts/donut-chart-demo.tsx +112 -112
  18. package/src/component-pool/charts/donut-chart.tsx +6 -6
  19. package/src/component-pool/charts/gauge-chart-demo.tsx +101 -101
  20. package/src/component-pool/charts/gauge-chart.tsx +117 -117
  21. package/src/component-pool/charts/index.ts +19 -19
  22. package/src/component-pool/charts/line-chart-demo.tsx +109 -109
  23. package/src/component-pool/charts/line-chart.tsx +233 -233
  24. package/src/component-pool/charts/pie-chart-demo.tsx +133 -133
  25. package/src/component-pool/charts/pie-chart.tsx +142 -142
  26. package/src/component-pool/charts/radar-chart-demo.tsx +88 -88
  27. package/src/component-pool/charts/radar-chart.tsx +231 -231
  28. package/src/component-pool/charts/scatter-chart-demo.tsx +88 -88
  29. package/src/component-pool/charts/scatter-chart.tsx +237 -237
  30. package/src/component-pool/copy-button/copy-button-demo.tsx +71 -71
  31. package/src/component-pool/date-picker/date-picker-demo.tsx +84 -84
  32. package/src/component-pool/date-picker/date-picker.tsx +437 -437
  33. package/src/component-pool/date-picker/index.ts +2 -2
  34. package/src/component-pool/floating-icon-menu/floating-icon-menu-demo.tsx +94 -94
  35. package/src/component-pool/floating-icon-menu/floating-icon-menu.tsx +241 -241
  36. package/src/component-pool/floating-icon-menu/index.ts +2 -2
  37. package/src/component-pool/h-editor/h-editor-demo.tsx +112 -112
  38. package/src/component-pool/h-editor/h-editor.ts +862 -862
  39. package/src/component-pool/h-editor/index.ts +2 -2
  40. package/src/component-pool/i-editor/i-editor-demo.tsx +72 -72
  41. package/src/component-pool/i-editor/i-editor-frames.ts +42 -42
  42. package/src/component-pool/i-editor/i-editor-styles.ts +22 -22
  43. package/src/component-pool/i-editor/i-editor.ts +3869 -3869
  44. package/src/component-pool/i-editor/index.ts +2 -2
  45. package/src/component-pool/map-wrapper/map-wrapper-demo.tsx +55 -55
  46. package/src/component-pool/p-editor/index.ts +4 -4
  47. package/src/component-pool/p-editor/p-editor-demo.tsx +51 -51
  48. package/src/component-pool/p-editor/p-editor-styles.ts +44 -44
  49. package/src/component-pool/p-editor/p-editor-types.ts +4 -4
  50. package/src/component-pool/p-editor/p-editor-utils.ts +38 -38
  51. package/src/component-pool/p-editor/p-editor.ts +2477 -2477
  52. package/src/component-pool/pdf-viewer/index.ts +2 -2
  53. package/src/component-pool/pdf-viewer/pdf-viewer-demo.tsx +116 -116
  54. package/src/component-pool/pdf-viewer/pdf-viewer.tsx +56 -56
  55. package/src/component-pool/picker-helper.tsx +222 -222
  56. package/src/component-pool/pull-to-refresh/pull-to-refresh-demo.tsx +99 -99
  57. package/src/component-pool/qrcode/index.ts +3 -3
  58. package/src/component-pool/qrcode/qrcode-demo.tsx +102 -102
  59. package/src/component-pool/qrcode/qrcode.tsx +169 -169
  60. package/src/component-pool/radial-progress/index.ts +2 -2
  61. package/src/component-pool/radial-progress/radial-progress-demo.tsx +84 -84
  62. package/src/component-pool/radial-progress/radial-progress.tsx +118 -118
  63. package/src/component-pool/range/gauge-demo.tsx +113 -113
  64. package/src/component-pool/range/gauge.tsx +392 -392
  65. package/src/component-pool/range/range-demo.tsx +97 -97
  66. package/src/component-pool/search-input/index.ts +2 -2
  67. package/src/component-pool/search-input/search-input-demo.tsx +50 -50
  68. package/src/component-pool/search-input/search-input.tsx +125 -125
  69. package/src/component-pool/skeleton/skeleton-card.tsx +114 -114
  70. package/src/component-pool/skeleton/skeleton-demo.tsx +55 -55
  71. package/src/component-pool/svg-icons.ts +95 -95
  72. package/src/component-pool/svg-props.tsx +144 -144
  73. package/src/component-pool/tag-input/index.ts +2 -2
  74. package/src/component-pool/tag-input/tag-input-demo.tsx +47 -47
  75. package/src/component-pool/tag-input/tag-input.tsx +166 -166
  76. package/src/component-pool/time-picker/index.ts +2 -2
  77. package/src/component-pool/time-picker/time-picker-demo.tsx +80 -80
  78. package/src/component-pool/time-picker/time-picker.tsx +311 -311
  79. package/src/component-pool/timeline/timeline-demo.tsx +75 -75
  80. package/src/component-pool/tooltip/tooltip-demo.tsx +144 -144
  81. package/src/component-pool/tour/tour-demo.tsx +92 -92
  82. package/src/component-pool/youtube-player/index.ts +2 -2
  83. package/src/component-pool/youtube-player/youtube-player-demo.tsx +57 -57
  84. package/src/component-pool/youtube-player/youtube-player.tsx +116 -116
  85. package/src/components/action-sheet-color.tsx +271 -269
  86. package/src/components/action-sheet-date.tsx +299 -299
  87. package/src/components/action-sheet-demo.tsx +216 -216
  88. package/src/components/action-sheet-theme.tsx +150 -150
  89. package/src/components/action-sheet-time.tsx +157 -157
  90. package/src/components/input-number.tsx +206 -206
  91. package/src/components/input-with-title-demo.tsx +42 -42
  92. package/src/components/loading-spin.tsx +74 -74
  93. package/src/components/message-box-demo.tsx +107 -107
  94. package/src/components/mobile-components/mobile-side-menu-demo.tsx +47 -47
  95. package/src/components/modal-demo.tsx +56 -56
  96. package/src/components/notice-message-demo.tsx +57 -57
  97. package/src/components/notice-message.tsx +3 -0
  98. package/src/components/paging-link-demo.tsx +430 -430
  99. package/src/components/popup-menu-demo.tsx +172 -172
  100. package/src/components/progress-demo.tsx +53 -53
  101. package/src/components/radio-label-demo.tsx +41 -41
  102. package/src/components/redirect-demo.tsx +36 -36
  103. package/src/components/resizable-splitter-demo.tsx +104 -104
  104. package/src/components/select-angle-demo.tsx +32 -32
  105. package/src/components/select-with-title-demo.tsx +53 -53
  106. package/src/components/slide-tab-component-demo.tsx +86 -86
  107. package/src/components/spinner-demo.tsx +52 -52
  108. package/src/components/stars-component-demo.tsx +36 -36
  109. package/src/components/switch-option-component.tsx +74 -74
  110. package/src/components/switch-option-demo.tsx +36 -36
  111. package/src/components/tabs-demo.tsx +42 -42
  112. package/src/components/text-glow-demo.tsx +46 -46
  113. package/src/components/text-scale-demo.tsx +41 -41
  114. package/src/components/text-wave-demo.tsx +48 -48
  115. package/src/components/toggle-button-demo.tsx +230 -230
  116. package/src/demo/demo-page.tsx +271 -271
  117. package/src/demo/demo-registry.ts +143 -143
  118. package/src/demo/demo-render-page.tsx +94 -94
  119. package/src/demo/demo-types.ts +22 -22
  120. package/src/demo/mock/demo-icons.ts +72 -72
  121. package/src/demo/mock/responsive-demo-mock-pages.tsx +197 -197
  122. package/src/demo/mock/side-menu-mock.tsx +113 -113
  123. package/src/demo/mock/user-settings-mock.tsx +310 -310
  124. package/src/frames/responsive-frame-demo.tsx +120 -120
  125. package/src/frames/slider-frame-demo.tsx +111 -111
  126. package/src/frames/slider-helper.tsx +194 -194
  127. package/src/lib/button-async-lock.tsx +43 -43
  128. package/src/lib/canvas/canvas-drawing.ts +503 -503
  129. package/src/lib/canvas/canvas-geometry.ts +255 -255
  130. package/src/lib/canvas/canvas-helper.tsx +176 -176
  131. package/src/lib/canvas/canvas-image.ts +110 -110
  132. package/src/lib/canvas/canvas-types.ts +93 -93
  133. package/src/lib/canvas/index.ts +5 -5
  134. package/src/lib/disable-console.ts +11 -11
  135. package/src/lib/disable-debug.ts +8 -8
  136. package/src/lib/support-safe-area.ts +25 -25
  137. package/tsconfig.json +113 -113
@@ -1,144 +1,144 @@
1
- export const SvgSvg = 'svg' as any;
2
- export const SvgPath = 'path' as any;
3
- export const SvgLine = 'line' as any;
4
- export const SvgText = 'text' as any;
5
- export const SvgCircle = 'circle' as any;
6
- export const SvgG = 'g' as any;
7
- export const SvgRect = 'rect' as any;
8
- export const SvgPolyline = 'polyline' as any;
9
-
10
- // Centralized Icons
11
-
12
- export const ClockIcon = (props: any = {}) => (
13
- <SvgSvg
14
- width={props.width || '14'}
15
- height={props.height || '14'}
16
- viewBox='0 0 24 24'
17
- fill='none'
18
- stroke='currentColor'
19
- strokeWidth={props.strokeWidth || '2'}
20
- strokeLinecap='round'
21
- strokeLinejoin='round'
22
- >
23
- <SvgCircle cx='12' cy='12' r='10' />
24
- <SvgPolyline points='12 6 12 12 16 14' />
25
- </SvgSvg>
26
- );
27
-
28
- export const ClearIcon = (props: any = {}) => (
29
- <SvgSvg
30
- width={props.width || '12'}
31
- height={props.height || '12'}
32
- viewBox='0 0 24 24'
33
- fill='none'
34
- stroke='currentColor'
35
- strokeWidth={props.strokeWidth || '3'}
36
- strokeLinecap='round'
37
- strokeLinejoin='round'
38
- >
39
- <SvgLine x1='18' y1='6' x2='6' y2='18' />
40
- <SvgLine x1='6' y1='6' x2='18' y2='18' />
41
- </SvgSvg>
42
- );
43
-
44
- export const CheckIcon = (props: any = {}) => (
45
- <SvgSvg
46
- width={props.width || '16'}
47
- height={props.height || '16'}
48
- viewBox='0 0 24 24'
49
- fill='none'
50
- stroke='currentColor'
51
- strokeWidth={props.strokeWidth || '3'}
52
- strokeLinecap='round'
53
- strokeLinejoin='round'
54
- >
55
- <SvgPolyline points='20 6 9 17 4 12' />
56
- </SvgSvg>
57
- );
58
-
59
- export const IncompleteIcon = (props: any = {}) => (
60
- <SvgSvg
61
- width={props.width || '16'}
62
- height={props.height || '16'}
63
- viewBox='0 0 24 24'
64
- fill='none'
65
- stroke='currentColor'
66
- strokeWidth={props.strokeWidth || '4'}
67
- strokeLinecap='round'
68
- strokeLinejoin='round'
69
- >
70
- <SvgPath d='M20 6L9 17l-5-5' />
71
- </SvgSvg>
72
- );
73
-
74
- export const CalendarIcon = (props: any = {}) => (
75
- <SvgSvg
76
- width={props.width || '14'}
77
- height={props.height || '14'}
78
- viewBox='0 0 24 24'
79
- fill='none'
80
- stroke='currentColor'
81
- strokeWidth={props.strokeWidth || '2'}
82
- strokeLinecap='round'
83
- strokeLinejoin='round'
84
- >
85
- <SvgRect x='3' y='4' width='18' height='18' rx='2' ry='2' />
86
- <SvgLine x1='16' y1='2' x2='16' y2='6' />
87
- <SvgLine x1='8' y1='2' x2='8' y2='6' />
88
- <SvgLine x1='3' y1='10' x2='21' y2='10' />
89
- </SvgSvg>
90
- );
91
-
92
- export const ChevronRightIcon = (props: any = {}) => (
93
- <SvgSvg
94
- width={props.width || '14'}
95
- height={props.height || '14'}
96
- viewBox='0 0 24 24'
97
- fill='none'
98
- stroke='currentColor'
99
- strokeWidth={props.strokeWidth || '2'}
100
- strokeLinecap='round'
101
- strokeLinejoin='round'
102
- >
103
- <SvgPath d='M9 18l6-6-6-6' />
104
- </SvgSvg>
105
- );
106
-
107
- export const DotsIcon = (props: any = {}) => (
108
- <SvgSvg width={props.width || '16'} height={props.height || '16'} viewBox='0 0 24 24' fill='currentColor'>
109
- <SvgCircle cx='5' cy='12' r='2' />
110
- <SvgCircle cx='12' cy='12' r='2' />
111
- <SvgCircle cx='19' cy='12' r='2' />
112
- </SvgSvg>
113
- );
114
-
115
- export const CopyIcon = (props: any = {}) => (
116
- <SvgSvg
117
- width={props.width || '16'}
118
- height={props.height || '16'}
119
- viewBox='0 0 24 24'
120
- fill='none'
121
- stroke='currentColor'
122
- strokeWidth={props.strokeWidth || '2'}
123
- strokeLinecap='round'
124
- strokeLinejoin='round'
125
- >
126
- <SvgRect x='9' y='9' width='13' height='13' rx='2' ry='2' />
127
- <SvgPath d='M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1' />
128
- </SvgSvg>
129
- );
130
- export const RefreshIcon = (props: any = {}) => (
131
- <SvgSvg
132
- width={props.width || '16'}
133
- height={props.height || '16'}
134
- viewBox='0 0 24 24'
135
- fill='none'
136
- stroke='currentColor'
137
- strokeWidth={props.strokeWidth || '2'}
138
- strokeLinecap='round'
139
- strokeLinejoin='round'
140
- >
141
- <SvgPolyline points='23 4 23 10 17 10' />
142
- <SvgPath d='M20.49 15a9 9 0 1 1-2.12-9.36L23 10' />
143
- </SvgSvg>
144
- );
1
+ export const SvgSvg = 'svg' as any;
2
+ export const SvgPath = 'path' as any;
3
+ export const SvgLine = 'line' as any;
4
+ export const SvgText = 'text' as any;
5
+ export const SvgCircle = 'circle' as any;
6
+ export const SvgG = 'g' as any;
7
+ export const SvgRect = 'rect' as any;
8
+ export const SvgPolyline = 'polyline' as any;
9
+
10
+ // Centralized Icons
11
+
12
+ export const ClockIcon = (props: any = {}) => (
13
+ <SvgSvg
14
+ width={props.width || '14'}
15
+ height={props.height || '14'}
16
+ viewBox='0 0 24 24'
17
+ fill='none'
18
+ stroke='currentColor'
19
+ strokeWidth={props.strokeWidth || '2'}
20
+ strokeLinecap='round'
21
+ strokeLinejoin='round'
22
+ >
23
+ <SvgCircle cx='12' cy='12' r='10' />
24
+ <SvgPolyline points='12 6 12 12 16 14' />
25
+ </SvgSvg>
26
+ );
27
+
28
+ export const ClearIcon = (props: any = {}) => (
29
+ <SvgSvg
30
+ width={props.width || '12'}
31
+ height={props.height || '12'}
32
+ viewBox='0 0 24 24'
33
+ fill='none'
34
+ stroke='currentColor'
35
+ strokeWidth={props.strokeWidth || '3'}
36
+ strokeLinecap='round'
37
+ strokeLinejoin='round'
38
+ >
39
+ <SvgLine x1='18' y1='6' x2='6' y2='18' />
40
+ <SvgLine x1='6' y1='6' x2='18' y2='18' />
41
+ </SvgSvg>
42
+ );
43
+
44
+ export const CheckIcon = (props: any = {}) => (
45
+ <SvgSvg
46
+ width={props.width || '16'}
47
+ height={props.height || '16'}
48
+ viewBox='0 0 24 24'
49
+ fill='none'
50
+ stroke='currentColor'
51
+ strokeWidth={props.strokeWidth || '3'}
52
+ strokeLinecap='round'
53
+ strokeLinejoin='round'
54
+ >
55
+ <SvgPolyline points='20 6 9 17 4 12' />
56
+ </SvgSvg>
57
+ );
58
+
59
+ export const IncompleteIcon = (props: any = {}) => (
60
+ <SvgSvg
61
+ width={props.width || '16'}
62
+ height={props.height || '16'}
63
+ viewBox='0 0 24 24'
64
+ fill='none'
65
+ stroke='currentColor'
66
+ strokeWidth={props.strokeWidth || '4'}
67
+ strokeLinecap='round'
68
+ strokeLinejoin='round'
69
+ >
70
+ <SvgPath d='M20 6L9 17l-5-5' />
71
+ </SvgSvg>
72
+ );
73
+
74
+ export const CalendarIcon = (props: any = {}) => (
75
+ <SvgSvg
76
+ width={props.width || '14'}
77
+ height={props.height || '14'}
78
+ viewBox='0 0 24 24'
79
+ fill='none'
80
+ stroke='currentColor'
81
+ strokeWidth={props.strokeWidth || '2'}
82
+ strokeLinecap='round'
83
+ strokeLinejoin='round'
84
+ >
85
+ <SvgRect x='3' y='4' width='18' height='18' rx='2' ry='2' />
86
+ <SvgLine x1='16' y1='2' x2='16' y2='6' />
87
+ <SvgLine x1='8' y1='2' x2='8' y2='6' />
88
+ <SvgLine x1='3' y1='10' x2='21' y2='10' />
89
+ </SvgSvg>
90
+ );
91
+
92
+ export const ChevronRightIcon = (props: any = {}) => (
93
+ <SvgSvg
94
+ width={props.width || '14'}
95
+ height={props.height || '14'}
96
+ viewBox='0 0 24 24'
97
+ fill='none'
98
+ stroke='currentColor'
99
+ strokeWidth={props.strokeWidth || '2'}
100
+ strokeLinecap='round'
101
+ strokeLinejoin='round'
102
+ >
103
+ <SvgPath d='M9 18l6-6-6-6' />
104
+ </SvgSvg>
105
+ );
106
+
107
+ export const DotsIcon = (props: any = {}) => (
108
+ <SvgSvg width={props.width || '16'} height={props.height || '16'} viewBox='0 0 24 24' fill='currentColor'>
109
+ <SvgCircle cx='5' cy='12' r='2' />
110
+ <SvgCircle cx='12' cy='12' r='2' />
111
+ <SvgCircle cx='19' cy='12' r='2' />
112
+ </SvgSvg>
113
+ );
114
+
115
+ export const CopyIcon = (props: any = {}) => (
116
+ <SvgSvg
117
+ width={props.width || '16'}
118
+ height={props.height || '16'}
119
+ viewBox='0 0 24 24'
120
+ fill='none'
121
+ stroke='currentColor'
122
+ strokeWidth={props.strokeWidth || '2'}
123
+ strokeLinecap='round'
124
+ strokeLinejoin='round'
125
+ >
126
+ <SvgRect x='9' y='9' width='13' height='13' rx='2' ry='2' />
127
+ <SvgPath d='M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1' />
128
+ </SvgSvg>
129
+ );
130
+ export const RefreshIcon = (props: any = {}) => (
131
+ <SvgSvg
132
+ width={props.width || '16'}
133
+ height={props.height || '16'}
134
+ viewBox='0 0 24 24'
135
+ fill='none'
136
+ stroke='currentColor'
137
+ strokeWidth={props.strokeWidth || '2'}
138
+ strokeLinecap='round'
139
+ strokeLinejoin='round'
140
+ >
141
+ <SvgPolyline points='23 4 23 10 17 10' />
142
+ <SvgPath d='M20.49 15a9 9 0 1 1-2.12-9.36L23 10' />
143
+ </SvgSvg>
144
+ );
@@ -1,2 +1,2 @@
1
- export * from './tag-input';
2
- export * from './tag-input-demo';
1
+ export * from './tag-input';
2
+ export * from './tag-input-demo';
@@ -1,47 +1,47 @@
1
- import { DemoStory } from '../../demo/demo-types';
2
- import { TagInput, TagInputProps } from './tag-input';
3
- import { HtmlVar } from '../../components/html-var';
4
-
5
- export const tagInputDemo: DemoStory<TagInputProps> = {
6
- id: 'tag-input-demo',
7
- text: 'Tag Input',
8
- args: {
9
- options: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry', 'Fig', 'Grape'],
10
- selectedIndices: [0, 2],
11
- placeholder: 'Select your favorite fruits...',
12
- disabled: false,
13
- maxCount: 3,
14
- align: 'center',
15
- title: 'Select Fruits',
16
- },
17
- argTypes: {
18
- placeholder: { control: 'text', description: 'Placeholder when empty' },
19
- disabled: { control: 'boolean', description: 'Disable interaction' },
20
- maxCount: { control: 'number', description: 'Max number of items allowed to be selected' },
21
- align: { control: 'select', options: ['left', 'center', 'right'], description: 'Text alignment in selector' },
22
- title: { control: 'text', description: 'Title for the ActionSheet' },
23
- },
24
- render: (args: TagInputProps) => {
25
- const msg = new HtmlVar('');
26
- return (
27
- <div style={{ padding: '20px' }}>
28
- <TagInput
29
- {...args}
30
- onChange={(indices, labels) => {
31
- msg.value = `Selected: [${labels.join(', ')}] (Indices: ${indices.join(', ')})`;
32
- }}
33
- />
34
- <div css={{ marginTop: '10px', fontSize: '13px', color: 'var(--secondary-color, #999)' }}>{msg.node}</div>
35
- </div>
36
- );
37
- },
38
- code: `import { TagInput } from 'lupine.components/component-pool/tag-input/tag-input';
39
-
40
- // Basic usage
41
- <TagInput
42
- options={['Apple', 'Banana', 'Cherry']}
43
- selectedIndices={[0, 2]}
44
- onChange={(indices, labels) => console.log(labels)}
45
- />
46
- `,
47
- };
1
+ import { DemoStory } from '../../demo/demo-types';
2
+ import { TagInput, TagInputProps } from './tag-input';
3
+ import { HtmlVar } from '../../components/html-var';
4
+
5
+ export const tagInputDemo: DemoStory<TagInputProps> = {
6
+ id: 'tag-input-demo',
7
+ text: 'Tag Input',
8
+ args: {
9
+ options: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry', 'Fig', 'Grape'],
10
+ selectedIndices: [0, 2],
11
+ placeholder: 'Select your favorite fruits...',
12
+ disabled: false,
13
+ maxCount: 3,
14
+ align: 'center',
15
+ title: 'Select Fruits',
16
+ },
17
+ argTypes: {
18
+ placeholder: { control: 'text', description: 'Placeholder when empty' },
19
+ disabled: { control: 'boolean', description: 'Disable interaction' },
20
+ maxCount: { control: 'number', description: 'Max number of items allowed to be selected' },
21
+ align: { control: 'select', options: ['left', 'center', 'right'], description: 'Text alignment in selector' },
22
+ title: { control: 'text', description: 'Title for the ActionSheet' },
23
+ },
24
+ render: (args: TagInputProps) => {
25
+ const msg = new HtmlVar('');
26
+ return (
27
+ <div style={{ padding: '20px' }}>
28
+ <TagInput
29
+ {...args}
30
+ onChange={(indices, labels) => {
31
+ msg.value = `Selected: [${labels.join(', ')}] (Indices: ${indices.join(', ')})`;
32
+ }}
33
+ />
34
+ <div css={{ marginTop: '10px', fontSize: '13px', color: 'var(--secondary-color, #999)' }}>{msg.node}</div>
35
+ </div>
36
+ );
37
+ },
38
+ code: `import { TagInput } from 'lupine.components/component-pool/tag-input/tag-input';
39
+
40
+ // Basic usage
41
+ <TagInput
42
+ options={['Apple', 'Banana', 'Cherry']}
43
+ selectedIndices={[0, 2]}
44
+ onChange={(indices, labels) => console.log(labels)}
45
+ />
46
+ `,
47
+ };