@licklist/design 0.78.31 → 0.78.33

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 (139) hide show
  1. package/dist/Maintenance/Maintenance.scss.js +1 -1
  2. package/dist/Maintenance/MaintenancePage.d.ts.map +1 -1
  3. package/dist/Maintenance/MaintenancePage.js +4 -2
  4. package/dist/PageNotFound/PageNotFound.js +1 -1
  5. package/dist/index.js +9 -1
  6. package/dist/v2/components/ActionMenu/ActionMenu.d.ts +14 -0
  7. package/dist/v2/components/ActionMenu/ActionMenu.d.ts.map +1 -0
  8. package/dist/v2/components/ActionMenu/ActionMenu.js +159 -0
  9. package/dist/v2/components/ActionMenu/ActionMenu.scss.js +6 -0
  10. package/dist/v2/components/ActionMenu/index.d.ts +2 -0
  11. package/dist/v2/components/ActionMenu/index.d.ts.map +1 -0
  12. package/dist/v2/components/Alert/Alert.scss.js +1 -1
  13. package/dist/v2/components/Badge/Badge.d.ts +10 -0
  14. package/dist/v2/components/Badge/Badge.d.ts.map +1 -0
  15. package/dist/v2/components/Badge/Badge.js +19 -0
  16. package/dist/v2/components/Badge/Badge.scss.js +6 -0
  17. package/dist/v2/components/Badge/index.d.ts +2 -0
  18. package/dist/v2/components/Badge/index.d.ts.map +1 -0
  19. package/dist/v2/components/Button/Button.d.ts +3 -2
  20. package/dist/v2/components/Button/Button.d.ts.map +1 -1
  21. package/dist/v2/components/Button/Button.js +13 -6
  22. package/dist/v2/components/Button/Button.scss.js +1 -1
  23. package/dist/v2/components/Button/GhostButton.d.ts +8 -0
  24. package/dist/v2/components/Button/GhostButton.d.ts.map +1 -0
  25. package/dist/v2/components/Button/GhostButton.js +111 -0
  26. package/dist/v2/components/Button/GhostButton.scss.js +6 -0
  27. package/dist/v2/components/Button/index.d.ts +2 -0
  28. package/dist/v2/components/Button/index.d.ts.map +1 -1
  29. package/dist/v2/components/Checkbox/Checkbox.scss.js +1 -1
  30. package/dist/v2/components/FormField/FormField.d.ts.map +1 -1
  31. package/dist/v2/components/FormField/FormField.scss.js +1 -1
  32. package/dist/v2/components/Modal/DeleteModal.d.ts +15 -0
  33. package/dist/v2/components/Modal/DeleteModal.d.ts.map +1 -0
  34. package/dist/v2/components/Modal/DeleteModal.js +151 -0
  35. package/dist/v2/components/Modal/DeleteModal.scss.js +6 -0
  36. package/dist/v2/components/Modal/index.d.ts +3 -0
  37. package/dist/v2/components/Modal/index.d.ts.map +1 -0
  38. package/dist/v2/components/NewInput/NewInput.d.ts +2 -0
  39. package/dist/v2/components/NewInput/NewInput.d.ts.map +1 -1
  40. package/dist/v2/components/NewInput/NewInput.js +37 -12
  41. package/dist/v2/components/NewPageHeader/NewPageHeader.d.ts +4 -1
  42. package/dist/v2/components/NewPageHeader/NewPageHeader.d.ts.map +1 -1
  43. package/dist/v2/components/NewPageHeader/NewPageHeader.js +18 -11
  44. package/dist/v2/components/NewPageHeader/NewPageHeader.scss.js +1 -1
  45. package/dist/v2/components/NewTable/NewTable.d.ts +21 -0
  46. package/dist/v2/components/NewTable/NewTable.d.ts.map +1 -0
  47. package/dist/v2/components/NewTable/NewTable.js +63 -0
  48. package/dist/v2/components/NewTable/NewTable.scss.js +6 -0
  49. package/dist/v2/components/NewTable/index.d.ts +2 -0
  50. package/dist/v2/components/NewTable/index.d.ts.map +1 -0
  51. package/dist/v2/components/Pagination/Pagination.d.ts +13 -0
  52. package/dist/v2/components/Pagination/Pagination.d.ts.map +1 -0
  53. package/dist/v2/components/Pagination/Pagination.js +76 -0
  54. package/dist/v2/components/Pagination/Pagination.scss.js +6 -0
  55. package/dist/v2/components/Pagination/index.d.ts +2 -0
  56. package/dist/v2/components/Pagination/index.d.ts.map +1 -0
  57. package/dist/v2/components/QuickFilter/QuickFilter.d.ts +14 -0
  58. package/dist/v2/components/QuickFilter/QuickFilter.d.ts.map +1 -0
  59. package/dist/v2/components/QuickFilter/QuickFilter.js +70 -0
  60. package/dist/v2/components/QuickFilter/QuickFilter.scss.js +6 -0
  61. package/dist/v2/components/QuickFilter/index.d.ts +2 -0
  62. package/dist/v2/components/QuickFilter/index.d.ts.map +1 -0
  63. package/dist/v2/components/SectionHeader/SectionHeader.d.ts.map +1 -1
  64. package/dist/v2/components/Select/Select.d.ts +7 -4
  65. package/dist/v2/components/Select/Select.d.ts.map +1 -1
  66. package/dist/v2/components/Select/Select.js +53 -24
  67. package/dist/v2/components/Select/Select.scss.js +1 -1
  68. package/dist/v2/components/TableSortIcon/TableSortIcon.d.ts +9 -0
  69. package/dist/v2/components/TableSortIcon/TableSortIcon.d.ts.map +1 -0
  70. package/dist/v2/components/TableSortIcon/TableSortIcon.js +14 -0
  71. package/dist/v2/components/TableSortIcon/index.d.ts +2 -0
  72. package/dist/v2/components/TableSortIcon/index.d.ts.map +1 -0
  73. package/dist/v2/components/WYSIWYGEditor/Icons.js +2 -2
  74. package/dist/v2/components/WYSIWYGEditor/WYSIWYGEditor.scss.js +1 -1
  75. package/dist/v2/components/index.d.ts +17 -2
  76. package/dist/v2/components/index.d.ts.map +1 -1
  77. package/dist/v2/icons/index.d.ts +46 -0
  78. package/dist/v2/icons/index.d.ts.map +1 -1
  79. package/dist/v2/icons/index.js +358 -4
  80. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.d.ts.map +1 -1
  81. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.js +6 -10
  82. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.scss.js +1 -1
  83. package/dist/v2/pages/Settings/components/SidebarCustomisation.d.ts.map +1 -1
  84. package/dist/v2/pages/Settings/components/SidebarCustomisation.js +12 -11
  85. package/dist/v2/pages/Settings/components/SidebarCustomisation.scss.js +1 -1
  86. package/dist/v2/pages/Settings/components/SidebarNavItem.js +9 -2
  87. package/dist/v2/styles/form/NewInput.scss.js +1 -1
  88. package/package.json +3 -3
  89. package/src/Maintenance/Maintenance.scss +7 -7
  90. package/src/Maintenance/MaintenancePage.tsx +4 -3
  91. package/src/PageNotFound/PageNotFound.tsx +1 -1
  92. package/src/v2/components/ActionMenu/ActionMenu.scss +106 -0
  93. package/src/v2/components/ActionMenu/ActionMenu.tsx +115 -0
  94. package/src/v2/components/ActionMenu/index.ts +1 -0
  95. package/src/v2/components/Badge/Badge.scss +82 -0
  96. package/src/v2/components/Badge/Badge.tsx +25 -0
  97. package/src/v2/components/Badge/index.ts +1 -0
  98. package/src/v2/components/Button/Button.tsx +18 -4
  99. package/src/v2/components/Button/GhostButton.scss +63 -0
  100. package/src/v2/components/Button/GhostButton.tsx +28 -0
  101. package/src/v2/components/Button/index.ts +2 -0
  102. package/src/v2/components/Customer/CustomerDetail.scss +319 -0
  103. package/src/v2/components/Customer/CustomersList.scss +815 -0
  104. package/src/v2/components/FormField/FormField.scss +0 -4
  105. package/src/v2/components/FormField/FormField.tsx +19 -21
  106. package/src/v2/components/Modal/DeleteModal.scss +254 -0
  107. package/src/v2/components/Modal/DeleteModal.tsx +102 -0
  108. package/src/v2/components/Modal/index.ts +3 -0
  109. package/src/v2/components/NewInput/NewInput.stories.tsx +3 -18
  110. package/src/v2/components/NewInput/NewInput.tsx +35 -12
  111. package/src/v2/components/NewPageHeader/NewPageHeader.scss +17 -8
  112. package/src/v2/components/NewPageHeader/NewPageHeader.tsx +17 -10
  113. package/src/v2/components/NewTable/NewTable.scss +126 -0
  114. package/src/v2/components/NewTable/NewTable.tsx +92 -0
  115. package/src/v2/components/NewTable/index.ts +1 -0
  116. package/src/v2/components/Pagination/Pagination.scss +142 -0
  117. package/src/v2/components/Pagination/Pagination.tsx +80 -0
  118. package/src/v2/components/Pagination/index.ts +1 -0
  119. package/src/v2/components/QuickFilter/QuickFilter.scss +67 -0
  120. package/src/v2/components/QuickFilter/QuickFilter.tsx +51 -0
  121. package/src/v2/components/QuickFilter/index.ts +1 -0
  122. package/src/v2/components/SectionHeader/SectionHeader.tsx +5 -7
  123. package/src/v2/components/Select/Select.scss +61 -24
  124. package/src/v2/components/Select/Select.stories.tsx +77 -1
  125. package/src/v2/components/Select/Select.tsx +63 -34
  126. package/src/v2/components/TableSortIcon/TableSortIcon.tsx +20 -0
  127. package/src/v2/components/TableSortIcon/index.ts +1 -0
  128. package/src/v2/components/WYSIWYGEditor/Icons.tsx +2 -2
  129. package/src/v2/components/index.ts +44 -2
  130. package/src/v2/icons/index.tsx +123 -3
  131. package/src/v2/navigation/DashboardLayout/ProviderSidebar.scss +41 -0
  132. package/src/v2/navigation/DashboardLayout/ProviderSidebar.tsx +7 -5
  133. package/src/v2/navigation/config.tsx +1 -1
  134. package/src/v2/pages/Settings/components/SidebarCustomisation.scss +0 -34
  135. package/src/v2/pages/Settings/components/SidebarCustomisation.tsx +6 -7
  136. package/src/v2/styles/common.scss +7 -0
  137. package/src/v2/styles/components/Button.scss +34 -2
  138. package/src/v2/styles/form/NewInput.scss +45 -21
  139. package/src/v2/styles/index.scss +1 -0
@@ -161,4 +161,80 @@ export const AllVariants: Story = {
161
161
  </div>
162
162
  </div>
163
163
  ),
164
- }
164
+ }
165
+
166
+ export const WithLabel: Story = {
167
+ args: {
168
+ label: 'Select an option',
169
+ variant: 'default',
170
+ size: 'md',
171
+ },
172
+ render: (args) => (
173
+ <div style={{ width: '300px' }}>
174
+ <Select {...args}>
175
+ <option value="">Select</option>
176
+ <option value="option1">Option 1</option>
177
+ <option value="option2">Option 2</option>
178
+ <option value="option3">Option 3</option>
179
+ </Select>
180
+ </div>
181
+ ),
182
+ }
183
+
184
+ export const WithLabelAndOptional: Story = {
185
+ args: {
186
+ label: 'Gender',
187
+ optional: true,
188
+ variant: 'default',
189
+ size: 'md',
190
+ },
191
+ render: (args) => (
192
+ <div style={{ width: '300px' }}>
193
+ <Select {...args}>
194
+ <option value="">Select gender</option>
195
+ <option value="female">Female</option>
196
+ <option value="male">Male</option>
197
+ <option value="prefer_not_to_say">Prefer not to say</option>
198
+ </Select>
199
+ </div>
200
+ ),
201
+ }
202
+
203
+ export const WithError: Story = {
204
+ args: {
205
+ label: 'Country',
206
+ error: 'Please select a country',
207
+ variant: 'default',
208
+ size: 'md',
209
+ },
210
+ render: (args) => (
211
+ <div style={{ width: '300px' }}>
212
+ <Select {...args}>
213
+ <option value="">Select country</option>
214
+ <option value="us">United States</option>
215
+ <option value="uk">United Kingdom</option>
216
+ <option value="ca">Canada</option>
217
+ </Select>
218
+ </div>
219
+ ),
220
+ }
221
+
222
+ export const WithHelperText: Story = {
223
+ args: {
224
+ label: 'Timezone',
225
+ helperText: 'Choose your preferred timezone',
226
+ variant: 'default',
227
+ size: 'md',
228
+ },
229
+ render: (args) => (
230
+ <div style={{ width: '300px' }}>
231
+ <Select {...args}>
232
+ <option value="">Select timezone</option>
233
+ <option value="utc">UTC</option>
234
+ <option value="est">EST</option>
235
+ <option value="pst">PST</option>
236
+ </Select>
237
+ </div>
238
+ ),
239
+ }
240
+
@@ -1,56 +1,85 @@
1
- import React, { HTMLAttributes } from 'react'
1
+ import { SelectHTMLAttributes } from 'react'
2
2
  import './Select.scss'
3
3
 
4
- export interface SelectProps extends HTMLAttributes<HTMLSelectElement> {
4
+ export interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {
5
5
  variant?: 'default' | 'hover'| 'focus' | 'error' | 'disabled'
6
6
  size?: 'sm' | 'md' | 'lg'
7
- disabled?: boolean
7
+ label?: string
8
+ optional?: boolean
9
+ error?: string
10
+ helperText?: string
8
11
  }
9
12
 
10
- export function Select({
11
- variant = 'default',
12
- size = 'md',
13
- disabled = false,
13
+ export function Select({
14
+ variant = 'default',
15
+ size = 'md',
16
+ disabled = false,
14
17
  className = '',
18
+ label,
19
+ optional,
20
+ error,
21
+ helperText,
15
22
  children,
16
- ...props
23
+ ...props
17
24
  }: SelectProps) {
25
+ const isError = !!error
18
26
  const classes = [
19
27
  'select',
20
28
  `select--${variant}`,
21
29
  `select--${size}`,
22
30
  disabled ? 'select--disabled' : '',
31
+ isError ? 'select--error' : '',
23
32
  className
24
33
  ].filter(Boolean).join(' ')
25
34
 
26
35
  return (
27
- <div className="select-container">
28
- <select
29
- className={classes}
30
- disabled={disabled}
31
- {...props}
32
- >
33
- {children}
34
- </select>
35
- <svg
36
- className="select-arrow"
37
- xmlns="http://www.w3.org/2000/svg"
38
- width="11"
39
- height="6"
40
- viewBox="0 0 11 6"
41
- fill="none"
42
- aria-hidden="true"
43
- >
44
- <path
45
- d="M1 1L5.5 5L10 1"
46
- stroke="#626A90"
47
- strokeWidth="2"
48
- strokeLinecap="round"
49
- strokeLinejoin="round"
50
- />
51
- </svg>
36
+ <div className="select-wrapper">
37
+ {(label || optional) && (
38
+ <label className="select-label">
39
+ {label} {optional && <span className="select-label-optional">(Optional)</span>}
40
+ </label>
41
+ )}
42
+
43
+ <div className="select-container">
44
+ <select
45
+ className={classes}
46
+ disabled={disabled}
47
+ {...props}
48
+ >
49
+ {children}
50
+ </select>
51
+ <svg
52
+ className="select-arrow"
53
+ xmlns="http://www.w3.org/2000/svg"
54
+ width="11"
55
+ height="6"
56
+ viewBox="0 0 11 6"
57
+ fill="none"
58
+ aria-hidden="true"
59
+ >
60
+ <path
61
+ d="M1 1L5.5 5L10 1"
62
+ stroke="#626A90"
63
+ strokeWidth="2"
64
+ strokeLinecap="round"
65
+ strokeLinejoin="round"
66
+ />
67
+ </svg>
68
+ </div>
69
+
70
+ {helperText && (
71
+ <p className="select-helper-text">
72
+ {helperText}
73
+ </p>
74
+ )}
75
+
76
+ {error && error !== ' ' && (
77
+ <p className="select-error-text">
78
+ {error}
79
+ </p>
80
+ )}
52
81
  </div>
53
82
  )
54
83
  }
55
84
 
56
- export default Select
85
+ export default Select
@@ -0,0 +1,20 @@
1
+ import React from 'react'
2
+ import { ArrowUpIcon, ArrowDownIcon } from '../../icons'
3
+
4
+ export type SortDirection = 'asc' | 'desc' | null
5
+
6
+ export interface TableSortIconProps {
7
+ active?: boolean
8
+ direction: SortDirection
9
+ className?: string
10
+ }
11
+
12
+ export const TableSortIcon: React.FC<TableSortIconProps> = ({ active = false, direction, className = '' }) => {
13
+ if (!active || !direction) return null
14
+
15
+ return (
16
+ <span className={className}>
17
+ {direction === 'asc' ? <ArrowUpIcon /> : <ArrowDownIcon />}
18
+ </span>
19
+ )
20
+ }
@@ -0,0 +1 @@
1
+ export * from './TableSortIcon'
@@ -62,8 +62,8 @@ export const QuoteAltIcon = () => (
62
62
  export const DividerIcon = () => (
63
63
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
64
64
  <rect x="5.25" y="11.25" width="13.5" height="1.5" fill="#626A90"/>
65
- <circle cx="21.75" cy="12" r="0.75" fill="#626A90" fill-opacity="0.5"/>
66
- <circle cx="2.25" cy="12" r="0.75" fill="#626A90" fill-opacity="0.5"/>
65
+ <circle cx="21.75" cy="12" r="0.75" fill="#626A90" fillOpacity="0.5"/>
66
+ <circle cx="2.25" cy="12" r="0.75" fill="#626A90" fillOpacity="0.5"/>
67
67
  </svg>
68
68
  );
69
69
 
@@ -1,3 +1,22 @@
1
+ export { Badge } from './Badge'
2
+ export type { BadgeProps } from './Badge'
3
+
4
+ export { QuickFilter } from './QuickFilter'
5
+ export type { QuickFilterProps, QuickFilterOption } from './QuickFilter'
6
+
7
+ export { NewTable } from './NewTable'
8
+ export type { NewTableProps, NewTableColumn } from './NewTable'
9
+
10
+ export { TableSortIcon } from './TableSortIcon'
11
+ export type { TableSortIconProps } from './TableSortIcon'
12
+
13
+
14
+ export { ActionMenu } from './ActionMenu'
15
+ export type { ActionMenuProps, ActionMenuItem } from './ActionMenu'
16
+
17
+ export { DeleteModal } from './Modal'
18
+ export type { DeleteModalProps } from './Modal'
19
+
1
20
  // Form Components
2
21
  export { FormField } from './FormField'
3
22
  export type { FormFieldProps } from './FormField'
@@ -18,8 +37,8 @@ export { SectionHeader } from './SectionHeader'
18
37
  export type { SectionHeaderProps } from './SectionHeader'
19
38
 
20
39
  // Existing Components
21
- export { Button, ButtonText } from './Button'
22
- export type { ButtonProps, ButtonTextProps } from './Button'
40
+ export { Button, ButtonText, GhostButton } from './Button'
41
+ export type { ButtonProps, ButtonTextProps, GhostButtonProps } from './Button'
23
42
 
24
43
  export { Select } from './Select'
25
44
 
@@ -31,7 +50,30 @@ export { UserPanel } from './UserPanel'
31
50
 
32
51
  export { EntityHeader } from './EntityHeader'
33
52
 
53
+
34
54
  export { Alert } from './Alert'
35
55
 
36
56
  export { NPSScore } from './NPSScore'
37
57
 
58
+ export { Pagination } from './Pagination'
59
+ export type { PaginationProps } from './Pagination'
60
+
61
+ // Icons
62
+ export {
63
+ InfoIcon,
64
+ ArrowUpIcon,
65
+ ArrowDownIcon,
66
+ EditIcon,
67
+ ArrowLeftIcon,
68
+ ArrowRightIcon,
69
+ SearchIcon,
70
+ RefreshIcon,
71
+ SendIcon,
72
+ ExternalLinkIcon,
73
+ ExportIcon,
74
+ ClearIcon,
75
+ CloseIcon,
76
+ EllipsisIcon,
77
+ CircleIcon
78
+ } from '../icons'
79
+
@@ -99,7 +99,127 @@ export const BookingTypesIcon = () => (
99
99
  )
100
100
 
101
101
  export const EditIcon = () => (
102
- <svg width="24" height="24" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
103
- <path d="M9 22.89H10.4142L19.7279 13.5763L18.3137 12.1621L9 21.4758V22.89ZM25 24.89H7V20.6473L20.435 7.21232C20.8256 6.8218 21.4587 6.8218 21.8492 7.21232L24.6777 10.0408C25.0682 10.4313 25.0682 11.0644 24.6777 11.455L13.2426 22.89H25V24.89ZM19.7279 10.7479L21.1421 12.1621L22.5563 10.7479L21.1421 9.33364L19.7279 10.7479Z" fill="var(--fills-main-fill-primary, #14215A)"/>
102
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
103
+ <path d="M4 20H20" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
104
+ <path d="M6 16L15.5 6.5C16.3 5.7 17.7 5.7 18.5 6.5C19.3 7.3 19.3 8.7 18.5 9.5L9 19H6V16Z" stroke="currentColor" strokeWidth="2" strokeLinejoin="round" />
105
+ <path d="M14.5 7.5L17.5 10.5" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
106
+ </svg>
107
+ )
108
+
109
+ export const CalendarSmallIcon = () => (
110
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 22 22" fill="none">
111
+ <path d="M8.9375 4.125V5.5H13.0625V4.125H14.4375V5.5H17.1875C17.5672 5.5 17.875 5.80781 17.875 6.1875V17.1875C17.875 17.5672 17.5672 17.875 17.1875 17.875H4.8125C4.43281 17.875 4.125 17.5672 4.125 17.1875V6.1875C4.125 5.80781 4.43281 5.5 4.8125 5.5H7.5625V4.125H8.9375ZM16.5 11H5.5V16.5H16.5V11ZM10.3125 12.375V15.125H6.875V12.375H10.3125ZM7.5625 6.875H5.5V9.625H16.5V6.875H14.4375V8.25H13.0625V6.875H8.9375V8.25H7.5625V6.875Z" fill="#626A90"/>
112
+ </svg>
113
+ )
114
+
115
+ export const SearchIcon = () => (
116
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 22 22" fill="none">
117
+ <path d="M14.6593 13.7979L17.2683 16.4068L16.4068 17.2684L13.7978 14.6594C12.8597 15.4099 11.67 15.8589 10.3761 15.8589C7.34958 15.8589 4.89331 13.4026 4.89331 10.3761C4.89331 7.34965 7.34958 4.89337 10.3761 4.89337C13.4025 4.89337 15.8588 7.34965 15.8588 10.3761C15.8588 11.6701 15.4098 12.8598 14.6593 13.7979ZM13.4371 13.3458C14.182 12.5781 14.6404 11.5309 14.6404 10.3761C14.6404 8.02006 12.7321 6.11176 10.3761 6.11176C8.02 6.11176 6.1117 8.02006 6.1117 10.3761C6.1117 12.7322 8.02 14.6405 10.3761 14.6405C11.5309 14.6405 12.5781 14.1821 13.3458 13.4371L13.4371 13.3458Z" fill="#626A90"/>
118
+ </svg>
119
+ )
120
+
121
+ export const RefreshIcon = ({ width = 24, height = 24 }: React.SVGProps<SVGSVGElement> & { width?: number; height?: number } = {}) => (
122
+ <svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox="0 0 24 24" fill="none">
123
+ <path d="M7.09693 6.32447C8.41167 5.18766 10.1255 4.5 12 4.5C16.1421 4.5 19.5 7.85786 19.5 12C19.5 13.6021 18.9976 15.0869 18.1419 16.3055L15.75 12H18C18 8.68629 15.3137 6 12 6C10.3874 6 8.92333 6.6362 7.84517 7.67131L7.09693 6.32447ZM16.903 17.6755C15.5883 18.8123 13.8745 19.5 12 19.5C7.85786 19.5 4.5 16.1421 4.5 12C4.5 10.3979 5.00234 8.91312 5.8581 7.69458L8.25 12H6C6 15.3137 8.68629 18 12 18C13.6126 18 15.0767 17.3638 16.1549 16.3287L16.903 17.6755Z" fill="#14215A"/>
124
+ </svg>
125
+ )
126
+
127
+ export const SendIcon = ({ width = 24, height = 24 }: React.SVGProps<SVGSVGElement> & { width?: number; height?: number } = {}) => (
128
+ <svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox="0 0 24 24" fill="none">
129
+ <path d="M18 6C18.4142 6 18.75 6.33579 18.75 6.75V12.75H17.25V9.17871L11.3037 14.5039L5.25 9.16211V17.25H18V18.75H4.5C4.08579 18.75 3.75 18.4142 3.75 18V6.75C3.75 6.33579 4.08579 6 4.5 6H18ZM24 15L20.25 18V15.75H15V14.25H20.25V12L24 15ZM11.2969 12.4961L16.876 7.5H5.63379L11.2969 12.4961Z" fill="black"/>
130
+ </svg>
131
+ )
132
+
133
+ export const ExternalLinkIcon = () => (
134
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
135
+ <path d="M11.25 7.5V9H7.5V17.25H15.75V13.5H17.25V18C17.25 18.4142 16.9142 18.75 16.5 18.75H6.75C6.33579 18.75 6 18.4142 6 18V8.25C6 7.83579 6.33579 7.5 6.75 7.5H11.25ZM19.5 5.25V11.25H18L17.9999 7.80975L12.1553 13.6553L11.0947 12.5947L16.9387 6.75H13.5V5.25H19.5Z" fill="#14215A"/>
136
+ </svg>
137
+ )
138
+
139
+ export const ExportIcon = ({ width = 24, height = 24 }: React.SVGProps<SVGSVGElement> & { width?: number; height?: number } = {}) => (
140
+ <svg width={width} height={height} viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
141
+ <path d="M17 16H20L16 20L12 16H15V12H17V16ZM19 8H9V24H23V12H19V8ZM7 6.9918C7 6.44405 7.44749 6 7.9985 6H20L24.9997 11L25 24.9925C25 25.5489 24.5551 26 24.0066 26H7.9934C7.44476 26 7 25.5447 7 25.0082V6.9918Z" fill="currentColor"/>
142
+ </svg>
143
+ )
144
+
145
+ export const ClearIcon = () => (
146
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
147
+ <rect x="9.00006" y="22" width="18" height="2" transform="rotate(-45 9.00006 22)" fill="#CC3C35"></rect>
148
+ <rect x="10" y="9" width="18" height="2" transform="rotate(45 10 9)" fill="#CC3C35"></rect>
149
+ </svg>
150
+ )
151
+
152
+ export const ChevronLeftIcon = () => (
153
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
154
+ <path d="M19 12H5" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
155
+ <path d="M12 19L5 12L12 5" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
156
+ </svg>
157
+ )
158
+
159
+ export const ChevronRightIcon = () => (
160
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
161
+ <path d="M5 12H19" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
162
+ <path d="M12 5L19 12L12 19" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
163
+ </svg>
164
+ )
165
+
166
+ export const ArrowRightIcon = ({ width = 24, height = 24 }: { width?: number; height?: number } = {}) => (
167
+ <svg width={width} height={height} viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
168
+ <path d="M20.1716 14.9999L14.8076 9.63589L16.2218 8.22168L24 15.9999L16.2218 23.778L14.8076 22.3638L20.1716 16.9999H8V14.9999H20.1716Z" fill="currentColor"/>
169
+ </svg>
170
+ )
171
+
172
+ export const ArrowLeftIcon = ({ width = 24, height = 24 }: { width?: number; height?: number } = {}) => (
173
+ <svg width={width} height={height} viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
174
+ <path d="M11.8284 16.9997L17.1924 22.3637L15.7782 23.778L8 15.9997L15.7782 8.22163L17.1924 9.63583L11.8284 14.9997L24 14.9997L24 16.9997L11.8284 16.9997Z" fill="currentColor"/>
175
+ </svg>
176
+ )
177
+
178
+ export const InfoIcon = ({ width = 16, height = 16 }: { width?: number; height?: number } = {}) => (
179
+ <svg width={width} height={height} viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg" className="flex-shrink-0 text-label-primary">
180
+ <path d="M16 25C11.0294 25 7 20.9706 7 16C7 11.0294 11.0294 7 16 7C20.9706 7 25 11.0294 25 16C25 20.9706 20.9706 25 16 25ZM16 18C16.5523 18 17 17.5523 17 17L17 12C17 11.4477 16.5523 11 16 11C15.4477 11 15 11.4477 15 12L15 17C15 17.5523 15.4477 18 16 18ZM16 21C16.5523 21 17 20.5523 17 20C17 19.4477 16.5523 19 16 19C15.4477 19 15 19.4477 15 20C15 20.5523 15.4477 21 16 21Z" fill="currentColor"/>
181
+ </svg>
182
+ )
183
+
184
+ export const ArrowUpIcon = () => (
185
+ <svg width="11" height="6" viewBox="0 0 11 6" fill="none" xmlns="http://www.w3.org/2000/svg">
186
+ <path d="M10 5L5.5 1L1 5" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
187
+ </svg>
188
+ )
189
+
190
+ export const ArrowDownIcon = () => (
191
+ <svg width="11" height="6" viewBox="0 0 11 6" fill="none" xmlns="http://www.w3.org/2000/svg">
192
+ <path d="M1 1L5.5 5L10 1" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
104
193
  </svg>
105
- )
194
+ )
195
+
196
+ export const CloseIcon = ({width = 24, height = 24, ...props
197
+ }: React.SVGProps<SVGSVGElement> & { width?: number; height?: number }) => (
198
+ <svg
199
+ width={width}
200
+ height={height}
201
+ viewBox="0 0 24 24"
202
+ xmlns="http://www.w3.org/2000/svg"
203
+ {...props}
204
+ >
205
+ <path d="M18 6L6 18" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
206
+ <path d="M6 6L18 18" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
207
+ </svg>
208
+ )
209
+
210
+ export const EllipsisIcon = ({ width = 32, height = 32, fill = 'black', ...props }: React.SVGProps<SVGSVGElement> & { width?: number; height?: number; fill?: string } = {}) => (
211
+ <svg width={width} height={height} viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
212
+ <circle cx="8" cy="16" r="3" fill={fill} />
213
+ <circle cx="16" cy="16" r="3" fill={fill} />
214
+ <circle cx="24" cy="16" r="3" fill={fill} />
215
+ </svg>
216
+ )
217
+
218
+ export const CircleIcon = ({ width = 32, height = 32, fill = 'var(--surface-action-soft)', className = '', ...props }: React.SVGProps<SVGSVGElement> & { width?: number; height?: number; fill?: string } = {}) => (
219
+ <svg width={width} height={height} viewBox="0 0 32 32" fill="none" className={className} xmlns="http://www.w3.org/2000/svg" {...props}>
220
+ <circle cx="16" cy="16" r="16" fill={fill} />
221
+ </svg>
222
+ )
223
+
224
+
225
+
@@ -76,6 +76,47 @@
76
76
  &--collapsed {
77
77
  justify-content: center;
78
78
  }
79
+
80
+ &.provider-sidebar__link--active {
81
+ border-radius: 8px;
82
+
83
+ .entity-header {
84
+ background: transparent;
85
+
86
+ &:hover {
87
+ background: transparent;
88
+
89
+ .entity-header__badge {
90
+ background: rgba(255, 255, 255, 0.2);
91
+
92
+ span {
93
+ color: white;
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ .entity-header__name {
100
+ color: white;
101
+ }
102
+
103
+ .entity-header__badge {
104
+ background: rgba(255, 255, 255, 0.2);
105
+
106
+ span {
107
+ color: white;
108
+ }
109
+ }
110
+
111
+ .entity-header__placeholder span {
112
+ color: white;
113
+ }
114
+
115
+ .entity-header__placeholder svg circle {
116
+ fill: rgba(255, 255, 255, 0.2);
117
+ stroke: rgba(255, 255, 255, 0.6);
118
+ }
119
+ }
79
120
  }
80
121
 
81
122
  &__avatar {
@@ -118,11 +118,13 @@ const defaultNavItems: NavItem[] = [
118
118
  { id: 'flows', label: 'Flows', path: '/flows', icon: <FlowsIcon /> },
119
119
  { id: 'inventory', label: 'Inventory', path: '/inventory', icon: <InventoryIcon /> },
120
120
  { id: 'loyalty', label: 'Loyalty', path: '/loyalty', icon: <LoyaltyIcon /> },
121
- { id: 'customers', label: 'Customers', path: '/customers', icon: <CustomersIcon /> },
121
+ { id: 'customers', label: 'Customers', path: '/customers/overview', icon: <CustomersIcon /> },
122
122
  { id: 'reports', label: 'Reports', path: '/reports', icon: <ReportsIcon /> },
123
123
  { id: 'analytics', label: 'Analytics', path: '/analytics', icon: <AnalyticsIcon /> },
124
124
  { id: 'marketing', label: 'Marketing', path: '/marketing', icon: <MarketingIcon /> },
125
+ /*
125
126
  { id: 'waivers', label: 'Waivers', path: '/waivers', icon: <WaiversIcon /> },
127
+ */
126
128
  { id: 'settings', label: 'Settings', path: '/settings', icon: <SettingsIcon /> },
127
129
  ]
128
130
 
@@ -189,8 +191,8 @@ export const ProviderSidebar: React.FC<ProviderSidebarProps> = ({
189
191
 
190
192
 
191
193
  {expanded ? (
192
- <div
193
- className="provider-sidebar__header"
194
+ <div
195
+ className={`provider-sidebar__header ${activePath?.startsWith('/profile') ? 'provider-sidebar__link--active' : ''}`}
194
196
  onClick={() => handleNavClick('/profile')}
195
197
  role="button"
196
198
  tabIndex={0}
@@ -208,8 +210,8 @@ export const ProviderSidebar: React.FC<ProviderSidebarProps> = ({
208
210
  </div>
209
211
  ) : (
210
212
  <Tooltip content={providerName} side="right" sideOffset={8} delayDuration={100}>
211
- <div
212
- className="provider-sidebar__header provider-sidebar__header--collapsed"
213
+ <div
214
+ className={`provider-sidebar__header provider-sidebar__header--collapsed ${activePath?.startsWith('/profile') ? 'provider-sidebar__link--active' : ''}`}
213
215
  onClick={() => handleNavClick('/profile')}
214
216
  role="button"
215
217
  tabIndex={0}
@@ -104,7 +104,7 @@ export const NAVIGATION_ITEMS: NavigationItem[] = [
104
104
  id: 'customers',
105
105
  label: 'Customers',
106
106
  icon: customersIcon,
107
- path: '/customers',
107
+ path: '/customers/overview',
108
108
  venueRequired: true,
109
109
  requiredPermissions: ['view_customers']
110
110
  },
@@ -48,40 +48,6 @@
48
48
  }
49
49
  }
50
50
 
51
- &__edit-btn {
52
- display: inline-flex;
53
- align-items: center;
54
- justify-content: center;
55
- gap: 6px;
56
- height: 36px;
57
- padding: 0 12px 0 4px;
58
- border-radius: 6px;
59
- border: none;
60
- background: transparent;
61
- color: var(--label-primary);
62
- font-size: 14px;
63
- font-weight: 500;
64
- white-space: nowrap;
65
- cursor: pointer;
66
- transition: background-color 0.2s ease;
67
-
68
- svg {
69
- width: 20px;
70
- height: 20px;
71
- flex-shrink: 0;
72
- color: var(--fill-primary);
73
- }
74
-
75
- &:hover {
76
- background-color: var(--surface-tertiary);
77
- }
78
-
79
- &:focus-visible {
80
- outline: 2px solid var(--border-action);
81
- outline-offset: 2px;
82
- }
83
- }
84
-
85
51
  // Edit mode grid - responsive columns
86
52
  &__grid {
87
53
  display: grid;
@@ -13,6 +13,7 @@ import {
13
13
  EditIcon,
14
14
  } from '../../../icons'
15
15
  import { Button } from 'src/v2/components'
16
+ import { GhostButton } from 'src/v2/components/Button/GhostButton'
16
17
 
17
18
  export interface SidebarItem {
18
19
  id: string
@@ -109,14 +110,12 @@ export const SidebarCustomisation: React.FC<SidebarCustomisationProps> = ({
109
110
  Cancel
110
111
  </button>
111
112
  ) : (
112
- <button
113
- type="button"
114
- className="sidebar-customisation__edit-btn"
113
+ <GhostButton
114
+ icon={<EditIcon />}
115
115
  onClick={handleEdit}
116
116
  >
117
- <EditIcon />
118
- <span>Edit Side Bar</span>
119
- </button>
117
+ Edit Side Bar
118
+ </GhostButton>
120
119
  )}
121
120
  </div>
122
121
 
@@ -175,4 +174,4 @@ export const SidebarCustomisation: React.FC<SidebarCustomisationProps> = ({
175
174
  )
176
175
  }
177
176
 
178
- export default SidebarCustomisation
177
+ export default SidebarCustomisation
@@ -0,0 +1,7 @@
1
+ .text-description {
2
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
3
+ font-size: 16px;
4
+ font-style: normal;
5
+ line-height: 24px;
6
+ color: var(--label-secondary, #626A90);
7
+ }