@licklist/design 0.78.5-dev.55 → 0.78.5-dev.56

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 (40) hide show
  1. package/dist/v2/components/Button/Button.d.ts +2 -1
  2. package/dist/v2/components/Button/Button.d.ts.map +1 -1
  3. package/dist/v2/components/Button/Button.js +12 -6
  4. package/dist/v2/components/Button/Button.scss.js +1 -1
  5. package/dist/v2/styles/components/Button.scss +10 -0
  6. package/package.json +1 -1
  7. package/src/v2/components/Button/Button.tsx +5 -2
  8. package/src/v2/components/Customer/CustomerDetail.scss +7 -3
  9. package/src/v2/styles/components/Button.scss +10 -0
  10. package/dist/v2/components/Customer/CustomerCreate/CustomerCreate.d.ts +0 -11
  11. package/dist/v2/components/Customer/CustomerCreate/CustomerCreate.d.ts.map +0 -1
  12. package/dist/v2/components/Customer/CustomerCreate/index.d.ts +0 -2
  13. package/dist/v2/components/Customer/CustomerCreate/index.d.ts.map +0 -1
  14. package/dist/v2/components/Customer/CustomerDetail/CustomerDetail.d.ts +0 -35
  15. package/dist/v2/components/Customer/CustomerDetail/CustomerDetail.d.ts.map +0 -1
  16. package/dist/v2/components/Customer/CustomerDetail/index.d.ts +0 -2
  17. package/dist/v2/components/Customer/CustomerDetail/index.d.ts.map +0 -1
  18. package/dist/v2/components/Customer/CustomerEdit/CustomerEdit.d.ts +0 -11
  19. package/dist/v2/components/Customer/CustomerEdit/CustomerEdit.d.ts.map +0 -1
  20. package/dist/v2/components/Customer/CustomerEdit/index.d.ts +0 -2
  21. package/dist/v2/components/Customer/CustomerEdit/index.d.ts.map +0 -1
  22. package/dist/v2/components/Customer/CustomerForm/CustomerForm.d.ts +0 -22
  23. package/dist/v2/components/Customer/CustomerForm/CustomerForm.d.ts.map +0 -1
  24. package/dist/v2/components/Customer/CustomerForm/index.d.ts +0 -2
  25. package/dist/v2/components/Customer/CustomerForm/index.d.ts.map +0 -1
  26. package/dist/v2/components/Customer/CustomersList.d.ts +0 -37
  27. package/dist/v2/components/Customer/CustomersList.d.ts.map +0 -1
  28. package/dist/v2/components/Customer/index.d.ts +0 -6
  29. package/dist/v2/components/Customer/index.d.ts.map +0 -1
  30. package/src/v2/components/Customer/CustomerCreate/CustomerCreate.tsx +0 -36
  31. package/src/v2/components/Customer/CustomerCreate/index.ts +0 -1
  32. package/src/v2/components/Customer/CustomerDetail/CustomerDetail.scss +0 -315
  33. package/src/v2/components/Customer/CustomerDetail/CustomerDetail.tsx +0 -161
  34. package/src/v2/components/Customer/CustomerDetail/index.ts +0 -1
  35. package/src/v2/components/Customer/CustomerEdit/CustomerEdit.tsx +0 -37
  36. package/src/v2/components/Customer/CustomerEdit/index.ts +0 -1
  37. package/src/v2/components/Customer/CustomerForm/CustomerForm.tsx +0 -434
  38. package/src/v2/components/Customer/CustomerForm/index.ts +0 -1
  39. package/src/v2/components/Customer/CustomersList.tsx +0 -193
  40. package/src/v2/components/Customer/index.ts +0 -5
@@ -1,315 +0,0 @@
1
- .customer-detail {
2
- padding: 40px;
3
- background-color: #fff;
4
- min-height: 100vh;
5
- font-family: var(--font-family-sans, 'Geist', sans-serif);
6
-
7
- &__back {
8
- color: #6200EE;
9
- font-weight: 500;
10
- cursor: pointer;
11
- margin-bottom: 30px;
12
- display: inline-flex;
13
- align-items: center;
14
- gap: 8px;
15
- font-size: 14px;
16
- padding: 8px 16px;
17
- border-radius: 8px;
18
- transition: all 0.2s ease;
19
- border: 1px solid transparent;
20
-
21
- &:hover {
22
- background-color: #F3E5FF;
23
- border: 1px solid #E0C7FF;
24
- }
25
- }
26
-
27
- &__header {
28
- margin-bottom: 40px;
29
- }
30
-
31
- &__name {
32
- font-size: 32px;
33
- font-weight: 700;
34
- color: #121E52;
35
- margin: 0 0 16px 0;
36
- }
37
-
38
- &__badges-row {
39
- display: flex;
40
- justify-content: space-between;
41
- align-items: center;
42
- }
43
-
44
- &__badges {
45
- display: flex;
46
- gap: 12px;
47
- align-items: center;
48
- }
49
-
50
- &__id-badge {
51
- background-color: #F4F5F9;
52
- color: #121E52;
53
- padding: 4px 12px;
54
- border-radius: 100px;
55
- font-size: 12px;
56
- font-weight: 600;
57
- border: 1px solid #E2E4ED;
58
- }
59
-
60
- &__edit {
61
- display: inline-flex;
62
- align-items: center;
63
- gap: 8px;
64
- color: #121E52;
65
- font-weight: 600;
66
- cursor: pointer;
67
- font-size: 14px;
68
- padding: 8px 16px;
69
- border-radius: 8px;
70
- transition: all 0.2s ease;
71
- border: 1px solid transparent;
72
-
73
- &:hover {
74
- background-color: #E8EAF0;
75
- border: 1px solid #D1D5E0;
76
- }
77
- }
78
-
79
- &__grid {
80
- display: grid;
81
- grid-template-columns: 1fr 1fr;
82
- gap: 24px;
83
- margin-bottom: 24px;
84
- }
85
-
86
- &__card {
87
- background: #FFFFFF;
88
- border: 1px solid #E2E4ED;
89
- border-radius: 12px;
90
- padding: 24px;
91
-
92
- &--full {
93
- grid-column: 1 / -1;
94
- }
95
- }
96
-
97
- &__card-title {
98
- font-size: 18px;
99
- font-weight: 700;
100
- color: #121E52;
101
- margin: 0 0 24px 0;
102
- }
103
-
104
- &__info-group {
105
- display: flex;
106
- flex-direction: column;
107
- gap: 4px;
108
- margin-bottom: 16px;
109
-
110
- &:last-child {
111
- margin-bottom: 0;
112
- }
113
-
114
- label {
115
- font-size: 12px;
116
- color: #9399B3;
117
- margin: 0;
118
- }
119
-
120
- span {
121
- font-size: 14px;
122
- font-weight: 500;
123
- display: inline-flex;
124
- align-items: center;
125
- }
126
- }
127
-
128
-
129
- &__minor-row {
130
- display: flex;
131
- justify-content: space-between;
132
- align-items: center;
133
- padding: 16px 0;
134
- border-bottom: 1px solid #F4F5F9;
135
-
136
- &:last-child {
137
- border-bottom: none;
138
- padding-bottom: 0;
139
- }
140
-
141
- &:first-of-type {
142
- padding-top: 0;
143
- }
144
- }
145
-
146
- &__minor-info {
147
- display: flex;
148
- flex-direction: column;
149
- gap: 4px;
150
- }
151
-
152
- &__minor-name {
153
- font-size: 14px;
154
- font-weight: 600;
155
- color: #121E52;
156
- }
157
-
158
- &__minor-age {
159
- font-size: 12px;
160
- color: #9399B3;
161
- }
162
-
163
- &__minor-status-group {
164
- display: flex;
165
- align-items: center;
166
- gap: 16px;
167
- }
168
-
169
- &__minor-expires {
170
- font-size: 12px;
171
- color: #9399B3;
172
- }
173
-
174
- &__footer {
175
- margin-top: 40px;
176
- font-size: 12px;
177
- color: #9399B3;
178
- }
179
- }
180
-
181
- // Mobile styles
182
- @media (max-width: 768px) {
183
- .customer-detail {
184
- padding: 20px 16px;
185
-
186
- &__back {
187
- font-size: 13px;
188
- padding: 6px 12px;
189
- margin-bottom: 20px;
190
- }
191
-
192
- &__header {
193
- margin-bottom: 24px;
194
- }
195
-
196
- &__name {
197
- font-size: 24px;
198
- margin-bottom: 12px;
199
- }
200
-
201
- &__badges-row {
202
- flex-direction: column;
203
- align-items: flex-start;
204
- gap: 12px;
205
- }
206
-
207
- &__badges {
208
- flex-wrap: wrap;
209
- }
210
-
211
- &__id-badge {
212
- font-size: 11px;
213
- padding: 3px 10px;
214
- }
215
-
216
- &__edit {
217
- font-size: 13px;
218
- padding: 6px 12px;
219
- align-self: flex-start;
220
- }
221
-
222
- &__grid {
223
- grid-template-columns: 1fr;
224
- gap: 16px;
225
- margin-bottom: 16px;
226
- }
227
-
228
- &__card {
229
- padding: 20px;
230
-
231
- &--full {
232
- grid-column: 1;
233
- }
234
- }
235
-
236
- &__card-title {
237
- font-size: 16px;
238
- margin-bottom: 16px;
239
- }
240
-
241
- &__info-group {
242
- margin-bottom: 14px;
243
-
244
- label {
245
- font-size: 11px;
246
- }
247
-
248
- span {
249
- font-size: 13px;
250
- }
251
- }
252
-
253
- &__minor-row {
254
- flex-direction: column;
255
- align-items: flex-start;
256
- gap: 12px;
257
- padding: 12px 0;
258
- }
259
-
260
- &__minor-name {
261
- font-size: 13px;
262
- }
263
-
264
- &__minor-age,
265
- &__minor-expires {
266
- font-size: 11px;
267
- }
268
-
269
- &__minor-status-group {
270
- width: 100%;
271
- justify-content: space-between;
272
- }
273
-
274
- &__footer {
275
- margin-top: 24px;
276
- font-size: 11px;
277
- }
278
- }
279
- }
280
-
281
- // Extra small mobile devices
282
- @media (max-width: 480px) {
283
- .customer-detail {
284
- padding: 16px 12px;
285
-
286
- &__back {
287
- font-size: 12px;
288
- padding: 4px 8px;
289
- margin-bottom: 16px;
290
- }
291
-
292
- &__name {
293
- font-size: 20px;
294
- }
295
-
296
- &__card {
297
- padding: 16px;
298
- border-radius: 8px;
299
- }
300
-
301
- &__card-title {
302
- font-size: 15px;
303
- margin-bottom: 12px;
304
- }
305
-
306
- &__badges {
307
- gap: 8px;
308
- }
309
-
310
- &__minor-row {
311
- padding: 10px 0;
312
- }
313
- }
314
- }
315
-
@@ -1,161 +0,0 @@
1
- import React from 'react'
2
- import { Badge } from '../../Badge'
3
- import { EditIcon, ArrowLeftIcon, InfoIcon } from '../../../icons'
4
- import './CustomerDetail.scss'
5
-
6
- export interface CustomerDetailProps {
7
- onBack: () => void
8
- onEdit?: () => void
9
- name: string
10
- customerId: string
11
- waiverStatus: string
12
- waiversEnabled?: boolean
13
- waiverStatusVariant?: 'success' | 'danger' | 'warning' | 'neutral'
14
- contactDetails: {
15
- email: string
16
- phone?: string
17
- age?: string
18
- }
19
- bookingDetails: {
20
- nextBooking: string
21
- customerSince: string
22
- }
23
- waiverDetails: {
24
- status: string
25
- statusVariant?: 'success' | 'danger' | 'warning' | 'neutral'
26
- expires: string
27
- }
28
- minors?: Array<{
29
- name: string
30
- age: string
31
- expires: string
32
- status: string
33
- statusVariant?: 'success' | 'danger' | 'warning' | 'neutral'
34
- }>
35
- customerSinceFooter: string
36
- }
37
-
38
- export const CustomerDetail: React.FC<CustomerDetailProps> = ({
39
- onBack,
40
- onEdit,
41
- name,
42
- customerId,
43
- waiverStatus,
44
- waiverStatusVariant = 'success',
45
- waiversEnabled = true,
46
- contactDetails,
47
- bookingDetails,
48
- waiverDetails,
49
- minors,
50
- customerSinceFooter,
51
- }) => {
52
- return (
53
- <div className="customer-detail">
54
- <div className="customer-detail__back" onClick={onBack}>
55
- <span className="customer-detail__back-icon"><ArrowLeftIcon width={24} height={24} /></span> Back to Customers
56
- </div>
57
-
58
- <div className="customer-detail__header">
59
- <div className="customer-detail__title-row">
60
- <h1 className="customer-detail__name">{name}</h1>
61
- </div>
62
- <div className="customer-detail__badges-row">
63
- <div className="customer-detail__badges">
64
- <span className="customer-detail__id-badge">{customerId}</span>
65
- {waiversEnabled && (
66
- <Badge
67
- variant={waiverStatusVariant}
68
- icon={(waiverStatus === 'Expired' || waiverStatus === 'Not Signed') ? <InfoIcon /> : undefined}
69
- >
70
- {waiverStatus}
71
- </Badge>
72
- )}
73
- </div>
74
- {onEdit && (
75
- <div className="customer-detail__edit" onClick={onEdit}>
76
- <EditIcon /> Edit
77
- </div>
78
- )}
79
- </div>
80
- </div>
81
-
82
- <div className="customer-detail__grid">
83
- <div className="customer-detail__card">
84
- <h2 className="customer-detail__card-title">Contact Details</h2>
85
- <div className="customer-detail__info-group">
86
- <label>Email</label>
87
- <span>{contactDetails.email}</span>
88
- </div>
89
- <div className="customer-detail__info-group">
90
- <label>Phone</label>
91
- <span>{contactDetails.phone || '-'}</span>
92
- </div>
93
- <div className="customer-detail__info-group">
94
- <label>Age</label>
95
- <span>{contactDetails.age || '-'}</span>
96
- </div>
97
- </div>
98
-
99
- <div className="customer-detail__card">
100
- <h2 className="customer-detail__card-title">Booking Details</h2>
101
- <div className="customer-detail__info-group">
102
- <label>Next Booking</label>
103
- <span>{bookingDetails.nextBooking}</span>
104
- </div>
105
- <div className="customer-detail__info-group">
106
- <label>Customer Since</label>
107
- <span>{bookingDetails.customerSince}</span>
108
- </div>
109
- </div>
110
-
111
- {waiversEnabled && (
112
- <div className="customer-detail__card">
113
- <h2 className="customer-detail__card-title">Waiver Details</h2>
114
- <div className="customer-detail__info-group">
115
- <label>Status</label>
116
- <span>
117
- <Badge
118
- variant={waiverDetails.statusVariant}
119
- icon={(waiverDetails.status === 'Expired' || waiverDetails.status === 'Not Signed') ? <InfoIcon /> : undefined}
120
- >
121
- {waiverDetails.status}
122
- </Badge>
123
- </span>
124
- </div>
125
- <div className="customer-detail__info-group">
126
- <label>Expires</label>
127
- <span>{waiverDetails.expires}</span>
128
- </div>
129
- </div>
130
- )}
131
- </div>
132
-
133
- {waiversEnabled && minors && minors.length > 0 && (
134
- <div className="customer-detail__card customer-detail__card--full">
135
- <h2 className="customer-detail__card-title">Minors Signed For</h2>
136
- {minors.map((minor, index) => (
137
- <div key={index} className="customer-detail__minor-row">
138
- <div className="customer-detail__minor-info">
139
- <div className="customer-detail__minor-name">{minor.name}</div>
140
- <div className="customer-detail__minor-age">{minor.age}</div>
141
- </div>
142
- <div className="customer-detail__minor-status-group">
143
- <span className="customer-detail__minor-expires">Expires: {minor.expires}</span>
144
- <Badge
145
- variant={minor.statusVariant}
146
- icon={(minor.status === 'Expired' || minor.status === 'Not Signed') ? <InfoIcon /> : undefined}
147
- >
148
- {minor.status}
149
- </Badge>
150
- </div>
151
- </div>
152
- ))}
153
- </div>
154
- )}
155
-
156
- <div className="customer-detail__footer">
157
- Customer since: {customerSinceFooter}
158
- </div>
159
- </div>
160
- )
161
- }
@@ -1 +0,0 @@
1
- export * from './CustomerDetail'
@@ -1,37 +0,0 @@
1
- import React from 'react'
2
- import { NewPageHeader } from '../../NewPageHeader'
3
- import { CustomerForm, CustomerData } from '../CustomerForm'
4
-
5
- export interface CustomerEditProps {
6
- onBack: () => void
7
- onCancel: () => void
8
- onSave: (data: CustomerData) => void
9
- initialData?: Partial<CustomerData>
10
- isLoading?: boolean
11
- }
12
-
13
- export const CustomerEdit: React.FC<CustomerEditProps> = ({
14
-
15
- onCancel,
16
- onSave,
17
- initialData,
18
- isLoading,
19
- }) => {
20
- return (
21
- <div className="tw-bg-white tw-min-h-screen tw-font-sans">
22
- <div className='tw-max-w-4xl tw-mx-auto tw-w-full'>
23
- <NewPageHeader title="Edit Customer" onCancel={onCancel} />
24
- </div>
25
-
26
- <div className="tw-max-w-4xl tw-mx-auto tw-w-full tw-bg-white tw-border-2 tw-border-[#e8e9ef] tw-rounded-lg tw-p-4 md:tw-p-8 tw-mt-8">
27
- <CustomerForm
28
- onSave={onSave}
29
- initialData={initialData}
30
- isLoading={isLoading}
31
- submitButtonLabel="Save Changes"
32
- isEditing={true}
33
- />
34
- </div>
35
- </div>
36
- )
37
- }
@@ -1 +0,0 @@
1
- export * from './CustomerEdit'