@licklist/design 0.78.35 → 0.78.37

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 (99) hide show
  1. package/dist/index.d.ts +4 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +9 -2
  4. package/dist/v2/components/ActionMenu/ActionMenu.d.ts.map +1 -1
  5. package/dist/v2/components/ActionMenu/ActionMenu.js +6 -16
  6. package/dist/v2/components/ActionMenu/ActionMenu.scss.js +1 -1
  7. package/dist/v2/components/Button/Button.scss.js +1 -1
  8. package/dist/v2/components/Button/GhostButton.scss.js +1 -1
  9. package/dist/v2/components/Checkbox/Checkbox.scss.js +1 -1
  10. package/dist/v2/components/FormField/FormField.d.ts +3 -0
  11. package/dist/v2/components/FormField/FormField.d.ts.map +1 -1
  12. package/dist/v2/components/FormField/FormField.js +14 -3
  13. package/dist/v2/components/FormField/FormField.scss.js +1 -1
  14. package/dist/v2/components/IconButton/IconButton.d.ts +9 -0
  15. package/dist/v2/components/IconButton/IconButton.d.ts.map +1 -0
  16. package/dist/v2/components/IconButton/IconButton.js +137 -0
  17. package/dist/v2/components/IconButton/IconButton.scss.js +6 -0
  18. package/dist/v2/components/IconButton/index.d.ts +3 -0
  19. package/dist/v2/components/IconButton/index.d.ts.map +1 -0
  20. package/dist/v2/components/InputCheckbox/InputCheckbox.d.ts +7 -0
  21. package/dist/v2/components/InputCheckbox/InputCheckbox.d.ts.map +1 -0
  22. package/dist/v2/components/InputCheckbox/InputCheckbox.js +85 -0
  23. package/dist/v2/components/InputCheckbox/InputCheckbox.scss.js +6 -0
  24. package/dist/v2/components/InputCheckbox/index.d.ts +3 -0
  25. package/dist/v2/components/InputCheckbox/index.d.ts.map +1 -0
  26. package/dist/v2/components/NewInput/NewInput.d.ts +1 -0
  27. package/dist/v2/components/NewInput/NewInput.d.ts.map +1 -1
  28. package/dist/v2/components/NewInput/NewInput.js +7 -4
  29. package/dist/v2/components/NewPageHeader/NewPageHeader.scss.js +1 -1
  30. package/dist/v2/components/QuickFilter/QuickFilter.scss.js +1 -1
  31. package/dist/v2/components/ZoneCard/AddResourceButton.d.ts +8 -0
  32. package/dist/v2/components/ZoneCard/AddResourceButton.d.ts.map +1 -0
  33. package/dist/v2/components/ZoneCard/AddResourceButton.js +17 -0
  34. package/dist/v2/components/ZoneCard/ResourceRow.d.ts +28 -0
  35. package/dist/v2/components/ZoneCard/ResourceRow.d.ts.map +1 -0
  36. package/dist/v2/components/ZoneCard/ResourceRow.js +191 -0
  37. package/dist/v2/components/ZoneCard/ZoneCard.d.ts +25 -0
  38. package/dist/v2/components/ZoneCard/ZoneCard.d.ts.map +1 -0
  39. package/dist/v2/components/ZoneCard/ZoneCard.js +43 -0
  40. package/dist/v2/components/ZoneCard/ZoneCard.scss.js +6 -0
  41. package/dist/v2/components/ZoneCard/ZoneContainer.d.ts +12 -0
  42. package/dist/v2/components/ZoneCard/ZoneContainer.d.ts.map +1 -0
  43. package/dist/v2/components/ZoneCard/ZoneContainer.js +16 -0
  44. package/dist/v2/components/ZoneCard/ZoneHeader.d.ts +20 -0
  45. package/dist/v2/components/ZoneCard/ZoneHeader.d.ts.map +1 -0
  46. package/dist/v2/components/ZoneCard/ZoneHeader.js +149 -0
  47. package/dist/v2/components/ZoneCard/index.d.ts +11 -0
  48. package/dist/v2/components/ZoneCard/index.d.ts.map +1 -0
  49. package/dist/v2/components/index.d.ts +7 -1
  50. package/dist/v2/components/index.d.ts.map +1 -1
  51. package/dist/v2/icons/index.js +57 -1
  52. package/dist/v2/index.d.ts +10 -0
  53. package/dist/v2/index.d.ts.map +1 -1
  54. package/dist/v2/pages/Settings/components/SidebarCustomisation.js +6 -0
  55. package/dist/v2/pages/Settings/components/SidebarNavItem.js +6 -0
  56. package/dist/v2/pages/ZonesResources/ZonesResourcesPage.d.ts +12 -0
  57. package/dist/v2/pages/ZonesResources/ZonesResourcesPage.d.ts.map +1 -0
  58. package/dist/v2/pages/ZonesResources/ZonesResourcesPage.js +47 -0
  59. package/dist/v2/pages/ZonesResources/ZonesResourcesPage.scss.js +6 -0
  60. package/dist/v2/pages/ZonesResources/index.d.ts +3 -0
  61. package/dist/v2/pages/ZonesResources/index.d.ts.map +1 -0
  62. package/dist/v2/styles/form/NewInput.scss.js +1 -1
  63. package/package.json +1 -1
  64. package/src/index.ts +4 -1
  65. package/src/v2/components/ActionMenu/ActionMenu.scss +7 -20
  66. package/src/v2/components/ActionMenu/ActionMenu.stories.tsx +58 -0
  67. package/src/v2/components/ActionMenu/ActionMenu.tsx +3 -6
  68. package/src/v2/components/Button/GhostButton.scss +1 -1
  69. package/src/v2/components/Checkbox/Checkbox.scss +3 -3
  70. package/src/v2/components/Customer/CustomersList.scss +26 -8
  71. package/src/v2/components/FormField/FormField.scss +20 -1
  72. package/src/v2/components/FormField/FormField.tsx +33 -19
  73. package/src/v2/components/IconButton/IconButton.scss +81 -0
  74. package/src/v2/components/IconButton/IconButton.stories.tsx +51 -0
  75. package/src/v2/components/IconButton/IconButton.tsx +50 -0
  76. package/src/v2/components/IconButton/index.ts +2 -0
  77. package/src/v2/components/InputCheckbox/InputCheckbox.scss +53 -0
  78. package/src/v2/components/InputCheckbox/InputCheckbox.tsx +24 -0
  79. package/src/v2/components/InputCheckbox/index.ts +2 -0
  80. package/src/v2/components/NewInput/NewInput.tsx +5 -2
  81. package/src/v2/components/NewPageHeader/NewPageHeader.scss +1 -5
  82. package/src/v2/components/NewPageHeader/NewPageHeader.stories.tsx +28 -0
  83. package/src/v2/components/QuickFilter/QuickFilter.scss +0 -1
  84. package/src/v2/components/ZoneCard/AddResourceButton.tsx +20 -0
  85. package/src/v2/components/ZoneCard/ResourceRow.tsx +115 -0
  86. package/src/v2/components/ZoneCard/ZoneCard.scss +226 -0
  87. package/src/v2/components/ZoneCard/ZoneCard.stories.tsx +137 -0
  88. package/src/v2/components/ZoneCard/ZoneCard.tsx +69 -0
  89. package/src/v2/components/ZoneCard/ZoneContainer.tsx +26 -0
  90. package/src/v2/components/ZoneCard/ZoneHeader.tsx +84 -0
  91. package/src/v2/components/ZoneCard/index.ts +14 -0
  92. package/src/v2/components/index.ts +14 -1
  93. package/src/v2/index.ts +21 -0
  94. package/src/v2/pages/ZonesResources/ZonesResourcesPage.scss +43 -0
  95. package/src/v2/pages/ZonesResources/ZonesResourcesPage.stories.tsx +46 -0
  96. package/src/v2/pages/ZonesResources/ZonesResourcesPage.tsx +49 -0
  97. package/src/v2/pages/ZonesResources/index.ts +2 -0
  98. package/src/v2/styles/components/Button.scss +1 -0
  99. package/src/v2/styles/form/NewInput.scss +39 -6
@@ -0,0 +1,84 @@
1
+ import React from 'react'
2
+ import { ActionMenu, ActionMenuItem } from '../ActionMenu'
3
+ import { GripVerticalIcon, ArrowUpIcon, ArrowDownIcon } from '../../icons'
4
+ import { DragHandleProps } from './ZoneContainer'
5
+ import './ZoneCard.scss'
6
+
7
+ export interface ZoneHeaderProps {
8
+ name: string
9
+ totalCapacity: number
10
+ totalLabel?: string
11
+ menuItems?: ActionMenuItem[]
12
+ draggable?: boolean
13
+ dragHandleProps?: DragHandleProps
14
+ className?: string
15
+ isMobile?: boolean
16
+ isFirst?: boolean
17
+ isLast?: boolean
18
+ onMoveUp?: () => void
19
+ onMoveDown?: () => void
20
+ }
21
+
22
+ export const ZoneHeader: React.FC<ZoneHeaderProps> = ({
23
+ name,
24
+ totalCapacity,
25
+ totalLabel = 'Total',
26
+ menuItems = [],
27
+ draggable = true,
28
+ dragHandleProps,
29
+ className = '',
30
+ isMobile = false,
31
+ isFirst = false,
32
+ isLast = false,
33
+ onMoveUp,
34
+ onMoveDown,
35
+ }) => {
36
+ return (
37
+ <div className={`zone-card__header ${className}`}>
38
+ {draggable && !isMobile && (
39
+ <div className="zone-card__drag-handle" {...dragHandleProps}>
40
+ {GripVerticalIcon({ width: 20, height: 20 })}
41
+ </div>
42
+ )}
43
+ {draggable && isMobile && (
44
+ <div className="zone-card__reorder-arrows">
45
+ <button
46
+ className="zone-card__arrow-btn"
47
+ disabled={isFirst}
48
+ onClick={(e) => { e.stopPropagation(); onMoveUp?.() }}
49
+ >
50
+ <ArrowUpIcon />
51
+ </button>
52
+ <button
53
+ className="zone-card__arrow-btn"
54
+ disabled={isLast}
55
+ onClick={(e) => { e.stopPropagation(); onMoveDown?.() }}
56
+ >
57
+ <ArrowDownIcon />
58
+ </button>
59
+ </div>
60
+ )}
61
+ {isMobile ? (
62
+ <>
63
+ <div className="zone-card__header-info">
64
+ <span className="zone-card__name">{name}</span>
65
+ <span className="zone-card__total">{totalLabel}: {totalCapacity}</span>
66
+ </div>
67
+ {menuItems.length > 0 && (
68
+ <div className="zone-card__header-right">
69
+ <ActionMenu items={menuItems} />
70
+ </div>
71
+ )}
72
+ </>
73
+ ) : (
74
+ <>
75
+ <span className="zone-card__name">{name}</span>
76
+ <div className="zone-card__header-right">
77
+ <span className="zone-card__total">{totalLabel}: {totalCapacity}</span>
78
+ {menuItems.length > 0 && <ActionMenu items={menuItems} />}
79
+ </div>
80
+ </>
81
+ )}
82
+ </div>
83
+ )
84
+ }
@@ -0,0 +1,14 @@
1
+ export { ZoneCard } from './ZoneCard'
2
+ export type { ZoneCardProps, ZoneResource } from './ZoneCard'
3
+
4
+ export { ZoneContainer } from './ZoneContainer'
5
+ export type { ZoneContainerProps, DragHandleProps } from './ZoneContainer'
6
+
7
+ export { ZoneHeader } from './ZoneHeader'
8
+ export type { ZoneHeaderProps } from './ZoneHeader'
9
+
10
+ export { ResourceRow } from './ResourceRow'
11
+ export type { ResourceRowProps, ResourceRowLabels } from './ResourceRow'
12
+
13
+ export { AddResourceButton } from './AddResourceButton'
14
+ export type { AddResourceButtonProps } from './AddResourceButton'
@@ -1,3 +1,6 @@
1
+ export { IconButton } from './IconButton'
2
+ export type { IconButtonProps } from './IconButton'
3
+
1
4
  export { Badge } from './Badge'
2
5
  export type { BadgeProps } from './Badge'
3
6
 
@@ -27,6 +30,9 @@ export type { NewInputProps } from './NewInput'
27
30
  export { Checkbox } from './Checkbox'
28
31
  export type { CheckboxProps } from './Checkbox'
29
32
 
33
+ export { InputCheckbox } from './InputCheckbox'
34
+ export type { InputCheckboxProps } from './InputCheckbox'
35
+
30
36
  export { WYSIWYGEditor } from './WYSIWYGEditor'
31
37
  export type { WYSIWYGEditorProps } from './WYSIWYGEditor'
32
38
 
@@ -58,6 +64,9 @@ export { NPSScore } from './NPSScore'
58
64
  export { Pagination } from './Pagination'
59
65
  export type { PaginationProps } from './Pagination'
60
66
 
67
+ export { ZoneCard, ZoneContainer, ZoneHeader, ResourceRow, AddResourceButton } from './ZoneCard'
68
+ export type { ZoneCardProps, ZoneResource, ZoneContainerProps, DragHandleProps, ZoneHeaderProps, ResourceRowProps, AddResourceButtonProps } from './ZoneCard'
69
+
61
70
  // Icons
62
71
  export {
63
72
  InfoIcon,
@@ -76,6 +85,10 @@ export {
76
85
  ClearIcon,
77
86
  CloseIcon,
78
87
  EllipsisIcon,
79
- CircleIcon
88
+ CircleIcon,
89
+ GripVerticalIcon,
90
+ PlusIcon,
91
+ DeleteIcon,
92
+ ClockIcon
80
93
  } from '../icons'
81
94
 
package/src/v2/index.ts CHANGED
@@ -21,6 +21,19 @@ export type { AlertProps, AlertVariant } from './components/Alert'
21
21
  export { Button } from './components/Button'
22
22
  export type { ButtonProps } from './components/Button'
23
23
 
24
+ // NewInput Component
25
+ export { NewInput } from './components/NewInput'
26
+ export type { NewInputProps } from './components/NewInput'
27
+
28
+ // Checkbox Component
29
+ export { Checkbox } from './components/Checkbox'
30
+ export type { CheckboxProps } from './components/Checkbox'
31
+
32
+ // NewPageHeader Component
33
+ export { NewPageHeader } from './components/NewPageHeader'
34
+ export type { NewPageHeaderProps } from './components/NewPageHeader'
35
+
36
+
24
37
  // EntityHeader Component
25
38
  export { EntityHeader } from './components/EntityHeader'
26
39
  export type { EntityHeaderProps } from './components/EntityHeader'
@@ -36,6 +49,14 @@ export type { NPSScoreProps, NPSSubmitData } from './components/NPSScore'
36
49
  export { UserPanel } from './components/UserPanel'
37
50
  export type { UserPanelProps } from './components/UserPanel'
38
51
 
52
+ // ZoneCard Components
53
+ export { ZoneCard, ZoneContainer, ZoneHeader, ResourceRow, AddResourceButton } from './components/ZoneCard'
54
+ export type { ZoneCardProps, ZoneResource, ZoneContainerProps, DragHandleProps, ZoneHeaderProps, ResourceRowProps, ResourceRowLabels, AddResourceButtonProps } from './components/ZoneCard'
55
+
56
+ // ZonesResources Page
57
+ export { ZonesResourcesPage } from './pages/ZonesResources'
58
+ export type { ZonesResourcesPageProps } from './pages/ZonesResources'
59
+
39
60
  // ============================================================================
40
61
  // Navigation Components
41
62
  // ============================================================================
@@ -0,0 +1,43 @@
1
+ .zones-resources-page {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-self: stretch;
5
+
6
+ &__back {
7
+ padding: 24px 32px 0 32px;
8
+ align-self: flex-start;
9
+
10
+ .ghost-button {
11
+ color: var(--fill-action, #5D5BF4);
12
+ border-color: var(--borders-main-border-primary, #E8E9EF);
13
+
14
+ &:not(.active):hover:not(:disabled) {
15
+ background-color: var(--surface-action-soft, #F4F4FE);
16
+ color: var(--fill-action, #5D5BF4);
17
+ }
18
+
19
+ .ghost-button__icon svg {
20
+ width: 24px;
21
+ height: 24px;
22
+ }
23
+ }
24
+
25
+ @media (max-width: 768px) {
26
+ padding: 16px 16px 0 16px;
27
+ }
28
+ }
29
+
30
+ &__content {
31
+ padding: 24px 32px;
32
+
33
+ @media (max-width: 768px) {
34
+ padding: 0;
35
+ }
36
+ }
37
+
38
+ &__action {
39
+ margin-bottom: 16px;
40
+ display: flex;
41
+ justify-content: flex-end;
42
+ }
43
+ }
@@ -0,0 +1,46 @@
1
+ import React from 'react'
2
+ import { Meta, StoryObj } from '@storybook/react'
3
+ import { ZonesResourcesPage } from './ZonesResourcesPage'
4
+
5
+ export default {
6
+ title: 'v2/Pages/ZonesResourcesPage',
7
+ component: ZonesResourcesPage,
8
+ parameters: {
9
+ layout: 'fullscreen',
10
+ },
11
+ } as Meta<typeof ZonesResourcesPage>
12
+
13
+ type Story = StoryObj<typeof ZonesResourcesPage>
14
+
15
+ export const Default: Story = {
16
+ args: {
17
+ onBack: () => alert('Back to Settings'),
18
+ onAction: () => alert('Add Zone clicked'),
19
+ },
20
+ }
21
+
22
+ export const WithContent: Story = {
23
+ args: {
24
+ onBack: () => alert('Back to Settings'),
25
+ onAction: () => alert('Add Zone clicked'),
26
+ children: (
27
+ <div style={{ padding: '16px', border: '1px solid var(--border-primary)', borderRadius: '8px' }}>
28
+ <p style={{ color: 'var(--label-secondary)', fontFamily: 'var(--font-family-sans)' }}>
29
+ Zone and resource content goes here
30
+ </p>
31
+ </div>
32
+ ),
33
+ },
34
+ }
35
+
36
+ export const WithoutBackButton: Story = {
37
+ args: {
38
+ onAction: () => alert('Add Zone clicked'),
39
+ },
40
+ }
41
+
42
+ export const WithoutAction: Story = {
43
+ args: {
44
+ onBack: () => alert('Back to Settings'),
45
+ },
46
+ }
@@ -0,0 +1,49 @@
1
+ import React from 'react'
2
+ import { GhostButton } from '../../components/Button'
3
+ import { NewPageHeader } from '../../components/NewPageHeader'
4
+ import { ArrowLeftIcon, PlusIcon } from '../../icons'
5
+ import './ZonesResourcesPage.scss'
6
+
7
+ export interface ZonesResourcesPageProps {
8
+ title?: string
9
+ backLabel?: string
10
+ onBack?: () => void
11
+ actionLabel?: string
12
+ onAction?: () => void
13
+ children?: React.ReactNode
14
+ }
15
+
16
+ export const ZonesResourcesPage: React.FC<ZonesResourcesPageProps> = ({
17
+ title = 'Zones & Resources',
18
+ backLabel = 'Back to Settings',
19
+ onBack,
20
+ actionLabel = 'Add Zone',
21
+ onAction,
22
+ children,
23
+ }) => {
24
+ return (
25
+ <div className="zones-resources-page">
26
+ {onBack && (
27
+ <div className="zones-resources-page__back">
28
+ <GhostButton onClick={onBack} icon={<ArrowLeftIcon />}>
29
+ {backLabel}
30
+ </GhostButton>
31
+ </div>
32
+ )}
33
+ <NewPageHeader
34
+ title={title}
35
+ showDivider
36
+ />
37
+ <div className="zones-resources-page__content">
38
+ {onAction && (
39
+ <div className="zones-resources-page__action">
40
+ <GhostButton onClick={onAction} icon={<PlusIcon width={16} height={16} />}>
41
+ {actionLabel}
42
+ </GhostButton>
43
+ </div>
44
+ )}
45
+ {children}
46
+ </div>
47
+ </div>
48
+ )
49
+ }
@@ -0,0 +1,2 @@
1
+ export { ZonesResourcesPage } from './ZonesResourcesPage'
2
+ export type { ZonesResourcesPageProps } from './ZonesResourcesPage'
@@ -105,6 +105,7 @@
105
105
  &--destructive-soft {
106
106
  border-radius: var(--radius-reg, 8px);
107
107
  background: var(--surface-danger-soft, #fceceb);
108
+ color: var(--label-danger);
108
109
 
109
110
  &:hover {
110
111
  background-color: var(--surface-danger-soft-hover, #f5c4c2);
@@ -15,16 +15,20 @@
15
15
  font-style: normal;
16
16
  font-weight: 600;
17
17
  line-height: 20px;
18
- color: var(--label-primary, #121E52);
19
- display: block;
18
+ color: var(--label-primary);
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: space-between;
22
+ width: 100%;
20
23
  }
21
24
 
22
25
  &__label-optional {
23
26
  font-family: var(--font-family-sans, 'Geist', sans-serif);
24
- font-size: 15px;
25
- font-weight: 600;
26
- line-height: 20px;
27
- color: var(--label-primary, #121E52);
27
+ font-size: 13px;
28
+ font-weight: 400;
29
+ font-style: normal;
30
+ line-height: 16px;
31
+ color: var(--label-secondary);
28
32
  }
29
33
 
30
34
 
@@ -218,9 +222,38 @@
218
222
  pointer-events: none;
219
223
  }
220
224
 
225
+ &--on-surface {
226
+ .new-form-input__input,
227
+ .new-form-input__textarea,
228
+ .new-form-input__input-with-icon {
229
+ background-color: var(--surface-primary, #fff);
230
+ background: var(--surface-primary, #fff);
231
+
232
+ &:focus,
233
+ &:focus-within {
234
+ background-color: var(--surface-primary, #fff);
235
+ }
236
+ }
237
+ }
238
+
221
239
  &.dob-input {
222
240
  .new-form-input__label {
223
241
  color: var(--label-secondary, #626A90);
224
242
  }
225
243
  }
226
244
  }
245
+
246
+ // Auto-detect: swap input backgrounds when inside a surface-secondary container
247
+ .surface-context--secondary {
248
+ .new-form-input__input,
249
+ .new-form-input__textarea,
250
+ .new-form-input__input-with-icon {
251
+ background-color: var(--surface-primary, #fff);
252
+ background: var(--surface-primary, #fff);
253
+
254
+ &:focus,
255
+ &:focus-within {
256
+ background-color: var(--surface-primary, #fff);
257
+ }
258
+ }
259
+ }