@licklist/design 0.78.41 → 0.78.44

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 (67) hide show
  1. package/.yarnrc.yml +5 -0
  2. package/dist/index.d.ts +1 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/static/date-range-input/DateRangeInput.d.ts.map +1 -1
  6. package/dist/v2/components/InputCheckbox/InputCheckbox.scss.js +1 -1
  7. package/dist/v2/components/NewTabs/NewTabs.scss.js +1 -1
  8. package/dist/v2/components/Tooltip/Tooltip.d.ts +0 -1
  9. package/dist/v2/components/Tooltip/Tooltip.d.ts.map +1 -1
  10. package/dist/v2/components/ZoneCard/ZoneCard.scss.js +1 -1
  11. package/dist/v2/components/index.d.ts +1 -1
  12. package/dist/v2/components/index.d.ts.map +1 -1
  13. package/dist/v2/dashboard-analytics/blog-posts/index.d.ts +1 -1
  14. package/dist/v2/dashboard-analytics/blog-posts/index.d.ts.map +1 -1
  15. package/dist/v2/dashboard-analytics/chart/Chart.d.ts.map +1 -1
  16. package/dist/v2/dashboard-analytics/chart/Chart.js +3 -2
  17. package/dist/v2/icons/index.d.ts +4 -0
  18. package/dist/v2/icons/index.d.ts.map +1 -1
  19. package/dist/v2/icons/index.js +47 -1
  20. package/dist/v2/navigation/DashboardLayout/DashboardLayout.js +1 -1
  21. package/dist/v2/navigation/DashboardLayout/TopNavigation.d.ts.map +1 -1
  22. package/dist/v2/navigation/FigmasSideBar/FigmasSideBar.d.ts.map +1 -1
  23. package/dist/v2/navigation/config.d.ts.map +1 -1
  24. package/dist/v2/styles/common.scss +7 -0
  25. package/dist/v2/styles/components/Button.scss +199 -0
  26. package/dist/v2/styles/form/Layout.scss +15 -0
  27. package/dist/v2/styles/form/NewInput.scss +271 -0
  28. package/dist/v2/styles/form/NewInput.scss.js +1 -1
  29. package/dist/v2/styles/index.scss +6 -0
  30. package/dist/v2/styles/navigation/Navigation.scss +17 -0
  31. package/dist/v2/styles/navigation/NavigationItem.scss +86 -0
  32. package/dist/v2/styles/navigation/NavigationSection.scss +26 -0
  33. package/dist/v2/styles/navigation/_index.scss +9 -0
  34. package/dist/v2/styles/tokens/_colors.scss +562 -0
  35. package/dist/v2/styles/tokens/_sizes.scss +125 -0
  36. package/dist/v2/styles/tokens/_status.scss +108 -0
  37. package/dist/v2/styles/tokens/_typography.scss +146 -0
  38. package/dist/v2/types/navigation.d.ts +2 -0
  39. package/dist/v2/types/navigation.d.ts.map +1 -1
  40. package/dist/virtualized/components/VirtualizedGrid.d.ts.map +1 -1
  41. package/dist/virtualized/components/VirtualizedWindowScroller.d.ts.map +1 -1
  42. package/dist/virtualized/components/VirtualizedWindowScroller.js +3 -2
  43. package/package.json +3 -3
  44. package/rollup.config.js +6 -0
  45. package/src/index.ts +1 -2
  46. package/src/static/date-range-input/DateRangeInput.tsx +1 -0
  47. package/src/v2/components/InputCheckbox/InputCheckbox.scss +3 -3
  48. package/src/v2/components/NPSScore/NPSScore.tsx +2 -2
  49. package/src/v2/components/NewTabs/NewTabs.scss +1 -1
  50. package/src/v2/components/Tooltip/Tooltip.tsx +1 -2
  51. package/src/v2/components/ZoneCard/ZoneCard.scss +78 -0
  52. package/src/v2/components/index.ts +1 -0
  53. package/src/v2/dashboard-analytics/blog-posts/index.ts +1 -1
  54. package/src/v2/dashboard-analytics/chart/Chart.tsx +36 -31
  55. package/src/v2/dashboard-analytics/dashboard/Dashboard.tsx +1 -1
  56. package/src/v2/icons/index.tsx +10 -0
  57. package/src/v2/navigation/DashboardLayout/DashboardLayout.tsx +1 -1
  58. package/src/v2/navigation/DashboardLayout/TopNavigation.tsx +9 -6
  59. package/src/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.tsx +1 -1
  60. package/src/v2/navigation/FigmasSideBar/FigmasSideBar.tsx +6 -4
  61. package/src/v2/navigation/config.tsx +0 -1
  62. package/src/v2/pages/SettingsSubPage/SettingsSubPage.scss +43 -0
  63. package/src/v2/styles/form/NewInput.scss +12 -0
  64. package/src/v2/types/navigation.ts +3 -0
  65. package/src/virtualized/components/VirtualizedGrid.tsx +1 -0
  66. package/src/virtualized/components/VirtualizedWindowScroller.tsx +1 -0
  67. package/tsconfig.build.tsbuildinfo +1 -0
@@ -0,0 +1,108 @@
1
+ /* Status/Alert Color tokens derived from Figma Alerts & Errors page
2
+ * Spec: https://www.figma.com/design/HPb8SEwQH2rrFAD2sRlKei/BKIT---Booked-Kit?node-id=167:968
3
+ */
4
+
5
+ :root {
6
+ /* Success/Green Status Colors */
7
+ --color-success-fill: #2d6b18;
8
+ --color-success-background: #eef9ea;
9
+ --color-success-border: #c9ecbd;
10
+
11
+ /* Error/Red Status Colors */
12
+ --color-error-fill: #cc3c35;
13
+ --color-error-background: #fceceb;
14
+ --color-error-border: #f5c4c2;
15
+
16
+ /* Alert/Warning/Yellow Status Colors */
17
+ --color-alert-fill: #fd7e14;
18
+ --color-alert-background: #fcf6e7;
19
+ --color-alert-border: #f6e3b4;
20
+
21
+ /* Info/Blue Status Colors */
22
+ --color-info-fill: #0e8ce2;
23
+ --color-info-background: #e7f4fc;
24
+ --color-info-border: #b4dbf6;
25
+ }
26
+
27
+ /* Legacy format for compatibility with existing alias system */
28
+ :root {
29
+ /* Surfaces - Status backgrounds */
30
+ --surfaces-status-background-success: var(--color-success-background);
31
+ --surfaces-status-background-error: var(--color-error-background);
32
+ --surfaces-status-background-alert: var(--color-alert-background);
33
+ --surfaces-status-background-info: var(--color-info-background);
34
+
35
+ /* Borders - Status borders */
36
+ --borders-status-border-success: var(--color-success-border);
37
+ --borders-status-border-error: var(--color-error-border);
38
+ --borders-status-border-alert: var(--color-alert-border);
39
+ --borders-status-border-info: var(--color-info-border);
40
+
41
+ /* Fills - Status icons/text */
42
+ --fills-status-fill-success: var(--color-success-fill);
43
+ --fills-status-fill-error: var(--color-error-fill);
44
+ --fills-status-fill-alert: var(--color-alert-fill);
45
+ --fills-status-fill-info: var(--color-info-fill);
46
+ }
47
+
48
+ /* SCSS Map for status colors */
49
+ $status-colors: (
50
+ success: (
51
+ fill: var(--color-success-fill),
52
+ background: var(--color-success-background),
53
+ border: var(--color-success-border)
54
+ ),
55
+ error: (
56
+ fill: var(--color-error-fill),
57
+ background: var(--color-error-background),
58
+ border: var(--color-error-border)
59
+ ),
60
+ alert: (
61
+ fill: var(--color-alert-fill),
62
+ background: var(--color-alert-background),
63
+ border: var(--color-alert-border)
64
+ ),
65
+ info: (
66
+ fill: var(--color-info-fill),
67
+ background: var(--color-info-background),
68
+ border: var(--color-info-border)
69
+ )
70
+ );
71
+
72
+ /* Mixins for status colors */
73
+ @mixin status-success() {
74
+ background-color: var(--surfaces-status-background-success);
75
+ border-color: var(--borders-status-border-success);
76
+ color: var(--fills-status-fill-success);
77
+ }
78
+
79
+ @mixin status-error() {
80
+ background-color: var(--surfaces-status-background-error);
81
+ border-color: var(--borders-status-border-error);
82
+ color: var(--fills-status-fill-error);
83
+ }
84
+
85
+ @mixin status-alert() {
86
+ background-color: var(--surfaces-status-background-alert);
87
+ border-color: var(--borders-status-border-alert);
88
+ color: var(--fills-status-fill-alert);
89
+ }
90
+
91
+ @mixin status-info() {
92
+ background-color: var(--surfaces-status-background-info);
93
+ border-color: var(--borders-status-border-info);
94
+ color: var(--fills-status-fill-info);
95
+ }
96
+
97
+ /* Helper mixin for getting status colors */
98
+ @function get-status-color($status, $type) {
99
+ $status-map: map-get($status-colors, $status);
100
+ @if $status-map {
101
+ $color: map-get($status-map, $type);
102
+ @if $color {
103
+ @return $color;
104
+ }
105
+ }
106
+ @warn "Unknown status color: #{$status}.#{$type}";
107
+ @return null;
108
+ }
@@ -0,0 +1,146 @@
1
+ /* Typography tokens and mixins derived from Figma
2
+ * Spec: https://www.figma.com/design/HPb8SEwQH2rrFAD2sRlKei/BKIT---Booked-Kit?node-id=30-95&m=dev
3
+ */
4
+
5
+ :root {
6
+ /* Families */
7
+ --font-family-sans: 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
8
+ --font-family-mono: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
9
+
10
+ /* Headings Desktop */
11
+ --heading-xxl-size: 44px;
12
+ --heading-xxl-line: 48px;
13
+ --heading-xxl-weight: 600;
14
+ --heading-xl-size: 32px;
15
+ --heading-xl-line: 36px;
16
+ --heading-xl-weight: 700;
17
+ --heading-h1-size: 24px;
18
+ --heading-h1-line: 28px;
19
+ --heading-h1-weight: 600;
20
+ --heading-h2-size: 20px;
21
+ --heading-h2-line: 24px;
22
+ --heading-h2-weight: 600;
23
+ --heading-h3-size: 17px;
24
+ --heading-h3-line: 20px;
25
+ --heading-h3-weight: 600;
26
+ --heading-h4-size: 15px;
27
+ --heading-h4-line: 18px;
28
+ --heading-h4-weight: 600;
29
+ --heading-h5-size: 13px;
30
+ --heading-h5-line: 16px;
31
+ --heading-h5-weight: 500;
32
+ --heading-h6-size: 11px;
33
+ --heading-h6-line: 14px;
34
+ --heading-h6-weight: 500;
35
+
36
+ /* Headings Mobile */
37
+ --heading-xxl-mobile-size: 32px;
38
+ --heading-xxl-mobile-line: 36px;
39
+ --heading-xxl-mobile-weight: 600;
40
+ --heading-xl-mobile-size: 26px;
41
+ --heading-xl-mobile-line: 30px;
42
+ --heading-xl-mobile-weight: 700;
43
+ --heading-h1-mobile-size: 20px;
44
+ --heading-h1-mobile-line: 23px;
45
+ --heading-h1-mobile-weight: 600;
46
+ --heading-h2-mobile-size: 18px;
47
+ --heading-h2-mobile-line: 22px;
48
+ --heading-h2-mobile-weight: 600;
49
+ --heading-h3-mobile-size: 16px;
50
+ --heading-h3-mobile-line: 18px;
51
+ --heading-h3-mobile-weight: 600;
52
+ --heading-h4-mobile-size: 14px;
53
+ --heading-h4-mobile-line: 16px;
54
+ --heading-h4-mobile-weight: 600;
55
+ --heading-h5-mobile-size: 13px;
56
+ --heading-h5-mobile-line: 16px;
57
+ --heading-h5-mobile-weight: 500;
58
+ --heading-h6-mobile-size: 11px;
59
+ --heading-h6-mobile-line: 14px;
60
+ --heading-h6-mobile-weight: 500;
61
+
62
+ /* Body Desktop */
63
+ --text-xl-size: 20px;
64
+ --text-xl-line: 26px;
65
+ --text-xl-weight: 400;
66
+ --text-large-size: 18px;
67
+ --text-large-line: 24px;
68
+ --text-large-weight: 400;
69
+ --text-regular-size: 15px;
70
+ --text-regular-line: 20px;
71
+ --text-regular-weight: 400;
72
+ --text-small-size: 13px;
73
+ --text-small-line: 16px;
74
+ --text-small-weight: 400;
75
+ --text-small-emphasis-weight: 500;
76
+ --text-small-bold-weight: 600;
77
+ --text-xs-size: 10px;
78
+ --text-xs-line: 13px;
79
+ --text-xs-weight: 500;
80
+ --text-xs-bold-weight: 600;
81
+ }
82
+
83
+ /* Breakpoint: adjust if your system uses different breakpoints */
84
+ $bp-mobile-max: 767px;
85
+
86
+ /* Map of variants to CSS variable tuples: (size, line, weight) */
87
+ $typo-map: (
88
+ 'heading.xxl': (var(--heading-xxl-size), var(--heading-xxl-line), var(--heading-xxl-weight), var(--font-family-sans)),
89
+ 'heading.xl': (var(--heading-xl-size), var(--heading-xl-line), var(--heading-xl-weight), var(--font-family-sans)),
90
+ 'heading.h1': (var(--heading-h1-size), var(--heading-h1-line), var(--heading-h1-weight), var(--font-family-sans)),
91
+ 'heading.h2': (var(--heading-h2-size), var(--heading-h2-line), var(--heading-h2-weight), var(--font-family-sans)),
92
+ 'heading.h3': (var(--heading-h3-size), var(--heading-h3-line), var(--heading-h3-weight), var(--font-family-sans)),
93
+ 'heading.h4': (var(--heading-h4-size), var(--heading-h4-line), var(--heading-h4-weight), var(--font-family-sans)),
94
+ 'heading.h5': (var(--heading-h5-size), var(--heading-h5-line), var(--heading-h5-weight), var(--font-family-sans)),
95
+ 'heading.h6': (var(--heading-h6-size), var(--heading-h6-line), var(--heading-h6-weight), var(--font-family-sans)),
96
+
97
+ 'heading.xxl.mobile': (var(--heading-xxl-mobile-size), var(--heading-xxl-mobile-line), var(--heading-xxl-mobile-weight), var(--font-family-sans)),
98
+ 'heading.xl.mobile': (var(--heading-xl-mobile-size), var(--heading-xl-mobile-line), var(--heading-xl-mobile-weight), var(--font-family-sans)),
99
+ 'heading.h1.mobile': (var(--heading-h1-mobile-size), var(--heading-h1-mobile-line), var(--heading-h1-mobile-weight), var(--font-family-sans)),
100
+ 'heading.h2.mobile': (var(--heading-h2-mobile-size), var(--heading-h2-mobile-line), var(--heading-h2-mobile-weight), var(--font-family-sans)),
101
+ 'heading.h3.mobile': (var(--heading-h3-mobile-size), var(--heading-h3-mobile-line), var(--heading-h3-mobile-weight), var(--font-family-sans)),
102
+ 'heading.h4.mobile': (var(--heading-h4-mobile-size), var(--heading-h4-mobile-line), var(--heading-h4-mobile-weight), var(--font-family-sans)),
103
+ 'heading.h5.mobile': (var(--heading-h5-mobile-size), var(--heading-h5-mobile-line), var(--heading-h5-mobile-weight), var(--font-family-sans)),
104
+ 'heading.h6.mobile': (var(--heading-h6-mobile-size), var(--heading-h6-mobile-line), var(--heading-h6-mobile-weight), var(--font-family-sans)),
105
+
106
+ 'text.xl': (var(--text-xl-size), var(--text-xl-line), var(--text-xl-weight), var(--font-family-sans)),
107
+ 'text.large': (var(--text-large-size), var(--text-large-line), var(--text-large-weight), var(--font-family-sans)),
108
+ 'text.regular': (var(--text-regular-size), var(--text-regular-line), var(--text-regular-weight), var(--font-family-sans)),
109
+ 'text.small': (var(--text-small-size), var(--text-small-line), var(--text-small-weight), var(--font-family-sans)),
110
+ 'text.small.emphasis': (var(--text-small-size), var(--text-small-line), var(--text-small-emphasis-weight), var(--font-family-sans)),
111
+ 'text.small.bold': (var(--text-small-size), var(--text-small-line), var(--text-small-bold-weight), var(--font-family-sans)),
112
+ 'text.xs': (var(--text-xs-size), var(--text-xs-line), var(--text-xs-weight), var(--font-family-sans)),
113
+ 'text.xs.bold': (var(--text-xs-size), var(--text-xs-line), var(--text-xs-bold-weight), var(--font-family-sans))
114
+ );
115
+
116
+ @mixin apply-typo($tuple) {
117
+ $size: nth($tuple, 1);
118
+ $line: nth($tuple, 2);
119
+ $weight: nth($tuple, 3);
120
+ $family: nth($tuple, 4);
121
+ font-family: $family;
122
+ font-size: $size;
123
+ line-height: $line;
124
+ font-weight: $weight;
125
+ color: var(--labels-main-label-primary, #121E52);
126
+ }
127
+
128
+ @mixin typography($variant) {
129
+ @if map-has-key($typo-map, $variant) {
130
+ @include apply-typo(map-get($typo-map, $variant));
131
+ }
132
+
133
+ @else {
134
+ /* Fallback to regular text */
135
+ @include apply-typo(map-get($typo-map, 'text.regular'));
136
+ }
137
+ }
138
+
139
+ /* Convenience mixin that switches to mobile variant under mobile breakpoint */
140
+ @mixin responsive-heading($desktopVariant, $mobileVariant) {
141
+ @include typography($desktopVariant);
142
+
143
+ @media (max-width: $bp-mobile-max) {
144
+ @include typography($mobileVariant);
145
+ }
146
+ }
@@ -1,6 +1,8 @@
1
+ import React from 'react';
1
2
  export interface NavigationItem {
2
3
  id: string;
3
4
  label: string;
5
+ icon?: React.ReactNode;
4
6
  path: string;
5
7
  requiredRoles?: string[];
6
8
  requiredPermissions?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/v2/types/navigation.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/v2/types/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizedGrid.d.ts","sourceRoot":"","sources":["../../../src/virtualized/components/VirtualizedGrid.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAG9D,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAEjE,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,4CAc1D,CAAA"}
1
+ {"version":3,"file":"VirtualizedGrid.d.ts","sourceRoot":"","sources":["../../../src/virtualized/components/VirtualizedGrid.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAG9D,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAEjE,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,4CAe1D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizedWindowScroller.d.ts","sourceRoot":"","sources":["../../../src/virtualized/components/VirtualizedWindowScroller.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,OAAO,CAAA;AAExD,OAAO,EAEL,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,mBAAmB,CAAA;AAG1B,MAAM,MAAM,mCAAmC,GAAG;IAChD,gBAAgB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACpD,GAAG,wBAAwB,CAAA;AAE5B,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAC/C,mBAAmB,EACnB,UAAU,CACX,GAAG;IACF,QAAQ,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,SAAS,CAAA;IACnE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,qCAAqC,GAAG,IAAI,CACtD,mBAAmB,EACnB,UAAU,CACX,GAAG;IACF,QAAQ,EAAE,mCAAmC,CAAA;CAC9C,CAAA;AA8BD,eAAO,MAAM,yBAAyB,GACpC,OAAO,8BAA8B,4CAKtC,CAAA"}
1
+ {"version":3,"file":"VirtualizedWindowScroller.d.ts","sourceRoot":"","sources":["../../../src/virtualized/components/VirtualizedWindowScroller.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,OAAO,CAAA;AAExD,OAAO,EAEL,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,mBAAmB,CAAA;AAG1B,MAAM,MAAM,mCAAmC,GAAG;IAChD,gBAAgB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACpD,GAAG,wBAAwB,CAAA;AAE5B,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAC/C,mBAAmB,EACnB,UAAU,CACX,GAAG;IACF,QAAQ,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,SAAS,CAAA;IACnE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,qCAAqC,GAAG,IAAI,CACtD,mBAAmB,EACnB,UAAU,CACX,GAAG;IACF,QAAQ,EAAE,mCAAmC,CAAA;CAC9C,CAAA;AA+BD,eAAO,MAAM,yBAAyB,GACpC,OAAO,8BAA8B,4CAKtC,CAAA"}
@@ -68,14 +68,15 @@ var WrappedVirtualizedWindowScroller = function(param) {
68
68
  }, [
69
69
  windowDimensions
70
70
  ]);
71
- return /*#__PURE__*/ jsx(WindowScroller, {
71
+ return(// @ts-ignore - library types may be incompatible with newer TS
72
+ /*#__PURE__*/ jsx(WindowScroller, {
72
73
  scrollElement: scrollElement,
73
74
  children: function(props) {
74
75
  return children(_object_spread_props(_object_spread({}, props), {
75
76
  windowDimensions: windowDimensions
76
77
  }));
77
78
  }
78
- });
79
+ }));
79
80
  };
80
81
  var VirtualizedWindowScroller = function(props) {
81
82
  return /*#__PURE__*/ jsx(VirtualizedContextProvider, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@licklist/design",
3
- "version": "0.78.41",
3
+ "version": "0.78.44",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+ssh://git@bitbucket.org/bookedit-licklist/licklist_design.git"
@@ -42,7 +42,7 @@
42
42
  ]
43
43
  },
44
44
  "peerDependencies": {
45
- "@licklist/core": "0.36.13",
45
+ "@licklist/core": "0.36.16",
46
46
  "@licklist/eslint-config": "0.5.6",
47
47
  "@licklist/plugins": "0.36.11",
48
48
  "clsx": "2.1.1",
@@ -194,7 +194,7 @@
194
194
  "rollup-plugin-peer-deps-external": "2.2.4",
195
195
  "rollup-plugin-postcss": "^4.0.2",
196
196
  "rollup-plugin-swc3": "0.11.2",
197
- "rollup-plugin-typescript2": "0.31.0",
197
+ "rollup-plugin-typescript2": "^0.37.0",
198
198
  "sass": "^1.93.2",
199
199
  "sass-loader": "10.1.1",
200
200
  "storybook": "9.1.13",
package/rollup.config.js CHANGED
@@ -40,12 +40,18 @@ export default [
40
40
  targets: [
41
41
  { src: './src/assets/*', dest: './dist/assets' },
42
42
  { src: './src/styles/*', dest: './dist/styles' },
43
+ { src: './src/v2/styles', dest: './dist/v2' },
43
44
  { src: './src/root.css', dest: './dist' },
44
45
  ],
45
46
  }),
46
47
 
47
48
  typescript({
48
49
  tsconfig: './tsconfig.build.json',
50
+ tsconfigOverride: {
51
+ compilerOptions: {
52
+ emitDeclarationOnly: false,
53
+ },
54
+ },
49
55
  clean: true,
50
56
  }),
51
57
  ],
package/src/index.ts CHANGED
@@ -29,8 +29,7 @@ export * from './report'
29
29
  export * from './venue-map-sets'
30
30
  export * from './affiliate'
31
31
  export * from './typeahead-helper'
32
- export { ZoneForm } from './zone/form'
33
- export type { ZoneFormProps } from './zone/form'
32
+ export { ZoneForm, type ZoneFormProps } from './zone/form'
34
33
  export * from './resource'
35
34
  export * from './virtualized'
36
35
  export * from './customers'
@@ -108,6 +108,7 @@ export const DateRangeInput = ({
108
108
  overlay={
109
109
  <Popover id={popoverId} className='rounded'>
110
110
  <Popover.Content className='shadow-lg rounded' ref={popoverRef}>
111
+ {/* @ts-ignore - library types may be incompatible with newer TS */}
111
112
  <DateRange
112
113
  onChange={(item) => setState([item.selection])}
113
114
  moveRangeOnFirstSelection={false}
@@ -16,7 +16,7 @@
16
16
  width: 16px;
17
17
  height: 16px;
18
18
  min-width: 16px;
19
- border: 1px solid var(--border-primary, #e2e2e2);
19
+ border: 1px solid var(--border-primary, #e8e9ef);
20
20
  border-radius: 3px;
21
21
  background: var(--surface-primary, #fff);
22
22
  transition: all 0.15s ease;
@@ -37,8 +37,8 @@
37
37
  }
38
38
 
39
39
  &__input:checked + &__box {
40
- background: var(--fill-selected, #14215a);
41
- border-color: var(--fill-selected, #14215a);
40
+ background: var(--fill-selected, #14215A);
41
+ border-color: var(--fill-selected, #14215A);
42
42
 
43
43
  &::after {
44
44
  opacity: 1;
@@ -45,7 +45,7 @@ const IconBigSmile = ({ size = 24, className = '' }: { size?: number; className?
45
45
  export const NPSScore: React.FC<NPSScoreProps> = ({
46
46
  firstName,
47
47
  onSubmit,
48
- onDismiss,
48
+ onDismiss: _onDismiss,
49
49
  onSubmitDismiss,
50
50
  }) => {
51
51
  const [selectedScore, setSelectedScore] = useState<number | null>(null)
@@ -53,7 +53,7 @@ export const NPSScore: React.FC<NPSScoreProps> = ({
53
53
  const [role, setRole] = useState('')
54
54
  const [isSubmitting, setIsSubmitting] = useState(false)
55
55
  const [errors, setErrors] = useState<{ reason?: string; role?: string }>({})
56
- const [showReasonField, setShowReasonField] = useState(false)
56
+ const [_showReasonField, _setShowReasonField] = useState(false)
57
57
  const [isSubmitted, setIsSubmitted] = useState(false)
58
58
 
59
59
  const handleSubmit = async () => {
@@ -6,7 +6,7 @@
6
6
  padding-bottom: 0;
7
7
  padding-left: 0;
8
8
  padding-top: 0;
9
- margin: 20px 0 0 0;
9
+ margin: 20px 0 20px 0;
10
10
  border-bottom: 1px solid var(--border-primary, #E8E9EF);
11
11
 
12
12
  &__container {
@@ -60,5 +60,4 @@ const Tooltip: React.FC<TooltipProps> = ({
60
60
  )
61
61
  }
62
62
 
63
- export { Tooltip, TooltipProvider, TooltipRoot, TooltipTrigger, TooltipContent }
64
- export type { TooltipProps }
63
+ export { Tooltip, TooltipProvider, TooltipRoot, TooltipTrigger, TooltipContent }
@@ -200,6 +200,84 @@
200
200
  }
201
201
  }
202
202
 
203
+ // Reorder row subtitle
204
+ .zone-card__subtitle {
205
+ display: block;
206
+ font-family: var(--font-family-sans, 'Geist', system-ui, sans-serif);
207
+ font-size: 13px;
208
+ font-weight: 400;
209
+ line-height: 16px;
210
+ color: var(--label-secondary);
211
+ margin-top: 2px;
212
+ }
213
+
214
+ // Reorder screen styles
215
+ .reorder-screen {
216
+ color: var(--label-primary);
217
+
218
+ &__header {
219
+ display: flex;
220
+ justify-content: space-between;
221
+ align-items: center;
222
+ align-self: stretch;
223
+ height: 72px;
224
+ padding: 24px 0 8px 8px;
225
+ border-bottom: 1px solid var(--border-primary);
226
+ }
227
+
228
+ &__content {
229
+ display: flex;
230
+ flex-direction: column;
231
+ align-items: center;
232
+ align-self: stretch;
233
+ padding-top: 24px;
234
+ padding-bottom: 48px;
235
+ }
236
+
237
+ &__body {
238
+ display: flex;
239
+ flex-direction: column;
240
+ gap: 24px;
241
+ width: 100%;
242
+ max-width: 672px;
243
+ }
244
+
245
+ &__intro {
246
+ display: flex;
247
+ flex-direction: column;
248
+ gap: 4px;
249
+
250
+ p {
251
+ color: var(--label-secondary);
252
+ }
253
+ }
254
+
255
+ &__list {
256
+ display: flex;
257
+ flex-direction: column;
258
+ gap: 12px;
259
+ }
260
+
261
+ &__actions {
262
+ display: flex;
263
+ gap: 12px;
264
+ padding-top: 16px;
265
+ }
266
+ }
267
+
268
+ @media (max-width: 640px) {
269
+ .reorder-screen {
270
+ &__header {
271
+ height: auto;
272
+ padding: 16px 0 8px;
273
+ }
274
+
275
+ &__content {
276
+ padding-top: 32px;
277
+ }
278
+ }
279
+ }
280
+
203
281
  @media (max-width: 768px) {
204
282
  .zone-card {
205
283
  &__header {
@@ -88,6 +88,7 @@ export {
88
88
  EllipsisIcon,
89
89
  CircleIcon,
90
90
  GripVerticalIcon,
91
+ ReorderIcon,
91
92
  PlusIcon,
92
93
  DeleteIcon,
93
94
  ClockIcon,
@@ -1,2 +1,2 @@
1
1
  export { Blog } from './Blog';
2
- export type { BlogProps } from './Blog';
2
+ export type { BlogProps, BlogPost } from './Blog';
@@ -23,7 +23,7 @@ export const Chart: React.FC<ChartProps> = ({
23
23
  isRevenue = false,
24
24
  className = '',
25
25
  period = 'today',
26
- bookingType = 'bookings_for',
26
+ bookingType: _bookingType = 'bookings_for',
27
27
  isFullWidth: propIsFullWidth = false,
28
28
  isLoading = false,
29
29
  isRefreshing = false
@@ -55,11 +55,12 @@ export const Chart: React.FC<ChartProps> = ({
55
55
 
56
56
  return () => clearTimeout(timer);
57
57
  }
58
+ return undefined
58
59
  }, [data, period]);
59
60
  const [isMobile, setIsMobile] = React.useState(false);
60
61
  const [isTablet, setIsTablet] = React.useState(false);
61
62
  const [detectedFullWidth, setDetectedFullWidth] = React.useState(false);
62
- const [dimensions, setDimensions] = React.useState({ width: 0, height: 0 });
63
+ const [_dimensions, setDimensions] = React.useState({ width: 0, height: 0 });
63
64
  const chartRef = React.useRef<HTMLDivElement>(null);
64
65
 
65
66
  const isFullWidth = propIsFullWidth || detectedFullWidth;
@@ -108,7 +109,7 @@ export const Chart: React.FC<ChartProps> = ({
108
109
  }, [period, forceRecalculation]);
109
110
 
110
111
  React.useEffect(() => {
111
- if (propIsFullWidth !== undefined) return;
112
+ if (propIsFullWidth !== undefined) return undefined;
112
113
 
113
114
  const checkChartWidth = () => {
114
115
  if (chartRef.current) {
@@ -548,35 +549,39 @@ export const Chart: React.FC<ChartProps> = ({
548
549
  </linearGradient>
549
550
  </defs>
550
551
  <CartesianGrid strokeDasharray="3 3" stroke="#E8E9EF" />
551
- <XAxis
552
- dataKey="time"
553
- type="category"
554
- axisLine={false}
555
- tickLine={false}
556
- tick={{
557
- fontSize: isMobile ? 9 : (isTablet ? 10 : 11),
558
- fill: '#626A90'
559
- }}
560
- tickMargin={isMobile ? 5 : 10}
561
- interval={xAxisInterval}
552
+ <XAxis
553
+ {...{
554
+ dataKey: "time",
555
+ type: "category",
556
+ axisLine: false,
557
+ tickLine: false,
558
+ tick: {
559
+ fontSize: isMobile ? 9 : (isTablet ? 10 : 11),
560
+ fill: '#626A90'
561
+ },
562
+ tickMargin: isMobile ? 5 : 10,
563
+ interval: xAxisInterval,
564
+ } as any}
562
565
  />
563
- <YAxis
564
- domain={[yAxisMin, yAxisMax]}
565
- ticks={ticks}
566
- axisLine={false}
567
- tickLine={false}
568
- tick={{
569
- fontSize: isMobile ? 9 : (isTablet ? 10 : 11),
570
- fill: '#626A90'
571
- }}
572
- tickFormatter={(value) => {
573
- if (isRevenue) {
574
- return isMobile ? `£${Math.round(value)}` : `£${value}`;
575
- }
576
- return value.toString();
577
- }}
578
- tickMargin={isMobile ? 3 : 5}
579
- width={isMobile ? 30 : (isTablet ? 35 : 40)}
566
+ <YAxis
567
+ {...{
568
+ domain: [yAxisMin, yAxisMax],
569
+ ticks: ticks,
570
+ axisLine: false,
571
+ tickLine: false,
572
+ tick: {
573
+ fontSize: isMobile ? 9 : (isTablet ? 10 : 11),
574
+ fill: '#626A90'
575
+ },
576
+ tickFormatter: (value: any) => {
577
+ if (isRevenue) {
578
+ return isMobile ? `£${Math.round(value)}` : `£${value}`;
579
+ }
580
+ return value.toString();
581
+ },
582
+ tickMargin: isMobile ? 3 : 5,
583
+ width: isMobile ? 30 : (isTablet ? 35 : 40),
584
+ } as any}
580
585
  />
581
586
  <Tooltip content={CustomTooltip} />
582
587
  {currentTimeRef && (
@@ -225,7 +225,7 @@ export const Dashboard: React.FC<DashboardProps> = ({
225
225
  value={metrics.peopleInVenue.formatted_value || '0'}
226
226
  />
227
227
  <VenueCard
228
- icon={<VenueIcon />}
228
+ icon={<VenueIcon /> as any}
229
229
  title="Open until"
230
230
  value={metrics.workHours?.message?.replace('Open until ', '') || ''}
231
231
  shadowColor='#121E52'
@@ -211,6 +211,16 @@ export const GripVerticalIcon = ({ width = 16, height = 16 }: { width?: number;
211
211
  </svg>
212
212
  )
213
213
 
214
+ export const ReorderIcon = ({ width = 16, height = 16 }: { width?: number; height?: number } = {}) => (
215
+ <svg width={width} height={height} viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
216
+ <rect x="7" y="11" width="18" height="2" rx="1" fill="currentColor"/>
217
+ <rect x="7" y="15" width="18" height="2" rx="1" fill="currentColor"/>
218
+ <rect x="7" y="19" width="18" height="2" rx="1" fill="currentColor"/>
219
+ <path d="M19.9325 8H12.0675C11.6436 8 11.412 7.50557 11.6834 7.17991L15.6159 2.46093C15.8158 2.22106 16.1842 2.22106 16.3841 2.46093L20.3166 7.17991C20.588 7.50557 20.3564 8 19.9325 8Z" fill="currentColor" fillOpacity="0.5"/>
220
+ <path d="M12.0675 24L19.9325 24C20.3564 24 20.588 24.4944 20.3166 24.8201L16.3841 29.5391C16.1842 29.7789 15.8158 29.7789 15.6159 29.5391L11.6834 24.8201C11.412 24.4944 11.6436 24 12.0675 24Z" fill="currentColor" fillOpacity="0.5"/>
221
+ </svg>
222
+ )
223
+
214
224
  export const PlusIcon = ({ width = 16, height = 16 }: { width?: number; height?: number } = {}) => (
215
225
  <svg width={width} height={height} viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
216
226
  <path d="M17 14.5H24.5V17.5H17V25H14V17.5H6.5V14.5H14V7H17V14.5Z" fill="currentColor"/>
@@ -157,7 +157,7 @@ export const DashboardLayout: React.FC<DashboardLayoutProps> = ({
157
157
  providerType={providerType}
158
158
  activePath={activePath}
159
159
  onNavigation={onNavigation}
160
- showBackToAdmin={hasAdminAccess && destination !== 'admin'}
160
+ showBackToAdmin={hasAdminAccess}
161
161
  onBackToAdmin={() => onNavigation?.('/admin')}
162
162
  navItems={navItems}
163
163
  />