tide-design-system 2.0.0 → 2.0.2

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 (123) hide show
  1. package/dist/assets/style.css +1 -0
  2. package/dist/css/animation.css +1 -1
  3. package/dist/css/dynamic-buttons.css +22 -22
  4. package/dist/css/dynamic-utilities.css +21 -22
  5. package/dist/css/main.css +0 -5
  6. package/dist/css/page-layout.css +30 -46
  7. package/dist/css/realm/aero.css +33 -33
  8. package/dist/css/realm/atv.css +34 -34
  9. package/dist/css/realm/boatmart.css +33 -33
  10. package/dist/css/realm/cycle.css +33 -33
  11. package/dist/css/realm/equip.css +33 -33
  12. package/dist/css/realm/pwc.css +33 -33
  13. package/dist/css/realm/rv.css +33 -33
  14. package/dist/css/realm/snow.css +32 -32
  15. package/dist/css/realm/truck.css +33 -33
  16. package/dist/css/reset.css +9 -9
  17. package/dist/css/sb-rv.css +1 -0
  18. package/dist/css/storybook.css +2 -1
  19. package/dist/css/utilities.css +105 -102
  20. package/dist/css/variables.css +96 -92
  21. package/dist/tide-design-system.js +5 -0
  22. package/dist/tide-design-system2.js +5 -0
  23. package/dist/tide-design-system3.js +5 -0
  24. package/dist/tide-design-system4.js +5 -0
  25. package/dist/tide-design-system5.js +5 -0
  26. package/dist/tide-design-system6.js +5 -0
  27. package/dist/tide-design-system7.js +5 -0
  28. package/dist/tide-design-system8.js +5 -0
  29. package/dist/types/FacetRange.ts +84 -0
  30. package/dist/types/Field.ts +0 -1
  31. package/dist/types/Form.ts +57 -0
  32. package/dist/types/Realm.ts +1 -0
  33. package/dist/types/Select.ts +6 -0
  34. package/dist/types/Storybook.ts +206 -1
  35. package/dist/types/Styles.ts +34 -2
  36. package/dist/types/Validation.ts +7 -1
  37. package/dist/utilities/format.ts +75 -39
  38. package/dist/utilities/storybook.ts +66 -8
  39. package/dist/utilities/validation.ts +139 -34
  40. package/package.json +3 -2
  41. package/dist/IconAccountBalance-91cf067b.js +0 -10
  42. package/dist/IconAdd-95c51c0e.js +0 -10
  43. package/dist/IconAi-08172540.js +0 -22
  44. package/dist/IconAlignSpace-9ab2bdf2.js +0 -10
  45. package/dist/IconApplePay-1ee6317b.js +0 -10
  46. package/dist/IconArrowBack-a2226a94.js +0 -10
  47. package/dist/IconArrowForward-e1ca9957.js +0 -10
  48. package/dist/IconArrowRight-53382084.js +0 -10
  49. package/dist/IconAssignment-332c2b2b.js +0 -10
  50. package/dist/IconAwardStar-1ca35385.js +0 -10
  51. package/dist/IconBookmark-49b42628.js +0 -10
  52. package/dist/IconCalendarMonth-22c938d7.js +0 -10
  53. package/dist/IconCall-989a47fc.js +0 -10
  54. package/dist/IconCheck-a3467b47.js +0 -10
  55. package/dist/IconChevronLeft-c1d90bb7.js +0 -10
  56. package/dist/IconChevronRight-ad47891f.js +0 -10
  57. package/dist/IconClear-7c8fad4e.js +0 -10
  58. package/dist/IconClose-4b6c5aed.js +0 -10
  59. package/dist/IconCycle-99d40f2d.js +0 -10
  60. package/dist/IconDelete-446eff93.js +0 -10
  61. package/dist/IconDiamond-765a7d8d.js +0 -10
  62. package/dist/IconEdit-ce05f3b5.js +0 -10
  63. package/dist/IconError-7983707a.js +0 -10
  64. package/dist/IconExpandContent-8b6e2125.js +0 -10
  65. package/dist/IconExpandLess-9e23f1e9.js +0 -10
  66. package/dist/IconExpandMore-ded098a7.js +0 -10
  67. package/dist/IconFacebook-3cab65a8.js +0 -10
  68. package/dist/IconFavorite-5fe831f4.js +0 -10
  69. package/dist/IconFavoriteFilled-58fa0bf7.js +0 -10
  70. package/dist/IconFormatBold-889f6b8b.js +0 -10
  71. package/dist/IconFormatItalic-103eba00.js +0 -10
  72. package/dist/IconFormatListBulleted-4c824025.js +0 -10
  73. package/dist/IconForum-abc2fe82.js +0 -10
  74. package/dist/IconGoogle-281b6d80.js +0 -27
  75. package/dist/IconGooglePay-cc83c5c8.js +0 -10
  76. package/dist/IconGrid-ef763745.js +0 -10
  77. package/dist/IconHelp-2ad33f76.js +0 -10
  78. package/dist/IconInfo-5878df77.js +0 -10
  79. package/dist/IconInsertText-0c62badf.js +0 -10
  80. package/dist/IconInstagram-69e21cfb.js +0 -10
  81. package/dist/IconIosShare-be5f117c.js +0 -10
  82. package/dist/IconLayout-c1ffbcd3.js +0 -10
  83. package/dist/IconLinkedIn-807ef6f5.js +0 -10
  84. package/dist/IconLocalShipping-2c6d71e0.js +0 -10
  85. package/dist/IconLock-9178e816.js +0 -10
  86. package/dist/IconMail-0123a7c6.js +0 -10
  87. package/dist/IconMenu-33ed2d99.js +0 -10
  88. package/dist/IconMoreHoriz-c281099f.js +0 -10
  89. package/dist/IconNotifications-89f80e0f.js +0 -10
  90. package/dist/IconOpenInNew-87ad0454.js +0 -10
  91. package/dist/IconPalette-7ee5b40c.js +0 -10
  92. package/dist/IconPaypal-e311eadd.js +0 -10
  93. package/dist/IconPerson-932fbcbc.js +0 -10
  94. package/dist/IconPhotoCamera-fdbd5767.js +0 -10
  95. package/dist/IconPinterest-2d19c2eb.js +0 -10
  96. package/dist/IconPlayArrow-9837a5c0.js +0 -10
  97. package/dist/IconRemove-29ef8f82.js +0 -10
  98. package/dist/IconRoundedCorners-8ad194fc.js +0 -10
  99. package/dist/IconSearch-5ff23d26.js +0 -10
  100. package/dist/IconSell-0e0ecd20.js +0 -10
  101. package/dist/IconShare-47084765.js +0 -10
  102. package/dist/IconShoppingCart-9d6495b3.js +0 -10
  103. package/dist/IconSms-5ba18382.js +0 -10
  104. package/dist/IconStar-ef69284b.js +0 -10
  105. package/dist/IconSwapVert-05e14e3d.js +0 -10
  106. package/dist/IconThreeDRotation-2433b2e8.js +0 -25
  107. package/dist/IconTune-3c6452f0.js +0 -10
  108. package/dist/IconTwitter-a634cef4.js +0 -10
  109. package/dist/IconVideocam-5712435e.js +0 -10
  110. package/dist/IconViewInAr-d38a23d5.js +0 -10
  111. package/dist/IconVisibility-8cdf7151.js +0 -10
  112. package/dist/IconWarning-b9e61180.js +0 -10
  113. package/dist/IconYoutube-92447826.js +0 -10
  114. package/dist/css/dynamic-inputs.css +0 -43
  115. package/dist/index-c5bc4216.js +0 -1910
  116. package/dist/style.css +0 -1
  117. package/dist/tide2-design-system.js +0 -36
  118. package/dist/types/StorybookStyles.ts +0 -209
  119. package/dist/types/Vehicle.ts +0 -139
  120. package/dist/types/VehicleDetail.ts +0 -44
  121. package/dist/types/index.d.ts +0 -7
  122. package/dist/utilities/forms.ts +0 -47
  123. package/dist/utilities/media.ts +0 -77
@@ -1,114 +1,118 @@
1
1
  /*.CSS Variables */
2
2
  :root {
3
3
  /* Font Size */
4
- --font-12: 0.75rem; /* 12px */
5
- --font-14: 0.875rem; /* 14px */
6
- --font-16: 1rem; /* 16px */
7
- --font-20: 1.25rem; /* 20px */
8
- --font-24: 1.5rem; /* 24px */
9
- --font-28: 1.75rem; /* 28px */
10
- --font-32: 2rem; /* 32px */
4
+ --tide-font-10: 0.625rem; /* 10px */
5
+ --tide-font-12: 0.75rem; /* 12px */
6
+ --tide-font-14: 0.875rem; /* 14px */
7
+ --tide-font-16: 1rem; /* 16px */
8
+ --tide-font-20: 1.25rem; /* 20px */
9
+ --tide-font-24: 1.5rem; /* 24px */
10
+ --tide-font-28: 1.75rem; /* 28px */
11
+ --tide-font-32: 2rem; /* 32px */
11
12
 
12
13
  /* Font Weight */
13
- --font-400: 400;
14
- --font-500: 500;
15
- --font-600: 600;
16
- --font-700: 700;
14
+ --tide-font-400: 400;
15
+ --tide-font-500: 500;
16
+ --tide-font-600: 600;
17
+ --tide-font-700: 700;
17
18
 
18
19
  /* Animation */
19
- --animate: 300ms ease-in-out;
20
+ --tide-animate: 300ms ease-in-out;
20
21
 
21
22
  /* Spacing */
22
- --spacing-0: 0rem;
23
- --spacing-1\/4: 0.25rem;
24
- --spacing-1\/2: 0.5rem;
25
- --spacing-1: 1rem;
26
- --spacing-2: 2rem;
27
- --spacing-4: 4rem;
23
+ --tide-spacing-0: 0rem;
24
+ --tide-spacing-1\/4: 0.25rem;
25
+ --tide-spacing-1\/2: 0.5rem;
26
+ --tide-spacing-1: 1rem;
27
+ --tide-spacing-2: 2rem;
28
+ --tide-spacing-4: 4rem;
28
29
 
29
30
  /* Border */
30
- --border-width-1: 1px;
31
- --border-width-2: 2px;
31
+ --tide-border-width-1: 1px;
32
+ --tide-border-width-2: 2px;
32
33
 
33
- --border-1: var(--border-width-1) solid var(--black);
34
- --border-2: var(--border-width-2) solid var(--black);
34
+ --tide-border-1: var(--tide-border-width-1) solid var(--tide-black);
35
+ --tide-border-2: var(--tide-border-width-2) solid var(--tide-black);
35
36
 
36
37
  /* Border Radius */
37
- --radius-1\/4: 4px;
38
- --radius-1\/2: 8px;
39
- --radius-1: 16px;
40
- --radius-full: 99999px;
38
+ --tide-radius-1\/4: 4px;
39
+ --tide-radius-1\/2: 8px;
40
+ --tide-radius-1: 16px;
41
+ --tide-radius-full: 99999px;
41
42
 
42
- /* Global tonal palette */
43
- --blue-100: #D1E0EB;
44
- --blue-200: #A4C1D7;
45
- --blue-300: #76A3C4;
46
- --blue-400: #4984B0;
47
-
48
- --gray-100: #FFFFFF;
49
- --gray-200: #F5F5F5;
50
- --gray-300: #E4E4E4;
51
- --gray-400: #C9CACB;
52
- --gray-500: #AEAFB2;
53
- --gray-600: #939598;
54
- --gray-700: #6E7072;
55
- --gray-800: #494A4C;
56
- --gray-900: #252526;
57
- --gray-1000: #000000;
58
-
59
- --green-100: #E6EFCF;
60
- --green-200: #CDE09E;
61
- --green-300: #B4D06E;
62
- --green-400: #9BC13D;
63
-
64
- --red-100: #EFCFCF;
65
- --red-200: #E09E9E;
66
- --red-300: #D06E6E;
67
- --red-400: #C13D3D;
68
- --red-500: #912E2E;
69
-
70
- --yellow-100: #FEF2CC;
71
- --yellow-200: #FCE499;
72
- --yellow-300: #FBD766;
73
- --yellow-400: #FACA33;
74
-
75
- --black: var(--gray-900);
76
- --white: var(--gray-100);
43
+ --tide-black: var(--tide-gray-900);
44
+ --tide-white: var(--tide-gray-100);
45
+
46
+ /* Opacity */
47
+ --tide-disabled: 0.333;
77
48
 
78
49
  /* Shadow */
79
- --shadow-bottom: 0px 2px 8px 2px rgba(0, 0, 0, 0.07);
80
- --shadow-top: 0px -2px 8px 2px rgba(0, 0, 0, 0.07);
50
+ --tide-shadow-bottom: 0px 2px 8px 2px rgba(0, 0, 0, 0.07);
51
+ --tide-shadow-top: 0px -2px 8px 2px rgba(0, 0, 0, 0.07);
81
52
 
82
53
  /* Transparency */
83
- --transparent-100: rgba(255, 255, 255, 0.9);
84
- --transparent-200: rgba(255, 255, 255, 0.75);
85
- --transparent-300: rgba(0, 0, 0, 0.1);
86
- --transparent-400: rgba(0, 0, 0, 0.5);
54
+ --tide-transparent-100: rgba(255, 255, 255, 0.9);
55
+ --tide-transparent-200: rgba(255, 255, 255, 0.75);
56
+ --tide-transparent-300: rgba(0, 0, 0, 0.1);
57
+ --tide-transparent-400: rgba(0, 0, 0, 0.5);
58
+
59
+ /* Global tonal palette */
60
+ --tide-blue-100: #D1E0EB;
61
+ --tide-blue-200: #A4C1D7;
62
+ --tide-blue-300: #76A3C4;
63
+ --tide-blue-400: #4984B0;
64
+
65
+ --tide-gray-100: #FFFFFF;
66
+ --tide-gray-200: #F5F5F5;
67
+ --tide-gray-300: #E4E4E4;
68
+ --tide-gray-400: #C9CACB;
69
+ --tide-gray-500: #AEAFB2;
70
+ --tide-gray-600: #939598;
71
+ --tide-gray-700: #6E7072;
72
+ --tide-gray-800: #494A4C;
73
+ --tide-gray-900: #252526;
74
+ --tide-gray-1000: #000000;
75
+
76
+ --tide-green-100: #E6EFCF;
77
+ --tide-green-200: #CDE09E;
78
+ --tide-green-300: #B4D06E;
79
+ --tide-green-400: #9BC13D;
80
+
81
+ --tide-red-100: #EFCFCF;
82
+ --tide-red-200: #E09E9E;
83
+ --tide-red-300: #D06E6E;
84
+ --tide-red-400: #C13D3D;
85
+ --tide-red-500: #912E2E;
86
+
87
+ --tide-yellow-100: #FEF2CC;
88
+ --tide-yellow-200: #FCE499;
89
+ --tide-yellow-300: #FBD766;
90
+ --tide-yellow-400: #FACA33;
87
91
 
88
92
  /* Global color roles */
89
- --error-primary: var(--red-400);
90
- --error-primary-border: var(--red-300);
91
- --error-surface: var(--red-100);
92
-
93
- --error-border: var(--red-200);
94
- --error-border-low: var(--red-200);
95
- --error-border-high: var(--red-200);
96
-
97
- --error-on-surface: var(--red-200);
98
- --error-on-surface-variant: var(--red-200);
99
-
100
- --info-primary: var(--blue-400);
101
- --info-primary-border: var(--blue-300);
102
- --info-surface: var(--blue-100);
103
- --info-border: var(--blue-200);
104
-
105
- --success-primary: var(--green-400);
106
- --success-primary-border: var(--green-300);
107
- --success-surface: var(--green-100);
108
- --success-border: var(--green-200);
109
-
110
- --warning-primary: var(--yellow-400);
111
- --warning-primary-border: var(--yellow-300);
112
- --warning-surface: var(--yellow-100);
113
- --warning-border: var(--yellow-200);
93
+ --tide-error-primary: var(--tide-red-400);
94
+ --tide-error-primary-border: var(--tide-red-300);
95
+ --tide-error-surface: var(--tide-red-100);
96
+
97
+ --tide-error-border: var(--tide-red-400);
98
+ --tide-error-border-low: var(--tide-red-200);
99
+ --tide-error-border-high: var(--tide-red-500);
100
+
101
+ --tide-error-on-surface: var(--tide-red-400);
102
+ --tide-error-on-surface-variant: var(--tide-red-500 );
103
+
104
+ --tide-info-primary: var(--tide-blue-400);
105
+ --tide-info-primary-border: var(--tide-blue-300);
106
+ --tide-info-surface: var(--tide-blue-100);
107
+ --tide-info-border: var(--tide-blue-200);
108
+
109
+ --tide-success-primary: var(--tide-green-400);
110
+ --tide-success-primary-border: var(--tide-green-300);
111
+ --tide-success-surface: var(--tide-green-100);
112
+ --tide-success-border: var(--tide-green-200);
113
+
114
+ --tide-warning-primary: var(--tide-yellow-400);
115
+ --tide-warning-primary-border: var(--tide-yellow-300);
116
+ --tide-warning-surface: var(--tide-yellow-100);
117
+ --tide-warning-border: var(--tide-yellow-200);
114
118
  }
@@ -0,0 +1,5 @@
1
+ const a = "";
2
+ export {
3
+ a as default
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmpzIiwic291cmNlcyI6W10sInNvdXJjZXNDb250ZW50IjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjsifQ==
@@ -0,0 +1,5 @@
1
+ const t = "";
2
+ export {
3
+ t as default
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtMi5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7In0=
@@ -0,0 +1,5 @@
1
+ const c = "";
2
+ export {
3
+ c as default
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtMy5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7In0=
@@ -0,0 +1,5 @@
1
+ const e = "";
2
+ export {
3
+ e as default
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtNC5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7In0=
@@ -0,0 +1,5 @@
1
+ const t = "";
2
+ export {
3
+ t as default
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtNS5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7In0=
@@ -0,0 +1,5 @@
1
+ const t = "";
2
+ export {
3
+ t as default
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtNi5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7In0=
@@ -0,0 +1,5 @@
1
+ const o = "";
2
+ export {
3
+ o as default
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtNy5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7In0=
@@ -0,0 +1,5 @@
1
+ const t = "";
2
+ export {
3
+ t as default
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtOC5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7In0=
@@ -0,0 +1,84 @@
1
+ import type { SelectOption } from '@/types/Select';
2
+
3
+ export const FACET_COMPONENT_ID_RANGE = {
4
+ GROSS_WEIGHT: 'grossWeight',
5
+ LENGTH: 'vehicleLength',
6
+ MILEAGE: 'mileage',
7
+ PRICE: 'price',
8
+ SLEEPING_CAPACITY: 'sleepingCapacity',
9
+ SLIDEOUTS: 'slideouts',
10
+ YEAR: 'vehicleYear',
11
+ } as const;
12
+
13
+ export type FacetComponentIdRange = (typeof FACET_COMPONENT_ID_RANGE)[keyof typeof FACET_COMPONENT_ID_RANGE];
14
+
15
+ export type RangeData = {
16
+ min: number | null;
17
+ max: number | null;
18
+ };
19
+
20
+ const GROSS_WEIGHT_MIN = 1000;
21
+ const GROSS_WEIGHT_MAX = 12000;
22
+ export const GROSS_WEIGHT_OPTIONS: SelectOption[] = [
23
+ {
24
+ label: 'Any',
25
+ value: null,
26
+ },
27
+ ...Array.from({ length: Math.floor((GROSS_WEIGHT_MAX - GROSS_WEIGHT_MIN) / 1000) + 1 }, (_, index) => ({
28
+ label: (GROSS_WEIGHT_MAX - index * 1000).toString(),
29
+ value: (GROSS_WEIGHT_MAX - index * 1000).toString(),
30
+ })),
31
+ ];
32
+
33
+ const SLEEP_CAP_MIN = 1;
34
+ const SLEEP_CAP_MAX = 10;
35
+ export const SLEEPING_CAPACITY_OPTIONS: SelectOption[] = [
36
+ {
37
+ label: 'Any',
38
+ value: null,
39
+ },
40
+ ...Array.from({ length: SLEEP_CAP_MAX - SLEEP_CAP_MIN + 1 }, (_, index) => ({
41
+ label: (SLEEP_CAP_MAX - index).toString(),
42
+ value: (SLEEP_CAP_MAX - index).toString(),
43
+ })),
44
+ ];
45
+
46
+ const SLIDEOUT_MIN = 0;
47
+ const SLIDEOUT_MAX = 5;
48
+ export const SLIDEOUT_OPTIONS: SelectOption[] = [
49
+ {
50
+ label: 'Any',
51
+ value: null,
52
+ },
53
+ ...Array.from({ length: SLIDEOUT_MAX - SLIDEOUT_MIN + 1 }, (_, index) => ({
54
+ label: (SLIDEOUT_MAX - index).toString(),
55
+ value: (SLIDEOUT_MAX - index).toString(),
56
+ })),
57
+ ];
58
+
59
+ const LENGTH_MIN = 10;
60
+ const LENGTH_MAX = 50;
61
+ export const LENGTH_OPTIONS: SelectOption[] = [
62
+ {
63
+ label: 'Any',
64
+ value: null,
65
+ },
66
+ ...Array.from({ length: LENGTH_MAX - LENGTH_MIN + 1 }, (_, index) => ({
67
+ label: (LENGTH_MAX - index).toString(),
68
+ value: (LENGTH_MAX - index).toString(),
69
+ })),
70
+ ];
71
+
72
+ const YEAR_MIN = 1900;
73
+ const today = new Date();
74
+ const YEAR_MAX = today.getFullYear() + 2;
75
+ export const YEAR_OPTIONS: SelectOption[] = [
76
+ {
77
+ label: 'Any',
78
+ value: null,
79
+ },
80
+ ...Array.from({ length: YEAR_MAX - YEAR_MIN + 1 }, (_, index) => ({
81
+ label: (YEAR_MAX - index).toString(),
82
+ value: (YEAR_MAX - index).toString(),
83
+ })),
84
+ ];
@@ -26,7 +26,6 @@ interface GenericInput {
26
26
 
27
27
  interface SelectField extends GenericInput, StringValue {
28
28
  options: SelectOption[];
29
- placeholder?: string;
30
29
  }
31
30
 
32
31
  interface StringValue {
@@ -1 +1,58 @@
1
+ import type { SelectOptGroup, SelectOption } from '@/types/Select';
2
+ import type { TextInputType } from '@/types/TextInput';
3
+ import type { ValidationError, Validator } from '@/types/Validation';
4
+
5
+ interface GenericInput {
6
+ error?: ValidationError;
7
+ transformValue?: FormValueTransformer;
8
+ name: string;
9
+ validators?: Validator[];
10
+ required?: boolean;
11
+ label?: string;
12
+ disabled?: boolean;
13
+ }
14
+
15
+ interface StringValue {
16
+ value?: string;
17
+ }
18
+
19
+ interface BooleanValue {
20
+ value?: boolean;
21
+ }
22
+
23
+ export type SelectInput = GenericInput &
24
+ StringValue & {
25
+ options?: SelectOption[] | readonly SelectOption[];
26
+ placeholder?: string;
27
+ optgroups?: SelectOptGroup[];
28
+ };
29
+
30
+ export type TextInput = GenericInput &
31
+ StringValue & {
32
+ autocomplete?: boolean;
33
+ maxlength?: number;
34
+ minlength?: number;
35
+ type?: TextInputType;
36
+ placeholder?: string;
37
+ value?: string;
38
+ };
39
+
40
+ export type TextareaInput = GenericInput &
41
+ StringValue & {
42
+ maxlength?: number;
43
+ minlength?: number;
44
+ placeholder?: string;
45
+ value?: string;
46
+ };
47
+
48
+ export type CheckboxInput = GenericInput &
49
+ BooleanValue & {
50
+ checked?: boolean;
51
+ indeterminate?: boolean;
52
+ };
53
+
54
+ export type StringInput = SelectInput | TextInput | TextareaInput;
55
+ export type BooleanInput = CheckboxInput;
56
+ export type Input = SelectInput | TextInput | TextareaInput | CheckboxInput;
57
+
1
58
  export type FormValueTransformer = (value: string) => string;
@@ -1,6 +1,7 @@
1
1
  export const REALM = {
2
2
  AERO: 'aero',
3
3
  ATV: 'atv',
4
+ BOATMART: 'boatmart',
4
5
  CYCLE: 'cycle',
5
6
  EQUIP: 'equip',
6
7
  PWC: 'pwc',
@@ -2,3 +2,9 @@ export type SelectOption = {
2
2
  label: string | number;
3
3
  value: any;
4
4
  };
5
+
6
+ export type SelectOptGroup = {
7
+ label: string;
8
+ options?: SelectOption[];
9
+ value?: any;
10
+ };
@@ -1,7 +1,7 @@
1
1
  /* eslint vue/sort-keys: 0 */
2
2
  // ^ Storybook controls are based on iterating over object properties instead of array slots (bad form), so these can't be ordered alphabetically.
3
3
 
4
- // import { prependNoneAsEmpty } from '@/utilities/storybook';
4
+ import { CSS } from '@/types/Styles';
5
5
 
6
6
  export const NoneAsEmpty = { None: '' };
7
7
  export const NoneAsUndefined = { None: undefined };
@@ -12,3 +12,208 @@ export const BOOLEAN_UNREQUIRED = {
12
12
  True: true,
13
13
  False: false,
14
14
  };
15
+
16
+ export const BADGE_TRUSTED = {
17
+ YEARS_5: '5',
18
+ YEARS_10: '10',
19
+ YEARS_15: '15',
20
+ };
21
+
22
+ export const BORDER_RADIUS = {
23
+ '0.25 REM': CSS.BORDER.RADIUS.QUARTER,
24
+ '0.5 REM': CSS.BORDER.RADIUS.HALF,
25
+ '1 REM': CSS.BORDER.RADIUS.ONE,
26
+ 'Full': CSS.BORDER.RADIUS.FULL,
27
+ };
28
+
29
+ export const BORDER_SIDE = {
30
+ Full: 'tide-border',
31
+ Top: 'tide-border-top',
32
+ Right: 'tide-border-right',
33
+ Bottom: 'tide-border-bottom',
34
+ Left: 'tide-border-left',
35
+ };
36
+
37
+ export const BORDER_WIDTH = {
38
+ '1px': '1',
39
+ '2px': '2',
40
+ };
41
+
42
+ export const DISPLAY = {
43
+ 'Block': CSS.DISPLAY.BLOCK,
44
+ 'Contents': CSS.DISPLAY.CONTENTS,
45
+ 'Flex': CSS.DISPLAY.FLEX,
46
+ 'Grid': CSS.DISPLAY.GRID,
47
+ 'Inline Block': CSS.DISPLAY.INLINE_BLOCK,
48
+ 'Inline Flex': CSS.DISPLAY.INLINE_FLEX,
49
+ 'Inline': CSS.DISPLAY.INLINE,
50
+ 'Hidden': CSS.DISPLAY.NONE,
51
+ };
52
+
53
+ export const FLEX_AXIS1 = {
54
+ Around: CSS.AXIS1.AROUND,
55
+ Between: CSS.AXIS1.BETWEEN,
56
+ Center: CSS.AXIS1.CENTER,
57
+ End: CSS.AXIS1.END,
58
+ Start: CSS.AXIS1.START,
59
+ };
60
+
61
+ export const FLEX_AXIS2 = {
62
+ Around: CSS.AXIS2.AROUND,
63
+ Center: CSS.AXIS2.CENTER,
64
+ End: CSS.AXIS2.END,
65
+ Start: CSS.AXIS2.START,
66
+ };
67
+
68
+ export const FLEX_DIRECTION = {
69
+ Column: CSS.FLEX.DIRECTION.COLUMN,
70
+ Row: CSS.FLEX.DIRECTION.ROW,
71
+ };
72
+
73
+ export const FONT_SIZE = {
74
+ '12px': CSS.FONT.SIZE.TWELVE,
75
+ '14px': CSS.FONT.SIZE.FOURTEEN,
76
+ '16px': CSS.FONT.SIZE.SIXTEEN,
77
+ '20px': CSS.FONT.SIZE.TWENTY,
78
+ '24px': CSS.FONT.SIZE.TWENTY_FOUR,
79
+ '32px': CSS.FONT.SIZE.THIRTY_TWO,
80
+ };
81
+
82
+ export const FONT_WEIGHT = {
83
+ '400 Regular': CSS.FONT.WEIGHT.FOUR_HUNDRED,
84
+ '500 Medium': CSS.FONT.WEIGHT.FIVE_HUNDRED,
85
+ '600 Semibold': CSS.FONT.WEIGHT.SIX_HUNDRED,
86
+ '700 Bold': CSS.FONT.WEIGHT.SEVEN_HUNDRED,
87
+ };
88
+
89
+ export const GAP = {
90
+ '4 REM': CSS.GAP.FOUR,
91
+ '2 REM': CSS.GAP.TWO,
92
+ '1 REM': CSS.GAP.ONE,
93
+ '0.5 REM': CSS.GAP.HALF,
94
+ '0.25 REM': CSS.GAP.QUARTER,
95
+ };
96
+
97
+ export const LINK_SIZE = {
98
+ TWELVE: CSS.FONT.SIZE.TWELVE,
99
+ FOURTEEN: CSS.FONT.SIZE.FOURTEEN,
100
+ SIXTEEN: CSS.FONT.SIZE.SIXTEEN,
101
+ };
102
+
103
+ export const MARGIN = {
104
+ 'Full 4 REM': CSS.MARGIN.FULL.FOUR,
105
+ 'Full 2 REM': CSS.MARGIN.FULL.TWO,
106
+ 'Full 1 REM': CSS.MARGIN.FULL.ONE,
107
+ 'Full 0.5 REM': CSS.MARGIN.FULL.HALF,
108
+ 'Full 0.25 REM': CSS.MARGIN.FULL.QUARTER,
109
+
110
+ 'X-axis Auto': CSS.MARGIN.X.AUTO,
111
+ 'X-axis 4 REM': CSS.MARGIN.X.FOUR,
112
+ 'X-axis 2 REM': CSS.MARGIN.X.TWO,
113
+ 'X-axis 1 REM': CSS.MARGIN.X.ONE,
114
+ 'X-axis 0.5 REM': CSS.MARGIN.X.HALF,
115
+ 'X-axis 0.25 REM': CSS.MARGIN.X.QUARTER,
116
+
117
+ 'Y-axis 4 REM': CSS.MARGIN.Y.FOUR,
118
+ 'Y-axis 2 REM': CSS.MARGIN.Y.TWO,
119
+ 'Y-axis 1 REM': CSS.MARGIN.Y.ONE,
120
+ 'Y-axis 0.5 REM': CSS.MARGIN.Y.HALF,
121
+ 'Y-axis 0.25 REM': CSS.MARGIN.Y.QUARTER,
122
+
123
+ 'Top 4 REM': CSS.MARGIN.TOP.FOUR,
124
+ 'Top 2 REM': CSS.MARGIN.TOP.TWO,
125
+ 'Top 1 REM': CSS.MARGIN.TOP.ONE,
126
+ 'Top 0.5 REM': CSS.MARGIN.TOP.HALF,
127
+ 'Top 0.25 REM': CSS.MARGIN.TOP.QUARTER,
128
+
129
+ 'Right Auto': CSS.MARGIN.RIGHT.AUTO,
130
+ 'Right 4 REM': CSS.MARGIN.RIGHT.FOUR,
131
+ 'Right 2 REM': CSS.MARGIN.RIGHT.TWO,
132
+ 'Right 1 REM': CSS.MARGIN.RIGHT.ONE,
133
+ 'Right 0.5 REM': CSS.MARGIN.RIGHT.HALF,
134
+ 'Right 0.25 REM': CSS.MARGIN.RIGHT.QUARTER,
135
+
136
+ 'Bottom 4 REM': CSS.MARGIN.BOTTOM.FOUR,
137
+ 'Bottom 2 REM': CSS.MARGIN.BOTTOM.TWO,
138
+ 'Bottom 1 REM': CSS.MARGIN.BOTTOM.ONE,
139
+ 'Bottom 0.5 REM': CSS.MARGIN.BOTTOM.HALF,
140
+ 'Bottom 0.25 REM': CSS.MARGIN.BOTTOM.QUARTER,
141
+
142
+ 'Left Auto': CSS.MARGIN.LEFT.AUTO,
143
+ 'Left 4 REM': CSS.MARGIN.LEFT.FOUR,
144
+ 'Left 2 REM': CSS.MARGIN.LEFT.TWO,
145
+ 'Left 1 REM': CSS.MARGIN.LEFT.ONE,
146
+ 'Left 0.5 REM': CSS.MARGIN.LEFT.HALF,
147
+ 'Left 0.25 REM': CSS.MARGIN.LEFT.QUARTER,
148
+ };
149
+
150
+ export const PADDING = {
151
+ 'Full 4 REM': CSS.PADDING.FULL.FOUR,
152
+ 'Full 2 REM': CSS.PADDING.FULL.TWO,
153
+ 'Full 1 REM': CSS.PADDING.FULL.ONE,
154
+ 'Full 0.5 REM': CSS.PADDING.FULL.HALF,
155
+ 'Full 0.25 REM': CSS.PADDING.FULL.QUARTER,
156
+
157
+ 'X-axis 4 REM': CSS.PADDING.X.FOUR,
158
+ 'X-axis 2 REM': CSS.PADDING.X.TWO,
159
+ 'X-axis 1 REM': CSS.PADDING.X.ONE,
160
+ 'X-axis 0.5 REM': CSS.PADDING.X.HALF,
161
+ 'X-axis 0.25 REM': CSS.PADDING.X.QUARTER,
162
+
163
+ 'Y-axis 4 REM': CSS.PADDING.Y.FOUR,
164
+ 'Y-axis 2 REM': CSS.PADDING.Y.TWO,
165
+ 'Y-axis 1 REM': CSS.PADDING.Y.ONE,
166
+ 'Y-axis 0.5 REM': CSS.PADDING.Y.HALF,
167
+ 'Y-axis 0.25 REM': CSS.PADDING.Y.QUARTER,
168
+
169
+ 'Top 4 REM': CSS.PADDING.TOP.FOUR,
170
+ 'Top 2 REM': CSS.PADDING.TOP.TWO,
171
+ 'Top 1 REM': CSS.PADDING.TOP.ONE,
172
+ 'Top 0.5 REM': CSS.PADDING.TOP.HALF,
173
+ 'Top 0.25 REM': CSS.PADDING.TOP.QUARTER,
174
+
175
+ 'Right 4 REM': CSS.PADDING.RIGHT.FOUR,
176
+ 'Right 2 REM': CSS.PADDING.RIGHT.TWO,
177
+ 'Right 1 REM': CSS.PADDING.RIGHT.ONE,
178
+ 'Right 0.5 REM': CSS.PADDING.RIGHT.HALF,
179
+ 'Right 0.25 REM': CSS.PADDING.RIGHT.QUARTER,
180
+
181
+ 'Bottom 4 REM': CSS.PADDING.BOTTOM.FOUR,
182
+ 'Bottom 2 REM': CSS.PADDING.BOTTOM.TWO,
183
+ 'Bottom 1 REM': CSS.PADDING.BOTTOM.ONE,
184
+ 'Bottom 0.5 REM': CSS.PADDING.BOTTOM.HALF,
185
+ 'Bottom 0.25 REM': CSS.PADDING.BOTTOM.QUARTER,
186
+
187
+ 'Left 4 REM': CSS.PADDING.LEFT.FOUR,
188
+ 'Left 2 REM': CSS.PADDING.LEFT.TWO,
189
+ 'Left 1 REM': CSS.PADDING.LEFT.ONE,
190
+ 'Left 0.5 REM': CSS.PADDING.LEFT.HALF,
191
+ 'Left 0.25 REM': CSS.PADDING.LEFT.QUARTER,
192
+ };
193
+
194
+ export const SHADOW = {
195
+ Bottom: CSS.SHADOW.BOTTOM,
196
+ Top: CSS.SHADOW.TOP,
197
+ };
198
+
199
+ export const TYPOGRAPHY = {
200
+ DISPLAY_1: [CSS.FONT.SIZE.THIRTY_TWO, CSS.FONT.WEIGHT.SEVEN_HUNDRED],
201
+ HEADLINE_1: [CSS.FONT.SIZE.TWENTY_FOUR, CSS.FONT.WEIGHT.SEVEN_HUNDRED],
202
+ HEADLINE_2: [CSS.FONT.SIZE.TWENTY, CSS.FONT.WEIGHT.SEVEN_HUNDRED],
203
+ HEADLINE_3: [CSS.FONT.SIZE.SIXTEEN, CSS.FONT.WEIGHT.SEVEN_HUNDRED],
204
+ TITLE_1: [CSS.FONT.SIZE.TWENTY, CSS.FONT.WEIGHT.SIX_HUNDRED],
205
+ TITLE_2: [CSS.FONT.SIZE.SIXTEEN, CSS.FONT.WEIGHT.SIX_HUNDRED],
206
+ BODY_1: [CSS.FONT.SIZE.SIXTEEN, CSS.FONT.WEIGHT.FOUR_HUNDRED],
207
+ BODY_2: [CSS.FONT.SIZE.FOURTEEN, CSS.FONT.WEIGHT.FOUR_HUNDRED],
208
+ LABEL_1: [CSS.FONT.SIZE.SIXTEEN, CSS.FONT.WEIGHT.FIVE_HUNDRED],
209
+ LABEL_1_SEMIBOLD: [CSS.FONT.SIZE.SIXTEEN, CSS.FONT.WEIGHT.SIX_HUNDRED],
210
+ LABEL_2: [CSS.FONT.SIZE.FOURTEEN, CSS.FONT.WEIGHT.FIVE_HUNDRED],
211
+ LABEL_2_SEMIBOLD: [CSS.FONT.SIZE.FOURTEEN, CSS.FONT.WEIGHT.SIX_HUNDRED],
212
+ LABEL_3: [CSS.FONT.SIZE.TWELVE, CSS.FONT.WEIGHT.FIVE_HUNDRED],
213
+ LINK_1: [CSS.FONT.SIZE.SIXTEEN, CSS.FONT.WEIGHT.SEVEN_HUNDRED],
214
+ LINK_2: [CSS.FONT.SIZE.FOURTEEN, CSS.FONT.WEIGHT.SEVEN_HUNDRED],
215
+ LINK_3: [CSS.FONT.SIZE.TWELVE, CSS.FONT.WEIGHT.SEVEN_HUNDRED],
216
+ BUTTON_1: [CSS.FONT.SIZE.SIXTEEN, CSS.FONT.WEIGHT.SIX_HUNDRED],
217
+ };
218
+
219
+ export type Typography = (typeof TYPOGRAPHY)[keyof typeof TYPOGRAPHY];