@transcommerce/cwm-shared 1.1.87 → 1.1.88

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.
@@ -1533,203 +1533,182 @@ const MENU_BOARD_CONFIG_SCHEMA = {
1533
1533
  required: ["amountToScroll", "autoScrollTimeout", "dataAgeThreshold"]
1534
1534
  };
1535
1535
 
1536
- const DEFAULT_SLIDE = {
1537
- "image": "../../../assets/images/tuesday.png",
1538
- "title": "Doobie Tuesday",
1539
- "description": "10% off all pre-rolls & packs<",
1540
- "highlighted": false,
1541
- "textColor": "black",
1542
- "backgroundColor": "white"
1543
- };
1544
- const SLIDE_SCHEMA = {
1536
+ class CoordinatesStyle {
1537
+ top;
1538
+ left;
1539
+ ngOnStyle(ngStyle) {
1540
+ if (this.top)
1541
+ ngStyle['top'] = typeof this.top === 'number' ? `${this.top}px` : this.top;
1542
+ if (this.left)
1543
+ ngStyle['left'] = typeof this.left === 'number' ? `${this.left}px` : this.left;
1544
+ return ngStyle;
1545
+ }
1546
+ }
1547
+ const DEFAULT_COORDINATES = (() => {
1548
+ const coordinates = new CoordinatesStyle();
1549
+ coordinates.top = 0;
1550
+ coordinates.left = 0;
1551
+ return coordinates;
1552
+ })();
1553
+ const COORDINATES_STYLE_SCHEMA = {
1545
1554
  type: "object",
1546
- title: "Slide",
1555
+ title: "CoordinatesStyle",
1547
1556
  properties: {
1548
- image: {
1549
- type: "string",
1550
- title: "Image URL", // Custom display name
1551
- description: "The URL of background image for the slide",
1552
- default: "../../../assets/images/tuesday.png"
1553
- },
1554
- title: {
1555
- type: "string",
1556
- title: "Title",
1557
- description: "The title text displayed on the slide",
1558
- default: "Doobie Tuesday"
1559
- },
1560
- description: {
1561
- type: "string",
1562
- title: "Description",
1563
- description: "The description text displayed on the slide",
1564
- default: "10% off all pre-rolls & packs<"
1565
- },
1566
- highlighted: {
1567
- type: "boolean",
1568
- title: "Highlighted",
1569
- description: "Determines if the slide is highlighted",
1570
- default: false
1571
- },
1572
- textColor: {
1573
- type: "string",
1574
- title: "Text Color",
1575
- description: "The color of the text on the slide",
1576
- enum: ['red', 'green', 'blue', 'yellow', 'black', 'white'],
1577
- default: "black"
1557
+ top: {
1558
+ type: "number",
1559
+ title: "Top coordinates", // Custom display name
1560
+ description: "Number that describes the top coordinates in pixels",
1561
+ default: 1
1578
1562
  },
1579
- backgroundColor: {
1580
- type: "string",
1581
- title: "Background Color",
1582
- description: "The background color of the slide",
1583
- enum: ['red', 'green', 'blue', 'yellow', 'black', 'white'],
1584
- default: "white"
1563
+ left: {
1564
+ type: "number",
1565
+ title: "Left coordinates",
1566
+ description: "Number that describes the left coordinates in pixels",
1567
+ default: 1
1585
1568
  }
1586
1569
  },
1587
- required: [
1588
- "image",
1589
- "title",
1590
- "description",
1591
- "highlighted",
1592
- "textColor",
1593
- "backgroundColor"
1594
- ]
1570
+ required: ["top", "left"]
1595
1571
  };
1596
1572
 
1597
- const DEFAULT_SUBSCRIPTION_CONFIG = {
1598
- amount: 1,
1599
- days: 30,
1600
- totalOccurrences: 12,
1601
- trialOccurrences: 0
1573
+ var Justifications;
1574
+ (function (Justifications) {
1575
+ Justifications["Left"] = "left";
1576
+ Justifications["Right"] = "right";
1577
+ Justifications["Center"] = "center";
1578
+ Justifications["Fully"] = "fully";
1579
+ })(Justifications || (Justifications = {}));
1580
+ const DEFAULT_JUSTIFICATION = Justifications.Left;
1581
+ const JUSTIFICATIONS_SCHEMA = {
1582
+ type: "string",
1583
+ title: "Justification",
1584
+ description: "Justification of the image within its container",
1585
+ enum: Object.values(Justifications),
1586
+ default: DEFAULT_JUSTIFICATION
1602
1587
  };
1603
- const SUBSCRIPTION_CONFIG_SCHEMA = {
1588
+
1589
+ class SizeStyle {
1590
+ ngOnStyle(ngStyle) {
1591
+ if (this.width) {
1592
+ if (ngStyle) {
1593
+ ngStyle['width'] = typeof this.width === 'number' ? `${this.width}px` : this.width;
1594
+ }
1595
+ }
1596
+ if (this.height) {
1597
+ if (ngStyle) {
1598
+ ngStyle['height'] = typeof this.height === 'number' ? `${this.height}px` : this.height;
1599
+ }
1600
+ }
1601
+ return ngStyle;
1602
+ }
1603
+ width;
1604
+ height;
1605
+ }
1606
+ const DEFAULT_SIZE_STYLE = (() => {
1607
+ const sizeStyle = new SizeStyle();
1608
+ sizeStyle.height = 100;
1609
+ sizeStyle.width = 100;
1610
+ return sizeStyle;
1611
+ })();
1612
+ const SIZE_STYLE_SCHEMA = {
1604
1613
  type: "object",
1605
- title: "Subscription Configuration",
1614
+ title: "SizeStyle",
1606
1615
  properties: {
1607
- amount: {
1608
- type: "number",
1609
- title: "Cost per occurrence", // Custom display name
1610
- description: "The amount to charge for each subscription occurrence",
1611
- default: 1
1612
- },
1613
- days: {
1614
- type: "number",
1615
- title: "Days between occurrences",
1616
- description: "The number of days between each subscription occurrence",
1617
- default: 30
1618
- },
1619
- totalOccurrences: {
1620
- type: "number",
1621
- title: "Total occurrences",
1622
- description: "The total number of occurrences for the subscription",
1623
- default: 12
1624
- },
1625
- trialOccurrences: {
1626
- type: "number",
1627
- title: "Trial occurrences",
1628
- description: "The number of trial occurrences (free)",
1629
- default: 0
1616
+ width: {
1617
+ type: ["number", "string"],
1618
+ title: "Width",
1619
+ description: "Width of the element, can be a number (in pixels) or a string (e.g., '100px', '50%')"
1620
+ },
1621
+ height: {
1622
+ type: ["number", "string"],
1623
+ title: "Height",
1624
+ description: "Height of the element, can be a number (in pixels) or a string (e.g., '100px', '50%')"
1630
1625
  }
1631
1626
  },
1632
- required: ["amount", "days", "totalOccurrences", "trialOccurrences"]
1627
+ required: ["width", "height"]
1633
1628
  };
1634
1629
 
1635
- const DEFAULT_COMPANY_NAME = 'Test Weed Dispensary';
1636
- const DEFAULT_CONFIGURATION = {
1637
- companyName: DEFAULT_COMPANY_NAME,
1638
- authConfig: DEFAULT_AUTH_CONFIG,
1639
- apiConfig: DEFAULT_API_CONFIG,
1640
- subscriptionConfig: DEFAULT_SUBSCRIPTION_CONFIG,
1641
- menuBoardConfig: DEFAULT_MENU_BOARD_CONFIG,
1642
- footerCarouselConfig: DEFAULT_CAROUSEL_CONFIG,
1643
- footerCarouselSlideConfig: [
1644
- {
1645
- "image": "../../../assets/images/sunday.png",
1646
- "title": "CBD Sunday",
1647
- "description": "20% off all CBD products & house pre-rolls",
1648
- "highlighted": false,
1649
- "textColor": "white",
1650
- "backgroundColor": "black"
1651
- },
1652
- {
1653
- "image": "../../../assets/images/new-monday.jpg",
1654
- "title": "Edible Monday",
1655
- "description": "10% off edibles",
1656
- "highlighted": false,
1657
- "textColor": "white",
1658
- "backgroundColor": "black"
1659
- },
1660
- {
1661
- "image": "../../../assets/images/tuesday.png",
1662
- "title": "Doobie Tuesday",
1663
- "description": "10% off all pre-rolls & packs<",
1664
- "highlighted": false,
1665
- "textColor": "black",
1666
- "backgroundColor": "white"
1667
- },
1668
- {
1669
- "image": "../../../assets/images/wednesday.png",
1670
- "title": "Weed Crush Wednesday",
1671
- "description": "10% off all jar bud",
1672
- "highlighted": false,
1673
- "textColor": "black",
1674
- "backgroundColor": "white"
1675
- },
1676
- {
1677
- "image": "../../../assets/images/thursday.png",
1678
- "title": "Thirsty Thursday",
1679
- "description": "10% off Tinctures, RSO & cartridges",
1680
- "highlighted": false,
1681
- "textColor": "black",
1682
- "backgroundColor": "white"
1683
- },
1684
- {
1685
- "image": "../../../assets/images/friday.png",
1686
- "title": "Fire Friday",
1687
- "description": "10% off all jar bud",
1688
- "highlighted": false,
1689
- "textColor": "black",
1690
- "backgroundColor": "white"
1691
- },
1692
- {
1693
- "image": "../../../assets/images/saturday.png",
1694
- "title": "Shatterday Saturday",
1695
- "description": "10% off all concentrate",
1696
- "highlighted": false,
1697
- "textColor": "white",
1698
- "backgroundColor": "black"
1630
+ class ImageStyle {
1631
+ href;
1632
+ justification;
1633
+ size;
1634
+ coordinates;
1635
+ ngOnStyle(ngStyle) {
1636
+ if (this.href) {
1637
+ ngStyle['backgroundImage'] = `url(${this.href})`;
1699
1638
  }
1700
- ]
1701
- };
1702
- const CONFIGURATION_SCHEMA = {
1639
+ if (this.justification) {
1640
+ ngStyle['backgroundPosition'] = this.justification;
1641
+ }
1642
+ if (this.size) {
1643
+ this.size.ngOnStyle(ngStyle);
1644
+ }
1645
+ if (this.coordinates) {
1646
+ this.coordinates.ngOnStyle(ngStyle);
1647
+ }
1648
+ return ngStyle;
1649
+ }
1650
+ }
1651
+ const DEFAULT_IMAGE_STYLE = (() => {
1652
+ const image = new ImageStyle();
1653
+ image.href = "assets/images/default-category.png";
1654
+ image.justification = Justifications.Left;
1655
+ image.size = DEFAULT_SIZE_STYLE;
1656
+ image.coordinates = DEFAULT_COORDINATES;
1657
+ return image;
1658
+ })();
1659
+ const IMAGE_STYLE_SCHEMA = {
1703
1660
  type: "object",
1704
- title: "Customer Configuration",
1661
+ title: "ImageStyle",
1705
1662
  properties: {
1706
- companyName: {
1663
+ href: {
1707
1664
  type: "string",
1708
- title: "Company Name",
1709
- default: DEFAULT_COMPANY_NAME
1665
+ title: "Image URL",
1666
+ description: "URL of the image to be used as background"
1710
1667
  },
1711
- authConfig: AUTH_CONFIG_SCHEMA,
1712
- apiConfig: API_CONFIG_SCHEMA,
1713
- subscriptionConfig: SUBSCRIPTION_CONFIG_SCHEMA,
1714
- menuBoardConfig: MENU_BOARD_CONFIG_SCHEMA,
1715
- footerCarouselConfig: CAROUSEL_CONFIG_SCHEMA,
1716
- footerCarouselSlideConfig: {
1717
- type: "array",
1718
- title: "Footer Carousel Slides Collection",
1719
- description: "Configuration for each slide in the footer carousel",
1720
- items: SLIDE_SCHEMA,
1721
- default: DEFAULT_CONFIGURATION.footerCarouselSlideConfig
1668
+ justification: {
1669
+ enum: Object.values(Justifications),
1670
+ type: "string",
1671
+ title: "Justification",
1672
+ description: "Justification of the image within its container"
1673
+ },
1674
+ size: {
1675
+ type: "object",
1676
+ title: "SizeStyle",
1677
+ description: "Size of the image",
1678
+ properties: {
1679
+ width: {
1680
+ type: ["number", "string"],
1681
+ title: "Width",
1682
+ description: "Width of the image in pixels or as a CSS string (e.g., '100px', '50%')"
1683
+ },
1684
+ height: {
1685
+ type: ["number", "string"],
1686
+ title: "Height",
1687
+ description: "Height of the image in pixels or as a CSS string (e.g., '100px', '50%')"
1688
+ }
1689
+ },
1690
+ required: ["width", "height"]
1691
+ },
1692
+ coordinates: {
1693
+ type: "object",
1694
+ title: "CoordinatesStyle",
1695
+ description: "Position of the image within its container",
1696
+ properties: {
1697
+ top: {
1698
+ type: ["number", "string"],
1699
+ title: "Top coordinates",
1700
+ description: "Number that describes the top coordinates in pixels or as a CSS string (e.g., '10px', '5%')"
1701
+ },
1702
+ left: {
1703
+ type: ["number", "string"],
1704
+ title: "Left coordinates",
1705
+ description: "Number that describes the left coordinates in pixels or as a CSS string (e.g., '10px', '5%')"
1706
+ }
1707
+ },
1708
+ required: ["top", "left"]
1722
1709
  }
1723
1710
  },
1724
- required: [
1725
- "companyName",
1726
- "authConfig",
1727
- "apiConfig",
1728
- "subscriptionConfig",
1729
- "menuBoardConfig",
1730
- "footerCarouselConfig",
1731
- "footerCarouselSlideConfig"
1732
- ]
1711
+ required: ["href", "justification"]
1733
1712
  };
1734
1713
 
1735
1714
  var NamedColors;
@@ -2065,6 +2044,14 @@ function isNamedColor(colorName) {
2065
2044
  function getNamedColors() {
2066
2045
  return Object.keys(NAMED_COLOR_MAP);
2067
2046
  }
2047
+ const DEFAULT_NAMED_COLOR = NamedColors.Black;
2048
+ const NAMED_COLOR_SCHEMA = {
2049
+ type: "string",
2050
+ title: "Named Color",
2051
+ description: "A CSS named color (e.g., 'red', 'blue', 'lightgray')",
2052
+ enum: getNamedColors(),
2053
+ default: DEFAULT_NAMED_COLOR
2054
+ };
2068
2055
 
2069
2056
  class RgbaColorStyle {
2070
2057
  ngOnStyle(ngStyle) {
@@ -2171,17 +2158,57 @@ class RgbaColorStyle {
2171
2158
  return null;
2172
2159
  }
2173
2160
  }
2174
-
2175
- /**
2176
- * A unified Color class that can represent colors as Named, Hex, or RGBA formats
2177
- * and provides conversion methods between all formats.
2178
- */
2179
- class ColorStyle {
2180
- _value;
2181
- constructor(value) {
2182
- this._value = value;
2183
- }
2184
- ngOnStyle(ngStyle) {
2161
+ const DEFAULT_RGBA_COLOR_STYLE = RgbaColorStyle.fromHexColor("#000000");
2162
+ const RGBA_COLOR_STYLE_SCHEMA = {
2163
+ type: "object",
2164
+ title: "RGBA Color Style",
2165
+ properties: {
2166
+ r: {
2167
+ type: "number",
2168
+ title: "Red",
2169
+ description: "Red component (0-255)",
2170
+ minimum: 0,
2171
+ maximum: 255,
2172
+ default: 0
2173
+ },
2174
+ g: {
2175
+ type: "number",
2176
+ title: "Green",
2177
+ description: "Green component (0-255)",
2178
+ minimum: 0,
2179
+ maximum: 255,
2180
+ default: 0
2181
+ },
2182
+ b: {
2183
+ type: "number",
2184
+ title: "Blue",
2185
+ description: "Blue component (0-255)",
2186
+ minimum: 0,
2187
+ maximum: 255,
2188
+ default: 0
2189
+ },
2190
+ a: {
2191
+ type: "number",
2192
+ title: "Alpha",
2193
+ description: "Alpha component (0-1)",
2194
+ minimum: 0,
2195
+ maximum: 1,
2196
+ default: 1
2197
+ }
2198
+ },
2199
+ required: ["r", "g", "b", "a"]
2200
+ };
2201
+
2202
+ /**
2203
+ * A unified Color class that can represent colors as Named, Hex, or RGBA formats
2204
+ * and provides conversion methods between all formats.
2205
+ */
2206
+ class ColorStyle {
2207
+ _value;
2208
+ constructor(value) {
2209
+ this._value = value;
2210
+ }
2211
+ ngOnStyle(ngStyle) {
2185
2212
  return {
2186
2213
  ...ngStyle,
2187
2214
  color: this.toCssString()
@@ -2396,21 +2423,6 @@ class ColorStyle {
2396
2423
  const DEFAULT_FORECOLOR = ColorStyle.fromNamedColor("black");
2397
2424
  const DEFAULT_BACKCOLOR = ColorStyle.fromNamedColor("white");
2398
2425
 
2399
- class CoordinatesStyle {
2400
- top;
2401
- left;
2402
- ngOnStyle(ngStyle) {
2403
- if (this.top)
2404
- ngStyle['top'] = typeof this.top === 'number' ? `${this.top}px` : this.top;
2405
- if (this.left)
2406
- ngStyle['left'] = typeof this.left === 'number' ? `${this.left}px` : this.left;
2407
- return ngStyle;
2408
- }
2409
- }
2410
- const DEFAULT_COORDINATES = new CoordinatesStyle();
2411
- DEFAULT_COORDINATES.top = 0;
2412
- DEFAULT_COORDINATES.left = 0;
2413
-
2414
2426
  class FontStyle {
2415
2427
  family;
2416
2428
  size;
@@ -2428,12 +2440,408 @@ class FontStyle {
2428
2440
  return ngStyle;
2429
2441
  }
2430
2442
  }
2431
- const DEFAULT_FONT = new FontStyle();
2432
- DEFAULT_FONT.family = '"Newake-Regular", sans-serif';
2433
- DEFAULT_FONT.size = 16;
2434
- DEFAULT_FONT.italic = false;
2435
- DEFAULT_FONT.bold = true;
2436
- DEFAULT_FONT.underline = false;
2443
+ const DEFAULT_FONT = (() => {
2444
+ const font = new FontStyle();
2445
+ font.family = '"Newake-Regular", sans-serif';
2446
+ font.size = 16;
2447
+ font.italic = false;
2448
+ font.bold = true;
2449
+ font.underline = false;
2450
+ return font;
2451
+ })();
2452
+ const FONT_STYLE_SCHEMA = {
2453
+ type: "object",
2454
+ title: "FontStyle",
2455
+ properties: {
2456
+ family: {
2457
+ type: "string",
2458
+ title: "Font family", // Custom display name
2459
+ description: "String that describes the font family, e.g., 'Arial', 'Times New Roman', 'Newake-Regular'",
2460
+ default: '"Newake-Regular", sans-serif'
2461
+ },
2462
+ size: {
2463
+ type: "number",
2464
+ title: "Font size",
2465
+ description: "Number that describes the font size in pixels",
2466
+ default: 16
2467
+ },
2468
+ italic: {
2469
+ type: "boolean",
2470
+ title: "Italic",
2471
+ description: "Boolean that indicates whether the font is italic or not",
2472
+ default: false
2473
+ },
2474
+ bold: {
2475
+ type: "boolean",
2476
+ title: "Bold",
2477
+ description: "Boolean that indicates whether the font is bold or not",
2478
+ default: false
2479
+ },
2480
+ underline: {
2481
+ type: "boolean",
2482
+ title: "Underline",
2483
+ description: "Boolean that indicates whether the font is underlined or not",
2484
+ default: false
2485
+ }
2486
+ },
2487
+ required: ["family", "size"]
2488
+ };
2489
+
2490
+ class TextStyle {
2491
+ font;
2492
+ textColor;
2493
+ backgroundColor;
2494
+ watermark;
2495
+ image;
2496
+ value;
2497
+ ngOnStyle(ngStyle) {
2498
+ return {
2499
+ ...(ngStyle),
2500
+ ...(this.font ? this.font.ngOnStyle(ngStyle) : {}),
2501
+ ...(this.textColor ? { color: this.textColor.toCssString() } : {}),
2502
+ ...(this.backgroundColor ? { backgroundColor: this.backgroundColor.toCssString() } : {}),
2503
+ ...(this.image ? this.image.ngOnStyle(ngStyle) : {}),
2504
+ };
2505
+ }
2506
+ }
2507
+ const DEFAULT_TEXT_STYLE = (() => {
2508
+ const textStyle = new TextStyle();
2509
+ textStyle.value = 'Default Category';
2510
+ textStyle.font = DEFAULT_FONT;
2511
+ textStyle.textColor = DEFAULT_BACKCOLOR;
2512
+ textStyle.backgroundColor = DEFAULT_FORECOLOR;
2513
+ textStyle.watermark = "Category Name";
2514
+ textStyle.image = DEFAULT_IMAGE_STYLE;
2515
+ return textStyle;
2516
+ })();
2517
+ const TEXT_STYLE_SCHEMA = {
2518
+ type: "object",
2519
+ title: "TextStyle",
2520
+ properties: {
2521
+ value: {
2522
+ type: "string",
2523
+ title: "Text Value",
2524
+ description: "The actual text content to be displayed"
2525
+ },
2526
+ font: {
2527
+ type: "object",
2528
+ title: "FontStyle",
2529
+ description: "Font styling for the text",
2530
+ properties: {
2531
+ family: {
2532
+ type: "string",
2533
+ title: "Font Family",
2534
+ description: "The font family to be used for the text (e.g., 'Arial', 'Helvetica')"
2535
+ },
2536
+ size: {
2537
+ type: ["number", "string"],
2538
+ title: "Font Size",
2539
+ description: "The size of the font, can be a number (in pixels) or a string (e.g., '16px', '1em')"
2540
+ },
2541
+ weight: {
2542
+ type: ["number", "string"],
2543
+ title: "Font Weight",
2544
+ description: "The weight of the font, can be a number (e.g., 400 for normal, 700 for bold) or a string (e.g., 'normal', 'bold')"
2545
+ },
2546
+ style: {
2547
+ type: "string",
2548
+ title: "Font Style",
2549
+ description: "The style of the font (e.g., 'normal', 'italic')"
2550
+ },
2551
+ decoration: {
2552
+ type: "string",
2553
+ title: "Text Decoration",
2554
+ description: "The decoration of the text (e.g., 'none', 'underline')"
2555
+ }
2556
+ }
2557
+ },
2558
+ textColor: {
2559
+ type: "object",
2560
+ title: "Text Color",
2561
+ description: "Color styling for the text, defined as an object with properties for color values"
2562
+ },
2563
+ backgroundColor: {
2564
+ type: "object",
2565
+ title: "Background Color",
2566
+ description: "Color styling for the background, defined as an object with propertiesfor color values"
2567
+ },
2568
+ watermark: {
2569
+ type: "string",
2570
+ title: "Watermark",
2571
+ description: "A string that represents the watermark text to be displayed behind the main text"
2572
+ },
2573
+ image: {
2574
+ type: "object",
2575
+ title: "ImageStyle",
2576
+ description: "Image styling for the text, defined as an object with properties for image URL, size, and position"
2577
+ }
2578
+ }
2579
+ };
2580
+
2581
+ class FooterSlide {
2582
+ image;
2583
+ title;
2584
+ description;
2585
+ highlighted;
2586
+ backgroundColor;
2587
+ }
2588
+ const DEFAULT_SLIDE = {
2589
+ "image": "../../../assets/images/tuesday.png",
2590
+ "title": "Doobie Tuesday",
2591
+ "description": "10% off all pre-rolls & packs<",
2592
+ "highlighted": false,
2593
+ "textColor": "black",
2594
+ "backgroundColor": "white"
2595
+ };
2596
+ const DEFAULT_FOOTER_SLIDE = (() => {
2597
+ const slide = new FooterSlide();
2598
+ slide.image = (() => {
2599
+ const imageStyle = new ImageStyle();
2600
+ imageStyle.href = "../../../assets/images/tuesday.png";
2601
+ return imageStyle;
2602
+ })();
2603
+ slide.title = (() => {
2604
+ const textStyle = new TextStyle();
2605
+ textStyle.value = "Doobie Tuesday";
2606
+ textStyle.textColor = ColorStyle.fromNamedColor(NamedColors.Black);
2607
+ if (textStyle.font)
2608
+ textStyle.font.size = 14;
2609
+ return textStyle;
2610
+ })();
2611
+ slide.description = (() => {
2612
+ const textStyle = new TextStyle();
2613
+ textStyle.value = "10% off all pre-rolls & packs";
2614
+ textStyle.textColor = ColorStyle.fromNamedColor(NamedColors.Black);
2615
+ if (textStyle.font)
2616
+ textStyle.font.size = 12;
2617
+ return textStyle;
2618
+ })();
2619
+ slide.highlighted = false;
2620
+ slide.backgroundColor = ColorStyle.fromNamedColor(NamedColors.White);
2621
+ return slide;
2622
+ })();
2623
+ const SLIDE_SCHEMA = {
2624
+ type: "object",
2625
+ title: "Slide",
2626
+ properties: {
2627
+ image: {
2628
+ type: "string",
2629
+ title: "Image URL", // Custom display name
2630
+ description: "The URL of background image for the slide",
2631
+ default: "../../../assets/images/tuesday.png"
2632
+ },
2633
+ title: {
2634
+ type: "string",
2635
+ title: "Title",
2636
+ description: "The title text displayed on the slide",
2637
+ default: "Doobie Tuesday"
2638
+ },
2639
+ description: {
2640
+ type: "string",
2641
+ title: "Description",
2642
+ description: "The description text displayed on the slide",
2643
+ default: "10% off all pre-rolls & packs<"
2644
+ },
2645
+ highlighted: {
2646
+ type: "boolean",
2647
+ title: "Highlighted",
2648
+ description: "Determines if the slide is highlighted",
2649
+ default: false
2650
+ },
2651
+ textColor: {
2652
+ type: "string",
2653
+ title: "Text Color",
2654
+ description: "The color of the text on the slide",
2655
+ enum: ['red', 'green', 'blue', 'yellow', 'black', 'white'],
2656
+ default: "black"
2657
+ },
2658
+ backgroundColor: {
2659
+ type: "string",
2660
+ title: "Background Color",
2661
+ description: "The background color of the slide",
2662
+ enum: ['red', 'green', 'blue', 'yellow', 'black', 'white'],
2663
+ default: "white"
2664
+ }
2665
+ },
2666
+ required: [
2667
+ "image",
2668
+ "title",
2669
+ "description",
2670
+ "highlighted",
2671
+ "textColor",
2672
+ "backgroundColor"
2673
+ ]
2674
+ };
2675
+ const FOOTER_SLIDE_SCHEMA = {
2676
+ type: "object",
2677
+ title: "FooterSlide",
2678
+ properties: {
2679
+ image: {
2680
+ type: "object",
2681
+ title: "ImageStyle",
2682
+ description: "The styling for the image displayed on the footer slide"
2683
+ },
2684
+ title: {
2685
+ type: "object",
2686
+ title: "TextStyle",
2687
+ description: "The styling for the title text displayed on the footer slide"
2688
+ },
2689
+ description: {
2690
+ type: "object",
2691
+ title: "TextStyle",
2692
+ description: "The styling for the description text displayed on the footer slide"
2693
+ },
2694
+ highlighted: {
2695
+ type: "boolean",
2696
+ title: "Highlighted",
2697
+ description: "Determines if the footer slide is highlighted"
2698
+ },
2699
+ backgroundColor: {
2700
+ type: "object",
2701
+ title: "ColorStyle",
2702
+ description: "The background color styling for the footer slide"
2703
+ }
2704
+ },
2705
+ required: ["image", "title"]
2706
+ };
2707
+
2708
+ const DEFAULT_SUBSCRIPTION_CONFIG = {
2709
+ amount: 1,
2710
+ days: 30,
2711
+ totalOccurrences: 12,
2712
+ trialOccurrences: 0
2713
+ };
2714
+ const SUBSCRIPTION_CONFIG_SCHEMA = {
2715
+ type: "object",
2716
+ title: "Subscription Configuration",
2717
+ properties: {
2718
+ amount: {
2719
+ type: "number",
2720
+ title: "Cost per occurrence", // Custom display name
2721
+ description: "The amount to charge for each subscription occurrence",
2722
+ default: 1
2723
+ },
2724
+ days: {
2725
+ type: "number",
2726
+ title: "Days between occurrences",
2727
+ description: "The number of days between each subscription occurrence",
2728
+ default: 30
2729
+ },
2730
+ totalOccurrences: {
2731
+ type: "number",
2732
+ title: "Total occurrences",
2733
+ description: "The total number of occurrences for the subscription",
2734
+ default: 12
2735
+ },
2736
+ trialOccurrences: {
2737
+ type: "number",
2738
+ title: "Trial occurrences",
2739
+ description: "The number of trial occurrences (free)",
2740
+ default: 0
2741
+ }
2742
+ },
2743
+ required: ["amount", "days", "totalOccurrences", "trialOccurrences"]
2744
+ };
2745
+
2746
+ const DEFAULT_COMPANY_NAME = 'Test Weed Dispensary';
2747
+ const DEFAULT_CONFIGURATION = {
2748
+ companyName: DEFAULT_COMPANY_NAME,
2749
+ authConfig: DEFAULT_AUTH_CONFIG,
2750
+ apiConfig: DEFAULT_API_CONFIG,
2751
+ subscriptionConfig: DEFAULT_SUBSCRIPTION_CONFIG,
2752
+ menuBoardConfig: DEFAULT_MENU_BOARD_CONFIG,
2753
+ footerCarouselConfig: DEFAULT_CAROUSEL_CONFIG,
2754
+ footerCarouselSlideConfig: [
2755
+ {
2756
+ "image": "../../../assets/images/sunday.png",
2757
+ "title": "CBD Sunday",
2758
+ "description": "20% off all CBD products & house pre-rolls",
2759
+ "highlighted": false,
2760
+ "textColor": "white",
2761
+ "backgroundColor": "black"
2762
+ },
2763
+ {
2764
+ "image": "../../../assets/images/new-monday.jpg",
2765
+ "title": "Edible Monday",
2766
+ "description": "10% off edibles",
2767
+ "highlighted": false,
2768
+ "textColor": "white",
2769
+ "backgroundColor": "black"
2770
+ },
2771
+ {
2772
+ "image": "../../../assets/images/tuesday.png",
2773
+ "title": "Doobie Tuesday",
2774
+ "description": "10% off all pre-rolls & packs<",
2775
+ "highlighted": false,
2776
+ "textColor": "black",
2777
+ "backgroundColor": "white"
2778
+ },
2779
+ {
2780
+ "image": "../../../assets/images/wednesday.png",
2781
+ "title": "Weed Crush Wednesday",
2782
+ "description": "10% off all jar bud",
2783
+ "highlighted": false,
2784
+ "textColor": "black",
2785
+ "backgroundColor": "white"
2786
+ },
2787
+ {
2788
+ "image": "../../../assets/images/thursday.png",
2789
+ "title": "Thirsty Thursday",
2790
+ "description": "10% off Tinctures, RSO & cartridges",
2791
+ "highlighted": false,
2792
+ "textColor": "black",
2793
+ "backgroundColor": "white"
2794
+ },
2795
+ {
2796
+ "image": "../../../assets/images/friday.png",
2797
+ "title": "Fire Friday",
2798
+ "description": "10% off all jar bud",
2799
+ "highlighted": false,
2800
+ "textColor": "black",
2801
+ "backgroundColor": "white"
2802
+ },
2803
+ {
2804
+ "image": "../../../assets/images/saturday.png",
2805
+ "title": "Shatterday Saturday",
2806
+ "description": "10% off all concentrate",
2807
+ "highlighted": false,
2808
+ "textColor": "white",
2809
+ "backgroundColor": "black"
2810
+ }
2811
+ ]
2812
+ };
2813
+ const CONFIGURATION_SCHEMA = {
2814
+ type: "object",
2815
+ title: "Customer Configuration",
2816
+ properties: {
2817
+ companyName: {
2818
+ type: "string",
2819
+ title: "Company Name",
2820
+ default: DEFAULT_COMPANY_NAME
2821
+ },
2822
+ authConfig: AUTH_CONFIG_SCHEMA,
2823
+ apiConfig: API_CONFIG_SCHEMA,
2824
+ subscriptionConfig: SUBSCRIPTION_CONFIG_SCHEMA,
2825
+ menuBoardConfig: MENU_BOARD_CONFIG_SCHEMA,
2826
+ footerCarouselConfig: CAROUSEL_CONFIG_SCHEMA,
2827
+ footerCarouselSlideConfig: {
2828
+ type: "array",
2829
+ title: "Footer Carousel Slides Collection",
2830
+ description: "Configuration for each slide in the footer carousel",
2831
+ items: SLIDE_SCHEMA,
2832
+ default: DEFAULT_CONFIGURATION.footerCarouselSlideConfig
2833
+ }
2834
+ },
2835
+ required: [
2836
+ "companyName",
2837
+ "authConfig",
2838
+ "apiConfig",
2839
+ "subscriptionConfig",
2840
+ "menuBoardConfig",
2841
+ "footerCarouselConfig",
2842
+ "footerCarouselSlideConfig"
2843
+ ]
2844
+ };
2437
2845
 
2438
2846
  /**
2439
2847
  * Converts a hex color to RGBA format
@@ -2674,87 +3082,26 @@ function rgbaToNamedColor(rgba) {
2674
3082
  const hexColor = rgbaObjectToHex(rgba);
2675
3083
  return hexToNamedColor(hexColor);
2676
3084
  }
3085
+ const DEFAULT_HEX_COLOR = "#000000";
3086
+ const HEX_COLOR_SCHEMA = {
3087
+ type: "string",
3088
+ title: "HexColor",
3089
+ description: "A hex color string in the format #RRGGBB or #RRGGBBAA",
3090
+ pattern: "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
3091
+ default: DEFAULT_HEX_COLOR
3092
+ };
2677
3093
 
2678
- var Justifications;
2679
- (function (Justifications) {
2680
- Justifications["Left"] = "left";
2681
- Justifications["Right"] = "right";
2682
- Justifications["Center"] = "center";
2683
- Justifications["Fully"] = "fully";
2684
- })(Justifications || (Justifications = {}));
2685
-
2686
- class SizeStyle {
2687
- ngOnStyle(ngStyle) {
2688
- if (this.width) {
2689
- if (ngStyle) {
2690
- ngStyle['width'] = typeof this.width === 'number' ? `${this.width}px` : this.width;
2691
- }
2692
- }
2693
- if (this.height) {
2694
- if (ngStyle) {
2695
- ngStyle['height'] = typeof this.height === 'number' ? `${this.height}px` : this.height;
2696
- }
2697
- }
2698
- return ngStyle;
2699
- }
2700
- width;
2701
- height;
2702
- }
2703
- const DEFAULT_SIZE = new SizeStyle();
2704
- DEFAULT_SIZE.width = 100;
2705
- DEFAULT_SIZE.height = 100;
2706
-
2707
- class ImageStyle {
2708
- href;
2709
- justification;
2710
- size;
2711
- coordinates;
2712
- ngOnStyle(ngStyle) {
2713
- if (this.href) {
2714
- ngStyle['backgroundImage'] = `url(${this.href})`;
2715
- }
2716
- if (this.justification) {
2717
- ngStyle['backgroundPosition'] = this.justification;
2718
- }
2719
- if (this.size) {
2720
- this.size.ngOnStyle(ngStyle);
2721
- }
2722
- if (this.coordinates) {
2723
- this.coordinates.ngOnStyle(ngStyle);
2724
- }
2725
- return ngStyle;
2726
- }
2727
- }
2728
- const DEFAULT_IMAGE = new ImageStyle();
2729
- DEFAULT_IMAGE.href = "assets/images/default-category.png";
2730
- DEFAULT_IMAGE.justification = Justifications.Left;
2731
- DEFAULT_IMAGE.size = DEFAULT_SIZE;
2732
- DEFAULT_IMAGE.coordinates = DEFAULT_COORDINATES;
2733
-
2734
- class TextStyle {
2735
- font;
2736
- textColor;
2737
- backgroundColor;
2738
- watermark;
2739
- image;
2740
- value;
2741
- ngOnStyle(ngStyle) {
2742
- return {
2743
- ...(ngStyle),
2744
- ...(this.font ? this.font.ngOnStyle(ngStyle) : {}),
2745
- ...(this.textColor ? { color: this.textColor.toCssString() } : {}),
2746
- ...(this.backgroundColor ? { backgroundColor: this.backgroundColor.toCssString() } : {}),
2747
- ...(this.image ? this.image.ngOnStyle(ngStyle) : {}),
2748
- };
3094
+ const DEFAULT_NG_STYLE = { width: 100 };
3095
+ const NG_STYLE_SCHEMA = {
3096
+ type: "object",
3097
+ title: "ngStyleAttribute",
3098
+ description: "Object representing CSS styles to be applied to an element",
3099
+ additionalProperties: {
3100
+ type: ["string", "number", "null"],
3101
+ title: "CSS Property Value",
3102
+ description: "Value of the CSS property, can be a string, number, or null"
2749
3103
  }
2750
- }
2751
- const DEFAULT_TEXT_STYLE = new TextStyle();
2752
- DEFAULT_TEXT_STYLE.value = 'Default Category';
2753
- DEFAULT_TEXT_STYLE.font = DEFAULT_FONT;
2754
- DEFAULT_TEXT_STYLE.textColor = DEFAULT_BACKCOLOR;
2755
- DEFAULT_TEXT_STYLE.backgroundColor = DEFAULT_FORECOLOR;
2756
- DEFAULT_TEXT_STYLE.watermark = "Category Name";
2757
- DEFAULT_TEXT_STYLE.image = DEFAULT_IMAGE;
3104
+ };
2758
3105
 
2759
3106
  const EXAMPLE_CREATE_SUBSCRIPTION_REQUEST = {
2760
3107
  "creditCard": {
@@ -29504,5 +29851,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
29504
29851
  * Generated bundle index. Do not edit.
29505
29852
  */
29506
29853
 
29507
- export { API_CONFIG_SCHEMA, AUTH_CONFIG, AUTH_CONFIG_SCHEMA, BaseApiService, CAROUSEL_CONFIG_SCHEMA, CONFIGURATION_SCHEMA, Category, ClassLoggerService, ColorStyle, ConfigService, CoordinatesStyle, Customer, CwmSharedModule, DEFAULT_API_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACKCOLOR, DEFAULT_CAROUSEL_CONFIG, DEFAULT_CATEGORY_SLIDE, DEFAULT_COMPANY_NAME, DEFAULT_CONFIGURATION, DEFAULT_COORDINATES, DEFAULT_CUSTOMER, DEFAULT_FONT, DEFAULT_FORECOLOR, DEFAULT_IMAGE, DEFAULT_INVENTORY_API_RESPONSE, DEFAULT_MENU_BOARD_CONFIG, DEFAULT_PROFILE, DEFAULT_SIZE, DEFAULT_SLIDE, DEFAULT_SUBSCRIPTION_CONFIG, DEFAULT_TEXT_STYLE, DbKeys, EXAMPLE_CREATE_SUBSCRIPTION_REQUEST, ExternalNavigationComponent, FontStyle, ImageStyle, InventoryApiService, Justifications, LocalStorageService, LogService, MENU_BOARD_CONFIG_SCHEMA, MockConfig, MockCustomer, MockInventoryApiResponse, MockProfile, NavigateToRouteComponent, PageNotFoundComponent, Product, Profile, RgbaColorStyle, SLIDE_SCHEMA, SUBSCRIPTION_CONFIG_SCHEMA, SafeHtmlPipe, SizeStyle, Stack, SubscriptionApiService, TextStyle, TimeSpan, TimeSpanOverflowError, UserTypes, Utilities, adjustAlpha, cloneRGBA, createRGBA, cssStringToRGBA, darkenRGBA, decodeToken, doWithLock, hexToNamedColor, hexToRGBA, isTokenValid, isValidNamedColor, lightenRGBA, msalGuardConfigFactory, msalInstanceFactory, msalInterceptorConfigFactory, namedColorToHexColor, namedColorToRGBA, rgbaEquals, rgbaObjectToHex, rgbaToCssString, rgbaToHex, rgbaToNamedColor, waitFor };
29854
+ export { API_CONFIG_SCHEMA, AUTH_CONFIG, AUTH_CONFIG_SCHEMA, BaseApiService, CAROUSEL_CONFIG_SCHEMA, CONFIGURATION_SCHEMA, COORDINATES_STYLE_SCHEMA, Category, ClassLoggerService, ColorStyle, ConfigService, CoordinatesStyle, Customer, CwmSharedModule, DEFAULT_API_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACKCOLOR, DEFAULT_CAROUSEL_CONFIG, DEFAULT_CATEGORY_SLIDE, DEFAULT_COMPANY_NAME, DEFAULT_CONFIGURATION, DEFAULT_COORDINATES, DEFAULT_CUSTOMER, DEFAULT_FONT, DEFAULT_FOOTER_SLIDE, DEFAULT_FORECOLOR, DEFAULT_HEX_COLOR, DEFAULT_IMAGE_STYLE, DEFAULT_INVENTORY_API_RESPONSE, DEFAULT_JUSTIFICATION, DEFAULT_MENU_BOARD_CONFIG, DEFAULT_NG_STYLE, DEFAULT_PROFILE, DEFAULT_RGBA_COLOR_STYLE, DEFAULT_SIZE_STYLE, DEFAULT_SLIDE, DEFAULT_SUBSCRIPTION_CONFIG, DEFAULT_TEXT_STYLE, DbKeys, EXAMPLE_CREATE_SUBSCRIPTION_REQUEST, ExternalNavigationComponent, FONT_STYLE_SCHEMA, FOOTER_SLIDE_SCHEMA, FontStyle, FooterSlide, HEX_COLOR_SCHEMA, IMAGE_STYLE_SCHEMA, ImageStyle, InventoryApiService, JUSTIFICATIONS_SCHEMA, Justifications, LocalStorageService, LogService, MENU_BOARD_CONFIG_SCHEMA, MockConfig, MockCustomer, MockInventoryApiResponse, MockProfile, NG_STYLE_SCHEMA, NavigateToRouteComponent, PageNotFoundComponent, Product, Profile, RGBA_COLOR_STYLE_SCHEMA, RgbaColorStyle, SIZE_STYLE_SCHEMA, SLIDE_SCHEMA, SUBSCRIPTION_CONFIG_SCHEMA, SafeHtmlPipe, SizeStyle, Stack, SubscriptionApiService, TEXT_STYLE_SCHEMA, TextStyle, TimeSpan, TimeSpanOverflowError, UserTypes, Utilities, adjustAlpha, cloneRGBA, createRGBA, cssStringToRGBA, darkenRGBA, decodeToken, doWithLock, hexToNamedColor, hexToRGBA, isTokenValid, isValidNamedColor, lightenRGBA, msalGuardConfigFactory, msalInstanceFactory, msalInterceptorConfigFactory, namedColorToHexColor, namedColorToRGBA, rgbaEquals, rgbaObjectToHex, rgbaToCssString, rgbaToHex, rgbaToNamedColor, waitFor };
29508
29855
  //# sourceMappingURL=transcommerce-cwm-shared.mjs.map